<?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>137683</bug_id>
          
          <creation_ts>2014-10-13 23:11:30 -0700</creation_ts>
          <short_desc>Use is&lt;&gt;() / downcast&lt;&gt;() for RenderImage</short_desc>
          <delta_ts>2014-10-21 04:54:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>137424</dependson>
    
    <dependson>137916</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>mihnea</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1041474</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-13 23:11:30 -0700</bug_when>
    <thetext>Use is&lt;&gt;() / downcast&lt;&gt;() for RenderImage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041476</commentid>
    <comment_count>1</comment_count>
      <attachid>239781</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-13 23:20:30 -0700</bug_when>
    <thetext>Created attachment 239781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041488</commentid>
    <comment_count>2</comment_count>
      <attachid>239781</attachid>
    <who name="Mihnea Ovidenie">mihnea</who>
    <bug_when>2014-10-14 00:10:21 -0700</bug_when>
    <thetext>Comment on attachment 239781
Patch

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

r=me with comments similar to those in the review made by Darin for https://bugs.webkit.org/show_bug.cgi?id=137644

&gt; Source/WebCore/editing/cocoa/HTMLConverter.mm:2534
&gt; +        RenderImage&amp; renderer = downcast&lt;RenderImage&gt;(*element-&gt;renderer());

You can use auto&amp; renderer instead of RenderImage&amp; renderer.

&gt; Source/WebCore/html/HTMLAnchorElement.cpp:171
&gt; +    RenderImage&amp; renderer = downcast&lt;RenderImage&gt;(*imageElement.renderer());

You can use auto&amp; instead of RenderImage&amp;

&gt; Source/WebCore/html/HTMLImageElement.cpp:239
&gt; +    RenderImage&amp; renderImage = downcast&lt;RenderImage&gt;(*renderer());

You can use auto&amp; instead of RenderImage&amp;.

&gt; Source/WebCore/html/ImageInputType.cpp:111
&gt; +    RenderImage* renderer = downcast&lt;RenderImage&gt;(element().renderer());

You can use auto* instead of RenderImage*

&gt; Source/WebCore/html/ImageInputType.cpp:131
&gt; +    RenderImage* renderer = downcast&lt;RenderImage&gt;(element().renderer());

You can use auto* instead of RenderImage*

&gt; Source/WebCore/page/DragController.cpp:665
&gt; +    RenderImage&amp; image = downcast&lt;RenderImage&gt;(*renderer);

You can use auto&amp; instead of RenderImage&amp;

&gt; Source/WebCore/platform/win/PasteboardWin.cpp:729
&gt; +    RenderImage&amp; renderer = downcast&lt;RenderImage&gt;(*element.renderer());

You can use auto&amp; instead of RenderImage&amp;

&gt; Source/WebCore/platform/win/PasteboardWin.cpp:865
&gt; +    RenderImage* image = downcast&lt;RenderImage&gt;(renderer);

You can use auto* instead of RenderImage*

&gt; Source/WebCore/rendering/HitTestResult.cpp:297
&gt; +        RenderImage&amp; image = downcast&lt;RenderImage&gt;(*renderer);

You can use auto&amp; instead of RenderImage&amp;

&gt; Source/WebCore/rendering/RenderLayerBacking.cpp:1825
&gt; +    RenderImage&amp; imageRenderer = downcast&lt;RenderImage&gt;(renderer());

You can use auto&amp; instead of RenderImage&amp;

&gt; Source/WebKit/mac/Misc/WebNSPasteboardExtras.mm:226
&gt; +    RenderImage&amp; imageRenderer = downcast&lt;RenderImage&gt;(*element-&gt;renderer());

You can use auto&amp; instead of RenderImage&amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041499</commentid>
    <comment_count>3</comment_count>
      <attachid>239785</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-14 01:22:44 -0700</bug_when>
    <thetext>Created attachment 239785
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041500</commentid>
    <comment_count>4</comment_count>
      <attachid>239785</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-14 01:23:27 -0700</bug_when>
    <thetext>Comment on attachment 239785
Patch

Thanks for reviewing, I made all the changes suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041506</commentid>
    <comment_count>5</comment_count>
      <attachid>239785</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-14 02:07:24 -0700</bug_when>
    <thetext>Comment on attachment 239785
Patch

Clearing flags on attachment: 239785

Committed r174676: &lt;http://trac.webkit.org/changeset/174676&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041507</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-14 02:07:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043154</commentid>
    <comment_count>7</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-10-21 04:54:55 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 239785 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 239785
&gt; 
&gt; Committed r174676: &lt;http://trac.webkit.org/changeset/174676&gt;

It broke the !ENABLE(VIDEO) build, see bug137916 for details.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239781</attachid>
            <date>2014-10-13 23:20:30 -0700</date>
            <delta_ts>2014-10-14 01:22:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137683-20141013232035.patch</filename>
            <type>text/plain</type>
            <size>41107</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGNiM2M2MmM5MDgyZTBk
