<?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>97156</bug_id>
          
          <creation_ts>2012-09-19 18:09:58 -0700</creation_ts>
          <short_desc>Update the CSS property used to support draggable regions</short_desc>
          <delta_ts>2012-10-09 17:07:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jian Li">jianli</reporter>
          <assigned_to name="Jian Li">jianli</assigned_to>
          <cc>abarth</cc>
    
    <cc>bdakin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tkent</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>724030</commentid>
    <comment_count>0</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2012-09-19 18:09:58 -0700</bug_when>
    <thetext>We want to change the CSS property from &quot;-webkit-widget-region&quot; to &quot;-webkit-app-region&quot; with the following syntax:
  -webkit-app-region: drag|no-drag

The reason for the renaming is that widget seems to be too vague and we also want to indicate that it is used for web app.

In addition, we want to simplify the syntax as above. We will get the bounding information from the element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724041</commentid>
    <comment_count>1</comment_count>
      <attachid>164815</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2012-09-19 18:19:40 -0700</bug_when>
    <thetext>Created attachment 164815
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724046</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-19 18:24:54 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724052</commentid>
    <comment_count>3</comment_count>
      <attachid>164815</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-19 18:39:01 -0700</bug_when>
    <thetext>Comment on attachment 164815
Proposed Patch

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

I think you went a bit too far in make the implementations separate.  It seems fine to make the CSS part separate as that part is different between the two, but the stuff in Document looks really silly duplicated.

&gt; Source/WebCore/dom/Document.cpp:466
&gt; -#if ENABLE(DASHBOARD_SUPPORT) || ENABLE(WIDGET_REGION)
&gt; +#if ENABLE(DASHBOARD_SUPPORT)
&gt;      , m_hasDashboardRegions(false)
&gt;      , m_dashboardRegionsDirty(false)
&gt;  #endif
&gt; +#if ENABLE(WIDGET_REGION)
&gt; +    , m_hasDraggableRegions(false)
&gt; +    , m_draggableRegionsDirty(false)
&gt; +#endif

It doesn&apos;t make senes to continue sharing this part?

&gt; Source/WebCore/dom/Document.h:1060
&gt; +#if ENABLE(WIDGET_REGION)
&gt; +    void setDraggableRegionsDirty(bool f) { m_draggableRegionsDirty = f; }
&gt; +    bool draggableRegionsDirty() const { return m_draggableRegionsDirty; }
&gt; +    bool hasDraggableRegions () const { return m_hasDraggableRegions; }
&gt; +    void setHasDraggableRegions(bool f) { m_hasDraggableRegions = f; }
&gt; +    const Vector&lt;DraggableRegionValue&gt;&amp; draggableRegions() const;
&gt; +    void setDraggableRegions(const Vector&lt;DraggableRegionValue&gt;&amp;);
&gt; +#endif

It seems silly to duplicate all of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724066</commentid>
    <comment_count>4</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2012-09-19 18:55:03 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 164815 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=164815&amp;action=review
&gt; 
&gt; I think you went a bit too far in make the implementations separate.  It seems fine to make the CSS part separate as that part is different between the two, but the stuff in Document looks really silly duplicated.
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:466
&gt; &gt; -#if ENABLE(DASHBOARD_SUPPORT) || ENABLE(WIDGET_REGION)
&gt; &gt; +#if ENABLE(DASHBOARD_SUPPORT)
&gt; &gt;      , m_hasDashboardRegions(false)
&gt; &gt;      , m_dashboardRegionsDirty(false)
&gt; &gt;  #endif
&gt; &gt; +#if ENABLE(WIDGET_REGION)
&gt; &gt; +    , m_hasDraggableRegions(false)
&gt; &gt; +    , m_draggableRegionsDirty(false)
&gt; &gt; +#endif
&gt; 
&gt; It doesn&apos;t make senes to continue sharing this part?
&gt; 
&gt; &gt; Source/WebCore/dom/Document.h:1060
&gt; &gt; +#if ENABLE(WIDGET_REGION)
&gt; &gt; +    void setDraggableRegionsDirty(bool f) { m_draggableRegionsDirty = f; }
&gt; &gt; +    bool draggableRegionsDirty() const { return m_draggableRegionsDirty; }
&gt; &gt; +    bool hasDraggableRegions () const { return m_hasDraggableRegions; }
&gt; &gt; +    void setHasDraggableRegions(bool f) { m_hasDraggableRegions = f; }
&gt; &gt; +    const Vector&lt;DraggableRegionValue&gt;&amp; draggableRegions() const;
&gt; &gt; +    void setDraggableRegions(const Vector&lt;DraggableRegionValue&gt;&amp;);
&gt; &gt; +#endif
&gt; 
&gt; It seems silly to duplicate all of this.

Should we still keep calling these methods as ***dashboardRegions*** in Document for both dashboard region and draggable region? DraggableRegionValue is different from DashboardRegionValue since DraggableRegionValue doesn&apos;t need label and clip as in DashboardRegionValue while it adds its own draggable field. In the future, we might add other fields to DraggableRegionValue to support complex shape and z-index if needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724618</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-20 10:36:42 -0700</bug_when>
    <thetext>&gt; Should we still keep calling these methods as ***dashboardRegions*** in Document for both dashboard region and draggable region?

I&apos;d probably name them something that makes sense for both.  DraggableRegion seems like a reasonable choice.

&gt; DraggableRegionValue is different from DashboardRegionValue since DraggableRegionValue doesn&apos;t need label and clip as in DashboardRegionValue while it adds its own draggable field. In the future, we might add other fields to DraggableRegionValue to support complex shape and z-index if needed.

That fine.  We don&apos;t need to be able to compile in support for both of them yet.  We can just have DraggableRegionValue have different fields depending on which compile flag you&apos;ve set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727998</commentid>
    <comment_count>6</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2012-09-25 15:10:33 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; Should we still keep calling these methods as ***dashboardRegions*** in Document for both dashboard region and draggable region?
&gt; 
&gt; I&apos;d probably name them something that makes sense for both.  DraggableRegion seems like a reasonable choice.
&gt; 
&gt; &gt; DraggableRegionValue is different from DashboardRegionValue since DraggableRegionValue doesn&apos;t need label and clip as in DashboardRegionValue while it adds its own draggable field. In the future, we might add other fields to DraggableRegionValue to support complex shape and z-index if needed.
&gt; 
&gt; That fine.  We don&apos;t need to be able to compile in support for both of them yet.  We can just have DraggableRegionValue have different fields depending on which compile flag you&apos;ve set.

