<?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>94728</bug_id>
          
          <creation_ts>2012-08-22 10:48:51 -0700</creation_ts>
          <short_desc>[BlackBerry] CSS Shader implementation for BlackBerry port</short_desc>
          <delta_ts>2014-01-28 08:26:47 -0800</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>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>71401</dependson>
    
    <dependson>93869</dependson>
    
    <dependson>94724</dependson>
    
    <dependson>94725</dependson>
    
    <dependson>94726</dependson>
    
    <dependson>94736</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Joshua Netterfield">jnetterfield</reporter>
          <assigned_to name="Arvid Nilsson">anilsson</assigned_to>
          <cc>achicu</cc>
    
    <cc>andersca</cc>
    
    <cc>anilsson</cc>
    
    <cc>mvujovic</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>staikos</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>702054</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Netterfield">jnetterfield</who>
    <bug_when>2012-08-22 10:48:51 -0700</bug_when>
    <thetext>https://dvcs.w3.org/hg/FXTF/raw-file/tip/filters/index.html#feCustomElement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710634</commentid>
    <comment_count>1</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-09-03 07:16:48 -0700</bug_when>
    <thetext>I&apos;m currently looking at this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711566</commentid>
    <comment_count>2</comment_count>
      <attachid>162132</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-09-04 16:46:32 -0700</bug_when>
    <thetext>Created attachment 162132
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711591</commentid>
    <comment_count>3</comment_count>
      <attachid>162132</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-09-04 17:28:03 -0700</bug_when>
    <thetext>Comment on attachment 162132
Patch

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

Looks good to me.

&gt; Source/WebCore/platform/graphics/blackberry/LayerFilterRenderer.h:286
&gt; +    CustomFilterGlobalContext m_programValidator;

It looks like we need to extract the validator out of CustomFilterGlobalContext. Do you mind adding a bug for that and assign it to me?

&gt; Source/WebCore/platform/graphics/blackberry/LayerFilterRenderer.h:287
&gt; +    HashSet&lt;LayerFilterMesh*&gt; m_meshSet;

I think it would be awesome if m_meshSet could also go into the CustomFilterGlobalContext, but that&apos;s ok for now. There&apos;s a different bug for that https://bugs.webkit.org/show_bug.cgi?id=88429 . It may be worth adding a fixme linking to the bug.

&gt; Source/WebCore/rendering/FilterEffectRenderer.cpp:207
&gt; +#if !PLATFORM(BLACKBERRY)

This will also disable FilterOperation::REFERENCE. Is that what you want?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711602</commentid>
    <comment_count>4</comment_count>
      <attachid>162132</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-09-04 17:38:39 -0700</bug_when>
    <thetext>Comment on attachment 162132
Patch

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

Thanks for looking into this, even though it&apos;s port specific =)

&gt;&gt; Source/WebCore/platform/graphics/blackberry/LayerFilterRenderer.h:286
&gt;&gt; +    CustomFilterGlobalContext m_programValidator;
&gt; 
&gt; It looks like we need to extract the validator out of CustomFilterGlobalContext. Do you mind adding a bug for that and assign it to me?

Will do, the goal here is to not have any object which could possibly create a GraphicsContext3D on our compositing thread.

&gt;&gt; Source/WebCore/platform/graphics/blackberry/LayerFilterRenderer.h:287
&gt;&gt; +    HashSet&lt;LayerFilterMesh*&gt; m_meshSet;
&gt; 
&gt; I think it would be awesome if m_meshSet could also go into the CustomFilterGlobalContext, but that&apos;s ok for now. There&apos;s a different bug for that https://bugs.webkit.org/show_bug.cgi?id=88429 . It may be worth adding a fixme linking to the bug.

In this case, that&apos;s in opposition to the previous comment - we don&apos;t want a CustomFilterGlobalContext at all on our compositing thread, since GraphicsContext3D is WebKit-thread specific.

CustomFilterGlobalContext should have a CustomFilterProgramValidator and a list of meshes, but we won&apos;t be reusing that infrastructure in the BlackBerry LayerFilterRenderer - instead, it will just have it&apos;s own separate CustomFilterProgramValidator and list of meshes.

&gt;&gt; Source/WebCore/rendering/FilterEffectRenderer.cpp:207
&gt;&gt; +#if !PLATFORM(BLACKBERRY)
&gt; 
&gt; This will also disable FilterOperation::REFERENCE. Is that what you want?

I&apos;ve been trying to figure out what Joshua was trying to accomplish here, but I&apos;m not certain why he disabled this code...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711614</commentid>
    <comment_count>5</comment_count>
      <attachid>162132</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-09-04 17:51:26 -0700</bug_when>
    <thetext>Comment on attachment 162132
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/blackberry/LayerFilterRenderer.h:286
&gt;&gt;&gt; +    CustomFilterGlobalContext m_programValidator;
&gt;&gt; 
&gt;&gt; It looks like we need to extract the validator out of CustomFilterGlobalContext. Do you mind adding a bug for that and assign it to me?
&gt; 
&gt; Will do, the goal here is to not have any object which could possibly create a GraphicsContext3D on our compositing thread.

I created https://bugs.webkit.org/show_bug.cgi?id=95804</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711619</commentid>
    <comment_count>6</comment_count>
      <attachid>162132</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-09-04 17:56:25 -0700</bug_when>
    <thetext>Comment on attachment 162132
Patch

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

&gt;&gt;&gt; Source/WebCore/rendering/FilterEffectRenderer.cpp:207
&gt;&gt;&gt; +#if !PLATFORM(BLACKBERRY)
&gt;&gt; 
&gt;&gt; This will also disable FilterOperation::REFERENCE. Is that what you want?
&gt; 
&gt; I&apos;ve been trying to figure out what Joshua was trying to accomplish here, but I&apos;m not certain why he disabled this code...

Mystery solved, the only thing standing between us and FECustomFilter is the Texture naming conflict described in https://bugs.webkit.org/show_bug.cgi?id=95781. I&apos;m gonna re-enable this code in anticipation of a patch for https://bugs.webkit.org/show_bug.cgi?id=95781.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711621</commentid>
    <comment_count>7</comment_count>
      <attachid>162142</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-09-04 18:01:00 -0700</bug_when>
    <thetext>Created attachment 162142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714646</commentid>
    <comment_count>8</comment_count>
      <attachid>162142</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-09-07 10:06:00 -0700</bug_when>
    <thetext>Comment on attachment 162142
Patch

We plan to enable CSS shaders a little bit later when the implementation is updated to match the latest spec. I&apos;ll rename this bug slightly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714923</commentid>
    <comment_count>9</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-09-07 13:45:20 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 162142 [details])
&gt; We plan to enable CSS shaders a little bit later when the implementation is updated to match the latest spec. I&apos;ll rename this bug slightly.

I thought that we are following the spec closely. The remaining issues should be around the filter margins, the filter area used by the feCustomFilter and implementing the remaining parameter types. We are also working to remove the texture access.

Are you thinking about some specific issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715029</commentid>
    <comment_count>10</comment_count>
      <attachid>162880</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-09-07 15:04:03 -0700</bug_when>
    <thetext>Created attachment 162880
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715033</commentid>
    <comment_count>11</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-09-07 15:06:49 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=162880) [details]
&gt; Patch

As a bonus, this one actually applies to upstream! There was a conflict in platformBlackBerry.cmake in the other patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715041</commentid>
    <comment_count>12</comment_count>
      <attachid>162880</attachid>
    <who name="George Staikos">staikos</who>
    <bug_when>2012-09-07 15:15:14 -0700</bug_when>
    <thetext>Comment on attachment 162880
Patch

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

&gt; Source/WebKit/blackberry/Api/WebPage.cpp:573
&gt; +#if ENABLE(CSS_SHADERS)

This looks wrong.  I think it&apos;s a bad merge...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715047</commentid>
    <comment_count>13</comment_count>
      <attachid>162880</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-09-07 15:29:53 -0700</bug_when>
    <thetext>Comment on attachment 162880
Patch

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

&gt;&gt; Source/WebKit/blackberry/Api/WebPage.cpp:573
&gt;&gt; +#if ENABLE(CSS_SHADERS)
&gt; 
&gt; This looks wrong.  I think it&apos;s a bad merge...

This was actually how Josh put it in his patch. I think the reasoning was, if we don&apos;t have webgl, we won&apos;t have graphicscontext3d, and css shaders can&apos;t work. However, the build system should make sure to enable css_shaders only if webgl is on, so moving it out of te webgl #ifdef would make sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715048</commentid>
    <comment_count>14</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-09-07 15:31:07 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (From update of attachment 162142 [details] [details])
&gt; &gt; We plan to enable CSS shaders a little bit later when the implementation is updated to match the latest spec. I&apos;ll rename this bug slightly.
&gt; 
&gt; I thought that we are following the spec closely. The remaining issues should be around the filter margins, the filter area used by the feCustomFilter and implementing the remaining parameter types. We are also working to remove the texture access.
&gt; 
&gt; Are you thinking about some specific issue?

I was thinking of &quot;Renoving the texture access&quot;, specifically.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162132</attachid>
            <date>2012-09-04 16:46:32 -0700</date>
            <delta_ts>2012-09-04 18:00:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94728-20120905014613.patch</filename>
            <type>text/plain</type>
            <size>49084</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2JkMWY5NDE4NzBkNGQ3
