<?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>93614</bug_id>
          
          <creation_ts>2012-08-09 05:50:13 -0700</creation_ts>
          <short_desc>[BlackBerry] Get rid of glCopyTexImage2D in Cavas and WebGL code paths</short_desc>
          <delta_ts>2012-08-14 07:34:06 -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>WebKit BlackBerry</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Arvid Nilsson">anilsson</reporter>
          <assigned_to name="Arvid Nilsson">anilsson</assigned_to>
          <cc>anilsson</cc>
    
    <cc>fspacek</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jnetterfield</cc>
    
    <cc>levin+threading</cc>
    
    <cc>manyoso</cc>
    
    <cc>mifenton</cc>
    
    <cc>noam</cc>
    
    <cc>rakuco</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>staikos</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>691453</commentid>
    <comment_count>0</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-08-09 05:50:13 -0700</bug_when>
    <thetext>PR 188472</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692639</commentid>
    <comment_count>1</comment_count>
      <attachid>157753</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-08-10 10:02:03 -0700</bug_when>
    <thetext>Created attachment 157753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692991</commentid>
    <comment_count>2</comment_count>
      <attachid>157753</attachid>
    <who name="George Staikos">staikos</who>
    <bug_when>2012-08-10 17:39:38 -0700</bug_when>
    <thetext>Comment on attachment 157753
Patch

you need to rebase this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693074</commentid>
    <comment_count>3</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-08-11 02:32:16 -0700</bug_when>
    <thetext>Hmm, it&apos;s rebased to most recent in our forked repo...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693327</commentid>
    <comment_count>4</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-08-12 15:40:01 -0700</bug_when>
    <thetext>Aha, the merge conflict is because we haven&apos;t upstreamed the fix for https://bugs.webkit.org/show_bug.cgi?id=86483 (PR #153047) yet</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693328</commentid>
    <comment_count>5</comment_count>
      <attachid>157912</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-08-12 15:41:18 -0700</bug_when>
    <thetext>Created attachment 157912
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693329</commentid>
    <comment_count>6</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-08-12 15:41:42 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 157753 [details])
&gt; you need to rebase this.

Here&apos;s a patch that does apply to upstream</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693973</commentid>
    <comment_count>7</comment_count>
      <attachid>157912</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-08-13 12:53:22 -0700</bug_when>
    <thetext>Comment on attachment 157912
Patch

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

&gt; Source/WebCore/platform/graphics/blackberry/EGLImageLayerCompositingThreadClient.cpp:96
&gt; +    // If the image is still with us, it was never destroyed by the EGLImageLayerWebKitThread

lacks a &quot;.&quot;