(In reply to comment #5)
&gt; &gt; Should we still keep calling these methods as ***dashboardRegions*** in Document for both dashboard region and draggable region?
&gt; 
&gt; I&apos;d probably name them something that makes sense for both.  DraggableRegion seems like a reasonable choice.

If we want to share the codes for both features, how about something that is different from both DashboardRegion and DraggableRegion such that we will not confuse these two regions, like AnnonatedRegion or TaggedRegion?

&gt; 
&gt; &gt; DraggableRegionValue is different from DashboardRegionValue since DraggableRegionValue doesn&apos;t need label and clip as in DashboardRegionValue while it adds its own draggable field. In the future, we might add other fields to DraggableRegionValue to support complex shape and z-index if needed.
&gt; 
&gt; That fine.  We don&apos;t need to be able to compile in support for both of them yet.  We can just have DraggableRegionValue have different fields depending on which compile flag you&apos;ve set.

We do have both feature guards turned on for Mac WebKit such that we can run tests for both features, though Safari or Chromium would turn on just one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728003</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-09-25 15:14:50 -0700</bug_when>
    <thetext>Do you intent to submit the &quot;app-region&quot; CSS property for standardization?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728023</commentid>
    <comment_count>8</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2012-09-25 15:31:53 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Do you intent to submit the &quot;app-region&quot; CSS property for standardization?

Yes, we have plan to do so. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728972</commentid>
    <comment_count>9</comment_count>
      <attachid>165875</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2012-09-26 14:15:40 -0700</bug_when>
    <thetext>Created attachment 165875
Proposed Patch

Changed as suggested in order to shared rendering update code for both features.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729610</commentid>
    <comment_count>10</comment_count>
      <attachid>165875</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-27 09:33:27 -0700</bug_when>
    <thetext>Comment on attachment 165875
Proposed Patch

Thanks, this looks much better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738340</commentid>
    <comment_count>11</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2012-10-09 17:07:33 -0700</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/130829.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164815</attachid>
            <date>2012-09-19 18:19:40 -0700</date>
            <delta_ts>2012-09-26 14:15:40 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>97156.diff</filename>
            <type>text/plain</type>
            <size>65106</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjNzgzNjhhLi4zNzY2MDRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDkt
MTkgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVwZGF0ZSB0aGUg
Q1NTIHByb3BlcnR5IHVzZWQgdG8gc3VwcG9ydCBkcmFnZ2FibGUgcmVnaW9ucy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MTU2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlZCB0aGUgdGVzdCBh
bmQgcmVuYW1lIHRoZSBmaWxlcyBkdWUgdG8gQ1NTIHByb3BlcnR5IG5hbWUgYW5kCisgICAgICAg
IHN5bnRheCBjaGFuZ2VzLgorCisgICAgICAgICogZmFzdC9jc3MvZHJhZ2dhYmxlLXJlZ2lvbi1w
YXJzZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9kcmFnZ2FibGUt
cmVnaW9uLXBhcnNlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy93aWRnZXQtcmVn
aW9uLXBhcnNlci1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9jc3Mvd2lk
Z2V0LXJlZ2lvbi1wYXJzZXIuaHRtbDogUmVtb3ZlZC4KKwogMjAxMi0wOS0xOSAgRGlyayBQcmFu
a2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBjb252ZXJ0IGNocm9taXVtIGFu
ZHJvaWQgVGVzdEV4cGVjdGF0aW9ucyB0byB0aGUgbmV3IHN5bnRheApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9jc3MvZHJhZ2dhYmxlLXJlZ2lvbi1wYXJzZXItZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvZHJhZ2dhYmxlLXJlZ2lvbi1wYXJzZXItZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmMWFjYjcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9kcmFnZ2FibGUtcmVnaW9uLXBhcnNlci1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwzNyBAQAorVGhpcyB0ZXN0cyB0aGUgcGFyc2VyIGFuZCBzZXJp
YWxpemVyIGZvciBkcmFnZ2FibGUgcmVnaW9uIHZhbHVlcy4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKKworUEFTUyBwYXJzZURyYWdnYWJsZVJlZ2lvbignZHJhZycpIGlzICdkcmFn
JworUEFTUyBwYXJzZURyYWdnYWJsZVJlZ2lvbignbm8tZHJhZycpIGlzICduby1kcmFnJworCitU
ZXN0cyBmb3IgdmFyaWF0aW9ucyBpbiB3aGl0ZXNwYWNlIHRoYXQgYXJlIGFsbG93ZWQuCisKK1BB
U1MgcGFyc2VEcmFnZ2FibGVSZWdpb24oJyAgZHJhZyAgJykgaXMgJ2RyYWcnCitQQVNTIHBhcnNl
RHJhZ2dhYmxlUmVnaW9uKCcgIG5vLWRyYWcgICAgJykgaXMgJ25vLWRyYWcnCisKK1Rlc3RzIGZv
ciBjYXNlIGluc2Vuc2l0aXZpdHkuCisKK1BBU1MgcGFyc2VEcmFnZ2FibGVSZWdpb24oJ0RyYWcn
KSBpcyAnZHJhZycKK1BBU1MgcGFyc2VEcmFnZ2FibGVSZWdpb24oJ0RyQUcnKSBpcyAnZHJhZycK
K1BBU1MgcGFyc2VEcmFnZ2FibGVSZWdpb24oJ05PLURyQUcnKSBpcyAnbm8tZHJhZycKK1BBU1Mg
cGFyc2VEcmFnZ2FibGVSZWdpb24oJ05PLURSQUcnKSBpcyAnbm8tZHJhZycKKworU29tZSBleHBl
Y3RlZCBmYWlsdXJlcy4KKworUEFTUyBwYXJzZURyYWdnYWJsZVJlZ2lvbignJykgaXMgbnVsbAor
UEFTUyBwYXJzZURyYWdnYWJsZVJlZ2lvbignICcpIGlzIG51bGwKK1BBU1MgcGFyc2VEcmFnZ2Fi
bGVSZWdpb24oJ3gnKSBpcyBudWxsCitQQVNTIHBhcnNlRHJhZ2dhYmxlUmVnaW9uKCd4LScpIGlz
IG51bGwKK1BBU1MgcGFyc2VEcmFnZ2FibGVSZWdpb24oJ3goKScpIGlzIG51bGwKK1BBU1MgcGFy
c2VEcmFnZ2FibGVSZWdpb24oJ3goYSknKSBpcyBudWxsCitQQVNTIHBhcnNlRHJhZ2dhYmxlUmVn
aW9uKCdub25lIHgnKSBpcyBudWxsCitQQVNTIHBhcnNlRHJhZ2dhYmxlUmVnaW9uKCdub25lIHgo
KScpIGlzIG51bGwKK1BBU1MgcGFyc2VEcmFnZ2FibGVSZWdpb24oJ25vbmUgeChhKScpIGlzIG51
bGwKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2RyYWdnYWJsZS1yZWdpb24tcGFyc2Vy
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9kcmFnZ2FibGUtcmVnaW9uLXBhcnNlci5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxNzU2N2EKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9kcmFnZ2FibGUtcmVnaW9uLXBhcnNlci5odG1s
CkBAIC0wLDAgKzEsNjggQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KKworZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIHBhcnNlciBhbmQgc2VyaWFsaXpl
ciBmb3IgZHJhZ2dhYmxlIHJlZ2lvbiB2YWx1ZXMuIik7CisKK3ZhciBzdHlsZSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdkZXNjcmlwdGlvbicpLnN0eWxlOworCitmdW5jdGlvbiBwYXJzZURy
YWdnYWJsZVJlZ2lvbihzdHJpbmcpCit7CisgICAgdHJ5IHsKKyAgICAgICAgc3R5bGUucmVtb3Zl
UHJvcGVydHkoIi13ZWJraXQtYXBwLXJlZ2lvbiIpOworICAgICAgICBzdHlsZS5zZXRQcm9wZXJ0
eSgiLXdlYmtpdC1hcHAtcmVnaW9uIiwgc3RyaW5nLCAiIik7CisgICAgICAgIHZhciByZXN1bHQg
PSBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCItd2Via2l0LWFwcC1yZWdpb24iKTsKKyAgICAgICAg
c3R5bGUucmVtb3ZlUHJvcGVydHkoIi13ZWJraXQtYXBwLXJlZ2lvbiIpOworICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgcmV0dXJuICIiICsgZTsKKyAg
ICB9Cit9CisKK2RlYnVnKCcnKTsKKworc2hvdWxkQmUoInBhcnNlRHJhZ2dhYmxlUmVnaW9uKCdk
cmFnJykiLCAiJ2RyYWcnIik7CitzaG91bGRCZSgicGFyc2VEcmFnZ2FibGVSZWdpb24oJ25vLWRy
YWcnKSIsICInbm8tZHJhZyciKTsKKworZGVidWcoJycpOworZGVidWcoJ1Rlc3RzIGZvciB2YXJp
YXRpb25zIGluIHdoaXRlc3BhY2UgdGhhdCBhcmUgYWxsb3dlZC4nKTsKK2RlYnVnKCcnKTsKKwor
c2hvdWxkQmUoInBhcnNlRHJhZ2dhYmxlUmVnaW9uKCcgIGRyYWcgICcpIiwgIidkcmFnJyIpOwor
c2hvdWxkQmUoInBhcnNlRHJhZ2dhYmxlUmVnaW9uKCcgIG5vLWRyYWcgICAgJykiLCAiJ25vLWRy
YWcnIik7CisKK2RlYnVnKCcnKTsKK2RlYnVnKCdUZXN0cyBmb3IgY2FzZSBpbnNlbnNpdGl2aXR5
LicpOworZGVidWcoJycpOworCitzaG91bGRCZSgicGFyc2VEcmFnZ2FibGVSZWdpb24oJ0RyYWcn
KSIsICInZHJhZyciKTsKK3Nob3VsZEJlKCJwYXJzZURyYWdnYWJsZVJlZ2lvbignRHJBRycpIiwg
IidkcmFnJyIpOworc2hvdWxkQmUoInBhcnNlRHJhZ2dhYmxlUmVnaW9uKCdOTy1EckFHJykiLCAi
J25vLWRyYWcnIik7CitzaG91bGRCZSgicGFyc2VEcmFnZ2FibGVSZWdpb24oJ05PLURSQUcnKSIs
ICInbm8tZHJhZyciKTsKKworZGVidWcoJycpOworZGVidWcoJ1NvbWUgZXhwZWN0ZWQgZmFpbHVy
ZXMuJyk7CitkZWJ1ZygnJyk7CisKK3Nob3VsZEJlKCJwYXJzZURyYWdnYWJsZVJlZ2lvbignJyki
LCAibnVsbCIpOworc2hvdWxkQmUoInBhcnNlRHJhZ2dhYmxlUmVnaW9uKCcgJykiLCAibnVsbCIp
Oworc2hvdWxkQmUoInBhcnNlRHJhZ2dhYmxlUmVnaW9uKCd4JykiLCAibnVsbCIpOworc2hvdWxk
QmUoInBhcnNlRHJhZ2dhYmxlUmVnaW9uKCd4LScpIiwgIm51bGwiKTsKK3Nob3VsZEJlKCJwYXJz
ZURyYWdnYWJsZVJlZ2lvbigneCgpJykiLCAibnVsbCIpOworc2hvdWxkQmUoInBhcnNlRHJhZ2dh
YmxlUmVnaW9uKCd4KGEpJykiLCAibnVsbCIpOworc2hvdWxkQmUoInBhcnNlRHJhZ2dhYmxlUmVn
aW9uKCdub25lIHgnKSIsICJudWxsIik7CitzaG91bGRCZSgicGFyc2VEcmFnZ2FibGVSZWdpb24o
J25vbmUgeCgpJykiLCAibnVsbCIpOworc2hvdWxkQmUoInBhcnNlRHJhZ2dhYmxlUmVnaW9uKCdu
b25lIHgoYSknKSIsICJudWxsIik7CisKK2RlYnVnKCcnKTsKKworCis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvd2lk
Z2V0LXJlZ2lvbi1wYXJzZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvd2lk
Z2V0LXJlZ2lvbi1wYXJzZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA4ZjZjMTk1Li4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3dpZGdldC1y
ZWdpb24tcGFyc2VyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAK
LVRoaXMgdGVzdHMgdGhlIHBhcnNlciBhbmQgc2VyaWFsaXplciBmb3Igd2lkZ2V0IHJlZ2lvbiB2
YWx1ZXMuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIHBhcnNlV2lkZ2V0
UmVnaW9uKCdub25lJykgaXMgJ25vbmUnCi0KLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lv
bihsYWJlbCBjaXJjbGUpJykgaXMgJ3JlZ2lvbihsYWJlbCBjaXJjbGUpJwotUEFTUyBwYXJzZVdp
ZGdldFJlZ2lvbigncmVnaW9uKGxhYmVsIGNpcmNsZSAxcHggMnB4IDNweCA0cHgpJykgaXMgJ3Jl
Z2lvbihsYWJlbCBjaXJjbGUgMXB4IDJweCAzcHggNHB4KScKLVBBU1MgcGFyc2VXaWRnZXRSZWdp
b24oJ3JlZ2lvbihsYWJlbCBjaXJjbGUgMHB4IDBweCAwcHggMHB4KScpIGlzICdyZWdpb24obGFi
ZWwgY2lyY2xlIDBweCAwcHggMHB4IDBweCknCi1QQVNTIHBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdp
b24obGFiZWwgY2lyY2xlIGF1dG8gYXV0byBhdXRvIGF1dG8pJykgaXMgJ3JlZ2lvbihsYWJlbCBj
aXJjbGUgYXV0byBhdXRvIGF1dG8gYXV0byknCi1QQVNTIHBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdp
b24obGFiZWwgY2lyY2xlIDFweCAycHggM3B4IDRweCknKSBpcyAncmVnaW9uKGxhYmVsIGNpcmNs
ZSAxcHggMnB4IDNweCA0cHgpJwotCi1QQVNTIHBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFi
ZWwgcmVjdGFuZ2xlKScpIGlzICdyZWdpb24obGFiZWwgcmVjdGFuZ2xlKScKLVBBU1MgcGFyc2VX
aWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCByZWN0YW5nbGUgMXB4IDJweCAzcHggNHB4KScpIGlz
ICdyZWdpb24obGFiZWwgcmVjdGFuZ2xlIDFweCAycHggM3B4IDRweCknCi0KLVBBU1MgcGFyc2VX
aWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCBjaXJjbGUpIHJlZ2lvbihsYWJlbCBjaXJjbGUpJykg
aXMgJ3JlZ2lvbihsYWJlbCBjaXJjbGUpIHJlZ2lvbihsYWJlbCBjaXJjbGUpJwotUEFTUyBwYXJz
ZVdpZGdldFJlZ2lvbigncmVnaW9uKGxhYmVsIGNpcmNsZSkgcmVnaW9uKGxhYmVsIHJlY3Rhbmds
ZSknKSBpcyAncmVnaW9uKGxhYmVsIGNpcmNsZSkgcmVnaW9uKGxhYmVsIHJlY3RhbmdsZSknCi1Q
QVNTIHBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwgY2lyY2xlIDFweCAycHggM3B4IDRw
eCkgcmVnaW9uKGxhYmVsIHJlY3RhbmdsZSA1cHggNnB4IDdweCA4cHgpJykgaXMgJ3JlZ2lvbihs
YWJlbCBjaXJjbGUgMXB4IDJweCAzcHggNHB4KSByZWdpb24obGFiZWwgcmVjdGFuZ2xlIDVweCA2
cHggN3B4IDhweCknCi1QQVNTIHBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwgcmVjdGFu
Z2xlIDFweCAycHggM3B4IDRweCkgcmVnaW9uKGxhYmVsIGNpcmNsZSA1cHggNnB4IDdweCA4cHgp
JykgaXMgJ3JlZ2lvbihsYWJlbCByZWN0YW5nbGUgMXB4IDJweCAzcHggNHB4KSByZWdpb24obGFi
ZWwgY2lyY2xlIDVweCA2cHggN3B4IDhweCknCi0KLVRlc3RzIHRvIGRlbW9uc3RyYXRlIHRoYXQg
Y29tbWFzIGFyZSBhbGxvd2VkLgotCi1QQVNTIHBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFi
ZWwsIGNpcmNsZSknKSBpcyAncmVnaW9uKGxhYmVsIGNpcmNsZSknCi1QQVNTIHBhcnNlV2lkZ2V0
UmVnaW9uKCdyZWdpb24obGFiZWwsIGNpcmNsZSwgMXB4LCAycHgsIDNweCwgNHB4KScpIGlzICdy
ZWdpb24obGFiZWwgY2lyY2xlIDFweCAycHggM3B4IDRweCknCi0KLVRlc3RzIGZvciB2YXJpYXRp
b25zIGluIHdoaXRlc3BhY2UgdGhhdCBhcmUgYWxsb3dlZC4KLQotUEFTUyBwYXJzZVdpZGdldFJl
Z2lvbignICByZWdpb24oICBsYWJlbCAgY2lyY2xlICApICAnKSBpcyAncmVnaW9uKGxhYmVsIGNp
cmNsZSknCi1QQVNTIHBhcnNlV2lkZ2V0UmVnaW9uKCcgIHJlZ2lvbiggIGxhYmVsICAgY2lyY2xl
ICAxcHggIDJweCAgM3B4ICA0cHggICkgIHJlZ2lvbihsYWJlbCAgcmVjdGFuZ2xlICA1cHggIDZw
eCAgN3B4ICA4cHggICkgICcpIGlzICdyZWdpb24obGFiZWwgY2lyY2xlIDFweCAycHggM3B4IDRw
eCkgcmVnaW9uKGxhYmVsIHJlY3RhbmdsZSA1cHggNnB4IDdweCA4cHgpJwotUEFTUyBwYXJzZVdp
ZGdldFJlZ2lvbigncmVnaW9uKGxhYmVsIGNpcmNsZSAxcHggMnB4IDNweCA0cHgpcmVnaW9uKGxh
YmVsIHJlY3RhbmdsZSA1cHggNnB4IDdweCA4cHgpJykgaXMgJ3JlZ2lvbihsYWJlbCBjaXJjbGUg
MXB4IDJweCAzcHggNHB4KSByZWdpb24obGFiZWwgcmVjdGFuZ2xlIDVweCA2cHggN3B4IDhweCkn
Ci0KLVRlc3RzIGZvciBjYXNlIGluc2Vuc2l0aXZpdHkuCi0KLVBBU1MgcGFyc2VXaWRnZXRSZWdp
b24oJ3JlZ2lvbihsYWJlbCBDaXJjbGUpJykgaXMgJ3JlZ2lvbihsYWJlbCBjaXJjbGUpJwotUEFT
UyBwYXJzZVdpZGdldFJlZ2lvbigncmVnaW9uKExBQkVMIENJUkNMRSknKSBpcyAncmVnaW9uKExB
QkVMIGNpcmNsZSknCi1QQVNTIHBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24oTGFCZUwgQ2lSY0xl
KScpIGlzICdyZWdpb24oTGFCZUwgY2lyY2xlKScKLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24oJ3Jl
Z2lvbihsQWJFbCBjSXJDbEUpJykgaXMgJ3JlZ2lvbihsQWJFbCBjaXJjbGUpJwotUEFTUyBwYXJz
ZVdpZGdldFJlZ2lvbigncmVnaW9uKGxhYmVsIFJlY3RhbmdsZSknKSBpcyAncmVnaW9uKGxhYmVs
IHJlY3RhbmdsZSknCi1QQVNTIHBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24oTEFCRUwgUkVDVEFO
R0xFKScpIGlzICdyZWdpb24oTEFCRUwgcmVjdGFuZ2xlKScKLVBBU1MgcGFyc2VXaWRnZXRSZWdp
b24oJ3JlZ2lvbihMYUJlTCBSZUN0QW5HbEUpJykgaXMgJ3JlZ2lvbihMYUJlTCByZWN0YW5nbGUp
JwotUEFTUyBwYXJzZVdpZGdldFJlZ2lvbigncmVnaW9uKGxBYkVsIHJFY1RhTmdMZSknKSBpcyAn
cmVnaW9uKGxBYkVsIHJlY3RhbmdsZSknCi0KLVNvbWUgZXhwZWN0ZWQgZmFpbHVyZXMuCi0KLVBB
U1MgcGFyc2VXaWRnZXRSZWdpb24oJycpIGlzIG51bGwKLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24o
JyAnKSBpcyBudWxsCi1QQVNTIHBhcnNlV2lkZ2V0UmVnaW9uKCd4JykgaXMgbnVsbAotUEFTUyBw
YXJzZVdpZGdldFJlZ2lvbignZGFzaGJvYXJkLScpIGlzIG51bGwKLVBBU1MgcGFyc2VXaWRnZXRS
ZWdpb24oJ3JlZ2lvbicpIGlzIG51bGwKLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbign
KSBpcyBudWxsCi1QQVNTIHBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwnKSBpcyBudWxs
Ci1QQVNTIHBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwgJykgaXMgbnVsbAotUEFTUyBw
YXJzZVdpZGdldFJlZ2lvbigncmVnaW9uKGxhYmVsIGMnKSBpcyBudWxsCi1QQVNTIHBhcnNlV2lk
Z2V0UmVnaW9uKCdyZWdpb24obGFiZWwgY2lyY2xlJykgaXMgbnVsbAotUEFTUyBwYXJzZVdpZGdl
dFJlZ2lvbigncmVnaW9uKGxhYmVsKScpIGlzIG51bGwKLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24o
J3JlZ2lvbiAobGFiZWwgY2lyY2xlKScpIGlzIG51bGwKLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24o
J3JlZ2lvbihsYWJlbCwsIGNpcmNsZSknKSBpcyBudWxsCi1QQVNTIHBhcnNlV2lkZ2V0UmVnaW9u
KCdyZWdpb24obGFiZWwgY2lyY2xlIDFweDJweCAzcHggNHB4KScpIGlzIG51bGwKLVBBU1MgcGFy
c2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCwsIGNpcmNsZSwgMXB4LCAycHgsIDNweCwgNHB4
KScpIGlzIG51bGwKLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCwgY2lyY2xl
IDFweCAycHggM3B4IDRweCknKSBpcyBudWxsCi1QQVNTIHBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdp
b24obGFiZWwsIGNpcmNsZSwgMXB4IDJweCAzcHggNHB4KScpIGlzIG51bGwKLVBBU1MgcGFyc2VX
aWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCwgY2lyY2xlLCAxcHgsIDJweCAzcHggNHB4KScpIGlz
IG51bGwKLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCwgY2lyY2xlLCAxcHgs
IDJweCwgM3B4IDRweCknKSBpcyBudWxsCi1QQVNTIHBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24o
bGFiZWwgY2lyY2xlLCAxcHgsIDJweCwgM3B4LCA0cHgpJykgaXMgbnVsbAotUEFTUyBwYXJzZVdp
ZGdldFJlZ2lvbigncmVnaW9uKGxhYmVsIGNpcmNsZSAxcHgsIDJweCwgM3B4LCA0cHgpJykgaXMg
bnVsbAotUEFTUyBwYXJzZVdpZGdldFJlZ2lvbigncmVnaW9uKGxhYmVsIGNpcmNsZSB4KScpIGlz
IG51bGwKLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCBjaXJjbGUgeCB4KScp
IGlzIG51bGwKLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCBjaXJjbGUgeCB4
IHgpJykgaXMgbnVsbAotUEFTUyBwYXJzZVdpZGdldFJlZ2lvbigncmVnaW9uKGxhYmVsIGNpcmNs
ZSB4IHggeCB4KScpIGlzIG51bGwKLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJl
bCBjaXJjbGUgeCB4IHggeCB4KScpIGlzIG51bGwKLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24oJ3Jl
Z2lvbihsYWJlbCBjaXJjbGUgMXB4IDJweCAzcHggNHB4IHgpJykgaXMgbnVsbAotUEFTUyBwYXJz
ZVdpZGdldFJlZ2lvbigncmVnaW9uKGxhYmVsIGNpcmNsZSAxcHggMnB4IDNweCA0cHggeCB4KScp
IGlzIG51bGwKLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCBjaXJjbGUgMXB4
IDJweCAzcHggNHB4IHggeCB4KScpIGlzIG51bGwKLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24oJ3Jl
Z2lvbihsYWJlbCBjaXJjbGUgMXB4IDJweCAzcHggNHB4IHggeCB4IHgpJykgaXMgbnVsbAotUEFT
UyBwYXJzZVdpZGdldFJlZ2lvbigncmVnaW9uKGxhYmVsIGNpcmNsZSAxcHggMnB4IDNweCA0cHgg
eCB4IHggeCB4KScpIGlzIG51bGwKLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJl
bCBjaXJjbGUgMXB4IDJweCAzcHggNHB4IGNpcmNsZSA1cHggNnB4IDdweCA4cHgpJykgaXMgbnVs
bAotUEFTUyBwYXJzZVdpZGdldFJlZ2lvbigncmVnaW9uKGxhYmVsLCBjaXJjbGUsIDFweCwgMnB4
LCAzcHgsIDRweCwgY2lyY2xlLCA1cHgsIDZweCwgN3B4LCA4cHgpJykgaXMgbnVsbAotUEFTUyBw
YXJzZVdpZGdldFJlZ2lvbignbm9uZSB4JykgaXMgbnVsbAotUEFTUyBwYXJzZVdpZGdldFJlZ2lv
bignbm9uZSB4IHgnKSBpcyBudWxsCi1QQVNTIHBhcnNlV2lkZ2V0UmVnaW9uKCdub25lIHggeCB4
JykgaXMgbnVsbAotUEFTUyBwYXJzZVdpZGdldFJlZ2lvbignbm9uZSB4IHggeCB4JykgaXMgbnVs
bAotUEFTUyBwYXJzZVdpZGdldFJlZ2lvbignbm9uZSByZWdpb24obGFiZWwsIGNpcmNsZSknKSBp
cyBudWxsCi1QQVNTIHBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwsIGNpcmNsZSkgbm9u
ZScpIGlzIG51bGwKLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24oJ2F0dHIoYSknKSBpcyBudWxsCi0K
LVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy93aWRnZXQtcmVnaW9uLXBhcnNlci5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3Mvd2lkZ2V0LXJlZ2lvbi1wYXJzZXIuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggN2Y5OGViNi4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy93aWRnZXQtcmVnaW9uLXBhcnNlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMz
ICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdD4KLQot
ZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIHBhcnNlciBhbmQgc2VyaWFsaXplciBmb3Igd2lk
Z2V0IHJlZ2lvbiB2YWx1ZXMuIik7Ci0KLXZhciBzdHlsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdkZXNjcmlwdGlvbicpLnN0eWxlOwotCi1mdW5jdGlvbiBwYXJzZVdpZGdldFJlZ2lvbihz
dHJpbmcpCi17Ci0gICAgdHJ5IHsKLSAgICAgICAgc3R5bGUucmVtb3ZlUHJvcGVydHkoIi13ZWJr
aXQtd2lkZ2V0LXJlZ2lvbiIpOwotICAgICAgICBzdHlsZS5zZXRQcm9wZXJ0eSgiLXdlYmtpdC13
aWRnZXQtcmVnaW9uIiwgc3RyaW5nLCAiIik7Ci0gICAgICAgIHZhciByZXN1bHQgPSBzdHlsZS5n
ZXRQcm9wZXJ0eVZhbHVlKCItd2Via2l0LXdpZGdldC1yZWdpb24iKTsKLSAgICAgICAgc3R5bGUu
cmVtb3ZlUHJvcGVydHkoIi13ZWJraXQtd2lkZ2V0LXJlZ2lvbiIpOwotICAgICAgICByZXR1cm4g
cmVzdWx0OwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgcmV0dXJuICIiICsgZTsKLSAgICB9
Ci19Ci0KLWZ1bmN0aW9uIHRlc3RDYW5vbmljYWxXaWRnZXRSZWdpb24oc3RyaW5nKQotewotICAg
IHNob3VsZEJlKCJwYXJzZVdpZGdldFJlZ2lvbignIiArIHN0cmluZyArICInKSIsICInIiArIHN0
cmluZyArICInIik7Ci19Ci0KLXRlc3RDYW5vbmljYWxXaWRnZXRSZWdpb24oJ25vbmUnKTsKLQot
ZGVidWcoJycpOwotCi10ZXN0Q2Fub25pY2FsV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwgY2ly
Y2xlKScpOwotdGVzdENhbm9uaWNhbFdpZGdldFJlZ2lvbigncmVnaW9uKGxhYmVsIGNpcmNsZSAx
cHggMnB4IDNweCA0cHgpJyk7Ci10ZXN0Q2Fub25pY2FsV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFi
ZWwgY2lyY2xlIDBweCAwcHggMHB4IDBweCknKTsKLXRlc3RDYW5vbmljYWxXaWRnZXRSZWdpb24o
J3JlZ2lvbihsYWJlbCBjaXJjbGUgYXV0byBhdXRvIGF1dG8gYXV0byknKTsKLXRlc3RDYW5vbmlj
YWxXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCBjaXJjbGUgMXB4IDJweCAzcHggNHB4KScpOwot
Ci1kZWJ1ZygnJyk7Ci0KLXRlc3RDYW5vbmljYWxXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCBy
ZWN0YW5nbGUpJyk7Ci10ZXN0Q2Fub25pY2FsV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwgcmVj
dGFuZ2xlIDFweCAycHggM3B4IDRweCknKTsKLQotZGVidWcoJycpOwotCi10ZXN0Q2Fub25pY2Fs
V2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwgY2lyY2xlKSByZWdpb24obGFiZWwgY2lyY2xlKScp
OwotdGVzdENhbm9uaWNhbFdpZGdldFJlZ2lvbigncmVnaW9uKGxhYmVsIGNpcmNsZSkgcmVnaW9u
KGxhYmVsIHJlY3RhbmdsZSknKTsKLXRlc3RDYW5vbmljYWxXaWRnZXRSZWdpb24oJ3JlZ2lvbihs
YWJlbCBjaXJjbGUgMXB4IDJweCAzcHggNHB4KSByZWdpb24obGFiZWwgcmVjdGFuZ2xlIDVweCA2
cHggN3B4IDhweCknKTsKLXRlc3RDYW5vbmljYWxXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCBy
ZWN0YW5nbGUgMXB4IDJweCAzcHggNHB4KSByZWdpb24obGFiZWwgY2lyY2xlIDVweCA2cHggN3B4
IDhweCknKTsKLQotZGVidWcoJycpOwotZGVidWcoJ1Rlc3RzIHRvIGRlbW9uc3RyYXRlIHRoYXQg
Y29tbWFzIGFyZSBhbGxvd2VkLicpOwotZGVidWcoJycpOwotCi1zaG91bGRCZSgicGFyc2VXaWRn
ZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCwgY2lyY2xlKScpIiwgIidyZWdpb24obGFiZWwgY2lyY2xl
KSciKTsKLXNob3VsZEJlKCJwYXJzZVdpZGdldFJlZ2lvbigncmVnaW9uKGxhYmVsLCBjaXJjbGUs
IDFweCwgMnB4LCAzcHgsIDRweCknKSIsICIncmVnaW9uKGxhYmVsIGNpcmNsZSAxcHggMnB4IDNw
eCA0cHgpJyIpOwotCi1kZWJ1ZygnJyk7Ci1kZWJ1ZygnVGVzdHMgZm9yIHZhcmlhdGlvbnMgaW4g
d2hpdGVzcGFjZSB0aGF0IGFyZSBhbGxvd2VkLicpOwotZGVidWcoJycpOwotCi1zaG91bGRCZSgi
cGFyc2VXaWRnZXRSZWdpb24oJyAgcmVnaW9uKCAgbGFiZWwgIGNpcmNsZSAgKSAgJykiLCAiJ3Jl
Z2lvbihsYWJlbCBjaXJjbGUpJyIpOwotc2hvdWxkQmUoInBhcnNlV2lkZ2V0UmVnaW9uKCcgIHJl
Z2lvbiggIGxhYmVsICAgY2lyY2xlICAxcHggIDJweCAgM3B4ICA0cHggICkgIHJlZ2lvbihsYWJl
bCAgcmVjdGFuZ2xlICA1cHggIDZweCAgN3B4ICA4cHggICkgICcpIiwgIidyZWdpb24obGFiZWwg
Y2lyY2xlIDFweCAycHggM3B4IDRweCkgcmVnaW9uKGxhYmVsIHJlY3RhbmdsZSA1cHggNnB4IDdw
eCA4cHgpJyIpOwotc2hvdWxkQmUoInBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwgY2ly
Y2xlIDFweCAycHggM3B4IDRweClyZWdpb24obGFiZWwgcmVjdGFuZ2xlIDVweCA2cHggN3B4IDhw
eCknKSIsICIncmVnaW9uKGxhYmVsIGNpcmNsZSAxcHggMnB4IDNweCA0cHgpIHJlZ2lvbihsYWJl
bCByZWN0YW5nbGUgNXB4IDZweCA3cHggOHB4KSciKTsKLQotZGVidWcoJycpOwotZGVidWcoJ1Rl
c3RzIGZvciBjYXNlIGluc2Vuc2l0aXZpdHkuJyk7Ci1kZWJ1ZygnJyk7Ci0KLXNob3VsZEJlKCJw
YXJzZVdpZGdldFJlZ2lvbigncmVnaW9uKGxhYmVsIENpcmNsZSknKSIsICIncmVnaW9uKGxhYmVs
IGNpcmNsZSknIik7Ci1zaG91bGRCZSgicGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihMQUJFTCBD
SVJDTEUpJykiLCAiJ3JlZ2lvbihMQUJFTCBjaXJjbGUpJyIpOwotc2hvdWxkQmUoInBhcnNlV2lk
Z2V0UmVnaW9uKCdyZWdpb24oTGFCZUwgQ2lSY0xlKScpIiwgIidyZWdpb24oTGFCZUwgY2lyY2xl
KSciKTsKLXNob3VsZEJlKCJwYXJzZVdpZGdldFJlZ2lvbigncmVnaW9uKGxBYkVsIGNJckNsRSkn
KSIsICIncmVnaW9uKGxBYkVsIGNpcmNsZSknIik7Ci1zaG91bGRCZSgicGFyc2VXaWRnZXRSZWdp
b24oJ3JlZ2lvbihsYWJlbCBSZWN0YW5nbGUpJykiLCAiJ3JlZ2lvbihsYWJlbCByZWN0YW5nbGUp
JyIpOwotc2hvdWxkQmUoInBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24oTEFCRUwgUkVDVEFOR0xF
KScpIiwgIidyZWdpb24oTEFCRUwgcmVjdGFuZ2xlKSciKTsKLXNob3VsZEJlKCJwYXJzZVdpZGdl
dFJlZ2lvbigncmVnaW9uKExhQmVMIFJlQ3RBbkdsRSknKSIsICIncmVnaW9uKExhQmVMIHJlY3Rh
bmdsZSknIik7Ci1zaG91bGRCZSgicGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsQWJFbCByRWNU
YU5nTGUpJykiLCAiJ3JlZ2lvbihsQWJFbCByZWN0YW5nbGUpJyIpOwotCi1kZWJ1ZygnJyk7Ci1k
ZWJ1ZygnU29tZSBleHBlY3RlZCBmYWlsdXJlcy4nKTsKLWRlYnVnKCcnKTsKLQotc2hvdWxkQmUo
InBhcnNlV2lkZ2V0UmVnaW9uKCcnKSIsICJudWxsIik7Ci1zaG91bGRCZSgicGFyc2VXaWRnZXRS
ZWdpb24oJyAnKSIsICJudWxsIik7Ci1zaG91bGRCZSgicGFyc2VXaWRnZXRSZWdpb24oJ3gnKSIs
ICJudWxsIik7Ci1zaG91bGRCZSgicGFyc2VXaWRnZXRSZWdpb24oJ2Rhc2hib2FyZC0nKSIsICJu
dWxsIik7Ci1zaG91bGRCZSgicGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbicpIiwgIm51bGwiKTsK
LXNob3VsZEJlKCJwYXJzZVdpZGdldFJlZ2lvbigncmVnaW9uKCcpIiwgIm51bGwiKTsKLXNob3Vs
ZEJlKCJwYXJzZVdpZGdldFJlZ2lvbigncmVnaW9uKGxhYmVsJykiLCAibnVsbCIpOwotc2hvdWxk
QmUoInBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwgJykiLCAibnVsbCIpOwotc2hvdWxk
QmUoInBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwgYycpIiwgIm51bGwiKTsKLXNob3Vs
ZEJlKCJwYXJzZVdpZGdldFJlZ2lvbigncmVnaW9uKGxhYmVsIGNpcmNsZScpIiwgIm51bGwiKTsK
LXNob3VsZEJlKCJwYXJzZVdpZGdldFJlZ2lvbigncmVnaW9uKGxhYmVsKScpIiwgIm51bGwiKTsK
LXNob3VsZEJlKCJwYXJzZVdpZGdldFJlZ2lvbigncmVnaW9uIChsYWJlbCBjaXJjbGUpJykiLCAi
bnVsbCIpOwotc2hvdWxkQmUoInBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwsLCBjaXJj
bGUpJykiLCAibnVsbCIpOwotc2hvdWxkQmUoInBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFi
ZWwgY2lyY2xlIDFweDJweCAzcHggNHB4KScpIiwgIm51bGwiKTsKLXNob3VsZEJlKCJwYXJzZVdp
ZGdldFJlZ2lvbigncmVnaW9uKGxhYmVsLCwgY2lyY2xlLCAxcHgsIDJweCwgM3B4LCA0cHgpJyki
LCAibnVsbCIpOwotc2hvdWxkQmUoInBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwsIGNp
cmNsZSAxcHggMnB4IDNweCA0cHgpJykiLCAibnVsbCIpOwotc2hvdWxkQmUoInBhcnNlV2lkZ2V0
UmVnaW9uKCdyZWdpb24obGFiZWwsIGNpcmNsZSwgMXB4IDJweCAzcHggNHB4KScpIiwgIm51bGwi
KTsKLXNob3VsZEJlKCJwYXJzZVdpZGdldFJlZ2lvbigncmVnaW9uKGxhYmVsLCBjaXJjbGUsIDFw
eCwgMnB4IDNweCA0cHgpJykiLCAibnVsbCIpOwotc2hvdWxkQmUoInBhcnNlV2lkZ2V0UmVnaW9u
KCdyZWdpb24obGFiZWwsIGNpcmNsZSwgMXB4LCAycHgsIDNweCA0cHgpJykiLCAibnVsbCIpOwot
c2hvdWxkQmUoInBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwgY2lyY2xlLCAxcHgsIDJw
eCwgM3B4LCA0cHgpJykiLCAibnVsbCIpOwotc2hvdWxkQmUoInBhcnNlV2lkZ2V0UmVnaW9uKCdy
ZWdpb24obGFiZWwgY2lyY2xlIDFweCwgMnB4LCAzcHgsIDRweCknKSIsICJudWxsIik7Ci1zaG91
bGRCZSgicGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCBjaXJjbGUgeCknKSIsICJudWxs
Iik7Ci1zaG91bGRCZSgicGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCBjaXJjbGUgeCB4
KScpIiwgIm51bGwiKTsKLXNob3VsZEJlKCJwYXJzZVdpZGdldFJlZ2lvbigncmVnaW9uKGxhYmVs
IGNpcmNsZSB4IHggeCknKSIsICJudWxsIik7Ci1zaG91bGRCZSgicGFyc2VXaWRnZXRSZWdpb24o
J3JlZ2lvbihsYWJlbCBjaXJjbGUgeCB4IHggeCknKSIsICJudWxsIik7Ci1zaG91bGRCZSgicGFy
c2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCBjaXJjbGUgeCB4IHggeCB4KScpIiwgIm51bGwi
KTsKLXNob3VsZEJlKCJwYXJzZVdpZGdldFJlZ2lvbigncmVnaW9uKGxhYmVsIGNpcmNsZSAxcHgg
MnB4IDNweCA0cHggeCknKSIsICJudWxsIik7Ci1zaG91bGRCZSgicGFyc2VXaWRnZXRSZWdpb24o
J3JlZ2lvbihsYWJlbCBjaXJjbGUgMXB4IDJweCAzcHggNHB4IHggeCknKSIsICJudWxsIik7Ci1z
aG91bGRCZSgicGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCBjaXJjbGUgMXB4IDJweCAz
cHggNHB4IHggeCB4KScpIiwgIm51bGwiKTsKLXNob3VsZEJlKCJwYXJzZVdpZGdldFJlZ2lvbign
cmVnaW9uKGxhYmVsIGNpcmNsZSAxcHggMnB4IDNweCA0cHggeCB4IHggeCknKSIsICJudWxsIik7
Ci1zaG91bGRCZSgicGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCBjaXJjbGUgMXB4IDJw
eCAzcHggNHB4IHggeCB4IHggeCknKSIsICJudWxsIik7Ci1zaG91bGRCZSgicGFyc2VXaWRnZXRS
ZWdpb24oJ3JlZ2lvbihsYWJlbCBjaXJjbGUgMXB4IDJweCAzcHggNHB4IGNpcmNsZSA1cHggNnB4
IDdweCA4cHgpJykiLCAibnVsbCIpOwotc2hvdWxkQmUoInBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdp
b24obGFiZWwsIGNpcmNsZSwgMXB4LCAycHgsIDNweCwgNHB4LCBjaXJjbGUsIDVweCwgNnB4LCA3
cHgsIDhweCknKSIsICJudWxsIik7Ci1zaG91bGRCZSgicGFyc2VXaWRnZXRSZWdpb24oJ25vbmUg
eCcpIiwgIm51bGwiKTsKLXNob3VsZEJlKCJwYXJzZVdpZGdldFJlZ2lvbignbm9uZSB4IHgnKSIs
ICJudWxsIik7Ci1zaG91bGRCZSgicGFyc2VXaWRnZXRSZWdpb24oJ25vbmUgeCB4IHgnKSIsICJu
dWxsIik7Ci1zaG91bGRCZSgicGFyc2VXaWRnZXRSZWdpb24oJ25vbmUgeCB4IHggeCcpIiwgIm51
bGwiKTsKLXNob3VsZEJlKCJwYXJzZVdpZGdldFJlZ2lvbignbm9uZSByZWdpb24obGFiZWwsIGNp
cmNsZSknKSIsICJudWxsIik7Ci1zaG91bGRCZSgicGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihs
YWJlbCwgY2lyY2xlKSBub25lJykiLCAibnVsbCIpOwotc2hvdWxkQmUoInBhcnNlV2lkZ2V0UmVn
aW9uKCdhdHRyKGEpJykiLCAibnVsbCIpOwotCi1kZWJ1ZygnJyk7Ci0KLQotPC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmOWNlNGQ1Li40NzM0OGU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA5IEBACisyMDEyLTA5LTE5ICBKaWFuIExpICA8amlhbmxp
QGNocm9taXVtLm9yZz4KKworICAgICAgICBVcGRhdGUgdGhlIENTUyBwcm9wZXJ0eSB1c2VkIHRv
IHN1cHBvcnQgZHJhZ2dhYmxlIHJlZ2lvbnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NzE1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoZSBDU1MgcHJvcGVydHkgdG8gc3VwcG9ydCBkcmFnZ2FibGUg
cmVnaW9ucyBoYXMgYmVlbiBjaGFuZ2VkIGZyb20KKyAgICAgICAgIi13ZWJraXQtd2lkZ2V0LXJl
Z2lvbiIgdG8gIi13ZWJraXQtYXBwLXJlZ2lvbiIgaW4gdGhlIGZvbGxvd2luZyBzeW50YXg6Cisg
ICAgICAgICAgIC13ZWJraXQtYXBwLXJlZ2lvbjogZHJhZ3xuby1kcmFnCisKKyAgICAgICAgVG8g
YmV0dGVyIHN1cHBvcnQgdGhlIG5ldyBzeW50YXggYW5kIG1ha2UgdGhlIGNvZGUgY2xlYW4sIHdl
IG5vIGxvbmdlcgorICAgICAgICBzaGFyZSB0aGUgZHJhZ2dhYmxlIHJlZ2lvbiBpbXBsZW1lbnRh
dGlvbiB3aXRoIHRoZSBkYXNoYm9hcmQgc3VwcG9ydCBjb2RlLgorICAgICAgICBJbnN0ZWFkLCB0
aGUgZHJhZ2dhYmxlIHJlZ2lvbiBjb2RlIGlzIHdyYXBwZWQgaW4gYSBzZXBhcmF0ZSBmZWF0dXJl
CisgICAgICAgIGRlZmluZSAoV0lER0VUX1JFR0lPTiBpcyBzdGlsbCB1c2VkLiBXZSB3aWxsIHJl
bmFtZSB0aGlzIGZlYXR1cmUKKyAgICAgICAgZGVmaW5lIGluIGFub3RoZXIgcGF0Y2gpLgorCisg
ICAgICAgIFRlc3Q6IGZhc3QvY3NzL2RyYWdnYWJsZS1yZWdpb24tcGFyc2VyLmh0bWwKKworICAg
ICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOgorICAgICAgICAq
IGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZURhc2hib2FyZFJlZ2lvbnMpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJWYWx1ZXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVmFsdWU6OmNyZWF0ZUNTU1ZhbHVlKToKKyAg
ICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNW
YWxpZENTU1VuaXRUeXBlRm9yRG91YmxlQ29udmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjbGVhbnVwKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjdXN0b21Dc3NUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjbG9uZUZvckNTU09NKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgorICAg
ICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5oOgorICAgICAgICAoQ1NTUHJpbWl0aXZlVmFs
dWUpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQcm9wZXJ0eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eSk6CisgICAgICAgICogY3NzL0NTU1Byb3Bl
cnR5TmFtZXMuaW46CisgICAgICAgICogY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW46CisgICAgICAg
ICogY3NzL0Rhc2hib2FyZFJlZ2lvbi5oOgorICAgICAgICAoRGFzaGJvYXJkUmVnaW9uKToKKyAg
ICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJl
c29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZHJhZ2dhYmxlUmVnaW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0RHJhZ2dhYmxlUmVnaW9ucyk6Cisg
ICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKERv
Y3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXREcmFnZ2FibGVSZWdpb25z
RGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRyYWdnYWJsZVJlZ2lvbnNEaXJ0
eSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aGFzRHJhZ2dhYmxlUmVnaW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0SGFzRHJhZ2dhYmxlUmVnaW9ucyk6CisgICAg
ICAgICogcGFnZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnQ6OmRyYWdnYWJsZVJlZ2lvbnNDaGFuZ2VkKToKKyAgICAgICAgKiBw
YWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAoQ2hyb21lQ2xpZW50KToKKyAgICAgICAgKiBw
YWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmxheW91dCk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dXBkYXRl
RHJhZ2dhYmxlUmVnaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnBhaW50Q29u
dGVudHMpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgIChGcmFtZVZpZXcp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmFkZERyYWdnYWJsZVJlZ2lvbik6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5oOgorICAgICAgICAoUmVuZGVySW5s
aW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbFRvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpzZXRIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpzZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6dXBkYXRlU2Nyb2xsYmFyc0FmdGVyTGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94Ojpz
ZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnN0eWxlV2lsbENoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWRk
RHJhZ2dhYmxlUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y29sbGVj
dERyYWdnYWJsZVJlZ2lvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ2dhYmxlUmVnaW9uVmFs
dWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ2dhYmxlUmVnaW9uVmFsdWU6
Om9wZXJhdG9yIT0pOgorICAgICAgICAoRHJhZ2dhYmxlUmVnaW9uVmFsdWUpOgorICAgICAgICAo
UmVuZGVyT2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmRpZmYpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmg6CisgICAgICAgICogcmVuZGVy
aW5nL3N0eWxlL1N0eWxlRGFzaGJvYXJkUmVnaW9uLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKToKKwog
MjAxMi0wOS0xOSAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IEluZGV4ZWREQjogUmVtb3ZlICJjdXJyZW50IHRyYW5zYWN0aW9uIiBjb25jZXB0IGZyb20gYmFj
a2luZyBzdG9yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAxYTZmNGZiLi4yMmMzMjU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTUxLDYgKzE1MSw3IEBAIF9fWk43V2ViQ29yZTExVVJMV2l0
aERhdGFFUDZOU0RhdGFQNU5TVVJMCiBfX1pON1dlYkNvcmUxMW1lbW9yeUNhY2hlRXYKIF9fWk43
V2ViQ29yZTExc3RhcnRPZldvcmRFUktOU18xNVZpc2libGVQb3NpdGlvbkVOU185RVdvcmRTaWRl
RQogX19aTjdXZWJDb3JlMTF3cml0ZVRvRmlsZUVpUEtjaQorX19aTjdXZWJDb3JlMTJDaHJvbWVD
bGllbnQyM2RyYWdnYWJsZVJlZ2lvbnNDaGFuZ2VkRXYKIF9fWk43V2ViQ29yZTEyQ2hyb21lQ2xp
ZW50MjNwYWludEN1c3RvbU92ZXJoYW5nQXJlYUVQTlNfMTVHcmFwaGljc0NvbnRleHRFUktOU183
SW50UmVjdEVTNV9TNV8KIF9fWk43V2ViQ29yZTEyRWRpdGluZ1N0eWxlRDFFdgogX19aTjdXZWJD
b3JlMTJFdmVudEhhbmRsZXIxMG1vdXNlTW92ZWRFUktOU18xOFBsYXRmb3JtTW91c2VFdmVudEUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHAKaW5kZXggZDEwZDczOC4uM2NkYjU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTc4LDcgKzc4LDcgQEAKICNpbmNs
dWRlICJXZWJLaXRDU1NGaWx0ZXJWYWx1ZS5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoREFTSEJP
QVJEX1NVUFBPUlQpIHx8IEVOQUJMRShXSURHRVRfUkVHSU9OKQorI2lmIEVOQUJMRShEQVNIQk9B
UkRfU1VQUE9SVCkKICNpbmNsdWRlICJEYXNoYm9hcmRSZWdpb24uaCIKICNlbmRpZgogCkBAIC0z
NTAsNyArMzUwLDcgQEAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgY29tcHV0ZWRQcm9wZXJ0
aWVzW10gPSB7CiAgICAgQ1NTUHJvcGVydHlXZWJraXRSZWdpb25CcmVha0luc2lkZSwKICNlbmRp
ZgogI2lmIEVOQUJMRShXSURHRVRfUkVHSU9OKQotICAgIENTU1Byb3BlcnR5V2Via2l0V2lkZ2V0
UmVnaW9uLAorICAgIENTU1Byb3BlcnR5V2Via2l0QXBwUmVnaW9uLAogI2VuZGlmCiAjaWYgRU5B
QkxFKENTU19FWENMVVNJT05TKQogICAgIENTU1Byb3BlcnR5V2Via2l0V3JhcEZsb3csCkBAIC0y
MTI1LDEzICsyMTI1LDggQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnQKICAgICAgICAgICAgIGlm
IChzdHlsZS0+Ym94U2l6aW5nKCkgPT0gQ09OVEVOVF9CT1gpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUNvbnRlbnRC
b3gpOwogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShDU1NWYWx1ZUJvcmRlckJveCk7Ci0jaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8
fCBFTkFCTEUoV0lER0VUX1JFR0lPTikKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXREYXNoYm9hcmRSZWdpb246Ci0jZW5kaWYKLSNp
ZiBFTkFCTEUoV0lER0VUX1JFR0lPTikKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdp
ZGdldFJlZ2lvbjoKLSNlbmRpZgogICAgICAgICB7CiAgICAgICAgICAgICBjb25zdCBWZWN0b3I8
U3R5bGVEYXNoYm9hcmRSZWdpb24+JiByZWdpb25zID0gc3R5bGUtPmRhc2hib2FyZFJlZ2lvbnMo
KTsKICAgICAgICAgICAgIHVuc2lnbmVkIGNvdW50ID0gcmVnaW9ucy5zaXplKCk7CkBAIC0yMTYy
LDYgKzIxNTcsMTAgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnQKICAgICAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShmaXJzdFJlZ2lvbi5yZWxlYXNlKCkpOwogICAg
ICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0lER0VUX1JFR0lPTikKKyAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEFwcFJlZ2lvbjoKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBv
b2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoc3R5bGUtPmdldERyYWdnYWJsZVJlZ2lvbk1vZGUo
KSA9PSBEcmFnZ2FibGVSZWdpb25EcmFnID8gQ1NTVmFsdWVEcmFnIDogQ1NTVmFsdWVOb0RyYWcp
OworI2VuZGlmCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EZWxheToK
ICAgICAgICAgICAgIHJldHVybiBnZXREZWxheVZhbHVlKHN0eWxlLT5hbmltYXRpb25zKCkpOwog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uOiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IGVmZDliYWUuLjYzODkwYWYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmNwcApAQCAtMTEwLDcgKzExMCw3IEBACiAjaW5jbHVkZSAiV2ViS2l0Q1NTU2hh
ZGVyVmFsdWUuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBF
TkFCTEUoV0lER0VUX1JFR0lPTikKKyNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAjaW5j
bHVkZSAiRGFzaGJvYXJkUmVnaW9uLmgiCiAjZW5kaWYKIApAQCAtMjYwNiwxOSArMjYwNiwyMSBA
QCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBp
bXBvcnRhbnQpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGJy
ZWFrOwogCi0jaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBFTkFCTEUoV0lER0VUX1JF
R0lPTikKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdERhc2hib2FyZFJlZ2lvbjogLy8gPGRhc2hib2FyZC1yZWdpb24+IHwgPGRhc2hib2Fy
ZC1yZWdpb24+Ci0jZW5kaWYKLSNpZiBFTkFCTEUoV0lER0VUX1JFR0lPTikKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0V2lkZ2V0UmVnaW9uOgotI2VuZGlmCiAgICAgICAgIGlmICh2YWx1ZS0+
dW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb24gfHwgaWQgPT0gQ1NTVmFsdWVOb25lKQog
ICAgICAgICAgICAgcmV0dXJuIHBhcnNlRGFzaGJvYXJkUmVnaW9ucyhwcm9wSWQsIGltcG9ydGFu
dCk7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgLy8gRW5kIEFwcGxlLXNwZWNpZmljIHBy
b3BlcnRpZXMKIAorI2lmIEVOQUJMRShXSURHRVRfUkVHSU9OKQorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRBcHBSZWdpb246CisgICAgICAgIGlmIChpZCA+PSBDU1NWYWx1ZURyYWcgJiYgaWQg
PD0gQ1NTVmFsdWVOb0RyYWcpCisgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Cisg
ICAgICAgIGJyZWFrOworI2VuZGlmCisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRUYXBIaWdobGlnaHRDb2xvcjoKICAgICAgICAgaWYgKChpZCA+
PSBDU1NWYWx1ZUFxdWEgJiYgaWQgPD0gQ1NTVmFsdWVXaW5kb3d0ZXh0KSB8fCBpZCA9PSBDU1NW
YWx1ZU1lbnUKQEAgLTQyOTIsNyArNDI5NCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUdyaWRU
cmFja0xpc3QoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogfQogCiAKLSNp
ZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8IEVOQUJMRShXSURHRVRfUkVHSU9OKQorI2lm
IEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKIAogI2RlZmluZSBEQVNIQk9BUkRfUkVHSU9OX05V
TV9QQVJBTUVURVJTICA2CiAjZGVmaW5lIERBU0hCT0FSRF9SRUdJT05fU0hPUlRfTlVNX1BBUkFN
RVRFUlMgIDIKQEAgLTQzNDUsMzIgKzQzNDcsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VEYXNo
Ym9hcmRSZWdpb25zKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAg
ICAgLy8gZGFzaGJvYXJkLXJlZ2lvbihsYWJlbCwgdHlwZSkgb3IgZGFzaGJvYXJkLXJlZ2lvbihs
YWJlbCB0eXBlKQogICAgICAgICAvLyBkYXNoYm9hcmQtcmVnaW9uKGxhYmVsLCB0eXBlKSBvciBk
YXNoYm9hcmQtcmVnaW9uKGxhYmVsIHR5cGUpCiAgICAgICAgIENTU1BhcnNlclZhbHVlTGlzdCog
YXJncyA9IHZhbHVlLT5mdW5jdGlvbi0+YXJncy5nZXQoKTsKLSAgICAgICAgaWYgKCFhcmdzKSB7
Ci0gICAgICAgICAgICB2YWxpZCA9IGZhbHNlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgYm9vbCB2YWxpZEZ1bmN0aW9uTmFtZSA9IGZhbHNlOwotI2lmIEVOQUJMRShE
QVNIQk9BUkRfU1VQUE9SVCkKLSAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIgZGFzaGJvYXJkUmVn
aW9uRnVuY3Rpb25OYW1lW10gPSAiZGFzaGJvYXJkLXJlZ2lvbigiOwotICAgICAgICBpZiAoZXF1
YWxJZ25vcmluZ0Nhc2UodmFsdWUtPmZ1bmN0aW9uLT5uYW1lLCBkYXNoYm9hcmRSZWdpb25GdW5j
dGlvbk5hbWUpKSB7Ci0gICAgICAgICAgICB2YWxpZEZ1bmN0aW9uTmFtZSA9IHRydWU7Ci0jaWYg
RU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSAmJiBFTkFCTEUoV0lER0VUX1JFR0lPTikKLSAgICAg
ICAgICAgIC8vIEtlZXAgdHJhY2sgb2YgZnVuY3Rpb24gbmFtZSB3aGVuIGJvdGggZmVhdHVyZXMg
YXJlIGVuYWJsZWQuIAotICAgICAgICAgICAgcmVnaW9uLT5tX2Nzc0Z1bmN0aW9uTmFtZSA9IGRh
c2hib2FyZFJlZ2lvbkZ1bmN0aW9uTmFtZTsKLSNlbmRpZgotICAgICAgICB9Ci0jZW5kaWYKLSNp
ZiBFTkFCTEUoV0lER0VUX1JFR0lPTikKLSAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIgd2lkZ2V0
UmVnaW9uRnVuY3Rpb25OYW1lW10gPSAicmVnaW9uKCI7Ci0gICAgICAgIGlmIChlcXVhbElnbm9y
aW5nQ2FzZSh2YWx1ZS0+ZnVuY3Rpb24tPm5hbWUsIHdpZGdldFJlZ2lvbkZ1bmN0aW9uTmFtZSkp
IHsKLSAgICAgICAgICAgIHZhbGlkRnVuY3Rpb25OYW1lID0gdHJ1ZTsKLSNpZiBFTkFCTEUoREFT
SEJPQVJEX1NVUFBPUlQpICYmIEVOQUJMRShXSURHRVRfUkVHSU9OKQotICAgICAgICAgICAgLy8g
S2VlcCB0cmFjayBvZiBmdW5jdGlvbiBuYW1lIHdoZW4gYm90aCBmZWF0dXJlcyBhcmUgZW5hYmxl
ZC4gCi0gICAgICAgICAgICByZWdpb24tPm1fY3NzRnVuY3Rpb25OYW1lID0gd2lkZ2V0UmVnaW9u
RnVuY3Rpb25OYW1lOwotI2VuZGlmCi0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICBpZiAoIXZh
bGlkRnVuY3Rpb25OYW1lKSB7CisgICAgICAgIGlmICghZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUt
PmZ1bmN0aW9uLT5uYW1lLCAiZGFzaGJvYXJkLXJlZ2lvbigiKSB8fCAhYXJncykgewogICAgICAg
ICAgICAgdmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC00
NDU2LDcgKzQ0MzMsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VEYXNoYm9hcmRSZWdpb25zKENT
U1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICByZXR1cm4gdmFsaWQ7CiB9
CiAKLSNlbmRpZiAvKiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8IEVOQUJMRShXSURHRVRf
UkVHSU9OKSAqLworI2VuZGlmIC8qIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkgKi8KIAogUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUNvdW50ZXJDb250ZW50KENTU1BhcnNl
clZhbHVlTGlzdCogYXJncywgYm9vbCBjb3VudGVycykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlclZhbHVlcy5jcHAKaW5kZXggOGI3NjI1NS4uNjExMDgwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlclZhbHVlcy5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCBQYXNzUmVmUHRyPENTU1Zh
bHVlPiBDU1NQYXJzZXJWYWx1ZTo6Y3JlYXRlQ1NTVmFsdWUoKQogICAgIGNhc2UgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19EUEk6CiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RQQ006
CiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BBSVI6Ci0jaWYgRU5BQkxFKERBU0hC
T0FSRF9TVVBQT1JUKSB8fCBFTkFCTEUoV0lER0VUX1JFR0lPTikKKyNpZiBFTkFCTEUoREFTSEJP
QVJEX1NVUFBPUlQpCiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RBU0hCT0FSRF9S
RUdJT046CiAjZW5kaWYKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVU5JQ09ERV9S
QU5HRToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCmluZGV4IDkyMmEw
ZjYuLjkzNzllZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApA
QCAtNDUsNyArNDUsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAotI2lmIEVOQUJMRShEQVNIQk9BUkRf
U1VQUE9SVCkgfHwgRU5BQkxFKFdJREdFVF9SRUdJT04pCisjaWYgRU5BQkxFKERBU0hCT0FSRF9T
VVBQT1JUKQogI2luY2x1ZGUgIkRhc2hib2FyZFJlZ2lvbi5oIgogI2VuZGlmCiAKQEAgLTkxLDcg
KzkxLDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRDU1NVbml0VHlwZUZvckRvdWJsZUNv
bnZlcnNpb24oQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXQKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfQVRUUjoKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ09VTlRFUjoK
ICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ09VTlRFUl9OQU1FOgotI2lmIEVOQUJM
RShEQVNIQk9BUkRfU1VQUE9SVCkgfHwgRU5BQkxFKFdJREdFVF9SRUdJT04pCisjaWYgRU5BQkxF
KERBU0hCT0FSRF9TVVBQT1JUKQogICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19EQVNI
Qk9BUkRfUkVHSU9OOgogI2VuZGlmCiAjaWYgIUVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElPTikK
QEAgLTMzMCw3ICszMzAsNyBAQCB2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjppbml0KFBhc3NSZWZQ
dHI8UXVhZD4gcXVhZCkKICAgICBtX3ZhbHVlLnF1YWQgPSBxdWFkLmxlYWtSZWYoKTsKIH0KIAot
I2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkgfHwgRU5BQkxFKFdJREdFVF9SRUdJT04pCisj
aWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogdm9pZCBDU1NQcmltaXRpdmVWYWx1ZTo6aW5p
dChQYXNzUmVmUHRyPERhc2hib2FyZFJlZ2lvbj4gcikKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRU
eXBlID0gQ1NTX0RBU0hCT0FSRF9SRUdJT047CkBAIC0zOTEsNyArMzkxLDcgQEAgdm9pZCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y2xlYW51cCgpCiAgICAgY2FzZSBDU1NfUEFJUjoKICAgICAgICAgbV92
YWx1ZS5wYWlyLT5kZXJlZigpOwogICAgICAgICBicmVhazsKLSNpZiBFTkFCTEUoREFTSEJPQVJE
X1NVUFBPUlQpIHx8IEVOQUJMRShXSURHRVRfUkVHSU9OKQorI2lmIEVOQUJMRShEQVNIQk9BUkRf
U1VQUE9SVCkKICAgICBjYXNlIENTU19EQVNIQk9BUkRfUkVHSU9OOgogICAgICAgICBpZiAobV92
YWx1ZS5yZWdpb24pCiAgICAgICAgICAgICBtX3ZhbHVlLnJlZ2lvbi0+ZGVyZWYoKTsKQEAgLTEw
NTcsMTkgKzEwNTcsMTMgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjdXN0b21Dc3NUZXh0
KCkgY29uc3QKICAgICAgICAgICAgIHRleHQgPSByZXN1bHQudG9TdHJpbmcoKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9Ci0jaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBF
TkFCTEUoV0lER0VUX1JFR0lPTikKKyNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAg
ICAgIGNhc2UgQ1NTX0RBU0hCT0FSRF9SRUdJT046IHsKICAgICAgICAgICAgIFN0cmluZ0J1aWxk
ZXIgcmVzdWx0OwogICAgICAgICAgICAgZm9yIChEYXNoYm9hcmRSZWdpb24qIHJlZ2lvbiA9IGdl
dERhc2hib2FyZFJlZ2lvblZhbHVlKCk7IHJlZ2lvbjsgcmVnaW9uID0gcmVnaW9uLT5tX25leHQu
Z2V0KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKLSNpZiBFTkFCTEUoREFTSEJPQVJEX1NV
UFBPUlQpICYmIEVOQUJMRShXSURHRVRfUkVHSU9OKQotICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQocmVnaW9uLT5tX2Nzc0Z1bmN0aW9uTmFtZSk7Ci0jZWxpZiBFTkFCTEUoREFTSEJPQVJE
X1NVUFBPUlQpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImRhc2hib2Fy
ZC1yZWdpb24oIik7Ci0jZWxzZQotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFs
KCJyZWdpb24oIik7Ci0jZW5kaWYKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHJlZ2lv
bi0+bV9sYWJlbCk7CiAgICAgICAgICAgICAgICAgaWYgKHJlZ2lvbi0+bV9pc0NpcmNsZSkKICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiBjaXJjbGUiKTsKQEAgLTEx
OTcsNyArMTE5MSw3IEBAIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1ByaW1pdGl2
ZVZhbHVlOjpjbG9uZUZvckNTU09NKCkgY29uc3QKICAgICAgICAgLy8gUGFpciBpcyBub3QgZXhw
b3NlZCB0byB0aGUgQ1NTT00sIG5vIG5lZWQgZm9yIGEgZGVlcCBjbG9uZS4KICAgICAgICAgcmVz
dWx0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShtX3ZhbHVlLnBhaXIpOwogICAgICAgICBi
cmVhazsKLSNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8IEVOQUJMRShXSURHRVRfUkVH
SU9OKQorI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICBjYXNlIENTU19EQVNIQk9B
UkRfUkVHSU9OOgogICAgICAgICAvLyBEYXNoYm9hcmRSZWdpb24gaXMgbm90IGV4cG9zZWQgdG8g
dGhlIENTU09NLCBubyBuZWVkIGZvciBhIGRlZXAgY2xvbmUuCiAgICAgICAgIHJlc3VsdCA9IENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV92YWx1ZS5yZWdpb24pOwpAQCAtMTI4OSw3ICsxMjgz
LDcgQEAgdm9pZCBDU1NQcmltaXRpdmVWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamUKICAgICBjYXNlIENTU19QQUlSOgogICAgICAg
ICBpbmZvLmFkZE1lbWJlcihtX3ZhbHVlLnBhaXIpOwogICAgICAgICBicmVhazsKLSNpZiBFTkFC
TEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8IEVOQUJMRShXSURHRVRfUkVHSU9OKQorI2lmIEVOQUJM
RShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICBjYXNlIENTU19EQVNIQk9BUkRfUkVHSU9OOgogICAg
ICAgICBpbmZvLmFkZE1lbWJlcihtX3ZhbHVlLnJlZ2lvbik7CiAgICAgICAgIGJyZWFrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAppbmRleCAxMDNlYTZhLi5kYjRhMTdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaApAQCAtOTksNyArOTksNyBAQCBw
dWJsaWM6CiAgICAgICAgIENTU19EUEkgPSAzMCwKICAgICAgICAgQ1NTX0RQQ00gPSAzMSwKICAg
ICAgICAgQ1NTX1BBSVIgPSAxMDAsIC8vIFdlIGVudmlzaW9uIHRoaXMgYmVpbmcgZXhwb3NlZCBh
cyBhIG1lYW5zIG9mIGdldHRpbmcgY29tcHV0ZWQgc3R5bGUgdmFsdWVzIGZvciBwYWlycyAoYm9y
ZGVyLXNwYWNpbmcvcmFkaXVzLCBiYWNrZ3JvdW5kLXBvc2l0aW9uLCBldGMuKQotI2lmIEVOQUJM
RShEQVNIQk9BUkRfU1VQUE9SVCkgfHwgRU5BQkxFKFdJREdFVF9SRUdJT04pCisjaWYgRU5BQkxF
KERBU0hCT0FSRF9TVVBQT1JUKQogICAgICAgICBDU1NfREFTSEJPQVJEX1JFR0lPTiA9IDEwMSwg
Ly8gRklYTUU6IERhc2hib2FyZCByZWdpb24gc2hvdWxkIG5vdCBiZSBhIHByaW1pdGl2ZSB2YWx1
ZS4KICNlbmRpZgogICAgICAgICBDU1NfVU5JQ09ERV9SQU5HRSA9IDEwMiwKQEAgLTI4NCw3ICsy
ODQsNyBAQCBwdWJsaWM6CiAgICAgUGFpciogZ2V0UGFpclZhbHVlKEV4Y2VwdGlvbkNvZGUmKSBj
b25zdDsKICAgICBQYWlyKiBnZXRQYWlyVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2
ZVVuaXRUeXBlICE9IENTU19QQUlSID8gMCA6IG1fdmFsdWUucGFpcjsgfQogCi0jaWYgRU5BQkxF
KERBU0hCT0FSRF9TVVBQT1JUKSB8fCBFTkFCTEUoV0lER0VUX1JFR0lPTikKKyNpZiBFTkFCTEUo
REFTSEJPQVJEX1NVUFBPUlQpCiAgICAgRGFzaGJvYXJkUmVnaW9uKiBnZXREYXNoYm9hcmRSZWdp
b25WYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgIT0gQ1NTX0RBU0hC
T0FSRF9SRUdJT04gPyAwIDogbV92YWx1ZS5yZWdpb247IH0KICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5LmNwcAppbmRleCBiNWE5ZDNmLi5iZjJlYWQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcm9wZXJ0eS5jcHAKQEAgLTcwMiw3ICs3MDIsNyBAQCBib29sIENTU1Byb3BlcnR5Ojppc0lu
aGVyaXRlZFByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0RGFzaGJvYXJkUmVnaW9uOgogI2VuZGlmCiAjaWYgRU5BQkxFKFdJREdFVF9S
RUdJT04pCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdpZGdldFJlZ2lvbjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0QXBwUmVnaW9uOgogI2VuZGlmCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBjYXNlIENTU1Byb3BlcnR5SW52YWxpZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3Bl
cnR5TmFtZXMuaW4KaW5kZXggYmRkODQ4OC4uOTBjODZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1Byb3BlcnR5TmFtZXMuaW4KQEAgLTQwOSw3ICs0MDksNyBAQCB6LWluZGV4CiAtd2Via2l0LWRh
c2hib2FyZC1yZWdpb24KICNlbmRpZgogI2lmIGRlZmluZWQoRU5BQkxFX1dJREdFVF9SRUdJT04p
ICYmIEVOQUJMRV9XSURHRVRfUkVHSU9OCi0td2Via2l0LXdpZGdldC1yZWdpb24KKy13ZWJraXQt
YXBwLXJlZ2lvbgogI2VuZGlmCiAjaWYgZGVmaW5lZChFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZM
T1dfU0NST0xMSU5HKSAmJiBFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HCiAt
d2Via2l0LW92ZXJmbG93LXNjcm9sbGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlS2V5d29yZHMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jk
cy5pbgppbmRleCA0Yjk5Njc5Li41NmMzN2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVL
ZXl3b3Jkcy5pbgpAQCAtOTYzLDMgKzk2Myw4IEBAIHNuYXAKIC13ZWJraXQtcGFnZWQteAogLXdl
YmtpdC1wYWdlZC15CiAKKy8vIC13ZWJraXQtYXBwLXJlZ2lvbgorI2lmIGRlZmluZWQoRU5BQkxF
X1dJREdFVF9SRUdJT04pICYmIEVOQUJMRV9XSURHRVRfUkVHSU9OCitkcmFnCituby1kcmFnCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9EYXNoYm9hcmRSZWdpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9EYXNoYm9hcmRSZWdpb24uaAppbmRleCBhNjk4ZTQ5Li45MWU1
ZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRGFzaGJvYXJkUmVnaW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0Rhc2hib2FyZFJlZ2lvbi5oCkBAIC0yMyw3ICsyMyw3IEBA
CiAKICNpbmNsdWRlICJSZWN0LmgiCiAKLSNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8
IEVOQUJMRShXSURHRVRfUkVHSU9OKQorI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNywxMSArMzcsNiBAQCBwdWJsaWM6CiAgICAgYm9v
bCBtX2lzQ2lyY2xlIDogMTsKICAgICBib29sIG1faXNSZWN0YW5nbGUgOiAxOwogCi0jaWYgRU5B
QkxFKERBU0hCT0FSRF9TVVBQT1JUKSAmJiBFTkFCTEUoV0lER0VUX1JFR0lPTikKLSAgICAvLyBV
c2VkIHRvIHRlbGwgZGlmZmVyZW50IENTUyBmdW5jdGlvbiBuYW1lIHdoZW4gYm90aCBmZWF0dXJl
cyBhcmUgZW5hYmxlZC4KLSAgICBTdHJpbmcgbV9jc3NGdW5jdGlvbk5hbWU7Ci0jZW5kaWYKLQog
cHJpdmF0ZToKICAgICBEYXNoYm9hcmRSZWdpb24oKSA6IG1faXNDaXJjbGUoZmFsc2UpLCBtX2lz
UmVjdGFuZ2xlKGZhbHNlKSB7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAK
aW5kZXggNTE3YmRiNi4uMzFkZTU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cApAQCAtMTMzLDcgKzEzMyw3IEBACiAjaW5jbHVkZSAiV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaCIK
ICNlbmRpZgogCi0jaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBFTkFCTEUoV0lER0VU
X1JFR0lPTikKKyNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAjaW5jbHVkZSAiRGFzaGJv
YXJkUmVnaW9uLmgiCiAjZW5kaWYKIApAQCAtMzkxOSwxMyArMzkxOSw4IEBAIHZvaWQgU3R5bGVS
ZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUp
CiAgICAgICAgIHNldFRleHRTaXplQWRqdXN0KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09
IENTU1ZhbHVlQXV0byk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0jaWYgRU5BQkxFKERBU0hC
T0FSRF9TVVBQT1JUKSB8fCBFTkFCTEUoV0lER0VUX1JFR0lPTikKICNpZiBFTkFCTEUoREFTSEJP
QVJEX1NVUFBPUlQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdERhc2hib2FyZFJlZ2lvbjoK
LSNlbmRpZgotI2lmIEVOQUJMRShXSURHRVRfUkVHSU9OKQotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRXaWRnZXRSZWdpb246Ci0jZW5kaWYKICAgICB7CiAgICAgICAgIEhBTkRMRV9JTkhFUklU
X0FORF9JTklUSUFMKGRhc2hib2FyZFJlZ2lvbnMsIERhc2hib2FyZFJlZ2lvbnMpCiAgICAgICAg
IGlmICghcHJpbWl0aXZlVmFsdWUpCkBAIC0zOTY4LDYgKzM5NjMsMTUgQEAgdm9pZCBTdHlsZVJl
c29sdmVyOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgorI2lmIEVOQUJMRShXSURHRVRfUkVHSU9O
KQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBcHBSZWdpb246IHsKKyAgICAgICAgaWYgKCFw
cmltaXRpdmVWYWx1ZSB8fCAhcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIG1fc3R5bGUtPnNldERyYWdnYWJsZVJlZ2lvbk1vZGUocHJpbWl0
aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVEcmFnID8gRHJhZ2dhYmxlUmVnaW9uRHJh
ZyA6IERyYWdnYWJsZVJlZ2lvbk5vRHJhZyk7CisgICAgICAgIG1fZWxlbWVudC0+ZG9jdW1lbnQo
KS0+c2V0SGFzRHJhZ2dhYmxlUmVnaW9ucyh0cnVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyNlbmRpZgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlV2lkdGg6IHsKICAg
ICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodGV4dFN0cm9rZVdpZHRoLCBUZXh0U3Ry
b2tlV2lkdGgpCiAgICAgICAgIGZsb2F0IHdpZHRoID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CmluZGV4IGFiNDhjYTMuLjc0Yjg2MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDU2
LDEwICs0NTYsMTQgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VS
TCYgdXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQogICAgICwgbV9oYXNYTUxEZWNsYXJh
dGlvbigwKQogICAgICwgbV9zYXZlZFJlbmRlcmVyKDApCiAgICAgLCBtX2Rlc2lnbk1vZGUoaW5o
ZXJpdCkKLSNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8IEVOQUJMRShXSURHRVRfUkVH
SU9OKQorI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICAsIG1faGFzRGFzaGJvYXJk
UmVnaW9ucyhmYWxzZSkKICAgICAsIG1fZGFzaGJvYXJkUmVnaW9uc0RpcnR5KGZhbHNlKQogI2Vu
ZGlmCisjaWYgRU5BQkxFKFdJREdFVF9SRUdJT04pCisgICAgLCBtX2hhc0RyYWdnYWJsZVJlZ2lv
bnMoZmFsc2UpCisgICAgLCBtX2RyYWdnYWJsZVJlZ2lvbnNEaXJ0eShmYWxzZSkKKyNlbmRpZgog
ICAgICwgbV9jcmVhdGVSZW5kZXJlcnModHJ1ZSkKICAgICAsIG1faW5QYWdlQ2FjaGUoZmFsc2Up
CiAgICAgLCBtX2FjY2Vzc0tleU1hcFZhbGlkKGZhbHNlKQpAQCAtMzc0Niw3ICszNzUwLDcgQEAg
dm9pZCBEb2N1bWVudDo6YWN0aXZlQ2hhaW5Ob2RlRGV0YWNoZWQoTm9kZSogbm9kZSkKICAgICAg
ICAgbV9hY3RpdmVOb2RlID0gbV9hY3RpdmVOb2RlLT5wYXJlbnROb2RlKCk7CiB9CiAKLSNpZiBF
TkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8IEVOQUJMRShXSURHRVRfUkVHSU9OKQorI2lmIEVO
QUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKIGNvbnN0IFZlY3RvcjxEYXNoYm9hcmRSZWdpb25WYWx1
ZT4mIERvY3VtZW50OjpkYXNoYm9hcmRSZWdpb25zKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9k
YXNoYm9hcmRSZWdpb25zOwpAQCAtMzc1OSw2ICszNzYzLDE5IEBAIHZvaWQgRG9jdW1lbnQ6OnNl
dERhc2hib2FyZFJlZ2lvbnMoY29uc3QgVmVjdG9yPERhc2hib2FyZFJlZ2lvblZhbHVlPiYgcmVn
aW9ucykKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFdJREdFVF9SRUdJT04pCitjb25zdCBWZWN0
b3I8RHJhZ2dhYmxlUmVnaW9uVmFsdWU+JiBEb2N1bWVudDo6ZHJhZ2dhYmxlUmVnaW9ucygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fZHJhZ2dhYmxlUmVnaW9uczsKK30KKwordm9pZCBEb2N1bWVu
dDo6c2V0RHJhZ2dhYmxlUmVnaW9ucyhjb25zdCBWZWN0b3I8RHJhZ2dhYmxlUmVnaW9uVmFsdWU+
JiByZWdpb25zKQoreworICAgIG1fZHJhZ2dhYmxlUmVnaW9ucyA9IHJlZ2lvbnM7CisgICAgc2V0
RHJhZ2dhYmxlUmVnaW9uc0RpcnR5KGZhbHNlKTsKK30KKyNlbmRpZgorCiBib29sIERvY3VtZW50
OjpzZXRGb2N1c2VkTm9kZShQYXNzUmVmUHRyPE5vZGU+IHBycE5ld0ZvY3VzZWROb2RlKQogewog
ICAgIFJlZlB0cjxOb2RlPiBuZXdGb2N1c2VkTm9kZSA9IHBycE5ld0ZvY3VzZWROb2RlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAppbmRleCBkODExOWMzLi41Y2Y4NzBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aApAQCAtMTU2LDEwICsxNTYsMTQgQEAgY2xhc3MgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOwogY2xh
c3MgVHJhbnNmb3JtU291cmNlOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBP
UlQpIHx8IEVOQUJMRShXSURHRVRfUkVHSU9OKQorI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9S
VCkKIHN0cnVjdCBEYXNoYm9hcmRSZWdpb25WYWx1ZTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFdJ
REdFVF9SRUdJT04pCitzdHJ1Y3QgRHJhZ2dhYmxlUmVnaW9uVmFsdWU7CisjZW5kaWYKKwogI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCiBjbGFzcyBUb3VjaDsKIGNsYXNzIFRvdWNoTGlzdDsKQEAg
LTEwMzcsNyArMTA0MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZyYW1lRWxlbWVudHNTaG91
bGRJZ25vcmVTY3JvbGxpbmcoYm9vbCBpZ25vcmUpIHsgbV9mcmFtZUVsZW1lbnRzU2hvdWxkSWdu
b3JlU2Nyb2xsaW5nID0gaWdub3JlOyB9CiAgICAgYm9vbCBmcmFtZUVsZW1lbnRzU2hvdWxkSWdu
b3JlU2Nyb2xsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUVsZW1lbnRzU2hvdWxkSWdub3Jl
U2Nyb2xsaW5nOyB9CiAKLSNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8IEVOQUJMRShX
SURHRVRfUkVHSU9OKQorI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICB2b2lkIHNl
dERhc2hib2FyZFJlZ2lvbnNEaXJ0eShib29sIGYpIHsgbV9kYXNoYm9hcmRSZWdpb25zRGlydHkg
PSBmOyB9CiAgICAgYm9vbCBkYXNoYm9hcmRSZWdpb25zRGlydHkoKSBjb25zdCB7IHJldHVybiBt
X2Rhc2hib2FyZFJlZ2lvbnNEaXJ0eTsgfQogICAgIGJvb2wgaGFzRGFzaGJvYXJkUmVnaW9ucyAo
KSBjb25zdCB7IHJldHVybiBtX2hhc0Rhc2hib2FyZFJlZ2lvbnM7IH0KQEAgLTEwNDYsNiArMTA1
MCwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREYXNoYm9hcmRSZWdpb25zKGNvbnN0IFZlY3Rv
cjxEYXNoYm9hcmRSZWdpb25WYWx1ZT4mKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFdJREdFVF9S
RUdJT04pCisgICAgdm9pZCBzZXREcmFnZ2FibGVSZWdpb25zRGlydHkoYm9vbCBmKSB7IG1fZHJh
Z2dhYmxlUmVnaW9uc0RpcnR5ID0gZjsgfQorICAgIGJvb2wgZHJhZ2dhYmxlUmVnaW9uc0RpcnR5
KCkgY29uc3QgeyByZXR1cm4gbV9kcmFnZ2FibGVSZWdpb25zRGlydHk7IH0KKyAgICBib29sIGhh
c0RyYWdnYWJsZVJlZ2lvbnMgKCkgY29uc3QgeyByZXR1cm4gbV9oYXNEcmFnZ2FibGVSZWdpb25z
OyB9CisgICAgdm9pZCBzZXRIYXNEcmFnZ2FibGVSZWdpb25zKGJvb2wgZikgeyBtX2hhc0RyYWdn
YWJsZVJlZ2lvbnMgPSBmOyB9CisgICAgY29uc3QgVmVjdG9yPERyYWdnYWJsZVJlZ2lvblZhbHVl
PiYgZHJhZ2dhYmxlUmVnaW9ucygpIGNvbnN0OworICAgIHZvaWQgc2V0RHJhZ2dhYmxlUmVnaW9u
cyhjb25zdCBWZWN0b3I8RHJhZ2dhYmxlUmVnaW9uVmFsdWU+Jik7CisjZW5kaWYKKwogICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVBbGxFdmVudExpc3RlbmVycygpOwogCiAjaWYgRU5BQkxFKFNWRykK
QEAgLTE0NzgsMTIgKzE0OTEsMTggQEAgcHJpdmF0ZToKICAgICBPd25QdHI8U1ZHRG9jdW1lbnRF
eHRlbnNpb25zPiBtX3N2Z0V4dGVuc2lvbnM7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShEQVNIQk9B
UkRfU1VQUE9SVCkgfHwgRU5BQkxFKFdJREdFVF9SRUdJT04pCisjaWYgRU5BQkxFKERBU0hCT0FS
RF9TVVBQT1JUKQogICAgIFZlY3RvcjxEYXNoYm9hcmRSZWdpb25WYWx1ZT4gbV9kYXNoYm9hcmRS
ZWdpb25zOwogICAgIGJvb2wgbV9oYXNEYXNoYm9hcmRSZWdpb25zOwogICAgIGJvb2wgbV9kYXNo
Ym9hcmRSZWdpb25zRGlydHk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXSURHRVRfUkVHSU9OKQor
ICAgIFZlY3RvcjxEcmFnZ2FibGVSZWdpb25WYWx1ZT4gbV9kcmFnZ2FibGVSZWdpb25zOworICAg
IGJvb2wgbV9oYXNEcmFnZ2FibGVSZWdpb25zOworICAgIGJvb2wgbV9kcmFnZ2FibGVSZWdpb25z
RGlydHk7CisjZW5kaWYKKwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SFRNTENhbnZhc0Vs
ZW1lbnQ+ID4gbV9jc3NDYW52YXNFbGVtZW50czsKIAogICAgIGJvb2wgbV9jcmVhdGVSZW5kZXJl
cnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKaW5kZXggY2NhNGEwOS4uNTUwMTljOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lLmNwcApAQCAtNDkwLDEyICs0OTAsMTggQEAgdm9pZCBDaHJvbWU6OnNjaGVkdWxl
QW5pbWF0aW9uKCkKIAogLy8gLS0tLS0tLS0KIAotI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9S
VCkgfHwgRU5BQkxFKFdJREdFVF9SRUdJT04pCisjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JU
KQogdm9pZCBDaHJvbWVDbGllbnQ6OmRhc2hib2FyZFJlZ2lvbnNDaGFuZ2VkKCkKIHsKIH0KICNl
bmRpZgogCisjaWYgRU5BQkxFKFdJREdFVF9SRUdJT04pCit2b2lkIENocm9tZUNsaWVudDo6ZHJh
Z2dhYmxlUmVnaW9uc0NoYW5nZWQoKQoreworfQorI2VuZGlmCisKIHZvaWQgQ2hyb21lQ2xpZW50
Ojpwb3B1bGF0ZVZpc2l0ZWRMaW5rcygpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQu
aAppbmRleCBmYTViNDg1Li5kZTgzYjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
QEAgLTIwNiw5ICsyMDYsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyB0aGUg
bmV3IGNhY2hlLgogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVP
cmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiosIGludDY0X3QgdG90YWxTcGFjZU5lZWRlZCkgPSAw
OwogCi0jaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBFTkFCTEUoV0lER0VUX1JFR0lP
TikKKyNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
YXNoYm9hcmRSZWdpb25zQ2hhbmdlZCgpOwogI2VuZGlmCisjaWYgRU5BQkxFKFdJREdFVF9SRUdJ
T04pCisgICAgICAgIHZpcnR1YWwgdm9pZCBkcmFnZ2FibGVSZWdpb25zQ2hhbmdlZCgpOworI2Vu
ZGlmCiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRlVmlzaXRlZExpbmtzKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCAyOTI1ODIzLi5kNzllYTUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0xMjEyLDkgKzEyMTIsMTIgQEAgdm9pZCBGcmFtZVZpZXc6
OmxheW91dChib29sIGFsbG93U3VidHJlZSkKICAgICBpZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNz
aWJpbGl0eUVuYWJsZWQoKSkKICAgICAgICAgcm9vdC0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNo
ZSgpLT5wb3N0Tm90aWZpY2F0aW9uKHJvb3QsIEFYT2JqZWN0Q2FjaGU6OkFYTGF5b3V0Q29tcGxl
dGUsIHRydWUpOwogI2VuZGlmCi0jaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBFTkFC
TEUoV0lER0VUX1JFR0lPTikKKyNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgdXBk
YXRlRGFzaGJvYXJkUmVnaW9ucygpOwogI2VuZGlmCisjaWYgRU5BQkxFKFdJREdFVF9SRUdJT04p
CisgICAgdXBkYXRlRHJhZ2dhYmxlUmVnaW9ucygpOworI2VuZGlmCiAKICAgICBBU1NFUlQoIXJv
b3QtPm5lZWRzTGF5b3V0KCkpOwogCkBAIC0yODgyLDcgKzI4ODUsNyBAQCBib29sIEZyYW1lVmll
dzo6c2Nyb2xsQW5pbWF0b3JFbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LSNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8IEVOQUJMRShXSURHRVRfUkVHSU9OKQor
I2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVEYXNo
Ym9hcmRSZWdpb25zKCkKIHsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1
bWVudCgpOwpAQCAtMjkwMCw2ICsyOTAzLDI0IEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVEYXNo
Ym9hcmRSZWdpb25zKCkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFdJREdFVF9SRUdJT04pCit2
b2lkIEZyYW1lVmlldzo6dXBkYXRlRHJhZ2dhYmxlUmVnaW9ucygpCit7CisgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50LT5oYXNE
cmFnZ2FibGVSZWdpb25zKCkpCisgICAgICAgIHJldHVybjsKKyAgICBWZWN0b3I8RHJhZ2dhYmxl
UmVnaW9uVmFsdWU+IG5ld1JlZ2lvbnM7CisgICAgZG9jdW1lbnQtPnJlbmRlckJveCgpLT5jb2xs
ZWN0RHJhZ2dhYmxlUmVnaW9ucyhuZXdSZWdpb25zKTsKKyAgICBpZiAobmV3UmVnaW9ucyA9PSBk
b2N1bWVudC0+ZHJhZ2dhYmxlUmVnaW9ucygpKQorICAgICAgICByZXR1cm47CisgICAgZG9jdW1l
bnQtPnNldERyYWdnYWJsZVJlZ2lvbnMobmV3UmVnaW9ucyk7CisgICAgUGFnZSogcGFnZSA9IG1f
ZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKyAgICBwYWdl
LT5jaHJvbWUoKS0+Y2xpZW50KCktPmRyYWdnYWJsZVJlZ2lvbnNDaGFuZ2VkKCk7Cit9CisjZW5k
aWYKKwogdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZVNjcm9sbENvcm5lcigpCiB7CiAgICAgUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IDA7CkBAIC0zMjIwLDExICszMjQxLDE1IEBAIHZvaWQgRnJhbWVW
aWV3OjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCogcCwgY29uc3QgSW50UmVjdCYgcmVj
dCkKICAgICBtX3BhaW50QmVoYXZpb3IgPSBvbGRQYWludEJlaGF2aW9yOwogICAgIG1fbGFzdFBh
aW50VGltZSA9IGN1cnJlbnRUaW1lKCk7CiAKLSNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQp
IHx8IEVOQUJMRShXSURHRVRfUkVHSU9OKQogICAgIC8vIFJlZ2lvbnMgbWF5IGhhdmUgY2hhbmdl
ZCBhcyBhIHJlc3VsdCBvZiB0aGUgdmlzaWJpbGl0eS96LWluZGV4IG9mIGVsZW1lbnQgY2hhbmdp
bmcuCisjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgIGlmIChkb2N1bWVudC0+ZGFz
aGJvYXJkUmVnaW9uc0RpcnR5KCkpCiAgICAgICAgIHVwZGF0ZURhc2hib2FyZFJlZ2lvbnMoKTsK
ICNlbmRpZgorI2lmIEVOQUJMRShXSURHRVRfUkVHSU9OKQorICAgIGlmIChkb2N1bWVudC0+ZHJh
Z2dhYmxlUmVnaW9uc0RpcnR5KCkpCisgICAgICAgIHVwZGF0ZURyYWdnYWJsZVJlZ2lvbnMoKTsK
KyNlbmRpZgogCiAgICAgaWYgKGlzVG9wTGV2ZWxQYWludGVyKQogICAgICAgICBzQ3VycmVudFBh
aW50VGltZVN0YW1wID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IGNlZWE3M2YuLjZi
ZmJkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtMjIxLDkgKzIyMSwxMiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBlbmREaXNhYmxlUmVwYWludHMoKTsKICAgICBib29sIHJlcGFpbnRzRGlz
YWJsZWQoKSB7IHJldHVybiBtX2Rpc2FibGVSZXBhaW50cyA+IDA7IH0KIAotI2lmIEVOQUJMRShE
QVNIQk9BUkRfU1VQUE9SVCkgfHwgRU5BQkxFKFdJREdFVF9SRUdJT04pCisjaWYgRU5BQkxFKERB
U0hCT0FSRF9TVVBQT1JUKQogICAgIHZvaWQgdXBkYXRlRGFzaGJvYXJkUmVnaW9ucygpOwogI2Vu
ZGlmCisjaWYgRU5BQkxFKFdJREdFVF9SRUdJT04pCisgICAgdm9pZCB1cGRhdGVEcmFnZ2FibGVS
ZWdpb25zKCk7CisjZW5kaWYKICAgICB2b2lkIHVwZGF0ZUNvbnRyb2xUaW50cygpOwogCiAgICAg
dm9pZCByZXN0b3JlU2Nyb2xsYmFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuY3BwCmluZGV4IDIzNGNlYTIuLjJhMjU0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbmxpbmUuY3BwCkBAIC0xNTI1LDcgKzE1MjUsNyBAQCB2b2lkIFJlbmRlcklu
bGluZTo6cGFpbnRPdXRsaW5lRm9yTGluZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwgY29uc3QgTAogICAgICAgICAgICAgYW50aWFsaWFzKTsKIH0KIAotI2lmIEVOQUJMRShEQVNI
Qk9BUkRfU1VQUE9SVCkgfHwgRU5BQkxFKFdJREdFVF9SRUdJT04pCisjaWYgRU5BQkxFKERBU0hC
T0FSRF9TVVBQT1JUKQogdm9pZCBSZW5kZXJJbmxpbmU6OmFkZERhc2hib2FyZFJlZ2lvbnMoVmVj
dG9yPERhc2hib2FyZFJlZ2lvblZhbHVlPiYgcmVnaW9ucykKIHsKICAgICAvLyBDb252ZXJ0IHRo
ZSBzdHlsZSByZWdpb25zIHRvIGFic29sdXRlIGNvb3JkaW5hdGVzLgpAQCAtMTU2OSw0ICsxNTY5
LDI3IEBAIHZvaWQgUmVuZGVySW5saW5lOjphZGREYXNoYm9hcmRSZWdpb25zKFZlY3RvcjxEYXNo
Ym9hcmRSZWdpb25WYWx1ZT4mIHJlZ2lvbnMpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXSURH
RVRfUkVHSU9OKQordm9pZCBSZW5kZXJJbmxpbmU6OmFkZERyYWdnYWJsZVJlZ2lvbihWZWN0b3I8
RHJhZ2dhYmxlUmVnaW9uVmFsdWU+JiByZWdpb25zKQoreworICAgIGlmIChzdHlsZSgpLT52aXNp
YmlsaXR5KCkgIT0gVklTSUJMRSB8fCBzdHlsZSgpLT5nZXREcmFnZ2FibGVSZWdpb25Nb2RlKCkg
PT0gRHJhZ2dhYmxlUmVnaW9uTm9uZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQ29udmVy
dCB0aGUgc3R5bGUgcmVnaW9ucyB0byBhYnNvbHV0ZSBjb29yZGluYXRlcy4KKyAgICBEcmFnZ2Fi
bGVSZWdpb25WYWx1ZSByZWdpb247CisgICAgcmVnaW9uLmRyYWdnYWJsZSA9IHN0eWxlKCktPmdl
dERyYWdnYWJsZVJlZ2lvbk1vZGUoKSA9PSBEcmFnZ2FibGVSZWdpb25EcmFnOworICAgIHJlZ2lv
bi5ib3VuZHMgPSBsaW5lc0JvdW5kaW5nQm94KCk7CisKKyAgICBSZW5kZXJPYmplY3QqIGNvbnRh
aW5lciA9IGNvbnRhaW5pbmdCbG9jaygpOworICAgIGlmICghY29udGFpbmVyKQorICAgICAgICBj
b250YWluZXIgPSB0aGlzOworCisgICAgRmxvYXRQb2ludCBhYnNQb3MgPSBjb250YWluZXItPmxv
Y2FsVG9BYnNvbHV0ZSgpOworICAgIHJlZ2lvbi5ib3VuZHMuc2V0WChhYnNQb3MueCgpICsgcmVn
aW9uLmJvdW5kcy54KCkpOworICAgIHJlZ2lvbi5ib3VuZHMuc2V0WShhYnNQb3MueSgpICsgcmVn
aW9uLmJvdW5kcy55KCkpOworICAgIAorICAgIHJlZ2lvbnMuYXBwZW5kKHJlZ2lvbik7Cit9Cisj
ZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5oCmluZGV4IDRhNWJiMDkuLmM0MmQ5ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmgKQEAgLTE2MSw5ICsxNjEsMTMgQEAgcHJpdmF0ZToKIAogICAg
IHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0
KiA9IDApOwogCi0jaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBFTkFCTEUoV0lER0VU
X1JFR0lPTikKKyNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgdmlydHVhbCB2b2lk
IGFkZERhc2hib2FyZFJlZ2lvbnMoVmVjdG9yPERhc2hib2FyZFJlZ2lvblZhbHVlPiYpOwogI2Vu
ZGlmCisKKyNpZiBFTkFCTEUoV0lER0VUX1JFR0lPTikKKyAgICB2aXJ0dWFsIHZvaWQgYWRkRHJh
Z2dhYmxlUmVnaW9uKFZlY3RvcjxEcmFnZ2FibGVSZWdpb25WYWx1ZT4mKTsKKyNlbmRpZgogICAg
IAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5bGUoKTsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGE0OTU0NGQuLmI5
NmVkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMTcw
OCwxMSArMTcwOCwxNCBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxUbyhpbnQgeCwgaW50IHkp
CiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgYSBSZW5kZXJWaWV3IGlmIHdlJ3JlIHRyeWluZyB0byBz
Y3JvbGwuCiAgICAgQVNTRVJUKHZpZXcpOwogICAgIGlmICh2aWV3KSB7Ci0jaWYgRU5BQkxFKERB
U0hCT0FSRF9TVVBQT1JUKSB8fCBFTkFCTEUoV0lER0VUX1JFR0lPTikKLSAgICAgICAgLy8gVXBk
YXRlIGRhc2hib2FyZCByZWdpb25zLCBzY3JvbGxpbmcgbWF5IGNoYW5nZSB0aGUgY2xpcCBvZiBh
CisgICAgICAgIC8vIFVwZGF0ZSBkYXNoYm9hcmQvZHJhZ2dhYmxlIHJlZ2lvbnMsIHNjcm9sbGlu
ZyBtYXkgY2hhbmdlIHRoZSBjbGlwIG9mIGEKICAgICAgICAgLy8gcGFydGljdWxhciByZWdpb24u
CisjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgICAgICB2aWV3LT5mcmFtZVZpZXco
KS0+dXBkYXRlRGFzaGJvYXJkUmVnaW9ucygpOwogI2VuZGlmCisjaWYgRU5BQkxFKFdJREdFVF9S
RUdJT04pCisgICAgICAgIHZpZXctPmZyYW1lVmlldygpLT51cGRhdGVEcmFnZ2FibGVSZWdpb25z
KCk7CisjZW5kaWYKIAogICAgICAgICB2aWV3LT51cGRhdGVXaWRnZXRQb3NpdGlvbnMoKTsKICAg
ICB9CkBAIC0yMzYyLDExICsyMzY1LDE1IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNldEhhc0hvcml6
b250YWxTY3JvbGxiYXIoYm9vbCBoYXNTY3JvbGxiYXIpCiAgICAgaWYgKG1fdkJhcikKICAgICAg
ICAgbV92QmFyLT5zdHlsZUNoYW5nZWQoKTsKIAotI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9S
VCkgfHwgRU5BQkxFKFdJREdFVF9SRUdJT04pCiAgICAgLy8gRm9yY2UgYW4gdXBkYXRlIHNpbmNl
IHdlIGtub3cgdGhlIHNjcm9sbGJhcnMgaGF2ZSBjaGFuZ2VkIHRoaW5ncy4KKyNpZiBFTkFCTEUo
REFTSEJPQVJEX1NVUFBPUlQpCiAgICAgaWYgKHJlbmRlcmVyKCktPmRvY3VtZW50KCktPmhhc0Rh
c2hib2FyZFJlZ2lvbnMoKSkKICAgICAgICAgcmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+c2V0RGFz
aGJvYXJkUmVnaW9uc0RpcnR5KHRydWUpOwogI2VuZGlmCisjaWYgRU5BQkxFKFdJREdFVF9SRUdJ
T04pCisgICAgaWYgKHJlbmRlcmVyKCktPmRvY3VtZW50KCktPmhhc0RyYWdnYWJsZVJlZ2lvbnMo
KSkKKyAgICAgICAgcmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+c2V0RHJhZ2dhYmxlUmVnaW9uc0Rp
cnR5KHRydWUpOworI2VuZGlmCiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnNldEhhc1ZlcnRpY2Fs
U2Nyb2xsYmFyKGJvb2wgaGFzU2Nyb2xsYmFyKQpAQCAtMjM4NSwxMSArMjM5MiwxNSBAQCB2b2lk
IFJlbmRlckxheWVyOjpzZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcihib29sIGhhc1Njcm9sbGJhcikK
ICAgICBpZiAobV92QmFyKQogICAgICAgICBtX3ZCYXItPnN0eWxlQ2hhbmdlZCgpOwogCi0jaWYg
RU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBFTkFCTEUoV0lER0VUX1JFR0lPTikKICAgICAv
LyBGb3JjZSBhbiB1cGRhdGUgc2luY2Ugd2Uga25vdyB0aGUgc2Nyb2xsYmFycyBoYXZlIGNoYW5n
ZWQgdGhpbmdzLgorI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICBpZiAocmVuZGVy
ZXIoKS0+ZG9jdW1lbnQoKS0+aGFzRGFzaGJvYXJkUmVnaW9ucygpKQogICAgICAgICByZW5kZXJl
cigpLT5kb2N1bWVudCgpLT5zZXREYXNoYm9hcmRSZWdpb25zRGlydHkodHJ1ZSk7CiAjZW5kaWYK
KyNpZiBFTkFCTEUoV0lER0VUX1JFR0lPTikKKyAgICBpZiAocmVuZGVyZXIoKS0+ZG9jdW1lbnQo
KS0+aGFzRHJhZ2dhYmxlUmVnaW9ucygpKQorICAgICAgICByZW5kZXJlcigpLT5kb2N1bWVudCgp
LT5zZXREcmFnZ2FibGVSZWdpb25zRGlydHkodHJ1ZSk7CisjZW5kaWYKIH0KIAogU2Nyb2xsYWJs
ZUFyZWEqIFJlbmRlckxheWVyOjplbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0CkBAIC0y
NTc1LDExICsyNTg2LDE1IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVNjcm9sbGJhcnNBZnRl
ckxheW91dCgpCiAKICAgICAgICAgdXBkYXRlU2VsZlBhaW50aW5nTGF5ZXIoKTsKIAotI2lmIEVO
QUJMRShEQVNIQk9BUkRfU1VQUE9SVCkgfHwgRU5BQkxFKFdJREdFVF9SRUdJT04pCiAgICAgICAg
IC8vIEZvcmNlIGFuIHVwZGF0ZSBzaW5jZSB3ZSBrbm93IHRoZSBzY3JvbGxiYXJzIGhhdmUgY2hh
bmdlZCB0aGluZ3MuCisjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgICAgICBpZiAo
cmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+aGFzRGFzaGJvYXJkUmVnaW9ucygpKQogICAgICAgICAg
ICAgcmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+c2V0RGFzaGJvYXJkUmVnaW9uc0RpcnR5KHRydWUp
OwogI2VuZGlmCisjaWYgRU5BQkxFKFdJREdFVF9SRUdJT04pCisgICAgICAgIGlmIChyZW5kZXJl
cigpLT5kb2N1bWVudCgpLT5oYXNEcmFnZ2FibGVSZWdpb25zKCkpCisgICAgICAgICAgICByZW5k
ZXJlcigpLT5kb2N1bWVudCgpLT5zZXREcmFnZ2FibGVSZWdpb25zRGlydHkodHJ1ZSk7CisjZW5k
aWYKIAogICAgICAgICByZW5kZXJlcigpLT5yZXBhaW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRleCA3YTI0Mzk3Li44MDJiNmFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC04NzksMTEgKzg3OSwx
NSBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKGJvb2wgaGFz
U2Nyb2xsYmFyKQogICAgIGlmIChtX3ZCYXIpCiAgICAgICAgIG1fdkJhci0+c3R5bGVDaGFuZ2Vk
KCk7CiAKLSNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8IEVOQUJMRShXSURHRVRfUkVH
SU9OKQogICAgIC8vIEZvcmNlIGFuIHVwZGF0ZSBzaW5jZSB3ZSBrbm93IHRoZSBzY3JvbGxiYXJz
IGhhdmUgY2hhbmdlZCB0aGluZ3MuCisjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAg
IGlmIChkb2N1bWVudCgpLT5oYXNEYXNoYm9hcmRSZWdpb25zKCkpCiAgICAgICAgIGRvY3VtZW50
KCktPnNldERhc2hib2FyZFJlZ2lvbnNEaXJ0eSh0cnVlKTsKICNlbmRpZgorI2lmIEVOQUJMRShX
SURHRVRfUkVHSU9OKQorICAgIGlmIChkb2N1bWVudCgpLT5oYXNEcmFnZ2FibGVSZWdpb25zKCkp
CisgICAgICAgIGRvY3VtZW50KCktPnNldERyYWdnYWJsZVJlZ2lvbnNEaXJ0eSh0cnVlKTsKKyNl
bmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDIxNDk3MGEuLjJlOWY3NjUgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xODEwLDEwICsxODEwLDE0IEBAIHZv
aWQgUmVuZGVyT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNv
bnN0IFJlbmRlclN0eWxlKiBuZXdTCiAgICAgICAgICAgICBib29sIHZpc2liaWxpdHlDaGFuZ2Vk
ID0gbV9zdHlsZS0+dmlzaWJpbGl0eSgpICE9IG5ld1N0eWxlLT52aXNpYmlsaXR5KCkgCiAgICAg
ICAgICAgICAgICAgfHwgbV9zdHlsZS0+ekluZGV4KCkgIT0gbmV3U3R5bGUtPnpJbmRleCgpIAog
ICAgICAgICAgICAgICAgIHx8IG1fc3R5bGUtPmhhc0F1dG9aSW5kZXgoKSAhPSBuZXdTdHlsZS0+
aGFzQXV0b1pJbmRleCgpOwotI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkgfHwgRU5BQkxF
KFdJREdFVF9SRUdJT04pCisjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgICAgICAg
ICAgaWYgKHZpc2liaWxpdHlDaGFuZ2VkKQogICAgICAgICAgICAgICAgIGRvY3VtZW50KCktPnNl
dERhc2hib2FyZFJlZ2lvbnNEaXJ0eSh0cnVlKTsKICNlbmRpZgorI2lmIEVOQUJMRShXSURHRVRf
UkVHSU9OKQorICAgICAgICAgICAgaWYgKHZpc2liaWxpdHlDaGFuZ2VkKQorICAgICAgICAgICAg
ICAgIGRvY3VtZW50KCktPnNldERyYWdnYWJsZVJlZ2lvbnNEaXJ0eSh0cnVlKTsKKyNlbmRpZgog
ICAgICAgICAgICAgaWYgKHZpc2liaWxpdHlDaGFuZ2VkICYmIEFYT2JqZWN0Q2FjaGU6OmFjY2Vz
c2liaWxpdHlFbmFibGVkKCkpCiAgICAgICAgICAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RD
YWNoZSgpLT5jaGlsZHJlbkNoYW5nZWQodGhpcyk7CiAKQEAgLTI3MzQsNyArMjczOCw3IEBAIHZv
aWQgUmVuZGVyT2JqZWN0OjpnZXRUZXh0RGVjb3JhdGlvbkNvbG9ycyhpbnQgZGVjb3JhdGlvbnMs
IENvbG9yJiB1bmRlcmxpbmUsIENvCiAgICAgfQogfQogCi0jaWYgRU5BQkxFKERBU0hCT0FSRF9T
VVBQT1JUKSB8fCBFTkFCTEUoV0lER0VUX1JFR0lPTikKKyNpZiBFTkFCTEUoREFTSEJPQVJEX1NV
UFBPUlQpCiB2b2lkIFJlbmRlck9iamVjdDo6YWRkRGFzaGJvYXJkUmVnaW9ucyhWZWN0b3I8RGFz
aGJvYXJkUmVnaW9uVmFsdWU+JiByZWdpb25zKQogewogICAgIC8vIENvbnZlcnQgdGhlIHN0eWxl
IHJlZ2lvbnMgdG8gYWJzb2x1dGUgY29vcmRpbmF0ZXMuCkBAIC0yNzg3LDYgKzI3OTEsMzUgQEAg
dm9pZCBSZW5kZXJPYmplY3Q6OmNvbGxlY3REYXNoYm9hcmRSZWdpb25zKFZlY3RvcjxEYXNoYm9h
cmRSZWdpb25WYWx1ZT4mIHJlZ2lvbnMKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFdJREdFVF9S
RUdJT04pCit2b2lkIFJlbmRlck9iamVjdDo6YWRkRHJhZ2dhYmxlUmVnaW9uKFZlY3RvcjxEcmFn
Z2FibGVSZWdpb25WYWx1ZT4mIHJlZ2lvbnMpCit7CisgICAgaWYgKHN0eWxlKCktPnZpc2liaWxp
dHkoKSAhPSBWSVNJQkxFIHx8ICFpc0JveCgpIHx8IHN0eWxlKCktPmdldERyYWdnYWJsZVJlZ2lv
bk1vZGUoKSA9PSBEcmFnZ2FibGVSZWdpb25Ob25lKQorICAgICAgICByZXR1cm47CisgICAgCisg
ICAgUmVuZGVyQm94KiBib3ggPSB0b1JlbmRlckJveCh0aGlzKTsKKyAgICBGbG9hdFBvaW50IGFi
c1BvcyA9IGxvY2FsVG9BYnNvbHV0ZSgpOworCisgICAgLy8gQ29udmVydCB0aGUgc3R5bGUgcmVn
aW9ucyB0byBhYnNvbHV0ZSBjb29yZGluYXRlcy4KKyAgICBEcmFnZ2FibGVSZWdpb25WYWx1ZSBy
ZWdpb247CisgICAgcmVnaW9uLmRyYWdnYWJsZSA9IHN0eWxlKCktPmdldERyYWdnYWJsZVJlZ2lv
bk1vZGUoKSA9PSBEcmFnZ2FibGVSZWdpb25EcmFnOworICAgIHJlZ2lvbi5ib3VuZHMgPSBMYXlv
dXRSZWN0KGFic1Bvcy54KCksIGFic1Bvcy55KCksIGJveC0+d2lkdGgoKSwgYm94LT5oZWlnaHQo
KSk7CisgICAgcmVnaW9ucy5hcHBlbmQocmVnaW9uKTsKK30KKwordm9pZCBSZW5kZXJPYmplY3Q6
OmNvbGxlY3REcmFnZ2FibGVSZWdpb25zKFZlY3RvcjxEcmFnZ2FibGVSZWdpb25WYWx1ZT4mIHJl
Z2lvbnMpCit7CisgICAgLy8gUmVuZGVyVGV4dHMgZG9uJ3QgaGF2ZSB0aGVpciBvd24gc3R5bGUs
IHRoZXkganVzdCB1c2UgdGhlaXIgcGFyZW50J3Mgc3R5bGUsCisgICAgLy8gc28gd2UgZG9uJ3Qg
d2FudCB0byBpbmNsdWRlIHRoZW0uCisgICAgaWYgKGlzVGV4dCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBhZGREcmFnZ2FibGVSZWdpb24ocmVnaW9ucyk7CisgICAgZm9yIChSZW5kZXJPYmpl
Y3QqIGN1cnIgPSBmaXJzdENoaWxkKCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0U2libGluZygp
KQorICAgICAgICBjdXJyLT5jb2xsZWN0RHJhZ2dhYmxlUmVnaW9ucyhyZWdpb25zKTsKK30KKyNl
bmRpZgorCiBib29sIFJlbmRlck9iamVjdDo6d2lsbFJlbmRlckltYWdlKENhY2hlZEltYWdlKikK
IHsKICAgICAvLyBXaXRob3V0IHZpc2liaWxpdHkgd2Ugd29uJ3QgcmVuZGVyIChhbmQgdGhlcmVm
b3JlIGRvbid0IGNhcmUgYWJvdXQgYW5pbWF0aW9uKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuaAppbmRleCAzZjM4NDlmLi4xZDdhZjYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC0xMTgsNyArMTE4LDcgQEAgdHlwZWRlZiB1bnNpZ25l
ZCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3M7CiAKIGNvbnN0IGludCBjYXJldFdpZHRoID0gMTsK
IAotI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkgfHwgRU5BQkxFKFdJREdFVF9SRUdJT04p
CisjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogc3RydWN0IERhc2hib2FyZFJlZ2lvblZh
bHVlIHsKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRGFzaGJvYXJkUmVnaW9uVmFsdWUmIG8p
IGNvbnN0CiAgICAgewpAQCAtMTM2LDYgKzEzNiwyMiBAQCBzdHJ1Y3QgRGFzaGJvYXJkUmVnaW9u
VmFsdWUgewogfTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFdJREdFVF9SRUdJT04pCitzdHJ1Y3Qg
RHJhZ2dhYmxlUmVnaW9uVmFsdWUgeworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBEcmFnZ2Fi
bGVSZWdpb25WYWx1ZSYgbykgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBkcmFnZ2FibGUg
PT0gby5kcmFnZ2FibGUgJiYgYm91bmRzID09IG8uYm91bmRzOworICAgIH0KKyAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgRHJhZ2dhYmxlUmVnaW9uVmFsdWUmIG8pIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKKyAgICB9CisKKyAgICBib29sIGRyYWdnYWJsZTsK
KyAgICBMYXlvdXRSZWN0IGJvdW5kczsKK307CisjZW5kaWYKKwogdHlwZWRlZiBXVEY6Okhhc2hT
ZXQ8Y29uc3QgUmVuZGVyT2JqZWN0Kj4gUmVuZGVyT2JqZWN0QW5jZXN0b3JMaW5lYm94RGlydHlT
ZXQ7CiAKICNpZm5kZWYgTkRFQlVHCkBAIC02NjIsMTEgKzY3OCwxNiBAQCBwdWJsaWM6CiAgICAg
Ly8gcmVwYWludCBhbmQgZG8gbm90IG5lZWQgYSByZWxheW91dAogICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVGcm9tRWxlbWVudCgpIHsgfQogCi0jaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8
fCBFTkFCTEUoV0lER0VUX1JFR0lPTikKKyNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAg
ICAgdmlydHVhbCB2b2lkIGFkZERhc2hib2FyZFJlZ2lvbnMoVmVjdG9yPERhc2hib2FyZFJlZ2lv
blZhbHVlPiYpOwogICAgIHZvaWQgY29sbGVjdERhc2hib2FyZFJlZ2lvbnMoVmVjdG9yPERhc2hi
b2FyZFJlZ2lvblZhbHVlPiYpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0lER0VUX1JFR0lPTikK
KyAgICB2aXJ0dWFsIHZvaWQgYWRkRHJhZ2dhYmxlUmVnaW9uKFZlY3RvcjxEcmFnZ2FibGVSZWdp
b25WYWx1ZT4mKTsKKyAgICB2b2lkIGNvbGxlY3REcmFnZ2FibGVSZWdpb25zKFZlY3RvcjxEcmFn
Z2FibGVSZWdpb25WYWx1ZT4mKTsKKyNlbmRpZgorCiAgICAgYm9vbCBpc0NvbXBvc2l0ZWQoKSBj
b25zdDsKIAogICAgIGJvb2wgaGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RS
ZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0
IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEZpbHRlciA9IEhpdFRlc3RB
bGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAK
aW5kZXggMDYwMmNmYS4uOGYwOGU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC00NTAsNyArNDUwLDcgQEAgU3R5bGVEaWZmZXJlbmNl
IFJlbmRlclN0eWxlOjpkaWZmKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlciwgdW5zaWduZWQmIGNo
YW5nZWRDb24KICAgICAgICAgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBP
UlQpIHx8IEVOQUJMRShXSURHRVRfUkVHSU9OKQorI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9S
VCkKICAgICAgICAgLy8gSWYgcmVnaW9ucyBjaGFuZ2UsIHRyaWdnZXIgYSByZWxheW91dCB0byBy
ZS1jYWxjIHJlZ2lvbnMuCiAgICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kYXNo
Ym9hcmRSZWdpb25zICE9IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kYXNoYm9hcmRS
ZWdpb25zKQogICAgICAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZUxheW91dDsKQEAgLTEw
OTgsNyArMTA5OCw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgUmVuZGVyU3R5bGU6OnRleHRFbXBo
YXNpc01hcmtTdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBudWxsQXRvbTsKIH0KIAotI2lmIEVO
QUJMRShEQVNIQk9BUkRfU1VQUE9SVCkgfHwgRU5BQkxFKFdJREdFVF9SRUdJT04pCisjaWYgRU5B
QkxFKERBU0hCT0FSRF9TVVBQT1JUKQogY29uc3QgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9u
PiYgUmVuZGVyU3R5bGU6OmluaXRpYWxEYXNoYm9hcmRSZWdpb25zKCkKIHsKICAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4sIGVtcHR5TGlzdCwgKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCA3
YmNiMzhlLi44MjIwNzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuaApAQCAtNzcsNyArNzcsNyBAQAogI2luY2x1ZGUgIlN0eWxlRmlsdGVyRGF0YS5o
IgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8IEVOQUJMRShXSURH
RVRfUkVHSU9OKQorI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICNpbmNsdWRlICJTdHls
ZURhc2hib2FyZFJlZ2lvbi5oIgogI2VuZGlmCiAKQEAgLTEwMTksNyArMTAxOSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldE1pbkhlaWdodChMZW5ndGggdikgeyBTRVRfVkFSKG1fYm94LCBtX21p
bkhlaWdodCwgdikgfQogICAgIHZvaWQgc2V0TWF4SGVpZ2h0KExlbmd0aCB2KSB7IFNFVF9WQVIo
bV9ib3gsIG1fbWF4SGVpZ2h0LCB2KSB9CiAKLSNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQp
IHx8IEVOQUJMRShXSURHRVRfUkVHSU9OKQorI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkK
ICAgICBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+IGRhc2hib2FyZFJlZ2lvbnMoKSBjb25z
dCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kYXNoYm9hcmRSZWdpb25zOyB9CiAg
ICAgdm9pZCBzZXREYXNoYm9hcmRSZWdpb25zKFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4g
cmVnaW9ucykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2Rhc2hib2FyZFJlZ2lv
bnMsIHJlZ2lvbnMpOyB9CiAKQEAgLTEwMzgsNiArMTAzOCwxMSBAQCBwdWJsaWM6CiAgICAgfQog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoV0lER0VUX1JFR0lPTikKKyAgICBEcmFnZ2FibGVSZWdpb25N
b2RlIGdldERyYWdnYWJsZVJlZ2lvbk1vZGUoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9kcmFnZ2FibGVSZWdpb25Nb2RlOyB9CisgICAgdm9pZCBzZXREcmFnZ2FibGVS
ZWdpb25Nb2RlKERyYWdnYWJsZVJlZ2lvbk1vZGUgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLCBtX2RyYWdnYWJsZVJlZ2lvbk1vZGUsIHYpOyB9CisjZW5kaWYKKwogICAgIHZvaWQg
cmVzZXRCb3JkZXIoKSB7IHJlc2V0Qm9yZGVySW1hZ2UoKTsgcmVzZXRCb3JkZXJUb3AoKTsgcmVz
ZXRCb3JkZXJSaWdodCgpOyByZXNldEJvcmRlckJvdHRvbSgpOyByZXNldEJvcmRlckxlZnQoKTsg
cmVzZXRCb3JkZXJSYWRpdXMoKTsgfQogICAgIHZvaWQgcmVzZXRCb3JkZXJUb3AoKSB7IFNFVF9W
QVIoc3Vycm91bmQsIGJvcmRlci5tX3RvcCwgQm9yZGVyVmFsdWUoKSkgfQogICAgIHZvaWQgcmVz
ZXRCb3JkZXJSaWdodCgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fcmlnaHQsIEJvcmRl
clZhbHVlKCkpIH0KQEAgLTE3MjYsNyArMTczMSw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQUND
RUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKQogICAgIHN0YXRpYyBib29sIGluaXRpYWxVc2VU
b3VjaE92ZXJmbG93U2Nyb2xsaW5nKCkgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgotI2lmIEVO
QUJMRShEQVNIQk9BUkRfU1VQUE9SVCkgfHwgRU5BQkxFKFdJREdFVF9SRUdJT04pCisjaWYgRU5B
QkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8U3R5bGVEYXNo
Ym9hcmRSZWdpb24+JiBpbml0aWFsRGFzaGJvYXJkUmVnaW9ucygpOwogICAgIHN0YXRpYyBjb25z
dCBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+JiBub25lRGFzaGJvYXJkUmVnaW9ucygpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGVDb25zdGFudHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZUNvbnN0YW50cy5oCmluZGV4IDNjZGZkNTkuLjI1MWY2ODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCkBAIC00
NzMsNiArNDczLDEwIEBAIGVudW0gV3JhcEZsb3cgeyBXcmFwRmxvd0F1dG8sIFdyYXBGbG93Qm90
aCwgV3JhcEZsb3dTdGFydCwgV3JhcEZsb3dFbmQsIFdyYXBGbG93CiAKIGVudW0gV3JhcFRocm91
Z2ggeyBXcmFwVGhyb3VnaFdyYXAsIFdyYXBUaHJvdWdoTm9uZSB9OwogCisjaWYgRU5BQkxFKFdJ
REdFVF9SRUdJT04pCitlbnVtIERyYWdnYWJsZVJlZ2lvbk1vZGUgeyBEcmFnZ2FibGVSZWdpb25O
b25lLCBEcmFnZ2FibGVSZWdpb25EcmFnLCBEcmFnZ2FibGVSZWdpb25Ob0RyYWcgfTsKKyNlbmRp
ZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBSZW5kZXJTdHlsZUNvbnN0
YW50c19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVE
YXNoYm9hcmRSZWdpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZURh
c2hib2FyZFJlZ2lvbi5oCmluZGV4IGU1OTExNTQuLjYyOTkyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZURhc2hib2FyZFJlZ2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZURhc2hib2FyZFJlZ2lvbi5oCkBAIC0y
NCw3ICsyNCw3IEBACiAKICNpZm5kZWYgU3R5bGVEYXNoYm9hcmRSZWdpb25faAogI2RlZmluZSBT
dHlsZURhc2hib2FyZFJlZ2lvbl9oCi0jaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBF
TkFCTEUoV0lER0VUX1JFR0lPTikKKyNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAKICNp
bmNsdWRlICJMZW5ndGhCb3guaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAg
LTU3LDUgKzU3LDUgQEAgc3RydWN0IFN0eWxlRGFzaGJvYXJkUmVnaW9uIHsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBF
TkFCTEUoV0lER0VUX1JFR0lPTikKKyNlbmRpZiAvLyBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQp
CiAjZW5kaWYgLy8gU3R5bGVEYXNoYm9hcmRSZWdpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3Bw
CmluZGV4IGJiZTA3YmYuLjg0ZGM1OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKQEAgLTQy
LDYgKzQyLDkgQEAgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YSgpCiAgICAgLCBtX3BlcnNwZWN0aXZlT3JpZ2luWChSZW5kZXJTdHlsZTo6aW5pdGlh
bFBlcnNwZWN0aXZlT3JpZ2luWCgpKQogICAgICwgbV9wZXJzcGVjdGl2ZU9yaWdpblkoUmVuZGVy
U3R5bGU6OmluaXRpYWxQZXJzcGVjdGl2ZU9yaWdpblkoKSkKICAgICAsIGxpbmVDbGFtcChSZW5k
ZXJTdHlsZTo6aW5pdGlhbExpbmVDbGFtcCgpKQorI2lmIEVOQUJMRShXSURHRVRfUkVHSU9OKQor
ICAgICwgbV9kcmFnZ2FibGVSZWdpb25Nb2RlKERyYWdnYWJsZVJlZ2lvbk5vbmUpCisjZW5kaWYK
ICAgICAsIG1fbWFzayhGaWxsTGF5ZXIoTWFza0ZpbGxMYXllcikpCiAgICAgLCBtX3BhZ2VTaXpl
KCkKICAgICAsIG1fd3JhcFNoYXBlSW5zaWRlKFJlbmRlclN0eWxlOjppbml0aWFsV3JhcFNoYXBl
SW5zaWRlKCkpCkBAIC05Niw2ICs5OSw5IEBAIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkCiAgICAg
LCBtX3BlcnNwZWN0aXZlT3JpZ2luWChvLm1fcGVyc3BlY3RpdmVPcmlnaW5YKQogICAgICwgbV9w
ZXJzcGVjdGl2ZU9yaWdpblkoby5tX3BlcnNwZWN0aXZlT3JpZ2luWSkKICAgICAsIGxpbmVDbGFt
cChvLmxpbmVDbGFtcCkKKyNpZiBFTkFCTEUoV0lER0VUX1JFR0lPTikKKyAgICAsIG1fZHJhZ2dh
YmxlUmVnaW9uTW9kZShvLm1fZHJhZ2dhYmxlUmVnaW9uTW9kZSkKKyNlbmRpZgogICAgICwgbV9k
ZXByZWNhdGVkRmxleGlibGVCb3goby5tX2RlcHJlY2F0ZWRGbGV4aWJsZUJveCkKICAgICAsIG1f
ZmxleGlibGVCb3goby5tX2ZsZXhpYmxlQm94KQogICAgICwgbV9tYXJxdWVlKG8ubV9tYXJxdWVl
KQpAQCAtMTc1LDkgKzE4MSwxMiBAQCBib29sIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6Om9w
ZXJhdG9yPT0oY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYgbykgYwogICAgICAgICAm
JiBtX3BlcnNwZWN0aXZlT3JpZ2luWCA9PSBvLm1fcGVyc3BlY3RpdmVPcmlnaW5YCiAgICAgICAg
ICYmIG1fcGVyc3BlY3RpdmVPcmlnaW5ZID09IG8ubV9wZXJzcGVjdGl2ZU9yaWdpblkKICAgICAg
ICAgJiYgbGluZUNsYW1wID09IG8ubGluZUNsYW1wCi0jaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQ
T1JUKSB8fCBFTkFCTEUoV0lER0VUX1JFR0lPTikKKyNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBP
UlQpCiAgICAgICAgICYmIG1fZGFzaGJvYXJkUmVnaW9ucyA9PSBvLm1fZGFzaGJvYXJkUmVnaW9u
cwogI2VuZGlmCisjaWYgRU5BQkxFKFdJREdFVF9SRUdJT04pCisgICAgICAgICYmIG1fZHJhZ2dh
YmxlUmVnaW9uTW9kZSA9PSBvLm1fZHJhZ2dhYmxlUmVnaW9uTW9kZQorI2VuZGlmCiAgICAgICAg
ICYmIG1fZGVwcmVjYXRlZEZsZXhpYmxlQm94ID09IG8ubV9kZXByZWNhdGVkRmxleGlibGVCb3gK
ICAgICAgICAgJiYgbV9mbGV4aWJsZUJveCA9PSBvLm1fZmxleGlibGVCb3gKICAgICAgICAgJiYg
bV9tYXJxdWVlID09IG8ubV9tYXJxdWVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAppbmRleCA0MWI4NDA3
Li45MjdmNmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKQEAgLTU3LDcgKzU3LDcgQEAgY2xhc3Mg
U3R5bGVUcmFuc2Zvcm1EYXRhOwogY2xhc3MgQ29udGVudERhdGE7CiBzdHJ1Y3QgTGVuZ3RoU2l6
ZTsKIAotI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkgfHwgRU5BQkxFKFdJREdFVF9SRUdJ
T04pCisjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogc3RydWN0IFN0eWxlRGFzaGJvYXJk
UmVnaW9uOwogI2VuZGlmCiAKQEAgLTEwMiw5ICsxMDIsMTIgQEAgcHVibGljOgogICAgIExlbmd0
aCBtX3BlcnNwZWN0aXZlT3JpZ2luWTsKIAogICAgIExpbmVDbGFtcFZhbHVlIGxpbmVDbGFtcDsg
Ly8gQW4gQXBwbGUgZXh0ZW5zaW9uLgotI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkgfHwg
RU5BQkxFKFdJREdFVF9SRUdJT04pCisjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAg
IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4gbV9kYXNoYm9hcmRSZWdpb25zOwogI2VuZGlm
CisjaWYgRU5BQkxFKFdJREdFVF9SRUdJT04pCisgICAgRHJhZ2dhYmxlUmVnaW9uTW9kZSBtX2Ry
YWdnYWJsZVJlZ2lvbk1vZGU7CisjZW5kaWYKIAogICAgIERhdGFSZWY8U3R5bGVEZXByZWNhdGVk
RmxleGlibGVCb3hEYXRhPiBtX2RlcHJlY2F0ZWRGbGV4aWJsZUJveDsgLy8gRmxleGlibGUgYm94
IHByb3BlcnRpZXMKICAgICBEYXRhUmVmPFN0eWxlRmxleGlibGVCb3hEYXRhPiBtX2ZsZXhpYmxl
Qm94OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA5MWE4MTk5Li5mYTVhZWYxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wOS0xOSAgSmlh
biBMaSAgPGppYW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVXBkYXRlIHRoZSBDU1MgcHJv
cGVydHkgdXNlZCB0byBzdXBwb3J0IGRyYWdnYWJsZSByZWdpb25zLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcxNTYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaHJvbWl1bSBjaGFuZ2UgdG8gdXNlIHRo
ZSBuZXcgbWV0aG9kIGluIENocm9tZUNsaWVudC4KKworICAgICAgICAqIHB1YmxpYy9XZWJEcmFn
Z2FibGVSZWdpb24uaDoKKyAgICAgICAgKFdlYkRyYWdnYWJsZVJlZ2lvbik6CisgICAgICAgICog
c3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJ
bXBsOjpkcmFnZ2FibGVSZWdpb25zQ2hhbmdlZCk6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVu
dEltcGwuaDoKKyAgICAgICAgKENocm9tZUNsaWVudEltcGwpOgorICAgICAgICAqIHNyYy9XZWJE
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRvY3VtZW50OjpkcmFnZ2FibGVSZWdp
b25zKToKKwogMjAxMi0wOS0xOSAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIEluZGV4ZWREQjogUmVtb3ZlICJjdXJyZW50IHRyYW5zYWN0aW9uIiBjb25jZXB0
IGZyb20gYmFja2luZyBzdG9yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRHJhZ2dhYmxlUmVnaW9uLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJEcmFnZ2FibGVSZWdpb24uaAppbmRleCAwNDM3Zjg5Li5lM2Q4MTQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEcmFnZ2FibGVSZWdpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEcmFnZ2FibGVSZWdpb24uaApAQCAt
MzgsOCArMzgsMTEgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgV2ViRHJhZ2dhYmxl
UmVnaW9uIHsKLSAgICBXZWJTdHJpbmcgbGFiZWw7CisgICAgYm9vbCBkcmFnZ2FibGU7CiAgICAg
V2ViUmVjdCBib3VuZHM7CisKKyAgICAvLyBGSVhNRTogdG8gYmUgcmVtb3ZlZCBhZnRlciBjaHJv
bWl1bSBjaGFuZ2UgaXMgZG9uZS4KKyAgICBXZWJTdHJpbmcgbGFiZWw7CiAgICAgV2ViUmVjdCBj
bGlwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21l
Q2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJ
bXBsLmNwcAppbmRleCA5ODU3NTc3Li41NjYwMjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcApAQCAtMTEyMSw3ICsxMTIxLDcgQEAgYm9v
bCBDaHJvbWVDbGllbnRJbXBsOjppc1BvaW50ZXJMb2NrZWQoKQogI2VuZGlmCiAKICNpZiBFTkFC
TEUoV0lER0VUX1JFR0lPTikKLXZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6ZGFzaGJvYXJkUmVnaW9u
c0NoYW5nZWQoKQordm9pZCBDaHJvbWVDbGllbnRJbXBsOjpkcmFnZ2FibGVSZWdpb25zQ2hhbmdl
ZCgpCiB7CiAgICAgV2ViVmlld0NsaWVudCogY2xpZW50ID0gbV93ZWJWaWV3LT5jbGllbnQoKTsK
ICAgICBpZiAoY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
Q2hyb21lQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xp
ZW50SW1wbC5oCmluZGV4IDdkNDU2ZmIuLjY5NTMxZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKQEAgLTEzOSw3ICsxMzksNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFjZU5l
ZWRlZCk7CiAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVv
dGEoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90IHRvdGFsU3BhY2VOZWVkZWQpOwog
I2lmIEVOQUJMRShXSURHRVRfUkVHSU9OKQotICAgIHZpcnR1YWwgdm9pZCBkYXNoYm9hcmRSZWdp
b25zQ2hhbmdlZCgpOworICAgIHZpcnR1YWwgdm9pZCBkcmFnZ2FibGVSZWdpb25zQ2hhbmdlZCgp
OwogI2VuZGlmCiAgICAgdmlydHVhbCBib29sIHBhaW50Q3VzdG9tT3ZlcmhhbmdBcmVhKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwogI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRG9jdW1lbnQuY3Bw
CmluZGV4IDY5MTcwMTcuLjQ3OTk5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkRvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJEb2N1bWVudC5jcHAKQEAgLTI1NywxNCArMjU3LDEzIEBAIFdlYlZlY3RvcjxXZWJEcmFnZ2Fi
bGVSZWdpb24+IFdlYkRvY3VtZW50OjpkcmFnZ2FibGVSZWdpb25zKCkgY29uc3QKICAgICBXZWJW
ZWN0b3I8V2ViRHJhZ2dhYmxlUmVnaW9uPiBkcmFnZ2FibGVSZWdpb25zOwogI2lmIEVOQUJMRShX
SURHRVRfUkVHSU9OKQogICAgIGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnN0VW53cmFw
PERvY3VtZW50PigpOwotICAgIGlmIChkb2N1bWVudC0+aGFzRGFzaGJvYXJkUmVnaW9ucygpKSB7
Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxEYXNoYm9hcmRSZWdpb25WYWx1ZT4mIHJlZ2lvbnMgPSBk
b2N1bWVudC0+ZGFzaGJvYXJkUmVnaW9ucygpOworICAgIGlmIChkb2N1bWVudC0+aGFzRHJhZ2dh
YmxlUmVnaW9ucygpKSB7CisgICAgICAgIGNvbnN0IFZlY3RvcjxEcmFnZ2FibGVSZWdpb25WYWx1
ZT4mIHJlZ2lvbnMgPSBkb2N1bWVudC0+ZHJhZ2dhYmxlUmVnaW9ucygpOwogICAgICAgICBkcmFn
Z2FibGVSZWdpb25zID0gV2ViVmVjdG9yPFdlYkRyYWdnYWJsZVJlZ2lvbj4ocmVnaW9ucy5zaXpl
KCkpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlZ2lvbnMuc2l6ZSgpOyBpKysp
IHsKLSAgICAgICAgICAgIGNvbnN0IERhc2hib2FyZFJlZ2lvblZhbHVlJiB2YWx1ZSA9IHJlZ2lv
bnNbaV07Ci0gICAgICAgICAgICBkcmFnZ2FibGVSZWdpb25zW2ldLmxhYmVsID0gdmFsdWUubGFi
ZWw7CisgICAgICAgICAgICBjb25zdCBEcmFnZ2FibGVSZWdpb25WYWx1ZSYgdmFsdWUgPSByZWdp
b25zW2ldOworICAgICAgICAgICAgZHJhZ2dhYmxlUmVnaW9uc1tpXS5kcmFnZ2FibGUgPSB2YWx1
ZS5kcmFnZ2FibGU7CiAgICAgICAgICAgICBkcmFnZ2FibGVSZWdpb25zW2ldLmJvdW5kcyA9IFdl
YkNvcmU6OkludFJlY3QodmFsdWUuYm91bmRzKTsKLSAgICAgICAgICAgIGRyYWdnYWJsZVJlZ2lv
bnNbaV0uY2xpcCA9IFdlYkNvcmU6OkludFJlY3QodmFsdWUuY2xpcCk7CiAgICAgICAgIH0KICAg
ICB9CiAjZW5kaWYK
</data>
<flag name="review"
          id="176711"
          type_id="1"
          status="-"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="176712"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165875</attachid>
            <date>2012-09-26 14:15:40 -0700</date>
            <delta_ts>2012-09-27 09:33:26 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>97156_2.diff</filename>
            <type>text/plain</type>
            <size>79326</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3NTNhZTA5Li45ZjMwMDY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMDkt
MjYgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVwZGF0ZSB0aGUg
Q1NTIHByb3BlcnR5IHVzZWQgdG8gc3VwcG9ydCBkcmFnZ2FibGUgcmVnaW9ucy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MTU2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRoZSB0ZXN0IGFu
ZCByZW5hbWUgdGhlIGZpbGVzIGR1ZSB0byBDU1MgcHJvcGVydHkgbmFtZSBhbmQKKyAgICAgICAg
c3ludGF4IGNoYW5nZXMuCisKKyAgICAgICAgKiBmYXN0L2Nzcy9kcmFnZ2FibGUtcmVnaW9uLXBh
cnNlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2RyYWdnYWJsZS1y
ZWdpb24tcGFyc2VyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3dpZGdldC1yZWdp
b24tcGFyc2VyLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy93aWRn
ZXQtcmVnaW9uLXBhcnNlci5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9T
a2lwcGVkOiBSZW5hbWUgdGhlIHNraXBwZWQgdGVzdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsv
VGVzdEV4cGVjdGF0aW9uczogUmVuYW1lIHRoZSBza2lwcGVkIHRlc3QuCisgICAgICAgICogcGxh
dGZvcm0vbWFjL1NraXBwZWQ6IFNraXAgdGhlIHJlbmFtZWQgdGVzdCBzaW5jZSBXSURHRVRfUkVH
SU9OIGlzIG9mZi4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOiBSZW5hbWUgdGhlIHNr
aXBwZWQgdGVzdC4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDogUmVuYW1lIHRoZSBz
a2lwcGVkIHRlc3QuCisgICAgICAgICogcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZDogUmVuYW1l
IHRoZSBza2lwcGVkIHRlc3QuCisKIDIwMTItMDktMjUgIEJlbmphbWluIFBvdWxhaW4gIDxicG91
bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIG1pc3Npbmcgc3VwcG9ydCBmb3IgR2VvbG9j
YXRpb24gdGVzdHMgb24gV2ViS2l0MgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
ZHJhZ2dhYmxlLXJlZ2lvbi1wYXJzZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3MvZHJhZ2dhYmxlLXJlZ2lvbi1wYXJzZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjVmMWFjYjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy9kcmFnZ2FibGUtcmVnaW9uLXBhcnNlci1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwzNyBAQAorVGhpcyB0ZXN0cyB0aGUgcGFyc2VyIGFuZCBzZXJpYWxpemVyIGZvciBkcmFnZ2Fi
bGUgcmVnaW9uIHZhbHVlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworUEFT
UyBwYXJzZURyYWdnYWJsZVJlZ2lvbignZHJhZycpIGlzICdkcmFnJworUEFTUyBwYXJzZURyYWdn
YWJsZVJlZ2lvbignbm8tZHJhZycpIGlzICduby1kcmFnJworCitUZXN0cyBmb3IgdmFyaWF0aW9u
cyBpbiB3aGl0ZXNwYWNlIHRoYXQgYXJlIGFsbG93ZWQuCisKK1BBU1MgcGFyc2VEcmFnZ2FibGVS
ZWdpb24oJyAgZHJhZyAgJykgaXMgJ2RyYWcnCitQQVNTIHBhcnNlRHJhZ2dhYmxlUmVnaW9uKCcg
IG5vLWRyYWcgICAgJykgaXMgJ25vLWRyYWcnCisKK1Rlc3RzIGZvciBjYXNlIGluc2Vuc2l0aXZp
dHkuCisKK1BBU1MgcGFyc2VEcmFnZ2FibGVSZWdpb24oJ0RyYWcnKSBpcyAnZHJhZycKK1BBU1Mg
cGFyc2VEcmFnZ2FibGVSZWdpb24oJ0RyQUcnKSBpcyAnZHJhZycKK1BBU1MgcGFyc2VEcmFnZ2Fi
bGVSZWdpb24oJ05PLURyQUcnKSBpcyAnbm8tZHJhZycKK1BBU1MgcGFyc2VEcmFnZ2FibGVSZWdp
b24oJ05PLURSQUcnKSBpcyAnbm8tZHJhZycKKworU29tZSBleHBlY3RlZCBmYWlsdXJlcy4KKwor
UEFTUyBwYXJzZURyYWdnYWJsZVJlZ2lvbignJykgaXMgbnVsbAorUEFTUyBwYXJzZURyYWdnYWJs
ZVJlZ2lvbignICcpIGlzIG51bGwKK1BBU1MgcGFyc2VEcmFnZ2FibGVSZWdpb24oJ3gnKSBpcyBu
dWxsCitQQVNTIHBhcnNlRHJhZ2dhYmxlUmVnaW9uKCd4LScpIGlzIG51bGwKK1BBU1MgcGFyc2VE
cmFnZ2FibGVSZWdpb24oJ3goKScpIGlzIG51bGwKK1BBU1MgcGFyc2VEcmFnZ2FibGVSZWdpb24o
J3goYSknKSBpcyBudWxsCitQQVNTIHBhcnNlRHJhZ2dhYmxlUmVnaW9uKCdub25lIHgnKSBpcyBu
dWxsCitQQVNTIHBhcnNlRHJhZ2dhYmxlUmVnaW9uKCdub25lIHgoKScpIGlzIG51bGwKK1BBU1Mg
cGFyc2VEcmFnZ2FibGVSZWdpb24oJ25vbmUgeChhKScpIGlzIG51bGwKKworUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY3NzL2RyYWdnYWJsZS1yZWdpb24tcGFyc2VyLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy9kcmFnZ2FibGUtcmVnaW9uLXBhcnNlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjYxNzU2N2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy9kcmFnZ2FibGUtcmVnaW9uLXBhcnNlci5odG1sCkBAIC0wLDAgKzEsNjggQEAK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRp
b24oIlRoaXMgdGVzdHMgdGhlIHBhcnNlciBhbmQgc2VyaWFsaXplciBmb3IgZHJhZ2dhYmxlIHJl
Z2lvbiB2YWx1ZXMuIik7CisKK3ZhciBzdHlsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdk
ZXNjcmlwdGlvbicpLnN0eWxlOworCitmdW5jdGlvbiBwYXJzZURyYWdnYWJsZVJlZ2lvbihzdHJp
bmcpCit7CisgICAgdHJ5IHsKKyAgICAgICAgc3R5bGUucmVtb3ZlUHJvcGVydHkoIi13ZWJraXQt
YXBwLXJlZ2lvbiIpOworICAgICAgICBzdHlsZS5zZXRQcm9wZXJ0eSgiLXdlYmtpdC1hcHAtcmVn
aW9uIiwgc3RyaW5nLCAiIik7CisgICAgICAgIHZhciByZXN1bHQgPSBzdHlsZS5nZXRQcm9wZXJ0
eVZhbHVlKCItd2Via2l0LWFwcC1yZWdpb24iKTsKKyAgICAgICAgc3R5bGUucmVtb3ZlUHJvcGVy
dHkoIi13ZWJraXQtYXBwLXJlZ2lvbiIpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0g
Y2F0Y2ggKGUpIHsKKyAgICAgICAgcmV0dXJuICIiICsgZTsKKyAgICB9Cit9CisKK2RlYnVnKCcn
KTsKKworc2hvdWxkQmUoInBhcnNlRHJhZ2dhYmxlUmVnaW9uKCdkcmFnJykiLCAiJ2RyYWcnIik7
CitzaG91bGRCZSgicGFyc2VEcmFnZ2FibGVSZWdpb24oJ25vLWRyYWcnKSIsICInbm8tZHJhZyci
KTsKKworZGVidWcoJycpOworZGVidWcoJ1Rlc3RzIGZvciB2YXJpYXRpb25zIGluIHdoaXRlc3Bh
Y2UgdGhhdCBhcmUgYWxsb3dlZC4nKTsKK2RlYnVnKCcnKTsKKworc2hvdWxkQmUoInBhcnNlRHJh
Z2dhYmxlUmVnaW9uKCcgIGRyYWcgICcpIiwgIidkcmFnJyIpOworc2hvdWxkQmUoInBhcnNlRHJh
Z2dhYmxlUmVnaW9uKCcgIG5vLWRyYWcgICAgJykiLCAiJ25vLWRyYWcnIik7CisKK2RlYnVnKCcn
KTsKK2RlYnVnKCdUZXN0cyBmb3IgY2FzZSBpbnNlbnNpdGl2aXR5LicpOworZGVidWcoJycpOwor
CitzaG91bGRCZSgicGFyc2VEcmFnZ2FibGVSZWdpb24oJ0RyYWcnKSIsICInZHJhZyciKTsKK3No
b3VsZEJlKCJwYXJzZURyYWdnYWJsZVJlZ2lvbignRHJBRycpIiwgIidkcmFnJyIpOworc2hvdWxk
QmUoInBhcnNlRHJhZ2dhYmxlUmVnaW9uKCdOTy1EckFHJykiLCAiJ25vLWRyYWcnIik7CitzaG91
bGRCZSgicGFyc2VEcmFnZ2FibGVSZWdpb24oJ05PLURSQUcnKSIsICInbm8tZHJhZyciKTsKKwor
ZGVidWcoJycpOworZGVidWcoJ1NvbWUgZXhwZWN0ZWQgZmFpbHVyZXMuJyk7CitkZWJ1ZygnJyk7
CisKK3Nob3VsZEJlKCJwYXJzZURyYWdnYWJsZVJlZ2lvbignJykiLCAibnVsbCIpOworc2hvdWxk
QmUoInBhcnNlRHJhZ2dhYmxlUmVnaW9uKCcgJykiLCAibnVsbCIpOworc2hvdWxkQmUoInBhcnNl
RHJhZ2dhYmxlUmVnaW9uKCd4JykiLCAibnVsbCIpOworc2hvdWxkQmUoInBhcnNlRHJhZ2dhYmxl
UmVnaW9uKCd4LScpIiwgIm51bGwiKTsKK3Nob3VsZEJlKCJwYXJzZURyYWdnYWJsZVJlZ2lvbign
eCgpJykiLCAibnVsbCIpOworc2hvdWxkQmUoInBhcnNlRHJhZ2dhYmxlUmVnaW9uKCd4KGEpJyki
LCAibnVsbCIpOworc2hvdWxkQmUoInBhcnNlRHJhZ2dhYmxlUmVnaW9uKCdub25lIHgnKSIsICJu
dWxsIik7CitzaG91bGRCZSgicGFyc2VEcmFnZ2FibGVSZWdpb24oJ25vbmUgeCgpJykiLCAibnVs
bCIpOworc2hvdWxkQmUoInBhcnNlRHJhZ2dhYmxlUmVnaW9uKCdub25lIHgoYSknKSIsICJudWxs
Iik7CisKK2RlYnVnKCcnKTsKKworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvd2lkZ2V0LXJlZ2lvbi1wYXJzZXIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvd2lkZ2V0LXJlZ2lvbi1wYXJzZXIt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjZjMTk1Li4wMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3dpZGdldC1yZWdpb24tcGFyc2VyLWV4cGVj
dGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLVRoaXMgdGVzdHMgdGhlIHBh
cnNlciBhbmQgc2VyaWFsaXplciBmb3Igd2lkZ2V0IHJlZ2lvbiB2YWx1ZXMuCi0KLU9uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIHBhcnNlV2lkZ2V0UmVnaW9uKCdub25lJykgaXMg
J25vbmUnCi0KLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCBjaXJjbGUpJykg
aXMgJ3JlZ2lvbihsYWJlbCBjaXJjbGUpJwotUEFTUyBwYXJzZVdpZGdldFJlZ2lvbigncmVnaW9u
KGxhYmVsIGNpcmNsZSAxcHggMnB4IDNweCA0cHgpJykgaXMgJ3JlZ2lvbihsYWJlbCBjaXJjbGUg
MXB4IDJweCAzcHggNHB4KScKLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCBj
aXJjbGUgMHB4IDBweCAwcHggMHB4KScpIGlzICdyZWdpb24obGFiZWwgY2lyY2xlIDBweCAwcHgg
MHB4IDBweCknCi1QQVNTIHBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwgY2lyY2xlIGF1
dG8gYXV0byBhdXRvIGF1dG8pJykgaXMgJ3JlZ2lvbihsYWJlbCBjaXJjbGUgYXV0byBhdXRvIGF1
dG8gYXV0byknCi1QQVNTIHBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwgY2lyY2xlIDFw
eCAycHggM3B4IDRweCknKSBpcyAncmVnaW9uKGxhYmVsIGNpcmNsZSAxcHggMnB4IDNweCA0cHgp
JwotCi1QQVNTIHBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwgcmVjdGFuZ2xlKScpIGlz
ICdyZWdpb24obGFiZWwgcmVjdGFuZ2xlKScKLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lv
bihsYWJlbCByZWN0YW5nbGUgMXB4IDJweCAzcHggNHB4KScpIGlzICdyZWdpb24obGFiZWwgcmVj
dGFuZ2xlIDFweCAycHggM3B4IDRweCknCi0KLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lv
bihsYWJlbCBjaXJjbGUpIHJlZ2lvbihsYWJlbCBjaXJjbGUpJykgaXMgJ3JlZ2lvbihsYWJlbCBj
aXJjbGUpIHJlZ2lvbihsYWJlbCBjaXJjbGUpJwotUEFTUyBwYXJzZVdpZGdldFJlZ2lvbigncmVn
aW9uKGxhYmVsIGNpcmNsZSkgcmVnaW9uKGxhYmVsIHJlY3RhbmdsZSknKSBpcyAncmVnaW9uKGxh
YmVsIGNpcmNsZSkgcmVnaW9uKGxhYmVsIHJlY3RhbmdsZSknCi1QQVNTIHBhcnNlV2lkZ2V0UmVn
aW9uKCdyZWdpb24obGFiZWwgY2lyY2xlIDFweCAycHggM3B4IDRweCkgcmVnaW9uKGxhYmVsIHJl
Y3RhbmdsZSA1cHggNnB4IDdweCA4cHgpJykgaXMgJ3JlZ2lvbihsYWJlbCBjaXJjbGUgMXB4IDJw
eCAzcHggNHB4KSByZWdpb24obGFiZWwgcmVjdGFuZ2xlIDVweCA2cHggN3B4IDhweCknCi1QQVNT
IHBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwgcmVjdGFuZ2xlIDFweCAycHggM3B4IDRw
eCkgcmVnaW9uKGxhYmVsIGNpcmNsZSA1cHggNnB4IDdweCA4cHgpJykgaXMgJ3JlZ2lvbihsYWJl
bCByZWN0YW5nbGUgMXB4IDJweCAzcHggNHB4KSByZWdpb24obGFiZWwgY2lyY2xlIDVweCA2cHgg
N3B4IDhweCknCi0KLVRlc3RzIHRvIGRlbW9uc3RyYXRlIHRoYXQgY29tbWFzIGFyZSBhbGxvd2Vk
LgotCi1QQVNTIHBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwsIGNpcmNsZSknKSBpcyAn
cmVnaW9uKGxhYmVsIGNpcmNsZSknCi1QQVNTIHBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFi
ZWwsIGNpcmNsZSwgMXB4LCAycHgsIDNweCwgNHB4KScpIGlzICdyZWdpb24obGFiZWwgY2lyY2xl
IDFweCAycHggM3B4IDRweCknCi0KLVRlc3RzIGZvciB2YXJpYXRpb25zIGluIHdoaXRlc3BhY2Ug
dGhhdCBhcmUgYWxsb3dlZC4KLQotUEFTUyBwYXJzZVdpZGdldFJlZ2lvbignICByZWdpb24oICBs
YWJlbCAgY2lyY2xlICApICAnKSBpcyAncmVnaW9uKGxhYmVsIGNpcmNsZSknCi1QQVNTIHBhcnNl
V2lkZ2V0UmVnaW9uKCcgIHJlZ2lvbiggIGxhYmVsICAgY2lyY2xlICAxcHggIDJweCAgM3B4ICA0
cHggICkgIHJlZ2lvbihsYWJlbCAgcmVjdGFuZ2xlICA1cHggIDZweCAgN3B4ICA4cHggICkgICcp
IGlzICdyZWdpb24obGFiZWwgY2lyY2xlIDFweCAycHggM3B4IDRweCkgcmVnaW9uKGxhYmVsIHJl
Y3RhbmdsZSA1cHggNnB4IDdweCA4cHgpJwotUEFTUyBwYXJzZVdpZGdldFJlZ2lvbigncmVnaW9u
KGxhYmVsIGNpcmNsZSAxcHggMnB4IDNweCA0cHgpcmVnaW9uKGxhYmVsIHJlY3RhbmdsZSA1cHgg
NnB4IDdweCA4cHgpJykgaXMgJ3JlZ2lvbihsYWJlbCBjaXJjbGUgMXB4IDJweCAzcHggNHB4KSBy
ZWdpb24obGFiZWwgcmVjdGFuZ2xlIDVweCA2cHggN3B4IDhweCknCi0KLVRlc3RzIGZvciBjYXNl
IGluc2Vuc2l0aXZpdHkuCi0KLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCBD
aXJjbGUpJykgaXMgJ3JlZ2lvbihsYWJlbCBjaXJjbGUpJwotUEFTUyBwYXJzZVdpZGdldFJlZ2lv
bigncmVnaW9uKExBQkVMIENJUkNMRSknKSBpcyAncmVnaW9uKExBQkVMIGNpcmNsZSknCi1QQVNT
IHBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24oTGFCZUwgQ2lSY0xlKScpIGlzICdyZWdpb24oTGFC
ZUwgY2lyY2xlKScKLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsQWJFbCBjSXJDbEUp
JykgaXMgJ3JlZ2lvbihsQWJFbCBjaXJjbGUpJwotUEFTUyBwYXJzZVdpZGdldFJlZ2lvbigncmVn
aW9uKGxhYmVsIFJlY3RhbmdsZSknKSBpcyAncmVnaW9uKGxhYmVsIHJlY3RhbmdsZSknCi1QQVNT
IHBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24oTEFCRUwgUkVDVEFOR0xFKScpIGlzICdyZWdpb24o
TEFCRUwgcmVjdGFuZ2xlKScKLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihMYUJlTCBS
ZUN0QW5HbEUpJykgaXMgJ3JlZ2lvbihMYUJlTCByZWN0YW5nbGUpJwotUEFTUyBwYXJzZVdpZGdl
dFJlZ2lvbigncmVnaW9uKGxBYkVsIHJFY1RhTmdMZSknKSBpcyAncmVnaW9uKGxBYkVsIHJlY3Rh
bmdsZSknCi0KLVNvbWUgZXhwZWN0ZWQgZmFpbHVyZXMuCi0KLVBBU1MgcGFyc2VXaWRnZXRSZWdp
b24oJycpIGlzIG51bGwKLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24oJyAnKSBpcyBudWxsCi1QQVNT
IHBhcnNlV2lkZ2V0UmVnaW9uKCd4JykgaXMgbnVsbAotUEFTUyBwYXJzZVdpZGdldFJlZ2lvbign
ZGFzaGJvYXJkLScpIGlzIG51bGwKLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbicpIGlz
IG51bGwKLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbignKSBpcyBudWxsCi1QQVNTIHBh
cnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwnKSBpcyBudWxsCi1QQVNTIHBhcnNlV2lkZ2V0
UmVnaW9uKCdyZWdpb24obGFiZWwgJykgaXMgbnVsbAotUEFTUyBwYXJzZVdpZGdldFJlZ2lvbign
cmVnaW9uKGxhYmVsIGMnKSBpcyBudWxsCi1QQVNTIHBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24o
bGFiZWwgY2lyY2xlJykgaXMgbnVsbAotUEFTUyBwYXJzZVdpZGdldFJlZ2lvbigncmVnaW9uKGxh
YmVsKScpIGlzIG51bGwKLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbiAobGFiZWwgY2ly
Y2xlKScpIGlzIG51bGwKLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCwsIGNp
cmNsZSknKSBpcyBudWxsCi1QQVNTIHBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwgY2ly
Y2xlIDFweDJweCAzcHggNHB4KScpIGlzIG51bGwKLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24oJ3Jl
Z2lvbihsYWJlbCwsIGNpcmNsZSwgMXB4LCAycHgsIDNweCwgNHB4KScpIGlzIG51bGwKLVBBU1Mg
cGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCwgY2lyY2xlIDFweCAycHggM3B4IDRweCkn
KSBpcyBudWxsCi1QQVNTIHBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwsIGNpcmNsZSwg
MXB4IDJweCAzcHggNHB4KScpIGlzIG51bGwKLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lv
bihsYWJlbCwgY2lyY2xlLCAxcHgsIDJweCAzcHggNHB4KScpIGlzIG51bGwKLVBBU1MgcGFyc2VX
aWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCwgY2lyY2xlLCAxcHgsIDJweCwgM3B4IDRweCknKSBp
cyBudWxsCi1QQVNTIHBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwgY2lyY2xlLCAxcHgs
IDJweCwgM3B4LCA0cHgpJykgaXMgbnVsbAotUEFTUyBwYXJzZVdpZGdldFJlZ2lvbigncmVnaW9u
KGxhYmVsIGNpcmNsZSAxcHgsIDJweCwgM3B4LCA0cHgpJykgaXMgbnVsbAotUEFTUyBwYXJzZVdp
ZGdldFJlZ2lvbigncmVnaW9uKGxhYmVsIGNpcmNsZSB4KScpIGlzIG51bGwKLVBBU1MgcGFyc2VX
aWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCBjaXJjbGUgeCB4KScpIGlzIG51bGwKLVBBU1MgcGFy
c2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCBjaXJjbGUgeCB4IHgpJykgaXMgbnVsbAotUEFT
UyBwYXJzZVdpZGdldFJlZ2lvbigncmVnaW9uKGxhYmVsIGNpcmNsZSB4IHggeCB4KScpIGlzIG51
bGwKLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCBjaXJjbGUgeCB4IHggeCB4
KScpIGlzIG51bGwKLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCBjaXJjbGUg
MXB4IDJweCAzcHggNHB4IHgpJykgaXMgbnVsbAotUEFTUyBwYXJzZVdpZGdldFJlZ2lvbigncmVn
aW9uKGxhYmVsIGNpcmNsZSAxcHggMnB4IDNweCA0cHggeCB4KScpIGlzIG51bGwKLVBBU1MgcGFy
c2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCBjaXJjbGUgMXB4IDJweCAzcHggNHB4IHggeCB4
KScpIGlzIG51bGwKLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCBjaXJjbGUg
MXB4IDJweCAzcHggNHB4IHggeCB4IHgpJykgaXMgbnVsbAotUEFTUyBwYXJzZVdpZGdldFJlZ2lv
bigncmVnaW9uKGxhYmVsIGNpcmNsZSAxcHggMnB4IDNweCA0cHggeCB4IHggeCB4KScpIGlzIG51
bGwKLVBBU1MgcGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCBjaXJjbGUgMXB4IDJweCAz
cHggNHB4IGNpcmNsZSA1cHggNnB4IDdweCA4cHgpJykgaXMgbnVsbAotUEFTUyBwYXJzZVdpZGdl
dFJlZ2lvbigncmVnaW9uKGxhYmVsLCBjaXJjbGUsIDFweCwgMnB4LCAzcHgsIDRweCwgY2lyY2xl
LCA1cHgsIDZweCwgN3B4LCA4cHgpJykgaXMgbnVsbAotUEFTUyBwYXJzZVdpZGdldFJlZ2lvbign
bm9uZSB4JykgaXMgbnVsbAotUEFTUyBwYXJzZVdpZGdldFJlZ2lvbignbm9uZSB4IHgnKSBpcyBu
dWxsCi1QQVNTIHBhcnNlV2lkZ2V0UmVnaW9uKCdub25lIHggeCB4JykgaXMgbnVsbAotUEFTUyBw
YXJzZVdpZGdldFJlZ2lvbignbm9uZSB4IHggeCB4JykgaXMgbnVsbAotUEFTUyBwYXJzZVdpZGdl
dFJlZ2lvbignbm9uZSByZWdpb24obGFiZWwsIGNpcmNsZSknKSBpcyBudWxsCi1QQVNTIHBhcnNl
V2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwsIGNpcmNsZSkgbm9uZScpIGlzIG51bGwKLVBBU1Mg
cGFyc2VXaWRnZXRSZWdpb24oJ2F0dHIoYSknKSBpcyBudWxsCi0KLVBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy93aWRnZXQtcmVnaW9uLXBhcnNlci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3Mvd2lkZ2V0LXJlZ2lvbi1wYXJzZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggN2Y5OGViNi4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy93aWRnZXQtcmVn
aW9uLXBhcnNlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLTxodG1sPgot
PGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
LTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRoaXMg
dGVzdHMgdGhlIHBhcnNlciBhbmQgc2VyaWFsaXplciBmb3Igd2lkZ2V0IHJlZ2lvbiB2YWx1ZXMu
Iik7Ci0KLXZhciBzdHlsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkZXNjcmlwdGlvbicp
LnN0eWxlOwotCi1mdW5jdGlvbiBwYXJzZVdpZGdldFJlZ2lvbihzdHJpbmcpCi17Ci0gICAgdHJ5
IHsKLSAgICAgICAgc3R5bGUucmVtb3ZlUHJvcGVydHkoIi13ZWJraXQtd2lkZ2V0LXJlZ2lvbiIp
OwotICAgICAgICBzdHlsZS5zZXRQcm9wZXJ0eSgiLXdlYmtpdC13aWRnZXQtcmVnaW9uIiwgc3Ry
aW5nLCAiIik7Ci0gICAgICAgIHZhciByZXN1bHQgPSBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCIt
d2Via2l0LXdpZGdldC1yZWdpb24iKTsKLSAgICAgICAgc3R5bGUucmVtb3ZlUHJvcGVydHkoIi13
ZWJraXQtd2lkZ2V0LXJlZ2lvbiIpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0gY2F0
Y2ggKGUpIHsKLSAgICAgICAgcmV0dXJuICIiICsgZTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRl
c3RDYW5vbmljYWxXaWRnZXRSZWdpb24oc3RyaW5nKQotewotICAgIHNob3VsZEJlKCJwYXJzZVdp
ZGdldFJlZ2lvbignIiArIHN0cmluZyArICInKSIsICInIiArIHN0cmluZyArICInIik7Ci19Ci0K
LXRlc3RDYW5vbmljYWxXaWRnZXRSZWdpb24oJ25vbmUnKTsKLQotZGVidWcoJycpOwotCi10ZXN0
Q2Fub25pY2FsV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwgY2lyY2xlKScpOwotdGVzdENhbm9u
aWNhbFdpZGdldFJlZ2lvbigncmVnaW9uKGxhYmVsIGNpcmNsZSAxcHggMnB4IDNweCA0cHgpJyk7
Ci10ZXN0Q2Fub25pY2FsV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwgY2lyY2xlIDBweCAwcHgg
MHB4IDBweCknKTsKLXRlc3RDYW5vbmljYWxXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCBjaXJj
bGUgYXV0byBhdXRvIGF1dG8gYXV0byknKTsKLXRlc3RDYW5vbmljYWxXaWRnZXRSZWdpb24oJ3Jl
Z2lvbihsYWJlbCBjaXJjbGUgMXB4IDJweCAzcHggNHB4KScpOwotCi1kZWJ1ZygnJyk7Ci0KLXRl
c3RDYW5vbmljYWxXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCByZWN0YW5nbGUpJyk7Ci10ZXN0
Q2Fub25pY2FsV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwgcmVjdGFuZ2xlIDFweCAycHggM3B4
IDRweCknKTsKLQotZGVidWcoJycpOwotCi10ZXN0Q2Fub25pY2FsV2lkZ2V0UmVnaW9uKCdyZWdp
b24obGFiZWwgY2lyY2xlKSByZWdpb24obGFiZWwgY2lyY2xlKScpOwotdGVzdENhbm9uaWNhbFdp
ZGdldFJlZ2lvbigncmVnaW9uKGxhYmVsIGNpcmNsZSkgcmVnaW9uKGxhYmVsIHJlY3RhbmdsZSkn
KTsKLXRlc3RDYW5vbmljYWxXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCBjaXJjbGUgMXB4IDJw
eCAzcHggNHB4KSByZWdpb24obGFiZWwgcmVjdGFuZ2xlIDVweCA2cHggN3B4IDhweCknKTsKLXRl
c3RDYW5vbmljYWxXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCByZWN0YW5nbGUgMXB4IDJweCAz
cHggNHB4KSByZWdpb24obGFiZWwgY2lyY2xlIDVweCA2cHggN3B4IDhweCknKTsKLQotZGVidWco
JycpOwotZGVidWcoJ1Rlc3RzIHRvIGRlbW9uc3RyYXRlIHRoYXQgY29tbWFzIGFyZSBhbGxvd2Vk
LicpOwotZGVidWcoJycpOwotCi1zaG91bGRCZSgicGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihs
YWJlbCwgY2lyY2xlKScpIiwgIidyZWdpb24obGFiZWwgY2lyY2xlKSciKTsKLXNob3VsZEJlKCJw
YXJzZVdpZGdldFJlZ2lvbigncmVnaW9uKGxhYmVsLCBjaXJjbGUsIDFweCwgMnB4LCAzcHgsIDRw
eCknKSIsICIncmVnaW9uKGxhYmVsIGNpcmNsZSAxcHggMnB4IDNweCA0cHgpJyIpOwotCi1kZWJ1
ZygnJyk7Ci1kZWJ1ZygnVGVzdHMgZm9yIHZhcmlhdGlvbnMgaW4gd2hpdGVzcGFjZSB0aGF0IGFy
ZSBhbGxvd2VkLicpOwotZGVidWcoJycpOwotCi1zaG91bGRCZSgicGFyc2VXaWRnZXRSZWdpb24o
JyAgcmVnaW9uKCAgbGFiZWwgIGNpcmNsZSAgKSAgJykiLCAiJ3JlZ2lvbihsYWJlbCBjaXJjbGUp
JyIpOwotc2hvdWxkQmUoInBhcnNlV2lkZ2V0UmVnaW9uKCcgIHJlZ2lvbiggIGxhYmVsICAgY2ly
Y2xlICAxcHggIDJweCAgM3B4ICA0cHggICkgIHJlZ2lvbihsYWJlbCAgcmVjdGFuZ2xlICA1cHgg
IDZweCAgN3B4ICA4cHggICkgICcpIiwgIidyZWdpb24obGFiZWwgY2lyY2xlIDFweCAycHggM3B4
IDRweCkgcmVnaW9uKGxhYmVsIHJlY3RhbmdsZSA1cHggNnB4IDdweCA4cHgpJyIpOwotc2hvdWxk
QmUoInBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwgY2lyY2xlIDFweCAycHggM3B4IDRw
eClyZWdpb24obGFiZWwgcmVjdGFuZ2xlIDVweCA2cHggN3B4IDhweCknKSIsICIncmVnaW9uKGxh
YmVsIGNpcmNsZSAxcHggMnB4IDNweCA0cHgpIHJlZ2lvbihsYWJlbCByZWN0YW5nbGUgNXB4IDZw
eCA3cHggOHB4KSciKTsKLQotZGVidWcoJycpOwotZGVidWcoJ1Rlc3RzIGZvciBjYXNlIGluc2Vu
c2l0aXZpdHkuJyk7Ci1kZWJ1ZygnJyk7Ci0KLXNob3VsZEJlKCJwYXJzZVdpZGdldFJlZ2lvbign
cmVnaW9uKGxhYmVsIENpcmNsZSknKSIsICIncmVnaW9uKGxhYmVsIGNpcmNsZSknIik7Ci1zaG91
bGRCZSgicGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihMQUJFTCBDSVJDTEUpJykiLCAiJ3JlZ2lv
bihMQUJFTCBjaXJjbGUpJyIpOwotc2hvdWxkQmUoInBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24o
TGFCZUwgQ2lSY0xlKScpIiwgIidyZWdpb24oTGFCZUwgY2lyY2xlKSciKTsKLXNob3VsZEJlKCJw
YXJzZVdpZGdldFJlZ2lvbigncmVnaW9uKGxBYkVsIGNJckNsRSknKSIsICIncmVnaW9uKGxBYkVs
IGNpcmNsZSknIik7Ci1zaG91bGRCZSgicGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCBS
ZWN0YW5nbGUpJykiLCAiJ3JlZ2lvbihsYWJlbCByZWN0YW5nbGUpJyIpOwotc2hvdWxkQmUoInBh
cnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24oTEFCRUwgUkVDVEFOR0xFKScpIiwgIidyZWdpb24oTEFC
RUwgcmVjdGFuZ2xlKSciKTsKLXNob3VsZEJlKCJwYXJzZVdpZGdldFJlZ2lvbigncmVnaW9uKExh
QmVMIFJlQ3RBbkdsRSknKSIsICIncmVnaW9uKExhQmVMIHJlY3RhbmdsZSknIik7Ci1zaG91bGRC
ZSgicGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsQWJFbCByRWNUYU5nTGUpJykiLCAiJ3JlZ2lv
bihsQWJFbCByZWN0YW5nbGUpJyIpOwotCi1kZWJ1ZygnJyk7Ci1kZWJ1ZygnU29tZSBleHBlY3Rl
ZCBmYWlsdXJlcy4nKTsKLWRlYnVnKCcnKTsKLQotc2hvdWxkQmUoInBhcnNlV2lkZ2V0UmVnaW9u
KCcnKSIsICJudWxsIik7Ci1zaG91bGRCZSgicGFyc2VXaWRnZXRSZWdpb24oJyAnKSIsICJudWxs
Iik7Ci1zaG91bGRCZSgicGFyc2VXaWRnZXRSZWdpb24oJ3gnKSIsICJudWxsIik7Ci1zaG91bGRC
ZSgicGFyc2VXaWRnZXRSZWdpb24oJ2Rhc2hib2FyZC0nKSIsICJudWxsIik7Ci1zaG91bGRCZSgi
cGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbicpIiwgIm51bGwiKTsKLXNob3VsZEJlKCJwYXJzZVdp
ZGdldFJlZ2lvbigncmVnaW9uKCcpIiwgIm51bGwiKTsKLXNob3VsZEJlKCJwYXJzZVdpZGdldFJl
Z2lvbigncmVnaW9uKGxhYmVsJykiLCAibnVsbCIpOwotc2hvdWxkQmUoInBhcnNlV2lkZ2V0UmVn
aW9uKCdyZWdpb24obGFiZWwgJykiLCAibnVsbCIpOwotc2hvdWxkQmUoInBhcnNlV2lkZ2V0UmVn
aW9uKCdyZWdpb24obGFiZWwgYycpIiwgIm51bGwiKTsKLXNob3VsZEJlKCJwYXJzZVdpZGdldFJl
Z2lvbigncmVnaW9uKGxhYmVsIGNpcmNsZScpIiwgIm51bGwiKTsKLXNob3VsZEJlKCJwYXJzZVdp
ZGdldFJlZ2lvbigncmVnaW9uKGxhYmVsKScpIiwgIm51bGwiKTsKLXNob3VsZEJlKCJwYXJzZVdp
ZGdldFJlZ2lvbigncmVnaW9uIChsYWJlbCBjaXJjbGUpJykiLCAibnVsbCIpOwotc2hvdWxkQmUo
InBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwsLCBjaXJjbGUpJykiLCAibnVsbCIpOwot
c2hvdWxkQmUoInBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwgY2lyY2xlIDFweDJweCAz
cHggNHB4KScpIiwgIm51bGwiKTsKLXNob3VsZEJlKCJwYXJzZVdpZGdldFJlZ2lvbigncmVnaW9u
KGxhYmVsLCwgY2lyY2xlLCAxcHgsIDJweCwgM3B4LCA0cHgpJykiLCAibnVsbCIpOwotc2hvdWxk
QmUoInBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwsIGNpcmNsZSAxcHggMnB4IDNweCA0
cHgpJykiLCAibnVsbCIpOwotc2hvdWxkQmUoInBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFi
ZWwsIGNpcmNsZSwgMXB4IDJweCAzcHggNHB4KScpIiwgIm51bGwiKTsKLXNob3VsZEJlKCJwYXJz
ZVdpZGdldFJlZ2lvbigncmVnaW9uKGxhYmVsLCBjaXJjbGUsIDFweCwgMnB4IDNweCA0cHgpJyki
LCAibnVsbCIpOwotc2hvdWxkQmUoInBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwsIGNp
cmNsZSwgMXB4LCAycHgsIDNweCA0cHgpJykiLCAibnVsbCIpOwotc2hvdWxkQmUoInBhcnNlV2lk
Z2V0UmVnaW9uKCdyZWdpb24obGFiZWwgY2lyY2xlLCAxcHgsIDJweCwgM3B4LCA0cHgpJykiLCAi
bnVsbCIpOwotc2hvdWxkQmUoInBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwgY2lyY2xl
IDFweCwgMnB4LCAzcHgsIDRweCknKSIsICJudWxsIik7Ci1zaG91bGRCZSgicGFyc2VXaWRnZXRS
ZWdpb24oJ3JlZ2lvbihsYWJlbCBjaXJjbGUgeCknKSIsICJudWxsIik7Ci1zaG91bGRCZSgicGFy
c2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCBjaXJjbGUgeCB4KScpIiwgIm51bGwiKTsKLXNo
b3VsZEJlKCJwYXJzZVdpZGdldFJlZ2lvbigncmVnaW9uKGxhYmVsIGNpcmNsZSB4IHggeCknKSIs
ICJudWxsIik7Ci1zaG91bGRCZSgicGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCBjaXJj
bGUgeCB4IHggeCknKSIsICJudWxsIik7Ci1zaG91bGRCZSgicGFyc2VXaWRnZXRSZWdpb24oJ3Jl
Z2lvbihsYWJlbCBjaXJjbGUgeCB4IHggeCB4KScpIiwgIm51bGwiKTsKLXNob3VsZEJlKCJwYXJz
ZVdpZGdldFJlZ2lvbigncmVnaW9uKGxhYmVsIGNpcmNsZSAxcHggMnB4IDNweCA0cHggeCknKSIs
ICJudWxsIik7Ci1zaG91bGRCZSgicGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCBjaXJj
bGUgMXB4IDJweCAzcHggNHB4IHggeCknKSIsICJudWxsIik7Ci1zaG91bGRCZSgicGFyc2VXaWRn
ZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCBjaXJjbGUgMXB4IDJweCAzcHggNHB4IHggeCB4KScpIiwg
Im51bGwiKTsKLXNob3VsZEJlKCJwYXJzZVdpZGdldFJlZ2lvbigncmVnaW9uKGxhYmVsIGNpcmNs
ZSAxcHggMnB4IDNweCA0cHggeCB4IHggeCknKSIsICJudWxsIik7Ci1zaG91bGRCZSgicGFyc2VX
aWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCBjaXJjbGUgMXB4IDJweCAzcHggNHB4IHggeCB4IHgg
eCknKSIsICJudWxsIik7Ci1zaG91bGRCZSgicGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJl
bCBjaXJjbGUgMXB4IDJweCAzcHggNHB4IGNpcmNsZSA1cHggNnB4IDdweCA4cHgpJykiLCAibnVs
bCIpOwotc2hvdWxkQmUoInBhcnNlV2lkZ2V0UmVnaW9uKCdyZWdpb24obGFiZWwsIGNpcmNsZSwg
MXB4LCAycHgsIDNweCwgNHB4LCBjaXJjbGUsIDVweCwgNnB4LCA3cHgsIDhweCknKSIsICJudWxs
Iik7Ci1zaG91bGRCZSgicGFyc2VXaWRnZXRSZWdpb24oJ25vbmUgeCcpIiwgIm51bGwiKTsKLXNo
b3VsZEJlKCJwYXJzZVdpZGdldFJlZ2lvbignbm9uZSB4IHgnKSIsICJudWxsIik7Ci1zaG91bGRC
ZSgicGFyc2VXaWRnZXRSZWdpb24oJ25vbmUgeCB4IHgnKSIsICJudWxsIik7Ci1zaG91bGRCZSgi
cGFyc2VXaWRnZXRSZWdpb24oJ25vbmUgeCB4IHggeCcpIiwgIm51bGwiKTsKLXNob3VsZEJlKCJw
YXJzZVdpZGdldFJlZ2lvbignbm9uZSByZWdpb24obGFiZWwsIGNpcmNsZSknKSIsICJudWxsIik7
Ci1zaG91bGRCZSgicGFyc2VXaWRnZXRSZWdpb24oJ3JlZ2lvbihsYWJlbCwgY2lyY2xlKSBub25l
JykiLCAibnVsbCIpOwotc2hvdWxkQmUoInBhcnNlV2lkZ2V0UmVnaW9uKCdhdHRyKGEpJykiLCAi
bnVsbCIpOwotCi1kZWJ1ZygnJyk7Ci0KLQotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKaW5kZXggMTY1NTY1OC4uMTRlYTQzYiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKQEAgLTQxNSw3ICs0MTUsNyBAQCBpbnNwZWN0b3IvdGlt
ZWxpbmUvdGltZWxpbmUtcGFpbnQuaHRtbAogaW5zcGVjdG9yL3RpbWVsaW5lL3RpbWVsaW5lLXJl
Y2VpdmUtcmVzcG9uc2UtZXZlbnQuaHRtbAogCiAjIEVOQUJMRShXSURHRVRfUkVHSU9OKSBpcyBk
aXNhYmxlZAotZmFzdC9jc3Mvd2lkZ2V0LXJlZ2lvbi1wYXJzZXIuaHRtbAorZmFzdC9jc3MvZHJh
Z2dhYmxlLXJlZ2lvbi1wYXJzZXIuaHRtbAogCiAjIGh0dHA6Ly93ZWJraXQub3JnL2IvOTY4MjgK
IGZhc3QvY2FudmFzL3dlYmdsL29lcy12ZXJ0ZXgtYXJyYXktb2JqZWN0Lmh0bWwKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggN2NjNDUyYi4uYmNlYWRjNiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTc0LDcgKzc0
LDcgQEAgZmFzdC9jYW52YXMvY2FudmFzLWdyYWRpZW50LWFkZFN0b3AtZXJyb3IuaHRtbCBbIFdv
bnRGaXggXQogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9kZWZhdWx0LWNvbnRlbnQtdHlwZS1k
YXNoYm9hcmQuaHRtbCBbIFdvbnRGaXggXQogCiAjIEVOQUJMRShXSURHRVRfUkVHSU9OKSBpcyBk
aXNhYmxlZAotZmFzdC9jc3Mvd2lkZ2V0LXJlZ2lvbi1wYXJzZXIuaHRtbCBbIFdvbnRGaXggXQor
ZmFzdC9jc3MvZHJhZ2dhYmxlLXJlZ2lvbi1wYXJzZXIuaHRtbCBbIFdvbnRGaXggXQogCiAjIFRo
ZXNlIHRlc3QgLWFwcGxlLSBhbmQgLWtodG1sLSBwcmVmaXhlZCBDU1MgcHJvcGVydGllcywgd2hp
Y2ggd2UgZG9uJ3Qgc3VwcG9ydC4KIGluc3BlY3Rvci9zdHlsZXMvdmVuZG9yLXByZWZpeGVzLmh0
bWwgWyBXb250Rml4IF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lw
cGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKaW5kZXggMGZmN2U0My4uNGJj
MzIyNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKQEAgLTQ0Myw2ICs0NDMsOSBAQCBmYXN0
L3JlZ2lvbnMvc3R5bGUtc2NvcGVkLWluLWZsb3cuaHRtbAogZmFzdC9kb20vc2hhZG93CiBlZGl0
aW5nL3NoYWRvdwogCisjIEVOQUJMRShXSURHRVRfUkVHSU9OKSBpcyBkaXNhYmxlZAorZmFzdC9j
c3MvZHJhZ2dhYmxlLXJlZ2lvbi1wYXJzZXIuaHRtbAorCiAjIEpTQyBkb2VzIG5vdCBzdXBwb3J0
IHNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbiAoaHR0cDovL3dlYmtpdC5vcmcvYi82MTU0
MCkKIGh0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9jcm9zcy1vcmlnaW4teGhyLmh0
bWwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggZjRiMzQxMy4uYTUyMDY2NyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC0yNzMyLDcgKzI3MzIsNyBAQCBzdmcvcmVwYWludC9jb250
YWluZXItcmVwYWludC5zdmcKIGNzczMvZmxleGJveC9mbGV4LXJvdW5kaW5nLmh0bWwKIAogIyBF
TkFCTEUoV0lER0VUX1JFR0lPTikgaXMgZGlzYWJsZWQKLWZhc3QvY3NzL3dpZGdldC1yZWdpb24t
cGFyc2VyLmh0bWwKK2Zhc3QvY3NzL2RyYWdnYWJsZS1yZWdpb24tcGFyc2VyLmh0bWwKIAogIyBb
UXRdW0dUS10gUkVHUkVTU0lPTihyMTI1MjUxKTogSXQgbWFkZSBzdmcvY3VzdG9tL3VzZS1pbnN0
YW5jZVJvb3QtYXMtZXZlbnQtdGFyZ2V0LnhodG1sIGFzc2VydCBhbmQgZmxha2V5CiAjIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzgxMgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
U2tpcHBlZAppbmRleCAzOWY1NmU4Li4xMmQyYzIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93aW4vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBl
ZApAQCAtMTk2MSw3ICsxOTYxLDcgQEAgaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvMS4xCiBmYXN0L3RleHQvc2hhcGluZwogCiAjIEVOQUJMRShXSURHRVRfUkVHSU9O
KSBpcyBkaXNhYmxlZAotZmFzdC9jc3Mvd2lkZ2V0LXJlZ2lvbi1wYXJzZXIuaHRtbAorZmFzdC9j
c3MvZHJhZ2dhYmxlLXJlZ2lvbi1wYXJzZXIuaHRtbAogCiAjIENTUyBpbWFnZS1vcmllbnRhdGlv
biBwcm9wZXJ0eSBub3QgeWV0IHN1cHBvcnRlZAogZmFzdC9jc3MvaW1hZ2Utb3JpZW50YXRpb24v
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZAppbmRleCBjZTgyNjczLi45OWZlMzhh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQKQEAgLTI0OTIsNyArMjQ5Miw3
IEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMQogZmFzdC90
ZXh0L3NoYXBpbmcKIAogIyBFTkFCTEUoV0lER0VUX1JFR0lPTikgaXMgZGlzYWJsZWQKLWZhc3Qv
Y3NzL3dpZGdldC1yZWdpb24tcGFyc2VyLmh0bWwKK2Zhc3QvY3NzL2RyYWdnYWJsZS1yZWdpb24t
cGFyc2VyLmh0bWwKIAogIyBDU1MgaW1hZ2Utb3JpZW50YXRpb24gcHJvcGVydHkgbm90IHlldCBz
dXBwb3J0ZWQKIGZhc3QvY3NzL2ltYWdlLW9yaWVudGF0aW9uLwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKaW5kZXggNDAzYTM4Yy4uMGU2MGI0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTItMDktMjYgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFVwZGF0ZSB0aGUgQ1NTIHByb3BlcnR5IHVzZWQgdG8gc3VwcG9ydCBkcmFnZ2Fi
bGUgcmVnaW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk3MTU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlIENTUyBwcm9wZXJ0eSB0byBzdXBwb3J0IGRyYWdnYWJsZSByZWdpb25zLCBndWFyZGVk
IHVuZGVyCisgICAgICAgIFdJREdFVF9SRUdJT04gaXMgbm93IGRpc2FibGVkIGZyb20gTWFjIFdl
YktpdCwgaW4gb3JkZXIgbm90IHRvIGNhdXNlCisgICAgICAgIGNvbmZ1c2lvbiB3aXRoIERBU0hC
T0FSRF9TVVBQT1JUIGZlYXR1cmUuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZzogRGlzYWJsZSBXSURHRVRfUkVHSU9OIGZlYXR1cmUuCisKIDIwMTIt
MDktMjQgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzUzMApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnCmluZGV4IDFiNGE3NTI0Li4yY2FjMmI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnCkBAIC0xMzYsOCArMTM2LDcgQEAgRU5BQkxFX1dFQkdMID0gRU5BQkxFX1dFQkdM
OwogRU5BQkxFX1dFQl9BVURJTyA9IEVOQUJMRV9XRUJfQVVESU87CiBFTkFCTEVfV0VCX1NPQ0tF
VFMgPSBFTkFCTEVfV0VCX1NPQ0tFVFM7CiBFTkFCTEVfV0VCX1RJTUlORyA9IDsKLUVOQUJMRV9X
SURHRVRfUkVHSU9OID0gJChFTkFCTEVfV0lER0VUX1JFR0lPTl8kKFJFQUxfUExBVEZPUk1fTkFN
RSkpOwotRU5BQkxFX1dJREdFVF9SRUdJT05fbWFjb3N4ID0gRU5BQkxFX1dJREdFVF9SRUdJT047
CitFTkFCTEVfV0lER0VUX1JFR0lPTiA9IDsKIEVOQUJMRV9XT1JLRVJTID0gRU5BQkxFX1dPUktF
UlM7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xUOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2E5NGNjYi4u
MGE0NGQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAxMi0wOS0yNiAgSmlhbiBM
aSAgPGppYW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVXBkYXRlIHRoZSBDU1MgcHJvcGVy
dHkgdXNlZCB0byBzdXBwb3J0IGRyYWdnYWJsZSByZWdpb25zLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcxNTYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgQ1NTIHByb3BlcnR5IHRvIHN1cHBvcnQg
ZHJhZ2dhYmxlIHJlZ2lvbnMgaGFzIGJlZW4gY2hhbmdlZCBmcm9tCisgICAgICAgICItd2Via2l0
LXdpZGdldC1yZWdpb24iIHRvICItd2Via2l0LWFwcC1yZWdpb24iIGluIHRoZSBmb2xsb3dpbmcg
c3ludGF4OgorICAgICAgICAgICAtd2Via2l0LWFwcC1yZWdpb246IGRyYWd8bm8tZHJhZworCisg
ICAgICAgIFRoZSBDU1MgcGFyc2luZyBjb2RlIGZvciBkcmFnZ2FibGUgcmVnaW9ucyBpcyBub3cg
ZGlmZmVyZW50IGZyb20gdGhlIENTUworICAgICAgICBwYXJzaW5nIGNvZGUgZm9yIGRhc2hib2Fy
ZCByZWdpb25zIHNpbmNlIHdlIGhhdmUgcXVpdGUgZGlmZmVyZW50IHN5bnRheC4KKworICAgICAg
ICBXZSBzdGlsbCB0cnkgdG8gc2hhcmUgYXMgbXVjaCByZW5kZXJpbmcgdXBkYXRlIGNvZGUgYXMg
cG9zc2libGUgZm9yCisgICAgICAgIHRoZXNlIHR3byBmZWF0dXJlcy4gVG8gbWFrZSB0aGUgc2hh
cmVkIGNvZGUgZWFzaWVyIHRvIHVuZGVyc3RhbmQgZm9yCisgICAgICAgIGJvdGggZmVhdHVyZXMs
IHRoZSBuYW1lICJEYXNoYm9hcmRSZWdpb25zIiBpbiB0aGUgc2hhcmVkIGNvZGUgaXMgY2hhbmdl
ZAorICAgICAgICB0byAiQW5ub3RhdGVkUmVnaW9ucyIgdG8gd29yayBmb3IgYm90aCBkYXNoYm9h
cmQgcmVnaW9ucyBhbmQgZHJhZ2dhYmxlCisgICAgICAgIHJlZ2lvbnMuCisKKyAgICAgICAgTm90
ZSB0aGF0IHdlIHN0aWxsIHVzaW5nIFdJREdFVF9SRUdJT04gYXMgZmVhdHVyZSBuYW1lIGluIG9y
ZGVyIG5vdCB0bworICAgICAgICBhZGQgbW9yZSBjaGFuZ2VzIHRvIHRoaXMgcGF0Y2guIEl0IHdp
bGwgYmUgcmVuYW1lZCB0byBhIG1vcmUgYXBwcm9wcmlhdGUKKyAgICAgICAgbmFtZSBpbiBuZXh0
IHBhdGNoLiBXSURHRVRfUkVHSU9OIGlzIG5vdyBvbmx5IHR1cm5lZCBvbiBmb3IgdGhlIGNocm9t
aXVtCisgICAgICAgIHBvcnQuCisKKyAgICAgICAgVGVzdDogZmFzdC9jc3MvZHJhZ2dhYmxlLXJl
Z2lvbi1wYXJzZXIuaHRtbAorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmlu
ZXMueGNjb25maWc6IERpc2FibGUgV0lER0VUX1JFR0lPTiBmZWF0dXJlLgorICAgICAgICAqIFdl
YkNvcmUuZXhwLmluOiBVcGRhdGUgdGhlIGV4cG9ydGVkIHN5bWJvbCBkdWUgdG8gcmVuYW1pbmcu
CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6IFVwZGF0ZSB0
aGUgQ1NTIHBhcnNpbmcuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6CisgICAgICAg
ICogY3NzL0NTU1BhcnNlci5jcHA6IFVwZGF0ZSB0aGUgQ1NTIHBhcnNpbmcuCisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRGFzaGJvYXJkUmVnaW9ucyk6CisgICAgICAg
ICogY3NzL0NTU1BhcnNlclZhbHVlcy5jcHA6IFVwZGF0ZSB0aGUgQ1NTIHBhcnNpbmcuCisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXJWYWx1ZTo6Y3JlYXRlQ1NTVmFsdWUpOgorICAgICAgICAq
IGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6IFVwZGF0ZSB0aGUgQ1NTIHBhcnNpbmcuCisgICAg
ICAgIChXZWJDb3JlOjppc1ZhbGlkQ1NTVW5pdFR5cGVGb3JEb3VibGVDb252ZXJzaW9uKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmNs
ZWFudXApOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmN1c3RvbUNzc1Rl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmNsb25lRm9yQ1NTT00p
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRN
ZW1vcnlVc2FnZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6IFVwZGF0ZSB0
aGUgQ1NTIHBhcnNpbmcuCisgICAgICAgIChDU1NQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgICog
Y3NzL0NTU1Byb3BlcnR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Ojppc0lu
aGVyaXRlZFByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlOYW1lcy5pbjogUmVu
YW1lIHRoZSBDU1MgcHJvcGVydHkgZm9yIGRyYWdnYWJsZSByZWdpb24uCisgICAgICAgICogY3Nz
L0NTU1ZhbHVlS2V5d29yZHMuaW46IEFkZCB0aGUga2V5d29yZHMgc3VwcG9ydGVkIGZvciB0aGUg
ZHJhZ2dhYmxlIHJlZ2lvbi4KKyAgICAgICAgKiBjc3MvRGFzaGJvYXJkUmVnaW9uLmg6IFJlbW92
ZSBXSURHRVRfUkVHSU9OIGd1YXJkLgorICAgICAgICAoRGFzaGJvYXJkUmVnaW9uKToKKyAgICAg
ICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6IFVwZGF0ZSB0aGUgQ1NTIHBhcnNpbmcuCisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3Qp
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6IFJlbmFtZSBkYXNoYm9hcmRSZWdpb25zIHRv
IGFubm90YXRlZFJlZ2lvbnMuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFubm90YXRlZFJlZ2lvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldEFubm90YXRlZFJlZ2lvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuaDogUmVuYW1lIGRhc2hib2FyZFJlZ2lvbnMgdG8gYW5ub3RhdGVkUmVnaW9ucy4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldEFubm90YXRlZFJl
Z2lvbnNEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YW5ub3RhdGVkUmVnaW9u
c0RpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpoYXNBbm5vdGF0ZWRSZWdpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRIYXNBbm5vdGF0ZWRSZWdpb25zKToK
KyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6IFJlbmFtZSBk
YXNoYm9hcmRSZWdpb25zIHRvIGFubm90YXRlZFJlZ2lvbnMuCisgICAgICAgIChXZWJDb3JlOjpD
aHJvbWVDbGllbnQ6OmFubm90YXRlZFJlZ2lvbnNDaGFuZ2VkKToKKyAgICAgICAgKiBwYWdlL0No
cm9tZUNsaWVudC5oOiBSZW5hbWUgZGFzaGJvYXJkUmVnaW9ucyB0byBhbm5vdGF0ZWRSZWdpb25z
LgorICAgICAgICAoQ2hyb21lQ2xpZW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6
IFJlbmFtZSBkYXNoYm9hcmRSZWdpb25zIHRvIGFubm90YXRlZFJlZ2lvbnMuCisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6
OnVwZGF0ZUFubm90YXRlZFJlZ2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojpw
YWludENvbnRlbnRzKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOiBSZW5hbWUgZGFzaGJv
YXJkUmVnaW9ucyB0byBhbm5vdGF0ZWRSZWdpb25zLgorICAgICAgICAoRnJhbWVWaWV3KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlcklubGluZTo6YWRkQW5ub3RhdGVkUmVnaW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5oOiBSZW5hbWUgZGFzaGJvYXJkUmVnaW9ucyB0byBhbm5vdGF0ZWRSZWdpb25z
LgorICAgICAgICAoUmVuZGVySW5saW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwOiBSZW5hbWUgZGFzaGJvYXJkUmVnaW9ucyB0byBhbm5vdGF0ZWRSZWdpb25zLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbFRvKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpzZXRIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpzZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xsYmFyc0FmdGVyTGF5b3V0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6IFJlbmFtZSBkYXNoYm9hcmRSZWdpb25zIHRv
IGFubm90YXRlZFJlZ2lvbnMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpzZXRI
YXNWZXJ0aWNhbFNjcm9sbGJhcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHA6IFJlbmFtZSBkYXNoYm9hcmRSZWdpb25zIHRvIGFubm90YXRlZFJlZ2lvbnMuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnN0eWxlV2lsbENoYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJPYmplY3Q6OmFkZEFubm90YXRlZFJlZ2lvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyT2JqZWN0Ojpjb2xsZWN0QW5ub3RhdGVkUmVnaW9ucyk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5oOiBSZW5hbWUgZGFzaGJvYXJkUmVnaW9ucyB0byBhbm5vdGF0
ZWRSZWdpb25zLgorICAgICAgICAoV2ViQ29yZTo6QW5ub3RhdGVkUmVnaW9uVmFsdWU6Om9wZXJh
dG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6QW5ub3RhdGVkUmVnaW9uVmFsdWU6Om9wZXJhdG9y
IT0pOgorICAgICAgICAoQW5ub3RhdGVkUmVnaW9uVmFsdWUpOgorICAgICAgICAoUmVuZGVyT2Jq
ZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOiBVcGRhdGUg
dGhlIENTUyBwYXJzaW5nLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmRpZmYpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
Lmg6IFVwZGF0ZSB0aGUgQ1NTIHBhcnNpbmcuCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlQ29uc3RhbnRzLmg6IFVwZGF0ZSB0aGUgQ1NTIHBhcnNpbmcuCisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL1N0eWxlRGFzaGJvYXJkUmVnaW9uLmg6IFVwZGF0ZSB0aGUgQ1NTIHBh
cnNpbmcuCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGEuY3BwOiBVcGRhdGUgdGhlIENTUyBwYXJzaW5nLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
YXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oOiBVcGRhdGUg
dGhlIENTUyBwYXJzaW5nLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhKToKKwogMjAxMi0wOS0yNSAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIEluZGV4ZWREQjogT25lIHRyYW5zYWN0aW9uIGNvb3JkaW5h
dG9yIHBlciBkYXRhYmFzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9u
cy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCA1YTMyYzgyLi4xZjkzODM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZp
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZwpAQCAtMTM3LDggKzEzNyw3IEBAIEVOQUJMRV9XRUJHTCA9IEVOQUJMRV9XRUJHTDsKIEVO
QUJMRV9XRUJfQVVESU8gPSBFTkFCTEVfV0VCX0FVRElPOwogRU5BQkxFX1dFQl9TT0NLRVRTID0g
RU5BQkxFX1dFQl9TT0NLRVRTOwogRU5BQkxFX1dFQl9USU1JTkcgPSA7Ci1FTkFCTEVfV0lER0VU
X1JFR0lPTiA9ICQoRU5BQkxFX1dJREdFVF9SRUdJT05fJChSRUFMX1BMQVRGT1JNX05BTUUpKTsK
LUVOQUJMRV9XSURHRVRfUkVHSU9OX21hY29zeCA9IEVOQUJMRV9XSURHRVRfUkVHSU9OOworRU5B
QkxFX1dJREdFVF9SRUdJT04gPSA7CiBFTkFCTEVfV09SS0VSUyA9IEVOQUJMRV9XT1JLRVJTOwog
RU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAxZDU2
MGZjLi5lOTk2OTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMjEyOSw3ICsyMTI5LDcgQEAg
X19aTks3V2ViQ29yZTE1Q29udGV4dE1lbnVJdGVtN2VuYWJsZWRFdgogI2VuZGlmIC8vIEVOQUJM
RShDT05URVhUX01FTlVTKQogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBFTkFC
TEUoV0lER0VUX1JFR0lPTikKLV9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxNmRhc2hib2FyZFJlZ2lv
bnNFdgorX19aTks3V2ViQ29yZThEb2N1bWVudDE2YW5ub3RhdGVkUmVnaW9uc0V2CiAjZW5kaWYK
ICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiBfX1pON1dlYkNvcmU4U2V0dGluZ3M0MXNl
dFVzZXNEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlRWIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggZDEwZDcz
OC4uM2NkYjU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTc4LDcgKzc4LDcgQEAKICNpbmNsdWRlICJXZWJLaXRDU1NG
aWx0ZXJWYWx1ZS5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8
IEVOQUJMRShXSURHRVRfUkVHSU9OKQorI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICNp
bmNsdWRlICJEYXNoYm9hcmRSZWdpb24uaCIKICNlbmRpZgogCkBAIC0zNTAsNyArMzUwLDcgQEAg
c3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgY29tcHV0ZWRQcm9wZXJ0aWVzW10gPSB7CiAgICAg
Q1NTUHJvcGVydHlXZWJraXRSZWdpb25CcmVha0luc2lkZSwKICNlbmRpZgogI2lmIEVOQUJMRShX
SURHRVRfUkVHSU9OKQotICAgIENTU1Byb3BlcnR5V2Via2l0V2lkZ2V0UmVnaW9uLAorICAgIENT
U1Byb3BlcnR5V2Via2l0QXBwUmVnaW9uLAogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19FWENMVVNJ
T05TKQogICAgIENTU1Byb3BlcnR5V2Via2l0V3JhcEZsb3csCkBAIC0yMTI1LDEzICsyMTI1LDgg
QEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQ
cm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnQKICAgICAgICAgICAgIGlmIChzdHlsZS0+Ym94U2l6
aW5nKCkgPT0gQ09OVEVOVF9CT1gpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9v
bCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUNvbnRlbnRCb3gpOwogICAgICAgICAg
ICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUJv
cmRlckJveCk7Ci0jaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBFTkFCTEUoV0lER0VU
X1JFR0lPTikKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXREYXNoYm9hcmRSZWdpb246Ci0jZW5kaWYKLSNpZiBFTkFCTEUoV0lER0VU
X1JFR0lPTikKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdpZGdldFJlZ2lvbjoKLSNl
bmRpZgogICAgICAgICB7CiAgICAgICAgICAgICBjb25zdCBWZWN0b3I8U3R5bGVEYXNoYm9hcmRS
ZWdpb24+JiByZWdpb25zID0gc3R5bGUtPmRhc2hib2FyZFJlZ2lvbnMoKTsKICAgICAgICAgICAg
IHVuc2lnbmVkIGNvdW50ID0gcmVnaW9ucy5zaXplKCk7CkBAIC0yMTYyLDYgKzIxNTcsMTAgQEAg
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9w
ZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnQKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wo
KS5jcmVhdGVWYWx1ZShmaXJzdFJlZ2lvbi5yZWxlYXNlKCkpOwogICAgICAgICB9CiAjZW5kaWYK
KyNpZiBFTkFCTEUoV0lER0VUX1JFR0lPTikKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEFwcFJlZ2lvbjoKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoc3R5bGUtPmdldERyYWdnYWJsZVJlZ2lvbk1vZGUoKSA9PSBEcmFnZ2FibGVS
ZWdpb25EcmFnID8gQ1NTVmFsdWVEcmFnIDogQ1NTVmFsdWVOb0RyYWcpOworI2VuZGlmCiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EZWxheToKICAgICAgICAgICAgIHJl
dHVybiBnZXREZWxheVZhbHVlKHN0eWxlLT5hbmltYXRpb25zKCkpOwogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
Y3BwCmluZGV4IDlhOTIyZjEuLjgwM2NiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBA
IC0xMTAsNyArMTEwLDcgQEAKICNpbmNsdWRlICJXZWJLaXRDU1NTaGFkZXJWYWx1ZS5oIgogI2Vu
ZGlmCiAKLSNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8IEVOQUJMRShXSURHRVRfUkVH
SU9OKQorI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICNpbmNsdWRlICJEYXNoYm9hcmRS
ZWdpb24uaCIKICNlbmRpZgogCkBAIC0yNjA2LDE5ICsyNjA2LDIxIEBAIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAg
ICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAKLSNpZiBFTkFC
TEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8IEVOQUJMRShXSURHRVRfUkVHSU9OKQogI2lmIEVOQUJM
RShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RGFzaGJvYXJk
UmVnaW9uOiAvLyA8ZGFzaGJvYXJkLXJlZ2lvbj4gfCA8ZGFzaGJvYXJkLXJlZ2lvbj4KLSNlbmRp
ZgotI2lmIEVOQUJMRShXSURHRVRfUkVHSU9OKQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRX
aWRnZXRSZWdpb246Ci0jZW5kaWYKICAgICAgICAgaWYgKHZhbHVlLT51bml0ID09IENTU1BhcnNl
clZhbHVlOjpGdW5jdGlvbiB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCiAgICAgICAgICAgICByZXR1
cm4gcGFyc2VEYXNoYm9hcmRSZWdpb25zKHByb3BJZCwgaW1wb3J0YW50KTsKICAgICAgICAgYnJl
YWs7CiAjZW5kaWYKICAgICAvLyBFbmQgQXBwbGUtc3BlY2lmaWMgcHJvcGVydGllcwogCisjaWYg
RU5BQkxFKFdJREdFVF9SRUdJT04pCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFwcFJlZ2lv
bjoKKyAgICAgICAgaWYgKGlkID49IENTU1ZhbHVlRHJhZyAmJiBpZCA8PSBDU1NWYWx1ZU5vRHJh
ZykKKyAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7Cisj
ZW5kaWYKKwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFRhcEhpZ2hsaWdodENvbG9yOgogICAgICAgICBpZiAoKGlkID49IENTU1ZhbHVlQXF1YSAm
JiBpZCA8PSBDU1NWYWx1ZVdpbmRvd3RleHQpIHx8IGlkID09IENTU1ZhbHVlTWVudQpAQCAtNDI5
Miw3ICs0Mjk0LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlR3JpZFRyYWNrTGlzdChDU1NQcm9w
ZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiB9CiAKIAotI2lmIEVOQUJMRShEQVNIQk9B
UkRfU1VQUE9SVCkgfHwgRU5BQkxFKFdJREdFVF9SRUdJT04pCisjaWYgRU5BQkxFKERBU0hCT0FS
RF9TVVBQT1JUKQogCiAjZGVmaW5lIERBU0hCT0FSRF9SRUdJT05fTlVNX1BBUkFNRVRFUlMgIDYK
ICNkZWZpbmUgREFTSEJPQVJEX1JFR0lPTl9TSE9SVF9OVU1fUEFSQU1FVEVSUyAgMgpAQCAtNDM0
NSwzMiArNDM0Nyw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZURhc2hib2FyZFJlZ2lvbnMoQ1NT
UHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAvLyBkYXNoYm9hcmQt
cmVnaW9uKGxhYmVsLCB0eXBlKSBvciBkYXNoYm9hcmQtcmVnaW9uKGxhYmVsIHR5cGUpCiAgICAg
ICAgIC8vIGRhc2hib2FyZC1yZWdpb24obGFiZWwsIHR5cGUpIG9yIGRhc2hib2FyZC1yZWdpb24o
bGFiZWwgdHlwZSkKICAgICAgICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcmdzID0gdmFsdWUtPmZ1
bmN0aW9uLT5hcmdzLmdldCgpOwotICAgICAgICBpZiAoIWFyZ3MpIHsKLSAgICAgICAgICAgIHZh
bGlkID0gZmFsc2U7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBib29s
IHZhbGlkRnVuY3Rpb25OYW1lID0gZmFsc2U7Ci0jaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JU
KQotICAgICAgICBzdGF0aWMgY29uc3QgY2hhciBkYXNoYm9hcmRSZWdpb25GdW5jdGlvbk5hbWVb
XSA9ICJkYXNoYm9hcmQtcmVnaW9uKCI7Ci0gICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2
YWx1ZS0+ZnVuY3Rpb24tPm5hbWUsIGRhc2hib2FyZFJlZ2lvbkZ1bmN0aW9uTmFtZSkpIHsKLSAg
ICAgICAgICAgIHZhbGlkRnVuY3Rpb25OYW1lID0gdHJ1ZTsKLSNpZiBFTkFCTEUoREFTSEJPQVJE
X1NVUFBPUlQpICYmIEVOQUJMRShXSURHRVRfUkVHSU9OKQotICAgICAgICAgICAgLy8gS2VlcCB0
cmFjayBvZiBmdW5jdGlvbiBuYW1lIHdoZW4gYm90aCBmZWF0dXJlcyBhcmUgZW5hYmxlZC4gCi0g
ICAgICAgICAgICByZWdpb24tPm1fY3NzRnVuY3Rpb25OYW1lID0gZGFzaGJvYXJkUmVnaW9uRnVu
Y3Rpb25OYW1lOwotI2VuZGlmCi0gICAgICAgIH0KLSNlbmRpZgotI2lmIEVOQUJMRShXSURHRVRf
UkVHSU9OKQotICAgICAgICBzdGF0aWMgY29uc3QgY2hhciB3aWRnZXRSZWdpb25GdW5jdGlvbk5h
bWVbXSA9ICJyZWdpb24oIjsKLSAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLT5m
dW5jdGlvbi0+bmFtZSwgd2lkZ2V0UmVnaW9uRnVuY3Rpb25OYW1lKSkgewotICAgICAgICAgICAg
dmFsaWRGdW5jdGlvbk5hbWUgPSB0cnVlOwotI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkg
JiYgRU5BQkxFKFdJREdFVF9SRUdJT04pCi0gICAgICAgICAgICAvLyBLZWVwIHRyYWNrIG9mIGZ1
bmN0aW9uIG5hbWUgd2hlbiBib3RoIGZlYXR1cmVzIGFyZSBlbmFibGVkLiAKLSAgICAgICAgICAg
IHJlZ2lvbi0+bV9jc3NGdW5jdGlvbk5hbWUgPSB3aWRnZXRSZWdpb25GdW5jdGlvbk5hbWU7Ci0j
ZW5kaWYKLSAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIGlmICghdmFsaWRGdW5jdGlvbk5hbWUp
IHsKKyAgICAgICAgaWYgKCFlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZS0+ZnVuY3Rpb24tPm5hbWUs
ICJkYXNoYm9hcmQtcmVnaW9uKCIpIHx8ICFhcmdzKSB7CiAgICAgICAgICAgICB2YWxpZCA9IGZh
bHNlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTQ0NTYsNyArNDQzMyw3IEBA
IGJvb2wgQ1NTUGFyc2VyOjpwYXJzZURhc2hib2FyZFJlZ2lvbnMoQ1NTUHJvcGVydHlJRCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KQogICAgIHJldHVybiB2YWxpZDsKIH0KIAotI2VuZGlmIC8qIEVO
QUJMRShEQVNIQk9BUkRfU1VQUE9SVCkgfHwgRU5BQkxFKFdJREdFVF9SRUdJT04pICovCisjZW5k
aWYgLyogRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSAqLwogCiBQYXNzUmVmUHRyPENTU1ZhbHVl
PiBDU1NQYXJzZXI6OnBhcnNlQ291bnRlckNvbnRlbnQoQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcmdz
LCBib29sIGNvdW50ZXJzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlclZhbHVlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcApp
bmRleCA4Yjc2MjU1Li42MTEwODA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyVmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVz
LmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlclZh
bHVlOjpjcmVhdGVDU1NWYWx1ZSgpCiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RQ
SToKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRFBDTToKICAgICBjYXNlIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfUEFJUjoKLSNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8
IEVOQUJMRShXSURHRVRfUkVHSU9OKQorI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAg
ICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfREFTSEJPQVJEX1JFR0lPTjoKICNlbmRpZgog
ICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VTklDT0RFX1JBTkdFOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKaW5kZXggOTIyYTBmNi4uOTM3OWVlNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCkBAIC00NSw3ICs0NSw3IEBA
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgogCi0jaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBFTkFC
TEUoV0lER0VUX1JFR0lPTikKKyNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAjaW5jbHVk
ZSAiRGFzaGJvYXJkUmVnaW9uLmgiCiAjZW5kaWYKIApAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMg
aW5saW5lIGJvb2wgaXNWYWxpZENTU1VuaXRUeXBlRm9yRG91YmxlQ29udmVyc2lvbihDU1NQcmlt
aXRpdmVWYWx1ZTo6VW5pdAogICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19BVFRSOgog
ICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19DT1VOVEVSOgogICAgIGNhc2UgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19DT1VOVEVSX05BTUU6Ci0jaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQ
T1JUKSB8fCBFTkFCTEUoV0lER0VUX1JFR0lPTikKKyNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBP
UlQpCiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RBU0hCT0FSRF9SRUdJT046CiAj
ZW5kaWYKICNpZiAhRU5BQkxFKENTU19JTUFHRV9SRVNPTFVUSU9OKQpAQCAtMzMwLDcgKzMzMCw3
IEBAIHZvaWQgQ1NTUHJpbWl0aXZlVmFsdWU6OmluaXQoUGFzc1JlZlB0cjxRdWFkPiBxdWFkKQog
ICAgIG1fdmFsdWUucXVhZCA9IHF1YWQubGVha1JlZigpOwogfQogCi0jaWYgRU5BQkxFKERBU0hC
T0FSRF9TVVBQT1JUKSB8fCBFTkFCTEUoV0lER0VUX1JFR0lPTikKKyNpZiBFTkFCTEUoREFTSEJP
QVJEX1NVUFBPUlQpCiB2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjppbml0KFBhc3NSZWZQdHI8RGFz
aGJvYXJkUmVnaW9uPiByKQogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfREFTSEJP
QVJEX1JFR0lPTjsKQEAgLTM5MSw3ICszOTEsNyBAQCB2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjpj
bGVhbnVwKCkKICAgICBjYXNlIENTU19QQUlSOgogICAgICAgICBtX3ZhbHVlLnBhaXItPmRlcmVm
KCk7CiAgICAgICAgIGJyZWFrOwotI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkgfHwgRU5B
QkxFKFdJREdFVF9SRUdJT04pCisjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgIGNh
c2UgQ1NTX0RBU0hCT0FSRF9SRUdJT046CiAgICAgICAgIGlmIChtX3ZhbHVlLnJlZ2lvbikKICAg
ICAgICAgICAgIG1fdmFsdWUucmVnaW9uLT5kZXJlZigpOwpAQCAtMTA1NywxOSArMTA1NywxMyBA
QCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgICAg
ICAgICAgdGV4dCA9IHJlc3VsdC50b1N0cmluZygpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KLSNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8IEVOQUJMRShXSURHRVRfUkVH
SU9OKQorI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICAgICAgY2FzZSBDU1NfREFT
SEJPQVJEX1JFR0lPTjogewogICAgICAgICAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CiAgICAg
ICAgICAgICBmb3IgKERhc2hib2FyZFJlZ2lvbiogcmVnaW9uID0gZ2V0RGFzaGJvYXJkUmVnaW9u
VmFsdWUoKTsgcmVnaW9uOyByZWdpb24gPSByZWdpb24tPm1fbmV4dC5nZXQoKSkgewogICAgICAg
ICAgICAgICAgIGlmICghcmVzdWx0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnICcpOwotI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkgJiYgRU5BQkxF
KFdJREdFVF9SRUdJT04pCi0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChyZWdpb24tPm1f
Y3NzRnVuY3Rpb25OYW1lKTsKLSNlbGlmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiZGFzaGJvYXJkLXJlZ2lvbigiKTsKLSNl
bHNlCi0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoInJlZ2lvbigiKTsKLSNl
bmRpZgogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmVnaW9uLT5tX2xhYmVsKTsKICAg
ICAgICAgICAgICAgICBpZiAocmVnaW9uLT5tX2lzQ2lyY2xlKQogICAgICAgICAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIGNpcmNsZSIpOwpAQCAtMTE5Nyw3ICsxMTkxLDcgQEAg
UGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNsb25lRm9y
Q1NTT00oKSBjb25zdAogICAgICAgICAvLyBQYWlyIGlzIG5vdCBleHBvc2VkIHRvIHRoZSBDU1NP
TSwgbm8gbmVlZCBmb3IgYSBkZWVwIGNsb25lLgogICAgICAgICByZXN1bHQgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKG1fdmFsdWUucGFpcik7CiAgICAgICAgIGJyZWFrOwotI2lmIEVOQUJM
RShEQVNIQk9BUkRfU1VQUE9SVCkgfHwgRU5BQkxFKFdJREdFVF9SRUdJT04pCisjaWYgRU5BQkxF
KERBU0hCT0FSRF9TVVBQT1JUKQogICAgIGNhc2UgQ1NTX0RBU0hCT0FSRF9SRUdJT046CiAgICAg
ICAgIC8vIERhc2hib2FyZFJlZ2lvbiBpcyBub3QgZXhwb3NlZCB0byB0aGUgQ1NTT00sIG5vIG5l
ZWQgZm9yIGEgZGVlcCBjbG9uZS4KICAgICAgICAgcmVzdWx0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShtX3ZhbHVlLnJlZ2lvbik7CkBAIC0xMjg5LDcgKzEyODMsNyBAQCB2b2lkIENTU1By
aW1pdGl2ZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byogbWVtb3J5T2JqZQogICAgIGNhc2UgQ1NTX1BBSVI6CiAgICAgICAgIGluZm8uYWRkTWVtYmVy
KG1fdmFsdWUucGFpcik7CiAgICAgICAgIGJyZWFrOwotI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQ
UE9SVCkgfHwgRU5BQkxFKFdJREdFVF9SRUdJT04pCisjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQ
T1JUKQogICAgIGNhc2UgQ1NTX0RBU0hCT0FSRF9SRUdJT046CiAgICAgICAgIGluZm8uYWRkTWVt
YmVyKG1fdmFsdWUucmVnaW9uKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5oCmluZGV4IDEwM2VhNmEuLmRiNGExN2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5oCkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICAgICAg
Q1NTX0RQSSA9IDMwLAogICAgICAgICBDU1NfRFBDTSA9IDMxLAogICAgICAgICBDU1NfUEFJUiA9
IDEwMCwgLy8gV2UgZW52aXNpb24gdGhpcyBiZWluZyBleHBvc2VkIGFzIGEgbWVhbnMgb2YgZ2V0
dGluZyBjb21wdXRlZCBzdHlsZSB2YWx1ZXMgZm9yIHBhaXJzIChib3JkZXItc3BhY2luZy9yYWRp
dXMsIGJhY2tncm91bmQtcG9zaXRpb24sIGV0Yy4pCi0jaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQ
T1JUKSB8fCBFTkFCTEUoV0lER0VUX1JFR0lPTikKKyNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBP
UlQpCiAgICAgICAgIENTU19EQVNIQk9BUkRfUkVHSU9OID0gMTAxLCAvLyBGSVhNRTogRGFzaGJv
YXJkIHJlZ2lvbiBzaG91bGQgbm90IGJlIGEgcHJpbWl0aXZlIHZhbHVlLgogI2VuZGlmCiAgICAg
ICAgIENTU19VTklDT0RFX1JBTkdFID0gMTAyLApAQCAtMjg0LDcgKzI4NCw3IEBAIHB1YmxpYzoK
ICAgICBQYWlyKiBnZXRQYWlyVmFsdWUoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIFBhaXIq
IGdldFBhaXJWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgIT0gQ1NT
X1BBSVIgPyAwIDogbV92YWx1ZS5wYWlyOyB9CiAKLSNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBP
UlQpIHx8IEVOQUJMRShXSURHRVRfUkVHSU9OKQorI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9S
VCkKICAgICBEYXNoYm9hcmRSZWdpb24qIGdldERhc2hib2FyZFJlZ2lvblZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV9wcmltaXRpdmVVbml0VHlwZSAhPSBDU1NfREFTSEJPQVJEX1JFR0lPTiA/IDAg
OiBtX3ZhbHVlLnJlZ2lvbjsgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3Bw
CmluZGV4IGI1YTlkM2YuLmJmMmVhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcm9wZXJ0eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcApA
QCAtNzAyLDcgKzcwMiw3IEBAIGJvb2wgQ1NTUHJvcGVydHk6OmlzSW5oZXJpdGVkUHJvcGVydHko
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXREYXNo
Ym9hcmRSZWdpb246CiAjZW5kaWYKICNpZiBFTkFCTEUoV0lER0VUX1JFR0lPTikKLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0V2lkZ2V0UmVnaW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRBcHBSZWdpb246CiAjZW5kaWYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGNhc2UgQ1NT
UHJvcGVydHlJbnZhbGlkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3Bl
cnR5TmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgppbmRl
eCBiZGQ4NDg4Li45MGM4NmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJv
cGVydHlOYW1lcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5p
bgpAQCAtNDA5LDcgKzQwOSw3IEBAIHotaW5kZXgKIC13ZWJraXQtZGFzaGJvYXJkLXJlZ2lvbgog
I2VuZGlmCiAjaWYgZGVmaW5lZChFTkFCTEVfV0lER0VUX1JFR0lPTikgJiYgRU5BQkxFX1dJREdF
VF9SRUdJT04KLS13ZWJraXQtd2lkZ2V0LXJlZ2lvbgorLXdlYmtpdC1hcHAtcmVnaW9uCiAjZW5k
aWYKICNpZiBkZWZpbmVkKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpICYm
IEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcKIC13ZWJraXQtb3ZlcmZsb3ct
c2Nyb2xsaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jk
cy5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCmluZGV4IDRiOTk2
NzkuLjU2YzM3YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdv
cmRzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCkBAIC05
NjMsMyArOTYzLDggQEAgc25hcAogLXdlYmtpdC1wYWdlZC14CiAtd2Via2l0LXBhZ2VkLXkKIAor
Ly8gLXdlYmtpdC1hcHAtcmVnaW9uCisjaWYgZGVmaW5lZChFTkFCTEVfV0lER0VUX1JFR0lPTikg
JiYgRU5BQkxFX1dJREdFVF9SRUdJT04KK2RyYWcKK25vLWRyYWcKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0Rhc2hib2FyZFJlZ2lvbi5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0Rhc2hib2FyZFJlZ2lvbi5oCmluZGV4IGE2OThlNDkuLjkxZTVkN2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9EYXNoYm9hcmRSZWdpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRGFzaGJvYXJkUmVnaW9uLmgKQEAgLTIzLDcgKzIzLDcgQEAKIAogI2luY2x1ZGUgIlJl
Y3QuaCIKIAotI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkgfHwgRU5BQkxFKFdJREdFVF9S
RUdJT04pCisjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTM3LDExICszNyw2IEBAIHB1YmxpYzoKICAgICBib29sIG1faXNDaXJjbGUgOiAx
OwogICAgIGJvb2wgbV9pc1JlY3RhbmdsZSA6IDE7CiAKLSNpZiBFTkFCTEUoREFTSEJPQVJEX1NV
UFBPUlQpICYmIEVOQUJMRShXSURHRVRfUkVHSU9OKQotICAgIC8vIFVzZWQgdG8gdGVsbCBkaWZm
ZXJlbnQgQ1NTIGZ1bmN0aW9uIG5hbWUgd2hlbiBib3RoIGZlYXR1cmVzIGFyZSBlbmFibGVkLgot
ICAgIFN0cmluZyBtX2Nzc0Z1bmN0aW9uTmFtZTsKLSNlbmRpZgotCiBwcml2YXRlOgogICAgIERh
c2hib2FyZFJlZ2lvbigpIDogbV9pc0NpcmNsZShmYWxzZSksIG1faXNSZWN0YW5nbGUoZmFsc2Up
IHsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCA2YWUzNWFjLi4z
NTdlNDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xMzUsNyArMTM1
LDcgQEAKICNpbmNsdWRlICJXZWJLaXRDU1NGaWx0ZXJWYWx1ZS5oIgogI2VuZGlmCiAKLSNpZiBF
TkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8IEVOQUJMRShXSURHRVRfUkVHSU9OKQorI2lmIEVO
QUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICNpbmNsdWRlICJEYXNoYm9hcmRSZWdpb24uaCIKICNl
bmRpZgogCkBAIC0zOTE3LDEzICszOTE3LDggQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVBy
b3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICAgICAgc2V0VGV4
dFNpemVBZGp1c3QocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVBdXRvKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8
IEVOQUJMRShXSURHRVRfUkVHSU9OKQogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RGFzaGJvYXJkUmVnaW9uOgotI2VuZGlmCi0jaWYgRU5B
QkxFKFdJREdFVF9SRUdJT04pCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdpZGdldFJlZ2lv
bjoKLSNlbmRpZgogICAgIHsKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoZGFz
aGJvYXJkUmVnaW9ucywgRGFzaGJvYXJkUmVnaW9ucykKICAgICAgICAgaWYgKCFwcmltaXRpdmVW
YWx1ZSkKQEAgLTM5NjEsMTEgKzM5NTYsMjAgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVBy
b3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICAgICAgICAgIHJl
Z2lvbiA9IHJlZ2lvbi0+bV9uZXh0LmdldCgpOwogICAgICAgICB9CiAKLSAgICAgICAgbV9lbGVt
ZW50LT5kb2N1bWVudCgpLT5zZXRIYXNEYXNoYm9hcmRSZWdpb25zKHRydWUpOworICAgICAgICBt
X2VsZW1lbnQtPmRvY3VtZW50KCktPnNldEhhc0Fubm90YXRlZFJlZ2lvbnModHJ1ZSk7CiAKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgorI2lmIEVOQUJMRShXSURHRVRfUkVHSU9OKQor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBcHBSZWdpb246IHsKKyAgICAgICAgaWYgKCFwcmlt
aXRpdmVWYWx1ZSB8fCAhcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIG1fc3R5bGUtPnNldERyYWdnYWJsZVJlZ2lvbk1vZGUocHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVEcmFnID8gRHJhZ2dhYmxlUmVnaW9uRHJhZyA6
IERyYWdnYWJsZVJlZ2lvbk5vRHJhZyk7CisgICAgICAgIG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+
c2V0SGFzQW5ub3RhdGVkUmVnaW9ucyh0cnVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNl
bmRpZgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlV2lkdGg6IHsKICAgICAg
ICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodGV4dFN0cm9rZVdpZHRoLCBUZXh0U3Ryb2tl
V2lkdGgpCiAgICAgICAgIGZsb2F0IHdpZHRoID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmlu
ZGV4IDAwOWM4NDUuLjlkYWYwMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDU5LDgg
KzQ1OSw4IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVy
bCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkKICAgICAsIG1fc2F2ZWRSZW5kZXJlcigwKQog
ICAgICwgbV9kZXNpZ25Nb2RlKGluaGVyaXQpCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JU
KSB8fCBFTkFCTEUoV0lER0VUX1JFR0lPTikKLSAgICAsIG1faGFzRGFzaGJvYXJkUmVnaW9ucyhm
YWxzZSkKLSAgICAsIG1fZGFzaGJvYXJkUmVnaW9uc0RpcnR5KGZhbHNlKQorICAgICwgbV9oYXNB
bm5vdGF0ZWRSZWdpb25zKGZhbHNlKQorICAgICwgbV9hbm5vdGF0ZWRSZWdpb25zRGlydHkoZmFs
c2UpCiAjZW5kaWYKICAgICAsIG1fY3JlYXRlUmVuZGVyZXJzKHRydWUpCiAgICAgLCBtX2luUGFn
ZUNhY2hlKGZhbHNlKQpAQCAtMzM1NSwxNSArMzM1NSwxNSBAQCB2b2lkIERvY3VtZW50OjphY3Rp
dmVDaGFpbk5vZGVEZXRhY2hlZChOb2RlKiBub2RlKQogfQogCiAjaWYgRU5BQkxFKERBU0hCT0FS
RF9TVVBQT1JUKSB8fCBFTkFCTEUoV0lER0VUX1JFR0lPTikKLWNvbnN0IFZlY3RvcjxEYXNoYm9h
cmRSZWdpb25WYWx1ZT4mIERvY3VtZW50OjpkYXNoYm9hcmRSZWdpb25zKCkgY29uc3QKK2NvbnN0
IFZlY3RvcjxBbm5vdGF0ZWRSZWdpb25WYWx1ZT4mIERvY3VtZW50Ojphbm5vdGF0ZWRSZWdpb25z
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kYXNoYm9hcmRSZWdpb25zOworICAgIHJldHVybiBt
X2Fubm90YXRlZFJlZ2lvbnM7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNldERhc2hib2FyZFJlZ2lv
bnMoY29uc3QgVmVjdG9yPERhc2hib2FyZFJlZ2lvblZhbHVlPiYgcmVnaW9ucykKK3ZvaWQgRG9j
dW1lbnQ6OnNldEFubm90YXRlZFJlZ2lvbnMoY29uc3QgVmVjdG9yPEFubm90YXRlZFJlZ2lvblZh
bHVlPiYgcmVnaW9ucykKIHsKLSAgICBtX2Rhc2hib2FyZFJlZ2lvbnMgPSByZWdpb25zOwotICAg
IHNldERhc2hib2FyZFJlZ2lvbnNEaXJ0eShmYWxzZSk7CisgICAgbV9hbm5vdGF0ZWRSZWdpb25z
ID0gcmVnaW9uczsKKyAgICBzZXRBbm5vdGF0ZWRSZWdpb25zRGlydHkoZmFsc2UpOwogfQogI2Vu
ZGlmCiAKQEAgLTU4OTEsOCArNTg5MSw4IEBAIHZvaWQgRG9jdW1lbnQ6OnJlcG9ydE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgaW5mby5h
ZGRNZW1iZXIobV9jb250ZW50TGFuZ3VhZ2UpOwogICAgIGluZm8uYWRkSGFzaE1hcChtX2RvY3Vt
ZW50TmFtZWRJdGVtQ29sbGVjdGlvbnMpOwogICAgIGluZm8uYWRkSGFzaE1hcChtX3dpbmRvd05h
bWVkSXRlbUNvbGxlY3Rpb25zKTsKLSNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCi0gICAg
aW5mby5hZGRNZW1iZXIobV9kYXNoYm9hcmRSZWdpb25zKTsKKyNpZiBFTkFCTEUoREFTSEJPQVJE
X1NVUFBPUlQpIHx8IEVOQUJMRShXSURHRVRfUkVHSU9OKQorICAgIGluZm8uYWRkTWVtYmVyKG1f
YW5ub3RhdGVkUmVnaW9ucyk7CiAjZW5kaWYKICAgICBpbmZvLmFkZEhhc2hNYXAobV9jc3NDYW52
YXNFbGVtZW50cyk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9pY29uVVJMcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCmluZGV4IGY2ZDcwMGEuLjJhMjQ0YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0x
NTgsNyArMTU4LDcgQEAgY2xhc3MgVHJhbnNmb3JtU291cmNlOwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8IEVOQUJMRShXSURHRVRfUkVHSU9OKQotc3RydWN0IERh
c2hib2FyZFJlZ2lvblZhbHVlOworc3RydWN0IEFubm90YXRlZFJlZ2lvblZhbHVlOwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpAQCAtOTk2LDEyICs5OTYsMTIgQEAgcHVibGlj
OgogICAgIGJvb2wgZnJhbWVFbGVtZW50c1Nob3VsZElnbm9yZVNjcm9sbGluZygpIGNvbnN0IHsg
cmV0dXJuIG1fZnJhbWVFbGVtZW50c1Nob3VsZElnbm9yZVNjcm9sbGluZzsgfQogCiAjaWYgRU5B
QkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBFTkFCTEUoV0lER0VUX1JFR0lPTikKLSAgICB2b2lk
IHNldERhc2hib2FyZFJlZ2lvbnNEaXJ0eShib29sIGYpIHsgbV9kYXNoYm9hcmRSZWdpb25zRGly
dHkgPSBmOyB9Ci0gICAgYm9vbCBkYXNoYm9hcmRSZWdpb25zRGlydHkoKSBjb25zdCB7IHJldHVy
biBtX2Rhc2hib2FyZFJlZ2lvbnNEaXJ0eTsgfQotICAgIGJvb2wgaGFzRGFzaGJvYXJkUmVnaW9u
cyAoKSBjb25zdCB7IHJldHVybiBtX2hhc0Rhc2hib2FyZFJlZ2lvbnM7IH0KLSAgICB2b2lkIHNl
dEhhc0Rhc2hib2FyZFJlZ2lvbnMoYm9vbCBmKSB7IG1faGFzRGFzaGJvYXJkUmVnaW9ucyA9IGY7
IH0KLSAgICBjb25zdCBWZWN0b3I8RGFzaGJvYXJkUmVnaW9uVmFsdWU+JiBkYXNoYm9hcmRSZWdp
b25zKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXREYXNoYm9hcmRSZWdpb25zKGNvbnN0IFZlY3RvcjxE
YXNoYm9hcmRSZWdpb25WYWx1ZT4mKTsKKyAgICB2b2lkIHNldEFubm90YXRlZFJlZ2lvbnNEaXJ0
eShib29sIGYpIHsgbV9hbm5vdGF0ZWRSZWdpb25zRGlydHkgPSBmOyB9CisgICAgYm9vbCBhbm5v
dGF0ZWRSZWdpb25zRGlydHkoKSBjb25zdCB7IHJldHVybiBtX2Fubm90YXRlZFJlZ2lvbnNEaXJ0
eTsgfQorICAgIGJvb2wgaGFzQW5ub3RhdGVkUmVnaW9ucyAoKSBjb25zdCB7IHJldHVybiBtX2hh
c0Fubm90YXRlZFJlZ2lvbnM7IH0KKyAgICB2b2lkIHNldEhhc0Fubm90YXRlZFJlZ2lvbnMoYm9v
bCBmKSB7IG1faGFzQW5ub3RhdGVkUmVnaW9ucyA9IGY7IH0KKyAgICBjb25zdCBWZWN0b3I8QW5u
b3RhdGVkUmVnaW9uVmFsdWU+JiBhbm5vdGF0ZWRSZWdpb25zKCkgY29uc3Q7CisgICAgdm9pZCBz
ZXRBbm5vdGF0ZWRSZWdpb25zKGNvbnN0IFZlY3RvcjxBbm5vdGF0ZWRSZWdpb25WYWx1ZT4mKTsK
ICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCk7CkBA
IC0xNDA5LDkgKzE0MDksOSBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFTSEJP
QVJEX1NVUFBPUlQpIHx8IEVOQUJMRShXSURHRVRfUkVHSU9OKQotICAgIFZlY3RvcjxEYXNoYm9h
cmRSZWdpb25WYWx1ZT4gbV9kYXNoYm9hcmRSZWdpb25zOwotICAgIGJvb2wgbV9oYXNEYXNoYm9h
cmRSZWdpb25zOwotICAgIGJvb2wgbV9kYXNoYm9hcmRSZWdpb25zRGlydHk7CisgICAgVmVjdG9y
PEFubm90YXRlZFJlZ2lvblZhbHVlPiBtX2Fubm90YXRlZFJlZ2lvbnM7CisgICAgYm9vbCBtX2hh
c0Fubm90YXRlZFJlZ2lvbnM7CisgICAgYm9vbCBtX2Fubm90YXRlZFJlZ2lvbnNEaXJ0eTsKICNl
bmRpZgogCiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4gPiBt
X2Nzc0NhbnZhc0VsZW1lbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4IGNjYTRhMDkuLmU5
NWIyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTQ5MSw3ICs0OTEsNyBAQCB2b2lkIENo
cm9tZTo6c2NoZWR1bGVBbmltYXRpb24oKQogLy8gLS0tLS0tLS0KIAogI2lmIEVOQUJMRShEQVNI
Qk9BUkRfU1VQUE9SVCkgfHwgRU5BQkxFKFdJREdFVF9SRUdJT04pCi12b2lkIENocm9tZUNsaWVu
dDo6ZGFzaGJvYXJkUmVnaW9uc0NoYW5nZWQoKQordm9pZCBDaHJvbWVDbGllbnQ6OmFubm90YXRl
ZFJlZ2lvbnNDaGFuZ2VkKCkKIHsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50
LmgKaW5kZXggZmE1YjQ4NS4uMmI0ODY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5o
CkBAIC0yMDcsNyArMjA3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFs
IHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbios
IGludDY0X3QgdG90YWxTcGFjZU5lZWRlZCkgPSAwOwogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9T
VVBQT1JUKSB8fCBFTkFCTEUoV0lER0VUX1JFR0lPTikKLSAgICAgICAgdmlydHVhbCB2b2lkIGRh
c2hib2FyZFJlZ2lvbnNDaGFuZ2VkKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhbm5vdGF0ZWRS
ZWdpb25zQ2hhbmdlZCgpOwogI2VuZGlmCiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRl
VmlzaXRlZExpbmtzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMjkyNTgyMy4u
MTI2YmE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMTIxMyw3ICsxMjEzLDcg
QEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29sIGFsbG93U3VidHJlZSkKICAgICAgICAgcm9v
dC0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5wb3N0Tm90aWZpY2F0aW9uKHJvb3QsIEFY
T2JqZWN0Q2FjaGU6OkFYTGF5b3V0Q29tcGxldGUsIHRydWUpOwogI2VuZGlmCiAjaWYgRU5BQkxF
KERBU0hCT0FSRF9TVVBQT1JUKSB8fCBFTkFCTEUoV0lER0VUX1JFR0lPTikKLSAgICB1cGRhdGVE
YXNoYm9hcmRSZWdpb25zKCk7CisgICAgdXBkYXRlQW5ub3RhdGVkUmVnaW9ucygpOwogI2VuZGlm
CiAKICAgICBBU1NFUlQoIXJvb3QtPm5lZWRzTGF5b3V0KCkpOwpAQCAtMjg4MywyMCArMjg4Mywy
MCBAQCBib29sIEZyYW1lVmlldzo6c2Nyb2xsQW5pbWF0b3JFbmFibGVkKCkgY29uc3QKIH0KIAog
I2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkgfHwgRU5BQkxFKFdJREdFVF9SRUdJT04pCi12
b2lkIEZyYW1lVmlldzo6dXBkYXRlRGFzaGJvYXJkUmVnaW9ucygpCit2b2lkIEZyYW1lVmlldzo6
dXBkYXRlQW5ub3RhdGVkUmVnaW9ucygpCiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9m
cmFtZS0+ZG9jdW1lbnQoKTsKLSAgICBpZiAoIWRvY3VtZW50LT5oYXNEYXNoYm9hcmRSZWdpb25z
KCkpCisgICAgaWYgKCFkb2N1bWVudC0+aGFzQW5ub3RhdGVkUmVnaW9ucygpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgVmVjdG9yPERhc2hib2FyZFJlZ2lvblZhbHVlPiBuZXdSZWdpb25zOwotICAg
IGRvY3VtZW50LT5yZW5kZXJCb3goKS0+Y29sbGVjdERhc2hib2FyZFJlZ2lvbnMobmV3UmVnaW9u
cyk7Ci0gICAgaWYgKG5ld1JlZ2lvbnMgPT0gZG9jdW1lbnQtPmRhc2hib2FyZFJlZ2lvbnMoKSkK
KyAgICBWZWN0b3I8QW5ub3RhdGVkUmVnaW9uVmFsdWU+IG5ld1JlZ2lvbnM7CisgICAgZG9jdW1l
bnQtPnJlbmRlckJveCgpLT5jb2xsZWN0QW5ub3RhdGVkUmVnaW9ucyhuZXdSZWdpb25zKTsKKyAg
ICBpZiAobmV3UmVnaW9ucyA9PSBkb2N1bWVudC0+YW5ub3RhdGVkUmVnaW9ucygpKQogICAgICAg
ICByZXR1cm47Ci0gICAgZG9jdW1lbnQtPnNldERhc2hib2FyZFJlZ2lvbnMobmV3UmVnaW9ucyk7
CisgICAgZG9jdW1lbnQtPnNldEFubm90YXRlZFJlZ2lvbnMobmV3UmVnaW9ucyk7CiAgICAgUGFn
ZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVy
bjsKLSAgICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPmRhc2hib2FyZFJlZ2lvbnNDaGFuZ2Vk
KCk7CisgICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5hbm5vdGF0ZWRSZWdpb25zQ2hhbmdl
ZCgpOwogfQogI2VuZGlmCiAKQEAgLTMyMjAsMTAgKzMyMjAsMTAgQEAgdm9pZCBGcmFtZVZpZXc6
OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0KiBwLCBjb25zdCBJbnRSZWN0JiByZWN0KQog
ICAgIG1fcGFpbnRCZWhhdmlvciA9IG9sZFBhaW50QmVoYXZpb3I7CiAgICAgbV9sYXN0UGFpbnRU
aW1lID0gY3VycmVudFRpbWUoKTsKIAotI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkgfHwg
RU5BQkxFKFdJREdFVF9SRUdJT04pCiAgICAgLy8gUmVnaW9ucyBtYXkgaGF2ZSBjaGFuZ2VkIGFz
IGEgcmVzdWx0IG9mIHRoZSB2aXNpYmlsaXR5L3otaW5kZXggb2YgZWxlbWVudCBjaGFuZ2luZy4K
LSAgICBpZiAoZG9jdW1lbnQtPmRhc2hib2FyZFJlZ2lvbnNEaXJ0eSgpKQotICAgICAgICB1cGRh
dGVEYXNoYm9hcmRSZWdpb25zKCk7CisjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBF
TkFCTEUoV0lER0VUX1JFR0lPTikKKyAgICBpZiAoZG9jdW1lbnQtPmFubm90YXRlZFJlZ2lvbnNE
aXJ0eSgpKQorICAgICAgICB1cGRhdGVBbm5vdGF0ZWRSZWdpb25zKCk7CiAjZW5kaWYKIAogICAg
IGlmIChpc1RvcExldmVsUGFpbnRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IGNlZWE3
M2YuLjI3OGFlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtMjIyLDcgKzIyMiw3IEBA
IHB1YmxpYzoKICAgICBib29sIHJlcGFpbnRzRGlzYWJsZWQoKSB7IHJldHVybiBtX2Rpc2FibGVS
ZXBhaW50cyA+IDA7IH0KIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkgfHwgRU5BQkxF
KFdJREdFVF9SRUdJT04pCi0gICAgdm9pZCB1cGRhdGVEYXNoYm9hcmRSZWdpb25zKCk7CisgICAg
dm9pZCB1cGRhdGVBbm5vdGF0ZWRSZWdpb25zKCk7CiAjZW5kaWYKICAgICB2b2lkIHVwZGF0ZUNv
bnRyb2xUaW50cygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3Bw
CmluZGV4IDIzOWFiYTMuLmUzZTgyMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbmxpbmUuY3BwCkBAIC0xNTI2LDEyICsxNTI2LDEzIEBAIHZvaWQgUmVuZGVySW5saW5lOjpw
YWludE91dGxpbmVGb3JMaW5lKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25z
dCBMCiB9CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8IEVOQUJMRShXSURHRVRf
UkVHSU9OKQotdm9pZCBSZW5kZXJJbmxpbmU6OmFkZERhc2hib2FyZFJlZ2lvbnMoVmVjdG9yPERh
c2hib2FyZFJlZ2lvblZhbHVlPiYgcmVnaW9ucykKK3ZvaWQgUmVuZGVySW5saW5lOjphZGRBbm5v
dGF0ZWRSZWdpb25zKFZlY3RvcjxBbm5vdGF0ZWRSZWdpb25WYWx1ZT4mIHJlZ2lvbnMpCiB7CiAg
ICAgLy8gQ29udmVydCB0aGUgc3R5bGUgcmVnaW9ucyB0byBhYnNvbHV0ZSBjb29yZGluYXRlcy4K
ICAgICBpZiAoc3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCiAgICAgICAgIHJldHVy
bjsKIAorI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICBjb25zdCBWZWN0b3I8U3R5
bGVEYXNoYm9hcmRSZWdpb24+JiBzdHlsZVJlZ2lvbnMgPSBzdHlsZSgpLT5kYXNoYm9hcmRSZWdp
b25zKCk7CiAgICAgdW5zaWduZWQgaSwgY291bnQgPSBzdHlsZVJlZ2lvbnMuc2l6ZSgpOwogICAg
IGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CkBAIC0xNTQxLDcgKzE1NDIsNyBAQCB2b2lk
IFJlbmRlcklubGluZTo6YWRkRGFzaGJvYXJkUmVnaW9ucyhWZWN0b3I8RGFzaGJvYXJkUmVnaW9u
VmFsdWU+JiByZWdpb25zKQogICAgICAgICBMYXlvdXRVbml0IHcgPSBsaW5lc0JvdW5kaW5nQm94
LndpZHRoKCk7CiAgICAgICAgIExheW91dFVuaXQgaCA9IGxpbmVzQm91bmRpbmdCb3guaGVpZ2h0
KCk7CiAKLSAgICAgICAgRGFzaGJvYXJkUmVnaW9uVmFsdWUgcmVnaW9uOworICAgICAgICBBbm5v
dGF0ZWRSZWdpb25WYWx1ZSByZWdpb247CiAgICAgICAgIHJlZ2lvbi5sYWJlbCA9IHN0eWxlUmVn
aW9uLmxhYmVsOwogICAgICAgICByZWdpb24uYm91bmRzID0gTGF5b3V0UmVjdChsaW5lc0JvdW5k
aW5nQm94LngoKSArIHN0eWxlUmVnaW9uLm9mZnNldC5sZWZ0KCkudmFsdWUoKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGluZXNCb3VuZGluZ0JveC55KCkgKyBzdHlsZVJlZ2lv
bi5vZmZzZXQudG9wKCkudmFsdWUoKSwKQEAgLTE1NjYsNiArMTU2NywyMSBAQCB2b2lkIFJlbmRl
cklubGluZTo6YWRkRGFzaGJvYXJkUmVnaW9ucyhWZWN0b3I8RGFzaGJvYXJkUmVnaW9uVmFsdWU+
JiByZWdpb25zKQogCiAgICAgICAgIHJlZ2lvbnMuYXBwZW5kKHJlZ2lvbik7CiAgICAgfQorI2Vs
c2UgLy8gRU5BQkxFKFdJREdFVF9SRUdJT04pCisgICAgQW5ub3RhdGVkUmVnaW9uVmFsdWUgcmVn
aW9uOworICAgIHJlZ2lvbi5kcmFnZ2FibGUgPSBzdHlsZSgpLT5nZXREcmFnZ2FibGVSZWdpb25N
b2RlKCkgPT0gRHJhZ2dhYmxlUmVnaW9uRHJhZzsKKyAgICByZWdpb24uYm91bmRzID0gbGluZXNC
b3VuZGluZ0JveCgpOworCisgICAgUmVuZGVyT2JqZWN0KiBjb250YWluZXIgPSBjb250YWluaW5n
QmxvY2soKTsKKyAgICBpZiAoIWNvbnRhaW5lcikKKyAgICAgICAgY29udGFpbmVyID0gdGhpczsK
KworICAgIEZsb2F0UG9pbnQgYWJzUG9zID0gY29udGFpbmVyLT5sb2NhbFRvQWJzb2x1dGUoKTsK
KyAgICByZWdpb24uYm91bmRzLnNldFgoYWJzUG9zLngoKSArIHJlZ2lvbi5ib3VuZHMueCgpKTsK
KyAgICByZWdpb24uYm91bmRzLnNldFkoYWJzUG9zLnkoKSArIHJlZ2lvbi5ib3VuZHMueSgpKTsK
KyAgICAKKyAgICByZWdpb25zLmFwcGVuZChyZWdpb24pOworI2VuZGlmCiB9CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCmluZGV4IDRhNWJiMDkuLmJlNzIz
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKQEAgLTE2Miw3ICsx
NjIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZElt
YWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IDApOwogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQ
T1JUKSB8fCBFTkFCTEUoV0lER0VUX1JFR0lPTikKLSAgICB2aXJ0dWFsIHZvaWQgYWRkRGFzaGJv
YXJkUmVnaW9ucyhWZWN0b3I8RGFzaGJvYXJkUmVnaW9uVmFsdWU+Jik7CisgICAgdmlydHVhbCB2
b2lkIGFkZEFubm90YXRlZFJlZ2lvbnMoVmVjdG9yPEFubm90YXRlZFJlZ2lvblZhbHVlPiYpOwog
I2VuZGlmCiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHls
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggNzU5ODYz
My4uNDhkMDczNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBA
IC0xNzE4LDEwICsxNzE4LDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xsVG8oaW50IHgsIGlu
dCB5KQogICAgIC8vIFdlIHNob3VsZCBoYXZlIGEgUmVuZGVyVmlldyBpZiB3ZSdyZSB0cnlpbmcg
dG8gc2Nyb2xsLgogICAgIEFTU0VSVCh2aWV3KTsKICAgICBpZiAodmlldykgeworICAgICAgICAv
LyBVcGRhdGUgcmVnaW9ucywgc2Nyb2xsaW5nIG1heSBjaGFuZ2UgdGhlIGNsaXAgb2YgYSBwYXJ0
aWN1bGFyIHJlZ2lvbi4KICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8IEVOQUJMRShX
SURHRVRfUkVHSU9OKQotICAgICAgICAvLyBVcGRhdGUgZGFzaGJvYXJkIHJlZ2lvbnMsIHNjcm9s
bGluZyBtYXkgY2hhbmdlIHRoZSBjbGlwIG9mIGEKLSAgICAgICAgLy8gcGFydGljdWxhciByZWdp
b24uCi0gICAgICAgIHZpZXctPmZyYW1lVmlldygpLT51cGRhdGVEYXNoYm9hcmRSZWdpb25zKCk7
CisgICAgICAgIHZpZXctPmZyYW1lVmlldygpLT51cGRhdGVBbm5vdGF0ZWRSZWdpb25zKCk7CiAj
ZW5kaWYKIAogICAgICAgICB2aWV3LT51cGRhdGVXaWRnZXRQb3NpdGlvbnMoKTsKQEAgLTIzNzgs
MTAgKzIzNzcsMTAgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2V0SGFzSG9yaXpvbnRhbFNjcm9sbGJh
cihib29sIGhhc1Njcm9sbGJhcikKICAgICBpZiAobV92QmFyKQogICAgICAgICBtX3ZCYXItPnN0
eWxlQ2hhbmdlZCgpOwogCi0jaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBFTkFCTEUo
V0lER0VUX1JFR0lPTikKICAgICAvLyBGb3JjZSBhbiB1cGRhdGUgc2luY2Ugd2Uga25vdyB0aGUg
c2Nyb2xsYmFycyBoYXZlIGNoYW5nZWQgdGhpbmdzLgotICAgIGlmIChyZW5kZXJlcigpLT5kb2N1
bWVudCgpLT5oYXNEYXNoYm9hcmRSZWdpb25zKCkpCi0gICAgICAgIHJlbmRlcmVyKCktPmRvY3Vt
ZW50KCktPnNldERhc2hib2FyZFJlZ2lvbnNEaXJ0eSh0cnVlKTsKKyNpZiBFTkFCTEUoREFTSEJP
QVJEX1NVUFBPUlQpIHx8IEVOQUJMRShXSURHRVRfUkVHSU9OKQorICAgIGlmIChyZW5kZXJlcigp
LT5kb2N1bWVudCgpLT5oYXNBbm5vdGF0ZWRSZWdpb25zKCkpCisgICAgICAgIHJlbmRlcmVyKCkt
PmRvY3VtZW50KCktPnNldEFubm90YXRlZFJlZ2lvbnNEaXJ0eSh0cnVlKTsKICNlbmRpZgogfQog
CkBAIC0yNDAxLDEwICsyNDAwLDEwIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNldEhhc1ZlcnRpY2Fs
U2Nyb2xsYmFyKGJvb2wgaGFzU2Nyb2xsYmFyKQogICAgIGlmIChtX3ZCYXIpCiAgICAgICAgIG1f
dkJhci0+c3R5bGVDaGFuZ2VkKCk7CiAKLSNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8
IEVOQUJMRShXSURHRVRfUkVHSU9OKQogICAgIC8vIEZvcmNlIGFuIHVwZGF0ZSBzaW5jZSB3ZSBr
bm93IHRoZSBzY3JvbGxiYXJzIGhhdmUgY2hhbmdlZCB0aGluZ3MuCi0gICAgaWYgKHJlbmRlcmVy
KCktPmRvY3VtZW50KCktPmhhc0Rhc2hib2FyZFJlZ2lvbnMoKSkKLSAgICAgICAgcmVuZGVyZXIo
KS0+ZG9jdW1lbnQoKS0+c2V0RGFzaGJvYXJkUmVnaW9uc0RpcnR5KHRydWUpOworI2lmIEVOQUJM
RShEQVNIQk9BUkRfU1VQUE9SVCkgfHwgRU5BQkxFKFdJREdFVF9SRUdJT04pCisgICAgaWYgKHJl
bmRlcmVyKCktPmRvY3VtZW50KCktPmhhc0Fubm90YXRlZFJlZ2lvbnMoKSkKKyAgICAgICAgcmVu
ZGVyZXIoKS0+ZG9jdW1lbnQoKS0+c2V0QW5ub3RhdGVkUmVnaW9uc0RpcnR5KHRydWUpOwogI2Vu
ZGlmCiB9CiAKQEAgLTI1OTEsMTAgKzI1OTAsMTAgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRl
U2Nyb2xsYmFyc0FmdGVyTGF5b3V0KCkKIAogICAgICAgICB1cGRhdGVTZWxmUGFpbnRpbmdMYXll
cigpOwogCi0jaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBFTkFCTEUoV0lER0VUX1JF
R0lPTikKICAgICAgICAgLy8gRm9yY2UgYW4gdXBkYXRlIHNpbmNlIHdlIGtub3cgdGhlIHNjcm9s
bGJhcnMgaGF2ZSBjaGFuZ2VkIHRoaW5ncy4KLSAgICAgICAgaWYgKHJlbmRlcmVyKCktPmRvY3Vt
ZW50KCktPmhhc0Rhc2hib2FyZFJlZ2lvbnMoKSkKLSAgICAgICAgICAgIHJlbmRlcmVyKCktPmRv
Y3VtZW50KCktPnNldERhc2hib2FyZFJlZ2lvbnNEaXJ0eSh0cnVlKTsKKyNpZiBFTkFCTEUoREFT
SEJPQVJEX1NVUFBPUlQpIHx8IEVOQUJMRShXSURHRVRfUkVHSU9OKQorICAgICAgICBpZiAocmVu
ZGVyZXIoKS0+ZG9jdW1lbnQoKS0+aGFzQW5ub3RhdGVkUmVnaW9ucygpKQorICAgICAgICAgICAg
cmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+c2V0QW5ub3RhdGVkUmVnaW9uc0RpcnR5KHRydWUpOwog
I2VuZGlmCiAKICAgICAgICAgcmVuZGVyZXIoKS0+cmVwYWludCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4IDA3OWNlNDIuLjY3ZTIyNzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTg3NiwxMCArODc2
LDEwIEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6c2V0SGFzVmVydGljYWxTY3JvbGxiYXIoYm9vbCBo
YXNTY3JvbGxiYXIpCiAgICAgaWYgKG1fdkJhcikKICAgICAgICAgbV92QmFyLT5zdHlsZUNoYW5n
ZWQoKTsKIAotI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkgfHwgRU5BQkxFKFdJREdFVF9S
RUdJT04pCiAgICAgLy8gRm9yY2UgYW4gdXBkYXRlIHNpbmNlIHdlIGtub3cgdGhlIHNjcm9sbGJh
cnMgaGF2ZSBjaGFuZ2VkIHRoaW5ncy4KLSAgICBpZiAoZG9jdW1lbnQoKS0+aGFzRGFzaGJvYXJk
UmVnaW9ucygpKQotICAgICAgICBkb2N1bWVudCgpLT5zZXREYXNoYm9hcmRSZWdpb25zRGlydHko
dHJ1ZSk7CisjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBFTkFCTEUoV0lER0VUX1JF
R0lPTikKKyAgICBpZiAoZG9jdW1lbnQoKS0+aGFzQW5ub3RhdGVkUmVnaW9ucygpKQorICAgICAg
ICBkb2N1bWVudCgpLT5zZXRBbm5vdGF0ZWRSZWdpb25zRGlydHkodHJ1ZSk7CiAjZW5kaWYKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCBjNTIzZDI2
Li5jODJkMDc4IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApA
QCAtMTgxMiw3ICsxODEyLDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnN0eWxlV2lsbENoYW5nZShT
dHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1MKICAgICAgICAgICAg
ICAgICB8fCBtX3N0eWxlLT5oYXNBdXRvWkluZGV4KCkgIT0gbmV3U3R5bGUtPmhhc0F1dG9aSW5k
ZXgoKTsKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8IEVOQUJMRShXSURHRVRfUkVH
SU9OKQogICAgICAgICAgICAgaWYgKHZpc2liaWxpdHlDaGFuZ2VkKQotICAgICAgICAgICAgICAg
IGRvY3VtZW50KCktPnNldERhc2hib2FyZFJlZ2lvbnNEaXJ0eSh0cnVlKTsKKyAgICAgICAgICAg
ICAgICBkb2N1bWVudCgpLT5zZXRBbm5vdGF0ZWRSZWdpb25zRGlydHkodHJ1ZSk7CiAjZW5kaWYK
ICAgICAgICAgICAgIGlmICh2aXNpYmlsaXR5Q2hhbmdlZCAmJiBBWE9iamVjdENhY2hlOjphY2Nl
c3NpYmlsaXR5RW5hYmxlZCgpKQogICAgICAgICAgICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0
Q2FjaGUoKS0+Y2hpbGRyZW5DaGFuZ2VkKHRoaXMpOwpAQCAtMjczNSwxNCArMjczNSwxNiBAQCB2
b2lkIFJlbmRlck9iamVjdDo6Z2V0VGV4dERlY29yYXRpb25Db2xvcnMoaW50IGRlY29yYXRpb25z
LCBDb2xvciYgdW5kZXJsaW5lLCBDbwogfQogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JU
KSB8fCBFTkFCTEUoV0lER0VUX1JFR0lPTikKLXZvaWQgUmVuZGVyT2JqZWN0OjphZGREYXNoYm9h
cmRSZWdpb25zKFZlY3RvcjxEYXNoYm9hcmRSZWdpb25WYWx1ZT4mIHJlZ2lvbnMpCit2b2lkIFJl
bmRlck9iamVjdDo6YWRkQW5ub3RhdGVkUmVnaW9ucyhWZWN0b3I8QW5ub3RhdGVkUmVnaW9uVmFs
dWU+JiByZWdpb25zKQogewogICAgIC8vIENvbnZlcnQgdGhlIHN0eWxlIHJlZ2lvbnMgdG8gYWJz
b2x1dGUgY29vcmRpbmF0ZXMuCiAgICAgaWYgKHN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJ
QkxFIHx8ICFpc0JveCgpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgUmVuZGVyQm94KiBi
b3ggPSB0b1JlbmRlckJveCh0aGlzKTsKKyAgICBGbG9hdFBvaW50IGFic1BvcyA9IGxvY2FsVG9B
YnNvbHV0ZSgpOwogCisjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgIGNvbnN0IFZl
Y3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4mIHN0eWxlUmVnaW9ucyA9IHN0eWxlKCktPmRhc2hi
b2FyZFJlZ2lvbnMoKTsKICAgICB1bnNpZ25lZCBpLCBjb3VudCA9IHN0eWxlUmVnaW9ucy5zaXpl
KCk7CiAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKQEAgLTI3NTEsNyArMjc1Myw3
IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjphZGREYXNoYm9hcmRSZWdpb25zKFZlY3RvcjxEYXNoYm9h
cmRSZWdpb25WYWx1ZT4mIHJlZ2lvbnMpCiAgICAgICAgIExheW91dFVuaXQgdyA9IGJveC0+d2lk
dGgoKTsKICAgICAgICAgTGF5b3V0VW5pdCBoID0gYm94LT5oZWlnaHQoKTsKIAotICAgICAgICBE
YXNoYm9hcmRSZWdpb25WYWx1ZSByZWdpb247CisgICAgICAgIEFubm90YXRlZFJlZ2lvblZhbHVl
IHJlZ2lvbjsKICAgICAgICAgcmVnaW9uLmxhYmVsID0gc3R5bGVSZWdpb24ubGFiZWw7CiAgICAg
ICAgIHJlZ2lvbi5ib3VuZHMgPSBMYXlvdXRSZWN0KHN0eWxlUmVnaW9uLm9mZnNldC5sZWZ0KCku
dmFsdWUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVSZWdpb24u
b2Zmc2V0LnRvcCgpLnZhbHVlKCksCkBAIC0yNzY2LDI0ICsyNzY4LDI5IEBAIHZvaWQgUmVuZGVy
T2JqZWN0OjphZGREYXNoYm9hcmRSZWdpb25zKFZlY3RvcjxEYXNoYm9hcmRSZWdpb25WYWx1ZT4m
IHJlZ2lvbnMpCiAgICAgICAgICAgICByZWdpb24uY2xpcC5zZXRXaWR0aCgwKTsKICAgICAgICAg
fQogCi0gICAgICAgIEZsb2F0UG9pbnQgYWJzUG9zID0gbG9jYWxUb0Fic29sdXRlKCk7CiAgICAg
ICAgIHJlZ2lvbi5ib3VuZHMuc2V0WChhYnNQb3MueCgpICsgc3R5bGVSZWdpb24ub2Zmc2V0Lmxl
ZnQoKS52YWx1ZSgpKTsKICAgICAgICAgcmVnaW9uLmJvdW5kcy5zZXRZKGFic1Bvcy55KCkgKyBz
dHlsZVJlZ2lvbi5vZmZzZXQudG9wKCkudmFsdWUoKSk7CiAKICAgICAgICAgcmVnaW9ucy5hcHBl
bmQocmVnaW9uKTsKICAgICB9CisjZWxzZSAvLyBFTkFCTEUoV0lER0VUX1JFR0lPTikKKyAgICBB
bm5vdGF0ZWRSZWdpb25WYWx1ZSByZWdpb247CisgICAgcmVnaW9uLmRyYWdnYWJsZSA9IHN0eWxl
KCktPmdldERyYWdnYWJsZVJlZ2lvbk1vZGUoKSA9PSBEcmFnZ2FibGVSZWdpb25EcmFnOworICAg
IHJlZ2lvbi5ib3VuZHMgPSBMYXlvdXRSZWN0KGFic1Bvcy54KCksIGFic1Bvcy55KCksIGJveC0+
d2lkdGgoKSwgYm94LT5oZWlnaHQoKSk7CisgICAgcmVnaW9ucy5hcHBlbmQocmVnaW9uKTsKKyNl
bmRpZgogfQogCi12b2lkIFJlbmRlck9iamVjdDo6Y29sbGVjdERhc2hib2FyZFJlZ2lvbnMoVmVj
dG9yPERhc2hib2FyZFJlZ2lvblZhbHVlPiYgcmVnaW9ucykKK3ZvaWQgUmVuZGVyT2JqZWN0Ojpj
b2xsZWN0QW5ub3RhdGVkUmVnaW9ucyhWZWN0b3I8QW5ub3RhdGVkUmVnaW9uVmFsdWU+JiByZWdp
b25zKQogewogICAgIC8vIFJlbmRlclRleHRzIGRvbid0IGhhdmUgdGhlaXIgb3duIHN0eWxlLCB0
aGV5IGp1c3QgdXNlIHRoZWlyIHBhcmVudCdzIHN0eWxlLAogICAgIC8vIHNvIHdlIGRvbid0IHdh
bnQgdG8gaW5jbHVkZSB0aGVtLgogICAgIGlmIChpc1RleHQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgYWRkRGFzaGJvYXJkUmVnaW9ucyhyZWdpb25zKTsKKyAgICBhZGRBbm5vdGF0ZWRSZWdp
b25zKHJlZ2lvbnMpOwogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjdXJyID0gZmlyc3RDaGlsZCgp
OyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgY3Vyci0+Y29sbGVj
dERhc2hib2FyZFJlZ2lvbnMocmVnaW9ucyk7CisgICAgICAgIGN1cnItPmNvbGxlY3RBbm5vdGF0
ZWRSZWdpb25zKHJlZ2lvbnMpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuaAppbmRleCAyOGNkYTNhLi42ZWQ3YjdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC0xMjAsMjAgKzEyMCwyOCBAQCB0eXBlZGVmIHVuc2ln
bmVkIE1hcExvY2FsVG9Db250YWluZXJGbGFnczsKIGNvbnN0IGludCBjYXJldFdpZHRoID0gMTsK
IAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkgfHwgRU5BQkxFKFdJREdFVF9SRUdJT04p
Ci1zdHJ1Y3QgRGFzaGJvYXJkUmVnaW9uVmFsdWUgewotICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBEYXNoYm9hcmRSZWdpb25WYWx1ZSYgbykgY29uc3QKK3N0cnVjdCBBbm5vdGF0ZWRSZWdpb25W
YWx1ZSB7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFubm90YXRlZFJlZ2lvblZhbHVlJiBv
KSBjb25zdAogICAgIHsKKyNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgICAgIHJl
dHVybiB0eXBlID09IG8udHlwZSAmJiBib3VuZHMgPT0gby5ib3VuZHMgJiYgY2xpcCA9PSBvLmNs
aXAgJiYgbGFiZWwgPT0gby5sYWJlbDsKKyNlbHNlIC8vIEVOQUJMRShXSURHRVRfUkVHSU9OKQor
ICAgICAgICByZXR1cm4gZHJhZ2dhYmxlID09IG8uZHJhZ2dhYmxlICYmIGJvdW5kcyA9PSBvLmJv
dW5kczsKKyNlbmRpZgogICAgIH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRGFzaGJvYXJk
UmVnaW9uVmFsdWUmIG8pIGNvbnN0CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEFubm90YXRl
ZFJlZ2lvblZhbHVlJiBvKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0g
byk7CiAgICAgfQogCi0gICAgU3RyaW5nIGxhYmVsOwogICAgIExheW91dFJlY3QgYm91bmRzOwor
I2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKKyAgICBTdHJpbmcgbGFiZWw7CiAgICAgTGF5
b3V0UmVjdCBjbGlwOwogICAgIGludCB0eXBlOworI2Vsc2UgLy8gRU5BQkxFKFdJREdFVF9SRUdJ
T04pCisgICAgYm9vbCBkcmFnZ2FibGU7CisjZW5kaWYKIH07CiAjZW5kaWYKIApAQCAtNjY0LDgg
KzY3Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKSB7
IH0KIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkgfHwgRU5BQkxFKFdJREdFVF9SRUdJ
T04pCi0gICAgdmlydHVhbCB2b2lkIGFkZERhc2hib2FyZFJlZ2lvbnMoVmVjdG9yPERhc2hib2Fy
ZFJlZ2lvblZhbHVlPiYpOwotICAgIHZvaWQgY29sbGVjdERhc2hib2FyZFJlZ2lvbnMoVmVjdG9y
PERhc2hib2FyZFJlZ2lvblZhbHVlPiYpOworICAgIHZpcnR1YWwgdm9pZCBhZGRBbm5vdGF0ZWRS
ZWdpb25zKFZlY3RvcjxBbm5vdGF0ZWRSZWdpb25WYWx1ZT4mKTsKKyAgICB2b2lkIGNvbGxlY3RB
bm5vdGF0ZWRSZWdpb25zKFZlY3RvcjxBbm5vdGF0ZWRSZWdpb25WYWx1ZT4mKTsKICNlbmRpZgog
CiAgICAgYm9vbCBpc0NvbXBvc2l0ZWQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDYzZDVlMDUuLmMzOTM2OTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtNDUx
LDcgKzQ1MSw3IEBAIFN0eWxlRGlmZmVyZW5jZSBSZW5kZXJTdHlsZTo6ZGlmZihjb25zdCBSZW5k
ZXJTdHlsZSogb3RoZXIsIHVuc2lnbmVkJiBjaGFuZ2VkQ29uCiAgICAgICAgIH0KICNlbmRpZgog
Ci0jaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBFTkFCTEUoV0lER0VUX1JFR0lPTikK
KyNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgICAgIC8vIElmIHJlZ2lvbnMgY2hh
bmdlLCB0cmlnZ2VyIGEgcmVsYXlvdXQgdG8gcmUtY2FsYyByZWdpb25zLgogICAgICAgICBpZiAo
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZGFzaGJvYXJkUmVnaW9ucyAhPSBvdGhlci0+cmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fZGFzaGJvYXJkUmVnaW9ucykKICAgICAgICAgICAgIHJldHVybiBT
dHlsZURpZmZlcmVuY2VMYXlvdXQ7CkBAIC0xMDk5LDcgKzEwOTksNyBAQCBjb25zdCBBdG9taWNT
dHJpbmcmIFJlbmRlclN0eWxlOjp0ZXh0RW1waGFzaXNNYXJrU3RyaW5nKCkgY29uc3QKICAgICBy
ZXR1cm4gbnVsbEF0b207CiB9CiAKLSNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8IEVO
QUJMRShXSURHRVRfUkVHSU9OKQorI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKIGNvbnN0
IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4mIFJlbmRlclN0eWxlOjppbml0aWFsRGFzaGJv
YXJkUmVnaW9ucygpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChWZWN0b3I8U3R5bGVEYXNo
Ym9hcmRSZWdpb24+LCBlbXB0eUxpc3QsICgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggN2JjYjM4ZS4uODIyMDc5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTc3LDcgKzc3LDcgQEAK
ICNpbmNsdWRlICJTdHlsZUZpbHRlckRhdGEuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKERBU0hC
T0FSRF9TVVBQT1JUKSB8fCBFTkFCTEUoV0lER0VUX1JFR0lPTikKKyNpZiBFTkFCTEUoREFTSEJP
QVJEX1NVUFBPUlQpCiAjaW5jbHVkZSAiU3R5bGVEYXNoYm9hcmRSZWdpb24uaCIKICNlbmRpZgog
CkBAIC0xMDE5LDcgKzEwMTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNaW5IZWlnaHQoTGVu
Z3RoIHYpIHsgU0VUX1ZBUihtX2JveCwgbV9taW5IZWlnaHQsIHYpIH0KICAgICB2b2lkIHNldE1h
eEhlaWdodChMZW5ndGggdikgeyBTRVRfVkFSKG1fYm94LCBtX21heEhlaWdodCwgdikgfQogCi0j
aWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBFTkFCTEUoV0lER0VUX1JFR0lPTikKKyNp
ZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVn
aW9uPiBkYXNoYm9hcmRSZWdpb25zKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fZGFzaGJvYXJkUmVnaW9uczsgfQogICAgIHZvaWQgc2V0RGFzaGJvYXJkUmVnaW9ucyhW
ZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+IHJlZ2lvbnMpIHsgU0VUX1ZBUihyYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgbV9kYXNoYm9hcmRSZWdpb25zLCByZWdpb25zKTsgfQogCkBAIC0xMDM4LDYg
KzEwMzgsMTEgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFdJREdFVF9S
RUdJT04pCisgICAgRHJhZ2dhYmxlUmVnaW9uTW9kZSBnZXREcmFnZ2FibGVSZWdpb25Nb2RlKCkg
Y29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZHJhZ2dhYmxlUmVnaW9uTW9k
ZTsgfQorICAgIHZvaWQgc2V0RHJhZ2dhYmxlUmVnaW9uTW9kZShEcmFnZ2FibGVSZWdpb25Nb2Rl
IHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9kcmFnZ2FibGVSZWdpb25Nb2Rl
LCB2KTsgfQorI2VuZGlmCisKICAgICB2b2lkIHJlc2V0Qm9yZGVyKCkgeyByZXNldEJvcmRlcklt
YWdlKCk7IHJlc2V0Qm9yZGVyVG9wKCk7IHJlc2V0Qm9yZGVyUmlnaHQoKTsgcmVzZXRCb3JkZXJC
b3R0b20oKTsgcmVzZXRCb3JkZXJMZWZ0KCk7IHJlc2V0Qm9yZGVyUmFkaXVzKCk7IH0KICAgICB2
b2lkIHJlc2V0Qm9yZGVyVG9wKCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV90b3AsIEJv
cmRlclZhbHVlKCkpIH0KICAgICB2b2lkIHJlc2V0Qm9yZGVyUmlnaHQoKSB7IFNFVF9WQVIoc3Vy
cm91bmQsIGJvcmRlci5tX3JpZ2h0LCBCb3JkZXJWYWx1ZSgpKSB9CkBAIC0xNzI2LDcgKzE3MzEs
NyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykK
ICAgICBzdGF0aWMgYm9vbCBpbml0aWFsVXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZygpIHsgcmV0
dXJuIGZhbHNlOyB9CiAjZW5kaWYKLSNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8IEVO
QUJMRShXSURHRVRfUkVHSU9OKQorI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICBz
dGF0aWMgY29uc3QgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgaW5pdGlhbERhc2hib2Fy
ZFJlZ2lvbnMoKTsKICAgICBzdGF0aWMgY29uc3QgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9u
PiYgbm9uZURhc2hib2FyZFJlZ2lvbnMoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAppbmRleCAzY2RmZDU5
Li4yNTFmNjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGVDb25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGVDb25zdGFudHMuaApAQCAtNDczLDYgKzQ3MywxMCBAQCBlbnVtIFdyYXBGbG93
IHsgV3JhcEZsb3dBdXRvLCBXcmFwRmxvd0JvdGgsIFdyYXBGbG93U3RhcnQsIFdyYXBGbG93RW5k
LCBXcmFwRmxvdwogCiBlbnVtIFdyYXBUaHJvdWdoIHsgV3JhcFRocm91Z2hXcmFwLCBXcmFwVGhy
b3VnaE5vbmUgfTsKIAorI2lmIEVOQUJMRShXSURHRVRfUkVHSU9OKQorZW51bSBEcmFnZ2FibGVS
ZWdpb25Nb2RlIHsgRHJhZ2dhYmxlUmVnaW9uTm9uZSwgRHJhZ2dhYmxlUmVnaW9uRHJhZywgRHJh
Z2dhYmxlUmVnaW9uTm9EcmFnIH07CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gUmVuZGVyU3R5bGVDb25zdGFudHNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRGFzaGJvYXJkUmVnaW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVEYXNoYm9hcmRSZWdpb24uaAppbmRleCBlNTkxMTU0
Li42Mjk5MmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVEYXNoYm9hcmRSZWdpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVEYXNoYm9hcmRSZWdpb24uaApAQCAtMjQsNyArMjQsNyBAQAogCiAjaWZuZGVmIFN0eWxl
RGFzaGJvYXJkUmVnaW9uX2gKICNkZWZpbmUgU3R5bGVEYXNoYm9hcmRSZWdpb25faAotI2lmIEVO
QUJMRShEQVNIQk9BUkRfU1VQUE9SVCkgfHwgRU5BQkxFKFdJREdFVF9SRUdJT04pCisjaWYgRU5B
QkxFKERBU0hCT0FSRF9TVVBQT1JUKQogCiAjaW5jbHVkZSAiTGVuZ3RoQm94LmgiCiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC01Nyw1ICs1Nyw1IEBAIHN0cnVjdCBTdHlsZURh
c2hib2FyZFJlZ2lvbiB7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVO
QUJMRShEQVNIQk9BUkRfU1VQUE9SVCkgfHwgRU5BQkxFKFdJREdFVF9SRUdJT04pCisjZW5kaWYg
Ly8gRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogI2VuZGlmIC8vIFN0eWxlRGFzaGJvYXJkUmVn
aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVOb25Jbmhlcml0ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAppbmRleCBmZjVjMjhkLi4zNGZjM2UzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFy
ZU5vbkluaGVyaXRlZERhdGEuY3BwCkBAIC00Myw2ICs0Myw5IEBAIFN0eWxlUmFyZU5vbkluaGVy
aXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoKQogICAgICwgbV9wZXJzcGVjdGl2
ZU9yaWdpblgoUmVuZGVyU3R5bGU6OmluaXRpYWxQZXJzcGVjdGl2ZU9yaWdpblgoKSkKICAgICAs
IG1fcGVyc3BlY3RpdmVPcmlnaW5ZKFJlbmRlclN0eWxlOjppbml0aWFsUGVyc3BlY3RpdmVPcmln
aW5ZKCkpCiAgICAgLCBsaW5lQ2xhbXAoUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lQ2xhbXAoKSkK
KyNpZiBFTkFCTEUoV0lER0VUX1JFR0lPTikKKyAgICAsIG1fZHJhZ2dhYmxlUmVnaW9uTW9kZShE
cmFnZ2FibGVSZWdpb25Ob25lKQorI2VuZGlmCiAgICAgLCBtX21hc2soRmlsbExheWVyKE1hc2tG
aWxsTGF5ZXIpKQogICAgICwgbV9wYWdlU2l6ZSgpCiAgICAgLCBtX3dyYXBTaGFwZUluc2lkZShS
ZW5kZXJTdHlsZTo6aW5pdGlhbFdyYXBTaGFwZUluc2lkZSgpKQpAQCAtOTcsNiArMTAwLDkgQEAg
U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YShjb25z
dCBTdHlsZVJhcmVOb25Jbmhlcml0ZWQKICAgICAsIG1fcGVyc3BlY3RpdmVPcmlnaW5YKG8ubV9w
ZXJzcGVjdGl2ZU9yaWdpblgpCiAgICAgLCBtX3BlcnNwZWN0aXZlT3JpZ2luWShvLm1fcGVyc3Bl
Y3RpdmVPcmlnaW5ZKQogICAgICwgbGluZUNsYW1wKG8ubGluZUNsYW1wKQorI2lmIEVOQUJMRShX
SURHRVRfUkVHSU9OKQorICAgICwgbV9kcmFnZ2FibGVSZWdpb25Nb2RlKG8ubV9kcmFnZ2FibGVS
ZWdpb25Nb2RlKQorI2VuZGlmCiAgICAgLCBtX2RlcHJlY2F0ZWRGbGV4aWJsZUJveChvLm1fZGVw
cmVjYXRlZEZsZXhpYmxlQm94KQogICAgICwgbV9mbGV4aWJsZUJveChvLm1fZmxleGlibGVCb3gp
CiAgICAgLCBtX21hcnF1ZWUoby5tX21hcnF1ZWUpCkBAIC0xNzYsOSArMTgyLDEyIEBAIGJvb2wg
U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZVJhcmVOb25J
bmhlcml0ZWREYXRhJiBvKSBjCiAgICAgICAgICYmIG1fcGVyc3BlY3RpdmVPcmlnaW5YID09IG8u
bV9wZXJzcGVjdGl2ZU9yaWdpblgKICAgICAgICAgJiYgbV9wZXJzcGVjdGl2ZU9yaWdpblkgPT0g
by5tX3BlcnNwZWN0aXZlT3JpZ2luWQogICAgICAgICAmJiBsaW5lQ2xhbXAgPT0gby5saW5lQ2xh
bXAKLSNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8IEVOQUJMRShXSURHRVRfUkVHSU9O
KQorI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICAgICAgJiYgbV9kYXNoYm9hcmRS
ZWdpb25zID09IG8ubV9kYXNoYm9hcmRSZWdpb25zCiAjZW5kaWYKKyNpZiBFTkFCTEUoV0lER0VU
X1JFR0lPTikKKyAgICAgICAgJiYgbV9kcmFnZ2FibGVSZWdpb25Nb2RlID09IG8ubV9kcmFnZ2Fi
bGVSZWdpb25Nb2RlCisjZW5kaWYKICAgICAgICAgJiYgbV9kZXByZWNhdGVkRmxleGlibGVCb3gg
PT0gby5tX2RlcHJlY2F0ZWRGbGV4aWJsZUJveAogICAgICAgICAmJiBtX2ZsZXhpYmxlQm94ID09
IG8ubV9mbGV4aWJsZUJveAogICAgICAgICAmJiBtX21hcnF1ZWUgPT0gby5tX21hcnF1ZWUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhl
cml0ZWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YS5oCmluZGV4IDQxYjg0MDcuLjkyN2Y2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGEuaApAQCAtNTcsNyArNTcsNyBAQCBjbGFzcyBTdHlsZVRyYW5zZm9ybURhdGE7CiBjbGFzcyBD
b250ZW50RGF0YTsKIHN0cnVjdCBMZW5ndGhTaXplOwogCi0jaWYgRU5BQkxFKERBU0hCT0FSRF9T
VVBQT1JUKSB8fCBFTkFCTEUoV0lER0VUX1JFR0lPTikKKyNpZiBFTkFCTEUoREFTSEJPQVJEX1NV
UFBPUlQpCiBzdHJ1Y3QgU3R5bGVEYXNoYm9hcmRSZWdpb247CiAjZW5kaWYKIApAQCAtMTAyLDkg
KzEwMiwxMiBAQCBwdWJsaWM6CiAgICAgTGVuZ3RoIG1fcGVyc3BlY3RpdmVPcmlnaW5ZOwogCiAg
ICAgTGluZUNsYW1wVmFsdWUgbGluZUNsYW1wOyAvLyBBbiBBcHBsZSBleHRlbnNpb24uCi0jaWYg
RU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBFTkFCTEUoV0lER0VUX1JFR0lPTikKKyNpZiBF
TkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9u
PiBtX2Rhc2hib2FyZFJlZ2lvbnM7CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0lER0VUX1JFR0lPTikK
KyAgICBEcmFnZ2FibGVSZWdpb25Nb2RlIG1fZHJhZ2dhYmxlUmVnaW9uTW9kZTsKKyNlbmRpZgog
CiAgICAgRGF0YVJlZjxTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE+IG1fZGVwcmVjYXRl
ZEZsZXhpYmxlQm94OyAvLyBGbGV4aWJsZSBib3ggcHJvcGVydGllcwogICAgIERhdGFSZWY8U3R5
bGVGbGV4aWJsZUJveERhdGE+IG1fZmxleGlibGVCb3g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IDc0NjdiYmMuLjQ5ODQ5ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjIgQEAKKzIwMTItMDktMjYgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFVwZGF0ZSB0aGUgQ1NTIHByb3BlcnR5IHVzZWQgdG8gc3VwcG9ydCBkcmFnZ2Fi
bGUgcmVnaW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk3MTU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXBkYXRlIHRoZSBjb2RlIHRvIHVzZSB0aGUgbmV3IG5hbWUgYW5ub3RhdGVkUmVnaW9ucyB0
byB3b3JrIGZvcgorICAgICAgICBib3RoIGZlYXR1cmVzLgorCisgICAgICAgICogcHVibGljL1dl
YkRyYWdnYWJsZVJlZ2lvbi5oOiBSZW5hbWUgZGFzaGJvYXJkUmVnaW9ucyB0byBhbm5vdGF0ZWRS
ZWdpb25zLgorICAgICAgICAoV2ViRHJhZ2dhYmxlUmVnaW9uKToKKyAgICAgICAgKiBzcmMvQ2hy
b21lQ2xpZW50SW1wbC5jcHA6IFJlbmFtZSBkYXNoYm9hcmRSZWdpb25zIHRvIGFubm90YXRlZFJl
Z2lvbnMuCisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OmFubm90YXRlZFJlZ2lv
bnNDaGFuZ2VkKToKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5oOiBSZW5hbWUgZGFz
aGJvYXJkUmVnaW9ucyB0byBhbm5vdGF0ZWRSZWdpb25zLgorICAgICAgICAoQ2hyb21lQ2xpZW50
SW1wbCk6CisgICAgICAgICogc3JjL1dlYkRvY3VtZW50LmNwcDogUmVuYW1lIGRhc2hib2FyZFJl
Z2lvbnMgdG8gYW5ub3RhdGVkUmVnaW9ucy4KKyAgICAgICAgKFdlYktpdDo6V2ViRG9jdW1lbnQ6
OmRyYWdnYWJsZVJlZ2lvbnMpOgorCiAyMDEyLTA5LTI1ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhlZERCOiBPbmUgdHJhbnNhY3Rpb24gY29vcmRp
bmF0b3IgcGVyIGRhdGFiYXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJEcmFnZ2FibGVSZWdpb24uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkRyYWdnYWJsZVJlZ2lvbi5oCmluZGV4IDA0MzdmODkuLmUzZDgxNDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRyYWdnYWJsZVJlZ2lvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRyYWdnYWJsZVJlZ2lvbi5oCkBAIC0z
OCw4ICszOCwxMSBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBXZWJEcmFnZ2FibGVS
ZWdpb24gewotICAgIFdlYlN0cmluZyBsYWJlbDsKKyAgICBib29sIGRyYWdnYWJsZTsKICAgICBX
ZWJSZWN0IGJvdW5kczsKKworICAgIC8vIEZJWE1FOiB0byBiZSByZW1vdmVkIGFmdGVyIGNocm9t
aXVtIGNoYW5nZSBpcyBkb25lLgorICAgIFdlYlN0cmluZyBsYWJlbDsKICAgICBXZWJSZWN0IGNs
aXA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVD
bGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudElt
cGwuY3BwCmluZGV4IDk4NTc1NzcuLjlhM2I4NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCkBAIC0xMTIxLDcgKzExMjEsNyBAQCBib29s
IENocm9tZUNsaWVudEltcGw6OmlzUG9pbnRlckxvY2tlZCgpCiAjZW5kaWYKIAogI2lmIEVOQUJM
RShXSURHRVRfUkVHSU9OKQotdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpkYXNoYm9hcmRSZWdpb25z
Q2hhbmdlZCgpCit2b2lkIENocm9tZUNsaWVudEltcGw6OmFubm90YXRlZFJlZ2lvbnNDaGFuZ2Vk
KCkKIHsKICAgICBXZWJWaWV3Q2xpZW50KiBjbGllbnQgPSBtX3dlYlZpZXctPmNsaWVudCgpOwog
ICAgIGlmIChjbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9D
aHJvbWVDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmgKaW5kZXggN2Q0NTZmYi4uZmRkYTBhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaApAQCAtMTM5LDcgKzEzOSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVl
ZGVkKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90
YShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGludDY0X3QgdG90YWxTcGFjZU5lZWRlZCk7CiAj
aWYgRU5BQkxFKFdJREdFVF9SRUdJT04pCi0gICAgdmlydHVhbCB2b2lkIGRhc2hib2FyZFJlZ2lv
bnNDaGFuZ2VkKCk7CisgICAgdmlydHVhbCB2b2lkIGFubm90YXRlZFJlZ2lvbnNDaGFuZ2VkKCk7
CiAjZW5kaWYKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDdXN0b21PdmVyaGFuZ0FyZWEoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAjaWYgRU5BQkxFKElOUFVU
X1RZUEVfQ09MT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJE
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEb2N1bWVudC5jcHAK
aW5kZXggMzQ4NjYxMy4uYzgyMDdkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkRvY3VtZW50LmNwcApAQCAtMjU4LDE0ICsyNTgsMTMgQEAgV2ViVmVjdG9yPFdlYkRyYWdnYWJs
ZVJlZ2lvbj4gV2ViRG9jdW1lbnQ6OmRyYWdnYWJsZVJlZ2lvbnMoKSBjb25zdAogICAgIFdlYlZl
Y3RvcjxXZWJEcmFnZ2FibGVSZWdpb24+IGRyYWdnYWJsZVJlZ2lvbnM7CiAjaWYgRU5BQkxFKFdJ
REdFVF9SRUdJT04pCiAgICAgY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50ID0gY29uc3RVbndyYXA8
RG9jdW1lbnQ+KCk7Ci0gICAgaWYgKGRvY3VtZW50LT5oYXNEYXNoYm9hcmRSZWdpb25zKCkpIHsK
LSAgICAgICAgY29uc3QgVmVjdG9yPERhc2hib2FyZFJlZ2lvblZhbHVlPiYgcmVnaW9ucyA9IGRv
Y3VtZW50LT5kYXNoYm9hcmRSZWdpb25zKCk7CisgICAgaWYgKGRvY3VtZW50LT5oYXNBbm5vdGF0
ZWRSZWdpb25zKCkpIHsKKyAgICAgICAgY29uc3QgVmVjdG9yPEFubm90YXRlZFJlZ2lvblZhbHVl
PiYgcmVnaW9ucyA9IGRvY3VtZW50LT5hbm5vdGF0ZWRSZWdpb25zKCk7CiAgICAgICAgIGRyYWdn
YWJsZVJlZ2lvbnMgPSBXZWJWZWN0b3I8V2ViRHJhZ2dhYmxlUmVnaW9uPihyZWdpb25zLnNpemUo
KSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVnaW9ucy5zaXplKCk7IGkrKykg
ewotICAgICAgICAgICAgY29uc3QgRGFzaGJvYXJkUmVnaW9uVmFsdWUmIHZhbHVlID0gcmVnaW9u
c1tpXTsKLSAgICAgICAgICAgIGRyYWdnYWJsZVJlZ2lvbnNbaV0ubGFiZWwgPSB2YWx1ZS5sYWJl
bDsKKyAgICAgICAgICAgIGNvbnN0IEFubm90YXRlZFJlZ2lvblZhbHVlJiB2YWx1ZSA9IHJlZ2lv
bnNbaV07CisgICAgICAgICAgICBkcmFnZ2FibGVSZWdpb25zW2ldLmRyYWdnYWJsZSA9IHZhbHVl
LmRyYWdnYWJsZTsKICAgICAgICAgICAgIGRyYWdnYWJsZVJlZ2lvbnNbaV0uYm91bmRzID0gV2Vi
Q29yZTo6SW50UmVjdCh2YWx1ZS5ib3VuZHMpOwotICAgICAgICAgICAgZHJhZ2dhYmxlUmVnaW9u
c1tpXS5jbGlwID0gV2ViQ29yZTo6SW50UmVjdCh2YWx1ZS5jbGlwKTsKICAgICAgICAgfQogICAg
IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDc1NzliNjUuLjljZDM5YTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMi0wOS0yNiAgSmlhbiBMaSAgPGppYW5saUBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgVXBkYXRlIHRoZSBDU1MgcHJvcGVydHkgdXNlZCB0byBz
dXBwb3J0IGRyYWdnYWJsZSByZWdpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTcxNTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGUgQ1NTIHByb3BlcnR5IHRvIHN1cHBvcnQgZHJhZ2dhYmxlIHJl
Z2lvbnMsIGd1YXJkZWQgdW5kZXIKKyAgICAgICAgV0lER0VUX1JFR0lPTiBpcyBub3cgZGlzYWJs
ZWQgZnJvbSBNYWMgV2ViS2l0LCBpbiBvcmRlciBub3QgdG8gY2F1c2UKKyAgICAgICAgY29uZnVz
aW9uIHdpdGggREFTSEJPQVJEX1NVUFBPUlQgZmVhdHVyZS4KKworICAgICAgICBBbHNvIHVwZGF0
ZSB0aGUgY29kZSB0byB1c2UgdGhlIG5ldyBuYW1lIGFubm90YXRlZFJlZ2lvbnMgdG8gd29yayBm
b3IKKyAgICAgICAgYm90aCBmZWF0dXJlcy4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnOiBEaXNhYmxlIFdJREdFVF9SRUdJT04gZmVhdHVyZS4KKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDogUmVuYW1lIGRhc2hib2Fy
ZFJlZ2lvbnMgdG8gYW5ub3RhdGVkUmVnaW9ucy4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQubW06IFJlbmFtZSBkYXNoYm9hcmRSZWdpb25zIHRvIGFubm90YXRlZFJl
Z2lvbnMuCisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OmFubm90YXRlZFJlZ2lvbnNDaGFuZ2Vk
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06IFJlbmFtZSBkYXNoYm9hcmRSZWdpb25z
IHRvIGFubm90YXRlZFJlZ2lvbnMuCisgICAgICAgICgtW1dlYlZpZXcgX2Rhc2hib2FyZFJlZ2lv
bnNdKToKKwogMjAxMi0wOS0yNCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNv
bT4KIAogICAgICAgICBGaXggR2VvbG9jYXRpb24gZXJyb3IgcmVwb3J0aW5nIGluIHRoZSB0ZXN0
IHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggNTFmNjMyOC4uMTc0ZmMzMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25m
aWcKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWcKQEAgLTEzNyw4ICsxMzcsNyBAQCBFTkFCTEVfV0VCR0wgPSBFTkFCTEVfV0VCR0w7
CiBFTkFCTEVfV0VCX0FVRElPID0gRU5BQkxFX1dFQl9BVURJTzsKIEVOQUJMRV9XRUJfU09DS0VU
UyA9IEVOQUJMRV9XRUJfU09DS0VUUzsKIEVOQUJMRV9XRUJfVElNSU5HID0gOwotRU5BQkxFX1dJ
REdFVF9SRUdJT04gPSAkKEVOQUJMRV9XSURHRVRfUkVHSU9OXyQoUkVBTF9QTEFURk9STV9OQU1F
KSk7Ci1FTkFCTEVfV0lER0VUX1JFR0lPTl9tYWNvc3ggPSBFTkFCTEVfV0lER0VUX1JFR0lPTjsK
K0VOQUJMRV9XSURHRVRfUkVHSU9OID0gOwogRU5BQkxFX1dPUktFUlMgPSBFTkFCTEVfV09SS0VS
UzsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggYTQ3M2ZlMy4uYjFlZjMz
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBv
cHVsYXRlVmlzaXRlZExpbmtzKCkgT1ZFUlJJREU7CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NV
UFBPUlQpCi0gICAgdmlydHVhbCB2b2lkIGRhc2hib2FyZFJlZ2lvbnNDaGFuZ2VkKCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGFubm90YXRlZFJlZ2lvbnNDaGFuZ2VkKCkgT1ZFUlJJREU7
CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBydW5PcGVuUGFuZWwoV2ViQ29yZTo6RnJhbWUq
LCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZpbGVDaG9vc2VyPikgT1ZFUlJJREU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KaW5kZXgg
YzdkY2VmYS4uMzEyZDExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQpAQCAtNjgxLDcgKzY4MSw3IEBAIHZvaWQgV2ViQ2hy
b21lQ2xpZW50Ojpwb3B1bGF0ZVZpc2l0ZWRMaW5rcygpCiAKICNpZiBFTkFCTEUoREFTSEJPQVJE
X1NVUFBPUlQpCiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjpkYXNoYm9hcmRSZWdpb25zQ2hhbmdl
ZCgpCit2b2lkIFdlYkNocm9tZUNsaWVudDo6YW5ub3RhdGVkUmVnaW9uc0NoYW5nZWQoKQogewog
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKICAgICBDYWxsVUlEZWxlZ2F0ZShtX3dl
YlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRhc2hib2FyZFJlZ2lvbnNDaGFuZ2VkOiksIFttX3dl
YlZpZXcgX2Rhc2hib2FyZFJlZ2lvbnNdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQppbmRleCA4MGQ1NDE3Li41NzA3ZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCkBAIC0yMDc1LDEyICsyMDc1LDEyIEBAIHN0YXRpYyBpbmxpbmUgSU1QIGdldE1ldGhvZChp
ZCBvLCBTRUwgcykKICAgICBpZiAoIW1haW5GcmFtZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAot
ICAgIGNvbnN0IFZlY3RvcjxEYXNoYm9hcmRSZWdpb25WYWx1ZT4mIHJlZ2lvbnMgPSBtYWluRnJh
bWUtPmRvY3VtZW50KCktPmRhc2hib2FyZFJlZ2lvbnMoKTsKKyAgICBjb25zdCBWZWN0b3I8QW5u
b3RhdGVkUmVnaW9uVmFsdWU+JiByZWdpb25zID0gbWFpbkZyYW1lLT5kb2N1bWVudCgpLT5hbm5v
dGF0ZWRSZWdpb25zKCk7CiAgICAgc2l6ZV90IHNpemUgPSByZWdpb25zLnNpemUoKTsKIAogICAg
IE5TTXV0YWJsZURpY3Rpb25hcnkgKndlYlJlZ2lvbnMgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBk
aWN0aW9uYXJ5V2l0aENhcGFjaXR5OnNpemVdOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c2l6ZTsgaSsrKSB7Ci0gICAgICAgIGNvbnN0IERhc2hib2FyZFJlZ2lvblZhbHVlJiByZWdpb24g
PSByZWdpb25zW2ldOworICAgICAgICBjb25zdCBBbm5vdGF0ZWRSZWdpb25WYWx1ZSYgcmVnaW9u
ID0gcmVnaW9uc1tpXTsKIAogICAgICAgICBpZiAocmVnaW9uLnR5cGUgPT0gU3R5bGVEYXNoYm9h
cmRSZWdpb246Ok5vbmUpCiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyNjI2
OWQ1Li4zMTA4MTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMDktMjYgIEpp
YW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVwZGF0ZSB0aGUgQ1NTIHBy
b3BlcnR5IHVzZWQgdG8gc3VwcG9ydCBkcmFnZ2FibGUgcmVnaW9ucy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MTU2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIENTUyBwcm9wZXJ0eSB0byBzdXBw
b3J0IGRyYWdnYWJsZSByZWdpb25zLCBndWFyZGVkIHVuZGVyCisgICAgICAgIFdJREdFVF9SRUdJ
T04gaXMgbm93IGRpc2FibGVkIGZyb20gTWFjIFdlYktpdCwgaW4gb3JkZXIgbm90IHRvIGNhdXNl
CisgICAgICAgIGNvbmZ1c2lvbiB3aXRoIERBU0hCT0FSRF9TVVBQT1JUIGZlYXR1cmUuCisKKyAg
ICAgICAgQWxzbyB1cGRhdGUgdGhlIGNvZGUgdG8gdXNlIHRoZSBuZXcgbmFtZSBhbm5vdGF0ZWRS
ZWdpb25zIHRvIHdvcmsgZm9yCisgICAgICAgIGJvdGggZmVhdHVyZXMuCisKKyAgICAgICAgKiBD
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzogRGlzYWJsZSBXSURHRVRfUkVH
SU9OIGZlYXR1cmUuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwOiBSZW5hbWUgZGFzaGJvYXJkUmVnaW9ucyB0byBhbm5vdGF0ZWRSZWdpb25z
LgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmFubm90YXRlZFJlZ2lvbnNDaGFu
Z2VkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oOiBSZW5hbWUgZGFzaGJvYXJkUmVnaW9ucyB0byBhbm5vdGF0ZWRSZWdpb25zLgorICAgICAg
ICAoV2ViQ2hyb21lQ2xpZW50KToKKwogMjAxMi0wOS0yNSAgQmVuamFtaW4gUG91bGFpbiAgPGJw
b3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgbWlzc2luZyBzdXBwb3J0IGZvciBHZW9s
b2NhdGlvbiB0ZXN0cyBvbiBXZWJLaXQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Db25m
aWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9XZWJLaXQyL0NvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IDgzNWUyZTQuLjJhODE5OWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnCkBAIC0xMzcsOCArMTM3LDcgQEAgRU5BQkxFX1dFQkdMID0gRU5BQkxFX1dF
QkdMOwogRU5BQkxFX1dFQl9BVURJTyA9IEVOQUJMRV9XRUJfQVVESU87CiBFTkFCTEVfV0VCX1NP
Q0tFVFMgPSBFTkFCTEVfV0VCX1NPQ0tFVFM7CiBFTkFCTEVfV0VCX1RJTUlORyA9IDsKLUVOQUJM
RV9XSURHRVRfUkVHSU9OID0gJChFTkFCTEVfV0lER0VUX1JFR0lPTl8kKFJFQUxfUExBVEZPUk1f
TkFNRSkpOwotRU5BQkxFX1dJREdFVF9SRUdJT05fbWFjb3N4ID0gRU5BQkxFX1dJREdFVF9SRUdJ
T047CitFTkFCTEVfV0lER0VUX1JFR0lPTiA9IDsKIEVOQUJMRV9XT1JLRVJTID0gRU5BQkxFX1dP
UktFUlM7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xUOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKaW5kZXggZGJjYWI4ZC4uYjUwZDAxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAt
NTYyLDcgKzU2Miw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25D
YWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sCiB9CiAKICNpZiBFTkFCTEUo
REFTSEJPQVJEX1NVUFBPUlQpCi12b2lkIFdlYkNocm9tZUNsaWVudDo6ZGFzaGJvYXJkUmVnaW9u
c0NoYW5nZWQoKQordm9pZCBXZWJDaHJvbWVDbGllbnQ6OmFubm90YXRlZFJlZ2lvbnNDaGFuZ2Vk
KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXgg
ZjQwZDRiMS4uNjEyYmQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0xMzksNyArMTM5LDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5RdW90YShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGludDY0X3Qgc3BhY2VOZWVkZWQpIE9W
RVJSSURFOwogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQotICAgIHZpcnR1YWwgdm9p
ZCBkYXNoYm9hcmRSZWdpb25zQ2hhbmdlZCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBh
bm5vdGF0ZWRSZWdpb25zQ2hhbmdlZCgpIE9WRVJSSURFOwogI2VuZGlmCiAKICAgICB2aXJ0dWFs
IHZvaWQgcG9wdWxhdGVWaXNpdGVkTGlua3MoKSBPVkVSUklERTsK
</data>
<flag name="review"
          id="178039"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="178040"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
      

    </bug>

</bugzilla>