<?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>214239</bug_id>
          
          <creation_ts>2020-07-12 13:33:00 -0700</creation_ts>
          <short_desc>Some further streamlining of Gradient handling code</short_desc>
          <delta_ts>2020-07-12 21:10:12 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1670911</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-12 13:33:00 -0700</bug_when>
    <thetext>Some further streamlining of Gradient handling code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670915</commentid>
    <comment_count>1</comment_count>
      <attachid>404115</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-12 13:53:35 -0700</bug_when>
    <thetext>Created attachment 404115
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670917</commentid>
    <comment_count>2</comment_count>
      <attachid>404116</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-12 14:16:31 -0700</bug_when>
    <thetext>Created attachment 404116
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670935</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-12 17:03:57 -0700</bug_when>
    <thetext>Parts of this were driven by Sam’s comments on my last patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670948</commentid>
    <comment_count>4</comment_count>
      <attachid>404116</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-12 18:36:41 -0700</bug_when>
    <thetext>Comment on attachment 404116
Patch

Passing all the EWS tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670950</commentid>
    <comment_count>5</comment_count>
      <attachid>404116</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-12 19:12:05 -0700</bug_when>
    <thetext>Comment on attachment 404116
Patch

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

&gt; Source/WebCore/rendering/svg/RenderSVGResourceGradient.cpp:150
&gt; +        gradient-&gt;setGradientSpaceTransform(userspaceTransform);
&gt; +
&gt; +        return { WTFMove(gradient), userspaceTransform };

What is the purpose of storing the userspaceTransform both on the Gradient and in the GradientData?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670955</commentid>
    <comment_count>6</comment_count>
      <attachid>404116</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-12 20:44:40 -0700</bug_when>
    <thetext>Comment on attachment 404116
Patch

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

&gt;&gt; Source/WebCore/rendering/svg/RenderSVGResourceGradient.cpp:150
&gt;&gt; +        return { WTFMove(gradient), userspaceTransform };
&gt; 
&gt; What is the purpose of storing the userspaceTransform both on the Gradient and in the GradientData?

I asked myself the same question.

&gt; Source/WebCore/rendering/svg/RenderSVGResourceGradient.cpp:174
&gt; +            gradientData.gradient-&gt;setGradientSpaceTransform(transformOnNonScalingStroke(&amp;renderer, gradientData.userspaceTransform));

Here is where it’s used. The only place it’s used. Maybe it could be removed. I don’t understand it well enough to be sure at this point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670957</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-12 21:09:24 -0700</bug_when>
    <thetext>Committed r264290: &lt;https://trac.webkit.org/changeset/264290&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 404116.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670958</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-12 21:10:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/65453742&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404115</attachid>
            <date>2020-07-12 13:53:35 -0700</date>
            <delta_ts>2020-07-12 14:16:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214239-20200712135334.patch</filename>
            <type>text/plain</type>
            <size>30098</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0MjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQ3YTA4YzE3Y2Y3YmRiNWFjMTYwMzM0