NzliNTJhNjBlZDdkNThiNTg3MjE4YmUyNi4uOTVmN2Y2MzMzYmQxMDk0YmY1ZDk4NWFlNTc2MjQx
Y2EwMTExZTJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDEyLTA4LTI5ICBKb3No
dWEgTmV0dGVyZmllbGQgIDxqbmV0dGVyZmllbGRAcmltLmNvbT4KKworICAgICAgICBbQmxhY2tC
ZXJyeV0gRW5hYmxlIENTUyBTaGFkZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05NDcyOAorCisgICAgICAgIEVuYWJsZSBDU1MgU2hhZGVycyBmb3Ig
dGhlIEJsYWNrQmVycnkgcG9ydC4KKworICAgICAgICBDU1MgU2hhZGVycyAoYWxzbyBjYWxsZWQg
Q3VzdG9tIEZpbHRlcnMpIGFyZSBDU1MgRmlsdGVyIEVmZmVjdHMKKyAgICAgICAgdGhhdCBhcmUg
ZGVmaW5lZCBieSBhIEdMU0wgRVMgdmVydGV4IGFuZCBmcmFnbWVudCBzaGFkZXIuIEZvciBhIHF1
aWNrCisgICAgICAgIGludHJvZHVjdGlvbiwgc2VlIGh0dHA6Ly93d3cuYWRvYmUuY29tL2Rldm5l
dC9odG1sNS9hcnRpY2xlcy9jc3Mtc2hhZGVycy5odG1sLgorCisgICAgICAgIFNlZSBhbHNvIFdl
YktpdCBidWdzICM5MjY4NSwgIzk0NzI0IGFuZCAjOTQ3MjUuCisKKyAgICAgICAgUGF0Y2ggd2Fz
IHVwZGF0ZWQgYnkgQXJ2aWQgTmlsc3NvbiB0byB1c2UgQmxhY2tCZXJyeS1zcGVjaWZpYworICAg
ICAgICBMYXllckNvbXBpbGVkUHJvZ3JhbSBhbmQgTGF5ZXJGaWx0ZXJNZXNoIGNsYXNzZXMgYWZ0
ZXIgcmVzb2x1dGlvbiBvZgorICAgICAgICBidWcgIzk0NzI1LgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgYWxyZWFkeSBjb3ZlcmVkIGJ5Cisg
ICAgICAgIGNzczMvZmlsdGVycy9jdXN0b20vKi4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIFBsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZToKKyAgICAgICAgKiBjc3MvV2Vi
S2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBpbGVkUHJvZ3JhbS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBpbGVk
UHJvZ3JhbTo6TGF5ZXJDb21waWxlZFByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJD
b21waWxlZFByb2dyYW06OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJD
b21waWxlZFByb2dyYW06OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29t
cGlsZWRQcm9ncmFtOjppbml0aWFsaXplUGFyYW1ldGVyTG9jYXRpb25zKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyQ29tcGlsZWRQcm9ncmFtOjp1bmlmb3JtTG9jYXRpb25CeU5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJDb21waWxlZFByb2dyYW06On5MYXllckNvbXBpbGVkUHJvZ3Jh
bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBpbGVk
UHJvZ3JhbS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTGF5ZXJDb21w
aWxlZFByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21waWxlZFByb2dyYW06OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBpbGVkUHJvZ3JhbTo6cG9zaXRpb25B
dHRyaWJMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBpbGVkUHJvZ3JhbTo6
dGV4QXR0cmliTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21waWxlZFByb2dy
YW06Om1lc2hBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBpbGVk
UHJvZ3JhbTo6dHJpYW5nbGVBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMYXll
ckNvbXBpbGVkUHJvZ3JhbTo6bWVzaEJveExvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyQ29tcGlsZWRQcm9ncmFtOjpwcm9qZWN0aW9uTWF0cml4TG9jYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJDb21waWxlZFByb2dyYW06OnRpbGVTaXplTG9jYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJDb21waWxlZFByb2dyYW06Om1lc2hTaXplTG9jYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJDb21waWxlZFByb2dyYW06OnNhbXBsZXJMb2NhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBpbGVkUHJvZ3JhbTo6Y29udGVudFNhbXBsZXJMb2Nh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBpbGVkUHJvZ3JhbTo6c2FtcGxlclNp
emVMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBpbGVkUHJvZ3JhbTo6aW50
ZXJuYWxUZXhDb29yZEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29t
cGlsZWRQcm9ncmFtOjppc0luaXRpYWxpemVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29t
cGlsZWRQcm9ncmFtOjpwcm9ncmFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0xheWVyRmlsdGVyTWVzaC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllckZpbHRlck1lc2g6OkxheWVyRmlsdGVyTWVzaCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllckZpbHRlck1lc2g6On5MYXllckZpbHRlck1lc2gpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJGaWx0ZXJNZXNoLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChMYXllckZpbHRlck1lc2gpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJGaWx0ZXJNZXNoOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJGaWx0ZXJNZXNoOjp2ZXJ0aWNlc0J1ZmZlck9iamVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllckZpbHRlck1lc2g6OmJ5dGVzUGVyVmVydGV4KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyRmlsdGVyTWVzaDo6ZWxlbWVudHNCdWZmZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJGaWx0ZXJNZXNoOjppbmRpY2VzQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJG
aWx0ZXJNZXNoOjptZXNoQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyRmlsdGVyTWVzaDo6
bWVzaFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJGaWx0ZXJNZXNoOjpjb2x1bW5Db3Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckZpbHRlck1lc2g6OnJvd0NvdW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRmlsdGVyUmVuZGVyZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJGaWx0ZXJSZW5kZXJlckFjdGlvbjo6TGF5ZXJGaWx0
ZXJSZW5kZXJlckFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckZpbHRlclJlbmRlcmVy
QWN0aW9uOjp1c2VBY3Rpb25Pbik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckZpbHRlclJlbmRl
cmVyOjppbml0aWFsaXplU2hhcmVkR0xPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJGaWx0ZXJSZW5kZXJlcjo6Z2V0Q29tcGlsZWRQcm9ncmFtKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyRmlsdGVyUmVuZGVyZXI6OmdldEZpbHRlck1lc2gpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJGaWx0ZXJSZW5kZXJlcjo6ZmlsdGVyTWVzaERlc3Ryb3ll
ZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckZpbHRlclJlbmRlcmVyOjphY3Rpb25zRm9yT3Bl
cmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckZpbHRlclJlbmRlcmVyOjphcHBseUFj
dGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJGaWx0
ZXJSZW5kZXJlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChMYXllckZpbHRlclJl
bmRlcmVyQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyRmlsdGVyUmVuZGVyZXJBY3Rp
b246OnVzZUN1c3RvbVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckZpbHRlclJlbmRl
cmVyQWN0aW9uOjphZG9wdE1lc2gpOgorICAgICAgICAoTGF5ZXJGaWx0ZXJSZW5kZXJlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllcldlYktpdFRocmVhZDo6ZmlsdGVyc0NhbkJlQ29t
cG9zaXRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJPcGVyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck9wZXJhdGlvbjo6
cGFyYW1ldGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJQYXJhbWV0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ3VzdG9tRmls
dGVyUGFyYW1ldGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKToKKwog
MjAxMi0wOS0wNCAgQXJ2aWQgTmlsc3NvbiAgPGFuaWxzc29uQHJpbS5jb20+CiAKICAgICAgICAg
W0NTUyBTaGFkZXJzXSBbQmxhY2tCZXJyeV0gUmVmYWN0b3IgQ3VzdG9tRmlsdGVyTWVzaCBhbmQg
Q3VzdG9tRmlsdGVyKlByb2dyYW0KQEAgLTYxNiwxMSArNzA4LDExIEBACiAKICAgICAgICAgVGhp
cyBwYXRjaCBpbXBsZW1lbnRzIGNlcnRhaW4gbmV3IFBhcmFtZXRlciB0eXBlcywgaW5jbHVkaW5n
IHZlcnRleC9lbGVtZW50CiAgICAgICAgIGJ1ZmZlcnMgYW5kIHZlcnRleCBhdHRyaWJ1dGVzIHdo
aWNoIGFyZSBuZWVkZWQgdG8gaW1wbGVtZW50IGNvbXBvc2l0ZWQKLSAgICAgICAgQ1NTIFNoYWRl
cnMgb24gQkIxMC4gSW4gYWRkaXRpb24sIGEgbmV3IGRyYXdpbmcgbW9kZSBpcyByZXF1aXJlZCBp
biBvcmRlcgorICAgICAgICBDU1MgU2hhZGVycyBvbiBCbGFja0JlcnJ5LiBJbiBhZGRpdGlvbiwg
YSBuZXcgZHJhd2luZyBtb2RlIGlzIHJlcXVpcmVkIGluIG9yZGVyCiAgICAgICAgIHRvIGRyYXcg
Q1NTIFNoYWRlcnMgbWVzaGVzIGZyb20gdmVydGV4L2VsZW1lbnQgYnVmZmVycy4KIAogICAgICAg
ICBObyBuZXcgdGVzdHMsIGJlY2F1c2UgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIG5vIG5ldyBmdW5j
dGlvbmFsaXR5LiBXaGVuCi0gICAgICAgIHRoZSBwYXRjaCB3aGljaCBlbmFibGVzIENTUyBTaGFk
ZXJzIG9uIEJCMTAgaW4gdXBzdHJlYW1lZCwgdGVzdHMgZm9yCisgICAgICAgIHRoZSBwYXRjaCB3
aGljaCBlbmFibGVzIENTUyBTaGFkZXJzIG9uIEJsYWNrQmVycnkgaW4gdXBzdHJlYW1lZCwgdGVz
dHMgZm9yCiAgICAgICAgIENTUyBTaGFkZXJzIHdpbGwgcHJvdmUgdGhpcyBjb2RlIHRvIGJlIGNv
cnJlY3QuCiAKICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRmls
dGVyUmVuZGVyZXIuY3BwOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggMThhNzMz
ZTA1NjEwOWQ4NGU0MzRjNTdhMmYzZjIzYWI2NGM0ZWE2Mi4uY2IwODFiMTg1NzNjY2UzZmEwNWEy
OTRjNWMxMmI1Zjk3NzkzMjgwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjEgQEAKKzIwMTItMDgtMjkgIEpvc2h1YSBOZXR0ZXJmaWVsZCAgPGpuZXR0ZXJmaWVs
ZEByaW0uY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBFbmFibGUgQ1NTIFNoYWRlcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0NzI4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5hYmxlIENTUyBT
aGFkZXJzIGZvciB0aGUgQmxhY2tCZXJyeSBwb3J0LgorCisgICAgICAgIENTUyBTaGFkZXJzIChh
bHNvIGNhbGxlZCBDdXN0b20gRmlsdGVycykgYXJlIENTUyBGaWx0ZXIgRWZmZWN0cworICAgICAg
ICB0aGF0IGFyZSBkZWZpbmVkIGJ5IGEgR0xTTCBFUyB2ZXJ0ZXggYW5kIGZyYWdtZW50IHNoYWRl
ci4gRm9yIGEgcXVpY2sKKyAgICAgICAgaW50cm9kdWN0aW9uLCBzZWUgaHR0cDovL3d3dy5hZG9i
ZS5jb20vZGV2bmV0L2h0bWw1L2FydGljbGVzL2Nzcy1zaGFkZXJzLmh0bWwuCisKKyAgICAgICAg
U2VlIGFsc28gV2ViS2l0IGJ1Z3MgIzkyNjg1LCAjOTQ3MjQgYW5kICM5NDcyNS4KKworICAgICAg
ICAqIEFwaS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFn
ZVByaXZhdGU6OmluaXQpOgorCiAyMDEyLTA4LTMxICBKYWNreSBKaWFuZyAgPHpoYWppYW5nQHJp
bS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIEFTU0VSVCBmYWlsdXJlIGluIFJlbmRlckJs
b2NrOjpjaGVja1Bvc2l0aW9uZWRPYmplY3RzTmVlZExheW91dApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCA4OTk5ZDJhY2MzYmVjMDM2MGM4YjBiOTJkMWU2OTk5MWE1YjlmNWEwLi5kY2MwZjFlYTgw
NjhmNDFkNTNjOWZjZTQzMzkwNjQ0MjIyYTQxOWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
MTA2Myw2ICsxMDYzLDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGNzcy9XZWJLaXRDU1NL
ZXlmcmFtZVJ1bGUuY3BwCiAgICAgY3NzL1dlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwCiAgICAg
Y3NzL1dlYktpdENTU01hdHJpeC5jcHAKKyAgICBjc3MvV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1
ZS5jcHAKICAgICBjc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAKICAgICBjc3MvV2ViS2l0Q1NT
U1ZHRG9jdW1lbnRWYWx1ZS5jcHAKICAgICBjc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3BwCkBA
IC0xODU3LDkgKzE4NTgsMTEgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3BwCisgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW1JbmZvLmNwcAorICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcApAQCAtMjExMiw2ICsyMTE1LDcgQEAgU0VU
KFdlYkNvcmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9zdHlsZS9TdHlsZUJveERhdGEuY3BwCiAg
ICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwCiAgICAgcmVuZGVyaW5nL3N0
eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuY3BwCisgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2Fj
aGVkU2hhZGVyLmNwcAogICAgIHJlbmRlcmluZy9zdHlsZS9TdHlsZURlcHJlY2F0ZWRGbGV4aWJs
ZUJveERhdGEuY3BwCiAgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmlsdGVyRGF0YS5jcHAKICAg
ICByZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJveERhdGEuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKaW5kZXggYTlkNjRkYWEzZThkNTllMjY2YTIxOWE4Mjg5
MjUzZGFmOWFiOTc1YS4uNGY5ZTc3NjcwMGEzZGM1MGFjNzQ2ZmVjNDAzN2U2OTE4MjJmODVkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQpAQCAtMjk1LDggKzI5NSwx
MCBAQCBJRiAoV1RGX1VTRV9BQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICAgICAgJHtXRUJD
T1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9FR0xJbWFnZUxheWVyQ29tcG9z
aXRpbmdUaHJlYWRDbGllbnQuY3BwCiAgICAgICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvR3JhcGhpY3NMYXllckJsYWNrQmVycnkuY3BwCiAgICAgICAgICR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJBbmltYXRpb24u
Y3BwCisgICAgICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
TGF5ZXJDb21waWxlZFByb2dyYW0uY3BwCiAgICAgICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5jcHAKICAgICAgICAg
JHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckZpbHRlclJl
bmRlcmVyLmNwcAorICAgICAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0xheWVyRmlsdGVyTWVzaC5jcHAKICAgICAgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmNwcAogICAgICAgICAke1dFQkNP
UkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXJTdXJmYWNl
LmNwcAogICAgICAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L0xheWVyVGlsZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NN
aXhGdW5jdGlvblZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWl4RnVuY3Rp
b25WYWx1ZS5oCmluZGV4IGFmOTc5NGExOTQzZGU0MjZiNGUzYWZkMjEyMGE4NjQ1NGQxMWYwOWIu
LjQzOTk2N2Q2NzlhYmIyZjE3ZTVjYTgyZmFmMjkxNzE3MmE3YjRiYmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU01peEZ1bmN0aW9uVmFsdWUuaApAQCAtMzYsNyArMzYsOSBA
QAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAg
ICAKKworY2xhc3MgTWVtb3J5T2JqZWN0SW5mbzsKKwogY2xhc3MgV2ViS2l0Q1NTTWl4RnVuY3Rp
b25WYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZUxpc3QgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWU+IGNyZWF0ZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcGlsZWRQ
cm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
TGF5ZXJDb21waWxlZFByb2dyYW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkNTRiMTQ2NjVkYzcwOGU2Nzdj
ZjU5NDBiZWU4Y2MyOTdiNTQ3YjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcGlsZWRQcm9ncmFtLmNwcApAQCAt
MCwwICsxLDE1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIElu
Y29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBS
ZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICog
ICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiTGF5ZXJDb21waWxlZFByb2dy
YW0uaCIKKworI2luY2x1ZGUgIkNTdHJpbmcuaCIKKworI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0
Zm9ybUxvZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0xheWVyQ29tcGlsZWRQcm9ncmFt
OjpMYXllckNvbXBpbGVkUHJvZ3JhbShjb25zdCBTdHJpbmcmIHZhbGlkYXRlZFZlcnRleFNoYWRl
ciwgY29uc3QgU3RyaW5nJiB2YWxpZGF0ZWRGcmFnbWVudFNoYWRlcikKKyAgICA6IG1fcHJvZ3Jh
bSgwKQorICAgICwgbV9wb3NpdGlvbkF0dHJpYkxvY2F0aW9uKC0xKQorICAgICwgbV90ZXhBdHRy
aWJMb2NhdGlvbigtMSkKKyAgICAsIG1fbWVzaEF0dHJpYkxvY2F0aW9uKC0xKQorICAgICwgbV90
cmlhbmdsZUF0dHJpYkxvY2F0aW9uKC0xKQorICAgICwgbV9tZXNoQm94TG9jYXRpb24oLTEpCisg
ICAgLCBtX3Byb2plY3Rpb25NYXRyaXhMb2NhdGlvbigtMSkKKyAgICAsIG1fdGlsZVNpemVMb2Nh
dGlvbigtMSkKKyAgICAsIG1fbWVzaFNpemVMb2NhdGlvbigtMSkKKyAgICAsIG1fc2FtcGxlckxv
Y2F0aW9uKC0xKQorICAgICwgbV9zYW1wbGVyU2l6ZUxvY2F0aW9uKC0xKQorICAgICwgbV9jb250
ZW50U2FtcGxlckxvY2F0aW9uKC0xKQorICAgICwgbV9pbnRlcm5hbFRleENvb3JkQXR0cmliTG9j
YXRpb24oLTEpCisgICAgLCBtX2lzSW5pdGlhbGl6ZWQoZmFsc2UpCit7CisgICAgR0x1aW50IHZl
cnRleFNoYWRlciA9IGNvbXBpbGVTaGFkZXIoR0xfVkVSVEVYX1NIQURFUiwgdmFsaWRhdGVkVmVy
dGV4U2hhZGVyKTsKKyAgICBpZiAoIXZlcnRleFNoYWRlcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgR0x1aW50IGZyYWdtZW50U2hhZGVyID0gY29tcGlsZVNoYWRlcihHTF9GUkFHTUVOVF9TSEFE
RVIsIHZhbGlkYXRlZEZyYWdtZW50U2hhZGVyKTsKKyAgICBpZiAoIWZyYWdtZW50U2hhZGVyKSB7
CisgICAgICAgIGdsRGVsZXRlU2hhZGVyKHZlcnRleFNoYWRlcik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBtX3Byb2dyYW0gPSBsaW5rUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXIsIGZyYWdt
ZW50U2hhZGVyKTsKKworICAgIGdsRGVsZXRlU2hhZGVyKHZlcnRleFNoYWRlcik7CisgICAgZ2xE
ZWxldGVTaGFkZXIoZnJhZ21lbnRTaGFkZXIpOworCisgICAgaWYgKCFtX3Byb2dyYW0pCisgICAg
ICAgIHJldHVybjsKKworICAgIGluaXRpYWxpemVQYXJhbWV0ZXJMb2NhdGlvbnMoKTsKKworICAg
IG1faXNJbml0aWFsaXplZCA9IHRydWU7Cit9CisKK0dMdWludCBMYXllckNvbXBpbGVkUHJvZ3Jh
bTo6Y29tcGlsZVNoYWRlcihHTGVudW0gc2hhZGVyVHlwZSwgY29uc3QgU3RyaW5nJiBzaGFkZXJT
dHJpbmcpCit7CisgICAgQVNTRVJUKCFzaGFkZXJTdHJpbmcuaXNOdWxsKCkpOworCisgICAgR0x1
aW50IHNoYWRlciA9IGdsQ3JlYXRlU2hhZGVyKHNoYWRlclR5cGUpOworICAgIENTdHJpbmcgc2hh
ZGVyQ1N0cmluZyA9IHNoYWRlclN0cmluZy5sYXRpbjEoKTsgLy8gQU5HTEVXZWJLaXRCcmlkZ2Ug
Y3VycmVudGx5IHVzZXMgU3RyaW5nOjpTdHJpbmcoY29uc3QgY2hhciopIHdoaWNoIGlzIHRoZSBs
YXRpbjEgY29uc3RydWN0b3IKKyAgICBjb25zdCBjaGFyKiBzaGFkZXJEYXRhID0gc2hhZGVyQ1N0
cmluZy5kYXRhKCk7CisKKyAgICBnbFNoYWRlclNvdXJjZShzaGFkZXIsIDEsICZzaGFkZXJEYXRh
LCAwKTsKKyAgICBnbENvbXBpbGVTaGFkZXIoc2hhZGVyKTsKKworICAgIGludCBjb21waWxlZCA9
IDA7CisgICAgZ2xHZXRTaGFkZXJpdihzaGFkZXIsIEdMX0NPTVBJTEVfU1RBVFVTLCAmY29tcGls
ZWQpOworICAgIGlmICghY29tcGlsZWQpIHsKKyAgICAgICAgY2hhciBpbmZvTG9nWzIwNDhdOwor
ICAgICAgICBHTHNpemVpIGxlbmd0aDsKKyAgICAgICAgZ2xHZXRTaGFkZXJJbmZvTG9nKHNoYWRl
ciwgMjA0OCwgJmxlbmd0aCwgaW5mb0xvZyk7CisgICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3Jt
Ojpsb2dBbHdheXMoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsV2FybiwgIkZhaWxlZCB0
byBjb21waWxlIHByb2dyYW06ICVzIiwgJmluZm9Mb2dbMF0pOworICAgICAgICBnbERlbGV0ZVNo
YWRlcihzaGFkZXIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICByZXR1cm4gc2hh
ZGVyOworfQorCitHTHVpbnQgTGF5ZXJDb21waWxlZFByb2dyYW06OmxpbmtQcm9ncmFtKEdMdWlu
dCB2ZXJ0ZXhTaGFkZXIsIEdMdWludCBmcmFnbWVudFNoYWRlcikKK3sKKyAgICBHTHVpbnQgcHJv
Z3JhbSA9IGdsQ3JlYXRlUHJvZ3JhbSgpOworICAgIGdsQXR0YWNoU2hhZGVyKHByb2dyYW0sIHZl
cnRleFNoYWRlcik7CisgICAgZ2xBdHRhY2hTaGFkZXIocHJvZ3JhbSwgZnJhZ21lbnRTaGFkZXIp
OworICAgIGdsTGlua1Byb2dyYW0ocHJvZ3JhbSk7CisKKyAgICBpbnQgbGlua2VkID0gMDsKKyAg
ICBnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9MSU5LX1NUQVRVUywgJmxpbmtlZCk7CisgICAg
aWYgKCFsaW5rZWQpIHsKKyAgICAgICAgLy8gRklYTUU6IEludmFsaWQgdmVydGV4L2ZyYWdtZW50
IHNoYWRlciBjb21iaW5hdGlvbi4gVGhyb3cgc29tZSBlcnJvcnMgaGVyZS4KKyAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0NDE2CisgICAgICAgIGds
RGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAg
cmV0dXJuIHByb2dyYW07Cit9CisKK3ZvaWQgTGF5ZXJDb21waWxlZFByb2dyYW06OmluaXRpYWxp
emVQYXJhbWV0ZXJMb2NhdGlvbnMoKQoreworICAgIG1fcG9zaXRpb25BdHRyaWJMb2NhdGlvbiA9
IGdsR2V0QXR0cmliTG9jYXRpb24obV9wcm9ncmFtLCAiYV9wb3NpdGlvbiIpOworICAgIG1fdGV4
QXR0cmliTG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1fcHJvZ3JhbSwgImFfdGV4Q29v
cmQiKTsKKyAgICBtX21lc2hBdHRyaWJMb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24obV9w
cm9ncmFtLCAiYV9tZXNoQ29vcmQiKTsKKyAgICBtX3RyaWFuZ2xlQXR0cmliTG9jYXRpb24gPSBn
bEdldEF0dHJpYkxvY2F0aW9uKG1fcHJvZ3JhbSwgImFfdHJpYW5nbGVDb29yZCIpOworICAgIG1f
bWVzaEJveExvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obV9wcm9ncmFtLCAidV9tZXNo
Qm94Iik7CisgICAgbV90aWxlU2l6ZUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obV9w
cm9ncmFtLCAidV90aWxlU2l6ZSIpOworICAgIG1fbWVzaFNpemVMb2NhdGlvbiA9IGdsR2V0VW5p
Zm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInVfbWVzaFNpemUiKTsKKyAgICBtX3Byb2plY3Rpb25N
YXRyaXhMb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInVfcHJvamVj
dGlvbk1hdHJpeCIpOworICAgIG1fc2FtcGxlclNpemVMb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxv
Y2F0aW9uKG1fcHJvZ3JhbSwgInVfdGV4dHVyZVNpemUiKTsKKyAgICBtX2NvbnRlbnRTYW1wbGVy
TG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sICJ1X2NvbnRlbnRUZXh0
dXJlIik7CisgICAgbV9pbnRlcm5hbFRleENvb3JkQXR0cmliTG9jYXRpb24gPSBnbEdldEF0dHJp
YkxvY2F0aW9uKG1fcHJvZ3JhbSwgImNzc19hX3RleENvb3JkIik7CisgICAgbV9zYW1wbGVyTG9j
YXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sICJjc3NfdV90ZXh0dXJlIik7
CisgICAgLy8gRklYTUU6IFJlbW92ZSB0ZXh0dXJlIGFjY2VzcyB2aWEgdV90ZXh0dXJlIGFuZCBj
aGFuZ2UgdGhlIHRlc3RzIHRvIHVzZSBibGVuZGluZyBhbmQgY29tcG9zaXRpbmcuCisgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzODcxCisgICAgaWYgKG1f
c2FtcGxlckxvY2F0aW9uID09IC0xKQorICAgICAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGdsR2V0
VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInVfdGV4dHVyZSIpOworfQorCitpbnQgTGF5ZXJD
b21waWxlZFByb2dyYW06OnVuaWZvcm1Mb2NhdGlvbkJ5TmFtZShjb25zdCBTdHJpbmcmIG5hbWUp
Cit7CisgICAgQVNTRVJUKG1faXNJbml0aWFsaXplZCk7CisgICAgcmV0dXJuIGdsR2V0VW5pZm9y
bUxvY2F0aW9uKG1fcHJvZ3JhbSwgbmFtZS5sYXRpbjEoKS5kYXRhKCkpOworfQorCitMYXllckNv
bXBpbGVkUHJvZ3JhbTo6fkxheWVyQ29tcGlsZWRQcm9ncmFtKCkKK3sKKyAgICBpZiAobV9wcm9n
cmFtKQorICAgICAgICBnbERlbGV0ZVByb2dyYW0obV9wcm9ncmFtKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYmxhY2tiZXJyeS9MYXllckNvbXBpbGVkUHJvZ3JhbS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBpbGVkUHJvZ3JhbS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmE3MDYwZDE3N2JhZGQ0NTZkNjNmM2I2MTIxZGUyMjMzOTRhNTkxMTQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVy
Q29tcGlsZWRQcm9ncmFtLmgKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAg
ICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMK
KyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisg
KiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBMYXllckNvbXBpbGVkUHJvZ3JhbV9o
CisjZGVmaW5lIExheWVyQ29tcGlsZWRQcm9ncmFtX2gKKworI2luY2x1ZGUgPEdMRVMyL2dsMi5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTGF5ZXJDb21waWxlZFByb2dy
YW0gOiBwdWJsaWMgUmVmQ291bnRlZDxMYXllckNvbXBpbGVkUHJvZ3JhbT4geworcHVibGljOgor
ICAgIC8vIFRoZSBzaGFkZXIgc291cmNlIHNob3VsZCBiZSB2YWxpZGF0ZWQgdXNpbmcgQU5HTEUg
dW5sZXNzIGl0IGNvbWVzIGZyb20gYSB0cnVzdGVkIHNvdXJjZS4KKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxMYXllckNvbXBpbGVkUHJvZ3JhbT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdmFsaWRhdGVk
VmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIHZhbGlkYXRlZEZyYWdtZW50U2hhZGVyKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBMYXllckNvbXBpbGVkUHJvZ3JhbSh2YWxp
ZGF0ZWRWZXJ0ZXhTaGFkZXIsIHZhbGlkYXRlZEZyYWdtZW50U2hhZGVyKSk7CisgICAgfQorCisg
ICAgfkxheWVyQ29tcGlsZWRQcm9ncmFtKCk7CisKKyAgICAvLyBGSVhNRTogVGhlc2UgYXR0cmli
cyBhcmUgY3VzdG9tIGZpbHRlci1zcGVjaWZpYywgc2hvdWxkIG1ha2UgdGhpcyBjbGFzcyBtb3Jl
IGdlbmVyaWMgdG8gcmVhbGx5IHF1YWxpZnkgZm9yIHRoZSBuYW1lICJQbGF0Zm9ybUNvbXBpbGVk
UHJvZ3JhbSIKKyAgICBpbnQgcG9zaXRpb25BdHRyaWJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fcG9zaXRpb25BdHRyaWJMb2NhdGlvbjsgfQorICAgIGludCB0ZXhBdHRyaWJMb2NhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fdGV4QXR0cmliTG9jYXRpb247IH0KKyAgICBpbnQgbWVzaEF0dHJp
YkxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tZXNoQXR0cmliTG9jYXRpb247IH0KKyAgICBp
bnQgdHJpYW5nbGVBdHRyaWJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHJpYW5nbGVBdHRy
aWJMb2NhdGlvbjsgfQorICAgIGludCBtZXNoQm94TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X21lc2hCb3hMb2NhdGlvbjsgfQorICAgIGludCBwcm9qZWN0aW9uTWF0cml4TG9jYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX3Byb2plY3Rpb25NYXRyaXhMb2NhdGlvbjsgfQorICAgIGludCB0aWxl
U2l6ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90aWxlU2l6ZUxvY2F0aW9uOyB9CisgICAg
aW50IG1lc2hTaXplTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21lc2hTaXplTG9jYXRpb247
IH0KKyAgICBpbnQgc2FtcGxlckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVyTG9j
YXRpb247IH0KKyAgICBpbnQgY29udGVudFNhbXBsZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGVudFNhbXBsZXJMb2NhdGlvbjsgfQorICAgIGludCBzYW1wbGVyU2l6ZUxvY2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVyU2l6ZUxvY2F0aW9uOyB9CisgICAgaW50IGludGVy
bmFsVGV4Q29vcmRBdHRyaWJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxUZXhD
b29yZEF0dHJpYkxvY2F0aW9uOyB9CisKKyAgICBpbnQgdW5pZm9ybUxvY2F0aW9uQnlOYW1lKGNv
bnN0IFN0cmluZyYpOworCisgICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4g
bV9pc0luaXRpYWxpemVkOyB9CisKKyAgICBHTHVpbnQgcHJvZ3JhbSgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJvZ3JhbTsgfQorCitwcml2YXRlOgorICAgIExheWVyQ29tcGlsZWRQcm9ncmFtKGNvbnN0
IFN0cmluZyYgdmFsaWRhdGVkVmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIHZhbGlkYXRlZEZy
YWdtZW50U2hhZGVyKTsKKworICAgIEdMdWludCBjb21waWxlU2hhZGVyKEdMZW51bSBzaGFkZXJU
eXBlLCBjb25zdCBTdHJpbmcmIHNoYWRlclN0cmluZyk7CisgICAgR0x1aW50IGxpbmtQcm9ncmFt
KEdMdWludCB2ZXJ0ZXhTaGFkZXIsIEdMdWludCBmcmFnbWVudFNoYWRlcik7CisgICAgdm9pZCBp
bml0aWFsaXplUGFyYW1ldGVyTG9jYXRpb25zKCk7CisKKyAgICBHTHVpbnQgbV9wcm9ncmFtOwor
CisgICAgaW50IG1fcG9zaXRpb25BdHRyaWJMb2NhdGlvbjsKKyAgICBpbnQgbV90ZXhBdHRyaWJM
b2NhdGlvbjsKKyAgICBpbnQgbV9tZXNoQXR0cmliTG9jYXRpb247CisgICAgaW50IG1fdHJpYW5n
bGVBdHRyaWJMb2NhdGlvbjsKKyAgICBpbnQgbV9tZXNoQm94TG9jYXRpb247CisgICAgaW50IG1f
cHJvamVjdGlvbk1hdHJpeExvY2F0aW9uOworICAgIGludCBtX3RpbGVTaXplTG9jYXRpb247Cisg
ICAgaW50IG1fbWVzaFNpemVMb2NhdGlvbjsKKyAgICBpbnQgbV9zYW1wbGVyTG9jYXRpb247Cisg
ICAgaW50IG1fc2FtcGxlclNpemVMb2NhdGlvbjsKKyAgICBpbnQgbV9jb250ZW50U2FtcGxlckxv
Y2F0aW9uOworICAgIC8vIEZJWE1FOiBHZXQgcmlkIG9mIHRoZSBpbnRlcm5hbCB0ZXggY29vcmQg
YXR0cmlidXRlICJjc3NfYV90ZXhDb29yZCIuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk0MzU4CisgICAgaW50IG1faW50ZXJuYWxUZXhDb29yZEF0dHJp
YkxvY2F0aW9uOworCisgICAgYm9vbCBtX2lzSW5pdGlhbGl6ZWQ7Cit9OworCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9MYXllckZpbHRlck1lc2guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9MYXllckZpbHRlck1lc2guY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjYjVlNzQ5MGRlY2Rk
YzJiMWM1Mjk3MmVmZTEyZGM1Y2IwM2I0Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRmlsdGVyTWVzaC5jcHAKQEAg
LTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBZG9iZSBTeXN0ZW1zIElu
Y29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBS
ZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICog
ICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorI2lu
Y2x1ZGUgIkxheWVyRmlsdGVyTWVzaC5oIgorCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyTWVzaEdl
bmVyYXRvci5oIgorI2luY2x1ZGUgIkxheWVyRmlsdGVyUmVuZGVyZXIuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitMYXllckZpbHRlck1lc2g6OkxheWVyRmlsdGVyTWVzaChMYXllckZpbHRl
clJlbmRlcmVyKiBmaWx0ZXJSZW5kZXJlciwgdW5zaWduZWQgY29sdW1ucywgdW5zaWduZWQgcm93
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UmVjdCYgbWVz
aEJveCwgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSBtZXNoVHlwZSkKKyAgICA6IG1f
ZmlsdGVyUmVuZGVyZXIoZmlsdGVyUmVuZGVyZXIpCisgICAgLCBtX3ZlcnRpY2VzQnVmZmVyT2Jq
ZWN0KDApCisgICAgLCBtX2VsZW1lbnRzQnVmZmVyT2JqZWN0KDApCisgICAgLCBtX21lc2hCb3go
bWVzaEJveCkKKyAgICAsIG1fbWVzaFR5cGUobWVzaFR5cGUpCisgICAgLCBtX2NvbHVtbkNvdW50
KGNvbHVtbnMpCisgICAgLCBtX3Jvd0NvdW50KHJvd3MpCit7CisgICAgQ3VzdG9tRmlsdGVyTWVz
aEdlbmVyYXRvciBnZW5lcmF0b3IoY29sdW1ucywgcm93cywgbWVzaEJveCwgbWVzaFR5cGUpOwor
ICAgIG1faW5kaWNlc0NvdW50ID0gZ2VuZXJhdG9yLmluZGljZXNDb3VudCgpOworICAgIG1fYnl0
ZXNQZXJWZXJ0ZXggPSBnZW5lcmF0b3IuZmxvYXRzUGVyVmVydGV4KCkgKiBzaXplb2YoZmxvYXQp
OworCisgICAgZ2xHZW5CdWZmZXJzKDEsICZtX3ZlcnRpY2VzQnVmZmVyT2JqZWN0KTsKKyAgICBn
bEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtX3ZlcnRpY2VzQnVmZmVyT2JqZWN0KTsKKyAg
ICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBnZW5lcmF0b3IudmVydGljZXMoKS5zaXpl
KCkgKiBzaXplb2YoZmxvYXQpLCBnZW5lcmF0b3IudmVydGljZXMoKS5kYXRhKCksIEdMX1NUQVRJ
Q19EUkFXKTsKKworICAgIGdsR2VuQnVmZmVycygxLCAmbV9lbGVtZW50c0J1ZmZlck9iamVjdCk7
CisgICAgZ2xCaW5kQnVmZmVyKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBtX2VsZW1lbnRzQnVm
ZmVyT2JqZWN0KTsKKyAgICBnbEJ1ZmZlckRhdGEoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGdl
bmVyYXRvci5pbmRpY2VzKCkuc2l6ZSgpICogc2l6ZW9mKHVpbnQxNl90KSwgZ2VuZXJhdG9yLmlu
ZGljZXMoKS5kYXRhKCksIEdMX1NUQVRJQ19EUkFXKTsKK30KKworTGF5ZXJGaWx0ZXJNZXNoOjp+
TGF5ZXJGaWx0ZXJNZXNoKCkKK3sKKyAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJm1fdmVydGljZXNC
dWZmZXJPYmplY3QpOworICAgIGdsRGVsZXRlQnVmZmVycygxLCAmbV9lbGVtZW50c0J1ZmZlck9i
amVjdCk7CisKKyAgICBtX2ZpbHRlclJlbmRlcmVyLT5maWx0ZXJNZXNoRGVzdHJveWVkKHRoaXMp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NI
QURFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0xheWVyRmlsdGVyTWVzaC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYmxhY2tiZXJyeS9MYXllckZpbHRlck1lc2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYTZhZmM1YWE0NmY0
YjFmOGIyOTRkYjIyOWNiNzA5YzhhMjMyNmEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckZpbHRlck1lc2guaApAQCAt
MCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFkb2JlIFN5c3RlbXMgSW5j
b3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIFJl
c2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAg
ICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIExheWVyRmlsdGVyTWVzaF9oCisjZGVmaW5lIExheWVyRmlsdGVyTWVzaF9o
CisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJPcGVy
YXRpb24uaCIKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlIDxHTEVTMi9nbDIuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIExheWVyRmlsdGVyUmVuZGVyZXI7CisKK2NsYXNzIExheWVyRmlsdGVyTWVzaCA6IHB1Ymxp
YyBSZWZDb3VudGVkPExheWVyRmlsdGVyTWVzaD4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPExheWVyRmlsdGVyTWVzaD4gY3JlYXRlKExheWVyRmlsdGVyUmVuZGVyZXIqIGZpbHRl
clJlbmRlcmVyLCB1bnNpZ25lZCBjb2x1bW5zLCB1bnNpZ25lZCByb3dzLCBjb25zdCBGbG9hdFJl
Y3QmIG1lc2hCb3gsIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaFR5cGUgbWVzaFR5cGUpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IExheWVyRmlsdGVyTWVzaChmaWx0ZXJS
ZW5kZXJlciwgY29sdW1ucywgcm93cywgbWVzaEJveCwgbWVzaFR5cGUpKTsKKyAgICB9CisgICAg
fkxheWVyRmlsdGVyTWVzaCgpOworCisgICAgR0x1aW50IHZlcnRpY2VzQnVmZmVyT2JqZWN0KCkg
Y29uc3QgeyByZXR1cm4gbV92ZXJ0aWNlc0J1ZmZlck9iamVjdDsgfQorICAgIHVuc2lnbmVkIGJ5
dGVzUGVyVmVydGV4KCkgY29uc3QgeyByZXR1cm4gbV9ieXRlc1BlclZlcnRleDsgfQorCisgICAg
R0x1aW50IGVsZW1lbnRzQnVmZmVyT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50c0J1
ZmZlck9iamVjdDsgfQorICAgIHVuc2lnbmVkIGluZGljZXNDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1faW5kaWNlc0NvdW50OyB9CisKKyAgICBjb25zdCBGbG9hdFJlY3QmIG1lc2hCb3goKSBjb25z
dCB7IHJldHVybiBtX21lc2hCb3g7IH0KKyAgICBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hU
eXBlIG1lc2hUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9tZXNoVHlwZTsgfQorCisgICAgdW5zaWdu
ZWQgY29sdW1uQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2NvbHVtbkNvdW50OyB9CisgICAgdW5z
aWduZWQgcm93Q291bnQoKSBjb25zdCB7IHJldHVybiBtX3Jvd0NvdW50OyB9CisKK3ByaXZhdGU6
CisgICAgTGF5ZXJGaWx0ZXJNZXNoKExheWVyRmlsdGVyUmVuZGVyZXIqLCB1bnNpZ25lZCBjb2xz
LCB1bnNpZ25lZCByb3dzLCBjb25zdCBGbG9hdFJlY3QmIG1lc2hCb3gsIEN1c3RvbUZpbHRlck9w
ZXJhdGlvbjo6TWVzaFR5cGUpOworCisgICAgTGF5ZXJGaWx0ZXJSZW5kZXJlciogbV9maWx0ZXJS
ZW5kZXJlcjsKKworICAgIEdMdWludCBtX3ZlcnRpY2VzQnVmZmVyT2JqZWN0OworICAgIHVuc2ln
bmVkIG1fYnl0ZXNQZXJWZXJ0ZXg7CisKKyAgICBHTHVpbnQgbV9lbGVtZW50c0J1ZmZlck9iamVj
dDsKKyAgICB1bnNpZ25lZCBtX2luZGljZXNDb3VudDsKKworICAgIEZsb2F0UmVjdCBtX21lc2hC
b3g7CisgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSBtX21lc2hUeXBlOworCisg
ICAgdW5zaWduZWQgbV9jb2x1bW5Db3VudDsKKyAgICB1bnNpZ25lZCBtX3Jvd0NvdW50OworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJT
KQorCisjZW5kaWYgLy8gTGF5ZXJGaWx0ZXJNZXNoX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJGaWx0ZXJSZW5kZXJlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRmlsdGVy
UmVuZGVyZXIuY3BwCmluZGV4IGY0MGFiNzM1MTViZTI3N2M4NjgyMjU4ZjY0Yjk0MWZmNWZjMTZk
ZDIuLjY3MGJjNTcwYzQyMGIyYjVkN2Q4NTg1ZmFjZjY0ZmRlNWIzNjcxNzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJGaWx0ZXJS
ZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9MYXllckZpbHRlclJlbmRlcmVyLmNwcApAQCAtMjIsNiArMjIsMTAgQEAKIAogI2luY2x1
ZGUgIkxheWVyRmlsdGVyUmVuZGVyZXIuaCIKIAorI2luY2x1ZGUgIkN1c3RvbUZpbHRlck51bWJl
clBhcmFtZXRlci5oIgorI2luY2x1ZGUgIkN1c3RvbUZpbHRlclBhcmFtZXRlci5oIgorI2luY2x1
ZGUgIkN1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlci5oIgorI2luY2x1ZGUgIkN1c3RvbUZp
bHRlclZhbGlkYXRlZFByb2dyYW0uaCIKICNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb24uaCIKICNp
bmNsdWRlICJMYXllckNvbXBvc2l0aW5nVGhyZWFkLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJl
ci5oIgpAQCAtMjQyLDYgKzI0Niw5IEBAIFBhc3NSZWZQdHI8TGF5ZXJGaWx0ZXJSZW5kZXJlckFj
dGlvbj4gTGF5ZXJGaWx0ZXJSZW5kZXJlckFjdGlvbjo6Y3JlYXRlKGludCBwcm9nCiAKIExheWVy
RmlsdGVyUmVuZGVyZXJBY3Rpb246OkxheWVyRmlsdGVyUmVuZGVyZXJBY3Rpb24oaW50IGNfcHJv
Z3JhbUlkKQogICAgIDogbV9wcm9ncmFtSWQoY19wcm9ncmFtSWQpCisjaWYgRU5BQkxFKENTU19T
SEFERVJTKQorICAgICwgbV9jdXN0b21JZCgtMSkKKyNlbmRpZgogICAgICwgbV9wdXNoU25hcHNo
b3QoZmFsc2UpCiAgICAgLCBtX3BvcFNuYXBzaG90KGZhbHNlKQogICAgICwgbV9kcmF3aW5nTW9k
ZShEcmF3VHJpYW5nbGVGYW5BcnJheXMpCkBAIC0yNTAsMTIgKzI1NywxOSBAQCBMYXllckZpbHRl
clJlbmRlcmVyQWN0aW9uOjpMYXllckZpbHRlclJlbmRlcmVyQWN0aW9uKGludCBjX3Byb2dyYW1J
ZCkKIAogdm9pZCBMYXllckZpbHRlclJlbmRlcmVyQWN0aW9uOjp1c2VBY3Rpb25PbihMYXllckZp
bHRlclJlbmRlcmVyKiByZW5kZXJlcikKIHsKLSAgICBBU1NFUlQobV9wcm9ncmFtSWQgIT0gLTEp
OwotICAgIGlmIChtX3Byb2dyYW1JZCA9PSAtMSkgeworICAgIEFTU0VSVChtX3Byb2dyYW1JZCAh
PSAtMSB8fCBtX2N1c3RvbUlkICE9IC0xKTsKKworICAgIGlmIChtX2N1c3RvbUlkICE9IC0xKQor
ICAgICAgICBnbFVzZVByb2dyYW0obV9jdXN0b21JZCk7CisKKyAgICBpZiAobV9jdXN0b21JZCA9
PSAtMSkKKyAgICAgICAgZ2xVc2VQcm9ncmFtKHJlbmRlcmVyLT5tX2Nzc0ZpbHRlclByb2dyYW1P
YmplY3RbbV9wcm9ncmFtSWRdKTsKKworICAgIGlmIChtX3Byb2dyYW1JZCA9PSAtMSAmJiBtX2N1
c3RvbUlkID09IC0xKSB7CiAgICAgICAgIGdsVXNlUHJvZ3JhbShyZW5kZXJlci0+bV9jc3NGaWx0
ZXJQcm9ncmFtT2JqZWN0W0xheWVyRGF0YTo6Q1NTRmlsdGVyU2hhZGVyUGFzc3Rocm91Z2hdKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBnbFVzZVByb2dyYW0ocmVuZGVyZXItPm1fY3Nz
RmlsdGVyUHJvZ3JhbU9iamVjdFttX3Byb2dyYW1JZF0pOworCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fcGFyYW1ldGVycy5zaXplKCk7ICsraSkKICAgICAgICAgbV9wYXJhbWV0ZXJz
W2ldLT5hcHBseSgpOwogfQpAQCAtNDYwLDYgKzQ3NCw5IEBAIGJvb2wgTGF5ZXJGaWx0ZXJSZW5k
ZXJlcjo6aW5pdGlhbGl6ZVNoYXJlZEdMT2JqZWN0cygpCiAgICAgICAgIH0KICAgICApOwogCisj
aWYgRU5BQkxFKENTU19TSEFERVJTKQorICAgIHNoYWRlclN0cnNbTGF5ZXJEYXRhOjpDU1NGaWx0
ZXJTaGFkZXJDdXN0b21dID0KKyNlbmRpZgogICAgIHNoYWRlclN0cnNbTGF5ZXJEYXRhOjpDU1NG
aWx0ZXJTaGFkZXJQYXNzdGhyb3VnaF0gPSBTVEFOREFSRF9GSUxURVIoCiAgICAgICAgIGxvd3Ag
dmVjNCBzaGFkZShsb3dwIHZlYzQgY29sb3IpCiAgICAgICAgIHsKQEAgLTUzOSw2ICs1NTYsMzMg
QEAgdm9pZCBMYXllckZpbHRlclJlbmRlcmVyOjpwb3BTbmFwc2hvdCgpCiAjZW5kaWYKIH0KIAor
I2lmIEVOQUJMRShDU1NfU0hBREVSUykKK1Bhc3NSZWZQdHI8TGF5ZXJDb21waWxlZFByb2dyYW0+
IExheWVyRmlsdGVyUmVuZGVyZXI6OmdldENvbXBpbGVkUHJvZ3JhbShjb25zdCBDdXN0b21GaWx0
ZXJQcm9ncmFtSW5mbyYgcHJvZ3JhbUluZm8pCit7CisgICAgUmVmUHRyPEN1c3RvbUZpbHRlclZh
bGlkYXRlZFByb2dyYW0+IHZhbGlkYXRlZFByb2dyYW0gPSBtX3Byb2dyYW1WYWxpZGF0b3IuZ2V0
VmFsaWRhdGVkUHJvZ3JhbShwcm9ncmFtSW5mbyk7CisgICAgcmV0dXJuIHZhbGlkYXRlZFByb2dy
YW0tPnBsYXRmb3JtQ29tcGlsZWRQcm9ncmFtKCk7Cit9CisKK1Bhc3NSZWZQdHI8TGF5ZXJGaWx0
ZXJNZXNoPiBMYXllckZpbHRlclJlbmRlcmVyOjpnZXRGaWx0ZXJNZXNoKHVuc2lnbmVkIGNvbHMs
IHVuc2lnbmVkIHJvd3MsIGNvbnN0IEZsb2F0UmVjdCYgbWVzaEJveCwgQ3VzdG9tRmlsdGVyT3Bl
cmF0aW9uOjpNZXNoVHlwZSBtZXNoVHlwZSkKK3sKKyAgICBmb3IgKEhhc2hTZXQ8TGF5ZXJGaWx0
ZXJNZXNoKj46Oml0ZXJhdG9yIGl0ID0gbV9tZXNoU2V0LmJlZ2luKCk7IGl0ICE9IG1fbWVzaFNl
dC5lbmQoKTsgKytpdCkgeworICAgICAgICBpZiAoKCppdCktPmNvbHVtbkNvdW50KCkgPT0gY29s
cyAmJiAoKml0KS0+cm93Q291bnQoKSA9PSByb3dzICYmICgqaXQpLT5tZXNoQm94KCkgPT0gbWVz
aEJveCkKKyAgICAgICAgICAgIHJldHVybiAqaXQ7CisgICAgfQorCisgICAgUmVmUHRyPExheWVy
RmlsdGVyTWVzaD4gbWVzaCA9IExheWVyRmlsdGVyTWVzaDo6Y3JlYXRlKHRoaXMsIGNvbHMsIHJv
d3MsIG1lc2hCb3gsIG1lc2hUeXBlKTsKKyAgICBtX21lc2hTZXQuYWRkKG1lc2guZ2V0KCkpOwor
CisgICAgcmV0dXJuIG1lc2gucmVsZWFzZSgpOworfQorCit2b2lkIExheWVyRmlsdGVyUmVuZGVy
ZXI6OmZpbHRlck1lc2hEZXN0cm95ZWQoTGF5ZXJGaWx0ZXJNZXNoKiBtZXNoKQoreworICAgIG1f
bWVzaFNldC5yZW1vdmUobWVzaCk7Cit9CisKKyNlbmRpZgorCiBWZWN0b3I8UmVmUHRyPExheWVy
RmlsdGVyUmVuZGVyZXJBY3Rpb24+ID4gTGF5ZXJGaWx0ZXJSZW5kZXJlcjo6YWN0aW9uc0Zvck9w
ZXJhdGlvbnMoTGF5ZXJSZW5kZXJlclN1cmZhY2UqIHN1cmZhY2UsIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8RmlsdGVyT3BlcmF0aW9uPiA+JiBvcHMpCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckZp
bHRlclJlbmRlcmVyQWN0aW9uPiA+IHJldDsKQEAgLTU2NSw4ICs2MDksNyBAQCBWZWN0b3I8UmVm
UHRyPExheWVyRmlsdGVyUmVuZGVyZXJBY3Rpb24+ID4gTGF5ZXJGaWx0ZXJSZW5kZXJlcjo6YWN0
aW9uc0Zvck9wZXJhdAogICAgICAgICAgICAgcmV0Lmxhc3QoKS0+YXBwZW5kUGFyYW1ldGVyKFVu
aWZvcm0xZjo6Y3JlYXRlKG1fYW1vdW50TG9jYXRpb25bcHJvZ3JhbUlkXQogICAgICAgICAgICAg
ICAgICwgc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJh
dGlvbiY+KG9wZXJhdGlvbikuYW1vdW50KCkpKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QkxVUjoKLSAgICAgICAgICAgIHsKKyAgICAgICAgY2Fz
ZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6IHsKICAgICAgICAgICAgIC8vIEJsdXIgaXMgYSB0d28t
c3RlcCBwcm9jZXNzOgogICAgICAgICAgICAgLy8gICAgIDEuIGJsdXIgWAogICAgICAgICAgICAg
Ly8gICAgIDIuIGJsdXIgWQpAQCAtNTg1LDEwICs2MjgsOSBAQCBWZWN0b3I8UmVmUHRyPExheWVy
RmlsdGVyUmVuZGVyZXJBY3Rpb24+ID4gTGF5ZXJGaWx0ZXJSZW5kZXJlcjo6YWN0aW9uc0Zvck9w
ZXJhdAogICAgICAgICAgICAgcmV0Lmxhc3QoKS0+YXBwZW5kUGFyYW1ldGVyKFVuaWZvcm0xZjo6
Y3JlYXRlKG1fYmx1ckFtb3VudExvY2F0aW9uWzFdCiAgICAgICAgICAgICAgICAgLCAxLjBmIC8g
ZmxvYXQoc3VyZmFjZS0+c2l6ZSgpLndpZHRoKCkpKSk7CiAKLSAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1c6
Ci0gICAgICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246
OkRST1BfU0hBRE9XOiB7CiAgICAgICAgICAgICAvLyBTaGFkb3cgaXMgYSBmb3VyLXN0ZXAgcHJv
Y2VzczoKICAgICAgICAgICAgIC8vICAgICAxLiBjYXB0dXJlIHNuYXBzaG90CiAgICAgICAgICAg
ICAvLyAgICAgICAgdHVybiBpbnRvIGEgc29saWQgb2Zmc2V0IG1hc2sKQEAgLTYxOSwxMSArNjYx
LDEyMyBAQCBWZWN0b3I8UmVmUHRyPExheWVyRmlsdGVyUmVuZGVyZXJBY3Rpb24+ID4gTGF5ZXJG
aWx0ZXJSZW5kZXJlcjo6YWN0aW9uc0Zvck9wZXJhdAogICAgICAgICAgICAgcmV0Lmxhc3QoKS0+
YXBwZW5kUGFyYW1ldGVyKFVuaWZvcm0xZjo6Y3JlYXRlKG1fYmx1ckFtb3VudExvY2F0aW9uWzFd
CiAgICAgICAgICAgICAgICAgLCAxLjBmIC8gZmxvYXQoc3VyZmFjZS0+c2l6ZSgpLndpZHRoKCkp
KSk7CiAKLSAgICAgICAgICAgIC8vIFJlcGFpbnQgb3JpZ2luYWwgaW1hZ2UKKyAgICAgICAgICAg
IC8vIFJlcGFpbnQgb3JpZ2luYWwgaW1hZ2UuCiAgICAgICAgICAgICByZXQuYXBwZW5kKExheWVy
RmlsdGVyUmVuZGVyZXJBY3Rpb246OmNyZWF0ZShMYXllckRhdGE6OkNTU0ZpbHRlclNoYWRlclBh
c3N0aHJvdWdoKSk7CiAgICAgICAgICAgICByZXQubGFzdCgpLT5zZXRQb3BTbmFwc2hvdCgpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisg
ICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDVVNUT006IHsKKyAgICAgICAgICAgIC8vIFNl
ZSBGRUN1c3RvbUZpbHRlcjo6YmluZFByb2dyYW1BbmRCdWZmZXJzLgorCisgICAgICAgICAgICBj
b25zdCBDdXN0b21GaWx0ZXJPcGVyYXRpb24mIGNmbyA9IHN0YXRpY19jYXN0PGNvbnN0IEN1c3Rv
bUZpbHRlck9wZXJhdGlvbiY+KG9wZXJhdGlvbik7CisKKyAgICAgICAgICAgIFJlZlB0cjxMYXll
ckNvbXBpbGVkUHJvZ3JhbT4gc2hhZGVyID0gZ2V0Q29tcGlsZWRQcm9ncmFtKGNmby5wcm9ncmFt
KCktPnByb2dyYW1JbmZvKCkpOworICAgICAgICAgICAgUmVmUHRyPExheWVyRmlsdGVyTWVzaD4g
bWVzaCA9IGdldEZpbHRlck1lc2goY2ZvLm1lc2hDb2x1bW5zKCksIGNmby5tZXNoUm93cygpLCBG
bG9hdFJlY3QoMCwgMCwgMSwgMSksIGNmby5tZXNoVHlwZSgpKTsKKworICAgICAgICAgICAgaWYg
KHNoYWRlci0+c2FtcGxlckxvY2F0aW9uKCkgIT0gLTEpCisgICAgICAgICAgICAgICAgcmV0Lmxh
c3QoKS0+YXBwZW5kUGFyYW1ldGVyKFVuaWZvcm0xaTo6Y3JlYXRlKHNoYWRlci0+c2FtcGxlckxv
Y2F0aW9uKCksIDApKTsKKworICAgICAgICAgICAgaWYgKHNoYWRlci0+cHJvamVjdGlvbk1hdHJp
eExvY2F0aW9uKCkgIT0gLTEpIHsKKyAgICAgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBwcm9qZWN0aW9uTWF0cml4ID0gTGF5ZXJSZW5kZXJlcjo6b3J0aG9NYXRyaXgoLTAuNSwgMC41
LCAtMC41LCAwLjUsIC0xMDAwMCwgMTAwMDApOworICAgICAgICAgICAgICAgIGZsb2F0IGdsUHJv
amVjdGlvbk1hdHJpeFsxNl07CisgICAgICAgICAgICAgICAgcHJvamVjdGlvbk1hdHJpeC50b0Nv
bHVtbk1ham9yRmxvYXRBcnJheShnbFByb2plY3Rpb25NYXRyaXgpOworCisgICAgICAgICAgICAg
ICAgLy8gVGhpcyB3aWxsIG1ha2UgYSBkZWVwIGNvcHkgb2YgZ2xQcm9qZWN0aW9uTWF0cml4Lgor
ICAgICAgICAgICAgICAgIHJldC5sYXN0KCktPmFwcGVuZFBhcmFtZXRlcihNYXRyaXg0ZnY6OmNy
ZWF0ZShzaGFkZXItPnByb2plY3Rpb25NYXRyaXhMb2NhdGlvbigpLCAxLCBHTF9GQUxTRSwgJmds
UHJvamVjdGlvbk1hdHJpeFswXSkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXQu
bGFzdCgpLT5hcHBlbmRQYXJhbWV0ZXIoQnVmZmVyOjpjcmVhdGUoR0xfQVJSQVlfQlVGRkVSLCBt
ZXNoLT52ZXJ0aWNlc0J1ZmZlck9iamVjdCgpKSk7CisgICAgICAgICAgICByZXQubGFzdCgpLT5h
cHBlbmRQYXJhbWV0ZXIoQnVmZmVyOjpjcmVhdGUoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG1l
c2gtPmVsZW1lbnRzQnVmZmVyT2JqZWN0KCkpKTsKKyAgICAgICAgICAgIHJldC5sYXN0KCktPnNl
dERyYXdpbmdNb2RlKExheWVyRmlsdGVyUmVuZGVyZXJBY3Rpb246OkRyYXdUcmlhbmdsZUVsZW1l
bnRzVVNob3J0MCk7CisgICAgICAgICAgICByZXQubGFzdCgpLT5zZXREcmF3aW5nTW9kZVBhcmFt
ZXRlcihtZXNoLT5pbmRpY2VzQ291bnQoKSk7CisKKyAgICAgICAgICAgIGludCBvZmZzZXQgPSAw
OworCisgICAgICAgICAgICBpZiAoc2hhZGVyLT5wb3NpdGlvbkF0dHJpYkxvY2F0aW9uKCkgIT0g
LTEpIHsKKyAgICAgICAgICAgICAgICByZXQubGFzdCgpLT5hcHBlbmRQYXJhbWV0ZXIoVmVydGV4
QXR0cmliZjo6Y3JlYXRlKHNoYWRlci0+cG9zaXRpb25BdHRyaWJMb2NhdGlvbigpLCA0LCBtZXNo
LT5ieXRlc1BlclZlcnRleCgpLCBvZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBvZmZzZXQgKz0g
NCAqIHNpemVvZihmbG9hdCk7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChzaGFk
ZXItPmludGVybmFsVGV4Q29vcmRBdHRyaWJMb2NhdGlvbigpICE9IC0xKSB7CisgICAgICAgICAg
ICAgICAgcmV0Lmxhc3QoKS0+YXBwZW5kUGFyYW1ldGVyKFZlcnRleEF0dHJpYmY6OmNyZWF0ZShz
aGFkZXItPmludGVybmFsVGV4Q29vcmRBdHRyaWJMb2NhdGlvbigpLCAyLCBtZXNoLT5ieXRlc1Bl
clZlcnRleCgpLCBvZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMiAqIHNpemVv
ZihmbG9hdCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChzaGFkZXItPnRleEF0
dHJpYkxvY2F0aW9uKCkgIT0gLTEpIHsKKyAgICAgICAgICAgICAgICByZXQubGFzdCgpLT5hcHBl
bmRQYXJhbWV0ZXIoVmVydGV4QXR0cmliZjo6Y3JlYXRlKHNoYWRlci0+dGV4QXR0cmliTG9jYXRp
b24oKSwgMiwgbWVzaC0+Ynl0ZXNQZXJWZXJ0ZXgoKSwgb2Zmc2V0KSk7CisgICAgICAgICAgICAg
ICAgb2Zmc2V0ICs9IDIgKiBzaXplb2YoZmxvYXQpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBpZiAoc2hhZGVyLT5tZXNoQXR0cmliTG9jYXRpb24oKSAhPSAtMSkgeworICAgICAgICAg
ICAgICAgIHJldC5sYXN0KCktPmFwcGVuZFBhcmFtZXRlcihWZXJ0ZXhBdHRyaWJmOjpjcmVhdGUo
c2hhZGVyLT5tZXNoQXR0cmliTG9jYXRpb24oKSwgMiwgbWVzaC0+Ynl0ZXNQZXJWZXJ0ZXgoKSwg
b2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDIgKiBzaXplb2YoZmxvYXQpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY2ZvLm1lc2hUeXBlKCkgPT0gQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uOjpERVRBQ0hFRCAmJiBzaGFkZXItPnRyaWFuZ2xlQXR0cmliTG9jYXRp
b24oKSAhPSAtMSkgeworICAgICAgICAgICAgICAgIHJldC5sYXN0KCktPmFwcGVuZFBhcmFtZXRl
cihWZXJ0ZXhBdHRyaWJmOjpjcmVhdGUoc2hhZGVyLT50cmlhbmdsZUF0dHJpYkxvY2F0aW9uKCks
IDMsIG1lc2gtPmJ5dGVzUGVyVmVydGV4KCksIG9mZnNldCkpOworICAgICAgICAgICAgICAgIG9m
ZnNldCArPSAzICogc2l6ZW9mKGZsb2F0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNmby5wYXJhbWV0ZXJzKCkuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgICAgICAgICBpbnQgbG9jYXRpb24gPSBzaGFkZXIuZ2V0KCktPnVuaWZvcm1Mb2Nh
dGlvbkJ5TmFtZShjZm8ucGFyYW1ldGVycygpW2ldLT5uYW1lKCkpOworICAgICAgICAgICAgICAg
IGlmIChsb2NhdGlvbiA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICAgICAgc3dpdGNoIChjZm8ucGFyYW1ldGVycygpW2ldLT5wYXJhbWV0ZXJUeXBlKCkp
IHsKKyAgICAgICAgICAgICAgICBjYXNlIEN1c3RvbUZpbHRlclBhcmFtZXRlcjo6TlVNQkVSOiB7
CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IEN1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlciYg
bnVtYmVyID0gc3RhdGljX2Nhc3Q8Q3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyJj4oKmNmby5w
YXJhbWV0ZXJzKClbaV0uZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG51bWJl
ci5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0Lmxhc3QoKS0+YXBwZW5kUGFyYW1ldGVyKFVuaWZvcm0xZjo6Y3JlYXRlKGxv
Y2F0aW9uLCBudW1iZXIudmFsdWVBdCgwKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldC5sYXN0KCktPmFwcGVuZFBhcmFtZXRlcihVbmlmb3JtMmY6OmNyZWF0ZShsb2NhdGlvbiwg
bnVtYmVyLnZhbHVlQXQoMCksIG51bWJlci52YWx1ZUF0KDEpKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0Lmxhc3QoKS0+YXBwZW5kUGFyYW1ldGVyKFVuaWZvcm0zZjo6Y3JlYXRl
KGxvY2F0aW9uLCBudW1iZXIudmFsdWVBdCgwKSwgbnVtYmVyLnZhbHVlQXQoMSksIG51bWJlci52
YWx1ZUF0KDIpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0Lmxhc3QoKS0+YXBw
ZW5kUGFyYW1ldGVyKFVuaWZvcm00Zjo6Y3JlYXRlKGxvY2F0aW9uLCBudW1iZXIudmFsdWVBdCgw
KSwgbnVtYmVyLnZhbHVlQXQoMSksIG51bWJlci52YWx1ZUF0KDIpLCBudW1iZXIudmFsdWVBdCgz
KSkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IH0gLy8gc3dpdGNoKG51bWJlci5zaXplKCkpCisKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfSAvLyBjYXNlIEN1c3RvbUZpbHRlclBhcmFtZXRlcjo6TlVNQkVS
CisgICAgICAgICAgICAgICAgY2FzZSBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6OlRSQU5TRk9STTog
eworICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07CisK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHN1cmZhY2UtPmNvbnRlbnRSZWN0KCkud2lkdGgoKSAm
JiBzdXJmYWNlLT5jb250ZW50UmVjdCgpLmhlaWdodCgpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBUaGUgdmlld3BvcnQgaXMgYSBib3ggd2l0aCB0aGUgc2l6ZSBvZiAxIHVuaXQsIHNv
IHdlIGFyZSBzY2FsbGluZyB1cCBoZXJlIHRvIG1ha2Ugc3VyZSB0aGF0IHRyYW5zbGF0aW9ucyBo
YXBwZW4gdXNpbmcgcmVhbCBwaXhlbHMKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVuaXRz
LiBBdCB0aGUgZW5kIHdlIHNjYWxlIGJhY2sgZG93biBpbiBvcmRlciB0byBtYXAgaXQgYmFjayB0
byB0aGUgb3JpZ2luYWwgYm94LiBOb3RlIHRoYXQgdHJhbnNmb3JtcyBjb21lIGluIHJldmVyc2Ug
b3JkZXIsIGJlY2F1c2UgaXQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN1cHBvc2Vk
IHRvIG11bHRpcGx5IHRvIHRoZSBsZWZ0IG9mIHRoZSBjb29yZGluYXRlcyBvZiB0aGUgdmVydGlj
ZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhlIG9yaWdpbiAoMCwg
MCkgb2YgdGhlIHZpZXdwb3J0IGlzIGluIHRoZSBtaWRkbGUgb2YgdGhlIGNvbnRleHQsIHNvIHRo
ZXJlJ3Mgbm8gbmVlZCB0byBjaGFuZ2UgdGhlIG9yaWdpbiBvZiB0aGUgdHJhbnNmb3JtCisgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBpbiBvcmRlciB0byByb3RhdGUgYXJvdW5kIHRoZSBtaWRk
bGUgb2YgbWVzaC4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybS5zY2FsZTNkKDEu
MCAvIHN1cmZhY2UtPmNvbnRlbnRSZWN0KCkud2lkdGgoKSwgMS4wIC8gc3VyZmFjZS0+Y29udGVu
dFJlY3QoKS5oZWlnaHQoKSwgMSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxDdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXIqPihjZm8ucGFyYW1ldGVycygpW2ldLmdl
dCgpKS0+YXBwbHlUcmFuc2Zvcm0odHJhbnNmb3JtLCByb3VuZGVkSW50U2l6ZShzdXJmYWNlLT5j
b250ZW50UmVjdCgpLnNpemUoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3Jt
LnNjYWxlM2Qoc3VyZmFjZS0+Y29udGVudFJlY3QoKS53aWR0aCgpLCBzdXJmYWNlLT5jb250ZW50
UmVjdCgpLmhlaWdodCgpLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgICAgICBmbG9hdCBnbE1hdHJpeFsxNl07CisgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9y
bS50b0NvbHVtbk1ham9yRmxvYXRBcnJheShnbE1hdHJpeCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgLy8gVGhpcyB3aWxsIGNyZWF0ZSBhIGRlZXAtY29weSBvZiBnbE1hdHJpeC4KKyAgICAgICAg
ICAgICAgICAgICAgcmV0Lmxhc3QoKS0+YXBwZW5kUGFyYW1ldGVyKE1hdHJpeDRmdjo6Y3JlYXRl
KGxvY2F0aW9uLCAxLCBmYWxzZSwgJmdsTWF0cml4WzBdKSk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0gLy8gY2FzZSBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6
OlRSQU5TRk9STQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldC5sYXN0KCktPnVz
ZUN1c3RvbVNoYWRlcihzaGFkZXIucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIHJldC5sYXN0KCkt
PmFkb3B0TWVzaChtZXNoLnJlbGVhc2UoKSk7IC8vIE9iamVjdHMgZnJvbSBtZXNoIGFyZSB1c2Vk
IGluIEdMX0FSUkFZX0JVRkZFUiBhbmQgR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIKICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisjZW5kaWYKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC03MDgsNyAr
ODYyLDkgQEAgdm9pZCBMYXllckZpbHRlclJlbmRlcmVyOjphcHBseUFjdGlvbnModW5zaWduZWQm
IGZibywgTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogbGEKICAgICAgICAgICAgIGdsRHJhd0FycmF5
cyhHTF9UUklBTkdMRV9GQU4sIDAsIDQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgTGF5ZXJGaWx0ZXJSZW5kZXJlckFjdGlvbjo6RHJhd1RyaWFuZ2xlRWxlbWVudHNVU2hvcnQw
OgorICAgICAgICAgICAgZ2xWaWV3cG9ydCgwLjUsIDAuNSwgc3VyZmFjZS0+c2l6ZSgpLndpZHRo
KCksIHN1cmZhY2UtPnNpemUoKS5oZWlnaHQoKSk7CiAgICAgICAgICAgICBnbERyYXdFbGVtZW50
cyhHTF9UUklBTkdMRVMsIGFjdGlvbnNbaV0tPmRyYXdpbmdNb2RlUGFyYW1ldGVyKCksIEdMX1VO
U0lHTkVEX1NIT1JULCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KHN0YXRpY19jYXN0PGludHB0
cl90PigwKSkpOworICAgICAgICAgICAgZ2xWaWV3cG9ydCgwLjAsIDAuMCwgc3VyZmFjZS0+c2l6
ZSgpLndpZHRoKCksIHN1cmZhY2UtPnNpemUoKS5oZWlnaHQoKSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBMYXllckZpbHRlclJlbmRlcmVyQWN0aW9uOjpOdW1iZXJPZkRyYXdp
bmdNb2RlczoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckZpbHRlclJl
bmRlcmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xh
eWVyRmlsdGVyUmVuZGVyZXIuaAppbmRleCAzYjI4ZDA4YWI0N2Y5N2Y0MTcxM2FjYzU2ZDhiZjll
ZWE2ZmQzYTE0Li42YmM0NDIyOTNmNjYwZDBhMWFjOGRjYWQ1NDBmY2M4NTE5MWYwNDZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVy
RmlsdGVyUmVuZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9i
bGFja2JlcnJ5L0xheWVyRmlsdGVyUmVuZGVyZXIuaApAQCAtMjEsOCArMjEsMTIgQEAKIAogI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgRU5BQkxFKENTU19GSUxURVJTKQogCisj
aW5jbHVkZSAiQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5oIgorI2luY2x1ZGUgIkN1c3RvbUZp
bHRlck9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJMYXllckNv
bXBpbGVkUHJvZ3JhbS5oIgogI2luY2x1ZGUgIkxheWVyRGF0YS5oIgorI2luY2x1ZGUgIkxheWVy
RmlsdGVyTWVzaC5oIgogI2luY2x1ZGUgIlRleHR1cmUuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1h
dGlvbk1hdHJpeC5oIgogCkBAIC0zNiw2ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm87CiBjbGFzcyBMYXllckNvbXBvc2l0aW5n
VGhyZWFkOwogY2xhc3MgTGF5ZXJGaWx0ZXJSZW5kZXJlcjsKIGNsYXNzIExheWVyRmlsdGVyUmVu
ZGVyZXJBY3Rpb247CkBAIC0xOTksOSArMjA0LDE2IEBAIHB1YmxpYzoKICAgICBpbnQgZHJhd2lu
Z01vZGVQYXJhbWV0ZXIoKSBjb25zdCB7IHJldHVybiBtX2RyYXdpbmdNb2RlUGFyYW1ldGVyOyB9
CiAgICAgdm9pZCBzZXREcmF3aW5nTW9kZVBhcmFtZXRlcihpbnQgcCkgeyBtX2RyYXdpbmdNb2Rl
UGFyYW1ldGVyID0gcDsgfQogCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorICAgIHZvaWQgdXNl
Q3VzdG9tU2hhZGVyKFBhc3NSZWZQdHI8TGF5ZXJDb21waWxlZFByb2dyYW0+IHNoYWRlcikgeyBt
X2N1c3RvbVNoYWRlciA9IHNoYWRlcjsgbV9jdXN0b21JZCA9IG1fY3VzdG9tU2hhZGVyLT5wcm9n
cmFtKCk7IH0KKyAgICB2b2lkIGFkb3B0TWVzaChQYXNzUmVmUHRyPExheWVyRmlsdGVyTWVzaD4g
bWVzaCkgeyBtX2N1c3RvbU1lc2ggPSBtZXNoOyB9CisjZW5kaWYKIAogcHJvdGVjdGVkOgogICAg
IGludCBtX3Byb2dyYW1JZDsKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisgICAgaW50IG1fY3Vz
dG9tSWQ7CisjZW5kaWYKICAgICBib29sIG1fcHVzaFNuYXBzaG90OwogICAgIGJvb2wgbV9wb3BT
bmFwc2hvdDsKIApAQCAtMjEwLDYgKzIyMiwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgRHJhd2luZ01v
ZGUgbV9kcmF3aW5nTW9kZTsKICAgICBpbnQgbV9kcmF3aW5nTW9kZVBhcmFtZXRlcjsKIAorI2lm
IEVOQUJMRShDU1NfU0hBREVSUykKKyAgICBSZWZQdHI8TGF5ZXJDb21waWxlZFByb2dyYW0+IG1f
Y3VzdG9tU2hhZGVyOworICAgIFJlZlB0cjxMYXllckZpbHRlck1lc2g+IG1fY3VzdG9tTWVzaDsK
KyNlbmRpZgogcHJpdmF0ZToKICAgICBMYXllckZpbHRlclJlbmRlcmVyQWN0aW9uKGludCBwcm9n
cmFtSWQpOwogfTsKQEAgLTIyNiw2ICsyNDIsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KICAgICB2b2lkIGRpc2FibGUoKSB7IG1f
ZW5hYmxlZCA9IGZhbHNlOyB9CiAKKyAgICB2b2lkIGZpbHRlck1lc2hEZXN0cm95ZWQoTGF5ZXJG
aWx0ZXJNZXNoKik7CisKIHByaXZhdGU6CiAgICAgTGF5ZXJGaWx0ZXJSZW5kZXJlcihjb25zdCBp
bnQmIHBvc2l0aW9uTG9jYXRpb24sIGNvbnN0IGludCYgdGV4Q29vcmRMb2NhdGlvbik7CiAgICAg
dm9pZCBiaW5kQ29tbW9uQXR0cmliTG9jYXRpb24oaW50IGxvY2F0aW9uLCBjb25zdCBjaGFyKiBh
dHRyaWJOYW1lKTsKQEAgLTI0MCw2ICsyNTgsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHB1c2hT
bmFwc2hvdChMYXllclJlbmRlcmVyU3VyZmFjZSosIGludCBzb3VyY2VJZCk7CiAgICAgdm9pZCBw
b3BTbmFwc2hvdCgpOwogCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorICAgIFBhc3NSZWZQdHI8
TGF5ZXJDb21waWxlZFByb2dyYW0+IGdldENvbXBpbGVkUHJvZ3JhbShjb25zdCBDdXN0b21GaWx0
ZXJQcm9ncmFtSW5mbyYpOworICAgIFBhc3NSZWZQdHI8TGF5ZXJGaWx0ZXJNZXNoPiBnZXRGaWx0
ZXJNZXNoKHVuc2lnbmVkIGNvbHMsIHVuc2lnbmVkIHJvd3MsIGNvbnN0IEZsb2F0UmVjdCYgbWVz
aEJveCwgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSk7CisjZW5kaWYKKwogICAgIGJv
b2wgbV9lbmFibGVkOwogCiAgICAgLy8gRVNTTCBhdHRyaWJ1dGVzIHNoYXJlZCB3aXRoIExheWVy
UmVuZGVyZXIgLSBzZWUgY29uc3RydWN0b3I6CkBAIC0yNTksNiArMjgyLDExIEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPFRleHR1cmU+IG1fdGV4dHVyZTsKICAgICBSZWZQdHI8VGV4dHVyZT4gbV9z
bmFwc2hvdFRleHR1cmU7CiAKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisgICAgQ3VzdG9tRmls
dGVyR2xvYmFsQ29udGV4dCBtX3Byb2dyYW1WYWxpZGF0b3I7CisgICAgSGFzaFNldDxMYXllckZp
bHRlck1lc2gqPiBtX21lc2hTZXQ7CisjZW5kaWYKKwogICAgIGZyaWVuZCBjbGFzcyBMYXllckZp
bHRlclJlbmRlcmVyQWN0aW9uOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyV2ViS2l0VGhyZWFkLmNw
cAppbmRleCA3ZDA4YjA1OWY2Nzc1ODhiNTExNGJmYWFjOWJmNjhhNTY0NGZkN2Y4Li4wMmIxYmVm
NWQ2YjBjODNlZjJhZTBhZGMyOWRhNTIyZDRjNzI4YzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyV2ViS2l0VGhyZWFkLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyV2Vi
S2l0VGhyZWFkLmNwcApAQCAtNDU2LDkgKzQ1Niw2IEBAIGJvb2wgTGF5ZXJXZWJLaXRUaHJlYWQ6
OmZpbHRlcnNDYW5CZUNvbXBvc2l0ZWQoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykK
ICAgICAgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmaWx0ZXJPcGVyYXRpb24gPSBmaWx0ZXJz
LmF0KGkpOwogICAgICAgICBzd2l0Y2ggKGZpbHRlck9wZXJhdGlvbi0+Z2V0T3BlcmF0aW9uVHlw
ZSgpKSB7CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpSRUZFUkVOQ0U6Ci0jaWYgRU5B
QkxFKENTU19TSEFERVJTKQotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q1VTVE9NOgot
I2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCmluZGV4IGI0ZThi
MjkzNjBiODU3ODk4MDkxY2NlZDFiYzU3ODBiY2Y3OWIzNzQuLmRhOTM0MDEyOGU5NTI3MjNmNzg0
YjUwMjY3OTQwYTMwNWFjZTZiMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaApA
QCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbSog
cHJvZ3JhbSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvZ3JhbS5nZXQoKTsgfQogICAgIAotICAgIGNv
bnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIHBhcmFtZXRlcnMoKSB7IHJldHVybiBtX3Bh
cmFtZXRlcnM7IH0KKyAgICBjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBwYXJhbWV0
ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9CiAgICAgCiAgICAgdW5zaWduZWQg
bWVzaFJvd3MoKSBjb25zdCB7IHJldHVybiBtX21lc2hSb3dzOyB9CiAgICAgdW5zaWduZWQgbWVz
aENvbHVtbnMoKSBjb25zdCB7IHJldHVybiBtX21lc2hDb2x1bW5zOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclBhcmFt
ZXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJQYXJhbWV0ZXIuaAppbmRleCA4Mjk4MGQ2Yzc4MGYwODBjYzdkNzAzZmFhOThjNjJiNmY1
ZDNlYTg0Li44N2Y0MTU2ZmVlZTgyNWUyYzZlODI2OWJkOWJiYmE4YTY3M2JhNDRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRl
clBhcmFtZXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvQ3VzdG9tRmlsdGVyUGFyYW1ldGVyLmgKQEAgLTM3LDEyICszNywxMyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFuaW1hdGlvbkJhc2U7CisKIGNsYXNzIEN1c3RvbUZpbHRl
clBhcmFtZXRlciA6IHB1YmxpYyBSZWZDb3VudGVkPEN1c3RvbUZpbHRlclBhcmFtZXRlcj4gewog
cHVibGljOgogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgb3RoZXIgcGFyYW1ldGVycyB0eXBlczoK
ICAgICAvLyBib29sZWFuczogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc2NDM4CiAgICAgLy8gdGV4dHVyZXM6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MTQ0MgotICAgIC8vIDNkLXRyYW5zZm9ybXM6IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MTQ0MwogICAgIC8vIG1hdDIsIG1hdDMsIG1hdDQ6IGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTQ0NAogICAgIGVudW0gUGFyYW1l
dGVyVHlwZSB7CiAgICAgICAgIE5VTUJFUiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCmluZGV4IGEyNGQ1ZTI5Mjk5NzIyODFlMmNjMmU5
ZDVkYTlkOGUyM2JiMWU0N2IuLjU0NzFkYjliYjcwN2RmYzRmNTYzZDJjMTMwZmMzNTMwYTlkOWI2
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5k
ZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRl
cmVyLmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBGaWx0
ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIoRG9jdW1lbnQqIGRvCiAKIGJv
b2wgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0aW9ucykKIHsKLSNpZiAhRU5BQkxFKENTU19TSEFERVJT
KSB8fCAhRU5BQkxFKFdFQkdMKQorI2lmICFFTkFCTEUoQ1NTX1NIQURFUlMpIHx8ICFFTkFCTEUo
V0VCR0wpIHx8IFBMQVRGT1JNKEJMQUNLQkVSUlkpCiAgICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50
KTsKICNlbmRpZgogCkBAIC0yMDQsNiArMjA0LDcgQEAgYm9vbCBGaWx0ZXJFZmZlY3RSZW5kZXJl
cjo6YnVpbGQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGUK
ICAgICBtX2VmZmVjdHMuY2xlYXIoKTsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IHByZXZp
b3VzRWZmZWN0ID0gbV9zb3VyY2VHcmFwaGljOworI2lmICFQTEFURk9STShCTEFDS0JFUlJZKQog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0OwogICAgICAgICBG
aWx0ZXJPcGVyYXRpb24qIGZpbHRlck9wZXJhdGlvbiA9IG9wZXJhdGlvbnMub3BlcmF0aW9ucygp
LmF0KGkpLmdldCgpOwpAQCAtMzY3LDEzICszNjgsMTQgQEAgYm9vbCBGaWx0ZXJFZmZlY3RSZW5k
ZXJlcjo6YnVpbGQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBv
cGUKICAgICAgICAgICAgIHByZXZpb3VzRWZmZWN0ID0gZWZmZWN0LnJlbGVhc2UoKTsKICAgICAg
ICAgfQogICAgIH0KKyNlbmRpZiAvLyBQTEFURk9STShCTEFDS0JFUlJZKQogCiAgICAgLy8gSWYg
d2UgZGlkbid0IG1ha2UgYW55IGVmZmVjdHMsIHRlbGwgb3VyIGNhbGxlciB3ZSBhcmUgbm90IHZh
bGlkCiAgICAgaWYgKCFtX2VmZmVjdHMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBzZXRNYXhFZmZlY3RSZWN0cyhtX3NvdXJjZURyYXdpbmdSZWdpb24pOwotICAgIAorCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9BcGkvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2Uu
Y3BwCmluZGV4IDkzN2JiMzU3OTZlNDE0YzRhZGE0NjUyNGRmNDg5MGNiOTYyNDY0YTQuLjM1MDhk
NDA0NTJmNmI5NmM1ZGM3MWViYzcwZTE3YzA0ODI4NDkwM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L0FwaS9XZWJQYWdlLmNwcApAQCAtNTgyLDYgKzU4Miw5IEBAIHZvaWQgV2ViUGFnZVBy
aXZhdGU6OmluaXQoY29uc3QgV2ViU3RyaW5nJiBwYWdlR3JvdXBOYW1lKQogCiAjaWYgRU5BQkxF
KFdFQkdMKQogICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0V2ViR0xFbmFibGVkKHRydWUpOwor
I2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldENTU0N1
c3RvbUZpbHRlckVuYWJsZWQodHJ1ZSk7CisjZW5kaWYKICNlbmRpZgogI2lmIEVOQUJMRShBQ0NF
TEVSQVRFRF8yRF9DQU5WQVMpCiAgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRDYW52YXNVc2Vz
QWNjZWxlcmF0ZWREcmF3aW5nKHRydWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDRjZjMwMmY3N2VlMzVhZTg0MjJlMmFkYTRmZTcyNWY2MzJh
OWRiY2MuLmI1NDA4ZTViYjkyNzU0MjRkN2YxNDMzMjgzMDgzOGQ5ZjVmYjI3NDkgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBA
QAorMjAxMi0wOC0yOSAgSm9zaHVhIE5ldHRlcmZpZWxkICA8am5ldHRlcmZpZWxkQHJpbS5jb20+
CisKKyAgICAgICAgW0JsYWNrQmVycnldIEVuYWJsZSBDU1MgU2hhZGVycworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ3MjgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgQ1NTIFNoYWRlcnMgZm9y
IHRoZSBCbGFja0JlcnJ5IHBvcnQuCisKKyAgICAgICAgQ1NTIFNoYWRlcnMgKGFsc28gY2FsbGVk
IEN1c3RvbSBGaWx0ZXJzKSBhcmUgQ1NTIEZpbHRlciBFZmZlY3RzCisgICAgICAgIHRoYXQgYXJl
IGRlZmluZWQgYnkgYSBHTFNMIEVTIHZlcnRleCBhbmQgZnJhZ21lbnQgc2hhZGVyLiBGb3IgYSBx
dWljaworICAgICAgICBpbnRyb2R1Y3Rpb24sIHNlZSBodHRwOi8vd3d3LmFkb2JlLmNvbS9kZXZu
ZXQvaHRtbDUvYXJ0aWNsZXMvY3NzLXNoYWRlcnMuaHRtbC4KKworICAgICAgICBTZWUgYWxzbyBX
ZWJLaXQgYnVncyAjOTI2ODUsICM5NDcyNCBhbmQgIzk0NzI1LgorCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtOiBBZGQgdGhlIGZlYXR1cmUgYW5kIGVuYWJsZSBp
dC4KKwogMjAxMi0wOC0yMCAgR2VvcmdlIFN0YWlrb3MgIDxzdGFpa29zQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgW0JsYWNrQmVycnldIEVuYWJsZSBYSFIgUmVzcG9uc2UgQkxPQgpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCmluZGV4IDNmMmI3NDJmMzJmMGJmODBhNmU2YzI2
YzEzMTE3NDllZDM5OTYzZGUuLmVlMDkyYzFjOWRhMmQyNTgzMDcwN2M4MzMwMzI0OTkyMjNjODFl
MjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KQEAgLTE4NCw3ICsx
ODQsNyBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9DU1NfUkVH
SU9OUyIsIGRlZmF1bHQgPT4gMSwgdmFsdWUgPT4gXCRjc3NSZWdpb25zU3VwcG9ydCB9LAogCiAg
ICAgeyBvcHRpb24gPT4gImNzcy1zaGFkZXJzIiwgZGVzYyA9PiAiVG9nZ2xlIENTUyBTaGFkZXJz
IHN1cHBvcnQiLAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVfQ1NTX1NIQURFUlMiLCBkZWZhdWx0
ID0+IGlzQXBwbGVNYWNXZWJLaXQoKSwgdmFsdWUgPT4gXCRjc3NTaGFkZXJzU3VwcG9ydCB9LAor
ICAgICAgZGVmaW5lID0+ICJFTkFCTEVfQ1NTX1NIQURFUlMiLCBkZWZhdWx0ID0+IGlzQXBwbGVN
YWNXZWJLaXQoKSB8fCBpc0JsYWNrQmVycnkoKSwgdmFsdWUgPT4gXCRjc3NTaGFkZXJzU3VwcG9y
dCB9LAogCiAgICAgeyBvcHRpb24gPT4gImNzcy1jb21wb3NpdGluZyIsIGRlc2MgPT4gIlRvZ2ds
ZSBDU1MgQ29tcG9zaXRpbmcgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9DU1Nf
Q09NUE9TSVRJTkciLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkY3NzQ29tcG9zaXRpbmdTdXBw
b3J0IH0sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162142</attachid>
            <date>2012-09-04 18:01:00 -0700</date>
            <delta_ts>2012-09-07 15:03:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94728-20120905030041.patch</filename>
            <type>text/plain</type>
            <size>47883</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjM0ZGExM2ZmN2M4MDU4