NjgwYjY4ZDM3ZDExYWUzYzZjNzhiZDgyMi4uMTAwYTU1MThlNmEyZWU4NjMyMjljMWMwODliMTBl
ZmY5ZTg1MDI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDE0LTEwLTEzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25j
YXN0PD4oKSBmb3IgUmVuZGVySW1hZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNzY4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVzZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgZm9yIFJlbmRlckltYWdl
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWx0ZXJuYXRpdmVUZXh0KToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkSW1hZ2VNYXBDaGlsZHJl
bik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpyZW1vdGVT
VkdSb290RWxlbWVudCk6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAg
ICgtW0RPTUVsZW1lbnQgaW1hZ2VdKToKKyAgICAgICAgKC1bRE9NRWxlbWVudCBfaW1hZ2VUSUZG
UmVwcmVzZW50YXRpb25dKToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVJlcGxhY2VkRWxlbWVudCk6Cisg
ICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoZmlsZVdy
YXBwZXJGb3JFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2d0ay9FZGl0b3JHdGsuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0SW1hZ2VGb3JFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5n
L2lvcy9FZGl0b3JJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpnZXRJbWFnZSk6CisgICAgICAg
ICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Z2V0SW1hZ2Up
OgorICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6YXBwZW5kU2VydmVyTWFwTW91c2VQb3NpdGlvbik6CisgICAgICAgICogaHRtbC9IVE1MQXJl
YUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFyZWFFbGVtZW50OjpzZXRGb2N1
cyk6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnNldEJlc3RGaXRVUkxBbmREUFJGcm9tSW1hZ2VDYW5kaWRh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVyZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZUltYWdlQ29udHJv
bHMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6ZGVzdHJveUltYWdlQ29u
dHJvbHMpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJlcnMpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0
bWwvSW1hZ2VJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VJbnB1dFR5cGU6
OmFsdEF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VJbnB1dFR5cGU6
OmF0dGFjaCk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNpemUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L21h
Yy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW1hZ2VDb250cm9sczo6dXBkYXRlTG9naWNhbFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckltYWdlQ29udHJvbHM6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KToKKyAgICAgICAgKiBs
b2FkZXIvSW1hZ2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnJl
bmRlckltYWdlUmVzb3VyY2UpOgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmltYWdlRnJvbUltYWdlRWxlbWVudE5vZGUpOgorICAg
ICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q2Fj
aGVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0SW1hZ2UpOgorICAgICAgICAqIHBsYXRm
b3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OndyaXRlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q2FjaGVkSW1hZ2UpOgorICAgICAg
ICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRl
c3RSZXN1bHQ6OmltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJJbWFnZVJlc291cmNlOjpnZXRJbWFnZVNpemUpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXJCYWNraW5nOjppc0RpcmVjdGx5Q29tcG9zaXRlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlSW1hZ2VDb250ZW50cyk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxh
Y2VkOjpjb21wdXRlQXNwZWN0UmF0aW9JbmZvcm1hdGlvbkZvclJlbmRlckJveCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXBlT3V0c2lkZUluZm86OmNyZWF0ZVNoYXBlRm9ySW1hZ2UpOgorCiAyMDE0LTEwLTEz
ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogUmVtb3ZlIHVudXNlZCBzdGFsZSBQYWdlIHByb3RvY29sIG1ldGhvZHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwppbmRleCBlYjdlNWE1NThhYjcxNjBiZjVlZmNhMGFkYzE0YjAyNWE5MDI1MGYyLi42
NjEwOWI2ZTUzODg2OGEyMzczNGE4NDI3MTk2MWVhMTBlZTQxODM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTYgQEAKKzIwMTQtMTAtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBVc2UgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZvciBSZW5kZXJJbWFn
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3Njgz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIGlz
PD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgUmVuZGVySW1hZ2UuCisKKyAgICAgICAgKiBNaXNjL1dl
Yk5TUGFzdGVib2FyZEV4dHJhcy5tbToKKyAgICAgICAgKGltYWdlRnJvbUVsZW1lbnQpOgorICAg
ICAgICAoLVtOU1Bhc3RlYm9hcmQgX3dlYl9kZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2VGb3JFbGVt
ZW50OlVSTDp0aXRsZTphcmNoaXZlOnNvdXJjZTpdKToKKwogMjAxNC0xMC0xMCAgRGFuaWVsIEJh
dGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBjbGFzc2Vz
IFdlYlJlbmRlcntOb2RlLCBMYXllcn0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA4NDlmNTEzMjBkNGE0OGJkNDMz
ODkwNjg3ZmM1MzRlYmU2NzdjMzQ5Li4xNDU1MDRkYWY5ZGQ3MWE2YWEzMTAwODQ4Yzk2NzM3NGEx
ODNlMzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTkgQEAKIDIwMTQtMTAtMTMgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAorICAgICAgICBVc2UgaXM8PigpIC8gZG93bmNhc3Q8
PigpIGZvciBSZW5kZXJJbWFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTM3NjgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgUmVuZGVySW1hZ2UuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpjYWNoZWRJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpw
ZXJmb3JtQWN0aW9uT25FbGVtZW50KToKKworMjAxNC0xMC0xMyAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCiAgICAgICAgIFVzZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgZm9yIFBs
YXRmb3JtQ0FMYXllciBzdWJjbGFzc2VzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzc2NjEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAppbmRleCAyOTBlNWJlYjEy
YzNlNTRiNTUzN2IwNzAxYmI3OWU4MmU1N2U2MzBiLi4wOTM3YzQwYTgzZDM2Nzg5YjQ4YzUxY2Y3
MmMzZDQwMTMwNGNlOTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcApAQCAtMTI3OSw4ICsxMjc5LDggQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWx0ZXJuYXRpdmVUZXh0KFZlY3RvcjxBY2Nl
c3NpYmlsaXR5VGV4dD4mIHRleHRPcmQKICAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3Np
YmlsaXR5VGV4dChhcmlhTGFiZWwsIEFsdGVybmF0aXZlVGV4dCkpOwogICAgIAogICAgIGlmICh1
c2VzQWx0VGFnRm9yVGV4dENvbXB1dGF0aW9uKCkpIHsKLSAgICAgICAgaWYgKHJlbmRlcmVyKCkg
JiYgcmVuZGVyZXIoKS0+aXNSZW5kZXJJbWFnZSgpKSB7Ci0gICAgICAgICAgICBTdHJpbmcgcmVu
ZGVyQWx0VGV4dCA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSktPmFsdFRleHQoKTsKKyAgICAg
ICAgaWYgKGlzPFJlbmRlckltYWdlPihyZW5kZXJlcigpKSkgeworICAgICAgICAgICAgU3RyaW5n
IHJlbmRlckFsdFRleHQgPSBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKnJlbmRlcmVyKCkpLmFsdFRl
eHQoKTsKIAogICAgICAgICAgICAgLy8gUmVuZGVySW1hZ2Ugd2lsbCByZXR1cm4gdGl0bGUgYXMg
YSBmYWxsYmFjayBmcm9tIGFsdFRleHQsIGJ1dCB3ZSBkb24ndCB3YW50IHRpdGxlIGhlcmUgYmVj
YXVzZSB3ZSBjb25zaWRlciB0aGF0IGluIGhlbHBUZXh0LgogICAgICAgICAgICAgaWYgKCFyZW5k
ZXJBbHRUZXh0LmlzRW1wdHkoKSAmJiByZW5kZXJBbHRUZXh0ICE9IGdldEF0dHJpYnV0ZSh0aXRs
ZUF0dHIpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCBjZGEyZWIxYmEzZmU5ZDQxMTQ2NmQy
Nzk4YjM4Yjc4OWJmZWU1NGE3Li40MTA2YzNjODU4NWJlNjg0YjliZWY1ZmZjN2NlZjI0YmQ0NTkx
Yjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTI3OTksMTAgKzI3OTksMTAgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpjbGVhckNoaWxkcmVuKCkKIHZvaWQgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6YWRkSW1hZ2VNYXBDaGlsZHJlbigpCiB7CiAgICAgUmVuZGVyQm94
TW9kZWxPYmplY3QqIGNzc0JveCA9IHJlbmRlckJveE1vZGVsT2JqZWN0KCk7Ci0gICAgaWYgKCFj
c3NCb3ggfHwgIWNzc0JveC0+aXNSZW5kZXJJbWFnZSgpKQorICAgIGlmICghaXM8UmVuZGVySW1h
Z2U+KGNzc0JveCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBIVE1MTWFwRWxlbWVudCog
bWFwID0gdG9SZW5kZXJJbWFnZShjc3NCb3gpLT5pbWFnZU1hcCgpOworICAgIEhUTUxNYXBFbGVt
ZW50KiBtYXAgPSBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKmNzc0JveCkuaW1hZ2VNYXAoKTsKICAg
ICBpZiAoIW1hcCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yODU5LDEwICsyODU5LDEwIEBAIHZv
aWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZGV0YWNoUmVtb3RlU1ZHUm9vdCgpCiAKIEFj
Y2Vzc2liaWxpdHlTVkdSb290KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpyZW1vdGVTVkdS
b290RWxlbWVudCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVy
LT5pc1JlbmRlckltYWdlKCkpCisgICAgaWYgKCFpczxSZW5kZXJJbWFnZT4obV9yZW5kZXJlcikp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIENhY2hlZEltYWdlKiBjYWNoZWRJ
bWFnZSA9IHRvUmVuZGVySW1hZ2UobV9yZW5kZXJlciktPmNhY2hlZEltYWdlKCk7CisgICAgQ2Fj
aGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCptX3JlbmRlcmVy
KS5jYWNoZWRJbWFnZSgpOwogICAgIGlmICghY2FjaGVkSW1hZ2UpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T00ubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQppbmRleCAzMzcyNTk0
MTliNTlmZThkZTU4YzgwNGRkNGU1NWNjNWZiM2IwN2U3Li42ODJkZWM5YTdhNzM0N2E2M2Y1NzFh
MmM4ZThmMmU2MGI1MjU5ZmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQpAQCAt
NjUxLDEyICs2NTEsMTIgQEAgLSAoTlNJbWFnZSopaW1hZ2UKIHsKICAgICAvLyBGSVhNRTogQ291
bGQgd2UgbW92ZSB0aGlzIGZ1bmN0aW9uIHRvIFdlYkNvcmU6Ok5vZGUgYW5kIGF1dG9nZW5lcmF0
ZT8KICAgICBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY29yZShzZWxmKS0+cmVu
ZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNSZW5kZXJJbWFnZSgp
KQorICAgIGlmICghaXM8UmVuZGVySW1hZ2U+KHJlbmRlcmVyKSkKICAgICAgICAgcmV0dXJuIG5p
bDsKLSAgICBXZWJDb3JlOjpDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSB0b1JlbmRlckltYWdl
KHJlbmRlcmVyKS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBXZWJDb3JlOjpDYWNoZWRJbWFnZSogY2Fj
aGVkSW1hZ2UgPSBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKnJlbmRlcmVyKS5jYWNoZWRJbWFnZSgp
OwogICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQoKSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVu
ZGVyZXIodG9SZW5kZXJJbWFnZShyZW5kZXJlcikpLT5nZXROU0ltYWdlKCk7CisgICAgcmV0dXJu
IGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKS0+Z2V0TlNJbWFnZSgpOwog
fQogI2VuZGlmCiAKQEAgLTY4NywxMCArNjg3LDEwIEBAIC0gKENURm9udFJlZilfZm9udAogLSAo
TlNEYXRhICopX2ltYWdlVElGRlJlcHJlc2VudGF0aW9uCiB7CiAgICAgLy8gRklYTUU6IENvdWxk
IHdlIG1vdmUgdGhpcyBmdW5jdGlvbiB0byBXZWJDb3JlOjpFbGVtZW50IGFuZCBhdXRvZ2VuZXJh
dGU/Ci0gICAgYXV0byByZW5kZXJlciA9IGNvcmUoc2VsZiktPnJlbmRlcmVyKCk7Ci0gICAgaWYg
KCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzUmVuZGVySW1hZ2UoKSkKKyAgICBhdXRvKiByZW5k
ZXJlciA9IGNvcmUoc2VsZiktPnJlbmRlcmVyKCk7CisgICAgaWYgKCFpczxSZW5kZXJJbWFnZT4o
cmVuZGVyZXIpKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIFdlYkNvcmU6OkNhY2hlZEltYWdl
KiBjYWNoZWRJbWFnZSA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpLT5jYWNoZWRJbWFnZSgpOwor
ICAgIFdlYkNvcmU6OkNhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGRvd25jYXN0PFJlbmRlcklt
YWdlPigqcmVuZGVyZXIpLmNhY2hlZEltYWdlKCk7CiAgICAgaWYgKCFjYWNoZWRJbWFnZSB8fCBj
YWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJl
dHVybiAoTlNEYXRhICopY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpLT5n
ZXRUSUZGUmVwcmVzZW50YXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmNwcAppbmRleCA5YzBkNjQ2OGVkNDlhYjFiM2YyNThjMTlmNjFmZjRlOGQ0YjZkMTY2Li5iMzg5
ZjBmOTBmNmVmZTExMzQ4YWZmMzQ1ODVkM2I2YzA1OGM1ZjkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC03NjAsOCArNzYwLDggQEAgYm9vbCBUZXh0SXRlcmF0
b3I6OmhhbmRsZVJlcGxhY2VkRWxlbWVudCgpCiAgICAgbV9wb3NpdGlvblN0YXJ0T2Zmc2V0ID0g
MDsKICAgICBtX3Bvc2l0aW9uRW5kT2Zmc2V0ID0gMTsKIAotICAgIGlmICgobV9iZWhhdmlvciAm
IFRleHRJdGVyYXRvckVtaXRzSW1hZ2VBbHRUZXh0KSAmJiByZW5kZXJlci5pc1JlbmRlckltYWdl
KCkpIHsKLSAgICAgICAgU3RyaW5nIGFsdFRleHQgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKS5h
bHRUZXh0KCk7CisgICAgaWYgKChtX2JlaGF2aW9yICYgVGV4dEl0ZXJhdG9yRW1pdHNJbWFnZUFs
dFRleHQpICYmIGlzPFJlbmRlckltYWdlPihyZW5kZXJlcikpIHsKKyAgICAgICAgU3RyaW5nIGFs
dFRleHQgPSBkb3duY2FzdDxSZW5kZXJJbWFnZT4ocmVuZGVyZXIpLmFsdFRleHQoKTsKICAgICAg
ICAgaWYgKHVuc2lnbmVkIGxlbmd0aCA9IGFsdFRleHQubGVuZ3RoKCkpIHsKICAgICAgICAgICAg
IG1fbGFzdENoYXJhY3RlciA9IGFsdFRleHRbbGVuZ3RoIC0gMV07CiAgICAgICAgICAgICBtX2Nv
cHlhYmxlVGV4dC5zZXQoV1RGOjptb3ZlKGFsdFRleHQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCA0MjYxMmU0ZTlkYzBlNjFlYTA2Zjgx
MWZlMjg4NDhmNTc2ZmE2MWY1Li4zNzE5YWZjYTkyODcwNTY1MDRkNTNmODc1MzAwYzJkZDU5ZDVh
YzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0
ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1t
CkBAIC0yNTMxLDkgKzI1MzEsOSBAQCBzdGF0aWMgTlNGaWxlV3JhcHBlciAqZmlsZVdyYXBwZXJG
b3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgICAgICAgICB3cmFwcGVyID0gZmlsZVdy
YXBwZXJGb3JVUkwobG9hZGVyLCBVUkwpOwogICAgIH0KICAgICBpZiAoIXdyYXBwZXIpIHsKLSAg
ICAgICAgUmVuZGVySW1hZ2UqIHJlbmRlcmVyID0gdG9SZW5kZXJJbWFnZShlbGVtZW50LT5yZW5k
ZXJlcigpKTsKLSAgICAgICAgaWYgKHJlbmRlcmVyLT5jYWNoZWRJbWFnZSgpICYmICFyZW5kZXJl
ci0+Y2FjaGVkSW1hZ2UoKS0+ZXJyb3JPY2N1cnJlZCgpKSB7Ci0gICAgICAgICAgICB3cmFwcGVy
ID0gW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6KE5T
RGF0YSAqKShyZW5kZXJlci0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJl
ciktPmdldFRJRkZSZXByZXNlbnRhdGlvbigpKV07CisgICAgICAgIFJlbmRlckltYWdlJiByZW5k
ZXJlciA9IGRvd25jYXN0PFJlbmRlckltYWdlPigqZWxlbWVudC0+cmVuZGVyZXIoKSk7CisgICAg
ICAgIGlmIChyZW5kZXJlci5jYWNoZWRJbWFnZSgpICYmICFyZW5kZXJlci5jYWNoZWRJbWFnZSgp
LT5lcnJvck9jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIHdyYXBwZXIgPSBbW05TRmlsZVdyYXBw
ZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czooTlNEYXRhICopKHJlbmRlcmVy
LmNhY2hlZEltYWdlKCktPmltYWdlRm9yUmVuZGVyZXIoJnJlbmRlcmVyKS0+Z2V0VElGRlJlcHJl
c2VudGF0aW9uKCkpXTsKICAgICAgICAgICAgIFt3cmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1l
OkAiaW1hZ2UudGlmZiJdOwogICAgICAgICAgICAgW3dyYXBwZXIgYXV0b3JlbGVhc2VdOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9FZGl0b3JHdGsu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvRWRpdG9yR3RrLmNwcAppbmRleCBlN2Rj
MzFjZGJhNjkzNmUzYzc5MDFlN2U3NTM4ZDhjMzBhOTBjMWQ4Li44M2M0OWU4Yjk1YWVlODQ3NDY1
MzYxODVhOWI5NTExYmU0ZmI2OTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9FZGl0b3JHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0VkaXRv
ckd0ay5jcHAKQEAgLTkzLDExICs5MywxMSBAQCBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBl
bGVtZW50VVJMKEVsZW1lbnQmIGVsZW1lbnQpCiAKIHN0YXRpYyBib29sIGdldEltYWdlRm9yRWxl
bWVudChFbGVtZW50JiBlbGVtZW50LCBSZWZQdHI8SW1hZ2U+JiBpbWFnZSkKIHsKLSAgICBhdXRv
IHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIgfHwgIXJl
bmRlcmVyLT5pc1JlbmRlckltYWdlKCkpCisgICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJl
bmRlcmVyKCk7CisgICAgaWYgKCFpczxSZW5kZXJJbWFnZT4ocmVuZGVyZXIpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSB0b1JlbmRlcklt
YWdlKCpyZW5kZXJlcikuY2FjaGVkSW1hZ2UoKTsKKyAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1h
Z2UgPSBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKnJlbmRlcmVyKS5jYWNoZWRJbWFnZSgpOwogICAg
IGlmICghY2FjaGVkSW1hZ2UgfHwgY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lv
cy9FZGl0b3JJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0K
aW5kZXggYzVlN2ZlNDJiM2MzYWNiNWQxZDY3YTI5MDM4MzFlNzUzMjM1Y2IxZS4uYjhiMGZjNTY2
NjhmYjg5OGU5ZjczZTI0YzAxOTI3YzdhYjdhYjRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
aW9zL0VkaXRvcklPUy5tbQpAQCAtMzU3LDE1ICszNTcsMTMgQEAgdm9pZCBFZGl0b3I6OndyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQpCiAKIHN0YXRpYyB2
b2lkIGdldEltYWdlKEVsZW1lbnQmIGltYWdlRWxlbWVudCwgUmVmUHRyPEltYWdlPiYgaW1hZ2Us
IENhY2hlZEltYWdlKiYgY2FjaGVkSW1hZ2UpCiB7Ci0gICAgYXV0byByZW5kZXJlciA9IGltYWdl
RWxlbWVudC5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5pc1Jl
bmRlckltYWdlKCkpCisgICAgYXV0byogcmVuZGVyZXIgPSBpbWFnZUVsZW1lbnQucmVuZGVyZXIo
KTsKKyAgICBpZiAoIWlzPFJlbmRlckltYWdlPihyZW5kZXJlcikpCiAgICAgICAgIHJldHVybjsK
IAotICAgIENhY2hlZEltYWdlKiB0ZW50YXRpdmVDYWNoZWRJbWFnZSA9IHRvUmVuZGVySW1hZ2Uo
cmVuZGVyZXIpLT5jYWNoZWRJbWFnZSgpOwotICAgIGlmICghdGVudGF0aXZlQ2FjaGVkSW1hZ2Ug
fHwgdGVudGF0aXZlQ2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQoKSkgewotICAgICAgICB0ZW50
YXRpdmVDYWNoZWRJbWFnZSA9IDA7CisgICAgQ2FjaGVkSW1hZ2UqIHRlbnRhdGl2ZUNhY2hlZElt
YWdlID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCpyZW5kZXJlcikuY2FjaGVkSW1hZ2UoKTsKKyAg
ICBpZiAoIXRlbnRhdGl2ZUNhY2hlZEltYWdlIHx8IHRlbnRhdGl2ZUNhY2hlZEltYWdlLT5lcnJv
ck9jY3VycmVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBpbWFnZSA9IHRlbnRh
dGl2ZUNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKICAgICBpZiAoIWlt
YWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDY0NThiYjcx
N2MyYjc5MjUxNTBhNzIxN2EwNTUyOWZjOTBlYjg1NTQuLjE4MGE0ZjBjN2YxN2Q4MzNiZWRiZWEw
OTZmODc0ODRkYzAxZTliYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFj
L0VkaXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMu
bW0KQEAgLTQwMSwxNSArNDAxLDEzIEBAIHZvaWQgRWRpdG9yOjp3cml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkKQogCiBzdGF0aWMgdm9pZCBnZXRJbWFnZShF
bGVtZW50JiBpbWFnZUVsZW1lbnQsIFJlZlB0cjxJbWFnZT4mIGltYWdlLCBDYWNoZWRJbWFnZSom
IGNhY2hlZEltYWdlKQogewotICAgIGF1dG8gcmVuZGVyZXIgPSBpbWFnZUVsZW1lbnQucmVuZGVy
ZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNSZW5kZXJJbWFnZSgpKQor
ICAgIGF1dG8qIHJlbmRlcmVyID0gaW1hZ2VFbGVtZW50LnJlbmRlcmVyKCk7CisgICAgaWYgKCFp
czxSZW5kZXJJbWFnZT4ocmVuZGVyZXIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDYWNoZWRJ
bWFnZSogdGVudGF0aXZlQ2FjaGVkSW1hZ2UgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKS0+Y2Fj
aGVkSW1hZ2UoKTsKLSAgICBpZiAoIXRlbnRhdGl2ZUNhY2hlZEltYWdlIHx8IHRlbnRhdGl2ZUNh
Y2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpIHsKLSAgICAgICAgdGVudGF0aXZlQ2FjaGVkSW1h
Z2UgPSAwOworICAgIENhY2hlZEltYWdlKiB0ZW50YXRpdmVDYWNoZWRJbWFnZSA9IGRvd25jYXN0
PFJlbmRlckltYWdlPigqcmVuZGVyZXIpLmNhY2hlZEltYWdlKCk7CisgICAgaWYgKCF0ZW50YXRp
dmVDYWNoZWRJbWFnZSB8fCB0ZW50YXRpdmVDYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpKQog
ICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgaW1hZ2UgPSB0ZW50YXRpdmVDYWNoZWRJbWFn
ZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7CiAgICAgaWYgKCFpbWFnZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKaW5kZXggOWExNTMzMGE5OWRkYTEzYWEz
MjNiNzM1YzQzZmQ0NGJlM2ZlNzM1Zi4uMDgxY2NmNTRiMzRiYTQzYjZhOGE0Nzk5MTY2YzNiY2Y5
ZDM4ZTIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKQEAg
LTE2Niw5ICsxNjYsOSBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTZXJ2ZXJNYXBNb3VzZVBvc2l0aW9u
KFN0cmluZ0J1aWxkZXImIHVybCwgRXZlbnQqIGV2ZW50KQogICAgIGlmICghaW1hZ2VFbGVtZW50
LmlzU2VydmVyTWFwKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghaW1hZ2VFbGVtZW50
LnJlbmRlcmVyKCkgfHwgIWltYWdlRWxlbWVudC5yZW5kZXJlcigpLT5pc1JlbmRlckltYWdlKCkp
CisgICAgaWYgKCFpczxSZW5kZXJJbWFnZT4oaW1hZ2VFbGVtZW50LnJlbmRlcmVyKCkpKQogICAg
ICAgICByZXR1cm47Ci0gICAgUmVuZGVySW1hZ2UmIHJlbmRlcmVyID0gdG9SZW5kZXJJbWFnZSgq
aW1hZ2VFbGVtZW50LnJlbmRlcmVyKCkpOworICAgIFJlbmRlckltYWdlJiByZW5kZXJlciA9IGRv
d25jYXN0PFJlbmRlckltYWdlPigqaW1hZ2VFbGVtZW50LnJlbmRlcmVyKCkpOwogCiAgICAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IHBhc3MgdHJ1ZSBmb3IgdXNlVHJhbnNmb3Jtcy4K
ICAgICBGbG9hdFBvaW50IGFic29sdXRlUG9zaXRpb24gPSByZW5kZXJlci5hYnNvbHV0ZVRvTG9j
YWwoRmxvYXRQb2ludChkb3duY2FzdDxNb3VzZUV2ZW50PigqZXZlbnQpLnBhZ2VYKCksIGRvd25j
YXN0PE1vdXNlRXZlbnQ+KCpldmVudCkucGFnZVkoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXJlYUVsZW1lbnQuY3BwCmluZGV4IDIwYmVmMjgyMGE0YjFkZTZlNzAwMjY1ZWIzMzU5ZGYyYTUw
NzM1M2QuLmNhN2RlYzU5MDVhYWUwNzNjODY2MDYzOTQxYjEzMjJlZGY3NWI2MDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKQEAgLTIxOCwxMSArMjE4LDExIEBAIHZv
aWQgSFRNTEFyZWFFbGVtZW50OjpzZXRGb2N1cyhib29sIHNob3VsZEJlRm9jdXNlZCkKICAgICBp
ZiAoIWltYWdlRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byByZW5kZXJlciA9
IGltYWdlRWxlbWVudC0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJl
ci0+aXNSZW5kZXJJbWFnZSgpKQorICAgIGF1dG8qIHJlbmRlcmVyID0gaW1hZ2VFbGVtZW50LT5y
ZW5kZXJlcigpOworICAgIGlmICghaXM8UmVuZGVySW1hZ2U+KHJlbmRlcmVyKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgdG9SZW5kZXJJbWFnZShyZW5kZXJlciktPmFyZWFFbGVtZW50Rm9jdXND
aGFuZ2VkKHRoaXMpOworICAgIGRvd25jYXN0PFJlbmRlckltYWdlPigqcmVuZGVyZXIpLmFyZWFF
bGVtZW50Rm9jdXNDaGFuZ2VkKHRoaXMpOwogfQogICAgIAogdm9pZCBIVE1MQXJlYUVsZW1lbnQ6
OnVwZGF0ZUZvY3VzQXBwZWFyYW5jZShib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDMyZmI3ZGMxZDlhM2U2
YmIxOWI2NGM4NzUyNDMwMDNkZTQ0NzQ1ZjEuLjY3ZWRhZDIxYThmNWRiMDhlMDJkMjU0MWZjMzNk
NjJjMWYzMjQyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApA
QCAtMTMzLDE1ICsxMzMsMTUgQEAgdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpzZXRCZXN0Rml0VVJM
QW5kRFBSRnJvbUltYWdlQ2FuZGlkYXRlKGNvbnN0IEltYWdlQ2FuZGlkYXQKICNlbmRpZgogICAg
IGlmIChjYW5kaWRhdGUuZGVuc2l0eSA+PSAwKQogICAgICAgICBtX2ltYWdlRGV2aWNlUGl4ZWxS
YXRpbyA9IDEgLyBjYW5kaWRhdGUuZGVuc2l0eTsKLSAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5k
ZXJlcigpLT5pc0ltYWdlKCkpCi0gICAgICAgIHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSktPnNl
dEltYWdlRGV2aWNlUGl4ZWxSYXRpbyhtX2ltYWdlRGV2aWNlUGl4ZWxSYXRpbyk7CisgICAgaWYg
KGlzPFJlbmRlckltYWdlPihyZW5kZXJlcigpKSkKKyAgICAgICAgZG93bmNhc3Q8UmVuZGVySW1h
Z2U+KCpyZW5kZXJlcigpKS5zZXRJbWFnZURldmljZVBpeGVsUmF0aW8obV9pbWFnZURldmljZVBp
eGVsUmF0aW8pOwogfQogCiB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAg
ICAgaWYgKG5hbWUgPT0gYWx0QXR0cikgewotICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5k
ZXJlcigpLT5pc1JlbmRlckltYWdlKCkpCi0gICAgICAgICAgICB0b1JlbmRlckltYWdlKHJlbmRl
cmVyKCkpLT51cGRhdGVBbHRUZXh0KCk7CisgICAgICAgIGlmIChpczxSZW5kZXJJbWFnZT4ocmVu
ZGVyZXIoKSkpCisgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKnJlbmRlcmVyKCkp
LnVwZGF0ZUFsdFRleHQoKTsKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gc3JjQXR0ciB8fCBuYW1l
ID09IHNyY3NldEF0dHIpIHsKICAgICAgICAgdW5zaWduZWQgc291cmNlU2l6ZSA9IDA7CiAjaWYg
RU5BQkxFKFBJQ1RVUkVfU0laRVMpCkBAIC0yMjcsNyArMjI3LDcgQEAgYm9vbCBIVE1MSW1hZ2VF
bGVtZW50OjpjYW5TdGFydFNlbGVjdGlvbigpIGNvbnN0CiAKIHZvaWQgSFRNTEltYWdlRWxlbWVu
dDo6ZGlkQXR0YWNoUmVuZGVyZXJzKCkKIHsKLSAgICBpZiAoIXJlbmRlcmVyKCkgfHwgIXJlbmRl
cmVyKCktPmlzUmVuZGVySW1hZ2UoKSkKKyAgICBpZiAoIWlzPFJlbmRlckltYWdlPihyZW5kZXJl
cigpKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChtX2ltYWdlTG9hZGVyLmhhc1BlbmRpbmdC
ZWZvcmVMb2FkRXZlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjM2LDggKzIzNiw4IEBAIHZv
aWQgSFRNTEltYWdlRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVyZXJzKCkKICAgICB1cGRhdGVJbWFn
ZUNvbnRyb2xzKCk7CiAjZW5kaWYKIAotICAgIFJlbmRlckltYWdlKiByZW5kZXJJbWFnZSA9IHRv
UmVuZGVySW1hZ2UocmVuZGVyZXIoKSk7Ci0gICAgUmVuZGVySW1hZ2VSZXNvdXJjZSYgcmVuZGVy
SW1hZ2VSZXNvdXJjZSA9IHJlbmRlckltYWdlLT5pbWFnZVJlc291cmNlKCk7CisgICAgUmVuZGVy
SW1hZ2UmIHJlbmRlckltYWdlID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCpyZW5kZXJlcigpKTsK
KyAgICBSZW5kZXJJbWFnZVJlc291cmNlJiByZW5kZXJJbWFnZVJlc291cmNlID0gcmVuZGVySW1h
Z2UuaW1hZ2VSZXNvdXJjZSgpOwogICAgIGlmIChyZW5kZXJJbWFnZVJlc291cmNlLmhhc0ltYWdl
KCkpCiAgICAgICAgIHJldHVybjsKICAgICByZW5kZXJJbWFnZVJlc291cmNlLnNldENhY2hlZElt
YWdlKG1faW1hZ2VMb2FkZXIuaW1hZ2UoKSk7CkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBIVE1M
SW1hZ2VFbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJlcnMoKQogICAgIC8vIElmIHdlIGhhdmUgbm8g
aW1hZ2UgYXQgYWxsIGJlY2F1c2Ugd2UgaGF2ZSBubyBzcmMgYXR0cmlidXRlLCBzZXQKICAgICAv
LyBpbWFnZSBoZWlnaHQgYW5kIHdpZHRoIGZvciB0aGUgYWx0IHRleHQgaW5zdGVhZC4KICAgICBp
ZiAoIW1faW1hZ2VMb2FkZXIuaW1hZ2UoKSAmJiAhcmVuZGVySW1hZ2VSZXNvdXJjZS5jYWNoZWRJ
bWFnZSgpKQotICAgICAgICByZW5kZXJJbWFnZS0+c2V0SW1hZ2VTaXplRm9yQWx0VGV4dCgpOwor
ICAgICAgICByZW5kZXJJbWFnZS5zZXRJbWFnZVNpemVGb3JBbHRUZXh0KCk7CiB9CiAKIE5vZGU6
Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSFRNTEltYWdlRWxlbWVudDo6aW5zZXJ0ZWRJ
bnRvKENvbnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50KQpAQCAtNTA3LDExICs1MDcsMTEgQEAg
dm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGVJbWFnZUNvbnRyb2xzKCkKIAogICAgIGVuc3Vy
ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKS5hcHBlbmRDaGlsZChpbWFnZUNvbnRyb2xzKTsKIAotICAg
IFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0ID0gcmVuZGVyZXIoKTsKKyAgICBhdXRvKiByZW5k
ZXJPYmplY3QgPSByZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyT2JqZWN0KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICB0b1JlbmRlckltYWdlKHJlbmRlck9iamVjdCktPnNldEhhc1NoYWRvd0Nv
bnRyb2xzKHRydWUpOworICAgIGRvd25jYXN0PFJlbmRlckltYWdlPigqcmVuZGVyT2JqZWN0KS5z
ZXRIYXNTaGFkb3dDb250cm9scyh0cnVlKTsKIH0KIAogdm9pZCBIVE1MSW1hZ2VFbGVtZW50Ojpk
ZXN0cm95SW1hZ2VDb250cm9scygpCkBAIC01MjUsMTEgKzUyNSwxMSBAQCB2b2lkIEhUTUxJbWFn
ZUVsZW1lbnQ6OmRlc3Ryb3lJbWFnZUNvbnRyb2xzKCkKICAgICAgICAgc2hhZG93Um9vdC0+cmVt
b3ZlQ2hpbGQobm9kZSk7CiAgICAgfQogCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3Qg
PSByZW5kZXJlcigpOworICAgIGF1dG8qIHJlbmRlck9iamVjdCA9IHJlbmRlcmVyKCk7CiAgICAg
aWYgKCFyZW5kZXJPYmplY3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIHRvUmVuZGVySW1hZ2Uo
cmVuZGVyT2JqZWN0KS0+c2V0SGFzU2hhZG93Q29udHJvbHMoZmFsc2UpOworICAgIGRvd25jYXN0
PFJlbmRlckltYWdlPigqcmVuZGVyT2JqZWN0KS5zZXRIYXNTaGFkb3dDb250cm9scyhmYWxzZSk7
CiB9CiAKIGJvb2wgSFRNTEltYWdlRWxlbWVudDo6aGFzSW1hZ2VDb250cm9scygpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCAzODU1NzVhNGVkNTUz
MjAzYTk0Mzk2Y2EwODFjYTA4NGJjZDA4ZTYzLi43MWIwMDUxZmE4NmVkN2Q0NjY3MWY2Mjc4MDM0
M2ZiZWQ0NDJlNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAK
QEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJl
cnMoKQogICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTElt
YWdlTG9hZGVyPigqdGhpcyk7CiAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVt
ZW50KCk7CiAgICAgICAgIGlmIChyZW5kZXJlcigpKQotICAgICAgICAgICAgdG9SZW5kZXJJbWFn
ZShyZW5kZXJlcigpKS0+aW1hZ2VSZXNvdXJjZSgpLnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2Fk
ZXItPmltYWdlKCkpOworICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCpyZW5kZXJl
cigpKS5pbWFnZVJlc291cmNlKCkuc2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci0+aW1hZ2Uo
KSk7CiAgICAgfQogfQogCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNT
dHIKICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50SWdub3JpbmdQ
cmV2aW91c0Vycm9yKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAocmVuZGVy
ZXIoKSkKLSAgICAgICAgICAgICAgICB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpLT5pbWFnZVJl
c291cmNlKCkuc2V0Q2FjaGVkSW1hZ2UoMCk7CisgICAgICAgICAgICAgICAgZG93bmNhc3Q8UmVu
ZGVySW1hZ2U+KCpyZW5kZXJlcigpKS5pbWFnZVJlc291cmNlKCkuc2V0Q2FjaGVkSW1hZ2UobnVs
bHB0cik7CiAgICAgICAgIH0KICAgICB9CiAjaWYgRU5BQkxFKElPU19BSVJQTEFZKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcAppbmRleCAyODlhOWVkMjVlYWNjNDJhZGZhOTBk
ZDA4OGRmNzllODM0OGI3YzY4Li42MjNmNDhlODU3MWMyYmVlZTlhOWY3YzU3Y2Y1NzNiODk0ZDgz
YjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcApAQCAtMTA4LDEwICsx
MDgsMTAgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEltYWdlSW5wdXRUeXBlOjpjcmVhdGVJ
bnB1dFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGUKIAogdm9pZCBJbWFnZUlucHV0VHlwZTo6
YWx0QXR0cmlidXRlQ2hhbmdlZCgpCiB7Ci0gICAgUmVuZGVySW1hZ2UqIGltYWdlID0gdG9SZW5k
ZXJJbWFnZShlbGVtZW50KCkucmVuZGVyZXIoKSk7Ci0gICAgaWYgKCFpbWFnZSkKKyAgICBSZW5k
ZXJJbWFnZSogcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJJbWFnZT4oZWxlbWVudCgpLnJlbmRl
cmVyKCkpOworICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBpbWFnZS0+
dXBkYXRlQWx0VGV4dCgpOworICAgIHJlbmRlcmVyLT51cGRhdGVBbHRUZXh0KCk7CiB9CiAKIHZv
aWQgSW1hZ2VJbnB1dFR5cGU6OnNyY0F0dHJpYnV0ZUNoYW5nZWQoKQpAQCAtMTI4LDcgKzEyOCw3
IEBAIHZvaWQgSW1hZ2VJbnB1dFR5cGU6OmF0dGFjaCgpCiAgICAgSFRNTEltYWdlTG9hZGVyKiBp
bWFnZUxvYWRlciA9IGVsZW1lbnQoKS5pbWFnZUxvYWRlcigpOwogICAgIGltYWdlTG9hZGVyLT51
cGRhdGVGcm9tRWxlbWVudCgpOwogCi0gICAgUmVuZGVySW1hZ2UqIHJlbmRlcmVyID0gdG9SZW5k
ZXJJbWFnZShlbGVtZW50KCkucmVuZGVyZXIoKSk7CisgICAgUmVuZGVySW1hZ2UqIHJlbmRlcmVy
ID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KGVsZW1lbnQoKS5yZW5kZXJlcigpKTsKICAgICBpZiAo
IXJlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDRjMjNhYjZm
OGQ1Y2RjMDc4MTA2MDc5YzQ2MDk1YjdlN2VjMDUxNzIuLmY3ODU5OTIzMTQ5NDVkOTc0ZTFmZTFl
YjY0ZGRlZWJkNmMxYjE2NTggMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMTI4Miw4ICsxMjgyLDggQEAg
c3RhdGljIExheW91dFNpemUgc2l6ZShIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZSwgSW1hZ2VTaXpl
VHlwZSBzaXplVHlwZSkKICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2Ut
PmNhY2hlZEltYWdlKCkpIHsKICAgICAgICAgc2l6ZSA9IGNhY2hlZEltYWdlLT5pbWFnZVNpemVG
b3JSZW5kZXJlcihpbWFnZS0+cmVuZGVyZXIoKSwgMS4wZik7IC8vIEZJWE1FOiBOb3Qgc3VyZSBh
Ym91dCB0aGlzLgogCi0gICAgICAgIGlmIChzaXplVHlwZSA9PSBJbWFnZVNpemVBZnRlckRldmlj
ZVBpeGVsUmF0aW8gJiYgaW1hZ2UtPnJlbmRlcmVyKCkgJiYgaW1hZ2UtPnJlbmRlcmVyKCktPmlz
UmVuZGVySW1hZ2UoKSAmJiBjYWNoZWRJbWFnZS0+aW1hZ2UoKSAmJiAhY2FjaGVkSW1hZ2UtPmlt
YWdlKCktPmhhc1JlbGF0aXZlV2lkdGgoKSkKLSAgICAgICAgICAgIHNpemUuc2NhbGUodG9SZW5k
ZXJJbWFnZShpbWFnZS0+cmVuZGVyZXIoKSktPmltYWdlRGV2aWNlUGl4ZWxSYXRpbygpKTsKKyAg
ICAgICAgaWYgKHNpemVUeXBlID09IEltYWdlU2l6ZUFmdGVyRGV2aWNlUGl4ZWxSYXRpbyAmJiBp
czxSZW5kZXJJbWFnZT4oaW1hZ2UtPnJlbmRlcmVyKCkpICYmIGNhY2hlZEltYWdlLT5pbWFnZSgp
ICYmICFjYWNoZWRJbWFnZS0+aW1hZ2UoKS0+aGFzUmVsYXRpdmVXaWR0aCgpKQorICAgICAgICAg
ICAgc2l6ZS5zY2FsZShkb3duY2FzdDxSZW5kZXJJbWFnZT4oKmltYWdlLT5yZW5kZXJlcigpKS5p
bWFnZURldmljZVBpeGVsUmF0aW8oKSk7CiAgICAgfQogICAgIHJldHVybiBzaXplOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290
RWxlbWVudE1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250
cm9sc1Jvb3RFbGVtZW50TWFjLmNwcAppbmRleCAxMGJmMWFiNDk3ZDI1MDA5ODVkODk4ZWJjNGE1
ZDYxNzdkZGViNGU0Li5kOTY0ODEzODJiZTFiMmUxZWUzMGE4YjU1OTYzZDlmNmYxZTE2YjZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jv
b3RFbGVtZW50TWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1h
Z2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmNwcApAQCAtNjMsMTAgKzYzLDEwIEBAIHZvaWQgUmVu
ZGVySW1hZ2VDb250cm9sczo6dXBkYXRlTG9naWNhbFdpZHRoKCkKICAgICBSZW5kZXJCb3g6OnVw
ZGF0ZUxvZ2ljYWxXaWR0aCgpOwogCiAgICAgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIgPSBlbGVt
ZW50KCktPnNoYWRvd0hvc3QoKS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyLT5pc1Jl
bmRlckltYWdlKCkpCisgICAgaWYgKCFpczxSZW5kZXJJbWFnZT4oKnJlbmRlcmVyKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgc2V0TG9naWNhbFdpZHRoKHRvUmVuZGVySW1hZ2UocmVuZGVyZXIp
LT5sb2dpY2FsV2lkdGgoKSk7CisgICAgc2V0TG9naWNhbFdpZHRoKGRvd25jYXN0PFJlbmRlcklt
YWdlPigqcmVuZGVyZXIpLmxvZ2ljYWxXaWR0aCgpKTsKIH0KIAogdm9pZCBSZW5kZXJJbWFnZUNv
bnRyb2xzOjpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExh
eW91dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiBjb21wdXRl
ZFZhbHVlcykgY29uc3QKQEAgLTc0LDEwICs3NCwxMCBAQCB2b2lkIFJlbmRlckltYWdlQ29udHJv
bHM6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0
VQogICAgIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdodCwgbG9n
aWNhbFRvcCwgY29tcHV0ZWRWYWx1ZXMpOwogCiAgICAgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIg
PSBlbGVtZW50KCktPnNoYWRvd0hvc3QoKS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVy
LT5pc1JlbmRlckltYWdlKCkpCisgICAgaWYgKCFpczxSZW5kZXJJbWFnZT4oKnJlbmRlcmVyKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPSB0b1JlbmRl
ckltYWdlKHJlbmRlcmVyKS0+bG9naWNhbEhlaWdodCgpOworICAgIGNvbXB1dGVkVmFsdWVzLm1f
ZXh0ZW50ID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCpyZW5kZXJlcikubG9naWNhbEhlaWdodCgp
OwogfQogCiBQYXNzUmVmUHRyPEltYWdlQ29udHJvbHNSb290RWxlbWVudD4gSW1hZ2VDb250cm9s
c1Jvb3RFbGVtZW50OjptYXliZUNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ltYWdlTG9hZGVyLmNwcAppbmRleCBmOGY0ZjQzYzI3MTA1ZWEyNmU2MmM3NzkwZGFi
M2JmNTgwYmFmMzQwLi4wZjA2Nzc0MmU0ZmM2OTI3YzY3OWI0ODk2ZTMwMGI1ODYzN2FlYjM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKQEAgLTMxNywyMSArMzE3LDIxIEBA
IHZvaWQgSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJj
ZSkKIAogUmVuZGVySW1hZ2VSZXNvdXJjZSogSW1hZ2VMb2FkZXI6OnJlbmRlckltYWdlUmVzb3Vy
Y2UoKQogewotICAgIGF1dG8gcmVuZGVyZXIgPSBlbGVtZW50KCkucmVuZGVyZXIoKTsKKyAgICBh
dXRvKiByZW5kZXJlciA9IGVsZW1lbnQoKS5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gV2UgZG9uJ3QgcmV0dXJuIHN0eWxl
IGdlbmVyYXRlZCBpbWFnZSBiZWNhdXNlIGl0IGRvZXNuJ3QgYmVsb25nIHRvIHRoZSBJbWFnZUxv
YWRlci4KICAgICAvLyBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00Mjg0MD4KLSAgICBpZiAocmVuZGVyZXItPmlzUmVuZGVySW1hZ2UoKSAmJiAhdG9SZW5kZXJJ
bWFnZSgqcmVuZGVyZXIpLmlzR2VuZXJhdGVkQ29udGVudCgpKQotICAgICAgICByZXR1cm4gJnRv
UmVuZGVySW1hZ2UoKnJlbmRlcmVyKS5pbWFnZVJlc291cmNlKCk7CisgICAgaWYgKGlzPFJlbmRl
ckltYWdlPigqcmVuZGVyZXIpICYmICFkb3duY2FzdDxSZW5kZXJJbWFnZT4oKnJlbmRlcmVyKS5p
c0dlbmVyYXRlZENvbnRlbnQoKSkKKyAgICAgICAgcmV0dXJuICZkb3duY2FzdDxSZW5kZXJJbWFn
ZT4oKnJlbmRlcmVyKS5pbWFnZVJlc291cmNlKCk7CiAKLSAgICBpZiAocmVuZGVyZXItPmlzU1ZH
SW1hZ2UoKSkKLSAgICAgICAgcmV0dXJuICZ0b1JlbmRlclNWR0ltYWdlKHJlbmRlcmVyKS0+aW1h
Z2VSZXNvdXJjZSgpOworICAgIGlmIChpczxSZW5kZXJTVkdJbWFnZT4oKnJlbmRlcmVyKSkKKyAg
ICAgICAgcmV0dXJuICZkb3duY2FzdDxSZW5kZXJTVkdJbWFnZT4oKnJlbmRlcmVyKS5pbWFnZVJl
c291cmNlKCk7CiAKICNpZiBFTkFCTEUoVklERU8pCi0gICAgaWYgKHJlbmRlcmVyLT5pc1ZpZGVv
KCkpCi0gICAgICAgIHJldHVybiAmdG9SZW5kZXJWaWRlbygqcmVuZGVyZXIpLmltYWdlUmVzb3Vy
Y2UoKTsKKyAgICBpZiAoaXM8UmVuZGVyVmlkZW8+KCpyZW5kZXJlcikpCisgICAgICAgIHJldHVy
biAmZG93bmNhc3Q8UmVuZGVyVmlkZW8+KCpyZW5kZXJlcikuaW1hZ2VSZXNvdXJjZSgpOwogI2Vu
ZGlmCiAKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4
dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCAxOTRmNDRkNjhhMWZiNjM1ZDMwMTEzM2Q3YmI0M2Jm
YWI1Nzk3OTdkLi4yMmVlNjYyZDBhNDBiOTRjMTU3MzVhZGIxMGZjOTU1NWQwNGNjZTk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0xMzQs
MTEgKzEzNCw5IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpzaG93Q29udGV4dE1lbnUo
RXZlbnQqIGV2ZW50LCBQYXNzUmVmUHRyPENvbnRleHRNZW51CiBzdGF0aWMgSW1hZ2UqIGltYWdl
RnJvbUltYWdlRWxlbWVudE5vZGUoTm9kZSYgbm9kZSkKIHsKICAgICBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gbm9kZS5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIpCisgICAgaWYgKCFp
czxSZW5kZXJJbWFnZT4ocmVuZGVyZXIpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBp
ZiAoIXJlbmRlcmVyLT5pc1JlbmRlckltYWdlKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIENhY2hlZEltYWdlKiBpbWFnZSA9IHRvUmVuZGVySW1hZ2UoKnJlbmRlcmVyKS5jYWNoZWRJ
bWFnZSgpOworICAgIENhY2hlZEltYWdlKiBpbWFnZSA9IGRvd25jYXN0PFJlbmRlckltYWdlPigq
cmVuZGVyZXIpLmNhY2hlZEltYWdlKCk7CiAgICAgaWYgKCFpbWFnZSB8fCBpbWFnZS0+ZXJyb3JP
Y2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmNwcAppbmRleCBlZjM5NGZiYjZhOTA0MTFmOTIwNjE2NTEwM2NkODhiNmVk
OGE2YTAyLi40NzA1YWFkZjNmMjgyZDlhZTliNGJjNmRmNTgzNDg3NjU5NDgxYWNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtNjYwLDEwICs2NjAsMTAgQEAgRWxl
bWVudCogRHJhZ0NvbnRyb2xsZXI6OmRyYWdnYWJsZUVsZW1lbnQoY29uc3QgRnJhbWUqIHNvdXJj
ZUZyYW1lLCBFbGVtZW50KiBzdGEKIHN0YXRpYyBDYWNoZWRJbWFnZSogZ2V0Q2FjaGVkSW1hZ2Uo
RWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZWxlbWVu
dC5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5pc1JlbmRlcklt
YWdlKCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIFJlbmRlckltYWdlKiBpbWFnZSA9IHRvUmVu
ZGVySW1hZ2UocmVuZGVyZXIpOwotICAgIHJldHVybiBpbWFnZS0+Y2FjaGVkSW1hZ2UoKTsKKyAg
ICBpZiAoIWlzPFJlbmRlckltYWdlPihyZW5kZXJlcikpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIFJlbmRlckltYWdlJiBpbWFnZSA9IGRvd25jYXN0PFJlbmRlckltYWdlPigqcmVuZGVy
ZXIpOworICAgIHJldHVybiBpbWFnZS5jYWNoZWRJbWFnZSgpOwogfQogCiBzdGF0aWMgSW1hZ2Uq
IGdldEltYWdlKEVsZW1lbnQmIGVsZW1lbnQpCkBAIC02NzMsNyArNjczLDcgQEAgc3RhdGljIElt
YWdlKiBnZXRJbWFnZShFbGVtZW50JiBlbGVtZW50KQogICAgIC8vIFVzZXJzIG9mIGdldEltYWdl
KCkgd2FudCBhY2Nlc3MgdG8gdGhlIFNWR0ltYWdlLCBpbiBvcmRlciB0byBmaWd1cmUgb3V0IHRo
ZSBmaWxlbmFtZSBleHRlbnNpb25zLAogICAgIC8vIHdoaWNoIHdvdWxkIGJlIGVtcHR5IHdoZW4g
YXNraW5nIHRoZSBjYWNoZWQgQml0bWFwSW1hZ2VzLgogICAgIHJldHVybiAoY2FjaGVkSW1hZ2Ug
JiYgIWNhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpID8KLSAgICAgICAgY2FjaGVkSW1hZ2Ut
PmltYWdlKCkgOiAwOworICAgICAgICBjYWNoZWRJbWFnZS0+aW1hZ2UoKSA6IG51bGxwdHI7CiB9
CiAKIHN0YXRpYyB2b2lkIHNlbGVjdEVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCBjMmEwNzVjMTBh
YzcwM2EzY2EwYWQxYWIxMDRkMzBkMDAzZGIwMjcyLi4wNzAxZWI2ZWU4YzA0MGNjNTA3MTA3Nzlj
ZDY2NGU4NDY5OWVhNzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
UGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3Rl
Ym9hcmRXaW4uY3BwCkBAIC03MjMsMTQgKzcyMywxNCBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRl
KGNvbnN0IFBhc3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRVUkwpCiAKIHZvaWQgUGFzdGVib2FyZDo6
d3JpdGVJbWFnZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKQog
ewotICAgIGlmICghKGVsZW1lbnQucmVuZGVyZXIoKSAmJiBlbGVtZW50LnJlbmRlcmVyKCktPmlz
UmVuZGVySW1hZ2UoKSkpCisgICAgaWYgKCFpczxSZW5kZXJJbWFnZT4oZWxlbWVudC5yZW5kZXJl
cigpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVuZGVySW1hZ2UqIHJlbmRlcmVyID0gdG9S
ZW5kZXJJbWFnZShlbGVtZW50LnJlbmRlcmVyKCkpOwotICAgIENhY2hlZEltYWdlKiBjYWNoZWRJ
bWFnZSA9IHJlbmRlcmVyLT5jYWNoZWRJbWFnZSgpOworICAgIFJlbmRlckltYWdlJiByZW5kZXJl
ciA9IGRvd25jYXN0PFJlbmRlckltYWdlPigqZWxlbWVudC5yZW5kZXJlcigpKTsKKyAgICBDYWNo
ZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSByZW5kZXJlci5jYWNoZWRJbWFnZSgpOwogICAgIGlmICgh
Y2FjaGVkSW1hZ2UgfHwgY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0
dXJuOwotICAgIEltYWdlKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKHJl
bmRlcmVyKTsKKyAgICBJbWFnZSogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJl
cigmcmVuZGVyZXIpOwogICAgIEFTU0VSVChpbWFnZSk7CiAKICAgICBjbGVhcigpOwpAQCAtODU5
LDE0ICs4NTksMTQgQEAgc3RhdGljIENhY2hlZEltYWdlKiBnZXRDYWNoZWRJbWFnZShFbGVtZW50
JiBlbGVtZW50KQogewogICAgIC8vIEF0dGVtcHQgdG8gcHVsbCBDYWNoZWRJbWFnZSBmcm9tIGVs
ZW1lbnQKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwot
ICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5pc1JlbmRlckltYWdlKCkpCi0gICAgICAg
IHJldHVybiAwOworICAgIGlmICghaXM8UmVuZGVySW1hZ2U+KHJlbmRlcmVyKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZW5kZXJJbWFnZSogaW1hZ2UgPSB0b1JlbmRlckltYWdl
KHJlbmRlcmVyKTsKKyAgICBSZW5kZXJJbWFnZSogaW1hZ2UgPSBkb3duY2FzdDxSZW5kZXJJbWFn
ZT4ocmVuZGVyZXIpOwogICAgIGlmIChpbWFnZS0+Y2FjaGVkSW1hZ2UoKSAmJiAhaW1hZ2UtPmNh
Y2hlZEltYWdlKCktPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIGltYWdlLT5jYWNo
ZWRJbWFnZSgpOwogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHN0
YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0b3IoY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIENhY2hlZEltYWdlKiBpbWFnZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCA2YjVjMWYyMjc0YWZkMmQ1
ZTk2ZWFmOTNlOTFiOGMxZjdhZDIzOWE2Li42MDk3MjEzZjNkYmE5ZWMzM2E5NTdhMGE0MWU2NDQx
OTYxM2Q3ZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJl
c3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3Bw
CkBAIC0yOTAsMTYgKzI5MCwxNiBAQCBTdHJpbmcgSGl0VGVzdFJlc3VsdDo6YWx0RGlzcGxheVN0
cmluZygpIGNvbnN0CiBJbWFnZSogSGl0VGVzdFJlc3VsdDo6aW1hZ2UoKSBjb25zdAogewogICAg
IGlmICghbV9pbm5lck5vblNoYXJlZE5vZGUpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBhdXRvIHJlbmRlcmVyID0gbV9pbm5lck5vblNoYXJl
ZE5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc1JlbmRl
ckltYWdlKCkpIHsKLSAgICAgICAgUmVuZGVySW1hZ2UqIGltYWdlID0gdG9SZW5kZXJJbWFnZShy
ZW5kZXJlcik7Ci0gICAgICAgIGlmIChpbWFnZS0+Y2FjaGVkSW1hZ2UoKSAmJiAhaW1hZ2UtPmNh
Y2hlZEltYWdlKCktPmVycm9yT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBpbWFnZS0+
Y2FjaGVkSW1hZ2UoKS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZSk7CisgICAgYXV0byogcmVuZGVy
ZXIgPSBtX2lubmVyTm9uU2hhcmVkTm9kZS0+cmVuZGVyZXIoKTsKKyAgICBpZiAoaXM8UmVuZGVy
SW1hZ2U+KHJlbmRlcmVyKSkgeworICAgICAgICBSZW5kZXJJbWFnZSYgaW1hZ2UgPSBkb3duY2Fz
dDxSZW5kZXJJbWFnZT4oKnJlbmRlcmVyKTsKKyAgICAgICAgaWYgKGltYWdlLmNhY2hlZEltYWdl
KCkgJiYgIWltYWdlLmNhY2hlZEltYWdlKCktPmVycm9yT2NjdXJyZWQoKSkKKyAgICAgICAgICAg
IHJldHVybiBpbWFnZS5jYWNoZWRJbWFnZSgpLT5pbWFnZUZvclJlbmRlcmVyKCZpbWFnZSk7CiAg
ICAgfQogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIEludFJlY3Qg
SGl0VGVzdFJlc3VsdDo6aW1hZ2VSZWN0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmgKaW5kZXggYzVhZWEwNTQxNzYyMzAyOTViMThmNDI2ODllN2IwYjFhNmFiNjNk
Zi4uNGE4YzY5ZjZlMDNlNDdjYjY0MmJjNzA0NGQxMTEwMDNjZTdhYTE2MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKQEAgLTEyOCw4ICsxMjgsNiBAQCBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJJbWFnZVNjYWxlT2JzZXJ2ZXI7CiB9OwogCi1SRU5ERVJf
T0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVySW1hZ2UsIGlzUmVuZGVySW1hZ2UoKSkKLQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1Qo
UmVuZGVySW1hZ2UsIGlzUmVuZGVySW1hZ2UoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcAppbmRleCAyODk5MmVjMzY5NDAxOWU0YmZhMmQ4
OTk4YjUwYjg2MDU2MDM4N2NmLi5lZDgwY2YxNDUyYzBhMTc3MTgxMzY3NjE1YTk5ODZkYjk3YWIw
OTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3Vy
Y2UuY3BwCkBAIC0xMzIsOCArMTMyLDggQEAgTGF5b3V0U2l6ZSBSZW5kZXJJbWFnZVJlc291cmNl
OjpnZXRJbWFnZVNpemUoZmxvYXQgbXVsdGlwbGllciwgQ2FjaGVkSW1hZ2U6OlNpemUKICAgICBp
ZiAoIW1fY2FjaGVkSW1hZ2UpCiAgICAgICAgIHJldHVybiBMYXlvdXRTaXplKCk7CiAgICAgTGF5
b3V0U2l6ZSBzaXplID0gbV9jYWNoZWRJbWFnZS0+aW1hZ2VTaXplRm9yUmVuZGVyZXIobV9yZW5k
ZXJlciwgbXVsdGlwbGllciwgdHlwZSk7Ci0gICAgaWYgKG1fcmVuZGVyZXIgJiYgbV9yZW5kZXJl
ci0+aXNSZW5kZXJJbWFnZSgpKQotICAgICAgICBzaXplLnNjYWxlKHRvUmVuZGVySW1hZ2UobV9y
ZW5kZXJlciktPmltYWdlRGV2aWNlUGl4ZWxSYXRpbygpKTsKKyAgICBpZiAoaXM8UmVuZGVySW1h
Z2U+KG1fcmVuZGVyZXIpKQorICAgICAgICBzaXplLnNjYWxlKGRvd25jYXN0PFJlbmRlckltYWdl
PigqbV9yZW5kZXJlcikuaW1hZ2VEZXZpY2VQaXhlbFJhdGlvKCkpOwogICAgIHJldHVybiBzaXpl
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwCmluZGV4IDZhNzc3MjViZjYwMDFiY2I2N2ZmMjRlMzdiNmViM2M5ZGI3MDU0OTAuLjg4Y2Q4
ZTJlNDY5ZTQ3YjU3ZmE4ODA3Y2FmMDJlM2NlOWJhZmRkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xODE5LDEwICsxODE5LDEw
IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpjb250YWluc1BhaW50ZWRDb250ZW50KGJvb2wg
aXNTaW1wbGVDb250YWluZXIpIGNvbnN0CiAvLyB0aGF0IHJlcXVpcmUgcGFpbnRpbmcuIERpcmVj
dCBjb21wb3NpdGluZyBzYXZlcyBiYWNraW5nIHN0b3JlLgogYm9vbCBSZW5kZXJMYXllckJhY2tp
bmc6OmlzRGlyZWN0bHlDb21wb3NpdGVkSW1hZ2UoKSBjb25zdAogewotICAgIGlmICghcmVuZGVy
ZXIoKS5pc1JlbmRlckltYWdlKCkgfHwgcmVuZGVyZXIoKS5pc01lZGlhKCkgfHwgbV9vd25pbmdM
YXllci5oYXNCb3hEZWNvcmF0aW9uc09yQmFja2dyb3VuZCgpIHx8IHJlbmRlcmVyKCkuaGFzQ2xp
cCgpKQorICAgIGlmICghaXM8UmVuZGVySW1hZ2U+KHJlbmRlcmVyKCkpIHx8IGlzPFJlbmRlck1l
ZGlhPihyZW5kZXJlcigpKSB8fCBtX293bmluZ0xheWVyLmhhc0JveERlY29yYXRpb25zT3JCYWNr
Z3JvdW5kKCkgfHwgcmVuZGVyZXIoKS5oYXNDbGlwKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIFJlbmRlckltYWdlJiBpbWFnZVJlbmRlcmVyID0gdG9SZW5kZXJJbWFnZShyZW5kZXJl
cigpKTsKKyAgICBSZW5kZXJJbWFnZSYgaW1hZ2VSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlcklt
YWdlPihyZW5kZXJlcigpKTsKICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gaW1h
Z2VSZW5kZXJlci5jYWNoZWRJbWFnZSgpKSB7CiAgICAgICAgIGlmICghY2FjaGVkSW1hZ2UtPmhh
c0ltYWdlKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xODY2LDggKzE4NjYsNyBA
QCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6Y29udGVudENoYW5nZWQoQ29udGVudENoYW5nZVR5
cGUgY2hhbmdlVHlwZSkKIAogdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUltYWdlQ29u
dGVudHMoKQogewotICAgIEFTU0VSVChyZW5kZXJlcigpLmlzUmVuZGVySW1hZ2UoKSk7Ci0gICAg
UmVuZGVySW1hZ2UmIGltYWdlUmVuZGVyZXIgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpOwor
ICAgIFJlbmRlckltYWdlJiBpbWFnZVJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KHJl
bmRlcmVyKCkpOwogCiAgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2VSZW5kZXJl
ci5jYWNoZWRJbWFnZSgpOwogICAgIGlmICghY2FjaGVkSW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAppbmRleCBhODI3NmQ3M2NiZWJhNWM2YWQwNDg0
ZjEwMWM5YTMzYjFiYThlOWI3Li45NzIzNWI3NTIyNjU4MTRjNzU2MjFiODIyNjcyNWVmNGI3Y2Qw
ODAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAg
LTI4Niw4ICsyODYsOCBAQCB2b2lkIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlQXNwZWN0UmF0aW9J
bmZvcm1hdGlvbkZvclJlbmRlckJveChSZW5kZXJCb3gqIGNvbnRlbgogICAgICAgICAvLyBIYW5k
bGUgem9vbSAmIHZlcnRpY2FsIHdyaXRpbmcgbW9kZXMgaGVyZSwgYXMgdGhlIGVtYmVkZGVkIGRv
Y3VtZW50IGRvZXNuJ3Qga25vdyBhYm91dCB0aGVtLgogICAgICAgICBpbnRyaW5zaWNTaXplLnNj
YWxlKHN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKTsKIAotICAgICAgICBpZiAoaXNSZW5kZXJJbWFn
ZSgpKQotICAgICAgICAgICAgaW50cmluc2ljU2l6ZS5zY2FsZSh0b1JlbmRlckltYWdlKHRoaXMp
LT5pbWFnZURldmljZVBpeGVsUmF0aW8oKSk7CisgICAgICAgIGlmIChpczxSZW5kZXJJbWFnZT4o
KnRoaXMpKQorICAgICAgICAgICAgaW50cmluc2ljU2l6ZS5zY2FsZShkb3duY2FzdDxSZW5kZXJJ
bWFnZT4oKnRoaXMpLmltYWdlRGV2aWNlUGl4ZWxSYXRpbygpKTsKIAogICAgICAgICAvLyBVcGRh
dGUgb3VyIGludHJpbnNpYyBzaXplIHRvIG1hdGNoIHdoYXQgdGhlIGNvbnRlbnQgcmVuZGVyZXIg
aGFzIGNvbXB1dGVkLCBzbyB0aGF0IHdoZW4gd2UKICAgICAgICAgLy8gY29uc3RyYWluIHRoZSBz
aXplIGJlbG93LCB0aGUgY29ycmVjdCBpbnRyaW5zaWMgc2l6ZSB3aWxsIGJlIG9idGFpbmVkIGZv
ciBjb21wYXJpc29uIGFnYWluc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwCmluZGV4IDBkMTdmODFmMDRkZTgzMmExY2YwODNl
MmViMmJmNjQ2ZTRlZDBhZjUuLmI0Y2Y2OGU1ZTQ4MDUwZGIxOWFiNzhlYWZhN2Q2YjNiMGRhYzgx
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRz
aWRlSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91
dHNpZGVJbmZvLmNwcApAQCAtMTUwLDggKzE1MCw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4g
U2hhcGVPdXRzaWRlSW5mbzo6Y3JlYXRlU2hhcGVGb3JJbWFnZShTdHlsZUltYWdlKiBzdHlsZUlt
CiAgICAgc3R5bGVJbWFnZS0+c2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKCZtX3JlbmRlcmVy
LCBpbWFnZVNpemUsIG1fcmVuZGVyZXIuc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpOwogCiAgICAg
Y29uc3QgTGF5b3V0UmVjdCYgbWFyZ2luUmVjdCA9IGdldFNoYXBlSW1hZ2VNYXJnaW5SZWN0KG1f
cmVuZGVyZXIsIG1fcmVmZXJlbmNlQm94TG9naWNhbFNpemUpOwotICAgIGNvbnN0IExheW91dFJl
Y3QmIGltYWdlUmVjdCA9IG1fcmVuZGVyZXIuaXNSZW5kZXJJbWFnZSgpCi0gICAgICAgID8gdG9S
ZW5kZXJJbWFnZSgmbV9yZW5kZXJlciktPnJlcGxhY2VkQ29udGVudFJlY3QobV9yZW5kZXJlci5p
bnRyaW5zaWNTaXplKCkpCisgICAgY29uc3QgTGF5b3V0UmVjdCYgaW1hZ2VSZWN0ID0gaXM8UmVu
ZGVySW1hZ2U+KG1fcmVuZGVyZXIpCisgICAgICAgID8gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KG1f
cmVuZGVyZXIpLnJlcGxhY2VkQ29udGVudFJlY3QobV9yZW5kZXJlci5pbnRyaW5zaWNTaXplKCkp
CiAgICAgICAgIDogTGF5b3V0UmVjdChMYXlvdXRQb2ludCgpLCBpbWFnZVNpemUpOwogCiAgICAg
QVNTRVJUKCFzdHlsZUltYWdlLT5pc1BlbmRpbmdJbWFnZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tIGIvU291cmNlL1dlYktp
dC9tYWMvTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0KaW5kZXggZDQ0OTlhZmY0YzIwMThk
OWE5YjFjYWM4OGQzZjM3M2M2MGUyN2I0OS4uYTg3YjkwY2VhZGY5NWJlYmRiNTExYjZjZDQzZjdl
NDI4OTVkMjUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJOU1Bhc3Rl
Ym9hcmRFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJOU1Bhc3RlYm9h
cmRFeHRyYXMubW0KQEAgLTIyMCwxMyArMjIwLDEzIEBAIHN0YXRpYyBDYWNoZWRJbWFnZSogaW1h
Z2VGcm9tRWxlbWVudChET01FbGVtZW50ICpkb21FbGVtZW50KQogewogICAgIEVsZW1lbnQqIGVs
ZW1lbnQgPSBjb3JlKGRvbUVsZW1lbnQpOwogICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIFJlbmRlck9iamVjdCog
cmVuZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJlcigpOwotICAgIFJlbmRlckltYWdlKiBpbWFnZVJl
bmRlcmVyID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlcik7Ci0gICAgaWYgKCFpbWFnZVJlbmRlcmVy
LT5jYWNoZWRJbWFnZSgpIHx8IGltYWdlUmVuZGVyZXItPmNhY2hlZEltYWdlKCktPmVycm9yT2Nj
dXJyZWQoKSkgCi0gICAgICAgIHJldHVybiAwOyAgICAgICAgCi0gICAgcmV0dXJuIGltYWdlUmVu
ZGVyZXItPmNhY2hlZEltYWdlKCk7CisgICAgQVNTRVJUKGVsZW1lbnQtPnJlbmRlcmVyKCkpOwor
ICAgIFJlbmRlckltYWdlJiBpbWFnZVJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCpl
bGVtZW50LT5yZW5kZXJlcigpKTsKKyAgICBpZiAoIWltYWdlUmVuZGVyZXIuY2FjaGVkSW1hZ2Uo
KSB8fCBpbWFnZVJlbmRlcmVyLmNhY2hlZEltYWdlKCktPmVycm9yT2NjdXJyZWQoKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGltYWdlUmVuZGVyZXIuY2FjaGVkSW1hZ2Uo
KTsKIH0KIAogLSAodm9pZClfd2ViX3dyaXRlSW1hZ2U6KE5TSW1hZ2UgKilpbWFnZQpAQCAtMjcx
LDEyICsyNzEsMTIgQEAgLSAoaWQpX3dlYl9kZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2VGb3JFbGVt
ZW50OihET01FbGVtZW50ICopZWxlbWVudAogICAgIEFTU0VSVChzZWxmID09IFtOU1Bhc3RlYm9h
cmQgcGFzdGVib2FyZFdpdGhOYW1lOk5TRHJhZ1Bib2FyZF0pOwogCiAgICAgTlNTdHJpbmcgKmV4
dGVuc2lvbiA9IEAiIjsKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGNvcmUoZWxl
bWVudCktPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgaWYgKHJlbmRlcmVyLT5pc1JlbmRlckltYWdl
KCkpIHsKLSAgICAgICAgICAgIGlmIChDYWNoZWRJbWFnZSogaW1hZ2UgPSB0b1JlbmRlckltYWdl
KHJlbmRlcmVyKS0+Y2FjaGVkSW1hZ2UoKSkgeworICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGNv
cmUoZWxlbWVudCktPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgaWYgKGlzPFJlbmRlckltYWdlPigq
cmVuZGVyZXIpKSB7CisgICAgICAgICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGltYWdlID0gZG93bmNh
c3Q8UmVuZGVySW1hZ2U+KCpyZW5kZXJlcikuY2FjaGVkSW1hZ2UoKSkgewogICAgICAgICAgICAg
ICAgIGV4dGVuc2lvbiA9IGltYWdlLT5pbWFnZSgpLT5maWxlbmFtZUV4dGVuc2lvbigpOwogICAg
ICAgICAgICAgICAgIGlmICghW2V4dGVuc2lvbiBsZW5ndGhdKQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpp
bmRleCBkNTU2MmQxYmNlMWJhNjM4Mjk0MzI3NzRkOTYyOTExZjNlMmU4ZTYyLi5kZjMwZDI4YTAy
OWI0MzNjMmMyZGRjZjJlYjFjOTBlM2QwOWZiZTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGll
bnRNYWMubW0KQEAgLTg2LDE0ICs4NiwxMiBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJh
ZyhSZXRhaW5QdHI8TlNJbWFnZT4gaW1hZ2UsIGNvbnN0IEludFBvaW50JiBwb2ludCwgYwogCiBz
dGF0aWMgV2ViQ29yZTo6Q2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKEVsZW1lbnQmIGVsZW1lbnQp
CiB7Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKLSAg
ICBpZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoIXJlbmRlcmVyLT5p
c1JlbmRlckltYWdlKCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIFdlYkNvcmU6OkNhY2hlZElt
YWdlKiBpbWFnZSA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpLT5jYWNoZWRJbWFnZSgpOworICAg
IGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOworICAgIGlmICghaXM8V2ViQ29y
ZTo6UmVuZGVySW1hZ2U+KHJlbmRlcmVyKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
V2ViQ29yZTo6Q2FjaGVkSW1hZ2UqIGltYWdlID0gZG93bmNhc3Q8V2ViQ29yZTo6UmVuZGVySW1h
Z2U+KCpyZW5kZXJlcikuY2FjaGVkSW1hZ2UoKTsKICAgICBpZiAoIWltYWdlIHx8IGltYWdlLT5l
cnJvck9jY3VycmVkKCkpIAotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgcmV0dXJuIGltYWdlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggMzAwMTA1OWVmMTFkYzczYmJh
ZjAyMmFkZWUyYmYwYTBmNTg1YjZjYy4uOWYzYmUzYjViZDU0ZGVmYjI1NWQxMDc2ZjcwODU5M2Ji
NDU0YjBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbQpAQCAtMTk1NiwyMSArMTk1NiwyMCBAQCB2b2lkIFdlYlBhZ2U6OnBl
cmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uKQogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAoc3RhdGljX2Nhc3Q8U2hlZXRBY3Rpb24+KGFjdGlvbikgPT0gU2hlZXRBY3Rpb246
OkNvcHkpIHsKLSAgICAgICAgaWYgKGVsZW1lbnQtPnJlbmRlcmVyKCktPmlzUmVuZGVySW1hZ2Uo
KSkgeworICAgICAgICBpZiAoaXM8UmVuZGVySW1hZ2U+KCplbGVtZW50LT5yZW5kZXJlcigpKSkg
ewogICAgICAgICAgICAgRWxlbWVudCogbGlua0VsZW1lbnQgPSBjb250YWluaW5nTGlua0VsZW1l
bnQoZWxlbWVudCk7CiAgICAgICAgIAogICAgICAgICAgICAgaWYgKCFsaW5rRWxlbWVudCkKLSAg
ICAgICAgICAgICAgICBtX2ludGVyYWN0aW9uTm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpLT5lZGl0
b3IoKS53cml0ZUltYWdlVG9QYXN0ZWJvYXJkKCpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5k
UGFzdGUoKSwgKmVsZW1lbnQsIHRvUmVuZGVySW1hZ2UoZWxlbWVudC0+cmVuZGVyZXIoKSktPmNh
Y2hlZEltYWdlKCktPnVybCgpLCBTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgbV9pbnRlcmFj
dGlvbk5vZGUtPmRvY3VtZW50KCkuZnJhbWUoKS0+ZWRpdG9yKCkud3JpdGVJbWFnZVRvUGFzdGVi
b2FyZCgqUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCksICplbGVtZW50LCBkb3du
Y2FzdDxSZW5kZXJJbWFnZT4oKmVsZW1lbnQtPnJlbmRlcmVyKCkpLmNhY2hlZEltYWdlKCktPnVy
bCgpLCBTdHJpbmcoKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbV9pbnRl
cmFjdGlvbk5vZGUtPmRvY3VtZW50KCkuZnJhbWUoKS0+ZWRpdG9yKCkuY29weVVSTChsaW5rRWxl
bWVudC0+ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxT
cGFjZXMobGlua0VsZW1lbnQtPmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmhyZWZBdHRyKSkpLCBs
aW5rRWxlbWVudC0+dGV4dENvbnRlbnQoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC0+
aXNMaW5rKCkpIHsKICAgICAgICAgICAgIG1faW50ZXJhY3Rpb25Ob2RlLT5kb2N1bWVudCgpLmZy
YW1lKCktPmVkaXRvcigpLmNvcHlVUkwoZWxlbWVudC0+ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChz
dHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoZWxlbWVudC0+Z2V0QXR0cmlidXRlKEhU
TUxOYW1lczo6aHJlZkF0dHIpKSksIGVsZW1lbnQtPnRleHRDb250ZW50KCkpOwogICAgICAgICB9
CiAgICAgfSBlbHNlIGlmIChzdGF0aWNfY2FzdDxTaGVldEFjdGlvbj4oYWN0aW9uKSA9PSBTaGVl
dEFjdGlvbjo6U2F2ZUltYWdlKSB7Ci0gICAgICAgIGlmICghZWxlbWVudC0+cmVuZGVyZXIoKS0+
aXNSZW5kZXJJbWFnZSgpKQorICAgICAgICBpZiAoIWlzPFJlbmRlckltYWdlPigqZWxlbWVudC0+
cmVuZGVyZXIoKSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIENhY2hlZEltYWdlKiBj
YWNoZWRJbWFnZSA9IHRvUmVuZGVySW1hZ2UoZWxlbWVudC0+cmVuZGVyZXIoKSktPmNhY2hlZElt
YWdlKCk7Ci0gICAgICAgIGlmIChjYWNoZWRJbWFnZSkgeworICAgICAgICBpZiAoQ2FjaGVkSW1h
Z2UqIGNhY2hlZEltYWdlID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCplbGVtZW50LT5yZW5kZXJl
cigpKS5jYWNoZWRJbWFnZSgpKSB7CiAgICAgICAgICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBo
YW5kbGU7CiAgICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBjYWNoZWRJ
bWFnZS0+cmVzb3VyY2VCdWZmZXIoKS0+c2hhcmVkQnVmZmVyKCk7CiAgICAgICAgICAgICBpZiAo
YnVmZmVyKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239785</attachid>
            <date>2014-10-14 01:22:44 -0700</date>
            <delta_ts>2014-10-14 02:07:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137683-20141014012248.patch</filename>
            <type>text/plain</type>
            <size>41026</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGNiM2M2MmM5MDgyZTBk