YzA0ZDQzOTQwZTJkNjcwMDAuLjk0MTM3YmY0MmNhYzQzNzFiODgxOTI3Y2E2MDMzZWVmZTUzOTVj
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDctMTIgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFNvbWUgZnVydGhlciBzdHJlYW1saW5pbmcgb2YgR3JhZGll
bnQgaGFuZGxpbmcgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE0MjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3dGYvVmVjdG9yLmg6IEFkZGVkIGFuIG92ZXJsb2FkIGZvciBpbnNlcnQgYW5h
bG9nb3VzIHRvIHRoZSBvbmVzIHdlIGFscmVhZHkgaGF2ZQorICAgICAgICBmb3IgYXBwZW5kIGFu
ZCB1bmNoZWNrZWRBcHBlbmQsIGhlbHBmdWwgZm9yIHR5cGUgZGVkdWN0aW9uLgorCiAyMDIwLTA3
LTExICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4gYW5kIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWxhbmRpbmcgIk1ha2UgaGFzaGVyIHdvcmsg
d2l0aCB0dXBsZS1saWtlIGNsYXNzZXMiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWRlMDZjNDBkMDc2NDU3YTZk
MjlkOGQzZjgwNjdkMDhhZTgzOWI1My4uZDU5OGE5M2FjNmM1NDVjZGExYzZmMDdlY2JmNWRhNGQw
NGI1YzZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDIwLTA3LTEyICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBTb21lIGZ1cnRoZXIgc3RyZWFtbGlu
aW5nIG9mIEdyYWRpZW50IGhhbmRsaW5nIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDIzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhZGllbnRD
YWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnRlcnBvbGF0ZUNvbG9yU3RvcCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDb25pYyk6IFJld3JpdGUgdGhlIGludGVycG9s
YXRpb24gY29kZSB0byBjcmVhdGUgYSBuZXcKKyAgICAgICAgdmVjdG9yIHJhdGhlciB0aGFuIGVk
aXQgdGhlIGV4aXN0aW5nIG9uZSBhbmQgdG8gdXNlIGEgbW9yZSBzdHJhaWdodGZvcndhcmQKKyAg
ICAgICAgaWRpb20sIGFuZCBhIGxhbWJkYSByYXRoZXIgdGhhbiBhIGhlbHBlciBmdW5jdGlvbi4g
QWxzbyByZW1vdmVkIGFuIGV4cGxpY2l0CisgICAgICAgIGNvbnZlcnNpb24gdG8gR3JhZGllbnQ6
OkNvbG9yU3RvcCwgbm8gbG9uZ2VyIG5lZWRlZCBiZWNhdXNlIG9mIHRoZSBvdmVybG9hZAorICAg
ICAgICBhZGRlZCB0byBWZWN0b3I6Omluc2VydC4KKworICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSZXNvdXJjZUdyYWRpZW50OjphcHBseVJlc291cmNlKTogVXNlIGVuc3VyZSByYXRoZXIKKyAg
ICAgICAgdGhhbiBhZGQgdG8gaW5pdGlhbGl6ZSBncmFkaWVudCBkYXRhIGluIHRoZSBncmFkaWVu
dCBtYXAuIENoYW5nZSB0aGUgI2lmCisgICAgICAgIGZvciBVU0UoQ0cpIHNvIGl0IGRvZXNuJ3Qg
Y29uZnVzZSBicmFjZSBtYXRjaGluZyBmcm9tIHRoZSBzeW50YXggaGFuZGxpbmcKKyAgICAgICAg
b2YgdGV4dCBlZGl0b3JzIGxpa2UgdGhlIG9uZSBpbiBYY29kZS4gVXBkYXRlIGZvciB0aGUgY2hh
bmdlcyB0byB0aGUKKyAgICAgICAgYnVpbGRHcmFkaWVudCBhbmQgZ3JhZGllbnRUcmFuc2Zvcm0g
ZnVuY3Rpb25zLiBVc2UgYXV0byBhIGJpdCBtb3JlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUmVzb3VyY2VHcmFkaWVudDo6cG9zdEFwcGx5UmVzb3VyY2UpOiBVcGRhdGUgc2luY2UgdGhl
CisgICAgICAgIG1hcCBub3cgY29udGFpbnMgR3JhZGllbnREYXRhIHJhdGhlciB0aGFuIHVuaXF1
ZV9wdHI8R3JhZGllbnREYXRhPi4gVXNlCisgICAgICAgIHN0ZDo6ZXhjaGFuZ2Ugd2hlbiBmZXRj
aGluZyBtX3NhdmVkQ29udGV4dCBhbmQgYSBsb2NhbCB2YXJpYWJsZSB0byBtYWtlCisgICAgICAg
IHRoZSBncmFkaWVudC1yZWxhdGVkIGNvZGUgYSBiaXQgbGVzcyB3b3JkeS4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmFkZFN0b3BzKTogVXBkYXRlZCB0byB0
YWtlIEdyYWRpZW50JgorICAgICAgICByYXRoZXIgdGhhbiBHcmFkaWVudERhdGEqIGFuZCBtYWRl
IHRoaXMgYSBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUmVzb3VyY2VHcmFkaWVudDo6cGxhdGZvcm1TcHJlYWRNZXRob2RGcm9tU1ZHVHlwZSk6Cisg
ICAgICAgIE1hZGUgdGhpcyBhIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24uCisKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuaDogTWFkZSBtb3JlIGZ1bmN0
aW9ucyBwcml2YXRlLgorICAgICAgICBDb252ZXJ0ZWQgYWRkU3RvcHMgYW5kIHBsYXRmb3JtU3By
ZWFkTWV0aG9kRnJvbVNWR1R5cGUgdG8gc3RhdGljIG1lbWJlcgorICAgICAgICBmdW5jdGlvbnMu
IE1hZGUgR3JhZGllbnREYXRhIGEgbWVtYmVyIGNsYXNzLCBhbmQgcHV0IGRpcmVjdGx5IGludG8g
dGhlCisgICAgICAgIEhhc2hNYXAgcmF0aGVyIHRoYW4gcHV0dGluZyB1bmlxdWVfcHRyIGludG8g
dGhlIG1hcC4gQ2hhbmdlZAorICAgICAgICBjYWxjdWxhdGVHcmFkaWVudFRyYW5zZm9ybSB0byBn
cmFkaWVudFRyYW5zZm9ybSwgd2hpY2ggdXNlcyBhIHJldHVybgorICAgICAgICB2YWx1ZSByYXRo
ZXIgdGhhbiBhbiBvdXQgYXJndW1lbnQuIENoYW5nZWQgYnVpbGRHcmFkaWVudCB0byByZXR1cm4K
KyAgICAgICAgUmVmPEdyYWRpZW50PiByYXRoZXIgdGhhbiB0YWtpbmcgYSBHcmFkaWVudERhdGEq
IHRvIHN0b3JlIGl0IGluLgorCisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUxpbmVhckdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291
cmNlTGluZWFyR3JhZGllbnQ6OmJ1aWxkR3JhZGllbnQgY29uc3QpOgorICAgICAgICBDaGFuZ2Vk
IHRvIHJldHVybiB0aGUgZ3JhZGllbnQgaW5zdGVhZCBvZiBtb2RpZnlpbmcgYW4gYXJndW1lbnQg
YW5kCisgICAgICAgIHVwZGF0ZWQgZm9yIHRoZSBjaGFuZ2UgdG8gYWRkU3RvcHMuCisKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuaDogTWFk
ZSBtb3JlIGZ1bmN0aW9ucworICAgICAgICBwcml2YXRlIGFuZCB1cGRhdGVkIGZvciBjaGFuZ2Vz
IHRvIGdyYWRpZW50VHJhbnNmb3JtIGFuZCBidWlsZEdyYWRpZW50LgorCisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQ6OmJ1aWxkR3JhZGllbnQg
Y29uc3QpOgorICAgICAgICBDaGFuZ2VkIHRvIHJldHVybiB0aGUgZ3JhZGllbnQgaW5zdGVhZCBv
ZiBtb2RpZnlpbmcgYW4gYXJndW1lbnQgYW5kCisgICAgICAgIHVwZGF0ZWQgZm9yIHRoZSBjaGFu
Z2UgdG8gYWRkU3RvcHMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlUmFkaWFsR3JhZGllbnQuaDogTWFkZSBtb3JlIGZ1bmN0aW9ucworICAgICAgICBwcml2YXRl
IGFuZCB1cGRhdGVkIGZvciBjaGFuZ2VzIHRvIGdyYWRpZW50VHJhbnNmb3JtIGFuZCBidWlsZEdy
YWRpZW50LgorCisgICAgICAgICogc3ZnL0dyYWRpZW50QXR0cmlidXRlcy5oOiBSZW1vdmVkIHRo
ZSBzdG9wc1NldCBib29sZWFuIHNpbmNlCisgICAgICAgIHRoZSBzdG9wcyB2ZWN0b3IgaXMgZW1w
dHkgaWYgYW5kIG9ubHkgaWYgaXQncyBub3Qgc2V0LiBNYWRlIHRoZSBzZXRTdG9wcworICAgICAg
ICBmdW5jdGlvbiB0YWtlIGFuIHJ2YWx1ZSByZWZlcmVuY2Ugc28gaXQgZG9lc24ndCBhbHdheXMg
Y29weSBhIHZlY3Rvci4KKyAgICAgICAgQWxzbyB1c2UgdGhlIENvbG9yU3RvcFZlY3RvciB0eXBl
LCBzaGFyaW5nIHRoZSBzYW1lIGlubGluZSBjYXBhY2l0eQorICAgICAgICBwb2xpY3kgd2l0aCB0
aGUgR3JhZGllbnQgY2xhc3M7IGJvdGggYXJlIG9wdGltaXppbmcgdGhlIHNhbWUgdGhpbmcuCisK
KyAgICAgICAgKiBzdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0dyYWRpZW50RWxlbWVudDo6YnVpbGRTdG9wcyk6IFVzZSB0aGUgQ29sb3JTdG9wVmVjdG9y
IHR5cGUuCisgICAgICAgICogc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oOiBVcGRhdGUgZm9yIHRo
ZSBhYm92ZS4KKworICAgICAgICAqIHN2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0R3JhZGllbnRBdHRyaWJ1dGVzKTogVXBkYXRlIGZvciBjaGFu
Z2VzIHRvIGJ1aWxkU3RvcHMgYW5kCisgICAgICAgIHJlbW92ZWQgYW4gdW5uZWNlc3NhcnkgY2hl
Y2sgZm9yIGFuIGVtcHR5IHZlY3RvciBub3cgdGhhdCBhbiBlbXB0eQorICAgICAgICB2ZWN0b3Ig
aGFzIHRoZSBzYW1lIHNlbWFudGljcyBhcyAibm8gc3RvcHMiLgorICAgICAgICAqIHN2Zy9TVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0R3JhZGllbnRB
dHRyaWJ1dGVzKTogRGl0dG8uCisKIDIwMjAtMDctMTIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFNpbXBsaWZ5IGFuZCBpbXByb3ZlIEdyYWRpZW50LCBzb21lIG90
aGVyIHNtYWxsIGNvbG9yLXJlbGF0ZWQgcmVtb3ZhbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1ZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKaW5kZXggZWFmMWZiNGI5Yzdk
MjM1YmQ5ZTdkZDFkZDIyOTAxZDE2ZDM5ZmRkMy4uNzNlZDNmM2Y5NGEwZTEwZGM2NzkwMjMwZDE0
NGI4MzhiODcxZDc0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmVjdG9yLmgKKysrIGIv
U291cmNlL1dURi93dGYvVmVjdG9yLmgKQEAgLTc4Niw2ICs3ODYsNyBAQCBwdWJsaWM6CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IG90aGVyQ2FwYWNpdHk+IHZvaWQgYXBwZW5kVmVj
dG9yKGNvbnN0IFZlY3RvcjxVLCBvdGhlckNhcGFjaXR5PiYpOwogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFUsIHNpemVfdCBvdGhlckNhcGFjaXR5PiB2b2lkIGFwcGVuZFZlY3RvcihWZWN0b3I8VSwg
b3RoZXJDYXBhY2l0eT4mJik7CiAKKyAgICB2b2lkIGluc2VydChzaXplX3QgcG9zaXRpb24sIFZh
bHVlVHlwZSYmIHZhbHVlKSB7IGluc2VydDxWYWx1ZVR5cGU+KHBvc2l0aW9uLCBzdGQ6OmZvcndh
cmQ8VmFsdWVUeXBlPih2YWx1ZSkpOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBp
bnNlcnQoc2l6ZV90IHBvc2l0aW9uLCBjb25zdCBVKiwgc2l6ZV90KTsKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPiB2b2lkIGluc2VydChzaXplX3QgcG9zaXRpb24sIFUmJik7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVSwgc2l6ZV90IGMsIHR5cGVuYW1lIE9ILCBzaXplX3QgbSwgdHlwZW5hbWUg
TT4gdm9pZCBpbnNlcnRWZWN0b3Ioc2l6ZV90IHBvc2l0aW9uLCBjb25zdCBWZWN0b3I8VSwgYywg
T0gsIG0sIE0+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFkaWVudENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYWRpZW50Q2Fpcm8uY3BwCmluZGV4IDE3NjA4ZGFjMDM3YjFkYThlMmEzM2Q0
ZjNlMjlkZWNiNzYwNzNmZDIuLmYyYWUxYmY5MzRkODgxZTVkMDk3OGY4ZTIyYjQ4NTYxYWU0MTM5
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YWRpZW50Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYWRpZW50Q2Fpcm8uY3BwCkBAIC0xMzQsMjkgKzEzNCwyMSBAQCBzdGF0aWMgdm9pZCBh
ZGRDb25pY1NlY3RvcihjYWlyb19wYXR0ZXJuX3QgKmdyYWRpZW50LCBmbG9hdCBjeCwgZmxvYXQg
Y3ksIGZsb2F0CiAgICAgY2Fpcm9fbWVzaF9wYXR0ZXJuX2VuZF9wYXRjaChncmFkaWVudCk7CiB9
CiAKLXN0YXRpYyBHcmFkaWVudDo6Q29sb3JTdG9wIGludGVycG9sYXRlQ29sb3JTdG9wKGNvbnN0
IEdyYWRpZW50OjpDb2xvclN0b3AmIGZyb20sIGNvbnN0IEdyYWRpZW50OjpDb2xvclN0b3AmIHRv
KQotewotICAgIHJldHVybiB7IGJsZW5kKGZyb20ub2Zmc2V0LCB0by5vZmZzZXQsIDAuNSksIGJs
ZW5kKGZyb20uY29sb3IsIHRvLmNvbG9yLCAwLjUpIH07Ci19Ci0KIHN0YXRpYyBSZWZQdHI8Y2Fp
cm9fcGF0dGVybl90PiBjcmVhdGVDb25pYyhmbG9hdCB4bywgZmxvYXQgeW8sIGZsb2F0IHIsIGZs
b2F0IGFuZ2xlUmFkaWFucywKICAgICBHcmFkaWVudDo6Q29sb3JTdG9wVmVjdG9yIHN0b3BzLCBm
bG9hdCBnbG9iYWxBbHBoYSkKIHsKICAgICAvLyBJdCdzIG5vdCBwb3NzaWJsZSB0byBwYWludCBh
biBlbnRpcmUgY2lyY2xlIHdpdGggYSBzaW5nbGUgQmV6aWVyIGN1cnZlLgotICAgIC8vIFRvIGhh
dmUgYSBnb29kIGFwcHJveGltYXRpb24gdG8gYSBjaXJjbGUgaXQncyBuZWNlc3NhcnkgdG8gdXNl
IGF0IGxlYXN0Ci0gICAgLy8gZm91ciBCZXppZXIgY3VydmVzLiBTbyB0aHJlZSBhZGRpdGlvbmFs
IHN0b3BzIHdpdGggaW50ZXJwb2xhdGVkIGNvbG9ycwotICAgIC8vIGFyZSBhZGRlZCB0byBmb3Jj
ZSBwYWludGluZyBvZiBmb3VyIEJlemllciBjdXJ2ZXMuCisgICAgLy8gVG8gaGF2ZSBhIGdvb2Qg
YXBwcm94aW1hdGlvbiB0byBhIGNpcmNsZSBpdCdzIG5lY2Vzc2FyeSB0byB1c2UgYXQgbGVhc3Qg
Zm91ciBCZXppZXIgY3VydmVzLgorICAgIC8vIFNvIGFkZCB0aHJlZSBhZGRpdGlvbmFsIGludGVy
cG9sYXRlZCBzdG9wcywgYWxsb3dpbmcgZm9yIGZvdXIgQmV6aWVyIGN1cnZlcy4KICAgICBpZiAo
c3RvcHMuc2l6ZSgpID09IDIpIHsKLSAgICAgICAgYXV0byB0aGlyZCA9IGludGVycG9sYXRlQ29s
b3JTdG9wKHN0b3BzLmZpcnN0KCksIHN0b3BzLmxhc3QoKSk7Ci0gICAgICAgIGF1dG8gc2Vjb25k
ID0gaW50ZXJwb2xhdGVDb2xvclN0b3Aoc3RvcHMuZmlyc3QoKSwgdGhpcmQpOwotICAgICAgICBh
dXRvIGZvdXJ0aCA9IGludGVycG9sYXRlQ29sb3JTdG9wKHRoaXJkLCBzdG9wcy5sYXN0KCkpOwot
ICAgICAgICBzdG9wcy5pbnNlcnQoMSwgV1RGTW92ZShmb3VydGgpKTsKLSAgICAgICAgc3RvcHMu
aW5zZXJ0KDEsIFdURk1vdmUodGhpcmQpKTsKLSAgICAgICAgc3RvcHMuaW5zZXJ0KDEsIFdURk1v
dmUoc2Vjb25kKSk7CisgICAgICAgIGF1dG8gaW50ZXJwb2xhdGVkU3RvcCA9IFsmXSAoZG91Ymxl
IGZyYWN0aW9uKSB7CisgICAgICAgICAgICByZXR1cm4geyBibGVuZChzdG9wcy5maXJzdCgpLm9m
ZnNldCwgc3RvcHMubGFzdCgpLm9mZnNldCwgZnJhY3Rpb24pLCBibGVuZChzdG9wcy5maXJzdCgp
LmNvbG9yLCBzdG9wcy5sYXN0KCkuY29sb3IsIGZyYWN0aW9uKSB9OworICAgICAgICB9OworICAg
ICAgICBzdG9wcyA9IHsgc3RvcHMuZmlyc3QoKSwgaW50ZXJwb2xhdGVkU3RvcCgwLjI1KSwgaW50
ZXJwb2xhdGVkU3RvcCgwLjUpLCBpbnRlcnBvbGF0ZWRTdG9wKDAuNzUpLCBzdG9wcy5sYXN0KCkg
fTsKICAgICB9CiAKICAgICBpZiAoc3RvcHMuZmlyc3QoKS5vZmZzZXQgPiAwLjBmKQotICAgICAg
ICBzdG9wcy5pbnNlcnQoMCwgR3JhZGllbnQ6OkNvbG9yU3RvcCB7IDAuMGYsIHN0b3BzLmZpcnN0
KCkuY29sb3IgfSk7CisgICAgICAgIHN0b3BzLmluc2VydCgwLCB7IDAuMGYsIHN0b3BzLmZpcnN0
KCkuY29sb3IgfSk7CiAgICAgaWYgKHN0b3BzLmxhc3QoKS5vZmZzZXQgPCAxLjBmKQogICAgICAg
ICBzdG9wcy5hcHBlbmQoeyAxLjBmLCBzdG9wcy5sYXN0KCkuY29sb3IgfSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3Jh
ZGllbnQuY3BwCmluZGV4IGEwZmQzYzNjYmEyYjAzMGM3MTQ1NDg5ODEwYjEyNDc1NmMyYWNhMDUu
LmYyNzQ1ZjMyMTA1M2Y5Nzk5N2YwMDlkY2VkMGE3N2M3M2VlMDFhMzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRp
ZW50LmNwcApAQCAtMTE3LDQ0ICsxMTcsMzggQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRp
ZW50OjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW4KICAg
ICBpZiAoZ3JhZGllbnRVbml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpF
Q1RCT1VORElOR0JPWCAmJiBvYmplY3RCb3VuZGluZ0JveC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGF1dG8mIGdyYWRpZW50RGF0YSA9IG1fZ3JhZGllbnRNYXAuYWRk
KCZyZW5kZXJlciwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwotICAgIGlmICghZ3JhZGllbnRE
YXRhKQotICAgICAgICBncmFkaWVudERhdGEgPSBtYWtlVW5pcXVlPEdyYWRpZW50RGF0YT4oKTsK
LQogICAgIGJvb2wgaXNQYWludGluZ1RleHQgPSByZXNvdXJjZU1vZGUuY29udGFpbnMoUmVuZGVy
U1ZHUmVzb3VyY2VNb2RlOjpBcHBseVRvVGV4dCk7CiAKLSAgICAvLyBDcmVhdGUgZ3JhZGllbnQg
b2JqZWN0Ci0gICAgaWYgKCFncmFkaWVudERhdGEtPmdyYWRpZW50KSB7Ci0gICAgICAgIGJ1aWxk
R3JhZGllbnQoZ3JhZGllbnREYXRhLmdldCgpLCBzdHlsZSk7CisgICAgYXV0byYgZ3JhZGllbnRE
YXRhID0gbV9ncmFkaWVudE1hcC5lbnN1cmUoJnJlbmRlcmVyLCBbJl0oKSAtPiBHcmFkaWVudERh
dGEgeworICAgICAgICBhdXRvIGdyYWRpZW50ID0gYnVpbGRHcmFkaWVudChzdHlsZSk7CisKKyAg
ICAgICAgQWZmaW5lVHJhbnNmb3JtIHVzZXJzcGFjZVRyYW5zZm9ybTsKIAogICAgICAgICAvLyBD
RyBwbGF0Zm9ybXMgd2lsbCBoYW5kbGUgdGhlIGdyYWRpZW50IHNwYWNlIHRyYW5zZm9ybSBmb3Ig
dGV4dCBhZnRlciBhcHBseWluZyB0aGUKICAgICAgICAgLy8gcmVzb3VyY2UsIHNvIGRvbid0IGFw
cGx5IGl0IGhlcmUuIEZvciBub24tQ0cgcGxhdGZvcm1zLCB3ZSB3YW50IHRoZSB0ZXh0IGJvdW5k
aW5nCiAgICAgICAgIC8vIGJveCBhcHBsaWVkIHRvIHRoZSBncmFkaWVudCBzcGFjZSB0cmFuc2Zv
cm0gbm93LCBzbyB0aGUgZ3JhZGllbnQgc2hhZGVyIGNhbiB1c2UgaXQuCisgICAgICAgIGlmIChn
cmFkaWVudFVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5E
SU5HQk9YICYmICFvYmplY3RCb3VuZGluZ0JveC5pc0VtcHR5KCkKICNpZiBVU0UoQ0cpCi0gICAg
ICAgIGlmIChncmFkaWVudFVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09C
SkVDVEJPVU5ESU5HQk9YICYmICFvYmplY3RCb3VuZGluZ0JveC5pc0VtcHR5KCkgJiYgIWlzUGFp
bnRpbmdUZXh0KSB7Ci0jZWxzZQotICAgICAgICBpZiAoZ3JhZGllbnRVbml0cygpID09IFNWR1Vu
aXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCAmJiAhb2JqZWN0Qm91bmRp
bmdCb3guaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAmJiAhaXNQYWludGluZ1RleHQKICNlbmRp
ZgotICAgICAgICAgICAgZ3JhZGllbnREYXRhLT51c2Vyc3BhY2VUcmFuc2Zvcm0udHJhbnNsYXRl
KG9iamVjdEJvdW5kaW5nQm94LmxvY2F0aW9uKCkpOwotICAgICAgICAgICAgZ3JhZGllbnREYXRh
LT51c2Vyc3BhY2VUcmFuc2Zvcm0uc2NhbGUob2JqZWN0Qm91bmRpbmdCb3guc2l6ZSgpKTsKKyAg
ICAgICAgKSB7CisgICAgICAgICAgICB1c2Vyc3BhY2VUcmFuc2Zvcm0udHJhbnNsYXRlKG9iamVj
dEJvdW5kaW5nQm94LmxvY2F0aW9uKCkpOworICAgICAgICAgICAgdXNlcnNwYWNlVHJhbnNmb3Jt
LnNjYWxlKG9iamVjdEJvdW5kaW5nQm94LnNpemUoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBB
ZmZpbmVUcmFuc2Zvcm0gZ3JhZGllbnRUcmFuc2Zvcm07Ci0gICAgICAgIGNhbGN1bGF0ZUdyYWRp
ZW50VHJhbnNmb3JtKGdyYWRpZW50VHJhbnNmb3JtKTsKLQotICAgICAgICBncmFkaWVudERhdGEt
PnVzZXJzcGFjZVRyYW5zZm9ybSAqPSBncmFkaWVudFRyYW5zZm9ybTsKKyAgICAgICAgdXNlcnNw
YWNlVHJhbnNmb3JtICo9IGdyYWRpZW50VHJhbnNmb3JtKCk7CiAgICAgICAgIGlmIChpc1BhaW50
aW5nVGV4dCkgewogICAgICAgICAgICAgLy8gRGVwZW5kaW5nIG9uIGZvbnQgc2NhbGluZyBmYWN0
b3IsIHdlIG1heSBuZWVkIHRvIHJlc2NhbGUgdGhlIGdyYWRpZW50IGhlcmUgc2luY2UKICAgICAg
ICAgICAgIC8vIHRleHQgcGFpbnRpbmcgcmVtb3ZlcyB0aGUgc2NhbGUgZmFjdG9yIGZyb20gdGhl
IGNvbnRleHQuCiAgICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gYWRkaXRpb25hbFRleHRUcmFu
c2Zvcm07CiAgICAgICAgICAgICBpZiAoc2hvdWxkVHJhbnNmb3JtT25UZXh0UGFpbnRpbmcocmVu
ZGVyZXIsIGFkZGl0aW9uYWxUZXh0VHJhbnNmb3JtKSkKLSAgICAgICAgICAgICAgICBncmFkaWVu
dERhdGEtPnVzZXJzcGFjZVRyYW5zZm9ybSAqPSBhZGRpdGlvbmFsVGV4dFRyYW5zZm9ybTsKKyAg
ICAgICAgICAgICAgICB1c2Vyc3BhY2VUcmFuc2Zvcm0gKj0gYWRkaXRpb25hbFRleHRUcmFuc2Zv
cm07CiAgICAgICAgIH0KLSAgICAgICAgZ3JhZGllbnREYXRhLT5ncmFkaWVudC0+c2V0R3JhZGll
bnRTcGFjZVRyYW5zZm9ybShncmFkaWVudERhdGEtPnVzZXJzcGFjZVRyYW5zZm9ybSk7Ci0gICAg
fQogCi0gICAgaWYgKCFncmFkaWVudERhdGEtPmdyYWRpZW50KQotICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGdyYWRpZW50LT5zZXRHcmFkaWVudFNwYWNlVHJhbnNmb3JtKHVzZXJzcGFj
ZVRyYW5zZm9ybSk7CisKKyAgICAgICAgcmV0dXJuIHsgV1RGTW92ZShncmFkaWVudCksIHVzZXJz
cGFjZVRyYW5zZm9ybSB9OworICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgIC8vIERyYXcg
Z3JhZGllbnQKICAgICBjb250ZXh0LT5zYXZlKCk7CkBAIC0xNjYsMjEgKzE2MCwyMCBAQCBib29s
IFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYg
cmVuZGVyZXIsIGNvbnN0IFJlbgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAjZW5kaWYKLQogICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUocmVzb3VyY2VN
b2RlLmNvbnRhaW5zKFJlbmRlclNWR1Jlc291cmNlTW9kZTo6QXBwbHlUb0ZpbGwpID8gVGV4dERy
YXdpbmdNb2RlOjpGaWxsIDogVGV4dERyYXdpbmdNb2RlOjpTdHJva2UpOwogICAgIH0KIAotICAg
IGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHN0eWxlLnN2Z1N0eWxlKCk7CisgICAg
YXV0byYgc3ZnU3R5bGUgPSBzdHlsZS5zdmdTdHlsZSgpOwogCiAgICAgaWYgKHJlc291cmNlTW9k
ZS5jb250YWlucyhSZW5kZXJTVkdSZXNvdXJjZU1vZGU6OkFwcGx5VG9GaWxsKSkgewogICAgICAg
ICBjb250ZXh0LT5zZXRBbHBoYShzdmdTdHlsZS5maWxsT3BhY2l0eSgpKTsKLSAgICAgICAgY29u
dGV4dC0+c2V0RmlsbEdyYWRpZW50KCpncmFkaWVudERhdGEtPmdyYWRpZW50KTsKKyAgICAgICAg
Y29udGV4dC0+c2V0RmlsbEdyYWRpZW50KCpncmFkaWVudERhdGEuZ3JhZGllbnQpOwogICAgICAg
ICBjb250ZXh0LT5zZXRGaWxsUnVsZShzdmdTdHlsZS5maWxsUnVsZSgpKTsKICAgICB9IGVsc2Ug
aWYgKHJlc291cmNlTW9kZS5jb250YWlucyhSZW5kZXJTVkdSZXNvdXJjZU1vZGU6OkFwcGx5VG9T
dHJva2UpKSB7CiAgICAgICAgIGlmIChzdmdTdHlsZS52ZWN0b3JFZmZlY3QoKSA9PSBWZWN0b3JF
ZmZlY3Q6Ok5vblNjYWxpbmdTdHJva2UpCi0gICAgICAgICAgICBncmFkaWVudERhdGEtPmdyYWRp
ZW50LT5zZXRHcmFkaWVudFNwYWNlVHJhbnNmb3JtKHRyYW5zZm9ybU9uTm9uU2NhbGluZ1N0cm9r
ZSgmcmVuZGVyZXIsIGdyYWRpZW50RGF0YS0+dXNlcnNwYWNlVHJhbnNmb3JtKSk7CisgICAgICAg
ICAgICBncmFkaWVudERhdGEuZ3JhZGllbnQtPnNldEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0odHJh
bnNmb3JtT25Ob25TY2FsaW5nU3Ryb2tlKCZyZW5kZXJlciwgZ3JhZGllbnREYXRhLnVzZXJzcGFj
ZVRyYW5zZm9ybSkpOwogICAgICAgICBjb250ZXh0LT5zZXRBbHBoYShzdmdTdHlsZS5zdHJva2VP
cGFjaXR5KCkpOwotICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VHcmFkaWVudCgqZ3JhZGllbnRE
YXRhLT5ncmFkaWVudCk7CisgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUdyYWRpZW50KCpncmFk
aWVudERhdGEuZ3JhZGllbnQpOwogICAgICAgICBTVkdSZW5kZXJTdXBwb3J0OjphcHBseVN0cm9r
ZVN0eWxlVG9Db250ZXh0KGNvbnRleHQsIHN0eWxlLCByZW5kZXJlcik7CiAgICAgfQogCkBAIC0x
OTUsMjEgKzE4OCwyMiBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OnBvc3RBcHBs
eVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBHcmFwaAogICAgIGlmIChyZXNvdXJj
ZU1vZGUuY29udGFpbnMoUmVuZGVyU1ZHUmVzb3VyY2VNb2RlOjpBcHBseVRvVGV4dCkpIHsKICNp
ZiBVU0UoQ0cpCiAgICAgICAgIC8vIENHIHJlcXVpcmVzIHNwZWNpYWwgaGFuZGxpbmcgZm9yIGdy
YWRpZW50IG9uIHRleHQKLSAgICAgICAgR3JhZGllbnREYXRhKiBncmFkaWVudERhdGEgPSBudWxs
cHRyOwotICAgICAgICBpZiAobV9zYXZlZENvbnRleHQgJiYgKGdyYWRpZW50RGF0YSA9IG1fZ3Jh
ZGllbnRNYXAuZ2V0KCZyZW5kZXJlcikpKSB7Ci0gICAgICAgICAgICAvLyBSZXN0b3JlIG9uLXNj
cmVlbiBkcmF3aW5nIGNvbnRleHQKLSAgICAgICAgICAgIGNvbnRleHQgPSBtX3NhdmVkQ29udGV4
dDsKLSAgICAgICAgICAgIG1fc2F2ZWRDb250ZXh0ID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKG1f
c2F2ZWRDb250ZXh0KSB7CisgICAgICAgICAgICBhdXRvIGdyYWRpZW50RGF0YSA9IG1fZ3JhZGll
bnRNYXAuZmluZCgmcmVuZGVyZXIpOworICAgICAgICAgICAgaWYgKGdyYWRpZW50RGF0YSAhPSBt
X2dyYWRpZW50TWFwLmVuZCgpKSB7CisgICAgICAgICAgICAgICAgYXV0byYgZ3JhZGllbnQgPSAq
Z3JhZGllbnREYXRhLT52YWx1ZS5ncmFkaWVudDsKKworICAgICAgICAgICAgICAgIC8vIFJlc3Rv
cmUgb24tc2NyZWVuIGRyYXdpbmcgY29udGV4dAorICAgICAgICAgICAgICAgIGNvbnRleHQgPSBz
dGQ6OmV4Y2hhbmdlKG1fc2F2ZWRDb250ZXh0LCBudWxscHRyKTsKIAotICAgICAgICAgICAgQWZm
aW5lVHJhbnNmb3JtIGdyYWRpZW50VHJhbnNmb3JtOwotICAgICAgICAgICAgY2FsY3VsYXRlR3Jh
ZGllbnRUcmFuc2Zvcm0oZ3JhZGllbnRUcmFuc2Zvcm0pOworICAgICAgICAgICAgICAgIEZsb2F0
UmVjdCB0YXJnZXRSZWN0OworICAgICAgICAgICAgICAgIGdyYWRpZW50LnNldEdyYWRpZW50U3Bh
Y2VUcmFuc2Zvcm0oY2xpcFRvVGV4dE1hc2soKmNvbnRleHQsIG1faW1hZ2VCdWZmZXIsIHRhcmdl
dFJlY3QsICZyZW5kZXJlciwgZ3JhZGllbnRVbml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VO
SVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCwgZ3JhZGllbnRUcmFuc2Zvcm0oKSkpOwogCi0gICAg
ICAgICAgICBGbG9hdFJlY3QgdGFyZ2V0UmVjdDsKLSAgICAgICAgICAgIGdyYWRpZW50RGF0YS0+
Z3JhZGllbnQtPnNldEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oY2xpcFRvVGV4dE1hc2soKmNvbnRl
eHQsIG1faW1hZ2VCdWZmZXIsIHRhcmdldFJlY3QsICZyZW5kZXJlciwgZ3JhZGllbnRVbml0cygp
ID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCwgZ3JhZGll
bnRUcmFuc2Zvcm0pKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVudCgqZ3Jh
ZGllbnREYXRhLT5ncmFkaWVudCk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbEdy
YWRpZW50KGdyYWRpZW50KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdCh0YXJn
ZXRSZWN0KTsKIAotICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QodGFyZ2V0UmVjdCk7Ci0g
ICAgICAgICAgICBtX2ltYWdlQnVmZmVyLnJlc2V0KCk7CisgICAgICAgICAgICAgICAgbV9pbWFn
ZUJ1ZmZlci5yZXNldCgpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAjZWxzZQogICAgICAg
ICBVTlVTRURfUEFSQU0ocmVuZGVyZXIpOwpAQCAtMjMyLDE1ICsyMjYsMTMgQEAgdm9pZCBSZW5k
ZXJTVkdSZXNvdXJjZUdyYWRpZW50Ojpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiBy
ZW5kZXJlciwgR3JhcGgKICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CiB9CiAKLXZvaWQgUmVuZGVy
U1ZHUmVzb3VyY2VHcmFkaWVudDo6YWRkU3RvcHMoR3JhZGllbnREYXRhKiBncmFkaWVudERhdGEs
IGNvbnN0IFZlY3RvcjxHcmFkaWVudDo6Q29sb3JTdG9wPiYgc3RvcHMsIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6YWRkU3Rv
cHMoR3JhZGllbnQmIGdyYWRpZW50LCBjb25zdCBHcmFkaWVudDo6Q29sb3JTdG9wVmVjdG9yJiBz
dG9wcywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewotICAgIEFTU0VSVChncmFkaWVudERh
dGEpOwotICAgIEFTU0VSVChncmFkaWVudERhdGEtPmdyYWRpZW50KTsKICAgICBmb3IgKGF1dG8m
IHN0b3AgOiBzdG9wcykKLSAgICAgICAgZ3JhZGllbnREYXRhLT5ncmFkaWVudC0+YWRkQ29sb3JT
dG9wKHsgc3RvcC5vZmZzZXQsIHN0eWxlLmNvbG9yQnlBcHBseWluZ0NvbG9yRmlsdGVyKHN0b3Au
Y29sb3IpIH0pOworICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoeyBzdG9wLm9mZnNldCwg
c3R5bGUuY29sb3JCeUFwcGx5aW5nQ29sb3JGaWx0ZXIoc3RvcC5jb2xvcikgfSk7CiB9CiAKLUdy
YWRpZW50U3ByZWFkTWV0aG9kIFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OnBsYXRmb3JtU3By
ZWFkTWV0aG9kRnJvbVNWR1R5cGUoU1ZHU3ByZWFkTWV0aG9kVHlwZSBtZXRob2QpIGNvbnN0CitH
cmFkaWVudFNwcmVhZE1ldGhvZCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjpwbGF0Zm9ybVNw
cmVhZE1ldGhvZEZyb21TVkdUeXBlKFNWR1NwcmVhZE1ldGhvZFR5cGUgbWV0aG9kKQogewogICAg
IHN3aXRjaCAobWV0aG9kKSB7CiAgICAgY2FzZSBTVkdTcHJlYWRNZXRob2RVbmtub3duOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdy
YWRpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
R3JhZGllbnQuaAppbmRleCBmZmI5MDBiZGY0ZWRlY2FiMmViOGFiMGZiNWYyNTM0YWE2ODRiNmI3
Li44MWQ4MDM5NmM1Mzk5YmNjYzQ1NDJjYWE3YzBiYmUzOWUzNjdlYmU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGll
bnQuaApAQCAtMjksMTMgKzI5LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdHJ1Y3Qg
R3JhZGllbnREYXRhIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAg
ICBSZWZQdHI8R3JhZGllbnQ+IGdyYWRpZW50OwotICAgIEFmZmluZVRyYW5zZm9ybSB1c2Vyc3Bh
Y2VUcmFuc2Zvcm07Ci19OwotCiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiAKIGNsYXNzIFJlbmRl
clNWR1Jlc291cmNlR3JhZGllbnQgOiBwdWJsaWMgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIg
ewpAQCAtNTMsMTkgKzQ2LDIyIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBSZW5kZXJTVkdS
ZXNvdXJjZUdyYWRpZW50KFNWR0dyYWRpZW50RWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogCi0g
ICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CisgICAgc3RhdGljIHZvaWQgYWRkU3Rv
cHMoR3JhZGllbnQmLCBjb25zdCBHcmFkaWVudDo6Q29sb3JTdG9wVmVjdG9yJiwgY29uc3QgUmVu
ZGVyU3R5bGUmKTsKKyAgICBzdGF0aWMgR3JhZGllbnRTcHJlYWRNZXRob2QgcGxhdGZvcm1TcHJl
YWRNZXRob2RGcm9tU1ZHVHlwZShTVkdTcHJlYWRNZXRob2RUeXBlKTsKIAotICAgIHZvaWQgYWRk
U3RvcHMoR3JhZGllbnREYXRhKiwgY29uc3QgVmVjdG9yPEdyYWRpZW50OjpDb2xvclN0b3A+Jiwg
Y29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKK3ByaXZhdGU6CisgICAgdm9pZCBlbGVtZW50KCkg
Y29uc3QgPSBkZWxldGU7CiAKICAgICB2aXJ0dWFsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUg
Z3JhZGllbnRVbml0cygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlR3Jh
ZGllbnRUcmFuc2Zvcm0oQWZmaW5lVHJhbnNmb3JtJikgPSAwOworICAgIHZpcnR1YWwgQWZmaW5l
VHJhbnNmb3JtIGdyYWRpZW50VHJhbnNmb3JtKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCBjb2xsZWN0R3JhZGllbnRBdHRyaWJ1dGVzKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBidWls
ZEdyYWRpZW50KEdyYWRpZW50RGF0YSosIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgUmVmPEdyYWRpZW50PiBidWlsZEdyYWRpZW50KGNvbnN0IFJlbmRlclN0eWxl
JikgY29uc3QgPSAwOwogCi0gICAgR3JhZGllbnRTcHJlYWRNZXRob2QgcGxhdGZvcm1TcHJlYWRN
ZXRob2RGcm9tU1ZHVHlwZShTVkdTcHJlYWRNZXRob2RUeXBlKSBjb25zdDsKLQotcHJpdmF0ZToK
LSAgICBIYXNoTWFwPFJlbmRlck9iamVjdCosIHN0ZDo6dW5pcXVlX3B0cjxHcmFkaWVudERhdGE+
PiBtX2dyYWRpZW50TWFwOworICAgIHN0cnVjdCBHcmFkaWVudERhdGEgeworICAgICAgICBSZWZQ
dHI8R3JhZGllbnQ+IGdyYWRpZW50OworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdXNlcnNwYWNl
VHJhbnNmb3JtOworICAgIH07CisgICAgSGFzaE1hcDxSZW5kZXJPYmplY3QqLCBHcmFkaWVudERh
dGE+IG1fZ3JhZGllbnRNYXA7CiAKICNpZiBVU0UoQ0cpCiAgICAgR3JhcGhpY3NDb250ZXh0KiBt
X3NhdmVkQ29udGV4dCB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuY3Bw
CmluZGV4IDlkZDMyNTBlMDJkNWU4NTc0MTg4NDQyMGY1N2E3NjEzMTE0ZDliNDEuLmE4ZWMxYjJh
OTRmNjY1NWRhN2FkMzI5MjdkYTk3YzBjZGM3YTA5OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdy
YWRpZW50LmNwcApAQCAtNTAsMTEgKzUwLDEyIEBAIEZsb2F0UG9pbnQgUmVuZGVyU1ZHUmVzb3Vy
Y2VMaW5lYXJHcmFkaWVudDo6ZW5kUG9pbnQoY29uc3QgTGluZWFyR3JhZGllbnRBdHRyaWJ1CiAg
ICAgcmV0dXJuIFNWR0xlbmd0aENvbnRleHQ6OnJlc29sdmVQb2ludCgmbGluZWFyR3JhZGllbnRF
bGVtZW50KCksIGF0dHJpYnV0ZXMuZ3JhZGllbnRVbml0cygpLCBhdHRyaWJ1dGVzLngyKCksIGF0
dHJpYnV0ZXMueTIoKSk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVu
dDo6YnVpbGRHcmFkaWVudChHcmFkaWVudERhdGEqIGdyYWRpZW50RGF0YSwgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlKSBjb25zdAorUmVmPEdyYWRpZW50PiBSZW5kZXJTVkdSZXNvdXJjZUxpbmVh
ckdyYWRpZW50OjpidWlsZEdyYWRpZW50KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QK
IHsKLSAgICBncmFkaWVudERhdGEtPmdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVu
dDo6TGluZWFyRGF0YSB7IHN0YXJ0UG9pbnQobV9hdHRyaWJ1dGVzKSwgZW5kUG9pbnQobV9hdHRy
aWJ1dGVzKSB9KTsKLSAgICBncmFkaWVudERhdGEtPmdyYWRpZW50LT5zZXRTcHJlYWRNZXRob2Qo
cGxhdGZvcm1TcHJlYWRNZXRob2RGcm9tU1ZHVHlwZShtX2F0dHJpYnV0ZXMuc3ByZWFkTWV0aG9k
KCkpKTsKLSAgICBhZGRTdG9wcyhncmFkaWVudERhdGEsIG1fYXR0cmlidXRlcy5zdG9wcygpLCBz
dHlsZSk7CisgICAgYXV0byBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6Okxp
bmVhckRhdGEgeyBzdGFydFBvaW50KG1fYXR0cmlidXRlcyksIGVuZFBvaW50KG1fYXR0cmlidXRl
cykgfSk7CisgICAgZ3JhZGllbnQtPnNldFNwcmVhZE1ldGhvZChwbGF0Zm9ybVNwcmVhZE1ldGhv
ZEZyb21TVkdUeXBlKG1fYXR0cmlidXRlcy5zcHJlYWRNZXRob2QoKSkpOworICAgIGFkZFN0b3Bz
KGdyYWRpZW50LCBtX2F0dHJpYnV0ZXMuc3RvcHMoKSwgc3R5bGUpOworICAgIHJldHVybiBncmFk
aWVudDsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuaAppbmRleCA0YjkzYzg3MDQ2
Y2JkYzUzOTMxM2FjNzAzZTgyYWY2YzE4OTJhNWVlLi41NThkNDJhNTdlZmVjMGExYmU3NDI5MDJm
OGJmODRhOTQ2MTA1NTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuaApAQCAtMzQsMjAg
KzM0LDIwIEBAIHB1YmxpYzoKIAogICAgIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCYgbGluZWFy
R3JhZGllbnRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8U1ZHTGluZWFyR3JhZGll
bnRFbGVtZW50PihSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjpncmFkaWVudEVsZW1lbnQoKSk7
IH0KIAotICAgIFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBMaW5lYXJHcmFkaWVudFJlc291cmNlVHlwZTsgfQotCi0gICAgU1ZHVW5p
dFR5cGVzOjpTVkdVbml0VHlwZSBncmFkaWVudFVuaXRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9hdHRyaWJ1dGVzLmdyYWRpZW50VW5pdHMoKTsgfQotICAgIHZvaWQgY2FsY3VsYXRlR3Jh
ZGllbnRUcmFuc2Zvcm0oQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pIG92ZXJyaWRlIHsgdHJh
bnNmb3JtID0gbV9hdHRyaWJ1dGVzLmdyYWRpZW50VHJhbnNmb3JtKCk7IH0KLSAgICBib29sIGNv
bGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoKSBvdmVycmlkZTsKLSAgICB2b2lkIGJ1aWxkR3JhZGll
bnQoR3JhZGllbnREYXRhKiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKLQog
ICAgIEZsb2F0UG9pbnQgc3RhcnRQb2ludChjb25zdCBMaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMm
KSBjb25zdDsKICAgICBGbG9hdFBvaW50IGVuZFBvaW50KGNvbnN0IExpbmVhckdyYWRpZW50QXR0
cmlidXRlcyYpIGNvbnN0OwogCiBwcml2YXRlOgorICAgIFJlbmRlclNWR1Jlc291cmNlVHlwZSBy
ZXNvdXJjZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBMaW5lYXJHcmFkaWVudFJlc291cmNl
VHlwZTsgfQorCisgICAgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBncmFkaWVudFVuaXRzKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVzLmdyYWRpZW50VW5pdHMoKTsgfQorICAg
IEFmZmluZVRyYW5zZm9ybSBncmFkaWVudFRyYW5zZm9ybSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fYXR0cmlidXRlcy5ncmFkaWVudFRyYW5zZm9ybSgpOyB9CisgICAgYm9vbCBjb2xsZWN0R3Jh
ZGllbnRBdHRyaWJ1dGVzKCkgZmluYWw7CisgICAgUmVmPEdyYWRpZW50PiBidWlsZEdyYWRpZW50
KGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QgZmluYWw7CisKICAgICB2b2lkIGdyYWRpZW50RWxl
bWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50Ijsg
fQorICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVu
ZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudCI7IH0KIAogICAgIExpbmVhckdyYWRpZW50QXR0
cmlidXRlcyBtX2F0dHJpYnV0ZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5jcHAK
aW5kZXggMDlhNWNjMmIwZDVlY2E2NjI1MzA4YTcwYjBmZmIxMDQxNzk0N2RhYy4uYmFkZjE3NWE4
MDY0OWIwYmMxMzI0YjhiYTA3MjYyNjFkNWYyMGI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3Jh
ZGllbnQuY3BwCkBAIC02MSwxMiArNjEsMTIgQEAgZmxvYXQgUmVuZGVyU1ZHUmVzb3VyY2VSYWRp
YWxHcmFkaWVudDo6Zm9jYWxSYWRpdXMoY29uc3QgUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGUKICAg
ICByZXR1cm4gU1ZHTGVuZ3RoQ29udGV4dDo6cmVzb2x2ZUxlbmd0aCgmcmFkaWFsR3JhZGllbnRF
bGVtZW50KCksIGF0dHJpYnV0ZXMuZ3JhZGllbnRVbml0cygpLCBhdHRyaWJ1dGVzLmZyKCkpOwog
fQogCi12b2lkIFJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQ6OmJ1aWxkR3JhZGllbnQo
R3JhZGllbnREYXRhKiBncmFkaWVudERhdGEsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgY29u
c3QKK1JlZjxHcmFkaWVudD4gUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudDo6YnVpbGRH
cmFkaWVudChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0CiB7Ci0gICAgZ3JhZGllbnRE
YXRhLT5ncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OlJhZGlhbERhdGEgeyB0
aGlzLT5mb2NhbFBvaW50KG1fYXR0cmlidXRlcyksIHRoaXMtPmNlbnRlclBvaW50KG1fYXR0cmli
dXRlcyksIHRoaXMtPmZvY2FsUmFkaXVzKG1fYXR0cmlidXRlcyksIHRoaXMtPnJhZGl1cyhtX2F0
dHJpYnV0ZXMpLCAxIH0pOwotICAgIGdyYWRpZW50RGF0YS0+Z3JhZGllbnQtPnNldFNwcmVhZE1l
dGhvZChwbGF0Zm9ybVNwcmVhZE1ldGhvZEZyb21TVkdUeXBlKG1fYXR0cmlidXRlcy5zcHJlYWRN
ZXRob2QoKSkpOwotCi0gICAgYWRkU3RvcHMoZ3JhZGllbnREYXRhLCBtX2F0dHJpYnV0ZXMuc3Rv
cHMoKSwgc3R5bGUpOworICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRp
ZW50OjpSYWRpYWxEYXRhIHsgZm9jYWxQb2ludChtX2F0dHJpYnV0ZXMpLCBjZW50ZXJQb2ludCht
X2F0dHJpYnV0ZXMpLCBmb2NhbFJhZGl1cyhtX2F0dHJpYnV0ZXMpLCByYWRpdXMobV9hdHRyaWJ1
dGVzKSwgMSB9KTsKKyAgICBncmFkaWVudC0+c2V0U3ByZWFkTWV0aG9kKHBsYXRmb3JtU3ByZWFk
TWV0aG9kRnJvbVNWR1R5cGUobV9hdHRyaWJ1dGVzLnNwcmVhZE1ldGhvZCgpKSk7CisgICAgYWRk
U3RvcHMoZ3JhZGllbnQsIG1fYXR0cmlidXRlcy5zdG9wcygpLCBzdHlsZSk7CisgICAgcmV0dXJu
IGdyYWRpZW50OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5oCmluZGV4IDgwOTkz
MGNmOWM5MTJjZTRhNmE5ZDY0MjZiODVjOGM1YzU5MjY3YzcuLmFmMzk2ZDE1MDZkNmYyY2MxNzEx
ZGRiNzJlZjY0ZWE2YjllMzc0YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5oCkBAIC0z
NiwyMiArMzYsMjIgQEAgcHVibGljOgogCiAgICAgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50JiBy
YWRpYWxHcmFkaWVudEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxTVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQ+KFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmdyYWRpZW50RWxlbWVu
dCgpKTsgfQogCi0gICAgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIFJhZGlhbEdyYWRpZW50UmVzb3VyY2VUeXBlOyB9Ci0KLSAgICBT
VkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIGdyYWRpZW50VW5pdHMoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX2F0dHJpYnV0ZXMuZ3JhZGllbnRVbml0cygpOyB9Ci0gICAgdm9pZCBjYWxjdWxh
dGVHcmFkaWVudFRyYW5zZm9ybShBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkgb3ZlcnJpZGUg
eyB0cmFuc2Zvcm0gPSBtX2F0dHJpYnV0ZXMuZ3JhZGllbnRUcmFuc2Zvcm0oKTsgfQotICAgIHZv
aWQgYnVpbGRHcmFkaWVudChHcmFkaWVudERhdGEqLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0
IG92ZXJyaWRlOwotCiAgICAgRmxvYXRQb2ludCBjZW50ZXJQb2ludChjb25zdCBSYWRpYWxHcmFk
aWVudEF0dHJpYnV0ZXMmKSBjb25zdDsKICAgICBGbG9hdFBvaW50IGZvY2FsUG9pbnQoY29uc3Qg
UmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzJikgY29uc3Q7CiAgICAgZmxvYXQgcmFkaXVzKGNvbnN0
IFJhZGlhbEdyYWRpZW50QXR0cmlidXRlcyYpIGNvbnN0OwogICAgIGZsb2F0IGZvY2FsUmFkaXVz
KGNvbnN0IFJhZGlhbEdyYWRpZW50QXR0cmlidXRlcyYpIGNvbnN0OwogCiBwcml2YXRlOgorICAg
IFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBSYWRpYWxHcmFkaWVudFJlc291cmNlVHlwZTsgfQorCisgICAgU1ZHVW5pdFR5cGVzOjpTVkdV
bml0VHlwZSBncmFkaWVudFVuaXRzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVz
LmdyYWRpZW50VW5pdHMoKTsgfQorICAgIEFmZmluZVRyYW5zZm9ybSBncmFkaWVudFRyYW5zZm9y
bSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlcy5ncmFkaWVudFRyYW5zZm9ybSgp
OyB9CisgICAgUmVmPEdyYWRpZW50PiBidWlsZEdyYWRpZW50KGNvbnN0IFJlbmRlclN0eWxlJikg
Y29uc3QgZmluYWw7CisKICAgICB2b2lkIGdyYWRpZW50RWxlbWVudCgpIGNvbnN0ID0gZGVsZXRl
OwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
ICJSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50IjsgfQotICAgIGJvb2wgY29sbGVjdEdy
YWRpZW50QXR0cmlidXRlcygpIG92ZXJyaWRlOworICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudCI7
IH0KKyAgICBib29sIGNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoKSBmaW5hbDsKIAogICAgIFJh
ZGlhbEdyYWRpZW50QXR0cmlidXRlcyBtX2F0dHJpYnV0ZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL0dyYWRpZW50QXR0cmlidXRlcy5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L0dyYWRpZW50QXR0cmlidXRlcy5oCmluZGV4IGUwMWYxZmExNjIzY2Y4NmJlY2UxMjE1YWVjMDFj
NzgyMTllZDhlNjkuLjBlNjc1M2RlNDY0N2I2M2E3MWQ4NDgxNDBiNTRlM2ZhM2E1ZTg5ZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9HcmFkaWVudEF0dHJpYnV0ZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvR3JhZGllbnRBdHRyaWJ1dGVzLmgKQEAgLTMxLDE0ICszMSwxMyBA
QCBzdHJ1Y3QgR3JhZGllbnRBdHRyaWJ1dGVzIHsKICAgICAgICAgLCBtX3NwcmVhZE1ldGhvZFNl
dChmYWxzZSkKICAgICAgICAgLCBtX2dyYWRpZW50VW5pdHNTZXQoZmFsc2UpCiAgICAgICAgICwg
bV9ncmFkaWVudFRyYW5zZm9ybVNldChmYWxzZSkKLSAgICAgICAgLCBtX3N0b3BzU2V0KGZhbHNl
KQogICAgIHsKICAgICB9CiAKICAgICBTVkdTcHJlYWRNZXRob2RUeXBlIHNwcmVhZE1ldGhvZCgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFNWR1NwcmVhZE1ldGhvZFR5cGU+KG1fc3ByZWFk
TWV0aG9kKTsgfQogICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgZ3JhZGllbnRVbml0cygp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+KG1f
Z3JhZGllbnRVbml0cyk7IH0KICAgICBBZmZpbmVUcmFuc2Zvcm0gZ3JhZGllbnRUcmFuc2Zvcm0o
KSBjb25zdCB7IHJldHVybiBtX2dyYWRpZW50VHJhbnNmb3JtOyB9Ci0gICAgY29uc3QgVmVjdG9y
PEdyYWRpZW50OjpDb2xvclN0b3A+JiBzdG9wcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcHM7IH0K
KyAgICBjb25zdCBHcmFkaWVudDo6Q29sb3JTdG9wVmVjdG9yJiBzdG9wcygpIGNvbnN0IHsgcmV0
dXJuIG1fc3RvcHM7IH0KIAogICAgIHZvaWQgc2V0U3ByZWFkTWV0aG9kKFNWR1NwcmVhZE1ldGhv
ZFR5cGUgdmFsdWUpCiAgICAgewpAQCAtNTgsMjEgKzU3LDIwIEBAIHN0cnVjdCBHcmFkaWVudEF0
dHJpYnV0ZXMgewogICAgICAgICBtX2dyYWRpZW50VHJhbnNmb3JtU2V0ID0gdHJ1ZTsKICAgICB9
CiAKLSAgICB2b2lkIHNldFN0b3BzKGNvbnN0IFZlY3RvcjxHcmFkaWVudDo6Q29sb3JTdG9wPiYg
dmFsdWUpCisgICAgdm9pZCBzZXRTdG9wcyhHcmFkaWVudDo6Q29sb3JTdG9wVmVjdG9yJiYgdmFs
dWUpCiAgICAgewotICAgICAgICBtX3N0b3BzID0gdmFsdWU7Ci0gICAgICAgIG1fc3RvcHNTZXQg
PSB0cnVlOwotICAgIH0gCisgICAgICAgIG1fc3RvcHMgPSBXVEZNb3ZlKHZhbHVlKTsKKyAgICB9
CiAKICAgICBib29sIGhhc1NwcmVhZE1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3ByZWFkTWV0
aG9kU2V0OyB9CiAgICAgYm9vbCBoYXNHcmFkaWVudFVuaXRzKCkgY29uc3QgeyByZXR1cm4gbV9n
cmFkaWVudFVuaXRzU2V0OyB9CiAgICAgYm9vbCBoYXNHcmFkaWVudFRyYW5zZm9ybSgpIGNvbnN0
IHsgcmV0dXJuIG1fZ3JhZGllbnRUcmFuc2Zvcm1TZXQ7IH0KLSAgICBib29sIGhhc1N0b3BzKCkg
Y29uc3QgeyByZXR1cm4gbV9zdG9wc1NldDsgfQorICAgIGJvb2wgaGFzU3RvcHMoKSBjb25zdCB7
IHJldHVybiAhbV9zdG9wcy5pc0VtcHR5KCk7IH0KIAogcHJpdmF0ZToKICAgICAvLyBQcm9wZXJ0
aWVzCiAgICAgQWZmaW5lVHJhbnNmb3JtIG1fZ3JhZGllbnRUcmFuc2Zvcm07Ci0gICAgVmVjdG9y
PEdyYWRpZW50OjpDb2xvclN0b3A+IG1fc3RvcHM7CisgICAgR3JhZGllbnQ6OkNvbG9yU3RvcFZl
Y3RvciBtX3N0b3BzOwogCiAgICAgdW5zaWduZWQgbV9zcHJlYWRNZXRob2QgOiAyOwogICAgIHVu
c2lnbmVkIG1fZ3JhZGllbnRVbml0cyA6IDI7CkBAIC04MSwxMyArNzksMTIgQEAgcHJpdmF0ZToK
ICAgICB1bnNpZ25lZCBtX3NwcmVhZE1ldGhvZFNldCA6IDE7CiAgICAgdW5zaWduZWQgbV9ncmFk
aWVudFVuaXRzU2V0IDogMTsKICAgICB1bnNpZ25lZCBtX2dyYWRpZW50VHJhbnNmb3JtU2V0IDog
MTsKLSAgICB1bnNpZ25lZCBtX3N0b3BzU2V0IDogMTsKIH07CiAKIHN0cnVjdCBTYW1lU2l6ZUFz
R3JhZGllbnRBdHRyaWJ1dGVzIHsKICAgICBBZmZpbmVUcmFuc2Zvcm0gYTsKLSAgICBWZWN0b3I8
R3JhZGllbnQ6OkNvbG9yU3RvcD4gYjsKLSAgICB1bnNpZ25lZCBjIDogODsKKyAgICBHcmFkaWVu
dDo6Q29sb3JTdG9wVmVjdG9yIGI7CisgICAgdW5zaWduZWQgYyA6IDc7CiB9OwogCiBDT01QSUxF
X0FTU0VSVChzaXplb2YoR3JhZGllbnRBdHRyaWJ1dGVzKSA9PSBzaXplb2YoU2FtZVNpemVBc0dy
YWRpZW50QXR0cmlidXRlcyksIEdyYWRpZW50QXR0cmlidXRlc19zaXplX2d1YXJkKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKaW5kZXggNTgzNzAxODA2ZjdhNWVj
NmU5MzU0ZWQwMTRhYWU3NTk2OTNhMzZiZC4uM2I4MDAwZTgxYjdiZGJhZTYzMzViNjYxOTVmMTYx
NDUxMzU3YjkyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAK
QEAgLTk4LDkgKzk4LDkgQEAgdm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdl
ZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5
b3V0KCk7CiB9CiAKLVZlY3RvcjxHcmFkaWVudDo6Q29sb3JTdG9wPiBTVkdHcmFkaWVudEVsZW1l
bnQ6OmJ1aWxkU3RvcHMoKQorR3JhZGllbnQ6OkNvbG9yU3RvcFZlY3RvciBTVkdHcmFkaWVudEVs
ZW1lbnQ6OmJ1aWxkU3RvcHMoKQogewotICAgIFZlY3RvcjxHcmFkaWVudDo6Q29sb3JTdG9wPiBz
dG9wczsKKyAgICBHcmFkaWVudDo6Q29sb3JTdG9wVmVjdG9yIHN0b3BzOwogICAgIGZsb2F0IHBy
ZXZpb3VzT2Zmc2V0ID0gMC4wZjsKICAgICBmb3IgKGF1dG8mIHN0b3AgOiBjaGlsZHJlbk9mVHlw
ZTxTVkdTdG9wRWxlbWVudD4oKnRoaXMpKSB7CiAgICAgICAgIGF1dG8gbW9ub3RvbmljYWxseUlu
Y3JlYXNpbmdPZmZzZXQgPSBzdGQ6OmNsYW1wKHN0b3Aub2Zmc2V0KCksIHByZXZpb3VzT2Zmc2V0
LCAxLjBmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaAppbmRleCAxNzQ3
MGZjN2RhNmM3ZTM3MTMxY2Y3N2M4ODQ5MDRkMmI5ODQ4NDRkLi4xMjE2Nzc4NDJjOTFmNDJkMDIy
ODNjODc4OTBjMmY3NTBlYjJlMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R3JhZGllbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxl
bWVudC5oCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICAgICAgU1ZHX1NQUkVBRE1FVEhP
RF9SRVBFQVQgPSBTVkdTcHJlYWRNZXRob2RVbmtub3duCiAgICAgfTsKIAotICAgIFZlY3RvcjxH
cmFkaWVudDo6Q29sb3JTdG9wPiBidWlsZFN0b3BzKCk7CisgICAgR3JhZGllbnQ6OkNvbG9yU3Rv
cFZlY3RvciBidWlsZFN0b3BzKCk7CiAKICAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZH
UHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0dyYWRpZW50RWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZH
VVJJUmVmZXJlbmNlPjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVh
ckdyYWRpZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGll
bnRFbGVtZW50LmNwcAppbmRleCA5ZmE5NWNlM2VlYjgyMzA2ODc2YmY2ZDZiODIzMDcxYjQwYjli
NzVlLi5iYzJhMTg5MGIyNDRjYTU2M2Y1ZjRmNTAwODY0NmUyMTNlNjRiZDc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcApAQCAtMTA2LDEx
ICsxMDYsOCBAQCBzdGF0aWMgdm9pZCBzZXRHcmFkaWVudEF0dHJpYnV0ZXMoU1ZHR3JhZGllbnRF
bGVtZW50JiBlbGVtZW50LCBMaW5lYXJHcmFkaWVudEF0dAogICAgIGlmICghYXR0cmlidXRlcy5o
YXNHcmFkaWVudFRyYW5zZm9ybSgpICYmIGVsZW1lbnQuaGFzQXR0cmlidXRlKFNWR05hbWVzOjpn
cmFkaWVudFRyYW5zZm9ybUF0dHIpKQogICAgICAgICBhdHRyaWJ1dGVzLnNldEdyYWRpZW50VHJh
bnNmb3JtKGVsZW1lbnQuZ3JhZGllbnRUcmFuc2Zvcm0oKS5jb25jYXRlbmF0ZSgpKTsKIAotICAg
IGlmICghYXR0cmlidXRlcy5oYXNTdG9wcygpKSB7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxHcmFk
aWVudDo6Q29sb3JTdG9wPiYgc3RvcHMoZWxlbWVudC5idWlsZFN0b3BzKCkpOwotICAgICAgICBp
ZiAoIXN0b3BzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGF0dHJpYnV0ZXMuc2V0U3RvcHMoc3Rv
cHMpOwotICAgIH0KKyAgICBpZiAoIWF0dHJpYnV0ZXMuaGFzU3RvcHMoKSkKKyAgICAgICAgYXR0
cmlidXRlcy5zZXRTdG9wcyhlbGVtZW50LmJ1aWxkU3RvcHMoKSk7CiAKICAgICBpZiAoaXNMaW5l
YXIpIHsKICAgICAgICAgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50JiBsaW5lYXIgPSBkb3duY2Fz
dDxTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ+KGVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAppbmRleCBmZTFkNDk4ODA3Y2M5MGE2
YTczMjEyOTA2MzhkZmM5YmY0OWUwYTcyLi43OGZhZmI1MWExYWE0NmI1MjIwYTU3NWZhZWY0ZThm
MDQ5NWNkZjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50LmNwcApAQCAtMTEyLDExICsxMTIsOCBAQCBzdGF0aWMgdm9pZCBzZXRHcmFkaWVudEF0
dHJpYnV0ZXMoU1ZHR3JhZGllbnRFbGVtZW50JiBlbGVtZW50LCBSYWRpYWxHcmFkaWVudEF0dAog
ICAgIGlmICghYXR0cmlidXRlcy5oYXNHcmFkaWVudFRyYW5zZm9ybSgpICYmIGVsZW1lbnQuaGFz
QXR0cmlidXRlKFNWR05hbWVzOjpncmFkaWVudFRyYW5zZm9ybUF0dHIpKQogICAgICAgICBhdHRy
aWJ1dGVzLnNldEdyYWRpZW50VHJhbnNmb3JtKGVsZW1lbnQuZ3JhZGllbnRUcmFuc2Zvcm0oKS5j
b25jYXRlbmF0ZSgpKTsKIAotICAgIGlmICghYXR0cmlidXRlcy5oYXNTdG9wcygpKSB7Ci0gICAg
ICAgIGNvbnN0IFZlY3RvcjxHcmFkaWVudDo6Q29sb3JTdG9wPiYgc3RvcHMoZWxlbWVudC5idWls
ZFN0b3BzKCkpOwotICAgICAgICBpZiAoIXN0b3BzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGF0
dHJpYnV0ZXMuc2V0U3RvcHMoc3RvcHMpOwotICAgIH0KKyAgICBpZiAoIWF0dHJpYnV0ZXMuaGFz
U3RvcHMoKSkKKyAgICAgICAgYXR0cmlidXRlcy5zZXRTdG9wcyhlbGVtZW50LmJ1aWxkU3RvcHMo
KSk7CiAKICAgICBpZiAoaXNSYWRpYWwpIHsKICAgICAgICAgU1ZHUmFkaWFsR3JhZGllbnRFbGVt
ZW50JiByYWRpYWwgPSBkb3duY2FzdDxTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ+KGVsZW1lbnQp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404116</attachid>
            <date>2020-07-12 14:16:31 -0700</date>
            <delta_ts>2020-07-12 21:09:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214239-20200712141630.patch</filename>
            <type>text/plain</type>
            <size>30121</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0MjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQ3YTA4YzE3Y2Y3YmRiNWFjMTYwMzM0