YTNjMjQwN2UzOTQ0MzY0MzA4ZGVmZGI5Zi4uNzgwYjZjMGM0YWU1MGMzYWRjYTM0YzM5ZDczMmJh
YzkwZWRkYjY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDEyLTA4LTI5ICBKb3No
dWEgTmV0dGVyZmllbGQgIDxqbmV0dGVyZmllbGRAcmltLmNvbT4KKworICAgICAgICBbQmxhY2tC
ZXJyeV0gRW5hYmxlIENTUyBTaGFkZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05NDcyOAorCisgICAgICAgIEVuYWJsZSBDU1MgU2hhZGVycyBmb3Ig
dGhlIEJsYWNrQmVycnkgcG9ydC4KKworICAgICAgICBDU1MgU2hhZGVycyAoYWxzbyBjYWxsZWQg
Q3VzdG9tIEZpbHRlcnMpIGFyZSBDU1MgRmlsdGVyIEVmZmVjdHMKKyAgICAgICAgdGhhdCBhcmUg
ZGVmaW5lZCBieSBhIEdMU0wgRVMgdmVydGV4IGFuZCBmcmFnbWVudCBzaGFkZXIuIEZvciBhIHF1
aWNrCisgICAgICAgIGludHJvZHVjdGlvbiwgc2VlIGh0dHA6Ly93d3cuYWRvYmUuY29tL2Rldm5l
dC9odG1sNS9hcnRpY2xlcy9jc3Mtc2hhZGVycy5odG1sLgorCisgICAgICAgIFNlZSBhbHNvIFdl
YktpdCBidWdzICM5MjY4NSwgIzk0NzI0IGFuZCAjOTQ3MjUuCisKKyAgICAgICAgUGF0Y2ggd2Fz
IHVwZGF0ZWQgYnkgQXJ2aWQgTmlsc3NvbiB0byB1c2UgQmxhY2tCZXJyeS1zcGVjaWZpYworICAg
ICAgICBMYXllckNvbXBpbGVkUHJvZ3JhbSBhbmQgTGF5ZXJGaWx0ZXJNZXNoIGNsYXNzZXMgYWZ0
ZXIgcmVzb2x1dGlvbiBvZgorICAgICAgICBidWcgIzk0NzI1LgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgYWxyZWFkeSBjb3ZlcmVkIGJ5Cisg
ICAgICAgIGNzczMvZmlsdGVycy9jdXN0b20vKi4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIFBsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZToKKyAgICAgICAgKiBjc3MvV2Vi
S2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBpbGVkUHJvZ3JhbS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBpbGVk
UHJvZ3JhbTo6TGF5ZXJDb21waWxlZFByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJD
b21waWxlZFByb2dyYW06OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJD
b21waWxlZFByb2dyYW06OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29t
cGlsZWRQcm9ncmFtOjppbml0aWFsaXplUGFyYW1ldGVyTG9jYXRpb25zKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyQ29tcGlsZWRQcm9ncmFtOjp1bmlmb3JtTG9jYXRpb25CeU5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJDb21waWxlZFByb2dyYW06On5MYXllckNvbXBpbGVkUHJvZ3Jh
bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBpbGVk
UHJvZ3JhbS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTGF5ZXJDb21w
aWxlZFByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21waWxlZFByb2dyYW06OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBpbGVkUHJvZ3JhbTo6cG9zaXRpb25B
dHRyaWJMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBpbGVkUHJvZ3JhbTo6
dGV4QXR0cmliTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21waWxlZFByb2dy
YW06Om1lc2hBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBpbGVk
UHJvZ3JhbTo6dHJpYW5nbGVBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMYXll
ckNvbXBpbGVkUHJvZ3JhbTo6bWVzaEJveExvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyQ29tcGlsZWRQcm9ncmFtOjpwcm9qZWN0aW9uTWF0cml4TG9jYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJDb21waWxlZFByb2dyYW06OnRpbGVTaXplTG9jYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJDb21waWxlZFByb2dyYW06Om1lc2hTaXplTG9jYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJDb21waWxlZFByb2dyYW06OnNhbXBsZXJMb2NhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBpbGVkUHJvZ3JhbTo6Y29udGVudFNhbXBsZXJMb2Nh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBpbGVkUHJvZ3JhbTo6c2FtcGxlclNp
emVMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBpbGVkUHJvZ3JhbTo6aW50
ZXJuYWxUZXhDb29yZEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29t
cGlsZWRQcm9ncmFtOjppc0luaXRpYWxpemVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29t
cGlsZWRQcm9ncmFtOjpwcm9ncmFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0xheWVyRmlsdGVyTWVzaC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllckZpbHRlck1lc2g6OkxheWVyRmlsdGVyTWVzaCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllckZpbHRlck1lc2g6On5MYXllckZpbHRlck1lc2gpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJGaWx0ZXJNZXNoLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChMYXllckZpbHRlck1lc2gpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJGaWx0ZXJNZXNoOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJGaWx0ZXJNZXNoOjp2ZXJ0aWNlc0J1ZmZlck9iamVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllckZpbHRlck1lc2g6OmJ5dGVzUGVyVmVydGV4KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyRmlsdGVyTWVzaDo6ZWxlbWVudHNCdWZmZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJGaWx0ZXJNZXNoOjppbmRpY2VzQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJG
aWx0ZXJNZXNoOjptZXNoQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyRmlsdGVyTWVzaDo6
bWVzaFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJGaWx0ZXJNZXNoOjpjb2x1bW5Db3Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckZpbHRlck1lc2g6OnJvd0NvdW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRmlsdGVyUmVuZGVyZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJGaWx0ZXJSZW5kZXJlckFjdGlvbjo6TGF5ZXJGaWx0
ZXJSZW5kZXJlckFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckZpbHRlclJlbmRlcmVy
QWN0aW9uOjp1c2VBY3Rpb25Pbik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckZpbHRlclJlbmRl
cmVyOjppbml0aWFsaXplU2hhcmVkR0xPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJGaWx0ZXJSZW5kZXJlcjo6Z2V0Q29tcGlsZWRQcm9ncmFtKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyRmlsdGVyUmVuZGVyZXI6OmdldEZpbHRlck1lc2gpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJGaWx0ZXJSZW5kZXJlcjo6ZmlsdGVyTWVzaERlc3Ryb3ll
ZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckZpbHRlclJlbmRlcmVyOjphY3Rpb25zRm9yT3Bl
cmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckZpbHRlclJlbmRlcmVyOjphcHBseUFj
dGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJGaWx0
ZXJSZW5kZXJlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChMYXllckZpbHRlclJl
bmRlcmVyQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyRmlsdGVyUmVuZGVyZXJBY3Rp
b246OnVzZUN1c3RvbVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckZpbHRlclJlbmRl
cmVyQWN0aW9uOjphZG9wdE1lc2gpOgorICAgICAgICAoTGF5ZXJGaWx0ZXJSZW5kZXJlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllcldlYktpdFRocmVhZDo6ZmlsdGVyc0NhbkJlQ29t
cG9zaXRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJPcGVyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck9wZXJhdGlvbjo6
cGFyYW1ldGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJQYXJhbWV0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ3VzdG9tRmls
dGVyUGFyYW1ldGVyKToKKwogMjAxMi0wOS0wNCAgQXJ2aWQgTmlsc3NvbiAgPGFuaWxzc29uQHJp
bS5jb20+CiAKICAgICAgICAgW0NTUyBTaGFkZXJzXSBbQmxhY2tCZXJyeV0gUmVmYWN0b3IgQ3Vz
dG9tRmlsdGVyTWVzaCBhbmQgQ3VzdG9tRmlsdGVyKlByb2dyYW0KQEAgLTYyMywxMSArNzEzLDEx
IEBACiAKICAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGNlcnRhaW4gbmV3IFBhcmFtZXRl
ciB0eXBlcywgaW5jbHVkaW5nIHZlcnRleC9lbGVtZW50CiAgICAgICAgIGJ1ZmZlcnMgYW5kIHZl
cnRleCBhdHRyaWJ1dGVzIHdoaWNoIGFyZSBuZWVkZWQgdG8gaW1wbGVtZW50IGNvbXBvc2l0ZWQK
LSAgICAgICAgQ1NTIFNoYWRlcnMgb24gQkIxMC4gSW4gYWRkaXRpb24sIGEgbmV3IGRyYXdpbmcg
bW9kZSBpcyByZXF1aXJlZCBpbiBvcmRlcgorICAgICAgICBDU1MgU2hhZGVycyBvbiBCbGFja0Jl
cnJ5LiBJbiBhZGRpdGlvbiwgYSBuZXcgZHJhd2luZyBtb2RlIGlzIHJlcXVpcmVkIGluIG9yZGVy
CiAgICAgICAgIHRvIGRyYXcgQ1NTIFNoYWRlcnMgbWVzaGVzIGZyb20gdmVydGV4L2VsZW1lbnQg
YnVmZmVycy4KIAogICAgICAgICBObyBuZXcgdGVzdHMsIGJlY2F1c2UgdGhpcyBwYXRjaCBpbnRy
b2R1Y2VzIG5vIG5ldyBmdW5jdGlvbmFsaXR5LiBXaGVuCi0gICAgICAgIHRoZSBwYXRjaCB3aGlj
aCBlbmFibGVzIENTUyBTaGFkZXJzIG9uIEJCMTAgaW4gdXBzdHJlYW1lZCwgdGVzdHMgZm9yCisg
ICAgICAgIHRoZSBwYXRjaCB3aGljaCBlbmFibGVzIENTUyBTaGFkZXJzIG9uIEJsYWNrQmVycnkg
aW4gdXBzdHJlYW1lZCwgdGVzdHMgZm9yCiAgICAgICAgIENTUyBTaGFkZXJzIHdpbGwgcHJvdmUg
dGhpcyBjb2RlIHRvIGJlIGNvcnJlY3QuCiAKICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9i
bGFja2JlcnJ5L0xheWVyRmlsdGVyUmVuZGVyZXIuY3BwOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKaW5kZXggMThhNzMzZTA1NjEwOWQ4NGU0MzRjNTdhMmYzZjIzYWI2NGM0ZWE2Mi4uY2Iw
ODFiMTg1NzNjY2UzZmEwNWEyOTRjNWMxMmI1Zjk3NzkzMjgwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDgtMjkgIEpvc2h1YSBOZXR0ZXJm
aWVsZCAgPGpuZXR0ZXJmaWVsZEByaW0uY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBFbmFi
bGUgQ1NTIFNoYWRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk0NzI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRW5hYmxlIENTUyBTaGFkZXJzIGZvciB0aGUgQmxhY2tCZXJyeSBwb3J0LgorCisgICAg
ICAgIENTUyBTaGFkZXJzIChhbHNvIGNhbGxlZCBDdXN0b20gRmlsdGVycykgYXJlIENTUyBGaWx0
ZXIgRWZmZWN0cworICAgICAgICB0aGF0IGFyZSBkZWZpbmVkIGJ5IGEgR0xTTCBFUyB2ZXJ0ZXgg
YW5kIGZyYWdtZW50IHNoYWRlci4gRm9yIGEgcXVpY2sKKyAgICAgICAgaW50cm9kdWN0aW9uLCBz
ZWUgaHR0cDovL3d3dy5hZG9iZS5jb20vZGV2bmV0L2h0bWw1L2FydGljbGVzL2Nzcy1zaGFkZXJz
Lmh0bWwuCisKKyAgICAgICAgU2VlIGFsc28gV2ViS2l0IGJ1Z3MgIzkyNjg1LCAjOTQ3MjQgYW5k
ICM5NDcyNS4KKworICAgICAgICAqIEFwaS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVy
cnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OmluaXQpOgorCiAyMDEyLTA4LTMxICBKYWNreSBK
aWFuZyAgPHpoYWppYW5nQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIEFTU0VSVCBm
YWlsdXJlIGluIFJlbmRlckJsb2NrOjpjaGVja1Bvc2l0aW9uZWRPYmplY3RzTmVlZExheW91dApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCA4OTk5ZDJhY2MzYmVjMDM2MGM4YjBiOTJkMWU2OTk5MWE1
YjlmNWEwLi5kY2MwZjFlYTgwNjhmNDFkNTNjOWZjZTQzMzkwNjQ0MjIyYTQxOWU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtMTA2Myw2ICsxMDYzLDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwog
ICAgIGNzcy9XZWJLaXRDU1NLZXlmcmFtZVJ1bGUuY3BwCiAgICAgY3NzL1dlYktpdENTU0tleWZy
YW1lc1J1bGUuY3BwCiAgICAgY3NzL1dlYktpdENTU01hdHJpeC5jcHAKKyAgICBjc3MvV2ViS2l0
Q1NTTWl4RnVuY3Rpb25WYWx1ZS5jcHAKICAgICBjc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAK
ICAgICBjc3MvV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5jcHAKICAgICBjc3MvV2ViS2l0Q1NT
U2hhZGVyVmFsdWUuY3BwCkBAIC0xODU3LDkgKzE4NTgsMTEgQEAgU0VUKFdlYkNvcmVfU09VUkNF
UwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9n
cmFtLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFs
Q29udGV4dC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1l
c2guY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoR2Vu
ZXJhdG9yLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3Bl
cmF0aW9uLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJv
Z3JhbS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dy
YW1JbmZvLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFs
aWRhdGVkUHJvZ3JhbS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rpc3RhbnRM
aWdodFNvdXJjZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3Bw
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcApAQCAtMjEx
Miw2ICsyMTE1LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9zdHlsZS9T
dHlsZUJveERhdGEuY3BwCiAgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3Bw
CiAgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuY3BwCisgICAgcmVuZGVy
aW5nL3N0eWxlL1N0eWxlQ2FjaGVkU2hhZGVyLmNwcAogICAgIHJlbmRlcmluZy9zdHlsZS9TdHls
ZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEuY3BwCiAgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxl
RmlsdGVyRGF0YS5jcHAKICAgICByZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJveERhdGEu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKaW5kZXggYTlkNjRkYWEz
ZThkNTllMjY2YTIxOWE4Mjg5MjUzZGFmOWFiOTc1YS4uYzFhOWMxZjQyODkyMWI5YjU2YjA0Y2Nh
Mjg2ZGYyMDM1YWFjOTk2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1CbGFj
a0JlcnJ5LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFr
ZQpAQCAtMjk1LDggKzI5NSwxMCBAQCBJRiAoV1RGX1VTRV9BQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKICAgICAgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9F
R0xJbWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQuY3BwCiAgICAgICAgICR7V0VCQ09S
RV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvR3JhcGhpY3NMYXllckJsYWNrQmVy
cnkuY3BwCiAgICAgICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVy
cnkvTGF5ZXJBbmltYXRpb24uY3BwCisgICAgICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21waWxlZFByb2dyYW0uY3BwCiAgICAgICAgICR7V0VC
Q09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1Ro
cmVhZC5jcHAKICAgICAgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9MYXllckZpbHRlclJlbmRlcmVyLmNwcAorICAgICAgICAke1dFQkNPUkVfRElSfS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRmlsdGVyTWVzaC5jcHAKICAgICAgICAgJHtX
RUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmNw
cAogICAgICAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xh
eWVyUmVuZGVyZXJTdXJmYWNlLmNwcAogICAgICAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZS5jcHAKQEAgLTMxMCw2ICszMTIsMTIgQEAgSUYg
KFdURl9VU0VfQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgKQogRU5ESUYgKCkKIAorSUYg
KEVOQUJMRV9DU1NfU0hBREVSUykKKyAgICBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKKyAg
ICAgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9ibGFja2JlcnJ5
L0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW1CbGFja0JlcnJ5LmNwcAorICAgICkKK0VORElG
ICgpCisKIFNFVChXZWJDb3JlX0xJTktfRkxBR1MgIiR7V2ViQ29yZV9MSU5LX0ZMQUdTfSAtV2ws
LS1uby1rZWVwLW1lbW9yeSIpCiAKIFNFVChFTlZ7V0VCS0lURElSfSAke0NNQUtFX1NPVVJDRV9E
SVJ9KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01peEZ1bmN0aW9u
VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlLmgK
aW5kZXggYWY5Nzk0YTE5NDNkZTQyNmI0ZTNhZmQyMTIwYTg2NDU0ZDExZjA5Yi4uNDM5OTY3ZDY3
OWFiYjJmMTdlNWNhODJmYWYyOTE3MTcyYTdiNGJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1dlYktpdENTU01peEZ1bmN0aW9uVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZS5oCkBAIC0zNiw3ICszNiw5IEBACiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAorCitjbGFz
cyBNZW1vcnlPYmplY3RJbmZvOworCiBjbGFzcyBXZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlIDog
cHVibGljIENTU1ZhbHVlTGlzdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2Vi
S2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZT4gY3JlYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21waWxlZFByb2dyYW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBp
bGVkUHJvZ3JhbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWQ1NGIxNDY2NWRjNzA4ZTY3N2NmNTk0MGJlZThj
YzI5N2I1NDdiNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21waWxlZFByb2dyYW0uY3BwCkBAIC0wLDAgKzEsMTU2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVk
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIElu
IE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJMYXllckNvbXBpbGVkUHJvZ3JhbS5oIgorCisj
aW5jbHVkZSAiQ1N0cmluZy5oIgorCisjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtTG9nLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTGF5ZXJDb21waWxlZFByb2dyYW06OkxheWVyQ29t
cGlsZWRQcm9ncmFtKGNvbnN0IFN0cmluZyYgdmFsaWRhdGVkVmVydGV4U2hhZGVyLCBjb25zdCBT
dHJpbmcmIHZhbGlkYXRlZEZyYWdtZW50U2hhZGVyKQorICAgIDogbV9wcm9ncmFtKDApCisgICAg
LCBtX3Bvc2l0aW9uQXR0cmliTG9jYXRpb24oLTEpCisgICAgLCBtX3RleEF0dHJpYkxvY2F0aW9u
KC0xKQorICAgICwgbV9tZXNoQXR0cmliTG9jYXRpb24oLTEpCisgICAgLCBtX3RyaWFuZ2xlQXR0
cmliTG9jYXRpb24oLTEpCisgICAgLCBtX21lc2hCb3hMb2NhdGlvbigtMSkKKyAgICAsIG1fcHJv
amVjdGlvbk1hdHJpeExvY2F0aW9uKC0xKQorICAgICwgbV90aWxlU2l6ZUxvY2F0aW9uKC0xKQor
ICAgICwgbV9tZXNoU2l6ZUxvY2F0aW9uKC0xKQorICAgICwgbV9zYW1wbGVyTG9jYXRpb24oLTEp
CisgICAgLCBtX3NhbXBsZXJTaXplTG9jYXRpb24oLTEpCisgICAgLCBtX2NvbnRlbnRTYW1wbGVy
TG9jYXRpb24oLTEpCisgICAgLCBtX2ludGVybmFsVGV4Q29vcmRBdHRyaWJMb2NhdGlvbigtMSkK
KyAgICAsIG1faXNJbml0aWFsaXplZChmYWxzZSkKK3sKKyAgICBHTHVpbnQgdmVydGV4U2hhZGVy
ID0gY29tcGlsZVNoYWRlcihHTF9WRVJURVhfU0hBREVSLCB2YWxpZGF0ZWRWZXJ0ZXhTaGFkZXIp
OworICAgIGlmICghdmVydGV4U2hhZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBHTHVpbnQg
ZnJhZ21lbnRTaGFkZXIgPSBjb21waWxlU2hhZGVyKEdMX0ZSQUdNRU5UX1NIQURFUiwgdmFsaWRh
dGVkRnJhZ21lbnRTaGFkZXIpOworICAgIGlmICghZnJhZ21lbnRTaGFkZXIpIHsKKyAgICAgICAg
Z2xEZWxldGVTaGFkZXIodmVydGV4U2hhZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIG1fcHJvZ3JhbSA9IGxpbmtQcm9ncmFtKHZlcnRleFNoYWRlciwgZnJhZ21lbnRTaGFkZXIp
OworCisgICAgZ2xEZWxldGVTaGFkZXIodmVydGV4U2hhZGVyKTsKKyAgICBnbERlbGV0ZVNoYWRl
cihmcmFnbWVudFNoYWRlcik7CisKKyAgICBpZiAoIW1fcHJvZ3JhbSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaW5pdGlhbGl6ZVBhcmFtZXRlckxvY2F0aW9ucygpOworCisgICAgbV9pc0luaXRp
YWxpemVkID0gdHJ1ZTsKK30KKworR0x1aW50IExheWVyQ29tcGlsZWRQcm9ncmFtOjpjb21waWxl
U2hhZGVyKEdMZW51bSBzaGFkZXJUeXBlLCBjb25zdCBTdHJpbmcmIHNoYWRlclN0cmluZykKK3sK
KyAgICBBU1NFUlQoIXNoYWRlclN0cmluZy5pc051bGwoKSk7CisKKyAgICBHTHVpbnQgc2hhZGVy
ID0gZ2xDcmVhdGVTaGFkZXIoc2hhZGVyVHlwZSk7CisgICAgQ1N0cmluZyBzaGFkZXJDU3RyaW5n
ID0gc2hhZGVyU3RyaW5nLmxhdGluMSgpOyAvLyBBTkdMRVdlYktpdEJyaWRnZSBjdXJyZW50bHkg
dXNlcyBTdHJpbmc6OlN0cmluZyhjb25zdCBjaGFyKikgd2hpY2ggaXMgdGhlIGxhdGluMSBjb25z
dHJ1Y3RvcgorICAgIGNvbnN0IGNoYXIqIHNoYWRlckRhdGEgPSBzaGFkZXJDU3RyaW5nLmRhdGEo
KTsKKworICAgIGdsU2hhZGVyU291cmNlKHNoYWRlciwgMSwgJnNoYWRlckRhdGEsIDApOworICAg
IGdsQ29tcGlsZVNoYWRlcihzaGFkZXIpOworCisgICAgaW50IGNvbXBpbGVkID0gMDsKKyAgICBn
bEdldFNoYWRlcml2KHNoYWRlciwgR0xfQ09NUElMRV9TVEFUVVMsICZjb21waWxlZCk7CisgICAg
aWYgKCFjb21waWxlZCkgeworICAgICAgICBjaGFyIGluZm9Mb2dbMjA0OF07CisgICAgICAgIEdM
c2l6ZWkgbGVuZ3RoOworICAgICAgICBnbEdldFNoYWRlckluZm9Mb2coc2hhZGVyLCAyMDQ4LCAm
bGVuZ3RoLCBpbmZvTG9nKTsKKyAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OmxvZ0Fsd2F5
cyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxXYXJuLCAiRmFpbGVkIHRvIGNvbXBpbGUg
cHJvZ3JhbTogJXMiLCAmaW5mb0xvZ1swXSk7CisgICAgICAgIGdsRGVsZXRlU2hhZGVyKHNoYWRl
cik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiBzaGFkZXI7Cit9CisK
K0dMdWludCBMYXllckNvbXBpbGVkUHJvZ3JhbTo6bGlua1Byb2dyYW0oR0x1aW50IHZlcnRleFNo
YWRlciwgR0x1aW50IGZyYWdtZW50U2hhZGVyKQoreworICAgIEdMdWludCBwcm9ncmFtID0gZ2xD
cmVhdGVQcm9ncmFtKCk7CisgICAgZ2xBdHRhY2hTaGFkZXIocHJvZ3JhbSwgdmVydGV4U2hhZGVy
KTsKKyAgICBnbEF0dGFjaFNoYWRlcihwcm9ncmFtLCBmcmFnbWVudFNoYWRlcik7CisgICAgZ2xM
aW5rUHJvZ3JhbShwcm9ncmFtKTsKKworICAgIGludCBsaW5rZWQgPSAwOworICAgIGdsR2V0UHJv
Z3JhbWl2KHByb2dyYW0sIEdMX0xJTktfU1RBVFVTLCAmbGlua2VkKTsKKyAgICBpZiAoIWxpbmtl
ZCkgeworICAgICAgICAvLyBGSVhNRTogSW52YWxpZCB2ZXJ0ZXgvZnJhZ21lbnQgc2hhZGVyIGNv
bWJpbmF0aW9uLiBUaHJvdyBzb21lIGVycm9ycyBoZXJlLgorICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0MTYKKyAgICAgICAgZ2xEZWxldGVQcm9n
cmFtKHByb2dyYW0pOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICByZXR1cm4gcHJv
Z3JhbTsKK30KKwordm9pZCBMYXllckNvbXBpbGVkUHJvZ3JhbTo6aW5pdGlhbGl6ZVBhcmFtZXRl
ckxvY2F0aW9ucygpCit7CisgICAgbV9wb3NpdGlvbkF0dHJpYkxvY2F0aW9uID0gZ2xHZXRBdHRy
aWJMb2NhdGlvbihtX3Byb2dyYW0sICJhX3Bvc2l0aW9uIik7CisgICAgbV90ZXhBdHRyaWJMb2Nh
dGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24obV9wcm9ncmFtLCAiYV90ZXhDb29yZCIpOworICAg
IG1fbWVzaEF0dHJpYkxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtX3Byb2dyYW0sICJh
X21lc2hDb29yZCIpOworICAgIG1fdHJpYW5nbGVBdHRyaWJMb2NhdGlvbiA9IGdsR2V0QXR0cmli
TG9jYXRpb24obV9wcm9ncmFtLCAiYV90cmlhbmdsZUNvb3JkIik7CisgICAgbV9tZXNoQm94TG9j
YXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sICJ1X21lc2hCb3giKTsKKyAg
ICBtX3RpbGVTaXplTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sICJ1
X3RpbGVTaXplIik7CisgICAgbV9tZXNoU2l6ZUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRp
b24obV9wcm9ncmFtLCAidV9tZXNoU2l6ZSIpOworICAgIG1fcHJvamVjdGlvbk1hdHJpeExvY2F0
aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obV9wcm9ncmFtLCAidV9wcm9qZWN0aW9uTWF0cml4
Iik7CisgICAgbV9zYW1wbGVyU2l6ZUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obV9w
cm9ncmFtLCAidV90ZXh0dXJlU2l6ZSIpOworICAgIG1fY29udGVudFNhbXBsZXJMb2NhdGlvbiA9
IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInVfY29udGVudFRleHR1cmUiKTsKKyAg
ICBtX2ludGVybmFsVGV4Q29vcmRBdHRyaWJMb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24o
bV9wcm9ncmFtLCAiY3NzX2FfdGV4Q29vcmQiKTsKKyAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGds
R2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgImNzc191X3RleHR1cmUiKTsKKyAgICAvLyBG
SVhNRTogUmVtb3ZlIHRleHR1cmUgYWNjZXNzIHZpYSB1X3RleHR1cmUgYW5kIGNoYW5nZSB0aGUg
dGVzdHMgdG8gdXNlIGJsZW5kaW5nIGFuZCBjb21wb3NpdGluZy4KKyAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM4NzEKKyAgICBpZiAobV9zYW1wbGVyTG9j
YXRpb24gPT0gLTEpCisgICAgICAgIG1fc2FtcGxlckxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9j
YXRpb24obV9wcm9ncmFtLCAidV90ZXh0dXJlIik7Cit9CisKK2ludCBMYXllckNvbXBpbGVkUHJv
Z3JhbTo6dW5pZm9ybUxvY2F0aW9uQnlOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBB
U1NFUlQobV9pc0luaXRpYWxpemVkKTsKKyAgICByZXR1cm4gZ2xHZXRVbmlmb3JtTG9jYXRpb24o
bV9wcm9ncmFtLCBuYW1lLmxhdGluMSgpLmRhdGEoKSk7Cit9CisKK0xheWVyQ29tcGlsZWRQcm9n
cmFtOjp+TGF5ZXJDb21waWxlZFByb2dyYW0oKQoreworICAgIGlmIChtX3Byb2dyYW0pCisgICAg
ICAgIGdsRGVsZXRlUHJvZ3JhbShtX3Byb2dyYW0pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0xheWVyQ29tcGlsZWRQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcGlsZWRQcm9ncmFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTcwNjBk
MTc3YmFkZDQ1NmQ2M2YzYjYxMjFkZTIyMzM5NGE1OTExNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21waWxlZFBy
b2dyYW0uaApAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFkb2Jl
IFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAq
ICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWlt
ZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIExheWVyQ29tcGlsZWRQcm9ncmFtX2gKKyNkZWZpbmUg
TGF5ZXJDb21waWxlZFByb2dyYW1faAorCisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBMYXllckNvbXBpbGVkUHJvZ3JhbSA6IHB1Ymxp
YyBSZWZDb3VudGVkPExheWVyQ29tcGlsZWRQcm9ncmFtPiB7CitwdWJsaWM6CisgICAgLy8gVGhl
IHNoYWRlciBzb3VyY2Ugc2hvdWxkIGJlIHZhbGlkYXRlZCB1c2luZyBBTkdMRSB1bmxlc3MgaXQg
Y29tZXMgZnJvbSBhIHRydXN0ZWQgc291cmNlLgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPExheWVy
Q29tcGlsZWRQcm9ncmFtPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB2YWxpZGF0ZWRWZXJ0ZXhTaGFk
ZXIsIGNvbnN0IFN0cmluZyYgdmFsaWRhdGVkRnJhZ21lbnRTaGFkZXIpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IExheWVyQ29tcGlsZWRQcm9ncmFtKHZhbGlkYXRlZFZlcnRl
eFNoYWRlciwgdmFsaWRhdGVkRnJhZ21lbnRTaGFkZXIpKTsKKyAgICB9CisKKyAgICB+TGF5ZXJD
b21waWxlZFByb2dyYW0oKTsKKworICAgIC8vIEZJWE1FOiBUaGVzZSBhdHRyaWJzIGFyZSBjdXN0
b20gZmlsdGVyLXNwZWNpZmljLCBzaG91bGQgbWFrZSB0aGlzIGNsYXNzIG1vcmUgZ2VuZXJpYyB0
byByZWFsbHkgcXVhbGlmeSBmb3IgdGhlIG5hbWUgIlBsYXRmb3JtQ29tcGlsZWRQcm9ncmFtIgor
ICAgIGludCBwb3NpdGlvbkF0dHJpYkxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlv
bkF0dHJpYkxvY2F0aW9uOyB9CisgICAgaW50IHRleEF0dHJpYkxvY2F0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV90ZXhBdHRyaWJMb2NhdGlvbjsgfQorICAgIGludCBtZXNoQXR0cmliTG9jYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX21lc2hBdHRyaWJMb2NhdGlvbjsgfQorICAgIGludCB0cmlhbmds
ZUF0dHJpYkxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90cmlhbmdsZUF0dHJpYkxvY2F0aW9u
OyB9CisgICAgaW50IG1lc2hCb3hMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWVzaEJveExv
Y2F0aW9uOyB9CisgICAgaW50IHByb2plY3Rpb25NYXRyaXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fcHJvamVjdGlvbk1hdHJpeExvY2F0aW9uOyB9CisgICAgaW50IHRpbGVTaXplTG9jYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX3RpbGVTaXplTG9jYXRpb247IH0KKyAgICBpbnQgbWVzaFNp
emVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWVzaFNpemVMb2NhdGlvbjsgfQorICAgIGlu
dCBzYW1wbGVyTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZXJMb2NhdGlvbjsgfQor
ICAgIGludCBjb250ZW50U2FtcGxlckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50
U2FtcGxlckxvY2F0aW9uOyB9CisgICAgaW50IHNhbXBsZXJTaXplTG9jYXRpb24oKSBjb25zdCB7
IHJldHVybiBtX3NhbXBsZXJTaXplTG9jYXRpb247IH0KKyAgICBpbnQgaW50ZXJuYWxUZXhDb29y
ZEF0dHJpYkxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5hbFRleENvb3JkQXR0cmli
TG9jYXRpb247IH0KKworICAgIGludCB1bmlmb3JtTG9jYXRpb25CeU5hbWUoY29uc3QgU3RyaW5n
Jik7CisKKyAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5pdGlh
bGl6ZWQ7IH0KKworICAgIEdMdWludCBwcm9ncmFtKCkgY29uc3QgeyByZXR1cm4gbV9wcm9ncmFt
OyB9CisKK3ByaXZhdGU6CisgICAgTGF5ZXJDb21waWxlZFByb2dyYW0oY29uc3QgU3RyaW5nJiB2
YWxpZGF0ZWRWZXJ0ZXhTaGFkZXIsIGNvbnN0IFN0cmluZyYgdmFsaWRhdGVkRnJhZ21lbnRTaGFk
ZXIpOworCisgICAgR0x1aW50IGNvbXBpbGVTaGFkZXIoR0xlbnVtIHNoYWRlclR5cGUsIGNvbnN0
IFN0cmluZyYgc2hhZGVyU3RyaW5nKTsKKyAgICBHTHVpbnQgbGlua1Byb2dyYW0oR0x1aW50IHZl
cnRleFNoYWRlciwgR0x1aW50IGZyYWdtZW50U2hhZGVyKTsKKyAgICB2b2lkIGluaXRpYWxpemVQ
YXJhbWV0ZXJMb2NhdGlvbnMoKTsKKworICAgIEdMdWludCBtX3Byb2dyYW07CisKKyAgICBpbnQg
bV9wb3NpdGlvbkF0dHJpYkxvY2F0aW9uOworICAgIGludCBtX3RleEF0dHJpYkxvY2F0aW9uOwor
ICAgIGludCBtX21lc2hBdHRyaWJMb2NhdGlvbjsKKyAgICBpbnQgbV90cmlhbmdsZUF0dHJpYkxv
Y2F0aW9uOworICAgIGludCBtX21lc2hCb3hMb2NhdGlvbjsKKyAgICBpbnQgbV9wcm9qZWN0aW9u
TWF0cml4TG9jYXRpb247CisgICAgaW50IG1fdGlsZVNpemVMb2NhdGlvbjsKKyAgICBpbnQgbV9t
ZXNoU2l6ZUxvY2F0aW9uOworICAgIGludCBtX3NhbXBsZXJMb2NhdGlvbjsKKyAgICBpbnQgbV9z
YW1wbGVyU2l6ZUxvY2F0aW9uOworICAgIGludCBtX2NvbnRlbnRTYW1wbGVyTG9jYXRpb247Cisg
ICAgLy8gRklYTUU6IEdldCByaWQgb2YgdGhlIGludGVybmFsIHRleCBjb29yZCBhdHRyaWJ1dGUg
ImNzc19hX3RleENvb3JkIi4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTQzNTgKKyAgICBpbnQgbV9pbnRlcm5hbFRleENvb3JkQXR0cmliTG9jYXRpb247
CisKKyAgICBib29sIG1faXNJbml0aWFsaXplZDsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRmls
dGVyTWVzaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L0xheWVyRmlsdGVyTWVzaC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWNiNWU3NDkwZGVjZGRjMmIxYzUyOTcy
ZWZlMTJkYzVjYjAzYjRjZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJGaWx0ZXJNZXNoLmNwcApAQCAtMCwwICsxLDc0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVk
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIElu
IE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisjaW5jbHVkZSAiTGF5
ZXJGaWx0ZXJNZXNoLmgiCisKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmgi
CisjaW5jbHVkZSAiTGF5ZXJGaWx0ZXJSZW5kZXJlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK0xheWVyRmlsdGVyTWVzaDo6TGF5ZXJGaWx0ZXJNZXNoKExheWVyRmlsdGVyUmVuZGVyZXIq
IGZpbHRlclJlbmRlcmVyLCB1bnNpZ25lZCBjb2x1bW5zLCB1bnNpZ25lZCByb3dzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRSZWN0JiBtZXNoQm94LCBDdXN0
b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBlIG1lc2hUeXBlKQorICAgIDogbV9maWx0ZXJSZW5k
ZXJlcihmaWx0ZXJSZW5kZXJlcikKKyAgICAsIG1fdmVydGljZXNCdWZmZXJPYmplY3QoMCkKKyAg
ICAsIG1fZWxlbWVudHNCdWZmZXJPYmplY3QoMCkKKyAgICAsIG1fbWVzaEJveChtZXNoQm94KQor
ICAgICwgbV9tZXNoVHlwZShtZXNoVHlwZSkKKyAgICAsIG1fY29sdW1uQ291bnQoY29sdW1ucykK
KyAgICAsIG1fcm93Q291bnQocm93cykKK3sKKyAgICBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9y
IGdlbmVyYXRvcihjb2x1bW5zLCByb3dzLCBtZXNoQm94LCBtZXNoVHlwZSk7CisgICAgbV9pbmRp
Y2VzQ291bnQgPSBnZW5lcmF0b3IuaW5kaWNlc0NvdW50KCk7CisgICAgbV9ieXRlc1BlclZlcnRl
eCA9IGdlbmVyYXRvci5mbG9hdHNQZXJWZXJ0ZXgoKSAqIHNpemVvZihmbG9hdCk7CisKKyAgICBn
bEdlbkJ1ZmZlcnMoMSwgJm1fdmVydGljZXNCdWZmZXJPYmplY3QpOworICAgIGdsQmluZEJ1ZmZl
cihHTF9BUlJBWV9CVUZGRVIsIG1fdmVydGljZXNCdWZmZXJPYmplY3QpOworICAgIGdsQnVmZmVy
RGF0YShHTF9BUlJBWV9CVUZGRVIsIGdlbmVyYXRvci52ZXJ0aWNlcygpLnNpemUoKSAqIHNpemVv
ZihmbG9hdCksIGdlbmVyYXRvci52ZXJ0aWNlcygpLmRhdGEoKSwgR0xfU1RBVElDX0RSQVcpOwor
CisgICAgZ2xHZW5CdWZmZXJzKDEsICZtX2VsZW1lbnRzQnVmZmVyT2JqZWN0KTsKKyAgICBnbEJp
bmRCdWZmZXIoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG1fZWxlbWVudHNCdWZmZXJPYmplY3Qp
OworICAgIGdsQnVmZmVyRGF0YShHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgZ2VuZXJhdG9yLmlu
ZGljZXMoKS5zaXplKCkgKiBzaXplb2YodWludDE2X3QpLCBnZW5lcmF0b3IuaW5kaWNlcygpLmRh
dGEoKSwgR0xfU1RBVElDX0RSQVcpOworfQorCitMYXllckZpbHRlck1lc2g6On5MYXllckZpbHRl
ck1lc2goKQoreworICAgIGdsRGVsZXRlQnVmZmVycygxLCAmbV92ZXJ0aWNlc0J1ZmZlck9iamVj
dCk7CisgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZtX2VsZW1lbnRzQnVmZmVyT2JqZWN0KTsKKwor
ICAgIG1fZmlsdGVyUmVuZGVyZXItPmZpbHRlck1lc2hEZXN0cm95ZWQodGhpcyk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5
ZXJGaWx0ZXJNZXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0xheWVyRmlsdGVyTWVzaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhNmFmYzVhYTQ2ZjRiMWY4YjI5NGRi
MjI5Y2I3MDljOGEyMzI2YTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRmlsdGVyTWVzaC5oCkBAIC0wLDAgKzEsODcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4g
TW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgTGF5ZXJGaWx0ZXJNZXNoX2gKKyNkZWZpbmUgTGF5ZXJGaWx0ZXJNZXNoX2gKKworI2lmIEVO
QUJMRShDU1NfU0hBREVSUykKKworI2luY2x1ZGUgIkN1c3RvbUZpbHRlck9wZXJhdGlvbi5oIgor
I2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTGF5ZXJG
aWx0ZXJSZW5kZXJlcjsKKworY2xhc3MgTGF5ZXJGaWx0ZXJNZXNoIDogcHVibGljIFJlZkNvdW50
ZWQ8TGF5ZXJGaWx0ZXJNZXNoPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TGF5
ZXJGaWx0ZXJNZXNoPiBjcmVhdGUoTGF5ZXJGaWx0ZXJSZW5kZXJlciogZmlsdGVyUmVuZGVyZXIs
IHVuc2lnbmVkIGNvbHVtbnMsIHVuc2lnbmVkIHJvd3MsIGNvbnN0IEZsb2F0UmVjdCYgbWVzaEJv
eCwgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSBtZXNoVHlwZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgTGF5ZXJGaWx0ZXJNZXNoKGZpbHRlclJlbmRlcmVyLCBj
b2x1bW5zLCByb3dzLCBtZXNoQm94LCBtZXNoVHlwZSkpOworICAgIH0KKyAgICB+TGF5ZXJGaWx0
ZXJNZXNoKCk7CisKKyAgICBHTHVpbnQgdmVydGljZXNCdWZmZXJPYmplY3QoKSBjb25zdCB7IHJl
dHVybiBtX3ZlcnRpY2VzQnVmZmVyT2JqZWN0OyB9CisgICAgdW5zaWduZWQgYnl0ZXNQZXJWZXJ0
ZXgoKSBjb25zdCB7IHJldHVybiBtX2J5dGVzUGVyVmVydGV4OyB9CisKKyAgICBHTHVpbnQgZWxl
bWVudHNCdWZmZXJPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRzQnVmZmVyT2JqZWN0
OyB9CisgICAgdW5zaWduZWQgaW5kaWNlc0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV9pbmRpY2Vz
Q291bnQ7IH0KKworICAgIGNvbnN0IEZsb2F0UmVjdCYgbWVzaEJveCgpIGNvbnN0IHsgcmV0dXJu
IG1fbWVzaEJveDsgfQorICAgIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaFR5cGUgbWVzaFR5
cGUoKSBjb25zdCB7IHJldHVybiBtX21lc2hUeXBlOyB9CisKKyAgICB1bnNpZ25lZCBjb2x1bW5D
b3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29sdW1uQ291bnQ7IH0KKyAgICB1bnNpZ25lZCByb3dD
b3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcm93Q291bnQ7IH0KKworcHJpdmF0ZToKKyAgICBMYXll
ckZpbHRlck1lc2goTGF5ZXJGaWx0ZXJSZW5kZXJlciosIHVuc2lnbmVkIGNvbHMsIHVuc2lnbmVk
IHJvd3MsIGNvbnN0IEZsb2F0UmVjdCYgbWVzaEJveCwgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpN
ZXNoVHlwZSk7CisKKyAgICBMYXllckZpbHRlclJlbmRlcmVyKiBtX2ZpbHRlclJlbmRlcmVyOwor
CisgICAgR0x1aW50IG1fdmVydGljZXNCdWZmZXJPYmplY3Q7CisgICAgdW5zaWduZWQgbV9ieXRl
c1BlclZlcnRleDsKKworICAgIEdMdWludCBtX2VsZW1lbnRzQnVmZmVyT2JqZWN0OworICAgIHVu
c2lnbmVkIG1faW5kaWNlc0NvdW50OworCisgICAgRmxvYXRSZWN0IG1fbWVzaEJveDsKKyAgICBD
dXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBlIG1fbWVzaFR5cGU7CisKKyAgICB1bnNpZ25l
ZCBtX2NvbHVtbkNvdW50OworICAgIHVuc2lnbmVkIG1fcm93Q291bnQ7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NIQURFUlMpCisKKyNlbmRp
ZiAvLyBMYXllckZpbHRlck1lc2hfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckZpbHRlclJlbmRlcmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJGaWx0ZXJSZW5kZXJlci5j
cHAKaW5kZXggZjQwYWI3MzUxNWJlMjc3Yzg2ODIyNThmNjRiOTQxZmY1ZmMxNmRkMi4uNjcwYmM1
NzBjNDIwYjJiNWQ3ZDg1ODVmYWNmNjRmZGU1YjM2NzE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckZpbHRlclJlbmRlcmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVy
RmlsdGVyUmVuZGVyZXIuY3BwCkBAIC0yMiw2ICsyMiwxMCBAQAogCiAjaW5jbHVkZSAiTGF5ZXJG
aWx0ZXJSZW5kZXJlci5oIgogCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVy
LmgiCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUGFyYW1ldGVyLmgiCisjaW5jbHVkZSAiQ3VzdG9t
RmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyLmgiCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyVmFsaWRh
dGVkUHJvZ3JhbS5oIgogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkxh
eWVyQ29tcG9zaXRpbmdUaHJlYWQuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyLmgiCkBAIC0y
NDIsNiArMjQ2LDkgQEAgUGFzc1JlZlB0cjxMYXllckZpbHRlclJlbmRlcmVyQWN0aW9uPiBMYXll
ckZpbHRlclJlbmRlcmVyQWN0aW9uOjpjcmVhdGUoaW50IHByb2cKIAogTGF5ZXJGaWx0ZXJSZW5k
ZXJlckFjdGlvbjo6TGF5ZXJGaWx0ZXJSZW5kZXJlckFjdGlvbihpbnQgY19wcm9ncmFtSWQpCiAg
ICAgOiBtX3Byb2dyYW1JZChjX3Byb2dyYW1JZCkKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisg
ICAgLCBtX2N1c3RvbUlkKC0xKQorI2VuZGlmCiAgICAgLCBtX3B1c2hTbmFwc2hvdChmYWxzZSkK
ICAgICAsIG1fcG9wU25hcHNob3QoZmFsc2UpCiAgICAgLCBtX2RyYXdpbmdNb2RlKERyYXdUcmlh
bmdsZUZhbkFycmF5cykKQEAgLTI1MCwxMiArMjU3LDE5IEBAIExheWVyRmlsdGVyUmVuZGVyZXJB
Y3Rpb246OkxheWVyRmlsdGVyUmVuZGVyZXJBY3Rpb24oaW50IGNfcHJvZ3JhbUlkKQogCiB2b2lk
IExheWVyRmlsdGVyUmVuZGVyZXJBY3Rpb246OnVzZUFjdGlvbk9uKExheWVyRmlsdGVyUmVuZGVy
ZXIqIHJlbmRlcmVyKQogewotICAgIEFTU0VSVChtX3Byb2dyYW1JZCAhPSAtMSk7Ci0gICAgaWYg
KG1fcHJvZ3JhbUlkID09IC0xKSB7CisgICAgQVNTRVJUKG1fcHJvZ3JhbUlkICE9IC0xIHx8IG1f
Y3VzdG9tSWQgIT0gLTEpOworCisgICAgaWYgKG1fY3VzdG9tSWQgIT0gLTEpCisgICAgICAgIGds
VXNlUHJvZ3JhbShtX2N1c3RvbUlkKTsKKworICAgIGlmIChtX2N1c3RvbUlkID09IC0xKQorICAg
ICAgICBnbFVzZVByb2dyYW0ocmVuZGVyZXItPm1fY3NzRmlsdGVyUHJvZ3JhbU9iamVjdFttX3By
b2dyYW1JZF0pOworCisgICAgaWYgKG1fcHJvZ3JhbUlkID09IC0xICYmIG1fY3VzdG9tSWQgPT0g
LTEpIHsKICAgICAgICAgZ2xVc2VQcm9ncmFtKHJlbmRlcmVyLT5tX2Nzc0ZpbHRlclByb2dyYW1P
YmplY3RbTGF5ZXJEYXRhOjpDU1NGaWx0ZXJTaGFkZXJQYXNzdGhyb3VnaF0pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIGdsVXNlUHJvZ3JhbShyZW5kZXJlci0+bV9jc3NGaWx0ZXJQcm9n
cmFtT2JqZWN0W21fcHJvZ3JhbUlkXSk7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9wYXJhbWV0ZXJzLnNpemUoKTsgKytpKQogICAgICAgICBtX3BhcmFtZXRlcnNbaV0tPmFwcGx5
KCk7CiB9CkBAIC00NjAsNiArNDc0LDkgQEAgYm9vbCBMYXllckZpbHRlclJlbmRlcmVyOjppbml0
aWFsaXplU2hhcmVkR0xPYmplY3RzKCkKICAgICAgICAgfQogICAgICk7CiAKKyNpZiBFTkFCTEUo
Q1NTX1NIQURFUlMpCisgICAgc2hhZGVyU3Ryc1tMYXllckRhdGE6OkNTU0ZpbHRlclNoYWRlckN1
c3RvbV0gPQorI2VuZGlmCiAgICAgc2hhZGVyU3Ryc1tMYXllckRhdGE6OkNTU0ZpbHRlclNoYWRl
clBhc3N0aHJvdWdoXSA9IFNUQU5EQVJEX0ZJTFRFUigKICAgICAgICAgbG93cCB2ZWM0IHNoYWRl
KGxvd3AgdmVjNCBjb2xvcikKICAgICAgICAgewpAQCAtNTM5LDYgKzU1NiwzMyBAQCB2b2lkIExh
eWVyRmlsdGVyUmVuZGVyZXI6OnBvcFNuYXBzaG90KCkKICNlbmRpZgogfQogCisjaWYgRU5BQkxF
KENTU19TSEFERVJTKQorUGFzc1JlZlB0cjxMYXllckNvbXBpbGVkUHJvZ3JhbT4gTGF5ZXJGaWx0
ZXJSZW5kZXJlcjo6Z2V0Q29tcGlsZWRQcm9ncmFtKGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1J
bmZvJiBwcm9ncmFtSW5mbykKK3sKKyAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJv
Z3JhbT4gdmFsaWRhdGVkUHJvZ3JhbSA9IG1fcHJvZ3JhbVZhbGlkYXRvci5nZXRWYWxpZGF0ZWRQ
cm9ncmFtKHByb2dyYW1JbmZvKTsKKyAgICByZXR1cm4gdmFsaWRhdGVkUHJvZ3JhbS0+cGxhdGZv
cm1Db21waWxlZFByb2dyYW0oKTsKK30KKworUGFzc1JlZlB0cjxMYXllckZpbHRlck1lc2g+IExh
eWVyRmlsdGVyUmVuZGVyZXI6OmdldEZpbHRlck1lc2godW5zaWduZWQgY29scywgdW5zaWduZWQg
cm93cywgY29uc3QgRmxvYXRSZWN0JiBtZXNoQm94LCBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1l
c2hUeXBlIG1lc2hUeXBlKQoreworICAgIGZvciAoSGFzaFNldDxMYXllckZpbHRlck1lc2gqPjo6
aXRlcmF0b3IgaXQgPSBtX21lc2hTZXQuYmVnaW4oKTsgaXQgIT0gbV9tZXNoU2V0LmVuZCgpOyAr
K2l0KSB7CisgICAgICAgIGlmICgoKml0KS0+Y29sdW1uQ291bnQoKSA9PSBjb2xzICYmICgqaXQp
LT5yb3dDb3VudCgpID09IHJvd3MgJiYgKCppdCktPm1lc2hCb3goKSA9PSBtZXNoQm94KQorICAg
ICAgICAgICAgcmV0dXJuICppdDsKKyAgICB9CisKKyAgICBSZWZQdHI8TGF5ZXJGaWx0ZXJNZXNo
PiBtZXNoID0gTGF5ZXJGaWx0ZXJNZXNoOjpjcmVhdGUodGhpcywgY29scywgcm93cywgbWVzaEJv
eCwgbWVzaFR5cGUpOworICAgIG1fbWVzaFNldC5hZGQobWVzaC5nZXQoKSk7CisKKyAgICByZXR1
cm4gbWVzaC5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgTGF5ZXJGaWx0ZXJSZW5kZXJlcjo6ZmlsdGVy
TWVzaERlc3Ryb3llZChMYXllckZpbHRlck1lc2gqIG1lc2gpCit7CisgICAgbV9tZXNoU2V0LnJl
bW92ZShtZXNoKTsKK30KKworI2VuZGlmCisKIFZlY3RvcjxSZWZQdHI8TGF5ZXJGaWx0ZXJSZW5k
ZXJlckFjdGlvbj4gPiBMYXllckZpbHRlclJlbmRlcmVyOjphY3Rpb25zRm9yT3BlcmF0aW9ucyhM
YXllclJlbmRlcmVyU3VyZmFjZSogc3VyZmFjZSwgY29uc3QgVmVjdG9yPFJlZlB0cjxGaWx0ZXJP
cGVyYXRpb24+ID4mIG9wcykKIHsKICAgICBWZWN0b3I8UmVmUHRyPExheWVyRmlsdGVyUmVuZGVy
ZXJBY3Rpb24+ID4gcmV0OwpAQCAtNTY1LDggKzYwOSw3IEBAIFZlY3RvcjxSZWZQdHI8TGF5ZXJG
aWx0ZXJSZW5kZXJlckFjdGlvbj4gPiBMYXllckZpbHRlclJlbmRlcmVyOjphY3Rpb25zRm9yT3Bl
cmF0CiAgICAgICAgICAgICByZXQubGFzdCgpLT5hcHBlbmRQYXJhbWV0ZXIoVW5pZm9ybTFmOjpj
cmVhdGUobV9hbW91bnRMb2NhdGlvbltwcm9ncmFtSWRdCiAgICAgICAgICAgICAgICAgLCBzdGF0
aWNfY2FzdDxjb25zdCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uJj4ob3Bl
cmF0aW9uKS5hbW91bnQoKSkpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRmls
dGVyT3BlcmF0aW9uOjpCTFVSOgotICAgICAgICAgICAgeworICAgICAgICBjYXNlIEZpbHRlck9w
ZXJhdGlvbjo6QkxVUjogewogICAgICAgICAgICAgLy8gQmx1ciBpcyBhIHR3by1zdGVwIHByb2Nl
c3M6CiAgICAgICAgICAgICAvLyAgICAgMS4gYmx1ciBYCiAgICAgICAgICAgICAvLyAgICAgMi4g
Ymx1ciBZCkBAIC01ODUsMTAgKzYyOCw5IEBAIFZlY3RvcjxSZWZQdHI8TGF5ZXJGaWx0ZXJSZW5k
ZXJlckFjdGlvbj4gPiBMYXllckZpbHRlclJlbmRlcmVyOjphY3Rpb25zRm9yT3BlcmF0CiAgICAg
ICAgICAgICByZXQubGFzdCgpLT5hcHBlbmRQYXJhbWV0ZXIoVW5pZm9ybTFmOjpjcmVhdGUobV9i
bHVyQW1vdW50TG9jYXRpb25bMV0KICAgICAgICAgICAgICAgICAsIDEuMGYgLyBmbG9hdChzdXJm
YWNlLT5zaXplKCkud2lkdGgoKSkpKTsKIAotICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVzoKLSAgICAgICAg
ICAgIHsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFE
T1c6IHsKICAgICAgICAgICAgIC8vIFNoYWRvdyBpcyBhIGZvdXItc3RlcCBwcm9jZXNzOgogICAg
ICAgICAgICAgLy8gICAgIDEuIGNhcHR1cmUgc25hcHNob3QKICAgICAgICAgICAgIC8vICAgICAg
ICB0dXJuIGludG8gYSBzb2xpZCBvZmZzZXQgbWFzawpAQCAtNjE5LDExICs2NjEsMTIzIEBAIFZl
Y3RvcjxSZWZQdHI8TGF5ZXJGaWx0ZXJSZW5kZXJlckFjdGlvbj4gPiBMYXllckZpbHRlclJlbmRl
cmVyOjphY3Rpb25zRm9yT3BlcmF0CiAgICAgICAgICAgICByZXQubGFzdCgpLT5hcHBlbmRQYXJh
bWV0ZXIoVW5pZm9ybTFmOjpjcmVhdGUobV9ibHVyQW1vdW50TG9jYXRpb25bMV0KICAgICAgICAg
ICAgICAgICAsIDEuMGYgLyBmbG9hdChzdXJmYWNlLT5zaXplKCkud2lkdGgoKSkpKTsKIAotICAg
ICAgICAgICAgLy8gUmVwYWludCBvcmlnaW5hbCBpbWFnZQorICAgICAgICAgICAgLy8gUmVwYWlu
dCBvcmlnaW5hbCBpbWFnZS4KICAgICAgICAgICAgIHJldC5hcHBlbmQoTGF5ZXJGaWx0ZXJSZW5k
ZXJlckFjdGlvbjo6Y3JlYXRlKExheWVyRGF0YTo6Q1NTRmlsdGVyU2hhZGVyUGFzc3Rocm91Z2gp
KTsKICAgICAgICAgICAgIHJldC5sYXN0KCktPnNldFBvcFNuYXBzaG90KCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICAgICAgY2Fz
ZSBGaWx0ZXJPcGVyYXRpb246OkNVU1RPTTogeworICAgICAgICAgICAgLy8gU2VlIEZFQ3VzdG9t
RmlsdGVyOjpiaW5kUHJvZ3JhbUFuZEJ1ZmZlcnMuCisKKyAgICAgICAgICAgIGNvbnN0IEN1c3Rv
bUZpbHRlck9wZXJhdGlvbiYgY2ZvID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3VzdG9tRmlsdGVyT3Bl
cmF0aW9uJj4ob3BlcmF0aW9uKTsKKworICAgICAgICAgICAgUmVmUHRyPExheWVyQ29tcGlsZWRQ
cm9ncmFtPiBzaGFkZXIgPSBnZXRDb21waWxlZFByb2dyYW0oY2ZvLnByb2dyYW0oKS0+cHJvZ3Jh
bUluZm8oKSk7CisgICAgICAgICAgICBSZWZQdHI8TGF5ZXJGaWx0ZXJNZXNoPiBtZXNoID0gZ2V0
RmlsdGVyTWVzaChjZm8ubWVzaENvbHVtbnMoKSwgY2ZvLm1lc2hSb3dzKCksIEZsb2F0UmVjdCgw
LCAwLCAxLCAxKSwgY2ZvLm1lc2hUeXBlKCkpOworCisgICAgICAgICAgICBpZiAoc2hhZGVyLT5z
YW1wbGVyTG9jYXRpb24oKSAhPSAtMSkKKyAgICAgICAgICAgICAgICByZXQubGFzdCgpLT5hcHBl
bmRQYXJhbWV0ZXIoVW5pZm9ybTFpOjpjcmVhdGUoc2hhZGVyLT5zYW1wbGVyTG9jYXRpb24oKSwg
MCkpOworCisgICAgICAgICAgICBpZiAoc2hhZGVyLT5wcm9qZWN0aW9uTWF0cml4TG9jYXRpb24o
KSAhPSAtMSkgeworICAgICAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHByb2plY3Rp
b25NYXRyaXggPSBMYXllclJlbmRlcmVyOjpvcnRob01hdHJpeCgtMC41LCAwLjUsIC0wLjUsIDAu
NSwgLTEwMDAwLCAxMDAwMCk7CisgICAgICAgICAgICAgICAgZmxvYXQgZ2xQcm9qZWN0aW9uTWF0
cml4WzE2XTsKKyAgICAgICAgICAgICAgICBwcm9qZWN0aW9uTWF0cml4LnRvQ29sdW1uTWFqb3JG
bG9hdEFycmF5KGdsUHJvamVjdGlvbk1hdHJpeCk7CisKKyAgICAgICAgICAgICAgICAvLyBUaGlz
IHdpbGwgbWFrZSBhIGRlZXAgY29weSBvZiBnbFByb2plY3Rpb25NYXRyaXguCisgICAgICAgICAg
ICAgICAgcmV0Lmxhc3QoKS0+YXBwZW5kUGFyYW1ldGVyKE1hdHJpeDRmdjo6Y3JlYXRlKHNoYWRl
ci0+cHJvamVjdGlvbk1hdHJpeExvY2F0aW9uKCksIDEsIEdMX0ZBTFNFLCAmZ2xQcm9qZWN0aW9u
TWF0cml4WzBdKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldC5sYXN0KCktPmFw
cGVuZFBhcmFtZXRlcihCdWZmZXI6OmNyZWF0ZShHTF9BUlJBWV9CVUZGRVIsIG1lc2gtPnZlcnRp
Y2VzQnVmZmVyT2JqZWN0KCkpKTsKKyAgICAgICAgICAgIHJldC5sYXN0KCktPmFwcGVuZFBhcmFt
ZXRlcihCdWZmZXI6OmNyZWF0ZShHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbWVzaC0+ZWxlbWVu
dHNCdWZmZXJPYmplY3QoKSkpOworICAgICAgICAgICAgcmV0Lmxhc3QoKS0+c2V0RHJhd2luZ01v
ZGUoTGF5ZXJGaWx0ZXJSZW5kZXJlckFjdGlvbjo6RHJhd1RyaWFuZ2xlRWxlbWVudHNVU2hvcnQw
KTsKKyAgICAgICAgICAgIHJldC5sYXN0KCktPnNldERyYXdpbmdNb2RlUGFyYW1ldGVyKG1lc2gt
PmluZGljZXNDb3VudCgpKTsKKworICAgICAgICAgICAgaW50IG9mZnNldCA9IDA7CisKKyAgICAg
ICAgICAgIGlmIChzaGFkZXItPnBvc2l0aW9uQXR0cmliTG9jYXRpb24oKSAhPSAtMSkgeworICAg
ICAgICAgICAgICAgIHJldC5sYXN0KCktPmFwcGVuZFBhcmFtZXRlcihWZXJ0ZXhBdHRyaWJmOjpj
cmVhdGUoc2hhZGVyLT5wb3NpdGlvbkF0dHJpYkxvY2F0aW9uKCksIDQsIG1lc2gtPmJ5dGVzUGVy
VmVydGV4KCksIG9mZnNldCkpOworICAgICAgICAgICAgICAgIG9mZnNldCArPSA0ICogc2l6ZW9m
KGZsb2F0KTsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHNoYWRlci0+aW50ZXJu
YWxUZXhDb29yZEF0dHJpYkxvY2F0aW9uKCkgIT0gLTEpIHsKKyAgICAgICAgICAgICAgICByZXQu
bGFzdCgpLT5hcHBlbmRQYXJhbWV0ZXIoVmVydGV4QXR0cmliZjo6Y3JlYXRlKHNoYWRlci0+aW50
ZXJuYWxUZXhDb29yZEF0dHJpYkxvY2F0aW9uKCksIDIsIG1lc2gtPmJ5dGVzUGVyVmVydGV4KCks
IG9mZnNldCkpOworICAgICAgICAgICAgICAgIG9mZnNldCArPSAyICogc2l6ZW9mKGZsb2F0KTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHNoYWRlci0+dGV4QXR0cmliTG9jYXRp
b24oKSAhPSAtMSkgeworICAgICAgICAgICAgICAgIHJldC5sYXN0KCktPmFwcGVuZFBhcmFtZXRl
cihWZXJ0ZXhBdHRyaWJmOjpjcmVhdGUoc2hhZGVyLT50ZXhBdHRyaWJMb2NhdGlvbigpLCAyLCBt
ZXNoLT5ieXRlc1BlclZlcnRleCgpLCBvZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBvZmZzZXQg
Kz0gMiAqIHNpemVvZihmbG9hdCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChz
aGFkZXItPm1lc2hBdHRyaWJMb2NhdGlvbigpICE9IC0xKSB7CisgICAgICAgICAgICAgICAgcmV0
Lmxhc3QoKS0+YXBwZW5kUGFyYW1ldGVyKFZlcnRleEF0dHJpYmY6OmNyZWF0ZShzaGFkZXItPm1l
c2hBdHRyaWJMb2NhdGlvbigpLCAyLCBtZXNoLT5ieXRlc1BlclZlcnRleCgpLCBvZmZzZXQpKTsK
KyAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMiAqIHNpemVvZihmbG9hdCk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmIChjZm8ubWVzaFR5cGUoKSA9PSBDdXN0b21GaWx0ZXJPcGVy
YXRpb246OkRFVEFDSEVEICYmIHNoYWRlci0+dHJpYW5nbGVBdHRyaWJMb2NhdGlvbigpICE9IC0x
KSB7CisgICAgICAgICAgICAgICAgcmV0Lmxhc3QoKS0+YXBwZW5kUGFyYW1ldGVyKFZlcnRleEF0
dHJpYmY6OmNyZWF0ZShzaGFkZXItPnRyaWFuZ2xlQXR0cmliTG9jYXRpb24oKSwgMywgbWVzaC0+
Ynl0ZXNQZXJWZXJ0ZXgoKSwgb2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDMg
KiBzaXplb2YoZmxvYXQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgY2ZvLnBhcmFtZXRlcnMoKS5zaXplKCk7ICsraSkgeworICAgICAgICAg
ICAgICAgIGludCBsb2NhdGlvbiA9IHNoYWRlci5nZXQoKS0+dW5pZm9ybUxvY2F0aW9uQnlOYW1l
KGNmby5wYXJhbWV0ZXJzKClbaV0tPm5hbWUoKSk7CisgICAgICAgICAgICAgICAgaWYgKGxvY2F0
aW9uID09IC0xKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAg
ICBzd2l0Y2ggKGNmby5wYXJhbWV0ZXJzKClbaV0tPnBhcmFtZXRlclR5cGUoKSkgeworICAgICAg
ICAgICAgICAgIGNhc2UgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyOjpOVU1CRVI6IHsKKyAgICAgICAg
ICAgICAgICAgICAgY29uc3QgQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyJiBudW1iZXIgPSBz
dGF0aWNfY2FzdDxDdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXImPigqY2ZvLnBhcmFtZXRlcnMo
KVtpXS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobnVtYmVyLnNpemUoKSkg
eworICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXQubGFzdCgpLT5hcHBlbmRQYXJhbWV0ZXIoVW5pZm9ybTFmOjpjcmVhdGUobG9jYXRpb24sIG51
bWJlci52YWx1ZUF0KDApKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0Lmxhc3Qo
KS0+YXBwZW5kUGFyYW1ldGVyKFVuaWZvcm0yZjo6Y3JlYXRlKGxvY2F0aW9uLCBudW1iZXIudmFs
dWVBdCgwKSwgbnVtYmVyLnZhbHVlQXQoMSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXQubGFzdCgpLT5hcHBlbmRQYXJhbWV0ZXIoVW5pZm9ybTNmOjpjcmVhdGUobG9jYXRpb24s
IG51bWJlci52YWx1ZUF0KDApLCBudW1iZXIudmFsdWVBdCgxKSwgbnVtYmVyLnZhbHVlQXQoMikp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBj
YXNlIDQ6CisgICAgICAgICAgICAgICAgICAgICAgICByZXQubGFzdCgpLT5hcHBlbmRQYXJhbWV0
ZXIoVW5pZm9ybTRmOjpjcmVhdGUobG9jYXRpb24sIG51bWJlci52YWx1ZUF0KDApLCBudW1iZXIu
dmFsdWVBdCgxKSwgbnVtYmVyLnZhbHVlQXQoMiksIG51bWJlci52YWx1ZUF0KDMpKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfSAvLyBzd2l0
Y2gobnVtYmVyLnNpemUoKSkKKworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9IC8vIGNhc2UgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyOjpOVU1CRVIKKyAgICAgICAg
ICAgICAgICBjYXNlIEN1c3RvbUZpbHRlclBhcmFtZXRlcjo6VFJBTlNGT1JNOiB7CisgICAgICAg
ICAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKKworICAgICAgICAg
ICAgICAgICAgICBpZiAoc3VyZmFjZS0+Y29udGVudFJlY3QoKS53aWR0aCgpICYmIHN1cmZhY2Ut
PmNvbnRlbnRSZWN0KCkuaGVpZ2h0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRo
ZSB2aWV3cG9ydCBpcyBhIGJveCB3aXRoIHRoZSBzaXplIG9mIDEgdW5pdCwgc28gd2UgYXJlIHNj
YWxsaW5nIHVwIGhlcmUgdG8gbWFrZSBzdXJlIHRoYXQgdHJhbnNsYXRpb25zIGhhcHBlbiB1c2lu
ZyByZWFsIHBpeGVscworICAgICAgICAgICAgICAgICAgICAgICAgLy8gdW5pdHMuIEF0IHRoZSBl
bmQgd2Ugc2NhbGUgYmFjayBkb3duIGluIG9yZGVyIHRvIG1hcCBpdCBiYWNrIHRvIHRoZSBvcmln
aW5hbCBib3guIE5vdGUgdGhhdCB0cmFuc2Zvcm1zIGNvbWUgaW4gcmV2ZXJzZSBvcmRlciwgYmVj
YXVzZSBpdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3VwcG9zZWQgdG8gbXVsdGlw
bHkgdG8gdGhlIGxlZnQgb2YgdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSB2ZXJ0aWNlcy4KKyAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGUgb3JpZ2luICgwLCAwKSBvZiB0aGUg
dmlld3BvcnQgaXMgaW4gdGhlIG1pZGRsZSBvZiB0aGUgY29udGV4dCwgc28gdGhlcmUncyBubyBu
ZWVkIHRvIGNoYW5nZSB0aGUgb3JpZ2luIG9mIHRoZSB0cmFuc2Zvcm0KKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGluIG9yZGVyIHRvIHJvdGF0ZSBhcm91bmQgdGhlIG1pZGRsZSBvZiBtZXNo
LgorICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtLnNjYWxlM2QoMS4wIC8gc3VyZmFj
ZS0+Y29udGVudFJlY3QoKS53aWR0aCgpLCAxLjAgLyBzdXJmYWNlLT5jb250ZW50UmVjdCgpLmhl
aWdodCgpLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEN1c3RvbUZp
bHRlclRyYW5zZm9ybVBhcmFtZXRlcio+KGNmby5wYXJhbWV0ZXJzKClbaV0uZ2V0KCkpLT5hcHBs
eVRyYW5zZm9ybSh0cmFuc2Zvcm0sIHJvdW5kZWRJbnRTaXplKHN1cmZhY2UtPmNvbnRlbnRSZWN0
KCkuc2l6ZSgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm0uc2NhbGUzZChz
dXJmYWNlLT5jb250ZW50UmVjdCgpLndpZHRoKCksIHN1cmZhY2UtPmNvbnRlbnRSZWN0KCkuaGVp
Z2h0KCksIDEpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGZs
b2F0IGdsTWF0cml4WzE2XTsKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtLnRvQ29sdW1u
TWFqb3JGbG9hdEFycmF5KGdsTWF0cml4KTsKKworICAgICAgICAgICAgICAgICAgICAvLyBUaGlz
IHdpbGwgY3JlYXRlIGEgZGVlcC1jb3B5IG9mIGdsTWF0cml4LgorICAgICAgICAgICAgICAgICAg
ICByZXQubGFzdCgpLT5hcHBlbmRQYXJhbWV0ZXIoTWF0cml4NGZ2OjpjcmVhdGUobG9jYXRpb24s
IDEsIGZhbHNlLCAmZ2xNYXRyaXhbMF0pKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfSAvLyBjYXNlIEN1c3RvbUZpbHRlclBhcmFtZXRlcjo6VFJBTlNGT1JN
CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0Lmxhc3QoKS0+dXNlQ3VzdG9tU2hh
ZGVyKHNoYWRlci5yZWxlYXNlKCkpOworICAgICAgICAgICAgcmV0Lmxhc3QoKS0+YWRvcHRNZXNo
KG1lc2gucmVsZWFzZSgpKTsgLy8gT2JqZWN0cyBmcm9tIG1lc2ggYXJlIHVzZWQgaW4gR0xfQVJS
QVlfQlVGRkVSIGFuZCBHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUgogICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTcwOCw3ICs4NjIsOSBAQCB2
b2lkIExheWVyRmlsdGVyUmVuZGVyZXI6OmFwcGx5QWN0aW9ucyh1bnNpZ25lZCYgZmJvLCBMYXll
ckNvbXBvc2l0aW5nVGhyZWFkKiBsYQogICAgICAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFO
R0xFX0ZBTiwgMCwgNCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBMYXllckZp
bHRlclJlbmRlcmVyQWN0aW9uOjpEcmF3VHJpYW5nbGVFbGVtZW50c1VTaG9ydDA6CisgICAgICAg
ICAgICBnbFZpZXdwb3J0KDAuNSwgMC41LCBzdXJmYWNlLT5zaXplKCkud2lkdGgoKSwgc3VyZmFj
ZS0+c2l6ZSgpLmhlaWdodCgpKTsKICAgICAgICAgICAgIGdsRHJhd0VsZW1lbnRzKEdMX1RSSUFO
R0xFUywgYWN0aW9uc1tpXS0+ZHJhd2luZ01vZGVQYXJhbWV0ZXIoKSwgR0xfVU5TSUdORURfU0hP
UlQsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDApKSk7
CisgICAgICAgICAgICBnbFZpZXdwb3J0KDAuMCwgMC4wLCBzdXJmYWNlLT5zaXplKCkud2lkdGgo
KSwgc3VyZmFjZS0+c2l6ZSgpLmhlaWdodCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIExheWVyRmlsdGVyUmVuZGVyZXJBY3Rpb246Ok51bWJlck9mRHJhd2luZ01vZGVzOgog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRmlsdGVyUmVuZGVyZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJGaWx0ZXJS
ZW5kZXJlci5oCmluZGV4IDNiMjhkMDhhYjQ3Zjk3ZjQxNzEzYWNjNTZkOGJmOWVlYTZmZDNhMTQu
LjZiYzQ0MjI5M2Y2NjBkMGExYWM4ZGNhZDU0MGZjYzg1MTkxZjA0NmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJGaWx0ZXJSZW5k
ZXJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
TGF5ZXJGaWx0ZXJSZW5kZXJlci5oCkBAIC0yMSw4ICsyMSwxMiBAQAogCiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAKKyNpbmNsdWRlICJD
dXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmgiCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyT3BlcmF0
aW9uLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIkxheWVyQ29tcGlsZWRQcm9n
cmFtLmgiCiAjaW5jbHVkZSAiTGF5ZXJEYXRhLmgiCisjaW5jbHVkZSAiTGF5ZXJGaWx0ZXJNZXNo
LmgiCiAjaW5jbHVkZSAiVGV4dHVyZS5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4
LmgiCiAKQEAgLTM2LDYgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBD
dXN0b21GaWx0ZXJQcm9ncmFtSW5mbzsKIGNsYXNzIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ7CiBj
bGFzcyBMYXllckZpbHRlclJlbmRlcmVyOwogY2xhc3MgTGF5ZXJGaWx0ZXJSZW5kZXJlckFjdGlv
bjsKQEAgLTE5OSw5ICsyMDQsMTYgQEAgcHVibGljOgogICAgIGludCBkcmF3aW5nTW9kZVBhcmFt
ZXRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZHJhd2luZ01vZGVQYXJhbWV0ZXI7IH0KICAgICB2b2lk
IHNldERyYXdpbmdNb2RlUGFyYW1ldGVyKGludCBwKSB7IG1fZHJhd2luZ01vZGVQYXJhbWV0ZXIg
PSBwOyB9CiAKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisgICAgdm9pZCB1c2VDdXN0b21TaGFk
ZXIoUGFzc1JlZlB0cjxMYXllckNvbXBpbGVkUHJvZ3JhbT4gc2hhZGVyKSB7IG1fY3VzdG9tU2hh
ZGVyID0gc2hhZGVyOyBtX2N1c3RvbUlkID0gbV9jdXN0b21TaGFkZXItPnByb2dyYW0oKTsgfQor
ICAgIHZvaWQgYWRvcHRNZXNoKFBhc3NSZWZQdHI8TGF5ZXJGaWx0ZXJNZXNoPiBtZXNoKSB7IG1f
Y3VzdG9tTWVzaCA9IG1lc2g7IH0KKyNlbmRpZgogCiBwcm90ZWN0ZWQ6CiAgICAgaW50IG1fcHJv
Z3JhbUlkOworI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICBpbnQgbV9jdXN0b21JZDsKKyNl
bmRpZgogICAgIGJvb2wgbV9wdXNoU25hcHNob3Q7CiAgICAgYm9vbCBtX3BvcFNuYXBzaG90Owog
CkBAIC0yMTAsNiArMjIyLDEwIEBAIHByb3RlY3RlZDoKICAgICBEcmF3aW5nTW9kZSBtX2RyYXdp
bmdNb2RlOwogICAgIGludCBtX2RyYXdpbmdNb2RlUGFyYW1ldGVyOwogCisjaWYgRU5BQkxFKENT
U19TSEFERVJTKQorICAgIFJlZlB0cjxMYXllckNvbXBpbGVkUHJvZ3JhbT4gbV9jdXN0b21TaGFk
ZXI7CisgICAgUmVmUHRyPExheWVyRmlsdGVyTWVzaD4gbV9jdXN0b21NZXNoOworI2VuZGlmCiBw
cml2YXRlOgogICAgIExheWVyRmlsdGVyUmVuZGVyZXJBY3Rpb24oaW50IHByb2dyYW1JZCk7CiB9
OwpAQCAtMjI2LDYgKzI0Miw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIHZvaWQgZGlzYWJsZSgpIHsgbV9lbmFibGVkID0g
ZmFsc2U7IH0KIAorICAgIHZvaWQgZmlsdGVyTWVzaERlc3Ryb3llZChMYXllckZpbHRlck1lc2gq
KTsKKwogcHJpdmF0ZToKICAgICBMYXllckZpbHRlclJlbmRlcmVyKGNvbnN0IGludCYgcG9zaXRp
b25Mb2NhdGlvbiwgY29uc3QgaW50JiB0ZXhDb29yZExvY2F0aW9uKTsKICAgICB2b2lkIGJpbmRD
b21tb25BdHRyaWJMb2NhdGlvbihpbnQgbG9jYXRpb24sIGNvbnN0IGNoYXIqIGF0dHJpYk5hbWUp
OwpAQCAtMjQwLDYgKzI1OCwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgcHVzaFNuYXBzaG90KExh
eWVyUmVuZGVyZXJTdXJmYWNlKiwgaW50IHNvdXJjZUlkKTsKICAgICB2b2lkIHBvcFNuYXBzaG90
KCk7CiAKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisgICAgUGFzc1JlZlB0cjxMYXllckNvbXBp
bGVkUHJvZ3JhbT4gZ2V0Q29tcGlsZWRQcm9ncmFtKGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1J
bmZvJik7CisgICAgUGFzc1JlZlB0cjxMYXllckZpbHRlck1lc2g+IGdldEZpbHRlck1lc2godW5z
aWduZWQgY29scywgdW5zaWduZWQgcm93cywgY29uc3QgRmxvYXRSZWN0JiBtZXNoQm94LCBDdXN0
b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBlKTsKKyNlbmRpZgorCiAgICAgYm9vbCBtX2VuYWJs
ZWQ7CiAKICAgICAvLyBFU1NMIGF0dHJpYnV0ZXMgc2hhcmVkIHdpdGggTGF5ZXJSZW5kZXJlciAt
IHNlZSBjb25zdHJ1Y3RvcjoKQEAgLTI1OSw2ICsyODIsMTEgQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8VGV4dHVyZT4gbV90ZXh0dXJlOwogICAgIFJlZlB0cjxUZXh0dXJlPiBtX3NuYXBzaG90VGV4
dHVyZTsKIAorI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICBDdXN0b21GaWx0ZXJHbG9iYWxD
b250ZXh0IG1fcHJvZ3JhbVZhbGlkYXRvcjsKKyAgICBIYXNoU2V0PExheWVyRmlsdGVyTWVzaCo+
IG1fbWVzaFNldDsKKyNlbmRpZgorCiAgICAgZnJpZW5kIGNsYXNzIExheWVyRmlsdGVyUmVuZGVy
ZXJBY3Rpb247CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L0xheWVyV2ViS2l0VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJlYWQuY3BwCmluZGV4IDdk
MDhiMDU5ZjY3NzU4OGI1MTE0YmZhYWM5YmY2OGE1NjQ0ZmQ3ZjguLjAyYjFiZWY1ZDZiMGM4M2Vm
MmFlMGFkYzI5ZGE1MjJkNGM3MjhjMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJlYWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJlYWQu
Y3BwCkBAIC00NTYsOSArNDU2LDYgQEAgYm9vbCBMYXllcldlYktpdFRocmVhZDo6ZmlsdGVyc0Nh
bkJlQ29tcG9zaXRlZChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogICAgICAgICBj
b25zdCBGaWx0ZXJPcGVyYXRpb24qIGZpbHRlck9wZXJhdGlvbiA9IGZpbHRlcnMuYXQoaSk7CiAg
ICAgICAgIHN3aXRjaCAoZmlsdGVyT3BlcmF0aW9uLT5nZXRPcGVyYXRpb25UeXBlKCkpIHsKICAg
ICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRToKLSNpZiBFTkFCTEUoQ1NTX1NI
QURFUlMpCi0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDVVNUT006Ci0jZW5kaWYKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJy
ZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgKaW5kZXggYjRlOGIyOTM2MGI4NTc4
OTgwOTFjY2VkMWJjNTc4MGJjZjc5YjM3NC4uZGE5MzQwMTI4ZTk1MjcyM2Y3ODRiNTAyNjc5NDBh
MzA1YWNlNmIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCkBAIC02Nyw3ICs2
Nyw3IEBAIHB1YmxpYzoKICAgICAKICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtKiBwcm9ncmFtKCkg
Y29uc3QgeyByZXR1cm4gbV9wcm9ncmFtLmdldCgpOyB9CiAgICAgCi0gICAgY29uc3QgQ3VzdG9t
RmlsdGVyUGFyYW1ldGVyTGlzdCYgcGFyYW1ldGVycygpIHsgcmV0dXJuIG1fcGFyYW1ldGVyczsg
fQorICAgIGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIHBhcmFtZXRlcnMoKSBjb25z
dCB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KICAgICAKICAgICB1bnNpZ25lZCBtZXNoUm93cygp
IGNvbnN0IHsgcmV0dXJuIG1fbWVzaFJvd3M7IH0KICAgICB1bnNpZ25lZCBtZXNoQ29sdW1ucygp
IGNvbnN0IHsgcmV0dXJuIG1fbWVzaENvbHVtbnM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUGFyYW1ldGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclBhcmFt
ZXRlci5oCmluZGV4IDgyOTgwZDZjNzgwZjA4MGNjN2Q3MDNmYWE5OGM2MmI2ZjVkM2VhODQuLjg3
ZjQxNTZmZWVlODI1ZTJjNmU4MjY5YmQ5YmJiYThhNjczYmE0NGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUGFyYW1ldGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJQYXJhbWV0ZXIuaApAQCAtMzcsMTIgKzM3LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgQW5pbWF0aW9uQmFzZTsKKwogY2xhc3MgQ3VzdG9tRmlsdGVyUGFyYW1ldGVy
IDogcHVibGljIFJlZkNvdW50ZWQ8Q3VzdG9tRmlsdGVyUGFyYW1ldGVyPiB7CiBwdWJsaWM6CiAg
ICAgLy8gRklYTUU6IEltcGxlbWVudCBvdGhlciBwYXJhbWV0ZXJzIHR5cGVzOgogICAgIC8vIGJv
b2xlYW5zOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY0MzgKICAg
ICAvLyB0ZXh0dXJlczogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcx
NDQyCi0gICAgLy8gM2QtdHJhbnNmb3JtczogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcxNDQzCiAgICAgLy8gbWF0MiwgbWF0MywgbWF0NDogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNDQ0CiAgICAgZW51bSBQYXJhbWV0ZXJUeXBlIHsK
ICAgICAgICAgTlVNQkVSLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0Fw
aS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAK
aW5kZXggOTM3YmIzNTc5NmU0MTRjNGFkYTQ2NTI0ZGY0ODkwY2I5NjI0NjRhNC4uMzUwOGQ0MDQ1
MmY2Yjk2YzVkYzcxZWJjNzBlMTdjMDQ4Mjg0OTAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQXBpL1dlYlBhZ2UuY3BwCkBAIC01ODIsNiArNTgyLDkgQEAgdm9pZCBXZWJQYWdlUHJpdmF0
ZTo6aW5pdChjb25zdCBXZWJTdHJpbmcmIHBhZ2VHcm91cE5hbWUpCiAKICNpZiBFTkFCTEUoV0VC
R0wpCiAgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRXZWJHTEVuYWJsZWQodHJ1ZSk7CisjaWYg
RU5BQkxFKENTU19TSEFERVJTKQorICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0Q1NTQ3VzdG9t
RmlsdGVyRW5hYmxlZCh0cnVlKTsKKyNlbmRpZgogI2VuZGlmCiAjaWYgRU5BQkxFKEFDQ0VMRVJB
VEVEXzJEX0NBTlZBUykKICAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldENhbnZhc1VzZXNBY2Nl
bGVyYXRlZERyYXdpbmcodHJ1ZSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggNGNmMzAyZjc3ZWUzNWFlODQyMmUyYWRhNGZlNzI1ZjYzMmE5ZGJj
Yy4uYjU0MDhlNWJiOTI3NTQyNGQ3ZjE0MzMyODMwODM4ZDlmNWZiMjc0OSAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisy
MDEyLTA4LTI5ICBKb3NodWEgTmV0dGVyZmllbGQgIDxqbmV0dGVyZmllbGRAcmltLmNvbT4KKwor
ICAgICAgICBbQmxhY2tCZXJyeV0gRW5hYmxlIENTUyBTaGFkZXJzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDcyOAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBDU1MgU2hhZGVycyBmb3IgdGhl
IEJsYWNrQmVycnkgcG9ydC4KKworICAgICAgICBDU1MgU2hhZGVycyAoYWxzbyBjYWxsZWQgQ3Vz
dG9tIEZpbHRlcnMpIGFyZSBDU1MgRmlsdGVyIEVmZmVjdHMKKyAgICAgICAgdGhhdCBhcmUgZGVm
aW5lZCBieSBhIEdMU0wgRVMgdmVydGV4IGFuZCBmcmFnbWVudCBzaGFkZXIuIEZvciBhIHF1aWNr
CisgICAgICAgIGludHJvZHVjdGlvbiwgc2VlIGh0dHA6Ly93d3cuYWRvYmUuY29tL2Rldm5ldC9o
dG1sNS9hcnRpY2xlcy9jc3Mtc2hhZGVycy5odG1sLgorCisgICAgICAgIFNlZSBhbHNvIFdlYktp
dCBidWdzICM5MjY4NSwgIzk0NzI0IGFuZCAjOTQ3MjUuCisKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHBlcmwvRmVhdHVyZUxpc3QucG06IEFkZCB0aGUgZmVhdHVyZSBhbmQgZW5hYmxlIGl0Lgor
CiAyMDEyLTA4LTIwICBHZW9yZ2UgU3RhaWtvcyAgPHN0YWlrb3NAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBbQmxhY2tCZXJyeV0gRW5hYmxlIFhIUiBSZXNwb25zZSBCTE9CCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggM2YyYjc0MmYzMmYwYmY4MGE2ZTZjMjZjMTMx
MTc0OWVkMzk5NjNkZS4uZWUwOTJjMWM5ZGEyZDI1ODMwNzA3YzgzMzAzMjQ5OTIyM2M4MWUyNCAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMTg0LDcgKzE4NCw3
IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0NTU19SRUdJT05T
IiwgZGVmYXVsdCA9PiAxLCB2YWx1ZSA9PiBcJGNzc1JlZ2lvbnNTdXBwb3J0IH0sCiAKICAgICB7
IG9wdGlvbiA9PiAiY3NzLXNoYWRlcnMiLCBkZXNjID0+ICJUb2dnbGUgQ1NTIFNoYWRlcnMgc3Vw
cG9ydCIsCi0gICAgICBkZWZpbmUgPT4gIkVOQUJMRV9DU1NfU0hBREVSUyIsIGRlZmF1bHQgPT4g
aXNBcHBsZU1hY1dlYktpdCgpLCB2YWx1ZSA9PiBcJGNzc1NoYWRlcnNTdXBwb3J0IH0sCisgICAg
ICBkZWZpbmUgPT4gIkVOQUJMRV9DU1NfU0hBREVSUyIsIGRlZmF1bHQgPT4gaXNBcHBsZU1hY1dl
YktpdCgpIHx8IGlzQmxhY2tCZXJyeSgpLCB2YWx1ZSA9PiBcJGNzc1NoYWRlcnNTdXBwb3J0IH0s
CiAKICAgICB7IG9wdGlvbiA9PiAiY3NzLWNvbXBvc2l0aW5nIiwgZGVzYyA9PiAiVG9nZ2xlIENT
UyBDb21wb3NpdGluZyBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0NTU19DT01Q
T1NJVElORyIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRjc3NDb21wb3NpdGluZ1N1cHBvcnQg
fSwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162880</attachid>
            <date>2012-09-07 15:04:03 -0700</date>
            <delta_ts>2012-09-07 15:29:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94728-20120908000340.patch</filename>
            <type>text/plain</type>
            <size>45580</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3OTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQ0YzY3NDIxOTFiNTRh