NjgwYjY4ZDM3ZDExYWUzYzZjNzhiZDgyMi4uMDRjYzhiNDRkMDRhZmQ0MjJjMTdkNjQ1M2Y0M2Yx
Zjk1MGI0MzYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDE0LTEwLTEzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25j
YXN0PD4oKSBmb3IgUmVuZGVySW1hZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNzY4MworCisgICAgICAgIFJldmlld2VkIGJ5IE1paG5lYSBPdmlk
ZW5pZS4KKworICAgICAgICBVc2UgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZvciBSZW5kZXJJbWFn
ZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFsdGVybmF0aXZlVGV4dCk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZEltYWdlTWFwQ2hpbGRy
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cmVtb3Rl
U1ZHUm9vdEVsZW1lbnQpOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NLm1tOgorICAgICAg
ICAoLVtET01FbGVtZW50IGltYWdlXSk6CisgICAgICAgICgtW0RPTUVsZW1lbnQgX2ltYWdlVElG
RlJlcHJlc2VudGF0aW9uXSk6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5kbGVSZXBsYWNlZEVsZW1lbnQpOgor
ICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKGZpbGVX
cmFwcGVyRm9yRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9ndGsvRWRpdG9yR3RrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmdldEltYWdlRm9yRWxlbWVudCk6CisgICAgICAgICogZWRpdGlu
Zy9pb3MvRWRpdG9ySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6Z2V0SW1hZ2UpOgorICAgICAg
ICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmdldEltYWdl
KToKKyAgICAgICAgKiBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmFwcGVuZFNlcnZlck1hcE1vdXNlUG9zaXRpb24pOgorICAgICAgICAqIGh0bWwvSFRNTEFy
ZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcmVhRWxlbWVudDo6c2V0Rm9j
dXMpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpzZXRCZXN0Rml0VVJMQW5kRFBSRnJvbUltYWdlQ2FuZGlk
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGVJbWFnZUNvbnRy
b2xzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmRlc3Ryb3lJbWFnZUNv
bnRyb2xzKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVyZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBo
dG1sL0ltYWdlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlSW5wdXRUeXBl
OjphbHRBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlSW5wdXRUeXBl
OjphdHRhY2gpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaXplKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9t
YWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckltYWdlQ29udHJvbHM6OnVwZGF0ZUxvZ2ljYWxXaWR0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbWFnZUNvbnRyb2xzOjpjb21wdXRlTG9naWNhbEhlaWdodCk6CisgICAgICAgICog
bG9hZGVyL0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpy
ZW5kZXJJbWFnZVJlc291cmNlKToKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbWFnZUZyb21JbWFnZUVsZW1lbnROb2RlKToKKyAg
ICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldENh
Y2hlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
Ojp3cml0ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmdldENhY2hlZEltYWdlKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRU
ZXN0UmVzdWx0OjppbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVySW1hZ2VSZXNvdXJjZTo6Z2V0SW1hZ2VTaXplKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyQmFja2luZzo6aXNEaXJlY3RseUNvbXBvc2l0ZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUltYWdlQ29udGVudHMpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZXBs
YWNlZDo6Y29tcHV0ZUFzcGVjdFJhdGlvSW5mb3JtYXRpb25Gb3JSZW5kZXJCb3gpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTaGFwZU91dHNpZGVJbmZvOjpjcmVhdGVTaGFwZUZvckltYWdlKToKKwogMjAxNC0xMC0x
MyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFJlbW92ZSB1bnVzZWQgc3RhbGUgUGFnZSBwcm90b2NvbCBtZXRob2RzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKaW5kZXggZWI3ZTVhNTU4YWI3MTYwYmY1ZWZjYTBhZGMxNGIwMjVhOTAyNTBmMi4u
NjA1MjA0MGRjZGJhNTRkYzZhOTU4N2M1M2M4ZWM4OWY1MGRiMDIyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDE0LTEwLTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgUmVuZGVySW1h
Z2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzY4
MworCisgICAgICAgIFJldmlld2VkIGJ5IE1paG5lYSBPdmlkZW5pZS4KKworICAgICAgICBVc2Ug
aXM8PigpIC8gZG93bmNhc3Q8PigpIGZvciBSZW5kZXJJbWFnZS4KKworICAgICAgICAqIE1pc2Mv
V2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tOgorICAgICAgICAoaW1hZ2VGcm9tRWxlbWVudCk6Cisg
ICAgICAgICgtW05TUGFzdGVib2FyZCBfd2ViX2RlY2xhcmVBbmRXcml0ZURyYWdJbWFnZUZvckVs
ZW1lbnQ6VVJMOnRpdGxlOmFyY2hpdmU6c291cmNlOl0pOgorCiAyMDE0LTEwLTEwICBEYW5pZWwg
QmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIGNsYXNz
ZXMgV2ViUmVuZGVye05vZGUsIExheWVyfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDg0OWY1MTMyMGQ0YTQ4YmQ0
MzM4OTA2ODdmYzUzNGViZTY3N2MzNDkuLmU1MWI4MjY0YjZkMTJlNWY3NDVjYWFhN2VmZWEzNzQ4
NDhkMzI1ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxOSBAQAogMjAxNC0xMC0xMyAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCisgICAgICAgIFVzZSBpczw+KCkgLyBkb3duY2Fz
dDw+KCkgZm9yIFJlbmRlckltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzc2ODMKKworICAgICAgICBSZXZpZXdlZCBieSBNaWhuZWEgT3ZpZGVu
aWUuCisKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgUmVuZGVySW1hZ2Uu
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpjYWNoZWRJbWFnZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpwZXJmb3JtQWN0aW9uT25FbGVtZW50KToKKworMjAxNC0xMC0xMyAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIFVzZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgZm9y
IFBsYXRmb3JtQ0FMYXllciBzdWJjbGFzc2VzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc2NjEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAppbmRleCAyOTBlNWJl
YjEyYzNlNTRiNTUzN2IwNzAxYmI3OWU4MmU1N2U2MzBiLi4wOTM3YzQwYTgzZDM2Nzg5YjQ4YzUx
Y2Y3MmMzZDQwMTMwNGNlOTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcApAQCAtMTI3OSw4ICsxMjc5LDgg
QEAgdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWx0ZXJuYXRpdmVUZXh0KFZlY3RvcjxB
Y2Nlc3NpYmlsaXR5VGV4dD4mIHRleHRPcmQKICAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nl
c3NpYmlsaXR5VGV4dChhcmlhTGFiZWwsIEFsdGVybmF0aXZlVGV4dCkpOwogICAgIAogICAgIGlm
ICh1c2VzQWx0VGFnRm9yVGV4dENvbXB1dGF0aW9uKCkpIHsKLSAgICAgICAgaWYgKHJlbmRlcmVy
KCkgJiYgcmVuZGVyZXIoKS0+aXNSZW5kZXJJbWFnZSgpKSB7Ci0gICAgICAgICAgICBTdHJpbmcg
cmVuZGVyQWx0VGV4dCA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSktPmFsdFRleHQoKTsKKyAg
ICAgICAgaWYgKGlzPFJlbmRlckltYWdlPihyZW5kZXJlcigpKSkgeworICAgICAgICAgICAgU3Ry
aW5nIHJlbmRlckFsdFRleHQgPSBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKnJlbmRlcmVyKCkpLmFs
dFRleHQoKTsKIAogICAgICAgICAgICAgLy8gUmVuZGVySW1hZ2Ugd2lsbCByZXR1cm4gdGl0bGUg
YXMgYSBmYWxsYmFjayBmcm9tIGFsdFRleHQsIGJ1dCB3ZSBkb24ndCB3YW50IHRpdGxlIGhlcmUg
YmVjYXVzZSB3ZSBjb25zaWRlciB0aGF0IGluIGhlbHBUZXh0LgogICAgICAgICAgICAgaWYgKCFy
ZW5kZXJBbHRUZXh0LmlzRW1wdHkoKSAmJiByZW5kZXJBbHRUZXh0ICE9IGdldEF0dHJpYnV0ZSh0
aXRsZUF0dHIpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCBjZGEyZWIxYmEzZmU5ZDQxMTQ2
NmQyNzk4YjM4Yjc4OWJmZWU1NGE3Li40MTA2YzNjODU4NWJlNjg0YjliZWY1ZmZjN2NlZjI0YmQ0
NTkxYjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTI3OTksMTAgKzI3OTksMTAgQEAgdm9p
ZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpjbGVhckNoaWxkcmVuKCkKIHZvaWQgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6YWRkSW1hZ2VNYXBDaGlsZHJlbigpCiB7CiAgICAgUmVuZGVy
Qm94TW9kZWxPYmplY3QqIGNzc0JveCA9IHJlbmRlckJveE1vZGVsT2JqZWN0KCk7Ci0gICAgaWYg
KCFjc3NCb3ggfHwgIWNzc0JveC0+aXNSZW5kZXJJbWFnZSgpKQorICAgIGlmICghaXM8UmVuZGVy
SW1hZ2U+KGNzc0JveCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBIVE1MTWFwRWxlbWVu
dCogbWFwID0gdG9SZW5kZXJJbWFnZShjc3NCb3gpLT5pbWFnZU1hcCgpOworICAgIEhUTUxNYXBF
bGVtZW50KiBtYXAgPSBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKmNzc0JveCkuaW1hZ2VNYXAoKTsK
ICAgICBpZiAoIW1hcCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yODU5LDEwICsyODU5LDEwIEBA
IHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZGV0YWNoUmVtb3RlU1ZHUm9vdCgpCiAK
IEFjY2Vzc2liaWxpdHlTVkdSb290KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpyZW1vdGVT
VkdSb290RWxlbWVudCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRl
cmVyLT5pc1JlbmRlckltYWdlKCkpCisgICAgaWYgKCFpczxSZW5kZXJJbWFnZT4obV9yZW5kZXJl
cikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIENhY2hlZEltYWdlKiBjYWNo
ZWRJbWFnZSA9IHRvUmVuZGVySW1hZ2UobV9yZW5kZXJlciktPmNhY2hlZEltYWdlKCk7CisgICAg
Q2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCptX3JlbmRl
cmVyKS5jYWNoZWRJbWFnZSgpOwogICAgIGlmICghY2FjaGVkSW1hZ2UpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET00ubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQppbmRleCAzMzcy
NTk0MTliNTlmZThkZTU4YzgwNGRkNGU1NWNjNWZiM2IwN2U3Li42ODJkZWM5YTdhNzM0N2E2M2Y1
NzFhMmM4ZThmMmU2MGI1MjU5ZmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9vYmpjL0RPTS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQpA
QCAtNjUxLDEyICs2NTEsMTIgQEAgLSAoTlNJbWFnZSopaW1hZ2UKIHsKICAgICAvLyBGSVhNRTog
Q291bGQgd2UgbW92ZSB0aGlzIGZ1bmN0aW9uIHRvIFdlYkNvcmU6Ok5vZGUgYW5kIGF1dG9nZW5l
cmF0ZT8KICAgICBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY29yZShzZWxmKS0+
cmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNSZW5kZXJJbWFn
ZSgpKQorICAgIGlmICghaXM8UmVuZGVySW1hZ2U+KHJlbmRlcmVyKSkKICAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICBXZWJDb3JlOjpDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSB0b1JlbmRlcklt
YWdlKHJlbmRlcmVyKS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBXZWJDb3JlOjpDYWNoZWRJbWFnZSog
Y2FjaGVkSW1hZ2UgPSBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKnJlbmRlcmVyKS5jYWNoZWRJbWFn
ZSgpOwogICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQo
KSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gY2FjaGVkSW1hZ2UtPmltYWdlRm9y
UmVuZGVyZXIodG9SZW5kZXJJbWFnZShyZW5kZXJlcikpLT5nZXROU0ltYWdlKCk7CisgICAgcmV0
dXJuIGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKS0+Z2V0TlNJbWFnZSgp
OwogfQogI2VuZGlmCiAKQEAgLTY4NywxMCArNjg3LDEwIEBAIC0gKENURm9udFJlZilfZm9udAog
LSAoTlNEYXRhICopX2ltYWdlVElGRlJlcHJlc2VudGF0aW9uCiB7CiAgICAgLy8gRklYTUU6IENv
dWxkIHdlIG1vdmUgdGhpcyBmdW5jdGlvbiB0byBXZWJDb3JlOjpFbGVtZW50IGFuZCBhdXRvZ2Vu
ZXJhdGU/Ci0gICAgYXV0byByZW5kZXJlciA9IGNvcmUoc2VsZiktPnJlbmRlcmVyKCk7Ci0gICAg
aWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzUmVuZGVySW1hZ2UoKSkKKyAgICBhdXRvKiBy
ZW5kZXJlciA9IGNvcmUoc2VsZiktPnJlbmRlcmVyKCk7CisgICAgaWYgKCFpczxSZW5kZXJJbWFn
ZT4ocmVuZGVyZXIpKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIFdlYkNvcmU6OkNhY2hlZElt
YWdlKiBjYWNoZWRJbWFnZSA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpLT5jYWNoZWRJbWFnZSgp
OworICAgIFdlYkNvcmU6OkNhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGRvd25jYXN0PFJlbmRl
ckltYWdlPigqcmVuZGVyZXIpLmNhY2hlZEltYWdlKCk7CiAgICAgaWYgKCFjYWNoZWRJbWFnZSB8
fCBjYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gbmlsOwogICAg
IHJldHVybiAoTlNEYXRhICopY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIp
LT5nZXRUSUZGUmVwcmVzZW50YXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJh
dG9yLmNwcAppbmRleCA5YzBkNjQ2OGVkNDlhYjFiM2YyNThjMTlmNjFmZjRlOGQ0YjZkMTY2Li5i
Mzg5ZjBmOTBmNmVmZTExMzQ4YWZmMzQ1ODVkM2I2YzA1OGM1ZjkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC03NjAsOCArNzYwLDggQEAgYm9vbCBUZXh0SXRl
cmF0b3I6OmhhbmRsZVJlcGxhY2VkRWxlbWVudCgpCiAgICAgbV9wb3NpdGlvblN0YXJ0T2Zmc2V0
ID0gMDsKICAgICBtX3Bvc2l0aW9uRW5kT2Zmc2V0ID0gMTsKIAotICAgIGlmICgobV9iZWhhdmlv
ciAmIFRleHRJdGVyYXRvckVtaXRzSW1hZ2VBbHRUZXh0KSAmJiByZW5kZXJlci5pc1JlbmRlcklt
YWdlKCkpIHsKLSAgICAgICAgU3RyaW5nIGFsdFRleHQgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVy
KS5hbHRUZXh0KCk7CisgICAgaWYgKChtX2JlaGF2aW9yICYgVGV4dEl0ZXJhdG9yRW1pdHNJbWFn
ZUFsdFRleHQpICYmIGlzPFJlbmRlckltYWdlPihyZW5kZXJlcikpIHsKKyAgICAgICAgU3RyaW5n
IGFsdFRleHQgPSBkb3duY2FzdDxSZW5kZXJJbWFnZT4ocmVuZGVyZXIpLmFsdFRleHQoKTsKICAg
ICAgICAgaWYgKHVuc2lnbmVkIGxlbmd0aCA9IGFsdFRleHQubGVuZ3RoKCkpIHsKICAgICAgICAg
ICAgIG1fbGFzdENoYXJhY3RlciA9IGFsdFRleHRbbGVuZ3RoIC0gMV07CiAgICAgICAgICAgICBt
X2NvcHlhYmxlVGV4dC5zZXQoV1RGOjptb3ZlKGFsdFRleHQpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCA0MjYxMmU0ZTlkYzBlNjFlYTA2
ZjgxMWZlMjg4NDhmNTc2ZmE2MWY1Li5iYjc2MGNjNzVkY2ZjYTkwOGQ2MjIzYWFkYzlmYTZkZmEz
MDM3OTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252
ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVy
Lm1tCkBAIC0yNTMxLDkgKzI1MzEsOSBAQCBzdGF0aWMgTlNGaWxlV3JhcHBlciAqZmlsZVdyYXBw
ZXJGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgICAgICAgICB3cmFwcGVyID0gZmls
ZVdyYXBwZXJGb3JVUkwobG9hZGVyLCBVUkwpOwogICAgIH0KICAgICBpZiAoIXdyYXBwZXIpIHsK
LSAgICAgICAgUmVuZGVySW1hZ2UqIHJlbmRlcmVyID0gdG9SZW5kZXJJbWFnZShlbGVtZW50LT5y
ZW5kZXJlcigpKTsKLSAgICAgICAgaWYgKHJlbmRlcmVyLT5jYWNoZWRJbWFnZSgpICYmICFyZW5k
ZXJlci0+Y2FjaGVkSW1hZ2UoKS0+ZXJyb3JPY2N1cnJlZCgpKSB7Ci0gICAgICAgICAgICB3cmFw
cGVyID0gW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6
KE5TRGF0YSAqKShyZW5kZXJlci0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5k
ZXJlciktPmdldFRJRkZSZXByZXNlbnRhdGlvbigpKV07CisgICAgICAgIGF1dG8mIHJlbmRlcmVy
ID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCplbGVtZW50LT5yZW5kZXJlcigpKTsKKyAgICAgICAg
aWYgKHJlbmRlcmVyLmNhY2hlZEltYWdlKCkgJiYgIXJlbmRlcmVyLmNhY2hlZEltYWdlKCktPmVy
cm9yT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgd3JhcHBlciA9IFtbTlNGaWxlV3JhcHBlciBh
bGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOihOU0RhdGEgKikocmVuZGVyZXIuY2Fj
aGVkSW1hZ2UoKS0+aW1hZ2VGb3JSZW5kZXJlcigmcmVuZGVyZXIpLT5nZXRUSUZGUmVwcmVzZW50
YXRpb24oKSldOwogICAgICAgICAgICAgW3dyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6QCJp
bWFnZS50aWZmIl07CiAgICAgICAgICAgICBbd3JhcHBlciBhdXRvcmVsZWFzZV07CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0VkaXRvckd0ay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9FZGl0b3JHdGsuY3BwCmluZGV4IGU3ZGMzMWNk
YmE2OTM2ZTNjNzkwMWU3ZTc1MzhkOGMzMGE5MGMxZDguLjgzYzQ5ZThiOTVhZWU4NDc0NjUzNjE4
NWE5Yjk1MTFiZTRmYjY5NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3Rr
L0VkaXRvckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvRWRpdG9yR3Rr
LmNwcApAQCAtOTMsMTEgKzkzLDExIEBAIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1l
bnRVUkwoRWxlbWVudCYgZWxlbWVudCkKIAogc3RhdGljIGJvb2wgZ2V0SW1hZ2VGb3JFbGVtZW50
KEVsZW1lbnQmIGVsZW1lbnQsIFJlZlB0cjxJbWFnZT4mIGltYWdlKQogewotICAgIGF1dG8gcmVu
ZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVy
ZXItPmlzUmVuZGVySW1hZ2UoKSkKKyAgICBhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVy
ZXIoKTsKKyAgICBpZiAoIWlzPFJlbmRlckltYWdlPihyZW5kZXJlcikpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHRvUmVuZGVySW1hZ2Uo
KnJlbmRlcmVyKS5jYWNoZWRJbWFnZSgpOworICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9
IGRvd25jYXN0PFJlbmRlckltYWdlPigqcmVuZGVyZXIpLmNhY2hlZEltYWdlKCk7CiAgICAgaWYg
KCFjYWNoZWRJbWFnZSB8fCBjYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0Vk
aXRvcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRl
eCBjNWU3ZmU0MmIzYzNhY2I1ZDFkNjdhMjkwMzgzMWU3NTMyMzVjYjFlLi5iOGIwZmM1NjY2OGZi
ODk4ZTlmNzNlMjRjMDE5MjdjN2FiN2FiNGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3Mv
RWRpdG9ySU9TLm1tCkBAIC0zNTcsMTUgKzM1NywxMyBAQCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxl
Y3Rpb25Ub1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCkKIAogc3RhdGljIHZvaWQg
Z2V0SW1hZ2UoRWxlbWVudCYgaW1hZ2VFbGVtZW50LCBSZWZQdHI8SW1hZ2U+JiBpbWFnZSwgQ2Fj
aGVkSW1hZ2UqJiBjYWNoZWRJbWFnZSkKIHsKLSAgICBhdXRvIHJlbmRlcmVyID0gaW1hZ2VFbGVt
ZW50LnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzUmVuZGVy
SW1hZ2UoKSkKKyAgICBhdXRvKiByZW5kZXJlciA9IGltYWdlRWxlbWVudC5yZW5kZXJlcigpOwor
ICAgIGlmICghaXM8UmVuZGVySW1hZ2U+KHJlbmRlcmVyKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgQ2FjaGVkSW1hZ2UqIHRlbnRhdGl2ZUNhY2hlZEltYWdlID0gdG9SZW5kZXJJbWFnZShyZW5k
ZXJlciktPmNhY2hlZEltYWdlKCk7Ci0gICAgaWYgKCF0ZW50YXRpdmVDYWNoZWRJbWFnZSB8fCB0
ZW50YXRpdmVDYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpKSB7Ci0gICAgICAgIHRlbnRhdGl2
ZUNhY2hlZEltYWdlID0gMDsKKyAgICBDYWNoZWRJbWFnZSogdGVudGF0aXZlQ2FjaGVkSW1hZ2Ug
PSBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKnJlbmRlcmVyKS5jYWNoZWRJbWFnZSgpOworICAgIGlm
ICghdGVudGF0aXZlQ2FjaGVkSW1hZ2UgfHwgdGVudGF0aXZlQ2FjaGVkSW1hZ2UtPmVycm9yT2Nj
dXJyZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGltYWdlID0gdGVudGF0aXZl
Q2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwogICAgIGlmICghaW1hZ2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggNjQ1OGJiNzE3YzJi
NzkyNTE1MGE3MjE3YTA1NTI5ZmM5MGViODU1NC4uMTgwYTRmMGM3ZjE3ZDgzM2JlZGJlYTA5NmY4
NzQ4NGRjMDFlOWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRp
dG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpA
QCAtNDAxLDE1ICs0MDEsMTMgQEAgdm9pZCBFZGl0b3I6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQpCiAKIHN0YXRpYyB2b2lkIGdldEltYWdlKEVsZW1l
bnQmIGltYWdlRWxlbWVudCwgUmVmUHRyPEltYWdlPiYgaW1hZ2UsIENhY2hlZEltYWdlKiYgY2Fj
aGVkSW1hZ2UpCiB7Ci0gICAgYXV0byByZW5kZXJlciA9IGltYWdlRWxlbWVudC5yZW5kZXJlcigp
OwotICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5pc1JlbmRlckltYWdlKCkpCisgICAg
YXV0byogcmVuZGVyZXIgPSBpbWFnZUVsZW1lbnQucmVuZGVyZXIoKTsKKyAgICBpZiAoIWlzPFJl
bmRlckltYWdlPihyZW5kZXJlcikpCiAgICAgICAgIHJldHVybjsKIAotICAgIENhY2hlZEltYWdl
KiB0ZW50YXRpdmVDYWNoZWRJbWFnZSA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpLT5jYWNoZWRJ
bWFnZSgpOwotICAgIGlmICghdGVudGF0aXZlQ2FjaGVkSW1hZ2UgfHwgdGVudGF0aXZlQ2FjaGVk
SW1hZ2UtPmVycm9yT2NjdXJyZWQoKSkgewotICAgICAgICB0ZW50YXRpdmVDYWNoZWRJbWFnZSA9
IDA7CisgICAgQ2FjaGVkSW1hZ2UqIHRlbnRhdGl2ZUNhY2hlZEltYWdlID0gZG93bmNhc3Q8UmVu
ZGVySW1hZ2U+KCpyZW5kZXJlcikuY2FjaGVkSW1hZ2UoKTsKKyAgICBpZiAoIXRlbnRhdGl2ZUNh
Y2hlZEltYWdlIHx8IHRlbnRhdGl2ZUNhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICB9CiAKICAgICBpbWFnZSA9IHRlbnRhdGl2ZUNhY2hlZEltYWdlLT5p
bWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKICAgICBpZiAoIWltYWdlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAppbmRleCA5YTE1MzMwYTk5ZGRhMTNhYTMyM2I3
MzVjNDNmZDQ0YmUzZmU3MzVmLi4yMWUxMzkzYjM4OWUyMDkyNGQwMTRkNjEzMjEwYmYzYjE0NWQy
MjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcApAQCAtMTY2
LDkgKzE2Niw5IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFNlcnZlck1hcE1vdXNlUG9zaXRpb24oU3Ry
aW5nQnVpbGRlciYgdXJsLCBFdmVudCogZXZlbnQpCiAgICAgaWYgKCFpbWFnZUVsZW1lbnQuaXNT
ZXJ2ZXJNYXAoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFpbWFnZUVsZW1lbnQucmVu
ZGVyZXIoKSB8fCAhaW1hZ2VFbGVtZW50LnJlbmRlcmVyKCktPmlzUmVuZGVySW1hZ2UoKSkKKyAg
ICBpZiAoIWlzPFJlbmRlckltYWdlPihpbWFnZUVsZW1lbnQucmVuZGVyZXIoKSkpCiAgICAgICAg
IHJldHVybjsKLSAgICBSZW5kZXJJbWFnZSYgcmVuZGVyZXIgPSB0b1JlbmRlckltYWdlKCppbWFn
ZUVsZW1lbnQucmVuZGVyZXIoKSk7CisgICAgYXV0byYgcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5k
ZXJJbWFnZT4oKmltYWdlRWxlbWVudC5yZW5kZXJlcigpKTsKIAogICAgIC8vIEZJWE1FOiBUaGlz
IHNob3VsZCBwcm9iYWJseSBwYXNzIHRydWUgZm9yIHVzZVRyYW5zZm9ybXMuCiAgICAgRmxvYXRQ
b2ludCBhYnNvbHV0ZVBvc2l0aW9uID0gcmVuZGVyZXIuYWJzb2x1dGVUb0xvY2FsKEZsb2F0UG9p
bnQoZG93bmNhc3Q8TW91c2VFdmVudD4oKmV2ZW50KS5wYWdlWCgpLCBkb3duY2FzdDxNb3VzZUV2
ZW50PigqZXZlbnQpLnBhZ2VZKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50
LmNwcAppbmRleCAyMGJlZjI4MjBhNGIxZGU2ZTcwMDI2NWViMzM1OWRmMmE1MDczNTNkLi5jYTdk
ZWM1OTA1YWFlMDczYzg2NjA2Mzk0MWIxMzIyZWRmNzViNjAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXJlYUVsZW1lbnQuY3BwCkBAIC0yMTgsMTEgKzIxOCwxMSBAQCB2b2lkIEhUTUxBcmVh
RWxlbWVudDo6c2V0Rm9jdXMoYm9vbCBzaG91bGRCZUZvY3VzZWQpCiAgICAgaWYgKCFpbWFnZUVs
ZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcmVuZGVyZXIgPSBpbWFnZUVsZW1l
bnQtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzUmVuZGVy
SW1hZ2UoKSkKKyAgICBhdXRvKiByZW5kZXJlciA9IGltYWdlRWxlbWVudC0+cmVuZGVyZXIoKTsK
KyAgICBpZiAoIWlzPFJlbmRlckltYWdlPihyZW5kZXJlcikpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpLT5hcmVhRWxlbWVudEZvY3VzQ2hhbmdlZCh0aGlz
KTsKKyAgICBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKnJlbmRlcmVyKS5hcmVhRWxlbWVudEZvY3Vz
Q2hhbmdlZCh0aGlzKTsKIH0KICAgICAKIHZvaWQgSFRNTEFyZWFFbGVtZW50Ojp1cGRhdGVGb2N1
c0FwcGVhcmFuY2UoYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCAzMmZiN2RjMWQ5YTNlNmJiMTliNjRjODc1
MjQzMDAzZGU0NDc0NWYxLi5kMzA5ZjBlODY4ODhjMGZkYzEwMzA3YWJjMDYyN2ZjYTVlYzFhM2Y2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTEzMywxNSAr
MTMzLDE1IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6c2V0QmVzdEZpdFVSTEFuZERQUkZyb21J
bWFnZUNhbmRpZGF0ZShjb25zdCBJbWFnZUNhbmRpZGF0CiAjZW5kaWYKICAgICBpZiAoY2FuZGlk
YXRlLmRlbnNpdHkgPj0gMCkKICAgICAgICAgbV9pbWFnZURldmljZVBpeGVsUmF0aW8gPSAxIC8g
Y2FuZGlkYXRlLmRlbnNpdHk7Ci0gICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+aXNJ
bWFnZSgpKQotICAgICAgICB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpLT5zZXRJbWFnZURldmlj
ZVBpeGVsUmF0aW8obV9pbWFnZURldmljZVBpeGVsUmF0aW8pOworICAgIGlmIChpczxSZW5kZXJJ
bWFnZT4ocmVuZGVyZXIoKSkpCisgICAgICAgIGRvd25jYXN0PFJlbmRlckltYWdlPigqcmVuZGVy
ZXIoKSkuc2V0SW1hZ2VEZXZpY2VQaXhlbFJhdGlvKG1faW1hZ2VEZXZpY2VQaXhlbFJhdGlvKTsK
IH0KIAogdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1l
ID09IGFsdEF0dHIpIHsKLSAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+aXNS
ZW5kZXJJbWFnZSgpKQotICAgICAgICAgICAgdG9SZW5kZXJJbWFnZShyZW5kZXJlcigpKS0+dXBk
YXRlQWx0VGV4dCgpOworICAgICAgICBpZiAoaXM8UmVuZGVySW1hZ2U+KHJlbmRlcmVyKCkpKQor
ICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCpyZW5kZXJlcigpKS51cGRhdGVBbHRU
ZXh0KCk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IHNyY0F0dHIgfHwgbmFtZSA9PSBzcmNzZXRB
dHRyKSB7CiAgICAgICAgIHVuc2lnbmVkIHNvdXJjZVNpemUgPSAwOwogI2lmIEVOQUJMRShQSUNU
VVJFX1NJWkVTKQpAQCAtMjI3LDcgKzIyNyw3IEBAIGJvb2wgSFRNTEltYWdlRWxlbWVudDo6Y2Fu
U3RhcnRTZWxlY3Rpb24oKSBjb25zdAogCiB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmRpZEF0dGFj
aFJlbmRlcmVycygpCiB7Ci0gICAgaWYgKCFyZW5kZXJlcigpIHx8ICFyZW5kZXJlcigpLT5pc1Jl
bmRlckltYWdlKCkpCisgICAgaWYgKCFpczxSZW5kZXJJbWFnZT4ocmVuZGVyZXIoKSkpCiAgICAg
ICAgIHJldHVybjsKICAgICBpZiAobV9pbWFnZUxvYWRlci5oYXNQZW5kaW5nQmVmb3JlTG9hZEV2
ZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIzNiw4ICsyMzYsOCBAQCB2b2lkIEhUTUxJbWFn
ZUVsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVycygpCiAgICAgdXBkYXRlSW1hZ2VDb250cm9scygp
OwogI2VuZGlmCiAKLSAgICBSZW5kZXJJbWFnZSogcmVuZGVySW1hZ2UgPSB0b1JlbmRlckltYWdl
KHJlbmRlcmVyKCkpOwotICAgIFJlbmRlckltYWdlUmVzb3VyY2UmIHJlbmRlckltYWdlUmVzb3Vy
Y2UgPSByZW5kZXJJbWFnZS0+aW1hZ2VSZXNvdXJjZSgpOworICAgIGF1dG8mIHJlbmRlckltYWdl
ID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCpyZW5kZXJlcigpKTsKKyAgICBSZW5kZXJJbWFnZVJl
c291cmNlJiByZW5kZXJJbWFnZVJlc291cmNlID0gcmVuZGVySW1hZ2UuaW1hZ2VSZXNvdXJjZSgp
OwogICAgIGlmIChyZW5kZXJJbWFnZVJlc291cmNlLmhhc0ltYWdlKCkpCiAgICAgICAgIHJldHVy
bjsKICAgICByZW5kZXJJbWFnZVJlc291cmNlLnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2FkZXIu
aW1hZ2UoKSk7CkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpkaWRB
dHRhY2hSZW5kZXJlcnMoKQogICAgIC8vIElmIHdlIGhhdmUgbm8gaW1hZ2UgYXQgYWxsIGJlY2F1
c2Ugd2UgaGF2ZSBubyBzcmMgYXR0cmlidXRlLCBzZXQKICAgICAvLyBpbWFnZSBoZWlnaHQgYW5k
IHdpZHRoIGZvciB0aGUgYWx0IHRleHQgaW5zdGVhZC4KICAgICBpZiAoIW1faW1hZ2VMb2FkZXIu
aW1hZ2UoKSAmJiAhcmVuZGVySW1hZ2VSZXNvdXJjZS5jYWNoZWRJbWFnZSgpKQotICAgICAgICBy
ZW5kZXJJbWFnZS0+c2V0SW1hZ2VTaXplRm9yQWx0VGV4dCgpOworICAgICAgICByZW5kZXJJbWFn
ZS5zZXRJbWFnZVNpemVGb3JBbHRUZXh0KCk7CiB9CiAKIE5vZGU6Okluc2VydGlvbk5vdGlmaWNh
dGlvblJlcXVlc3QgSFRNTEltYWdlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUm
IGluc2VydGlvblBvaW50KQpAQCAtNTA3LDExICs1MDcsMTEgQEAgdm9pZCBIVE1MSW1hZ2VFbGVt
ZW50OjpjcmVhdGVJbWFnZUNvbnRyb2xzKCkKIAogICAgIGVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jv
b3QoKS5hcHBlbmRDaGlsZChpbWFnZUNvbnRyb2xzKTsKIAotICAgIFJlbmRlck9iamVjdCogcmVu
ZGVyT2JqZWN0ID0gcmVuZGVyZXIoKTsKKyAgICBhdXRvKiByZW5kZXJPYmplY3QgPSByZW5kZXJl
cigpOwogICAgIGlmICghcmVuZGVyT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICB0b1Jl
bmRlckltYWdlKHJlbmRlck9iamVjdCktPnNldEhhc1NoYWRvd0NvbnRyb2xzKHRydWUpOworICAg
IGRvd25jYXN0PFJlbmRlckltYWdlPigqcmVuZGVyT2JqZWN0KS5zZXRIYXNTaGFkb3dDb250cm9s
cyh0cnVlKTsKIH0KIAogdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpkZXN0cm95SW1hZ2VDb250cm9s
cygpCkBAIC01MjUsMTEgKzUyNSwxMSBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmRlc3Ryb3lJ
bWFnZUNvbnRyb2xzKCkKICAgICAgICAgc2hhZG93Um9vdC0+cmVtb3ZlQ2hpbGQobm9kZSk7CiAg
ICAgfQogCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QgPSByZW5kZXJlcigpOworICAg
IGF1dG8qIHJlbmRlck9iamVjdCA9IHJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJPYmplY3Qp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHRvUmVuZGVySW1hZ2UocmVuZGVyT2JqZWN0KS0+c2V0
SGFzU2hhZG93Q29udHJvbHMoZmFsc2UpOworICAgIGRvd25jYXN0PFJlbmRlckltYWdlPigqcmVu
ZGVyT2JqZWN0KS5zZXRIYXNTaGFkb3dDb250cm9scyhmYWxzZSk7CiB9CiAKIGJvb2wgSFRNTElt
YWdlRWxlbWVudDo6aGFzSW1hZ2VDb250cm9scygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCAzODU1NzVhNGVkNTUzMjAzYTk0Mzk2Y2EwODFjYTA4
NGJjZDA4ZTYzLi43MWIwMDUxZmE4NmVkN2Q0NjY3MWY2Mjc4MDM0M2ZiZWQ0NDJlNzQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTgyLDcgKzgyLDcgQEAg
dm9pZCBIVE1MVmlkZW9FbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJlcnMoKQogICAgICAgICAgICAg
bV9pbWFnZUxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7
CiAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7CiAgICAgICAgIGlm
IChyZW5kZXJlcigpKQotICAgICAgICAgICAgdG9SZW5kZXJJbWFnZShyZW5kZXJlcigpKS0+aW1h
Z2VSZXNvdXJjZSgpLnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2FkZXItPmltYWdlKCkpOworICAg
ICAgICAgICAgZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCpyZW5kZXJlcigpKS5pbWFnZVJlc291cmNl
KCkuc2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci0+aW1hZ2UoKSk7CiAgICAgfQogfQogCkBA
IC0xMTYsNyArMTE2LDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHIKICAgICAgICAgICAgIG1f
aW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50SWdub3JpbmdQcmV2aW91c0Vycm9yKCk7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIoKSkKLSAgICAgICAgICAg
ICAgICB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpLT5pbWFnZVJlc291cmNlKCkuc2V0Q2FjaGVk
SW1hZ2UoMCk7CisgICAgICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCpyZW5kZXJl
cigpKS5pbWFnZVJlc291cmNlKCkuc2V0Q2FjaGVkSW1hZ2UobnVsbHB0cik7CiAgICAgICAgIH0K
ICAgICB9CiAjaWYgRU5BQkxFKElPU19BSVJQTEFZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5w
dXRUeXBlLmNwcAppbmRleCAyODlhOWVkMjVlYWNjNDJhZGZhOTBkZDA4OGRmNzllODM0OGI3YzY4
Li5hYjE1MmRjNjRmNTE4NGM1MzQxYzMzNDg3ODg0YmEyY2E3ODNmNzg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcApAQCAtMTA4LDEwICsxMDgsMTAgQEAgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IEltYWdlSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKFBhc3NS
ZWY8UmVuZGVyU3R5bGUKIAogdm9pZCBJbWFnZUlucHV0VHlwZTo6YWx0QXR0cmlidXRlQ2hhbmdl
ZCgpCiB7Ci0gICAgUmVuZGVySW1hZ2UqIGltYWdlID0gdG9SZW5kZXJJbWFnZShlbGVtZW50KCku
cmVuZGVyZXIoKSk7Ci0gICAgaWYgKCFpbWFnZSkKKyAgICBhdXRvKiByZW5kZXJlciA9IGRvd25j
YXN0PFJlbmRlckltYWdlPihlbGVtZW50KCkucmVuZGVyZXIoKSk7CisgICAgaWYgKCFyZW5kZXJl
cikKICAgICAgICAgcmV0dXJuOwotICAgIGltYWdlLT51cGRhdGVBbHRUZXh0KCk7CisgICAgcmVu
ZGVyZXItPnVwZGF0ZUFsdFRleHQoKTsKIH0KIAogdm9pZCBJbWFnZUlucHV0VHlwZTo6c3JjQXR0
cmlidXRlQ2hhbmdlZCgpCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBJbWFnZUlucHV0VHlwZTo6
YXR0YWNoKCkKICAgICBIVE1MSW1hZ2VMb2FkZXIqIGltYWdlTG9hZGVyID0gZWxlbWVudCgpLmlt
YWdlTG9hZGVyKCk7CiAgICAgaW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7CiAKLSAg
ICBSZW5kZXJJbWFnZSogcmVuZGVyZXIgPSB0b1JlbmRlckltYWdlKGVsZW1lbnQoKS5yZW5kZXJl
cigpKTsKKyAgICBhdXRvKiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckltYWdlPihlbGVtZW50
KCkucmVuZGVyZXIoKSk7CiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNwcAppbmRleCA0YzIzYWI2ZjhkNWNkYzA3ODEwNjA3OWM0NjA5NWI3ZTdlYzA1MTcy
Li5mNzg1OTkyMzE0OTQ1ZDk3NGUxZmUxZWI2NGRkZWViZDZjMWIxNjU4IDEwMDc1NQotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAKQEAgLTEyODIsOCArMTI4Miw4IEBAIHN0YXRpYyBMYXlvdXRTaXplIHNpemUoSFRNTEltYWdl
RWxlbWVudCogaW1hZ2UsIEltYWdlU2l6ZVR5cGUgc2l6ZVR5cGUpCiAgICAgaWYgKENhY2hlZElt
YWdlKiBjYWNoZWRJbWFnZSA9IGltYWdlLT5jYWNoZWRJbWFnZSgpKSB7CiAgICAgICAgIHNpemUg
PSBjYWNoZWRJbWFnZS0+aW1hZ2VTaXplRm9yUmVuZGVyZXIoaW1hZ2UtPnJlbmRlcmVyKCksIDEu
MGYpOyAvLyBGSVhNRTogTm90IHN1cmUgYWJvdXQgdGhpcy4KIAotICAgICAgICBpZiAoc2l6ZVR5
cGUgPT0gSW1hZ2VTaXplQWZ0ZXJEZXZpY2VQaXhlbFJhdGlvICYmIGltYWdlLT5yZW5kZXJlcigp
ICYmIGltYWdlLT5yZW5kZXJlcigpLT5pc1JlbmRlckltYWdlKCkgJiYgY2FjaGVkSW1hZ2UtPmlt
YWdlKCkgJiYgIWNhY2hlZEltYWdlLT5pbWFnZSgpLT5oYXNSZWxhdGl2ZVdpZHRoKCkpCi0gICAg
ICAgICAgICBzaXplLnNjYWxlKHRvUmVuZGVySW1hZ2UoaW1hZ2UtPnJlbmRlcmVyKCkpLT5pbWFn
ZURldmljZVBpeGVsUmF0aW8oKSk7CisgICAgICAgIGlmIChzaXplVHlwZSA9PSBJbWFnZVNpemVB
ZnRlckRldmljZVBpeGVsUmF0aW8gJiYgaXM8UmVuZGVySW1hZ2U+KGltYWdlLT5yZW5kZXJlcigp
KSAmJiBjYWNoZWRJbWFnZS0+aW1hZ2UoKSAmJiAhY2FjaGVkSW1hZ2UtPmltYWdlKCktPmhhc1Jl
bGF0aXZlV2lkdGgoKSkKKyAgICAgICAgICAgIHNpemUuc2NhbGUoZG93bmNhc3Q8UmVuZGVySW1h
Z2U+KCppbWFnZS0+cmVuZGVyZXIoKSkuaW1hZ2VEZXZpY2VQaXhlbFJhdGlvKCkpOwogICAgIH0K
ICAgICByZXR1cm4gc2l6ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5jcHAKaW5kZXggMTBi
ZjFhYjQ5N2QyNTAwOTg1ZDg5OGViYzRhNWQ2MTc3ZGRlYjRlNC4uZDk2NDgxMzgyYmUxYjJlMWVl
MzBhOGI1NTk2M2Q5ZjZmMWUxNmI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5jcHAKQEAg
LTYzLDEwICs2MywxMCBAQCB2b2lkIFJlbmRlckltYWdlQ29udHJvbHM6OnVwZGF0ZUxvZ2ljYWxX
aWR0aCgpCiAgICAgUmVuZGVyQm94Ojp1cGRhdGVMb2dpY2FsV2lkdGgoKTsKIAogICAgIFJlbmRl
ckVsZW1lbnQqIHJlbmRlcmVyID0gZWxlbWVudCgpLT5zaGFkb3dIb3N0KCktPnJlbmRlcmVyKCk7
Ci0gICAgaWYgKCFyZW5kZXJlci0+aXNSZW5kZXJJbWFnZSgpKQorICAgIGlmICghaXM8UmVuZGVy
SW1hZ2U+KCpyZW5kZXJlcikpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNldExvZ2ljYWxXaWR0
aCh0b1JlbmRlckltYWdlKHJlbmRlcmVyKS0+bG9naWNhbFdpZHRoKCkpOworICAgIHNldExvZ2lj
YWxXaWR0aChkb3duY2FzdDxSZW5kZXJJbWFnZT4oKnJlbmRlcmVyKS5sb2dpY2FsV2lkdGgoKSk7
CiB9CiAKIHZvaWQgUmVuZGVySW1hZ2VDb250cm9sczo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5
b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExvZ2ljYWxFeHRl
bnRDb21wdXRlZFZhbHVlcyYgY29tcHV0ZWRWYWx1ZXMpIGNvbnN0CkBAIC03NCwxMCArNzQsMTAg
QEAgdm9pZCBSZW5kZXJJbWFnZUNvbnRyb2xzOjpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRV
bml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFUKICAgICBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2Fs
SGVpZ2h0KGxvZ2ljYWxIZWlnaHQsIGxvZ2ljYWxUb3AsIGNvbXB1dGVkVmFsdWVzKTsKIAogICAg
IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gZWxlbWVudCgpLT5zaGFkb3dIb3N0KCktPnJlbmRl
cmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlci0+aXNSZW5kZXJJbWFnZSgpKQorICAgIGlmICghaXM8
UmVuZGVySW1hZ2U+KCpyZW5kZXJlcikpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbXB1dGVk
VmFsdWVzLm1fZXh0ZW50ID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlciktPmxvZ2ljYWxIZWlnaHQo
KTsKKyAgICBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCA9IGRvd25jYXN0PFJlbmRlckltYWdlPigq
cmVuZGVyZXIpLmxvZ2ljYWxIZWlnaHQoKTsKIH0KIAogUGFzc1JlZlB0cjxJbWFnZUNvbnRyb2xz
Um9vdEVsZW1lbnQ+IEltYWdlQ29udHJvbHNSb290RWxlbWVudDo6bWF5YmVDcmVhdGUoRG9jdW1l
bnQmIGRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKaW5kZXggZjhm
NGY0M2MyNzEwNWVhMjZlNjJjNzc5MGRhYjNiZjU4MGJhZjM0MC4uMGYwNjc3NDJlNGZjNjkyN2M2
NzliNDg5NmUzMDBiNTg2MzdhZWIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ltYWdlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIu
Y3BwCkBAIC0zMTcsMjEgKzMxNywyMSBAQCB2b2lkIEltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hl
ZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAKIFJlbmRlckltYWdlUmVzb3VyY2UqIEltYWdl
TG9hZGVyOjpyZW5kZXJJbWFnZVJlc291cmNlKCkKIHsKLSAgICBhdXRvIHJlbmRlcmVyID0gZWxl
bWVudCgpLnJlbmRlcmVyKCk7CisgICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50KCkucmVuZGVy
ZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IC8vIFdlIGRvbid0IHJldHVybiBzdHlsZSBnZW5lcmF0ZWQgaW1hZ2UgYmVjYXVzZSBpdCBkb2Vz
bid0IGJlbG9uZyB0byB0aGUgSW1hZ2VMb2FkZXIuCiAgICAgLy8gU2VlIDxodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI4NDA+Ci0gICAgaWYgKHJlbmRlcmVyLT5pc1Jl
bmRlckltYWdlKCkgJiYgIXRvUmVuZGVySW1hZ2UoKnJlbmRlcmVyKS5pc0dlbmVyYXRlZENvbnRl
bnQoKSkKLSAgICAgICAgcmV0dXJuICZ0b1JlbmRlckltYWdlKCpyZW5kZXJlcikuaW1hZ2VSZXNv
dXJjZSgpOworICAgIGlmIChpczxSZW5kZXJJbWFnZT4oKnJlbmRlcmVyKSAmJiAhZG93bmNhc3Q8
UmVuZGVySW1hZ2U+KCpyZW5kZXJlcikuaXNHZW5lcmF0ZWRDb250ZW50KCkpCisgICAgICAgIHJl
dHVybiAmZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCpyZW5kZXJlcikuaW1hZ2VSZXNvdXJjZSgpOwog
Ci0gICAgaWYgKHJlbmRlcmVyLT5pc1NWR0ltYWdlKCkpCi0gICAgICAgIHJldHVybiAmdG9SZW5k
ZXJTVkdJbWFnZShyZW5kZXJlciktPmltYWdlUmVzb3VyY2UoKTsKKyAgICBpZiAoaXM8UmVuZGVy
U1ZHSW1hZ2U+KCpyZW5kZXJlcikpCisgICAgICAgIHJldHVybiAmZG93bmNhc3Q8UmVuZGVyU1ZH
SW1hZ2U+KCpyZW5kZXJlcikuaW1hZ2VSZXNvdXJjZSgpOwogCiAjaWYgRU5BQkxFKFZJREVPKQot
ICAgIGlmIChyZW5kZXJlci0+aXNWaWRlbygpKQotICAgICAgICByZXR1cm4gJnRvUmVuZGVyVmlk
ZW8oKnJlbmRlcmVyKS5pbWFnZVJlc291cmNlKCk7CisgICAgaWYgKGlzPFJlbmRlclZpZGVvPigq
cmVuZGVyZXIpKQorICAgICAgICByZXR1cm4gJmRvd25jYXN0PFJlbmRlclZpZGVvPigqcmVuZGVy
ZXIpLmltYWdlUmVzb3VyY2UoKTsKICNlbmRpZgogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggMTk0ZjQ0
ZDY4YTFmYjYzNWQzMDExMzNkN2JiNDNiZmFiNTc5Nzk3ZC4uMjJlZTY2MmQwYTQwYjk0YzE1NzM1
YWRiMTBmYzk1NTVkMDRjY2U5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1l
bnVDb250cm9sbGVyLmNwcApAQCAtMTM0LDExICsxMzQsOSBAQCB2b2lkIENvbnRleHRNZW51Q29u
dHJvbGxlcjo6c2hvd0NvbnRleHRNZW51KEV2ZW50KiBldmVudCwgUGFzc1JlZlB0cjxDb250ZXh0
TWVudQogc3RhdGljIEltYWdlKiBpbWFnZUZyb21JbWFnZUVsZW1lbnROb2RlKE5vZGUmIG5vZGUp
CiB7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUucmVuZGVyZXIoKTsKLSAgICBp
ZiAoIXJlbmRlcmVyKQorICAgIGlmICghaXM8UmVuZGVySW1hZ2U+KHJlbmRlcmVyKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCFyZW5kZXJlci0+aXNSZW5kZXJJbWFnZSgpKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBDYWNoZWRJbWFnZSogaW1hZ2UgPSB0b1JlbmRl
ckltYWdlKCpyZW5kZXJlcikuY2FjaGVkSW1hZ2UoKTsKKyAgICBDYWNoZWRJbWFnZSogaW1hZ2Ug
PSBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKnJlbmRlcmVyKS5jYWNoZWRJbWFnZSgpOwogICAgIGlm
ICghaW1hZ2UgfHwgaW1hZ2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggZWYzOTRmYmI2
YTkwNDExZjkyMDYxNjUxMDNjZDg4YjZlZDhhNmEwMi4uNTMxNDgzZGQ4MzVlOGVlNWZkNjMyYTc1
MjkyZjMxY2FmM2MwMzQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAK
QEAgLTY2MCwxMCArNjYwLDEwIEBAIEVsZW1lbnQqIERyYWdDb250cm9sbGVyOjpkcmFnZ2FibGVF
bGVtZW50KGNvbnN0IEZyYW1lKiBzb3VyY2VGcmFtZSwgRWxlbWVudCogc3RhCiBzdGF0aWMgQ2Fj
aGVkSW1hZ2UqIGdldENhY2hlZEltYWdlKEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVy
IHx8ICFyZW5kZXJlci0+aXNSZW5kZXJJbWFnZSgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICBS
ZW5kZXJJbWFnZSogaW1hZ2UgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKTsKLSAgICByZXR1cm4g
aW1hZ2UtPmNhY2hlZEltYWdlKCk7CisgICAgaWYgKCFpczxSZW5kZXJJbWFnZT4ocmVuZGVyZXIp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvJiBpbWFnZSA9IGRvd25jYXN0PFJl
bmRlckltYWdlPigqcmVuZGVyZXIpOworICAgIHJldHVybiBpbWFnZS5jYWNoZWRJbWFnZSgpOwog
fQogCiBzdGF0aWMgSW1hZ2UqIGdldEltYWdlKEVsZW1lbnQmIGVsZW1lbnQpCkBAIC02NzMsNyAr
NjczLDcgQEAgc3RhdGljIEltYWdlKiBnZXRJbWFnZShFbGVtZW50JiBlbGVtZW50KQogICAgIC8v
IFVzZXJzIG9mIGdldEltYWdlKCkgd2FudCBhY2Nlc3MgdG8gdGhlIFNWR0ltYWdlLCBpbiBvcmRl
ciB0byBmaWd1cmUgb3V0IHRoZSBmaWxlbmFtZSBleHRlbnNpb25zLAogICAgIC8vIHdoaWNoIHdv
dWxkIGJlIGVtcHR5IHdoZW4gYXNraW5nIHRoZSBjYWNoZWQgQml0bWFwSW1hZ2VzLgogICAgIHJl
dHVybiAoY2FjaGVkSW1hZ2UgJiYgIWNhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpID8KLSAg
ICAgICAgY2FjaGVkSW1hZ2UtPmltYWdlKCkgOiAwOworICAgICAgICBjYWNoZWRJbWFnZS0+aW1h
Z2UoKSA6IG51bGxwdHI7CiB9CiAKIHN0YXRpYyB2b2lkIHNlbGVjdEVsZW1lbnQoRWxlbWVudCYg
ZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNw
cAppbmRleCBjMmEwNzVjMTBhYzcwM2EzY2EwYWQxYWIxMDRkMzBkMDAzZGIwMjcyLi43YWVlMTQx
MTNjNGM3ZjY5MDI1MDRkODE1ZDEyMGRmNTZiNGY0YTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC03MjMsMTQgKzcyMywxNCBAQCB2b2lk
IFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRVUkwpCiAK
IHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmKQogewotICAgIGlmICghKGVsZW1lbnQucmVuZGVyZXIoKSAmJiBlbGVt
ZW50LnJlbmRlcmVyKCktPmlzUmVuZGVySW1hZ2UoKSkpCisgICAgaWYgKCFpczxSZW5kZXJJbWFn
ZT4oZWxlbWVudC5yZW5kZXJlcigpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVuZGVySW1h
Z2UqIHJlbmRlcmVyID0gdG9SZW5kZXJJbWFnZShlbGVtZW50LnJlbmRlcmVyKCkpOwotICAgIENh
Y2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHJlbmRlcmVyLT5jYWNoZWRJbWFnZSgpOworICAgIGF1
dG8mIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCplbGVtZW50LnJlbmRlcmVyKCkp
OworICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHJlbmRlcmVyLmNhY2hlZEltYWdlKCk7
CiAgICAgaWYgKCFjYWNoZWRJbWFnZSB8fCBjYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpKQog
ICAgICAgICByZXR1cm47Ci0gICAgSW1hZ2UqIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlRm9y
UmVuZGVyZXIocmVuZGVyZXIpOworICAgIEltYWdlKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFn
ZUZvclJlbmRlcmVyKCZyZW5kZXJlcik7CiAgICAgQVNTRVJUKGltYWdlKTsKIAogICAgIGNsZWFy
KCk7CkBAIC04NTksMTQgKzg1OSwxNCBAQCBzdGF0aWMgQ2FjaGVkSW1hZ2UqIGdldENhY2hlZElt
YWdlKEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgLy8gQXR0ZW1wdCB0byBwdWxsIENhY2hlZElt
YWdlIGZyb20gZWxlbWVudAogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBlbGVtZW50LnJl
bmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzUmVuZGVySW1hZ2Uo
KSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFpczxSZW5kZXJJbWFnZT4ocmVuZGVyZXIp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlbmRlckltYWdlKiBpbWFnZSA9IHRv
UmVuZGVySW1hZ2UocmVuZGVyZXIpOworICAgIGF1dG8qIGltYWdlID0gZG93bmNhc3Q8UmVuZGVy
SW1hZ2U+KHJlbmRlcmVyKTsKICAgICBpZiAoaW1hZ2UtPmNhY2hlZEltYWdlKCkgJiYgIWltYWdl
LT5jYWNoZWRJbWFnZSgpLT5lcnJvck9jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBpbWFnZS0+
Y2FjaGVkSW1hZ2UoKTsKIAotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQog
CiBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVEZXNjcmlwdG9yKGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBDYWNoZWRJbWFnZSogaW1hZ2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggNmI1YzFmMjI3NGFm
ZDJkNWU5NmVhZjkzZTkxYjhjMWY3YWQyMzlhNi4uNWE1YmI0ZThmYWYzNzBkMTM3NmViNjAxMTAw
MDI5ODEzZWQ4MzAwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRl
c3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0
LmNwcApAQCAtMjkwLDE2ICsyOTAsMTYgQEAgU3RyaW5nIEhpdFRlc3RSZXN1bHQ6OmFsdERpc3Bs
YXlTdHJpbmcoKSBjb25zdAogSW1hZ2UqIEhpdFRlc3RSZXN1bHQ6OmltYWdlKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1faW5uZXJOb25TaGFyZWROb2RlKQotICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAgYXV0byByZW5kZXJlciA9IG1faW5uZXJOb25T
aGFyZWROb2RlLT5yZW5kZXJlcigpOwotICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNS
ZW5kZXJJbWFnZSgpKSB7Ci0gICAgICAgIFJlbmRlckltYWdlKiBpbWFnZSA9IHRvUmVuZGVySW1h
Z2UocmVuZGVyZXIpOwotICAgICAgICBpZiAoaW1hZ2UtPmNhY2hlZEltYWdlKCkgJiYgIWltYWdl
LT5jYWNoZWRJbWFnZSgpLT5lcnJvck9jY3VycmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gaW1h
Z2UtPmNhY2hlZEltYWdlKCktPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2UpOworICAgIGF1dG8qIHJl
bmRlcmVyID0gbV9pbm5lck5vblNoYXJlZE5vZGUtPnJlbmRlcmVyKCk7CisgICAgaWYgKGlzPFJl
bmRlckltYWdlPihyZW5kZXJlcikpIHsKKyAgICAgICAgYXV0byYgaW1hZ2UgPSBkb3duY2FzdDxS
ZW5kZXJJbWFnZT4oKnJlbmRlcmVyKTsKKyAgICAgICAgaWYgKGltYWdlLmNhY2hlZEltYWdlKCkg
JiYgIWltYWdlLmNhY2hlZEltYWdlKCktPmVycm9yT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJl
dHVybiBpbWFnZS5jYWNoZWRJbWFnZSgpLT5pbWFnZUZvclJlbmRlcmVyKCZpbWFnZSk7CiAgICAg
fQogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIEludFJlY3QgSGl0
VGVzdFJlc3VsdDo6aW1hZ2VSZWN0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmgKaW5kZXggYzVhZWEwNTQxNzYyMzAyOTViMThmNDI2ODllN2IwYjFhNmFiNjNkZi4u
NGE4YzY5ZjZlMDNlNDdjYjY0MmJjNzA0NGQxMTEwMDNjZTdhYTE2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmgKQEAgLTEyOCw4ICsxMjgsNiBAQCBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBSZW5kZXJJbWFnZVNjYWxlT2JzZXJ2ZXI7CiB9OwogCi1SRU5ERVJfT0JK
RUNUX1RZUEVfQ0FTVFMoUmVuZGVySW1hZ2UsIGlzUmVuZGVySW1hZ2UoKSkKLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVu
ZGVySW1hZ2UsIGlzUmVuZGVySW1hZ2UoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcAppbmRleCAyODk5MmVjMzY5NDAxOWU0YmZhMmQ4OTk4
YjUwYjg2MDU2MDM4N2NmLi5lZDgwY2YxNDUyYzBhMTc3MTgxMzY3NjE1YTk5ODZkYjk3YWIwOTVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2Uu
Y3BwCkBAIC0xMzIsOCArMTMyLDggQEAgTGF5b3V0U2l6ZSBSZW5kZXJJbWFnZVJlc291cmNlOjpn
ZXRJbWFnZVNpemUoZmxvYXQgbXVsdGlwbGllciwgQ2FjaGVkSW1hZ2U6OlNpemUKICAgICBpZiAo
IW1fY2FjaGVkSW1hZ2UpCiAgICAgICAgIHJldHVybiBMYXlvdXRTaXplKCk7CiAgICAgTGF5b3V0
U2l6ZSBzaXplID0gbV9jYWNoZWRJbWFnZS0+aW1hZ2VTaXplRm9yUmVuZGVyZXIobV9yZW5kZXJl
ciwgbXVsdGlwbGllciwgdHlwZSk7Ci0gICAgaWYgKG1fcmVuZGVyZXIgJiYgbV9yZW5kZXJlci0+
aXNSZW5kZXJJbWFnZSgpKQotICAgICAgICBzaXplLnNjYWxlKHRvUmVuZGVySW1hZ2UobV9yZW5k
ZXJlciktPmltYWdlRGV2aWNlUGl4ZWxSYXRpbygpKTsKKyAgICBpZiAoaXM8UmVuZGVySW1hZ2U+
KG1fcmVuZGVyZXIpKQorICAgICAgICBzaXplLnNjYWxlKGRvd25jYXN0PFJlbmRlckltYWdlPigq
bV9yZW5kZXJlcikuaW1hZ2VEZXZpY2VQaXhlbFJhdGlvKCkpOwogICAgIHJldHVybiBzaXplOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
CmluZGV4IDZhNzc3MjViZjYwMDFiY2I2N2ZmMjRlMzdiNmViM2M5ZGI3MDU0OTAuLjY1YTA3ZGJi
NGNkOWVhY2QyYWQ2M2NlM2IzYjcyYjdiNzgxMDZkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xODE5LDEwICsxODE5LDEwIEBA
IGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpjb250YWluc1BhaW50ZWRDb250ZW50KGJvb2wgaXNT
aW1wbGVDb250YWluZXIpIGNvbnN0CiAvLyB0aGF0IHJlcXVpcmUgcGFpbnRpbmcuIERpcmVjdCBj
b21wb3NpdGluZyBzYXZlcyBiYWNraW5nIHN0b3JlLgogYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6
OmlzRGlyZWN0bHlDb21wb3NpdGVkSW1hZ2UoKSBjb25zdAogewotICAgIGlmICghcmVuZGVyZXIo
KS5pc1JlbmRlckltYWdlKCkgfHwgcmVuZGVyZXIoKS5pc01lZGlhKCkgfHwgbV9vd25pbmdMYXll
ci5oYXNCb3hEZWNvcmF0aW9uc09yQmFja2dyb3VuZCgpIHx8IHJlbmRlcmVyKCkuaGFzQ2xpcCgp
KQorICAgIGlmICghaXM8UmVuZGVySW1hZ2U+KHJlbmRlcmVyKCkpIHx8IGlzPFJlbmRlck1lZGlh
PihyZW5kZXJlcigpKSB8fCBtX293bmluZ0xheWVyLmhhc0JveERlY29yYXRpb25zT3JCYWNrZ3Jv
dW5kKCkgfHwgcmVuZGVyZXIoKS5oYXNDbGlwKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIFJlbmRlckltYWdlJiBpbWFnZVJlbmRlcmVyID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlcigp
KTsKKyAgICBhdXRvJiBpbWFnZVJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KHJlbmRl
cmVyKCkpOwogICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBpbWFnZVJlbmRlcmVy
LmNhY2hlZEltYWdlKCkpIHsKICAgICAgICAgaWYgKCFjYWNoZWRJbWFnZS0+aGFzSW1hZ2UoKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE4NjYsOCArMTg2Niw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXJCYWNraW5nOjpjb250ZW50Q2hhbmdlZChDb250ZW50Q2hhbmdlVHlwZSBjaGFuZ2VU
eXBlKQogCiB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlSW1hZ2VDb250ZW50cygpCiB7
Ci0gICAgQVNTRVJUKHJlbmRlcmVyKCkuaXNSZW5kZXJJbWFnZSgpKTsKLSAgICBSZW5kZXJJbWFn
ZSYgaW1hZ2VSZW5kZXJlciA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSk7CisgICAgYXV0byYg
aW1hZ2VSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckltYWdlPihyZW5kZXJlcigpKTsKIAogICAg
IENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGltYWdlUmVuZGVyZXIuY2FjaGVkSW1hZ2UoKTsK
ICAgICBpZiAoIWNhY2hlZEltYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlcGxhY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
ZXBsYWNlZC5jcHAKaW5kZXggYTgyNzZkNzNjYmViYTVjNmFkMDQ4NGYxMDFjOWEzM2IxYmE4ZTli
Ny4uOTcyMzViNzUyMjY1ODE0Yzc1NjIxYjgyMjY3MjVlZjRiN2NkMDgwMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC0yODYsOCArMjg2LDggQEAg
dm9pZCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUFzcGVjdFJhdGlvSW5mb3JtYXRpb25Gb3JSZW5k
ZXJCb3goUmVuZGVyQm94KiBjb250ZW4KICAgICAgICAgLy8gSGFuZGxlIHpvb20gJiB2ZXJ0aWNh
bCB3cml0aW5nIG1vZGVzIGhlcmUsIGFzIHRoZSBlbWJlZGRlZCBkb2N1bWVudCBkb2Vzbid0IGtu
b3cgYWJvdXQgdGhlbS4KICAgICAgICAgaW50cmluc2ljU2l6ZS5zY2FsZShzdHlsZSgpLmVmZmVj
dGl2ZVpvb20oKSk7CiAKLSAgICAgICAgaWYgKGlzUmVuZGVySW1hZ2UoKSkKLSAgICAgICAgICAg
IGludHJpbnNpY1NpemUuc2NhbGUodG9SZW5kZXJJbWFnZSh0aGlzKS0+aW1hZ2VEZXZpY2VQaXhl
bFJhdGlvKCkpOworICAgICAgICBpZiAoaXM8UmVuZGVySW1hZ2U+KCp0aGlzKSkKKyAgICAgICAg
ICAgIGludHJpbnNpY1NpemUuc2NhbGUoZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCp0aGlzKS5pbWFn
ZURldmljZVBpeGVsUmF0aW8oKSk7CiAKICAgICAgICAgLy8gVXBkYXRlIG91ciBpbnRyaW5zaWMg
c2l6ZSB0byBtYXRjaCB3aGF0IHRoZSBjb250ZW50IHJlbmRlcmVyIGhhcyBjb21wdXRlZCwgc28g
dGhhdCB3aGVuIHdlCiAgICAgICAgIC8vIGNvbnN0cmFpbiB0aGUgc2l6ZSBiZWxvdywgdGhlIGNv
cnJlY3QgaW50cmluc2ljIHNpemUgd2lsbCBiZSBvYnRhaW5lZCBmb3IgY29tcGFyaXNvbiBhZ2Fp
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0
c2lkZUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNp
ZGVJbmZvLmNwcAppbmRleCAwZDE3ZjgxZjA0ZGU4MzJhMWNmMDgzZTJlYjJiZjY0NmU0ZWQwYWY1
Li5iNGNmNjhlNWU0ODA1MGRiMTlhYjc4ZWFmYTdkNmIzYjBkYWM4MTU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAKQEAg
LTE1MCw4ICsxNTAsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlT3V0c2lkZUluZm86
OmNyZWF0ZVNoYXBlRm9ySW1hZ2UoU3R5bGVJbWFnZSogc3R5bGVJbQogICAgIHN0eWxlSW1hZ2Ut
PnNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcigmbV9yZW5kZXJlciwgaW1hZ2VTaXplLCBtX3Jl
bmRlcmVyLnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKTsKIAogICAgIGNvbnN0IExheW91dFJlY3Qm
IG1hcmdpblJlY3QgPSBnZXRTaGFwZUltYWdlTWFyZ2luUmVjdChtX3JlbmRlcmVyLCBtX3JlZmVy
ZW5jZUJveExvZ2ljYWxTaXplKTsKLSAgICBjb25zdCBMYXlvdXRSZWN0JiBpbWFnZVJlY3QgPSBt
X3JlbmRlcmVyLmlzUmVuZGVySW1hZ2UoKQotICAgICAgICA/IHRvUmVuZGVySW1hZ2UoJm1fcmVu
ZGVyZXIpLT5yZXBsYWNlZENvbnRlbnRSZWN0KG1fcmVuZGVyZXIuaW50cmluc2ljU2l6ZSgpKQor
ICAgIGNvbnN0IExheW91dFJlY3QmIGltYWdlUmVjdCA9IGlzPFJlbmRlckltYWdlPihtX3JlbmRl
cmVyKQorICAgICAgICA/IGRvd25jYXN0PFJlbmRlckltYWdlPihtX3JlbmRlcmVyKS5yZXBsYWNl
ZENvbnRlbnRSZWN0KG1fcmVuZGVyZXIuaW50cmluc2ljU2l6ZSgpKQogICAgICAgICA6IExheW91
dFJlY3QoTGF5b3V0UG9pbnQoKSwgaW1hZ2VTaXplKTsKIAogICAgIEFTU0VSVCghc3R5bGVJbWFn
ZS0+aXNQZW5kaW5nSW1hZ2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNj
L1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNQ
YXN0ZWJvYXJkRXh0cmFzLm1tCmluZGV4IGQ0NDk5YWZmNGMyMDE4ZDlhOWIxY2FjODhkM2YzNzNj
NjBlMjdiNDkuLmZjYjE0NzczMGRiZjU1MzVkNDg1ODBlYWVjMDllN2QxNGQyYjBlMTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tCkBAIC0y
MjAsMTMgKzIyMCwxMyBAQCBzdGF0aWMgQ2FjaGVkSW1hZ2UqIGltYWdlRnJvbUVsZW1lbnQoRE9N
RWxlbWVudCAqZG9tRWxlbWVudCkKIHsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gY29yZShkb21F
bGVtZW50KTsKICAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZWxlbWVu
dC0+cmVuZGVyZXIoKTsKLSAgICBSZW5kZXJJbWFnZSogaW1hZ2VSZW5kZXJlciA9IHRvUmVuZGVy
SW1hZ2UocmVuZGVyZXIpOwotICAgIGlmICghaW1hZ2VSZW5kZXJlci0+Y2FjaGVkSW1hZ2UoKSB8
fCBpbWFnZVJlbmRlcmVyLT5jYWNoZWRJbWFnZSgpLT5lcnJvck9jY3VycmVkKCkpIAotICAgICAg
ICByZXR1cm4gMDsgICAgICAgIAotICAgIHJldHVybiBpbWFnZVJlbmRlcmVyLT5jYWNoZWRJbWFn
ZSgpOworICAgIEFTU0VSVChlbGVtZW50LT5yZW5kZXJlcigpKTsKKyAgICBhdXRvJiBpbWFnZVJl
bmRlcmVyID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCplbGVtZW50LT5yZW5kZXJlcigpKTsKKyAg
ICBpZiAoIWltYWdlUmVuZGVyZXIuY2FjaGVkSW1hZ2UoKSB8fCBpbWFnZVJlbmRlcmVyLmNhY2hl
ZEltYWdlKCktPmVycm9yT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
cmV0dXJuIGltYWdlUmVuZGVyZXIuY2FjaGVkSW1hZ2UoKTsKIH0KIAogLSAodm9pZClfd2ViX3dy
aXRlSW1hZ2U6KE5TSW1hZ2UgKilpbWFnZQpAQCAtMjcxLDEyICsyNzEsMTIgQEAgLSAoaWQpX3dl
Yl9kZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2VGb3JFbGVtZW50OihET01FbGVtZW50ICopZWxlbWVu
dAogICAgIEFTU0VSVChzZWxmID09IFtOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhOYW1lOk5T
RHJhZ1Bib2FyZF0pOwogCiAgICAgTlNTdHJpbmcgKmV4dGVuc2lvbiA9IEAiIjsKLSAgICBpZiAo
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGNvcmUoZWxlbWVudCktPnJlbmRlcmVyKCkpIHsKLSAg
ICAgICAgaWYgKHJlbmRlcmVyLT5pc1JlbmRlckltYWdlKCkpIHsKLSAgICAgICAgICAgIGlmIChD
YWNoZWRJbWFnZSogaW1hZ2UgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKS0+Y2FjaGVkSW1hZ2Uo
KSkgeworICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGNvcmUoZWxlbWVudCktPnJlbmRlcmVyKCkp
IHsKKyAgICAgICAgaWYgKGlzPFJlbmRlckltYWdlPigqcmVuZGVyZXIpKSB7CisgICAgICAgICAg
ICBpZiAoQ2FjaGVkSW1hZ2UqIGltYWdlID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCpyZW5kZXJl
cikuY2FjaGVkSW1hZ2UoKSkgewogICAgICAgICAgICAgICAgIGV4dGVuc2lvbiA9IGltYWdlLT5p
bWFnZSgpLT5maWxlbmFtZUV4dGVuc2lvbigpOwogICAgICAgICAgICAgICAgIGlmICghW2V4dGVu
c2lvbiBsZW5ndGhdKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCBkNTU2MmQxYmNlMWJhNjM4Mjk0
MzI3NzRkOTYyOTExZjNlMmU4ZTYyLi5kZjMwZDI4YTAyOWI0MzNjMmMyZGRjZjJlYjFjOTBlM2Qw
OWZiZTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KQEAgLTg2LDE0ICs4Niwx
MiBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyhSZXRhaW5QdHI8TlNJbWFnZT4gaW1h
Z2UsIGNvbnN0IEludFBvaW50JiBwb2ludCwgYwogCiBzdGF0aWMgV2ViQ29yZTo6Q2FjaGVkSW1h
Z2UqIGNhY2hlZEltYWdlKEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyKQotICAgICAg
ICByZXR1cm4gMDsKLSAgICBpZiAoIXJlbmRlcmVyLT5pc1JlbmRlckltYWdlKCkpCi0gICAgICAg
IHJldHVybiAwOwotICAgIFdlYkNvcmU6OkNhY2hlZEltYWdlKiBpbWFnZSA9IHRvUmVuZGVySW1h
Z2UocmVuZGVyZXIpLT5jYWNoZWRJbWFnZSgpOworICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVu
dC5yZW5kZXJlcigpOworICAgIGlmICghaXM8V2ViQ29yZTo6UmVuZGVySW1hZ2U+KHJlbmRlcmVy
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgV2ViQ29yZTo6Q2FjaGVkSW1hZ2UqIGlt
YWdlID0gZG93bmNhc3Q8V2ViQ29yZTo6UmVuZGVySW1hZ2U+KCpyZW5kZXJlcikuY2FjaGVkSW1h
Z2UoKTsKICAgICBpZiAoIWltYWdlIHx8IGltYWdlLT5lcnJvck9jY3VycmVkKCkpIAotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIGltYWdlOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KaW5kZXggMzAwMTA1OWVmMTFkYzczYmJhZjAyMmFkZWUyYmYwYTBmNTg1YjZjYy4u
OWYzYmUzYjViZDU0ZGVmYjI1NWQxMDc2ZjcwODU5M2JiNDU0YjBmZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMTk1
NiwyMSArMTk1NiwyMCBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWlu
dDMyX3QgYWN0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoc3RhdGljX2Nhc3Q8U2hl
ZXRBY3Rpb24+KGFjdGlvbikgPT0gU2hlZXRBY3Rpb246OkNvcHkpIHsKLSAgICAgICAgaWYgKGVs
ZW1lbnQtPnJlbmRlcmVyKCktPmlzUmVuZGVySW1hZ2UoKSkgeworICAgICAgICBpZiAoaXM8UmVu
ZGVySW1hZ2U+KCplbGVtZW50LT5yZW5kZXJlcigpKSkgewogICAgICAgICAgICAgRWxlbWVudCog
bGlua0VsZW1lbnQgPSBjb250YWluaW5nTGlua0VsZW1lbnQoZWxlbWVudCk7CiAgICAgICAgIAog
ICAgICAgICAgICAgaWYgKCFsaW5rRWxlbWVudCkKLSAgICAgICAgICAgICAgICBtX2ludGVyYWN0
aW9uTm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpLT5lZGl0b3IoKS53cml0ZUltYWdlVG9QYXN0ZWJv
YXJkKCpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKSwgKmVsZW1lbnQsIHRvUmVu
ZGVySW1hZ2UoZWxlbWVudC0+cmVuZGVyZXIoKSktPmNhY2hlZEltYWdlKCktPnVybCgpLCBTdHJp
bmcoKSk7CisgICAgICAgICAgICAgICAgbV9pbnRlcmFjdGlvbk5vZGUtPmRvY3VtZW50KCkuZnJh
bWUoKS0+ZWRpdG9yKCkud3JpdGVJbWFnZVRvUGFzdGVib2FyZCgqUGFzdGVib2FyZDo6Y3JlYXRl
Rm9yQ29weUFuZFBhc3RlKCksICplbGVtZW50LCBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKmVsZW1l
bnQtPnJlbmRlcmVyKCkpLmNhY2hlZEltYWdlKCktPnVybCgpLCBTdHJpbmcoKSk7CiAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbV9pbnRlcmFjdGlvbk5vZGUtPmRvY3VtZW50KCku
ZnJhbWUoKS0+ZWRpdG9yKCkuY29weVVSTChsaW5rRWxlbWVudC0+ZG9jdW1lbnQoKS5jb21wbGV0
ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMobGlua0VsZW1lbnQtPmdldEF0
dHJpYnV0ZShIVE1MTmFtZXM6OmhyZWZBdHRyKSkpLCBsaW5rRWxlbWVudC0+dGV4dENvbnRlbnQo
KSk7CiAgICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC0+aXNMaW5rKCkpIHsKICAgICAgICAgICAg
IG1faW50ZXJhY3Rpb25Ob2RlLT5kb2N1bWVudCgpLmZyYW1lKCktPmVkaXRvcigpLmNvcHlVUkwo
ZWxlbWVudC0+ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
TUxTcGFjZXMoZWxlbWVudC0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aHJlZkF0dHIpKSksIGVs
ZW1lbnQtPnRleHRDb250ZW50KCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChzdGF0aWNf
Y2FzdDxTaGVldEFjdGlvbj4oYWN0aW9uKSA9PSBTaGVldEFjdGlvbjo6U2F2ZUltYWdlKSB7Ci0g
ICAgICAgIGlmICghZWxlbWVudC0+cmVuZGVyZXIoKS0+aXNSZW5kZXJJbWFnZSgpKQorICAgICAg
ICBpZiAoIWlzPFJlbmRlckltYWdlPigqZWxlbWVudC0+cmVuZGVyZXIoKSkpCiAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHRvUmVuZGVySW1h
Z2UoZWxlbWVudC0+cmVuZGVyZXIoKSktPmNhY2hlZEltYWdlKCk7Ci0gICAgICAgIGlmIChjYWNo
ZWRJbWFnZSkgeworICAgICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZG93bmNh
c3Q8UmVuZGVySW1hZ2U+KCplbGVtZW50LT5yZW5kZXJlcigpKS5jYWNoZWRJbWFnZSgpKSB7CiAg
ICAgICAgICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKS0+
c2hhcmVkQnVmZmVyKCk7CiAgICAgICAgICAgICBpZiAoYnVmZmVyKSB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>