YzA0ZDQzOTQwZTJkNjcwMDAuLjk0MTM3YmY0MmNhYzQzNzFiODgxOTI3Y2E2MDMzZWVmZTUzOTVj
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDctMTIgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFNvbWUgZnVydGhlciBzdHJlYW1saW5pbmcgb2YgR3JhZGll
bnQgaGFuZGxpbmcgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE0MjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3dGYvVmVjdG9yLmg6IEFkZGVkIGFuIG92ZXJsb2FkIGZvciBpbnNlcnQgYW5h
bG9nb3VzIHRvIHRoZSBvbmVzIHdlIGFscmVhZHkgaGF2ZQorICAgICAgICBmb3IgYXBwZW5kIGFu
ZCB1bmNoZWNrZWRBcHBlbmQsIGhlbHBmdWwgZm9yIHR5cGUgZGVkdWN0aW9uLgorCiAyMDIwLTA3
LTExICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4gYW5kIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWxhbmRpbmcgIk1ha2UgaGFzaGVyIHdvcmsg
d2l0aCB0dXBsZS1saWtlIGNsYXNzZXMiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWRlMDZjNDBkMDc2NDU3YTZk
MjlkOGQzZjgwNjdkMDhhZTgzOWI1My4uZDU5OGE5M2FjNmM1NDVjZGExYzZmMDdlY2JmNWRhNGQw
NGI1YzZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDIwLTA3LTEyICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBTb21lIGZ1cnRoZXIgc3RyZWFtbGlu
aW5nIG9mIEdyYWRpZW50IGhhbmRsaW5nIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDIzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhZGllbnRD
YWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnRlcnBvbGF0ZUNvbG9yU3RvcCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDb25pYyk6IFJld3JpdGUgdGhlIGludGVycG9s
YXRpb24gY29kZSB0byBjcmVhdGUgYSBuZXcKKyAgICAgICAgdmVjdG9yIHJhdGhlciB0aGFuIGVk
aXQgdGhlIGV4aXN0aW5nIG9uZSBhbmQgdG8gdXNlIGEgbW9yZSBzdHJhaWdodGZvcndhcmQKKyAg
ICAgICAgaWRpb20sIGFuZCBhIGxhbWJkYSByYXRoZXIgdGhhbiBhIGhlbHBlciBmdW5jdGlvbi4g
QWxzbyByZW1vdmVkIGFuIGV4cGxpY2l0CisgICAgICAgIGNvbnZlcnNpb24gdG8gR3JhZGllbnQ6
OkNvbG9yU3RvcCwgbm8gbG9uZ2VyIG5lZWRlZCBiZWNhdXNlIG9mIHRoZSBvdmVybG9hZAorICAg
ICAgICBhZGRlZCB0byBWZWN0b3I6Omluc2VydC4KKworICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSZXNvdXJjZUdyYWRpZW50OjphcHBseVJlc291cmNlKTogVXNlIGVuc3VyZSByYXRoZXIKKyAg
ICAgICAgdGhhbiBhZGQgdG8gaW5pdGlhbGl6ZSBncmFkaWVudCBkYXRhIGluIHRoZSBncmFkaWVu
dCBtYXAuIENoYW5nZSB0aGUgI2lmCisgICAgICAgIGZvciBVU0UoQ0cpIHNvIGl0IGRvZXNuJ3Qg
Y29uZnVzZSBicmFjZSBtYXRjaGluZyBmcm9tIHRoZSBzeW50YXggaGFuZGxpbmcKKyAgICAgICAg
b2YgdGV4dCBlZGl0b3JzIGxpa2UgdGhlIG9uZSBpbiBYY29kZS4gVXBkYXRlIGZvciB0aGUgY2hh
bmdlcyB0byB0aGUKKyAgICAgICAgYnVpbGRHcmFkaWVudCBhbmQgZ3JhZGllbnRUcmFuc2Zvcm0g
ZnVuY3Rpb25zLiBVc2UgYXV0byBhIGJpdCBtb3JlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUmVzb3VyY2VHcmFkaWVudDo6cG9zdEFwcGx5UmVzb3VyY2UpOiBVcGRhdGUgc2luY2UgdGhl
CisgICAgICAgIG1hcCBub3cgY29udGFpbnMgR3JhZGllbnREYXRhIHJhdGhlciB0aGFuIHVuaXF1
ZV9wdHI8R3JhZGllbnREYXRhPi4gVXNlCisgICAgICAgIHN0ZDo6ZXhjaGFuZ2Ugd2hlbiBmZXRj
aGluZyBtX3NhdmVkQ29udGV4dCBhbmQgYSBsb2NhbCB2YXJpYWJsZSB0byBtYWtlCisgICAgICAg
IHRoZSBncmFkaWVudC1yZWxhdGVkIGNvZGUgYSBiaXQgbGVzcyB3b3JkeS4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmFkZFN0b3BzKTogVXBkYXRlZCB0byB0
YWtlIEdyYWRpZW50JgorICAgICAgICByYXRoZXIgdGhhbiBHcmFkaWVudERhdGEqIGFuZCBtYWRl
IHRoaXMgYSBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUmVzb3VyY2VHcmFkaWVudDo6cGxhdGZvcm1TcHJlYWRNZXRob2RGcm9tU1ZHVHlwZSk6Cisg
ICAgICAgIE1hZGUgdGhpcyBhIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24uCisKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuaDogTWFkZSBtb3JlIGZ1bmN0
aW9ucyBwcml2YXRlLgorICAgICAgICBDb252ZXJ0ZWQgYWRkU3RvcHMgYW5kIHBsYXRmb3JtU3By
ZWFkTWV0aG9kRnJvbVNWR1R5cGUgdG8gc3RhdGljIG1lbWJlcgorICAgICAgICBmdW5jdGlvbnMu
IE1hZGUgR3JhZGllbnREYXRhIGEgbWVtYmVyIGNsYXNzLCBhbmQgcHV0IGRpcmVjdGx5IGludG8g
dGhlCisgICAgICAgIEhhc2hNYXAgcmF0aGVyIHRoYW4gcHV0dGluZyB1bmlxdWVfcHRyIGludG8g
dGhlIG1hcC4gQ2hhbmdlZAorICAgICAgICBjYWxjdWxhdGVHcmFkaWVudFRyYW5zZm9ybSB0byBn
cmFkaWVudFRyYW5zZm9ybSwgd2hpY2ggdXNlcyBhIHJldHVybgorICAgICAgICB2YWx1ZSByYXRo
ZXIgdGhhbiBhbiBvdXQgYXJndW1lbnQuIENoYW5nZWQgYnVpbGRHcmFkaWVudCB0byByZXR1cm4K
KyAgICAgICAgUmVmPEdyYWRpZW50PiByYXRoZXIgdGhhbiB0YWtpbmcgYSBHcmFkaWVudERhdGEq
IHRvIHN0b3JlIGl0IGluLgorCisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUxpbmVhckdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291
cmNlTGluZWFyR3JhZGllbnQ6OmJ1aWxkR3JhZGllbnQgY29uc3QpOgorICAgICAgICBDaGFuZ2Vk
IHRvIHJldHVybiB0aGUgZ3JhZGllbnQgaW5zdGVhZCBvZiBtb2RpZnlpbmcgYW4gYXJndW1lbnQg
YW5kCisgICAgICAgIHVwZGF0ZWQgZm9yIHRoZSBjaGFuZ2UgdG8gYWRkU3RvcHMuCisKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuaDogTWFk
ZSBtb3JlIGZ1bmN0aW9ucworICAgICAgICBwcml2YXRlIGFuZCB1cGRhdGVkIGZvciBjaGFuZ2Vz
IHRvIGdyYWRpZW50VHJhbnNmb3JtIGFuZCBidWlsZEdyYWRpZW50LgorCisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQ6OmJ1aWxkR3JhZGllbnQg
Y29uc3QpOgorICAgICAgICBDaGFuZ2VkIHRvIHJldHVybiB0aGUgZ3JhZGllbnQgaW5zdGVhZCBv
ZiBtb2RpZnlpbmcgYW4gYXJndW1lbnQgYW5kCisgICAgICAgIHVwZGF0ZWQgZm9yIHRoZSBjaGFu
Z2UgdG8gYWRkU3RvcHMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlUmFkaWFsR3JhZGllbnQuaDogTWFkZSBtb3JlIGZ1bmN0aW9ucworICAgICAgICBwcml2YXRl
IGFuZCB1cGRhdGVkIGZvciBjaGFuZ2VzIHRvIGdyYWRpZW50VHJhbnNmb3JtIGFuZCBidWlsZEdy
YWRpZW50LgorCisgICAgICAgICogc3ZnL0dyYWRpZW50QXR0cmlidXRlcy5oOiBSZW1vdmVkIHRo
ZSBzdG9wc1NldCBib29sZWFuIHNpbmNlCisgICAgICAgIHRoZSBzdG9wcyB2ZWN0b3IgaXMgZW1w
dHkgaWYgYW5kIG9ubHkgaWYgaXQncyBub3Qgc2V0LiBNYWRlIHRoZSBzZXRTdG9wcworICAgICAg
ICBmdW5jdGlvbiB0YWtlIGFuIHJ2YWx1ZSByZWZlcmVuY2Ugc28gaXQgZG9lc24ndCBhbHdheXMg
Y29weSBhIHZlY3Rvci4KKyAgICAgICAgQWxzbyB1c2UgdGhlIENvbG9yU3RvcFZlY3RvciB0eXBl
LCBzaGFyaW5nIHRoZSBzYW1lIGlubGluZSBjYXBhY2l0eQorICAgICAgICBwb2xpY3kgd2l0aCB0
aGUgR3JhZGllbnQgY2xhc3M7IGJvdGggYXJlIG9wdGltaXppbmcgdGhlIHNhbWUgdGhpbmcuCisK
KyAgICAgICAgKiBzdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0dyYWRpZW50RWxlbWVudDo6YnVpbGRTdG9wcyk6IFVzZSB0aGUgQ29sb3JTdG9wVmVjdG9y
IHR5cGUuCisgICAgICAgICogc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oOiBVcGRhdGUgZm9yIHRo
ZSBhYm92ZS4KKworICAgICAgICAqIHN2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0R3JhZGllbnRBdHRyaWJ1dGVzKTogVXBkYXRlIGZvciBjaGFu
Z2VzIHRvIGJ1aWxkU3RvcHMgYW5kCisgICAgICAgIHJlbW92ZWQgYW4gdW5uZWNlc3NhcnkgY2hl
Y2sgZm9yIGFuIGVtcHR5IHZlY3RvciBub3cgdGhhdCBhbiBlbXB0eQorICAgICAgICB2ZWN0b3Ig
aGFzIHRoZSBzYW1lIHNlbWFudGljcyBhcyAibm8gc3RvcHMiLgorICAgICAgICAqIHN2Zy9TVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0R3JhZGllbnRB
dHRyaWJ1dGVzKTogRGl0dG8uCisKIDIwMjAtMDctMTIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFNpbXBsaWZ5IGFuZCBpbXByb3ZlIEdyYWRpZW50LCBzb21lIG90
aGVyIHNtYWxsIGNvbG9yLXJlbGF0ZWQgcmVtb3ZhbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1ZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKaW5kZXggZWFmMWZiNGI5Yzdk
MjM1YmQ5ZTdkZDFkZDIyOTAxZDE2ZDM5ZmRkMy4uNzNlZDNmM2Y5NGEwZTEwZGM2NzkwMjMwZDE0
NGI4MzhiODcxZDc0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmVjdG9yLmgKKysrIGIv
U291cmNlL1dURi93dGYvVmVjdG9yLmgKQEAgLTc4Niw2ICs3ODYsNyBAQCBwdWJsaWM6CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IG90aGVyQ2FwYWNpdHk+IHZvaWQgYXBwZW5kVmVj
dG9yKGNvbnN0IFZlY3RvcjxVLCBvdGhlckNhcGFjaXR5PiYpOwogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFUsIHNpemVfdCBvdGhlckNhcGFjaXR5PiB2b2lkIGFwcGVuZFZlY3RvcihWZWN0b3I8VSwg
b3RoZXJDYXBhY2l0eT4mJik7CiAKKyAgICB2b2lkIGluc2VydChzaXplX3QgcG9zaXRpb24sIFZh
bHVlVHlwZSYmIHZhbHVlKSB7IGluc2VydDxWYWx1ZVR5cGU+KHBvc2l0aW9uLCBzdGQ6OmZvcndh
cmQ8VmFsdWVUeXBlPih2YWx1ZSkpOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBp
bnNlcnQoc2l6ZV90IHBvc2l0aW9uLCBjb25zdCBVKiwgc2l6ZV90KTsKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPiB2b2lkIGluc2VydChzaXplX3QgcG9zaXRpb24sIFUmJik7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVSwgc2l6ZV90IGMsIHR5cGVuYW1lIE9ILCBzaXplX3QgbSwgdHlwZW5hbWUg
TT4gdm9pZCBpbnNlcnRWZWN0b3Ioc2l6ZV90IHBvc2l0aW9uLCBjb25zdCBWZWN0b3I8VSwgYywg
T0gsIG0sIE0+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFkaWVudENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYWRpZW50Q2Fpcm8uY3BwCmluZGV4IDE3NjA4ZGFjMDM3YjFkYThlMmEzM2Q0
ZjNlMjlkZWNiNzYwNzNmZDIuLjNiN2UyMTZhNThmYjVhMzhkMDc0ZGY0OTBhZGU5OTIwNGQ5YWUy
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YWRpZW50Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYWRpZW50Q2Fpcm8uY3BwCkBAIC0xMzQsMjkgKzEzNCwyMSBAQCBzdGF0aWMgdm9pZCBh
ZGRDb25pY1NlY3RvcihjYWlyb19wYXR0ZXJuX3QgKmdyYWRpZW50LCBmbG9hdCBjeCwgZmxvYXQg
Y3ksIGZsb2F0CiAgICAgY2Fpcm9fbWVzaF9wYXR0ZXJuX2VuZF9wYXRjaChncmFkaWVudCk7CiB9
CiAKLXN0YXRpYyBHcmFkaWVudDo6Q29sb3JTdG9wIGludGVycG9sYXRlQ29sb3JTdG9wKGNvbnN0
IEdyYWRpZW50OjpDb2xvclN0b3AmIGZyb20sIGNvbnN0IEdyYWRpZW50OjpDb2xvclN0b3AmIHRv
KQotewotICAgIHJldHVybiB7IGJsZW5kKGZyb20ub2Zmc2V0LCB0by5vZmZzZXQsIDAuNSksIGJs
ZW5kKGZyb20uY29sb3IsIHRvLmNvbG9yLCAwLjUpIH07Ci19Ci0KIHN0YXRpYyBSZWZQdHI8Y2Fp
cm9fcGF0dGVybl90PiBjcmVhdGVDb25pYyhmbG9hdCB4bywgZmxvYXQgeW8sIGZsb2F0IHIsIGZs
b2F0IGFuZ2xlUmFkaWFucywKICAgICBHcmFkaWVudDo6Q29sb3JTdG9wVmVjdG9yIHN0b3BzLCBm
bG9hdCBnbG9iYWxBbHBoYSkKIHsKICAgICAvLyBJdCdzIG5vdCBwb3NzaWJsZSB0byBwYWludCBh
biBlbnRpcmUgY2lyY2xlIHdpdGggYSBzaW5nbGUgQmV6aWVyIGN1cnZlLgotICAgIC8vIFRvIGhh
dmUgYSBnb29kIGFwcHJveGltYXRpb24gdG8gYSBjaXJjbGUgaXQncyBuZWNlc3NhcnkgdG8gdXNl
IGF0IGxlYXN0Ci0gICAgLy8gZm91ciBCZXppZXIgY3VydmVzLiBTbyB0aHJlZSBhZGRpdGlvbmFs
IHN0b3BzIHdpdGggaW50ZXJwb2xhdGVkIGNvbG9ycwotICAgIC8vIGFyZSBhZGRlZCB0byBmb3Jj
ZSBwYWludGluZyBvZiBmb3VyIEJlemllciBjdXJ2ZXMuCisgICAgLy8gVG8gaGF2ZSBhIGdvb2Qg
YXBwcm94aW1hdGlvbiB0byBhIGNpcmNsZSBpdCdzIG5lY2Vzc2FyeSB0byB1c2UgYXQgbGVhc3Qg
Zm91ciBCZXppZXIgY3VydmVzLgorICAgIC8vIFNvIGFkZCB0aHJlZSBhZGRpdGlvbmFsIGludGVy
cG9sYXRlZCBzdG9wcywgYWxsb3dpbmcgZm9yIGZvdXIgQmV6aWVyIGN1cnZlcy4KICAgICBpZiAo
c3RvcHMuc2l6ZSgpID09IDIpIHsKLSAgICAgICAgYXV0byB0aGlyZCA9IGludGVycG9sYXRlQ29s
b3JTdG9wKHN0b3BzLmZpcnN0KCksIHN0b3BzLmxhc3QoKSk7Ci0gICAgICAgIGF1dG8gc2Vjb25k
ID0gaW50ZXJwb2xhdGVDb2xvclN0b3Aoc3RvcHMuZmlyc3QoKSwgdGhpcmQpOwotICAgICAgICBh
dXRvIGZvdXJ0aCA9IGludGVycG9sYXRlQ29sb3JTdG9wKHRoaXJkLCBzdG9wcy5sYXN0KCkpOwot
ICAgICAgICBzdG9wcy5pbnNlcnQoMSwgV1RGTW92ZShmb3VydGgpKTsKLSAgICAgICAgc3RvcHMu
aW5zZXJ0KDEsIFdURk1vdmUodGhpcmQpKTsKLSAgICAgICAgc3RvcHMuaW5zZXJ0KDEsIFdURk1v
dmUoc2Vjb25kKSk7CisgICAgICAgIGF1dG8gaW50ZXJwb2xhdGVkU3RvcCA9IFsmXSAoZG91Ymxl
IGZyYWN0aW9uKSAtPiBHcmFkaWVudDo6Q29sb3JTdG9wIHsKKyAgICAgICAgICAgIHJldHVybiB7
IGJsZW5kKHN0b3BzLmZpcnN0KCkub2Zmc2V0LCBzdG9wcy5sYXN0KCkub2Zmc2V0LCBmcmFjdGlv
biksIGJsZW5kKHN0b3BzLmZpcnN0KCkuY29sb3IsIHN0b3BzLmxhc3QoKS5jb2xvciwgZnJhY3Rp
b24pIH07CisgICAgICAgIH07CisgICAgICAgIHN0b3BzID0geyBzdG9wcy5maXJzdCgpLCBpbnRl
cnBvbGF0ZWRTdG9wKDAuMjUpLCBpbnRlcnBvbGF0ZWRTdG9wKDAuNSksIGludGVycG9sYXRlZFN0
b3AoMC43NSksIHN0b3BzLmxhc3QoKSB9OwogICAgIH0KIAogICAgIGlmIChzdG9wcy5maXJzdCgp
Lm9mZnNldCA+IDAuMGYpCi0gICAgICAgIHN0b3BzLmluc2VydCgwLCBHcmFkaWVudDo6Q29sb3JT
dG9wIHsgMC4wZiwgc3RvcHMuZmlyc3QoKS5jb2xvciB9KTsKKyAgICAgICAgc3RvcHMuaW5zZXJ0
KDAsIHsgMC4wZiwgc3RvcHMuZmlyc3QoKS5jb2xvciB9KTsKICAgICBpZiAoc3RvcHMubGFzdCgp
Lm9mZnNldCA8IDEuMGYpCiAgICAgICAgIHN0b3BzLmFwcGVuZCh7IDEuMGYsIHN0b3BzLmxhc3Qo
KS5jb2xvciB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKaW5kZXggYTBmZDNjM2NiYTJiMDMwYzcx
NDU0ODk4MTBiMTI0NzU2YzJhY2EwNS4uZjI3NDVmMzIxMDUzZjk3OTk3ZjAwOWRjZWQwYTc3Yzcz
ZWUwMWEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUdyYWRpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCkBAIC0xMTcsNDQgKzExNywzOCBAQCBib29s
IFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYg
cmVuZGVyZXIsIGNvbnN0IFJlbgogICAgIGlmIChncmFkaWVudFVuaXRzKCkgPT0gU1ZHVW5pdFR5
cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YICYmIG9iamVjdEJvdW5kaW5nQm94
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byYgZ3JhZGllbnRE
YXRhID0gbV9ncmFkaWVudE1hcC5hZGQoJnJlbmRlcmVyLCBudWxscHRyKS5pdGVyYXRvci0+dmFs
dWU7Ci0gICAgaWYgKCFncmFkaWVudERhdGEpCi0gICAgICAgIGdyYWRpZW50RGF0YSA9IG1ha2VV
bmlxdWU8R3JhZGllbnREYXRhPigpOwotCiAgICAgYm9vbCBpc1BhaW50aW5nVGV4dCA9IHJlc291
cmNlTW9kZS5jb250YWlucyhSZW5kZXJTVkdSZXNvdXJjZU1vZGU6OkFwcGx5VG9UZXh0KTsKIAot
ICAgIC8vIENyZWF0ZSBncmFkaWVudCBvYmplY3QKLSAgICBpZiAoIWdyYWRpZW50RGF0YS0+Z3Jh
ZGllbnQpIHsKLSAgICAgICAgYnVpbGRHcmFkaWVudChncmFkaWVudERhdGEuZ2V0KCksIHN0eWxl
KTsKKyAgICBhdXRvJiBncmFkaWVudERhdGEgPSBtX2dyYWRpZW50TWFwLmVuc3VyZSgmcmVuZGVy
ZXIsIFsmXSgpIC0+IEdyYWRpZW50RGF0YSB7CisgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBidWls
ZEdyYWRpZW50KHN0eWxlKTsKKworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdXNlcnNwYWNlVHJh
bnNmb3JtOwogCiAgICAgICAgIC8vIENHIHBsYXRmb3JtcyB3aWxsIGhhbmRsZSB0aGUgZ3JhZGll
bnQgc3BhY2UgdHJhbnNmb3JtIGZvciB0ZXh0IGFmdGVyIGFwcGx5aW5nIHRoZQogICAgICAgICAv
LyByZXNvdXJjZSwgc28gZG9uJ3QgYXBwbHkgaXQgaGVyZS4gRm9yIG5vbi1DRyBwbGF0Zm9ybXMs
IHdlIHdhbnQgdGhlIHRleHQgYm91bmRpbmcKICAgICAgICAgLy8gYm94IGFwcGxpZWQgdG8gdGhl
IGdyYWRpZW50IHNwYWNlIHRyYW5zZm9ybSBub3csIHNvIHRoZSBncmFkaWVudCBzaGFkZXIgY2Fu
IHVzZSBpdC4KKyAgICAgICAgaWYgKGdyYWRpZW50VW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNW
R19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1ggJiYgIW9iamVjdEJvdW5kaW5nQm94LmlzRW1w
dHkoKQogI2lmIFVTRShDRykKLSAgICAgICAgaWYgKGdyYWRpZW50VW5pdHMoKSA9PSBTVkdVbml0
VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1ggJiYgIW9iamVjdEJvdW5kaW5n
Qm94LmlzRW1wdHkoKSAmJiAhaXNQYWludGluZ1RleHQpIHsKLSNlbHNlCi0gICAgICAgIGlmIChn
cmFkaWVudFVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5E
SU5HQk9YICYmICFvYmplY3RCb3VuZGluZ0JveC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICYm
ICFpc1BhaW50aW5nVGV4dAogI2VuZGlmCi0gICAgICAgICAgICBncmFkaWVudERhdGEtPnVzZXJz
cGFjZVRyYW5zZm9ybS50cmFuc2xhdGUob2JqZWN0Qm91bmRpbmdCb3gubG9jYXRpb24oKSk7Ci0g
ICAgICAgICAgICBncmFkaWVudERhdGEtPnVzZXJzcGFjZVRyYW5zZm9ybS5zY2FsZShvYmplY3RC
b3VuZGluZ0JveC5zaXplKCkpOworICAgICAgICApIHsKKyAgICAgICAgICAgIHVzZXJzcGFjZVRy
YW5zZm9ybS50cmFuc2xhdGUob2JqZWN0Qm91bmRpbmdCb3gubG9jYXRpb24oKSk7CisgICAgICAg
ICAgICB1c2Vyc3BhY2VUcmFuc2Zvcm0uc2NhbGUob2JqZWN0Qm91bmRpbmdCb3guc2l6ZSgpKTsK
ICAgICAgICAgfQogCi0gICAgICAgIEFmZmluZVRyYW5zZm9ybSBncmFkaWVudFRyYW5zZm9ybTsK
LSAgICAgICAgY2FsY3VsYXRlR3JhZGllbnRUcmFuc2Zvcm0oZ3JhZGllbnRUcmFuc2Zvcm0pOwot
Ci0gICAgICAgIGdyYWRpZW50RGF0YS0+dXNlcnNwYWNlVHJhbnNmb3JtICo9IGdyYWRpZW50VHJh
bnNmb3JtOworICAgICAgICB1c2Vyc3BhY2VUcmFuc2Zvcm0gKj0gZ3JhZGllbnRUcmFuc2Zvcm0o
KTsKICAgICAgICAgaWYgKGlzUGFpbnRpbmdUZXh0KSB7CiAgICAgICAgICAgICAvLyBEZXBlbmRp
bmcgb24gZm9udCBzY2FsaW5nIGZhY3Rvciwgd2UgbWF5IG5lZWQgdG8gcmVzY2FsZSB0aGUgZ3Jh
ZGllbnQgaGVyZSBzaW5jZQogICAgICAgICAgICAgLy8gdGV4dCBwYWludGluZyByZW1vdmVzIHRo
ZSBzY2FsZSBmYWN0b3IgZnJvbSB0aGUgY29udGV4dC4KICAgICAgICAgICAgIEFmZmluZVRyYW5z
Zm9ybSBhZGRpdGlvbmFsVGV4dFRyYW5zZm9ybTsKICAgICAgICAgICAgIGlmIChzaG91bGRUcmFu
c2Zvcm1PblRleHRQYWludGluZyhyZW5kZXJlciwgYWRkaXRpb25hbFRleHRUcmFuc2Zvcm0pKQot
ICAgICAgICAgICAgICAgIGdyYWRpZW50RGF0YS0+dXNlcnNwYWNlVHJhbnNmb3JtICo9IGFkZGl0
aW9uYWxUZXh0VHJhbnNmb3JtOworICAgICAgICAgICAgICAgIHVzZXJzcGFjZVRyYW5zZm9ybSAq
PSBhZGRpdGlvbmFsVGV4dFRyYW5zZm9ybTsKICAgICAgICAgfQotICAgICAgICBncmFkaWVudERh
dGEtPmdyYWRpZW50LT5zZXRHcmFkaWVudFNwYWNlVHJhbnNmb3JtKGdyYWRpZW50RGF0YS0+dXNl
cnNwYWNlVHJhbnNmb3JtKTsKLSAgICB9CiAKLSAgICBpZiAoIWdyYWRpZW50RGF0YS0+Z3JhZGll
bnQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZ3JhZGllbnQtPnNldEdyYWRpZW50
U3BhY2VUcmFuc2Zvcm0odXNlcnNwYWNlVHJhbnNmb3JtKTsKKworICAgICAgICByZXR1cm4geyBX
VEZNb3ZlKGdyYWRpZW50KSwgdXNlcnNwYWNlVHJhbnNmb3JtIH07CisgICAgfSkuaXRlcmF0b3It
PnZhbHVlOwogCiAgICAgLy8gRHJhdyBncmFkaWVudAogICAgIGNvbnRleHQtPnNhdmUoKTsKQEAg
LTE2NiwyMSArMTYwLDIwIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6YXBwbHlS
ZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICNlbmRpZgotCiAgICAgICAgIGNvbnRleHQtPnNldFRl
eHREcmF3aW5nTW9kZShyZXNvdXJjZU1vZGUuY29udGFpbnMoUmVuZGVyU1ZHUmVzb3VyY2VNb2Rl
OjpBcHBseVRvRmlsbCkgPyBUZXh0RHJhd2luZ01vZGU6OkZpbGwgOiBUZXh0RHJhd2luZ01vZGU6
OlN0cm9rZSk7CiAgICAgfQogCi0gICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0eWxlID0g
c3R5bGUuc3ZnU3R5bGUoKTsKKyAgICBhdXRvJiBzdmdTdHlsZSA9IHN0eWxlLnN2Z1N0eWxlKCk7
CiAKICAgICBpZiAocmVzb3VyY2VNb2RlLmNvbnRhaW5zKFJlbmRlclNWR1Jlc291cmNlTW9kZTo6
QXBwbHlUb0ZpbGwpKSB7CiAgICAgICAgIGNvbnRleHQtPnNldEFscGhhKHN2Z1N0eWxlLmZpbGxP
cGFjaXR5KCkpOwotICAgICAgICBjb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoKmdyYWRpZW50RGF0
YS0+Z3JhZGllbnQpOworICAgICAgICBjb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoKmdyYWRpZW50
RGF0YS5ncmFkaWVudCk7CiAgICAgICAgIGNvbnRleHQtPnNldEZpbGxSdWxlKHN2Z1N0eWxlLmZp
bGxSdWxlKCkpOwogICAgIH0gZWxzZSBpZiAocmVzb3VyY2VNb2RlLmNvbnRhaW5zKFJlbmRlclNW
R1Jlc291cmNlTW9kZTo6QXBwbHlUb1N0cm9rZSkpIHsKICAgICAgICAgaWYgKHN2Z1N0eWxlLnZl
Y3RvckVmZmVjdCgpID09IFZlY3RvckVmZmVjdDo6Tm9uU2NhbGluZ1N0cm9rZSkKLSAgICAgICAg
ICAgIGdyYWRpZW50RGF0YS0+Z3JhZGllbnQtPnNldEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0odHJh
bnNmb3JtT25Ob25TY2FsaW5nU3Ryb2tlKCZyZW5kZXJlciwgZ3JhZGllbnREYXRhLT51c2Vyc3Bh
Y2VUcmFuc2Zvcm0pKTsKKyAgICAgICAgICAgIGdyYWRpZW50RGF0YS5ncmFkaWVudC0+c2V0R3Jh
ZGllbnRTcGFjZVRyYW5zZm9ybSh0cmFuc2Zvcm1Pbk5vblNjYWxpbmdTdHJva2UoJnJlbmRlcmVy
LCBncmFkaWVudERhdGEudXNlcnNwYWNlVHJhbnNmb3JtKSk7CiAgICAgICAgIGNvbnRleHQtPnNl
dEFscGhhKHN2Z1N0eWxlLnN0cm9rZU9wYWNpdHkoKSk7Ci0gICAgICAgIGNvbnRleHQtPnNldFN0
cm9rZUdyYWRpZW50KCpncmFkaWVudERhdGEtPmdyYWRpZW50KTsKKyAgICAgICAgY29udGV4dC0+
c2V0U3Ryb2tlR3JhZGllbnQoKmdyYWRpZW50RGF0YS5ncmFkaWVudCk7CiAgICAgICAgIFNWR1Jl
bmRlclN1cHBvcnQ6OmFwcGx5U3Ryb2tlU3R5bGVUb0NvbnRleHQoY29udGV4dCwgc3R5bGUsIHJl
bmRlcmVyKTsKICAgICB9CiAKQEAgLTE5NSwyMSArMTg4LDIyIEBAIHZvaWQgUmVuZGVyU1ZHUmVz
b3VyY2VHcmFkaWVudDo6cG9zdEFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIs
IEdyYXBoCiAgICAgaWYgKHJlc291cmNlTW9kZS5jb250YWlucyhSZW5kZXJTVkdSZXNvdXJjZU1v
ZGU6OkFwcGx5VG9UZXh0KSkgewogI2lmIFVTRShDRykKICAgICAgICAgLy8gQ0cgcmVxdWlyZXMg
c3BlY2lhbCBoYW5kbGluZyBmb3IgZ3JhZGllbnQgb24gdGV4dAotICAgICAgICBHcmFkaWVudERh
dGEqIGdyYWRpZW50RGF0YSA9IG51bGxwdHI7Ci0gICAgICAgIGlmIChtX3NhdmVkQ29udGV4dCAm
JiAoZ3JhZGllbnREYXRhID0gbV9ncmFkaWVudE1hcC5nZXQoJnJlbmRlcmVyKSkpIHsKLSAgICAg
ICAgICAgIC8vIFJlc3RvcmUgb24tc2NyZWVuIGRyYXdpbmcgY29udGV4dAotICAgICAgICAgICAg
Y29udGV4dCA9IG1fc2F2ZWRDb250ZXh0OwotICAgICAgICAgICAgbV9zYXZlZENvbnRleHQgPSBu
dWxscHRyOworICAgICAgICBpZiAobV9zYXZlZENvbnRleHQpIHsKKyAgICAgICAgICAgIGF1dG8g
Z3JhZGllbnREYXRhID0gbV9ncmFkaWVudE1hcC5maW5kKCZyZW5kZXJlcik7CisgICAgICAgICAg
ICBpZiAoZ3JhZGllbnREYXRhICE9IG1fZ3JhZGllbnRNYXAuZW5kKCkpIHsKKyAgICAgICAgICAg
ICAgICBhdXRvJiBncmFkaWVudCA9ICpncmFkaWVudERhdGEtPnZhbHVlLmdyYWRpZW50OworCisg
ICAgICAgICAgICAgICAgLy8gUmVzdG9yZSBvbi1zY3JlZW4gZHJhd2luZyBjb250ZXh0CisgICAg
ICAgICAgICAgICAgY29udGV4dCA9IHN0ZDo6ZXhjaGFuZ2UobV9zYXZlZENvbnRleHQsIG51bGxw
dHIpOwogCi0gICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gZ3JhZGllbnRUcmFuc2Zvcm07Ci0g
ICAgICAgICAgICBjYWxjdWxhdGVHcmFkaWVudFRyYW5zZm9ybShncmFkaWVudFRyYW5zZm9ybSk7
CisgICAgICAgICAgICAgICAgRmxvYXRSZWN0IHRhcmdldFJlY3Q7CisgICAgICAgICAgICAgICAg
Z3JhZGllbnQuc2V0R3JhZGllbnRTcGFjZVRyYW5zZm9ybShjbGlwVG9UZXh0TWFzaygqY29udGV4
dCwgbV9pbWFnZUJ1ZmZlciwgdGFyZ2V0UmVjdCwgJnJlbmRlcmVyLCBncmFkaWVudFVuaXRzKCkg
PT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YLCBncmFkaWVu
dFRyYW5zZm9ybSgpKSk7CiAKLSAgICAgICAgICAgIEZsb2F0UmVjdCB0YXJnZXRSZWN0OwotICAg
ICAgICAgICAgZ3JhZGllbnREYXRhLT5ncmFkaWVudC0+c2V0R3JhZGllbnRTcGFjZVRyYW5zZm9y
bShjbGlwVG9UZXh0TWFzaygqY29udGV4dCwgbV9pbWFnZUJ1ZmZlciwgdGFyZ2V0UmVjdCwgJnJl
bmRlcmVyLCBncmFkaWVudFVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09C
SkVDVEJPVU5ESU5HQk9YLCBncmFkaWVudFRyYW5zZm9ybSkpOwotICAgICAgICAgICAgY29udGV4
dC0+c2V0RmlsbEdyYWRpZW50KCpncmFkaWVudERhdGEtPmdyYWRpZW50KTsKKyAgICAgICAgICAg
ICAgICBjb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoZ3JhZGllbnQpOworICAgICAgICAgICAgICAg
IGNvbnRleHQtPmZpbGxSZWN0KHRhcmdldFJlY3QpOwogCi0gICAgICAgICAgICBjb250ZXh0LT5m
aWxsUmVjdCh0YXJnZXRSZWN0KTsKLSAgICAgICAgICAgIG1faW1hZ2VCdWZmZXIucmVzZXQoKTsK
KyAgICAgICAgICAgICAgICBtX2ltYWdlQnVmZmVyLnJlc2V0KCk7CisgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTShyZW5kZXJlcik7CkBAIC0yMzIs
MTUgKzIyNiwxMyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OnBvc3RBcHBseVJl
c291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBHcmFwaAogICAgIGNvbnRleHQtPnJlc3Rv
cmUoKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjphZGRTdG9wcyhHcmFk
aWVudERhdGEqIGdyYWRpZW50RGF0YSwgY29uc3QgVmVjdG9yPEdyYWRpZW50OjpDb2xvclN0b3A+
JiBzdG9wcywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAordm9pZCBSZW5kZXJTVkdS
ZXNvdXJjZUdyYWRpZW50OjphZGRTdG9wcyhHcmFkaWVudCYgZ3JhZGllbnQsIGNvbnN0IEdyYWRp
ZW50OjpDb2xvclN0b3BWZWN0b3ImIHN0b3BzLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7
Ci0gICAgQVNTRVJUKGdyYWRpZW50RGF0YSk7Ci0gICAgQVNTRVJUKGdyYWRpZW50RGF0YS0+Z3Jh
ZGllbnQpOwogICAgIGZvciAoYXV0byYgc3RvcCA6IHN0b3BzKQotICAgICAgICBncmFkaWVudERh
dGEtPmdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyBzdG9wLm9mZnNldCwgc3R5bGUuY29sb3JCeUFw
cGx5aW5nQ29sb3JGaWx0ZXIoc3RvcC5jb2xvcikgfSk7CisgICAgICAgIGdyYWRpZW50LmFkZENv
bG9yU3RvcCh7IHN0b3Aub2Zmc2V0LCBzdHlsZS5jb2xvckJ5QXBwbHlpbmdDb2xvckZpbHRlcihz
dG9wLmNvbG9yKSB9KTsKIH0KIAotR3JhZGllbnRTcHJlYWRNZXRob2QgUmVuZGVyU1ZHUmVzb3Vy
Y2VHcmFkaWVudDo6cGxhdGZvcm1TcHJlYWRNZXRob2RGcm9tU1ZHVHlwZShTVkdTcHJlYWRNZXRo
b2RUeXBlIG1ldGhvZCkgY29uc3QKK0dyYWRpZW50U3ByZWFkTWV0aG9kIFJlbmRlclNWR1Jlc291
cmNlR3JhZGllbnQ6OnBsYXRmb3JtU3ByZWFkTWV0aG9kRnJvbVNWR1R5cGUoU1ZHU3ByZWFkTWV0
aG9kVHlwZSBtZXRob2QpCiB7CiAgICAgc3dpdGNoIChtZXRob2QpIHsKICAgICBjYXNlIFNWR1Nw
cmVhZE1ldGhvZFVua25vd246CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oCmluZGV4IGZmYjkwMGJkZjRlZGVjYWIy
ZWI4YWIwZmI1ZjI1MzRhYTY4NGI2YjcuLjgxZDgwMzk2YzUzOTliY2NjNDU0MmNhYTdjMGJiZTM5
ZTM2N2ViZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VHcmFkaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oCkBAIC0yOSwxMyArMjksNiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXN0cnVjdCBHcmFkaWVudERhdGEgewotICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwotcHVibGljOgotICAgIFJlZlB0cjxHcmFkaWVudD4gZ3JhZGllbnQ7Ci0gICAg
QWZmaW5lVHJhbnNmb3JtIHVzZXJzcGFjZVRyYW5zZm9ybTsKLX07Ci0KIGNsYXNzIEdyYXBoaWNz
Q29udGV4dDsKIAogY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudCA6IHB1YmxpYyBSZW5k
ZXJTVkdSZXNvdXJjZUNvbnRhaW5lciB7CkBAIC01MywxOSArNDYsMjIgQEAgcHVibGljOgogcHJv
dGVjdGVkOgogICAgIFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQoU1ZHR3JhZGllbnRFbGVtZW50
JiwgUmVuZGVyU3R5bGUmJik7CiAKLSAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsK
KyAgICBzdGF0aWMgdm9pZCBhZGRTdG9wcyhHcmFkaWVudCYsIGNvbnN0IEdyYWRpZW50OjpDb2xv
clN0b3BWZWN0b3ImLCBjb25zdCBSZW5kZXJTdHlsZSYpOworICAgIHN0YXRpYyBHcmFkaWVudFNw
cmVhZE1ldGhvZCBwbGF0Zm9ybVNwcmVhZE1ldGhvZEZyb21TVkdUeXBlKFNWR1NwcmVhZE1ldGhv
ZFR5cGUpOwogCi0gICAgdm9pZCBhZGRTdG9wcyhHcmFkaWVudERhdGEqLCBjb25zdCBWZWN0b3I8
R3JhZGllbnQ6OkNvbG9yU3RvcD4mLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OworcHJpdmF0
ZToKKyAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAogICAgIHZpcnR1YWwgU1ZH
VW5pdFR5cGVzOjpTVkdVbml0VHlwZSBncmFkaWVudFVuaXRzKCkgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBjYWxjdWxhdGVHcmFkaWVudFRyYW5zZm9ybShBZmZpbmVUcmFuc2Zvcm0mKSA9
IDA7CisgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gZ3JhZGllbnRUcmFuc2Zvcm0oKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBib29sIGNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIGJ1aWxkR3JhZGllbnQoR3JhZGllbnREYXRhKiwgY29uc3QgUmVu
ZGVyU3R5bGUmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWY8R3JhZGllbnQ+IGJ1aWxkR3Jh
ZGllbnQoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCA9IDA7CiAKLSAgICBHcmFkaWVudFNwcmVh
ZE1ldGhvZCBwbGF0Zm9ybVNwcmVhZE1ldGhvZEZyb21TVkdUeXBlKFNWR1NwcmVhZE1ldGhvZFR5
cGUpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIEhhc2hNYXA8UmVuZGVyT2JqZWN0Kiwgc3RkOjp1
bmlxdWVfcHRyPEdyYWRpZW50RGF0YT4+IG1fZ3JhZGllbnRNYXA7CisgICAgc3RydWN0IEdyYWRp
ZW50RGF0YSB7CisgICAgICAgIFJlZlB0cjxHcmFkaWVudD4gZ3JhZGllbnQ7CisgICAgICAgIEFm
ZmluZVRyYW5zZm9ybSB1c2Vyc3BhY2VUcmFuc2Zvcm07CisgICAgfTsKKyAgICBIYXNoTWFwPFJl
bmRlck9iamVjdCosIEdyYWRpZW50RGF0YT4gbV9ncmFkaWVudE1hcDsKIAogI2lmIFVTRShDRykK
ICAgICBHcmFwaGljc0NvbnRleHQqIG1fc2F2ZWRDb250ZXh0IHsgbnVsbHB0ciB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVh
ckdyYWRpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VMaW5lYXJHcmFkaWVudC5jcHAKaW5kZXggOWRkMzI1MGUwMmQ1ZTg1NzQxODg0NDIwZjU3
YTc2MTMxMTRkOWI0MS4uYThlYzFiMmE5NGY2NjU1ZGE3YWQzMjkyN2RhOTdjMGNkYzdhMDk5YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUxpbmVhckdyYWRpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuY3BwCkBAIC01MCwxMSArNTAsMTIgQEAgRmxv
YXRQb2ludCBSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50OjplbmRQb2ludChjb25zdCBM
aW5lYXJHcmFkaWVudEF0dHJpYnUKICAgICByZXR1cm4gU1ZHTGVuZ3RoQ29udGV4dDo6cmVzb2x2
ZVBvaW50KCZsaW5lYXJHcmFkaWVudEVsZW1lbnQoKSwgYXR0cmlidXRlcy5ncmFkaWVudFVuaXRz
KCksIGF0dHJpYnV0ZXMueDIoKSwgYXR0cmlidXRlcy55MigpKTsKIH0KIAotdm9pZCBSZW5kZXJT
VkdSZXNvdXJjZUxpbmVhckdyYWRpZW50OjpidWlsZEdyYWRpZW50KEdyYWRpZW50RGF0YSogZ3Jh
ZGllbnREYXRhLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0CitSZWY8R3JhZGllbnQ+
IFJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQ6OmJ1aWxkR3JhZGllbnQoY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlKSBjb25zdAogewotICAgIGdyYWRpZW50RGF0YS0+Z3JhZGllbnQgPSBH
cmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgc3RhcnRQb2ludChtX2F0dHJp
YnV0ZXMpLCBlbmRQb2ludChtX2F0dHJpYnV0ZXMpIH0pOwotICAgIGdyYWRpZW50RGF0YS0+Z3Jh
ZGllbnQtPnNldFNwcmVhZE1ldGhvZChwbGF0Zm9ybVNwcmVhZE1ldGhvZEZyb21TVkdUeXBlKG1f
YXR0cmlidXRlcy5zcHJlYWRNZXRob2QoKSkpOwotICAgIGFkZFN0b3BzKGdyYWRpZW50RGF0YSwg
bV9hdHRyaWJ1dGVzLnN0b3BzKCksIHN0eWxlKTsKKyAgICBhdXRvIGdyYWRpZW50ID0gR3JhZGll
bnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IHN0YXJ0UG9pbnQobV9hdHRyaWJ1dGVz
KSwgZW5kUG9pbnQobV9hdHRyaWJ1dGVzKSB9KTsKKyAgICBncmFkaWVudC0+c2V0U3ByZWFkTWV0
aG9kKHBsYXRmb3JtU3ByZWFkTWV0aG9kRnJvbVNWR1R5cGUobV9hdHRyaWJ1dGVzLnNwcmVhZE1l
dGhvZCgpKSk7CisgICAgYWRkU3RvcHMoZ3JhZGllbnQsIG1fYXR0cmlidXRlcy5zdG9wcygpLCBz
dHlsZSk7CisgICAgcmV0dXJuIGdyYWRpZW50OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFk
aWVudC5oCmluZGV4IDRiOTNjODcwNDZjYmRjNTM5MzEzYWM3MDNlODJhZjZjMTg5MmE1ZWUuLjU1
OGQ0MmE1N2VmZWMwYTFiZTc0MjkwMmY4YmY4NGE5NDYxMDU1M2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5l
YXJHcmFkaWVudC5oCkBAIC0zNCwyMCArMzQsMjAgQEAgcHVibGljOgogCiAgICAgU1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50JiBsaW5lYXJHcmFkaWVudEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBk
b3duY2FzdDxTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ+KFJlbmRlclNWR1Jlc291cmNlR3JhZGll
bnQ6OmdyYWRpZW50RWxlbWVudCgpKTsgfQogCi0gICAgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJl
c291cmNlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIExpbmVhckdyYWRpZW50UmVzb3Vy
Y2VUeXBlOyB9Ci0KLSAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIGdyYWRpZW50VW5pdHMo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2F0dHJpYnV0ZXMuZ3JhZGllbnRVbml0cygpOyB9
Ci0gICAgdm9pZCBjYWxjdWxhdGVHcmFkaWVudFRyYW5zZm9ybShBZmZpbmVUcmFuc2Zvcm0mIHRy
YW5zZm9ybSkgb3ZlcnJpZGUgeyB0cmFuc2Zvcm0gPSBtX2F0dHJpYnV0ZXMuZ3JhZGllbnRUcmFu
c2Zvcm0oKTsgfQotICAgIGJvb2wgY29sbGVjdEdyYWRpZW50QXR0cmlidXRlcygpIG92ZXJyaWRl
OwotICAgIHZvaWQgYnVpbGRHcmFkaWVudChHcmFkaWVudERhdGEqLCBjb25zdCBSZW5kZXJTdHls
ZSYpIGNvbnN0IG92ZXJyaWRlOwotCiAgICAgRmxvYXRQb2ludCBzdGFydFBvaW50KGNvbnN0IExp
bmVhckdyYWRpZW50QXR0cmlidXRlcyYpIGNvbnN0OwogICAgIEZsb2F0UG9pbnQgZW5kUG9pbnQo
Y29uc3QgTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzJikgY29uc3Q7CiAKIHByaXZhdGU6CisgICAg
UmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IExpbmVhckdyYWRpZW50UmVzb3VyY2VUeXBlOyB9CisKKyAgICBTVkdVbml0VHlwZXM6OlNWR1Vu
aXRUeXBlIGdyYWRpZW50VW5pdHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZXMu
Z3JhZGllbnRVbml0cygpOyB9CisgICAgQWZmaW5lVHJhbnNmb3JtIGdyYWRpZW50VHJhbnNmb3Jt
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVzLmdyYWRpZW50VHJhbnNmb3JtKCk7
IH0KKyAgICBib29sIGNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoKSBmaW5hbDsKKyAgICBSZWY8
R3JhZGllbnQ+IGJ1aWxkR3JhZGllbnQoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBmaW5hbDsK
KwogICAgIHZvaWQgZ3JhZGllbnRFbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICBjb25z
dCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1Jl
c291cmNlTGluZWFyR3JhZGllbnQiOyB9CisgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50IjsgfQog
CiAgICAgTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzIG1fYXR0cmlidXRlczsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFs
R3JhZGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZVJhZGlhbEdyYWRpZW50LmNwcAppbmRleCAwOWE1Y2MyYjBkNWVjYTY2MjUzMDhhNzBiMGZm
YjEwNDE3OTQ3ZGFjLi5iYWRmMTc1YTgwNjQ5YjBiYzEzMjRiOGJhMDcyNjI2MWQ1ZjIwYjk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
UmFkaWFsR3JhZGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5jcHAKQEAgLTYxLDEyICs2MSwxMiBAQCBmbG9h
dCBSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50Ojpmb2NhbFJhZGl1cyhjb25zdCBSYWRp
YWxHcmFkaWVudEF0dHJpYnV0ZQogICAgIHJldHVybiBTVkdMZW5ndGhDb250ZXh0OjpyZXNvbHZl
TGVuZ3RoKCZyYWRpYWxHcmFkaWVudEVsZW1lbnQoKSwgYXR0cmlidXRlcy5ncmFkaWVudFVuaXRz
KCksIGF0dHJpYnV0ZXMuZnIoKSk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxH
cmFkaWVudDo6YnVpbGRHcmFkaWVudChHcmFkaWVudERhdGEqIGdyYWRpZW50RGF0YSwgY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAorUmVmPEdyYWRpZW50PiBSZW5kZXJTVkdSZXNvdXJj
ZVJhZGlhbEdyYWRpZW50OjpidWlsZEdyYWRpZW50KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkg
Y29uc3QKIHsKLSAgICBncmFkaWVudERhdGEtPmdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShH
cmFkaWVudDo6UmFkaWFsRGF0YSB7IHRoaXMtPmZvY2FsUG9pbnQobV9hdHRyaWJ1dGVzKSwgdGhp
cy0+Y2VudGVyUG9pbnQobV9hdHRyaWJ1dGVzKSwgdGhpcy0+Zm9jYWxSYWRpdXMobV9hdHRyaWJ1
dGVzKSwgdGhpcy0+cmFkaXVzKG1fYXR0cmlidXRlcyksIDEgfSk7Ci0gICAgZ3JhZGllbnREYXRh
LT5ncmFkaWVudC0+c2V0U3ByZWFkTWV0aG9kKHBsYXRmb3JtU3ByZWFkTWV0aG9kRnJvbVNWR1R5
cGUobV9hdHRyaWJ1dGVzLnNwcmVhZE1ldGhvZCgpKSk7Ci0KLSAgICBhZGRTdG9wcyhncmFkaWVu
dERhdGEsIG1fYXR0cmlidXRlcy5zdG9wcygpLCBzdHlsZSk7CisgICAgYXV0byBncmFkaWVudCA9
IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OlJhZGlhbERhdGEgeyBmb2NhbFBvaW50KG1fYXR0
cmlidXRlcyksIGNlbnRlclBvaW50KG1fYXR0cmlidXRlcyksIGZvY2FsUmFkaXVzKG1fYXR0cmli
dXRlcyksIHJhZGl1cyhtX2F0dHJpYnV0ZXMpLCAxIH0pOworICAgIGdyYWRpZW50LT5zZXRTcHJl
YWRNZXRob2QocGxhdGZvcm1TcHJlYWRNZXRob2RGcm9tU1ZHVHlwZShtX2F0dHJpYnV0ZXMuc3By
ZWFkTWV0aG9kKCkpKTsKKyAgICBhZGRTdG9wcyhncmFkaWVudCwgbV9hdHRyaWJ1dGVzLnN0b3Bz
KCksIHN0eWxlKTsKKyAgICByZXR1cm4gZ3JhZGllbnQ7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlh
bEdyYWRpZW50LmgKaW5kZXggODA5OTMwY2Y5YzkxMmNlNGE2YTlkNjQyNmI4NWM4YzVjNTkyNjdj
Ny4uYWYzOTZkMTUwNmQ2ZjJjYzE3MTFkZGI3MmVmNjRlYTZiOWUzNzRiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZVJhZGlhbEdyYWRpZW50LmgKQEAgLTM2LDIyICszNiwyMiBAQCBwdWJsaWM6CiAKICAgICBTVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQmIHJhZGlhbEdyYWRpZW50RWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIGRvd25jYXN0PFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudD4oUmVuZGVyU1ZHUmVzb3VyY2VH
cmFkaWVudDo6Z3JhZGllbnRFbGVtZW50KCkpOyB9CiAKLSAgICBSZW5kZXJTVkdSZXNvdXJjZVR5
cGUgcmVzb3VyY2VUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUmFkaWFsR3JhZGllbnRS
ZXNvdXJjZVR5cGU7IH0KLQotICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgZ3JhZGllbnRV
bml0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYXR0cmlidXRlcy5ncmFkaWVudFVuaXRz
KCk7IH0KLSAgICB2b2lkIGNhbGN1bGF0ZUdyYWRpZW50VHJhbnNmb3JtKEFmZmluZVRyYW5zZm9y
bSYgdHJhbnNmb3JtKSBvdmVycmlkZSB7IHRyYW5zZm9ybSA9IG1fYXR0cmlidXRlcy5ncmFkaWVu
dFRyYW5zZm9ybSgpOyB9Ci0gICAgdm9pZCBidWlsZEdyYWRpZW50KEdyYWRpZW50RGF0YSosIGNv
bnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7Ci0KICAgICBGbG9hdFBvaW50IGNlbnRl
clBvaW50KGNvbnN0IFJhZGlhbEdyYWRpZW50QXR0cmlidXRlcyYpIGNvbnN0OwogICAgIEZsb2F0
UG9pbnQgZm9jYWxQb2ludChjb25zdCBSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMmKSBjb25zdDsK
ICAgICBmbG9hdCByYWRpdXMoY29uc3QgUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzJikgY29uc3Q7
CiAgICAgZmxvYXQgZm9jYWxSYWRpdXMoY29uc3QgUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzJikg
Y29uc3Q7CiAKIHByaXZhdGU6CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlw
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFJhZGlhbEdyYWRpZW50UmVzb3VyY2VUeXBlOyB9CisK
KyAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIGdyYWRpZW50VW5pdHMoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2F0dHJpYnV0ZXMuZ3JhZGllbnRVbml0cygpOyB9CisgICAgQWZmaW5lVHJh
bnNmb3JtIGdyYWRpZW50VHJhbnNmb3JtKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1
dGVzLmdyYWRpZW50VHJhbnNmb3JtKCk7IH0KKyAgICBSZWY8R3JhZGllbnQ+IGJ1aWxkR3JhZGll
bnQoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBmaW5hbDsKKwogICAgIHZvaWQgZ3JhZGllbnRF
bGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQi
OyB9Ci0gICAgYm9vbCBjb2xsZWN0R3JhZGllbnRBdHRyaWJ1dGVzKCkgb3ZlcnJpZGU7CisgICAg
Y29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJTVkdS
ZXNvdXJjZVJhZGlhbEdyYWRpZW50IjsgfQorICAgIGJvb2wgY29sbGVjdEdyYWRpZW50QXR0cmli
dXRlcygpIGZpbmFsOwogCiAgICAgUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzIG1fYXR0cmlidXRl
czsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvR3JhZGllbnRBdHRyaWJ1dGVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvR3JhZGllbnRBdHRyaWJ1dGVzLmgKaW5kZXggZTAxZjFm
YTE2MjNjZjg2YmVjZTEyMTVhZWMwMWM3ODIxOWVkOGU2OS4uMGU2NzUzZGU0NjQ3YjYzYTcxZDg0
ODE0MGI1NGUzZmEzYTVlODlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL0dyYWRp
ZW50QXR0cmlidXRlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9HcmFkaWVudEF0dHJpYnV0
ZXMuaApAQCAtMzEsMTQgKzMxLDEzIEBAIHN0cnVjdCBHcmFkaWVudEF0dHJpYnV0ZXMgewogICAg
ICAgICAsIG1fc3ByZWFkTWV0aG9kU2V0KGZhbHNlKQogICAgICAgICAsIG1fZ3JhZGllbnRVbml0
c1NldChmYWxzZSkKICAgICAgICAgLCBtX2dyYWRpZW50VHJhbnNmb3JtU2V0KGZhbHNlKQotICAg
ICAgICAsIG1fc3RvcHNTZXQoZmFsc2UpCiAgICAgewogICAgIH0KIAogICAgIFNWR1NwcmVhZE1l
dGhvZFR5cGUgc3ByZWFkTWV0aG9kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHU3By
ZWFkTWV0aG9kVHlwZT4obV9zcHJlYWRNZXRob2QpOyB9CiAgICAgU1ZHVW5pdFR5cGVzOjpTVkdV
bml0VHlwZSBncmFkaWVudFVuaXRzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHVW5p
dFR5cGVzOjpTVkdVbml0VHlwZT4obV9ncmFkaWVudFVuaXRzKTsgfQogICAgIEFmZmluZVRyYW5z
Zm9ybSBncmFkaWVudFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhZGllbnRUcmFuc2Zv
cm07IH0KLSAgICBjb25zdCBWZWN0b3I8R3JhZGllbnQ6OkNvbG9yU3RvcD4mIHN0b3BzKCkgY29u
c3QgeyByZXR1cm4gbV9zdG9wczsgfQorICAgIGNvbnN0IEdyYWRpZW50OjpDb2xvclN0b3BWZWN0
b3ImIHN0b3BzKCkgY29uc3QgeyByZXR1cm4gbV9zdG9wczsgfQogCiAgICAgdm9pZCBzZXRTcHJl
YWRNZXRob2QoU1ZHU3ByZWFkTWV0aG9kVHlwZSB2YWx1ZSkKICAgICB7CkBAIC01OCwyMSArNTcs
MjAgQEAgc3RydWN0IEdyYWRpZW50QXR0cmlidXRlcyB7CiAgICAgICAgIG1fZ3JhZGllbnRUcmFu
c2Zvcm1TZXQgPSB0cnVlOwogICAgIH0KIAotICAgIHZvaWQgc2V0U3RvcHMoY29uc3QgVmVjdG9y
PEdyYWRpZW50OjpDb2xvclN0b3A+JiB2YWx1ZSkKKyAgICB2b2lkIHNldFN0b3BzKEdyYWRpZW50
OjpDb2xvclN0b3BWZWN0b3ImJiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIG1fc3RvcHMgPSB2YWx1
ZTsKLSAgICAgICAgbV9zdG9wc1NldCA9IHRydWU7Ci0gICAgfSAKKyAgICAgICAgbV9zdG9wcyA9
IFdURk1vdmUodmFsdWUpOworICAgIH0KIAogICAgIGJvb2wgaGFzU3ByZWFkTWV0aG9kKCkgY29u
c3QgeyByZXR1cm4gbV9zcHJlYWRNZXRob2RTZXQ7IH0KICAgICBib29sIGhhc0dyYWRpZW50VW5p
dHMoKSBjb25zdCB7IHJldHVybiBtX2dyYWRpZW50VW5pdHNTZXQ7IH0KICAgICBib29sIGhhc0dy
YWRpZW50VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9ncmFkaWVudFRyYW5zZm9ybVNldDsg
fQotICAgIGJvb2wgaGFzU3RvcHMoKSBjb25zdCB7IHJldHVybiBtX3N0b3BzU2V0OyB9CisgICAg
Ym9vbCBoYXNTdG9wcygpIGNvbnN0IHsgcmV0dXJuICFtX3N0b3BzLmlzRW1wdHkoKTsgfQogCiBw
cml2YXRlOgogICAgIC8vIFByb3BlcnRpZXMKICAgICBBZmZpbmVUcmFuc2Zvcm0gbV9ncmFkaWVu
dFRyYW5zZm9ybTsKLSAgICBWZWN0b3I8R3JhZGllbnQ6OkNvbG9yU3RvcD4gbV9zdG9wczsKKyAg
ICBHcmFkaWVudDo6Q29sb3JTdG9wVmVjdG9yIG1fc3RvcHM7CiAKICAgICB1bnNpZ25lZCBtX3Nw
cmVhZE1ldGhvZCA6IDI7CiAgICAgdW5zaWduZWQgbV9ncmFkaWVudFVuaXRzIDogMjsKQEAgLTgx
LDEzICs3OSwxMiBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fc3ByZWFkTWV0aG9kU2V0IDog
MTsKICAgICB1bnNpZ25lZCBtX2dyYWRpZW50VW5pdHNTZXQgOiAxOwogICAgIHVuc2lnbmVkIG1f
Z3JhZGllbnRUcmFuc2Zvcm1TZXQgOiAxOwotICAgIHVuc2lnbmVkIG1fc3RvcHNTZXQgOiAxOwog
fTsKIAogc3RydWN0IFNhbWVTaXplQXNHcmFkaWVudEF0dHJpYnV0ZXMgewogICAgIEFmZmluZVRy
YW5zZm9ybSBhOwotICAgIFZlY3RvcjxHcmFkaWVudDo6Q29sb3JTdG9wPiBiOwotICAgIHVuc2ln
bmVkIGMgOiA4OworICAgIEdyYWRpZW50OjpDb2xvclN0b3BWZWN0b3IgYjsKKyAgICB1bnNpZ25l
ZCBjIDogNzsKIH07CiAKIENPTVBJTEVfQVNTRVJUKHNpemVvZihHcmFkaWVudEF0dHJpYnV0ZXMp
ID09IHNpemVvZihTYW1lU2l6ZUFzR3JhZGllbnRBdHRyaWJ1dGVzKSwgR3JhZGllbnRBdHRyaWJ1
dGVzX3NpemVfZ3VhcmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRp
ZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNw
cAppbmRleCA1ODM3MDE4MDZmN2E1ZWM2ZTkzNTRlZDAxNGFhZTc1OTY5M2EzNmJkLi4zYjgwMDBl
ODFiN2JkYmFlNjMzNWI2NjE5NWYxNjE0NTEzNTdiOTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHR3JhZGllbnRFbGVtZW50LmNwcApAQCAtOTgsOSArOTgsOSBAQCB2b2lkIFNWR0dyYWRpZW50
RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAg
ICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKIH0KIAotVmVjdG9yPEdyYWRpZW50OjpDb2xv
clN0b3A+IFNWR0dyYWRpZW50RWxlbWVudDo6YnVpbGRTdG9wcygpCitHcmFkaWVudDo6Q29sb3JT
dG9wVmVjdG9yIFNWR0dyYWRpZW50RWxlbWVudDo6YnVpbGRTdG9wcygpCiB7Ci0gICAgVmVjdG9y
PEdyYWRpZW50OjpDb2xvclN0b3A+IHN0b3BzOworICAgIEdyYWRpZW50OjpDb2xvclN0b3BWZWN0
b3Igc3RvcHM7CiAgICAgZmxvYXQgcHJldmlvdXNPZmZzZXQgPSAwLjBmOwogICAgIGZvciAoYXV0
byYgc3RvcCA6IGNoaWxkcmVuT2ZUeXBlPFNWR1N0b3BFbGVtZW50PigqdGhpcykpIHsKICAgICAg
ICAgYXV0byBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ09mZnNldCA9IHN0ZDo6Y2xhbXAoc3RvcC5v
ZmZzZXQoKSwgcHJldmlvdXNPZmZzZXQsIDEuMGYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRp
ZW50RWxlbWVudC5oCmluZGV4IDE3NDcwZmM3ZGE2YzdlMzcxMzFjZjc3Yzg4NDkwNGQyYjk4NDg0
NGQuLjEyMTY3Nzg0MmM5MWY0MmQwMjI4M2M4Nzg5MGMyZjc1MGViMmUwZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmgKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgog
ICAgICAgICBTVkdfU1BSRUFETUVUSE9EX1JFUEVBVCA9IFNWR1NwcmVhZE1ldGhvZFVua25vd24K
ICAgICB9OwogCi0gICAgVmVjdG9yPEdyYWRpZW50OjpDb2xvclN0b3A+IGJ1aWxkU3RvcHMoKTsK
KyAgICBHcmFkaWVudDo6Q29sb3JTdG9wVmVjdG9yIGJ1aWxkU3RvcHMoKTsKIAogICAgIHVzaW5n
IFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHR3JhZGllbnRF
bGVtZW50LCBTVkdFbGVtZW50LCBTVkdVUklSZWZlcmVuY2U+OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCmluZGV4IDlmYTk1Y2UzZWViODIz
MDY4NzZiZjZkNmI4MjMwNzFiNDBiOWI3NWUuLmJjMmExODkwYjI0NGNhNTYzZjVmNGY1MDA4NjQ2
ZTIxM2U2NGJkNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQuY3BwCkBAIC0xMDYsMTEgKzEwNiw4IEBAIHN0YXRpYyB2b2lkIHNldEdyYWRpZW50
QXR0cmlidXRlcyhTVkdHcmFkaWVudEVsZW1lbnQmIGVsZW1lbnQsIExpbmVhckdyYWRpZW50QXR0
CiAgICAgaWYgKCFhdHRyaWJ1dGVzLmhhc0dyYWRpZW50VHJhbnNmb3JtKCkgJiYgZWxlbWVudC5o
YXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OmdyYWRpZW50VHJhbnNmb3JtQXR0cikpCiAgICAgICAgIGF0
dHJpYnV0ZXMuc2V0R3JhZGllbnRUcmFuc2Zvcm0oZWxlbWVudC5ncmFkaWVudFRyYW5zZm9ybSgp
LmNvbmNhdGVuYXRlKCkpOwogCi0gICAgaWYgKCFhdHRyaWJ1dGVzLmhhc1N0b3BzKCkpIHsKLSAg
ICAgICAgY29uc3QgVmVjdG9yPEdyYWRpZW50OjpDb2xvclN0b3A+JiBzdG9wcyhlbGVtZW50LmJ1
aWxkU3RvcHMoKSk7Ci0gICAgICAgIGlmICghc3RvcHMuaXNFbXB0eSgpKQotICAgICAgICAgICAg
YXR0cmlidXRlcy5zZXRTdG9wcyhzdG9wcyk7Ci0gICAgfQorICAgIGlmICghYXR0cmlidXRlcy5o
YXNTdG9wcygpKQorICAgICAgICBhdHRyaWJ1dGVzLnNldFN0b3BzKGVsZW1lbnQuYnVpbGRTdG9w
cygpKTsKIAogICAgIGlmIChpc0xpbmVhcikgewogICAgICAgICBTVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQmIGxpbmVhciA9IGRvd25jYXN0PFNWR0xpbmVhckdyYWRpZW50RWxlbWVudD4oZWxlbWVu
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3Bw
CmluZGV4IGZlMWQ0OTg4MDdjYzkwYTZhNzMyMTI5MDYzOGRmYzliZjQ5ZTBhNzIuLjc4ZmFmYjUx
YTFhYTQ2YjUyMjBhNTc1ZmFlZjRlOGYwNDk1Y2RmNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCkBAIC0xMTIsMTEgKzExMiw4IEBAIHN0
YXRpYyB2b2lkIHNldEdyYWRpZW50QXR0cmlidXRlcyhTVkdHcmFkaWVudEVsZW1lbnQmIGVsZW1l
bnQsIFJhZGlhbEdyYWRpZW50QXR0CiAgICAgaWYgKCFhdHRyaWJ1dGVzLmhhc0dyYWRpZW50VHJh
bnNmb3JtKCkgJiYgZWxlbWVudC5oYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OmdyYWRpZW50VHJhbnNm
b3JtQXR0cikpCiAgICAgICAgIGF0dHJpYnV0ZXMuc2V0R3JhZGllbnRUcmFuc2Zvcm0oZWxlbWVu
dC5ncmFkaWVudFRyYW5zZm9ybSgpLmNvbmNhdGVuYXRlKCkpOwogCi0gICAgaWYgKCFhdHRyaWJ1
dGVzLmhhc1N0b3BzKCkpIHsKLSAgICAgICAgY29uc3QgVmVjdG9yPEdyYWRpZW50OjpDb2xvclN0
b3A+JiBzdG9wcyhlbGVtZW50LmJ1aWxkU3RvcHMoKSk7Ci0gICAgICAgIGlmICghc3RvcHMuaXNF
bXB0eSgpKQotICAgICAgICAgICAgYXR0cmlidXRlcy5zZXRTdG9wcyhzdG9wcyk7Ci0gICAgfQor
ICAgIGlmICghYXR0cmlidXRlcy5oYXNTdG9wcygpKQorICAgICAgICBhdHRyaWJ1dGVzLnNldFN0
b3BzKGVsZW1lbnQuYnVpbGRTdG9wcygpKTsKIAogICAgIGlmIChpc1JhZGlhbCkgewogICAgICAg
ICBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQmIHJhZGlhbCA9IGRvd25jYXN0PFNWR1JhZGlhbEdy
YWRpZW50RWxlbWVudD4oZWxlbWVudCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>