MWQwYTViZDFiOWQ1NmY0NjMxNjViMDhhNy4uMjdhOGM1MzU4ZmFjZjE5MWNjYjRiNmU2YmI4OTg2
ZDI2NzNjMDVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDEyLTA4LTI5ICBKb3No
dWEgTmV0dGVyZmllbGQgIDxqbmV0dGVyZmllbGRAcmltLmNvbT4KKworICAgICAgICBbQmxhY2tC
ZXJyeV0gQ1NTIFNoYWRlciBpbXBsZW1lbnRhdGlvbiBmb3IgQmxhY2tCZXJyeSBwb3J0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDcyOAorCisgICAg
ICAgIENTUyBTaGFkZXJzIChhbHNvIGNhbGxlZCBDdXN0b20gRmlsdGVycykgYXJlIENTUyBGaWx0
ZXIgRWZmZWN0cworICAgICAgICB0aGF0IGFyZSBkZWZpbmVkIGJ5IGEgR0xTTCBFUyB2ZXJ0ZXgg
YW5kIGZyYWdtZW50IHNoYWRlci4gRm9yIGEgcXVpY2sKKyAgICAgICAgaW50cm9kdWN0aW9uLCBz
ZWUgaHR0cDovL3d3dy5hZG9iZS5jb20vZGV2bmV0L2h0bWw1L2FydGljbGVzL2Nzcy1zaGFkZXJz
Lmh0bWwuCisKKyAgICAgICAgU2VlIGFsc28gV2ViS2l0IGJ1Z3MgIzkyNjg1LCAjOTQ3MjQgYW5k
ICM5NDcyNS4KKworICAgICAgICBQYXRjaCB3YXMgdXBkYXRlZCBieSBBcnZpZCBOaWxzc29uIHRv
IHVzZSBCbGFja0JlcnJ5LXNwZWNpZmljCisgICAgICAgIExheWVyQ29tcGlsZWRQcm9ncmFtIGFu
ZCBMYXllckZpbHRlck1lc2ggY2xhc3NlcyBhZnRlciByZXNvbHV0aW9uIG9mCisgICAgICAgIGJ1
ZyAjOTQ3MjUuIEFub3RoZXIgY2hhbmdlIGlzIHRoYXQgZmlsdGVycyBhcmVuJ3QgYWN0dWFsbHkg
ZW5hYmxlZCBieQorICAgICAgICB0aGlzIHBhdGNoLiBUaGF0IHdpbGwgYmUgZG9uZSBvbmNlIHRo
ZSBjcm9zcy1wbGF0Zm9ybSBjb2RlIGlzIGNvbXBsZXRlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cywgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgYWxyZWFkeSBjb3ZlcmVkIGJ5CisgICAg
ICAgIGNzczMvZmlsdGVycy9jdXN0b20vKi4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIFBsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcGlsZWRQcm9ncmFtLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcGlsZWRQcm9ncmFtOjpM
YXllckNvbXBpbGVkUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBpbGVkUHJv
Z3JhbTo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBpbGVkUHJv
Z3JhbTo6bGlua1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21waWxlZFByb2dy
YW06OmluaXRpYWxpemVQYXJhbWV0ZXJMb2NhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJDb21waWxlZFByb2dyYW06OnVuaWZvcm1Mb2NhdGlvbkJ5TmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXllckNvbXBpbGVkUHJvZ3JhbTo6fkxheWVyQ29tcGlsZWRQcm9ncmFtKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcGlsZWRQcm9ncmFtLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChMYXllckNvbXBpbGVkUHJvZ3Jh
bSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBpbGVkUHJvZ3JhbTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcGlsZWRQcm9ncmFtOjpwb3NpdGlvbkF0dHJpYkxvY2F0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcGlsZWRQcm9ncmFtOjp0ZXhBdHRyaWJM
b2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBpbGVkUHJvZ3JhbTo6bWVzaEF0
dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcGlsZWRQcm9ncmFtOjp0
cmlhbmdsZUF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcGlsZWRQ
cm9ncmFtOjptZXNoQm94TG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21waWxl
ZFByb2dyYW06OnByb2plY3Rpb25NYXRyaXhMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpM
YXllckNvbXBpbGVkUHJvZ3JhbTo6dGlsZVNpemVMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllckNvbXBpbGVkUHJvZ3JhbTo6bWVzaFNpemVMb2NhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpMYXllckNvbXBpbGVkUHJvZ3JhbTo6c2FtcGxlckxvY2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyQ29tcGlsZWRQcm9ncmFtOjpjb250ZW50U2FtcGxlckxvY2F0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcGlsZWRQcm9ncmFtOjpzYW1wbGVyU2l6ZUxvY2F0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcGlsZWRQcm9ncmFtOjppbnRlcm5hbFRleENv
b3JkQXR0cmliTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21waWxlZFByb2dy
YW06OmlzSW5pdGlhbGl6ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21waWxlZFByb2dy
YW06OnByb2dyYW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5
ZXJGaWx0ZXJNZXNoLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyRmlsdGVyTWVzaDo6TGF5ZXJGaWx0ZXJNZXNoKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyRmlsdGVyTWVzaDo6fkxheWVyRmlsdGVyTWVzaCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckZpbHRlck1lc2guaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKExheWVyRmlsdGVyTWVzaCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllckZpbHRlck1lc2g6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckZpbHRl
ck1lc2g6OnZlcnRpY2VzQnVmZmVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyRmls
dGVyTWVzaDo6Ynl0ZXNQZXJWZXJ0ZXgpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJGaWx0ZXJN
ZXNoOjplbGVtZW50c0J1ZmZlck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckZpbHRl
ck1lc2g6OmluZGljZXNDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckZpbHRlck1lc2g6
Om1lc2hCb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJGaWx0ZXJNZXNoOjptZXNoVHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXllckZpbHRlck1lc2g6OmNvbHVtbkNvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyRmlsdGVyTWVzaDo6cm93Q291bnQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJGaWx0ZXJSZW5kZXJlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXllckZpbHRlclJlbmRlcmVyQWN0aW9uOjpMYXllckZpbHRlclJlbmRlcmVy
QWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyRmlsdGVyUmVuZGVyZXJBY3Rpb246OnVz
ZUFjdGlvbk9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyRmlsdGVyUmVuZGVyZXI6OmluaXRp
YWxpemVTaGFyZWRHTE9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXllckZpbHRlclJlbmRlcmVyOjpnZXRDb21waWxlZFByb2dyYW0pOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJGaWx0ZXJSZW5kZXJlcjo6Z2V0RmlsdGVyTWVzaCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllckZpbHRlclJlbmRlcmVyOjpmaWx0ZXJNZXNoRGVzdHJveWVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyRmlsdGVyUmVuZGVyZXI6OmFjdGlvbnNGb3JPcGVyYXRpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyRmlsdGVyUmVuZGVyZXI6OmFwcGx5QWN0aW9ucyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckZpbHRlclJlbmRlcmVy
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKExheWVyRmlsdGVyUmVuZGVyZXJBY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJGaWx0ZXJSZW5kZXJlckFjdGlvbjo6dXNlQ3Vz
dG9tU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyRmlsdGVyUmVuZGVyZXJBY3Rpb246
OmFkb3B0TWVzaCk6CisgICAgICAgIChMYXllckZpbHRlclJlbmRlcmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyV2ViS2l0VGhyZWFkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyV2ViS2l0VGhyZWFkOjpmaWx0ZXJzQ2FuQmVDb21wb3NpdGVkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlv
bi5oOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpwYXJhbWV0ZXJz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclBhcmFt
ZXRlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDdXN0b21GaWx0ZXJQYXJhbWV0
ZXIpOgorCiAyMDEyLTA5LTA3ICBBcnZpZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KIAog
ICAgICAgICBbQ1NTIFNoYWRlcnNdIFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWUuaCBuZWVkcyBm
b3J3YXJkIGRlY2xhcmF0aW9uIG9mIE1lbW9yeU9iamVjdEluZm8KQEAgLTE5NDk2LDExICsxOTU4
MywxMSBAQAogCiAgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBjZXJ0YWluIG5ldyBQYXJh
bWV0ZXIgdHlwZXMsIGluY2x1ZGluZyB2ZXJ0ZXgvZWxlbWVudAogICAgICAgICBidWZmZXJzIGFu
ZCB2ZXJ0ZXggYXR0cmlidXRlcyB3aGljaCBhcmUgbmVlZGVkIHRvIGltcGxlbWVudCBjb21wb3Np
dGVkCi0gICAgICAgIENTUyBTaGFkZXJzIG9uIEJCMTAuIEluIGFkZGl0aW9uLCBhIG5ldyBkcmF3
aW5nIG1vZGUgaXMgcmVxdWlyZWQgaW4gb3JkZXIKKyAgICAgICAgQ1NTIFNoYWRlcnMgb24gQmxh
Y2tCZXJyeS4gSW4gYWRkaXRpb24sIGEgbmV3IGRyYXdpbmcgbW9kZSBpcyByZXF1aXJlZCBpbiBv
cmRlcgogICAgICAgICB0byBkcmF3IENTUyBTaGFkZXJzIG1lc2hlcyBmcm9tIHZlcnRleC9lbGVt
ZW50IGJ1ZmZlcnMuCiAKICAgICAgICAgTm8gbmV3IHRlc3RzLCBiZWNhdXNlIHRoaXMgcGF0Y2gg
aW50cm9kdWNlcyBubyBuZXcgZnVuY3Rpb25hbGl0eS4gV2hlbgotICAgICAgICB0aGUgcGF0Y2gg
d2hpY2ggZW5hYmxlcyBDU1MgU2hhZGVycyBvbiBCQjEwIGluIHVwc3RyZWFtZWQsIHRlc3RzIGZv
cgorICAgICAgICB0aGUgcGF0Y2ggd2hpY2ggZW5hYmxlcyBDU1MgU2hhZGVycyBvbiBCbGFja0Jl
cnJ5IGluIHVwc3RyZWFtZWQsIHRlc3RzIGZvcgogICAgICAgICBDU1MgU2hhZGVycyB3aWxsIHBy
b3ZlIHRoaXMgY29kZSB0byBiZSBjb3JyZWN0LgogCiAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYmxhY2tiZXJyeS9MYXllckZpbHRlclJlbmRlcmVyLmNwcDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
Q2hhbmdlTG9nCmluZGV4IDU5MDcxMzQ4MWRhODQ4MzM3MDIwZjAxMDVlMzcxOTUwZWExNzgxMDAu
LjZhZGU5NDk5NmMyNWJlOWNmZjA5MDYyZjM5MGE3ZDdiNTAxNWJlMTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA4LTI5ICBKb3NodWEgTmV0
dGVyZmllbGQgIDxqbmV0dGVyZmllbGRAcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0g
Q1NTIFNoYWRlciBpbXBsZW1lbnRhdGlvbiBmb3IgQmxhY2tCZXJyeSBwb3J0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDcyOAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENTUyBTaGFkZXJzIChhbHNvIGNh
bGxlZCBDdXN0b20gRmlsdGVycykgYXJlIENTUyBGaWx0ZXIgRWZmZWN0cworICAgICAgICB0aGF0
IGFyZSBkZWZpbmVkIGJ5IGEgR0xTTCBFUyB2ZXJ0ZXggYW5kIGZyYWdtZW50IHNoYWRlci4gRm9y
IGEgcXVpY2sKKyAgICAgICAgaW50cm9kdWN0aW9uLCBzZWUgaHR0cDovL3d3dy5hZG9iZS5jb20v
ZGV2bmV0L2h0bWw1L2FydGljbGVzL2Nzcy1zaGFkZXJzLmh0bWwuCisKKyAgICAgICAgU2VlIGFs
c28gV2ViS2l0IGJ1Z3MgIzkyNjg1LCAjOTQ3MjQgYW5kICM5NDcyNS4KKworICAgICAgICBQYXRj
aCB3YXMgdXBkYXRlZCBieSBBcnZpZCBOaWxzc29uIHRvIHVzZSBCbGFja0JlcnJ5LXNwZWNpZmlj
CisgICAgICAgIExheWVyQ29tcGlsZWRQcm9ncmFtIGFuZCBMYXllckZpbHRlck1lc2ggY2xhc3Nl
cyBhZnRlciByZXNvbHV0aW9uIG9mCisgICAgICAgIGJ1ZyAjOTQ3MjUuIEFub3RoZXIgY2hhbmdl
IGlzIHRoYXQgZmlsdGVycyBhcmVuJ3QgYWN0dWFsbHkgZW5hYmxlZCBieQorICAgICAgICB0aGlz
IHBhdGNoLiBUaGF0IHdpbGwgYmUgZG9uZSBvbmNlIHRoZSBjcm9zcy1wbGF0Zm9ybSBjb2RlIGlz
IGNvbXBsZXRlLgorCisgICAgICAgICogQXBpL1dlYlBhZ2UuY3BwOgorICAgICAgICAoQmxhY2tC
ZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6aW5pdCk6CisKIDIwMTItMDktMDcgIFlvbmd4
aW4gRGFpICA8eW9kYWlAcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gSW5pdGlhbGl6
ZSBjYXJldCByZWN0YW5nbGUgd2l0aCBpbnZhbGlkIGxvY2F0aW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IDA4YzU0YTI4ODFhZTcwYjJjM2RmMmU0M2JhM2MwNWJiNmI4MGY3MWQuLmI4NWQ5MWE4
ZTFiNDBmMGI2ZDY3YTgxMzBlM2FiNWMxZDVjMjA3NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0xMDc2LDYgKzEwNzYsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgY3NzL1dlYktpdENT
U0tleWZyYW1lUnVsZS5jcHAKICAgICBjc3MvV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5jcHAKICAg
ICBjc3MvV2ViS2l0Q1NTTWF0cml4LmNwcAorICAgIGNzcy9XZWJLaXRDU1NNaXhGdW5jdGlvblZh
bHVlLmNwcAogICAgIGNzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmNwcAogICAgIGNzcy9XZWJLaXRD
U1NTVkdEb2N1bWVudFZhbHVlLmNwcAogICAgIGNzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5jcHAK
QEAgLTE4NzMsOSArMTg3NCwxMSBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHAKKyAgICBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuY3BwCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uY3BwCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uY3BwCisgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCkBAIC0yMTM2LDYgKzIxMzksNyBAQCBT
RVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlQm94RGF0YS5jcHAK
ICAgICByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAKICAgICByZW5kZXJpbmcv
c3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5jcHAKKyAgICByZW5kZXJpbmcvc3R5bGUvU3R5bGVD
YWNoZWRTaGFkZXIuY3BwCiAgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlRGVwcmVjYXRlZEZsZXhp
YmxlQm94RGF0YS5jcHAKICAgICByZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0ZXJEYXRhLmNwcAog
ICAgIHJlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZSBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQppbmRleCBlNGM5N2Y4OTE4ZDZkZjlkY2JkODhiNzBh
ZGRiMWE4ODM1Y2UzMmJjLi5lY2Y3NWUwNzRmYjQ1NGJlYjJlNGY4MTEwOTc1YTU1OTFkMjdlYzFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKKysr
IGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCkBAIC0yODAsOCArMjgw
LDEwIEBAIElGIChXVEZfVVNFX0FDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgICAgICAke1dF
QkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0VHTEltYWdlTGF5ZXJDb21w
b3NpdGluZ1RocmVhZENsaWVudC5jcHAKICAgICAgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFwaGljc0xheWVyQmxhY2tCZXJyeS5jcHAKICAgICAgICAg
JHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckFuaW1hdGlv
bi5jcHAKKyAgICAgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9MYXllckNvbXBpbGVkUHJvZ3JhbS5jcHAKICAgICAgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmNwcAogICAgICAg
ICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRmlsdGVy
UmVuZGVyZXIuY3BwCisgICAgICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvTGF5ZXJGaWx0ZXJNZXNoLmNwcAogICAgICAgICAke1dFQkNPUkVfRElSfS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXIuY3BwCiAgICAgICAgICR7V0VC
Q09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlclN1cmZh
Y2UuY3BwCiAgICAgICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVy
cnkvTGF5ZXJUaWxlLmNwcApAQCAtMjk2LDYgKzI5OCwxMiBAQCBJRiAoV1RGX1VTRV9BQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKICAgICApCiBFTkRJRiAoKQogCitJRiAoRU5BQkxFX0NTU19TSEFE
RVJTKQorICAgIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAgICAgICAke1dFQkNPUkVf
RElSfS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2JsYWNrYmVycnkvQ3VzdG9tRmlsdGVyVmFs
aWRhdGVkUHJvZ3JhbUJsYWNrQmVycnkuY3BwCisgICAgKQorRU5ESUYgKCkKKwogU0VUKEVOVntX
RUJLSVRESVJ9ICR7Q01BS0VfU09VUkNFX0RJUn0vU291cmNlKQogU0VUKEVOVntQTEFURk9STU5B
TUV9ICR7Q01BS0VfU1lTVEVNX05BTUV9KQogRVhFQ1VURV9QUk9DRVNTKApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBpbGVk
UHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L0xheWVyQ29tcGlsZWRQcm9ncmFtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZDU0YjE0NjY1ZGM3MDhlNjc3
Y2Y1OTQwYmVlOGNjMjk3YjU0N2I1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBpbGVkUHJvZ3JhbS5jcHAKQEAg
LTAsMCArMSwxNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQWRvYmUgU3lzdGVtcyBJ
bmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
UmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAq
ICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkxheWVyQ29tcGlsZWRQcm9n
cmFtLmgiCisKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisKKyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxh
dGZvcm1Mb2cuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitMYXllckNvbXBpbGVkUHJvZ3Jh
bTo6TGF5ZXJDb21waWxlZFByb2dyYW0oY29uc3QgU3RyaW5nJiB2YWxpZGF0ZWRWZXJ0ZXhTaGFk
ZXIsIGNvbnN0IFN0cmluZyYgdmFsaWRhdGVkRnJhZ21lbnRTaGFkZXIpCisgICAgOiBtX3Byb2dy
YW0oMCkKKyAgICAsIG1fcG9zaXRpb25BdHRyaWJMb2NhdGlvbigtMSkKKyAgICAsIG1fdGV4QXR0
cmliTG9jYXRpb24oLTEpCisgICAgLCBtX21lc2hBdHRyaWJMb2NhdGlvbigtMSkKKyAgICAsIG1f
dHJpYW5nbGVBdHRyaWJMb2NhdGlvbigtMSkKKyAgICAsIG1fbWVzaEJveExvY2F0aW9uKC0xKQor
ICAgICwgbV9wcm9qZWN0aW9uTWF0cml4TG9jYXRpb24oLTEpCisgICAgLCBtX3RpbGVTaXplTG9j
YXRpb24oLTEpCisgICAgLCBtX21lc2hTaXplTG9jYXRpb24oLTEpCisgICAgLCBtX3NhbXBsZXJM
b2NhdGlvbigtMSkKKyAgICAsIG1fc2FtcGxlclNpemVMb2NhdGlvbigtMSkKKyAgICAsIG1fY29u
dGVudFNhbXBsZXJMb2NhdGlvbigtMSkKKyAgICAsIG1faW50ZXJuYWxUZXhDb29yZEF0dHJpYkxv
Y2F0aW9uKC0xKQorICAgICwgbV9pc0luaXRpYWxpemVkKGZhbHNlKQoreworICAgIEdMdWludCB2
ZXJ0ZXhTaGFkZXIgPSBjb21waWxlU2hhZGVyKEdMX1ZFUlRFWF9TSEFERVIsIHZhbGlkYXRlZFZl
cnRleFNoYWRlcik7CisgICAgaWYgKCF2ZXJ0ZXhTaGFkZXIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEdMdWludCBmcmFnbWVudFNoYWRlciA9IGNvbXBpbGVTaGFkZXIoR0xfRlJBR01FTlRfU0hB
REVSLCB2YWxpZGF0ZWRGcmFnbWVudFNoYWRlcik7CisgICAgaWYgKCFmcmFnbWVudFNoYWRlcikg
eworICAgICAgICBnbERlbGV0ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgbV9wcm9ncmFtID0gbGlua1Byb2dyYW0odmVydGV4U2hhZGVyLCBmcmFn
bWVudFNoYWRlcik7CisKKyAgICBnbERlbGV0ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOworICAgIGds
RGVsZXRlU2hhZGVyKGZyYWdtZW50U2hhZGVyKTsKKworICAgIGlmICghbV9wcm9ncmFtKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpbml0aWFsaXplUGFyYW1ldGVyTG9jYXRpb25zKCk7CisKKyAg
ICBtX2lzSW5pdGlhbGl6ZWQgPSB0cnVlOworfQorCitHTHVpbnQgTGF5ZXJDb21waWxlZFByb2dy
YW06OmNvbXBpbGVTaGFkZXIoR0xlbnVtIHNoYWRlclR5cGUsIGNvbnN0IFN0cmluZyYgc2hhZGVy
U3RyaW5nKQoreworICAgIEFTU0VSVCghc2hhZGVyU3RyaW5nLmlzTnVsbCgpKTsKKworICAgIEdM
dWludCBzaGFkZXIgPSBnbENyZWF0ZVNoYWRlcihzaGFkZXJUeXBlKTsKKyAgICBDU3RyaW5nIHNo
YWRlckNTdHJpbmcgPSBzaGFkZXJTdHJpbmcubGF0aW4xKCk7IC8vIEFOR0xFV2ViS2l0QnJpZGdl
IGN1cnJlbnRseSB1c2VzIFN0cmluZzo6U3RyaW5nKGNvbnN0IGNoYXIqKSB3aGljaCBpcyB0aGUg
bGF0aW4xIGNvbnN0cnVjdG9yCisgICAgY29uc3QgY2hhciogc2hhZGVyRGF0YSA9IHNoYWRlckNT
dHJpbmcuZGF0YSgpOworCisgICAgZ2xTaGFkZXJTb3VyY2Uoc2hhZGVyLCAxLCAmc2hhZGVyRGF0
YSwgMCk7CisgICAgZ2xDb21waWxlU2hhZGVyKHNoYWRlcik7CisKKyAgICBpbnQgY29tcGlsZWQg
PSAwOworICAgIGdsR2V0U2hhZGVyaXYoc2hhZGVyLCBHTF9DT01QSUxFX1NUQVRVUywgJmNvbXBp
bGVkKTsKKyAgICBpZiAoIWNvbXBpbGVkKSB7CisgICAgICAgIGNoYXIgaW5mb0xvZ1syMDQ4XTsK
KyAgICAgICAgR0xzaXplaSBsZW5ndGg7CisgICAgICAgIGdsR2V0U2hhZGVySW5mb0xvZyhzaGFk
ZXIsIDIwNDgsICZsZW5ndGgsIGluZm9Mb2cpOworICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6bG9nQWx3YXlzKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbFdhcm4sICJGYWlsZWQg
dG8gY29tcGlsZSBwcm9ncmFtOiAlcyIsICZpbmZvTG9nWzBdKTsKKyAgICAgICAgZ2xEZWxldGVT
aGFkZXIoc2hhZGVyKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIHNo
YWRlcjsKK30KKworR0x1aW50IExheWVyQ29tcGlsZWRQcm9ncmFtOjpsaW5rUHJvZ3JhbShHTHVp
bnQgdmVydGV4U2hhZGVyLCBHTHVpbnQgZnJhZ21lbnRTaGFkZXIpCit7CisgICAgR0x1aW50IHBy
b2dyYW0gPSBnbENyZWF0ZVByb2dyYW0oKTsKKyAgICBnbEF0dGFjaFNoYWRlcihwcm9ncmFtLCB2
ZXJ0ZXhTaGFkZXIpOworICAgIGdsQXR0YWNoU2hhZGVyKHByb2dyYW0sIGZyYWdtZW50U2hhZGVy
KTsKKyAgICBnbExpbmtQcm9ncmFtKHByb2dyYW0pOworCisgICAgaW50IGxpbmtlZCA9IDA7Cisg
ICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR0xfTElOS19TVEFUVVMsICZsaW5rZWQpOworICAg
IGlmICghbGlua2VkKSB7CisgICAgICAgIC8vIEZJWE1FOiBJbnZhbGlkIHZlcnRleC9mcmFnbWVu
dCBzaGFkZXIgY29tYmluYXRpb24uIFRocm93IHNvbWUgZXJyb3JzIGhlcmUuCisgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDQxNgorICAgICAgICBn
bERlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAg
IHJldHVybiBwcm9ncmFtOworfQorCit2b2lkIExheWVyQ29tcGlsZWRQcm9ncmFtOjppbml0aWFs
aXplUGFyYW1ldGVyTG9jYXRpb25zKCkKK3sKKyAgICBtX3Bvc2l0aW9uQXR0cmliTG9jYXRpb24g
PSBnbEdldEF0dHJpYkxvY2F0aW9uKG1fcHJvZ3JhbSwgImFfcG9zaXRpb24iKTsKKyAgICBtX3Rl
eEF0dHJpYkxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtX3Byb2dyYW0sICJhX3RleENv
b3JkIik7CisgICAgbV9tZXNoQXR0cmliTG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1f
cHJvZ3JhbSwgImFfbWVzaENvb3JkIik7CisgICAgbV90cmlhbmdsZUF0dHJpYkxvY2F0aW9uID0g
Z2xHZXRBdHRyaWJMb2NhdGlvbihtX3Byb2dyYW0sICJhX3RyaWFuZ2xlQ29vcmQiKTsKKyAgICBt
X21lc2hCb3hMb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInVfbWVz
aEJveCIpOworICAgIG1fdGlsZVNpemVMb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1f
cHJvZ3JhbSwgInVfdGlsZVNpemUiKTsKKyAgICBtX21lc2hTaXplTG9jYXRpb24gPSBnbEdldFVu
aWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sICJ1X21lc2hTaXplIik7CisgICAgbV9wcm9qZWN0aW9u
TWF0cml4TG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sICJ1X3Byb2pl
Y3Rpb25NYXRyaXgiKTsKKyAgICBtX3NhbXBsZXJTaXplTG9jYXRpb24gPSBnbEdldFVuaWZvcm1M
b2NhdGlvbihtX3Byb2dyYW0sICJ1X3RleHR1cmVTaXplIik7CisgICAgbV9jb250ZW50U2FtcGxl
ckxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obV9wcm9ncmFtLCAidV9jb250ZW50VGV4
dHVyZSIpOworICAgIG1faW50ZXJuYWxUZXhDb29yZEF0dHJpYkxvY2F0aW9uID0gZ2xHZXRBdHRy
aWJMb2NhdGlvbihtX3Byb2dyYW0sICJjc3NfYV90ZXhDb29yZCIpOworICAgIG1fc2FtcGxlckxv
Y2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obV9wcm9ncmFtLCAiY3NzX3VfdGV4dHVyZSIp
OworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGV4dHVyZSBhY2Nlc3MgdmlhIHVfdGV4dHVyZSBhbmQg
Y2hhbmdlIHRoZSB0ZXN0cyB0byB1c2UgYmxlbmRpbmcgYW5kIGNvbXBvc2l0aW5nLgorICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzg3MQorICAgIGlmICht
X3NhbXBsZXJMb2NhdGlvbiA9PSAtMSkKKyAgICAgICAgbV9zYW1wbGVyTG9jYXRpb24gPSBnbEdl
dFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sICJ1X3RleHR1cmUiKTsKK30KKworaW50IExheWVy
Q29tcGlsZWRQcm9ncmFtOjp1bmlmb3JtTG9jYXRpb25CeU5hbWUoY29uc3QgU3RyaW5nJiBuYW1l
KQoreworICAgIEFTU0VSVChtX2lzSW5pdGlhbGl6ZWQpOworICAgIHJldHVybiBnbEdldFVuaWZv
cm1Mb2NhdGlvbihtX3Byb2dyYW0sIG5hbWUubGF0aW4xKCkuZGF0YSgpKTsKK30KKworTGF5ZXJD
b21waWxlZFByb2dyYW06On5MYXllckNvbXBpbGVkUHJvZ3JhbSgpCit7CisgICAgaWYgKG1fcHJv
Z3JhbSkKKyAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1fcHJvZ3JhbSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvTGF5ZXJDb21waWxlZFByb2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21waWxlZFByb2dyYW0uaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hNzA2MGQxNzdiYWRkNDU2ZDYzZjNiNjEyMWRlMjIzMzk0YTU5MTE0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXll
ckNvbXBpbGVkUHJvZ3JhbS5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICog
ICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
CisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAor
ICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTGF5ZXJDb21waWxlZFByb2dyYW1f
aAorI2RlZmluZSBMYXllckNvbXBpbGVkUHJvZ3JhbV9oCisKKyNpbmNsdWRlIDxHTEVTMi9nbDIu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIExheWVyQ29tcGlsZWRQcm9n
cmFtIDogcHVibGljIFJlZkNvdW50ZWQ8TGF5ZXJDb21waWxlZFByb2dyYW0+IHsKK3B1YmxpYzoK
KyAgICAvLyBUaGUgc2hhZGVyIHNvdXJjZSBzaG91bGQgYmUgdmFsaWRhdGVkIHVzaW5nIEFOR0xF
IHVubGVzcyBpdCBjb21lcyBmcm9tIGEgdHJ1c3RlZCBzb3VyY2UuCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8TGF5ZXJDb21waWxlZFByb2dyYW0+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHZhbGlkYXRl
ZFZlcnRleFNoYWRlciwgY29uc3QgU3RyaW5nJiB2YWxpZGF0ZWRGcmFnbWVudFNoYWRlcikKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTGF5ZXJDb21waWxlZFByb2dyYW0odmFs
aWRhdGVkVmVydGV4U2hhZGVyLCB2YWxpZGF0ZWRGcmFnbWVudFNoYWRlcikpOworICAgIH0KKwor
ICAgIH5MYXllckNvbXBpbGVkUHJvZ3JhbSgpOworCisgICAgLy8gRklYTUU6IFRoZXNlIGF0dHJp
YnMgYXJlIGN1c3RvbSBmaWx0ZXItc3BlY2lmaWMsIHNob3VsZCBtYWtlIHRoaXMgY2xhc3MgbW9y
ZSBnZW5lcmljIHRvIHJlYWxseSBxdWFsaWZ5IGZvciB0aGUgbmFtZSAiUGxhdGZvcm1Db21waWxl
ZFByb2dyYW0iCisgICAgaW50IHBvc2l0aW9uQXR0cmliTG9jYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX3Bvc2l0aW9uQXR0cmliTG9jYXRpb247IH0KKyAgICBpbnQgdGV4QXR0cmliTG9jYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX3RleEF0dHJpYkxvY2F0aW9uOyB9CisgICAgaW50IG1lc2hBdHRy
aWJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWVzaEF0dHJpYkxvY2F0aW9uOyB9CisgICAg
aW50IHRyaWFuZ2xlQXR0cmliTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3RyaWFuZ2xlQXR0
cmliTG9jYXRpb247IH0KKyAgICBpbnQgbWVzaEJveExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9tZXNoQm94TG9jYXRpb247IH0KKyAgICBpbnQgcHJvamVjdGlvbk1hdHJpeExvY2F0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9wcm9qZWN0aW9uTWF0cml4TG9jYXRpb247IH0KKyAgICBpbnQgdGls
ZVNpemVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZVNpemVMb2NhdGlvbjsgfQorICAg
IGludCBtZXNoU2l6ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tZXNoU2l6ZUxvY2F0aW9u
OyB9CisgICAgaW50IHNhbXBsZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlckxv
Y2F0aW9uOyB9CisgICAgaW50IGNvbnRlbnRTYW1wbGVyTG9jYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2NvbnRlbnRTYW1wbGVyTG9jYXRpb247IH0KKyAgICBpbnQgc2FtcGxlclNpemVMb2NhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlclNpemVMb2NhdGlvbjsgfQorICAgIGludCBpbnRl
cm5hbFRleENvb3JkQXR0cmliTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsVGV4
Q29vcmRBdHRyaWJMb2NhdGlvbjsgfQorCisgICAgaW50IHVuaWZvcm1Mb2NhdGlvbkJ5TmFtZShj
b25zdCBTdHJpbmcmKTsKKworICAgIGJvb2wgaXNJbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNJbml0aWFsaXplZDsgfQorCisgICAgR0x1aW50IHByb2dyYW0oKSBjb25zdCB7IHJldHVy
biBtX3Byb2dyYW07IH0KKworcHJpdmF0ZToKKyAgICBMYXllckNvbXBpbGVkUHJvZ3JhbShjb25z
dCBTdHJpbmcmIHZhbGlkYXRlZFZlcnRleFNoYWRlciwgY29uc3QgU3RyaW5nJiB2YWxpZGF0ZWRG
cmFnbWVudFNoYWRlcik7CisKKyAgICBHTHVpbnQgY29tcGlsZVNoYWRlcihHTGVudW0gc2hhZGVy
VHlwZSwgY29uc3QgU3RyaW5nJiBzaGFkZXJTdHJpbmcpOworICAgIEdMdWludCBsaW5rUHJvZ3Jh
bShHTHVpbnQgdmVydGV4U2hhZGVyLCBHTHVpbnQgZnJhZ21lbnRTaGFkZXIpOworICAgIHZvaWQg
aW5pdGlhbGl6ZVBhcmFtZXRlckxvY2F0aW9ucygpOworCisgICAgR0x1aW50IG1fcHJvZ3JhbTsK
KworICAgIGludCBtX3Bvc2l0aW9uQXR0cmliTG9jYXRpb247CisgICAgaW50IG1fdGV4QXR0cmli
TG9jYXRpb247CisgICAgaW50IG1fbWVzaEF0dHJpYkxvY2F0aW9uOworICAgIGludCBtX3RyaWFu
Z2xlQXR0cmliTG9jYXRpb247CisgICAgaW50IG1fbWVzaEJveExvY2F0aW9uOworICAgIGludCBt
X3Byb2plY3Rpb25NYXRyaXhMb2NhdGlvbjsKKyAgICBpbnQgbV90aWxlU2l6ZUxvY2F0aW9uOwor
ICAgIGludCBtX21lc2hTaXplTG9jYXRpb247CisgICAgaW50IG1fc2FtcGxlckxvY2F0aW9uOwor
ICAgIGludCBtX3NhbXBsZXJTaXplTG9jYXRpb247CisgICAgaW50IG1fY29udGVudFNhbXBsZXJM
b2NhdGlvbjsKKyAgICAvLyBGSVhNRTogR2V0IHJpZCBvZiB0aGUgaW50ZXJuYWwgdGV4IGNvb3Jk
IGF0dHJpYnV0ZSAiY3NzX2FfdGV4Q29vcmQiLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NDM1OAorICAgIGludCBtX2ludGVybmFsVGV4Q29vcmRBdHRy
aWJMb2NhdGlvbjsKKworICAgIGJvb2wgbV9pc0luaXRpYWxpemVkOworfTsKKworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVy
cnkvTGF5ZXJGaWx0ZXJNZXNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvTGF5ZXJGaWx0ZXJNZXNoLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Y2I1ZTc0OTBkZWNk
ZGMyYjFjNTI5NzJlZmUxMmRjNWNiMDNiNGNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckZpbHRlck1lc2guY3BwCkBA
IC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQWRvYmUgU3lzdGVtcyBJ
bmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
UmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAq
ICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyNp
bmNsdWRlICJMYXllckZpbHRlck1lc2guaCIKKworI2luY2x1ZGUgIkN1c3RvbUZpbHRlck1lc2hH
ZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJMYXllckZpbHRlclJlbmRlcmVyLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworTGF5ZXJGaWx0ZXJNZXNoOjpMYXllckZpbHRlck1lc2goTGF5ZXJGaWx0
ZXJSZW5kZXJlciogZmlsdGVyUmVuZGVyZXIsIHVuc2lnbmVkIGNvbHVtbnMsIHVuc2lnbmVkIHJv
d3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFJlY3QmIG1l
c2hCb3gsIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaFR5cGUgbWVzaFR5cGUpCisgICAgOiBt
X2ZpbHRlclJlbmRlcmVyKGZpbHRlclJlbmRlcmVyKQorICAgICwgbV92ZXJ0aWNlc0J1ZmZlck9i
amVjdCgwKQorICAgICwgbV9lbGVtZW50c0J1ZmZlck9iamVjdCgwKQorICAgICwgbV9tZXNoQm94
KG1lc2hCb3gpCisgICAgLCBtX21lc2hUeXBlKG1lc2hUeXBlKQorICAgICwgbV9jb2x1bW5Db3Vu
dChjb2x1bW5zKQorICAgICwgbV9yb3dDb3VudChyb3dzKQoreworICAgIEN1c3RvbUZpbHRlck1l
c2hHZW5lcmF0b3IgZ2VuZXJhdG9yKGNvbHVtbnMsIHJvd3MsIG1lc2hCb3gsIG1lc2hUeXBlKTsK
KyAgICBtX2luZGljZXNDb3VudCA9IGdlbmVyYXRvci5pbmRpY2VzQ291bnQoKTsKKyAgICBtX2J5
dGVzUGVyVmVydGV4ID0gZ2VuZXJhdG9yLmZsb2F0c1BlclZlcnRleCgpICogc2l6ZW9mKGZsb2F0
KTsKKworICAgIGdsR2VuQnVmZmVycygxLCAmbV92ZXJ0aWNlc0J1ZmZlck9iamVjdCk7CisgICAg
Z2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbV92ZXJ0aWNlc0J1ZmZlck9iamVjdCk7Cisg
ICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgZ2VuZXJhdG9yLnZlcnRpY2VzKCkuc2l6
ZSgpICogc2l6ZW9mKGZsb2F0KSwgZ2VuZXJhdG9yLnZlcnRpY2VzKCkuZGF0YSgpLCBHTF9TVEFU
SUNfRFJBVyk7CisKKyAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1fZWxlbWVudHNCdWZmZXJPYmplY3Qp
OworICAgIGdsQmluZEJ1ZmZlcihHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbV9lbGVtZW50c0J1
ZmZlck9iamVjdCk7CisgICAgZ2xCdWZmZXJEYXRhKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBn
ZW5lcmF0b3IuaW5kaWNlcygpLnNpemUoKSAqIHNpemVvZih1aW50MTZfdCksIGdlbmVyYXRvci5p
bmRpY2VzKCkuZGF0YSgpLCBHTF9TVEFUSUNfRFJBVyk7Cit9CisKK0xheWVyRmlsdGVyTWVzaDo6
fkxheWVyRmlsdGVyTWVzaCgpCit7CisgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZtX3ZlcnRpY2Vz
QnVmZmVyT2JqZWN0KTsKKyAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJm1fZWxlbWVudHNCdWZmZXJP
YmplY3QpOworCisgICAgbV9maWx0ZXJSZW5kZXJlci0+ZmlsdGVyTWVzaERlc3Ryb3llZCh0aGlz
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENTU19T
SEFERVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9MYXllckZpbHRlck1lc2guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvTGF5ZXJGaWx0ZXJNZXNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmE2YWZjNWFhNDZm
NGIxZjhiMjk0ZGIyMjljYjcwOWM4YTIzMjZhMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJGaWx0ZXJNZXNoLmgKQEAg
LTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBZG9iZSBTeXN0ZW1zIElu
Y29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBS
ZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICog
ICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBMYXllckZpbHRlck1lc2hfaAorI2RlZmluZSBMYXllckZpbHRlck1lc2hf
aAorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyT3Bl
cmF0aW9uLmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBMYXllckZpbHRlclJlbmRlcmVyOworCitjbGFzcyBMYXllckZpbHRlck1lc2ggOiBwdWJs
aWMgUmVmQ291bnRlZDxMYXllckZpbHRlck1lc2g+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxMYXllckZpbHRlck1lc2g+IGNyZWF0ZShMYXllckZpbHRlclJlbmRlcmVyKiBmaWx0
ZXJSZW5kZXJlciwgdW5zaWduZWQgY29sdW1ucywgdW5zaWduZWQgcm93cywgY29uc3QgRmxvYXRS
ZWN0JiBtZXNoQm94LCBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBlIG1lc2hUeXBlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBMYXllckZpbHRlck1lc2goZmlsdGVy
UmVuZGVyZXIsIGNvbHVtbnMsIHJvd3MsIG1lc2hCb3gsIG1lc2hUeXBlKSk7CisgICAgfQorICAg
IH5MYXllckZpbHRlck1lc2goKTsKKworICAgIEdMdWludCB2ZXJ0aWNlc0J1ZmZlck9iamVjdCgp
IGNvbnN0IHsgcmV0dXJuIG1fdmVydGljZXNCdWZmZXJPYmplY3Q7IH0KKyAgICB1bnNpZ25lZCBi
eXRlc1BlclZlcnRleCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZXNQZXJWZXJ0ZXg7IH0KKworICAg
IEdMdWludCBlbGVtZW50c0J1ZmZlck9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudHNC
dWZmZXJPYmplY3Q7IH0KKyAgICB1bnNpZ25lZCBpbmRpY2VzQ291bnQoKSBjb25zdCB7IHJldHVy
biBtX2luZGljZXNDb3VudDsgfQorCisgICAgY29uc3QgRmxvYXRSZWN0JiBtZXNoQm94KCkgY29u
c3QgeyByZXR1cm4gbV9tZXNoQm94OyB9CisgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNo
VHlwZSBtZXNoVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzaFR5cGU7IH0KKworICAgIHVuc2ln
bmVkIGNvbHVtbkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jb2x1bW5Db3VudDsgfQorICAgIHVu
c2lnbmVkIHJvd0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV9yb3dDb3VudDsgfQorCitwcml2YXRl
OgorICAgIExheWVyRmlsdGVyTWVzaChMYXllckZpbHRlclJlbmRlcmVyKiwgdW5zaWduZWQgY29s
cywgdW5zaWduZWQgcm93cywgY29uc3QgRmxvYXRSZWN0JiBtZXNoQm94LCBDdXN0b21GaWx0ZXJP
cGVyYXRpb246Ok1lc2hUeXBlKTsKKworICAgIExheWVyRmlsdGVyUmVuZGVyZXIqIG1fZmlsdGVy
UmVuZGVyZXI7CisKKyAgICBHTHVpbnQgbV92ZXJ0aWNlc0J1ZmZlck9iamVjdDsKKyAgICB1bnNp
Z25lZCBtX2J5dGVzUGVyVmVydGV4OworCisgICAgR0x1aW50IG1fZWxlbWVudHNCdWZmZXJPYmpl
Y3Q7CisgICAgdW5zaWduZWQgbV9pbmRpY2VzQ291bnQ7CisKKyAgICBGbG9hdFJlY3QgbV9tZXNo
Qm94OworICAgIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaFR5cGUgbV9tZXNoVHlwZTsKKwor
ICAgIHVuc2lnbmVkIG1fY29sdW1uQ291bnQ7CisgICAgdW5zaWduZWQgbV9yb3dDb3VudDsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVS
UykKKworI2VuZGlmIC8vIExheWVyRmlsdGVyTWVzaF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRmlsdGVyUmVuZGVyZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckZpbHRl
clJlbmRlcmVyLmNwcAppbmRleCA2MGQyNjg3ZjQ2ODEwYTYwNGViYWM5NWIyZTgzOTNhZGQzOTIz
MWE3Li5jN2UyYzU4ZWVjNzI5ZWZmZTdlNTMwMjFkOGY2ODMyOWI4NDZiZTE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRmlsdGVy
UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvTGF5ZXJGaWx0ZXJSZW5kZXJlci5jcHAKQEAgLTIyLDYgKzIyLDEwIEBACiAKICNpbmNs
dWRlICJMYXllckZpbHRlclJlbmRlcmVyLmgiCiAKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJOdW1i
ZXJQYXJhbWV0ZXIuaCIKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJQYXJhbWV0ZXIuaCIKKyNpbmNs
dWRlICJDdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXIuaCIKKyNpbmNsdWRlICJDdXN0b21G
aWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmgiCiAjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9uLmgiCiAj
aW5jbHVkZSAiTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVy
ZXIuaCIKQEAgLTI1MSwxMiArMjU1LDE5IEBAIExheWVyRmlsdGVyUmVuZGVyZXJBY3Rpb246Okxh
eWVyRmlsdGVyUmVuZGVyZXJBY3Rpb24oaW50IGNfcHJvZ3JhbUlkKQogCiB2b2lkIExheWVyRmls
dGVyUmVuZGVyZXJBY3Rpb246OnVzZUFjdGlvbk9uKExheWVyRmlsdGVyUmVuZGVyZXIqIHJlbmRl
cmVyKQogewotICAgIEFTU0VSVChtX3Byb2dyYW1JZCAhPSAtMSk7Ci0gICAgaWYgKG1fcHJvZ3Jh
bUlkID09IC0xKSB7CisgICAgQVNTRVJUKG1fcHJvZ3JhbUlkICE9IC0xIHx8IG1fY3VzdG9tSWQg
IT0gLTEpOworCisgICAgaWYgKG1fY3VzdG9tSWQgIT0gLTEpCisgICAgICAgIGdsVXNlUHJvZ3Jh
bShtX2N1c3RvbUlkKTsKKworICAgIGlmIChtX2N1c3RvbUlkID09IC0xKQorICAgICAgICBnbFVz
ZVByb2dyYW0ocmVuZGVyZXItPm1fY3NzRmlsdGVyUHJvZ3JhbU9iamVjdFttX3Byb2dyYW1JZF0p
OworCisgICAgaWYgKG1fcHJvZ3JhbUlkID09IC0xICYmIG1fY3VzdG9tSWQgPT0gLTEpIHsKICAg
ICAgICAgZ2xVc2VQcm9ncmFtKHJlbmRlcmVyLT5tX2Nzc0ZpbHRlclByb2dyYW1PYmplY3RbTGF5
ZXJEYXRhOjpDU1NGaWx0ZXJTaGFkZXJQYXNzdGhyb3VnaF0pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIGdsVXNlUHJvZ3JhbShyZW5kZXJlci0+bV9jc3NGaWx0ZXJQcm9ncmFtT2JqZWN0
W21fcHJvZ3JhbUlkXSk7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wYXJhbWV0
ZXJzLnNpemUoKTsgKytpKQogICAgICAgICBtX3BhcmFtZXRlcnNbaV0tPmFwcGx5KCk7CiB9CkBA
IC00NjEsNiArNDcyLDkgQEAgYm9vbCBMYXllckZpbHRlclJlbmRlcmVyOjppbml0aWFsaXplU2hh
cmVkR0xPYmplY3RzKCkKICAgICAgICAgfQogICAgICk7CiAKKyNpZiBFTkFCTEUoQ1NTX1NIQURF
UlMpCisgICAgc2hhZGVyU3Ryc1tMYXllckRhdGE6OkNTU0ZpbHRlclNoYWRlckN1c3RvbV0gPQor
I2VuZGlmCiAgICAgc2hhZGVyU3Ryc1tMYXllckRhdGE6OkNTU0ZpbHRlclNoYWRlclBhc3N0aHJv
dWdoXSA9IFNUQU5EQVJEX0ZJTFRFUigKICAgICAgICAgbG93cCB2ZWM0IHNoYWRlKGxvd3AgdmVj
NCBjb2xvcikKICAgICAgICAgewpAQCAtNTMyLDYgKzU0NiwzMiBAQCB2b2lkIExheWVyRmlsdGVy
UmVuZGVyZXI6OnBvcFNuYXBzaG90KCkKICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQs
IG1fc25hcHNob3RUZXh0dXJlLT50ZXh0dXJlSWQoKSk7CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX1NI
QURFUlMpCitQYXNzUmVmUHRyPExheWVyQ29tcGlsZWRQcm9ncmFtPiBMYXllckZpbHRlclJlbmRl
cmVyOjpnZXRDb21waWxlZFByb2dyYW0oY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8mIHBy
b2dyYW1JbmZvKQoreworICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtPiB2
YWxpZGF0ZWRQcm9ncmFtID0gbV9wcm9ncmFtVmFsaWRhdG9yLmdldFZhbGlkYXRlZFByb2dyYW0o
cHJvZ3JhbUluZm8pOworICAgIHJldHVybiB2YWxpZGF0ZWRQcm9ncmFtLT5wbGF0Zm9ybUNvbXBp
bGVkUHJvZ3JhbSgpOworfQorCitQYXNzUmVmUHRyPExheWVyRmlsdGVyTWVzaD4gTGF5ZXJGaWx0
ZXJSZW5kZXJlcjo6Z2V0RmlsdGVyTWVzaCh1bnNpZ25lZCBjb2xzLCB1bnNpZ25lZCByb3dzLCBj
b25zdCBGbG9hdFJlY3QmIG1lc2hCb3gsIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaFR5cGUg
bWVzaFR5cGUpCit7CisgICAgZm9yIChIYXNoU2V0PExheWVyRmlsdGVyTWVzaCo+OjppdGVyYXRv
ciBpdCA9IG1fbWVzaFNldC5iZWdpbigpOyBpdCAhPSBtX21lc2hTZXQuZW5kKCk7ICsraXQpIHsK
KyAgICAgICAgaWYgKCgqaXQpLT5jb2x1bW5Db3VudCgpID09IGNvbHMgJiYgKCppdCktPnJvd0Nv
dW50KCkgPT0gcm93cyAmJiAoKml0KS0+bWVzaEJveCgpID09IG1lc2hCb3gpCisgICAgICAgICAg
ICByZXR1cm4gKml0OworICAgIH0KKworICAgIFJlZlB0cjxMYXllckZpbHRlck1lc2g+IG1lc2gg
PSBMYXllckZpbHRlck1lc2g6OmNyZWF0ZSh0aGlzLCBjb2xzLCByb3dzLCBtZXNoQm94LCBtZXNo
VHlwZSk7CisgICAgbV9tZXNoU2V0LmFkZChtZXNoLmdldCgpKTsKKworICAgIHJldHVybiBtZXNo
LnJlbGVhc2UoKTsKK30KKwordm9pZCBMYXllckZpbHRlclJlbmRlcmVyOjpmaWx0ZXJNZXNoRGVz
dHJveWVkKExheWVyRmlsdGVyTWVzaCogbWVzaCkKK3sKKyAgICBtX21lc2hTZXQucmVtb3ZlKG1l
c2gpOworfQorI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykKKwogVmVjdG9yPFJlZlB0cjxM
YXllckZpbHRlclJlbmRlcmVyQWN0aW9uPiA+IExheWVyRmlsdGVyUmVuZGVyZXI6OmFjdGlvbnNG
b3JPcGVyYXRpb25zKExheWVyUmVuZGVyZXJTdXJmYWNlKiBzdXJmYWNlLCBjb25zdCBWZWN0b3I8
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gPiYgb3BzKQogewogICAgIFZlY3RvcjxSZWZQdHI8TGF5
ZXJGaWx0ZXJSZW5kZXJlckFjdGlvbj4gPiByZXQ7CkBAIC01NTgsOCArNTk4LDcgQEAgVmVjdG9y
PFJlZlB0cjxMYXllckZpbHRlclJlbmRlcmVyQWN0aW9uPiA+IExheWVyRmlsdGVyUmVuZGVyZXI6
OmFjdGlvbnNGb3JPcGVyYXQKICAgICAgICAgICAgIHJldC5sYXN0KCktPmFwcGVuZFBhcmFtZXRl
cihVbmlmb3JtMWY6OmNyZWF0ZShtX2Ftb3VudExvY2F0aW9uW3Byb2dyYW1JZF0KICAgICAgICAg
ICAgICAgICAsIHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJP
cGVyYXRpb24mPihvcGVyYXRpb24pLmFtb3VudCgpKSk7CiAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6Ci0gICAgICAgICAgICB7CisgICAgICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCTFVSOiB7CiAgICAgICAgICAgICAvLyBCbHVyIGlzIGEg
dHdvLXN0ZXAgcHJvY2VzczoKICAgICAgICAgICAgIC8vICAgICAxLiBibHVyIFgKICAgICAgICAg
ICAgIC8vICAgICAyLiBibHVyIFkKQEAgLTU3OCwxMCArNjE3LDkgQEAgVmVjdG9yPFJlZlB0cjxM
YXllckZpbHRlclJlbmRlcmVyQWN0aW9uPiA+IExheWVyRmlsdGVyUmVuZGVyZXI6OmFjdGlvbnNG
b3JPcGVyYXQKICAgICAgICAgICAgIHJldC5sYXN0KCktPmFwcGVuZFBhcmFtZXRlcihVbmlmb3Jt
MWY6OmNyZWF0ZShtX2JsdXJBbW91bnRMb2NhdGlvblsxXQogICAgICAgICAgICAgICAgICwgMS4w
ZiAvIGZsb2F0KHN1cmZhY2UtPnNpemUoKS53aWR0aCgpKSkpOwogCi0gICAgICAgICAgICB9CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkRST1BfU0hB
RE9XOgotICAgICAgICAgICAgeworICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0
aW9uOjpEUk9QX1NIQURPVzogewogICAgICAgICAgICAgLy8gU2hhZG93IGlzIGEgZm91ci1zdGVw
IHByb2Nlc3M6CiAgICAgICAgICAgICAvLyAgICAgMS4gY2FwdHVyZSBzbmFwc2hvdAogICAgICAg
ICAgICAgLy8gICAgICAgIHR1cm4gaW50byBhIHNvbGlkIG9mZnNldCBtYXNrCkBAIC02MTIsMTEg
KzY1MCwxMjMgQEAgVmVjdG9yPFJlZlB0cjxMYXllckZpbHRlclJlbmRlcmVyQWN0aW9uPiA+IExh
eWVyRmlsdGVyUmVuZGVyZXI6OmFjdGlvbnNGb3JPcGVyYXQKICAgICAgICAgICAgIHJldC5sYXN0
KCktPmFwcGVuZFBhcmFtZXRlcihVbmlmb3JtMWY6OmNyZWF0ZShtX2JsdXJBbW91bnRMb2NhdGlv
blsxXQogICAgICAgICAgICAgICAgICwgMS4wZiAvIGZsb2F0KHN1cmZhY2UtPnNpemUoKS53aWR0
aCgpKSkpOwogCi0gICAgICAgICAgICAvLyBSZXBhaW50IG9yaWdpbmFsIGltYWdlCisgICAgICAg
ICAgICAvLyBSZXBhaW50IG9yaWdpbmFsIGltYWdlLgogICAgICAgICAgICAgcmV0LmFwcGVuZChM
YXllckZpbHRlclJlbmRlcmVyQWN0aW9uOjpjcmVhdGUoTGF5ZXJEYXRhOjpDU1NGaWx0ZXJTaGFk
ZXJQYXNzdGhyb3VnaCkpOwogICAgICAgICAgICAgcmV0Lmxhc3QoKS0+c2V0UG9wU25hcHNob3Qo
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisjaWYgRU5BQkxFKENTU19TSEFERVJT
KQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q1VTVE9NOiB7CisgICAgICAgICAgICAv
LyBTZWUgRkVDdXN0b21GaWx0ZXI6OmJpbmRQcm9ncmFtQW5kQnVmZmVycy4KKworICAgICAgICAg
ICAgY29uc3QgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uJiBjZm8gPSBzdGF0aWNfY2FzdDxjb25zdCBD
dXN0b21GaWx0ZXJPcGVyYXRpb24mPihvcGVyYXRpb24pOworCisgICAgICAgICAgICBSZWZQdHI8
TGF5ZXJDb21waWxlZFByb2dyYW0+IHNoYWRlciA9IGdldENvbXBpbGVkUHJvZ3JhbShjZm8ucHJv
Z3JhbSgpLT5wcm9ncmFtSW5mbygpKTsKKyAgICAgICAgICAgIFJlZlB0cjxMYXllckZpbHRlck1l
c2g+IG1lc2ggPSBnZXRGaWx0ZXJNZXNoKGNmby5tZXNoQ29sdW1ucygpLCBjZm8ubWVzaFJvd3Mo
KSwgRmxvYXRSZWN0KDAsIDAsIDEsIDEpLCBjZm8ubWVzaFR5cGUoKSk7CisKKyAgICAgICAgICAg
IGlmIChzaGFkZXItPnNhbXBsZXJMb2NhdGlvbigpICE9IC0xKQorICAgICAgICAgICAgICAgIHJl
dC5sYXN0KCktPmFwcGVuZFBhcmFtZXRlcihVbmlmb3JtMWk6OmNyZWF0ZShzaGFkZXItPnNhbXBs
ZXJMb2NhdGlvbigpLCAwKSk7CisKKyAgICAgICAgICAgIGlmIChzaGFkZXItPnByb2plY3Rpb25N
YXRyaXhMb2NhdGlvbigpICE9IC0xKSB7CisgICAgICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggcHJvamVjdGlvbk1hdHJpeCA9IExheWVyUmVuZGVyZXI6Om9ydGhvTWF0cml4KC0wLjUs
IDAuNSwgLTAuNSwgMC41LCAtMTAwMDAsIDEwMDAwKTsKKyAgICAgICAgICAgICAgICBmbG9hdCBn
bFByb2plY3Rpb25NYXRyaXhbMTZdOworICAgICAgICAgICAgICAgIHByb2plY3Rpb25NYXRyaXgu
dG9Db2x1bW5NYWpvckZsb2F0QXJyYXkoZ2xQcm9qZWN0aW9uTWF0cml4KTsKKworICAgICAgICAg
ICAgICAgIC8vIFRoaXMgd2lsbCBtYWtlIGEgZGVlcCBjb3B5IG9mIGdsUHJvamVjdGlvbk1hdHJp
eC4KKyAgICAgICAgICAgICAgICByZXQubGFzdCgpLT5hcHBlbmRQYXJhbWV0ZXIoTWF0cml4NGZ2
OjpjcmVhdGUoc2hhZGVyLT5wcm9qZWN0aW9uTWF0cml4TG9jYXRpb24oKSwgMSwgR0xfRkFMU0Us
ICZnbFByb2plY3Rpb25NYXRyaXhbMF0pKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0Lmxhc3QoKS0+YXBwZW5kUGFyYW1ldGVyKEJ1ZmZlcjo6Y3JlYXRlKEdMX0FSUkFZX0JVRkZF
UiwgbWVzaC0+dmVydGljZXNCdWZmZXJPYmplY3QoKSkpOworICAgICAgICAgICAgcmV0Lmxhc3Qo
KS0+YXBwZW5kUGFyYW1ldGVyKEJ1ZmZlcjo6Y3JlYXRlKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVS
LCBtZXNoLT5lbGVtZW50c0J1ZmZlck9iamVjdCgpKSk7CisgICAgICAgICAgICByZXQubGFzdCgp
LT5zZXREcmF3aW5nTW9kZShMYXllckZpbHRlclJlbmRlcmVyQWN0aW9uOjpEcmF3VHJpYW5nbGVF
bGVtZW50c1VTaG9ydDApOworICAgICAgICAgICAgcmV0Lmxhc3QoKS0+c2V0RHJhd2luZ01vZGVQ
YXJhbWV0ZXIobWVzaC0+aW5kaWNlc0NvdW50KCkpOworCisgICAgICAgICAgICBpbnQgb2Zmc2V0
ID0gMDsKKworICAgICAgICAgICAgaWYgKHNoYWRlci0+cG9zaXRpb25BdHRyaWJMb2NhdGlvbigp
ICE9IC0xKSB7CisgICAgICAgICAgICAgICAgcmV0Lmxhc3QoKS0+YXBwZW5kUGFyYW1ldGVyKFZl
cnRleEF0dHJpYmY6OmNyZWF0ZShzaGFkZXItPnBvc2l0aW9uQXR0cmliTG9jYXRpb24oKSwgNCwg
bWVzaC0+Ynl0ZXNQZXJWZXJ0ZXgoKSwgb2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgb2Zmc2V0
ICs9IDQgKiBzaXplb2YoZmxvYXQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAo
c2hhZGVyLT5pbnRlcm5hbFRleENvb3JkQXR0cmliTG9jYXRpb24oKSAhPSAtMSkgeworICAgICAg
ICAgICAgICAgIHJldC5sYXN0KCktPmFwcGVuZFBhcmFtZXRlcihWZXJ0ZXhBdHRyaWJmOjpjcmVh
dGUoc2hhZGVyLT5pbnRlcm5hbFRleENvb3JkQXR0cmliTG9jYXRpb24oKSwgMiwgbWVzaC0+Ynl0
ZXNQZXJWZXJ0ZXgoKSwgb2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDIgKiBz
aXplb2YoZmxvYXQpOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoc2hhZGVyLT50
ZXhBdHRyaWJMb2NhdGlvbigpICE9IC0xKSB7CisgICAgICAgICAgICAgICAgcmV0Lmxhc3QoKS0+
YXBwZW5kUGFyYW1ldGVyKFZlcnRleEF0dHJpYmY6OmNyZWF0ZShzaGFkZXItPnRleEF0dHJpYkxv
Y2F0aW9uKCksIDIsIG1lc2gtPmJ5dGVzUGVyVmVydGV4KCksIG9mZnNldCkpOworICAgICAgICAg
ICAgICAgIG9mZnNldCArPSAyICogc2l6ZW9mKGZsb2F0KTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKHNoYWRlci0+bWVzaEF0dHJpYkxvY2F0aW9uKCkgIT0gLTEpIHsKKyAgICAg
ICAgICAgICAgICByZXQubGFzdCgpLT5hcHBlbmRQYXJhbWV0ZXIoVmVydGV4QXR0cmliZjo6Y3Jl
YXRlKHNoYWRlci0+bWVzaEF0dHJpYkxvY2F0aW9uKCksIDIsIG1lc2gtPmJ5dGVzUGVyVmVydGV4
KCksIG9mZnNldCkpOworICAgICAgICAgICAgICAgIG9mZnNldCArPSAyICogc2l6ZW9mKGZsb2F0
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNmby5tZXNoVHlwZSgpID09IEN1
c3RvbUZpbHRlck9wZXJhdGlvbjo6REVUQUNIRUQgJiYgc2hhZGVyLT50cmlhbmdsZUF0dHJpYkxv
Y2F0aW9uKCkgIT0gLTEpIHsKKyAgICAgICAgICAgICAgICByZXQubGFzdCgpLT5hcHBlbmRQYXJh
bWV0ZXIoVmVydGV4QXR0cmliZjo6Y3JlYXRlKHNoYWRlci0+dHJpYW5nbGVBdHRyaWJMb2NhdGlv
bigpLCAzLCBtZXNoLT5ieXRlc1BlclZlcnRleCgpLCBvZmZzZXQpKTsKKyAgICAgICAgICAgICAg
ICBvZmZzZXQgKz0gMyAqIHNpemVvZihmbG9hdCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjZm8ucGFyYW1ldGVycygpLnNpemUoKTsgKytp
KSB7CisgICAgICAgICAgICAgICAgaW50IGxvY2F0aW9uID0gc2hhZGVyLmdldCgpLT51bmlmb3Jt
TG9jYXRpb25CeU5hbWUoY2ZvLnBhcmFtZXRlcnMoKVtpXS0+bmFtZSgpKTsKKyAgICAgICAgICAg
ICAgICBpZiAobG9jYXRpb24gPT0gLTEpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgICAgIHN3aXRjaCAoY2ZvLnBhcmFtZXRlcnMoKVtpXS0+cGFyYW1ldGVyVHlw
ZSgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6Ok5VTUJF
UjogeworICAgICAgICAgICAgICAgICAgICBjb25zdCBDdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0
ZXImIG51bWJlciA9IHN0YXRpY19jYXN0PEN1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlciY+KCpj
Zm8ucGFyYW1ldGVycygpW2ldLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChu
dW1iZXIuc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldC5sYXN0KCktPmFwcGVuZFBhcmFtZXRlcihVbmlmb3JtMWY6OmNyZWF0
ZShsb2NhdGlvbiwgbnVtYmVyLnZhbHVlQXQoMCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXQubGFzdCgpLT5hcHBlbmRQYXJhbWV0ZXIoVW5pZm9ybTJmOjpjcmVhdGUobG9jYXRp
b24sIG51bWJlci52YWx1ZUF0KDApLCBudW1iZXIudmFsdWVBdCgxKSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldC5sYXN0KCktPmFwcGVuZFBhcmFtZXRlcihVbmlmb3JtM2Y6OmNy
ZWF0ZShsb2NhdGlvbiwgbnVtYmVyLnZhbHVlQXQoMCksIG51bWJlci52YWx1ZUF0KDEpLCBudW1i
ZXIudmFsdWVBdCgyKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldC5sYXN0KCkt
PmFwcGVuZFBhcmFtZXRlcihVbmlmb3JtNGY6OmNyZWF0ZShsb2NhdGlvbiwgbnVtYmVyLnZhbHVl
QXQoMCksIG51bWJlci52YWx1ZUF0KDEpLCBudW1iZXIudmFsdWVBdCgyKSwgbnVtYmVyLnZhbHVl
QXQoMykpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICB9IC8vIHN3aXRjaChudW1iZXIuc2l6ZSgpKQorCisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0gLy8gY2FzZSBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6Ok5V
TUJFUgorICAgICAgICAgICAgICAgIGNhc2UgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyOjpUUkFOU0ZP
Uk06IHsKKyAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3Jt
OworCisgICAgICAgICAgICAgICAgICAgIGlmIChzdXJmYWNlLT5jb250ZW50UmVjdCgpLndpZHRo
KCkgJiYgc3VyZmFjZS0+Y29udGVudFJlY3QoKS5oZWlnaHQoKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gVGhlIHZpZXdwb3J0IGlzIGEgYm94IHdpdGggdGhlIHNpemUgb2YgMSB1bml0
LCBzbyB3ZSBhcmUgc2NhbGxpbmcgdXAgaGVyZSB0byBtYWtlIHN1cmUgdGhhdCB0cmFuc2xhdGlv
bnMgaGFwcGVuIHVzaW5nIHJlYWwgcGl4ZWxzCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB1
bml0cy4gQXQgdGhlIGVuZCB3ZSBzY2FsZSBiYWNrIGRvd24gaW4gb3JkZXIgdG8gbWFwIGl0IGJh
Y2sgdG8gdGhlIG9yaWdpbmFsIGJveC4gTm90ZSB0aGF0IHRyYW5zZm9ybXMgY29tZSBpbiByZXZl
cnNlIG9yZGVyLCBiZWNhdXNlIGl0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdXBw
b3NlZCB0byBtdWx0aXBseSB0byB0aGUgbGVmdCBvZiB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIHZl
cnRpY2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHRoZSBvcmlnaW4g
KDAsIDApIG9mIHRoZSB2aWV3cG9ydCBpcyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBjb250ZXh0LCBz
byB0aGVyZSdzIG5vIG5lZWQgdG8gY2hhbmdlIHRoZSBvcmlnaW4gb2YgdGhlIHRyYW5zZm9ybQor
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW4gb3JkZXIgdG8gcm90YXRlIGFyb3VuZCB0aGUg
bWlkZGxlIG9mIG1lc2guCisgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm0uc2NhbGUz
ZCgxLjAgLyBzdXJmYWNlLT5jb250ZW50UmVjdCgpLndpZHRoKCksIDEuMCAvIHN1cmZhY2UtPmNv
bnRlbnRSZWN0KCkuaGVpZ2h0KCksIDEpOworICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8Q3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyKj4oY2ZvLnBhcmFtZXRlcnMoKVtp
XS5nZXQoKSktPmFwcGx5VHJhbnNmb3JtKHRyYW5zZm9ybSwgcm91bmRlZEludFNpemUoc3VyZmFj
ZS0+Y29udGVudFJlY3QoKS5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5z
Zm9ybS5zY2FsZTNkKHN1cmZhY2UtPmNvbnRlbnRSZWN0KCkud2lkdGgoKSwgc3VyZmFjZS0+Y29u
dGVudFJlY3QoKS5oZWlnaHQoKSwgMSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICAgICAgZmxvYXQgZ2xNYXRyaXhbMTZdOworICAgICAgICAgICAgICAgICAgICB0cmFu
c2Zvcm0udG9Db2x1bW5NYWpvckZsb2F0QXJyYXkoZ2xNYXRyaXgpOworCisgICAgICAgICAgICAg
ICAgICAgIC8vIFRoaXMgd2lsbCBjcmVhdGUgYSBkZWVwLWNvcHkgb2YgZ2xNYXRyaXguCisgICAg
ICAgICAgICAgICAgICAgIHJldC5sYXN0KCktPmFwcGVuZFBhcmFtZXRlcihNYXRyaXg0ZnY6OmNy
ZWF0ZShsb2NhdGlvbiwgMSwgZmFsc2UsICZnbE1hdHJpeFswXSkpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9IC8vIGNhc2UgQ3VzdG9tRmlsdGVyUGFyYW1l
dGVyOjpUUkFOU0ZPUk0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXQubGFzdCgp
LT51c2VDdXN0b21TaGFkZXIoc2hhZGVyLnJlbGVhc2UoKSk7CisgICAgICAgICAgICByZXQubGFz
dCgpLT5hZG9wdE1lc2gobWVzaC5yZWxlYXNlKCkpOyAvLyBPYmplY3RzIGZyb20gbWVzaCBhcmUg
dXNlZCBpbiBHTF9BUlJBWV9CVUZGRVIgYW5kIEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSCiAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjk5
LDcgKzg0OSw5IEBAIHZvaWQgTGF5ZXJGaWx0ZXJSZW5kZXJlcjo6YXBwbHlBY3Rpb25zKHVuc2ln
bmVkJiBmYm8sIExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxhCiAgICAgICAgICAgICBnbERyYXdB
cnJheXMoR0xfVFJJQU5HTEVfRkFOLCAwLCA0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIExheWVyRmlsdGVyUmVuZGVyZXJBY3Rpb246OkRyYXdUcmlhbmdsZUVsZW1lbnRzVVNo
b3J0MDoKKyAgICAgICAgICAgIGdsVmlld3BvcnQoMC41LCAwLjUsIHN1cmZhY2UtPnNpemUoKS53
aWR0aCgpLCBzdXJmYWNlLT5zaXplKCkuaGVpZ2h0KCkpOwogICAgICAgICAgICAgZ2xEcmF3RWxl
bWVudHMoR0xfVFJJQU5HTEVTLCBhY3Rpb25zW2ldLT5kcmF3aW5nTW9kZVBhcmFtZXRlcigpLCBH
TF9VTlNJR05FRF9TSE9SVCwgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQqPihzdGF0aWNfY2FzdDxp
bnRwdHJfdD4oMCkpKTsKKyAgICAgICAgICAgIGdsVmlld3BvcnQoMC4wLCAwLjAsIHN1cmZhY2Ut
PnNpemUoKS53aWR0aCgpLCBzdXJmYWNlLT5zaXplKCkuaGVpZ2h0KCkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgTGF5ZXJGaWx0ZXJSZW5kZXJlckFjdGlvbjo6TnVtYmVyT2ZE
cmF3aW5nTW9kZXM6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJGaWx0
ZXJSZW5kZXJlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9MYXllckZpbHRlclJlbmRlcmVyLmgKaW5kZXggM2IyOGQwOGFiNDdmOTdmNDE3MTNhY2M1NmQ4
YmY5ZWVhNmZkM2ExNC4uZTE4NzU0MzdmYzE3MGQxNjI3NWNlZmI3NWMyZDg0YmRiZjViMzg5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9M
YXllckZpbHRlclJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYmxhY2tiZXJyeS9MYXllckZpbHRlclJlbmRlcmVyLmgKQEAgLTIxLDggKzIxLDEyIEBACiAK
ICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIEVOQUJMRShDU1NfRklMVEVSUykK
IAorI2luY2x1ZGUgIkN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuaCIKKyNpbmNsdWRlICJDdXN0
b21GaWx0ZXJPcGVyYXRpb24uaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiTGF5
ZXJDb21waWxlZFByb2dyYW0uaCIKICNpbmNsdWRlICJMYXllckRhdGEuaCIKKyNpbmNsdWRlICJM
YXllckZpbHRlck1lc2guaCIKICNpbmNsdWRlICJUZXh0dXJlLmgiCiAjaW5jbHVkZSAiVHJhbnNm
b3JtYXRpb25NYXRyaXguaCIKIApAQCAtMzYsNiArNDAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvOwogY2xhc3MgTGF5ZXJDb21wb3Np
dGluZ1RocmVhZDsKIGNsYXNzIExheWVyRmlsdGVyUmVuZGVyZXI7CiBjbGFzcyBMYXllckZpbHRl
clJlbmRlcmVyQWN0aW9uOwpAQCAtMTk5LDkgKzIwNCwxNCBAQCBwdWJsaWM6CiAgICAgaW50IGRy
YXdpbmdNb2RlUGFyYW1ldGVyKCkgY29uc3QgeyByZXR1cm4gbV9kcmF3aW5nTW9kZVBhcmFtZXRl
cjsgfQogICAgIHZvaWQgc2V0RHJhd2luZ01vZGVQYXJhbWV0ZXIoaW50IHApIHsgbV9kcmF3aW5n
TW9kZVBhcmFtZXRlciA9IHA7IH0KIAorI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICB2b2lk
IHVzZUN1c3RvbVNoYWRlcihQYXNzUmVmUHRyPExheWVyQ29tcGlsZWRQcm9ncmFtPiBzaGFkZXIp
IHsgbV9jdXN0b21TaGFkZXIgPSBzaGFkZXI7IG1fY3VzdG9tSWQgPSBtX2N1c3RvbVNoYWRlci0+
cHJvZ3JhbSgpOyB9CisgICAgdm9pZCBhZG9wdE1lc2goUGFzc1JlZlB0cjxMYXllckZpbHRlck1l
c2g+IG1lc2gpIHsgbV9jdXN0b21NZXNoID0gbWVzaDsgfQorI2VuZGlmCiAKIHByb3RlY3RlZDoK
ICAgICBpbnQgbV9wcm9ncmFtSWQ7CisgICAgaW50IG1fY3VzdG9tSWQ7CiAgICAgYm9vbCBtX3B1
c2hTbmFwc2hvdDsKICAgICBib29sIG1fcG9wU25hcHNob3Q7CiAKQEAgLTIxMCw2ICsyMjAsMTAg
QEAgcHJvdGVjdGVkOgogICAgIERyYXdpbmdNb2RlIG1fZHJhd2luZ01vZGU7CiAgICAgaW50IG1f
ZHJhd2luZ01vZGVQYXJhbWV0ZXI7CiAKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisgICAgUmVm
UHRyPExheWVyQ29tcGlsZWRQcm9ncmFtPiBtX2N1c3RvbVNoYWRlcjsKKyAgICBSZWZQdHI8TGF5
ZXJGaWx0ZXJNZXNoPiBtX2N1c3RvbU1lc2g7CisjZW5kaWYKIHByaXZhdGU6CiAgICAgTGF5ZXJG
aWx0ZXJSZW5kZXJlckFjdGlvbihpbnQgcHJvZ3JhbUlkKTsKIH07CkBAIC0yMjYsNiArMjQwLDEw
IEBAIHB1YmxpYzoKICAgICBib29sIGlzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxl
ZDsgfQogICAgIHZvaWQgZGlzYWJsZSgpIHsgbV9lbmFibGVkID0gZmFsc2U7IH0KIAorI2lmIEVO
QUJMRShDU1NfU0hBREVSUykKKyAgICB2b2lkIGZpbHRlck1lc2hEZXN0cm95ZWQoTGF5ZXJGaWx0
ZXJNZXNoKik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBMYXllckZpbHRlclJlbmRlcmVyKGNv
bnN0IGludCYgcG9zaXRpb25Mb2NhdGlvbiwgY29uc3QgaW50JiB0ZXhDb29yZExvY2F0aW9uKTsK
ICAgICB2b2lkIGJpbmRDb21tb25BdHRyaWJMb2NhdGlvbihpbnQgbG9jYXRpb24sIGNvbnN0IGNo
YXIqIGF0dHJpYk5hbWUpOwpAQCAtMjQwLDYgKzI1OCwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQg
cHVzaFNuYXBzaG90KExheWVyUmVuZGVyZXJTdXJmYWNlKiwgaW50IHNvdXJjZUlkKTsKICAgICB2
b2lkIHBvcFNuYXBzaG90KCk7CiAKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisgICAgUGFzc1Jl
ZlB0cjxMYXllckNvbXBpbGVkUHJvZ3JhbT4gZ2V0Q29tcGlsZWRQcm9ncmFtKGNvbnN0IEN1c3Rv
bUZpbHRlclByb2dyYW1JbmZvJik7CisgICAgUGFzc1JlZlB0cjxMYXllckZpbHRlck1lc2g+IGdl
dEZpbHRlck1lc2godW5zaWduZWQgY29scywgdW5zaWduZWQgcm93cywgY29uc3QgRmxvYXRSZWN0
JiBtZXNoQm94LCBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBlKTsKKyNlbmRpZgorCiAg
ICAgYm9vbCBtX2VuYWJsZWQ7CiAKICAgICAvLyBFU1NMIGF0dHJpYnV0ZXMgc2hhcmVkIHdpdGgg
TGF5ZXJSZW5kZXJlciAtIHNlZSBjb25zdHJ1Y3RvcjoKQEAgLTI1OSw2ICsyODIsMTEgQEAgcHJp
dmF0ZToKICAgICBSZWZQdHI8VGV4dHVyZT4gbV90ZXh0dXJlOwogICAgIFJlZlB0cjxUZXh0dXJl
PiBtX3NuYXBzaG90VGV4dHVyZTsKIAorI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICBDdXN0
b21GaWx0ZXJHbG9iYWxDb250ZXh0IG1fcHJvZ3JhbVZhbGlkYXRvcjsKKyAgICBIYXNoU2V0PExh
eWVyRmlsdGVyTWVzaCo+IG1fbWVzaFNldDsKKyNlbmRpZgorCiAgICAgZnJpZW5kIGNsYXNzIExh
eWVyRmlsdGVyUmVuZGVyZXJBY3Rpb247CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyV2ViS2l0VGhyZWFkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJl
YWQuY3BwCmluZGV4IDQyYjhiZWQ1ODU0NDhmMGU3YzcwZGZkYjQ2Mzg4YzM2ZWU4MDhmNDAuLmY5
ZWQxZGE0NTVkNmJmZDMxNWUxMGY5ZTRiZjhhODIyYTJmMDc4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJlYWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5
ZXJXZWJLaXRUaHJlYWQuY3BwCkBAIC00MTUsOSArNDE1LDYgQEAgYm9vbCBMYXllcldlYktpdFRo
cmVhZDo6ZmlsdGVyc0NhbkJlQ29tcG9zaXRlZChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0
ZXJzKQogICAgICAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZpbHRlck9wZXJhdGlvbiA9IGZp
bHRlcnMuYXQoaSk7CiAgICAgICAgIHN3aXRjaCAoZmlsdGVyT3BlcmF0aW9uLT5nZXRPcGVyYXRp
b25UeXBlKCkpIHsKICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRToKLSNp
ZiBFTkFCTEUoQ1NTX1NIQURFUlMpCi0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDVVNU
T006Ci0jZW5kaWYKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgKaW5kZXgg
YjRlOGIyOTM2MGI4NTc4OTgwOTFjY2VkMWJjNTc4MGJjZjc5YjM3NC4uZGE5MzQwMTI4ZTk1Mjcy
M2Y3ODRiNTAyNjc5NDBhMzA1YWNlNmIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlv
bi5oCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICAKICAgICBDdXN0b21GaWx0ZXJQcm9n
cmFtKiBwcm9ncmFtKCkgY29uc3QgeyByZXR1cm4gbV9wcm9ncmFtLmdldCgpOyB9CiAgICAgCi0g
ICAgY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgcGFyYW1ldGVycygpIHsgcmV0dXJu
IG1fcGFyYW1ldGVyczsgfQorICAgIGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIHBh
cmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KICAgICAKICAgICB1bnNp
Z25lZCBtZXNoUm93cygpIGNvbnN0IHsgcmV0dXJuIG1fbWVzaFJvd3M7IH0KICAgICB1bnNpZ25l
ZCBtZXNoQ29sdW1ucygpIGNvbnN0IHsgcmV0dXJuIG1fbWVzaENvbHVtbnM7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVy
UGFyYW1ldGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1
c3RvbUZpbHRlclBhcmFtZXRlci5oCmluZGV4IDgyOTgwZDZjNzgwZjA4MGNjN2Q3MDNmYWE5OGM2
MmI2ZjVkM2VhODQuLjg3ZjQxNTZmZWVlODI1ZTJjNmU4MjY5YmQ5YmJiYThhNjczYmE0NGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyUGFyYW1ldGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9DdXN0b21GaWx0ZXJQYXJhbWV0ZXIuaApAQCAtMzcsMTIgKzM3LDEzIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQW5pbWF0aW9uQmFzZTsKKwogY2xhc3MgQ3VzdG9t
RmlsdGVyUGFyYW1ldGVyIDogcHVibGljIFJlZkNvdW50ZWQ8Q3VzdG9tRmlsdGVyUGFyYW1ldGVy
PiB7CiBwdWJsaWM6CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBvdGhlciBwYXJhbWV0ZXJzIHR5
cGVzOgogICAgIC8vIGJvb2xlYW5zOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzY0MzgKICAgICAvLyB0ZXh0dXJlczogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTcxNDQyCi0gICAgLy8gM2QtdHJhbnNmb3JtczogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNDQzCiAgICAgLy8gbWF0MiwgbWF0MywgbWF0NDog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNDQ0CiAgICAgZW51bSBQ
YXJhbWV0ZXJUeXBlIHsKICAgICAgICAgTlVNQkVSLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9B
cGkvV2ViUGFnZS5jcHAKaW5kZXggMTM3OTkyM2UzY2Q2OTRjZTM0NmRjMmFjZjIwODgyOTUyNGY2
OGFiOS4uNmY5NWY1ZTZiNDFhZjAzZTk0ZmFhMjRkOGUzMGZjMDcxNTQxZWRjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCkBAIC01NzAsNiArNTcwLDkgQEAgdm9p
ZCBXZWJQYWdlUHJpdmF0ZTo6aW5pdChjb25zdCBXZWJTdHJpbmcmIHBhZ2VHcm91cE5hbWUpCiAK
ICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRXZWJHTEVuYWJs
ZWQodHJ1ZSk7CisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorICAgIG1fcGFnZS0+c2V0dGluZ3Mo
KS0+c2V0Q1NTQ3VzdG9tRmlsdGVyRW5hYmxlZCh0cnVlKTsKKyNlbmRpZgogI2VuZGlmCiAjaWYg
RU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKICAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNl
dENhbnZhc1VzZXNBY2NlbGVyYXRlZERyYXdpbmcodHJ1ZSk7Cg==
</data>
<flag name="review"
          id="174130"
          type_id="1"
          status="-"
          setter="staikos"
    />
          </attachment>
      

    </bug>

</bugzilla>