&gt; Source/WebCore/platform/graphics/blackberry/EGLImageLayerCompositingThreadClient.cpp:97
&gt; +    if (m_image) {

early return preferable</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694891</commentid>
    <comment_count>8</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-08-14 06:00:54 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 157912 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=157912&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/blackberry/EGLImageLayerCompositingThreadClient.cpp:96
&gt; &gt; +    // If the image is still with us, it was never destroyed by the EGLImageLayerWebKitThread
&gt; 
&gt; lacks a &quot;.&quot;
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/blackberry/EGLImageLayerCompositingThreadClient.cpp:97
&gt; &gt; +    if (m_image) {
&gt; 
&gt; early return preferable

Will fix!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694909</commentid>
    <comment_count>9</comment_count>
      <attachid>158314</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-08-14 06:28:37 -0700</bug_when>
    <thetext>Created attachment 158314
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694910</commentid>
    <comment_count>10</comment_count>
      <attachid>158314</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-08-14 06:31:12 -0700</bug_when>
    <thetext>Comment on attachment 158314
Patch

This patch is changed only to adress Antonio&apos;s review comments, so I&apos;m just gonna cq+ it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694956</commentid>
    <comment_count>11</comment_count>
      <attachid>158314</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-14 07:34:00 -0700</bug_when>
    <thetext>Comment on attachment 158314
Patch

Clearing flags on attachment: 158314

Committed r125563: &lt;http://trac.webkit.org/changeset/125563&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694957</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-14 07:34:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157753</attachid>
            <date>2012-08-10 10:02:03 -0700</date>
            <delta_ts>2012-08-12 15:41:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93614-20120810190134.patch</filename>
            <type>text/plain</type>
            <size>52028</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWU2NjYzNDU3ZDZmMzAw
NjBhMWI3NDljMDM4YzgxZmE0NTg1ZjVmZS4uYTBhMTY4ZGVkNTViZTdjMjMxODI1ZWIyNzgyZTg4
YWVjZjY4MTQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMCBAQAorMjAxMi0wOC0wOSAgQXJ2
aWQgTmlsc3NvbiAgPGFuaWxzc29uQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIEdl
dCByaWQgb2YgZ2xDb3B5VGV4SW1hZ2UyRCBpbiBDYW52YXMgYW5kIFdlYkdMIGNvZGUgcGF0aHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzNjE0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgdXNlZCB0
byBzZXQgdXAgcmVzb3VyY2Ugc2hhcmluZyBiZXR3ZWVuIHRoZSBjb21wb3NpdGluZyB0aHJlYWQK
KyAgICAgICAgY29udGV4dCBhbmQgdGhlIENhbnZhcyBhbmQgV2ViR0wgY29udGV4dHMsIGFuZCB1
c2UgZ2xDb3B5VGV4SW1hZ2UyRCB0bworICAgICAgICBnZXQgYSBjb3B5IG9mIHRoZSBmcmFtZWJ1
ZmZlciB0byB1c2UgYXMgZnJvbnQgYnVmZmVyIGZvciBjb21wb3NpdGluZworICAgICAgICBwdXJw
b3Nlcy4KKworICAgICAgICBOb3cgd2UgaW5zdGVhZCBjcmVhdGUgYW4gRUdMSW1hZ2UgYW5kIGJs
aXQgdGhlIENhbnZhcy9XZWJHTCBvdXRwdXQgdG8KKyAgICAgICAgaXQuIFRoZSBjb21wb3NpdGlu
ZyB0aHJlYWQgY3JlYXRlcyBhIHRleHR1cmUgZnJvbSB0aGUgRUdMSW1hZ2UgaW4gb3JkZXIKKyAg
ICAgICAgdG8gY29tcG9zaXRlIHRoZSBvdXRwdXQuCisKKyAgICAgICAgQ3JlYXRlZCBhIG5ldyBF
R0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkIGJhc2UgY2xhc3MgdGhhdCBoYW5kbGVzIHRoZQorICAg
ICAgICBFR0xJbWFnZSBhbmQgZG9lcyB0aGUgYmxpdHRpbmcuIENhbnZhc0xheWVyV2ViS2l0VGhy
ZWFkIGFuZAorICAgICAgICBXZWJHTExheWVyV2ViS2l0VGhyZWFkIG5vdyBpbmhlcml0IGZyb20g
dGhpcyBuZXcgYmFzZSBjbGFzcy4KKworICAgICAgICBIb3dldmVyLCB3ZSBuZWVkIHRvIGJlIGNh
cmVmdWwgdG8gcmVzdG9yZSBzdGF0ZSBhZnRlciB0aGUgYmxpdCBiZWNhdXNlCisgICAgICAgIGl0
J3MgZG9uZSB1c2luZyB0aGUgQ2FudmFzL1dlYkdMIGNvbnRleHQuCisKKyAgICAgICAgVGhlIEJs
YWNrQmVycnkgaW1wbGVtZW50YXRpb24gb2YgR3JhcGhpY3NDb250ZXh0M0Q6OnByZXBhcmVUZXh0
dXJlKCkKKyAgICAgICAgd2FzIGNoYW5nZWQgdG8gbm8gbG9uZ2VyIGNhbGwgZ2xDb3B5VGV4SW1h
Z2UsIGFuZAorICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6cGxhdGZvcm1MYXllcigpIG5vdyBy
ZXR1cm5zIHRoZSB0YXJnZXQgdGV4dHVyZQorICAgICAgICBkaXJlY3RseS4KKworICAgICAgICBS
ZXZpZXdlZCBpbnRlcm5hbGx5IGJ5IEZpbGlwIFNwYWNlay4KKworICAgICAgICBQUiAxODg0NzIK
KworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IsIG5ldyB0ZXN0cy4KKworICAgICAgICAq
IFBsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9i
bGFja2JlcnJ5L0NhbnZhc0xheWVyV2ViS2l0VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc0xheWVyV2ViS2l0VGhyZWFkOjpDYW52YXNMYXllcldlYktpdFRocmVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNMYXllcldlYktpdFRocmVhZDo6fkNhbnZhc0xheWVyV2ViS2l0
VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0xheWVyV2ViS2l0VGhyZWFkOjpzZXRE
ZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQ6Om1ha2VD
b250ZXh0Q3VycmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXllcldlYktpdFRocmVh
ZDo6dGV4dHVyZVNpemUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNMYXllcldlYktpdFRocmVhZDo6dGV4dHVyZUlEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L0NhbnZhc0xheWVyV2ViS2l0VGhyZWFkLmg6CisgICAgICAgIChD
YW52YXNMYXllcldlYktpdFRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9FR0xJbWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RUdMSW1hZ2VMYXllckNvbXBv
c2l0aW5nVGhyZWFkQ2xpZW50Ojp+RUdMSW1hZ2VMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkVHTEltYWdlTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVu
dDo6dXBsb2FkVGV4dHVyZXNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpFR0xJbWFnZUxh
eWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQ6OmRyYXdUZXh0dXJlcyk6CisgICAgICAgIChXZWJD
b3JlOjpFR0xJbWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQ6OmRlbGV0ZVRleHR1cmVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkVHTEltYWdlTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVu
dDo6YmluZENvbnRlbnRzVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpFR0xJbWFnZUxheWVy
Q29tcG9zaXRpbmdUaHJlYWRDbGllbnQ6OnNldEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L0VHTEltYWdlTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudC5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRUdMSW1hZ2VMYXllckNvbXBv
c2l0aW5nVGhyZWFkQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVHTEltYWdlTGF5ZXJDb21w
b3NpdGluZ1RocmVhZENsaWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVHTEltYWdl
TGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudDo6bGF5ZXJDb21wb3NpdGluZ1RocmVhZERlc3Ry
b3llZCk6CisgICAgICAgIChXZWJDb3JlOjpFR0xJbWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRD
bGllbnQ6OmxheWVyVmlzaWJpbGl0eUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6RUdMSW1h
Z2VMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50OjpFR0xJbWFnZUxheWVyQ29tcG9zaXRpbmdU
aHJlYWRDbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRUdM
SW1hZ2VMYXllcldlYktpdFRocmVhZC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkOjpFR0xJbWFnZUxheWVy
V2ViS2l0VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkVHTEltYWdlTGF5ZXJXZWJLaXRUaHJl
YWQ6On5FR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkVHTElt
YWdlTGF5ZXJXZWJLaXRUaHJlYWQ6OnNldE5lZWRzRGlzcGxheSk6CisgICAgICAgIChXZWJDb3Jl
OjpFR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkOjptYWtlQ29udGV4dEN1cnJlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RUdMSW1hZ2VMYXllcldlYktpdFRocmVhZDo6dXBkYXRlVGV4dHVyZUNvbnRl
bnRzSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6RUdMSW1hZ2VMYXllcldlYktpdFRocmVh
ZDo6Y29tbWl0UGVuZGluZ1RleHR1cmVVcGxvYWRzKToKKyAgICAgICAgKFdlYkNvcmU6OkVHTElt
YWdlTGF5ZXJXZWJLaXRUaHJlYWQ6OmNyZWF0ZUltYWdlSWZOZWVkZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RUdMSW1hZ2VMYXllcldlYktpdFRocmVhZDo6Y3JlYXRlU2hhZGVySWZOZWVkZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RUdMSW1hZ2VMYXllcldlYktpdFRocmVhZDo6ZHJhd1RleHR1cmUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRUdMSW1hZ2VMYXllcldl
YktpdFRocmVhZC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ibGFja2JlcnJ5L0NhbnZhc0xheWVyV2ViS2l0VGhyZWFkLmguCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKEVHTEltYWdlTGF5ZXJXZWJLaXRUaHJlYWQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvR3JhcGhpY3NDb250ZXh0M0RCbGFja0JlcnJ5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpwcmVwYXJlVGV4dHVyZSk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpw
bGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
TGF5ZXJDb21wb3NpdGluZ1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBv
c2l0aW5nVGhyZWFkOjpkcmF3VGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21w
b3NpdGluZ1RocmVhZDo6cmVsZWFzZVRleHR1cmVSZXNvdXJjZXMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5oOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6c2V0Q2xpZW50KToKKyAgICAgICAg
KExheWVyQ29tcG9zaXRpbmdUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvTGF5ZXJEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllckRhdGE6OkxheWVy
RGF0YSk6CisgICAgICAgIChMYXllckRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJXZWJLaXRUaHJlYWQ6On5MYXllcldlYktpdFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllcldlYktpdFRocmVhZDo6dXBkYXRlVGV4dHVyZUNvbnRlbnRzSWZOZWVkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJXZWJLaXRUaHJlYWQ6OmNvbW1pdFBlbmRpbmdUZXh0dXJlVXBsb2Fk
cyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllcldlYktpdFRocmVhZDo6Y29tbWl0T25Db21wb3Np
dGluZ1RocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXll
cldlYktpdFRocmVhZC5oOgorICAgICAgICAoTGF5ZXJXZWJLaXRUaHJlYWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvV2ViR0xMYXllcldlYktpdFRocmVhZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyV2ViS2l0VGhyZWFkOjpXZWJHTExheWVyV2Vi
S2l0VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJXZWJLaXRUaHJlYWQ6OnVw
ZGF0ZVRleHR1cmVDb250ZW50c0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5
ZXJXZWJLaXRUaHJlYWQ6Om1ha2VDb250ZXh0Q3VycmVudCk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJXZWJLaXRUaHJlYWQ6OnRleHR1cmVTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJXZWJLaXRUaHJlYWQ6OnRleHR1cmVJRCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9XZWJHTExheWVyV2ViS2l0VGhy
ZWFkLmg6CisgICAgICAgIChXZWJHTExheWVyV2ViS2l0VGhyZWFkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
cHJlcGFyZVRleHR1cmUpOgorCiAyMDEyLTA4LTA4ICBBbnRvbmlvIEdvbWVzICA8YWdvbWVzQHJp
bS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIEFkZCBib3VuZHNPcmlnaW4gYWNjZXNzb3Jz
IHRvIExheWVyT3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4IGRmZWU2
NDk2NTI4N2U0M2ZjYjAwMGIwZGEyMjk3NTRhMjQ3NDMzMjMuLmQ4YWJhZjQ0MWU4YjQ2MGFkODM0
ZmE4ZDc3Y2YwNDYxYjI2NDQxMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAt
MSw1ICsxLDM4IEBACiAyMDEyLTA4LTA5ICBBcnZpZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNv
bT4KIAorICAgICAgICBbQmxhY2tCZXJyeV0gR2V0IHJpZCBvZiBnbENvcHlUZXhJbWFnZTJEIGlu
IENhbnZhcyBhbmQgV2ViR0wgY29kZSBwYXRocworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM2MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZSB1c2VkIHRvIHNldCB1cCByZXNvdXJjZSBzaGFyaW5nIGJl
dHdlZW4gdGhlIGNvbXBvc2l0aW5nIHRocmVhZAorICAgICAgICBjb250ZXh0IGFuZCB0aGUgQ2Fu
dmFzIGFuZCBXZWJHTCBjb250ZXh0cywgYW5kIHVzZSBnbENvcHlUZXhJbWFnZTJEIHRvCisgICAg
ICAgIGdldCBhIGNvcHkgb2YgdGhlIGZyYW1lYnVmZmVyIHRvIHVzZSBhcyBmcm9udCBidWZmZXIg
Zm9yIGNvbXBvc2l0aW5nCisgICAgICAgIHB1cnBvc2VzLgorCisgICAgICAgIE5vdyB3ZSBpbnN0
ZWFkIGNyZWF0ZSBhbiBFR0xJbWFnZSBhbmQgYmxpdCB0aGUgQ2FudmFzL1dlYkdMIG91dHB1dCB0
bworICAgICAgICBpdC4gVGhlIGNvbXBvc2l0aW5nIHRocmVhZCBjcmVhdGVzIGEgdGV4dHVyZSBm
cm9tIHRoZSBFR0xJbWFnZSBpbiBvcmRlcgorICAgICAgICB0byBjb21wb3NpdGUgdGhlIG91dHB1
dC4KKworICAgICAgICBUaGlzIGFsbG93cyB1cyB0byB0dXJuIG9mZiByZXNvdXJjZSBzaGFyaW5n
LCBzbyB0aGUgV2ViUGFnZUNvbXBvc2l0b3IKKyAgICAgICAgbm8gbG9uZ2VyIG5lZWRzIHRvIHBh
c3MgdGhlIGNvbXBvc2l0aW5nIHRocmVhZCBjb250ZXh0IHRvIHRoZSB3ZWJraXQKKyAgICAgICAg
dGhyZWFkLgorCisgICAgICAgIFJldmlld2VkIGludGVybmFsbHkgYnkgRmlsaXAgU3BhY2VrLgor
CisgICAgICAgIFBSIDE4ODQ3MgorCisgICAgICAgICogQXBpL1dlYlBhZ2UuY3BwOgorICAgICAg
ICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6c2V0Q29tcG9zaXRvcik6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpzZXRDb21wb3NpdG9y
SGVscGVyKToKKyAgICAgICAgKiBBcGkvV2ViUGFnZUNvbXBvc2l0b3IuY3BwOgorICAgICAgICAo
QmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvcjo6V2ViUGFnZUNvbXBvc2l0b3Ip
OgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvcjo6fldlYlBh
Z2VDb21wb3NpdG9yKToKKyAgICAgICAgKiBBcGkvV2ViUGFnZV9wLmg6CisgICAgICAgIChXZWJQ
YWdlUHJpdmF0ZSk6CisKKzIwMTItMDgtMDkgIEFydmlkIE5pbHNzb24gIDxhbmlsc3NvbkByaW0u
Y29tPgorCiAgICAgICAgIFtCbGFja0JlcnJ5XSBUYXAgaGlnaGxpZ2h0IHNvbWV0aW1lcyBkb2Vz
bid0IGRpc2FwcGVhcgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTM3MTEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1CbGFja0Jl
cnJ5LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCmluZGV4
IDVlNTFhMzQyNzIwMjRhNzE2N2U1NjQ1MDgwZjk4ODc3NTkyMzMxNzUuLjMyZjcwY2E2MjhhMDNm
YzFhMDFkMzZmMDE2NTFjMmM0ZDYxOTFlNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtQmxhY2tCZXJyeS5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNr
QmVycnkuY21ha2UKQEAgLTI2NSw2ICsyNjUsOCBAQCBFTkRJRiAoKQogSUYgKFdURl9VU0VfQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvQ2FudmFz
TGF5ZXJXZWJLaXRUaHJlYWQuY3BwCisgICAgICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvRUdMSW1hZ2VMYXllcldlYktpdFRocmVhZC5jcHAKKyAgICAgICAg
JHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9FR0xJbWFnZUxheWVy
Q29tcG9zaXRpbmdUaHJlYWRDbGllbnQuY3BwCiAgICAgICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvR3JhcGhpY3NMYXllckJsYWNrQmVycnkuY3BwCiAgICAg
ICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJBbmlt
YXRpb24uY3BwCiAgICAgICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9DYW52YXNM
YXllcldlYktpdFRocmVhZC5jcHAKaW5kZXggYmU1NTg4NjRlMDg3OGUwNDgxZTNjOGRhZGM2ZjEy
ZTNkOTM4NzMxMy4uNjYxYWZlZWIxMWEwM2NmYzdiNWVlNDU5N2VmM2NiYmMzZTVlYTE3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9DYW52
YXNMYXllcldlYktpdFRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9DYW52YXNMYXllcldlYktpdFRocmVhZC5jcHAKQEAgLTI4LDYxICsy
OCw0MCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDYW52YXNMYXllcldlYktpdFRocmVhZDo6
Q2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQoU2tHcHVEZXZpY2UqIGRldmljZSkKLSAgICA6IExheWVy
V2ViS2l0VGhyZWFkKENhbnZhc0xheWVyLCAwKQorICAgIDogRUdMSW1hZ2VMYXllcldlYktpdFRo
cmVhZChDYW52YXNMYXllcikKIHsKICAgICBzZXREZXZpY2UoZGV2aWNlKTsKIH0KIAogQ2FudmFz
TGF5ZXJXZWJLaXRUaHJlYWQ6On5DYW52YXNMYXllcldlYktpdFRocmVhZCgpCiB7Ci0gICAgaWYg
KG1fdGV4SUQpIHsKLSAgICAgICAgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmdldCgpLT5tYWtl
Q29udGV4dEN1cnJlbnQoKTsKLSAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbV90ZXhJRCk7
Ci0gICAgfQorICAgIGlmIChTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z2V0KCktPm1ha2VDb250
ZXh0Q3VycmVudCgpKQorICAgICAgICBkZWxldGVGcm9udEJ1ZmZlcigpOwogfQogCiB2b2lkIENh
bnZhc0xheWVyV2ViS2l0VGhyZWFkOjpzZXREZXZpY2UoU2tHcHVEZXZpY2UqIGRldmljZSkKIHsK
ICAgICBtX2RldmljZSA9IGRldmljZTsKLSAgICBzZXRMYXllclByb2dyYW1TaGFkZXIoTGF5ZXJQ
cm9ncmFtU2hhZGVyUkdCQSk7CiAgICAgc2V0TmVlZHNEaXNwbGF5KCk7CiB9CiAKLXZvaWQgQ2Fu
dmFzTGF5ZXJXZWJLaXRUaHJlYWQ6OnNldE5lZWRzRGlzcGxheSgpCi17Ci0gICAgbV9uZWVkc0Rp
c3BsYXkgPSB0cnVlOwotICAgIHNldE5lZWRzQ29tbWl0KCk7Ci19Ci0KIHZvaWQgQ2FudmFzTGF5
ZXJXZWJLaXRUaHJlYWQ6OnVwZGF0ZVRleHR1cmVDb250ZW50c0lmTmVlZGVkKCkKIHsKLSAgICBp
ZiAoIW1fbmVlZHNEaXNwbGF5IHx8ICFtX2RldmljZSkKKyAgICBpZiAoIW1fZGV2aWNlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNlOwotICAgIG1fZGV2aWNl
LT5tYWtlUmVuZGVyVGFyZ2V0Q3VycmVudCgpOwotCi0gICAgR0xpbnQgcHJldmlvdXNUZXh0dXJl
OwotICAgIGdsR2V0SW50ZWdlcnYoR0xfVEVYVFVSRV9CSU5ESU5HXzJELCAmcHJldmlvdXNUZXh0
dXJlKTsKKyAgICBpZiAoIVNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpnZXQoKS0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCisgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV90ZXhJRCkgewotICAg
ICAgICBnbEdlblRleHR1cmVzKDEsICZtX3RleElEKTsKLSAgICAgICAgZ2xCaW5kVGV4dHVyZShH
TF9URVhUVVJFXzJELCBtX3RleElEKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRV
UkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICAgICAgZ2xUZXhQ
YXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFS
KTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JB
UF9TLCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRV
UkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICAgICAgZ2xU
ZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIG1fZGV2aWNlLT53aWR0aCgpLCBt
X2RldmljZS0+aGVpZ2h0KCksIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIDApOworICAg
IEdyUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQgPSByZWludGVycHJldF9jYXN0PEdyUmVuZGVy
VGFyZ2V0Kj4obV9kZXZpY2UtPmFjY2Vzc1JlbmRlclRhcmdldCgpKTsKKyAgICBpZiAoIXJlbmRl
clRhcmdldCkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGNyZWF0ZUZyb250QnVmZmVyTG9j
aygpOwotICAgIH0KKyAgICBHclRleHR1cmUqIHRleHR1cmUgPSByZW5kZXJUYXJnZXQtPmFzVGV4
dHVyZSgpOworICAgIGlmICghdGV4dHVyZSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgcHRocmVh
ZF9tdXRleF9sb2NrKG1fZnJvbnRCdWZmZXJMb2NrKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RF
WFRVUkVfMkQsIG1fdGV4SUQpOwotICAgIGdsQ29weVRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwg
MCwgR0xfUkdCQSwgMCwgMCwgbV9kZXZpY2UtPndpZHRoKCksIG1fZGV2aWNlLT5oZWlnaHQoKSwg
MCk7Ci0gICAgZ2xGaW5pc2goKTsgLy8gVGhpcyBtaWdodCBiZSBpbXBsaWNpdCBpbiB0aGUgQ29w
eVRleEltYWdlMkQsIGJ1dCBleHBsaWNpdCBGaW5pc2ggaXMgcmVxdWlyZWQgb24gc29tZSBhcmNo
aXRlY3R1cmVzCi0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBwcmV2aW91c1RleHR1
cmUpOwotICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKG1fZnJvbnRCdWZmZXJMb2NrKTsKKyAgICB1
cGRhdGVGcm9udEJ1ZmZlcihJbnRTaXplKG1fZGV2aWNlLT53aWR0aCgpLCBtX2RldmljZS0+aGVp
Z2h0KCkpLCB0ZXh0dXJlLT5nZXRUZXh0dXJlSGFuZGxlKCkpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0NhbnZhc0xheWVy
V2ViS2l0VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0NhbnZhc0xheWVyV2ViS2l0VGhyZWFkLmgKaW5kZXggZWFjNmI4MjM4Mjc0ZDVlM2VjZGE2
OTE2MGYxMGFjYjY0YmJmYTE0MC4uNTA2ODM4N2U4ODU5ODVmNTUzYTA4NDViYmRiZWRiMDFlNmY2
MTZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9DYW52YXNMYXllcldlYktpdFRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQuaApAQCAtMjEs
NyArMjEsNyBAQAogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBFTkFCTEUo
QUNDRUxFUkFURURfMkRfQ0FOVkFTKQogCi0jaW5jbHVkZSAiTGF5ZXJXZWJLaXRUaHJlYWQuaCIK
KyNpbmNsdWRlICJFR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkLmgiCiAKIGNsYXNzIFNrR3B1RGV2
aWNlOwogCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRN
TENhbnZhc0VsZW1lbnQ7CiAKLWNsYXNzIENhbnZhc0xheWVyV2ViS2l0VGhyZWFkIDogcHVibGlj
IExheWVyV2ViS2l0VGhyZWFkIHsKK2NsYXNzIENhbnZhc0xheWVyV2ViS2l0VGhyZWFkIDogcHVi
bGljIEVHTEltYWdlTGF5ZXJXZWJLaXRUaHJlYWQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPENhbnZhc0xheWVyV2ViS2l0VGhyZWFkPiBjcmVhdGUoU2tHcHVEZXZpY2UqIGRldmlj
ZSkKICAgICB7CkBAIC00MCwxOCArNDAsMTYgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXREZXZp
Y2UoU2tHcHVEZXZpY2UqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKTsK
LQogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0dXJlQ29udGVudHNJZk5l
ZWRlZCgpOwogCiBwcml2YXRlOgogICAgIENhbnZhc0xheWVyV2ViS2l0VGhyZWFkKFNrR3B1RGV2
aWNlKik7Ci0gICAgYm9vbCBtX25lZWRzRGlzcGxheTsKKwogICAgIFNrR3B1RGV2aWNlKiBtX2Rl
dmljZTsKIH07CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9FR0xJbWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9FR0xJbWFnZUxheWVyQ29tcG9zaXRpbmdU
aHJlYWRDbGllbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyNzMzNDhhM2JlZDIyMzQyMGNlMTMzZjdjZmQ4
NThiYWNiY2ZlMGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L0VHTEltYWdlTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudC5j
cHAKQEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2gg
SW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90
LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkVHTEltYWdlTGF5ZXJDb21wb3Np
dGluZ1RocmVhZENsaWVudC5oIgorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQor
CisjaW5jbHVkZSAiTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5oIgorI2luY2x1ZGUgPEJsYWNrQmVy
cnlQbGF0Zm9ybUdyYXBoaWNzLmg+CisjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtTG9nLmg+
CisjaW5jbHVkZSA8RUdML2VnbC5oPgorI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KKyNpbmNsdWRl
IDxHTEVTMi9nbDIuaD4KKyNpbmNsdWRlIDxHTEVTMi9nbDJleHQuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitzdGF0aWMgUEZOR0xFR0xJTUFHRVRBUkdFVFRFWFRVUkUyRE9FU1BST0MgZ2xF
R0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyA9IDA7CitzdGF0aWMgUEZORUdMREVTVFJPWUlNQUdF
S0hSUFJPQyBlZ2xEZXN0cm95SW1hZ2VLSFIgPSAwOworCitFR0xJbWFnZUxheWVyQ29tcG9zaXRp
bmdUaHJlYWRDbGllbnQ6On5FR0xJbWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQoKQor
eworICAgIC8vIFNvbWVvbmUgc2hvdWxkIGhhdmUgY2FsbGVkIGRlbGV0ZVRleHR1cmVzKCkgYnkg
bm93CisgICAgQVNTRVJUKCFtX3RleHR1cmUgJiYgIW1faW1hZ2UpOworfQorCit2b2lkIEVHTElt
YWdlTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudDo6dXBsb2FkVGV4dHVyZXNJZk5lZWRlZChM
YXllckNvbXBvc2l0aW5nVGhyZWFkKikKK3sKKyAgICBpZiAoIW1faW1hZ2VDaGFuZ2VkKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAoIWdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMpIHsK
KyAgICAgICAgZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyA9IHJlaW50ZXJwcmV0X2Nhc3Q8
UEZOR0xFR0xJTUFHRVRBUkdFVFRFWFRVUkUyRE9FU1BST0M+KGVnbEdldFByb2NBZGRyZXNzKCJn
bEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTIikpOworICAgICAgICBBU1NFUlQoZ2xFR0xJbWFn
ZVRhcmdldFRleHR1cmUyRE9FUyk7CisgICAgICAgIGlmICghZ2xFR0xJbWFnZVRhcmdldFRleHR1
cmUyRE9FUykgeworICAgICAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEJsYWNrQmVycnk6OlBsYXRm
b3JtOworICAgICAgICAgICAgbG9nQWx3YXlzKExvZ0xldmVsV2FybiwgImVnbEdldFByb2NBZGRy
ZXNzIGZvciBnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTIEZBSUxFRCIpOworICAgICAgICAg
ICAgbV9pbWFnZUNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGlmIChtX2ltYWdlKSB7CisgICAgICAgIGlmICghbV90ZXh0dXJlKSB7
CisgICAgICAgICAgICBtX3RleHR1cmUgPSBUZXh0dXJlOjpjcmVhdGUoKTsKKyAgICAgICAgICAg
IG1fdGV4dHVyZS0+cHJvdGVjdCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ29ubmVjdCB0
byB0aGUgbmV3IGltYWdlCisgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbV90
ZXh0dXJlLT50ZXh0dXJlSWQoKSk7CisgICAgICAgIGdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRP
RVMoR0xfVEVYVFVSRV8yRCwgbV9pbWFnZSk7CisgICAgfSBlbHNlIGlmIChtX3RleHR1cmUpIHsK
KyAgICAgICAgbV90ZXh0dXJlLT51bnByb3RlY3QoKTsKKyAgICAgICAgbV90ZXh0dXJlLmNsZWFy
KCk7CisgICAgfQorCisgICAgbV9pbWFnZUNoYW5nZWQgPSBmYWxzZTsKK30KKwordm9pZCBFR0xJ
bWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQ6OmRyYXdUZXh0dXJlcyhMYXllckNvbXBv
c2l0aW5nVGhyZWFkKiBsYXllciwgZG91YmxlIC8qc2NhbGUqLywgaW50IHBvc2l0aW9uTG9jYXRp
b24sIGludCB0ZXhDb29yZExvY2F0aW9uKQoreworICAgIHN0YXRpYyBmbG9hdCB1cHNpZGVEb3du
WzQgKiAyXSA9IHsgMCwgMSwgIDAsIDAsICAxLCAwLCAgMSwgMSB9OworCisgICAgaWYgKCFtX3Rl
eHR1cmUpCisgICAgICAgIHJldHVybjsKKworICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3Np
dGlvbkxvY2F0aW9uLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsICZsYXllci0+Z2V0VHJhbnNm
b3JtZWRCb3VuZHMoKSk7CisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHRleENvb3JkTG9jYXRp
b24sIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgdXBzaWRlRG93bik7CisgICAgZ2xCaW5kVGV4
dHVyZShHTF9URVhUVVJFXzJELCBtX3RleHR1cmUtPnRleHR1cmVJZCgpKTsKKyAgICBnbERyYXdB
cnJheXMoR0xfVFJJQU5HTEVfRkFOLCAwLCA0KTsKK30KKwordm9pZCBFR0xJbWFnZUxheWVyQ29t
cG9zaXRpbmdUaHJlYWRDbGllbnQ6OmRlbGV0ZVRleHR1cmVzKExheWVyQ29tcG9zaXRpbmdUaHJl
YWQqKQoreworICAgIGlmIChtX3RleHR1cmUpIHsKKyAgICAgICAgbV90ZXh0dXJlLT51bnByb3Rl
Y3QoKTsKKyAgICAgICAgbV90ZXh0dXJlLmNsZWFyKCk7CisgICAgfQorCisgICAgLy8gSWYgdGhl
IGltYWdlIGlzIHN0aWxsIHdpdGggdXMsIGl0IHdhcyBuZXZlciBkZXN0cm95ZWQgYnkgdGhlIEVH
TEltYWdlTGF5ZXJXZWJLaXRUaHJlYWQKKyAgICBpZiAobV9pbWFnZSkgeworICAgICAgICBpZiAo
IWVnbERlc3Ryb3lJbWFnZUtIUikKKyAgICAgICAgICAgIGVnbERlc3Ryb3lJbWFnZUtIUiA9IHJl
aW50ZXJwcmV0X2Nhc3Q8UEZORUdMREVTVFJPWUlNQUdFS0hSUFJPQz4oZWdsR2V0UHJvY0FkZHJl
c3MoImVnbERlc3Ryb3lJbWFnZUtIUiIpKTsKKworICAgICAgICBBU1NFUlQoZWdsRGVzdHJveUlt
YWdlS0hSKTsKKyAgICAgICAgaWYgKGVnbERlc3Ryb3lJbWFnZUtIUikKKyAgICAgICAgICAgIGVn
bERlc3Ryb3lJbWFnZUtIUihCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OmVnbERpc3Bs
YXkoKSwgbV9pbWFnZSk7CisKKyAgICAgICAgbV9pbWFnZSA9IDA7CisgICAgfQorfQorCit2b2lk
IEVHTEltYWdlTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudDo6YmluZENvbnRlbnRzVGV4dHVy
ZShMYXllckNvbXBvc2l0aW5nVGhyZWFkKikKK3sKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfMkQsIG1fdGV4dHVyZS0+dGV4dHVyZUlkKCkpOworfQorCit2b2lkIEVHTEltYWdlTGF5ZXJD
b21wb3NpdGluZ1RocmVhZENsaWVudDo6c2V0SW1hZ2Uodm9pZCogaW1hZ2UpCit7CisgICAgaWYg
KG1faW1hZ2UgPT0gaW1hZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1faW1hZ2UgPSBpbWFn
ZTsKKyAgICBtX2ltYWdlQ2hhbmdlZCA9IHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRUdMSW1hZ2VMYXll
ckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L0VHTEltYWdlTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjk2N2MxMzBhNjBiNzE5YTQ5ZTljOWNiNmEwNWYyYWYyNzk4OGFhODQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L0VHTEltYWdlTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudC5oCkBAIC0wLDAgKzEsNzYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT
b2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRlZiBFR0xJbWFn
ZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnRfaAorI2RlZmluZSBFR0xJbWFnZUxheWVyQ29t
cG9zaXRpbmdUaHJlYWRDbGllbnRfaAorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQorCisjaW5jbHVkZSAiTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudC5oIgorI2luY2x1ZGUg
IlRleHR1cmUuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBMYXllckNvbXBvc2l0aW5nVGhyZWFkOworCitjbGFzcyBF
R0xJbWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8RUdMSW1hZ2VMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50PiwgcHVibGljIExh
eWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEVHTEltYWdlTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudD4gY3JlYXRlKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRUdMSW1hZ2VMYXllckNvbXBvc2l0aW5nVGhy
ZWFkQ2xpZW50KCkpOworICAgIH0KKworICAgIHZpcnR1YWwgfkVHTEltYWdlTGF5ZXJDb21wb3Np
dGluZ1RocmVhZENsaWVudCgpOworCisgICAgdmlydHVhbCB2b2lkIGxheWVyQ29tcG9zaXRpbmdU
aHJlYWREZXN0cm95ZWQoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCopCisgICAgeworICAgICAgICBk
ZXJlZigpOyAvLyBNYXRjaGVkIGJ5IHJlZigpIGluIGNvbnN0cnVjdG9yCisgICAgfQorCisgICAg
dmlydHVhbCB2b2lkIGxheWVyVmlzaWJpbGl0eUNoYW5nZWQoTGF5ZXJDb21wb3NpdGluZ1RocmVh
ZCosIGJvb2wgdmlzaWJsZSkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZXNJ
Zk5lZWRlZChMYXllckNvbXBvc2l0aW5nVGhyZWFkKik7CisgICAgdmlydHVhbCB2b2lkIGRyYXdU
ZXh0dXJlcyhMYXllckNvbXBvc2l0aW5nVGhyZWFkKiwgZG91YmxlIHNjYWxlLCBpbnQgcG9zaXRp
b25Mb2NhdGlvbiwgaW50IHRleENvb3JkTG9jYXRpb24pOworICAgIHZpcnR1YWwgdm9pZCBkZWxl
dGVUZXh0dXJlcyhMYXllckNvbXBvc2l0aW5nVGhyZWFkKik7CisKKyAgICB2aXJ0dWFsIHZvaWQg
YmluZENvbnRlbnRzVGV4dHVyZShMYXllckNvbXBvc2l0aW5nVGhyZWFkKik7CisKKyAgICAvLyBU
aGUgaW1hZ2UgbXVzdCBub3QgYmUgZGVsZXRlZCB3aGlsZSBpbiBvdXIgY3VzdG9keSwgaG93ZXZl
ciBhZnRlciBjaGFuZ2luZyBpbWFnZSB5b3UgYXJlIGZyZWUgdG8gZGVsZXRlIHRoZSBvbGQgb25l
LgorICAgIHZvaWQgc2V0SW1hZ2Uodm9pZCopOworCitwcml2YXRlOgorICAgIEVHTEltYWdlTGF5
ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudCgpCisgICAgICAgIDogbV9pbWFnZSgwKQorICAgICAg
ICAsIG1faW1hZ2VDaGFuZ2VkKGZhbHNlKQorICAgIHsKKyAgICAgICAgcmVmKCk7IC8vIE1hdGNo
ZWQgYnkgZGVyZWYoKSBpbiBsYXllckNvbXBvc2l0aW5nVGhyZWFkRGVzdHJveWVkKCkKKyAgICB9
CisKKyAgICB2b2lkKiBtX2ltYWdlOworICAgIGJvb2wgbV9pbWFnZUNoYW5nZWQ7CisgICAgUmVm
UHRyPFRleHR1cmU+IG1fdGV4dHVyZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2VuZGlmIC8vIEVHTElt
YWdlTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0VHTEltYWdlTGF5ZXJXZWJLaXRUaHJl
YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9FR0xJ
bWFnZUxheWVyV2ViS2l0VGhyZWFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZGFjZTIyNTQ5ODg0OGM1OGYx
MzYzZGM0ODU4ZmM2MGE4YmYxZDEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9FR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkLmNw
cApAQCAtMCwwICsxLDI4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAx
MiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0x
MzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRUdMSW1hZ2VM
YXllcldlYktpdFRocmVhZC5oIgorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQor
CisjaW5jbHVkZSAiTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5oIgorI2luY2x1ZGUgIkxheWVyUmVu
ZGVyZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRHcmFwaGljc0NvbnRleHQzRC5oIgorI2luY2x1ZGUg
PEJsYWNrQmVycnlQbGF0Zm9ybUdMRVMyQ29udGV4dFN0YXRlLmg+CisjaW5jbHVkZSA8QmxhY2tC
ZXJyeVBsYXRmb3JtR3JhcGhpY3MuaD4KKyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1Mb2cu
aD4KKyNpbmNsdWRlIDxFR0wvZWdsLmg+CisjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgorI2luY2x1
ZGUgPEdMRVMyL2dsMi5oPgorCit1c2luZyBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6
OkdMRVMyUHJvZ3JhbTsKK3VzaW5nIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6R0xF
UzJDb250ZXh0U3RhdGU7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIFBGTkVHTENS
RUFURUlNQUdFS0hSUFJPQyBlZ2xDcmVhdGVJbWFnZUtIUiA9IDA7CitzdGF0aWMgUEZORUdMREVT
VFJPWUlNQUdFS0hSUFJPQyBlZ2xEZXN0cm95SW1hZ2VLSFIgPSAwOworCitFR0xJbWFnZUxheWVy
V2ViS2l0VGhyZWFkOjpFR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkKExheWVyVHlwZSB0eXBlKQor
ICAgIDogTGF5ZXJXZWJLaXRUaHJlYWQodHlwZSwgMCkKKyAgICAsIG1fY2xpZW50KEVHTEltYWdl
TGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudDo6Y3JlYXRlKCkpCisgICAgLCBtX25lZWRzRGlz
cGxheShmYWxzZSkKKyAgICAsIG1fZnJvbnRCdWZmZXJUZXh0dXJlKDApCisgICAgLCBtX2Zibygw
KQorICAgICwgbV9zaGFkZXIoMCkKKyAgICAsIG1faW1hZ2UoMCkKK3sKKyAgICBsYXllckNvbXBv
c2l0aW5nVGhyZWFkKCktPnNldENsaWVudChtX2NsaWVudC5nZXQoKSk7CisgICAgc2V0TGF5ZXJQ
cm9ncmFtU2hhZGVyKExheWVyUHJvZ3JhbVNoYWRlclJHQkEpOworfQorCitFR0xJbWFnZUxheWVy
V2ViS2l0VGhyZWFkOjp+RUdMSW1hZ2VMYXllcldlYktpdFRocmVhZCgpCit7CisgICAgLy8gVGhl
IHN1YmNsYXNzIGlzIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIGRlbGV0ZUZyb250QnVmZmVyKCkK
KyAgICAvLyBiZWZvcmUgd2UgZ2V0IHRoaXMgZmFyLgorICAgIEFTU0VSVCghbV9mcm9udEJ1ZmZl
clRleHR1cmUpOworICAgIEFTU0VSVCghbV9mYm8pOworICAgIEFTU0VSVCghbV9zaGFkZXIpOwor
fQorCit2b2lkIEVHTEltYWdlTGF5ZXJXZWJLaXRUaHJlYWQ6OnNldE5lZWRzRGlzcGxheSgpCit7
CisgICAgbV9uZWVkc0Rpc3BsYXkgPSB0cnVlOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisK
K3ZvaWQgRUdMSW1hZ2VMYXllcldlYktpdFRocmVhZDo6dXBkYXRlRnJvbnRCdWZmZXIoY29uc3Qg
SW50U2l6ZSYgc2l6ZSwgdW5zaWduZWQgYmFja0J1ZmZlclRleHR1cmUpCit7CisgICAgaWYgKCFt
X25lZWRzRGlzcGxheSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHNpemUuaXNFbXB0eSgp
KSB7CisgICAgICAgIGlmIChzaXplICE9IG1fc2l6ZSkgeworICAgICAgICAgICAgZGVsZXRlRnJv
bnRCdWZmZXIoKTsKKyAgICAgICAgICAgIGlmIChtX2ltYWdlKQorICAgICAgICAgICAgICAgIG1f
Z2FyYmFnZS5hcHBlbmQobV9pbWFnZSk7CisgICAgICAgICAgICBtX2ltYWdlID0gMDsKKyAgICAg
ICAgICAgIG1fc2l6ZSA9IHNpemU7CisgICAgICAgIH0KKworICAgICAgICBtX25lZWRzRGlzcGxh
eSA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFlZ2xDcmVhdGVJ
bWFnZUtIUikgeworICAgICAgICBlZ2xDcmVhdGVJbWFnZUtIUiA9IHJlaW50ZXJwcmV0X2Nhc3Q8
UEZORUdMQ1JFQVRFSU1BR0VLSFJQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZWdsQ3JlYXRlSW1h
Z2VLSFIiKSk7CisgICAgICAgIGVnbERlc3Ryb3lJbWFnZUtIUiA9IHJlaW50ZXJwcmV0X2Nhc3Q8
UEZORUdMREVTVFJPWUlNQUdFS0hSUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImVnbERlc3Ryb3lJ
bWFnZUtIUiIpKTsKKyAgICB9CisKKyAgICBBU1NFUlQoZWdsQ3JlYXRlSW1hZ2VLSFIgJiYgZWds
RGVzdHJveUltYWdlS0hSKTsKKyAgICBpZiAoIWVnbENyZWF0ZUltYWdlS0hSIHx8ICFlZ2xEZXN0
cm95SW1hZ2VLSFIpIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEJsYWNrQmVycnk6OlBsYXRm
b3JtOworICAgICAgICBsb2dBbHdheXMoTG9nTGV2ZWxXYXJuLCAiZWdsR2V0UHJvY0FkZHJlc3Mg
Zm9yIGVnbENyZWF0ZS9EZXN0cm95SW1hZ2VLSFIgRkFJTEVEIik7CisgICAgICAgIG1fbmVlZHNE
aXNwbGF5ID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHTGVudW0gY3Vy
cmVudEFjdGl2ZVRleHR1cmUgPSAwOworICAgIGdsR2V0SW50ZWdlcnYoR0xfQUNUSVZFX1RFWFRV
UkUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnQqPigmY3VycmVudEFjdGl2ZVRleHR1cmUpKTsKKyAg
ICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOworCisgICAgeworICAgICAgICBHTEVTMkNv
bnRleHRTdGF0ZTo6VGV4dHVyZUFuZEZCT1N0YXRlU2F2ZXIgdGV4dHVyZUFuZEZCT1N0YXRlU2F2
ZXI7CisKKyAgICAgICAgaWYgKCFjcmVhdGVJbWFnZUlmTmVlZGVkKHNpemUpKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIG1fbmVlZHNEaXNwbGF5ID0gZmFsc2U7CisKKyAgICAgICAg
YmxpdFRvRnJvbnRCdWZmZXIoYmFja0J1ZmZlclRleHR1cmUpOworICAgIH0KKworICAgIGdsQWN0
aXZlVGV4dHVyZShjdXJyZW50QWN0aXZlVGV4dHVyZSk7Cit9CisKK3ZvaWQgRUdMSW1hZ2VMYXll
cldlYktpdFRocmVhZDo6ZGVsZXRlRnJvbnRCdWZmZXIoKQoreworICAgIGdsRGVsZXRlVGV4dHVy
ZXMoMSwgJm1fZnJvbnRCdWZmZXJUZXh0dXJlKTsKKyAgICBtX2Zyb250QnVmZmVyVGV4dHVyZSA9
IDA7CisgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1fZmJvKTsKKyAgICBtX2ZibyA9IDA7
CisgICAgZ2xEZWxldGVTaGFkZXIobV9zaGFkZXIpOworICAgIG1fc2hhZGVyID0gMDsKK30KKwor
dm9pZCBFR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkOjpjb21taXRQZW5kaW5nVGV4dHVyZVVwbG9h
ZHMoKQoreworICAgIC8vIFRoaXMgY2FsbCBpcyBzZXJpYWxpemVkIHdpdGggdGhlIGNvbXBvc2l0
aW5nIHRocmVhZCwgc28gaXQncyBzYWZlIHRvIHVwZGF0ZSB0aGUKKyAgICAvLyBpbWFnZSBhbmQg
ZGVzdHJveSBhbnkgb2xkIGltYWdlcy4KKworICAgIG1fY2xpZW50LT5zZXRJbWFnZShtX2ltYWdl
KTsKKworICAgIC8vIERlc3Ryb3kgdGhlIGdhcmJhZ2UgaW1hZ2VzIGluIGEgdGhyZWFkLXNhZmUg
d2F5CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2dhcmJhZ2Uuc2l6ZSgpOyArK2kpCisg
ICAgICAgIGVnbERlc3Ryb3lJbWFnZUtIUihCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6
OmVnbERpc3BsYXkoKSwgbV9nYXJiYWdlW2ldKTsKK30KKworYm9vbCBFR0xJbWFnZUxheWVyV2Vi
S2l0VGhyZWFkOjpjcmVhdGVJbWFnZUlmTmVlZGVkKGNvbnN0IEludFNpemUmIHNpemUpCit7Cisg
ICAgLy8gV2UgdXNlIGEgdGV4dHVyZSByYXRoZXIgdGhhbiBhIHJlbmRlcmJ1ZmZlciBhcyB0aGUg
YmFzaXMgb2YgdGhlIEZCTyBhbmQgRUdMSW1hZ2UsCisgICAgLy8gc2luY2UgdGhlIEVHTEltYWdl
IHdpbGwgYmUgdXNlZCBhcyBhIHRleHR1cmUgb24gdGhlIGNvbXBvc2l0aW5nIHRocmVhZCBpbiB0
aGUgZW5kLgorCisgICAgaWYgKCFtX2Zyb250QnVmZmVyVGV4dHVyZSkgeworICAgICAgICBnbEdl
blRleHR1cmVzKDEsICZtX2Zyb250QnVmZmVyVGV4dHVyZSk7CisgICAgICAgIGdsQmluZFRleHR1
cmUoR0xfVEVYVFVSRV8yRCwgbV9mcm9udEJ1ZmZlclRleHR1cmUpOworICAgICAgICBnbFRleFBh
cmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIp
OworICAgICAgICBnbFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5f
RklMVEVSLCBHTF9MSU5FQVIpOworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgICAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VE
R0UpOworICAgIH0KKworICAgIGlmICghbV9mYm8pCisgICAgICAgIGdsR2VuRnJhbWVidWZmZXJz
KDEsICZtX2Zibyk7CisKKyAgICBpZiAoIW1faW1hZ2UgfHwgc2l6ZSAhPSBtX3NpemUpIHsKKyAg
ICAgICAgSW50U2l6ZSBmYm9TaXplID0gc2l6ZTsKKworICAgICAgICAvLyBJbWFnaW5hdGlvbi1z
cGVjaWZpYyBmaXgKKyAgICAgICAgc3RhdGljIGJvb2wgaXNJbWFnaW5hdGlvbkhhcmR3YXJlID0g
c3RkOjpzdHJzdHIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2xHZXRTdHJpbmcoR0xf
UkVOREVSRVIpKSwgIlBvd2VyVlIgU0dYIik7CisgICAgICAgIGlmIChpc0ltYWdpbmF0aW9uSGFy
ZHdhcmUpCisgICAgICAgICAgICBmYm9TaXplID0gZmJvU2l6ZS5leHBhbmRlZFRvKEludFNpemUo
MTYsIDE2KSk7CisKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX2Zyb250
QnVmZmVyVGV4dHVyZSk7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVS
LCBtX2Zibyk7CisgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JB
LCBmYm9TaXplLndpZHRoKCksIGZib1NpemUuaGVpZ2h0KCksIDAsIEdMX1JHQkEsIEdMX1VOU0lH
TkVEX0JZVEUsIDApOworICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVG
RkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbV9mcm9udEJ1ZmZlclRl
eHR1cmUsIDApOworCisgICAgICAgIGlmIChnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJB
TUVCVUZGRVIpICE9IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBpZiAoZ2xHZXRFcnJvcigpICE9IEdMX05PX0VSUk9SKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIC8vIFRoZSBzaWJsaW5nIGlzIG9ycGhhbmVk
IGFmdGVyIGdsVGV4SW1hZ2UyRCwgcmVjcmVhdGUgdGhlIGltYWdlLgorICAgICAgICBpZiAobV9p
bWFnZSkKKyAgICAgICAgICAgIG1fZ2FyYmFnZS5hcHBlbmQobV9pbWFnZSk7CisgICAgICAgIG1f
aW1hZ2UgPSBlZ2xDcmVhdGVJbWFnZUtIUihCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6
OmVnbERpc3BsYXkoKSwgZWdsR2V0Q3VycmVudENvbnRleHQoKSwKKyAgICAgICAgICAgICAgICBF
R0xfR0xfVEVYVFVSRV8yRF9LSFIsIChFR0xDbGllbnRCdWZmZXIpbV9mcm9udEJ1ZmZlclRleHR1
cmUsIDApOworICAgICAgICBpZiAoIW1faW1hZ2UpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgbV9zaXplID0gc2l6ZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kwordm9pZCBFR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkOjpjcmVhdGVTaGFkZXJJZk5lZWRlZCgp
Cit7CisgICAgLy8gU2hhZGVycyBmb3IgZHJhd2luZyB0aGUgbGF5ZXIgY29udGVudHMuCisgICAg
c3RhdGljIGNoYXIgdmVydGV4U2hhZGVyU3RyaW5nW10gPQorICAgICAgICAiYXR0cmlidXRlIHZl
YzQgYV9wb3NpdGlvbjsgICBcbiIKKyAgICAgICAgImF0dHJpYnV0ZSB2ZWMyIGFfdGV4Q29vcmQ7
ICAgXG4iCisgICAgICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsgICAgIFxuIgorICAgICAg
ICAidm9pZCBtYWluKCkgICAgICAgICAgICAgICAgICBcbiIKKyAgICAgICAgInsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXG4iCisgICAgICAgICIgIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlv
bjsgIFxuIgorICAgICAgICAiICB2X3RleENvb3JkID0gYV90ZXhDb29yZDsgICBcbiIKKyAgICAg
ICAgIn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iOworCisgICAgc3RhdGljIGNoYXIg
ZnJhZ21lbnRTaGFkZXJTdHJpbmdSR0JBW10gPQorICAgICAgICAidmFyeWluZyBtZWRpdW1wIHZl
YzIgdl90ZXhDb29yZDsgICAgICAgICAgICAgICAgICAgXG4iCisgICAgICAgICJ1bmlmb3JtIGxv
d3Agc2FtcGxlcjJEIHNfdGV4dHVyZTsgICAgICAgICAgICAgICAgICBcbiIKKyAgICAgICAgInZv
aWQgbWFpbigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorICAg
ICAgICAieyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XG4iCisgICAgICAgICIgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRChzX3RleHR1cmUsIHZfdGV4
Q29vcmQpOyBcbiIKKyAgICAgICAgIn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFxuIjsKKworICAgIGlmICghbV9zaGFkZXIpIHsKKyAgICAgICAgbV9z
aGFkZXIgPSBMYXllclJlbmRlcmVyOjpsb2FkU2hhZGVyUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTdHJp
bmcsIGZyYWdtZW50U2hhZGVyU3RyaW5nUkdCQSk7CisgICAgICAgIGlmICghbV9zaGFkZXIpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGdsQmluZEF0dHJpYkxvY2F0aW9uKG1fc2hhZGVy
LCBHTEVTMlByb2dyYW06OlBvc2l0aW9uQXR0cmlidXRlSW5kZXgsICJhX3Bvc2l0aW9uIik7Cisg
ICAgICAgIGdsQmluZEF0dHJpYkxvY2F0aW9uKG1fc2hhZGVyLCBHTEVTMlByb2dyYW06OlRleENv
b3JkQXR0cmlidXRlSW5kZXgsICJhX3RleENvb3JkIik7CisgICAgICAgIGdsTGlua1Byb2dyYW0o
bV9zaGFkZXIpOworICAgICAgICB1bnNpZ25lZCBzYW1wbGVyTG9jYXRpb24gPSBnbEdldFVuaWZv
cm1Mb2NhdGlvbihtX3NoYWRlciwgInNfdGV4dHVyZSIpOworICAgICAgICBnbFVzZVByb2dyYW0o
bV9zaGFkZXIpOworICAgICAgICBnbFVuaWZvcm0xaShzYW1wbGVyTG9jYXRpb24sIDApOworICAg
IH0KK30KKwordm9pZCBFR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkOjpibGl0VG9Gcm9udEJ1ZmZl
cih1bnNpZ25lZCBiYWNrQnVmZmVyVGV4dHVyZSkKK3sKKyAgICBpZiAoIWJhY2tCdWZmZXJUZXh0
dXJlKQorICAgICAgICByZXR1cm47CisKKyAgICBHTHVpbnQgY3VycmVudFByb2dyYW0gPSAwOwor
ICAgIGdsR2V0SW50ZWdlcnYoR0xfQ1VSUkVOVF9QUk9HUkFNLCByZWludGVycHJldF9jYXN0PEdM
aW50Kj4oJmN1cnJlbnRQcm9ncmFtKSk7CisKKyAgICBjcmVhdGVTaGFkZXJJZk5lZWRlZCgpOwor
CisgICAgR0x1aW50IGN1cnJlbnRBcnJheUJ1ZmZlckJpbmRpbmcgPSAwLCBjdXJyZW50RWxlbWVu
dEFycmF5QnVmZmVyQmluZGluZyA9IDA7CisgICAgR0xpbnQgY3VycmVudFZpZXdwb3J0WzRdID0g
eyAwLCAwLCAwLCAwIH07CisgICAgZ2xHZXRJbnRlZ2VydihHTF9BUlJBWV9CVUZGRVJfQklORElO
RywgcmVpbnRlcnByZXRfY2FzdDxHTGludCo+KCZjdXJyZW50QXJyYXlCdWZmZXJCaW5kaW5nKSk7
CisgICAgZ2xHZXRJbnRlZ2VydihHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HLCByZWlu
dGVycHJldF9jYXN0PEdMaW50Kj4oJmN1cnJlbnRFbGVtZW50QXJyYXlCdWZmZXJCaW5kaW5nKSk7
CisgICAgZ2xHZXRJbnRlZ2VydihHTF9WSUVXUE9SVCwgJmN1cnJlbnRWaWV3cG9ydFswXSk7CisK
KyAgICBHTEVTMkNvbnRleHRTdGF0ZTo6R2xvYmFsRmxhZ1N0YXRlU2F2ZXIgZmxhZ1N0YXRlU2F2
ZXIoZmFsc2UgLypyZXN0b3JlQmxlbmRGdW5jKi8pOworCisgICAgZ2xEaXNhYmxlKEdMX0RFUFRI
X1RFU1QpOworICAgIGdsRGlzYWJsZShHTF9TVEVOQ0lMX1RFU1QpOworICAgIGdsRGlzYWJsZShH
TF9TQ0lTU09SX1RFU1QpOworICAgIGdsRGlzYWJsZShHTF9DVUxMX0ZBQ0UpOworICAgIGdsRGlz
YWJsZShHTF9CTEVORCk7CisKKyAgICBnbFZpZXdwb3J0KDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBt
X3NpemUuaGVpZ2h0KCkpOworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBt
X2Zibyk7CisgICAgZ2xVc2VQcm9ncmFtKG1fc2hhZGVyKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfMkQsIGJhY2tCdWZmZXJUZXh0dXJlKTsKKworICAgIHsKKyAgICAgICAgR0xFUzJD
b250ZXh0U3RhdGU6OlZlcnRleEF0dHJpYnV0ZVN0YXRlU2F2ZXIgdmVydGV4QXR0cmliU3RhdGVT
YXZlcjsKKworICAgICAgICBzdGF0aWMgZmxvYXQgdGV4Y29vcmRzWzQgKiAyXSA9IHsgMCwgMCwg
IDAsIDEsICAxLCAxLCAgMSwgMCB9OworICAgICAgICBzdGF0aWMgZmxvYXQgdmVydGljZXNbXSA9
IHsgLTEsIC0xLCAtMSwgMSwgMSwgMSwgMSwgLTEgfTsKKyAgICAgICAgZ2xCaW5kQnVmZmVyKEdM
X0FSUkFZX0JVRkZFUiwgMCk7CisgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9FTEVNRU5UX0FSUkFZ
X0JVRkZFUiwgMCk7CisgICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0xFUzJQcm9n
cmFtOjpQb3NpdGlvbkF0dHJpYnV0ZUluZGV4KTsKKyAgICAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheShHTEVTMlByb2dyYW06OlRleENvb3JkQXR0cmlidXRlSW5kZXgpOworICAgICAgICBn
bFZlcnRleEF0dHJpYlBvaW50ZXIoR0xFUzJQcm9ncmFtOjpQb3NpdGlvbkF0dHJpYnV0ZUluZGV4
LCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIHZlcnRpY2VzKTsKKyAgICAgICAgZ2xWZXJ0ZXhB
dHRyaWJQb2ludGVyKEdMRVMyUHJvZ3JhbTo6VGV4Q29vcmRBdHRyaWJ1dGVJbmRleCwgMiwgR0xf
RkxPQVQsIEdMX0ZBTFNFLCAwLCB0ZXhjb29yZHMpOworICAgICAgICBnbERyYXdBcnJheXMoR0xf
VFJJQU5HTEVfRkFOLCAwLCA0KTsKKworICAgICAgICAvLyBJZiB3ZSBkb24ndCBmbHVzaCwgdGhl
IEVHTEltYWdlIG1heSBuZXZlciB1cGRhdGUgaXRzIGFwcGVhcmFuY2UKKyAgICAgICAgZ2xGbHVz
aCgpOworCisgICAgICAgIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KEdMRVMyUHJvZ3JhbTo6
UG9zaXRpb25BdHRyaWJ1dGVJbmRleCk7CisgICAgICAgIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFy
cmF5KEdMRVMyUHJvZ3JhbTo6VGV4Q29vcmRBdHRyaWJ1dGVJbmRleCk7CisKKyAgICAgICAgZ2xC
aW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgY3VycmVudEFycmF5QnVmZmVyQmluZGluZyk7Cisg
ICAgICAgIGdsQmluZEJ1ZmZlcihHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgY3VycmVudEVsZW1l
bnRBcnJheUJ1ZmZlckJpbmRpbmcpOworICAgIH0KKworICAgIC8vIFRoZSBwcmV2aW91cyBwcm9n
cmFtIG1pZ2h0IGhhdmUgYmVlbiBkZWxldGVkIGJ5IHJlZmNvdW50IGRlc3RydWN0aW9uCisgICAg
Ly8gd2l0aCBhbm90aGVyIG9uZSBub3cgaW4gdXNlLiBEb24ndCB0cnkgdG8gcmVzdG9yZSBpdCBs
YXRlci4KKyAgICBpZiAoY3VycmVudFByb2dyYW0gJiYgIWdsSXNQcm9ncmFtKGN1cnJlbnRQcm9n
cmFtKSkKKyAgICAgICAgY3VycmVudFByb2dyYW0gPSAwOworCisgICAgZ2xVc2VQcm9ncmFtKGN1
cnJlbnRQcm9ncmFtKTsKKyAgICBnbFZpZXdwb3J0KGN1cnJlbnRWaWV3cG9ydFswXSwgY3VycmVu
dFZpZXdwb3J0WzFdLCBjdXJyZW50Vmlld3BvcnRbMl0sIGN1cnJlbnRWaWV3cG9ydFszXSk7Cit9
CisKK30KKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgRU5BQkxF
KEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRUdMSW1hZ2VMYXllcldlYktpdFRocmVhZC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9FR0xJbWFnZUxheWVyV2Vi
S2l0VGhyZWFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjU3NTYyOWZmNjJmZjRkZmE5ZDFlMzUwN2ExMGRiZDQ4
MjhhZGVmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvRUdMSW1hZ2VMYXllcldlYktpdFRocmVhZC5oCkBAIC0wLDAgKzEsNjgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIgUmVzZWFyY2ggSW4gTW90
aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0
ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKwor
I2lmbmRlZiBFR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkX2gKKyNkZWZpbmUgRUdMSW1hZ2VMYXll
cldlYktpdFRocmVhZF9oCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNp
bmNsdWRlICJFR0xJbWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQuaCIKKyNpbmNsdWRl
ICJMYXllcldlYktpdFRocmVhZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEJhc2Ug
Y2xhc3MgZm9yIEVHTEltYWdlIGJhc2VkIGxheWVycworLy8gVGhlIHN1YmNsYXNzIG11c3QgcmVp
bXBsZW1lbnQgdXBkYXRlVGV4dHVyZUNvbnRlbnRzSWZOZWVkZWQoKSB0byBjYWxsIHVwZGF0ZUZy
b250QnVmZmVyCisvLyB3aXRoIHRoZSBhcHByb3ByaWF0ZSBwYXJhbWV0ZXJzLCBhbmQgbWFrZSBz
dXJlIHRvIGNhbGwgZGVsZXRlRnJvbnRCdWZmZXIoKSBmcm9tIGl0cworLy8gZGVzdHJ1Y3Rvci4K
K2NsYXNzIEVHTEltYWdlTGF5ZXJXZWJLaXRUaHJlYWQgOiBwdWJsaWMgTGF5ZXJXZWJLaXRUaHJl
YWQgeworcHVibGljOgorICAgIHZpcnR1YWwgfkVHTEltYWdlTGF5ZXJXZWJLaXRUaHJlYWQoKTsK
KworICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKTsKKworcHJvdGVjdGVkOgorICAg
IEVHTEltYWdlTGF5ZXJXZWJLaXRUaHJlYWQoTGF5ZXJUeXBlKTsKKworICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVUZXh0dXJlQ29udGVudHNJZk5lZWRlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Y29tbWl0UGVuZGluZ1RleHR1cmVVcGxvYWRzKCk7CisKKyAgICAvLyBUaGUgY29udGV4dCBtdXN0
IGJlIGN1cnJlbnQgYmVmb3JlIHlvdSBjYWxsIGFueSBvZiB0aGVzZQorICAgIHZvaWQgdXBkYXRl
RnJvbnRCdWZmZXIoY29uc3QgSW50U2l6ZSYsIHVuc2lnbmVkIGJhY2tCdWZmZXJUZXh0dXJlKTsK
KyAgICB2b2lkIGRlbGV0ZUZyb250QnVmZmVyKCk7CisKK3ByaXZhdGU6CisgICAgYm9vbCBjcmVh
dGVJbWFnZUlmTmVlZGVkKGNvbnN0IEludFNpemUmKTsKKyAgICB2b2lkIGNyZWF0ZVNoYWRlcklm
TmVlZGVkKCk7CisgICAgdm9pZCBibGl0VG9Gcm9udEJ1ZmZlcih1bnNpZ25lZCBiYWNrQnVmZmVy
VGV4dHVyZSk7CisKKyAgICBSZWZQdHI8RUdMSW1hZ2VMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xp
ZW50PiBtX2NsaWVudDsKKyAgICBib29sIG1fbmVlZHNEaXNwbGF5OworICAgIHVuc2lnbmVkIG1f
ZnJvbnRCdWZmZXJUZXh0dXJlOworICAgIHVuc2lnbmVkIG1fZmJvOworICAgIHVuc2lnbmVkIG1f
c2hhZGVyOworICAgIHZvaWQqIG1faW1hZ2U7CisgICAgVmVjdG9yPHZvaWQqPiBtX2dhcmJhZ2U7
CisgICAgSW50U2l6ZSBtX3NpemU7Cit9OworCit9CisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCisKKyNlbmRpZiAvLyBFR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
R3JhcGhpY3NDb250ZXh0M0RCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvR3JhcGhpY3NDb250ZXh0M0RCbGFja0JlcnJ5LmNwcAppbmRl
eCAzNjk4ZmQyNWYxMjljMmM0MDc2ZDUzOWE4M2ViOWEyZGE2MWI3ZGUzLi43NjU4N2M1MDAyODdm
ZGM0ZGJkNjFiZDA0MzRhNWY3MzEyZDYxOTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBoaWNzQ29udGV4dDNEQmxhY2tCZXJyeS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFw
aGljc0NvbnRleHQzREJsYWNrQmVycnkuY3BwCkBAIC0xMzMsNiArMTMzLDE4IEBAIEdyYXBoaWNz
Q29udGV4dDNEOjp+R3JhcGhpY3NDb250ZXh0M0QoKQogICAgIEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpHcmFwaGljczo6ZGVzdHJveVdlYkdMQ29udGV4dChtX2NvbnRleHQpOwogfQogCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpwcmVwYXJlVGV4dHVyZSgpCit7CisgICAgaWYgKG1fbGF5ZXJDb21w
b3NpdGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAg
ICBpZiAobV9hdHRycy5hbnRpYWxpYXMpCisgICAgICAgIHJlc29sdmVNdWx0aXNhbXBsaW5nSWZO
ZWNlc3NhcnkoKTsKKworICAgIG1fbGF5ZXJDb21wb3NpdGVkID0gdHJ1ZTsKK30KKwogYm9vbCBH
cmFwaGljc0NvbnRleHQzRDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAg
ICAvLyBBIEJsYWNrQmVycnktc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gb2YgcmVzaGFwZUZCT3Mg
aXMgbmVjZXNzYXJ5IGJlY2F1c2UgaXQgY29udGFpbnM6CkBAIC0zNDQsNyArMzU2LDcgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHQzRDo6aXNFcnJvckdlbmVyYXRlZE9uT3V0T2ZCb3VuZHNBY2Nlc3Nl
cygpIGNvbnN0CiAKIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRmb3Jt
VGV4dHVyZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fY29tcG9zaXRpbmdMYXllci0+Z2V0VGV4
dHVyZUlEKCk7CisgICAgcmV0dXJuIG1fdGV4dHVyZTsKIH0KIAogUGxhdGZvcm1HcmFwaGljc0Nv
bnRleHQzRCBHcmFwaGljc0NvbnRleHQzRDo6cGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmNwcAppbmRleCAyYzcx
NmZhNWIyNzMxYzA2NDUwNzg2MzM3ZmFkMWYyYmY2MGM5MjcwLi44ZjNhMmJiNTY2YjMwZTU3Y2Zh
ZWUzNjM5YWQ1NTBhYTZmOGQzNzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGlu
Z1RocmVhZC5jcHAKQEAgLTI0OSwzMyArMjQ5LDYgQEAgdm9pZCBMYXllckNvbXBvc2l0aW5nVGhy
ZWFkOjpkcmF3VGV4dHVyZXMoZG91YmxlIHNjYWxlLCBpbnQgcG9zaXRpb25Mb2NhdGlvbiwgaW4K
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgotI2lmIEVOQUJMRShXRUJHTCkKLSAgICBp
ZiAobGF5ZXJUeXBlKCkgPT0gTGF5ZXJEYXRhOjpXZWJHTExheWVyKSB7Ci0gICAgICAgIG1fbGF5
ZXJSZW5kZXJlci0+YWRkTGF5ZXJUb1JlbGVhc2VUZXh0dXJlUmVzb3VyY2VzTGlzdCh0aGlzKTsK
LSAgICAgICAgcHRocmVhZF9tdXRleF9sb2NrKG1fZnJvbnRCdWZmZXJMb2NrKTsKLSAgICAgICAg
Z2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc2l0aW9uTG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9G
QUxTRSwgMCwgJm1fdHJhbnNmb3JtZWRCb3VuZHMpOwotICAgICAgICBmbG9hdCBjYW52YXNXaWR0
aFJhdGlvID0gMS4wZjsKLSAgICAgICAgZmxvYXQgY2FudmFzSGVpZ2h0UmF0aW8gPSAxLjBmOwot
ICAgICAgICBmbG9hdCB1cHNpZGVEb3duWzQgKiAyXSA9IHsgMCwgMSwgIDAsIDEgLSBjYW52YXNI
ZWlnaHRSYXRpbywgIGNhbnZhc1dpZHRoUmF0aW8sIDEgLSBjYW52YXNIZWlnaHRSYXRpbywgIGNh
bnZhc1dpZHRoUmF0aW8sIDEgfTsKLSAgICAgICAgLy8gRmxpcCB0aGUgdGV4dHVyZSBZIGF4aXMg
YmVjYXVzZSBPcGVuR0wgYW5kIFNraWEgaGF2ZSBkaWZmZXJlbnQgb3JpZ2lucwotICAgICAgICBn
bFZlcnRleEF0dHJpYlBvaW50ZXIodGV4Q29vcmRMb2NhdGlvbiwgMiwgR0xfRkxPQVQsIEdMX0ZB
TFNFLCAwLCB1cHNpZGVEb3duKTsKLSAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJE
LCBtX3RleElEKTsKLSAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFX0ZBTiwgMCwgNCk7
Ci0gICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgY2FudmFzL3RleHR1cmUgaXMgbGFyZ2VyIHRoYW4g
MjA0OHgyMDQ4LCB0aGVuIHdlJ2xsIGRpZSBoZXJlCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0j
ZW5kaWYKLSAgICBpZiAobV90ZXhJRCkgewotICAgICAgICBtX2xheWVyUmVuZGVyZXItPmFkZExh
eWVyVG9SZWxlYXNlVGV4dHVyZVJlc291cmNlc0xpc3QodGhpcyk7Ci0gICAgICAgIHB0aHJlYWRf
bXV0ZXhfbG9jayhtX2Zyb250QnVmZmVyTG9jayk7Ci0KLSAgICAgICAgZ2xCaW5kVGV4dHVyZShH
TF9URVhUVVJFXzJELCBtX3RleElEKTsKLSAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHBv
c2l0aW9uTG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgJm1fdHJhbnNmb3JtZWRC
b3VuZHMpOwotICAgICAgICBmbG9hdCB1cHNpZGVEb3duWzQgKiAyXSA9IHsgMCwgMSwgIDAsIDAs
ICAxLCAwLCAgMSwgMSB9OwotICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIodGV4Q29vcmRM
b2NhdGlvbiwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCB1cHNpZGVEb3duKTsKLSAgICAgICAg
Z2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFX0ZBTiwgMCwgNCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9CiAKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LT5kcmF3VGV4dHVyZXMo
dGhpcywgc2NhbGUsIHBvc2l0aW9uTG9jYXRpb24sIHRleENvb3JkTG9jYXRpb24pOwpAQCAtMzI1
LDggKzI5OCw2IEBAIHZvaWQgTGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6cmVsZWFzZVRleHR1cmVS
ZXNvdXJjZXMoKQogICAgICAgICBtX3BsdWdpbkJ1ZmZlciA9IDA7CiAgICAgICAgIG1fcGx1Z2lu
Vmlldy0+dW5sb2NrRnJvbnRCdWZmZXIoKTsKICAgICB9Ci0gICAgaWYgKG1fZnJvbnRCdWZmZXJM
b2NrICYmIChtX3RleElEIHx8IGxheWVyVHlwZSgpID09IExheWVyRGF0YTo6V2ViR0xMYXllcikp
Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKG1fZnJvbnRCdWZmZXJMb2NrKTsKIH0KIAog
dm9pZCBMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpzZXRQbHVnaW5WaWV3KFBsdWdpblZpZXcqIHBs
dWdpblZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9i
bGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5oCmluZGV4IDQ2
YjkxMWNlMjZiOGRjZjU4Nzc3MzFlM2RkZTA0MzM3OTNjZTYxZjguLmZlZDdlYmFlNWU0ZDIyZGQ0
OTAxYzU1YmY3MzFlNzcxYjI3ODMwNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGlu
Z1RocmVhZC5oCkBAIC0xMjYsNiArMTI2LDggQEAgY2xhc3MgTGF5ZXJDb21wb3NpdGluZ1RocmVh
ZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxMYXllckNvbXBvc2l0aW5nVGhyZWEKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxMYXllckNvbXBvc2l0aW5nVGhyZWFkPiBjcmVh
dGUoTGF5ZXJUeXBlLCBMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50Kik7CiAKKyAgICB2b2lk
IHNldENsaWVudChMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50KiBjbGllbnQpIHsgbV9jbGll
bnQgPSBjbGllbnQ7IH0KKwogICAgIC8vIFRocmVhZCBzYWZlCiAgICAgdm9pZCBzZXRQbHVnaW5W
aWV3KFBsdWdpblZpZXcqKTsKICNpZiBFTkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckRhdGEuaAppbmRleCA0
ZWIxMWUzMWZiMWUxMDY3NGVkZDAxY2U2YjM2MDM1MjUyZWZiNjBkLi4wYzQ5ODc0MTA2M2QzNTZi
ZjY3ZDIxYjk3MDgzNTNkMGNlZDBiZjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJEYXRhLmgKQEAgLTkzLDcgKzkzLDYg
QEAgcHVibGljOgogICAgICAgICAsIG1fbWVkaWFQbGF5ZXIoMCkKICNlbmRpZgogICAgICAgICAs
IG1fdGV4SUQoMCkKLSAgICAgICAgLCBtX2Zyb250QnVmZmVyTG9jaygwKQogICAgICAgICAsIG1f
c3VzcGVuZFRpbWUoMCkKICAgICAgICAgLCBtX2RvdWJsZVNpZGVkKHRydWUpCiAgICAgICAgICwg
bV9tYXNrc1RvQm91bmRzKGZhbHNlKQpAQCAtMjIxLDggKzIyMCw2IEBAIHByb3RlY3RlZDoKIAog
ICAgIHVuc2lnbmVkIG1fdGV4SUQ7CiAKLSAgICBwdGhyZWFkX211dGV4X3QqIG1fZnJvbnRCdWZm
ZXJMb2NrOwotCiAgICAgZG91YmxlIG1fc3VzcGVuZFRpbWU7CiAKICAgICB1bnNpZ25lZCBtX2Rv
dWJsZVNpZGVkIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5jcHAKaW5kZXggODg4
YjA0Y2EyNjIzODc3N2NjM2EwZTdjZmU4Y2FlYTFhNzQwYzEyNC4uMjk2ZWJhYTRlNGEwYjNlYjA2
NTk1M2E3NmRmMjBiNWE4ZGZjMWUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5j
cHAKQEAgLTc2LDkgKzc2LDYgQEAgTGF5ZXJXZWJLaXRUaHJlYWQ6OkxheWVyV2ViS2l0VGhyZWFk
KExheWVyVHlwZSB0eXBlLCBHcmFwaGljc0xheWVyQmxhY2tCZXJyeSogb3cKIAogTGF5ZXJXZWJL
aXRUaHJlYWQ6On5MYXllcldlYktpdFRocmVhZCgpCiB7Ci0gICAgaWYgKG1fZnJvbnRCdWZmZXJM
b2NrKQotICAgICAgICBwdGhyZWFkX211dGV4X2Rlc3Ryb3kobV9mcm9udEJ1ZmZlckxvY2spOwot
CiAgICAgaWYgKG1fdGlsZXIpCiAgICAgICAgIG1fdGlsZXItPmxheWVyV2ViS2l0VGhyZWFkRGVz
dHJveWVkKCk7CiAKQEAgLTE2MiwxOCArMTU5LDE2IEBAIGJvb2wgTGF5ZXJXZWJLaXRUaHJlYWQ6
OmNvbnRlbnRzVmlzaWJsZShjb25zdCBJbnRSZWN0JiBjb250ZW50c1JlY3QpIGNvbnN0CiAgICAg
cmV0dXJuIG1fb3duZXItPmNvbnRlbnRzVmlzaWJsZShjb250ZW50c1JlY3QpOwogfQogCi12b2lk
IExheWVyV2ViS2l0VGhyZWFkOjpjcmVhdGVGcm9udEJ1ZmZlckxvY2soKQordm9pZCBMYXllcldl
YktpdFRocmVhZDo6dXBkYXRlVGV4dHVyZUNvbnRlbnRzSWZOZWVkZWQoKQogewotICAgIHB0aHJl
YWRfbXV0ZXhhdHRyX3QgbXV0ZXhBdHRyaWJ1dGVzOwotICAgIHB0aHJlYWRfbXV0ZXhhdHRyX2lu
aXQoJm11dGV4QXR0cmlidXRlcyk7Ci0gICAgbV9mcm9udEJ1ZmZlckxvY2sgPSBuZXcgcHRocmVh
ZF9tdXRleF90OwotICAgIHB0aHJlYWRfbXV0ZXhfaW5pdChtX2Zyb250QnVmZmVyTG9jaywgJm11
dGV4QXR0cmlidXRlcyk7CisgICAgaWYgKG1fdGlsZXIpCisgICAgICAgIG1fdGlsZXItPnVwZGF0
ZVRleHR1cmVDb250ZW50c0lmTmVlZGVkKG1faXNNYXNrID8gMS4wIDogY29udGVudHNTY2FsZSgp
KTsKIH0KIAotdm9pZCBMYXllcldlYktpdFRocmVhZDo6dXBkYXRlVGV4dHVyZUNvbnRlbnRzSWZO
ZWVkZWQoKQordm9pZCBMYXllcldlYktpdFRocmVhZDo6Y29tbWl0UGVuZGluZ1RleHR1cmVVcGxv
YWRzKCkKIHsKICAgICBpZiAobV90aWxlcikKLSAgICAgICAgbV90aWxlci0+dXBkYXRlVGV4dHVy
ZUNvbnRlbnRzSWZOZWVkZWQobV9pc01hc2sgPyAxLjAgOiBjb250ZW50c1NjYWxlKCkpOworICAg
ICAgICBtX3RpbGVyLT5jb21taXRQZW5kaW5nVGV4dHVyZVVwbG9hZHMoKTsKIH0KIAogdm9pZCBM
YXllcldlYktpdFRocmVhZDo6c2V0Q29udGVudHMoSW1hZ2UqIGNvbnRlbnRzKQpAQCAtMzAyLDgg
KzI5Nyw3IEBAIHZvaWQgTGF5ZXJXZWJLaXRUaHJlYWQ6OmNvbW1pdE9uQ29tcG9zaXRpbmdUaHJl
YWQoKQogICAgIH0KICAgICBtX3Bvc2l0aW9uID0gb2xkUG9zaXRpb247CiAgICAgdXBkYXRlTGF5
ZXJIaWVyYXJjaHkoKTsKLSAgICBpZiAobV90aWxlcikKLSAgICAgICAgbV90aWxlci0+Y29tbWl0
UGVuZGluZ1RleHR1cmVVcGxvYWRzKCk7CisgICAgY29tbWl0UGVuZGluZ1RleHR1cmVVcGxvYWRz
KCk7CiAKICAgICBzaXplX3QgbGlzdFNpemUgPSBtX3N1YmxheWVycy5zaXplKCk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgaSsrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRo
cmVhZC5oCmluZGV4IDU2NDk0MmRhNDRhMTljYmQ5NGQ2M2E5MjQ3MjJjZGYzZjk1MzAyYTQuLjk2
MDRiYzZjYWI3MDRhNTQ4MWU1NjQ2OGQ1MDVlZTk3YTNhNjc4MzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJlYWQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVy
V2ViS2l0VGhyZWFkLmgKQEAgLTE2Myw3ICsxNjMsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lk
IHNldE5lZWRzVGV4dHVyZShib29sIG5lZWRzVGV4dHVyZSkgeyBtX25lZWRzVGV4dHVyZSA9IG5l
ZWRzVGV4dHVyZTsgfQogICAgIHZvaWQgc2V0TGF5ZXJQcm9ncmFtU2hhZGVyKExheWVyRGF0YTo6
TGF5ZXJQcm9ncmFtU2hhZGVyIHNoYWRlcikgeyBtX2xheWVyUHJvZ3JhbVNoYWRlciA9IHNoYWRl
cjsgfQotICAgIHZvaWQgY3JlYXRlRnJvbnRCdWZmZXJMb2NrKCk7CiAgICAgYm9vbCBpc0RyYXdh
YmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc0RyYXdhYmxlOyB9CiAKICAgICB2b2lkIHN0YXJ0QW5p
bWF0aW9ucyhkb3VibGUgdGltZSk7CkBAIC0xNzIsNiArMTcxLDcgQEAgcHJvdGVjdGVkOgogCiAg
ICAgdmlydHVhbCB2b2lkIGJvdW5kc0NoYW5nZWQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlVGV4dHVyZUNvbnRlbnRzSWZOZWVkZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0UGVu
ZGluZ1RleHR1cmVVcGxvYWRzKCk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVMYXllckhp
ZXJhcmNoeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9XZWJHTExheWVyV2ViS2l0VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvV2ViR0xMYXllcldlYktpdFRocmVhZC5jcHAKaW5k
ZXggNzViOWM1ZmE0NGZhMDgzYjVlZDk4ODVlNDY3Y2RhNjBiODFhYmViNi4uMjk1YWNmNGQyNjlj
MmVmOTY2MWQ2Mzg2MDFmMTU3NzVjNTk5YzY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9XZWJHTExheWVyV2ViS2l0VGhyZWFkLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1dlYkdMTGF5
ZXJXZWJLaXRUaHJlYWQuY3BwCkBAIC0yNywzNSArMjcsMjUgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogV2ViR0xMYXllcldlYktpdFRocmVhZDo6V2ViR0xMYXllcldlYktpdFRocmVhZCgpCi0g
ICAgOiBMYXllcldlYktpdFRocmVhZChXZWJHTExheWVyLCAwKQorICAgIDogRUdMSW1hZ2VMYXll
cldlYktpdFRocmVhZChXZWJHTExheWVyKQogICAgICwgbV93ZWJHTENvbnRleHQoMCkKLSAgICAs
IG1fbmVlZHNEaXNwbGF5KGZhbHNlKQogewotICAgIHNldExheWVyUHJvZ3JhbVNoYWRlcihMYXll
clByb2dyYW1TaGFkZXJSR0JBKTsKIH0KIAogV2ViR0xMYXllcldlYktpdFRocmVhZDo6fldlYkdM
TGF5ZXJXZWJLaXRUaHJlYWQoKQogewotfQotCi12b2lkIFdlYkdMTGF5ZXJXZWJLaXRUaHJlYWQ6
OnNldE5lZWRzRGlzcGxheSgpCi17Ci0gICAgbV9uZWVkc0Rpc3BsYXkgPSB0cnVlOwotICAgIHNl
dE5lZWRzQ29tbWl0KCk7CisgICAgaWYgKG1fd2ViR0xDb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKKyAgICAgICAgZGVsZXRlRnJvbnRCdWZmZXIoKTsKIH0KIAogdm9pZCBXZWJHTExheWVy
V2ViS2l0VGhyZWFkOjp1cGRhdGVUZXh0dXJlQ29udGVudHNJZk5lZWRlZCgpCiB7Ci0gICAgLy8g
RklYTUU6IERvZXMgV2ViR0xMYXllciBhbHdheXMgbmVlZCBkaXNwbGF5PyBPciBjYW4gd2UganVz
dCByZXR1cm4gaW1tZWRpYXRlbHkgaWYgKCFtX25lZWRzRGlzcGxheSk/Ci0gICAgbV9uZWVkc0Rp
c3BsYXkgPSBmYWxzZTsKKyAgICBpZiAoIW1fd2ViR0xDb250ZXh0IHx8ICFtX3dlYkdMQ29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCisgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9m
cm9udEJ1ZmZlckxvY2spCi0gICAgICAgIGNyZWF0ZUZyb250QnVmZmVyTG9jaygpOwotCi0gICAg
Ly8gTG9jayBjb3BpZWQgR0wgdGV4dHVyZSBzbyB0aGF0IHRoZSBVSSB0aHJlYWQgd29uJ3QgYWNj
ZXNzIGl0IHdoaWxlIHdlIGFyZSBkcmF3aW5nIGludG8gaXQuCi0gICAgcHRocmVhZF9tdXRleF9s
b2NrKG1fZnJvbnRCdWZmZXJMb2NrKTsKICAgICBtX3dlYkdMQ29udGV4dC0+cHJlcGFyZVRleHR1
cmUoKTsKLSAgICBwdGhyZWFkX211dGV4X3VubG9jayhtX2Zyb250QnVmZmVyTG9jayk7CisKKyAg
ICB1cGRhdGVGcm9udEJ1ZmZlcihtX3dlYkdMQ29udGV4dC0+Z2V0SW50ZXJuYWxGcmFtZWJ1ZmZl
clNpemUoKSwgbV93ZWJHTENvbnRleHQtPnBsYXRmb3JtVGV4dHVyZSgpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9XZWJHTExheWVyV2ViS2l0VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1dlYkdMTGF5ZXJXZWJLaXRUaHJlYWQuaApp
bmRleCA2YmNiNDg2NTg4NjdiZDIwY2FkYzdmM2FlYWVjNzZhZjAwZDE0NjA5Li5iMWNkNTdmZTlj
YjQwZWEwOTVhMTg5YjI3YWQ1NTBlODEwYTA1M2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1dlYkdMTGF5ZXJXZWJLaXRUaHJlYWQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1dlYkdMTGF5
ZXJXZWJLaXRUaHJlYWQuaApAQCAtMjEsMTMgKzIxLDEzIEBACiAKICNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpICYmIEVOQUJMRShXRUJHTCkKIAotI2luY2x1ZGUgIkxheWVyV2ViS2l0
VGhyZWFkLmgiCisjaW5jbHVkZSAiRUdMSW1hZ2VMYXllcldlYktpdFRocmVhZC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogCi1jbGFzcyBXZWJH
TExheWVyV2ViS2l0VGhyZWFkIDogcHVibGljIExheWVyV2ViS2l0VGhyZWFkIHsKK2NsYXNzIFdl
YkdMTGF5ZXJXZWJLaXRUaHJlYWQgOiBwdWJsaWMgRUdMSW1hZ2VMYXllcldlYktpdFRocmVhZCB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xMYXllcldlYktpdFRocmVhZD4g
Y3JlYXRlKCkKICAgICB7CkBAIC0zOCw4ICszOCw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0
V2ViR0xDb250ZXh0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KSB7IG1fd2ViR0xDb250ZXh0
ID0gY29udGV4dDsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheSgpOwotCiBw
cm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRleHR1cmVDb250ZW50c0lmTmVlZGVk
KCk7CiAKQEAgLTQ3LDcgKzQ1LDYgQEAgcHJpdmF0ZToKICAgICBXZWJHTExheWVyV2ViS2l0VGhy
ZWFkKCk7CiAKICAgICBHcmFwaGljc0NvbnRleHQzRCogbV93ZWJHTENvbnRleHQ7Ci0gICAgYm9v
bCBtX25lZWRzRGlzcGxheTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHQzRE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCmluZGV4IDIyNTYyODI0OGMy
OTgzNjFkNmI3OWJlNWI0YWE0Yzc5YzE0MTIxMmQuLjFhMGEyNjJkZjc0NmI2NjBhYzA2NDk3ODNi
ZTU5ODgwODk4NDEwNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdM
Q29tbW9uLmNwcApAQCAtMTU1LDYgKzE1NSw3IEBAIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBHcmFw
aGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoRHJhd2luCiAg
ICAgcmV0dXJuIGltYWdlRGF0YS5yZWxlYXNlKCk7CiB9CiAKKyNpZiAhUExBVEZPUk0oQkxBQ0tC
RVJSWSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnByZXBhcmVUZXh0dXJlKCkKIHsKICAgICBp
ZiAobV9sYXllckNvbXBvc2l0ZWQpCkBAIC0xNjYsMjIgKzE2Nyw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnByZXBhcmVUZXh0dXJlKCkKIAogICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQo
R3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Zibyk7CiAgICAgOjpnbEFjdGl2ZVRl
eHR1cmUoR0xfVEVYVFVSRTApOwotI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCi0gICAgaWYgKCFw
bGF0Zm9ybVRleHR1cmUoKSkgewotICAgICAgICBHTHVpbnQgdGV4ID0gMDsKLSAgICAgICAgOjpn
bEdlblRleHR1cmVzKDEsICZ0ZXgpOwotICAgICAgICA6OmdsQmluZFRleHR1cmUoR0xfVEVYVFVS
RV8yRCwgdGV4KTsKLSAgICAgICAgOjpnbFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOwotICAgICAgICA6OmdsVGV4UGFyYW1ldGVy
ZihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAg
ICAgIDo6Z2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBH
TF9DTEFNUF9UT19FREdFKTsKLSAgICAgICAgOjpnbFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgICAgICA6OmdsVGV4
SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJy
ZW50SGVpZ2h0LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKLSAgICAgICAgbV9j
b21wb3NpdGluZ0xheWVyLT5zZXRUZXh0dXJlSUQodGV4KTsKLSAgICB9Ci0gICAgOjpnbEJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHBsYXRmb3JtVGV4dHVyZSgpKTsKLSNlbHNlCiAgICAgOjpn
bEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fY29tcG9zaXRvclRleHR1cmUpOwotI2VuZGlm
CiAgICAgOjpnbENvcHlUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIG1faW50ZXJuYWxDb2xv
ckZvcm1hdCwgMCwgMCwgbV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCwgMCk7CiAgICAg
OjpnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fYm91bmRUZXh0dXJlMCk7CiAgICAgOjpn
bEFjdGl2ZVRleHR1cmUobV9hY3RpdmVUZXh0dXJlKTsKQEAgLTE5MCw2ICsxNzYsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpwcmVwYXJlVGV4dHVyZSgpCiAgICAgOjpnbEZpbmlzaCgpOwog
ICAgIG1fbGF5ZXJDb21wb3NpdGVkID0gdHJ1ZTsKIH0KKyNlbmRpZgogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpyZWFkUmVuZGVyaW5nUmVzdWx0cyh1bnNpZ25lZCBjaGFyICpwaXhlbHMsIGlu
dCBwaXhlbHNTaXplKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0Fw
aS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAK
aW5kZXggODE5NmJhMDM5NTI4ODQ5OGU4M2ExOGE4MDA1YzQ5ZDFlNTk3ZTlhNy4uM2IwMDhlOTI5
ZjhkNTVmZTMyYzA5ZTI4YjJmN2FlZDUwMTJiZmE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQXBpL1dlYlBhZ2UuY3BwCkBAIC01Njk0LDcgKzU2OTQsNyBAQCBHcmFwaGljc0xheWVyKiBX
ZWJQYWdlUHJpdmF0ZTo6b3ZlcmxheUxheWVyKCkKICAgICByZXR1cm4gbV9vdmVybGF5TGF5ZXIu
Z2V0KCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByaXZhdGU6OnNldENvbXBvc2l0b3IoUGFzc1JlZlB0
cjxXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU+IGNvbXBvc2l0b3IsIEVHTENvbnRleHQgY29tcG9z
aXRpbmdDb250ZXh0KQordm9pZCBXZWJQYWdlUHJpdmF0ZTo6c2V0Q29tcG9zaXRvcihQYXNzUmVm
UHRyPFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZT4gY29tcG9zaXRvcikKIHsKICAgICB1c2luZyBu
YW1lc3BhY2UgQmxhY2tCZXJyeTo6UGxhdGZvcm07CiAKQEAgLTU3MDUsMjAgKzU3MDUsMTUgQEAg
dm9pZCBXZWJQYWdlUHJpdmF0ZTo6c2V0Q29tcG9zaXRvcihQYXNzUmVmUHRyPFdlYlBhZ2VDb21w
b3NpdG9yUHJpdmF0ZT4gY29tcG9zaXQKICAgICBpZiAobV9jb21wb3NpdG9yIHx8IG1fY2xpZW50
LT53aW5kb3coKSkKICAgICAgICAgbV9iYWNraW5nU3RvcmUtPmQtPnN1c3BlbmRTY3JlZW5BbmRC
YWNraW5nU3RvcmVVcGRhdGVzKCk7CiAKLSAgICAvLyBUaGlzIG1ldGhvZCBjYWxsIGFsd2F5cyBy
b3VuZC10cmlwcyBvbiB0aGUgV2ViS2l0IHRocmVhZCAoc2VlIFdlYlBhZ2VDb21wb3NpdG9yOjpX
ZWJQYWdlQ29tcG9zaXRvcigpIGFuZCB+V2ViUGFnZUNvbXBvc2l0b3IoKSksCi0gICAgLy8gYW5k
IHRoZSBjb21wb3NpdGluZyBjb250ZXh0IG11c3QgYmUgc2V0IG9uIHRoZSBXZWJLaXQgdGhyZWFk
LiBIb3cgY29udmVuaWVudCEKLSAgICBpZiAoY29tcG9zaXRpbmdDb250ZXh0ICE9IEVHTF9OT19D
T05URVhUKQotICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OnNldENvbXBv
c2l0aW5nQ29udGV4dChjb21wb3NpdGluZ0NvbnRleHQpOwotCiAgICAgLy8gVGhlIG1fY29tcG9z
aXRvciBtZW1iZXIgaGFzIHRvIGJlIG1vZGlmaWVkIGR1cmluZyBhIHN5bmMgY2FsbCBmb3IgdGhy
ZWFkCiAgICAgLy8gc2FmZSBhY2Nlc3MgdG8gbV9jb21wb3NpdG9yIGFuZCBpdHMgcmVmY291bnQu
Ci0gICAgdXNlckludGVyZmFjZVRocmVhZE1lc3NhZ2VDbGllbnQoKS0+ZGlzcGF0Y2hTeW5jTWVz
c2FnZShjcmVhdGVNZXRob2RDYWxsTWVzc2FnZSgmV2ViUGFnZVByaXZhdGU6OnNldENvbXBvc2l0
b3JIZWxwZXIsIHRoaXMsIGNvbXBvc2l0b3IsIGNvbXBvc2l0aW5nQ29udGV4dCkpOworICAgIHVz
ZXJJbnRlcmZhY2VUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmRpc3BhdGNoU3luY01lc3NhZ2UoY3Jl
YXRlTWV0aG9kQ2FsbE1lc3NhZ2UoJldlYlBhZ2VQcml2YXRlOjpzZXRDb21wb3NpdG9ySGVscGVy
LCB0aGlzLCBjb21wb3NpdG9yKSk7CiAKICAgICBpZiAobV9jb21wb3NpdG9yIHx8IG1fY2xpZW50
LT53aW5kb3coKSkgLy8gdGhlIG5ldyBjb21wb3NpdG9yLCBpZiBvbmUgd2FzIHNldAogICAgICAg
ICBtX2JhY2tpbmdTdG9yZS0+ZC0+cmVzdW1lU2NyZWVuQW5kQmFja2luZ1N0b3JlVXBkYXRlcyhC
YWNraW5nU3RvcmU6OlJlbmRlckFuZEJsaXQpOwogfQogCi12b2lkIFdlYlBhZ2VQcml2YXRlOjpz
ZXRDb21wb3NpdG9ySGVscGVyKFBhc3NSZWZQdHI8V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlPiBj
b21wb3NpdG9yLCBFR0xDb250ZXh0IGNvbXBvc2l0aW5nQ29udGV4dCkKK3ZvaWQgV2ViUGFnZVBy
aXZhdGU6OnNldENvbXBvc2l0b3JIZWxwZXIoUGFzc1JlZlB0cjxXZWJQYWdlQ29tcG9zaXRvclBy
aXZhdGU+IGNvbXBvc2l0b3IpCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIEJsYWNrQmVycnk6OlBs
YXRmb3JtOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBh
Z2VDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNv
bXBvc2l0b3IuY3BwCmluZGV4IDZlNTBmMTdjMWE2OTE5OTUzMzU0ZjUxYmU2OWZhZGEzNTA4YWFi
NDQuLjg5NDhjYjllOGVmNTU1ODc1ZTQyNzZmMTg4MDZkZWNiNjI0MGYwNjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBvc2l0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBvc2l0b3IuY3BwCkBAIC0z
Miw3ICszMiw2IEBACiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtRXhlY3V0YWJsZU1lc3Nh
Z2UuaD4KICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1NZXNzYWdlLmg+CiAjaW5jbHVkZSA8
QmxhY2tCZXJyeVBsYXRmb3JtTWVzc2FnZUNsaWVudC5oPgotI2luY2x1ZGUgPEVHTC9lZ2wuaD4K
ICNpbmNsdWRlIDxHZW5lcmljVGltZXJDbGllbnQuaD4KICNpbmNsdWRlIDxUaHJlYWRUaW1lckNs
aWVudC5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtMjgyLDcgKzI4MSw3IEBA
IFdlYlBhZ2VDb21wb3NpdG9yOjpXZWJQYWdlQ29tcG9zaXRvcihXZWJQYWdlKiBwYWdlLCBXZWJQ
YWdlQ29tcG9zaXRvckNsaWVudCogY2xpCiAgICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGNv
bXBvc2l0b3Igd2lsbCBiZSBhcm91bmQgZm9yIGFzIGxvbmcgYXMgaXQncwogICAgIC8vIG5lZWRl
ZC4gVW5mb3J0dW5hdGVseSBSZWZQdHI8VD4gaXMgbm90IHB1YmxpYywgc28gd2UgaGF2ZSBkZWNs
YXJlIHRvCiAgICAgLy8gcmVzb3J0IHRvIG1hbnVhbCByZWZjb3VudGluZy4KLSAgICB3ZWJLaXRU
aHJlYWRNZXNzYWdlQ2xpZW50KCktPmRpc3BhdGNoTWVzc2FnZShjcmVhdGVNZXRob2RDYWxsTWVz
c2FnZSgmV2ViUGFnZVByaXZhdGU6OnNldENvbXBvc2l0b3IsIGQtPnBhZ2UoKSwgdG1wLCBlZ2xH
ZXRDdXJyZW50Q29udGV4dCgpKSk7CisgICAgd2ViS2l0VGhyZWFkTWVzc2FnZUNsaWVudCgpLT5k
aXNwYXRjaE1lc3NhZ2UoY3JlYXRlTWV0aG9kQ2FsbE1lc3NhZ2UoJldlYlBhZ2VQcml2YXRlOjpz
ZXRDb21wb3NpdG9yLCBkLT5wYWdlKCksIHRtcCkpOwogfQogCiBXZWJQYWdlQ29tcG9zaXRvcjo6
fldlYlBhZ2VDb21wb3NpdG9yKCkKQEAgLTI5MSw3ICsyOTAsNyBAQCBXZWJQYWdlQ29tcG9zaXRv
cjo6fldlYlBhZ2VDb21wb3NpdG9yKCkKIAogICAgIC8vIElmIHdlJ3JlIGJlaW5nIGRlc3Ryb3ll
ZCBiZWZvcmUgdGhlIHBhZ2UsIHNlbmQgYSBtZXNzYWdlIHRvIGRpc2Nvbm5lY3QgdXMKICAgICBp
ZiAoZC0+cGFnZSgpKQotICAgICAgICB3ZWJLaXRUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmRpc3Bh
dGNoTWVzc2FnZShjcmVhdGVNZXRob2RDYWxsTWVzc2FnZSgmV2ViUGFnZVByaXZhdGU6OnNldENv
bXBvc2l0b3IsIGQtPnBhZ2UoKSwgUGFzc1JlZlB0cjxXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU+
KDApLCBFR0xfTk9fQ09OVEVYVCkpOworICAgICAgICB3ZWJLaXRUaHJlYWRNZXNzYWdlQ2xpZW50
KCktPmRpc3BhdGNoTWVzc2FnZShjcmVhdGVNZXRob2RDYWxsTWVzc2FnZSgmV2ViUGFnZVByaXZh
dGU6OnNldENvbXBvc2l0b3IsIGQtPnBhZ2UoKSwgUGFzc1JlZlB0cjxXZWJQYWdlQ29tcG9zaXRv
clByaXZhdGU+KDApKSk7CiAgICAgZC0+Y29tcG9zaXRvckRlc3Ryb3llZCgpOwogICAgIGQtPmRl
cmVmKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBh
Z2VfcC5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaAppbmRleCA1
MGFkMTRjMDVmNzRiNGI1MGQxNzNjMzVkZmEyMGNmZTk3YjY0ZmUxLi4zZDBiNzAxZTljMWFjY2Fi
MWY5MGJiYzE5MDZjZGRkZDc0NDRiMzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQXBpL1dlYlBhZ2VfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkv
V2ViUGFnZV9wLmgKQEAgLTQxMyw4ICs0MTMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21taXRS
b290TGF5ZXIoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUm
LCBib29sKTsKICAgICBib29sIGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY29tcG9zaXRvcjsgfQogICAgIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZSog
Y29tcG9zaXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29tcG9zaXRvci5nZXQoKTsgfQotICAgIHZv
aWQgc2V0Q29tcG9zaXRvcihQYXNzUmVmUHRyPFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZT4sIEVH
TENvbnRleHQgY29tcG9zaXRpbmdDb250ZXh0KTsKLSAgICB2b2lkIHNldENvbXBvc2l0b3JIZWxw
ZXIoUGFzc1JlZlB0cjxXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU+LCBFR0xDb250ZXh0IGNvbXBv
c2l0aW5nQ29udGV4dCk7CisgICAgdm9pZCBzZXRDb21wb3NpdG9yKFBhc3NSZWZQdHI8V2ViUGFn
ZUNvbXBvc2l0b3JQcml2YXRlPik7CisgICAgdm9pZCBzZXRDb21wb3NpdG9ySGVscGVyKFBhc3NS
ZWZQdHI8V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlPik7CiAgICAgdm9pZCBzZXRDb21wb3NpdG9y
QmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CiAgICAgYm9vbCBjcmVhdGVD
b21wb3NpdG9yKCk7CiAgICAgdm9pZCBkZXN0cm95Q29tcG9zaXRvcigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157912</attachid>
            <date>2012-08-12 15:41:18 -0700</date>
            <delta_ts>2012-08-14 06:28:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93614-20120813004046.patch</filename>
            <type>text/plain</type>
            <size>52806</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MzgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWMzZjExMGM1YTc4Mzcx
MmQ4NjQ4NTI2ODg2ZGNmMjc5ZTM5M2MyNy4uNDY0YTg2NThiZWM4NTY3ZDEyZmY4N2NjNjVmZTY0
NTkwODNlYjg4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMCBAQAorMjAxMi0wOC0wOSAgQXJ2
aWQgTmlsc3NvbiAgPGFuaWxzc29uQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIEdl
dCByaWQgb2YgZ2xDb3B5VGV4SW1hZ2UyRCBpbiBDYW52YXMgYW5kIFdlYkdMIGNvZGUgcGF0aHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzNjE0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgdXNlZCB0
byBzZXQgdXAgcmVzb3VyY2Ugc2hhcmluZyBiZXR3ZWVuIHRoZSBjb21wb3NpdGluZyB0aHJlYWQK
KyAgICAgICAgY29udGV4dCBhbmQgdGhlIENhbnZhcyBhbmQgV2ViR0wgY29udGV4dHMsIGFuZCB1
c2UgZ2xDb3B5VGV4SW1hZ2UyRCB0bworICAgICAgICBnZXQgYSBjb3B5IG9mIHRoZSBmcmFtZWJ1
ZmZlciB0byB1c2UgYXMgZnJvbnQgYnVmZmVyIGZvciBjb21wb3NpdGluZworICAgICAgICBwdXJw
b3Nlcy4KKworICAgICAgICBOb3cgd2UgaW5zdGVhZCBjcmVhdGUgYW4gRUdMSW1hZ2UgYW5kIGJs
aXQgdGhlIENhbnZhcy9XZWJHTCBvdXRwdXQgdG8KKyAgICAgICAgaXQuIFRoZSBjb21wb3NpdGlu
ZyB0aHJlYWQgY3JlYXRlcyBhIHRleHR1cmUgZnJvbSB0aGUgRUdMSW1hZ2UgaW4gb3JkZXIKKyAg
ICAgICAgdG8gY29tcG9zaXRlIHRoZSBvdXRwdXQuCisKKyAgICAgICAgQ3JlYXRlZCBhIG5ldyBF
R0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkIGJhc2UgY2xhc3MgdGhhdCBoYW5kbGVzIHRoZQorICAg
ICAgICBFR0xJbWFnZSBhbmQgZG9lcyB0aGUgYmxpdHRpbmcuIENhbnZhc0xheWVyV2ViS2l0VGhy
ZWFkIGFuZAorICAgICAgICBXZWJHTExheWVyV2ViS2l0VGhyZWFkIG5vdyBpbmhlcml0IGZyb20g
dGhpcyBuZXcgYmFzZSBjbGFzcy4KKworICAgICAgICBIb3dldmVyLCB3ZSBuZWVkIHRvIGJlIGNh
cmVmdWwgdG8gcmVzdG9yZSBzdGF0ZSBhZnRlciB0aGUgYmxpdCBiZWNhdXNlCisgICAgICAgIGl0
J3MgZG9uZSB1c2luZyB0aGUgQ2FudmFzL1dlYkdMIGNvbnRleHQuCisKKyAgICAgICAgVGhlIEJs
YWNrQmVycnkgaW1wbGVtZW50YXRpb24gb2YgR3JhcGhpY3NDb250ZXh0M0Q6OnByZXBhcmVUZXh0
dXJlKCkKKyAgICAgICAgd2FzIGNoYW5nZWQgdG8gbm8gbG9uZ2VyIGNhbGwgZ2xDb3B5VGV4SW1h
Z2UsIGFuZAorICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6cGxhdGZvcm1MYXllcigpIG5vdyBy
ZXR1cm5zIHRoZSB0YXJnZXQgdGV4dHVyZQorICAgICAgICBkaXJlY3RseS4KKworICAgICAgICBS
ZXZpZXdlZCBpbnRlcm5hbGx5IGJ5IEZpbGlwIFNwYWNlay4KKworICAgICAgICBQUiAxODg0NzIK
KworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IsIG5ldyB0ZXN0cy4KKworICAgICAgICAq
IFBsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9i
bGFja2JlcnJ5L0NhbnZhc0xheWVyV2ViS2l0VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc0xheWVyV2ViS2l0VGhyZWFkOjpDYW52YXNMYXllcldlYktpdFRocmVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNMYXllcldlYktpdFRocmVhZDo6fkNhbnZhc0xheWVyV2ViS2l0
VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0xheWVyV2ViS2l0VGhyZWFkOjpzZXRE
ZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQ6Om1ha2VD
b250ZXh0Q3VycmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXllcldlYktpdFRocmVh
ZDo6dGV4dHVyZVNpemUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNMYXllcldlYktpdFRocmVhZDo6dGV4dHVyZUlEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L0NhbnZhc0xheWVyV2ViS2l0VGhyZWFkLmg6CisgICAgICAgIChD
YW52YXNMYXllcldlYktpdFRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9FR0xJbWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RUdMSW1hZ2VMYXllckNvbXBv
c2l0aW5nVGhyZWFkQ2xpZW50Ojp+RUdMSW1hZ2VMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkVHTEltYWdlTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVu
dDo6dXBsb2FkVGV4dHVyZXNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpFR0xJbWFnZUxh
eWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQ6OmRyYXdUZXh0dXJlcyk6CisgICAgICAgIChXZWJD
b3JlOjpFR0xJbWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQ6OmRlbGV0ZVRleHR1cmVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkVHTEltYWdlTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVu
dDo6YmluZENvbnRlbnRzVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpFR0xJbWFnZUxheWVy
Q29tcG9zaXRpbmdUaHJlYWRDbGllbnQ6OnNldEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L0VHTEltYWdlTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudC5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRUdMSW1hZ2VMYXllckNvbXBv
c2l0aW5nVGhyZWFkQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVHTEltYWdlTGF5ZXJDb21w
b3NpdGluZ1RocmVhZENsaWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVHTEltYWdl
TGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudDo6bGF5ZXJDb21wb3NpdGluZ1RocmVhZERlc3Ry
b3llZCk6CisgICAgICAgIChXZWJDb3JlOjpFR0xJbWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRD
bGllbnQ6OmxheWVyVmlzaWJpbGl0eUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6RUdMSW1h
Z2VMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50OjpFR0xJbWFnZUxheWVyQ29tcG9zaXRpbmdU
aHJlYWRDbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRUdM
SW1hZ2VMYXllcldlYktpdFRocmVhZC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkOjpFR0xJbWFnZUxheWVy
V2ViS2l0VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkVHTEltYWdlTGF5ZXJXZWJLaXRUaHJl
YWQ6On5FR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkVHTElt
YWdlTGF5ZXJXZWJLaXRUaHJlYWQ6OnNldE5lZWRzRGlzcGxheSk6CisgICAgICAgIChXZWJDb3Jl
OjpFR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkOjptYWtlQ29udGV4dEN1cnJlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RUdMSW1hZ2VMYXllcldlYktpdFRocmVhZDo6dXBkYXRlVGV4dHVyZUNvbnRl
bnRzSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6RUdMSW1hZ2VMYXllcldlYktpdFRocmVh
ZDo6Y29tbWl0UGVuZGluZ1RleHR1cmVVcGxvYWRzKToKKyAgICAgICAgKFdlYkNvcmU6OkVHTElt
YWdlTGF5ZXJXZWJLaXRUaHJlYWQ6OmNyZWF0ZUltYWdlSWZOZWVkZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RUdMSW1hZ2VMYXllcldlYktpdFRocmVhZDo6Y3JlYXRlU2hhZGVySWZOZWVkZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RUdMSW1hZ2VMYXllcldlYktpdFRocmVhZDo6ZHJhd1RleHR1cmUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRUdMSW1hZ2VMYXllcldl
YktpdFRocmVhZC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ibGFja2JlcnJ5L0NhbnZhc0xheWVyV2ViS2l0VGhyZWFkLmguCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKEVHTEltYWdlTGF5ZXJXZWJLaXRUaHJlYWQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvR3JhcGhpY3NDb250ZXh0M0RCbGFja0JlcnJ5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpwcmVwYXJlVGV4dHVyZSk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpw
bGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
TGF5ZXJDb21wb3NpdGluZ1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBv
c2l0aW5nVGhyZWFkOjpkcmF3VGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21w
b3NpdGluZ1RocmVhZDo6cmVsZWFzZVRleHR1cmVSZXNvdXJjZXMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5oOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6c2V0Q2xpZW50KToKKyAgICAgICAg
KExheWVyQ29tcG9zaXRpbmdUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvTGF5ZXJEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllckRhdGE6OkxheWVy
RGF0YSk6CisgICAgICAgIChMYXllckRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJXZWJLaXRUaHJlYWQ6On5MYXllcldlYktpdFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllcldlYktpdFRocmVhZDo6dXBkYXRlVGV4dHVyZUNvbnRlbnRzSWZOZWVkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJXZWJLaXRUaHJlYWQ6OmNvbW1pdFBlbmRpbmdUZXh0dXJlVXBsb2Fk
cyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllcldlYktpdFRocmVhZDo6Y29tbWl0T25Db21wb3Np
dGluZ1RocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXll
cldlYktpdFRocmVhZC5oOgorICAgICAgICAoTGF5ZXJXZWJLaXRUaHJlYWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvV2ViR0xMYXllcldlYktpdFRocmVhZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyV2ViS2l0VGhyZWFkOjpXZWJHTExheWVyV2Vi
S2l0VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJXZWJLaXRUaHJlYWQ6OnVw
ZGF0ZVRleHR1cmVDb250ZW50c0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5
ZXJXZWJLaXRUaHJlYWQ6Om1ha2VDb250ZXh0Q3VycmVudCk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJXZWJLaXRUaHJlYWQ6OnRleHR1cmVTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJXZWJLaXRUaHJlYWQ6OnRleHR1cmVJRCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9XZWJHTExheWVyV2ViS2l0VGhy
ZWFkLmg6CisgICAgICAgIChXZWJHTExheWVyV2ViS2l0VGhyZWFkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
cHJlcGFyZVRleHR1cmUpOgorCiAyMDEyLTA4LTEyICBQcmF2aW4gRCAgPHByYXZpbmQuMms0QGdt
YWlsLmNvbT4KIAogICAgICAgICB0YWJsZSBjZWxsLmNlbGxJbmRleCBzaG91bGQgcmV0dXJuIC0x
IGlmIHRoZXJlIGlzIG5vIHBhcmVudCB0YWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cK
aW5kZXggYWQ4NjU1NTExMzEyNjU0OTRhYWFmYTU0NWRmMzQyZjBhNDRkNTUwMC4uNTc2YjJiMmY5
NDAxOTAzYzU1MTRjMGEwNjRmMTlkMzA2NWJlOWJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTItMDgtMDkgIEFydmlkIE5pbHNzb24gIDxhbmls
c3NvbkByaW0uY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBHZXQgcmlkIG9mIGdsQ29weVRl
eEltYWdlMkQgaW4gQ2FudmFzIGFuZCBXZWJHTCBjb2RlIHBhdGhzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzYxNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHVzZWQgdG8gc2V0IHVwIHJlc291cmNl
IHNoYXJpbmcgYmV0d2VlbiB0aGUgY29tcG9zaXRpbmcgdGhyZWFkCisgICAgICAgIGNvbnRleHQg
YW5kIHRoZSBDYW52YXMgYW5kIFdlYkdMIGNvbnRleHRzLCBhbmQgdXNlIGdsQ29weVRleEltYWdl
MkQgdG8KKyAgICAgICAgZ2V0IGEgY29weSBvZiB0aGUgZnJhbWVidWZmZXIgdG8gdXNlIGFzIGZy
b250IGJ1ZmZlciBmb3IgY29tcG9zaXRpbmcKKyAgICAgICAgcHVycG9zZXMuCisKKyAgICAgICAg
Tm93IHdlIGluc3RlYWQgY3JlYXRlIGFuIEVHTEltYWdlIGFuZCBibGl0IHRoZSBDYW52YXMvV2Vi
R0wgb3V0cHV0IHRvCisgICAgICAgIGl0LiBUaGUgY29tcG9zaXRpbmcgdGhyZWFkIGNyZWF0ZXMg
YSB0ZXh0dXJlIGZyb20gdGhlIEVHTEltYWdlIGluIG9yZGVyCisgICAgICAgIHRvIGNvbXBvc2l0
ZSB0aGUgb3V0cHV0LgorCisgICAgICAgIFRoaXMgYWxsb3dzIHVzIHRvIHR1cm4gb2ZmIHJlc291
cmNlIHNoYXJpbmcsIHNvIHRoZSBXZWJQYWdlQ29tcG9zaXRvcgorICAgICAgICBubyBsb25nZXIg
bmVlZHMgdG8gcGFzcyB0aGUgY29tcG9zaXRpbmcgdGhyZWFkIGNvbnRleHQgdG8gdGhlIHdlYmtp
dAorICAgICAgICB0aHJlYWQuCisKKyAgICAgICAgUmV2aWV3ZWQgaW50ZXJuYWxseSBieSBGaWxp
cCBTcGFjZWsuCisKKyAgICAgICAgUFIgMTg4NDcyCisKKyAgICAgICAgKiBBcGkvV2ViUGFnZS5j
cHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpzZXRDb21w
b3NpdG9yKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OnNl
dENvbXBvc2l0b3JIZWxwZXIpOgorICAgICAgICAqIEFwaS9XZWJQYWdlQ29tcG9zaXRvci5jcHA6
CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21wb3NpdG9yOjpXZWJQYWdl
Q29tcG9zaXRvcik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21wb3Np
dG9yOjp+V2ViUGFnZUNvbXBvc2l0b3IpOgorICAgICAgICAqIEFwaS9XZWJQYWdlX3AuaDoKKyAg
ICAgICAgKFdlYlBhZ2VQcml2YXRlKToKKwogMjAxMi0wOC0xMCAgQmVuamFtaW4gQyBNZXllciAg
PGJtZXllckByaW0uY29tPgogCiAgICAgICAgIEludHJvZHVjZSBKYXZhU2NyaXB0VmFyaWFudCBv
YmplY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnkuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKaW5kZXggOGY2YTc3
NTI4YWZmZTkxNjkwZDM3ZDJkYjMxYzg3YTBjYWZmMWVmNC4uZDFmZmY5MTg5ZTU3YjI1Yzc5NDEy
NTc4M2Q1MzY3YTY1NGUyYWE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1C
bGFja0JlcnJ5LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJyeS5j
bWFrZQpAQCAtMjY4LDYgKzI2OCw4IEBAIElGIChXVEZfVVNFX0FDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQogICAgIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgICAgICAke1dFQkNPUkVf
RElSfS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAogICAgICAgICAke1dFQkNP
UkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0NhbnZhc0xheWVyV2ViS2l0VGhy
ZWFkLmNwcAorICAgICAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0VHTEltYWdlTGF5ZXJXZWJLaXRUaHJlYWQuY3BwCisgICAgICAgICR7V0VCQ09SRV9ESVJ9
L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRUdMSW1hZ2VMYXllckNvbXBvc2l0aW5nVGhy
ZWFkQ2xpZW50LmNwcAogICAgICAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9i
bGFja2JlcnJ5L0dyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5LmNwcAogICAgICAgICAke1dFQkNPUkVf
RElSfS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQW5pbWF0aW9uLmNwcAogICAg
ICAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29t
cG9zaXRpbmdUaHJlYWQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L0NhbnZhc0xheWVyV2ViS2l0VGhyZWFkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvQ2FudmFzTGF5ZXJXZWJLaXRUaHJl
YWQuY3BwCmluZGV4IGJlNTU4ODY0ZTA4NzhlMDQ4MWUzYzhkYWRjNmYxMmUzZDkzODczMTMuLjY2
MWFmZWViMTFhMDNjZmM3YjVlZTQ1OTdlZjNjYmJjM2U1ZWExNzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvQ2FudmFzTGF5ZXJXZWJLaXRU
aHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVy
cnkvQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQuY3BwCkBAIC0yOCw2MSArMjgsNDAgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQ6OkNhbnZhc0xheWVyV2Vi
S2l0VGhyZWFkKFNrR3B1RGV2aWNlKiBkZXZpY2UpCi0gICAgOiBMYXllcldlYktpdFRocmVhZChD
YW52YXNMYXllciwgMCkKKyAgICA6IEVHTEltYWdlTGF5ZXJXZWJLaXRUaHJlYWQoQ2FudmFzTGF5
ZXIpCiB7CiAgICAgc2V0RGV2aWNlKGRldmljZSk7CiB9CiAKIENhbnZhc0xheWVyV2ViS2l0VGhy
ZWFkOjp+Q2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQoKQogewotICAgIGlmIChtX3RleElEKSB7Ci0g
ICAgICAgIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpnZXQoKS0+bWFrZUNvbnRleHRDdXJyZW50
KCk7Ci0gICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1fdGV4SUQpOwotICAgIH0KKyAgICBp
ZiAoU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmdldCgpLT5tYWtlQ29udGV4dEN1cnJlbnQoKSkK
KyAgICAgICAgZGVsZXRlRnJvbnRCdWZmZXIoKTsKIH0KIAogdm9pZCBDYW52YXNMYXllcldlYktp
dFRocmVhZDo6c2V0RGV2aWNlKFNrR3B1RGV2aWNlKiBkZXZpY2UpCiB7CiAgICAgbV9kZXZpY2Ug
PSBkZXZpY2U7Ci0gICAgc2V0TGF5ZXJQcm9ncmFtU2hhZGVyKExheWVyUHJvZ3JhbVNoYWRlclJH
QkEpOwogICAgIHNldE5lZWRzRGlzcGxheSgpOwogfQogCi12b2lkIENhbnZhc0xheWVyV2ViS2l0
VGhyZWFkOjpzZXROZWVkc0Rpc3BsYXkoKQotewotICAgIG1fbmVlZHNEaXNwbGF5ID0gdHJ1ZTsK
LSAgICBzZXROZWVkc0NvbW1pdCgpOwotfQotCiB2b2lkIENhbnZhc0xheWVyV2ViS2l0VGhyZWFk
Ojp1cGRhdGVUZXh0dXJlQ29udGVudHNJZk5lZWRlZCgpCiB7Ci0gICAgaWYgKCFtX25lZWRzRGlz
cGxheSB8fCAhbV9kZXZpY2UpCisgICAgaWYgKCFtX2RldmljZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsKLSAgICBtX2RldmljZS0+bWFrZVJlbmRlclRh
cmdldEN1cnJlbnQoKTsKLQotICAgIEdMaW50IHByZXZpb3VzVGV4dHVyZTsKLSAgICBnbEdldElu
dGVnZXJ2KEdMX1RFWFRVUkVfQklORElOR18yRCwgJnByZXZpb3VzVGV4dHVyZSk7CisgICAgaWYg
KCFTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z2V0KCktPm1ha2VDb250ZXh0Q3VycmVudCgpKQor
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fdGV4SUQpIHsKLSAgICAgICAgZ2xHZW5UZXh0
dXJlcygxLCAmbV90ZXhJRCk7Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwg
bV90ZXhJRCk7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyZihHTF9URVhUVVJFXzJELCBHTF9URVhU
VVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyZihHTF9U
RVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgICAgIGds
VGV4UGFyYW1ldGVyZihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBf
VE9fRURHRSk7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyZihHTF9URVhUVVJFXzJELCBHTF9URVhU
VVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgICAgIGdsVGV4SW1hZ2UyRChHTF9U
RVhUVVJFXzJELCAwLCBHTF9SR0JBLCBtX2RldmljZS0+d2lkdGgoKSwgbV9kZXZpY2UtPmhlaWdo
dCgpLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKKyAgICBHclJlbmRlclRhcmdl
dCogcmVuZGVyVGFyZ2V0ID0gcmVpbnRlcnByZXRfY2FzdDxHclJlbmRlclRhcmdldCo+KG1fZGV2
aWNlLT5hY2Nlc3NSZW5kZXJUYXJnZXQoKSk7CisgICAgaWYgKCFyZW5kZXJUYXJnZXQpCisgICAg
ICAgIHJldHVybjsKIAotICAgICAgICBjcmVhdGVGcm9udEJ1ZmZlckxvY2soKTsKLSAgICB9Cisg
ICAgR3JUZXh0dXJlKiB0ZXh0dXJlID0gcmVuZGVyVGFyZ2V0LT5hc1RleHR1cmUoKTsKKyAgICBp
ZiAoIXRleHR1cmUpCisgICAgICAgIHJldHVybjsKIAotICAgIHB0aHJlYWRfbXV0ZXhfbG9jayht
X2Zyb250QnVmZmVyTG9jayk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX3Rl
eElEKTsKLSAgICBnbENvcHlUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDAs
IDAsIG1fZGV2aWNlLT53aWR0aCgpLCBtX2RldmljZS0+aGVpZ2h0KCksIDApOwotICAgIGdsRmlu
aXNoKCk7IC8vIFRoaXMgbWlnaHQgYmUgaW1wbGljaXQgaW4gdGhlIENvcHlUZXhJbWFnZTJELCBi
dXQgZXhwbGljaXQgRmluaXNoIGlzIHJlcXVpcmVkIG9uIHNvbWUgYXJjaGl0ZWN0dXJlcwotICAg
IGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgcHJldmlvdXNUZXh0dXJlKTsKLSAgICBwdGhy
ZWFkX211dGV4X3VubG9jayhtX2Zyb250QnVmZmVyTG9jayk7CisgICAgdXBkYXRlRnJvbnRCdWZm
ZXIoSW50U2l6ZShtX2RldmljZS0+d2lkdGgoKSwgbV9kZXZpY2UtPmhlaWdodCgpKSwgdGV4dHVy
ZS0+Z2V0VGV4dHVyZUhhbmRsZSgpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9DYW52YXNMYXllcldlYktpdFRocmVhZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9DYW52YXNMYXll
cldlYktpdFRocmVhZC5oCmluZGV4IGVhYzZiODIzODI3NGQ1ZTNlY2RhNjkxNjBmMTBhY2I2NGJi
ZmExNDAuLjUwNjgzODdlODg1OTg1ZjU1M2EwODQ1YmJkYmVkYjAxZTZmNjE2YzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvQ2FudmFzTGF5
ZXJXZWJLaXRUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9i
bGFja2JlcnJ5L0NhbnZhc0xheWVyV2ViS2l0VGhyZWFkLmgKQEAgLTIxLDcgKzIxLDcgQEAKIAog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJE
X0NBTlZBUykKIAotI2luY2x1ZGUgIkxheWVyV2ViS2l0VGhyZWFkLmgiCisjaW5jbHVkZSAiRUdM
SW1hZ2VMYXllcldlYktpdFRocmVhZC5oIgogCiBjbGFzcyBTa0dwdURldmljZTsKIApAQCAtMjks
NyArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxDYW52YXNFbGVtZW50
OwogCi1jbGFzcyBDYW52YXNMYXllcldlYktpdFRocmVhZCA6IHB1YmxpYyBMYXllcldlYktpdFRo
cmVhZCB7CitjbGFzcyBDYW52YXNMYXllcldlYktpdFRocmVhZCA6IHB1YmxpYyBFR0xJbWFnZUxh
eWVyV2ViS2l0VGhyZWFkIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNM
YXllcldlYktpdFRocmVhZD4gY3JlYXRlKFNrR3B1RGV2aWNlKiBkZXZpY2UpCiAgICAgewpAQCAt
NDAsMTggKzQwLDE2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0RGV2aWNlKFNrR3B1RGV2aWNl
Kik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCk7Ci0KIHByb3RlY3RlZDoK
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVyZUNvbnRlbnRzSWZOZWVkZWQoKTsKIAogcHJp
dmF0ZToKICAgICBDYW52YXNMYXllcldlYktpdFRocmVhZChTa0dwdURldmljZSopOwotICAgIGJv
b2wgbV9uZWVkc0Rpc3BsYXk7CisKICAgICBTa0dwdURldmljZSogbV9kZXZpY2U7CiB9OwogCi19
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpICYmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRUdMSW1hZ2VMYXll
ckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvRUdMSW1hZ2VMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iMjczMzQ4YTNiZWQyMjM0MjBjZTEzM2Y3Y2ZkODU4YmFjYmNmZTBkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9FR0xJbWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQuY3BwCkBAIC0wLDAgKzEs
MTI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1p
dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhl
IEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJFR0xJbWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGll
bnQuaCIKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2luY2x1ZGUgIkxh
eWVyQ29tcG9zaXRpbmdUaHJlYWQuaCIKKyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1HcmFw
aGljcy5oPgorI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUxvZy5oPgorI2luY2x1ZGUgPEVH
TC9lZ2wuaD4KKyNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+
CisjaW5jbHVkZSA8R0xFUzIvZ2wyZXh0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Rh
dGljIFBGTkdMRUdMSU1BR0VUQVJHRVRURVhUVVJFMkRPRVNQUk9DIGdsRUdMSW1hZ2VUYXJnZXRU
ZXh0dXJlMkRPRVMgPSAwOworc3RhdGljIFBGTkVHTERFU1RST1lJTUFHRUtIUlBST0MgZWdsRGVz
dHJveUltYWdlS0hSID0gMDsKKworRUdMSW1hZ2VMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50
Ojp+RUdMSW1hZ2VMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50KCkKK3sKKyAgICAvLyBTb21l
b25lIHNob3VsZCBoYXZlIGNhbGxlZCBkZWxldGVUZXh0dXJlcygpIGJ5IG5vdworICAgIEFTU0VS
VCghbV90ZXh0dXJlICYmICFtX2ltYWdlKTsKK30KKwordm9pZCBFR0xJbWFnZUxheWVyQ29tcG9z
aXRpbmdUaHJlYWRDbGllbnQ6OnVwbG9hZFRleHR1cmVzSWZOZWVkZWQoTGF5ZXJDb21wb3NpdGlu
Z1RocmVhZCopCit7CisgICAgaWYgKCFtX2ltYWdlQ2hhbmdlZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKCFnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKSB7CisgICAgICAgIGdsRUdM
SW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMgPSByZWludGVycHJldF9jYXN0PFBGTkdMRUdMSU1BR0VU
QVJHRVRURVhUVVJFMkRPRVNQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xFR0xJbWFnZVRhcmdl
dFRleHR1cmUyRE9FUyIpKTsKKyAgICAgICAgQVNTRVJUKGdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJl
MkRPRVMpOworICAgICAgICBpZiAoIWdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMpIHsKKyAg
ICAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTsKKyAgICAgICAg
ICAgIGxvZ0Fsd2F5cyhMb2dMZXZlbFdhcm4sICJlZ2xHZXRQcm9jQWRkcmVzcyBmb3IgZ2xFR0xJ
bWFnZVRhcmdldFRleHR1cmUyRE9FUyBGQUlMRUQiKTsKKyAgICAgICAgICAgIG1faW1hZ2VDaGFu
Z2VkID0gZmFsc2U7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBpZiAobV9pbWFnZSkgeworICAgICAgICBpZiAoIW1fdGV4dHVyZSkgeworICAgICAgICAgICAg
bV90ZXh0dXJlID0gVGV4dHVyZTo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX3RleHR1cmUtPnBy
b3RlY3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENvbm5lY3QgdG8gdGhlIG5ldyBpbWFn
ZQorICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fdGV4dHVyZS0+dGV4dHVy
ZUlkKCkpOworICAgICAgICBnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKEdMX1RFWFRVUkVf
MkQsIG1faW1hZ2UpOworICAgIH0gZWxzZSBpZiAobV90ZXh0dXJlKSB7CisgICAgICAgIG1fdGV4
dHVyZS0+dW5wcm90ZWN0KCk7CisgICAgICAgIG1fdGV4dHVyZS5jbGVhcigpOworICAgIH0KKwor
ICAgIG1faW1hZ2VDaGFuZ2VkID0gZmFsc2U7Cit9CisKK3ZvaWQgRUdMSW1hZ2VMYXllckNvbXBv
c2l0aW5nVGhyZWFkQ2xpZW50OjpkcmF3VGV4dHVyZXMoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCog
bGF5ZXIsIGRvdWJsZSAvKnNjYWxlKi8sIGludCBwb3NpdGlvbkxvY2F0aW9uLCBpbnQgdGV4Q29v
cmRMb2NhdGlvbikKK3sKKyAgICBzdGF0aWMgZmxvYXQgdXBzaWRlRG93bls0ICogMl0gPSB7IDAs
IDEsICAwLCAwLCAgMSwgMCwgIDEsIDEgfTsKKworICAgIGlmICghbV90ZXh0dXJlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25Mb2NhdGlvbiwg
MiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCAmbGF5ZXItPmdldFRyYW5zZm9ybWVkQm91bmRzKCkp
OworICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcih0ZXhDb29yZExvY2F0aW9uLCAyLCBHTF9GTE9B
VCwgR0xfRkFMU0UsIDAsIHVwc2lkZURvd24pOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVS
RV8yRCwgbV90ZXh0dXJlLT50ZXh0dXJlSWQoKSk7CisgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFO
R0xFX0ZBTiwgMCwgNCk7Cit9CisKK3ZvaWQgRUdMSW1hZ2VMYXllckNvbXBvc2l0aW5nVGhyZWFk
Q2xpZW50OjpkZWxldGVUZXh0dXJlcyhMYXllckNvbXBvc2l0aW5nVGhyZWFkKikKK3sKKyAgICBp
ZiAobV90ZXh0dXJlKSB7CisgICAgICAgIG1fdGV4dHVyZS0+dW5wcm90ZWN0KCk7CisgICAgICAg
IG1fdGV4dHVyZS5jbGVhcigpOworICAgIH0KKworICAgIC8vIElmIHRoZSBpbWFnZSBpcyBzdGls
bCB3aXRoIHVzLCBpdCB3YXMgbmV2ZXIgZGVzdHJveWVkIGJ5IHRoZSBFR0xJbWFnZUxheWVyV2Vi
S2l0VGhyZWFkCisgICAgaWYgKG1faW1hZ2UpIHsKKyAgICAgICAgaWYgKCFlZ2xEZXN0cm95SW1h
Z2VLSFIpCisgICAgICAgICAgICBlZ2xEZXN0cm95SW1hZ2VLSFIgPSByZWludGVycHJldF9jYXN0
PFBGTkVHTERFU1RST1lJTUFHRUtIUlBST0M+KGVnbEdldFByb2NBZGRyZXNzKCJlZ2xEZXN0cm95
SW1hZ2VLSFIiKSk7CisKKyAgICAgICAgQVNTRVJUKGVnbERlc3Ryb3lJbWFnZUtIUik7CisgICAg
ICAgIGlmIChlZ2xEZXN0cm95SW1hZ2VLSFIpCisgICAgICAgICAgICBlZ2xEZXN0cm95SW1hZ2VL
SFIoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjplZ2xEaXNwbGF5KCksIG1faW1hZ2Up
OworCisgICAgICAgIG1faW1hZ2UgPSAwOworICAgIH0KK30KKwordm9pZCBFR0xJbWFnZUxheWVy
Q29tcG9zaXRpbmdUaHJlYWRDbGllbnQ6OmJpbmRDb250ZW50c1RleHR1cmUoTGF5ZXJDb21wb3Np
dGluZ1RocmVhZCopCit7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX3RleHR1
cmUtPnRleHR1cmVJZCgpKTsKK30KKwordm9pZCBFR0xJbWFnZUxheWVyQ29tcG9zaXRpbmdUaHJl
YWRDbGllbnQ6OnNldEltYWdlKHZvaWQqIGltYWdlKQoreworICAgIGlmIChtX2ltYWdlID09IGlt
YWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2ltYWdlID0gaW1hZ2U7CisgICAgbV9pbWFn
ZUNoYW5nZWQgPSB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0VHTEltYWdlTGF5ZXJDb21wb3NpdGluZ1Ro
cmVhZENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9FR0xJbWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Njdj
MTMwYTYwYjcxOWE0OWU5YzljYjZhMDVmMmFmMjc5ODhhYTg0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9FR0xJbWFnZUxheWVy
Q29tcG9zaXRpbmdUaHJlYWRDbGllbnQuaApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rvbiwg
TUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpZm5kZWYgRUdMSW1hZ2VMYXllckNvbXBvc2l0
aW5nVGhyZWFkQ2xpZW50X2gKKyNkZWZpbmUgRUdMSW1hZ2VMYXllckNvbXBvc2l0aW5nVGhyZWFk
Q2xpZW50X2gKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2luY2x1ZGUg
IkxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQuaCIKKyNpbmNsdWRlICJUZXh0dXJlLmgiCisj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgTGF5ZXJDb21wb3NpdGluZ1RocmVhZDsKKworY2xhc3MgRUdMSW1hZ2VMYXllckNv
bXBvc2l0aW5nVGhyZWFkQ2xpZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEVHTElt
YWdlTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudD4sIHB1YmxpYyBMYXllckNvbXBvc2l0aW5n
VGhyZWFkQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxFR0xJbWFnZUxh
eWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQ+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEVHTEltYWdlTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudCgpKTsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIH5FR0xJbWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGll
bnQoKTsKKworICAgIHZpcnR1YWwgdm9pZCBsYXllckNvbXBvc2l0aW5nVGhyZWFkRGVzdHJveWVk
KExheWVyQ29tcG9zaXRpbmdUaHJlYWQqKQorICAgIHsKKyAgICAgICAgZGVyZWYoKTsgLy8gTWF0
Y2hlZCBieSByZWYoKSBpbiBjb25zdHJ1Y3RvcgorICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBs
YXllclZpc2liaWxpdHlDaGFuZ2VkKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqLCBib29sIHZpc2li
bGUpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmVzSWZOZWVkZWQoTGF5ZXJD
b21wb3NpdGluZ1RocmVhZCopOworICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZXMoTGF5ZXJD
b21wb3NpdGluZ1RocmVhZCosIGRvdWJsZSBzY2FsZSwgaW50IHBvc2l0aW9uTG9jYXRpb24sIGlu
dCB0ZXhDb29yZExvY2F0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVyZXMoTGF5
ZXJDb21wb3NpdGluZ1RocmVhZCopOworCisgICAgdmlydHVhbCB2b2lkIGJpbmRDb250ZW50c1Rl
eHR1cmUoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCopOworCisgICAgLy8gVGhlIGltYWdlIG11c3Qg
bm90IGJlIGRlbGV0ZWQgd2hpbGUgaW4gb3VyIGN1c3RvZHksIGhvd2V2ZXIgYWZ0ZXIgY2hhbmdp
bmcgaW1hZ2UgeW91IGFyZSBmcmVlIHRvIGRlbGV0ZSB0aGUgb2xkIG9uZS4KKyAgICB2b2lkIHNl
dEltYWdlKHZvaWQqKTsKKworcHJpdmF0ZToKKyAgICBFR0xJbWFnZUxheWVyQ29tcG9zaXRpbmdU
aHJlYWRDbGllbnQoKQorICAgICAgICA6IG1faW1hZ2UoMCkKKyAgICAgICAgLCBtX2ltYWdlQ2hh
bmdlZChmYWxzZSkKKyAgICB7CisgICAgICAgIHJlZigpOyAvLyBNYXRjaGVkIGJ5IGRlcmVmKCkg
aW4gbGF5ZXJDb21wb3NpdGluZ1RocmVhZERlc3Ryb3llZCgpCisgICAgfQorCisgICAgdm9pZCog
bV9pbWFnZTsKKyAgICBib29sIG1faW1hZ2VDaGFuZ2VkOworICAgIFJlZlB0cjxUZXh0dXJlPiBt
X3RleHR1cmU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNlbmRpZiAvLyBFR0xJbWFnZUxheWVyQ29tcG9z
aXRpbmdUaHJlYWRDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9FR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRUdMSW1hZ2VMYXllcldlYktp
dFRocmVhZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2RhY2UyMjU0OTg4NDhjNThmMTM2M2RjNDg1OGZjNjBh
OGJmMWQxMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvRUdMSW1hZ2VMYXllcldlYktpdFRocmVhZC5jcHAKQEAgLTAsMCArMSwy
ODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIgUmVzZWFyY2ggSW4g
TW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3
cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkVHTEltYWdlTGF5ZXJXZWJLaXRUaHJl
YWQuaCIKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2luY2x1ZGUgIkxh
eWVyQ29tcG9zaXRpbmdUaHJlYWQuaCIKKyNpbmNsdWRlICJMYXllclJlbmRlcmVyLmgiCisjaW5j
bHVkZSAiU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxh
dGZvcm1HTEVTMkNvbnRleHRTdGF0ZS5oPgorI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUdy
YXBoaWNzLmg+CisjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtTG9nLmg+CisjaW5jbHVkZSA8
RUdML2VnbC5oPgorI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KKyNpbmNsdWRlIDxHTEVTMi9nbDIu
aD4KKwordXNpbmcgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpHTEVTMlByb2dyYW07
Cit1c2luZyBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkdMRVMyQ29udGV4dFN0YXRl
OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBQRk5FR0xDUkVBVEVJTUFHRUtIUlBS
T0MgZWdsQ3JlYXRlSW1hZ2VLSFIgPSAwOworc3RhdGljIFBGTkVHTERFU1RST1lJTUFHRUtIUlBS
T0MgZWdsRGVzdHJveUltYWdlS0hSID0gMDsKKworRUdMSW1hZ2VMYXllcldlYktpdFRocmVhZDo6
RUdMSW1hZ2VMYXllcldlYktpdFRocmVhZChMYXllclR5cGUgdHlwZSkKKyAgICA6IExheWVyV2Vi
S2l0VGhyZWFkKHR5cGUsIDApCisgICAgLCBtX2NsaWVudChFR0xJbWFnZUxheWVyQ29tcG9zaXRp
bmdUaHJlYWRDbGllbnQ6OmNyZWF0ZSgpKQorICAgICwgbV9uZWVkc0Rpc3BsYXkoZmFsc2UpCisg
ICAgLCBtX2Zyb250QnVmZmVyVGV4dHVyZSgwKQorICAgICwgbV9mYm8oMCkKKyAgICAsIG1fc2hh
ZGVyKDApCisgICAgLCBtX2ltYWdlKDApCit7CisgICAgbGF5ZXJDb21wb3NpdGluZ1RocmVhZCgp
LT5zZXRDbGllbnQobV9jbGllbnQuZ2V0KCkpOworICAgIHNldExheWVyUHJvZ3JhbVNoYWRlcihM
YXllclByb2dyYW1TaGFkZXJSR0JBKTsKK30KKworRUdMSW1hZ2VMYXllcldlYktpdFRocmVhZDo6
fkVHTEltYWdlTGF5ZXJXZWJLaXRUaHJlYWQoKQoreworICAgIC8vIFRoZSBzdWJjbGFzcyBpcyBy
ZXNwb25zaWJsZSBmb3IgY2FsbGluZyBkZWxldGVGcm9udEJ1ZmZlcigpCisgICAgLy8gYmVmb3Jl
IHdlIGdldCB0aGlzIGZhci4KKyAgICBBU1NFUlQoIW1fZnJvbnRCdWZmZXJUZXh0dXJlKTsKKyAg
ICBBU1NFUlQoIW1fZmJvKTsKKyAgICBBU1NFUlQoIW1fc2hhZGVyKTsKK30KKwordm9pZCBFR0xJ
bWFnZUxheWVyV2ViS2l0VGhyZWFkOjpzZXROZWVkc0Rpc3BsYXkoKQoreworICAgIG1fbmVlZHNE
aXNwbGF5ID0gdHJ1ZTsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQorCit2b2lkIEVHTEltYWdl
TGF5ZXJXZWJLaXRUaHJlYWQ6OnVwZGF0ZUZyb250QnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUs
IHVuc2lnbmVkIGJhY2tCdWZmZXJUZXh0dXJlKQoreworICAgIGlmICghbV9uZWVkc0Rpc3BsYXkp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmIChzaXplLmlzRW1wdHkoKSkgeworICAgICAgICBp
ZiAoc2l6ZSAhPSBtX3NpemUpIHsKKyAgICAgICAgICAgIGRlbGV0ZUZyb250QnVmZmVyKCk7Cisg
ICAgICAgICAgICBpZiAobV9pbWFnZSkKKyAgICAgICAgICAgICAgICBtX2dhcmJhZ2UuYXBwZW5k
KG1faW1hZ2UpOworICAgICAgICAgICAgbV9pbWFnZSA9IDA7CisgICAgICAgICAgICBtX3NpemUg
PSBzaXplOworICAgICAgICB9CisKKyAgICAgICAgbV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghZWdsQ3JlYXRlSW1hZ2VLSFIpIHsKKyAg
ICAgICAgZWdsQ3JlYXRlSW1hZ2VLSFIgPSByZWludGVycHJldF9jYXN0PFBGTkVHTENSRUFURUlN
QUdFS0hSUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImVnbENyZWF0ZUltYWdlS0hSIikpOworICAg
ICAgICBlZ2xEZXN0cm95SW1hZ2VLSFIgPSByZWludGVycHJldF9jYXN0PFBGTkVHTERFU1RST1lJ
TUFHRUtIUlBST0M+KGVnbEdldFByb2NBZGRyZXNzKCJlZ2xEZXN0cm95SW1hZ2VLSFIiKSk7Cisg
ICAgfQorCisgICAgQVNTRVJUKGVnbENyZWF0ZUltYWdlS0hSICYmIGVnbERlc3Ryb3lJbWFnZUtI
Uik7CisgICAgaWYgKCFlZ2xDcmVhdGVJbWFnZUtIUiB8fCAhZWdsRGVzdHJveUltYWdlS0hSKSB7
CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTsKKyAgICAgICAg
bG9nQWx3YXlzKExvZ0xldmVsV2FybiwgImVnbEdldFByb2NBZGRyZXNzIGZvciBlZ2xDcmVhdGUv
RGVzdHJveUltYWdlS0hSIEZBSUxFRCIpOworICAgICAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNl
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR0xlbnVtIGN1cnJlbnRBY3RpdmVUZXh0
dXJlID0gMDsKKyAgICBnbEdldEludGVnZXJ2KEdMX0FDVElWRV9URVhUVVJFLCByZWludGVycHJl
dF9jYXN0PEdMaW50Kj4oJmN1cnJlbnRBY3RpdmVUZXh0dXJlKSk7CisgICAgZ2xBY3RpdmVUZXh0
dXJlKEdMX1RFWFRVUkUwKTsKKworICAgIHsKKyAgICAgICAgR0xFUzJDb250ZXh0U3RhdGU6OlRl
eHR1cmVBbmRGQk9TdGF0ZVNhdmVyIHRleHR1cmVBbmRGQk9TdGF0ZVNhdmVyOworCisgICAgICAg
IGlmICghY3JlYXRlSW1hZ2VJZk5lZWRlZChzaXplKSkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNlOworCisgICAgICAgIGJsaXRUb0Zyb250QnVm
ZmVyKGJhY2tCdWZmZXJUZXh0dXJlKTsKKyAgICB9CisKKyAgICBnbEFjdGl2ZVRleHR1cmUoY3Vy
cmVudEFjdGl2ZVRleHR1cmUpOworfQorCit2b2lkIEVHTEltYWdlTGF5ZXJXZWJLaXRUaHJlYWQ6
OmRlbGV0ZUZyb250QnVmZmVyKCkKK3sKKyAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtX2Zyb250
QnVmZmVyVGV4dHVyZSk7CisgICAgbV9mcm9udEJ1ZmZlclRleHR1cmUgPSAwOworICAgIGdsRGVs
ZXRlRnJhbWVidWZmZXJzKDEsICZtX2Zibyk7CisgICAgbV9mYm8gPSAwOworICAgIGdsRGVsZXRl
U2hhZGVyKG1fc2hhZGVyKTsKKyAgICBtX3NoYWRlciA9IDA7Cit9CisKK3ZvaWQgRUdMSW1hZ2VM
YXllcldlYktpdFRocmVhZDo6Y29tbWl0UGVuZGluZ1RleHR1cmVVcGxvYWRzKCkKK3sKKyAgICAv
LyBUaGlzIGNhbGwgaXMgc2VyaWFsaXplZCB3aXRoIHRoZSBjb21wb3NpdGluZyB0aHJlYWQsIHNv
IGl0J3Mgc2FmZSB0byB1cGRhdGUgdGhlCisgICAgLy8gaW1hZ2UgYW5kIGRlc3Ryb3kgYW55IG9s
ZCBpbWFnZXMuCisKKyAgICBtX2NsaWVudC0+c2V0SW1hZ2UobV9pbWFnZSk7CisKKyAgICAvLyBE
ZXN0cm95IHRoZSBnYXJiYWdlIGltYWdlcyBpbiBhIHRocmVhZC1zYWZlIHdheQorICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9nYXJiYWdlLnNpemUoKTsgKytpKQorICAgICAgICBlZ2xEZXN0
cm95SW1hZ2VLSFIoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjplZ2xEaXNwbGF5KCks
IG1fZ2FyYmFnZVtpXSk7Cit9CisKK2Jvb2wgRUdMSW1hZ2VMYXllcldlYktpdFRocmVhZDo6Y3Jl
YXRlSW1hZ2VJZk5lZWRlZChjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIC8vIFdlIHVzZSBh
IHRleHR1cmUgcmF0aGVyIHRoYW4gYSByZW5kZXJidWZmZXIgYXMgdGhlIGJhc2lzIG9mIHRoZSBG
Qk8gYW5kIEVHTEltYWdlLAorICAgIC8vIHNpbmNlIHRoZSBFR0xJbWFnZSB3aWxsIGJlIHVzZWQg
YXMgYSB0ZXh0dXJlIG9uIHRoZSBjb21wb3NpdGluZyB0aHJlYWQgaW4gdGhlIGVuZC4KKworICAg
IGlmICghbV9mcm9udEJ1ZmZlclRleHR1cmUpIHsKKyAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAm
bV9mcm9udEJ1ZmZlclRleHR1cmUpOworICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVf
MkQsIG1fZnJvbnRCdWZmZXJUZXh0dXJlKTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICAgICAgZ2xU
ZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElO
RUFSKTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
V1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICB9CisK
KyAgICBpZiAoIW1fZmJvKQorICAgICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmbV9mYm8pOwor
CisgICAgaWYgKCFtX2ltYWdlIHx8IHNpemUgIT0gbV9zaXplKSB7CisgICAgICAgIEludFNpemUg
ZmJvU2l6ZSA9IHNpemU7CisKKyAgICAgICAgLy8gSW1hZ2luYXRpb24tc3BlY2lmaWMgZml4Cisg
ICAgICAgIHN0YXRpYyBib29sIGlzSW1hZ2luYXRpb25IYXJkd2FyZSA9IHN0ZDo6c3Ryc3RyKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGdsR2V0U3RyaW5nKEdMX1JFTkRFUkVSKSksICJQ
b3dlclZSIFNHWCIpOworICAgICAgICBpZiAoaXNJbWFnaW5hdGlvbkhhcmR3YXJlKQorICAgICAg
ICAgICAgZmJvU2l6ZSA9IGZib1NpemUuZXhwYW5kZWRUbyhJbnRTaXplKDE2LCAxNikpOworCisg
ICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbV9mcm9udEJ1ZmZlclRleHR1cmUp
OworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9mYm8pOworICAg
ICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgZmJvU2l6ZS53aWR0
aCgpLCBmYm9TaXplLmhlaWdodCgpLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAwKTsK
KyAgICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1Jf
QVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1fZnJvbnRCdWZmZXJUZXh0dXJlLCAwKTsKKwor
ICAgICAgICBpZiAoZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSAhPSBH
TF9GUkFNRUJVRkZFUl9DT01QTEVURSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgaWYgKGdsR2V0RXJyb3IoKSAhPSBHTF9OT19FUlJPUikKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICAvLyBUaGUgc2libGluZyBpcyBvcnBoYW5lZCBhZnRlciBnbFRleElt
YWdlMkQsIHJlY3JlYXRlIHRoZSBpbWFnZS4KKyAgICAgICAgaWYgKG1faW1hZ2UpCisgICAgICAg
ICAgICBtX2dhcmJhZ2UuYXBwZW5kKG1faW1hZ2UpOworICAgICAgICBtX2ltYWdlID0gZWdsQ3Jl
YXRlSW1hZ2VLSFIoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjplZ2xEaXNwbGF5KCks
IGVnbEdldEN1cnJlbnRDb250ZXh0KCksCisgICAgICAgICAgICAgICAgRUdMX0dMX1RFWFRVUkVf
MkRfS0hSLCAoRUdMQ2xpZW50QnVmZmVyKW1fZnJvbnRCdWZmZXJUZXh0dXJlLCAwKTsKKyAgICAg
ICAgaWYgKCFtX2ltYWdlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIG1f
c2l6ZSA9IHNpemU7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgRUdMSW1h
Z2VMYXllcldlYktpdFRocmVhZDo6Y3JlYXRlU2hhZGVySWZOZWVkZWQoKQoreworICAgIC8vIFNo
YWRlcnMgZm9yIGRyYXdpbmcgdGhlIGxheWVyIGNvbnRlbnRzLgorICAgIHN0YXRpYyBjaGFyIHZl
cnRleFNoYWRlclN0cmluZ1tdID0KKyAgICAgICAgImF0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247
ICAgXG4iCisgICAgICAgICJhdHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOyAgIFxuIgorICAgICAg
ICAidmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7ICAgICBcbiIKKyAgICAgICAgInZvaWQgbWFpbigp
ICAgICAgICAgICAgICAgICAgXG4iCisgICAgICAgICJ7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFxuIgorICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247ICBcbiIKKyAgICAg
ICAgIiAgdl90ZXhDb29yZCA9IGFfdGV4Q29vcmQ7ICAgXG4iCisgICAgICAgICJ9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFxuIjsKKworICAgIHN0YXRpYyBjaGFyIGZyYWdtZW50U2hhZGVy
U3RyaW5nUkdCQVtdID0KKyAgICAgICAgInZhcnlpbmcgbWVkaXVtcCB2ZWMyIHZfdGV4Q29vcmQ7
ICAgICAgICAgICAgICAgICAgIFxuIgorICAgICAgICAidW5pZm9ybSBsb3dwIHNhbXBsZXIyRCBz
X3RleHR1cmU7ICAgICAgICAgICAgICAgICAgXG4iCisgICAgICAgICJ2b2lkIG1haW4oKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKKyAgICAgICAgInsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorICAgICAgICAi
ICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQoc190ZXh0dXJlLCB2X3RleENvb3JkKTsgXG4iCisg
ICAgICAgICJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcbiI7CisKKyAgICBpZiAoIW1fc2hhZGVyKSB7CisgICAgICAgIG1fc2hhZGVyID0gTGF5ZXJS
ZW5kZXJlcjo6bG9hZFNoYWRlclByb2dyYW0odmVydGV4U2hhZGVyU3RyaW5nLCBmcmFnbWVudFNo
YWRlclN0cmluZ1JHQkEpOworICAgICAgICBpZiAoIW1fc2hhZGVyKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBnbEJpbmRBdHRyaWJMb2NhdGlvbihtX3NoYWRlciwgR0xFUzJQcm9ncmFt
OjpQb3NpdGlvbkF0dHJpYnV0ZUluZGV4LCAiYV9wb3NpdGlvbiIpOworICAgICAgICBnbEJpbmRB
dHRyaWJMb2NhdGlvbihtX3NoYWRlciwgR0xFUzJQcm9ncmFtOjpUZXhDb29yZEF0dHJpYnV0ZUlu
ZGV4LCAiYV90ZXhDb29yZCIpOworICAgICAgICBnbExpbmtQcm9ncmFtKG1fc2hhZGVyKTsKKyAg
ICAgICAgdW5zaWduZWQgc2FtcGxlckxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obV9z
aGFkZXIsICJzX3RleHR1cmUiKTsKKyAgICAgICAgZ2xVc2VQcm9ncmFtKG1fc2hhZGVyKTsKKyAg
ICAgICAgZ2xVbmlmb3JtMWkoc2FtcGxlckxvY2F0aW9uLCAwKTsKKyAgICB9Cit9CisKK3ZvaWQg
RUdMSW1hZ2VMYXllcldlYktpdFRocmVhZDo6YmxpdFRvRnJvbnRCdWZmZXIodW5zaWduZWQgYmFj
a0J1ZmZlclRleHR1cmUpCit7CisgICAgaWYgKCFiYWNrQnVmZmVyVGV4dHVyZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgR0x1aW50IGN1cnJlbnRQcm9ncmFtID0gMDsKKyAgICBnbEdldEludGVn
ZXJ2KEdMX0NVUlJFTlRfUFJPR1JBTSwgcmVpbnRlcnByZXRfY2FzdDxHTGludCo+KCZjdXJyZW50
UHJvZ3JhbSkpOworCisgICAgY3JlYXRlU2hhZGVySWZOZWVkZWQoKTsKKworICAgIEdMdWludCBj
dXJyZW50QXJyYXlCdWZmZXJCaW5kaW5nID0gMCwgY3VycmVudEVsZW1lbnRBcnJheUJ1ZmZlckJp
bmRpbmcgPSAwOworICAgIEdMaW50IGN1cnJlbnRWaWV3cG9ydFs0XSA9IHsgMCwgMCwgMCwgMCB9
OworICAgIGdsR2V0SW50ZWdlcnYoR0xfQVJSQVlfQlVGRkVSX0JJTkRJTkcsIHJlaW50ZXJwcmV0
X2Nhc3Q8R0xpbnQqPigmY3VycmVudEFycmF5QnVmZmVyQmluZGluZykpOworICAgIGdsR2V0SW50
ZWdlcnYoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORywgcmVpbnRlcnByZXRfY2FzdDxH
TGludCo+KCZjdXJyZW50RWxlbWVudEFycmF5QnVmZmVyQmluZGluZykpOworICAgIGdsR2V0SW50
ZWdlcnYoR0xfVklFV1BPUlQsICZjdXJyZW50Vmlld3BvcnRbMF0pOworCisgICAgR0xFUzJDb250
ZXh0U3RhdGU6Okdsb2JhbEZsYWdTdGF0ZVNhdmVyIGZsYWdTdGF0ZVNhdmVyKGZhbHNlIC8qcmVz
dG9yZUJsZW5kRnVuYyovKTsKKworICAgIGdsRGlzYWJsZShHTF9ERVBUSF9URVNUKTsKKyAgICBn
bERpc2FibGUoR0xfU1RFTkNJTF9URVNUKTsKKyAgICBnbERpc2FibGUoR0xfU0NJU1NPUl9URVNU
KTsKKyAgICBnbERpc2FibGUoR0xfQ1VMTF9GQUNFKTsKKyAgICBnbERpc2FibGUoR0xfQkxFTkQp
OworCisgICAgZ2xWaWV3cG9ydCgwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgp
KTsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9mYm8pOworICAgIGds
VXNlUHJvZ3JhbShtX3NoYWRlcik7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBi
YWNrQnVmZmVyVGV4dHVyZSk7CisKKyAgICB7CisgICAgICAgIEdMRVMyQ29udGV4dFN0YXRlOjpW
ZXJ0ZXhBdHRyaWJ1dGVTdGF0ZVNhdmVyIHZlcnRleEF0dHJpYlN0YXRlU2F2ZXI7CisKKyAgICAg
ICAgc3RhdGljIGZsb2F0IHRleGNvb3Jkc1s0ICogMl0gPSB7IDAsIDAsICAwLCAxLCAgMSwgMSwg
IDEsIDAgfTsKKyAgICAgICAgc3RhdGljIGZsb2F0IHZlcnRpY2VzW10gPSB7IC0xLCAtMSwgLTEs
IDEsIDEsIDEsIDEsIC0xIH07CisgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIs
IDApOworICAgICAgICBnbEJpbmRCdWZmZXIoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIDApOwor
ICAgICAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdMRVMyUHJvZ3JhbTo6UG9zaXRpb25B
dHRyaWJ1dGVJbmRleCk7CisgICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0xFUzJQ
cm9ncmFtOjpUZXhDb29yZEF0dHJpYnV0ZUluZGV4KTsKKyAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQ
b2ludGVyKEdMRVMyUHJvZ3JhbTo6UG9zaXRpb25BdHRyaWJ1dGVJbmRleCwgMiwgR0xfRkxPQVQs
IEdMX0ZBTFNFLCAwLCB2ZXJ0aWNlcyk7CisgICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihH
TEVTMlByb2dyYW06OlRleENvb3JkQXR0cmlidXRlSW5kZXgsIDIsIEdMX0ZMT0FULCBHTF9GQUxT
RSwgMCwgdGV4Y29vcmRzKTsKKyAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFX0ZBTiwg
MCwgNCk7CisKKyAgICAgICAgLy8gSWYgd2UgZG9uJ3QgZmx1c2gsIHRoZSBFR0xJbWFnZSBtYXkg
bmV2ZXIgdXBkYXRlIGl0cyBhcHBlYXJhbmNlCisgICAgICAgIGdsRmx1c2goKTsKKworICAgICAg
ICBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHTEVTMlByb2dyYW06OlBvc2l0aW9uQXR0cmli
dXRlSW5kZXgpOworICAgICAgICBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHTEVTMlByb2dy
YW06OlRleENvb3JkQXR0cmlidXRlSW5kZXgpOworCisgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9B
UlJBWV9CVUZGRVIsIGN1cnJlbnRBcnJheUJ1ZmZlckJpbmRpbmcpOworICAgICAgICBnbEJpbmRC
dWZmZXIoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGN1cnJlbnRFbGVtZW50QXJyYXlCdWZmZXJC
aW5kaW5nKTsKKyAgICB9CisKKyAgICAvLyBUaGUgcHJldmlvdXMgcHJvZ3JhbSBtaWdodCBoYXZl
IGJlZW4gZGVsZXRlZCBieSByZWZjb3VudCBkZXN0cnVjdGlvbgorICAgIC8vIHdpdGggYW5vdGhl
ciBvbmUgbm93IGluIHVzZS4gRG9uJ3QgdHJ5IHRvIHJlc3RvcmUgaXQgbGF0ZXIuCisgICAgaWYg
KGN1cnJlbnRQcm9ncmFtICYmICFnbElzUHJvZ3JhbShjdXJyZW50UHJvZ3JhbSkpCisgICAgICAg
IGN1cnJlbnRQcm9ncmFtID0gMDsKKworICAgIGdsVXNlUHJvZ3JhbShjdXJyZW50UHJvZ3JhbSk7
CisgICAgZ2xWaWV3cG9ydChjdXJyZW50Vmlld3BvcnRbMF0sIGN1cnJlbnRWaWV3cG9ydFsxXSwg
Y3VycmVudFZpZXdwb3J0WzJdLCBjdXJyZW50Vmlld3BvcnRbM10pOworfQorCit9CisKKyNlbmRp
ZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIEVOQUJMRShBQ0NFTEVSQVRFRF8y
RF9DQU5WQVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9i
bGFja2JlcnJ5L0VHTEltYWdlTGF5ZXJXZWJLaXRUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRUdMSW1hZ2VMYXllcldlYktpdFRocmVhZC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI1NzU2MjlmZjYyZmY0ZGZhOWQxZTM1MDdhMTBkYmQ0ODI4YWRlZjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L0VHTEltYWdlTGF5ZXJXZWJLaXRUaHJlYWQuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg
U29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpZm5kZWYgRUdMSW1h
Z2VMYXllcldlYktpdFRocmVhZF9oCisjZGVmaW5lIEVHTEltYWdlTGF5ZXJXZWJLaXRUaHJlYWRf
aAorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisjaW5jbHVkZSAiRUdMSW1h
Z2VMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50LmgiCisjaW5jbHVkZSAiTGF5ZXJXZWJLaXRU
aHJlYWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBCYXNlIGNsYXNzIGZvciBFR0xJ
bWFnZSBiYXNlZCBsYXllcnMKKy8vIFRoZSBzdWJjbGFzcyBtdXN0IHJlaW1wbGVtZW50IHVwZGF0
ZVRleHR1cmVDb250ZW50c0lmTmVlZGVkKCkgdG8gY2FsbCB1cGRhdGVGcm9udEJ1ZmZlcgorLy8g
d2l0aCB0aGUgYXBwcm9wcmlhdGUgcGFyYW1ldGVycywgYW5kIG1ha2Ugc3VyZSB0byBjYWxsIGRl
bGV0ZUZyb250QnVmZmVyKCkgZnJvbSBpdHMKKy8vIGRlc3RydWN0b3IuCitjbGFzcyBFR0xJbWFn
ZUxheWVyV2ViS2l0VGhyZWFkIDogcHVibGljIExheWVyV2ViS2l0VGhyZWFkIHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5FR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkKCk7CisKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0TmVlZHNEaXNwbGF5KCk7CisKK3Byb3RlY3RlZDoKKyAgICBFR0xJbWFnZUxheWVy
V2ViS2l0VGhyZWFkKExheWVyVHlwZSk7CisKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVy
ZUNvbnRlbnRzSWZOZWVkZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbW1pdFBlbmRpbmdU
ZXh0dXJlVXBsb2FkcygpOworCisgICAgLy8gVGhlIGNvbnRleHQgbXVzdCBiZSBjdXJyZW50IGJl
Zm9yZSB5b3UgY2FsbCBhbnkgb2YgdGhlc2UKKyAgICB2b2lkIHVwZGF0ZUZyb250QnVmZmVyKGNv
bnN0IEludFNpemUmLCB1bnNpZ25lZCBiYWNrQnVmZmVyVGV4dHVyZSk7CisgICAgdm9pZCBkZWxl
dGVGcm9udEJ1ZmZlcigpOworCitwcml2YXRlOgorICAgIGJvb2wgY3JlYXRlSW1hZ2VJZk5lZWRl
ZChjb25zdCBJbnRTaXplJik7CisgICAgdm9pZCBjcmVhdGVTaGFkZXJJZk5lZWRlZCgpOworICAg
IHZvaWQgYmxpdFRvRnJvbnRCdWZmZXIodW5zaWduZWQgYmFja0J1ZmZlclRleHR1cmUpOworCisg
ICAgUmVmUHRyPEVHTEltYWdlTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudD4gbV9jbGllbnQ7
CisgICAgYm9vbCBtX25lZWRzRGlzcGxheTsKKyAgICB1bnNpZ25lZCBtX2Zyb250QnVmZmVyVGV4
dHVyZTsKKyAgICB1bnNpZ25lZCBtX2ZibzsKKyAgICB1bnNpZ25lZCBtX3NoYWRlcjsKKyAgICB2
b2lkKiBtX2ltYWdlOworICAgIFZlY3Rvcjx2b2lkKj4gbV9nYXJiYWdlOworICAgIEludFNpemUg
bV9zaXplOworfTsKKworfQorCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQorCisjZW5kaWYgLy8gRUdMSW1hZ2VMYXllcldlYktpdFRocmVhZF9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBoaWNzQ29udGV4
dDNEQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0dyYXBoaWNzQ29udGV4dDNEQmxhY2tCZXJyeS5jcHAKaW5kZXggMjM0ZTY4ZjVkYjdm
NTdhYzE2ZWVlZDU0ZDVhY2MzMTkzMmI2ZDVkZi4uZjEwODFlZjc2NTQxODA2MzQ5Y2FiNjBkMzgw
YjI5MDQ3YzZmNjljMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYmxhY2tiZXJyeS9HcmFwaGljc0NvbnRleHQzREJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvR3JhcGhpY3NDb250ZXh0M0RC
bGFja0JlcnJ5LmNwcApAQCAtMTMzLDYgKzEzMywxOCBAQCBHcmFwaGljc0NvbnRleHQzRDo6fkdy
YXBoaWNzQ29udGV4dDNEKCkKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OmRl
c3Ryb3lXZWJHTENvbnRleHQobV9jb250ZXh0KTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6cHJlcGFyZVRleHR1cmUoKQoreworICAgIGlmIChtX2xheWVyQ29tcG9zaXRlZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgaWYgKG1fYXR0cnMu
YW50aWFsaWFzKQorICAgICAgICByZXNvbHZlTXVsdGlzYW1wbGluZ0lmTmVjZXNzYXJ5KCk7CisK
KyAgICBtX2xheWVyQ29tcG9zaXRlZCA9IHRydWU7Cit9CisKIGJvb2wgR3JhcGhpY3NDb250ZXh0
M0Q6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgLy8gQSBCbGFja0Jl
cnJ5LXNwZWNpZmljIGltcGxlbWVudGF0aW9uIG9mIHJlc2hhcGVGQk9zIGlzIG5lY2Vzc2FyeSBi
ZWNhdXNlIGl0IGNvbnRhaW5zOgpAQCAtMzQ0LDcgKzM1Niw3IEBAIGJvb2wgR3JhcGhpY3NDb250
ZXh0M0Q6OmlzRXJyb3JHZW5lcmF0ZWRPbk91dE9mQm91bmRzQWNjZXNzZXMoKSBjb25zdAogCiBQ
bGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybVRleHR1cmUoKSBjb25z
dAogewotICAgIHJldHVybiBtX2NvbXBvc2l0aW5nTGF5ZXItPmdldFRleHR1cmVJRCgpOworICAg
IHJldHVybiBtX3RleHR1cmU7CiB9CiAKIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgR3JhcGhp
Y3NDb250ZXh0M0Q6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBv
c2l0aW5nVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5jcHAKaW5kZXggY2VmMmU1ZDdiNjZjYzQ0MmIw
ODY5NzM0NjFhMmNjZmE2ZTI0Y2I3ZC4uMWU1MGZlNjlkNjdjN2NlMjA1MzAwMjQwNTcxYjhlYWI5
MDBhNWNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuY3BwCkBA
IC0yNDksMzMgKzI0OSw2IEBAIHZvaWQgTGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6ZHJhd1RleHR1
cmVzKGRvdWJsZSBzY2FsZSwgaW50IHBvc2l0aW9uTG9jYXRpb24sIGluCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAjZW5kaWYKLSNpZiBFTkFCTEUoV0VCR0wpCi0gICAgaWYgKGxheWVyVHlwZSgp
ID09IExheWVyRGF0YTo6V2ViR0xMYXllcikgewotICAgICAgICBtX2xheWVyUmVuZGVyZXItPmFk
ZExheWVyVG9SZWxlYXNlVGV4dHVyZVJlc291cmNlc0xpc3QodGhpcyk7Ci0gICAgICAgIHB0aHJl
YWRfbXV0ZXhfbG9jayhtX2Zyb250QnVmZmVyTG9jayk7Ci0gICAgICAgIGdsVmVydGV4QXR0cmli
UG9pbnRlcihwb3NpdGlvbkxvY2F0aW9uLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsICZtX3Ry
YW5zZm9ybWVkQm91bmRzKTsKLSAgICAgICAgZmxvYXQgY2FudmFzV2lkdGhSYXRpbyA9IDEuMGY7
Ci0gICAgICAgIGZsb2F0IGNhbnZhc0hlaWdodFJhdGlvID0gMS4wZjsKLSAgICAgICAgZmxvYXQg
dXBzaWRlRG93bls0ICogMl0gPSB7IDAsIDEsICAwLCAxIC0gY2FudmFzSGVpZ2h0UmF0aW8sICBj
YW52YXNXaWR0aFJhdGlvLCAxIC0gY2FudmFzSGVpZ2h0UmF0aW8sICBjYW52YXNXaWR0aFJhdGlv
LCAxIH07Ci0gICAgICAgIC8vIEZsaXAgdGhlIHRleHR1cmUgWSBheGlzIGJlY2F1c2UgT3BlbkdM
IGFuZCBTa2lhIGhhdmUgZGlmZmVyZW50IG9yaWdpbnMKLSAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQ
b2ludGVyKHRleENvb3JkTG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgdXBzaWRl
RG93bik7Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbV90ZXhJRCk7Ci0g
ICAgICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRV9GQU4sIDAsIDQpOwotICAgICAgICAvLyBG
SVhNRTogSWYgdGhlIGNhbnZhcy90ZXh0dXJlIGlzIGxhcmdlciB0aGFuIDIwNDh4MjA0OCwgdGhl
biB3ZSdsbCBkaWUgaGVyZQotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0gICAgaWYg
KG1fdGV4SUQpIHsKLSAgICAgICAgbV9sYXllclJlbmRlcmVyLT5hZGRMYXllclRvUmVsZWFzZVRl
eHR1cmVSZXNvdXJjZXNMaXN0KHRoaXMpOwotICAgICAgICBwdGhyZWFkX211dGV4X2xvY2sobV9m
cm9udEJ1ZmZlckxvY2spOwotCi0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwg
bV90ZXhJRCk7Ci0gICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxvY2F0aW9u
LCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsICZtX3RyYW5zZm9ybWVkQm91bmRzKTsKLSAgICAg
ICAgZmxvYXQgdXBzaWRlRG93bls0ICogMl0gPSB7IDAsIDEsICAwLCAwLCAgMSwgMCwgIDEsIDEg
fTsKLSAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHRleENvb3JkTG9jYXRpb24sIDIsIEdM
X0ZMT0FULCBHTF9GQUxTRSwgMCwgdXBzaWRlRG93bik7Ci0gICAgICAgIGdsRHJhd0FycmF5cyhH
TF9UUklBTkdMRV9GQU4sIDAsIDQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgaWYg
KG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+ZHJhd1RleHR1cmVzKHRoaXMsIHNjYWxlLCBw
b3NpdGlvbkxvY2F0aW9uLCB0ZXhDb29yZExvY2F0aW9uKTsKQEAgLTMyNSw4ICsyOTgsNiBAQCB2
b2lkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OnJlbGVhc2VUZXh0dXJlUmVzb3VyY2VzKCkKICAg
ICAgICAgbV9wbHVnaW5CdWZmZXIgPSAwOwogICAgICAgICBtX3BsdWdpblZpZXctPnVubG9ja0Zy
b250QnVmZmVyKCk7CiAgICAgfQotICAgIGlmIChtX2Zyb250QnVmZmVyTG9jayAmJiAobV90ZXhJ
RCB8fCBsYXllclR5cGUoKSA9PSBMYXllckRhdGE6OldlYkdMTGF5ZXIpKQotICAgICAgICBwdGhy
ZWFkX211dGV4X3VubG9jayhtX2Zyb250QnVmZmVyTG9jayk7CiB9CiAKIHZvaWQgTGF5ZXJDb21w
b3NpdGluZ1RocmVhZDo6c2V0UGx1Z2luVmlldyhQbHVnaW5WaWV3KiBwbHVnaW5WaWV3KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXll
ckNvbXBvc2l0aW5nVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9i
bGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuaAppbmRleCBiNzIyM2IxNGQ0MDBlNDNm
YjliMzE3NmI5YTA1ZWM4Yjk1MWMzYmZlLi40MDRiM2ZhMTRlZDkwNzkxNDBkZGMzZjc2ZDM1MzMw
NmRjMWIyN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9i
bGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuaApAQCAt
MTI2LDYgKzEyNiw4IEBAIGNsYXNzIExheWVyQ29tcG9zaXRpbmdUaHJlYWQgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8TGF5ZXJDb21wb3NpdGluZ1RocmVhCiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8TGF5ZXJDb21wb3NpdGluZ1RocmVhZD4gY3JlYXRlKExheWVyVHlwZSwg
TGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudCopOwogCisgICAgdm9pZCBzZXRDbGllbnQoTGF5
ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9
CisKICAgICAvLyBUaHJlYWQgc2FmZQogICAgIHZvaWQgc2V0UGx1Z2luVmlldyhQbHVnaW5WaWV3
Kik7CiAjaWYgRU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJEYXRhLmgKaW5kZXggNGViMTFlMzFmYjFlMTA2
NzRlZGQwMWNlNmIzNjAzNTI1MmVmYjYwZC4uZGU0YjUxZmQxNWUwZjA3YTA0Y2Y1Y2E3M2Q0MzU5
MTcxOGM1YjhlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9MYXllckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L0xheWVyRGF0YS5oCkBAIC05Miw4ICs5Miw2IEBAIHB1YmxpYzoKICNp
ZiBFTkFCTEUoVklERU8pCiAgICAgICAgICwgbV9tZWRpYVBsYXllcigwKQogI2VuZGlmCi0gICAg
ICAgICwgbV90ZXhJRCgwKQotICAgICAgICAsIG1fZnJvbnRCdWZmZXJMb2NrKDApCiAgICAgICAg
ICwgbV9zdXNwZW5kVGltZSgwKQogICAgICAgICAsIG1fZG91YmxlU2lkZWQodHJ1ZSkKICAgICAg
ICAgLCBtX21hc2tzVG9Cb3VuZHMoZmFsc2UpCkBAIC0xNTIsOSArMTUwLDYgQEAgcHVibGljOgog
CiAgICAgYm9vbCBwcmVzZXJ2ZXMzRCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlc2VydmVzM0Q7IH0K
IAotICAgIHVuc2lnbmVkIGdldFRleHR1cmVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4SUQ7IH0K
LSAgICB2b2lkIHNldFRleHR1cmVJRCh1bnNpZ25lZCBpbnQgdmFsdWUpIHsgbV90ZXhJRCA9IHZh
bHVlOyB9Ci0KICAgICBib29sIG5lZWRzVGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJU
eXBlID09IFdlYkdMTGF5ZXIgfHwgbV9sYXllclR5cGUgPT0gQ2FudmFzTGF5ZXIgfHwgbV9uZWVk
c1RleHR1cmU7IH0KIAogICAgIExheWVyUHJvZ3JhbVNoYWRlciBsYXllclByb2dyYW1TaGFkZXIo
KSBjb25zdCB7IHJldHVybiBtX2xheWVyUHJvZ3JhbVNoYWRlcjsgfQpAQCAtMjE5LDEwICsyMTQs
NiBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKICAgICBJbnRSZWN0IG1faG9sZVB1bmNoUmVjdDsKIAot
ICAgIHVuc2lnbmVkIG1fdGV4SUQ7Ci0KLSAgICBwdGhyZWFkX211dGV4X3QqIG1fZnJvbnRCdWZm
ZXJMb2NrOwotCiAgICAgZG91YmxlIG1fc3VzcGVuZFRpbWU7CiAKICAgICB1bnNpZ25lZCBtX2Rv
dWJsZVNpZGVkIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5jcHAKaW5kZXggZTlk
M2RmZjQyYzljMTBmZmY1MDlkNjVjMzhiNDNlNzZmNGJjZjczMC4uMzMxMjhhMDJlNjdjYWYyZTcz
YzJkNGIxN2VkNDQyMTFlOWMxZDA3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5j
cHAKQEAgLTc4LDkgKzc4LDYgQEAgTGF5ZXJXZWJLaXRUaHJlYWQ6On5MYXllcldlYktpdFRocmVh
ZCgpCiB7CiAgICAgbV9sYXllckNvbXBvc2l0aW5nVGhyZWFkLT5jbGVhckFuaW1hdGlvbnMoKTsK
IAotICAgIGlmIChtX2Zyb250QnVmZmVyTG9jaykKLSAgICAgICAgcHRocmVhZF9tdXRleF9kZXN0
cm95KG1fZnJvbnRCdWZmZXJMb2NrKTsKLQogICAgIGlmIChtX3RpbGVyKQogICAgICAgICBtX3Rp
bGVyLT5sYXllcldlYktpdFRocmVhZERlc3Ryb3llZCgpOwogCkBAIC0xNjQsMTggKzE2MSwxNiBA
QCBib29sIExheWVyV2ViS2l0VGhyZWFkOjpjb250ZW50c1Zpc2libGUoY29uc3QgSW50UmVjdCYg
Y29udGVudHNSZWN0KSBjb25zdAogICAgIHJldHVybiBtX293bmVyLT5jb250ZW50c1Zpc2libGUo
Y29udGVudHNSZWN0KTsKIH0KIAotdm9pZCBMYXllcldlYktpdFRocmVhZDo6Y3JlYXRlRnJvbnRC
dWZmZXJMb2NrKCkKK3ZvaWQgTGF5ZXJXZWJLaXRUaHJlYWQ6OnVwZGF0ZVRleHR1cmVDb250ZW50
c0lmTmVlZGVkKCkKIHsKLSAgICBwdGhyZWFkX211dGV4YXR0cl90IG11dGV4QXR0cmlidXRlczsK
LSAgICBwdGhyZWFkX211dGV4YXR0cl9pbml0KCZtdXRleEF0dHJpYnV0ZXMpOwotICAgIG1fZnJv
bnRCdWZmZXJMb2NrID0gbmV3IHB0aHJlYWRfbXV0ZXhfdDsKLSAgICBwdGhyZWFkX211dGV4X2lu
aXQobV9mcm9udEJ1ZmZlckxvY2ssICZtdXRleEF0dHJpYnV0ZXMpOworICAgIGlmIChtX3RpbGVy
KQorICAgICAgICBtX3RpbGVyLT51cGRhdGVUZXh0dXJlQ29udGVudHNJZk5lZWRlZChtX2lzTWFz
ayA/IDEuMCA6IGNvbnRlbnRzU2NhbGUoKSk7CiB9CiAKLXZvaWQgTGF5ZXJXZWJLaXRUaHJlYWQ6
OnVwZGF0ZVRleHR1cmVDb250ZW50c0lmTmVlZGVkKCkKK3ZvaWQgTGF5ZXJXZWJLaXRUaHJlYWQ6
OmNvbW1pdFBlbmRpbmdUZXh0dXJlVXBsb2FkcygpCiB7CiAgICAgaWYgKG1fdGlsZXIpCi0gICAg
ICAgIG1fdGlsZXItPnVwZGF0ZVRleHR1cmVDb250ZW50c0lmTmVlZGVkKG1faXNNYXNrID8gMS4w
IDogY29udGVudHNTY2FsZSgpKTsKKyAgICAgICAgbV90aWxlci0+Y29tbWl0UGVuZGluZ1RleHR1
cmVVcGxvYWRzKCk7CiB9CiAKIHZvaWQgTGF5ZXJXZWJLaXRUaHJlYWQ6OnNldENvbnRlbnRzKElt
YWdlKiBjb250ZW50cykKQEAgLTE5OSw3ICsxOTQsNyBAQCB2b2lkIExheWVyV2ViS2l0VGhyZWFk
OjpzZXREcmF3YWJsZShib29sIGlzRHJhd2FibGUpCiAKICAgICBtX2lzRHJhd2FibGUgPSBpc0Ry
YXdhYmxlOwogCi0gICAgc2V0TmVlZHNUZXh0dXJlKG1faXNEcmF3YWJsZSAmJiAoZHJhd3NDb250
ZW50KCkgfHwgY29udGVudHMoKSB8fCBwbHVnaW5WaWV3KCkgfHwgbWVkaWFQbGF5ZXIoKSB8fCBt
X3RleElEKSk7CisgICAgc2V0TmVlZHNUZXh0dXJlKG1faXNEcmF3YWJsZSAmJiAoZHJhd3NDb250
ZW50KCkgfHwgY29udGVudHMoKSB8fCBwbHVnaW5WaWV3KCkgfHwgbWVkaWFQbGF5ZXIoKSkpOwog
ICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CiAKQEAgLTMwNCw4ICsyOTksNyBAQCB2b2lkIExheWVy
V2ViS2l0VGhyZWFkOjpjb21taXRPbkNvbXBvc2l0aW5nVGhyZWFkKCkKICAgICB9CiAgICAgbV9w
b3NpdGlvbiA9IG9sZFBvc2l0aW9uOwogICAgIHVwZGF0ZUxheWVySGllcmFyY2h5KCk7Ci0gICAg
aWYgKG1fdGlsZXIpCi0gICAgICAgIG1fdGlsZXItPmNvbW1pdFBlbmRpbmdUZXh0dXJlVXBsb2Fk
cygpOworICAgIGNvbW1pdFBlbmRpbmdUZXh0dXJlVXBsb2FkcygpOwogCiAgICAgc2l6ZV90IGxp
c3RTaXplID0gbV9zdWJsYXllcnMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bGlzdFNpemU7IGkrKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJlYWQuaAppbmRleCA1NjQ5NDJk
YTQ0YTE5Y2JkOTRkNjNhOTI0NzIyY2RmM2Y5NTMwMmE0Li45NjA0YmM2Y2FiNzA0YTU0ODFlNTY0
NjhkNTA1ZWU5N2EzYTY3ODM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L0xheWVyV2ViS2l0VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5oCkBAIC0x
NjMsNyArMTYzLDYgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBzZXROZWVkc1RleHR1cmUoYm9v
bCBuZWVkc1RleHR1cmUpIHsgbV9uZWVkc1RleHR1cmUgPSBuZWVkc1RleHR1cmU7IH0KICAgICB2
b2lkIHNldExheWVyUHJvZ3JhbVNoYWRlcihMYXllckRhdGE6OkxheWVyUHJvZ3JhbVNoYWRlciBz
aGFkZXIpIHsgbV9sYXllclByb2dyYW1TaGFkZXIgPSBzaGFkZXI7IH0KLSAgICB2b2lkIGNyZWF0
ZUZyb250QnVmZmVyTG9jaygpOwogICAgIGJvb2wgaXNEcmF3YWJsZSgpIGNvbnN0IHsgcmV0dXJu
IG1faXNEcmF3YWJsZTsgfQogCiAgICAgdm9pZCBzdGFydEFuaW1hdGlvbnMoZG91YmxlIHRpbWUp
OwpAQCAtMTcyLDYgKzE3MSw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgdm9pZCBib3Vu
ZHNDaGFuZ2VkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRleHR1cmVDb250ZW50c0lm
TmVlZGVkKCk7CisgICAgdmlydHVhbCB2b2lkIGNvbW1pdFBlbmRpbmdUZXh0dXJlVXBsb2Fkcygp
OwogCiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlTGF5ZXJIaWVyYXJjaHkoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvV2ViR0xMYXll
cldlYktpdFRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L1dlYkdMTGF5ZXJXZWJLaXRUaHJlYWQuY3BwCmluZGV4IDc1YjljNWZhNDRmYTA4M2I1
ZWQ5ODg1ZTQ2N2NkYTYwYjgxYWJlYjYuLjI5NWFjZjRkMjY5YzJlZjk2NjFkNjM4NjAxZjE1Nzc1
YzU5OWM2N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvV2ViR0xMYXllcldlYktpdFRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9XZWJHTExheWVyV2ViS2l0VGhyZWFkLmNwcApA
QCAtMjcsMzUgKzI3LDI1IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdlYkdMTGF5ZXJXZWJL
aXRUaHJlYWQ6OldlYkdMTGF5ZXJXZWJLaXRUaHJlYWQoKQotICAgIDogTGF5ZXJXZWJLaXRUaHJl
YWQoV2ViR0xMYXllciwgMCkKKyAgICA6IEVHTEltYWdlTGF5ZXJXZWJLaXRUaHJlYWQoV2ViR0xM
YXllcikKICAgICAsIG1fd2ViR0xDb250ZXh0KDApCi0gICAgLCBtX25lZWRzRGlzcGxheShmYWxz
ZSkKIHsKLSAgICBzZXRMYXllclByb2dyYW1TaGFkZXIoTGF5ZXJQcm9ncmFtU2hhZGVyUkdCQSk7
CiB9CiAKIFdlYkdMTGF5ZXJXZWJLaXRUaHJlYWQ6On5XZWJHTExheWVyV2ViS2l0VGhyZWFkKCkK
IHsKLX0KLQotdm9pZCBXZWJHTExheWVyV2ViS2l0VGhyZWFkOjpzZXROZWVkc0Rpc3BsYXkoKQot
ewotICAgIG1fbmVlZHNEaXNwbGF5ID0gdHJ1ZTsKLSAgICBzZXROZWVkc0NvbW1pdCgpOworICAg
IGlmIChtX3dlYkdMQ29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCisgICAgICAgIGRlbGV0
ZUZyb250QnVmZmVyKCk7CiB9CiAKIHZvaWQgV2ViR0xMYXllcldlYktpdFRocmVhZDo6dXBkYXRl
VGV4dHVyZUNvbnRlbnRzSWZOZWVkZWQoKQogewotICAgIC8vIEZJWE1FOiBEb2VzIFdlYkdMTGF5
ZXIgYWx3YXlzIG5lZWQgZGlzcGxheT8gT3IgY2FuIHdlIGp1c3QgcmV0dXJuIGltbWVkaWF0ZWx5
IGlmICghbV9uZWVkc0Rpc3BsYXkpPwotICAgIG1fbmVlZHNEaXNwbGF5ID0gZmFsc2U7CisgICAg
aWYgKCFtX3dlYkdMQ29udGV4dCB8fCAhbV93ZWJHTENvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVu
dCgpKQorICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fZnJvbnRCdWZmZXJMb2NrKQotICAg
ICAgICBjcmVhdGVGcm9udEJ1ZmZlckxvY2soKTsKLQotICAgIC8vIExvY2sgY29waWVkIEdMIHRl
eHR1cmUgc28gdGhhdCB0aGUgVUkgdGhyZWFkIHdvbid0IGFjY2VzcyBpdCB3aGlsZSB3ZSBhcmUg
ZHJhd2luZyBpbnRvIGl0LgotICAgIHB0aHJlYWRfbXV0ZXhfbG9jayhtX2Zyb250QnVmZmVyTG9j
ayk7CiAgICAgbV93ZWJHTENvbnRleHQtPnByZXBhcmVUZXh0dXJlKCk7Ci0gICAgcHRocmVhZF9t
dXRleF91bmxvY2sobV9mcm9udEJ1ZmZlckxvY2spOworCisgICAgdXBkYXRlRnJvbnRCdWZmZXIo
bV93ZWJHTENvbnRleHQtPmdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCksIG1fd2ViR0xDb250
ZXh0LT5wbGF0Zm9ybVRleHR1cmUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvV2Vi
R0xMYXllcldlYktpdFRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9XZWJHTExheWVyV2ViS2l0VGhyZWFkLmgKaW5kZXggNmJjYjQ4NjU4ODY3YmQy
MGNhZGM3ZjNhZWFlYzc2YWYwMGQxNDYwOS4uYjFjZDU3ZmU5Y2I0MGVhMDk1YTE4OWIyN2FkNTUw
ZTgxMGEwNTNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9XZWJHTExheWVyV2ViS2l0VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9XZWJHTExheWVyV2ViS2l0VGhyZWFkLmgKQEAg
LTIxLDEzICsyMSwxMyBAQAogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBF
TkFCTEUoV0VCR0wpCiAKLSNpbmNsdWRlICJMYXllcldlYktpdFRocmVhZC5oIgorI2luY2x1ZGUg
IkVHTEltYWdlTGF5ZXJXZWJLaXRUaHJlYWQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIAotY2xhc3MgV2ViR0xMYXllcldlYktpdFRocmVhZCA6
IHB1YmxpYyBMYXllcldlYktpdFRocmVhZCB7CitjbGFzcyBXZWJHTExheWVyV2ViS2l0VGhyZWFk
IDogcHVibGljIEVHTEltYWdlTGF5ZXJXZWJLaXRUaHJlYWQgewogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFdlYkdMTGF5ZXJXZWJLaXRUaHJlYWQ+IGNyZWF0ZSgpCiAgICAgewpAQCAt
MzgsOCArMzgsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFdlYkdMQ29udGV4dChHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCkgeyBtX3dlYkdMQ29udGV4dCA9IGNvbnRleHQ7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKTsKLQogcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVUZXh0dXJlQ29udGVudHNJZk5lZWRlZCgpOwogCkBAIC00Nyw3ICs0NSw2
IEBAIHByaXZhdGU6CiAgICAgV2ViR0xMYXllcldlYktpdFRocmVhZCgpOwogCiAgICAgR3JhcGhp
Y3NDb250ZXh0M0QqIG1fd2ViR0xDb250ZXh0OwotICAgIGJvb2wgbV9uZWVkc0Rpc3BsYXk7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dDNET3BlbkdMQ29tbW9uLmNwcAppbmRleCAyMjU2MjgyNDhjMjk4MzYxZDZiNzliZTViNGFhNGM3
OWMxNDEyMTJkLi4xYTBhMjYyZGY3NDZiNjYwYWMwNjQ5NzgzYmU1OTg4MDg5ODQxMDQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0M0RPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKQEAgLTE1NSw2
ICsxNTUsNyBAQCBQYXNzUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50
UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKERyYXdpbgogICAgIHJldHVybiBpbWFnZURhdGEu
cmVsZWFzZSgpOwogfQogCisjaWYgIVBMQVRGT1JNKEJMQUNLQkVSUlkpCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpwcmVwYXJlVGV4dHVyZSgpCiB7CiAgICAgaWYgKG1fbGF5ZXJDb21wb3NpdGVk
KQpAQCAtMTY2LDIyICsxNjcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwcmVwYXJlVGV4
dHVyZSgpCiAKICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUiwgbV9mYm8pOwogICAgIDo6Z2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsK
LSNpZiBQTEFURk9STShCTEFDS0JFUlJZKQotICAgIGlmICghcGxhdGZvcm1UZXh0dXJlKCkpIHsK
LSAgICAgICAgR0x1aW50IHRleCA9IDA7Ci0gICAgICAgIDo6Z2xHZW5UZXh0dXJlcygxLCAmdGV4
KTsKLSAgICAgICAgOjpnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleCk7Ci0gICAgICAg
IDo6Z2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwg
R0xfTElORUFSKTsKLSAgICAgICAgOjpnbFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOwotICAgICAgICA6OmdsVGV4UGFyYW1ldGVy
ZihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7Ci0g
ICAgICAgIDo6Z2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9U
LCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICAgICAgOjpnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8y
RCwgMCwgR0xfUkdCQSwgbV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCwgMCwgR0xfUkdC
QSwgR0xfVU5TSUdORURfQllURSwgMCk7Ci0gICAgICAgIG1fY29tcG9zaXRpbmdMYXllci0+c2V0
VGV4dHVyZUlEKHRleCk7Ci0gICAgfQotICAgIDo6Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJE
LCBwbGF0Zm9ybVRleHR1cmUoKSk7Ci0jZWxzZQogICAgIDo6Z2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFXzJELCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsKLSNlbmRpZgogICAgIDo6Z2xDb3B5VGV4SW1h
Z2UyRChHTF9URVhUVVJFXzJELCAwLCBtX2ludGVybmFsQ29sb3JGb3JtYXQsIDAsIDAsIG1fY3Vy
cmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQsIDApOwogICAgIDo6Z2xCaW5kVGV4dHVyZShHTF9U
RVhUVVJFXzJELCBtX2JvdW5kVGV4dHVyZTApOwogICAgIDo6Z2xBY3RpdmVUZXh0dXJlKG1fYWN0
aXZlVGV4dHVyZSk7CkBAIC0xOTAsNiArMTc2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
cHJlcGFyZVRleHR1cmUoKQogICAgIDo6Z2xGaW5pc2goKTsKICAgICBtX2xheWVyQ29tcG9zaXRl
ZCA9IHRydWU7CiB9CisjZW5kaWYKIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVhZFJlbmRl
cmluZ1Jlc3VsdHModW5zaWduZWQgY2hhciAqcGl4ZWxzLCBpbnQgcGl4ZWxzU2l6ZSkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCmluZGV4IDM4MTk1MjNhZThjN2Rl
YmM3NTZmMzFhMTM3ZWU4NDgxOTcxMzQwMDguLjQxNjIzY2RmMjQxM2VhNjRjOTVkMjA3OGExODhj
MDBmZmQyNGFlOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcApA
QCAtNTU5OSw3ICs1NTk5LDcgQEAgR3JhcGhpY3NMYXllciogV2ViUGFnZVByaXZhdGU6Om92ZXJs
YXlMYXllcigpCiAgICAgcmV0dXJuIG1fb3ZlcmxheUxheWVyLmdldCgpOwogfQogCi12b2lkIFdl
YlBhZ2VQcml2YXRlOjpzZXRDb21wb3NpdG9yKFBhc3NSZWZQdHI8V2ViUGFnZUNvbXBvc2l0b3JQ
cml2YXRlPiBjb21wb3NpdG9yLCBFR0xDb250ZXh0IGNvbXBvc2l0aW5nQ29udGV4dCkKK3ZvaWQg
V2ViUGFnZVByaXZhdGU6OnNldENvbXBvc2l0b3IoUGFzc1JlZlB0cjxXZWJQYWdlQ29tcG9zaXRv
clByaXZhdGU+IGNvbXBvc2l0b3IpCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIEJsYWNrQmVycnk6
OlBsYXRmb3JtOwogCkBAIC01NjEwLDIwICs1NjEwLDE1IEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6
OnNldENvbXBvc2l0b3IoUGFzc1JlZlB0cjxXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU+IGNvbXBv
c2l0CiAgICAgaWYgKG1fY29tcG9zaXRvciB8fCBtX2NsaWVudC0+d2luZG93KCkpCiAgICAgICAg
IG1fYmFja2luZ1N0b3JlLT5kLT5zdXNwZW5kU2NyZWVuQW5kQmFja2luZ1N0b3JlVXBkYXRlcygp
OwogCi0gICAgLy8gVGhpcyBtZXRob2QgY2FsbCBhbHdheXMgcm91bmQtdHJpcHMgb24gdGhlIFdl
YktpdCB0aHJlYWQgKHNlZSBXZWJQYWdlQ29tcG9zaXRvcjo6V2ViUGFnZUNvbXBvc2l0b3IoKSBh
bmQgfldlYlBhZ2VDb21wb3NpdG9yKCkpLAotICAgIC8vIGFuZCB0aGUgY29tcG9zaXRpbmcgY29u
dGV4dCBtdXN0IGJlIHNldCBvbiB0aGUgV2ViS2l0IHRocmVhZC4gSG93IGNvbnZlbmllbnQhCi0g
ICAgaWYgKGNvbXBvc2l0aW5nQ29udGV4dCAhPSBFR0xfTk9fQ09OVEVYVCkKLSAgICAgICAgQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpzZXRDb21wb3NpdGluZ0NvbnRleHQoY29tcG9z
aXRpbmdDb250ZXh0KTsKLQogICAgIC8vIFRoZSBtX2NvbXBvc2l0b3IgbWVtYmVyIGhhcyB0byBi
ZSBtb2RpZmllZCBkdXJpbmcgYSBzeW5jIGNhbGwgZm9yIHRocmVhZAogICAgIC8vIHNhZmUgYWNj
ZXNzIHRvIG1fY29tcG9zaXRvciBhbmQgaXRzIHJlZmNvdW50LgotICAgIHVzZXJJbnRlcmZhY2VU
aHJlYWRNZXNzYWdlQ2xpZW50KCktPmRpc3BhdGNoU3luY01lc3NhZ2UoY3JlYXRlTWV0aG9kQ2Fs
bE1lc3NhZ2UoJldlYlBhZ2VQcml2YXRlOjpzZXRDb21wb3NpdG9ySGVscGVyLCB0aGlzLCBjb21w
b3NpdG9yLCBjb21wb3NpdGluZ0NvbnRleHQpKTsKKyAgICB1c2VySW50ZXJmYWNlVGhyZWFkTWVz
c2FnZUNsaWVudCgpLT5kaXNwYXRjaFN5bmNNZXNzYWdlKGNyZWF0ZU1ldGhvZENhbGxNZXNzYWdl
KCZXZWJQYWdlUHJpdmF0ZTo6c2V0Q29tcG9zaXRvckhlbHBlciwgdGhpcywgY29tcG9zaXRvcikp
OwogCiAgICAgaWYgKG1fY29tcG9zaXRvciB8fCBtX2NsaWVudC0+d2luZG93KCkpIC8vIHRoZSBu
ZXcgY29tcG9zaXRvciwgaWYgb25lIHdhcyBzZXQKICAgICAgICAgbV9iYWNraW5nU3RvcmUtPmQt
PnJlc3VtZVNjcmVlbkFuZEJhY2tpbmdTdG9yZVVwZGF0ZXMoQmFja2luZ1N0b3JlOjpSZW5kZXJB
bmRCbGl0KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJpdmF0ZTo6c2V0Q29tcG9zaXRvckhlbHBlcihQ
YXNzUmVmUHRyPFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZT4gY29tcG9zaXRvciwgRUdMQ29udGV4
dCBjb21wb3NpdGluZ0NvbnRleHQpCit2b2lkIFdlYlBhZ2VQcml2YXRlOjpzZXRDb21wb3NpdG9y
SGVscGVyKFBhc3NSZWZQdHI8V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlPiBjb21wb3NpdG9yKQog
ewogICAgIHVzaW5nIG5hbWVzcGFjZSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRvci5jcHAgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yLmNwcAppbmRleCA2
ZTUwZjE3YzFhNjkxOTk1MzM1NGY1MWJlNjlmYWRhMzUwOGFhYjQ0Li44OTQ4Y2I5ZThlZjU1NTg3
NWU0Mjc2ZjE4ODA2ZGVjYjYyNDBmMDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yLmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1
ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUV4ZWN1dGFibGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8Qmxh
Y2tCZXJyeVBsYXRmb3JtTWVzc2FnZS5oPgogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybU1l
c3NhZ2VDbGllbnQuaD4KLSNpbmNsdWRlIDxFR0wvZWdsLmg+CiAjaW5jbHVkZSA8R2VuZXJpY1Rp
bWVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8VGhyZWFkVGltZXJDbGllbnQuaD4KICNpbmNsdWRlIDx3
dGYvQ3VycmVudFRpbWUuaD4KQEAgLTI4Miw3ICsyODEsNyBAQCBXZWJQYWdlQ29tcG9zaXRvcjo6
V2ViUGFnZUNvbXBvc2l0b3IoV2ViUGFnZSogcGFnZSwgV2ViUGFnZUNvbXBvc2l0b3JDbGllbnQq
IGNsaQogICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBjb21wb3NpdG9yIHdpbGwgYmUgYXJv
dW5kIGZvciBhcyBsb25nIGFzIGl0J3MKICAgICAvLyBuZWVkZWQuIFVuZm9ydHVuYXRlbHkgUmVm
UHRyPFQ+IGlzIG5vdCBwdWJsaWMsIHNvIHdlIGhhdmUgZGVjbGFyZSB0bwogICAgIC8vIHJlc29y
dCB0byBtYW51YWwgcmVmY291bnRpbmcuCi0gICAgd2ViS2l0VGhyZWFkTWVzc2FnZUNsaWVudCgp
LT5kaXNwYXRjaE1lc3NhZ2UoY3JlYXRlTWV0aG9kQ2FsbE1lc3NhZ2UoJldlYlBhZ2VQcml2YXRl
OjpzZXRDb21wb3NpdG9yLCBkLT5wYWdlKCksIHRtcCwgZWdsR2V0Q3VycmVudENvbnRleHQoKSkp
OworICAgIHdlYktpdFRocmVhZE1lc3NhZ2VDbGllbnQoKS0+ZGlzcGF0Y2hNZXNzYWdlKGNyZWF0
ZU1ldGhvZENhbGxNZXNzYWdlKCZXZWJQYWdlUHJpdmF0ZTo6c2V0Q29tcG9zaXRvciwgZC0+cGFn
ZSgpLCB0bXApKTsKIH0KIAogV2ViUGFnZUNvbXBvc2l0b3I6On5XZWJQYWdlQ29tcG9zaXRvcigp
CkBAIC0yOTEsNyArMjkwLDcgQEAgV2ViUGFnZUNvbXBvc2l0b3I6On5XZWJQYWdlQ29tcG9zaXRv
cigpCiAKICAgICAvLyBJZiB3ZSdyZSBiZWluZyBkZXN0cm95ZWQgYmVmb3JlIHRoZSBwYWdlLCBz
ZW5kIGEgbWVzc2FnZSB0byBkaXNjb25uZWN0IHVzCiAgICAgaWYgKGQtPnBhZ2UoKSkKLSAgICAg
ICAgd2ViS2l0VGhyZWFkTWVzc2FnZUNsaWVudCgpLT5kaXNwYXRjaE1lc3NhZ2UoY3JlYXRlTWV0
aG9kQ2FsbE1lc3NhZ2UoJldlYlBhZ2VQcml2YXRlOjpzZXRDb21wb3NpdG9yLCBkLT5wYWdlKCks
IFBhc3NSZWZQdHI8V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlPigwKSwgRUdMX05PX0NPTlRFWFQp
KTsKKyAgICAgICAgd2ViS2l0VGhyZWFkTWVzc2FnZUNsaWVudCgpLT5kaXNwYXRjaE1lc3NhZ2Uo
Y3JlYXRlTWV0aG9kQ2FsbE1lc3NhZ2UoJldlYlBhZ2VQcml2YXRlOjpzZXRDb21wb3NpdG9yLCBk
LT5wYWdlKCksIFBhc3NSZWZQdHI8V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlPigwKSkpOwogICAg
IGQtPmNvbXBvc2l0b3JEZXN0cm95ZWQoKTsKICAgICBkLT5kZXJlZigpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaCBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgKaW5kZXggMjcxZWQwYTM5Njg3ZDJjYWMwYTY2
YjY5MzFlNTRlMWJlYjYyOTIwYS4uNjYyMmM3MjliYzZiNzExMzg2MjhlNmVkZTk4NzgwZGE3M2Q5
Yzg2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3Au
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5oCkBAIC00MTMs
OCArNDEzLDggQEAgcHVibGljOgogICAgIHZvaWQgY29tbWl0Um9vdExheWVyKGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgYm9vbCk7CiAgICAgYm9vbCBp
c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0
b3I7IH0KICAgICBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGUqIGNvbXBvc2l0b3IoKSBjb25zdCB7
IHJldHVybiBtX2NvbXBvc2l0b3IuZ2V0KCk7IH0KLSAgICB2b2lkIHNldENvbXBvc2l0b3IoUGFz
c1JlZlB0cjxXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU+LCBFR0xDb250ZXh0IGNvbXBvc2l0aW5n
Q29udGV4dCk7Ci0gICAgdm9pZCBzZXRDb21wb3NpdG9ySGVscGVyKFBhc3NSZWZQdHI8V2ViUGFn
ZUNvbXBvc2l0b3JQcml2YXRlPiwgRUdMQ29udGV4dCBjb21wb3NpdGluZ0NvbnRleHQpOworICAg
IHZvaWQgc2V0Q29tcG9zaXRvcihQYXNzUmVmUHRyPFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZT4p
OworICAgIHZvaWQgc2V0Q29tcG9zaXRvckhlbHBlcihQYXNzUmVmUHRyPFdlYlBhZ2VDb21wb3Np
dG9yUHJpdmF0ZT4pOwogICAgIHZvaWQgc2V0Q29tcG9zaXRvckJhY2tncm91bmRDb2xvcihjb25z
dCBXZWJDb3JlOjpDb2xvciYpOwogICAgIGJvb2wgY3JlYXRlQ29tcG9zaXRvcigpOwogICAgIHZv
aWQgZGVzdHJveUNvbXBvc2l0b3IoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158314</attachid>
            <date>2012-08-14 06:28:37 -0700</date>
            <delta_ts>2012-08-14 07:34:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93614-20120814152804.patch</filename>
            <type>text/plain</type>
            <size>52885</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDdmYmFhNWIwZmM0MjE5
M2E0MTU5NDE5NDRkYjFlZTkwMmIwNGQ3ZS4uMmUzOGVmZGU5OWQwM2VmNDUwYzM1M2NjMTZlYWU3
YzgzYmM1NmIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMCBAQAorMjAxMi0wOC0wOSAgQXJ2
aWQgTmlsc3NvbiAgPGFuaWxzc29uQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIEdl
dCByaWQgb2YgZ2xDb3B5VGV4SW1hZ2UyRCBpbiBDYW52YXMgYW5kIFdlYkdMIGNvZGUgcGF0aHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzNjE0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KKworICAgICAgICBXZSB1c2VkIHRv
IHNldCB1cCByZXNvdXJjZSBzaGFyaW5nIGJldHdlZW4gdGhlIGNvbXBvc2l0aW5nIHRocmVhZAor
ICAgICAgICBjb250ZXh0IGFuZCB0aGUgQ2FudmFzIGFuZCBXZWJHTCBjb250ZXh0cywgYW5kIHVz
ZSBnbENvcHlUZXhJbWFnZTJEIHRvCisgICAgICAgIGdldCBhIGNvcHkgb2YgdGhlIGZyYW1lYnVm
ZmVyIHRvIHVzZSBhcyBmcm9udCBidWZmZXIgZm9yIGNvbXBvc2l0aW5nCisgICAgICAgIHB1cnBv
c2VzLgorCisgICAgICAgIE5vdyB3ZSBpbnN0ZWFkIGNyZWF0ZSBhbiBFR0xJbWFnZSBhbmQgYmxp
dCB0aGUgQ2FudmFzL1dlYkdMIG91dHB1dCB0bworICAgICAgICBpdC4gVGhlIGNvbXBvc2l0aW5n
IHRocmVhZCBjcmVhdGVzIGEgdGV4dHVyZSBmcm9tIHRoZSBFR0xJbWFnZSBpbiBvcmRlcgorICAg
ICAgICB0byBjb21wb3NpdGUgdGhlIG91dHB1dC4KKworICAgICAgICBDcmVhdGVkIGEgbmV3IEVH
TEltYWdlTGF5ZXJXZWJLaXRUaHJlYWQgYmFzZSBjbGFzcyB0aGF0IGhhbmRsZXMgdGhlCisgICAg
ICAgIEVHTEltYWdlIGFuZCBkb2VzIHRoZSBibGl0dGluZy4gQ2FudmFzTGF5ZXJXZWJLaXRUaHJl
YWQgYW5kCisgICAgICAgIFdlYkdMTGF5ZXJXZWJLaXRUaHJlYWQgbm93IGluaGVyaXQgZnJvbSB0
aGlzIG5ldyBiYXNlIGNsYXNzLgorCisgICAgICAgIEhvd2V2ZXIsIHdlIG5lZWQgdG8gYmUgY2Fy
ZWZ1bCB0byByZXN0b3JlIHN0YXRlIGFmdGVyIHRoZSBibGl0IGJlY2F1c2UKKyAgICAgICAgaXQn
cyBkb25lIHVzaW5nIHRoZSBDYW52YXMvV2ViR0wgY29udGV4dC4KKworICAgICAgICBUaGUgQmxh
Y2tCZXJyeSBpbXBsZW1lbnRhdGlvbiBvZiBHcmFwaGljc0NvbnRleHQzRDo6cHJlcGFyZVRleHR1
cmUoKQorICAgICAgICB3YXMgY2hhbmdlZCB0byBubyBsb25nZXIgY2FsbCBnbENvcHlUZXhJbWFn
ZSwgYW5kCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybUxheWVyKCkgbm93IHJl
dHVybnMgdGhlIHRhcmdldCB0ZXh0dXJlCisgICAgICAgIGRpcmVjdGx5LgorCisgICAgICAgIFJl
dmlld2VkIGludGVybmFsbHkgYnkgRmlsaXAgU3BhY2VrLgorCisgICAgICAgIFBSIDE4ODQ3Mgor
CisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvciwgbmV3IHRlc3RzLgorCisgICAgICAgICog
UGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQ6OkNhbnZhc0xheWVyV2ViS2l0VGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc0xheWVyV2ViS2l0VGhyZWFkOjp+Q2FudmFzTGF5ZXJXZWJLaXRU
aHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQ6OnNldERl
dmljZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXllcldlYktpdFRocmVhZDo6bWFrZUNv
bnRleHRDdXJyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0xheWVyV2ViS2l0VGhyZWFk
Ojp0ZXh0dXJlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc0xheWVyV2ViS2l0VGhyZWFkOjp0ZXh0dXJlSUQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQuaDoKKyAgICAgICAgKENh
bnZhc0xheWVyV2ViS2l0VGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0VHTEltYWdlTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpFR0xJbWFnZUxheWVyQ29tcG9z
aXRpbmdUaHJlYWRDbGllbnQ6On5FR0xJbWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RUdMSW1hZ2VMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50
Ojp1cGxvYWRUZXh0dXJlc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkVHTEltYWdlTGF5
ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudDo6ZHJhd1RleHR1cmVzKToKKyAgICAgICAgKFdlYkNv
cmU6OkVHTEltYWdlTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudDo6ZGVsZXRlVGV4dHVyZXMp
OgorICAgICAgICAoV2ViQ29yZTo6RUdMSW1hZ2VMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50
OjpiaW5kQ29udGVudHNUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkVHTEltYWdlTGF5ZXJD
b21wb3NpdGluZ1RocmVhZENsaWVudDo6c2V0SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvRUdMSW1hZ2VMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50Lmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChFR0xJbWFnZUxheWVyQ29tcG9z
aXRpbmdUaHJlYWRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6RUdMSW1hZ2VMYXllckNvbXBv
c2l0aW5nVGhyZWFkQ2xpZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RUdMSW1hZ2VM
YXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50OjpsYXllckNvbXBvc2l0aW5nVGhyZWFkRGVzdHJv
eWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkVHTEltYWdlTGF5ZXJDb21wb3NpdGluZ1RocmVhZENs
aWVudDo6bGF5ZXJWaXNpYmlsaXR5Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpFR0xJbWFn
ZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQ6OkVHTEltYWdlTGF5ZXJDb21wb3NpdGluZ1Ro
cmVhZENsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9FR0xJ
bWFnZUxheWVyV2ViS2l0VGhyZWFkLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVHTEltYWdlTGF5ZXJXZWJLaXRUaHJlYWQ6OkVHTEltYWdlTGF5ZXJX
ZWJLaXRUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6RUdMSW1hZ2VMYXllcldlYktpdFRocmVh
ZDo6fkVHTEltYWdlTGF5ZXJXZWJLaXRUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6RUdMSW1h
Z2VMYXllcldlYktpdFRocmVhZDo6c2V0TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6
OkVHTEltYWdlTGF5ZXJXZWJLaXRUaHJlYWQ6Om1ha2VDb250ZXh0Q3VycmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpFR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkOjp1cGRhdGVUZXh0dXJlQ29udGVu
dHNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpFR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFk
Ojpjb21taXRQZW5kaW5nVGV4dHVyZVVwbG9hZHMpOgorICAgICAgICAoV2ViQ29yZTo6RUdMSW1h
Z2VMYXllcldlYktpdFRocmVhZDo6Y3JlYXRlSW1hZ2VJZk5lZWRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpFR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkOjpjcmVhdGVTaGFkZXJJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkOjpkcmF3VGV4dHVyZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9FR0xJbWFnZUxheWVyV2Vi
S2l0VGhyZWFkLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQuaC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoRUdMSW1hZ2VMYXllcldlYktpdFRocmVhZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFwaGljc0NvbnRleHQzREJsYWNrQmVycnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnByZXBhcmVUZXh0dXJlKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBs
YXRmb3JtVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9M
YXllckNvbXBvc2l0aW5nVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcG9z
aXRpbmdUaHJlYWQ6OmRyYXdUZXh0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBv
c2l0aW5nVGhyZWFkOjpyZWxlYXNlVGV4dHVyZVJlc291cmNlcyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmg6CisgICAgICAg
IChXZWJDb3JlOjpMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpzZXRDbGllbnQpOgorICAgICAgICAo
TGF5ZXJDb21wb3NpdGluZ1RocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9MYXllckRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyRGF0YTo6TGF5ZXJE
YXRhKToKKyAgICAgICAgKExheWVyRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXll
cldlYktpdFRocmVhZDo6fkxheWVyV2ViS2l0VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyV2ViS2l0VGhyZWFkOjp1cGRhdGVUZXh0dXJlQ29udGVudHNJZk5lZWRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllcldlYktpdFRocmVhZDo6Y29tbWl0UGVuZGluZ1RleHR1cmVVcGxvYWRz
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyV2ViS2l0VGhyZWFkOjpjb21taXRPbkNvbXBvc2l0
aW5nVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVy
V2ViS2l0VGhyZWFkLmg6CisgICAgICAgIChMYXllcldlYktpdFRocmVhZCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9XZWJHTExheWVyV2ViS2l0VGhyZWFkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJXZWJLaXRUaHJlYWQ6OldlYkdMTGF5ZXJXZWJL
aXRUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllcldlYktpdFRocmVhZDo6dXBk
YXRlVGV4dHVyZUNvbnRlbnRzSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXll
cldlYktpdFRocmVhZDo6bWFrZUNvbnRleHRDdXJyZW50KToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllcldlYktpdFRocmVhZDo6dGV4dHVyZVNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllcldlYktpdFRocmVhZDo6dGV4dHVyZUlEKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1dlYkdMTGF5ZXJXZWJLaXRUaHJl
YWQuaDoKKyAgICAgICAgKFdlYkdMTGF5ZXJXZWJLaXRUaHJlYWQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpw
cmVwYXJlVGV4dHVyZSk6CisKIDIwMTItMDgtMTQgIEVkIEJha2VyICA8ZWRiYWtlckByaW0uY29t
PgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBMYXllckFuaW1hdGlvbiBpcyBub3QgaW1tdXRhYmxl
LCB3aGljaCBtYWtlcyBkZXJlZmVyZW5jaW5nIGFuIGV4cGVuc2l2ZSBvcGVyYXRpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4IGY2OTQxZTY4OWYxYzY1ZDU5M2MzOGM3YmRkNWM4
NDQ4YmRlYThlMTEuLmUyYzY4ODA1ZmUyYWMxM2ZmMzJhNmJkMjk5MTc2ZjMzOTY0NzA1YTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA4LTA5
ICBBcnZpZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJy
eV0gR2V0IHJpZCBvZiBnbENvcHlUZXhJbWFnZTJEIGluIENhbnZhcyBhbmQgV2ViR0wgY29kZSBw
YXRocworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM2
MTQKKworICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgorCisgICAgICAgIFdlIHVz
ZWQgdG8gc2V0IHVwIHJlc291cmNlIHNoYXJpbmcgYmV0d2VlbiB0aGUgY29tcG9zaXRpbmcgdGhy
ZWFkCisgICAgICAgIGNvbnRleHQgYW5kIHRoZSBDYW52YXMgYW5kIFdlYkdMIGNvbnRleHRzLCBh
bmQgdXNlIGdsQ29weVRleEltYWdlMkQgdG8KKyAgICAgICAgZ2V0IGEgY29weSBvZiB0aGUgZnJh
bWVidWZmZXIgdG8gdXNlIGFzIGZyb250IGJ1ZmZlciBmb3IgY29tcG9zaXRpbmcKKyAgICAgICAg
cHVycG9zZXMuCisKKyAgICAgICAgTm93IHdlIGluc3RlYWQgY3JlYXRlIGFuIEVHTEltYWdlIGFu
ZCBibGl0IHRoZSBDYW52YXMvV2ViR0wgb3V0cHV0IHRvCisgICAgICAgIGl0LiBUaGUgY29tcG9z
aXRpbmcgdGhyZWFkIGNyZWF0ZXMgYSB0ZXh0dXJlIGZyb20gdGhlIEVHTEltYWdlIGluIG9yZGVy
CisgICAgICAgIHRvIGNvbXBvc2l0ZSB0aGUgb3V0cHV0LgorCisgICAgICAgIFRoaXMgYWxsb3dz
IHVzIHRvIHR1cm4gb2ZmIHJlc291cmNlIHNoYXJpbmcsIHNvIHRoZSBXZWJQYWdlQ29tcG9zaXRv
cgorICAgICAgICBubyBsb25nZXIgbmVlZHMgdG8gcGFzcyB0aGUgY29tcG9zaXRpbmcgdGhyZWFk
IGNvbnRleHQgdG8gdGhlIHdlYmtpdAorICAgICAgICB0aHJlYWQuCisKKyAgICAgICAgUmV2aWV3
ZWQgaW50ZXJuYWxseSBieSBGaWxpcCBTcGFjZWsuCisKKyAgICAgICAgUFIgMTg4NDcyCisKKyAg
ICAgICAgKiBBcGkvV2ViUGFnZS5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6Oldl
YlBhZ2VQcml2YXRlOjpzZXRDb21wb3NpdG9yKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktp
dDo6V2ViUGFnZVByaXZhdGU6OnNldENvbXBvc2l0b3JIZWxwZXIpOgorICAgICAgICAqIEFwaS9X
ZWJQYWdlQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBh
Z2VDb21wb3NpdG9yOjpXZWJQYWdlQ29tcG9zaXRvcik6CisgICAgICAgIChCbGFja0JlcnJ5OjpX
ZWJLaXQ6OldlYlBhZ2VDb21wb3NpdG9yOjp+V2ViUGFnZUNvbXBvc2l0b3IpOgorICAgICAgICAq
IEFwaS9XZWJQYWdlX3AuaDoKKyAgICAgICAgKFdlYlBhZ2VQcml2YXRlKToKKwogMjAxMi0wOC0x
NCAgQ2hhcmxlcyBXZWkgIDxjaGFybGVzLndlaUB0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAg
ICAgW0JsYWNrQmVycnldIEVuYWJsZSBETlMgcHJlZmV0Y2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
QmxhY2tCZXJyeS5jbWFrZQppbmRleCBjZDRjZDQyMGI2NmFlNWI4YzEzY2M5ODgyYTM4YWM1ZjYz
NTJhZWRiLi5mNDVlNTAxYzFlZGQ3MmY4M2I4ZjIyNzkwMDkyMWJiNzU2MThjM2Q0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKKysrIGIvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCkBAIC0yNjksNiArMjY5LDggQEAgSUYg
KFdURl9VU0VfQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgTElTVChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXIuY3BwCiAgICAgICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQuY3BwCisgICAgICAgICR7V0VCQ09SRV9E
SVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRUdMSW1hZ2VMYXllcldlYktpdFRocmVh
ZC5jcHAKKyAgICAgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9FR0xJbWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQuY3BwCiAgICAgICAgICR7V0VC
Q09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvR3JhcGhpY3NMYXllckJsYWNr
QmVycnkuY3BwCiAgICAgICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvTGF5ZXJBbmltYXRpb24uY3BwCiAgICAgICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvQ2FudmFzTGF5
ZXJXZWJLaXRUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9DYW52YXNMYXllcldlYktpdFRocmVhZC5jcHAKaW5kZXggYmU1NTg4NjRlMDg3OGUw
NDgxZTNjOGRhZGM2ZjEyZTNkOTM4NzMxMy4uNjYxYWZlZWIxMWEwM2NmYzdiNWVlNDU5N2VmM2Ni
YmMzZTVlYTE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9DYW52YXNMYXllcldlYktpdFRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9DYW52YXNMYXllcldlYktpdFRocmVhZC5j
cHAKQEAgLTI4LDYxICsyOCw0MCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDYW52YXNMYXll
cldlYktpdFRocmVhZDo6Q2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQoU2tHcHVEZXZpY2UqIGRldmlj
ZSkKLSAgICA6IExheWVyV2ViS2l0VGhyZWFkKENhbnZhc0xheWVyLCAwKQorICAgIDogRUdMSW1h
Z2VMYXllcldlYktpdFRocmVhZChDYW52YXNMYXllcikKIHsKICAgICBzZXREZXZpY2UoZGV2aWNl
KTsKIH0KIAogQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQ6On5DYW52YXNMYXllcldlYktpdFRocmVh
ZCgpCiB7Ci0gICAgaWYgKG1fdGV4SUQpIHsKLSAgICAgICAgU2hhcmVkR3JhcGhpY3NDb250ZXh0
M0Q6OmdldCgpLT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICAgICAgZ2xEZWxldGVUZXh0dXJl
cygxLCAmbV90ZXhJRCk7Ci0gICAgfQorICAgIGlmIChTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6
Z2V0KCktPm1ha2VDb250ZXh0Q3VycmVudCgpKQorICAgICAgICBkZWxldGVGcm9udEJ1ZmZlcigp
OwogfQogCiB2b2lkIENhbnZhc0xheWVyV2ViS2l0VGhyZWFkOjpzZXREZXZpY2UoU2tHcHVEZXZp
Y2UqIGRldmljZSkKIHsKICAgICBtX2RldmljZSA9IGRldmljZTsKLSAgICBzZXRMYXllclByb2dy
YW1TaGFkZXIoTGF5ZXJQcm9ncmFtU2hhZGVyUkdCQSk7CiAgICAgc2V0TmVlZHNEaXNwbGF5KCk7
CiB9CiAKLXZvaWQgQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQ6OnNldE5lZWRzRGlzcGxheSgpCi17
Ci0gICAgbV9uZWVkc0Rpc3BsYXkgPSB0cnVlOwotICAgIHNldE5lZWRzQ29tbWl0KCk7Ci19Ci0K
IHZvaWQgQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQ6OnVwZGF0ZVRleHR1cmVDb250ZW50c0lmTmVl
ZGVkKCkKIHsKLSAgICBpZiAoIW1fbmVlZHNEaXNwbGF5IHx8ICFtX2RldmljZSkKKyAgICBpZiAo
IW1fZGV2aWNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNl
OwotICAgIG1fZGV2aWNlLT5tYWtlUmVuZGVyVGFyZ2V0Q3VycmVudCgpOwotCi0gICAgR0xpbnQg
cHJldmlvdXNUZXh0dXJlOwotICAgIGdsR2V0SW50ZWdlcnYoR0xfVEVYVFVSRV9CSU5ESU5HXzJE
LCAmcHJldmlvdXNUZXh0dXJlKTsKKyAgICBpZiAoIVNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXQoKS0+bWFrZUNvbnRleHRDdXJyZW50KCkpCisgICAgICAgIHJldHVybjsKIAotICAgIGlmICgh
bV90ZXhJRCkgewotICAgICAgICBnbEdlblRleHR1cmVzKDEsICZtX3RleElEKTsKLSAgICAgICAg
Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX3RleElEKTsKLSAgICAgICAgZ2xUZXhQYXJh
bWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsK
LSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJ
TFRFUiwgR0xfTElORUFSKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICAgICAgZ2xUZXhQYXJh
bWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdF
KTsKLSAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIG1fZGV2
aWNlLT53aWR0aCgpLCBtX2RldmljZS0+aGVpZ2h0KCksIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVE
X0JZVEUsIDApOworICAgIEdyUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQgPSByZWludGVycHJl
dF9jYXN0PEdyUmVuZGVyVGFyZ2V0Kj4obV9kZXZpY2UtPmFjY2Vzc1JlbmRlclRhcmdldCgpKTsK
KyAgICBpZiAoIXJlbmRlclRhcmdldCkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGNyZWF0
ZUZyb250QnVmZmVyTG9jaygpOwotICAgIH0KKyAgICBHclRleHR1cmUqIHRleHR1cmUgPSByZW5k
ZXJUYXJnZXQtPmFzVGV4dHVyZSgpOworICAgIGlmICghdGV4dHVyZSkKKyAgICAgICAgcmV0dXJu
OwogCi0gICAgcHRocmVhZF9tdXRleF9sb2NrKG1fZnJvbnRCdWZmZXJMb2NrKTsKLSAgICBnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fdGV4SUQpOwotICAgIGdsQ29weVRleEltYWdlMkQo
R0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMCwgMCwgbV9kZXZpY2UtPndpZHRoKCksIG1fZGV2
aWNlLT5oZWlnaHQoKSwgMCk7Ci0gICAgZ2xGaW5pc2goKTsgLy8gVGhpcyBtaWdodCBiZSBpbXBs
aWNpdCBpbiB0aGUgQ29weVRleEltYWdlMkQsIGJ1dCBleHBsaWNpdCBGaW5pc2ggaXMgcmVxdWly
ZWQgb24gc29tZSBhcmNoaXRlY3R1cmVzCi0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJE
LCBwcmV2aW91c1RleHR1cmUpOwotICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKG1fZnJvbnRCdWZm
ZXJMb2NrKTsKKyAgICB1cGRhdGVGcm9udEJ1ZmZlcihJbnRTaXplKG1fZGV2aWNlLT53aWR0aCgp
LCBtX2RldmljZS0+aGVpZ2h0KCkpLCB0ZXh0dXJlLT5nZXRUZXh0dXJlSGFuZGxlKCkpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0NhbnZhc0xheWVyV2ViS2l0VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L0NhbnZhc0xheWVyV2ViS2l0VGhyZWFkLmgKaW5kZXggZWFjNmI4
MjM4Mjc0ZDVlM2VjZGE2OTE2MGYxMGFjYjY0YmJmYTE0MC4uNTA2ODM4N2U4ODU5ODVmNTUzYTA4
NDViYmRiZWRiMDFlNmY2MTZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9DYW52YXNMYXllcldlYktpdFRocmVhZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvQ2FudmFzTGF5ZXJXZWJLaXRU
aHJlYWQuaApAQCAtMjEsNyArMjEsNyBAQAogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKSAmJiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQogCi0jaW5jbHVkZSAiTGF5ZXJX
ZWJLaXRUaHJlYWQuaCIKKyNpbmNsdWRlICJFR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkLmgiCiAK
IGNsYXNzIFNrR3B1RGV2aWNlOwogCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQ7CiAKLWNsYXNzIENhbnZhc0xheWVyV2ViS2l0
VGhyZWFkIDogcHVibGljIExheWVyV2ViS2l0VGhyZWFkIHsKK2NsYXNzIENhbnZhc0xheWVyV2Vi
S2l0VGhyZWFkIDogcHVibGljIEVHTEltYWdlTGF5ZXJXZWJLaXRUaHJlYWQgewogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhc0xheWVyV2ViS2l0VGhyZWFkPiBjcmVhdGUoU2tH
cHVEZXZpY2UqIGRldmljZSkKICAgICB7CkBAIC00MCwxOCArNDAsMTYgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBzZXREZXZpY2UoU2tHcHVEZXZpY2UqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRO
ZWVkc0Rpc3BsYXkoKTsKLQogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0
dXJlQ29udGVudHNJZk5lZWRlZCgpOwogCiBwcml2YXRlOgogICAgIENhbnZhc0xheWVyV2ViS2l0
VGhyZWFkKFNrR3B1RGV2aWNlKik7Ci0gICAgYm9vbCBtX25lZWRzRGlzcGxheTsKKwogICAgIFNr
R3B1RGV2aWNlKiBtX2RldmljZTsKIH07CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgRU5BQkxFKEFDQ0VMRVJB
VEVEXzJEX0NBTlZBUykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9FR0xJbWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9FR0xJbWFnZUxh
eWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1NGFlYWRhMzUzYWQx
ODQ1YzIwMzhiNTZjNTM5YzFiMGU4MmFiNmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0VHTEltYWdlTGF5ZXJDb21wb3NpdGlu
Z1RocmVhZENsaWVudC5jcHAKQEAgLTAsMCArMSwxMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIx
MTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkVHTElt
YWdlTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudC5oIgorCisjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQorCisjaW5jbHVkZSAiTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5oIgorI2lu
Y2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUdyYXBoaWNzLmg+CisjaW5jbHVkZSA8QmxhY2tCZXJy
eVBsYXRmb3JtTG9nLmg+CisjaW5jbHVkZSA8RUdML2VnbC5oPgorI2luY2x1ZGUgPEVHTC9lZ2xl
eHQuaD4KKyNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KKyNpbmNsdWRlIDxHTEVTMi9nbDJleHQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgUEZOR0xFR0xJTUFHRVRBUkdFVFRFWFRV
UkUyRE9FU1BST0MgZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyA9IDA7CitzdGF0aWMgUEZO
RUdMREVTVFJPWUlNQUdFS0hSUFJPQyBlZ2xEZXN0cm95SW1hZ2VLSFIgPSAwOworCitFR0xJbWFn
ZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQ6On5FR0xJbWFnZUxheWVyQ29tcG9zaXRpbmdU
aHJlYWRDbGllbnQoKQoreworICAgIC8vIFNvbWVvbmUgc2hvdWxkIGhhdmUgY2FsbGVkIGRlbGV0
ZVRleHR1cmVzKCkgYnkgbm93CisgICAgQVNTRVJUKCFtX3RleHR1cmUgJiYgIW1faW1hZ2UpOwor
fQorCit2b2lkIEVHTEltYWdlTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudDo6dXBsb2FkVGV4
dHVyZXNJZk5lZWRlZChMYXllckNvbXBvc2l0aW5nVGhyZWFkKikKK3sKKyAgICBpZiAoIW1faW1h
Z2VDaGFuZ2VkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWdsRUdMSW1hZ2VUYXJnZXRU
ZXh0dXJlMkRPRVMpIHsKKyAgICAgICAgZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyA9IHJl
aW50ZXJwcmV0X2Nhc3Q8UEZOR0xFR0xJTUFHRVRBUkdFVFRFWFRVUkUyRE9FU1BST0M+KGVnbEdl
dFByb2NBZGRyZXNzKCJnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTIikpOworICAgICAgICBB
U1NFUlQoZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyk7CisgICAgICAgIGlmICghZ2xFR0xJ
bWFnZVRhcmdldFRleHR1cmUyRE9FUykgeworICAgICAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEJs
YWNrQmVycnk6OlBsYXRmb3JtOworICAgICAgICAgICAgbG9nQWx3YXlzKExvZ0xldmVsV2Fybiwg
ImVnbEdldFByb2NBZGRyZXNzIGZvciBnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTIEZBSUxF
RCIpOworICAgICAgICAgICAgbV9pbWFnZUNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtX2ltYWdlKSB7CisgICAgICAgIGlm
ICghbV90ZXh0dXJlKSB7CisgICAgICAgICAgICBtX3RleHR1cmUgPSBUZXh0dXJlOjpjcmVhdGUo
KTsKKyAgICAgICAgICAgIG1fdGV4dHVyZS0+cHJvdGVjdCgpOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gQ29ubmVjdCB0byB0aGUgbmV3IGltYWdlCisgICAgICAgIGdsQmluZFRleHR1cmUoR0xf
VEVYVFVSRV8yRCwgbV90ZXh0dXJlLT50ZXh0dXJlSWQoKSk7CisgICAgICAgIGdsRUdMSW1hZ2VU
YXJnZXRUZXh0dXJlMkRPRVMoR0xfVEVYVFVSRV8yRCwgbV9pbWFnZSk7CisgICAgfSBlbHNlIGlm
IChtX3RleHR1cmUpIHsKKyAgICAgICAgbV90ZXh0dXJlLT51bnByb3RlY3QoKTsKKyAgICAgICAg
bV90ZXh0dXJlLmNsZWFyKCk7CisgICAgfQorCisgICAgbV9pbWFnZUNoYW5nZWQgPSBmYWxzZTsK
K30KKwordm9pZCBFR0xJbWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQ6OmRyYXdUZXh0
dXJlcyhMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBsYXllciwgZG91YmxlIC8qc2NhbGUqLywgaW50
IHBvc2l0aW9uTG9jYXRpb24sIGludCB0ZXhDb29yZExvY2F0aW9uKQoreworICAgIHN0YXRpYyBm
bG9hdCB1cHNpZGVEb3duWzQgKiAyXSA9IHsgMCwgMSwgIDAsIDAsICAxLCAwLCAgMSwgMSB9Owor
CisgICAgaWYgKCFtX3RleHR1cmUpCisgICAgICAgIHJldHVybjsKKworICAgIGdsVmVydGV4QXR0
cmliUG9pbnRlcihwb3NpdGlvbkxvY2F0aW9uLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsICZs
YXllci0+Z2V0VHJhbnNmb3JtZWRCb3VuZHMoKSk7CisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVy
KHRleENvb3JkTG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgdXBzaWRlRG93bik7
CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX3RleHR1cmUtPnRleHR1cmVJZCgp
KTsKKyAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVfRkFOLCAwLCA0KTsKK30KKwordm9pZCBF
R0xJbWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQ6OmRlbGV0ZVRleHR1cmVzKExheWVy
Q29tcG9zaXRpbmdUaHJlYWQqKQoreworICAgIGlmIChtX3RleHR1cmUpIHsKKyAgICAgICAgbV90
ZXh0dXJlLT51bnByb3RlY3QoKTsKKyAgICAgICAgbV90ZXh0dXJlLmNsZWFyKCk7CisgICAgfQor
CisgICAgaWYgKCFtX2ltYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBJZiB0aGUgaW1h
Z2UgaXMgc3RpbGwgd2l0aCB1cywgaXQgd2FzIG5ldmVyIGRlc3Ryb3llZCBieSB0aGUgRUdMSW1h
Z2VMYXllcldlYktpdFRocmVhZC4KKyAgICBpZiAoIWVnbERlc3Ryb3lJbWFnZUtIUikKKyAgICAg
ICAgZWdsRGVzdHJveUltYWdlS0hSID0gcmVpbnRlcnByZXRfY2FzdDxQRk5FR0xERVNUUk9ZSU1B
R0VLSFJQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZWdsRGVzdHJveUltYWdlS0hSIikpOworCisg
ICAgQVNTRVJUKGVnbERlc3Ryb3lJbWFnZUtIUik7CisgICAgaWYgKGVnbERlc3Ryb3lJbWFnZUtI
UikKKyAgICAgICAgZWdsRGVzdHJveUltYWdlS0hSKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFw
aGljczo6ZWdsRGlzcGxheSgpLCBtX2ltYWdlKTsKKworICAgIG1faW1hZ2UgPSAwOworfQorCit2
b2lkIEVHTEltYWdlTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudDo6YmluZENvbnRlbnRzVGV4
dHVyZShMYXllckNvbXBvc2l0aW5nVGhyZWFkKikKK3sKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RF
WFRVUkVfMkQsIG1fdGV4dHVyZS0+dGV4dHVyZUlkKCkpOworfQorCit2b2lkIEVHTEltYWdlTGF5
ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudDo6c2V0SW1hZ2Uodm9pZCogaW1hZ2UpCit7CisgICAg
aWYgKG1faW1hZ2UgPT0gaW1hZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1faW1hZ2UgPSBp
bWFnZTsKKyAgICBtX2ltYWdlQ2hhbmdlZCA9IHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRUdMSW1hZ2VM
YXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L0VHTEltYWdlTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjk2N2MxMzBhNjBiNzE5YTQ5ZTljOWNiNmEwNWYyYWYyNzk4OGFhODQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0VHTEltYWdlTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudC5oCkBAIC0wLDAgKzEsNzYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl
ZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRlZiBFR0xJ
bWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnRfaAorI2RlZmluZSBFR0xJbWFnZUxheWVy
Q29tcG9zaXRpbmdUaHJlYWRDbGllbnRfaAorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQorCisjaW5jbHVkZSAiTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudC5oIgorI2luY2x1
ZGUgIlRleHR1cmUuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBMYXllckNvbXBvc2l0aW5nVGhyZWFkOworCitjbGFz
cyBFR0xJbWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8RUdMSW1hZ2VMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50PiwgcHVibGlj
IExheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEVHTEltYWdlTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudD4gY3JlYXRlKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRUdMSW1hZ2VMYXllckNvbXBvc2l0aW5n
VGhyZWFkQ2xpZW50KCkpOworICAgIH0KKworICAgIHZpcnR1YWwgfkVHTEltYWdlTGF5ZXJDb21w
b3NpdGluZ1RocmVhZENsaWVudCgpOworCisgICAgdmlydHVhbCB2b2lkIGxheWVyQ29tcG9zaXRp
bmdUaHJlYWREZXN0cm95ZWQoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCopCisgICAgeworICAgICAg
ICBkZXJlZigpOyAvLyBNYXRjaGVkIGJ5IHJlZigpIGluIGNvbnN0cnVjdG9yCisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIGxheWVyVmlzaWJpbGl0eUNoYW5nZWQoTGF5ZXJDb21wb3NpdGluZ1Ro
cmVhZCosIGJvb2wgdmlzaWJsZSkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVy
ZXNJZk5lZWRlZChMYXllckNvbXBvc2l0aW5nVGhyZWFkKik7CisgICAgdmlydHVhbCB2b2lkIGRy
YXdUZXh0dXJlcyhMYXllckNvbXBvc2l0aW5nVGhyZWFkKiwgZG91YmxlIHNjYWxlLCBpbnQgcG9z
aXRpb25Mb2NhdGlvbiwgaW50IHRleENvb3JkTG9jYXRpb24pOworICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVUZXh0dXJlcyhMYXllckNvbXBvc2l0aW5nVGhyZWFkKik7CisKKyAgICB2aXJ0dWFsIHZv
aWQgYmluZENvbnRlbnRzVGV4dHVyZShMYXllckNvbXBvc2l0aW5nVGhyZWFkKik7CisKKyAgICAv
LyBUaGUgaW1hZ2UgbXVzdCBub3QgYmUgZGVsZXRlZCB3aGlsZSBpbiBvdXIgY3VzdG9keSwgaG93
ZXZlciBhZnRlciBjaGFuZ2luZyBpbWFnZSB5b3UgYXJlIGZyZWUgdG8gZGVsZXRlIHRoZSBvbGQg
b25lLgorICAgIHZvaWQgc2V0SW1hZ2Uodm9pZCopOworCitwcml2YXRlOgorICAgIEVHTEltYWdl
TGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudCgpCisgICAgICAgIDogbV9pbWFnZSgwKQorICAg
ICAgICAsIG1faW1hZ2VDaGFuZ2VkKGZhbHNlKQorICAgIHsKKyAgICAgICAgcmVmKCk7IC8vIE1h
dGNoZWQgYnkgZGVyZWYoKSBpbiBsYXllckNvbXBvc2l0aW5nVGhyZWFkRGVzdHJveWVkKCkKKyAg
ICB9CisKKyAgICB2b2lkKiBtX2ltYWdlOworICAgIGJvb2wgbV9pbWFnZUNoYW5nZWQ7CisgICAg
UmVmUHRyPFRleHR1cmU+IG1fdGV4dHVyZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2VuZGlmIC8vIEVH
TEltYWdlTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0VHTEltYWdlTGF5ZXJXZWJLaXRU
aHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9F
R0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZDU0NzA2ZTM4YzI4MzMz
OTFkNTZiZjYyYmRhZDcyZGI1ODRiZmE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9FR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFk
LmNwcApAQCAtMCwwICsxLDI4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwg
MjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjEx
MC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRUdMSW1h
Z2VMYXllcldlYktpdFRocmVhZC5oIgorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQorCisjaW5jbHVkZSAiTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5oIgorI2luY2x1ZGUgIkxheWVy
UmVuZGVyZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRHcmFwaGljc0NvbnRleHQzRC5oIgorI2luY2x1
ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUdMRVMyQ29udGV4dFN0YXRlLmg+CisjaW5jbHVkZSA8Qmxh
Y2tCZXJyeVBsYXRmb3JtR3JhcGhpY3MuaD4KKyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1M
b2cuaD4KKyNpbmNsdWRlIDxFR0wvZWdsLmg+CisjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgorI2lu
Y2x1ZGUgPEdMRVMyL2dsMi5oPgorCit1c2luZyBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhp
Y3M6OkdMRVMyUHJvZ3JhbTsKK3VzaW5nIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6
R0xFUzJDb250ZXh0U3RhdGU7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIFBGTkVH
TENSRUFURUlNQUdFS0hSUFJPQyBlZ2xDcmVhdGVJbWFnZUtIUiA9IDA7CitzdGF0aWMgUEZORUdM
REVTVFJPWUlNQUdFS0hSUFJPQyBlZ2xEZXN0cm95SW1hZ2VLSFIgPSAwOworCitFR0xJbWFnZUxh
eWVyV2ViS2l0VGhyZWFkOjpFR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkKExheWVyVHlwZSB0eXBl
KQorICAgIDogTGF5ZXJXZWJLaXRUaHJlYWQodHlwZSwgMCkKKyAgICAsIG1fY2xpZW50KEVHTElt
YWdlTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudDo6Y3JlYXRlKCkpCisgICAgLCBtX25lZWRz
RGlzcGxheShmYWxzZSkKKyAgICAsIG1fZnJvbnRCdWZmZXJUZXh0dXJlKDApCisgICAgLCBtX2Zi
bygwKQorICAgICwgbV9zaGFkZXIoMCkKKyAgICAsIG1faW1hZ2UoMCkKK3sKKyAgICBsYXllckNv
bXBvc2l0aW5nVGhyZWFkKCktPnNldENsaWVudChtX2NsaWVudC5nZXQoKSk7CisgICAgc2V0TGF5
ZXJQcm9ncmFtU2hhZGVyKExheWVyUHJvZ3JhbVNoYWRlclJHQkEpOworfQorCitFR0xJbWFnZUxh
eWVyV2ViS2l0VGhyZWFkOjp+RUdMSW1hZ2VMYXllcldlYktpdFRocmVhZCgpCit7CisgICAgLy8g
VGhlIHN1YmNsYXNzIGlzIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIGRlbGV0ZUZyb250QnVmZmVy
KCkKKyAgICAvLyBiZWZvcmUgd2UgZ2V0IHRoaXMgZmFyLgorICAgIEFTU0VSVCghbV9mcm9udEJ1
ZmZlclRleHR1cmUpOworICAgIEFTU0VSVCghbV9mYm8pOworICAgIEFTU0VSVCghbV9zaGFkZXIp
OworfQorCit2b2lkIEVHTEltYWdlTGF5ZXJXZWJLaXRUaHJlYWQ6OnNldE5lZWRzRGlzcGxheSgp
Cit7CisgICAgbV9uZWVkc0Rpc3BsYXkgPSB0cnVlOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9
CisKK3ZvaWQgRUdMSW1hZ2VMYXllcldlYktpdFRocmVhZDo6dXBkYXRlRnJvbnRCdWZmZXIoY29u
c3QgSW50U2l6ZSYgc2l6ZSwgdW5zaWduZWQgYmFja0J1ZmZlclRleHR1cmUpCit7CisgICAgaWYg
KCFtX25lZWRzRGlzcGxheSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHNpemUuaXNFbXB0
eSgpKSB7CisgICAgICAgIGlmIChzaXplICE9IG1fc2l6ZSkgeworICAgICAgICAgICAgZGVsZXRl
RnJvbnRCdWZmZXIoKTsKKyAgICAgICAgICAgIGlmIChtX2ltYWdlKQorICAgICAgICAgICAgICAg
IG1fZ2FyYmFnZS5hcHBlbmQobV9pbWFnZSk7CisgICAgICAgICAgICBtX2ltYWdlID0gMDsKKyAg
ICAgICAgICAgIG1fc2l6ZSA9IHNpemU7CisgICAgICAgIH0KKworICAgICAgICBtX25lZWRzRGlz
cGxheSA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFlZ2xDcmVh
dGVJbWFnZUtIUikgeworICAgICAgICBlZ2xDcmVhdGVJbWFnZUtIUiA9IHJlaW50ZXJwcmV0X2Nh
c3Q8UEZORUdMQ1JFQVRFSU1BR0VLSFJQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZWdsQ3JlYXRl
SW1hZ2VLSFIiKSk7CisgICAgICAgIGVnbERlc3Ryb3lJbWFnZUtIUiA9IHJlaW50ZXJwcmV0X2Nh
c3Q8UEZORUdMREVTVFJPWUlNQUdFS0hSUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImVnbERlc3Ry
b3lJbWFnZUtIUiIpKTsKKyAgICB9CisKKyAgICBBU1NFUlQoZWdsQ3JlYXRlSW1hZ2VLSFIgJiYg
ZWdsRGVzdHJveUltYWdlS0hSKTsKKyAgICBpZiAoIWVnbENyZWF0ZUltYWdlS0hSIHx8ICFlZ2xE
ZXN0cm95SW1hZ2VLSFIpIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEJsYWNrQmVycnk6OlBs
YXRmb3JtOworICAgICAgICBsb2dBbHdheXMoTG9nTGV2ZWxXYXJuLCAiZWdsR2V0UHJvY0FkZHJl
c3MgZm9yIGVnbENyZWF0ZS9EZXN0cm95SW1hZ2VLSFIgRkFJTEVEIik7CisgICAgICAgIG1fbmVl
ZHNEaXNwbGF5ID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHTGVudW0g
Y3VycmVudEFjdGl2ZVRleHR1cmUgPSAwOworICAgIGdsR2V0SW50ZWdlcnYoR0xfQUNUSVZFX1RF
WFRVUkUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnQqPigmY3VycmVudEFjdGl2ZVRleHR1cmUpKTsK
KyAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOworCisgICAgeworICAgICAgICBHTEVT
MkNvbnRleHRTdGF0ZTo6VGV4dHVyZUFuZEZCT1N0YXRlU2F2ZXIgdGV4dHVyZUFuZEZCT1N0YXRl
U2F2ZXI7CisKKyAgICAgICAgaWYgKCFjcmVhdGVJbWFnZUlmTmVlZGVkKHNpemUpKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIG1fbmVlZHNEaXNwbGF5ID0gZmFsc2U7CisKKyAgICAg
ICAgYmxpdFRvRnJvbnRCdWZmZXIoYmFja0J1ZmZlclRleHR1cmUpOworICAgIH0KKworICAgIGds
QWN0aXZlVGV4dHVyZShjdXJyZW50QWN0aXZlVGV4dHVyZSk7Cit9CisKK3ZvaWQgRUdMSW1hZ2VM
YXllcldlYktpdFRocmVhZDo6ZGVsZXRlRnJvbnRCdWZmZXIoKQoreworICAgIGdsRGVsZXRlVGV4
dHVyZXMoMSwgJm1fZnJvbnRCdWZmZXJUZXh0dXJlKTsKKyAgICBtX2Zyb250QnVmZmVyVGV4dHVy
ZSA9IDA7CisgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1fZmJvKTsKKyAgICBtX2ZibyA9
IDA7CisgICAgZ2xEZWxldGVTaGFkZXIobV9zaGFkZXIpOworICAgIG1fc2hhZGVyID0gMDsKK30K
Kwordm9pZCBFR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkOjpjb21taXRQZW5kaW5nVGV4dHVyZVVw
bG9hZHMoKQoreworICAgIC8vIFRoaXMgY2FsbCBpcyBzZXJpYWxpemVkIHdpdGggdGhlIGNvbXBv
c2l0aW5nIHRocmVhZCwgc28gaXQncyBzYWZlIHRvIHVwZGF0ZSB0aGUKKyAgICAvLyBpbWFnZSBh
bmQgZGVzdHJveSBhbnkgb2xkIGltYWdlcy4KKworICAgIG1fY2xpZW50LT5zZXRJbWFnZShtX2lt
YWdlKTsKKworICAgIC8vIERlc3Ryb3kgdGhlIGdhcmJhZ2UgaW1hZ2VzIGluIGEgdGhyZWFkLXNh
ZmUgd2F5CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2dhcmJhZ2Uuc2l6ZSgpOyArK2kp
CisgICAgICAgIGVnbERlc3Ryb3lJbWFnZUtIUihCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhp
Y3M6OmVnbERpc3BsYXkoKSwgbV9nYXJiYWdlW2ldKTsKK30KKworYm9vbCBFR0xJbWFnZUxheWVy
V2ViS2l0VGhyZWFkOjpjcmVhdGVJbWFnZUlmTmVlZGVkKGNvbnN0IEludFNpemUmIHNpemUpCit7
CisgICAgLy8gV2UgdXNlIGEgdGV4dHVyZSByYXRoZXIgdGhhbiBhIHJlbmRlcmJ1ZmZlciBhcyB0
aGUgYmFzaXMgb2YgdGhlIEZCTyBhbmQgRUdMSW1hZ2UsCisgICAgLy8gc2luY2UgdGhlIEVHTElt
YWdlIHdpbGwgYmUgdXNlZCBhcyBhIHRleHR1cmUgb24gdGhlIGNvbXBvc2l0aW5nIHRocmVhZCBp
biB0aGUgZW5kLgorCisgICAgaWYgKCFtX2Zyb250QnVmZmVyVGV4dHVyZSkgeworICAgICAgICBn
bEdlblRleHR1cmVzKDEsICZtX2Zyb250QnVmZmVyVGV4dHVyZSk7CisgICAgICAgIGdsQmluZFRl
eHR1cmUoR0xfVEVYVFVSRV8yRCwgbV9mcm9udEJ1ZmZlclRleHR1cmUpOworICAgICAgICBnbFRl
eFBhcmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5F
QVIpOworICAgICAgICBnbFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9N
SU5fRklMVEVSLCBHTF9MSU5FQVIpOworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgICAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RP
X0VER0UpOworICAgIH0KKworICAgIGlmICghbV9mYm8pCisgICAgICAgIGdsR2VuRnJhbWVidWZm
ZXJzKDEsICZtX2Zibyk7CisKKyAgICBpZiAoIW1faW1hZ2UgfHwgc2l6ZSAhPSBtX3NpemUpIHsK
KyAgICAgICAgSW50U2l6ZSBmYm9TaXplID0gc2l6ZTsKKworICAgICAgICAvLyBJbWFnaW5hdGlv
bi1zcGVjaWZpYyBmaXgKKyAgICAgICAgc3RhdGljIGJvb2wgaXNJbWFnaW5hdGlvbkhhcmR3YXJl
ID0gc3RkOjpzdHJzdHIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2xHZXRTdHJpbmco
R0xfUkVOREVSRVIpKSwgIlBvd2VyVlIgU0dYIik7CisgICAgICAgIGlmIChpc0ltYWdpbmF0aW9u
SGFyZHdhcmUpCisgICAgICAgICAgICBmYm9TaXplID0gZmJvU2l6ZS5leHBhbmRlZFRvKEludFNp
emUoMTYsIDE2KSk7CisKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX2Zy
b250QnVmZmVyVGV4dHVyZSk7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVG
RkVSLCBtX2Zibyk7CisgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9S
R0JBLCBmYm9TaXplLndpZHRoKCksIGZib1NpemUuaGVpZ2h0KCksIDAsIEdMX1JHQkEsIEdMX1VO
U0lHTkVEX0JZVEUsIDApOworICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1F
QlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbV9mcm9udEJ1ZmZl
clRleHR1cmUsIDApOworCisgICAgICAgIGlmIChnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xf
RlJBTUVCVUZGRVIpICE9IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBpZiAoZ2xHZXRFcnJvcigpICE9IEdMX05PX0VSUk9SKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIC8vIFRoZSBzaWJsaW5nIGlzIG9ycGhh
bmVkIGFmdGVyIGdsVGV4SW1hZ2UyRCwgcmVjcmVhdGUgdGhlIGltYWdlLgorICAgICAgICBpZiAo
bV9pbWFnZSkKKyAgICAgICAgICAgIG1fZ2FyYmFnZS5hcHBlbmQobV9pbWFnZSk7CisgICAgICAg
IG1faW1hZ2UgPSBlZ2xDcmVhdGVJbWFnZUtIUihCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhp
Y3M6OmVnbERpc3BsYXkoKSwgZWdsR2V0Q3VycmVudENvbnRleHQoKSwKKyAgICAgICAgICAgICAg
ICBFR0xfR0xfVEVYVFVSRV8yRF9LSFIsIChFR0xDbGllbnRCdWZmZXIpbV9mcm9udEJ1ZmZlclRl
eHR1cmUsIDApOworICAgICAgICBpZiAoIW1faW1hZ2UpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgbV9zaXplID0gc2l6ZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwordm9pZCBFR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkOjpjcmVhdGVTaGFkZXJJZk5lZWRl
ZCgpCit7CisgICAgLy8gU2hhZGVycyBmb3IgZHJhd2luZyB0aGUgbGF5ZXIgY29udGVudHMuCisg
ICAgc3RhdGljIGNoYXIgdmVydGV4U2hhZGVyU3RyaW5nW10gPQorICAgICAgICAiYXR0cmlidXRl
IHZlYzQgYV9wb3NpdGlvbjsgICBcbiIKKyAgICAgICAgImF0dHJpYnV0ZSB2ZWMyIGFfdGV4Q29v
cmQ7ICAgXG4iCisgICAgICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsgICAgIFxuIgorICAg
ICAgICAidm9pZCBtYWluKCkgICAgICAgICAgICAgICAgICBcbiIKKyAgICAgICAgInsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXG4iCisgICAgICAgICIgIGdsX1Bvc2l0aW9uID0gYV9wb3Np
dGlvbjsgIFxuIgorICAgICAgICAiICB2X3RleENvb3JkID0gYV90ZXhDb29yZDsgICBcbiIKKyAg
ICAgICAgIn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iOworCisgICAgc3RhdGljIGNo
YXIgZnJhZ21lbnRTaGFkZXJTdHJpbmdSR0JBW10gPQorICAgICAgICAidmFyeWluZyBtZWRpdW1w
IHZlYzIgdl90ZXhDb29yZDsgICAgICAgICAgICAgICAgICAgXG4iCisgICAgICAgICJ1bmlmb3Jt
IGxvd3Agc2FtcGxlcjJEIHNfdGV4dHVyZTsgICAgICAgICAgICAgICAgICBcbiIKKyAgICAgICAg
InZvaWQgbWFpbigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgor
ICAgICAgICAieyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXG4iCisgICAgICAgICIgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRChzX3RleHR1cmUsIHZf
dGV4Q29vcmQpOyBcbiIKKyAgICAgICAgIn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFxuIjsKKworICAgIGlmICghbV9zaGFkZXIpIHsKKyAgICAgICAg
bV9zaGFkZXIgPSBMYXllclJlbmRlcmVyOjpsb2FkU2hhZGVyUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJT
dHJpbmcsIGZyYWdtZW50U2hhZGVyU3RyaW5nUkdCQSk7CisgICAgICAgIGlmICghbV9zaGFkZXIp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGdsQmluZEF0dHJpYkxvY2F0aW9uKG1fc2hh
ZGVyLCBHTEVTMlByb2dyYW06OlBvc2l0aW9uQXR0cmlidXRlSW5kZXgsICJhX3Bvc2l0aW9uIik7
CisgICAgICAgIGdsQmluZEF0dHJpYkxvY2F0aW9uKG1fc2hhZGVyLCBHTEVTMlByb2dyYW06OlRl
eENvb3JkQXR0cmlidXRlSW5kZXgsICJhX3RleENvb3JkIik7CisgICAgICAgIGdsTGlua1Byb2dy
YW0obV9zaGFkZXIpOworICAgICAgICB1bnNpZ25lZCBzYW1wbGVyTG9jYXRpb24gPSBnbEdldFVu
aWZvcm1Mb2NhdGlvbihtX3NoYWRlciwgInNfdGV4dHVyZSIpOworICAgICAgICBnbFVzZVByb2dy
YW0obV9zaGFkZXIpOworICAgICAgICBnbFVuaWZvcm0xaShzYW1wbGVyTG9jYXRpb24sIDApOwor
ICAgIH0KK30KKwordm9pZCBFR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkOjpibGl0VG9Gcm9udEJ1
ZmZlcih1bnNpZ25lZCBiYWNrQnVmZmVyVGV4dHVyZSkKK3sKKyAgICBpZiAoIWJhY2tCdWZmZXJU
ZXh0dXJlKQorICAgICAgICByZXR1cm47CisKKyAgICBHTHVpbnQgY3VycmVudFByb2dyYW0gPSAw
OworICAgIGdsR2V0SW50ZWdlcnYoR0xfQ1VSUkVOVF9QUk9HUkFNLCByZWludGVycHJldF9jYXN0
PEdMaW50Kj4oJmN1cnJlbnRQcm9ncmFtKSk7CisKKyAgICBjcmVhdGVTaGFkZXJJZk5lZWRlZCgp
OworCisgICAgR0x1aW50IGN1cnJlbnRBcnJheUJ1ZmZlckJpbmRpbmcgPSAwLCBjdXJyZW50RWxl
bWVudEFycmF5QnVmZmVyQmluZGluZyA9IDA7CisgICAgR0xpbnQgY3VycmVudFZpZXdwb3J0WzRd
ID0geyAwLCAwLCAwLCAwIH07CisgICAgZ2xHZXRJbnRlZ2VydihHTF9BUlJBWV9CVUZGRVJfQklO
RElORywgcmVpbnRlcnByZXRfY2FzdDxHTGludCo+KCZjdXJyZW50QXJyYXlCdWZmZXJCaW5kaW5n
KSk7CisgICAgZ2xHZXRJbnRlZ2VydihHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HLCBy
ZWludGVycHJldF9jYXN0PEdMaW50Kj4oJmN1cnJlbnRFbGVtZW50QXJyYXlCdWZmZXJCaW5kaW5n
KSk7CisgICAgZ2xHZXRJbnRlZ2VydihHTF9WSUVXUE9SVCwgJmN1cnJlbnRWaWV3cG9ydFswXSk7
CisKKyAgICBHTEVTMkNvbnRleHRTdGF0ZTo6R2xvYmFsRmxhZ1N0YXRlU2F2ZXIgZmxhZ1N0YXRl
U2F2ZXIoR0xFUzJDb250ZXh0U3RhdGU6Okdsb2JhbEZsYWdTdGF0ZTo6RG9udFJlc3RvcmVCbGVu
ZEZ1bmMpOworCisgICAgZ2xEaXNhYmxlKEdMX0RFUFRIX1RFU1QpOworICAgIGdsRGlzYWJsZShH
TF9TVEVOQ0lMX1RFU1QpOworICAgIGdsRGlzYWJsZShHTF9TQ0lTU09SX1RFU1QpOworICAgIGds
RGlzYWJsZShHTF9DVUxMX0ZBQ0UpOworICAgIGdsRGlzYWJsZShHTF9CTEVORCk7CisKKyAgICBn
bFZpZXdwb3J0KDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpOworICAgIGds
QmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX2Zibyk7CisgICAgZ2xVc2VQcm9ncmFt
KG1fc2hhZGVyKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIGJhY2tCdWZmZXJU
ZXh0dXJlKTsKKworICAgIHsKKyAgICAgICAgR0xFUzJDb250ZXh0U3RhdGU6OlZlcnRleEF0dHJp
YnV0ZVN0YXRlU2F2ZXIgdmVydGV4QXR0cmliU3RhdGVTYXZlcjsKKworICAgICAgICBzdGF0aWMg
ZmxvYXQgdGV4Y29vcmRzWzQgKiAyXSA9IHsgMCwgMCwgIDAsIDEsICAxLCAxLCAgMSwgMCB9Owor
ICAgICAgICBzdGF0aWMgZmxvYXQgdmVydGljZXNbXSA9IHsgLTEsIC0xLCAtMSwgMSwgMSwgMSwg
MSwgLTEgfTsKKyAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgMCk7CisgICAg
ICAgIGdsQmluZEJ1ZmZlcihHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgMCk7CisgICAgICAgIGds
RW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0xFUzJQcm9ncmFtOjpQb3NpdGlvbkF0dHJpYnV0ZUlu
ZGV4KTsKKyAgICAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShHTEVTMlByb2dyYW06OlRl
eENvb3JkQXR0cmlidXRlSW5kZXgpOworICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoR0xF
UzJQcm9ncmFtOjpQb3NpdGlvbkF0dHJpYnV0ZUluZGV4LCAyLCBHTF9GTE9BVCwgR0xfRkFMU0Us
IDAsIHZlcnRpY2VzKTsKKyAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKEdMRVMyUHJvZ3Jh
bTo6VGV4Q29vcmRBdHRyaWJ1dGVJbmRleCwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCB0ZXhj
b29yZHMpOworICAgICAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVfRkFOLCAwLCA0KTsKKwor
ICAgICAgICAvLyBJZiB3ZSBkb24ndCBmbHVzaCwgdGhlIEVHTEltYWdlIG1heSBuZXZlciB1cGRh
dGUgaXRzIGFwcGVhcmFuY2UKKyAgICAgICAgZ2xGbHVzaCgpOworCisgICAgICAgIGdsRGlzYWJs
ZVZlcnRleEF0dHJpYkFycmF5KEdMRVMyUHJvZ3JhbTo6UG9zaXRpb25BdHRyaWJ1dGVJbmRleCk7
CisgICAgICAgIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KEdMRVMyUHJvZ3JhbTo6VGV4Q29v
cmRBdHRyaWJ1dGVJbmRleCk7CisKKyAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZF
UiwgY3VycmVudEFycmF5QnVmZmVyQmluZGluZyk7CisgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9F
TEVNRU5UX0FSUkFZX0JVRkZFUiwgY3VycmVudEVsZW1lbnRBcnJheUJ1ZmZlckJpbmRpbmcpOwor
ICAgIH0KKworICAgIC8vIFRoZSBwcmV2aW91cyBwcm9ncmFtIG1pZ2h0IGhhdmUgYmVlbiBkZWxl
dGVkIGJ5IHJlZmNvdW50IGRlc3RydWN0aW9uCisgICAgLy8gd2l0aCBhbm90aGVyIG9uZSBub3cg
aW4gdXNlLiBEb24ndCB0cnkgdG8gcmVzdG9yZSBpdCBsYXRlci4KKyAgICBpZiAoY3VycmVudFBy
b2dyYW0gJiYgIWdsSXNQcm9ncmFtKGN1cnJlbnRQcm9ncmFtKSkKKyAgICAgICAgY3VycmVudFBy
b2dyYW0gPSAwOworCisgICAgZ2xVc2VQcm9ncmFtKGN1cnJlbnRQcm9ncmFtKTsKKyAgICBnbFZp
ZXdwb3J0KGN1cnJlbnRWaWV3cG9ydFswXSwgY3VycmVudFZpZXdwb3J0WzFdLCBjdXJyZW50Vmll
d3BvcnRbMl0sIGN1cnJlbnRWaWV3cG9ydFszXSk7Cit9CisKK30KKworI2VuZGlmIC8vIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
RUdMSW1hZ2VMYXllcldlYktpdFRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9FR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjU3NTYyOWZmNjJmZjRkZmE5ZDFlMzUwN2ExMGRiZDQ4MjhhZGVmMAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRUdMSW1hZ2VM
YXllcldlYktpdFRocmVhZC5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAsIDIwMTEsIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQor
ICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9z
dG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRlZiBFR0xJbWFnZUxheWVyV2Vi
S2l0VGhyZWFkX2gKKyNkZWZpbmUgRUdMSW1hZ2VMYXllcldlYktpdFRocmVhZF9oCisKKyNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNpbmNsdWRlICJFR0xJbWFnZUxheWVyQ29t
cG9zaXRpbmdUaHJlYWRDbGllbnQuaCIKKyNpbmNsdWRlICJMYXllcldlYktpdFRocmVhZC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEJhc2UgY2xhc3MgZm9yIEVHTEltYWdlIGJhc2Vk
IGxheWVycworLy8gVGhlIHN1YmNsYXNzIG11c3QgcmVpbXBsZW1lbnQgdXBkYXRlVGV4dHVyZUNv
bnRlbnRzSWZOZWVkZWQoKSB0byBjYWxsIHVwZGF0ZUZyb250QnVmZmVyCisvLyB3aXRoIHRoZSBh
cHByb3ByaWF0ZSBwYXJhbWV0ZXJzLCBhbmQgbWFrZSBzdXJlIHRvIGNhbGwgZGVsZXRlRnJvbnRC
dWZmZXIoKSBmcm9tIGl0cworLy8gZGVzdHJ1Y3Rvci4KK2NsYXNzIEVHTEltYWdlTGF5ZXJXZWJL
aXRUaHJlYWQgOiBwdWJsaWMgTGF5ZXJXZWJLaXRUaHJlYWQgeworcHVibGljOgorICAgIHZpcnR1
YWwgfkVHTEltYWdlTGF5ZXJXZWJLaXRUaHJlYWQoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRO
ZWVkc0Rpc3BsYXkoKTsKKworcHJvdGVjdGVkOgorICAgIEVHTEltYWdlTGF5ZXJXZWJLaXRUaHJl
YWQoTGF5ZXJUeXBlKTsKKworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0dXJlQ29udGVudHNJ
Zk5lZWRlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0UGVuZGluZ1RleHR1cmVVcGxv
YWRzKCk7CisKKyAgICAvLyBUaGUgY29udGV4dCBtdXN0IGJlIGN1cnJlbnQgYmVmb3JlIHlvdSBj
YWxsIGFueSBvZiB0aGVzZQorICAgIHZvaWQgdXBkYXRlRnJvbnRCdWZmZXIoY29uc3QgSW50U2l6
ZSYsIHVuc2lnbmVkIGJhY2tCdWZmZXJUZXh0dXJlKTsKKyAgICB2b2lkIGRlbGV0ZUZyb250QnVm
ZmVyKCk7CisKK3ByaXZhdGU6CisgICAgYm9vbCBjcmVhdGVJbWFnZUlmTmVlZGVkKGNvbnN0IElu
dFNpemUmKTsKKyAgICB2b2lkIGNyZWF0ZVNoYWRlcklmTmVlZGVkKCk7CisgICAgdm9pZCBibGl0
VG9Gcm9udEJ1ZmZlcih1bnNpZ25lZCBiYWNrQnVmZmVyVGV4dHVyZSk7CisKKyAgICBSZWZQdHI8
RUdMSW1hZ2VMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50PiBtX2NsaWVudDsKKyAgICBib29s
IG1fbmVlZHNEaXNwbGF5OworICAgIHVuc2lnbmVkIG1fZnJvbnRCdWZmZXJUZXh0dXJlOworICAg
IHVuc2lnbmVkIG1fZmJvOworICAgIHVuc2lnbmVkIG1fc2hhZGVyOworICAgIHZvaWQqIG1faW1h
Z2U7CisgICAgVmVjdG9yPHZvaWQqPiBtX2dhcmJhZ2U7CisgICAgSW50U2l6ZSBtX3NpemU7Cit9
OworCit9CisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNlbmRp
ZiAvLyBFR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvR3JhcGhpY3NDb250ZXh0M0RCbGFja0Jl
cnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvR3Jh
cGhpY3NDb250ZXh0M0RCbGFja0JlcnJ5LmNwcAppbmRleCAyMzRlNjhmNWRiN2Y1N2FjMTZlZWVk
NTRkNWFjYzMxOTMyYjZkNWRmLi5mMTA4MWVmNzY1NDE4MDYzNDljYWI2MGQzODBiMjkwNDdjNmY2
OWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0dyYXBoaWNzQ29udGV4dDNEQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFwaGljc0NvbnRleHQzREJsYWNrQmVycnku
Y3BwCkBAIC0xMzMsNiArMTMzLDE4IEBAIEdyYXBoaWNzQ29udGV4dDNEOjp+R3JhcGhpY3NDb250
ZXh0M0QoKQogICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6ZGVzdHJveVdlYkdM
Q29udGV4dChtX2NvbnRleHQpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwcmVwYXJl
VGV4dHVyZSgpCit7CisgICAgaWYgKG1fbGF5ZXJDb21wb3NpdGVkKQorICAgICAgICByZXR1cm47
CisKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMp
CisgICAgICAgIHJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkoKTsKKworICAgIG1fbGF5
ZXJDb21wb3NpdGVkID0gdHJ1ZTsKK30KKwogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6cmVzaGFw
ZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICAvLyBBIEJsYWNrQmVycnktc3BlY2lm
aWMgaW1wbGVtZW50YXRpb24gb2YgcmVzaGFwZUZCT3MgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgaXQg
Y29udGFpbnM6CkBAIC0zNDQsNyArMzU2LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6aXNF
cnJvckdlbmVyYXRlZE9uT3V0T2ZCb3VuZHNBY2Nlc3NlcygpIGNvbnN0CiAKIFBsYXRmb3JtM0RP
YmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRmb3JtVGV4dHVyZSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fY29tcG9zaXRpbmdMYXllci0+Z2V0VGV4dHVyZUlEKCk7CisgICAgcmV0dXJuIG1f
dGV4dHVyZTsKIH0KIAogUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBHcmFwaGljc0NvbnRleHQz
RDo6cGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJl
YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXll
ckNvbXBvc2l0aW5nVGhyZWFkLmNwcAppbmRleCAyYzcxNmZhNWIyNzMxYzA2NDUwNzg2MzM3ZmFk
MWYyYmY2MGM5MjcwLi44ZjNhMmJiNTY2YjMwZTU3Y2ZhZWUzNjM5YWQ1NTBhYTZmOGQzNzAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xh
eWVyQ29tcG9zaXRpbmdUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5jcHAKQEAgLTI0OSwzMyAr
MjQ5LDYgQEAgdm9pZCBMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpkcmF3VGV4dHVyZXMoZG91Ymxl
IHNjYWxlLCBpbnQgcG9zaXRpb25Mb2NhdGlvbiwgaW4KICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICNlbmRpZgotI2lmIEVOQUJMRShXRUJHTCkKLSAgICBpZiAobGF5ZXJUeXBlKCkgPT0gTGF5ZXJE
YXRhOjpXZWJHTExheWVyKSB7Ci0gICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+YWRkTGF5ZXJUb1Jl
bGVhc2VUZXh0dXJlUmVzb3VyY2VzTGlzdCh0aGlzKTsKLSAgICAgICAgcHRocmVhZF9tdXRleF9s
b2NrKG1fZnJvbnRCdWZmZXJMb2NrKTsKLSAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHBv
c2l0aW9uTG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgJm1fdHJhbnNmb3JtZWRC
b3VuZHMpOwotICAgICAgICBmbG9hdCBjYW52YXNXaWR0aFJhdGlvID0gMS4wZjsKLSAgICAgICAg
ZmxvYXQgY2FudmFzSGVpZ2h0UmF0aW8gPSAxLjBmOwotICAgICAgICBmbG9hdCB1cHNpZGVEb3du
WzQgKiAyXSA9IHsgMCwgMSwgIDAsIDEgLSBjYW52YXNIZWlnaHRSYXRpbywgIGNhbnZhc1dpZHRo
UmF0aW8sIDEgLSBjYW52YXNIZWlnaHRSYXRpbywgIGNhbnZhc1dpZHRoUmF0aW8sIDEgfTsKLSAg
ICAgICAgLy8gRmxpcCB0aGUgdGV4dHVyZSBZIGF4aXMgYmVjYXVzZSBPcGVuR0wgYW5kIFNraWEg
aGF2ZSBkaWZmZXJlbnQgb3JpZ2lucwotICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIodGV4
Q29vcmRMb2NhdGlvbiwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCB1cHNpZGVEb3duKTsKLSAg
ICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX3RleElEKTsKLSAgICAgICAgZ2xE
cmF3QXJyYXlzKEdMX1RSSUFOR0xFX0ZBTiwgMCwgNCk7Ci0gICAgICAgIC8vIEZJWE1FOiBJZiB0
aGUgY2FudmFzL3RleHR1cmUgaXMgbGFyZ2VyIHRoYW4gMjA0OHgyMDQ4LCB0aGVuIHdlJ2xsIGRp
ZSBoZXJlCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBpZiAobV90ZXhJRCkg
ewotICAgICAgICBtX2xheWVyUmVuZGVyZXItPmFkZExheWVyVG9SZWxlYXNlVGV4dHVyZVJlc291
cmNlc0xpc3QodGhpcyk7Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jayhtX2Zyb250QnVmZmVy
TG9jayk7Ci0KLSAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX3RleElEKTsK
LSAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc2l0aW9uTG9jYXRpb24sIDIsIEdMX0ZM
T0FULCBHTF9GQUxTRSwgMCwgJm1fdHJhbnNmb3JtZWRCb3VuZHMpOwotICAgICAgICBmbG9hdCB1
cHNpZGVEb3duWzQgKiAyXSA9IHsgMCwgMSwgIDAsIDAsICAxLCAwLCAgMSwgMSB9OwotICAgICAg
ICBnbFZlcnRleEF0dHJpYlBvaW50ZXIodGV4Q29vcmRMb2NhdGlvbiwgMiwgR0xfRkxPQVQsIEdM
X0ZBTFNFLCAwLCB1cHNpZGVEb3duKTsKLSAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xF
X0ZBTiwgMCwgNCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBpZiAobV9jbGllbnQp
CiAgICAgICAgIG1fY2xpZW50LT5kcmF3VGV4dHVyZXModGhpcywgc2NhbGUsIHBvc2l0aW9uTG9j
YXRpb24sIHRleENvb3JkTG9jYXRpb24pOwpAQCAtMzI1LDggKzI5OCw2IEBAIHZvaWQgTGF5ZXJD
b21wb3NpdGluZ1RocmVhZDo6cmVsZWFzZVRleHR1cmVSZXNvdXJjZXMoKQogICAgICAgICBtX3Bs
dWdpbkJ1ZmZlciA9IDA7CiAgICAgICAgIG1fcGx1Z2luVmlldy0+dW5sb2NrRnJvbnRCdWZmZXIo
KTsKICAgICB9Ci0gICAgaWYgKG1fZnJvbnRCdWZmZXJMb2NrICYmIChtX3RleElEIHx8IGxheWVy
VHlwZSgpID09IExheWVyRGF0YTo6V2ViR0xMYXllcikpCi0gICAgICAgIHB0aHJlYWRfbXV0ZXhf
dW5sb2NrKG1fZnJvbnRCdWZmZXJMb2NrKTsKIH0KIAogdm9pZCBMYXllckNvbXBvc2l0aW5nVGhy
ZWFkOjpzZXRQbHVnaW5WaWV3KFBsdWdpblZpZXcqIHBsdWdpblZpZXcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRp
bmdUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
TGF5ZXJDb21wb3NpdGluZ1RocmVhZC5oCmluZGV4IDdhMjk5OTM0YWQzMmJhNmM1ZmRiMDcxMGQ0
MjlhNDViNTQ0NDU1MGEuLjExYjliNDI3ZjU5OGNiODI3MmRlYWYxNmVlMzM5YTc1NzE3MjUwNTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
TGF5ZXJDb21wb3NpdGluZ1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5oCkBAIC0xMjYsNiArMTI2
LDggQEAgY2xhc3MgTGF5ZXJDb21wb3NpdGluZ1RocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxMYXllckNvbXBvc2l0aW5nVGhyZWEKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxMYXllckNvbXBvc2l0aW5nVGhyZWFkPiBjcmVhdGUoTGF5ZXJUeXBlLCBMYXllckNvbXBv
c2l0aW5nVGhyZWFkQ2xpZW50Kik7CiAKKyAgICB2b2lkIHNldENsaWVudChMYXllckNvbXBvc2l0
aW5nVGhyZWFkQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KKwogICAgIC8v
IFRocmVhZCBzYWZlCiAgICAgdm9pZCBzZXRQbHVnaW5WaWV3KFBsdWdpblZpZXcqKTsKICNpZiBF
TkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ibGFja2JlcnJ5L0xheWVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYmxhY2tiZXJyeS9MYXllckRhdGEuaAppbmRleCA0ZWIxMWUzMWZiMWUxMDY3NGVkZDAxY2U2
YjM2MDM1MjUyZWZiNjBkLi5kZTRiNTFmZDE1ZTBmMDdhMDRjZjVjYTczZDQzNTkxNzE4YzViOGVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L0xheWVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvTGF5ZXJEYXRhLmgKQEAgLTkyLDggKzkyLDYgQEAgcHVibGljOgogI2lmIEVOQUJMRShW
SURFTykKICAgICAgICAgLCBtX21lZGlhUGxheWVyKDApCiAjZW5kaWYKLSAgICAgICAgLCBtX3Rl
eElEKDApCi0gICAgICAgICwgbV9mcm9udEJ1ZmZlckxvY2soMCkKICAgICAgICAgLCBtX3N1c3Bl
bmRUaW1lKDApCiAgICAgICAgICwgbV9kb3VibGVTaWRlZCh0cnVlKQogICAgICAgICAsIG1fbWFz
a3NUb0JvdW5kcyhmYWxzZSkKQEAgLTE1Miw5ICsxNTAsNiBAQCBwdWJsaWM6CiAKICAgICBib29s
IHByZXNlcnZlczNEKCkgY29uc3QgeyByZXR1cm4gbV9wcmVzZXJ2ZXMzRDsgfQogCi0gICAgdW5z
aWduZWQgZ2V0VGV4dHVyZUlEKCkgY29uc3QgeyByZXR1cm4gbV90ZXhJRDsgfQotICAgIHZvaWQg
c2V0VGV4dHVyZUlEKHVuc2lnbmVkIGludCB2YWx1ZSkgeyBtX3RleElEID0gdmFsdWU7IH0KLQog
ICAgIGJvb2wgbmVlZHNUZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclR5cGUgPT0gV2Vi
R0xMYXllciB8fCBtX2xheWVyVHlwZSA9PSBDYW52YXNMYXllciB8fCBtX25lZWRzVGV4dHVyZTsg
fQogCiAgICAgTGF5ZXJQcm9ncmFtU2hhZGVyIGxheWVyUHJvZ3JhbVNoYWRlcigpIGNvbnN0IHsg
cmV0dXJuIG1fbGF5ZXJQcm9ncmFtU2hhZGVyOyB9CkBAIC0yMTksMTAgKzIxNCw2IEBAIHByb3Rl
Y3RlZDoKICNlbmRpZgogICAgIEludFJlY3QgbV9ob2xlUHVuY2hSZWN0OwogCi0gICAgdW5zaWdu
ZWQgbV90ZXhJRDsKLQotICAgIHB0aHJlYWRfbXV0ZXhfdCogbV9mcm9udEJ1ZmZlckxvY2s7Ci0K
ICAgICBkb3VibGUgbV9zdXNwZW5kVGltZTsKIAogICAgIHVuc2lnbmVkIG1fZG91YmxlU2lkZWQg
OiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9MYXllcldlYktpdFRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L0xheWVyV2ViS2l0VGhyZWFkLmNwcAppbmRleCA4ODhiMDRjYTI2MjM4
Nzc3Y2MzYTBlN2NmZThjYWVhMWE3NDBjMTI0Li5iY2NkOTBkZDAzYTUxN2VkNmVkZTQ1Yzg4Yzgy
ZDc0OTg2ZjNjMWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ibGFja2JlcnJ5L0xheWVyV2ViS2l0VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyV2ViS2l0VGhyZWFkLmNwcApAQCAtNzYs
OSArNzYsNiBAQCBMYXllcldlYktpdFRocmVhZDo6TGF5ZXJXZWJLaXRUaHJlYWQoTGF5ZXJUeXBl
IHR5cGUsIEdyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5KiBvdwogCiBMYXllcldlYktpdFRocmVhZDo6
fkxheWVyV2ViS2l0VGhyZWFkKCkKIHsKLSAgICBpZiAobV9mcm9udEJ1ZmZlckxvY2spCi0gICAg
ICAgIHB0aHJlYWRfbXV0ZXhfZGVzdHJveShtX2Zyb250QnVmZmVyTG9jayk7Ci0KICAgICBpZiAo
bV90aWxlcikKICAgICAgICAgbV90aWxlci0+bGF5ZXJXZWJLaXRUaHJlYWREZXN0cm95ZWQoKTsK
IApAQCAtMTYyLDE4ICsxNTksMTYgQEAgYm9vbCBMYXllcldlYktpdFRocmVhZDo6Y29udGVudHNW
aXNpYmxlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRzUmVjdCkgY29uc3QKICAgICByZXR1cm4gbV9v
d25lci0+Y29udGVudHNWaXNpYmxlKGNvbnRlbnRzUmVjdCk7CiB9CiAKLXZvaWQgTGF5ZXJXZWJL
aXRUaHJlYWQ6OmNyZWF0ZUZyb250QnVmZmVyTG9jaygpCit2b2lkIExheWVyV2ViS2l0VGhyZWFk
Ojp1cGRhdGVUZXh0dXJlQ29udGVudHNJZk5lZWRlZCgpCiB7Ci0gICAgcHRocmVhZF9tdXRleGF0
dHJfdCBtdXRleEF0dHJpYnV0ZXM7Ci0gICAgcHRocmVhZF9tdXRleGF0dHJfaW5pdCgmbXV0ZXhB
dHRyaWJ1dGVzKTsKLSAgICBtX2Zyb250QnVmZmVyTG9jayA9IG5ldyBwdGhyZWFkX211dGV4X3Q7
Ci0gICAgcHRocmVhZF9tdXRleF9pbml0KG1fZnJvbnRCdWZmZXJMb2NrLCAmbXV0ZXhBdHRyaWJ1
dGVzKTsKKyAgICBpZiAobV90aWxlcikKKyAgICAgICAgbV90aWxlci0+dXBkYXRlVGV4dHVyZUNv
bnRlbnRzSWZOZWVkZWQobV9pc01hc2sgPyAxLjAgOiBjb250ZW50c1NjYWxlKCkpOwogfQogCi12
b2lkIExheWVyV2ViS2l0VGhyZWFkOjp1cGRhdGVUZXh0dXJlQ29udGVudHNJZk5lZWRlZCgpCit2
b2lkIExheWVyV2ViS2l0VGhyZWFkOjpjb21taXRQZW5kaW5nVGV4dHVyZVVwbG9hZHMoKQogewog
ICAgIGlmIChtX3RpbGVyKQotICAgICAgICBtX3RpbGVyLT51cGRhdGVUZXh0dXJlQ29udGVudHNJ
Zk5lZWRlZChtX2lzTWFzayA/IDEuMCA6IGNvbnRlbnRzU2NhbGUoKSk7CisgICAgICAgIG1fdGls
ZXItPmNvbW1pdFBlbmRpbmdUZXh0dXJlVXBsb2FkcygpOwogfQogCiB2b2lkIExheWVyV2ViS2l0
VGhyZWFkOjpzZXRDb250ZW50cyhJbWFnZSogY29udGVudHMpCkBAIC0xOTcsNyArMTkyLDcgQEAg
dm9pZCBMYXllcldlYktpdFRocmVhZDo6c2V0RHJhd2FibGUoYm9vbCBpc0RyYXdhYmxlKQogCiAg
ICAgbV9pc0RyYXdhYmxlID0gaXNEcmF3YWJsZTsKIAotICAgIHNldE5lZWRzVGV4dHVyZShtX2lz
RHJhd2FibGUgJiYgKGRyYXdzQ29udGVudCgpIHx8IGNvbnRlbnRzKCkgfHwgcGx1Z2luVmlldygp
IHx8IG1lZGlhUGxheWVyKCkgfHwgbV90ZXhJRCkpOworICAgIHNldE5lZWRzVGV4dHVyZShtX2lz
RHJhd2FibGUgJiYgKGRyYXdzQ29udGVudCgpIHx8IGNvbnRlbnRzKCkgfHwgcGx1Z2luVmlldygp
IHx8IG1lZGlhUGxheWVyKCkpKTsKICAgICBzZXROZWVkc0NvbW1pdCgpOwogfQogCkBAIC0zMDIs
OCArMjk3LDcgQEAgdm9pZCBMYXllcldlYktpdFRocmVhZDo6Y29tbWl0T25Db21wb3NpdGluZ1Ro
cmVhZCgpCiAgICAgfQogICAgIG1fcG9zaXRpb24gPSBvbGRQb3NpdGlvbjsKICAgICB1cGRhdGVM
YXllckhpZXJhcmNoeSgpOwotICAgIGlmIChtX3RpbGVyKQotICAgICAgICBtX3RpbGVyLT5jb21t
aXRQZW5kaW5nVGV4dHVyZVVwbG9hZHMoKTsKKyAgICBjb21taXRQZW5kaW5nVGV4dHVyZVVwbG9h
ZHMoKTsKIAogICAgIHNpemVfdCBsaXN0U2l6ZSA9IG1fc3VibGF5ZXJzLnNpemUoKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXplOyBpKyspCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyV2ViS2l0VGhyZWFkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyV2ViS2l0
VGhyZWFkLmgKaW5kZXggYTkzNGQ0YThhZjMxNTBlNTY3ZjQ2MWUxYTYzNzA4YjkxYzY2MjU4NC4u
Njg0NmVhNWEzODAwYzQyMTA3ZmQzMTc3NGRmZWM4MzdmMzUxNzI2NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVh
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5
ZXJXZWJLaXRUaHJlYWQuaApAQCAtMTY1LDcgKzE2NSw2IEBAIHByb3RlY3RlZDoKIAogICAgIHZv
aWQgc2V0TmVlZHNUZXh0dXJlKGJvb2wgbmVlZHNUZXh0dXJlKSB7IG1fbmVlZHNUZXh0dXJlID0g
bmVlZHNUZXh0dXJlOyB9CiAgICAgdm9pZCBzZXRMYXllclByb2dyYW1TaGFkZXIoTGF5ZXJEYXRh
OjpMYXllclByb2dyYW1TaGFkZXIgc2hhZGVyKSB7IG1fbGF5ZXJQcm9ncmFtU2hhZGVyID0gc2hh
ZGVyOyB9Ci0gICAgdm9pZCBjcmVhdGVGcm9udEJ1ZmZlckxvY2soKTsKICAgICBib29sIGlzRHJh
d2FibGUoKSBjb25zdCB7IHJldHVybiBtX2lzRHJhd2FibGU7IH0KIAogICAgIHZvaWQgc3RhcnRB
bmltYXRpb25zKGRvdWJsZSB0aW1lKTsKQEAgLTE3NCw2ICsxNzMsNyBAQCBwcm90ZWN0ZWQ6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgYm91bmRzQ2hhbmdlZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVUZXh0dXJlQ29udGVudHNJZk5lZWRlZCgpOworICAgIHZpcnR1YWwgdm9pZCBjb21taXRQ
ZW5kaW5nVGV4dHVyZVVwbG9hZHMoKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUxheWVy
SGllcmFyY2h5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ibGFja2JlcnJ5L1dlYkdMTGF5ZXJXZWJLaXRUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9XZWJHTExheWVyV2ViS2l0VGhyZWFkLmNwcApp
bmRleCA3NWI5YzVmYTQ0ZmEwODNiNWVkOTg4NWU0NjdjZGE2MGI4MWFiZWI2Li4yOTVhY2Y0ZDI2
OWMyZWY5NjYxZDYzODYwMWYxNTc3NWM1OTljNjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1dlYkdMTGF5ZXJXZWJLaXRUaHJlYWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvV2ViR0xM
YXllcldlYktpdFRocmVhZC5jcHAKQEAgLTI3LDM1ICsyNywyNSBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBXZWJHTExheWVyV2ViS2l0VGhyZWFkOjpXZWJHTExheWVyV2ViS2l0VGhyZWFkKCkK
LSAgICA6IExheWVyV2ViS2l0VGhyZWFkKFdlYkdMTGF5ZXIsIDApCisgICAgOiBFR0xJbWFnZUxh
eWVyV2ViS2l0VGhyZWFkKFdlYkdMTGF5ZXIpCiAgICAgLCBtX3dlYkdMQ29udGV4dCgwKQotICAg
ICwgbV9uZWVkc0Rpc3BsYXkoZmFsc2UpCiB7Ci0gICAgc2V0TGF5ZXJQcm9ncmFtU2hhZGVyKExh
eWVyUHJvZ3JhbVNoYWRlclJHQkEpOwogfQogCiBXZWJHTExheWVyV2ViS2l0VGhyZWFkOjp+V2Vi
R0xMYXllcldlYktpdFRocmVhZCgpCiB7Ci19Ci0KLXZvaWQgV2ViR0xMYXllcldlYktpdFRocmVh
ZDo6c2V0TmVlZHNEaXNwbGF5KCkKLXsKLSAgICBtX25lZWRzRGlzcGxheSA9IHRydWU7Ci0gICAg
c2V0TmVlZHNDb21taXQoKTsKKyAgICBpZiAobV93ZWJHTENvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpKQorICAgICAgICBkZWxldGVGcm9udEJ1ZmZlcigpOwogfQogCiB2b2lkIFdlYkdMTGF5
ZXJXZWJLaXRUaHJlYWQ6OnVwZGF0ZVRleHR1cmVDb250ZW50c0lmTmVlZGVkKCkKIHsKLSAgICAv
LyBGSVhNRTogRG9lcyBXZWJHTExheWVyIGFsd2F5cyBuZWVkIGRpc3BsYXk/IE9yIGNhbiB3ZSBq
dXN0IHJldHVybiBpbW1lZGlhdGVseSBpZiAoIW1fbmVlZHNEaXNwbGF5KT8KLSAgICBtX25lZWRz
RGlzcGxheSA9IGZhbHNlOworICAgIGlmICghbV93ZWJHTENvbnRleHQgfHwgIW1fd2ViR0xDb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFt
X2Zyb250QnVmZmVyTG9jaykKLSAgICAgICAgY3JlYXRlRnJvbnRCdWZmZXJMb2NrKCk7Ci0KLSAg
ICAvLyBMb2NrIGNvcGllZCBHTCB0ZXh0dXJlIHNvIHRoYXQgdGhlIFVJIHRocmVhZCB3b24ndCBh
Y2Nlc3MgaXQgd2hpbGUgd2UgYXJlIGRyYXdpbmcgaW50byBpdC4KLSAgICBwdGhyZWFkX211dGV4
X2xvY2sobV9mcm9udEJ1ZmZlckxvY2spOwogICAgIG1fd2ViR0xDb250ZXh0LT5wcmVwYXJlVGV4
dHVyZSgpOwotICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKG1fZnJvbnRCdWZmZXJMb2NrKTsKKwor
ICAgIHVwZGF0ZUZyb250QnVmZmVyKG1fd2ViR0xDb250ZXh0LT5nZXRJbnRlcm5hbEZyYW1lYnVm
ZmVyU2l6ZSgpLCBtX3dlYkdMQ29udGV4dC0+cGxhdGZvcm1UZXh0dXJlKCkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L1dlYkdMTGF5ZXJXZWJLaXRUaHJlYWQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvV2ViR0xMYXllcldlYktpdFRocmVhZC5o
CmluZGV4IDZiY2I0ODY1ODg2N2JkMjBjYWRjN2YzYWVhZWM3NmFmMDBkMTQ2MDkuLmIxY2Q1N2Zl
OWNiNDBlYTA5NWExODliMjdhZDU1MGU4MTBhMDUzZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvV2ViR0xMYXllcldlYktpdFRocmVhZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvV2ViR0xM
YXllcldlYktpdFRocmVhZC5oCkBAIC0yMSwxMyArMjEsMTMgQEAKIAogI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykgJiYgRU5BQkxFKFdFQkdMKQogCi0jaW5jbHVkZSAiTGF5ZXJXZWJL
aXRUaHJlYWQuaCIKKyNpbmNsdWRlICJFR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiAKLWNsYXNzIFdl
YkdMTGF5ZXJXZWJLaXRUaHJlYWQgOiBwdWJsaWMgTGF5ZXJXZWJLaXRUaHJlYWQgeworY2xhc3Mg
V2ViR0xMYXllcldlYktpdFRocmVhZCA6IHB1YmxpYyBFR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFk
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTExheWVyV2ViS2l0VGhyZWFk
PiBjcmVhdGUoKQogICAgIHsKQEAgLTM4LDggKzM4LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBz
ZXRXZWJHTENvbnRleHQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpIHsgbV93ZWJHTENvbnRl
eHQgPSBjb250ZXh0OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCk7Ci0K
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVyZUNvbnRlbnRzSWZOZWVk
ZWQoKTsKIApAQCAtNDcsNyArNDUsNiBAQCBwcml2YXRlOgogICAgIFdlYkdMTGF5ZXJXZWJLaXRU
aHJlYWQoKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX3dlYkdMQ29udGV4dDsKLSAgICBi
b29sIG1fbmVlZHNEaXNwbGF5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKaW5kZXggMjI1NjI4MjQ4
YzI5ODM2MWQ2Yjc5YmU1YjRhYTRjNzljMTQxMjEyZC4uMWEwYTI2MmRmNzQ2YjY2MGFjMDY0OTc4
M2JlNTk4ODA4OTg0MTA0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVu
R0xDb21tb24uY3BwCkBAIC0xNTUsNiArMTU1LDcgQEAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IEdy
YXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YShEcmF3aW4K
ICAgICByZXR1cm4gaW1hZ2VEYXRhLnJlbGVhc2UoKTsKIH0KIAorI2lmICFQTEFURk9STShCTEFD
S0JFUlJZKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cHJlcGFyZVRleHR1cmUoKQogewogICAg
IGlmIChtX2xheWVyQ29tcG9zaXRlZCkKQEAgLTE2NiwyMiArMTY3LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6cHJlcGFyZVRleHR1cmUoKQogCiAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVY
VChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKICAgICA6OmdsQWN0aXZl
VGV4dHVyZShHTF9URVhUVVJFMCk7Ci0jaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKLSAgICBpZiAo
IXBsYXRmb3JtVGV4dHVyZSgpKSB7Ci0gICAgICAgIEdMdWludCB0ZXggPSAwOwotICAgICAgICA6
OmdsR2VuVGV4dHVyZXMoMSwgJnRleCk7Ci0gICAgICAgIDo6Z2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFXzJELCB0ZXgpOwotICAgICAgICA6OmdsVGV4UGFyYW1ldGVyZihHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgICAgIDo6Z2xUZXhQYXJhbWV0
ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAg
ICAgICAgOjpnbFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1Ms
IEdMX0NMQU1QX1RPX0VER0UpOwotICAgICAgICA6OmdsVGV4UGFyYW1ldGVyZihHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgICAgIDo6Z2xU
ZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIG1fY3VycmVudFdpZHRoLCBtX2N1
cnJlbnRIZWlnaHQsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwotICAgICAgICBt
X2NvbXBvc2l0aW5nTGF5ZXItPnNldFRleHR1cmVJRCh0ZXgpOwotICAgIH0KLSAgICA6OmdsQmlu
ZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgcGxhdGZvcm1UZXh0dXJlKCkpOwotI2Vsc2UKICAgICA6
OmdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbV9jb21wb3NpdG9yVGV4dHVyZSk7Ci0jZW5k
aWYKICAgICA6OmdsQ29weVRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgbV9pbnRlcm5hbENv
bG9yRm9ybWF0LCAwLCAwLCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0LCAwKTsKICAg
ICA6OmdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbV9ib3VuZFRleHR1cmUwKTsKICAgICA6
OmdsQWN0aXZlVGV4dHVyZShtX2FjdGl2ZVRleHR1cmUpOwpAQCAtMTkwLDYgKzE3Niw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnByZXBhcmVUZXh0dXJlKCkKICAgICA6OmdsRmluaXNoKCk7
CiAgICAgbV9sYXllckNvbXBvc2l0ZWQgPSB0cnVlOwogfQorI2VuZGlmCiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnJlYWRSZW5kZXJpbmdSZXN1bHRzKHVuc2lnbmVkIGNoYXIgKnBpeGVscywg
aW50IHBpeGVsc1NpemUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
QXBpL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNw
cAppbmRleCBjYzMwYTFlMTc5MDE2NWY2MGE2ZjM5YTI4ZmE1M2UzM2MzZjJjYjQyLi5jNmU4ZGY1
NjA3YWYwNzcwZDlhYzE5MjMxMTA0NTQ0OWEwMTc2YzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9BcGkvV2ViUGFnZS5jcHAKQEAgLTU2MDAsNyArNTYwMCw3IEBAIEdyYXBoaWNzTGF5ZXIq
IFdlYlBhZ2VQcml2YXRlOjpvdmVybGF5TGF5ZXIoKQogICAgIHJldHVybiBtX292ZXJsYXlMYXll
ci5nZXQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJpdmF0ZTo6c2V0Q29tcG9zaXRvcihQYXNzUmVm
UHRyPFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZT4gY29tcG9zaXRvciwgRUdMQ29udGV4dCBjb21w
b3NpdGluZ0NvbnRleHQpCit2b2lkIFdlYlBhZ2VQcml2YXRlOjpzZXRDb21wb3NpdG9yKFBhc3NS
ZWZQdHI8V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlPiBjb21wb3NpdG9yKQogewogICAgIHVzaW5n
IG5hbWVzcGFjZSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTsKIApAQCAtNTYxMSwyMCArNTYxMSwxNSBA
QCB2b2lkIFdlYlBhZ2VQcml2YXRlOjpzZXRDb21wb3NpdG9yKFBhc3NSZWZQdHI8V2ViUGFnZUNv
bXBvc2l0b3JQcml2YXRlPiBjb21wb3NpdAogICAgIGlmIChtX2NvbXBvc2l0b3IgfHwgbV9jbGll
bnQtPndpbmRvdygpKQogICAgICAgICBtX2JhY2tpbmdTdG9yZS0+ZC0+c3VzcGVuZFNjcmVlbkFu
ZEJhY2tpbmdTdG9yZVVwZGF0ZXMoKTsKIAotICAgIC8vIFRoaXMgbWV0aG9kIGNhbGwgYWx3YXlz
IHJvdW5kLXRyaXBzIG9uIHRoZSBXZWJLaXQgdGhyZWFkIChzZWUgV2ViUGFnZUNvbXBvc2l0b3I6
OldlYlBhZ2VDb21wb3NpdG9yKCkgYW5kIH5XZWJQYWdlQ29tcG9zaXRvcigpKSwKLSAgICAvLyBh
bmQgdGhlIGNvbXBvc2l0aW5nIGNvbnRleHQgbXVzdCBiZSBzZXQgb24gdGhlIFdlYktpdCB0aHJl
YWQuIEhvdyBjb252ZW5pZW50IQotICAgIGlmIChjb21wb3NpdGluZ0NvbnRleHQgIT0gRUdMX05P
X0NPTlRFWFQpCi0gICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6c2V0Q29t
cG9zaXRpbmdDb250ZXh0KGNvbXBvc2l0aW5nQ29udGV4dCk7Ci0KICAgICAvLyBUaGUgbV9jb21w
b3NpdG9yIG1lbWJlciBoYXMgdG8gYmUgbW9kaWZpZWQgZHVyaW5nIGEgc3luYyBjYWxsIGZvciB0
aHJlYWQKICAgICAvLyBzYWZlIGFjY2VzcyB0byBtX2NvbXBvc2l0b3IgYW5kIGl0cyByZWZjb3Vu
dC4KLSAgICB1c2VySW50ZXJmYWNlVGhyZWFkTWVzc2FnZUNsaWVudCgpLT5kaXNwYXRjaFN5bmNN
ZXNzYWdlKGNyZWF0ZU1ldGhvZENhbGxNZXNzYWdlKCZXZWJQYWdlUHJpdmF0ZTo6c2V0Q29tcG9z
aXRvckhlbHBlciwgdGhpcywgY29tcG9zaXRvciwgY29tcG9zaXRpbmdDb250ZXh0KSk7CisgICAg
dXNlckludGVyZmFjZVRocmVhZE1lc3NhZ2VDbGllbnQoKS0+ZGlzcGF0Y2hTeW5jTWVzc2FnZShj
cmVhdGVNZXRob2RDYWxsTWVzc2FnZSgmV2ViUGFnZVByaXZhdGU6OnNldENvbXBvc2l0b3JIZWxw
ZXIsIHRoaXMsIGNvbXBvc2l0b3IpKTsKIAogICAgIGlmIChtX2NvbXBvc2l0b3IgfHwgbV9jbGll
bnQtPndpbmRvdygpKSAvLyB0aGUgbmV3IGNvbXBvc2l0b3IsIGlmIG9uZSB3YXMgc2V0CiAgICAg
ICAgIG1fYmFja2luZ1N0b3JlLT5kLT5yZXN1bWVTY3JlZW5BbmRCYWNraW5nU3RvcmVVcGRhdGVz
KEJhY2tpbmdTdG9yZTo6UmVuZGVyQW5kQmxpdCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByaXZhdGU6
OnNldENvbXBvc2l0b3JIZWxwZXIoUGFzc1JlZlB0cjxXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU+
IGNvbXBvc2l0b3IsIEVHTENvbnRleHQgY29tcG9zaXRpbmdDb250ZXh0KQordm9pZCBXZWJQYWdl
UHJpdmF0ZTo6c2V0Q29tcG9zaXRvckhlbHBlcihQYXNzUmVmUHRyPFdlYlBhZ2VDb21wb3NpdG9y
UHJpdmF0ZT4gY29tcG9zaXRvcikKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgQmxhY2tCZXJyeTo6
UGxhdGZvcm07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2Vi
UGFnZUNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdl
Q29tcG9zaXRvci5jcHAKaW5kZXggNmU1MGYxN2MxYTY5MTk5NTMzNTRmNTFiZTY5ZmFkYTM1MDhh
YWI0NC4uODk0OGNiOWU4ZWY1NTU4NzVlNDI3NmYxODgwNmRlY2I2MjQwZjA2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRvci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRvci5jcHAKQEAg
LTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1FeGVjdXRhYmxlTWVz
c2FnZS5oPgogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybU1lc3NhZ2UuaD4KICNpbmNsdWRl
IDxCbGFja0JlcnJ5UGxhdGZvcm1NZXNzYWdlQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8RUdML2VnbC5o
PgogI2luY2x1ZGUgPEdlbmVyaWNUaW1lckNsaWVudC5oPgogI2luY2x1ZGUgPFRocmVhZFRpbWVy
Q2xpZW50Lmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC0yODIsNyArMjgxLDcg
QEAgV2ViUGFnZUNvbXBvc2l0b3I6OldlYlBhZ2VDb21wb3NpdG9yKFdlYlBhZ2UqIHBhZ2UsIFdl
YlBhZ2VDb21wb3NpdG9yQ2xpZW50KiBjbGkKICAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCB0aGUg
Y29tcG9zaXRvciB3aWxsIGJlIGFyb3VuZCBmb3IgYXMgbG9uZyBhcyBpdCdzCiAgICAgLy8gbmVl
ZGVkLiBVbmZvcnR1bmF0ZWx5IFJlZlB0cjxUPiBpcyBub3QgcHVibGljLCBzbyB3ZSBoYXZlIGRl
Y2xhcmUgdG8KICAgICAvLyByZXNvcnQgdG8gbWFudWFsIHJlZmNvdW50aW5nLgotICAgIHdlYktp
dFRocmVhZE1lc3NhZ2VDbGllbnQoKS0+ZGlzcGF0Y2hNZXNzYWdlKGNyZWF0ZU1ldGhvZENhbGxN
ZXNzYWdlKCZXZWJQYWdlUHJpdmF0ZTo6c2V0Q29tcG9zaXRvciwgZC0+cGFnZSgpLCB0bXAsIGVn
bEdldEN1cnJlbnRDb250ZXh0KCkpKTsKKyAgICB3ZWJLaXRUaHJlYWRNZXNzYWdlQ2xpZW50KCkt
PmRpc3BhdGNoTWVzc2FnZShjcmVhdGVNZXRob2RDYWxsTWVzc2FnZSgmV2ViUGFnZVByaXZhdGU6
OnNldENvbXBvc2l0b3IsIGQtPnBhZ2UoKSwgdG1wKSk7CiB9CiAKIFdlYlBhZ2VDb21wb3NpdG9y
Ojp+V2ViUGFnZUNvbXBvc2l0b3IoKQpAQCAtMjkxLDcgKzI5MCw3IEBAIFdlYlBhZ2VDb21wb3Np
dG9yOjp+V2ViUGFnZUNvbXBvc2l0b3IoKQogCiAgICAgLy8gSWYgd2UncmUgYmVpbmcgZGVzdHJv
eWVkIGJlZm9yZSB0aGUgcGFnZSwgc2VuZCBhIG1lc3NhZ2UgdG8gZGlzY29ubmVjdCB1cwogICAg
IGlmIChkLT5wYWdlKCkpCi0gICAgICAgIHdlYktpdFRocmVhZE1lc3NhZ2VDbGllbnQoKS0+ZGlz
cGF0Y2hNZXNzYWdlKGNyZWF0ZU1ldGhvZENhbGxNZXNzYWdlKCZXZWJQYWdlUHJpdmF0ZTo6c2V0
Q29tcG9zaXRvciwgZC0+cGFnZSgpLCBQYXNzUmVmUHRyPFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0
ZT4oMCksIEVHTF9OT19DT05URVhUKSk7CisgICAgICAgIHdlYktpdFRocmVhZE1lc3NhZ2VDbGll
bnQoKS0+ZGlzcGF0Y2hNZXNzYWdlKGNyZWF0ZU1ldGhvZENhbGxNZXNzYWdlKCZXZWJQYWdlUHJp
dmF0ZTo6c2V0Q29tcG9zaXRvciwgZC0+cGFnZSgpLCBQYXNzUmVmUHRyPFdlYlBhZ2VDb21wb3Np
dG9yUHJpdmF0ZT4oMCkpKTsKICAgICBkLT5jb21wb3NpdG9yRGVzdHJveWVkKCk7CiAgICAgZC0+
ZGVyZWYoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2Vi
UGFnZV9wLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5oCmluZGV4
IDI3MWVkMGEzOTY4N2QyY2FjMGE2NmI2OTMxZTU0ZTFiZWI2MjkyMGEuLjY2MjJjNzI5YmM2Yjcx
MTM4NjI4ZTZlZGU5ODc4MGRhNzNkOWM4NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0Fw
aS9XZWJQYWdlX3AuaApAQCAtNDEzLDggKzQxMyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbW1p
dFJvb3RMYXllcihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYsIGJvb2wpOwogICAgIGJvb2wgaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkgY29u
c3QgeyByZXR1cm4gbV9jb21wb3NpdG9yOyB9CiAgICAgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRl
KiBjb21wb3NpdG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb21wb3NpdG9yLmdldCgpOyB9Ci0gICAg
dm9pZCBzZXRDb21wb3NpdG9yKFBhc3NSZWZQdHI8V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlPiwg
RUdMQ29udGV4dCBjb21wb3NpdGluZ0NvbnRleHQpOwotICAgIHZvaWQgc2V0Q29tcG9zaXRvckhl
bHBlcihQYXNzUmVmUHRyPFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZT4sIEVHTENvbnRleHQgY29t
cG9zaXRpbmdDb250ZXh0KTsKKyAgICB2b2lkIHNldENvbXBvc2l0b3IoUGFzc1JlZlB0cjxXZWJQ
YWdlQ29tcG9zaXRvclByaXZhdGU+KTsKKyAgICB2b2lkIHNldENvbXBvc2l0b3JIZWxwZXIoUGFz
c1JlZlB0cjxXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU+KTsKICAgICB2b2lkIHNldENvbXBvc2l0
b3JCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKICAgICBib29sIGNyZWF0
ZUNvbXBvc2l0b3IoKTsKICAgICB2b2lkIGRlc3Ryb3lDb21wb3NpdG9yKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>