<?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>71341</bug_id>
          
          <creation_ts>2011-11-01 17:19:37 -0700</creation_ts>
          <short_desc>Add Clock class and platform-specific implementations.</short_desc>
          <delta_ts>2011-11-03 11:05:25 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>71408</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>abarth</cc>
    
    <cc>acolwell</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>494336</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-01 17:19:37 -0700</bug_when>
    <thetext>Implement MediaController.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494750</commentid>
    <comment_count>1</comment_count>
      <attachid>113339</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-02 11:20:28 -0700</bug_when>
    <thetext>Created attachment 113339
Add Clock, PlatformClockCA, and PlatformClockPOSIX</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494857</commentid>
    <comment_count>2</comment_count>
      <attachid>113364</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-02 13:31:17 -0700</bug_when>
    <thetext>Created attachment 113364
MediaController and HTMLMediaElement changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494936</commentid>
    <comment_count>3</comment_count>
      <attachid>113339</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-02 14:49:50 -0700</bug_when>
    <thetext>Comment on attachment 113339
Add Clock, PlatformClockCA, and PlatformClockPOSIX

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

We should be able to do this without virtual functions.

&gt; Source/WebCore/platform/Clock.cpp:44
&gt; +PassRefPtr&lt;Clock&gt; Clock::create()
&gt; +{
&gt; +#if USE(COREAUDIO)
&gt; +    return adoptRef(new PlatformClockCA());
&gt; +#else
&gt; +    return adoptRef(new PlatformClockPOSIX());
&gt; +#endif
&gt; +}

Would it make sense to move Clock::create to PlatformClockCA.cpp and PlatformClockPOSIX.cpp, respectively?

&gt; Source/WebCore/platform/Clock.h:47
&gt; +    virtual void setCurrentTime(float) = 0;
&gt; +    virtual float currentTime() const = 0;
&gt; +
&gt; +    virtual void setPlayRate(float) = 0;
&gt; +    virtual float playRate() const = 0;
&gt; +
&gt; +    virtual void start() = 0;
&gt; +    virtual void stop() = 0;
&gt; +    virtual bool isRunning() const = 0;

Why virtual functions?  If only one implementation will be linked in at a time, there&apos;s no need for virtual functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494938</commentid>
    <comment_count>4</comment_count>
      <attachid>113364</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-02 14:51:22 -0700</bug_when>
    <thetext>Comment on attachment 113364
MediaController and HTMLMediaElement changes.

This patch is based on an old version of WebKit.  Can you merge this to top-of-tree so we can see what the patch will look like when landed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494939</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-02 14:51:54 -0700</bug_when>
    <thetext>Also, we prefer to have one patch per bug.  If you&apos;d like to land these separately (which I think makes sense) please consider using multiple bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494945</commentid>
    <comment_count>6</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-02 15:01:28 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 113339 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=113339&amp;action=review
&gt; 
&gt; We should be able to do this without virtual functions.

&gt; Would it make sense to move Clock::create to PlatformClockCA.cpp and PlatformClockPOSIX.cpp, respectively?

See below. :)

&gt; Why virtual functions?  If only one implementation will be linked in at a time, there&apos;s no need for virtual functions.

There may be more than one implementation at a time.  We are working on a clock subclass which can synchronize AVFoundation-based media elements, but would still need a CA or POSIX clock to synchronize between QTKit- and AVFoundation-based elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494947</commentid>
    <comment_count>7</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-02 15:02:14 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Also, we prefer to have one patch per bug.  If you&apos;d like to land these separately (which I think makes sense) please consider using multiple bugs.

Sure thing.  I&apos;ll update the title of this bug, obsolete the MediaController patch, and file new bugs for the subsequent patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494955</commentid>
    <comment_count>8</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-02 15:08:57 -0700</bug_when>
    <thetext>Filed bug #71408 and bug #71410 and marked as depending on this bug.  I&apos;ll rebase my changes and get the updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494961</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-02 15:21:23 -0700</bug_when>
    <thetext>Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495034</commentid>
    <comment_count>10</comment_count>
      <attachid>113396</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-02 16:34:22 -0700</bug_when>
    <thetext>Created attachment 113396
Source/JavaScriptCore: Implement MediaController.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495035</commentid>
    <comment_count>11</comment_count>
      <attachid>113397</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-02 16:34:38 -0700</bug_when>
    <thetext>Created attachment 113397
Source/WebCore: Implement MediaController.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495042</commentid>
    <comment_count>12</comment_count>
      <attachid>113399</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-02 16:38:29 -0700</bug_when>
    <thetext>Created attachment 113399
Patch

After a disasterous use of webkit-patch post-commit, webkit-patch upload is back to save the day...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495046</commentid>
    <comment_count>13</comment_count>
      <attachid>113401</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-02 16:40:01 -0700</bug_when>
    <thetext>Created attachment 113401
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495049</commentid>
    <comment_count>14</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-02 16:42:12 -0700</bug_when>
    <thetext>Sigh.  webkit-patch upload is still broken. (Adds the wrong patch to the wrong bug.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495055</commentid>
    <comment_count>15</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-02 16:47:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/10387316&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495068</commentid>
    <comment_count>16</comment_count>
      <attachid>113399</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-02 17:01:57 -0700</bug_when>
    <thetext>Comment on attachment 113399
Patch

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

PlatformClockPOSIX looks fine.  I&apos;m not sure I fully understand the role of m_offset.  I don&apos;t know enough about CoreAudio to review that implementation.

&gt; Source/WebCore/platform/posix/PlatformClockPOSIX.cpp:35
&gt; +    return val.tv_sec + (val.tv_usec / 1000000.0f);

I would have named this constant, but I&apos;m not sure that&apos;s a big deal.

&gt; Source/WebCore/platform/posix/PlatformClockPOSIX.cpp:43
&gt; +    if (delta.tv_usec &lt; 0) {

Does this need to be a loop?  I&apos;m not sure how much error checking you want to do here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495196</commentid>
    <comment_count>17</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-02 21:53:42 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 113399 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=113399&amp;action=review
&gt; 
&gt; PlatformClockPOSIX looks fine.  I&apos;m not sure I fully understand the role of m_offset.  I don&apos;t know enough about CoreAudio to review that implementation.

Sure thing.  The general idea is that: current time = (now - start time) * rate + offset, and the offset gets reset whenever the clock is paused, played, or the rate changes.

&gt; &gt; Source/WebCore/platform/posix/PlatformClockPOSIX.cpp:35
&gt; &gt; +    return val.tv_sec + (val.tv_usec / 1000000.0f);
&gt; 
&gt; I would have named this constant, but I&apos;m not sure that&apos;s a big deal.

I can add that. usecPerSec or similar.

&gt; &gt; Source/WebCore/platform/posix/PlatformClockPOSIX.cpp:43
&gt; &gt; +    if (delta.tv_usec &lt; 0) {
&gt; 
&gt; Does this need to be a loop?  I&apos;m not sure how much error checking you want to do here.

Unless something goes seriously wrong with gettimeofday, this will ever only need to be a single pass.  I could add an ASSERT(delta.tv_usec &gt;= 0) after the if.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495647</commentid>
    <comment_count>18</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-03 11:05:25 -0700</bug_when>
    <thetext>Committed r99222: &lt;http://trac.webkit.org/changeset/99222&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113339</attachid>
            <date>2011-11-02 11:20:28 -0700</date>
            <delta_ts>2011-11-02 16:34:19 -0700</delta_ts>
            <desc>Add Clock, PlatformClockCA, and PlatformClockPOSIX</desc>
            <filename>bug-71341-20111102112027.patch</filename>
            <type>text/plain</type>
            <size>25532</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTgzNTkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDNh
M2I2ODJlNWNlMmY1ZGU1OThlMTI5NGM2MDg3N2M0MWMyYjdhMjIuLjRhZjFiNWU0NzE5YTgxNGFh
ZjMzODdiYjlmMWU5YjA3NTU4ZDU4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDExLTExLTAyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgor
CisgICAgICAgIEltcGxlbWVudCBNZWRpYUNvbnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTM0MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBXVEZfVVNFX0NPUkVBVURJTyBtYWNybyBm
b3IgdXNlIGJ5IFBsYXRmb3JtQ2xvY2tDQS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgor
CiAyMDExLTEwLTI0ICBZdXFpYW5nIFhpYW4gIDx5dXFpYW5nLnhpYW5AaW50ZWwuY29tPgogCiAg
ICAgICAgIERGRyBKSVQgMzJfNjQgLSBmaWxsSW50ZWdlciBzaG91bGQgYWNjZXB0IERhdGFGb3Jt
YXRKU0ludGVnZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3NGNiMzI5ZjJjMWNiODk2MDEyMjI2Y2YyNDljMjBh
MWVhZTQyNjcwLi5mZjJlNTQ1NmE2MWU5Y2Y1ZGMwNjcwNzZhNzQ3NTdhZDdhOWNkODhjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTEtMTEtMDIgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IE1lZGlhQ29udHJvbGxlci4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMzQxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOyB0
aGVzZSBjbGFzc2VzIHdpbGwgYmUgdXNlZCBhbmQgdGVzdGVkIGJ5IHRoZSBNZWRpYUNvbnRyb2xs
ZXIgZmVhdHVyZS4KKworICAgICAgICBBZGRzIGEgYWJzdHJhY3QgQ2xvY2sgY2xhc3MgYW5kIHR3
byBjb25jcmV0ZSwgcGxhdGZvcm0tc3BlY2lmaWMgc3ViY2xhc3Nlcy4KKworICAgICAgICBDbG9j
ayBwcm92aWRlcyBhIGJhc2ljIGludGVyZmFjZSBmb3Igc3RhcnRpbmcsIHN0b3BwaW5nLCBhbmQg
cXVlcnlpbmcgYSBnZW5lcmljIHRpbWVsaW5lLgorICAgICAgICBQbGF0Zm9ybUNsb2NrQ0EgaW1w
bGVtZW50cyB0aGlzIGludGVyZmFjZSB1c2luZyBhIENvcmVBdWRpbyBDQUNsb2NrIG9iamVjdCwg
d2hpY2ggdXNlcworICAgICAgICB0aGUgZGVmYXVsdCBhdWRpbyBkZXZpY2UncyBoYXJkd2FyZSBj
bG9jayBhcyBhIHRpbWluZyBzb3VyY2UuIFBsYXRmb3JtQ2xvY2tQT1NJWCAKKyAgICAgICAgaW1w
bGVtZW50cyB0aGlzIGludGVyZmFjZSB1c2luZyBnZXR0aW1lb2ZkYXkoKSBhcyBpdHMgdGltaW5n
IHNvdXJjZS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBwbGF0Zm9ybS9DbG9jay5jcHA6IEFkZGVkLgorICAgICAgICAoQ2xvY2s6OmNy
ZWF0ZSk6IENyZWF0ZXMgYSBwbGF0Zm9ybS1zcGVjaWZpYyBjbG9jay4KKyAgICAgICAgKiBwbGF0
Zm9ybS9DbG9jay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNsb2NrOjp+Q2xvY2spOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xvY2s6OkNsb2NrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
UGxhdGZvcm1DbG9ja0NBLmNwcDogQWRkZWQuCisgICAgICAgIChQbGF0Zm9ybUNsb2NrQ0E6OlBs
YXRmb3JtQ2xvY2tDQSk6CisgICAgICAgIChQbGF0Zm9ybUNsb2NrQ0E6On5QbGF0Zm9ybUNsb2Nr
Q0EpOgorICAgICAgICAoUGxhdGZvcm1DbG9ja0NBOjpzZXRDdXJyZW50VGltZSk6CisgICAgICAg
IChQbGF0Zm9ybUNsb2NrQ0E6OmN1cnJlbnRUaW1lKToKKyAgICAgICAgKFBsYXRmb3JtQ2xvY2tD
QTo6c2V0UGxheVJhdGUpOgorICAgICAgICAoUGxhdGZvcm1DbG9ja0NBOjpQbGF0Zm9ybUNsb2Nr
Q0E6OnBsYXlSYXRlKToKKyAgICAgICAgKFBsYXRmb3JtQ2xvY2tDQTo6c3RhcnQpOgorICAgICAg
ICAoUGxhdGZvcm1DbG9ja0NBOjpzdG9wKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZv
cm1DbG9ja0NBLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DbG9ja0NBOjpp
c1J1bm5pbmcpOgorICAgICAgICAqIHBsYXRmb3JtL3Bvc2l4L1BsYXRmb3JtQ2xvY2tQT1NJWC5j
cHA6IEFkZGVkLgorICAgICAgICAodGltZXZhbFRvRmxvYXQpOgorICAgICAgICAodGltZXZhbERl
bHRhKToKKyAgICAgICAgKFBsYXRmb3JtQ2xvY2tQT1NJWDo6UGxhdGZvcm1DbG9ja1BPU0lYKToK
KyAgICAgICAgKFBsYXRmb3JtQ2xvY2tQT1NJWDo6c2V0Q3VycmVudFRpbWUpOgorICAgICAgICAo
UGxhdGZvcm1DbG9ja1BPU0lYOjpjdXJyZW50VGltZSk6CisgICAgICAgIChQbGF0Zm9ybUNsb2Nr
UE9TSVg6OnNldFBsYXlSYXRlKToKKyAgICAgICAgKFBsYXRmb3JtQ2xvY2tQT1NJWDo6UGxhdGZv
cm1DbG9ja1BPU0lYOjpwbGF5UmF0ZSk6CisgICAgICAgIChQbGF0Zm9ybUNsb2NrUE9TSVg6OnN0
YXJ0KToKKyAgICAgICAgKFBsYXRmb3JtQ2xvY2tQT1NJWDo6c3RvcCk6CisgICAgICAgIChQbGF0
Zm9ybUNsb2NrUE9TSVg6Om5vdyk6CisgICAgICAgICogcGxhdGZvcm0vcG9zaXgvUGxhdGZvcm1D
bG9ja1BPU0lYLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DbG9ja1BPU0lY
Ojppc1J1bm5pbmcpOgorCiAyMDExLTEwLTI0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUu
Y29tPgogCiAgICAgICAgIGNvbXBvc2l0aW5nL3ZpZGVvIHRlc3RzIHRpbWUgb3V0IG9uIExpb24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAppbmRleCBkNGRlOGYyZmEwOTIyNzIxYTBj
NDFmNWNhZWZhNzBlNjU0ZDdmN2RkLi5jOWE5M2VkM2M1Yzg1ZmZhNzYzMThjNmIxMjNkOTk0YTQ5
N2FkZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xMDk2LDQgKzEw
OTYsOCBAQAogI2RlZmluZSBIQVZFX0lOVkVSVEVEX1dIRUVMX0VWRU5UUyAxCiAjZW5kaWYKIAor
I2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKFdJTikgJiYgIU9TKFdJTkNFKSAmJiAhUExB
VEZPUk0oV0lOX0NBSVJPKSkKKyNkZWZpbmUgV1RGX1VTRV9DT1JFQVVESU8gMQorI2VuZGlmCisK
ICNlbmRpZiAvKiBXVEZfUGxhdGZvcm1faCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGUyNjU5MDM1NjRhZmZhOTRkNDgyNTAz
N2ZiMDY5MDJiODFiMzQ3Y2EuLjdjZjg0ZGM2MTcxYTkyZjUwODE2NGFiMmFjZWQyZjA0N2NjYjM4
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTU2ODUsNiArNTY4NSw5IEBACiAJCUNEODIwMzBEMTM5NUFCNkEwMEY5NTZDNiAv
KiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4MjAzMDkxMzk1QUI2QTAwRjk1NkM2
IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gKi87IH07CiAJCUNE
ODIwMzEwMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzBFMTM5NUFDRTcwMEY5
NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCAqLzsgfTsKIAkJQ0Q4MjAzMTExMzk1QUNFNzAw
Rjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzBGMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5k
b3dBbmltYXRpb24ubW0gKi87IH07CisJCUNERUE3NjMwMTQ2MDhBNTMwMDhCMzFGMSAvKiBQbGF0
Zm9ybUNsb2NrQ0EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RFQTc2MkUxNDYwODRERTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAgKi87
IH07CisJCUNERUE3NjM0MTQ2MEI1NkYwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrUE9TSVguY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTc2MzIx
NDYwQUUyOTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tQT1NJWC5jcHAgKi87IH07CisJCUNERUE3
NjM1MTQ2MEI3MUEwMDhCMzFGMSAvKiBDbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVBNzYzMzE0NjBCNDYyMDA4QjMxRjEgLyogQ2xvY2su
Y3BwICovOyB9OwogCQlDREVBN0M4NDEyNzYyMzA0MDBCODQ2REQgLyogUmVuZGVyRnVsbFNjcmVl
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTdD
ODIxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4uaCAqLzsgfTsKIAkJQ0RFQTdD
ODUxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTdDODMxMjc2MjMwNDAwQjg0NkRE
IC8qIFJlbmRlckZ1bGxTY3JlZW4uY3BwICovOyB9OwogCQlDRTAyRjBDNDExRTgzQUREMDBDNjY4
NEEgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENFMDJGMEMzMTFFODNBREQwMEM2Njg0QSAvKiBTY3JpcHRDb250
cm9sbGVyQmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0xMjk0OCw2ICsxMjk1MSwxMiBAQAogCQlDRDgyMDMwRTEzOTVBQ0U3MDBGOTU2QzYg
LyogV2ViV2luZG93QW5pbWF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYldpbmRvd0FuaW1hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDgy
MDMwRjEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViV2luZG93QW5pbWF0aW9uLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREJEOTNCQTEzMzNCRDRCMDAyNTcwRTMgLyogZnVs
bHNjcmVlblF1aWNrVGltZS5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9IGZ1bGxzY3Jl
ZW5RdWlja1RpbWUuY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREVBNzYyQzE0
NjA4MjI0MDA4QjMxRjEgLyogQ2xvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ2xvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFQTc2MkUxNDYwODRE
RTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQbGF0Zm9ybUNsb2NrQ0EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREVBNzYyRjE0NjA4NEVFMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtQ2xvY2tDQS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDREVBNzYzMTE0NjBBRTFCMDA4QjMxRjEgLyogUGxhdGZv
cm1DbG9ja1BPU0lYLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3Jt
Q2xvY2tQT1NJWC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREVBNzYzMjE0NjBB
RTI5MDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja1BPU0lYLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtQ2xvY2tQT1NJWC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNERUE3NjMzMTQ2MEI0NjIwMDhCMzFGMSAvKiBDbG9jay5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbG9jay5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNERUE3QzgyMTI3NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJGdWxs
U2NyZWVuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckZ1bGxTY3Jl
ZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTdDODMxMjc2MjMwNDAwQjg0
NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVuZGVyRnVsbFNjcmVlbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNFMDJGMEMzMTFFODNBREQwMEM2Njg0QSAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRDb250cm9sbGVyQmFzZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ5NzcsNiArMTQ5ODYsOCBAQAogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1MTYwMzAwQTBDQzQyNTEyMDBDOEFD
MjUgLyogRmlsZVN5c3RlbVBPU0lYLmNwcCAqLywKKwkJCQlDREVBNzYzMTE0NjBBRTFCMDA4QjMx
RjEgLyogUGxhdGZvcm1DbG9ja1BPU0lYLmggKi8sCisJCQkJQ0RFQTc2MzIxNDYwQUUyOTAwOEIz
MUYxIC8qIFBsYXRmb3JtQ2xvY2tQT1NJWC5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IHBvc2l4
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE1MzQ4LDYgKzE1MzU5LDggQEAKIAkJ
CQlDRDgyMDMwRjEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLm1tICovLAog
CQkJCTkzNUM0NzcyMDlBQzRENzcwMEE2QUFCNCAvKiBXaGVlbEV2ZW50TWFjLm1tICovLAogCQkJ
CTkzODBGNDc3MDlBMTFBQ0MwMDFGREIzNCAvKiBXaWRnZXRNYWMubW0gKi8sCisJCQkJQ0RFQTc2
MkUxNDYwODRERTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAgKi8sCisJCQkJQ0RFQTc2
MkYxNDYwODRFRTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5oICovLAogCQkJKTsKIAkJCXBh
dGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTk5OTQsNiArMjAwMDcs
OCBAQAogCQkJCTkzODBGNDcxMDlBMTFBQjQwMDFGREIzNCAvKiBXaWRnZXQuY3BwICovLAogCQkJ
CTkzODBGNDcyMDlBMTFBQjQwMDFGREIzNCAvKiBXaWRnZXQuaCAqLywKIAkJCQlFMUUxQkVGRjEx
NUZGNkZCMDA2RjUyQ0EgLyogV2luZG93c0tleWJvYXJkQ29kZXMuaCAqLywKKwkJCQlDREVBNzYy
QzE0NjA4MjI0MDA4QjMxRjEgLyogQ2xvY2suaCAqLywKKwkJCQlDREVBNzYzMzE0NjBCNDYyMDA4
QjMxRjEgLyogQ2xvY2suY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBwbGF0Zm9ybTsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNzMxOSw2ICsyNzMzNCw5IEBACiAJCQkJOTc2NjUw
NEYxNDRGQkZGRTAwRjZCQjUxIC8qIEV2ZW50RmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBMEVFMERGNTE0NEY4MjU1MDBGODBCMEQgLyogV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBMEVFMERGNzE0NEY4MjU1MDBGODBCMEQgLyogV2ViR0xEZWJ1
Z1NoYWRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RFQTc2MzAxNDYwOEE1MzAwOEIzMUYx
IC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREVBNzYzNDE0NjBC
NTZGMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja1BPU0lYLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUNERUE3NjM1MTQ2MEI3MUEwMDhCMzFGMSAvKiBDbG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0Nsb2NrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MGM1ODhjNWMyZWRhZWY3OTI4NmMx
ZWVkZDk1YTQyZmY0MTFlNGQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ2xvY2suY3BwCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkNsb2NrLmgiCisKKyNpZiBVU0UoQ09SRUFVRElPKQorICAgICNp
bmNsdWRlICJQbGF0Zm9ybUNsb2NrQ0EuaCIKKyNlbHNlCisgICAgI2luY2x1ZGUgIlBsYXRmb3Jt
Q2xvY2tQT1NJWC5oIgorI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitQYXNz
UmVmUHRyPENsb2NrPiBDbG9jazo6Y3JlYXRlKCkKK3sKKyNpZiBVU0UoQ09SRUFVRElPKQorICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1DbG9ja0NBKCkpOworI2Vsc2UKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtQ2xvY2tQT1NJWCgpKTsKKyNlbmRpZgorfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2xvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0Nsb2NrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODZhZjk1NjU3Mzk4ZDRlNjI5MDI5YjE0YjdmZjBl
MDlmZDJiODZjZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Ns
b2NrLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENsb2NrX2gKKyNkZWZp
bmUgQ2xvY2tfaAorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENsb2NrIDogcHVi
bGljIFJlZkNvdW50ZWQ8Q2xvY2s+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxD
bG9jaz4gY3JlYXRlKCk7CisgICAgdmlydHVhbCB+Q2xvY2soKSB7IH0KKworICAgIHZpcnR1YWwg
dm9pZCBzZXRDdXJyZW50VGltZShmbG9hdCkgPSAwOworICAgIHZpcnR1YWwgZmxvYXQgY3VycmVu
dFRpbWUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGxheVJhdGUoZmxvYXQp
ID0gMDsKKyAgICB2aXJ0dWFsIGZsb2F0IHBsYXlSYXRlKCkgY29uc3QgPSAwOworCisgICAgdmly
dHVhbCB2b2lkIHN0YXJ0KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc1J1bm5pbmcoKSBjb25zdCA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICBD
bG9jaygpIHsgfQorfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1BsYXRmb3JtQ2xvY2tDQS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdiNzU3NTJjMWNlZmY4MDQz
NmQzMDk2MTAwYTg2Zjc2Nzg4YWVmMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ0EuY3BwCkBAIC0wLDAgKzEsMTE4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKENPUkVBVURJTykKKworI2luY2x1
ZGUgIlBsYXRmb3JtQ2xvY2tDQS5oIgorCisjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCisj
aW5jbHVkZSA8QXVkaW9Ub29sYm94L0NvcmVBdWRpb0Nsb2NrLmg+CisjaW5jbHVkZSA8Q29yZUF1
ZGlvL0F1ZGlvSGFyZHdhcmUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1BsYXRm
b3JtQ2xvY2tDQTo6UGxhdGZvcm1DbG9ja0NBKCkKKyAgICA6IG1fY2xvY2soMCkKKyAgICAsIG1f
cnVubmluZyhmYWxzZSkKK3sKKyAgICBDQUNsb2NrTmV3KDAsICZtX2Nsb2NrKTsKKyAgICBVSW50
MzIgdGltZWJhc2UgPSBrQ0FDbG9ja1RpbWViYXNlX0F1ZGlvRGV2aWNlOworICAgIFVJbnQzMiB0
aW1lYmFzZVNpemUgPSBzaXplb2YodGltZWJhc2UpOworICAgIENBQ2xvY2tTZXRQcm9wZXJ0eSht
X2Nsb2NrLCBrQ0FDbG9ja1Byb3BlcnR5X0ludGVybmFsVGltZWJhc2UsIHRpbWViYXNlU2l6ZSwg
JnRpbWViYXNlKTsKKworICAgIEF1ZGlvT2JqZWN0SUQgZGVmYXVsdEF1ZGlvT3V0cHV0ID0gMDsK
KyAgICBVSW50MzIgZGVmYXVsdEF1ZGlvT3V0cHV0U2l6ZSA9IHNpemVvZihkZWZhdWx0QXVkaW9P
dXRwdXQpOworCisgICAgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MgYWRkcmVzczsKKyAgICBh
ZGRyZXNzLm1TZWxlY3RvciA9IGtBdWRpb0hhcmR3YXJlUHJvcGVydHlEZWZhdWx0T3V0cHV0RGV2
aWNlOworICAgIGFkZHJlc3MubVNjb3BlICAgID0ga0F1ZGlvT2JqZWN0UHJvcGVydHlTY29wZUds
b2JhbDsKKyAgICBhZGRyZXNzLm1FbGVtZW50ICA9IGtBdWRpb09iamVjdFByb3BlcnR5RWxlbWVu
dE1hc3RlcjsKKworICAgIEF1ZGlvT2JqZWN0R2V0UHJvcGVydHlEYXRhKGtBdWRpb09iamVjdFN5
c3RlbU9iamVjdCwgJmFkZHJlc3MsIDAsIDAsICZkZWZhdWx0QXVkaW9PdXRwdXRTaXplLCAmZGVm
YXVsdEF1ZGlvT3V0cHV0KTsKKyAgICBDQUNsb2NrU2V0UHJvcGVydHkobV9jbG9jaywga0NBQ2xv
Y2tQcm9wZXJ0eV9UaW1lYmFzZVNvdXJjZSwgZGVmYXVsdEF1ZGlvT3V0cHV0U2l6ZSwgJmRlZmF1
bHRBdWRpb091dHB1dCk7Cit9CisKK1BsYXRmb3JtQ2xvY2tDQTo6flBsYXRmb3JtQ2xvY2tDQSgp
Cit7CisgICAgQ0FDbG9ja0Rpc3Bvc2UobV9jbG9jayk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DbG9j
a0NBOjpzZXRDdXJyZW50VGltZShmbG9hdCB0aW1lKQoreworICAgIENBQ2xvY2tUaW1lIGNhVGlt
ZTsKKyAgICBjYVRpbWUuZm9ybWF0ID0ga0NBQ2xvY2tUaW1lRm9ybWF0X1NlY29uZHM7CisgICAg
Y2FUaW1lLnRpbWUuc2Vjb25kcyA9IHRpbWU7CisgICAgQ0FDbG9ja1NldEN1cnJlbnRUaW1lKG1f
Y2xvY2ssICZjYVRpbWUpOworfQorCitmbG9hdCBQbGF0Zm9ybUNsb2NrQ0E6OmN1cnJlbnRUaW1l
KCkgY29uc3QKK3sKKyAgICBDQUNsb2NrVGltZSBjYVRpbWU7CisKKyAgICAvLyBDQUNsb2NrIGRv
ZXMgbm90IHJldHVybiB0aGUgY29ycmVjdCBjdXJyZW50IHRpbWUgd2hlbiBzdG9wcGVkLiBJbnN0
ZWFkLCBxdWVyeSBmb3IKKyAgICAvLyB3aGF0IGlzIHRoZSBzdGFydCB0aW1lLCBpLmUuIHdoYXQg
dGhlIGN1cnJlbnQgdGltZSB3aWxsIGJlIHdoZW4gc3RhcnRlZC4KKyAgICBpZiAobV9ydW5uaW5n
KSB7CisgICAgICAgIGlmIChDQUNsb2NrR2V0Q3VycmVudFRpbWUobV9jbG9jaywga0NBQ2xvY2tU
aW1lRm9ybWF0X1NlY29uZHMsICZjYVRpbWUpID09IG5vRXJyKQorICAgICAgICAgICAgcmV0dXJu
IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY2FUaW1lLnRpbWUuc2Vjb25kcyk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgaWYgKENBQ2xvY2tHZXRTdGFydFRpbWUobV9jbG9jaywga0NBQ2xvY2tUaW1l
Rm9ybWF0X1NlY29uZHMsICZjYVRpbWUpID09IG5vRXJyKQorICAgICAgICAgICAgcmV0dXJuIG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQoY2FUaW1lLnRpbWUuc2Vjb25kcyk7CisgICAgfQorICAgIHJl
dHVybiAwOworfQorCit2b2lkIFBsYXRmb3JtQ2xvY2tDQTo6c2V0UGxheVJhdGUoZmxvYXQgcmF0
ZSkKK3sKKyAgICBDQUNsb2NrU2V0UGxheVJhdGUobV9jbG9jaywgcmF0ZSk7Cit9CisKK2Zsb2F0
IFBsYXRmb3JtQ2xvY2tDQTo6UGxhdGZvcm1DbG9ja0NBOjpwbGF5UmF0ZSgpIGNvbnN0Cit7Cisg
ICAgZG91YmxlIHJhdGUgPSAwOworICAgIGlmIChDQUNsb2NrR2V0UGxheVJhdGUobV9jbG9jaywg
JnJhdGUpID09IG5vRXJyKQorICAgICAgICByZXR1cm4gbmFycm93UHJlY2lzaW9uVG9GbG9hdChy
YXRlKTsKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBQbGF0Zm9ybUNsb2NrQ0E6OnN0YXJ0KCkK
K3sKKyAgICBpZiAobV9ydW5uaW5nKQorICAgICAgICByZXR1cm47CisgICAgbV9ydW5uaW5nID0g
dHJ1ZTsKKyAgICBDQUNsb2NrU3RhcnQobV9jbG9jayk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DbG9j
a0NBOjpzdG9wKCkKK3sKKyAgICBpZiAoIW1fcnVubmluZykKKyAgICAgICAgcmV0dXJuOworICAg
IG1fcnVubmluZyA9IGZhbHNlOworICAgIENBQ2xvY2tTdG9wKG1fY2xvY2spOworfQorCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtQ2xv
Y2tDQS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtQ2xvY2tDQS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmIxMDFkN2E5NWQyMzY1MzFhODZhMzdhMTZkOTYyNTAyYTI0ZTYzYWUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1DbG9ja0NB
LmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGxhdGZvcm1DbG9ja0NBX2gK
KyNkZWZpbmUgUGxhdGZvcm1DbG9ja0NBX2gKKworI2lmIFVTRShDT1JFQVVESU8pCisKKyNpbmNs
dWRlICJDbG9jay5oIgorCit0eXBlZGVmIHN0cnVjdCBPcGFxdWVDQUNsb2NrICpDQUNsb2NrUmVm
OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBsYXRmb3JtQ2xvY2tDQSA6IHB1Ymxp
YyBDbG9jayB7CitwdWJsaWM6CisgICAgUGxhdGZvcm1DbG9ja0NBKCk7CisgICAgdmlydHVhbCB+
UGxhdGZvcm1DbG9ja0NBKCk7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHNldEN1cnJl
bnRUaW1lKGZsb2F0KTsKKyAgICB2aXJ0dWFsIGZsb2F0IGN1cnJlbnRUaW1lKCkgY29uc3Q7CisK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0UGxheVJhdGUoZmxvYXQpOworICAgIHZpcnR1YWwgZmxvYXQg
cGxheVJhdGUoKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpOworICAgIHZpcnR1
YWwgdm9pZCBzdG9wKCk7CisgICAgdmlydHVhbCBib29sIGlzUnVubmluZygpIGNvbnN0IHsgcmV0
dXJuIG1fcnVubmluZzsgfQorCisgICAgQ0FDbG9ja1JlZiBtX2Nsb2NrOworICAgIGJvb2wgbV9y
dW5uaW5nOworfTsKKworfQorCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9QbGF0Zm9ybUNsb2NrUE9TSVguY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcG9zaXgvUGxhdGZvcm1DbG9ja1BPU0lYLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
MDUzNzVjNmJhZTI5NjMxNDU4NTJjYjczMTVlZTRlMjk3NDBiYjgxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvUGxhdGZvcm1DbG9ja1BPU0lYLmNwcApA
QCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1DbG9ja1BPU0lYLmgiCisKKyNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIK
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0YXRpYyBmbG9hdCB0aW1ldmFsVG9GbG9h
dCh0aW1ldmFsIHZhbCkKK3sKKyAgICByZXR1cm4gdmFsLnR2X3NlYyArICh2YWwudHZfdXNlYyAv
IDEwMDAwMDAuMGYpOworfQorCitzdGF0aWMgdGltZXZhbCB0aW1ldmFsRGVsdGEodGltZXZhbCBm
aXJzdCwgdGltZXZhbCBzZWNvbmQpCit7CisgICAgdGltZXZhbCBkZWx0YTsKKyAgICBkZWx0YS50
dl9zZWMgPSBmaXJzdC50dl9zZWMgLSBzZWNvbmQudHZfc2VjOworICAgIGRlbHRhLnR2X3VzZWMg
PSBmaXJzdC50dl91c2VjIC0gc2Vjb25kLnR2X3VzZWM7CisgICAgaWYgKGRlbHRhLnR2X3VzZWMg
PCAwKSB7CisgICAgICAgIGRlbHRhLnR2X3VzZWMgKz0gMTAwMDAwMDsKKyAgICAgICAgZGVsdGEu
dHZfc2VjLS07CisgICAgfQorICAgIHJldHVybiBkZWx0YTsKK30KKworUGxhdGZvcm1DbG9ja1BP
U0lYOjpQbGF0Zm9ybUNsb2NrUE9TSVgoKQorICAgIDogbV9ydW5uaW5nKGZhbHNlKQorICAgICwg
bV9yYXRlKDEpCisgICAgLCBtX29mZnNldCgwKQoreworICAgIG1fc3RhcnRUaW1lID0gbV9sYXN0
VGltZSA9IG5vdygpOworfQorCit2b2lkIFBsYXRmb3JtQ2xvY2tQT1NJWDo6c2V0Q3VycmVudFRp
bWUoZmxvYXQgdGltZSkKK3sKKyAgICBtX3N0YXJ0VGltZSA9IG1fbGFzdFRpbWUgPSBub3coKTsK
KyAgICBtX29mZnNldCA9IHRpbWU7Cit9CisKK2Zsb2F0IFBsYXRmb3JtQ2xvY2tQT1NJWDo6Y3Vy
cmVudFRpbWUoKSBjb25zdAoreworICAgIGlmIChtX3J1bm5pbmcpCisgICAgICAgIG1fbGFzdFRp
bWUgPSBub3coKTsKKyAgICBmbG9hdCB0aW1lID0gKHRpbWV2YWxUb0Zsb2F0KHRpbWV2YWxEZWx0
YShtX2xhc3RUaW1lLCBtX3N0YXJ0VGltZSkpICogbV9yYXRlKSArIG1fb2Zmc2V0OworICAgIHJl
dHVybiB0aW1lOworfQorCit2b2lkIFBsYXRmb3JtQ2xvY2tQT1NJWDo6c2V0UGxheVJhdGUoZmxv
YXQgcmF0ZSkKK3sKKyAgICBtX29mZnNldCA9IGN1cnJlbnRUaW1lKCk7CisgICAgbV9sYXN0VGlt
ZSA9IG1fc3RhcnRUaW1lID0gbm93KCk7CisgICAgbV9yYXRlID0gcmF0ZTsKK30KKwordm9pZCBQ
bGF0Zm9ybUNsb2NrUE9TSVg6OnN0YXJ0KCkKK3sKKyAgICBpZiAobV9ydW5uaW5nKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2xhc3RUaW1lID0gbV9zdGFydFRpbWUgPSBub3coKTsKKyAgICBt
X3J1bm5pbmcgPSB0cnVlOworfQorCit2b2lkIFBsYXRmb3JtQ2xvY2tQT1NJWDo6c3RvcCgpCit7
CisgICAgaWYgKCFtX3J1bm5pbmcpCisgICAgICAgIHJldHVybjsKKworICAgIG1fb2Zmc2V0ID0g
Y3VycmVudFRpbWUoKTsKKyAgICBtX2xhc3RUaW1lID0gbV9zdGFydFRpbWUgPSBub3coKTsKKyAg
ICBtX3J1bm5pbmcgPSBmYWxzZTsKK30KKwordGltZXZhbCBQbGF0Zm9ybUNsb2NrUE9TSVg6Om5v
dygpIGNvbnN0Cit7CisgICAgdGltZXZhbCB2YWw7CisgICAgZ2V0dGltZW9mZGF5KCZ2YWwsIDAp
OworICAgIHJldHVybiB2YWw7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9wb3NpeC9QbGF0Zm9ybUNsb2NrUE9TSVguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bv
c2l4L1BsYXRmb3JtQ2xvY2tQT1NJWC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxOTcyMmUzMjYwZjYwMmQ1Zjc5
MmM2MmY1YzJhOTkyZDM5MDczY2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9wb3NpeC9QbGF0Zm9ybUNsb2NrUE9TSVguaApAQCAtMCwwICsxLDYwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBQbGF0Zm9ybUNsb2NrUE9TSVhfaAorI2RlZmluZSBQbGF0Zm9ybUNsb2Nr
UE9TSVhfaAorCisjaW5jbHVkZSAiQ2xvY2suaCIKKyNpbmNsdWRlIDx0aW1lLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGxhdGZvcm1DbG9ja1BPU0lYIDogcHVibGljIENsb2Nr
IHsKK3B1YmxpYzoKKyAgICBQbGF0Zm9ybUNsb2NrUE9TSVgoKTsKKworcHJpdmF0ZToKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRpbWUoZmxvYXQpOworICAgIHZpcnR1YWwgZmxvYXQgY3Vy
cmVudFRpbWUoKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5UmF0ZShmbG9hdCk7
CisgICAgdmlydHVhbCBmbG9hdCBwbGF5UmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmF0ZTsgfQor
CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNSdW5uaW5nKCkgY29uc3QgeyByZXR1cm4gbV9ydW5uaW5nOyB9CisK
KyAgICB0aW1ldmFsIG5vdygpIGNvbnN0OworCisgICAgYm9vbCBtX3J1bm5pbmc7CisgICAgZmxv
YXQgbV9yYXRlOworICAgIGZsb2F0IG1fb2Zmc2V0OworICAgIHRpbWV2YWwgbV9zdGFydFRpbWU7
CisgICAgbXV0YWJsZSB0aW1ldmFsIG1fbGFzdFRpbWU7Cit9OworCit9CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113364</attachid>
            <date>2011-11-02 13:31:17 -0700</date>
            <delta_ts>2011-11-02 15:02:22 -0700</delta_ts>
            <desc>MediaController and HTMLMediaElement changes.</desc>
            <filename>bug-71341-20111102133116.patch</filename>
            <type>text/plain</type>
            <size>73282</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTgzNTkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmZjJlNTQ1NmE2MWU5Y2Y1
ZGMwNjcwNzZhNzQ3NTdhZDdhOWNkODhjLi42OGI0ODRhMTg0YzNiYzAxMGU0NzllZTc0ZjA5YTBj
N2NjNDU0NjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC01LDYgKzUsMTU2IEBACiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAgVGVzdHM6IG1lZGlhL21lZGlhLWNvbnRy
b2xsZXItcGxheWJhY2suaHRtbAorICAgICAgICAgICAgICAgbWVkaWEvbWVkaWEtY29udHJvbGxl
ci5odG1sCisKKyAgICAgICAgQWRkcyBzdXBwb3J0IGZvciB0aGUgTWVkaWFDb250cm9sbGVyIERP
TSBvYmplY3QsIGFuZCB0aGUgbWVkaWFncm91cCBhbmQgbWVkaWFjb250cm9sbGVyCisgICAgICAg
IEhUTUxNZWRpYUVsZW1lbnQgYXR0cmlidXRlcy4KKworICAgICAgICBNZWRpYUNvbnRyb2xsZXIg
aXMgYW4gRE9NIG9iamVjdCB3aGljaCBzeW5jaHJvbml6ZXMgcGxheWJhY2sgb2YgbXVsdGlwbGUg
SFRNTE1lZGlhRWxlbWVudHMuIEl0IGNhbgorICAgICAgICBlaXRoZXIgYmUgY3JlYXRlZCBieSBh
IHBhZ2Ugc2NyaXB0IGFuZCBhc3NpZ25lZCB0byBhIEhUTUxNZWRpYUVsZW1lbnQgdXNpbmcgdGhl
IG1lZGlhQ29udHJvbGxlciBwcm9wZXJ0eSwKKyAgICAgICAgb3IgYWxsIEhUTUxNZWRpYUVsZW1l
bnRzIHdpdGggaWRlbnRpY2FsIG1lZGlhZ3JvdXAgYXR0cmlidXRlcyB3aWxsIGhhdmUgYSBNZWRp
YUNvbnRyb2xsZXIgYXNzaWduZWQgCisgICAgICAgIGF1dG9tYXRpY2FsbHkuCisKKyAgICAgICAg
QWRkIGFuIGFic3RyYWN0IGludGVyZmFjZSBpbXBsZW1lbnRlZCBieSBib3RoIE1lZGlhQ29udHJv
bGxlciBhbmQgSFRNTE1lZGlhRWxlbWVudC4KKyAgICAgICAgKiBodG1sL01lZGlhQ29udHJvbGxl
ckludGVyZmFjZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcklu
dGVyZmFjZTo6fk1lZGlhQ29udHJvbGxlckludGVyZmFjZSk6CisKKyAgICAgICAgQWRkIHRoZSBN
ZWRpYUNvbnRyb2xsZXIgb2JqZWN0IGFuZCBJREwuCisgICAgICAgICogaHRtbC9NZWRpYUNvbnRy
b2xsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKG1lZGlhR3JvdXBUb01lZGlhQ29udHJvbGxlck1h
cCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6Om1lZGlhQ29udHJvbGxlckZvck1lZGlhR3Jv
dXApOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpjcmVhdGUpOgorICAgICAgICAoTWVkaWFD
b250cm9sbGVyOjpNZWRpYUNvbnRyb2xsZXIpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjp+
TWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6YWRkTWVkaWFFbGVt
ZW50KToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6cmVtb3ZlTWVkaWFFbGVtZW50KToKKyAg
ICAgICAgKE1lZGlhQ29udHJvbGxlcjo6Y29udGFpbnNNZWRpYUVsZW1lbnQpOgorICAgICAgICAo
TWVkaWFDb250cm9sbGVyOjpidWZmZXJlZCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnNl
ZWthYmxlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6cGxheWVkKToKKyAgICAgICAgKE1l
ZGlhQ29udHJvbGxlcjo6ZHVyYXRpb24pOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpjdXJy
ZW50VGltZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnNldEN1cnJlbnRUaW1lKToKKyAg
ICAgICAgKE1lZGlhQ29udHJvbGxlcjo6cGxheSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6
OnBhdXNlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6c2V0RGVmYXVsdFBsYXliYWNrUmF0
ZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnNldFBsYXliYWNrUmF0ZSk6CisgICAgICAg
IChNZWRpYUNvbnRyb2xsZXI6OnNldFZvbHVtZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6
OnNldE11dGVkKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6dXBkYXRlUmVhZHlTdGF0ZSk6
CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnVwZGF0ZVBsYXliYWNrU3RhdGUpOgorICAgICAg
ICAoTWVkaWFDb250cm9sbGVyOjp1cGRhdGVNZWRpYUVsZW1lbnRzKToKKyAgICAgICAgKE1lZGlh
Q29udHJvbGxlcjo6c2NoZWR1bGVFdmVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmFz
eW5jRXZlbnRUaW1lckZpcmVkKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6Omhhc0F1ZGlvKToKKyAg
ICAgICAgKE1lZGlhQ29udHJvbGxlcjo6aGFzVmlkZW8pOgorICAgICAgICAoTWVkaWFDb250cm9s
bGVyOjpoYXNDbG9zZWRDYXB0aW9ucyk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnNldENs
b3NlZENhcHRpb25zVmlzaWJsZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnN1cHBvcnRz
U2Nhbm5pbmcpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpiZWdpblNjcnViYmluZyk6Cisg
ICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmVuZFNjcnViYmluZyk6CisgICAgICAgIChNZWRpYUNv
bnRyb2xsZXI6OmNhblBsYXkpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjppc0xpdmVTdHJl
YW0pOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjppc0xvYWRpbmcpOgorICAgICAgICAoTWVk
aWFDb250cm9sbGVyOjpyZXR1cm5Ub1JlYWx0aW1lKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxl
cjo6aXNCbG9ja2VkKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6aGFzRW5kZWQpOgorICAg
ICAgICAqIGh0bWwvTWVkaWFDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sbGVyOjptZWRpYUdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbGxlcjo6cGF1c2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6ZGVm
YXVsdFBsYXliYWNrUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnBs
YXliYWNrUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnZvbHVtZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6Om11dGVkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6cmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xsZXI6OnBsYXliYWNrU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sbGVyOjpzdXBwb3J0c0Z1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sbGVyOjppc0Z1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
bGVyOjplbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sbGVy
OjpjbG9zZWRDYXB0aW9uc1Zpc2libGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
bGVyOjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6
OmRlcmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyOjp0
b01lZGlhQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OmV2
ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OmVuc3Vy
ZUV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgICogaHRtbC9NZWRpYUNvbnRyb2xsZXIuaWRsOiBB
ZGRlZC4KKworICAgICAgICBBZGQgY29udmVuaWVuY2UgZnVuY3Rpb25zIHRvIFRpbWVSYW5nZXMg
d2hpY2ggY2FuIGNhbGN1bGF0ZSBpbnRlcnNlY3Rpb25zIGFuZAorICAgICAgICB1bmlvbnMgYmV0
d2VlbiBUaW1lUmFuZ2VzIG9iamVjdHMuCisgICAgICAgICogaHRtbC9UaW1lUmFuZ2VzLmNwcDoK
KyAgICAgICAgKFRpbWVSYW5nZXM6OmNvcHkpOgorICAgICAgICAoVGltZVJhbmdlczo6aW52ZXJ0
KToKKyAgICAgICAgKFRpbWVSYW5nZXM6OmludGVyc2VjdFdpdGgpOgorICAgICAgICAoVGltZVJh
bmdlczo6dW5pb25XaXRoKToKKyAgICAgICAgKiBodG1sL1RpbWVSYW5nZXMuaDoKKworICAgICAg
ICBBZGQgTWVkaWFDb250cm9sbGVyQ29uc3RydWN0b3IgdG8gdGhlIFdpbmRvdyBvYmplY3QuCisg
ICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorCisgICAgICAgIEFkZCB0aGUgdHdvIG5ldyBh
dHRyaWJ1dGUgbmFtZXMsIG1lZGlhZ3JvdXAgYW5kIG1lZGlhY29udHJvbGxlci4KKyAgICAgICAg
KiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjoKKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
dGhlIG5ldyBhdHRyaWJ1dGVzLCBhbmQgYWRkIG92ZXJyaWRkZW4gYmVoYXZpb3Igd2hlbiBhIG1l
ZGlhIGVsZW1lbnQKKyAgICAgICAgaGFzIGEgY3VycmVudCBtZWRpYSBjb250cm9sbGVyOgorICAg
ICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9yTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpzZXRSZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnNldEN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnNldFBsYXliYWNrUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpzZXRQbGF5YmFja1JhdGVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpwbGF5SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6dG9nZ2xlUGxheVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVyVGltZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6c2Vla2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
cG90ZW50aWFsbHlQbGF5aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmVuZGVkUGxheWJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBk
YXRlVm9sdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVBs
YXlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1c2VyQ2FuY2Vs
bGVkTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYUdyb3Vw
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhR3JvdXApOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFDb250cm9sbGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhQ29udHJvbGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVNZWRpYUNvbnRyb2xsZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6aXNCbG9ja2VkT25NZWRpYUNv
bnRyb2xsZXIpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6aXNMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OmlzTGl2ZVN0cmVhbSk6CisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxNZWRpYUVsZW1lbnRD
dXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTE1lZGlhRWxlbWVudDo6
c2V0TWVkaWFDb250cm9sbGVyKToKKworICAgICAgICBBZGQgYSBmdW5jdGlvbiAic2Vla2FibGUi
IHdoaWNoIHJldHVybnMgYSBUaW1lUmFuZ2VzIGNvbnRhaW5pbmcgdGhlIHNlZWthYmxlIHRpbWUg
cmFuZ2VzCisgICAgICAgIGluIGEgbWVkaWEgZWxlbWVudC4gIEJ5IGRlZmF1bHQgdGhpcyBpcyBh
IHNpbmdsZSByYW5nZSBvZiBbMCwgbWF4VGltZVNlZWthYmxlXS4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
cjo6c2Vla2FibGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OnNlZWthYmxlKToKKwor
ICAgICAgICBTdXBwb3J0IGZ1bmN0aW9ucyB0byBjYXN0IGJldHdlZW4gTWVkaWFDb250cm9sbGVy
IGFuZCBFdmVudFRhcmdldC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6dG9NZWRpYUNvbnRyb2xsZXIpOgor
ICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5oOgorCisgICAgICAgIEJvaWxlcnBsYXRlIHRvIHN1
cHBvcnQgY3JlYXRpbmcgdGhlIGRlcml2ZWQgc291cmNlcyBmb3IgTWVkaWFDb250cm9sbGVyIGFu
ZCBhZGRpbmcgbmV3IHNvdXJjZXMKKyAgICAgICAgdG8gdGhlIHByb2plY3Q6CisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisKKzIwMTEtMTEtMDIgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgSW1wbGVtZW50IE1lZGlhQ29udHJvbGxlci4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMzQxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgTm8gbmV3IHRlc3RzOyB0aGVzZSBjbGFzc2Vz
IHdpbGwgYmUgdXNlZCBhbmQgdGVzdGVkIGJ5IHRoZSBNZWRpYUNvbnRyb2xsZXIgZmVhdHVyZS4K
IAogICAgICAgICBBZGRzIGEgYWJzdHJhY3QgQ2xvY2sgY2xhc3MgYW5kIHR3byBjb25jcmV0ZSwg
cGxhdGZvcm0tc3BlY2lmaWMgc3ViY2xhc3Nlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CmluZGV4IDkxY2VjYTNiNWJiMTU4NGY2Yzk0MWIzOTM3YThiMmY0NmRmMjJlNDQuLjhiY2UzZDlh
ZWZjODQwNmUyYmI4MjRhODA2NDFkODc4NzZiYzcwNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQpAQCAtMjc4LDYgKzI3OCw3IEBAIERPTV9DTEFTU0VTID0gXAogICAgIEtleWJvYXJk
RXZlbnQgXAogICAgIExvY2F0aW9uIFwKICAgICBMb3dQYXNzMkZpbHRlck5vZGUgXAorICAgIE1l
ZGlhQ29udHJvbGxlciBcCiAgICAgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlIFwKICAgICBN
ZWRpYUVycm9yIFwKICAgICBNZWRpYUxpc3QgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdjZjg0ZGM2MTcxYTkyZjUwODE2NGFi
MmFjZWQyZjA0N2NjYjM4YWUuLjNmNWFlYjU1ZDgxMTdmMWRkM2E0NmY3NzU0YWEzZGQzMjUxMDli
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTU2NzksNiArNTY3OSw4IEBACiAJCUNEMERCRkVFMTQyMjc2ODUwMDI4MDI2MyAv
KiBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzE1LndhdiBpbiBDb3B5IEF1ZGlvIFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDBEQkUwRDE0MjI3NTk1
MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMxNS53YXYgKi87IH07CiAJ
CUNEMERCRkVGMTQyMjc2ODUwMDI4MDI2MyAvKiBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9Q
MzMwLndhdiBpbiBDb3B5IEF1ZGlvIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDBEQkUwRTE0MjI3NTk1MDAyODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1Iw
MTk1X1QzNDVfUDMzMC53YXYgKi87IH07CiAJCUNEMERCRkYwMTQyMjc2ODUwMDI4MDI2MyAvKiBJ
UkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzQ1LndhdiBpbiBDb3B5IEF1ZGlvIFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDBEQkUwRjE0MjI3NTk1MDAy
ODAyNjMgLyogSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDM0NS53YXYgKi87IH07CisJCUNE
MjdGNkU1MTQ1NzY4NUEwMDc4MjA3RCAvKiBKU01lZGlhQ29udHJvbGxlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI3RjZFMjE0NTc2NzU4MDA3
ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwICovOyB9OworCQlDRDI3RjZFNzE0NTc3MEQz
MDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjdGNkU2MTQ1NzcwRDMwMDc4MjA3RCAvKiBNZWRpYUNv
bnRyb2xsZXIuY3BwICovOyB9OwogCQlDRDgyMDMwQTEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0Q4MjAzMDYxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlDRDgyMDMwQjEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEODIwMzA3MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyLm1tICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItV25vLXVuZGVmIjsgfTsg
fTsKIAkJQ0Q4MjAzMEMxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdp
bmRvd0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEODIwMzA4MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURX
aW5kb3dDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTU2ODYsMTAgKzU2ODgsMTMgQEAKIAkJQ0Q4MjAzMTAxMzk1QUNFNzAwRjk1
NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0Q4MjAzMEUxMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0Fu
aW1hdGlvbi5oICovOyB9OwogCQlDRDgyMDMxMTEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93
QW5pbWF0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0Q4MjAzMEYxMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tbSAqLzsg
fTsKIAkJQ0RFQTc2MzAxNDYwOEE1MzAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVBNzYyRTE0NjA4
NERFMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmNwcCAqLzsgfTsKKwkJQ0RENTI1RDcxNDVC
NkREMDAwOEQyMDREIC8qIEpTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY2NUNDQzE0NUI2QUZFMDBDNEM3
QUEgLyogSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCAqLzsgfTsKIAkJQ0RFQTc2MzQxNDYw
QjU2RjAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tQT1NJWC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVBNzYzMjE0NjBBRTI5MDA4QjMxRjEgLyog
UGxhdGZvcm1DbG9ja1BPU0lYLmNwcCAqLzsgfTsKIAkJQ0RFQTc2MzUxNDYwQjcxQTAwOEIzMUYx
IC8qIENsb2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENERUE3NjMzMTQ2MEI0NjIwMDhCMzFGMSAvKiBDbG9jay5jcHAgKi87IH07CiAJCUNERUE3
Qzg0MTI3NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJGdWxsU2NyZWVuLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVBN0M4MjEyNzYyMzA0MDBCODQ2REQg
LyogUmVuZGVyRnVsbFNjcmVlbi5oICovOyB9OwogCQlDREVBN0M4NTEyNzYyMzA0MDBCODQ2REQg
LyogUmVuZGVyRnVsbFNjcmVlbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDREVBN0M4MzEyNzYyMzA0MDBCODQ2REQgLyogUmVuZGVyRnVsbFNjcmVl
bi5jcHAgKi87IH07CisJCUNERjY1Q0M4MTQ1QjFFNzUwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjdG
NkU0MTQ1NzY3ODcwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREY2NUNDQTE0NUI0NDg4MDBDNEM3
QUEgLyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY2NUNDOTE0NUI0M0E3MDBDNEM3QUEgLyogTWVkaWFD
b250cm9sbGVySW50ZXJmYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQ0UwMkYwQzQxMUU4M0FERDAwQzY2ODRBIC8qIFNjcmlwdENvbnRyb2xs
ZXJCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RTAyRjBDMzExRTgzQUREMDBDNjY4NEEgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTA1N0ZBNTEyMjA3
MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDU3RkEzMTIyMDczMTEwMEE0NzZE
NSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwICovOyB9OwogCQlDRTA1N0ZBNjEyMjA3
MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTA1N0ZBNDEyMjA3MzExMDBBNDc2RDUg
LyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEyOTQzLDYgKzEyOTQ4LDExIEBACiAJCUNEMERCRTBE
MTQyMjc1OTUwMDI4MDI2MyAvKiBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzE1LndhdiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGF1ZGlvLndh
djsgbmFtZSA9IElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMTUud2F2OyBwYXRoID0gcGxh
dGZvcm0vYXVkaW8vcmVzb3VyY2VzL0lSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMTUud2F2
OyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCUNEMERCRTBFMTQyMjc1OTUwMDI4MDI2
MyAvKiBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzMwLndhdiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGF1ZGlvLndhdjsgbmFtZSA9IElSQ19D
b21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMzAud2F2OyBwYXRoID0gcGxhdGZvcm0vYXVkaW8vcmVz
b3VyY2VzL0lSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMzAud2F2OyBzb3VyY2VUcmVlID0g
U09VUkNFX1JPT1Q7IH07CiAJCUNEMERCRTBGMTQyMjc1OTUwMDI4MDI2MyAvKiBJUkNfQ29tcG9z
aXRlX0NfUjAxOTVfVDM0NV9QMzQ1LndhdiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IGF1ZGlvLndhdjsgbmFtZSA9IElSQ19Db21wb3NpdGVfQ19SMDE5
NV9UMzQ1X1AzNDUud2F2OyBwYXRoID0gcGxhdGZvcm0vYXVkaW8vcmVzb3VyY2VzL0lSQ19Db21w
b3NpdGVfQ19SMDE5NV9UMzQ1X1AzNDUud2F2OyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07
CisJCUNEMjdGNkUwMTQ1NzVDMUIwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IE1lZGlhQ29udHJvbGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMjdG
NkUyMTQ1NzY3NTgwMDc4MjA3RCAvKiBKU01lZGlhQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhQ29udHJvbGxlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMjdGNkUzMTQ1NzY3NTgwMDc4MjA3RCAvKiBKU01lZGlh
Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlhQ29u
dHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDI3RjZFNDE0NTc2Nzg3
MDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1lZGlhQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
RDI3RjZFNjE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhQ29udHJvbGxlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENEUwQUZBMTFGN0JDMjcwMDlEMzgxMSAvKiBmdWxsc2Ny
ZWVuLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gZnVsbHNjcmVlbi5jc3M7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEODIwMzA2MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0Q4MjAzMDcxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTI5NTksNiArMTI5NjksOCBAQAogCQlDREVBNzYzMzE0NjBCNDYyMDA4QjMxRjEgLyogQ2xv
Y2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xvY2suY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBN0M4MjEyNzYyMzA0MDBCODQ2REQgLyog
UmVuZGVyRnVsbFNjcmVlbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5k
ZXJGdWxsU2NyZWVuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERUE3QzgzMTI3
NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJGdWxsU2NyZWVuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckZ1bGxTY3JlZW4uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREY2NUNDOTE0NUI0M0E3MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVy
SW50ZXJmYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ29udHJv
bGxlckludGVyZmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREY2NUNDQzE0
NUI2QUZFMDBDNEM3QUEgLyogSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMDJGMEMzMTFFODNBREQwMEM2Njg0QSAv
KiBTY3JpcHRDb250cm9sbGVyQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTY3JpcHRDb250cm9sbGVyQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
RTA1N0ZBMzEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50TWFya2VyQ29udHJv
bGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMDU3RkE0MTIyMDczMTEw
MEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xNzI4NSw2ICsxNzI5NywxMCBAQAogCQkJCUU0NDYxM0EwMENENjMz
MTAwMEZBREE3NSAvKiBWb2lkQ2FsbGJhY2suaWRsICovLAogCQkJCUY1NUIzREFCMTI1MUYxMkQw
MDNFRjI2OSAvKiBXZWVrSW5wdXRUeXBlLmNwcCAqLywKIAkJCQlGNTVCM0RBQzEyNTFGMTJEMDAz
RUYyNjkgLyogV2Vla0lucHV0VHlwZS5oICovLAorCQkJCUNEMjdGNkUwMTQ1NzVDMUIwMDc4MjA3
RCAvKiBNZWRpYUNvbnRyb2xsZXIuaWRsICovLAorCQkJCUNEMjdGNkU0MTQ1NzY3ODcwMDc4MjA3
RCAvKiBNZWRpYUNvbnRyb2xsZXIuaCAqLywKKwkJCQlDRDI3RjZFNjE0NTc3MEQzMDA3ODIwN0Qg
LyogTWVkaWFDb250cm9sbGVyLmNwcCAqLywKKwkJCQlDREY2NUNDOTE0NUI0M0E3MDBDNEM3QUEg
LyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGh0bWw7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTc1MTYsNiArMTc1MzIsOCBAQAogCQlB
ODNCNzkwODBDQ0FGRjJCMDAwQjA4MjUgLyogSFRNTCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0QyN0Y2RTIxNDU3Njc1ODAwNzgyMDdEIC8qIEpTTWVk
aWFDb250cm9sbGVyLmNwcCAqLywKKwkJCQlDRDI3RjZFMzE0NTc2NzU4MDA3ODIwN0QgLyogSlNN
ZWRpYUNvbnRyb2xsZXIuaCAqLywKIAkJCQk0OUVFQ0VGMjEwNTA3MEM0MDAwOTlGQUIgLyogSlNB
cnJheUJ1ZmZlci5jcHAgKi8sCiAJCQkJNDlFRUNFRjMxMDUwNzBDNDAwMDk5RkFCIC8qIEpTQXJy
YXlCdWZmZXIuaCAqLywKIAkJCQk0OUVFQ0YxOTEwNTA3MkYzMDAwOTlGQUIgLyogSlNBcnJheUJ1
ZmZlclZpZXcuY3BwICovLApAQCAtMTk1MjYsNiArMTk1NDQsNyBAQAogCQkJCUJDQzQzODc3MEU4
ODZDQzcwMDUzM0RENSAvKiBKU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUUx
QUQxNDIyMTI5NUVBN0YwMEFDQTk4OSAvKiBKU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uaCAqLywK
IAkJCQlFMUFEMTM5QTEyOTVEOTI2MDBBQ0E5ODkgLyogSlNIVE1MTGlua0VsZW1lbnRDdXN0b20u
Y3BwICovLAorCQkJCUNERjY1Q0NDMTQ1QjZBRkUwMEM0QzdBQSAvKiBKU0hUTUxNZWRpYUVsZW1l
bnRDdXN0b20uY3BwICovLAogCQkJCUJDMzA1Q0EzMEMwNzgxQkIwMENEMjBGMCAvKiBKU0hUTUxP
YmplY3RFbGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlFMUFEMTQyNDEyOTVFQTk1MDBBQ0E5ODkg
LyogSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5oICovLAogCQkJCTQ0OEFEMjdBMEE0ODEzNzkw
MDIzRDE3OSAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAgKi8sCkBAIC0yNDQ5
Nyw2ICsyNDUxNiw4IEBACiAJCQkJOTcwQjcyOEExNDRGRkFDNjAwRjAwQTM3IC8qIEV2ZW50SW50
ZXJmYWNlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTcwQjcyQTYxNDUwMDhFQjAwRjAwQTM3IC8q
IEV2ZW50SGVhZGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUIzQTg4NzIxNDU2MzJGOTAwM0FF
OEY1IC8qIERPTURPTVNldHRhYmxlVG9rZW5MaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlDREY2
NUNDODE0NUIxRTc1MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQlDREY2NUNDQTE0NUI0NDg4MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNl
LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI3MzM1LDYgKzI3MzU2LDkgQEAKIAkJCQlBMEVFMERGNTE0
NEY4MjU1MDBGODBCMEQgLyogV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBMEVFMERGNzE0NEY4MjU1MDBGODBCMEQgLyogV2ViR0xEZWJ1Z1NoYWRlcnMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RFQTc2MzAxNDYwOEE1MzAwOEIzMUYxIC8qIFBsYXRmb3Jt
Q2xvY2tDQS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRDI3RjZFNTE0NTc2ODVBMDA3ODIwN0Qg
LyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0QyN0Y2RTcxNDU3
NzBEMzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlD
REQ1MjVENzE0NUI2REQwMDA4RDIwNEQgLyogSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUNERUE3NjM0MTQ2MEI1NkYwMDhCMzFGMSAvKiBQbGF0Zm9ybUNs
b2NrUE9TSVguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RFQTc2MzUxNDYwQjcxQTAwOEIzMUYx
IC8qIENsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHAKaW5kZXggYzU2Mjc3ZWUzMjFiMGY5OTFiYzE3MTI5
MGI5NGYyMjFjMTFmZjdhYi4uODM4Yjc1MDg3Y2Q1ZjcwYmQwYjMxNzY5ZTc1YWUwNGZjNTY4NWQ3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHAKQEAg
LTMxLDEwICszMSwxMSBAQAogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiSlNE
T01XaW5kb3dTaGVsbC5oIgogI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUg
IkpTTWVkaWFDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSlNNZXNzYWdlUG9ydC5oIgogI2luY2x1
ZGUgIkpTTm9kZS5oIgotI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKIAorI2lmIEVOQUJMRShT
SEFSRURfV09SS0VSUykKICNpbmNsdWRlICJKU1NoYXJlZFdvcmtlci5oIgogI2luY2x1ZGUgIkpT
U2hhcmVkV29ya2VyQ29udGV4dC5oIgogI2VuZGlmCkBAIC0xOTQsNiArMTk1LDkgQEAgSlNWYWx1
ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RXZlbnRUYXJnZXQqIHRhcmcKICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0
LCBzdHJlYW0pOwogI2VuZGlmCiAKKyAgICBpZiAoTWVkaWFDb250cm9sbGVyKiBjb250cm9sbGVy
ID0gdGFyZ2V0LT50b01lZGlhQ29udHJvbGxlcigpKQorICAgICAgICByZXR1cm4gdG9KUyhleGVj
LCBnbG9iYWxPYmplY3QsIGNvbnRyb2xsZXIpOworCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIGpzTnVsbCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjNjYWE0
ZDkxMTRmYjBiZDZlNzkzZWFlMmY5YmEwYzM3NDdmMjJmOQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAKQEAg
LTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0hUTUxNZWRpYUVsZW1lbnQuaCIK
KworI2luY2x1ZGUgIkpTTWVkaWFDb250cm9sbGVyLmgiCisKKyNpZiBFTkFCTEUoVklERU8pCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK3ZvaWQgSlNIVE1M
TWVkaWFFbGVtZW50OjpzZXRNZWRpYUNvbnRyb2xsZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSB2YWx1
ZSkKK3sKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBpbXAgPSBzdGF0aWNfY2FzdDxIVE1MTWVkaWFF
bGVtZW50Kj4oaW1wbCgpKTsKKyAgICBpbXAtPnNldE1lZGlhQ29udHJvbGxlcih0b01lZGlhQ29u
dHJvbGxlcih2YWx1ZSkpOworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQu
Y3BwCmluZGV4IDYzMzJkMGVmMzU3NDhiMzkxMDZkNmY3YmUxOWI5NmVkNzllMjFmZjEuLmNiZWQ3
ZjlkYzdhMDY4MzVkMDg2NWJhMDIwODdmODdlMmQ5MjhjMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0LmNwcApAQCAtMjIwLDYgKzIyMCwxMyBAQCBQZWVyQ29ubmVjdGlvbiogRXZlbnRUYXJn
ZXQ6OnRvUGVlckNvbm5lY3Rpb24oKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVklERU8pCitN
ZWRpYUNvbnRyb2xsZXIqIEV2ZW50VGFyZ2V0Ojp0b01lZGlhQ29udHJvbGxlcigpCit7CisgICAg
cmV0dXJuIDA7Cit9CisjZW5kaWYKKwogYm9vbCBFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVy
PiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIEV2ZW50VGFyZ2V0RGF0YSogZCA9
IGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAppbmRleCBk
NmU0MzE1YWRiZWMwYjZkZDY1YjQ0ZjdhMGE3OWRiYzA5MjA1NTQ5Li5iZjBhMTIzMTY0MDAxZGQz
NGUxZTIxYmYxMmI5ZWEyNjc3OTk2YjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApAQCAt
NTUsNiArNTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSURCVmVyc2lvbkNo
YW5nZVJlcXVlc3Q7CiAgICAgY2xhc3MgSmF2YVNjcmlwdEF1ZGlvTm9kZTsKICAgICBjbGFzcyBM
b2NhbE1lZGlhU3RyZWFtOworICAgIGNsYXNzIE1lZGlhQ29udHJvbGxlcjsKICAgICBjbGFzcyBN
ZWRpYVN0cmVhbTsKICAgICBjbGFzcyBNZXNzYWdlUG9ydDsKICAgICBjbGFzcyBOb2RlOwpAQCAt
MTUxLDYgKzE1MiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgUGVl
ckNvbm5lY3Rpb24qIHRvUGVlckNvbm5lY3Rpb24oKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFZJ
REVPKQorICAgICAgICB2aXJ0dWFsIE1lZGlhQ29udHJvbGxlciogdG9NZWRpYUNvbnRyb2xsZXIo
KTsKKyNlbmRpZgorCiAgICAgICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0ID0gMDsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wg
YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0
cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXR0cmlidXRlTmFtZXMuaW4KaW5kZXggZjFlMzU0YjYzMWY0OWJhM2FjMTAxZTU1MTNkMjc1
YWM1ZDJkMDk4Mi4uYWU1ZmI3MWNlZWU4NjQwOTgzNmZlMmQ1MDFlYzNmYTk5MGJhMzc1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KQEAgLTE0OCw2ICsxNDgs
NyBAQCBtYXgKIG1heGxlbmd0aAogbWF5c2NyaXB0CiBtZWRpYQorbWVkaWFncm91cAogbWV0aG9k
CiBtaW4KIG11bHRpcGxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApp
bmRleCA0OWQ1ZjZlNDAwMjRiN2Q0N2NhNzNlM2Q1NTg0MmE0ZDlkNDJkOTFjLi5mZGRkZDU1NjI3
ZjFmOGJiYzQxODVkN2U0MGYzZTkxMGMxNDJmZjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJIVE1MU291cmNl
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiTWVkaWFDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTWVkaWFDb250
cm9scy5oIgogI2luY2x1ZGUgIk1lZGlhRG9jdW1lbnQuaCIKICNpbmNsdWRlICJNZWRpYUVycm9y
LmgiCkBAIC0yMjMsNiArMjI0LDggQEAgSFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1l
bnQoKQogICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2YXRpb25DYWxs
YmFja3ModGhpcyk7CiAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvck1lZGlhVm9sdW1lQ2Fs
bGJhY2tzKHRoaXMpOwogICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JQcml2YXRlQnJvd3Np
bmdTdGF0ZUNoYW5nZWRDYWxsYmFja3ModGhpcyk7CisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVy
KQorICAgICAgICBtX21lZGlhQ29udHJvbGxlci0+cmVtb3ZlTWVkaWFFbGVtZW50KHRoaXMpOwog
fQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkK
QEAgLTI5Niw3ICsyOTksOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgaWYgKCFhdXRvcGxheSgpICYmIG1fcGxh
eWVyKQogICAgICAgICAgICAgbV9wbGF5ZXItPnNldFByZWxvYWQobV9wcmVsb2FkKTsKIAotICAg
IH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gb25hYm9ydEF0dHIpCisgICAgfSBlbHNlIGlmIChhdHRy
TmFtZSA9PSBtZWRpYWdyb3VwQXR0cikKKyAgICAgICAgc2V0TWVkaWFHcm91cChhdHRyLT52YWx1
ZSgpKTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBvbmFib3J0QXR0cikKICAgICAgICAgc2V0
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYWJvcnRFdmVudCwgY3JlYXRlQXR0
cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAgICAgZWxzZSBpZiAoYXR0ck5hbWUg
PT0gb25iZWZvcmVsb2FkQXR0cikKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkuYmVmb3JlbG9hZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVy
KHRoaXMsIGF0dHIpKTsKQEAgLTU4NiwxMCArNTkxLDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6cHJlcGFyZUZvckxvYWQoKQogICAgICAgICBtX3NlZWtpbmcgPSBmYWxzZTsKICAgICAgICAg
aW52YWxpZGF0ZUNhY2hlZFRpbWUoKTsKICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVz
KCkuZW1wdGllZEV2ZW50KTsKKyAgICAgICAgdXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CiAgICAg
fQogCiAgICAgLy8gNSAtIFNldCB0aGUgcGxheWJhY2tSYXRlIGF0dHJpYnV0ZSB0byB0aGUgdmFs
dWUgb2YgdGhlIGRlZmF1bHRQbGF5YmFja1JhdGUgYXR0cmlidXRlLgotICAgIHNldFBsYXliYWNr
UmF0ZShkZWZhdWx0UGxheWJhY2tSYXRlKCkpOworICAgIHNldFBsYXliYWNrUmF0ZShtX21lZGlh
Q29udHJvbGxlciA/IG1fbWVkaWFDb250cm9sbGVyLT5kZWZhdWx0UGxheWJhY2tSYXRlKCkgOiBk
ZWZhdWx0UGxheWJhY2tSYXRlKCkpOwogCiAgICAgLy8gNiAtIFNldCB0aGUgZXJyb3IgYXR0cmli
dXRlIHRvIG51bGwgYW5kIHRoZSBhdXRvcGxheWluZyBmbGFnIHRvIHRydWUuCiAgICAgbV9lcnJv
ciA9IDA7CkBAIC0xMjE3LDYgKzEyMjMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFJl
YWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgc3RhdGUpCiAgICAgfQogCiAgICAgdXBk
YXRlUGxheVN0YXRlKCk7CisgICAgdXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CiB9CiAKICNpZiBF
TkFCTEUoTUVESUFfU09VUkNFKQpAQCAtMTUxNiw2ICsxNTIzLDEwIEBAIGZsb2F0IEhUTUxNZWRp
YUVsZW1lbnQ6OmN1cnJlbnRUaW1lKCkgY29uc3QKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
ZXRDdXJyZW50VGltZShmbG9hdCB0aW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBpZiAo
bV9tZWRpYUNvbnRyb2xsZXIpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KICAgICBzZWVrKHRpbWUsIGVjKTsKIH0KIApAQCAtMTU2Niw4
ICsxNTc3LDE2IEBAIGZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXliYWNrUmF0ZSgpIGNvbnN0
CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlKGZsb2F0IHJhdGUpCiB7
Ci0gICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlKCVmKSIs
IHJhdGUpOworICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgc2V0UGxheWJhY2tSYXRlSW50ZXJuYWwocmF0ZSk7Cit9CiAKK3ZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c2V0UGxheWJhY2tSYXRlSW50ZXJuYWwoZmxvYXQgcmF0ZSkKK3sKKyAgICBMT0coTWVk
aWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5YmFja1JhdGVJbnRlcm5hbCglZikiLCByYXRl
KTsKKyAgICAKICAgICBpZiAobV9wbGF5YmFja1JhdGUgIT0gcmF0ZSkgewogICAgICAgICBtX3Bs
YXliYWNrUmF0ZSA9IHJhdGU7CiAgICAgICAgIGludmFsaWRhdGVDYWNoZWRUaW1lKCk7CkBAIC0x
NjgzLDYgKzE3MDIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXlJbnRlcm5hbCgpCiAg
ICAgbV9hdXRvcGxheWluZyA9IGZhbHNlOwogCiAgICAgdXBkYXRlUGxheVN0YXRlKCk7CisgICAg
dXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGF1
c2UoKQpAQCAtMTg3NCw3ICsxODk0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0b2dnbGVQ
bGF5U3RhdGUoKQogICAgIC8vIFdlIGNhbiBzYWZlbHkgY2FsbCB0aGUgaW50ZXJuYWwgcGxheS9w
YXVzZSBtZXRob2RzLCB3aGljaCBkb24ndCBjaGVjayByZXN0cmljdGlvbnMsIGJlY2F1c2UKICAg
ICAvLyB0aGlzIG1ldGhvZCBpcyBvbmx5IGNhbGxlZCBmcm9tIHRoZSBidWlsdC1pbiBtZWRpYSBj
b250cm9sbGVyCiAgICAgaWYgKGNhblBsYXkoKSkgewotICAgICAgICBzZXRQbGF5YmFja1JhdGUo
ZGVmYXVsdFBsYXliYWNrUmF0ZSgpKTsKKyAgICAgICAgc2V0UGxheWJhY2tSYXRlKG1fbWVkaWFD
b250cm9sbGVyID8gbV9tZWRpYUNvbnRyb2xsZXItPmRlZmF1bHRQbGF5YmFja1JhdGUoKSA6IGRl
ZmF1bHRQbGF5YmFja1JhdGUoKSk7CiAgICAgICAgIHBsYXlJbnRlcm5hbCgpOwogICAgIH0gZWxz
ZSAKICAgICAgICAgcGF1c2VJbnRlcm5hbCgpOwpAQCAtMjE4OSw3ICsyMjA5LDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVDaGFuZ2VkKE1lZGlhUGxheWVyKikKICAg
ICBmbG9hdCBub3cgPSBjdXJyZW50VGltZSgpOwogICAgIGZsb2F0IGR1ciA9IGR1cmF0aW9uKCk7
CiAgICAgaWYgKCFpc25hbihkdXIpICYmIGR1ciAmJiBub3cgPj0gZHVyKSB7Ci0gICAgICAgIGlm
IChsb29wKCkpIHsKKyAgICAgICAgaWYgKGxvb3AoKSAmJiAhbV9tZWRpYUNvbnRyb2xsZXIpIHsK
ICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZEV4Y2VwdGlvbjsKICAgICAgICAgICAg
IG1fc2VudEVuZEV2ZW50ID0gZmFsc2U7CiAgICAgICAgICAgICBzZWVrKDAsIGlnbm9yZWRFeGNl
cHRpb24pOwpAQCAtMjIwMSw2ICsyMjIxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllclRpbWVDaGFuZ2VkKE1lZGlhUGxheWVyKikKICAgICAgICAgICAgIGlmICghbV9zZW50
RW5kRXZlbnQpIHsKICAgICAgICAgICAgICAgICBtX3NlbnRFbmRFdmVudCA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkuZW5kZWRFdmVudCk7CisgICAg
ICAgICAgICAgICAgdXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICB9CkBAIC0yMzg2LDEwICsyNDA3LDcgQEAgUGFzc1JlZlB0cjxUaW1lUmFuZ2Vz
PiBIVE1MTWVkaWFFbGVtZW50OjpwbGF5ZWQoKQogCiBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IEhU
TUxNZWRpYUVsZW1lbnQ6OnNlZWthYmxlKCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRSByZWFsIHJh
bmdlcyBzdXBwb3J0Ci0gICAgaWYgKCFtYXhUaW1lU2Vla2FibGUoKSkKLSAgICAgICAgcmV0dXJu
IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOwotICAgIHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUobWlu
VGltZVNlZWthYmxlKCksIG1heFRpbWVTZWVrYWJsZSgpKTsKKyAgICByZXR1cm4gbV9wbGF5ZXIg
PyBtX3BsYXllci0+c2Vla2FibGUoKSA6IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOwogfQogCiBib29s
IEhUTUxNZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxheWluZygpIGNvbnN0CkBAIC0yMzk4LDcg
KzI0MTYsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxheWluZygpIGNv
bnN0CiAgICAgLy8gd2hlbiBpdCByYW4gb3V0IG9mIGJ1ZmZlcmVkIGRhdGEuIEEgbW92aWUgaXMg
dGhpcyBzdGF0ZSBpcyAicG90ZW50aWFsbHkgcGxheWluZyIsIG1vZHVsbyB0aGUKICAgICAvLyBj
aGVja3MgaW4gY291bGRQbGF5SWZFbm91Z2hEYXRhKCkuCiAgICAgYm9vbCBwYXVzZWRUb0J1ZmZl
ciA9IG1fcmVhZHlTdGF0ZU1heGltdW0gPj0gSEFWRV9GVVRVUkVfREFUQSAmJiBtX3JlYWR5U3Rh
dGUgPCBIQVZFX0ZVVFVSRV9EQVRBOwotICAgIHJldHVybiAocGF1c2VkVG9CdWZmZXIgfHwgbV9y
ZWFkeVN0YXRlID49IEhBVkVfRlVUVVJFX0RBVEEpICYmIGNvdWxkUGxheUlmRW5vdWdoRGF0YSgp
OworICAgIHJldHVybiAocGF1c2VkVG9CdWZmZXIgfHwgbV9yZWFkeVN0YXRlID49IEhBVkVfRlVU
VVJFX0RBVEEpICYmIGNvdWxkUGxheUlmRW5vdWdoRGF0YSgpICYmICFpc0Jsb2NrZWRPbk1lZGlh
Q29udHJvbGxlcigpOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNvdWxkUGxheUlmRW5v
dWdoRGF0YSgpIGNvbnN0CkBAIC0yNDIzLDcgKzI0NDEsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1l
bnQ6OmVuZGVkUGxheWJhY2soKSBjb25zdAogICAgIC8vIG9mIHBsYXliYWNrIGlzIGZvcndhcmRz
IGFuZCB0aGUgbWVkaWEgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgbG9vcCBhdHRyaWJ1dGUgc3Bl
Y2lmaWVkLAogICAgIGZsb2F0IG5vdyA9IGN1cnJlbnRUaW1lKCk7CiAgICAgaWYgKG1fcGxheWJh
Y2tSYXRlID4gMCkKLSAgICAgICAgcmV0dXJuIGR1ciA+IDAgJiYgbm93ID49IGR1ciAmJiAhbG9v
cCgpOworICAgICAgICByZXR1cm4gZHVyID4gMCAmJiBub3cgPj0gZHVyICYmICghbG9vcCgpIHx8
IG1fbWVkaWFDb250cm9sbGVyKTsKIAogICAgIC8vIG9yIHRoZSBjdXJyZW50IHBsYXliYWNrIHBv
c2l0aW9uIGlzIHRoZSBlYXJsaWVzdCBwb3NzaWJsZSBwb3NpdGlvbiBhbmQgdGhlIGRpcmVjdGlv
biAKICAgICAvLyBvZiBwbGF5YmFjayBpcyBiYWNrd2FyZHMKQEAgLTI0NjksOCArMjQ4NywxNCBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVZvbHVtZSgpCiAgICAgaWYgKCFwcm9jZXNz
aW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpKSB7CiAgICAgICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVu
dCgpLT5wYWdlKCk7CiAgICAgICAgIGZsb2F0IHZvbHVtZU11bHRpcGxpZXIgPSBwYWdlID8gcGFn
ZS0+bWVkaWFWb2x1bWUoKSA6IDE7Ci0gICAgCi0gICAgICAgIG1fcGxheWVyLT5zZXRNdXRlZCht
X211dGVkKTsKKyAgICAgICAgYm9vbCBzaG91bGRNdXRlID0gbV9tdXRlZDsKKworICAgICAgICBp
ZiAobV9tZWRpYUNvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIHZvbHVtZU11bHRpcGxpZXIgKj0g
bV9tZWRpYUNvbnRyb2xsZXItPnZvbHVtZSgpOworICAgICAgICAgICAgc2hvdWxkTXV0ZSA9IG1f
bWVkaWFDb250cm9sbGVyLT5tdXRlZCgpOworICAgICAgICB9CisKKyAgICAgICAgbV9wbGF5ZXIt
PnNldE11dGVkKHNob3VsZE11dGUpOwogICAgICAgICBtX3BsYXllci0+c2V0Vm9sdW1lKG1fdm9s
dW1lICogdm9sdW1lTXVsdGlwbGllcik7CiAgICAgfQogCkBAIC0yNTM3LDExICsyNTYxLDEzIEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlUGxheVN0YXRlKCkKICAgICAgICAgaWYgKGhh
c01lZGlhQ29udHJvbHMoKSkKICAgICAgICAgICAgIG1lZGlhQ29udHJvbHMoKS0+cGxheWJhY2tT
dG9wcGVkKCk7CiAgICAgfQotICAgIAorCisgICAgdXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CisK
ICAgICBpZiAocmVuZGVyZXIoKSkKICAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlRnJvbUVsZW1l
bnQoKTsKIH0KLSAgICAKKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRQYXVzZWRJbnRlcm5h
bChib29sIGIpCiB7CiAgICAgbV9wYXVzZWRJbnRlcm5hbCA9IGI7CkBAIC0yNjAxLDYgKzI2Mjcs
NyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJDYW5jZWxsZWRMb2FkKCkKIAogICAgIC8v
IFJlc2V0IG1fcmVhZHlTdGF0ZSBzaW5jZSBtX3BsYXllciBpcyBnb25lLgogICAgIG1fcmVhZHlT
dGF0ZSA9IEhBVkVfTk9USElORzsKKyAgICB1cGRhdGVNZWRpYUNvbnRyb2xsZXIoKTsKIH0KIAog
Ym9vbCBIVE1MTWVkaWFFbGVtZW50OjpjYW5TdXNwZW5kKCkgY29uc3QKQEAgLTMwODAsNiArMzEw
Nyw1OCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldEl0ZW1WYWx1ZVRleHQoY29uc3QgU3Ry
aW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB9CiAjZW5kaWYKIAorY29uc3QgU3RyaW5n
JiBIVE1MTWVkaWFFbGVtZW50OjptZWRpYUdyb3VwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9t
ZWRpYUNvbnRyb2xsZXIgPyBtX21lZGlhQ29udHJvbGxlci0+bWVkaWFHcm91cCgpIDogZW1wdHlT
dHJpbmcoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUdyb3VwKGNvbnN0
IFN0cmluZyYgZ3JvdXApCit7CisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyICYmIG1fbWVkaWFD
b250cm9sbGVyLT5tZWRpYUdyb3VwKCkgPT0gZ3JvdXApCisgICAgICAgIHJldHVybjsKKworICAg
IHNldE1lZGlhQ29udHJvbGxlcihNZWRpYUNvbnRyb2xsZXI6Om1lZGlhQ29udHJvbGxlckZvck1l
ZGlhR3JvdXAoZ3JvdXApKTsKK30KKworTWVkaWFDb250cm9sbGVyKiBIVE1MTWVkaWFFbGVtZW50
OjptZWRpYUNvbnRyb2xsZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX21lZGlhQ29udHJvbGxl
ci5nZXQoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNvbnRyb2xsZXIo
UGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xsZXI+IGNvbnRyb2xsZXIpCit7CisgICAgaWYgKG1fbWVk
aWFDb250cm9sbGVyKQorICAgICAgICBtX21lZGlhQ29udHJvbGxlci0+cmVtb3ZlTWVkaWFFbGVt
ZW50KHRoaXMpOworCisgICAgbV9tZWRpYUNvbnRyb2xsZXIgPSBjb250cm9sbGVyOworCisgICAg
aWYgKG1fbWVkaWFDb250cm9sbGVyKQorICAgICAgICBtX21lZGlhQ29udHJvbGxlci0+YWRkTWVk
aWFFbGVtZW50KHRoaXMpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZU1lZGlh
Q29udHJvbGxlcigpCit7CisgICAgaWYgKCFtX21lZGlhQ29udHJvbGxlcikKKyAgICAgICAgcmV0
dXJuOworICAgIG1fbWVkaWFDb250cm9sbGVyLT51cGRhdGVSZWFkeVN0YXRlKCk7CisgICAgbV9t
ZWRpYUNvbnRyb2xsZXItPnVwZGF0ZVBsYXliYWNrU3RhdGUoKTsKK30KKworYm9vbCBIVE1MTWVk
aWFFbGVtZW50Ojppc0Jsb2NrZWRPbk1lZGlhQ29udHJvbGxlcigpIGNvbnN0Cit7CisgICAgaWYg
KCFtX21lZGlhQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1f
bWVkaWFDb250cm9sbGVyLT5pc0Jsb2NrZWQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICBmbG9hdCBjdXJyZW50VGltZSA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOwor
ICAgIGlmIChjdXJyZW50VGltZSA8IHN0YXJ0VGltZSgpIHx8IGN1cnJlbnRUaW1lID4gc3RhcnRU
aW1lKCkgKyBkdXJhdGlvbigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBm
YWxzZTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgKaW5kZXggZmNlMzJmYWY0N2RiOTJmMzQzZTdjNDFhZWM0N2Y5ZGE4NDI0Yzg4MC4uMmVmNjJh
YTcxYjUxODE1MmFiZDU3MTkyZGVlMjdhMjA1YTY0NDI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJIVE1MRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIk1lZGlhQ2FuU3Rh
cnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIk1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIgogI2lu
Y2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURF
TykKQEAgLTQ5LDYgKzUwLDcgQEAgY2xhc3MgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOwog
I2VuZGlmCiBjbGFzcyBFdmVudDsKIGNsYXNzIEhUTUxTb3VyY2VFbGVtZW50OworY2xhc3MgTWVk
aWFDb250cm9sbGVyOwogY2xhc3MgTWVkaWFDb250cm9sczsKIGNsYXNzIE1lZGlhRXJyb3I7CiBj
bGFzcyBLVVJMOwpAQCAtNjIsNyArNjQsNyBAQCBjbGFzcyBXaWRnZXQ7CiAvLyBCdXQgaXQgY2Fu
J3QgYmUgdW50aWwgdGhlIENocm9taXVtIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbCBjbGFzcyBp
cyBmaXhlZCBzbyBpdAogLy8gbm8gbG9uZ2VyIGRlcGVuZHMgb24gdHlwZWNhc3RpbmcgYSBNZWRp
YVBsYXllckNsaWVudCB0byBhbiBIVE1MTWVkaWFFbGVtZW50LgogCi1jbGFzcyBIVE1MTWVkaWFF
bGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgTWVkaWFQbGF5ZXJDbGllbnQsIHBy
aXZhdGUgTWVkaWFDYW5TdGFydExpc3RlbmVyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0CitjbGFz
cyBIVE1MTWVkaWFFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgTWVkaWFQbGF5
ZXJDbGllbnQsIHByaXZhdGUgTWVkaWFDYW5TdGFydExpc3RlbmVyLCBwdWJsaWMgQWN0aXZlRE9N
T2JqZWN0LCBwdWJsaWMgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlCiAjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQogICAgICwgcHJpdmF0ZSBUZXh0VHJhY2tDbGllbnQKICNlbmRpZgpAQCAtMTEzLDcg
KzExNSw2IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgY2FuUGxheVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkgY29uc3Q7CiAKIC8vIHJlYWR5IHN0YXRlCi0gICAgZW51bSBSZWFkeVN0YXRlIHsg
SEFWRV9OT1RISU5HLCBIQVZFX01FVEFEQVRBLCBIQVZFX0NVUlJFTlRfREFUQSwgSEFWRV9GVVRV
UkVfREFUQSwgSEFWRV9FTk9VR0hfREFUQSB9OwogICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgp
IGNvbnN0OwogICAgIGJvb2wgc2Vla2luZygpIGNvbnN0OwogCkBAIC0yMjYsNiArMjI3LDEyIEBA
IHB1YmxpYzoKICAgICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCk7
CiAjZW5kaWYKIAorICAgIGNvbnN0IFN0cmluZyYgbWVkaWFHcm91cCgpIGNvbnN0OworICAgIHZv
aWQgc2V0TWVkaWFHcm91cChjb25zdCBTdHJpbmcmKTsKKworICAgIE1lZGlhQ29udHJvbGxlciog
bWVkaWFDb250cm9sbGVyKCkgY29uc3Q7CisgICAgdm9pZCBzZXRNZWRpYUNvbnRyb2xsZXIoUGFz
c1JlZlB0cjxNZWRpYUNvbnRyb2xsZXI+KTsKKwogcHJvdGVjdGVkOgogICAgIEhUTUxNZWRpYUVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgdmlydHVhbCB+SFRN
TE1lZGlhRWxlbWVudCgpOwpAQCAtMzg5LDYgKzM5Niw4IEBAIHByaXZhdGU6CiAgICAgLy8gUGF1
c2VzIHBsYXliYWNrIHdpdGhvdXQgY2hhbmdpbmcgYW55IHN0YXRlcyBvciBnZW5lcmF0aW5nIGV2
ZW50cwogICAgIHZvaWQgc2V0UGF1c2VkSW50ZXJuYWwoYm9vbCk7CiAKKyAgICB2b2lkIHNldFBs
YXliYWNrUmF0ZUludGVybmFsKGZsb2F0KTsKKwogICAgIHZpcnR1YWwgdm9pZCBtZWRpYUNhblN0
YXJ0KCk7CiAKICAgICB2b2lkIHNldFNob3VsZERlbGF5TG9hZEV2ZW50KGJvb2wpOwpAQCAtNDA3
LDYgKzQxNiwxMSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRJdGVtVmFsdWVUZXh0
KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKICNlbmRpZgogCisgICAgdm9pZCB1cGRh
dGVNZWRpYUNvbnRyb2xsZXIoKTsKKyAgICBib29sIGlzQmxvY2tlZE9uTWVkaWFDb250cm9sbGVy
KCkgY29uc3Q7CisgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCB7IHJldHVybiAhbV9jdXJyZW50
U3JjLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgaXNMaXZlU3RyZWFtKCkgY29uc3QgeyByZXR1cm4g
bW92aWVMb2FkVHlwZSgpID09IE1lZGlhUGxheWVyOjpMaXZlU3RyZWFtOyB9CisKICAgICBUaW1l
cjxIVE1MTWVkaWFFbGVtZW50PiBtX2xvYWRUaW1lcjsKICAgICBUaW1lcjxIVE1MTWVkaWFFbGVt
ZW50PiBtX2FzeW5jRXZlbnRUaW1lcjsKICAgICBUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiBtX3By
b2dyZXNzRXZlbnRUaW1lcjsKQEAgLTUwNyw2ICs1MjEsOSBAQCBwcml2YXRlOgogICAgIC8vIFRo
ZSB2YWx1ZSBpcyBjbGVhcmVkIGluIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6fk1lZGlh
RWxlbWVudEF1ZGlvU291cmNlTm9kZSgpLgogICAgIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9k
ZSogbV9hdWRpb1NvdXJjZU5vZGU7CiAjZW5kaWYKKworICAgIGZyaWVuZCBjbGFzcyBNZWRpYUNv
bnRyb2xsZXI7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbGxlcj4gbV9tZWRpYUNvbnRyb2xsZXI7
CiB9OwogCiB9IC8vbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmlkbAppbmRleCAzMzBhZGJhYWRlNzEwMjY5YzJmMmRlNWVlYzVjYzFlMTYyYjBjOWI1Li40OTIx
MGI2MjAyNzIzNzFlNDVhYWI5ZmFiMTkxYmY2MTAwNDNjZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKQEAgLTExNCw1ICsxMTQsOCBAQCBtb2R1bGUgaHRtbCB7
CiAjaWYgZGVmaW5lZChFTkFCTEVfVklERU9fVFJBQ0spICYmIEVOQUJMRV9WSURFT19UUkFDSwog
ICAgIFtFbmFibGVkQXRSdW50aW1lPXdlYmtpdFZpZGVvVHJhY2tdIFRleHRUcmFjayBhZGRUcmFj
ayhpbiBET01TdHJpbmcga2luZCwgaW4gW09wdGlvbmFsXSBET01TdHJpbmcgbGFiZWwsIGluIFtP
cHRpb25hbF0gRE9NU3RyaW5nIGxhbmd1YWdlKTsKICNlbmRpZgorCisgICAgYXR0cmlidXRlIFtS
ZWZsZWN0LCBDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywgQ29udmVydE51bGxTdHJpbmdUb051bGxd
IERPTVN0cmluZyBtZWRpYUdyb3VwOworICAgIGF0dHJpYnV0ZSBbQ3VzdG9tU2V0dGVyXSBNZWRp
YUNvbnRyb2xsZXIgbWVkaWFDb250cm9sbGVyOwogfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFDb250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGI3ZDc3MGEwYTg3YmVhNDNiMzJmYmQwNmQ0
Y2E1ZGU4ZDdlYTg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YUNvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsNDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPKQorI2luY2x1ZGUgIk1lZGlhQ29udHJvbGxlci5o
IgorCisjaW5jbHVkZSAiQ2xvY2suaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisj
aW5jbHVkZSAiVGltZVJhbmdlcy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5o
PgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK3N0
YXRpYyBIYXNoTWFwPFN0cmluZywgTWVkaWFDb250cm9sbGVyKj4mIG1lZGlhR3JvdXBUb01lZGlh
Q29udHJvbGxlck1hcCgpCit7CisgICAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBNZWRpYUNvbnRy
b2xsZXIqPiogbWFwID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBNZWRpYUNvbnRyb2xsZXIqPigpOwor
ICAgIHJldHVybiAqbWFwOworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbGxlcj4gTWVkaWFD
b250cm9sbGVyOjptZWRpYUNvbnRyb2xsZXJGb3JNZWRpYUdyb3VwKGNvbnN0IFN0cmluZyYgZ3Jv
dXApCit7CisgICAgaWYgKGdyb3VwLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IGlmIChncm91cC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKE1lZGlh
Q29udHJvbGxlciogY29udHJvbGxlciA9IG1lZGlhR3JvdXBUb01lZGlhQ29udHJvbGxlck1hcCgp
LmdldChncm91cCkpCisgICAgICAgIHJldHVybiBjb250cm9sbGVyOworCisgICAgUmVmUHRyPE1l
ZGlhQ29udHJvbGxlcj4gY29udHJvbGxlciA9IGNyZWF0ZSgpOworICAgIGNvbnRyb2xsZXItPm1f
bWVkaWFHcm91cCA9IGdyb3VwOworICAgIG1lZGlhR3JvdXBUb01lZGlhQ29udHJvbGxlck1hcCgp
LnNldChncm91cCwgY29udHJvbGxlci5nZXQoKSk7CisgICAgcmV0dXJuIGNvbnRyb2xsZXIucmVs
ZWFzZSgpOworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbGxlcj4gTWVkaWFDb250cm9sbGVy
OjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sbGVyKCkp
OworfQorCitNZWRpYUNvbnRyb2xsZXI6Ok1lZGlhQ29udHJvbGxlcigpCisgICAgOiBtX3BhdXNl
ZChmYWxzZSkKKyAgICAsIG1fZGVmYXVsdFBsYXliYWNrUmF0ZSgxKQorICAgICwgbV9wbGF5YmFj
a1JhdGUoMSkKKyAgICAsIG1fdm9sdW1lKDEpCisgICAgLCBtX211dGVkKGZhbHNlKQorICAgICwg
bV9yZWFkeVN0YXRlKEhBVkVfTk9USElORykKKyAgICAsIG1fcGxheWJhY2tTdGF0ZShXQUlUSU5H
KQorICAgICwgbV9hc3luY0V2ZW50VGltZXIodGhpcywgJk1lZGlhQ29udHJvbGxlcjo6YXN5bmNF
dmVudFRpbWVyRmlyZWQpCisgICAgLCBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZShmYWxzZSkKKyAg
ICAsIG1fY2xvY2soQ2xvY2s6OmNyZWF0ZSgpKQoreworfQorCitNZWRpYUNvbnRyb2xsZXI6On5N
ZWRpYUNvbnRyb2xsZXIoKQoreworICAgIGlmICghbV9tZWRpYUdyb3VwLmlzRW1wdHkoKSkKKyAg
ICAgICAgbWVkaWFHcm91cFRvTWVkaWFDb250cm9sbGVyTWFwKCkucmVtb3ZlKG1fbWVkaWFHcm91
cCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjphZGRNZWRpYUVsZW1lbnQoSFRNTE1lZGlh
RWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBBU1NFUlQoZWxlbWVudCk7CisgICAgQVNTRVJUKCFt
X21lZGlhRWxlbWVudHMuY29udGFpbnMoZWxlbWVudCkpOworICAgIG1fbWVkaWFFbGVtZW50cy5h
cHBlbmQoZWxlbWVudCk7CisgICAgdXBkYXRlUmVhZHlTdGF0ZSgpOworICAgIHVwZGF0ZVBsYXli
YWNrU3RhdGUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnJlbW92ZU1lZGlhRWxlbWVu
dChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KQoreworICAgIEFTU0VSVChlbGVtZW50KTsKKyAg
ICBBU1NFUlQobV9tZWRpYUVsZW1lbnRzLmNvbnRhaW5zKGVsZW1lbnQpKTsKKyAgICBtX21lZGlh
RWxlbWVudHMucmVtb3ZlKG1fbWVkaWFFbGVtZW50cy5maW5kKGVsZW1lbnQpKTsKK30KKworYm9v
bCBNZWRpYUNvbnRyb2xsZXI6OmNvbnRhaW5zTWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQq
IGVsZW1lbnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50cy5jb250YWlucyhl
bGVtZW50KTsKK30KKworUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYUNvbnRyb2xsZXI6OmJ1
ZmZlcmVkKCkgY29uc3QKK3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIFRpbWVSYW5nZXM6OmNyZWF0ZSgpOworCisgICAgUmVmUHRyPFRpbWVSYW5n
ZXM+IGJ1ZmZlcmVkUmFuZ2VzID0gbV9tZWRpYUVsZW1lbnRzLmZpcnN0KCktPmJ1ZmZlcmVkKCk7
CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAxOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXpl
KCk7ICsraW5kZXgpCisgICAgICAgIGJ1ZmZlcmVkUmFuZ2VzLT5pbnRlcnNlY3RXaXRoKG1fbWVk
aWFFbGVtZW50c1tpbmRleF0tPmJ1ZmZlcmVkKCkuZ2V0KCkpOworICAgIHJldHVybiBidWZmZXJl
ZFJhbmdlczsKK30KKworUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYUNvbnRyb2xsZXI6OnNl
ZWthYmxlKCkgY29uc3QKK3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIFRpbWVSYW5nZXM6OmNyZWF0ZSgpOworICAgIAorICAgIFJlZlB0cjxUaW1l
UmFuZ2VzPiBzZWVrYWJsZVJhbmdlcyA9IG1fbWVkaWFFbGVtZW50cy5maXJzdCgpLT5zZWVrYWJs
ZSgpOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMTsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMu
c2l6ZSgpOyArK2luZGV4KQorICAgICAgICBzZWVrYWJsZVJhbmdlcy0+aW50ZXJzZWN0V2l0aCht
X21lZGlhRWxlbWVudHNbaW5kZXhdLT5zZWVrYWJsZSgpLmdldCgpKTsKKyAgICByZXR1cm4gc2Vl
a2FibGVSYW5nZXM7Cit9CisKK1Bhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFDb250cm9sbGVy
OjpwbGF5ZWQoKQoreworICAgIGlmIChtX21lZGlhRWxlbWVudHMuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gVGltZVJhbmdlczo6Y3JlYXRlKCk7CisgICAgCisgICAgUmVmUHRyPFRpbWVSYW5n
ZXM+IHBsYXllZFJhbmdlcyA9IG1fbWVkaWFFbGVtZW50cy5maXJzdCgpLT5wbGF5ZWQoKTsKKyAg
ICBmb3IgKHNpemVfdCBpbmRleCA9IDE7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsg
KytpbmRleCkKKyAgICAgICAgcGxheWVkUmFuZ2VzLT51bmlvbldpdGgobV9tZWRpYUVsZW1lbnRz
W2luZGV4XS0+cGxheWVkKCkuZ2V0KCkpOworICAgIHJldHVybiBwbGF5ZWRSYW5nZXM7Cit9CisK
K2Zsb2F0IE1lZGlhQ29udHJvbGxlcjo6ZHVyYXRpb24oKSBjb25zdAoreworICAgIGZsb2F0IG1h
eER1cmF0aW9uID0gMDsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRp
YUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgbWF4RHVyYXRpb24gPSBtYXgobWF4
RHVyYXRpb24sIG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmR1cmF0aW9uKCkpOworICAgIHJldHVy
biBtYXhEdXJhdGlvbjsKK30KKworZmxvYXQgTWVkaWFDb250cm9sbGVyOjpjdXJyZW50VGltZSgp
IGNvbnN0Cit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiAwOworICAgIAorICAgIHJldHVybiBtX2Nsb2NrLT5jdXJyZW50VGltZSgpOworICAgIAor
fQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6c2V0Q3VycmVudFRpbWUoZmxvYXQgdGltZSwgRXhj
ZXB0aW9uQ29kZSYgY29kZSkKK3sKKyAgICBtX2Nsb2NrLT5zZXRDdXJyZW50VGltZSh0aW1lKTsK
KyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUo
KTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+c2Vlayh0aW1lLCBj
b2RlKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnBsYXkoKQoreworICAgIGlmIChtX3Bs
YXliYWNrU3RhdGUgPT0gRU5ERUQpIHsKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBjb2RlID0gMDsK
KyAgICAgICAgc2V0Q3VycmVudFRpbWUoMCwgY29kZSk7CisgICAgfQorCisgICAgbV9wYXVzZWQg
PSBmYWxzZTsKKyAgICB1cGRhdGVNZWRpYUVsZW1lbnRzKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250
cm9sbGVyOjpwYXVzZSgpCit7CisgICAgbV9wYXVzZWQgPSB0cnVlOworICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAg
ICAgICBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5wYXVzZSgpOworfQorCit2b2lkIE1lZGlhQ29u
dHJvbGxlcjo6c2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCByYXRlKQoreworICAgIG1fZGVm
YXVsdFBsYXliYWNrUmF0ZSA9IHJhdGU7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXRQ
bGF5YmFja1JhdGUoZmxvYXQgcmF0ZSkKK3sKKyAgICBtX3BsYXliYWNrUmF0ZSA9IHJhdGU7Cisg
ICAgbV9jbG9jay0+c2V0UGxheVJhdGUocmF0ZSk7CisKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9
IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgbV9t
ZWRpYUVsZW1lbnRzW2luZGV4XS0+c2V0UGxheWJhY2tSYXRlKHJhdGUpOworfQorCit2b2lkIE1l
ZGlhQ29udHJvbGxlcjo6c2V0Vm9sdW1lKGZsb2F0IGxldmVsLCBFeGNlcHRpb25Db2RlJikKK3sK
KyAgICBtX3ZvbHVtZSA9IGxldmVsOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXgg
PCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBtX21lZGlhRWxlbWVu
dHNbaW5kZXhdLT51cGRhdGVWb2x1bWUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNl
dE11dGVkKGJvb2wgZmxhZykKK3sKKyAgICBtX211dGVkID0gZmxhZzsKKyAgICBmb3IgKHNpemVf
dCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAg
ICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+dXBkYXRlVm9sdW1lKCk7Cit9CisKK3ZvaWQg
TWVkaWFDb250cm9sbGVyOjp1cGRhdGVSZWFkeVN0YXRlKCkKK3sKKyAgICBSZWFkeVN0YXRlIG9s
ZFJlYWR5U3RhdGUgPSBtX3JlYWR5U3RhdGU7CisgICAgUmVhZHlTdGF0ZSBuZXdSZWFkeVN0YXRl
OworCisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIG5ld1JlYWR5
U3RhdGUgPSBIQVZFX05PVEhJTkc7CisgICAgZWxzZSB7CisgICAgICAgIG5ld1JlYWR5U3RhdGUg
PSBtX21lZGlhRWxlbWVudHMuZmlyc3QoKS0+cmVhZHlTdGF0ZSgpOworICAgICAgICBmb3IgKHNp
emVfdCBpbmRleCA9IDE7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkK
KyAgICAgICAgICAgIG5ld1JlYWR5U3RhdGUgPSBtaW4obmV3UmVhZHlTdGF0ZSwgbV9tZWRpYUVs
ZW1lbnRzW2luZGV4XS0+cmVhZHlTdGF0ZSgpKTsKKyAgICB9CisKKyAgICBpZiAobmV3UmVhZHlT
dGF0ZSA9PSBvbGRSZWFkeVN0YXRlKSAKKyAgICAgICAgcmV0dXJuOworCisgICAgQXRvbWljU3Ry
aW5nIGV2ZW50TmFtZTsKKyAgICBzd2l0Y2ggKG5ld1JlYWR5U3RhdGUpIHsKKyAgICBjYXNlIEhB
VkVfTk9USElORzoKKyAgICAgICAgZXZlbnROYW1lID0gZXZlbnROYW1lcygpLmVtcHRpZWRFdmVu
dDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBIQVZFX01FVEFEQVRBOgorICAgICAgICBldmVu
dE5hbWUgPSBldmVudE5hbWVzKCkubG9hZGVkbWV0YWRhdGFFdmVudDsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBIQVZFX0NVUlJFTlRfREFUQToKKyAgICAgICAgZXZlbnROYW1lID0gZXZlbnRO
YW1lcygpLmxvYWRlZGRhdGFFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBIQVZFX0ZV
VFVSRV9EQVRBOgorICAgICAgICBldmVudE5hbWUgPSBldmVudE5hbWVzKCkuY2FucGxheUV2ZW50
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEhBVkVfRU5PVUdIX0RBVEE6CisgICAgICAgIGV2
ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS5jYW5wbGF5dGhyb3VnaEV2ZW50OworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cisg
ICAgc2NoZWR1bGVFdmVudChldmVudE5hbWUpOworICAgIG1fcmVhZHlTdGF0ZSA9IG5ld1JlYWR5
U3RhdGU7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjp1cGRhdGVQbGF5YmFja1N0YXRlKCkK
K3sKKyAgICBQbGF5YmFja1N0YXRlIG9sZFBsYXliYWNrU3RhdGUgPSBtX3BsYXliYWNrU3RhdGU7
CisgICAgUGxheWJhY2tTdGF0ZSBuZXdQbGF5YmFja1N0YXRlOworCisgICAgaWYgKG1fbWVkaWFF
bGVtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIG5ld1BsYXliYWNrU3RhdGUgPSBXQUlUSU5HOwor
ICAgIGVsc2UgaWYgKGhhc0VuZGVkKCkpCisgICAgICAgIG5ld1BsYXliYWNrU3RhdGUgPSBFTkRF
RDsKKyAgICBlbHNlIGlmIChpc0Jsb2NrZWQoKSkgCisgICAgICAgIG5ld1BsYXliYWNrU3RhdGUg
PSBXQUlUSU5HOworICAgIGVsc2UKKyAgICAgICAgbmV3UGxheWJhY2tTdGF0ZSA9IFBMQVlJTkc7
CisKKyAgICBpZiAobmV3UGxheWJhY2tTdGF0ZSA9PSBvbGRQbGF5YmFja1N0YXRlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBBdG9taWNTdHJpbmcgZXZlbnROYW1lOworICAgIHN3aXRjaCAobmV3
UGxheWJhY2tTdGF0ZSkgeworICAgIGNhc2UgV0FJVElORzoKKyAgICAgICAgZXZlbnROYW1lID0g
ZXZlbnROYW1lcygpLndhaXRpbmdFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFTkRF
RDoKKyAgICAgICAgZXZlbnROYW1lID0gZXZlbnROYW1lcygpLmVuZGVkRXZlbnQ7CisgICAgICAg
IG1fcGF1c2VkID0gdHJ1ZTsKKyAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucGF1
c2VFdmVudCk7CisgICAgICAgIG1fY2xvY2stPnN0b3AoKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBQTEFZSU5HOgorICAgICAgICBldmVudE5hbWUgPSBldmVudE5hbWVzKCkucGxheWluZ0V2
ZW50OworICAgICAgICBtX2Nsb2NrLT5zdGFydCgpOworICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgc2NoZWR1bGVF
dmVudChldmVudE5hbWUpOworICAgIG1fcGxheWJhY2tTdGF0ZSA9IG5ld1BsYXliYWNrU3RhdGU7
CisgICAgdXBkYXRlTWVkaWFFbGVtZW50cygpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6
dXBkYXRlTWVkaWFFbGVtZW50cygpCit7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRl
eCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIG1fbWVkaWFFbGVt
ZW50c1tpbmRleF0tPnVwZGF0ZVBsYXlTdGF0ZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxl
cjo6c2NoZWR1bGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKK3sKKyAgICBt
X3BlbmRpbmdFdmVudHMuYXBwZW5kKEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBmYWxzZSwgdHJ1
ZSkpOworICAgIGlmICghbV9hc3luY0V2ZW50VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9h
c3luY0V2ZW50VGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxl
cjo6YXN5bmNFdmVudFRpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9sbGVyPiopCit7CisgICAg
VmVjdG9yPFJlZlB0cjxFdmVudD4gPiBwZW5kaW5nRXZlbnRzOworICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOworICAgIAorICAgIG1fcGVuZGluZ0V2ZW50cy5zd2FwKHBlbmRpbmdFdmVudHMpOwor
ICAgIHNpemVfdCBjb3VudCA9IHBlbmRpbmdFdmVudHMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkKKyAgICAgICAgZGlzcGF0Y2hFdmVu
dChwZW5kaW5nRXZlbnRzW2luZGV4XS5yZWxlYXNlKCksIGVjKTsKK30KKworU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogTWVkaWFDb250cm9sbGVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29u
c3QKK3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50cy5maXJzdCgpLT5kb2N1bWVudCgpOworfQor
Citib29sIE1lZGlhQ29udHJvbGxlcjo6aGFzQXVkaW8oKSBjb25zdAoreworICAgIGZvciAoc2l6
ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KSB7
CisgICAgICAgIGlmIChtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5oYXNBdWRpbygpKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBN
ZWRpYUNvbnRyb2xsZXI6Omhhc1ZpZGVvKCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRl
eCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkgeworICAgICAg
ICBpZiAobV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+aGFzVmlkZW8oKSkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFDb250
cm9sbGVyOjpoYXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaW5k
ZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAg
ICAgaWYgKG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmhhc0Nsb3NlZENhcHRpb25zKCkpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lk
IE1lZGlhQ29udHJvbGxlcjo6c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGJvb2wgdmlzaWJsZSkK
K3sKKyAgICBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZSA9IHZpc2libGU7CisgICAgZm9yIChzaXpl
X3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisg
ICAgICAgIG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPnNldENsb3NlZENhcHRpb25zVmlzaWJsZSh2
aXNpYmxlKTsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xsZXI6OnN1cHBvcnRzU2Nhbm5pbmcoKSBj
b25zdAoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVu
dHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmICghbV9tZWRpYUVsZW1lbnRzW2luZGV4
XS0+c3VwcG9ydHNTY2FubmluZygpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OmJlZ2luU2NydWJi
aW5nKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1l
bnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+YmVn
aW5TY3J1YmJpbmcoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OmVuZFNjcnViYmluZygp
Cit7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5z
aXplKCk7ICsraW5kZXgpCisgICAgICAgIG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmVuZFNjcnVi
YmluZygpOworfQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6Y2FuUGxheSgpIGNvbnN0Cit7Cisg
ICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7
ICsraW5kZXgpIHsKKyAgICAgICAgaWYgKCFtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5jYW5QbGF5
KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOwor
fQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6aXNMaXZlU3RyZWFtKCkgY29uc3QKK3sKKyAgICBm
b3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytp
bmRleCkgeworICAgICAgICBpZiAoIW1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmlzTGl2ZVN0cmVh
bSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBNZWRpYUNvbnRyb2xsZXI6OmlzTG9hZGluZygpIGNvbnN0Cit7CisgICAgZm9y
IChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5k
ZXgpIHsKKyAgICAgICAgaWYgKCFtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5pc0xvYWRpbmcoKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K3ZvaWQgTWVkaWFDb250cm9sbGVyOjpyZXR1cm5Ub1JlYWx0aW1lKCkKK3sKKyAgICBmb3IgKHNp
emVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkK
KyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+cmV0dXJuVG9SZWFsdGltZSgpOworfQor
Citib29sIE1lZGlhQ29udHJvbGxlcjo6aXNCbG9ja2VkKCkgY29uc3QKK3sKKyAgICBpZiAobV9w
YXVzZWQpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgYWxsUGF1c2VkID0g
dHJ1ZTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRz
LnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50ID0g
bV9tZWRpYUVsZW1lbnRzW2luZGV4XTsKKyAgICAgICAgaWYgKGVsZW1lbnQtPnJlYWR5U3RhdGUo
KSA8PSBIQVZFX0NVUlJFTlRfREFUQSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAKKyAgICAgICAgaWYgKGVsZW1lbnQtPmF1dG9wbGF5KCkgJiYgZWxlbWVudC0+cGF1c2VkKCkp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBhbGxQYXVzZWQgJj0gZWxlbWVu
dC0+cGF1c2VkKCk7CisgICAgfQorICAgIAorICAgIHJldHVybiBhbGxQYXVzZWQ7Cit9CisKK2Jv
b2wgTWVkaWFDb250cm9sbGVyOjpoYXNFbmRlZCgpIGNvbnN0Cit7CisgICAgaWYgKG1fcGxheWJh
Y2tSYXRlIDw9IDApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX21lZGlhRWxl
bWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIGFsbEhh
dmVFbmRlZCA9IHRydWU7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVk
aWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIGFsbEhhdmVFbmRlZCAmPSBtX21l
ZGlhRWxlbWVudHNbaW5kZXhdLT5lbmRlZCgpOworICAgIHJldHVybiBhbGxIYXZlRW5kZWQ7Cit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTNmZTczY2ExNTEzNmUzMmExMWM1MjljNTlkMzdkMDk5MzhmMzlhYgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmgKQEAgLTAsMCArMSwxNTUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBNZWRpYUNvbnRyb2xsZXJfaAorI2RlZmluZSBNZWRpYUNv
bnRyb2xsZXJfaAorCisjaWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCisj
aW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xsZXJJbnRlcmZh
Y2UuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ2xvY2s7CitjbGFzcyBIVE1MTWVkaWFFbGVtZW50
OworY2xhc3MgRXZlbnQ7CisKK2NsYXNzIE1lZGlhQ29udHJvbGxlciA6IHB1YmxpYyBSZWZDb3Vu
dGVkPE1lZGlhQ29udHJvbGxlcj4sIHB1YmxpYyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UsIHB1
YmxpYyBFdmVudFRhcmdldCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFD
b250cm9sbGVyPiBtZWRpYUNvbnRyb2xsZXJGb3JNZWRpYUdyb3VwKGNvbnN0IFN0cmluZyYpOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbGxlcj4gY3JlYXRlKCk7CisgICAgdmly
dHVhbCB+TWVkaWFDb250cm9sbGVyKCk7CisKKyAgICB2b2lkIGFkZE1lZGlhRWxlbWVudChIVE1M
TWVkaWFFbGVtZW50Kik7CisgICAgdm9pZCByZW1vdmVNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxl
bWVudCopOworICAgIGJvb2wgY29udGFpbnNNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCop
IGNvbnN0OworCisgICAgY29uc3QgU3RyaW5nJiBtZWRpYUdyb3VwKCkgY29uc3QgeyByZXR1cm4g
bV9tZWRpYUdyb3VwOyB9CisgICAgCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+
IGJ1ZmZlcmVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHNl
ZWthYmxlKCkgY29uc3Q7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHBsYXll
ZCgpOworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgZHVyYXRpb24oKSBjb25zdDsKKyAgICB2aXJ0
dWFsIGZsb2F0IGN1cnJlbnRUaW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldEN1cnJl
bnRUaW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJik7CisgICAgCisgICAgdmlydHVhbCBib29sIHBh
dXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF1c2VkOyB9CisgICAgdmlydHVhbCB2b2lkIHBsYXko
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKTsKKyAgICAKKyAgICB2aXJ0dWFsIGZsb2F0IGRl
ZmF1bHRQbGF5YmFja1JhdGUoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1bHRQbGF5YmFja1JhdGU7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCk7CisgICAg
CisgICAgdmlydHVhbCBmbG9hdCBwbGF5YmFja1JhdGUoKSBjb25zdCB7IHJldHVybiBtX3BsYXli
YWNrUmF0ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5YmFja1JhdGUoZmxvYXQpOworICAg
IAorICAgIHZpcnR1YWwgZmxvYXQgdm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV92b2x1bWU7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJik7CisgICAg
CisgICAgdmlydHVhbCBib29sIG11dGVkKCkgY29uc3QgeyByZXR1cm4gbV9tdXRlZDsgfQorICAg
IHZpcnR1YWwgdm9pZCBzZXRNdXRlZChib29sKTsKKyAgICAKKyAgICB2aXJ0dWFsIFJlYWR5U3Rh
dGUgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZHlTdGF0ZTsgfQorCisgICAgZW51
bSBQbGF5YmFja1N0YXRlIHsgV0FJVElORywgUExBWUlORywgRU5ERUQgfTsKKyAgICB2aXJ0dWFs
IFBsYXliYWNrU3RhdGUgcGxheWJhY2tTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWJhY2tT
dGF0ZTsgfQorCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzRnVsbHNjcmVlbigpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbigpIHsgfQor
CisgICAgdmlydHVhbCBib29sIGhhc0F1ZGlvKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGhh
c1ZpZGVvKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGhhc0Nsb3NlZENhcHRpb25zKCkgY29u
c3Q7CisgICAgdmlydHVhbCB2b2lkIHNldENsb3NlZENhcHRpb25zVmlzaWJsZShib29sKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV9j
bG9zZWRDYXB0aW9uc1Zpc2libGU7IH0KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNT
Y2FubmluZygpIGNvbnN0OworICAgIAorICAgIHZpcnR1YWwgdm9pZCBiZWdpblNjcnViYmluZygp
OworICAgIHZpcnR1YWwgdm9pZCBlbmRTY3J1YmJpbmcoKTsKKyAgICAKKyAgICB2aXJ0dWFsIGJv
b2wgY2FuUGxheSgpIGNvbnN0OworICAgIAorICAgIHZpcnR1YWwgYm9vbCBpc0xpdmVTdHJlYW0o
KSBjb25zdDsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkaW5nKCkgY29uc3Q7CisgICAg
CisgICAgdmlydHVhbCB2b2lkIHJldHVyblRvUmVhbHRpbWUoKTsKKworICAgIGJvb2wgaXNCbG9j
a2VkKCkgY29uc3Q7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHVzaW5nIFJlZkNvdW50ZWQ8
TWVkaWFDb250cm9sbGVyPjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFDb250cm9s
bGVyPjo6ZGVyZWY7CisKK3ByaXZhdGU6CisgICAgTWVkaWFDb250cm9sbGVyKCk7CisgICAgdm9p
ZCB1cGRhdGVSZWFkeVN0YXRlKCk7CisgICAgdm9pZCB1cGRhdGVQbGF5YmFja1N0YXRlKCk7Cisg
ICAgdm9pZCB1cGRhdGVNZWRpYUVsZW1lbnRzKCk7CisgICAgdm9pZCBzY2hlZHVsZUV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKTsKKyAgICB2b2lkIGFzeW5jRXZlbnRUaW1lckZp
cmVkKFRpbWVyPE1lZGlhQ29udHJvbGxlcj4qKTsKKyAgICBib29sIGhhc0VuZGVkKCkgY29uc3Q7
CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgp
IHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYo
KTsgfQorICAgIHZpcnR1YWwgTWVkaWFDb250cm9sbGVyKiB0b01lZGlhQ29udHJvbGxlcigpIHsg
cmV0dXJuIHRoaXM7IH0KKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSog
ZXZlbnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9CisgICAgdmly
dHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpIHsgcmV0dXJuICZt
X2V2ZW50VGFyZ2V0RGF0YTsgfQorICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0
YTsKKworICAgIGZyaWVuZCBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OworICAgIGZyaWVuZCBjbGFz
cyBNZWRpYUNvbnRyb2xsZXJFdmVudExpc3RlbmVyOworICAgIFZlY3RvcjxIVE1MTWVkaWFFbGVt
ZW50Kj4gbV9tZWRpYUVsZW1lbnRzOworICAgIGJvb2wgbV9wYXVzZWQ7CisgICAgZmxvYXQgbV9k
ZWZhdWx0UGxheWJhY2tSYXRlOworICAgIGZsb2F0IG1fcGxheWJhY2tSYXRlOworICAgIGZsb2F0
IG1fdm9sdW1lOworICAgIGJvb2wgbV9tdXRlZDsKKyAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0
ZTsKKyAgICBQbGF5YmFja1N0YXRlIG1fcGxheWJhY2tTdGF0ZTsKKyAgICBWZWN0b3I8UmVmUHRy
PEV2ZW50PiA+IG1fcGVuZGluZ0V2ZW50czsKKyAgICBUaW1lcjxNZWRpYUNvbnRyb2xsZXI+IG1f
YXN5bmNFdmVudFRpbWVyOworICAgIFN0cmluZyBtX21lZGlhR3JvdXA7CisgICAgYm9vbCBtX2Ns
b3NlZENhcHRpb25zVmlzaWJsZTsKKyAgICBQYXNzUmVmUHRyPENsb2NrPiBtX2Nsb2NrOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuaWRsIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYUNvbnRyb2xsZXIuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0YjJhMWZkOGNiOTQ0MDhhMzhk
YWJiOTU2M2ViZmE1ZjczOGZjNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhQ29udHJvbGxlci5pZGwKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK21vZHVs
ZSBodG1sIHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1WSURFTywKKyAg
ICAgICAgQ2FuQmVDb25zdHJ1Y3RlZCwKKyAgICAgICAgR2VuZXJhdGVUb0pTLAorICAgICAgICBF
dmVudFRhcmdldAorICAgIF0gTWVkaWFDb250cm9sbGVyIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIFRpbWVSYW5nZXMgYnVmZmVyZWQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBU
aW1lUmFuZ2VzIHNlZWthYmxlOworCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUg
ZHVyYXRpb247CisgICAgICAgIGF0dHJpYnV0ZSBkb3VibGUgY3VycmVudFRpbWUKKyAgICAgICAg
ICAgIHNldHRlciByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGJvb2xlYW4gcGF1c2VkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgVGltZVJh
bmdlcyBwbGF5ZWQ7CisgICAgICAgIHZvaWQgcGxheSgpOworICAgICAgICB2b2lkIHBhdXNlKCk7
CisKKyAgICAgICAgYXR0cmlidXRlIGRvdWJsZSBkZWZhdWx0UGxheWJhY2tSYXRlOworICAgICAg
ICBhdHRyaWJ1dGUgZG91YmxlIHBsYXliYWNrUmF0ZTsKKworICAgICAgICBhdHRyaWJ1dGUgZG91
YmxlIHZvbHVtZQorICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAg
ICAgICAgYXR0cmlidXRlIGJvb2xlYW4gbXV0ZWQ7CisKKyAgICAgICAgLy8gRXZlbnRUYXJnZXQg
aW50ZXJmYWNlCisgICAgICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlw
ZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3Rl
bmVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVh
biB1c2VDYXB0dXJlKTsKKyAgICAgICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0
cmluZyB0eXBlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlz
dGVuZXIgbGlzdGVuZXIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09w
dGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICBib29sZWFuIGRpc3BhdGNoRXZl
bnQoaW4gRXZlbnQgZXZ0KQorICAgICAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKKyAg
ICB9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXJJ
bnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVySW50ZXJmYWNl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDc4NDdiNTVjNGFlNjMyYTE0ODZmOTlhOTY2MmM4NmMyYTQ4NzZmMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVySW50
ZXJmYWNlLmgKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1lZGlhQ29udHJv
bGxlckludGVyZmFjZV9oCisjZGVmaW5lIE1lZGlhQ29udHJvbGxlckludGVyZmFjZV9oCisKKyNp
ZiBFTkFCTEUoVklERU8pCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFRpbWVSYW5nZXM7CisKK3R5cGVkZWYgaW50IEV4Y2VwdGlv
bkNvZGU7CisKK2NsYXNzIE1lZGlhQ29udHJvbGxlckludGVyZmFjZSB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+TWVkaWFDb250cm9sbGVySW50ZXJmYWNlKCkgeyB9OworICAgIAorICAgIC8vIE1l
ZGlhQ29udHJvbGxlciBJREw6CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1
ZmZlcmVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBz
ZWVrYWJsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4g
cGxheWVkKCkgPSAwOworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgZHVyYXRpb24oKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0Q3VycmVudFRpbWUoZmxvYXQsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAg
CisgICAgdmlydHVhbCBib29sIHBhdXNlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cGxheSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKSA9IDA7CisgICAgCisgICAgdmly
dHVhbCBmbG9hdCBkZWZhdWx0UGxheWJhY2tSYXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXREZWZhdWx0UGxheWJhY2tSYXRlKGZsb2F0KSA9IDA7CisgICAgCisgICAgdmlydHVh
bCBmbG9hdCBwbGF5YmFja1JhdGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFBs
YXliYWNrUmF0ZShmbG9hdCkgPSAwOworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgdm9sdW1lKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRWb2x1bWUoZmxvYXQsIEV4Y2VwdGlvbkNv
ZGUmKSA9IDA7CisgICAgCisgICAgdmlydHVhbCBib29sIG11dGVkKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzZXRNdXRlZChib29sKSA9IDA7CisgICAgCisgICAgZW51bSBSZWFkeVN0
YXRlIHsgSEFWRV9OT1RISU5HLCBIQVZFX01FVEFEQVRBLCBIQVZFX0NVUlJFTlRfREFUQSwgSEFW
RV9GVVRVUkVfREFUQSwgSEFWRV9FTk9VR0hfREFUQSB9OworICAgIHZpcnR1YWwgUmVhZHlTdGF0
ZSByZWFkeVN0YXRlKCkgY29uc3QgPSAwOworCisgICAgLy8gTWVkaWFDb250cm9sRWxlbWVudHM6
CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNGdWxsc2NyZWVuKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBl
bnRlckZ1bGxzY3JlZW4oKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQXVkaW8oKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc1ZpZGVvKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBoYXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY2xv
c2VkQ2FwdGlvbnNWaXNpYmxlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIHN1cHBv
cnRzU2Nhbm5pbmcoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5TY3J1YmJp
bmcoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVuZFNjcnViYmluZygpID0gMDsKKworICAgIHZp
cnR1YWwgYm9vbCBjYW5QbGF5KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGlzTGl2
ZVN0cmVhbSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRpbmcoKSBjb25z
dCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgcmV0dXJuVG9SZWFsdGltZSgpID0gMDsKK307CisK
K30KKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGlt
ZVJhbmdlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuY3BwCmluZGV4IDFl
MTgzMDY5ODc3MTRiMGU5OWIyZDUzNWJjNGI0N2NlM2NjYzg3ODIuLjdiN2Q1OTRhNDZiOWJjMDU0
ZGMyZGE4ZDZhN2MyNTBiOTFkOWQxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGltZVJhbmdlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcApA
QCAtMzYsNyArMzYsNyBAQCBUaW1lUmFuZ2VzOjpUaW1lUmFuZ2VzKGZsb2F0IHN0YXJ0LCBmbG9h
dCBlbmQpCiAgICAgYWRkKHN0YXJ0LCBlbmQpOwogfQogCi1QYXNzUmVmUHRyPFRpbWVSYW5nZXM+
IFRpbWVSYW5nZXM6OmNvcHkoKQorUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBUaW1lUmFuZ2VzOjpj
b3B5KCkgY29uc3QKIHsKICAgICBSZWZQdHI8VGltZVJhbmdlcz4gbmV3U2Vzc2lvbiA9IFRpbWVS
YW5nZXM6OmNyZWF0ZSgpOwogICAgIApAQCAtNDcsNiArNDcsNDkgQEAgUGFzc1JlZlB0cjxUaW1l
UmFuZ2VzPiBUaW1lUmFuZ2VzOjpjb3B5KCkKICAgICByZXR1cm4gbmV3U2Vzc2lvbi5yZWxlYXNl
KCk7CiB9CiAKK3ZvaWQgVGltZVJhbmdlczo6aW52ZXJ0KCkKK3sKKyAgICBSZWZQdHI8VGltZVJh
bmdlcz4gaW52ZXJ0ZWQgPSBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKworICAgIGlmICghbV9yYW5n
ZXMuc2l6ZSgpKQorICAgICAgICBpbnZlcnRlZC0+YWRkKC1JTkZJTklUWSwgSU5GSU5JVFkpOwor
ICAgIGVsc2UgeworICAgICAgICBpZiAoZmxvYXQgc3RhcnQgPSBtX3Jhbmdlcy5maXJzdCgpLm1f
c3RhcnQgIT0gLUlORklOSVRZKQorICAgICAgICAgICAgaW52ZXJ0ZWQtPmFkZCgtSU5GSU5JVFks
IHN0YXJ0KTsKKworICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4ICsgMSA8IG1f
cmFuZ2VzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgICAgIGludmVydGVkLT5hZGQobV9yYW5n
ZXNbaW5kZXhdLm1fZW5kLCBtX3Jhbmdlc1tpbmRleCArIDFdLm1fc3RhcnQpOworCisgICAgICAg
IGlmIChmbG9hdCBlbmQgPSBtX3Jhbmdlcy5sYXN0KCkubV9lbmQgIT0gSU5GSU5JVFkpCisgICAg
ICAgICAgICBpbnZlcnRlZC0+YWRkKGVuZCwgSU5GSU5JVFkpOworICAgIH0KKworICAgIG1fcmFu
Z2VzLnN3YXAoaW52ZXJ0ZWQtPm1fcmFuZ2VzKTsKK30KKwordm9pZCBUaW1lUmFuZ2VzOjppbnRl
cnNlY3RXaXRoKGNvbnN0IFRpbWVSYW5nZXMqIG90aGVyKQoreworICAgIEFTU0VSVChvdGhlcik7
CisgICAgUmVmUHRyPFRpbWVSYW5nZXM+IGludmVydGVkID0gY29weSgpOworICAgIFJlZlB0cjxU
aW1lUmFuZ2VzPiBpbnZlcnRlZE90aGVyID0gb3RoZXItPmNvcHkoKTsKKyAgICBpbnZlcnRlZC0+
dW5pb25XaXRoKGludmVydGVkT3RoZXIuZ2V0KCkpOworICAgIGludmVydGVkLT5pbnZlcnQoKTsK
KworICAgIG1fcmFuZ2VzLnN3YXAoaW52ZXJ0ZWQtPm1fcmFuZ2VzKTsKK30KKwordm9pZCBUaW1l
UmFuZ2VzOjp1bmlvbldpdGgoY29uc3QgVGltZVJhbmdlcyogb3RoZXIpCit7CisgICAgQVNTRVJU
KG90aGVyKTsKKyAgICBSZWZQdHI8VGltZVJhbmdlcz4gdW5pb25lZCA9IGNvcHkoKTsKKyAgICBm
b3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3RoZXItPm1fcmFuZ2VzLnNpemUoKTsgKytp
bmRleCkgeworICAgICAgICBjb25zdCBSYW5nZSYgcmFuZ2UgPSBvdGhlci0+bV9yYW5nZXNbaW5k
ZXhdOworICAgICAgICB1bmlvbmVkLT5hZGQocmFuZ2UubV9zdGFydCwgcmFuZ2UubV9lbmQpOwor
ICAgIH0KKworICAgIG1fcmFuZ2VzLnN3YXAodW5pb25lZC0+bV9yYW5nZXMpOworfQorCiBmbG9h
dCBUaW1lUmFuZ2VzOjpzdGFydCh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNv
bnN0IAogeyAKICAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFu
Z2VzLmgKaW5kZXggMmQ3YWYyNWE4MDkxMzczMGY4MGQyMzkzMGJlMjc0ZTBmZjEyMTdmZC4uY2Nj
Y2UwNWMxOWM0YWM5ZTYyOWRkMmEyYTFmYjY2NTIxOTc4MTBkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1l
UmFuZ2VzLmgKQEAgLTQ2LDcgKzQ2LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBUaW1lUmFuZ2VzKHN0YXJ0LCBlbmQpKTsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRy
PFRpbWVSYW5nZXM+IGNvcHkoKTsKKyAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGNvcHkoKSBj
b25zdDsKKyAgICB2b2lkIGludmVydCgpOworICAgIHZvaWQgaW50ZXJzZWN0V2l0aChjb25zdCBU
aW1lUmFuZ2VzKik7CisgICAgdm9pZCB1bmlvbldpdGgoY29uc3QgVGltZVJhbmdlcyopOwogCiAg
ICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZXMuc2l6ZSgpOyB9CiAg
ICAgZmxvYXQgc3RhcnQodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmlkbAppbmRleCA0ZmEyZDA3ZjYyOTAxMjMwMGU5NzBlYWQ2YWJl
ZWEzZWYzMWU2MzUwLi45NDU1NTlmNGJmMzJmNzE5ODc2NzFjYWM2NmYxMjBhZTE4MTg2ODk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC02MjcsNiArNjI3LDcgQEAgbW9kdWxlIHdp
bmRvdyB7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9VklERU8sIEVuYWJsZWRBdFJ1
bnRpbWVdIE1lZGlhRXJyb3JDb25zdHJ1Y3RvciBNZWRpYUVycm9yOwogICAgICAgICBhdHRyaWJ1
dGUgW0NvbmRpdGlvbmFsPVZJREVPLCBFbmFibGVkQXRSdW50aW1lXSBUaW1lUmFuZ2VzQ29uc3Ry
dWN0b3IgVGltZVJhbmdlczsKICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1WSURFTywg
RW5hYmxlZEF0UnVudGltZV0gSFRNTFNvdXJjZUVsZW1lbnRDb25zdHJ1Y3RvciBIVE1MU291cmNl
RWxlbWVudDsKKyAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1WSURFTywgRW5hYmxlZEF0
UnVudGltZV0gTWVkaWFDb250cm9sbGVyQ29uc3RydWN0b3IgTWVkaWFDb250cm9sbGVyOwogCiAj
aWYgZGVmaW5lZChFTkFCTEVfQU5JTUFUSU9OX0FQSSkgJiYgRU5BQkxFX0FOSU1BVElPTl9BUEkK
ICAgICAgICAgYXR0cmlidXRlIFdlYktpdEFuaW1hdGlvbkNvbnN0cnVjdG9yIFdlYktpdEFuaW1h
dGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcAppbmRleCAwMThjN2RkMzNlMzhjMWI4Zjc3MzQ1YThjM2U0ZjgzNWZlYzYwYTczLi5mYzc3
ZmYyODgzOGI3YzA5NGFhNTNhNGZiZGYwNzE2ODBjYTIyMTMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC02MDksNiArNjA5LDEx
IEBAIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFQbGF5ZXI6OmJ1ZmZlcmVkKCkKICAgICBy
ZXR1cm4gbV9wcml2YXRlLT5idWZmZXJlZCgpOwogfQogCitQYXNzUmVmUHRyPFRpbWVSYW5nZXM+
IE1lZGlhUGxheWVyOjpzZWVrYWJsZSgpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2Vla2Fi
bGUoKTsKK30KKwogZmxvYXQgTWVkaWFQbGF5ZXI6Om1heFRpbWVTZWVrYWJsZSgpCiB7CiAgICAg
cmV0dXJuIG1fcHJpdmF0ZS0+bWF4VGltZVNlZWthYmxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCBjOTZiMDI1ZDgyZDAwNzA5MTY5
ZWVhNTFjMDc4MjZiNzQ1MDZjNDcxLi40NzczOWEwOGIwZTNkOWNjNzNjOTlhMTMxNDM0YTc4YWUw
Mzc0NTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmgKQEAgLTI0MSw2ICsyNDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcmVzZXJ2ZXNQ
aXRjaChib29sKTsKIAogICAgIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoKTsKKyAg
ICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHNlZWthYmxlKCk7CiAgICAgZmxvYXQgbWF4VGltZVNl
ZWthYmxlKCk7CiAKICAgICB1bnNpZ25lZCBieXRlc0xvYWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAppbmRleCBm
OGM3MGFiZTI4YTdlZDAxZGZiOGEyY2I3ZjFjNjM2NjM3ZDM4NDQxLi4wNWE3N2RlOGYyNTY1MWY4
NDIyYjY0NGIxY2FkYzI3ZTgxNTUyODI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtMjksNiArMjksNyBAQAog
I2lmIEVOQUJMRShWSURFTykKIAogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAi
VGltZVJhbmdlcy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTkxLDYgKzkyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6
Ok5ldHdvcmtTdGF0ZSBuZXR3b3JrU3RhdGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBNZWRp
YVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgPSAwOwogCisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHNlZWthYmxlKCkgY29uc3QgeyByZXR1cm4gVGltZVJh
bmdlczo6Y3JlYXRlKDAsIG1heFRpbWVTZWVrYWJsZSgpKTsgfQogICAgIHZpcnR1YWwgZmxvYXQg
bWF4VGltZVNlZWthYmxlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1l
UmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGU0YjU0MjUzNDZiMjUxOGE2
NjhkZTAxNjZkODI2Yjg0ZWQ1MTUxYjUuLjIzZTA2NjBkNGY1NDE4OGFhMmRjNzdmZjAyNjlmYzBl
ZjI2YjBmMTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0xMS0wMiAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBXSVA6IE1lZGlhQ29udHJvbGxlcgorCisg
ICAgICAgIEltcGxlbWVudCBNZWRpYUNvbnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTM0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEvbWVkaWEtY29udHJvbGxlci1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2st
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBs
YXliYWNrLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRt
bDogQWRkZWQuCisKIDIwMTEtMTAtMjQgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+
CiAKICAgICAgICAgY29tcG9zaXRpbmcvdmlkZW8gdGVzdHMgdGltZSBvdXQgb24gTGlvbgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVyLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kYzZkNGQwN2ZmY2NmY2IzMGU3NTVhY2MyNjhlNjc0Zjc0YWNjYzBlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwyNSBAQAorIAorVGVzdCBwcmVzZW5jZSBvZiBNZWRpYUNvbnRyb2xsZXIgY29u
c3RydWN0b3IsIG1lZGlhQ29udHJvbGxlciwgYW5kIG1lZGlhR3JvdXAgYXR0cmlidXRlczoKK0VY
UEVDVEVEICh0eXBlb2YoTWVkaWFDb250cm9sbGVyKSA9PSAnb2JqZWN0JykgT0sKK0VYUEVDVEVE
ICh2aWRlby5tZWRpYUNvbnRyb2xsZXIgPT0gJ251bGwnKSBPSworRVhQRUNURUQgKHZpZGVvLm1l
ZGlhR3JvdXAgPT0gJycpIE9LCisKK1Rlc3QgdGhhdCB0aGUgcHJlc2VuY2Ugb2YgYSBtZWRpYUdy
b3VwIGF0dHJpYnV0ZSBjcmVhdGVzIGEgbWVkaWFDb250cm9sbGVyOgorRVhQRUNURUQgKHZpZGVv
Mi5tZWRpYUdyb3VwID09ICdncm91cCcpIE9LCitFWFBFQ1RFRCAodmlkZW8yLm1lZGlhQ29udHJv
bGxlciAhPSAnbnVsbCcpIE9LCisKK1Rlc3QgdGhhdCBzZXR0aW5nIG1lZGlhR3JvdXAgdG8gYW4g
ZW1wdHkgc3RyaW5nIHJlbW92ZXMgdGhlIG1lZGlhQ29udHJvbGxlcjoKK1JVTih2aWRlby5tZWRp
YUdyb3VwID0gJycpCitFWFBFQ1RFRCAodmlkZW8ubWVkaWFDb250cm9sbGVyID09ICdudWxsJykg
T0sKKworVGVzdCBtYW51YWxseSBjcmVhdGluZyBhbmQgYXNzaWduaW5nIGEgbWVkaWFDb250cm9s
bGVyIHRvIGEgbWVkaWEgZWxlbWVudDoKK1JVTihjb250cm9sbGVyID0gbmV3IE1lZGlhQ29udHJv
bGxlcigpKQorUlVOKHZpZGVvLm1lZGlhQ29udHJvbGxlciA9IGNvbnRyb2xsZXIpCitFWFBFQ1RF
RCAodmlkZW8ubWVkaWFDb250cm9sbGVyID09ICdbb2JqZWN0IE1lZGlhQ29udHJvbGxlcl0nKSBP
SworCitUZXN0IHRoYXQgdHdvIG1lZGlhIGVsZW1lbnRzIHdpdGggdGhlIHNhbWUgbWVkaWFHcm91
cCBoYXZlIHRoZSBzYW1lIG1lZGlhQ29udHJvbGxlcjoKK1JVTih2aWRlby5tZWRpYUdyb3VwID0g
J2dyb3VwJykKK1JVTih2aWRlbzIubWVkaWFHcm91cCA9ICdncm91cCcpCitFWFBFQ1RFRCAodmlk
ZW8ubWVkaWFDb250cm9sbGVyID09PSB2aWRlbzIubWVkaWFDb250cm9sbGVyID09ICd0cnVlJykg
T0sKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNv
bnRyb2xsZXItcGxheWJhY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEt
Y29udHJvbGxlci1wbGF5YmFjay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjhhOGUwOTIxM2Vl
MWE3MTA3YjgxMWFiOWY4ODNhZDQwMTJhM2ZhNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2stZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTQgQEAKKyAKK1JVTihjb250cm9sbGVyID0gdmlkZW8ubWVkaWFDb250cm9sbGVyKQorRVZF
TlQoY2FucGxheXRocm91Z2gpCitSVU4oY29udHJvbGxlci5jdXJyZW50VGltZSA9IDUpCitFWFBF
Q1RFRCAodmlkZW8uY3VycmVudFRpbWUgPT0gJzUnKSBPSworRVhQRUNURUQgKHZpZGVvMi5jdXJy
ZW50VGltZSA9PSAnNScpIE9LCitSVU4odmlkZW8ucGxheSgpKQorUlVOKHZpZGVvMi5wbGF5KCkp
CitSVU4oY29udHJvbGxlci5wbGF5KCkpCitFVkVOVChwbGF5aW5nKQorRVhQRUNURUQgKGNvbnRy
b2xsZXIucGF1c2VkID09ICdmYWxzZScpIE9LCitFVkVOVChlbmRlZCkKK0VORCBPRiBURVNUCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2su
aHRtbCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2suaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43YzJiODNlZjFhYTg4OTZkN2MyMjA3ZjdhOTQ2NDkwZjNjY2Y1ZjJmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFj
ay5odG1sCkBAIC0wLDAgKzEsNDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhl
YWQ+CisgICAgICAgIDxzY3JpcHQgc3JjPW1lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAg
IDxzY3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisKKyAgICAgICAgPHNjcmlwdD4K
KyAgICAgICAgdmFyIGNvbnRyb2xsZXI7CisgICAgICAgIHZhciB2aWRlbzI7CisKKyAgICAgICAg
ZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgICAgICAgICB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCd2aWRlbycpWzBdOworICAgICAgICAgICAgdmlkZW8yID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ3ZpZGVvJylbMV07CisgICAgICAgICAgICBydW4oJ2NvbnRy
b2xsZXIgPSB2aWRlby5tZWRpYUNvbnRyb2xsZXInKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIu
YWRkRXZlbnRMaXN0ZW5lcignY2FucGxheXRocm91Z2gnLCBjYW5wbGF5dGhyb3VnaCwgdHJ1ZSk7
CisgICAgICAgICAgICBzZXRTcmNCeVRhZ05hbWUoJ3ZpZGVvJywgZmluZE1lZGlhRmlsZSgndmlk
ZW8nLCAnY29udGVudC90ZXN0JykpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5j
dGlvbiBjYW5wbGF5dGhyb3VnaCgpIHsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiRVZFTlQo
Y2FucGxheXRocm91Z2gpIik7CisgICAgICAgICAgICBjb250cm9sbGVyLnJlbW92ZUV2ZW50TGlz
dGVuZXIoJ2NhbnBsYXl0aHJvdWdoJywgY2FucGxheXRocm91Z2gsIHRydWUpOworICAgICAgICAg
ICAgcnVuKCdjb250cm9sbGVyLmN1cnJlbnRUaW1lID0gNScpOworICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCd2aWRlby5jdXJyZW50VGltZScsIDUpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVk
KCd2aWRlbzIuY3VycmVudFRpbWUnLCA1KTsKKyAgICAgICAgICAgIHJ1bigndmlkZW8ucGxheSgp
Jyk7CisgICAgICAgICAgICBydW4oJ3ZpZGVvMi5wbGF5KCknKTsKKyAgICAgICAgICAgIGNvbnRy
b2xsZXIuYWRkRXZlbnRMaXN0ZW5lcigncGxheWluZycsIHBsYXlpbmcsIHRydWUpOworICAgICAg
ICAgICAgcnVuKCdjb250cm9sbGVyLnBsYXkoKScpOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBmdW5jdGlvbiBwbGF5aW5nKCkgeyAKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiRVZF
TlQocGxheWluZykiKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIucmVtb3ZlRXZlbnRMaXN0ZW5l
cigncGxheWluZycsIHBsYXlpbmcsIHRydWUpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdj
b250cm9sbGVyLnBhdXNlZCcsIGZhbHNlKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIuYWRkRXZl
bnRMaXN0ZW5lcignZW5kZWQnLCBlbmRlZCwgdHJ1ZSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBlbmRlZCgpIHsgCisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKGVuZGVk
KSIpOworICAgICAgICAgICAgY29udHJvbGxlci5yZW1vdmVFdmVudExpc3RlbmVyKCdlbmRlZCcs
IGVuZGVkLCB0cnVlKTsKKyAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgfQorICAgICAg
ICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KKyAg
ICAgICAgPHZpZGVvIG1lZGlhR3JvdXA9Imdyb3VwIiBjb250cm9scz48L3ZpZGVvPgorICAgICAg
ICA8dmlkZW8gbWVkaWFHcm91cD0iZ3JvdXAiIGNvbnRyb2xzPjwvdmlkZW8+CisgICAgPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL21l
ZGlhLWNvbnRyb2xsZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGU1OTY3NTRkNWFiYjFjM2U3ZWRmMTQy
OWM2OTNhOGI4Nzg0ZmEwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVk
aWEtY29udHJvbGxlci5odG1sCkBAIC0wLDAgKzEsNDUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQgc3JjPW1lZGlhLWZpbGUuanM+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisKKyAgICAg
ICAgPHNjcmlwdD4KKyAgICAgICAgdmFyIGNvbnRyb2xsZXI7CisgICAgICAgIHZhciB2aWRlbzI7
CisKKyAgICAgICAgZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgICAgICAgICB2aWRlbyA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2aWRlbycpWzBdOworICAgICAgICAgICAgdmlkZW8y
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3ZpZGVvJylbMV07CisKKyAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgiVGVzdCBwcmVzZW5jZSBvZiBNZWRpYUNvbnRyb2xsZXIgY29uc3Ry
dWN0b3IsIG1lZGlhQ29udHJvbGxlciwgYW5kIG1lZGlhR3JvdXAgYXR0cmlidXRlczoiKTsKKyAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHlwZW9mKE1lZGlhQ29udHJvbGxlcikiLCAib2JqZWN0
Iik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm1lZGlhQ29udHJvbGxlciIsIG51
bGwpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5tZWRpYUdyb3VwIiwgIiIpOwor
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgi
VGVzdCB0aGF0IHRoZSBwcmVzZW5jZSBvZiBhIG1lZGlhR3JvdXAgYXR0cmlidXRlIGNyZWF0ZXMg
YSBtZWRpYUNvbnRyb2xsZXI6IikKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8yLm1l
ZGlhR3JvdXAiLCAnZ3JvdXAnKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8yLm1l
ZGlhQ29udHJvbGxlciIsIG51bGwsICIhPSIpOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCIi
KTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCB0aGF0IHNldHRpbmcgbWVkaWFHcm91
cCB0byBhbiBlbXB0eSBzdHJpbmcgcmVtb3ZlcyB0aGUgbWVkaWFDb250cm9sbGVyOiIpCisgICAg
ICAgICAgICBydW4oInZpZGVvLm1lZGlhR3JvdXAgPSAnJyIpOworICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCJ2aWRlby5tZWRpYUNvbnRyb2xsZXIiLCBudWxsKTsKKyAgICAgICAgICAgIGNvbnNv
bGVXcml0ZSgiIik7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3QgbWFudWFsbHkgY3Jl
YXRpbmcgYW5kIGFzc2lnbmluZyBhIG1lZGlhQ29udHJvbGxlciB0byBhIG1lZGlhIGVsZW1lbnQ6
IikKKyAgICAgICAgICAgIHJ1bigiY29udHJvbGxlciA9IG5ldyBNZWRpYUNvbnRyb2xsZXIoKSIp
OworICAgICAgICAgICAgcnVuKCJ2aWRlby5tZWRpYUNvbnRyb2xsZXIgPSBjb250cm9sbGVyIik7
CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm1lZGlhQ29udHJvbGxlciIsIGNvbnRy
b2xsZXIpOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgIGNvbnNv
bGVXcml0ZSgiVGVzdCB0aGF0IHR3byBtZWRpYSBlbGVtZW50cyB3aXRoIHRoZSBzYW1lIG1lZGlh
R3JvdXAgaGF2ZSB0aGUgc2FtZSBtZWRpYUNvbnRyb2xsZXI6IikKKyAgICAgICAgICAgIHJ1bigi
dmlkZW8ubWVkaWFHcm91cCA9ICdncm91cCciKTsKKyAgICAgICAgICAgIHJ1bigidmlkZW8yLm1l
ZGlhR3JvdXAgPSAnZ3JvdXAnIik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm1l
ZGlhQ29udHJvbGxlciA9PT0gdmlkZW8yLm1lZGlhQ29udHJvbGxlciIsIHRydWUpOworICAgICAg
ICAgICAgZW5kVGVzdCgpOworICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVh
ZD4KKyAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgorICAgICAgICA8dmlkZW8+PC92aWRlbz4K
KyAgICAgICAgPHZpZGVvIG1lZGlhZ3JvdXA9Imdyb3VwIj48L3ZpZGVvPgorICAgIDwvYm9keT4K
KzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>
<flag name="review"
          id="111707"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113396</attachid>
            <date>2011-11-02 16:34:22 -0700</date>
            <delta_ts>2011-11-02 16:34:35 -0700</delta_ts>
            <desc>Source/JavaScriptCore: Implement MediaController.</desc>
            <filename>bug-71341-20111102163421.patch</filename>
            <type>text/plain</type>
            <size>25504</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkxMTkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDg1
OTFhODg4NDU1YjhmMWU1ZTYzYmU3NzkyNjhhNTE2NDhmNDIzZmEuLmVkYTE0Y2JkMzc5NWMyOTY0
ZWUwNjM5M2VmMGUwYmRlMWM5MWI5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDExLTExLTAyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgor
CisgICAgICAgIEltcGxlbWVudCBNZWRpYUNvbnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTM0MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBXVEZfVVNFX0NPUkVBVURJTyBtYWNybyBm
b3IgdXNlIGJ5IFBsYXRmb3JtQ2xvY2tDQS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgor
CiAyMDExLTExLTAyICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgRU5BQkxFX0NTU19TSEFERVJTIGZsYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ZmNhNTY5ZTA4MzU1MTY5
Y2M1OTQxOTk4N2VkZjFhYjhkYzAyM2ZkLi5kYjkwZWY2NDI5OWI5ZjZiNjI4Y2RmM2IzMzMwNDFm
MjIzNDFhMzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTEtMTEtMDIgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIENsb2NrIGNsYXNzIGFu
ZCBwbGF0Zm9ybS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTM0MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0czsgdGhlc2UgY2xhc3NlcyB3
aWxsIGJlIHVzZWQgYW5kIHRlc3RlZCBieSB0aGUgTWVkaWFDb250cm9sbGVyIGZlYXR1cmUuCisK
KyAgICAgICAgQWRkcyBhIGFic3RyYWN0IENsb2NrIGNsYXNzIGFuZCB0d28gY29uY3JldGUsIHBs
YXRmb3JtLXNwZWNpZmljIHN1YmNsYXNzZXMuCisKKyAgICAgICAgQ2xvY2sgcHJvdmlkZXMgYSBi
YXNpYyBpbnRlcmZhY2UgZm9yIHN0YXJ0aW5nLCBzdG9wcGluZywgYW5kIHF1ZXJ5aW5nIGEgZ2Vu
ZXJpYyB0aW1lbGluZS4KKyAgICAgICAgUGxhdGZvcm1DbG9ja0NBIGltcGxlbWVudHMgdGhpcyBp
bnRlcmZhY2UgdXNpbmcgYSBDb3JlQXVkaW8gQ0FDbG9jayBvYmplY3QsIHdoaWNoIHVzZXMKKyAg
ICAgICAgdGhlIGRlZmF1bHQgYXVkaW8gZGV2aWNlJ3MgaGFyZHdhcmUgY2xvY2sgYXMgYSB0aW1p
bmcgc291cmNlLiBQbGF0Zm9ybUNsb2NrUE9TSVggCisgICAgICAgIGltcGxlbWVudHMgdGhpcyBp
bnRlcmZhY2UgdXNpbmcgZ2V0dGltZW9mZGF5KCkgYXMgaXRzIHRpbWluZyBzb3VyY2UuCisKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxh
dGZvcm0vQ2xvY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKENsb2NrOjpjcmVhdGUpOiBDcmVhdGVz
IGEgcGxhdGZvcm0tc3BlY2lmaWMgY2xvY2suCisgICAgICAgICogcGxhdGZvcm0vQ2xvY2suaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDbG9jazo6fkNsb2NrKToKKyAgICAgICAgKFdlYkNv
cmU6OkNsb2NrOjpDbG9jayk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtQ2xvY2tD
QS5jcHA6IEFkZGVkLgorICAgICAgICAoUGxhdGZvcm1DbG9ja0NBOjpQbGF0Zm9ybUNsb2NrQ0Ep
OgorICAgICAgICAoUGxhdGZvcm1DbG9ja0NBOjp+UGxhdGZvcm1DbG9ja0NBKToKKyAgICAgICAg
KFBsYXRmb3JtQ2xvY2tDQTo6c2V0Q3VycmVudFRpbWUpOgorICAgICAgICAoUGxhdGZvcm1DbG9j
a0NBOjpjdXJyZW50VGltZSk6CisgICAgICAgIChQbGF0Zm9ybUNsb2NrQ0E6OnNldFBsYXlSYXRl
KToKKyAgICAgICAgKFBsYXRmb3JtQ2xvY2tDQTo6UGxhdGZvcm1DbG9ja0NBOjpwbGF5UmF0ZSk6
CisgICAgICAgIChQbGF0Zm9ybUNsb2NrQ0E6OnN0YXJ0KToKKyAgICAgICAgKFBsYXRmb3JtQ2xv
Y2tDQTo6c3RvcCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtQ2xvY2tDQS5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ2xvY2tDQTo6aXNSdW5uaW5nKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9wb3NpeC9QbGF0Zm9ybUNsb2NrUE9TSVguY3BwOiBBZGRlZC4KKyAg
ICAgICAgKHRpbWV2YWxUb0Zsb2F0KToKKyAgICAgICAgKHRpbWV2YWxEZWx0YSk6CisgICAgICAg
IChQbGF0Zm9ybUNsb2NrUE9TSVg6OlBsYXRmb3JtQ2xvY2tQT1NJWCk6CisgICAgICAgIChQbGF0
Zm9ybUNsb2NrUE9TSVg6OnNldEN1cnJlbnRUaW1lKToKKyAgICAgICAgKFBsYXRmb3JtQ2xvY2tQ
T1NJWDo6Y3VycmVudFRpbWUpOgorICAgICAgICAoUGxhdGZvcm1DbG9ja1BPU0lYOjpzZXRQbGF5
UmF0ZSk6CisgICAgICAgIChQbGF0Zm9ybUNsb2NrUE9TSVg6OlBsYXRmb3JtQ2xvY2tQT1NJWDo6
cGxheVJhdGUpOgorICAgICAgICAoUGxhdGZvcm1DbG9ja1BPU0lYOjpzdGFydCk6CisgICAgICAg
IChQbGF0Zm9ybUNsb2NrUE9TSVg6OnN0b3ApOgorICAgICAgICAoUGxhdGZvcm1DbG9ja1BPU0lY
Ojpub3cpOgorICAgICAgICAqIHBsYXRmb3JtL3Bvc2l4L1BsYXRmb3JtQ2xvY2tQT1NJWC5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ2xvY2tQT1NJWDo6aXNSdW5uaW5nKToK
KwogMjAxMS0xMS0wMiAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIEVOQUJMRV9DU1NfU0hBREVSUyBmbGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3Jt
LmgKaW5kZXggMTJjMjE2NjFjMDAwNmNlYzJlMWY3MDkzMTRkMTk4ZDFkNzEwN2ExMS4uODVjNjBl
Y2YzMGMzM2IxMTllZWZjMjlhODMyZGFiNzVlMzIzNzQyMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvUGxhdGZvcm0uaApAQCAtMTEwNCw0ICsxMTA0LDggQEAKICNkZWZpbmUgSEFWRV9JTlZFUlRF
RF9XSEVFTF9FVkVOVFMgMQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9S
TShXSU4pICYmICFPUyhXSU5DRSkgJiYgIVBMQVRGT1JNKFdJTl9DQUlSTykpCisjZGVmaW5lIFdU
Rl9VU0VfQ09SRUFVRElPIDEKKyNlbmRpZgorCiAjZW5kaWYgLyogV1RGX1BsYXRmb3JtX2ggKi8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCAzNzMyOGIzYzU5Mjg2ZjUzNjcyYjhhMjIwMTIzYmQzZWQyMWI5YWYzLi5mMThkOWMyZmFk
ZDc3NGNkZWU4OWY4YjM5MWNkYjVhYjYxMmJjNWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01NzAxLDYgKzU3MDEsOSBAQAog
CQlDRDgyMDMwRDEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93
Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEODIwMzA5MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5k
b3dDb250cm9sbGVyLm1tICovOyB9OwogCQlDRDgyMDMxMDEzOTVBQ0U3MDBGOTU2QzYgLyogV2Vi
V2luZG93QW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDgyMDMwRTEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLmgg
Ki87IH07CiAJCUNEODIwMzExMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24u
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMw
RjEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLm1tICovOyB9OworCQlDREVB
NzYzMDE0NjA4QTUzMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUE3NjJFMTQ2MDg0REUwMDhCMzFG
MSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwICovOyB9OworCQlDREVBNzYzNDE0NjBCNTZGMDA4QjMx
RjEgLyogUGxhdGZvcm1DbG9ja1BPU0lYLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENERUE3NjMyMTQ2MEFFMjkwMDhCMzFGMSAvKiBQbGF0Zm9ybUNs
b2NrUE9TSVguY3BwICovOyB9OworCQlDREVBNzYzNTE0NjBCNzFBMDA4QjMxRjEgLyogQ2xvY2su
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTc2
MzMxNDYwQjQ2MjAwOEIzMUYxIC8qIENsb2NrLmNwcCAqLzsgfTsKIAkJQ0RFQTdDODQxMjc2MjMw
NDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUE3QzgyMTI3NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJG
dWxsU2NyZWVuLmggKi87IH07CiAJCUNERUE3Qzg1MTI3NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJG
dWxsU2NyZWVuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENERUE3QzgzMTI3NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJGdWxsU2NyZWVuLmNwcCAqLzsg
fTsKIAkJQ0UwMkYwQzQxMUU4M0FERDAwQzY2ODRBIC8qIFNjcmlwdENvbnRyb2xsZXJCYXNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTAyRjBDMzEx
RTgzQUREMDBDNjY4NEEgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTI5ODMsNiArMTI5ODYsMTIgQEAK
IAkJQ0Q4MjAzMEUxMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJXaW5kb3dBbmltYXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4MjAzMEYxMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldp
bmRvd0FuaW1hdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYldpbmRvd0FuaW1hdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RC
RDkzQkExMzMzQkQ0QjAwMjU3MEUzIC8qIGZ1bGxzY3JlZW5RdWlja1RpbWUuY3NzICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5jc3M7IHBhdGggPSBmdWxsc2NyZWVuUXVpY2tUaW1lLmNzczsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFQTc2MkMxNDYwODIyNDAwOEIzMUYxIC8qIENsb2NrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNERUE3NjJFMTQ2MDg0REUwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0Eu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1DbG9ja0NB
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFQTc2MkYxNDYwODRFRTAwOEIz
MUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQbGF0Zm9ybUNsb2NrQ0EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFQTc2
MzExNDYwQUUxQjAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tQT1NJWC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUNsb2NrUE9TSVguaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RFQTc2MzIxNDYwQUUyOTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tQ
T1NJWC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybUNs
b2NrUE9TSVguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREVBNzYzMzE0NjBC
NDYyMDA4QjMxRjEgLyogQ2xvY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ2xvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBN0M4MjEy
NzYyMzA0MDBCODQ2REQgLyogUmVuZGVyRnVsbFNjcmVlbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZW5kZXJGdWxsU2NyZWVuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNERUE3QzgzMTI3NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJGdWxsU2NyZWVuLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckZ1bGxTY3JlZW4uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTAyRjBDMzExRTgzQUREMDBDNjY4NEEg
LyogU2NyaXB0Q29udHJvbGxlckJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2NyaXB0Q29udHJvbGxlckJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE1MDE3LDYgKzE1MDI2LDggQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CiAJCQkJNTE2MDMwMEEwQ0M0MjUxMjAwQzhBQzI1IC8qIEZpbGVTeXN0ZW1QT1NJWC5jcHAgKi8s
CisJCQkJQ0RFQTc2MzExNDYwQUUxQjAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tQT1NJWC5oICov
LAorCQkJCUNERUE3NjMyMTQ2MEFFMjkwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrUE9TSVguY3Bw
ICovLAogCQkJKTsKIAkJCXBhdGggPSBwb3NpeDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CkBAIC0xNTM5NCw2ICsxNTQwNSw4IEBACiAJCQkJQ0Q4MjAzMEYxMzk1QUNFNzAwRjk1NkM2IC8q
IFdlYldpbmRvd0FuaW1hdGlvbi5tbSAqLywKIAkJCQk5MzVDNDc3MjA5QUM0RDc3MDBBNkFBQjQg
LyogV2hlZWxFdmVudE1hYy5tbSAqLywKIAkJCQk5MzgwRjQ3NzA5QTExQUNDMDAxRkRCMzQgLyog
V2lkZ2V0TWFjLm1tICovLAorCQkJCUNERUE3NjJFMTQ2MDg0REUwMDhCMzFGMSAvKiBQbGF0Zm9y
bUNsb2NrQ0EuY3BwICovLAorCQkJCUNERUE3NjJGMTQ2MDg0RUUwMDhCMzFGMSAvKiBQbGF0Zm9y
bUNsb2NrQ0EuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKQEAgLTIwMDQzLDYgKzIwMDU2LDggQEAKIAkJCQk5MzgwRjQ3MTA5QTExQUI0MDAx
RkRCMzQgLyogV2lkZ2V0LmNwcCAqLywKIAkJCQk5MzgwRjQ3MjA5QTExQUI0MDAxRkRCMzQgLyog
V2lkZ2V0LmggKi8sCiAJCQkJRTFFMUJFRkYxMTVGRjZGQjAwNkY1MkNBIC8qIFdpbmRvd3NLZXli
b2FyZENvZGVzLmggKi8sCisJCQkJQ0RFQTc2MkMxNDYwODIyNDAwOEIzMUYxIC8qIENsb2NrLmgg
Ki8sCisJCQkJQ0RFQTc2MzMxNDYwQjQ2MjAwOEIzMUYxIC8qIENsb2NrLmNwcCAqLywKIAkJCSk7
CiAJCQlwYXRoID0gcGxhdGZvcm07CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjcz
OTEsNiArMjc0MDYsOSBAQAogCQkJCUEwRUUwREY3MTQ0RjgyNTUwMEY4MEIwRCAvKiBXZWJHTERl
YnVnU2hhZGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBM0JCNTlGMzE0NTdBNDBEMDBBQzU2
RkUgLyogRG9jdW1lbnRFdmVudFF1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOEZFQkRD
MTQzRTNFRjcwMDcyNTAyQiAvKiBDU1NDcm9zc2ZhZGVWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlDREVBNzYzMDE0NjA4QTUzMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUNERUE3NjM0MTQ2MEI1NkYwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2Nr
UE9TSVguY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RFQTc2MzUxNDYwQjcxQTAwOEIzMUYxIC8q
IENsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ2xvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2xvY2suY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjkwYzU4OGM1YzJlZGFlZjc5Mjg2YzFlZWRkOTVhNDJmZjQxMWU0ZDIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DbG9jay5jcHAKQEAgLTAsMCArMSw0
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2xvY2suaCIK
KworI2lmIFVTRShDT1JFQVVESU8pCisgICAgI2luY2x1ZGUgIlBsYXRmb3JtQ2xvY2tDQS5oIgor
I2Vsc2UKKyAgICAjaW5jbHVkZSAiUGxhdGZvcm1DbG9ja1BPU0lYLmgiCisjZW5kaWYKKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1Bhc3NSZWZQdHI8Q2xvY2s+IENsb2NrOjpjcmVhdGUo
KQoreworI2lmIFVTRShDT1JFQVVESU8pCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9y
bUNsb2NrQ0EoKSk7CisjZWxzZQorICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1DbG9j
a1BPU0lYKCkpOworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9DbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2xvY2suaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
NmFmOTU2NTczOThkNGU2MjkwMjliMTRiN2ZmMGUwOWZkMmI4NmNmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2xvY2suaApAQCAtMCwwICsxLDU1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgQ2xvY2tfaAorI2RlZmluZSBDbG9ja19oCisKKyNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgQ2xvY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxDbG9jaz4geworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsb2NrPiBjcmVhdGUoKTsKKyAgICB2aXJ0dWFs
IH5DbG9jaygpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRUaW1lKGZsb2F0KSA9
IDA7CisgICAgdmlydHVhbCBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0ID0gMDsKKworICAgIHZp
cnR1YWwgdm9pZCBzZXRQbGF5UmF0ZShmbG9hdCkgPSAwOworICAgIHZpcnR1YWwgZmxvYXQgcGxh
eVJhdGUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHN0b3AoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzUnVubmluZygpIGNv
bnN0ID0gMDsKKworcHJvdGVjdGVkOgorICAgIENsb2NrKCkgeyB9Cit9OworCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtQ2xvY2tD
QS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1DbG9ja0NBLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mN2I3NTc1MmMxY2VmZjgwNDM2ZDMwOTYxMDBhODZmNzY3ODhhZWYxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtQ2xvY2tD
QS5jcHAKQEAgLTAsMCArMSwxMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpZiBVU0UoQ09SRUFVRElPKQorCisjaW5jbHVkZSAiUGxhdGZvcm1DbG9ja0NBLmgiCisKKyNp
bmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKKyNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQ29yZUF1
ZGlvQ2xvY2suaD4KKyNpbmNsdWRlIDxDb3JlQXVkaW8vQXVkaW9IYXJkd2FyZS5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUGxhdGZvcm1DbG9ja0NBOjpQbGF0Zm9ybUNsb2NrQ0Eo
KQorICAgIDogbV9jbG9jaygwKQorICAgICwgbV9ydW5uaW5nKGZhbHNlKQoreworICAgIENBQ2xv
Y2tOZXcoMCwgJm1fY2xvY2spOworICAgIFVJbnQzMiB0aW1lYmFzZSA9IGtDQUNsb2NrVGltZWJh
c2VfQXVkaW9EZXZpY2U7CisgICAgVUludDMyIHRpbWViYXNlU2l6ZSA9IHNpemVvZih0aW1lYmFz
ZSk7CisgICAgQ0FDbG9ja1NldFByb3BlcnR5KG1fY2xvY2ssIGtDQUNsb2NrUHJvcGVydHlfSW50
ZXJuYWxUaW1lYmFzZSwgdGltZWJhc2VTaXplLCAmdGltZWJhc2UpOworCisgICAgQXVkaW9PYmpl
Y3RJRCBkZWZhdWx0QXVkaW9PdXRwdXQgPSAwOworICAgIFVJbnQzMiBkZWZhdWx0QXVkaW9PdXRw
dXRTaXplID0gc2l6ZW9mKGRlZmF1bHRBdWRpb091dHB1dCk7CisKKyAgICBBdWRpb09iamVjdFBy
b3BlcnR5QWRkcmVzcyBhZGRyZXNzOworICAgIGFkZHJlc3MubVNlbGVjdG9yID0ga0F1ZGlvSGFy
ZHdhcmVQcm9wZXJ0eURlZmF1bHRPdXRwdXREZXZpY2U7CisgICAgYWRkcmVzcy5tU2NvcGUgICAg
PSBrQXVkaW9PYmplY3RQcm9wZXJ0eVNjb3BlR2xvYmFsOworICAgIGFkZHJlc3MubUVsZW1lbnQg
ID0ga0F1ZGlvT2JqZWN0UHJvcGVydHlFbGVtZW50TWFzdGVyOworCisgICAgQXVkaW9PYmplY3RH
ZXRQcm9wZXJ0eURhdGEoa0F1ZGlvT2JqZWN0U3lzdGVtT2JqZWN0LCAmYWRkcmVzcywgMCwgMCwg
JmRlZmF1bHRBdWRpb091dHB1dFNpemUsICZkZWZhdWx0QXVkaW9PdXRwdXQpOworICAgIENBQ2xv
Y2tTZXRQcm9wZXJ0eShtX2Nsb2NrLCBrQ0FDbG9ja1Byb3BlcnR5X1RpbWViYXNlU291cmNlLCBk
ZWZhdWx0QXVkaW9PdXRwdXRTaXplLCAmZGVmYXVsdEF1ZGlvT3V0cHV0KTsKK30KKworUGxhdGZv
cm1DbG9ja0NBOjp+UGxhdGZvcm1DbG9ja0NBKCkKK3sKKyAgICBDQUNsb2NrRGlzcG9zZShtX2Ns
b2NrKTsKK30KKwordm9pZCBQbGF0Zm9ybUNsb2NrQ0E6OnNldEN1cnJlbnRUaW1lKGZsb2F0IHRp
bWUpCit7CisgICAgQ0FDbG9ja1RpbWUgY2FUaW1lOworICAgIGNhVGltZS5mb3JtYXQgPSBrQ0FD
bG9ja1RpbWVGb3JtYXRfU2Vjb25kczsKKyAgICBjYVRpbWUudGltZS5zZWNvbmRzID0gdGltZTsK
KyAgICBDQUNsb2NrU2V0Q3VycmVudFRpbWUobV9jbG9jaywgJmNhVGltZSk7Cit9CisKK2Zsb2F0
IFBsYXRmb3JtQ2xvY2tDQTo6Y3VycmVudFRpbWUoKSBjb25zdAoreworICAgIENBQ2xvY2tUaW1l
IGNhVGltZTsKKworICAgIC8vIENBQ2xvY2sgZG9lcyBub3QgcmV0dXJuIHRoZSBjb3JyZWN0IGN1
cnJlbnQgdGltZSB3aGVuIHN0b3BwZWQuIEluc3RlYWQsIHF1ZXJ5IGZvcgorICAgIC8vIHdoYXQg
aXMgdGhlIHN0YXJ0IHRpbWUsIGkuZS4gd2hhdCB0aGUgY3VycmVudCB0aW1lIHdpbGwgYmUgd2hl
biBzdGFydGVkLgorICAgIGlmIChtX3J1bm5pbmcpIHsKKyAgICAgICAgaWYgKENBQ2xvY2tHZXRD
dXJyZW50VGltZShtX2Nsb2NrLCBrQ0FDbG9ja1RpbWVGb3JtYXRfU2Vjb25kcywgJmNhVGltZSkg
PT0gbm9FcnIpCisgICAgICAgICAgICByZXR1cm4gbmFycm93UHJlY2lzaW9uVG9GbG9hdChjYVRp
bWUudGltZS5zZWNvbmRzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoQ0FDbG9ja0dldFN0
YXJ0VGltZShtX2Nsb2NrLCBrQ0FDbG9ja1RpbWVGb3JtYXRfU2Vjb25kcywgJmNhVGltZSkgPT0g
bm9FcnIpCisgICAgICAgICAgICByZXR1cm4gbmFycm93UHJlY2lzaW9uVG9GbG9hdChjYVRpbWUu
dGltZS5zZWNvbmRzKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgUGxhdGZvcm1D
bG9ja0NBOjpzZXRQbGF5UmF0ZShmbG9hdCByYXRlKQoreworICAgIENBQ2xvY2tTZXRQbGF5UmF0
ZShtX2Nsb2NrLCByYXRlKTsKK30KKworZmxvYXQgUGxhdGZvcm1DbG9ja0NBOjpQbGF0Zm9ybUNs
b2NrQ0E6OnBsYXlSYXRlKCkgY29uc3QKK3sKKyAgICBkb3VibGUgcmF0ZSA9IDA7CisgICAgaWYg
KENBQ2xvY2tHZXRQbGF5UmF0ZShtX2Nsb2NrLCAmcmF0ZSkgPT0gbm9FcnIpCisgICAgICAgIHJl
dHVybiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHJhdGUpOworICAgIHJldHVybiAwOworfQorCit2
b2lkIFBsYXRmb3JtQ2xvY2tDQTo6c3RhcnQoKQoreworICAgIGlmIChtX3J1bm5pbmcpCisgICAg
ICAgIHJldHVybjsKKyAgICBtX3J1bm5pbmcgPSB0cnVlOworICAgIENBQ2xvY2tTdGFydChtX2Ns
b2NrKTsKK30KKwordm9pZCBQbGF0Zm9ybUNsb2NrQ0E6OnN0b3AoKQoreworICAgIGlmICghbV9y
dW5uaW5nKQorICAgICAgICByZXR1cm47CisgICAgbV9ydW5uaW5nID0gZmFsc2U7CisgICAgQ0FD
bG9ja1N0b3AobV9jbG9jayk7Cit9CisKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1DbG9ja0NBLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGxhdGZvcm1DbG9ja0NBLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjEwMWQ3YTk1ZDIzNjUzMWE4
NmEzN2ExNmQ5NjI1MDJhMjRlNjNhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ0EuaApAQCAtMCwwICsxLDYxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBQbGF0Zm9ybUNsb2NrQ0FfaAorI2RlZmluZSBQbGF0Zm9ybUNsb2NrQ0FfaAor
CisjaWYgVVNFKENPUkVBVURJTykKKworI2luY2x1ZGUgIkNsb2NrLmgiCisKK3R5cGVkZWYgc3Ry
dWN0IE9wYXF1ZUNBQ2xvY2sgKkNBQ2xvY2tSZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgUGxhdGZvcm1DbG9ja0NBIDogcHVibGljIENsb2NrIHsKK3B1YmxpYzoKKyAgICBQbGF0
Zm9ybUNsb2NrQ0EoKTsKKyAgICB2aXJ0dWFsIH5QbGF0Zm9ybUNsb2NrQ0EoKTsKKworcHJpdmF0
ZToKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRpbWUoZmxvYXQpOworICAgIHZpcnR1YWwg
ZmxvYXQgY3VycmVudFRpbWUoKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5UmF0
ZShmbG9hdCk7CisgICAgdmlydHVhbCBmbG9hdCBwbGF5UmF0ZSgpIGNvbnN0OworCisgICAgdmly
dHVhbCB2b2lkIHN0YXJ0KCk7CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNSdW5uaW5nKCkgY29uc3QgeyByZXR1cm4gbV9ydW5uaW5nOyB9CisKKyAgICBDQUNs
b2NrUmVmIG1fY2xvY2s7CisgICAgYm9vbCBtX3J1bm5pbmc7Cit9OworCit9CisKKyNlbmRpZgor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1BsYXRm
b3JtQ2xvY2tQT1NJWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9QbGF0Zm9y
bUNsb2NrUE9TSVguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwNTM3NWM2YmFlMjk2MzE0NTg1MmNiNzMxNWVl
NGUyOTc0MGJiODEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9w
b3NpeC9QbGF0Zm9ybUNsb2NrUE9TSVguY3BwCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNsb2NrUE9TSVguaCIKKwor
I2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
Kworc3RhdGljIGZsb2F0IHRpbWV2YWxUb0Zsb2F0KHRpbWV2YWwgdmFsKQoreworICAgIHJldHVy
biB2YWwudHZfc2VjICsgKHZhbC50dl91c2VjIC8gMTAwMDAwMC4wZik7Cit9CisKK3N0YXRpYyB0
aW1ldmFsIHRpbWV2YWxEZWx0YSh0aW1ldmFsIGZpcnN0LCB0aW1ldmFsIHNlY29uZCkKK3sKKyAg
ICB0aW1ldmFsIGRlbHRhOworICAgIGRlbHRhLnR2X3NlYyA9IGZpcnN0LnR2X3NlYyAtIHNlY29u
ZC50dl9zZWM7CisgICAgZGVsdGEudHZfdXNlYyA9IGZpcnN0LnR2X3VzZWMgLSBzZWNvbmQudHZf
dXNlYzsKKyAgICBpZiAoZGVsdGEudHZfdXNlYyA8IDApIHsKKyAgICAgICAgZGVsdGEudHZfdXNl
YyArPSAxMDAwMDAwOworICAgICAgICBkZWx0YS50dl9zZWMtLTsKKyAgICB9CisgICAgcmV0dXJu
IGRlbHRhOworfQorCitQbGF0Zm9ybUNsb2NrUE9TSVg6OlBsYXRmb3JtQ2xvY2tQT1NJWCgpCisg
ICAgOiBtX3J1bm5pbmcoZmFsc2UpCisgICAgLCBtX3JhdGUoMSkKKyAgICAsIG1fb2Zmc2V0KDAp
Cit7CisgICAgbV9zdGFydFRpbWUgPSBtX2xhc3RUaW1lID0gbm93KCk7Cit9CisKK3ZvaWQgUGxh
dGZvcm1DbG9ja1BPU0lYOjpzZXRDdXJyZW50VGltZShmbG9hdCB0aW1lKQoreworICAgIG1fc3Rh
cnRUaW1lID0gbV9sYXN0VGltZSA9IG5vdygpOworICAgIG1fb2Zmc2V0ID0gdGltZTsKK30KKwor
ZmxvYXQgUGxhdGZvcm1DbG9ja1BPU0lYOjpjdXJyZW50VGltZSgpIGNvbnN0Cit7CisgICAgaWYg
KG1fcnVubmluZykKKyAgICAgICAgbV9sYXN0VGltZSA9IG5vdygpOworICAgIGZsb2F0IHRpbWUg
PSAodGltZXZhbFRvRmxvYXQodGltZXZhbERlbHRhKG1fbGFzdFRpbWUsIG1fc3RhcnRUaW1lKSkg
KiBtX3JhdGUpICsgbV9vZmZzZXQ7CisgICAgcmV0dXJuIHRpbWU7Cit9CisKK3ZvaWQgUGxhdGZv
cm1DbG9ja1BPU0lYOjpzZXRQbGF5UmF0ZShmbG9hdCByYXRlKQoreworICAgIG1fb2Zmc2V0ID0g
Y3VycmVudFRpbWUoKTsKKyAgICBtX2xhc3RUaW1lID0gbV9zdGFydFRpbWUgPSBub3coKTsKKyAg
ICBtX3JhdGUgPSByYXRlOworfQorCit2b2lkIFBsYXRmb3JtQ2xvY2tQT1NJWDo6c3RhcnQoKQor
eworICAgIGlmIChtX3J1bm5pbmcpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbGFzdFRpbWUg
PSBtX3N0YXJ0VGltZSA9IG5vdygpOworICAgIG1fcnVubmluZyA9IHRydWU7Cit9CisKK3ZvaWQg
UGxhdGZvcm1DbG9ja1BPU0lYOjpzdG9wKCkKK3sKKyAgICBpZiAoIW1fcnVubmluZykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9vZmZzZXQgPSBjdXJyZW50VGltZSgpOworICAgIG1fbGFzdFRp
bWUgPSBtX3N0YXJ0VGltZSA9IG5vdygpOworICAgIG1fcnVubmluZyA9IGZhbHNlOworfQorCit0
aW1ldmFsIFBsYXRmb3JtQ2xvY2tQT1NJWDo6bm93KCkgY29uc3QKK3sKKyAgICB0aW1ldmFsIHZh
bDsKKyAgICBnZXR0aW1lb2ZkYXkoJnZhbCwgMCk7CisgICAgcmV0dXJuIHZhbDsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1BsYXRmb3JtQ2xvY2tQT1NJWC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvUGxhdGZvcm1DbG9ja1BPU0lYLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTE5NzIyZTMyNjBmNjAyZDVmNzkyYzYyZjVjMmE5OTJkMzkwNzNjYwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1BsYXRmb3JtQ2xvY2tQ
T1NJWC5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBsYXRmb3JtQ2xvY2tQ
T1NJWF9oCisjZGVmaW5lIFBsYXRmb3JtQ2xvY2tQT1NJWF9oCisKKyNpbmNsdWRlICJDbG9jay5o
IgorI2luY2x1ZGUgPHRpbWUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQbGF0
Zm9ybUNsb2NrUE9TSVggOiBwdWJsaWMgQ2xvY2sgeworcHVibGljOgorICAgIFBsYXRmb3JtQ2xv
Y2tQT1NJWCgpOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShm
bG9hdCk7CisgICAgdmlydHVhbCBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0OworCisgICAgdmly
dHVhbCB2b2lkIHNldFBsYXlSYXRlKGZsb2F0KTsKKyAgICB2aXJ0dWFsIGZsb2F0IHBsYXlSYXRl
KCkgY29uc3QgeyByZXR1cm4gbV9yYXRlOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOworICAgIHZpcnR1YWwgYm9vbCBpc1J1bm5pbmcoKSBj
b25zdCB7IHJldHVybiBtX3J1bm5pbmc7IH0KKworICAgIHRpbWV2YWwgbm93KCkgY29uc3Q7CisK
KyAgICBib29sIG1fcnVubmluZzsKKyAgICBmbG9hdCBtX3JhdGU7CisgICAgZmxvYXQgbV9vZmZz
ZXQ7CisgICAgdGltZXZhbCBtX3N0YXJ0VGltZTsKKyAgICBtdXRhYmxlIHRpbWV2YWwgbV9sYXN0
VGltZTsKK307CisKK30KKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113397</attachid>
            <date>2011-11-02 16:34:38 -0700</date>
            <delta_ts>2011-11-02 16:35:11 -0700</delta_ts>
            <desc>Source/WebCore: Implement MediaController.</desc>
            <filename>bug-71341-20111102163437.patch</filename>
            <type>text/plain</type>
            <size>71821</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkxMTkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkYjkwZWY2NDI5OWI5ZjZi
NjI4Y2RmM2IzMzMwNDFmMjIzNDFhMzVhLi4zZGZjODhjMWU4ZDIzYzM4ZDBiNWE4ZTkxYWJlN2Qw
NDI3YWM4ZDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTU1IEBACiAyMDExLTExLTAyICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCisgICAgICAgIEltcGxlbWVudCBNZWRpYUNv
bnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTM0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWwKKyAgICAgICAgICAg
ICAgIG1lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbAorCisgICAgICAgIEFkZHMgc3VwcG9ydCBm
b3IgdGhlIE1lZGlhQ29udHJvbGxlciBET00gb2JqZWN0LCBhbmQgdGhlIG1lZGlhZ3JvdXAgYW5k
IG1lZGlhY29udHJvbGxlcgorICAgICAgICBIVE1MTWVkaWFFbGVtZW50IGF0dHJpYnV0ZXMuCisK
KyAgICAgICAgTWVkaWFDb250cm9sbGVyIGlzIGFuIERPTSBvYmplY3Qgd2hpY2ggc3luY2hyb25p
emVzIHBsYXliYWNrIG9mIG11bHRpcGxlIEhUTUxNZWRpYUVsZW1lbnRzLiBJdCBjYW4KKyAgICAg
ICAgZWl0aGVyIGJlIGNyZWF0ZWQgYnkgYSBwYWdlIHNjcmlwdCBhbmQgYXNzaWduZWQgdG8gYSBI
VE1MTWVkaWFFbGVtZW50IHVzaW5nIHRoZSBtZWRpYUNvbnRyb2xsZXIgcHJvcGVydHksCisgICAg
ICAgIG9yIGFsbCBIVE1MTWVkaWFFbGVtZW50cyB3aXRoIGlkZW50aWNhbCBtZWRpYWdyb3VwIGF0
dHJpYnV0ZXMgd2lsbCBoYXZlIGEgTWVkaWFDb250cm9sbGVyIGFzc2lnbmVkIAorICAgICAgICBh
dXRvbWF0aWNhbGx5LgorCisgICAgICAgIEFkZCBhbiBhYnN0cmFjdCBpbnRlcmZhY2UgaW1wbGVt
ZW50ZWQgYnkgYm90aCBNZWRpYUNvbnRyb2xsZXIgYW5kIEhUTUxNZWRpYUVsZW1lbnQuCisgICAg
ICAgICogaHRtbC9NZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2U6On5NZWRpYUNvbnRyb2xsZXJJbnRlcmZh
Y2UpOgorCisgICAgICAgIEFkZCB0aGUgTWVkaWFDb250cm9sbGVyIG9iamVjdCBhbmQgSURMLgor
ICAgICAgICAqIGh0bWwvTWVkaWFDb250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChtZWRp
YUdyb3VwVG9NZWRpYUNvbnRyb2xsZXJNYXApOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpt
ZWRpYUNvbnRyb2xsZXJGb3JNZWRpYUdyb3VwKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6
Y3JlYXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6TWVkaWFDb250cm9sbGVyKToKKyAg
ICAgICAgKE1lZGlhQ29udHJvbGxlcjo6fk1lZGlhQ29udHJvbGxlcik6CisgICAgICAgIChNZWRp
YUNvbnRyb2xsZXI6OmFkZE1lZGlhRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6
OnJlbW92ZU1lZGlhRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmNvbnRhaW5z
TWVkaWFFbGVtZW50KToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6YnVmZmVyZWQpOgorICAg
ICAgICAoTWVkaWFDb250cm9sbGVyOjpzZWVrYWJsZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6OnBsYXllZCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmR1cmF0aW9uKToKKyAgICAg
ICAgKE1lZGlhQ29udHJvbGxlcjo6Y3VycmVudFRpbWUpOgorICAgICAgICAoTWVkaWFDb250cm9s
bGVyOjpzZXRDdXJyZW50VGltZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnBsYXkpOgor
ICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpwYXVzZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6OnNldERlZmF1bHRQbGF5YmFja1JhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpz
ZXRQbGF5YmFja1JhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpzZXRWb2x1bWUpOgor
ICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpzZXRNdXRlZCk6CisgICAgICAgIChNZWRpYUNvbnRy
b2xsZXI6OnVwZGF0ZVJlYWR5U3RhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjp1cGRh
dGVQbGF5YmFja1N0YXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6dXBkYXRlTWVkaWFF
bGVtZW50cyk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnNjaGVkdWxlRXZlbnQpOgorICAg
ICAgICAoTWVkaWFDb250cm9sbGVyOjphc3luY0V2ZW50VGltZXJGaXJlZCk6CisgICAgICAgIChN
ZWRpYUNvbnRyb2xsZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoTWVkaWFD
b250cm9sbGVyOjpoYXNBdWRpbyk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6Omhhc1ZpZGVv
KToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6aGFzQ2xvc2VkQ2FwdGlvbnMpOgorICAgICAg
ICAoTWVkaWFDb250cm9sbGVyOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUpOgorICAgICAgICAo
TWVkaWFDb250cm9sbGVyOjpzdXBwb3J0c1NjYW5uaW5nKToKKyAgICAgICAgKE1lZGlhQ29udHJv
bGxlcjo6YmVnaW5TY3J1YmJpbmcpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjplbmRTY3J1
YmJpbmcpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpjYW5QbGF5KToKKyAgICAgICAgKE1l
ZGlhQ29udHJvbGxlcjo6aXNMaXZlU3RyZWFtKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6
aXNMb2FkaW5nKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6cmV0dXJuVG9SZWFsdGltZSk6
CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmlzQmxvY2tlZCk6CisgICAgICAgIChNZWRpYUNv
bnRyb2xsZXI6Omhhc0VuZGVkKToKKyAgICAgICAgKiBodG1sL01lZGlhQ29udHJvbGxlci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6bWVkaWFHcm91cCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnBhdXNlZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnRyb2xsZXI6OmRlZmF1bHRQbGF5YmFja1JhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1JhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sbGVyOjp2b2x1bWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
bGVyOjptdXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnJlYWR5U3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1N0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6c3VwcG9ydHNGdWxsc2NyZWVuKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6aXNGdWxsc2NyZWVuKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6Y2xvc2VkQ2FwdGlvbnNWaXNpYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6cmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb250cm9sbGVyOjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6dG9NZWRpYUNvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sbGVyOjpldmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sbGVyOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAqIGh0
bWwvTWVkaWFDb250cm9sbGVyLmlkbDogQWRkZWQuCisKKyAgICAgICAgQWRkIGNvbnZlbmllbmNl
IGZ1bmN0aW9ucyB0byBUaW1lUmFuZ2VzIHdoaWNoIGNhbiBjYWxjdWxhdGUgaW50ZXJzZWN0aW9u
cyBhbmQKKyAgICAgICAgdW5pb25zIGJldHdlZW4gVGltZVJhbmdlcyBvYmplY3RzLgorICAgICAg
ICAqIGh0bWwvVGltZVJhbmdlcy5jcHA6CisgICAgICAgIChUaW1lUmFuZ2VzOjpjb3B5KToKKyAg
ICAgICAgKFRpbWVSYW5nZXM6OmludmVydCk6CisgICAgICAgIChUaW1lUmFuZ2VzOjppbnRlcnNl
Y3RXaXRoKToKKyAgICAgICAgKFRpbWVSYW5nZXM6OnVuaW9uV2l0aCk6CisgICAgICAgICogaHRt
bC9UaW1lUmFuZ2VzLmg6CisKKyAgICAgICAgQWRkIE1lZGlhQ29udHJvbGxlckNvbnN0cnVjdG9y
IHRvIHRoZSBXaW5kb3cgb2JqZWN0LgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoKKwor
ICAgICAgICBBZGQgdGhlIHR3byBuZXcgYXR0cmlidXRlIG5hbWVzLCBtZWRpYWdyb3VwIGFuZCBt
ZWRpYWNvbnRyb2xsZXIuCisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisK
KyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBuZXcgYXR0cmlidXRlcywgYW5kIGFkZCBvdmVy
cmlkZGVuIGJlaGF2aW9yIHdoZW4gYSBtZWRpYSBlbGVtZW50CisgICAgICAgIGhhcyBhIGN1cnJl
bnQgbWVkaWEgY29udHJvbGxlcjoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRDdXJyZW50VGltZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5YmFja1JhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlSW50ZXJuYWwpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVBsYXlTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWthYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxheWluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplbmRlZFBsYXliYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6dXNlckNhbmNlbGxlZExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6bWVkaWFHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpzZXRNZWRpYUdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpzZXRNZWRpYUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6dXBkYXRlTWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmlzQmxvY2tlZE9uTWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmlzTG9h
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojppc0xpdmVTdHJlYW0p
OgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGw6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpKU0hUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhQ29udHJvbGxlcik6CisKKyAgICAgICAg
QWRkIGEgZnVuY3Rpb24gInNlZWthYmxlIiB3aGljaCByZXR1cm5zIGEgVGltZVJhbmdlcyBjb250
YWluaW5nIHRoZSBzZWVrYWJsZSB0aW1lIHJhbmdlcworICAgICAgICBpbiBhIG1lZGlhIGVsZW1l
bnQuICBCeSBkZWZhdWx0IHRoaXMgaXMgYSBzaW5nbGUgcmFuZ2Ugb2YgWzAsIG1heFRpbWVTZWVr
YWJsZV0uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNlZWthYmxlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
SW50ZXJmYWNlOjpzZWVrYWJsZSk6CisKKyAgICAgICAgU3VwcG9ydCBmdW5jdGlvbnMgdG8gY2Fz
dCBiZXR3ZWVuIE1lZGlhQ29udHJvbGxlciBhbmQgRXZlbnRUYXJnZXQuCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAg
ICAgICAgKiBkb20vRXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJn
ZXQ6OnRvTWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaDoKKwor
ICAgICAgICBCb2lsZXJwbGF0ZSB0byBzdXBwb3J0IGNyZWF0aW5nIHRoZSBkZXJpdmVkIHNvdXJj
ZXMgZm9yIE1lZGlhQ29udHJvbGxlciBhbmQgYWRkaW5nIG5ldyBzb3VyY2VzCisgICAgICAgIHRv
IHRoZSBwcm9qZWN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisyMDExLTExLTAyICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCiAgICAgICAgIEFkZCBDbG9jayBjbGFzcyBhbmQg
cGxhdGZvcm0tc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zLgogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEzNDEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKaW5kZXggYjRjMjA2NjIwZTZkMTU0Y2I0ZWMzZTJjZmU1YzgwMWU1ZDAzZDU0Yy4uNWQy
NjhiYThiODg4ZWMxNWU5ODliZWY2YjNiNmY4NjM3ZmI1YjRhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCkBAIC0yNzYsNiArMjc2LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgS2V5
Ym9hcmRFdmVudCBcCiAgICAgTG9jYXRpb24gXAogICAgIExvd1Bhc3MyRmlsdGVyTm9kZSBcCisg
ICAgTWVkaWFDb250cm9sbGVyIFwKICAgICBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUgXAog
ICAgIE1lZGlhRXJyb3IgXAogICAgIE1lZGlhTGlzdCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjE4ZDljMmZhZGQ3NzRjZGVl
ODlmOGIzOTFjZGI1YWI2MTJiYzVmYy4uNjYzMmQ4ZTc0M2E4OTEzNDY4ODEwNzllMzg1ZmE5YmNh
YTZmMTc5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtNTY5NSw2ICs1Njk1LDggQEAKIAkJQ0QwREJGRUUxNDIyNzY4NTAwMjgw
MjYzIC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMTUud2F2IGluIENvcHkgQXVkaW8g
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMERCRTBEMTQy
Mjc1OTUwMDI4MDI2MyAvKiBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzE1LndhdiAqLzsg
fTsKIAkJQ0QwREJGRUYxNDIyNzY4NTAwMjgwMjYzIC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9U
MzQ1X1AzMzAud2F2IGluIENvcHkgQXVkaW8gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEMERCRTBFMTQyMjc1OTUwMDI4MDI2MyAvKiBJUkNfQ29tcG9zaXRl
X0NfUjAxOTVfVDM0NV9QMzMwLndhdiAqLzsgfTsKIAkJQ0QwREJGRjAxNDIyNzY4NTAwMjgwMjYz
IC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzNDUud2F2IGluIENvcHkgQXVkaW8gUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMERCRTBGMTQyMjc1
OTUwMDI4MDI2MyAvKiBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzQ1LndhdiAqLzsgfTsK
KwkJQ0QyN0Y2RTUxNDU3Njg1QTAwNzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjdGNkUyMTQ1NzY3
NTgwMDc4MjA3RCAvKiBKU01lZGlhQ29udHJvbGxlci5jcHAgKi87IH07CisJCUNEMjdGNkU3MTQ1
NzcwRDMwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyN0Y2RTYxNDU3NzBEMzAwNzgyMDdEIC8qIE1l
ZGlhQ29udHJvbGxlci5jcHAgKi87IH07CiAJCUNEODIwMzBBMTM5NUFCNkEwMEY5NTZDNiAvKiBX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMwNjEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUNEODIwMzBCMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0Q4MjAzMDcxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXIubW0gKi87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1Xbm8tdW5kZWYi
OyB9OyB9OwogCQlDRDgyMDMwQzEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVu
SFVEV2luZG93Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0Q4MjAzMDgxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVl
bkhVRFdpbmRvd0NvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtNTcwMiwxMCArNTcwNCwxMyBAQAogCQlDRDgyMDMxMDEzOTVBQ0U3
MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMwRTEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2lu
ZG93QW5pbWF0aW9uLmggKi87IH07CiAJCUNEODIwMzExMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJX
aW5kb3dBbmltYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDgyMDMwRjEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLm1t
ICovOyB9OwogCQlDREVBNzYzMDE0NjA4QTUzMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUE3NjJF
MTQ2MDg0REUwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwICovOyB9OworCQlDREQ1MjVE
NzE0NUI2REQwMDA4RDIwNEQgLyogSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjY1Q0NDMTQ1QjZBRkUw
MEM0QzdBQSAvKiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwICovOyB9OwogCQlDREVBNzYz
NDE0NjBCNTZGMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja1BPU0lYLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUE3NjMyMTQ2MEFFMjkwMDhCMzFG
MSAvKiBQbGF0Zm9ybUNsb2NrUE9TSVguY3BwICovOyB9OwogCQlDREVBNzYzNTE0NjBCNzFBMDA4
QjMxRjEgLyogQ2xvY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RFQTc2MzMxNDYwQjQ2MjAwOEIzMUYxIC8qIENsb2NrLmNwcCAqLzsgfTsKIAkJ
Q0RFQTdDODQxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUE3QzgyMTI3NjIzMDQwMEI4
NDZERCAvKiBSZW5kZXJGdWxsU2NyZWVuLmggKi87IH07CiAJCUNERUE3Qzg1MTI3NjIzMDQwMEI4
NDZERCAvKiBSZW5kZXJGdWxsU2NyZWVuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENERUE3QzgzMTI3NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJGdWxs
U2NyZWVuLmNwcCAqLzsgfTsKKwkJQ0RGNjVDQzgxNDVCMUU3NTAwQzRDN0FBIC8qIE1lZGlhQ29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0QyN0Y2RTQxNDU3Njc4NzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNERjY1Q0NBMTQ1QjQ0ODgw
MEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjY1Q0M5MTQ1QjQzQTcwMEM0QzdBQSAvKiBN
ZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlDRTAyRjBDNDExRTgzQUREMDBDNjY4NEEgLyogU2NyaXB0Q29u
dHJvbGxlckJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENFMDJGMEMzMTFFODNBREQwMEM2Njg0QSAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMDU3RkE1
MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwNTdGQTMxMjIwNzMxMTAw
QTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgKi87IH07CiAJCUNFMDU3RkE2
MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDU3RkE0MTIyMDczMTEwMEE0
NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTI5NzgsNiArMTI5ODMsMTEgQEAKIAkJQ0Qw
REJFMEQxNDIyNzU5NTAwMjgwMjYzIC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMTUu
d2F2ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gYXVk
aW8ud2F2OyBuYW1lID0gSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMxNS53YXY7IHBhdGgg
PSBwbGF0Zm9ybS9hdWRpby9yZXNvdXJjZXMvSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMx
NS53YXY7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJQ0QwREJFMEUxNDIyNzU5NTAw
MjgwMjYzIC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMzAud2F2ICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gYXVkaW8ud2F2OyBuYW1lID0g
SVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMzMC53YXY7IHBhdGggPSBwbGF0Zm9ybS9hdWRp
by9yZXNvdXJjZXMvSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMzMC53YXY7IHNvdXJjZVRy
ZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJQ0QwREJFMEYxNDIyNzU5NTAwMjgwMjYzIC8qIElSQ19D
b21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzNDUud2F2ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gYXVkaW8ud2F2OyBuYW1lID0gSVJDX0NvbXBvc2l0ZV9D
X1IwMTk1X1QzNDVfUDM0NS53YXY7IHBhdGggPSBwbGF0Zm9ybS9hdWRpby9yZXNvdXJjZXMvSVJD
X0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDM0NS53YXY7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9P
VDsgfTsKKwkJQ0QyN0Y2RTAxNDU3NUMxQjAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gTWVkaWFDb250cm9sbGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0QyN0Y2RTIxNDU3Njc1ODAwNzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFDb250cm9sbGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QyN0Y2RTMxNDU3Njc1ODAwNzgyMDdEIC8qIEpT
TWVkaWFDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVk
aWFDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMjdGNkU0MTQ1
NzY3ODcwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWVkaWFDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEMjdGNkU2MTQ1NzcwRDMwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb250cm9sbGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q0RTBBRkExMUY3QkMyNzAwOUQzODExIC8qIGZ1
bGxzY3JlZW4uY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBmdWxsc2NyZWVuLmNzczsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4MjAzMDYxMzk1QUI2QTAwRjk1NkM2IC8q
IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRDgyMDMwNzEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMjk5NCw2ICsxMzAwNCw4IEBACiAJCUNERUE3NjMzMTQ2MEI0NjIwMDhCMzFGMSAv
KiBDbG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbG9jay5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERUE3QzgyMTI3NjIzMDQwMEI4NDZE
RCAvKiBSZW5kZXJGdWxsU2NyZWVuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbmRlckZ1bGxTY3JlZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTdD
ODMxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyRnVsbFNjcmVlbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNERjY1Q0M5MTQ1QjQzQTcwMEM0QzdBQSAvKiBNZWRpYUNvbnRy
b2xsZXJJbnRlcmZhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFD
b250cm9sbGVySW50ZXJmYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERjY1
Q0NDMTQ1QjZBRkUwMEM0QzdBQSAvKiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9t
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UwMkYwQzMxMUU4M0FERDAwQzY2
ODRBIC8qIFNjcmlwdENvbnRyb2xsZXJCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNjcmlwdENvbnRyb2xsZXJCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNFMDU3RkEzMTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UwNTdGQTQxMjIw
NzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MzMyLDYgKzE3MzQ0LDEwIEBACiAJCQkJRTQ0NjEzQTAw
Q0Q2MzMxMDAwRkFEQTc1IC8qIFZvaWRDYWxsYmFjay5pZGwgKi8sCiAJCQkJRjU1QjNEQUIxMjUx
RjEyRDAwM0VGMjY5IC8qIFdlZWtJbnB1dFR5cGUuY3BwICovLAogCQkJCUY1NUIzREFDMTI1MUYx
MkQwMDNFRjI2OSAvKiBXZWVrSW5wdXRUeXBlLmggKi8sCisJCQkJQ0QyN0Y2RTAxNDU3NUMxQjAw
NzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5pZGwgKi8sCisJCQkJQ0QyN0Y2RTQxNDU3Njc4NzAw
NzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5oICovLAorCQkJCUNEMjdGNkU2MTQ1NzcwRDMwMDc4
MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuY3BwICovLAorCQkJCUNERjY1Q0M5MTQ1QjQzQTcwMEM0
QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0g
aHRtbDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNzU2NSw2ICsxNzU4MSw4IEBA
CiAJCUE4M0I3OTA4MENDQUZGMkIwMDBCMDgyNSAvKiBIVE1MICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDRDI3RjZFMjE0NTc2NzU4MDA3ODIwN0QgLyog
SlNNZWRpYUNvbnRyb2xsZXIuY3BwICovLAorCQkJCUNEMjdGNkUzMTQ1NzY3NTgwMDc4MjA3RCAv
KiBKU01lZGlhQ29udHJvbGxlci5oICovLAogCQkJCTQ5RUVDRUYyMTA1MDcwQzQwMDA5OUZBQiAv
KiBKU0FycmF5QnVmZmVyLmNwcCAqLywKIAkJCQk0OUVFQ0VGMzEwNTA3MEM0MDAwOTlGQUIgLyog
SlNBcnJheUJ1ZmZlci5oICovLAogCQkJCTQ5RUVDRjE5MTA1MDcyRjMwMDA5OUZBQiAvKiBKU0Fy
cmF5QnVmZmVyVmlldy5jcHAgKi8sCkBAIC0xOTU3Niw2ICsxOTU5NCw3IEBACiAJCQkJQkNDNDM4
NzcwRTg4NkNDNzAwNTMzREQ1IC8qIEpTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJ
CQkJRTFBRDE0MjIxMjk1RUE3RjAwQUNBOTg5IC8qIEpTSFRNTElucHV0RWxlbWVudEN1c3RvbS5o
ICovLAogCQkJCUUxQUQxMzlBMTI5NUQ5MjYwMEFDQTk4OSAvKiBKU0hUTUxMaW5rRWxlbWVudEN1
c3RvbS5jcHAgKi8sCisJCQkJQ0RGNjVDQ0MxNDVCNkFGRTAwQzRDN0FBIC8qIEpTSFRNTE1lZGlh
RWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJQkMzMDVDQTMwQzA3ODFCQjAwQ0QyMEYwIC8qIEpT
SFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUUxQUQxNDI0MTI5NUVBOTUwMEFD
QTk4OSAvKiBKU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmggKi8sCiAJCQkJNDQ4QUQyN0EwQTQ4
MTM3OTAwMjNEMTc5IC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCAqLywKQEAg
LTI0NTYwLDYgKzI0NTc5LDggQEAKIAkJCQlGRDYyRjUyRTE0NTg5OEQ4MDA5NEIwRUQgLyogQXVk
aW9Tb3VyY2VQcm92aWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ4RkVCREQxNDNF
M0VGNzAwNzI1MDJCIC8qIENTU0Nyb3NzZmFkZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkz
MTY5Mzc5QzE0NjA5QzZDMDBDMDEzNjIgLyogRHJhZ1Nlc3Npb24uaCBpbiBIZWFkZXJzICovLAor
CQkJCUNERjY1Q0M4MTQ1QjFFNzUwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUNERjY1Q0NBMTQ1QjQ0ODgwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXJJ
bnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjc0MDcsNiArMjc0MjgsOSBAQAogCQkJCUEz
QkI1OUYzMTQ1N0E0MEQwMEFDNTZGRSAvKiBEb2N1bWVudEV2ZW50UXVldWUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMkQ4RkVCREMxNDNFM0VGNzAwNzI1MDJCIC8qIENTU0Nyb3NzZmFkZVZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERUE3NjMwMTQ2MDhBNTMwMDhCMzFGMSAvKiBQbGF0
Zm9ybUNsb2NrQ0EuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0QyN0Y2RTUxNDU3Njg1QTAwNzgy
MDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEMjdGNkU3
MTQ1NzcwRDMwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQ0RENTI1RDcxNDVCNkREMDAwOEQyMDREIC8qIEpTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDREVBNzYzNDE0NjBCNTZGMDA4QjMxRjEgLyogUGxhdGZv
cm1DbG9ja1BPU0lYLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERUE3NjM1MTQ2MEI3MUEwMDhC
MzFGMSAvKiBDbG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yM2NhYTRkOTExNGZiMGJkNmU3OTNlYWUyZjliYTBjMzc0N2YyMmY5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MTWVkaWFFbGVtZW50
Q3VzdG9tLmNwcApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTSFRNTE1l
ZGlhRWxlbWVudC5oIgorCisjaW5jbHVkZSAiSlNNZWRpYUNvbnRyb2xsZXIuaCIKKworI2lmIEVO
QUJMRShWSURFTykKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsK
Kwordm9pZCBKU0hUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhQ29udHJvbGxlcihFeGVjU3RhdGUq
LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIEhUTUxNZWRpYUVsZW1lbnQqIGltcCA9IHN0YXRpY19j
YXN0PEhUTUxNZWRpYUVsZW1lbnQqPihpbXBsKCkpOworICAgIGltcC0+c2V0TWVkaWFDb250cm9s
bGVyKHRvTWVkaWFDb250cm9sbGVyKHZhbHVlKSk7Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXQuaAppbmRleCBjNmYxZjNkNDQzYjg1YjZmNjQyMGNlZWM5NGJlZmIyMjc4NjJk
NDQ2Li5iYWYwZWZjODlkNGFkZWFhYjMxYzcyMzMwZjhkMTVkZTE5ZDk4OGUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXQuaApAQCAtNTUsNiArNTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgY2xhc3MgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q7CiAgICAgY2xhc3MgSmF2YVNjcmlwdEF1
ZGlvTm9kZTsKICAgICBjbGFzcyBMb2NhbE1lZGlhU3RyZWFtOworICAgIGNsYXNzIE1lZGlhQ29u
dHJvbGxlcjsKICAgICBjbGFzcyBNZWRpYVN0cmVhbTsKICAgICBjbGFzcyBNZXNzYWdlUG9ydDsK
ICAgICBjbGFzcyBOb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4K
aW5kZXggNmJkYjJlMjFjYTk2YjNlMTBkM2JlMWM3MWVmNzMwZDI3ZjAwZDkxZC4uOTJmZTZiMjM2
M2FjY2I3YTNmNjNiYWUyMDFlYmRiZjBiYTc1MDU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXRGYWN0b3J5LmluCkBAIC0xMyw2ICsxMyw3IEBAIElEQlRyYW5zYWN0aW9uIGNvbmRp
dGlvbmFsPUlOREVYRURfREFUQUJBU0UKIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0IGNvbmRpdGlv
bmFsPUlOREVYRURfREFUQUJBU0UKIEphdmFTY3JpcHRBdWRpb05vZGUgY29uZGl0aW9uYWw9V0VC
X0FVRElPCiBMb2NhbE1lZGlhU3RyZWFtIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQorTWVkaWFD
b250cm9sbGVyCiBNZWRpYVN0cmVhbSBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIE1lc3NhZ2VQ
b3J0CiBOb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVO
YW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCmluZGV4
IGYxZTM1NGI2MzFmNDliYTNhYzEwMWU1NTEzZDI3NWFjNWQyZDA5ODIuLmFlNWZiNzFjZWVlODY0
MDk4MzZmZTJkNTAxZWMzZmE5OTBiYTM3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dHJpYnV0ZU5hbWVzLmluCkBAIC0xNDgsNiArMTQ4LDcgQEAgbWF4CiBtYXhsZW5ndGgKIG1heXNj
cmlwdAogbWVkaWEKK21lZGlhZ3JvdXAKIG1ldGhvZAogbWluCiBtdWx0aXBsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggYzkwNjVmNjkxYTljMGNhZTllNmVm
NjQzMmI4MTdjZmMyYmQ3OTcwZi4uNWMyOWM2YjkxNDBhOGFkMjZhZDZmOWU5ZjJlYTg1ZmJhZmVl
MTRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01Miw2
ICs1Miw3IEBACiAjaW5jbHVkZSAiSFRNTFNvdXJjZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
VmlkZW9FbGVtZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lZGlhQ29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIk1lZGlhQ29udHJvbHMuaCIKICNpbmNsdWRlICJNZWRpYURv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFFcnJvci5oIgpAQCAtMjI4LDYgKzIyOSw5IEBAIEhU
TUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV90ZXh0VHJhY2tzLnNpemUoKTsgKytpKQogICAgICAgICBtX3RleHRUcmFja3Nb
aV0tPnNldENsaWVudCgwKTsKICNlbmRpZgorCisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyKQor
ICAgICAgICBtX21lZGlhQ29udHJvbGxlci0+cmVtb3ZlTWVkaWFFbGVtZW50KHRoaXMpOwogfQog
CiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKQEAg
LTI5NCw3ICsyOTgsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmli
dXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgaWYgKCFhdXRvcGxheSgpICYmIG1fcGxheWVy
KQogICAgICAgICAgICAgbV9wbGF5ZXItPnNldFByZWxvYWQobV9wcmVsb2FkKTsKIAotICAgIH0g
ZWxzZSBpZiAoYXR0ck5hbWUgPT0gb25hYm9ydEF0dHIpCisgICAgfSBlbHNlIGlmIChhdHRyTmFt
ZSA9PSBtZWRpYWdyb3VwQXR0cikKKyAgICAgICAgc2V0TWVkaWFHcm91cChhdHRyLT52YWx1ZSgp
KTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBvbmFib3J0QXR0cikKICAgICAgICAgc2V0QXR0
cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYWJvcnRFdmVudCwgY3JlYXRlQXR0cmli
dXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0g
b25iZWZvcmVsb2FkQXR0cikKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkuYmVmb3JlbG9hZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRo
aXMsIGF0dHIpKTsKQEAgLTU4NCwxMCArNTkwLDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
cHJlcGFyZUZvckxvYWQoKQogICAgICAgICBtX3NlZWtpbmcgPSBmYWxzZTsKICAgICAgICAgaW52
YWxpZGF0ZUNhY2hlZFRpbWUoKTsKICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCku
ZW1wdGllZEV2ZW50KTsKKyAgICAgICAgdXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CiAgICAgfQog
CiAgICAgLy8gNSAtIFNldCB0aGUgcGxheWJhY2tSYXRlIGF0dHJpYnV0ZSB0byB0aGUgdmFsdWUg
b2YgdGhlIGRlZmF1bHRQbGF5YmFja1JhdGUgYXR0cmlidXRlLgotICAgIHNldFBsYXliYWNrUmF0
ZShkZWZhdWx0UGxheWJhY2tSYXRlKCkpOworICAgIHNldFBsYXliYWNrUmF0ZShtX21lZGlhQ29u
dHJvbGxlciA/IG1fbWVkaWFDb250cm9sbGVyLT5kZWZhdWx0UGxheWJhY2tSYXRlKCkgOiBkZWZh
dWx0UGxheWJhY2tSYXRlKCkpOwogCiAgICAgLy8gNiAtIFNldCB0aGUgZXJyb3IgYXR0cmlidXRl
IHRvIG51bGwgYW5kIHRoZSBhdXRvcGxheWluZyBmbGFnIHRvIHRydWUuCiAgICAgbV9lcnJvciA9
IDA7CkBAIC0xMjI0LDYgKzEyMzEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFJlYWR5
U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgc3RhdGUpCiAgICAgfQogCiAgICAgdXBkYXRl
UGxheVN0YXRlKCk7CisgICAgdXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CiB9CiAKICNpZiBFTkFC
TEUoTUVESUFfU09VUkNFKQpAQCAtMTUyMyw2ICsxNTMxLDEwIEBAIGZsb2F0IEhUTUxNZWRpYUVs
ZW1lbnQ6OmN1cnJlbnRUaW1lKCkgY29uc3QKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRD
dXJyZW50VGltZShmbG9hdCB0aW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBpZiAobV9t
ZWRpYUNvbnRyb2xsZXIpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KICAgICBzZWVrKHRpbWUsIGVjKTsKIH0KIApAQCAtMTU3Myw4ICsx
NTg1LDE2IEBAIGZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXliYWNrUmF0ZSgpIGNvbnN0CiAK
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlKGZsb2F0IHJhdGUpCiB7Ci0g
ICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlKCVmKSIsIHJh
dGUpOworICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
c2V0UGxheWJhY2tSYXRlSW50ZXJuYWwocmF0ZSk7Cit9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6c2V0UGxheWJhY2tSYXRlSW50ZXJuYWwoZmxvYXQgcmF0ZSkKK3sKKyAgICBMT0coTWVkaWEs
ICJIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5YmFja1JhdGVJbnRlcm5hbCglZikiLCByYXRlKTsK
KyAgICAKICAgICBpZiAobV9wbGF5YmFja1JhdGUgIT0gcmF0ZSkgewogICAgICAgICBtX3BsYXli
YWNrUmF0ZSA9IHJhdGU7CiAgICAgICAgIGludmFsaWRhdGVDYWNoZWRUaW1lKCk7CkBAIC0xNjkw
LDYgKzE3MTAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXlJbnRlcm5hbCgpCiAgICAg
bV9hdXRvcGxheWluZyA9IGZhbHNlOwogCiAgICAgdXBkYXRlUGxheVN0YXRlKCk7CisgICAgdXBk
YXRlTWVkaWFDb250cm9sbGVyKCk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGF1c2Uo
KQpAQCAtMTg4MSw3ICsxOTAyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0b2dnbGVQbGF5
U3RhdGUoKQogICAgIC8vIFdlIGNhbiBzYWZlbHkgY2FsbCB0aGUgaW50ZXJuYWwgcGxheS9wYXVz
ZSBtZXRob2RzLCB3aGljaCBkb24ndCBjaGVjayByZXN0cmljdGlvbnMsIGJlY2F1c2UKICAgICAv
LyB0aGlzIG1ldGhvZCBpcyBvbmx5IGNhbGxlZCBmcm9tIHRoZSBidWlsdC1pbiBtZWRpYSBjb250
cm9sbGVyCiAgICAgaWYgKGNhblBsYXkoKSkgewotICAgICAgICBzZXRQbGF5YmFja1JhdGUoZGVm
YXVsdFBsYXliYWNrUmF0ZSgpKTsKKyAgICAgICAgc2V0UGxheWJhY2tSYXRlKG1fbWVkaWFDb250
cm9sbGVyID8gbV9tZWRpYUNvbnRyb2xsZXItPmRlZmF1bHRQbGF5YmFja1JhdGUoKSA6IGRlZmF1
bHRQbGF5YmFja1JhdGUoKSk7CiAgICAgICAgIHBsYXlJbnRlcm5hbCgpOwogICAgIH0gZWxzZSAK
ICAgICAgICAgcGF1c2VJbnRlcm5hbCgpOwpAQCAtMjIzMCw3ICsyMjUxLDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVDaGFuZ2VkKE1lZGlhUGxheWVyKikKICAgICBm
bG9hdCBub3cgPSBjdXJyZW50VGltZSgpOwogICAgIGZsb2F0IGR1ciA9IGR1cmF0aW9uKCk7CiAg
ICAgaWYgKCFpc25hbihkdXIpICYmIGR1ciAmJiBub3cgPj0gZHVyKSB7Ci0gICAgICAgIGlmIChs
b29wKCkpIHsKKyAgICAgICAgaWYgKGxvb3AoKSAmJiAhbV9tZWRpYUNvbnRyb2xsZXIpIHsKICAg
ICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZEV4Y2VwdGlvbjsKICAgICAgICAgICAgIG1f
c2VudEVuZEV2ZW50ID0gZmFsc2U7CiAgICAgICAgICAgICBzZWVrKDAsIGlnbm9yZWRFeGNlcHRp
b24pOwpAQCAtMjI0Miw2ICsyMjYzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllclRpbWVDaGFuZ2VkKE1lZGlhUGxheWVyKikKICAgICAgICAgICAgIGlmICghbV9zZW50RW5k
RXZlbnQpIHsKICAgICAgICAgICAgICAgICBtX3NlbnRFbmRFdmVudCA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkuZW5kZWRFdmVudCk7CisgICAgICAg
ICAgICAgICAgdXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CkBAIC0yNDI2LDEwICsyNDQ4LDcgQEAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBI
VE1MTWVkaWFFbGVtZW50OjpwbGF5ZWQoKQogCiBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IEhUTUxN
ZWRpYUVsZW1lbnQ6OnNlZWthYmxlKCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRSByZWFsIHJhbmdl
cyBzdXBwb3J0Ci0gICAgaWYgKCFtYXhUaW1lU2Vla2FibGUoKSkKLSAgICAgICAgcmV0dXJuIFRp
bWVSYW5nZXM6OmNyZWF0ZSgpOwotICAgIHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUobWluVGlt
ZVNlZWthYmxlKCksIG1heFRpbWVTZWVrYWJsZSgpKTsKKyAgICByZXR1cm4gbV9wbGF5ZXIgPyBt
X3BsYXllci0+c2Vla2FibGUoKSA6IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOwogfQogCiBib29sIEhU
TUxNZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxheWluZygpIGNvbnN0CkBAIC0yNDM4LDcgKzI0
NTcsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxheWluZygpIGNvbnN0
CiAgICAgLy8gd2hlbiBpdCByYW4gb3V0IG9mIGJ1ZmZlcmVkIGRhdGEuIEEgbW92aWUgaXMgdGhp
cyBzdGF0ZSBpcyAicG90ZW50aWFsbHkgcGxheWluZyIsIG1vZHVsbyB0aGUKICAgICAvLyBjaGVj
a3MgaW4gY291bGRQbGF5SWZFbm91Z2hEYXRhKCkuCiAgICAgYm9vbCBwYXVzZWRUb0J1ZmZlciA9
IG1fcmVhZHlTdGF0ZU1heGltdW0gPj0gSEFWRV9GVVRVUkVfREFUQSAmJiBtX3JlYWR5U3RhdGUg
PCBIQVZFX0ZVVFVSRV9EQVRBOwotICAgIHJldHVybiAocGF1c2VkVG9CdWZmZXIgfHwgbV9yZWFk
eVN0YXRlID49IEhBVkVfRlVUVVJFX0RBVEEpICYmIGNvdWxkUGxheUlmRW5vdWdoRGF0YSgpOwor
ICAgIHJldHVybiAocGF1c2VkVG9CdWZmZXIgfHwgbV9yZWFkeVN0YXRlID49IEhBVkVfRlVUVVJF
X0RBVEEpICYmIGNvdWxkUGxheUlmRW5vdWdoRGF0YSgpICYmICFpc0Jsb2NrZWRPbk1lZGlhQ29u
dHJvbGxlcigpOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNvdWxkUGxheUlmRW5vdWdo
RGF0YSgpIGNvbnN0CkBAIC0yNDYzLDcgKzI0ODIsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6
OmVuZGVkUGxheWJhY2soKSBjb25zdAogICAgIC8vIG9mIHBsYXliYWNrIGlzIGZvcndhcmRzIGFu
ZCB0aGUgbWVkaWEgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgbG9vcCBhdHRyaWJ1dGUgc3BlY2lm
aWVkLAogICAgIGZsb2F0IG5vdyA9IGN1cnJlbnRUaW1lKCk7CiAgICAgaWYgKG1fcGxheWJhY2tS
YXRlID4gMCkKLSAgICAgICAgcmV0dXJuIGR1ciA+IDAgJiYgbm93ID49IGR1ciAmJiAhbG9vcCgp
OworICAgICAgICByZXR1cm4gZHVyID4gMCAmJiBub3cgPj0gZHVyICYmICghbG9vcCgpIHx8IG1f
bWVkaWFDb250cm9sbGVyKTsKIAogICAgIC8vIG9yIHRoZSBjdXJyZW50IHBsYXliYWNrIHBvc2l0
aW9uIGlzIHRoZSBlYXJsaWVzdCBwb3NzaWJsZSBwb3NpdGlvbiBhbmQgdGhlIGRpcmVjdGlvbiAK
ICAgICAvLyBvZiBwbGF5YmFjayBpcyBiYWNrd2FyZHMKQEAgLTI1MDksOCArMjUyOCwxNCBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVZvbHVtZSgpCiAgICAgaWYgKCFwcm9jZXNzaW5n
TWVkaWFQbGF5ZXJDYWxsYmFjaygpKSB7CiAgICAgICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgp
LT5wYWdlKCk7CiAgICAgICAgIGZsb2F0IHZvbHVtZU11bHRpcGxpZXIgPSBwYWdlID8gcGFnZS0+
bWVkaWFWb2x1bWUoKSA6IDE7Ci0gICAgCi0gICAgICAgIG1fcGxheWVyLT5zZXRNdXRlZChtX211
dGVkKTsKKyAgICAgICAgYm9vbCBzaG91bGRNdXRlID0gbV9tdXRlZDsKKworICAgICAgICBpZiAo
bV9tZWRpYUNvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIHZvbHVtZU11bHRpcGxpZXIgKj0gbV9t
ZWRpYUNvbnRyb2xsZXItPnZvbHVtZSgpOworICAgICAgICAgICAgc2hvdWxkTXV0ZSA9IG1fbWVk
aWFDb250cm9sbGVyLT5tdXRlZCgpOworICAgICAgICB9CisKKyAgICAgICAgbV9wbGF5ZXItPnNl
dE11dGVkKHNob3VsZE11dGUpOwogICAgICAgICBtX3BsYXllci0+c2V0Vm9sdW1lKG1fdm9sdW1l
ICogdm9sdW1lTXVsdGlwbGllcik7CiAgICAgfQogCkBAIC0yNTc3LDExICsyNjAyLDEzIEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlUGxheVN0YXRlKCkKICAgICAgICAgaWYgKGhhc01l
ZGlhQ29udHJvbHMoKSkKICAgICAgICAgICAgIG1lZGlhQ29udHJvbHMoKS0+cGxheWJhY2tTdG9w
cGVkKCk7CiAgICAgfQotICAgIAorCisgICAgdXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CisKICAg
ICBpZiAocmVuZGVyZXIoKSkKICAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlRnJvbUVsZW1lbnQo
KTsKIH0KLSAgICAKKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRQYXVzZWRJbnRlcm5hbChi
b29sIGIpCiB7CiAgICAgbV9wYXVzZWRJbnRlcm5hbCA9IGI7CkBAIC0yNjQxLDYgKzI2NjgsNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJDYW5jZWxsZWRMb2FkKCkKIAogICAgIC8vIFJl
c2V0IG1fcmVhZHlTdGF0ZSBzaW5jZSBtX3BsYXllciBpcyBnb25lLgogICAgIG1fcmVhZHlTdGF0
ZSA9IEhBVkVfTk9USElORzsKKyAgICB1cGRhdGVNZWRpYUNvbnRyb2xsZXIoKTsKIH0KIAogYm9v
bCBIVE1MTWVkaWFFbGVtZW50OjpjYW5TdXNwZW5kKCkgY29uc3QKQEAgLTMxMzMsNiArMzE2MSw1
OCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldEl0ZW1WYWx1ZVRleHQoY29uc3QgU3RyaW5n
JiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB9CiAjZW5kaWYKIAorY29uc3QgU3RyaW5nJiBI
VE1MTWVkaWFFbGVtZW50OjptZWRpYUdyb3VwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRp
YUNvbnRyb2xsZXIgPyBtX21lZGlhQ29udHJvbGxlci0+bWVkaWFHcm91cCgpIDogZW1wdHlTdHJp
bmcoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUdyb3VwKGNvbnN0IFN0
cmluZyYgZ3JvdXApCit7CisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyICYmIG1fbWVkaWFDb250
cm9sbGVyLT5tZWRpYUdyb3VwKCkgPT0gZ3JvdXApCisgICAgICAgIHJldHVybjsKKworICAgIHNl
dE1lZGlhQ29udHJvbGxlcihNZWRpYUNvbnRyb2xsZXI6Om1lZGlhQ29udHJvbGxlckZvck1lZGlh
R3JvdXAoZ3JvdXApKTsKK30KKworTWVkaWFDb250cm9sbGVyKiBIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYUNvbnRyb2xsZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX21lZGlhQ29udHJvbGxlci5n
ZXQoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNvbnRyb2xsZXIoUGFz
c1JlZlB0cjxNZWRpYUNvbnRyb2xsZXI+IGNvbnRyb2xsZXIpCit7CisgICAgaWYgKG1fbWVkaWFD
b250cm9sbGVyKQorICAgICAgICBtX21lZGlhQ29udHJvbGxlci0+cmVtb3ZlTWVkaWFFbGVtZW50
KHRoaXMpOworCisgICAgbV9tZWRpYUNvbnRyb2xsZXIgPSBjb250cm9sbGVyOworCisgICAgaWYg
KG1fbWVkaWFDb250cm9sbGVyKQorICAgICAgICBtX21lZGlhQ29udHJvbGxlci0+YWRkTWVkaWFF
bGVtZW50KHRoaXMpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZU1lZGlhQ29u
dHJvbGxlcigpCit7CisgICAgaWYgKCFtX21lZGlhQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJu
OworICAgIG1fbWVkaWFDb250cm9sbGVyLT51cGRhdGVSZWFkeVN0YXRlKCk7CisgICAgbV9tZWRp
YUNvbnRyb2xsZXItPnVwZGF0ZVBsYXliYWNrU3RhdGUoKTsKK30KKworYm9vbCBIVE1MTWVkaWFF
bGVtZW50Ojppc0Jsb2NrZWRPbk1lZGlhQ29udHJvbGxlcigpIGNvbnN0Cit7CisgICAgaWYgKCFt
X21lZGlhQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fbWVk
aWFDb250cm9sbGVyLT5pc0Jsb2NrZWQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBm
bG9hdCBjdXJyZW50VGltZSA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOworICAg
IGlmIChjdXJyZW50VGltZSA8IHN0YXJ0VGltZSgpIHx8IGN1cnJlbnRUaW1lID4gc3RhcnRUaW1l
KCkgKyBkdXJhdGlvbigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxz
ZTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
aW5kZXggMGQyZjlmYzQ5ZTEwMGNiNTE3YmVmMGQxNTBhYzRmNzdhNTc1ZTllYy4uYWRjNzk4N2Zi
N2FiMGUzYmJhNmM2MzQwYTEwZDQ2NmM4YjY3Y2ZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJIVE1MRWxlbWVudC5o
IgogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIk1lZGlhQ2FuU3RhcnRM
aXN0ZW5lci5oIgorI2luY2x1ZGUgIk1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIgogI2luY2x1
ZGUgIk1lZGlhUGxheWVyLmgiCiAKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykK
QEAgLTUwLDYgKzUxLDcgQEAgY2xhc3MgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOwogY2xh
c3MgRXZlbnQ7CiBjbGFzcyBIVE1MU291cmNlRWxlbWVudDsKIGNsYXNzIEhUTUxUcmFja0VsZW1l
bnQ7CitjbGFzcyBNZWRpYUNvbnRyb2xsZXI7CiBjbGFzcyBNZWRpYUNvbnRyb2xzOwogY2xhc3Mg
TWVkaWFFcnJvcjsKIGNsYXNzIEtVUkw7CkBAIC02Myw3ICs2NSw3IEBAIGNsYXNzIFdpZGdldDsK
IC8vIEJ1dCBpdCBjYW4ndCBiZSB1bnRpbCB0aGUgQ2hyb21pdW0gV2ViTWVkaWFQbGF5ZXJDbGll
bnRJbXBsIGNsYXNzIGlzIGZpeGVkIHNvIGl0CiAvLyBubyBsb25nZXIgZGVwZW5kcyBvbiB0eXBl
Y2FzdGluZyBhIE1lZGlhUGxheWVyQ2xpZW50IHRvIGFuIEhUTUxNZWRpYUVsZW1lbnQuCiAKLWNs
YXNzIEhUTUxNZWRpYUVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQsIHB1YmxpYyBNZWRpYVBs
YXllckNsaWVudCwgcHJpdmF0ZSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIsIHB1YmxpYyBBY3RpdmVE
T01PYmplY3QKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQsIHB1
YmxpYyBNZWRpYVBsYXllckNsaWVudCwgcHJpdmF0ZSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIsIHB1
YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UKICNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgLCBwcml2YXRlIFRleHRUcmFja0NsaWVudAogI2Vu
ZGlmCkBAIC0xMTQsNyArMTE2LDYgQEAgcHVibGljOgogICAgIFN0cmluZyBjYW5QbGF5VHlwZShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdDsKIAogLy8gcmVhZHkgc3RhdGUKLSAgICBlbnVt
IFJlYWR5U3RhdGUgeyBIQVZFX05PVEhJTkcsIEhBVkVfTUVUQURBVEEsIEhBVkVfQ1VSUkVOVF9E
QVRBLCBIQVZFX0ZVVFVSRV9EQVRBLCBIQVZFX0VOT1VHSF9EQVRBIH07CiAgICAgUmVhZHlTdGF0
ZSByZWFkeVN0YXRlKCkgY29uc3Q7CiAgICAgYm9vbCBzZWVraW5nKCkgY29uc3Q7CiAKQEAgLTIz
MCw2ICsyMzEsMTIgQEAgcHVibGljOgogICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291
cmNlUHJvdmlkZXIoKTsKICNlbmRpZgogCisgICAgY29uc3QgU3RyaW5nJiBtZWRpYUdyb3VwKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRNZWRpYUdyb3VwKGNvbnN0IFN0cmluZyYpOworCisgICAgTWVk
aWFDb250cm9sbGVyKiBtZWRpYUNvbnRyb2xsZXIoKSBjb25zdDsKKyAgICB2b2lkIHNldE1lZGlh
Q29udHJvbGxlcihQYXNzUmVmUHRyPE1lZGlhQ29udHJvbGxlcj4pOworCiBwcm90ZWN0ZWQ6CiAg
ICAgSFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAg
ICB2aXJ0dWFsIH5IVE1MTWVkaWFFbGVtZW50KCk7CkBAIC0zOTQsNiArNDAxLDggQEAgcHJpdmF0
ZToKICAgICAvLyBQYXVzZXMgcGxheWJhY2sgd2l0aG91dCBjaGFuZ2luZyBhbnkgc3RhdGVzIG9y
IGdlbmVyYXRpbmcgZXZlbnRzCiAgICAgdm9pZCBzZXRQYXVzZWRJbnRlcm5hbChib29sKTsKIAor
ICAgIHZvaWQgc2V0UGxheWJhY2tSYXRlSW50ZXJuYWwoZmxvYXQpOworCiAgICAgdmlydHVhbCB2
b2lkIG1lZGlhQ2FuU3RhcnQoKTsKIAogICAgIHZvaWQgc2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQo
Ym9vbCk7CkBAIC00MTIsNiArNDIxLDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNl
dEl0ZW1WYWx1ZVRleHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogI2VuZGlmCiAK
KyAgICB2b2lkIHVwZGF0ZU1lZGlhQ29udHJvbGxlcigpOworICAgIGJvb2wgaXNCbG9ja2VkT25N
ZWRpYUNvbnRyb2xsZXIoKSBjb25zdDsKKyAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IHsgcmV0
dXJuICFtX2N1cnJlbnRTcmMuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBpc0xpdmVTdHJlYW0oKSBj
b25zdCB7IHJldHVybiBtb3ZpZUxvYWRUeXBlKCkgPT0gTWVkaWFQbGF5ZXI6OkxpdmVTdHJlYW07
IH0KKwogICAgIFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+IG1fbG9hZFRpbWVyOwogICAgIFRpbWVy
PEhUTUxNZWRpYUVsZW1lbnQ+IG1fYXN5bmNFdmVudFRpbWVyOwogICAgIFRpbWVyPEhUTUxNZWRp
YUVsZW1lbnQ+IG1fcHJvZ3Jlc3NFdmVudFRpbWVyOwpAQCAtNTE2LDYgKzUzMCw5IEBAIHByaXZh
dGU6CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNr
PiA+IG1fdGV4dFRyYWNrczsKICNlbmRpZgorCisgICAgZnJpZW5kIGNsYXNzIE1lZGlhQ29udHJv
bGxlcjsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sbGVyPiBtX21lZGlhQ29udHJvbGxlcjsKIH07
CiAKIH0gLy9uYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRs
CmluZGV4IDMzMGFkYmFhZGU3MTAyNjljMmYyZGU1ZWVjNWNjMWUxNjJiMGM5YjUuLjQ5MjEwYjYy
MDI3MjM3MWU0NWFhYjlmYWIxOTFiZjYxMDA0M2NlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmlkbApAQCAtMTE0LDUgKzExNCw4IEBAIG1vZHVsZSBodG1sIHsKICNp
ZiBkZWZpbmVkKEVOQUJMRV9WSURFT19UUkFDSykgJiYgRU5BQkxFX1ZJREVPX1RSQUNLCiAgICAg
W0VuYWJsZWRBdFJ1bnRpbWU9d2Via2l0VmlkZW9UcmFja10gVGV4dFRyYWNrIGFkZFRyYWNrKGlu
IERPTVN0cmluZyBraW5kLCBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyBsYWJlbCwgaW4gW09wdGlv
bmFsXSBET01TdHJpbmcgbGFuZ3VhZ2UpOwogI2VuZGlmCisKKyAgICBhdHRyaWJ1dGUgW1JlZmxl
Y3QsIENvbnZlcnROdWxsVG9OdWxsU3RyaW5nLCBDb252ZXJ0TnVsbFN0cmluZ1RvTnVsbF0gRE9N
U3RyaW5nIG1lZGlhR3JvdXA7CisgICAgYXR0cmlidXRlIFtDdXN0b21TZXR0ZXJdIE1lZGlhQ29u
dHJvbGxlciBtZWRpYUNvbnRyb2xsZXI7CiB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNv
bnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzOWI4NGFmMjU3N2Q5ZTgyYjE1ZTA0NjVmYmYxMTIz
MjQxMDIyODQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29u
dHJvbGxlci5jcHAKQEAgLTAsMCArMSw0NTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoVklERU8pCisjaW5jbHVkZSAiTWVkaWFDb250cm9sbGVyLmgiCisK
KyNpbmNsdWRlICJDbG9jay5oIgorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNs
dWRlICJUaW1lUmFuZ2VzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworc3RhdGlj
IEhhc2hNYXA8U3RyaW5nLCBNZWRpYUNvbnRyb2xsZXIqPiYgbWVkaWFHcm91cFRvTWVkaWFDb250
cm9sbGVyTWFwKCkKK3sKKyAgICBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIE1lZGlhQ29udHJvbGxl
cio+KiBtYXAgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIE1lZGlhQ29udHJvbGxlcio+KCk7CisgICAg
cmV0dXJuICptYXA7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sbGVyPiBNZWRpYUNvbnRy
b2xsZXI6Om1lZGlhQ29udHJvbGxlckZvck1lZGlhR3JvdXAoY29uc3QgU3RyaW5nJiBncm91cCkK
K3sKKyAgICBpZiAoZ3JvdXAuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYg
KGdyb3VwLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoTWVkaWFDb250
cm9sbGVyKiBjb250cm9sbGVyID0gbWVkaWFHcm91cFRvTWVkaWFDb250cm9sbGVyTWFwKCkuZ2V0
KGdyb3VwKSkKKyAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXI7CisKKyAgICBSZWZQdHI8TWVkaWFD
b250cm9sbGVyPiBjb250cm9sbGVyID0gY3JlYXRlKCk7CisgICAgY29udHJvbGxlci0+bV9tZWRp
YUdyb3VwID0gZ3JvdXA7CisgICAgbWVkaWFHcm91cFRvTWVkaWFDb250cm9sbGVyTWFwKCkuc2V0
KGdyb3VwLCBjb250cm9sbGVyLmdldCgpKTsKKyAgICByZXR1cm4gY29udHJvbGxlci5yZWxlYXNl
KCk7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sbGVyPiBNZWRpYUNvbnRyb2xsZXI6OmNy
ZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xsZXIoKSk7Cit9
CisKK01lZGlhQ29udHJvbGxlcjo6TWVkaWFDb250cm9sbGVyKCkKKyAgICA6IG1fcGF1c2VkKGZh
bHNlKQorICAgICwgbV9kZWZhdWx0UGxheWJhY2tSYXRlKDEpCisgICAgLCBtX3BsYXliYWNrUmF0
ZSgxKQorICAgICwgbV92b2x1bWUoMSkKKyAgICAsIG1fbXV0ZWQoZmFsc2UpCisgICAgLCBtX3Jl
YWR5U3RhdGUoSEFWRV9OT1RISU5HKQorICAgICwgbV9wbGF5YmFja1N0YXRlKFdBSVRJTkcpCisg
ICAgLCBtX2FzeW5jRXZlbnRUaW1lcih0aGlzLCAmTWVkaWFDb250cm9sbGVyOjphc3luY0V2ZW50
VGltZXJGaXJlZCkKKyAgICAsIG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGZhbHNlKQorICAgICwg
bV9jbG9jayhDbG9jazo6Y3JlYXRlKCkpCit7Cit9CisKK01lZGlhQ29udHJvbGxlcjo6fk1lZGlh
Q29udHJvbGxlcigpCit7CisgICAgaWYgKCFtX21lZGlhR3JvdXAuaXNFbXB0eSgpKQorICAgICAg
ICBtZWRpYUdyb3VwVG9NZWRpYUNvbnRyb2xsZXJNYXAoKS5yZW1vdmUobV9tZWRpYUdyb3VwKTsK
K30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OmFkZE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVt
ZW50KiBlbGVtZW50KQoreworICAgIEFTU0VSVChlbGVtZW50KTsKKyAgICBBU1NFUlQoIW1fbWVk
aWFFbGVtZW50cy5jb250YWlucyhlbGVtZW50KSk7CisgICAgbV9tZWRpYUVsZW1lbnRzLmFwcGVu
ZChlbGVtZW50KTsKKyAgICB1cGRhdGVSZWFkeVN0YXRlKCk7CisgICAgdXBkYXRlUGxheWJhY2tT
dGF0ZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6cmVtb3ZlTWVkaWFFbGVtZW50KEhU
TUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgQVNTRVJUKGVsZW1lbnQpOworICAgIEFT
U0VSVChtX21lZGlhRWxlbWVudHMuY29udGFpbnMoZWxlbWVudCkpOworICAgIG1fbWVkaWFFbGVt
ZW50cy5yZW1vdmUobV9tZWRpYUVsZW1lbnRzLmZpbmQoZWxlbWVudCkpOworfQorCitib29sIE1l
ZGlhQ29udHJvbGxlcjo6Y29udGFpbnNNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogZWxl
bWVudCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnRzLmNvbnRhaW5zKGVsZW1l
bnQpOworfQorCitQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhQ29udHJvbGxlcjo6YnVmZmVy
ZWQoKSBjb25zdAoreworICAgIGlmIChtX21lZGlhRWxlbWVudHMuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gVGltZVJhbmdlczo6Y3JlYXRlKCk7CisKKyAgICBSZWZQdHI8VGltZVJhbmdlcz4g
YnVmZmVyZWRSYW5nZXMgPSBtX21lZGlhRWxlbWVudHMuZmlyc3QoKS0+YnVmZmVyZWQoKTsKKyAg
ICBmb3IgKHNpemVfdCBpbmRleCA9IDE7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsg
KytpbmRleCkKKyAgICAgICAgYnVmZmVyZWRSYW5nZXMtPmludGVyc2VjdFdpdGgobV9tZWRpYUVs
ZW1lbnRzW2luZGV4XS0+YnVmZmVyZWQoKS5nZXQoKSk7CisgICAgcmV0dXJuIGJ1ZmZlcmVkUmFu
Z2VzOworfQorCitQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhQ29udHJvbGxlcjo6c2Vla2Fi
bGUoKSBjb25zdAoreworICAgIGlmIChtX21lZGlhRWxlbWVudHMuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gVGltZVJhbmdlczo6Y3JlYXRlKCk7CisgICAgCisgICAgUmVmUHRyPFRpbWVSYW5n
ZXM+IHNlZWthYmxlUmFuZ2VzID0gbV9tZWRpYUVsZW1lbnRzLmZpcnN0KCktPnNlZWthYmxlKCk7
CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAxOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXpl
KCk7ICsraW5kZXgpCisgICAgICAgIHNlZWthYmxlUmFuZ2VzLT5pbnRlcnNlY3RXaXRoKG1fbWVk
aWFFbGVtZW50c1tpbmRleF0tPnNlZWthYmxlKCkuZ2V0KCkpOworICAgIHJldHVybiBzZWVrYWJs
ZVJhbmdlczsKK30KKworUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYUNvbnRyb2xsZXI6OnBs
YXllZCgpCit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKyAgICAKKyAgICBSZWZQdHI8VGltZVJhbmdlcz4g
cGxheWVkUmFuZ2VzID0gbV9tZWRpYUVsZW1lbnRzLmZpcnN0KCktPnBsYXllZCgpOworICAgIGZv
ciAoc2l6ZV90IGluZGV4ID0gMTsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2lu
ZGV4KQorICAgICAgICBwbGF5ZWRSYW5nZXMtPnVuaW9uV2l0aChtX21lZGlhRWxlbWVudHNbaW5k
ZXhdLT5wbGF5ZWQoKS5nZXQoKSk7CisgICAgcmV0dXJuIHBsYXllZFJhbmdlczsKK30KKworZmxv
YXQgTWVkaWFDb250cm9sbGVyOjpkdXJhdGlvbigpIGNvbnN0Cit7CisgICAgZmxvYXQgbWF4RHVy
YXRpb24gPSAwOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxl
bWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBtYXhEdXJhdGlvbiA9IG1heChtYXhEdXJh
dGlvbiwgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+ZHVyYXRpb24oKSk7CisgICAgcmV0dXJuIG1h
eER1cmF0aW9uOworfQorCitmbG9hdCBNZWRpYUNvbnRyb2xsZXI6OmN1cnJlbnRUaW1lKCkgY29u
c3QKK3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgCisgICAgcmV0dXJuIG1fY2xvY2stPmN1cnJlbnRUaW1lKCk7CisgICAgCit9CisK
K3ZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXRDdXJyZW50VGltZShmbG9hdCB0aW1lLCBFeGNlcHRp
b25Db2RlJiBjb2RlKQoreworICAgIG1fY2xvY2stPnNldEN1cnJlbnRUaW1lKHRpbWUpOworICAg
IGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyAr
K2luZGV4KQorICAgICAgICBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5zZWVrKHRpbWUsIGNvZGUp
OworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6cGxheSgpCit7CisgICAgaWYgKG1fcGxheWJh
Y2tTdGF0ZSA9PSBFTkRFRCkgeworICAgICAgICBFeGNlcHRpb25Db2RlIGNvZGUgPSAwOworICAg
ICAgICBzZXRDdXJyZW50VGltZSgwLCBjb2RlKTsKKyAgICB9CisKKyAgICBtX3BhdXNlZCA9IGZh
bHNlOworICAgIHVwZGF0ZU1lZGlhRWxlbWVudHMoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xs
ZXI6OnBhdXNlKCkKK3sKKyAgICBtX3BhdXNlZCA9IHRydWU7CisgICAgZm9yIChzaXplX3QgaW5k
ZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAg
IG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPnBhdXNlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9s
bGVyOjpzZXREZWZhdWx0UGxheWJhY2tSYXRlKGZsb2F0IHJhdGUpCit7CisgICAgbV9kZWZhdWx0
UGxheWJhY2tSYXRlID0gcmF0ZTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNldFBsYXli
YWNrUmF0ZShmbG9hdCByYXRlKQoreworICAgIG1fcGxheWJhY2tSYXRlID0gcmF0ZTsKKyAgICBt
X2Nsb2NrLT5zZXRQbGF5UmF0ZShyYXRlKTsKKworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsg
aW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBtX21lZGlh
RWxlbWVudHNbaW5kZXhdLT5zZXRQbGF5YmFja1JhdGUocmF0ZSk7Cit9CisKK3ZvaWQgTWVkaWFD
b250cm9sbGVyOjpzZXRWb2x1bWUoZmxvYXQgbGV2ZWwsIEV4Y2VwdGlvbkNvZGUmKQoreworICAg
IG1fdm9sdW1lID0gbGV2ZWw7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1f
bWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIG1fbWVkaWFFbGVtZW50c1tp
bmRleF0tPnVwZGF0ZVZvbHVtZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6c2V0TXV0
ZWQoYm9vbCBmbGFnKQoreworICAgIG1fbXV0ZWQgPSBmbGFnOworICAgIGZvciAoc2l6ZV90IGlu
ZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAg
ICBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT51cGRhdGVWb2x1bWUoKTsKK30KKwordm9pZCBNZWRp
YUNvbnRyb2xsZXI6OnVwZGF0ZVJlYWR5U3RhdGUoKQoreworICAgIFJlYWR5U3RhdGUgb2xkUmVh
ZHlTdGF0ZSA9IG1fcmVhZHlTdGF0ZTsKKyAgICBSZWFkeVN0YXRlIG5ld1JlYWR5U3RhdGU7CisK
KyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgbmV3UmVhZHlTdGF0
ZSA9IEhBVkVfTk9USElORzsKKyAgICBlbHNlIHsKKyAgICAgICAgbmV3UmVhZHlTdGF0ZSA9IG1f
bWVkaWFFbGVtZW50cy5maXJzdCgpLT5yZWFkeVN0YXRlKCk7CisgICAgICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMTsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAg
ICAgICAgICAgbmV3UmVhZHlTdGF0ZSA9IG1pbihuZXdSZWFkeVN0YXRlLCBtX21lZGlhRWxlbWVu
dHNbaW5kZXhdLT5yZWFkeVN0YXRlKCkpOworICAgIH0KKworICAgIGlmIChuZXdSZWFkeVN0YXRl
ID09IG9sZFJlYWR5U3RhdGUpIAorICAgICAgICByZXR1cm47CisKKyAgICBBdG9taWNTdHJpbmcg
ZXZlbnROYW1lOworICAgIHN3aXRjaCAobmV3UmVhZHlTdGF0ZSkgeworICAgIGNhc2UgSEFWRV9O
T1RISU5HOgorICAgICAgICBldmVudE5hbWUgPSBldmVudE5hbWVzKCkuZW1wdGllZEV2ZW50Owor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEhBVkVfTUVUQURBVEE6CisgICAgICAgIGV2ZW50TmFt
ZSA9IGV2ZW50TmFtZXMoKS5sb2FkZWRtZXRhZGF0YUV2ZW50OworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEhBVkVfQ1VSUkVOVF9EQVRBOgorICAgICAgICBldmVudE5hbWUgPSBldmVudE5hbWVz
KCkubG9hZGVkZGF0YUV2ZW50OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEhBVkVfRlVUVVJF
X0RBVEE6CisgICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS5jYW5wbGF5RXZlbnQ7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgSEFWRV9FTk9VR0hfREFUQToKKyAgICAgICAgZXZlbnRO
YW1lID0gZXZlbnROYW1lcygpLmNhbnBsYXl0aHJvdWdoRXZlbnQ7CisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICBz
Y2hlZHVsZUV2ZW50KGV2ZW50TmFtZSk7CisgICAgbV9yZWFkeVN0YXRlID0gbmV3UmVhZHlTdGF0
ZTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnVwZGF0ZVBsYXliYWNrU3RhdGUoKQorewor
ICAgIFBsYXliYWNrU3RhdGUgb2xkUGxheWJhY2tTdGF0ZSA9IG1fcGxheWJhY2tTdGF0ZTsKKyAg
ICBQbGF5YmFja1N0YXRlIG5ld1BsYXliYWNrU3RhdGU7CisKKyAgICBpZiAobV9tZWRpYUVsZW1l
bnRzLmlzRW1wdHkoKSkKKyAgICAgICAgbmV3UGxheWJhY2tTdGF0ZSA9IFdBSVRJTkc7CisgICAg
ZWxzZSBpZiAoaGFzRW5kZWQoKSkKKyAgICAgICAgbmV3UGxheWJhY2tTdGF0ZSA9IEVOREVEOwor
ICAgIGVsc2UgaWYgKGlzQmxvY2tlZCgpKSAKKyAgICAgICAgbmV3UGxheWJhY2tTdGF0ZSA9IFdB
SVRJTkc7CisgICAgZWxzZQorICAgICAgICBuZXdQbGF5YmFja1N0YXRlID0gUExBWUlORzsKKwor
ICAgIGlmIChuZXdQbGF5YmFja1N0YXRlID09IG9sZFBsYXliYWNrU3RhdGUpCisgICAgICAgIHJl
dHVybjsKKworICAgIEF0b21pY1N0cmluZyBldmVudE5hbWU7CisgICAgc3dpdGNoIChuZXdQbGF5
YmFja1N0YXRlKSB7CisgICAgY2FzZSBXQUlUSU5HOgorICAgICAgICBldmVudE5hbWUgPSBldmVu
dE5hbWVzKCkud2FpdGluZ0V2ZW50OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEVOREVEOgor
ICAgICAgICBldmVudE5hbWUgPSBldmVudE5hbWVzKCkuZW5kZWRFdmVudDsKKyAgICAgICAgbV9w
YXVzZWQgPSB0cnVlOworICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5wYXVzZUV2
ZW50KTsKKyAgICAgICAgbV9jbG9jay0+c3RvcCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFBMQVlJTkc6CisgICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS5wbGF5aW5nRXZlbnQ7
CisgICAgICAgIG1fY2xvY2stPnN0YXJ0KCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICBzY2hlZHVsZUV2ZW50
KGV2ZW50TmFtZSk7CisgICAgbV9wbGF5YmFja1N0YXRlID0gbmV3UGxheWJhY2tTdGF0ZTsKKyAg
ICB1cGRhdGVNZWRpYUVsZW1lbnRzKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjp1cGRh
dGVNZWRpYUVsZW1lbnRzKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwg
bV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRz
W2luZGV4XS0+dXBkYXRlUGxheVN0YXRlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpz
Y2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQoreworICAgIG1fcGVu
ZGluZ0V2ZW50cy5hcHBlbmQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIGZhbHNlLCB0cnVlKSk7
CisgICAgaWYgKCFtX2FzeW5jRXZlbnRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2FzeW5j
RXZlbnRUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjph
c3luY0V2ZW50VGltZXJGaXJlZChUaW1lcjxNZWRpYUNvbnRyb2xsZXI+KikKK3sKKyAgICBWZWN0
b3I8UmVmUHRyPEV2ZW50PiA+IHBlbmRpbmdFdmVudHM7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CisgICAgCisgICAgbV9wZW5kaW5nRXZlbnRzLnN3YXAocGVuZGluZ0V2ZW50cyk7CisgICAg
c2l6ZV90IGNvdW50ID0gcGVuZGluZ0V2ZW50cy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaW5k
ZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KQorICAgICAgICBkaXNwYXRjaEV2ZW50KHBl
bmRpbmdFdmVudHNbaW5kZXhdLnJlbGVhc2UoKSwgZWMpOworfQorCitTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBNZWRpYUNvbnRyb2xsZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAor
eworICAgIGlmIChtX21lZGlhRWxlbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsK
KyAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnRzLmZpcnN0KCktPmRvY3VtZW50KCk7Cit9CisKK2Jv
b2wgTWVkaWFDb250cm9sbGVyOjpoYXNBdWRpbygpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3Qg
aW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKKyAg
ICAgICAgaWYgKG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmhhc0F1ZGlvKCkpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlh
Q29udHJvbGxlcjo6aGFzVmlkZW8oKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0g
MDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlm
IChtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5oYXNWaWRlbygpKQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xs
ZXI6Omhhc0Nsb3NlZENhcHRpb25zKCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9
IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBp
ZiAobV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+aGFzQ2xvc2VkQ2FwdGlvbnMoKSkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVk
aWFDb250cm9sbGVyOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCB2aXNpYmxlKQorewor
ICAgIG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxlID0gdmlzaWJsZTsKKyAgICBmb3IgKHNpemVfdCBp
bmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAg
ICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKHZpc2li
bGUpOworfQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6c3VwcG9ydHNTY2FubmluZygpIGNvbnN0
Cit7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5z
aXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgaWYgKCFtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5z
dXBwb3J0c1NjYW5uaW5nKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6YmVnaW5TY3J1YmJpbmco
KQoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMu
c2l6ZSgpOyArK2luZGV4KQorICAgICAgICBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5iZWdpblNj
cnViYmluZygpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6ZW5kU2NydWJiaW5nKCkKK3sK
KyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUo
KTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+ZW5kU2NydWJiaW5n
KCk7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9sbGVyOjpjYW5QbGF5KCkgY29uc3QKK3sKKyAgICBm
b3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytp
bmRleCkgeworICAgICAgICBpZiAoIW1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmNhblBsYXkoKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgTWVkaWFDb250cm9sbGVyOjppc0xpdmVTdHJlYW0oKSBjb25zdAoreworICAgIGZvciAo
c2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4
KSB7CisgICAgICAgIGlmICghbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+aXNMaXZlU3RyZWFtKCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQor
Citib29sIE1lZGlhQ29udHJvbGxlcjo6aXNMb2FkaW5nKCkgY29uc3QKK3sKKyAgICBmb3IgKHNp
emVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkg
eworICAgICAgICBpZiAoIW1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmlzTG9hZGluZygpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9p
ZCBNZWRpYUNvbnRyb2xsZXI6OnJldHVyblRvUmVhbHRpbWUoKQoreworICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAg
ICAgICBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5yZXR1cm5Ub1JlYWx0aW1lKCk7Cit9CisKK2Jv
b2wgTWVkaWFDb250cm9sbGVyOjppc0Jsb2NrZWQoKSBjb25zdAoreworICAgIGlmIChtX3BhdXNl
ZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBhbGxQYXVzZWQgPSB0cnVl
OworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6
ZSgpOyArK2luZGV4KSB7CisgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQgPSBtX21l
ZGlhRWxlbWVudHNbaW5kZXhdOworICAgICAgICBpZiAoZWxlbWVudC0+cmVhZHlTdGF0ZSgpIDw9
IEhBVkVfQ1VSUkVOVF9EQVRBKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIAor
ICAgICAgICBpZiAoZWxlbWVudC0+YXV0b3BsYXkoKSAmJiBlbGVtZW50LT5wYXVzZWQoKSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIGFsbFBhdXNlZCAmPSBlbGVtZW50LT5w
YXVzZWQoKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGFsbFBhdXNlZDsKK30KKworYm9vbCBN
ZWRpYUNvbnRyb2xsZXI6Omhhc0VuZGVkKCkgY29uc3QKK3sKKyAgICBpZiAobV9wbGF5YmFja1Jh
dGUgPD0gMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fbWVkaWFFbGVtZW50
cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgYWxsSGF2ZUVu
ZGVkID0gdHJ1ZTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVs
ZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgYWxsSGF2ZUVuZGVkICY9IG1fbWVkaWFF
bGVtZW50c1tpbmRleF0tPmVuZGVkKCk7CisgICAgcmV0dXJuIGFsbEhhdmVFbmRlZDsKK30KKwor
Citjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbGxlcjo6aW50ZXJmYWNlTmFtZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JNZWRpYUNvbnRyb2xs
ZXI7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTIzOTE5Yzc5NDJmYzI1YWEzNTRjYTcyNGMyYzFmMTc0MzAyODhlOAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmgKQEAgLTAsMCAr
MSwxNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBNZWRpYUNvbnRyb2xsZXJfaAorI2RlZmluZSBN
ZWRpYUNvbnRyb2xsZXJfaAorCisjaWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSAiQWN0aXZl
RE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudExpc3RlbmVy
LmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xsZXJJ
bnRlcmZhY2UuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ2xvY2s7CitjbGFzcyBIVE1MTWVkaWFF
bGVtZW50OworY2xhc3MgRXZlbnQ7CisKK2NsYXNzIE1lZGlhQ29udHJvbGxlciA6IHB1YmxpYyBS
ZWZDb3VudGVkPE1lZGlhQ29udHJvbGxlcj4sIHB1YmxpYyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZh
Y2UsIHB1YmxpYyBFdmVudFRhcmdldCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
TWVkaWFDb250cm9sbGVyPiBtZWRpYUNvbnRyb2xsZXJGb3JNZWRpYUdyb3VwKGNvbnN0IFN0cmlu
ZyYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbGxlcj4gY3JlYXRlKCk7Cisg
ICAgdmlydHVhbCB+TWVkaWFDb250cm9sbGVyKCk7CisKKyAgICB2b2lkIGFkZE1lZGlhRWxlbWVu
dChIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgdm9pZCByZW1vdmVNZWRpYUVsZW1lbnQoSFRNTE1l
ZGlhRWxlbWVudCopOworICAgIGJvb2wgY29udGFpbnNNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxl
bWVudCopIGNvbnN0OworCisgICAgY29uc3QgU3RyaW5nJiBtZWRpYUdyb3VwKCkgY29uc3QgeyBy
ZXR1cm4gbV9tZWRpYUdyb3VwOyB9CisgICAgCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVS
YW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5n
ZXM+IHNlZWthYmxlKCkgY29uc3Q7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+
IHBsYXllZCgpOworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgZHVyYXRpb24oKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGZsb2F0IGN1cnJlbnRUaW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNl
dEN1cnJlbnRUaW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJik7CisgICAgCisgICAgdmlydHVhbCBi
b29sIHBhdXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF1c2VkOyB9CisgICAgdmlydHVhbCB2b2lk
IHBsYXkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKTsKKyAgICAKKyAgICB2aXJ0dWFsIGZs
b2F0IGRlZmF1bHRQbGF5YmFja1JhdGUoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1bHRQbGF5YmFj
a1JhdGU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCk7
CisgICAgCisgICAgdmlydHVhbCBmbG9hdCBwbGF5YmFja1JhdGUoKSBjb25zdCB7IHJldHVybiBt
X3BsYXliYWNrUmF0ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5YmFja1JhdGUoZmxvYXQp
OworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgdm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV92b2x1
bWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJik7
CisgICAgCisgICAgdmlydHVhbCBib29sIG11dGVkKCkgY29uc3QgeyByZXR1cm4gbV9tdXRlZDsg
fQorICAgIHZpcnR1YWwgdm9pZCBzZXRNdXRlZChib29sKTsKKyAgICAKKyAgICB2aXJ0dWFsIFJl
YWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZHlTdGF0ZTsgfQorCisg
ICAgZW51bSBQbGF5YmFja1N0YXRlIHsgV0FJVElORywgUExBWUlORywgRU5ERUQgfTsKKyAgICB2
aXJ0dWFsIFBsYXliYWNrU3RhdGUgcGxheWJhY2tTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxh
eWJhY2tTdGF0ZTsgfQorCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzRnVsbHNjcmVlbigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbigp
IHsgfQorCisgICAgdmlydHVhbCBib29sIGhhc0F1ZGlvKCkgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGhhc1ZpZGVvKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGhhc0Nsb3NlZENhcHRpb25z
KCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldENsb3NlZENhcHRpb25zVmlzaWJsZShib29s
KTsKKyAgICB2aXJ0dWFsIGJvb2wgY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCkgY29uc3QgeyByZXR1
cm4gbV9jbG9zZWRDYXB0aW9uc1Zpc2libGU7IH0KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgc3Vw
cG9ydHNTY2FubmluZygpIGNvbnN0OworICAgIAorICAgIHZpcnR1YWwgdm9pZCBiZWdpblNjcnVi
YmluZygpOworICAgIHZpcnR1YWwgdm9pZCBlbmRTY3J1YmJpbmcoKTsKKyAgICAKKyAgICB2aXJ0
dWFsIGJvb2wgY2FuUGxheSgpIGNvbnN0OworICAgIAorICAgIHZpcnR1YWwgYm9vbCBpc0xpdmVT
dHJlYW0oKSBjb25zdDsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkaW5nKCkgY29uc3Q7
CisgICAgCisgICAgdmlydHVhbCB2b2lkIHJldHVyblRvUmVhbHRpbWUoKTsKKworICAgIGJvb2wg
aXNCbG9ja2VkKCkgY29uc3Q7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHVzaW5nIFJlZkNv
dW50ZWQ8TWVkaWFDb250cm9sbGVyPjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFD
b250cm9sbGVyPjo6ZGVyZWY7CisKK3ByaXZhdGU6CisgICAgTWVkaWFDb250cm9sbGVyKCk7Cisg
ICAgdm9pZCB1cGRhdGVSZWFkeVN0YXRlKCk7CisgICAgdm9pZCB1cGRhdGVQbGF5YmFja1N0YXRl
KCk7CisgICAgdm9pZCB1cGRhdGVNZWRpYUVsZW1lbnRzKCk7CisgICAgdm9pZCBzY2hlZHVsZUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKTsKKyAgICB2b2lkIGFzeW5jRXZlbnRU
aW1lckZpcmVkKFRpbWVyPE1lZGlhQ29udHJvbGxlcj4qKTsKKyAgICBib29sIGhhc0VuZGVkKCkg
Y29uc3Q7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRh
cmdldCgpIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsg
ZGVyZWYoKTsgfQorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1l
KCkgY29uc3Q7CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3Q7CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50
VGFyZ2V0RGF0YSgpIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQorICAgIHZpcnR1YWwg
RXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSB7IHJldHVybiAmbV9ldmVu
dFRhcmdldERhdGE7IH0KKyAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CisK
KyAgICBmcmllbmQgY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKKyAgICBmcmllbmQgY2xhc3MgTWVk
aWFDb250cm9sbGVyRXZlbnRMaXN0ZW5lcjsKKyAgICBWZWN0b3I8SFRNTE1lZGlhRWxlbWVudCo+
IG1fbWVkaWFFbGVtZW50czsKKyAgICBib29sIG1fcGF1c2VkOworICAgIGZsb2F0IG1fZGVmYXVs
dFBsYXliYWNrUmF0ZTsKKyAgICBmbG9hdCBtX3BsYXliYWNrUmF0ZTsKKyAgICBmbG9hdCBtX3Zv
bHVtZTsKKyAgICBib29sIG1fbXV0ZWQ7CisgICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7Cisg
ICAgUGxheWJhY2tTdGF0ZSBtX3BsYXliYWNrU3RhdGU7CisgICAgVmVjdG9yPFJlZlB0cjxFdmVu
dD4gPiBtX3BlbmRpbmdFdmVudHM7CisgICAgVGltZXI8TWVkaWFDb250cm9sbGVyPiBtX2FzeW5j
RXZlbnRUaW1lcjsKKyAgICBTdHJpbmcgbV9tZWRpYUdyb3VwOworICAgIGJvb2wgbV9jbG9zZWRD
YXB0aW9uc1Zpc2libGU7CisgICAgUGFzc1JlZlB0cjxDbG9jaz4gbV9jbG9jazsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFDb250cm9sbGVyLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNGIyYTFmZDhjYjk0NDA4YTM4ZGFiYjk1
NjNlYmZhNWY3MzhmYzUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYUNvbnRyb2xsZXIuaWRsCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCittb2R1bGUgaHRt
bCB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9VklERU8sCisgICAgICAg
IENhbkJlQ29uc3RydWN0ZWQsCisgICAgICAgIEdlbmVyYXRlVG9KUywKKyAgICAgICAgRXZlbnRU
YXJnZXQKKyAgICBdIE1lZGlhQ29udHJvbGxlciB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBUaW1lUmFuZ2VzIGJ1ZmZlcmVkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgVGltZVJh
bmdlcyBzZWVrYWJsZTsKKworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIGR1cmF0
aW9uOworICAgICAgICBhdHRyaWJ1dGUgZG91YmxlIGN1cnJlbnRUaW1lCisgICAgICAgICAgICBz
ZXR0ZXIgcmFpc2VzIChET01FeGNlcHRpb24pOworCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBib29sZWFuIHBhdXNlZDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFRpbWVSYW5nZXMg
cGxheWVkOworICAgICAgICB2b2lkIHBsYXkoKTsKKyAgICAgICAgdm9pZCBwYXVzZSgpOworCisg
ICAgICAgIGF0dHJpYnV0ZSBkb3VibGUgZGVmYXVsdFBsYXliYWNrUmF0ZTsKKyAgICAgICAgYXR0
cmlidXRlIGRvdWJsZSBwbGF5YmFja1JhdGU7CisKKyAgICAgICAgYXR0cmlidXRlIGRvdWJsZSB2
b2x1bWUKKyAgICAgICAgICAgIHNldHRlciByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAg
IGF0dHJpYnV0ZSBib29sZWFuIG11dGVkOworCisgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVy
ZmFjZQorICAgICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwg
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNl
Q2FwdHVyZSk7CisgICAgICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcg
dHlwZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVy
IGxpc3RlbmVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25h
bF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGlu
IEV2ZW50IGV2dCkKKyAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CisgICAgfTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVySW50ZXJm
YWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlckludGVyZmFjZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ3ODQ3YjU1YzRhZTYzMmExNDg2Zjk5YTk2NjJjODZjMmE0ODc2ZjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlckludGVyZmFj
ZS5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBNZWRpYUNvbnRyb2xsZXJJ
bnRlcmZhY2VfaAorI2RlZmluZSBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2VfaAorCisjaWYgRU5B
QkxFKFZJREVPKQorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBUaW1lUmFuZ2VzOworCit0eXBlZGVmIGludCBFeGNlcHRpb25Db2Rl
OworCitjbGFzcyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UgeworcHVibGljOgorICAgIHZpcnR1
YWwgfk1lZGlhQ29udHJvbGxlckludGVyZmFjZSgpIHsgfTsKKyAgICAKKyAgICAvLyBNZWRpYUNv
bnRyb2xsZXIgSURMOgorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJl
ZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gc2Vla2Fi
bGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHBsYXll
ZCgpID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIGZsb2F0IGR1cmF0aW9uKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgZmxvYXQgY3VycmVudFRpbWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNldEN1cnJlbnRUaW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJikgPSAwOworICAgIAorICAg
IHZpcnR1YWwgYm9vbCBwYXVzZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBsYXko
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhdXNlKCkgPSAwOworICAgIAorICAgIHZpcnR1YWwg
ZmxvYXQgZGVmYXVsdFBsYXliYWNrUmF0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCkgPSAwOworICAgIAorICAgIHZpcnR1YWwgZmxv
YXQgcGxheWJhY2tSYXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5YmFj
a1JhdGUoZmxvYXQpID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIGZsb2F0IHZvbHVtZSgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJikg
PSAwOworICAgIAorICAgIHZpcnR1YWwgYm9vbCBtdXRlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0TXV0ZWQoYm9vbCkgPSAwOworICAgIAorICAgIGVudW0gUmVhZHlTdGF0ZSB7
IEhBVkVfTk9USElORywgSEFWRV9NRVRBREFUQSwgSEFWRV9DVVJSRU5UX0RBVEEsIEhBVkVfRlVU
VVJFX0RBVEEsIEhBVkVfRU5PVUdIX0RBVEEgfTsKKyAgICB2aXJ0dWFsIFJlYWR5U3RhdGUgcmVh
ZHlTdGF0ZSgpIGNvbnN0ID0gMDsKKworICAgIC8vIE1lZGlhQ29udHJvbEVsZW1lbnRzOgorICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzRnVsbHNjcmVlbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW50ZXJG
dWxsc2NyZWVuKCkgPSAwOworCisgICAgdmlydHVhbCBib29sIGhhc0F1ZGlvKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBoYXNWaWRlbygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaGFzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldENs
b3NlZENhcHRpb25zVmlzaWJsZShib29sKSA9IDA7CisgICAgdmlydHVhbCBib29sIGNsb3NlZENh
cHRpb25zVmlzaWJsZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nj
YW5uaW5nKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGJlZ2luU2NydWJiaW5nKCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmRTY3J1YmJpbmcoKSA9IDA7CisKKyAgICB2aXJ0dWFs
IGJvb2wgY2FuUGxheSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBpc0xpdmVTdHJl
YW0oKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkaW5nKCkgY29uc3QgPSAw
OworCisgICAgdmlydHVhbCB2b2lkIHJldHVyblRvUmVhbHRpbWUoKSA9IDA7Cit9OworCit9CisK
KyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5n
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcAppbmRleCAxZTE4MzA2
OTg3NzE0YjBlOTliMmQ1MzViYzRiNDdjZTNjY2M4NzgyLi43YjdkNTk0YTQ2YjliYzA1NGRjMmRh
OGQ2YTdjMjUwYjkxZDlkMTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVS
YW5nZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5jcHAKQEAgLTM2
LDcgKzM2LDcgQEAgVGltZVJhbmdlczo6VGltZVJhbmdlcyhmbG9hdCBzdGFydCwgZmxvYXQgZW5k
KQogICAgIGFkZChzdGFydCwgZW5kKTsKIH0KIAotUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBUaW1l
UmFuZ2VzOjpjb3B5KCkKK1Bhc3NSZWZQdHI8VGltZVJhbmdlcz4gVGltZVJhbmdlczo6Y29weSgp
IGNvbnN0CiB7CiAgICAgUmVmUHRyPFRpbWVSYW5nZXM+IG5ld1Nlc3Npb24gPSBUaW1lUmFuZ2Vz
OjpjcmVhdGUoKTsKICAgICAKQEAgLTQ3LDYgKzQ3LDQ5IEBAIFBhc3NSZWZQdHI8VGltZVJhbmdl
cz4gVGltZVJhbmdlczo6Y29weSgpCiAgICAgcmV0dXJuIG5ld1Nlc3Npb24ucmVsZWFzZSgpOwog
fQogCit2b2lkIFRpbWVSYW5nZXM6OmludmVydCgpCit7CisgICAgUmVmUHRyPFRpbWVSYW5nZXM+
IGludmVydGVkID0gVGltZVJhbmdlczo6Y3JlYXRlKCk7CisKKyAgICBpZiAoIW1fcmFuZ2VzLnNp
emUoKSkKKyAgICAgICAgaW52ZXJ0ZWQtPmFkZCgtSU5GSU5JVFksIElORklOSVRZKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgaWYgKGZsb2F0IHN0YXJ0ID0gbV9yYW5nZXMuZmlyc3QoKS5tX3N0YXJ0
ICE9IC1JTkZJTklUWSkKKyAgICAgICAgICAgIGludmVydGVkLT5hZGQoLUlORklOSVRZLCBzdGFy
dCk7CisKKyAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCArIDEgPCBtX3Jhbmdl
cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgICAgICBpbnZlcnRlZC0+YWRkKG1fcmFuZ2VzW2lu
ZGV4XS5tX2VuZCwgbV9yYW5nZXNbaW5kZXggKyAxXS5tX3N0YXJ0KTsKKworICAgICAgICBpZiAo
ZmxvYXQgZW5kID0gbV9yYW5nZXMubGFzdCgpLm1fZW5kICE9IElORklOSVRZKQorICAgICAgICAg
ICAgaW52ZXJ0ZWQtPmFkZChlbmQsIElORklOSVRZKTsKKyAgICB9CisKKyAgICBtX3Jhbmdlcy5z
d2FwKGludmVydGVkLT5tX3Jhbmdlcyk7Cit9CisKK3ZvaWQgVGltZVJhbmdlczo6aW50ZXJzZWN0
V2l0aChjb25zdCBUaW1lUmFuZ2VzKiBvdGhlcikKK3sKKyAgICBBU1NFUlQob3RoZXIpOworICAg
IFJlZlB0cjxUaW1lUmFuZ2VzPiBpbnZlcnRlZCA9IGNvcHkoKTsKKyAgICBSZWZQdHI8VGltZVJh
bmdlcz4gaW52ZXJ0ZWRPdGhlciA9IG90aGVyLT5jb3B5KCk7CisgICAgaW52ZXJ0ZWQtPnVuaW9u
V2l0aChpbnZlcnRlZE90aGVyLmdldCgpKTsKKyAgICBpbnZlcnRlZC0+aW52ZXJ0KCk7CisKKyAg
ICBtX3Jhbmdlcy5zd2FwKGludmVydGVkLT5tX3Jhbmdlcyk7Cit9CisKK3ZvaWQgVGltZVJhbmdl
czo6dW5pb25XaXRoKGNvbnN0IFRpbWVSYW5nZXMqIG90aGVyKQoreworICAgIEFTU0VSVChvdGhl
cik7CisgICAgUmVmUHRyPFRpbWVSYW5nZXM+IHVuaW9uZWQgPSBjb3B5KCk7CisgICAgZm9yIChz
aXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG90aGVyLT5tX3Jhbmdlcy5zaXplKCk7ICsraW5kZXgp
IHsKKyAgICAgICAgY29uc3QgUmFuZ2UmIHJhbmdlID0gb3RoZXItPm1fcmFuZ2VzW2luZGV4XTsK
KyAgICAgICAgdW5pb25lZC0+YWRkKHJhbmdlLm1fc3RhcnQsIHJhbmdlLm1fZW5kKTsKKyAgICB9
CisKKyAgICBtX3Jhbmdlcy5zd2FwKHVuaW9uZWQtPm1fcmFuZ2VzKTsKK30KKwogZmxvYXQgVGlt
ZVJhbmdlczo6c3RhcnQodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdCAK
IHsgCiAgICAgaWYgKGluZGV4ID49IGxlbmd0aCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1RpbWVSYW5nZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5o
CmluZGV4IDJkN2FmMjVhODA5MTM3MzBmODBkMjM5MzBiZTI3NGUwZmYxMjE3ZmQuLmNjY2NlMDVj
MTljNGFjOWU2MjlkZDJhMmExZmI2NjUyMTk3ODEwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVGltZVJhbmdlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdl
cy5oCkBAIC00Niw3ICs0NiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgVGltZVJhbmdlcyhzdGFydCwgZW5kKSk7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxUaW1l
UmFuZ2VzPiBjb3B5KCk7CisgICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBjb3B5KCkgY29uc3Q7
CisgICAgdm9pZCBpbnZlcnQoKTsKKyAgICB2b2lkIGludGVyc2VjdFdpdGgoY29uc3QgVGltZVJh
bmdlcyopOworICAgIHZvaWQgdW5pb25XaXRoKGNvbnN0IFRpbWVSYW5nZXMqKTsKIAogICAgIHVu
c2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2VzLnNpemUoKTsgfQogICAgIGZs
b2F0IHN0YXJ0KHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5pZGwKaW5kZXggNmNjZDRhNDdkMzEyM2ZhZmM4NjdhMzFjZmE2NzlkNDc2
ZjRhZWE2Mi4uMmQwZmFjYzc2YTUxZTk5ZTkwYmZmODZmN2I3ZDkyZmE1NTNjMWY4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmlkbApAQCAtNjMzLDYgKzYzMyw3IEBAIG1vZHVsZSB3aW5kb3cg
ewogICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPVZJREVPLCBFbmFibGVkQXRSdW50aW1l
XSBNZWRpYUVycm9yQ29uc3RydWN0b3IgTWVkaWFFcnJvcjsKICAgICAgICAgYXR0cmlidXRlIFtD
b25kaXRpb25hbD1WSURFTywgRW5hYmxlZEF0UnVudGltZV0gVGltZVJhbmdlc0NvbnN0cnVjdG9y
IFRpbWVSYW5nZXM7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9VklERU8sIEVuYWJs
ZWRBdFJ1bnRpbWVdIEhUTUxTb3VyY2VFbGVtZW50Q29uc3RydWN0b3IgSFRNTFNvdXJjZUVsZW1l
bnQ7CisgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9VklERU8sIEVuYWJsZWRBdFJ1bnRp
bWVdIE1lZGlhQ29udHJvbGxlckNvbnN0cnVjdG9yIE1lZGlhQ29udHJvbGxlcjsKIAogI2lmIGRl
ZmluZWQoRU5BQkxFX0FOSU1BVElPTl9BUEkpICYmIEVOQUJMRV9BTklNQVRJT05fQVBJCiAgICAg
ICAgIGF0dHJpYnV0ZSBXZWJLaXRBbmltYXRpb25Db25zdHJ1Y3RvciBXZWJLaXRBbmltYXRpb247
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAK
aW5kZXggMDE4YzdkZDMzZTM4YzFiOGY3NzM0NWE4YzNlNGY4MzVmZWM2MGE3My4uZmM3N2ZmMjg4
MzhiN2MwOTRhYTUzYTRmYmRmMDcxNjgwY2EyMjEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtNjA5LDYgKzYwOSwxMSBAQCBQ
YXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhUGxheWVyOjpidWZmZXJlZCgpCiAgICAgcmV0dXJu
IG1fcHJpdmF0ZS0+YnVmZmVyZWQoKTsKIH0KIAorUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRp
YVBsYXllcjo6c2Vla2FibGUoKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnNlZWthYmxlKCk7
Cit9CisKIGZsb2F0IE1lZGlhUGxheWVyOjptYXhUaW1lU2Vla2FibGUoKQogewogICAgIHJldHVy
biBtX3ByaXZhdGUtPm1heFRpbWVTZWVrYWJsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggYzk2YjAyNWQ4MmQwMDcwOTE2OWVlYTUx
YzA3ODI2Yjc0NTA2YzQ3MS4uNDc3MzlhMDhiMGUzZDljYzczYzk5YTEzMTQzNGE3OGFlMDM3NDU1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5o
CkBAIC0yNDEsNiArMjQxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJlc2VydmVzUGl0Y2go
Ym9vbCk7CiAKICAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCk7CisgICAgUGFz
c1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZSgpOwogICAgIGZsb2F0IG1heFRpbWVTZWVrYWJs
ZSgpOwogCiAgICAgdW5zaWduZWQgYnl0ZXNMb2FkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggZjhjNzBh
YmUyOGE3ZWQwMWRmYjhhMmNiN2YxYzYzNjYzN2QzODQ0MS4uMDVhNzdkZThmMjU2NTFmODQyMmI2
NDRiMWNhZGMyN2U4MTU1MjgyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBF
TkFCTEUoVklERU8pCiAKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIlRpbWVS
YW5nZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC05MSw2ICs5Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpOZXR3
b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgTWVkaWFQbGF5
ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0IHsgcmV0dXJuIFRpbWVSYW5nZXM6
OmNyZWF0ZSgwLCBtYXhUaW1lU2Vla2FibGUoKSk7IH0KICAgICB2aXJ0dWFsIGZsb2F0IG1heFRp
bWVTZWVrYWJsZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdl
cz4gYnVmZmVyZWQoKSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiNjJlN2Q5N2I2OTg0ZTI4MjAxNmJl
MGUzNzI2MmRiNDAzNjJmMzgzLi5jYTE3M2Y3N2JkMGFkZGNlOTZmNTQ0ZWRlNGQxMDljM2YxY2Y1
YWRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMTEtMDIgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgV0lQOiBNZWRpYUNvbnRyb2xsZXIKKworICAgICAg
ICBJbXBsZW1lbnQgTWVkaWFDb250cm9sbGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEzNDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIG1lZGlhL21lZGlhLWNvbnRyb2xsZXItZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFj
ay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLmh0bWw6IEFk
ZGVkLgorCiAyMDExLTExLTAyICBFcmlrIEFydmlkc3NvbiAgPGFydkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gbm9uIGV4aXN0aW5nIGZpbGU7IGpzLXRlc3Qt
cG9zdC1mdW5jdGlvbi5qcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29u
dHJvbGxlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVy
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzZkNGQwN2ZmY2NmY2IzMGU3NTVhY2MyNjhlNjc0
Zjc0YWNjYzBlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29u
dHJvbGxlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNSBAQAorIAorVGVzdCBwcmVzZW5jZSBv
ZiBNZWRpYUNvbnRyb2xsZXIgY29uc3RydWN0b3IsIG1lZGlhQ29udHJvbGxlciwgYW5kIG1lZGlh
R3JvdXAgYXR0cmlidXRlczoKK0VYUEVDVEVEICh0eXBlb2YoTWVkaWFDb250cm9sbGVyKSA9PSAn
b2JqZWN0JykgT0sKK0VYUEVDVEVEICh2aWRlby5tZWRpYUNvbnRyb2xsZXIgPT0gJ251bGwnKSBP
SworRVhQRUNURUQgKHZpZGVvLm1lZGlhR3JvdXAgPT0gJycpIE9LCisKK1Rlc3QgdGhhdCB0aGUg
cHJlc2VuY2Ugb2YgYSBtZWRpYUdyb3VwIGF0dHJpYnV0ZSBjcmVhdGVzIGEgbWVkaWFDb250cm9s
bGVyOgorRVhQRUNURUQgKHZpZGVvMi5tZWRpYUdyb3VwID09ICdncm91cCcpIE9LCitFWFBFQ1RF
RCAodmlkZW8yLm1lZGlhQ29udHJvbGxlciAhPSAnbnVsbCcpIE9LCisKK1Rlc3QgdGhhdCBzZXR0
aW5nIG1lZGlhR3JvdXAgdG8gYW4gZW1wdHkgc3RyaW5nIHJlbW92ZXMgdGhlIG1lZGlhQ29udHJv
bGxlcjoKK1JVTih2aWRlby5tZWRpYUdyb3VwID0gJycpCitFWFBFQ1RFRCAodmlkZW8ubWVkaWFD
b250cm9sbGVyID09ICdudWxsJykgT0sKKworVGVzdCBtYW51YWxseSBjcmVhdGluZyBhbmQgYXNz
aWduaW5nIGEgbWVkaWFDb250cm9sbGVyIHRvIGEgbWVkaWEgZWxlbWVudDoKK1JVTihjb250cm9s
bGVyID0gbmV3IE1lZGlhQ29udHJvbGxlcigpKQorUlVOKHZpZGVvLm1lZGlhQ29udHJvbGxlciA9
IGNvbnRyb2xsZXIpCitFWFBFQ1RFRCAodmlkZW8ubWVkaWFDb250cm9sbGVyID09ICdbb2JqZWN0
IE1lZGlhQ29udHJvbGxlcl0nKSBPSworCitUZXN0IHRoYXQgdHdvIG1lZGlhIGVsZW1lbnRzIHdp
dGggdGhlIHNhbWUgbWVkaWFHcm91cCBoYXZlIHRoZSBzYW1lIG1lZGlhQ29udHJvbGxlcjoKK1JV
Tih2aWRlby5tZWRpYUdyb3VwID0gJ2dyb3VwJykKK1JVTih2aWRlbzIubWVkaWFHcm91cCA9ICdn
cm91cCcpCitFWFBFQ1RFRCAodmlkZW8ubWVkaWFDb250cm9sbGVyID09PSB2aWRlbzIubWVkaWFD
b250cm9sbGVyID09ICd0cnVlJykgT0sKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2stZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1wbGF5YmFjay1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjhhOGUwOTIxM2VlMWE3MTA3YjgxMWFiOWY4ODNhZDQwMTJhM2ZhNgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2st
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKKyAKK1JVTihjb250cm9sbGVyID0gdmlkZW8u
bWVkaWFDb250cm9sbGVyKQorRVZFTlQoY2FucGxheXRocm91Z2gpCitSVU4oY29udHJvbGxlci5j
dXJyZW50VGltZSA9IDUpCitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUgPT0gJzUnKSBPSwor
RVhQRUNURUQgKHZpZGVvMi5jdXJyZW50VGltZSA9PSAnNScpIE9LCitSVU4odmlkZW8ucGxheSgp
KQorUlVOKHZpZGVvMi5wbGF5KCkpCitSVU4oY29udHJvbGxlci5wbGF5KCkpCitFVkVOVChwbGF5
aW5nKQorRVhQRUNURUQgKGNvbnRyb2xsZXIucGF1c2VkID09ICdmYWxzZScpIE9LCitFVkVOVChl
bmRlZCkKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlh
LWNvbnRyb2xsZXItcGxheWJhY2suaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRy
b2xsZXItcGxheWJhY2suaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YzJiODNlZjFhYTg4OTZkN2MyMjA3Zjdh
OTQ2NDkwZjNjY2Y1ZjJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVk
aWEtY29udHJvbGxlci1wbGF5YmFjay5odG1sCkBAIC0wLDAgKzEsNDkgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQgc3JjPW1lZGlhLWZpbGUu
anM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+
CisKKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgdmFyIGNvbnRyb2xsZXI7CisgICAgICAgIHZh
ciB2aWRlbzI7CisKKyAgICAgICAgZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgICAgICAgICB2aWRl
byA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2aWRlbycpWzBdOworICAgICAgICAg
ICAgdmlkZW8yID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3ZpZGVvJylbMV07Cisg
ICAgICAgICAgICBydW4oJ2NvbnRyb2xsZXIgPSB2aWRlby5tZWRpYUNvbnRyb2xsZXInKTsKKyAg
ICAgICAgICAgIGNvbnRyb2xsZXIuYWRkRXZlbnRMaXN0ZW5lcignY2FucGxheXRocm91Z2gnLCBj
YW5wbGF5dGhyb3VnaCwgdHJ1ZSk7CisgICAgICAgICAgICBzZXRTcmNCeVRhZ05hbWUoJ3ZpZGVv
JywgZmluZE1lZGlhRmlsZSgndmlkZW8nLCAnY29udGVudC90ZXN0JykpOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBmdW5jdGlvbiBjYW5wbGF5dGhyb3VnaCgpIHsKKyAgICAgICAgICAg
IGNvbnNvbGVXcml0ZSgiRVZFTlQoY2FucGxheXRocm91Z2gpIik7CisgICAgICAgICAgICBjb250
cm9sbGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NhbnBsYXl0aHJvdWdoJywgY2FucGxheXRocm91
Z2gsIHRydWUpOworICAgICAgICAgICAgcnVuKCdjb250cm9sbGVyLmN1cnJlbnRUaW1lID0gNScp
OworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5jdXJyZW50VGltZScsIDUpOworICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlbzIuY3VycmVudFRpbWUnLCA1KTsKKyAgICAgICAg
ICAgIHJ1bigndmlkZW8ucGxheSgpJyk7CisgICAgICAgICAgICBydW4oJ3ZpZGVvMi5wbGF5KCkn
KTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIuYWRkRXZlbnRMaXN0ZW5lcigncGxheWluZycsIHBs
YXlpbmcsIHRydWUpOworICAgICAgICAgICAgcnVuKCdjb250cm9sbGVyLnBsYXkoKScpOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBwbGF5aW5nKCkgeyAKKyAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgiRVZFTlQocGxheWluZykiKTsKKyAgICAgICAgICAgIGNvbnRyb2xs
ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGxheWluZycsIHBsYXlpbmcsIHRydWUpOworICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCdjb250cm9sbGVyLnBhdXNlZCcsIGZhbHNlKTsKKyAgICAgICAg
ICAgIGNvbnRyb2xsZXIuYWRkRXZlbnRMaXN0ZW5lcignZW5kZWQnLCBlbmRlZCwgdHJ1ZSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBlbmRlZCgpIHsgCisgICAgICAgICAgICBjb25z
b2xlV3JpdGUoIkVWRU5UKGVuZGVkKSIpOworICAgICAgICAgICAgY29udHJvbGxlci5yZW1vdmVF
dmVudExpc3RlbmVyKCdlbmRlZCcsIGVuZGVkLCB0cnVlKTsKKyAgICAgICAgICAgIGVuZFRlc3Qo
KTsKKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkg
b25sb2FkPSJzdGFydCgpIj4KKyAgICAgICAgPHZpZGVvIG1lZGlhR3JvdXA9Imdyb3VwIiBjb250
cm9scz48L3ZpZGVvPgorICAgICAgICA8dmlkZW8gbWVkaWFHcm91cD0iZ3JvdXAiIGNvbnRyb2xz
PjwvdmlkZW8+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbCBi
L0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGU1
OTY3NTRkNWFiYjFjM2U3ZWRmMTQyOWM2OTNhOGI4Nzg0ZmEwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci5odG1sCkBAIC0wLDAgKzEsNDUgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQgc3Jj
PW1lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPXZpZGVvLXRlc3Qu
anM+PC9zY3JpcHQ+CisKKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgdmFyIGNvbnRyb2xsZXI7
CisgICAgICAgIHZhciB2aWRlbzI7CisKKyAgICAgICAgZnVuY3Rpb24gc3RhcnQoKSB7CisgICAg
ICAgICAgICB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2aWRlbycpWzBd
OworICAgICAgICAgICAgdmlkZW8yID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3Zp
ZGVvJylbMV07CisKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCBwcmVzZW5jZSBvZiBN
ZWRpYUNvbnRyb2xsZXIgY29uc3RydWN0b3IsIG1lZGlhQ29udHJvbGxlciwgYW5kIG1lZGlhR3Jv
dXAgYXR0cmlidXRlczoiKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHlwZW9mKE1lZGlh
Q29udHJvbGxlcikiLCAib2JqZWN0Iik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVv
Lm1lZGlhQ29udHJvbGxlciIsIG51bGwpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRl
by5tZWRpYUdyb3VwIiwgIiIpOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAg
ICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCB0aGF0IHRoZSBwcmVzZW5jZSBvZiBhIG1lZGlhR3Jv
dXAgYXR0cmlidXRlIGNyZWF0ZXMgYSBtZWRpYUNvbnRyb2xsZXI6IikKKyAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgidmlkZW8yLm1lZGlhR3JvdXAiLCAnZ3JvdXAnKTsKKyAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgidmlkZW8yLm1lZGlhQ29udHJvbGxlciIsIG51bGwsICIhPSIpOworICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCB0
aGF0IHNldHRpbmcgbWVkaWFHcm91cCB0byBhbiBlbXB0eSBzdHJpbmcgcmVtb3ZlcyB0aGUgbWVk
aWFDb250cm9sbGVyOiIpCisgICAgICAgICAgICBydW4oInZpZGVvLm1lZGlhR3JvdXAgPSAnJyIp
OworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5tZWRpYUNvbnRyb2xsZXIiLCBudWxs
KTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIlRlc3QgbWFudWFsbHkgY3JlYXRpbmcgYW5kIGFzc2lnbmluZyBhIG1lZGlhQ29udHJvbGxl
ciB0byBhIG1lZGlhIGVsZW1lbnQ6IikKKyAgICAgICAgICAgIHJ1bigiY29udHJvbGxlciA9IG5l
dyBNZWRpYUNvbnRyb2xsZXIoKSIpOworICAgICAgICAgICAgcnVuKCJ2aWRlby5tZWRpYUNvbnRy
b2xsZXIgPSBjb250cm9sbGVyIik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm1l
ZGlhQ29udHJvbGxlciIsIGNvbnRyb2xsZXIpOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCIi
KTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCB0aGF0IHR3byBtZWRpYSBlbGVtZW50
cyB3aXRoIHRoZSBzYW1lIG1lZGlhR3JvdXAgaGF2ZSB0aGUgc2FtZSBtZWRpYUNvbnRyb2xsZXI6
IikKKyAgICAgICAgICAgIHJ1bigidmlkZW8ubWVkaWFHcm91cCA9ICdncm91cCciKTsKKyAgICAg
ICAgICAgIHJ1bigidmlkZW8yLm1lZGlhR3JvdXAgPSAnZ3JvdXAnIik7CisgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoInZpZGVvLm1lZGlhQ29udHJvbGxlciA9PT0gdmlkZW8yLm1lZGlhQ29udHJv
bGxlciIsIHRydWUpOworICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICB9CisgICAgICAg
IDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgorICAg
ICAgICA8dmlkZW8+PC92aWRlbz4KKyAgICAgICAgPHZpZGVvIG1lZGlhZ3JvdXA9Imdyb3VwIj48
L3ZpZGVvPgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113399</attachid>
            <date>2011-11-02 16:38:29 -0700</date>
            <delta_ts>2011-11-03 09:20:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71341-20111102163828.patch</filename>
            <type>text/plain</type>
            <size>25532</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkxMTkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDg1
OTFhODg4NDU1YjhmMWU1ZTYzYmU3NzkyNjhhNTE2NDhmNDIzZmEuLjcxNWU4OTRlZTVmMDUwYWQ1
NjgwNzk5MTdmNThhYjg5YjA2ZTkyMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDExLTExLTAyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBDbG9jayBjbGFzcyBhbmQgcGxhdGZvcm0tc3BlY2lmaWMgaW1wbGVtZW50
YXRpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzEzNDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgV1RGX1VTRV9DT1JFQVVESU8gbWFjcm8gZm9yIHVzZSBieSBQbGF0Zm9ybUNsb2NrQ0EuCisK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMS0xMS0wMiAgRGVhbiBKYWNrc29uICA8
ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIEVOQUJMRV9DU1NfU0hBREVSUyBmbGFnCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggNmZjYTU2OWUwODM1NTE2OWNjNTk0MTk5ODdlZGYxYWI4ZGMwMjNmZC4uZGI5
MGVmNjQyOTliOWY2YjYyOGNkZjNiMzMzMDQxZjIyMzQxYTM1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDUwIEBACisyMDExLTExLTAyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBDbG9jayBjbGFzcyBhbmQgcGxhdGZvcm0tc3BlY2lmaWMgaW1wbGVtZW50
YXRpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzEzNDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBO
byBuZXcgdGVzdHM7IHRoZXNlIGNsYXNzZXMgd2lsbCBiZSB1c2VkIGFuZCB0ZXN0ZWQgYnkgdGhl
IE1lZGlhQ29udHJvbGxlciBmZWF0dXJlLgorCisgICAgICAgIEFkZHMgYSBhYnN0cmFjdCBDbG9j
ayBjbGFzcyBhbmQgdHdvIGNvbmNyZXRlLCBwbGF0Zm9ybS1zcGVjaWZpYyBzdWJjbGFzc2VzLgor
CisgICAgICAgIENsb2NrIHByb3ZpZGVzIGEgYmFzaWMgaW50ZXJmYWNlIGZvciBzdGFydGluZywg
c3RvcHBpbmcsIGFuZCBxdWVyeWluZyBhIGdlbmVyaWMgdGltZWxpbmUuCisgICAgICAgIFBsYXRm
b3JtQ2xvY2tDQSBpbXBsZW1lbnRzIHRoaXMgaW50ZXJmYWNlIHVzaW5nIGEgQ29yZUF1ZGlvIENB
Q2xvY2sgb2JqZWN0LCB3aGljaCB1c2VzCisgICAgICAgIHRoZSBkZWZhdWx0IGF1ZGlvIGRldmlj
ZSdzIGhhcmR3YXJlIGNsb2NrIGFzIGEgdGltaW5nIHNvdXJjZS4gUGxhdGZvcm1DbG9ja1BPU0lY
IAorICAgICAgICBpbXBsZW1lbnRzIHRoaXMgaW50ZXJmYWNlIHVzaW5nIGdldHRpbWVvZmRheSgp
IGFzIGl0cyB0aW1pbmcgc291cmNlLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL0Nsb2NrLmNwcDogQWRkZWQuCisgICAg
ICAgIChDbG9jazo6Y3JlYXRlKTogQ3JlYXRlcyBhIHBsYXRmb3JtLXNwZWNpZmljIGNsb2NrLgor
ICAgICAgICAqIHBsYXRmb3JtL0Nsb2NrLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2xv
Y2s6On5DbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpDbG9jazo6Q2xvY2spOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ0EuY3BwOiBBZGRlZC4KKyAgICAgICAgKFBsYXRm
b3JtQ2xvY2tDQTo6UGxhdGZvcm1DbG9ja0NBKToKKyAgICAgICAgKFBsYXRmb3JtQ2xvY2tDQTo6
flBsYXRmb3JtQ2xvY2tDQSk6CisgICAgICAgIChQbGF0Zm9ybUNsb2NrQ0E6OnNldEN1cnJlbnRU
aW1lKToKKyAgICAgICAgKFBsYXRmb3JtQ2xvY2tDQTo6Y3VycmVudFRpbWUpOgorICAgICAgICAo
UGxhdGZvcm1DbG9ja0NBOjpzZXRQbGF5UmF0ZSk6CisgICAgICAgIChQbGF0Zm9ybUNsb2NrQ0E6
OlBsYXRmb3JtQ2xvY2tDQTo6cGxheVJhdGUpOgorICAgICAgICAoUGxhdGZvcm1DbG9ja0NBOjpz
dGFydCk6CisgICAgICAgIChQbGF0Zm9ybUNsb2NrQ0E6OnN0b3ApOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9QbGF0Zm9ybUNsb2NrQ0EuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybUNsb2NrQ0E6OmlzUnVubmluZyk6CisgICAgICAgICogcGxhdGZvcm0vcG9zaXgvUGxhdGZv
cm1DbG9ja1BPU0lYLmNwcDogQWRkZWQuCisgICAgICAgICh0aW1ldmFsVG9GbG9hdCk6CisgICAg
ICAgICh0aW1ldmFsRGVsdGEpOgorICAgICAgICAoUGxhdGZvcm1DbG9ja1BPU0lYOjpQbGF0Zm9y
bUNsb2NrUE9TSVgpOgorICAgICAgICAoUGxhdGZvcm1DbG9ja1BPU0lYOjpzZXRDdXJyZW50VGlt
ZSk6CisgICAgICAgIChQbGF0Zm9ybUNsb2NrUE9TSVg6OmN1cnJlbnRUaW1lKToKKyAgICAgICAg
KFBsYXRmb3JtQ2xvY2tQT1NJWDo6c2V0UGxheVJhdGUpOgorICAgICAgICAoUGxhdGZvcm1DbG9j
a1BPU0lYOjpQbGF0Zm9ybUNsb2NrUE9TSVg6OnBsYXlSYXRlKToKKyAgICAgICAgKFBsYXRmb3Jt
Q2xvY2tQT1NJWDo6c3RhcnQpOgorICAgICAgICAoUGxhdGZvcm1DbG9ja1BPU0lYOjpzdG9wKToK
KyAgICAgICAgKFBsYXRmb3JtQ2xvY2tQT1NJWDo6bm93KToKKyAgICAgICAgKiBwbGF0Zm9ybS9w
b3NpeC9QbGF0Zm9ybUNsb2NrUE9TSVguaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybUNsb2NrUE9TSVg6OmlzUnVubmluZyk6CisKIDIwMTEtMTEtMDIgIERlYW4gSmFja3NvbiAg
PGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBFTkFCTEVfQ1NTX1NIQURFUlMgZmxhZwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IDEyYzIxNjYxYzAwMDZjZWMyZTFm
NzA5MzE0ZDE5OGQxZDcxMDdhMTEuLjg1YzYwZWNmMzBjMzNiMTE5ZWVmYzI5YTgzMmRhYjc1ZTMy
Mzc0MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKQEAgLTExMDQsNCArMTEw
NCw4IEBACiAjZGVmaW5lIEhBVkVfSU5WRVJURURfV0hFRUxfRVZFTlRTIDEKICNlbmRpZgogCisj
aWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oV0lOKSAmJiAhT1MoV0lOQ0UpICYmICFQTEFU
Rk9STShXSU5fQ0FJUk8pKQorI2RlZmluZSBXVEZfVVNFX0NPUkVBVURJTyAxCisjZW5kaWYKKwog
I2VuZGlmIC8qIFdURl9QbGF0Zm9ybV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzczMjhiM2M1OTI4NmY1MzY3MmI4YTIy
MDEyM2JkM2VkMjFiOWFmMy4uZjE4ZDljMmZhZGQ3NzRjZGVlODlmOGIzOTFjZGI1YWI2MTJiYzVm
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtNTcwMSw2ICs1NzAxLDkgQEAKIAkJQ0Q4MjAzMEQxMzk1QUI2QTAwRjk1NkM2IC8q
IFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMwOTEzOTVBQjZBMDBGOTU2QzYg
LyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSAqLzsgfTsKIAkJQ0Q4
MjAzMTAxMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4MjAzMEUxMzk1QUNFNzAwRjk1
NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5oICovOyB9OwogCQlDRDgyMDMxMTEzOTVBQ0U3MDBG
OTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4MjAzMEYxMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRv
d0FuaW1hdGlvbi5tbSAqLzsgfTsKKwkJQ0RFQTc2MzAxNDYwOEE1MzAwOEIzMUYxIC8qIFBsYXRm
b3JtQ2xvY2tDQS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDREVBNzYyRTE0NjA4NERFMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmNwcCAqLzsg
fTsKKwkJQ0RFQTc2MzQxNDYwQjU2RjAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tQT1NJWC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVBNzYzMjE0
NjBBRTI5MDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja1BPU0lYLmNwcCAqLzsgfTsKKwkJQ0RFQTc2
MzUxNDYwQjcxQTAwOEIzMUYxIC8qIENsb2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUE3NjMzMTQ2MEI0NjIwMDhCMzFGMSAvKiBDbG9jay5j
cHAgKi87IH07CiAJCUNERUE3Qzg0MTI3NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJGdWxsU2NyZWVu
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVBN0M4
MjEyNzYyMzA0MDBCODQ2REQgLyogUmVuZGVyRnVsbFNjcmVlbi5oICovOyB9OwogCQlDREVBN0M4
NTEyNzYyMzA0MDBCODQ2REQgLyogUmVuZGVyRnVsbFNjcmVlbi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVBN0M4MzEyNzYyMzA0MDBCODQ2REQg
LyogUmVuZGVyRnVsbFNjcmVlbi5jcHAgKi87IH07CiAJCUNFMDJGMEM0MTFFODNBREQwMEM2Njg0
QSAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0UwMkYwQzMxMUU4M0FERDAwQzY2ODRBIC8qIFNjcmlwdENvbnRy
b2xsZXJCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTEyOTgzLDYgKzEyOTg2LDEyIEBACiAJCUNEODIwMzBFMTM5NUFDRTcwMEY5NTZDNiAv
KiBXZWJXaW5kb3dBbmltYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViV2luZG93QW5pbWF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEODIw
MzBGMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24ubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJXaW5kb3dBbmltYXRpb24ubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQkQ5M0JBMTMzM0JENEIwMDI1NzBFMyAvKiBmdWxs
c2NyZWVuUXVpY2tUaW1lLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gZnVsbHNjcmVl
blF1aWNrVGltZS5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERUE3NjJDMTQ2
MDgyMjQwMDhCMzFGMSAvKiBDbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREVBNzYyRTE0NjA4NERF
MDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFBsYXRmb3JtQ2xvY2tDQS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNERUE3NjJGMTQ2MDg0RUUwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1DbG9ja0NBLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERUE3NjMxMTQ2MEFFMUIwMDhCMzFGMSAvKiBQbGF0Zm9y
bUNsb2NrUE9TSVguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1D
bG9ja1BPU0lYLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERUE3NjMyMTQ2MEFF
MjkwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrUE9TSVguY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1DbG9ja1BPU0lYLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RFQTc2MzMxNDYwQjQ2MjAwOEIzMUYxIC8qIENsb2NrLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsb2NrLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTdDODIxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxT
Y3JlZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyRnVsbFNjcmVl
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBN0M4MzEyNzYyMzA0MDBCODQ2
REQgLyogUmVuZGVyRnVsbFNjcmVlbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW5kZXJGdWxsU2NyZWVuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0UwMkYwQzMxMUU4M0FERDAwQzY2ODRBIC8qIFNjcmlwdENvbnRyb2xsZXJCYXNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdENvbnRyb2xsZXJCYXNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTAxNyw2ICsxNTAyNiw4IEBACiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTUxNjAzMDBBMENDNDI1MTIwMEM4QUMy
NSAvKiBGaWxlU3lzdGVtUE9TSVguY3BwICovLAorCQkJCUNERUE3NjMxMTQ2MEFFMUIwMDhCMzFG
MSAvKiBQbGF0Zm9ybUNsb2NrUE9TSVguaCAqLywKKwkJCQlDREVBNzYzMjE0NjBBRTI5MDA4QjMx
RjEgLyogUGxhdGZvcm1DbG9ja1BPU0lYLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gcG9zaXg7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTUzOTQsNiArMTU0MDUsOCBAQAogCQkJ
CUNEODIwMzBGMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24ubW0gKi8sCiAJ
CQkJOTM1QzQ3NzIwOUFDNEQ3NzAwQTZBQUI0IC8qIFdoZWVsRXZlbnRNYWMubW0gKi8sCiAJCQkJ
OTM4MEY0NzcwOUExMUFDQzAwMUZEQjM0IC8qIFdpZGdldE1hYy5tbSAqLywKKwkJCQlDREVBNzYy
RTE0NjA4NERFMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmNwcCAqLywKKwkJCQlDREVBNzYy
RjE0NjA4NEVFMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmggKi8sCiAJCQkpOwogCQkJcGF0
aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yMDA0Myw2ICsyMDA1Niw4
IEBACiAJCQkJOTM4MEY0NzEwOUExMUFCNDAwMUZEQjM0IC8qIFdpZGdldC5jcHAgKi8sCiAJCQkJ
OTM4MEY0NzIwOUExMUFCNDAwMUZEQjM0IC8qIFdpZGdldC5oICovLAogCQkJCUUxRTFCRUZGMTE1
RkY2RkIwMDZGNTJDQSAvKiBXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oICovLAorCQkJCUNERUE3NjJD
MTQ2MDgyMjQwMDhCMzFGMSAvKiBDbG9jay5oICovLAorCQkJCUNERUE3NjMzMTQ2MEI0NjIwMDhC
MzFGMSAvKiBDbG9jay5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IHBsYXRmb3JtOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI3MzkxLDYgKzI3NDA2LDkgQEAKIAkJCQlBMEVFMERG
NzE0NEY4MjU1MDBGODBCMEQgLyogV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTNCQjU5RjMxNDU3QTQwRDAwQUM1NkZFIC8qIERvY3VtZW50RXZlbnRRdWV1ZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkyRDhGRUJEQzE0M0UzRUY3MDA3MjUwMkIgLyogQ1NTQ3Jvc3Nm
YWRlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RFQTc2MzAxNDYwOEE1MzAwOEIzMUYx
IC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREVBNzYzNDE0NjBC
NTZGMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja1BPU0lYLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUNERUE3NjM1MTQ2MEI3MUEwMDhCMzFGMSAvKiBDbG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0Nsb2NrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MGM1ODhjNWMyZWRhZWY3OTI4NmMx
ZWVkZDk1YTQyZmY0MTFlNGQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ2xvY2suY3BwCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkNsb2NrLmgiCisKKyNpZiBVU0UoQ09SRUFVRElPKQorICAgICNp
bmNsdWRlICJQbGF0Zm9ybUNsb2NrQ0EuaCIKKyNlbHNlCisgICAgI2luY2x1ZGUgIlBsYXRmb3Jt
Q2xvY2tQT1NJWC5oIgorI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitQYXNz
UmVmUHRyPENsb2NrPiBDbG9jazo6Y3JlYXRlKCkKK3sKKyNpZiBVU0UoQ09SRUFVRElPKQorICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1DbG9ja0NBKCkpOworI2Vsc2UKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtQ2xvY2tQT1NJWCgpKTsKKyNlbmRpZgorfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2xvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0Nsb2NrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODZhZjk1NjU3Mzk4ZDRlNjI5MDI5YjE0YjdmZjBl
MDlmZDJiODZjZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Ns
b2NrLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENsb2NrX2gKKyNkZWZp
bmUgQ2xvY2tfaAorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENsb2NrIDogcHVi
bGljIFJlZkNvdW50ZWQ8Q2xvY2s+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxD
bG9jaz4gY3JlYXRlKCk7CisgICAgdmlydHVhbCB+Q2xvY2soKSB7IH0KKworICAgIHZpcnR1YWwg
dm9pZCBzZXRDdXJyZW50VGltZShmbG9hdCkgPSAwOworICAgIHZpcnR1YWwgZmxvYXQgY3VycmVu
dFRpbWUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGxheVJhdGUoZmxvYXQp
ID0gMDsKKyAgICB2aXJ0dWFsIGZsb2F0IHBsYXlSYXRlKCkgY29uc3QgPSAwOworCisgICAgdmly
dHVhbCB2b2lkIHN0YXJ0KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc1J1bm5pbmcoKSBjb25zdCA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICBD
bG9jaygpIHsgfQorfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1BsYXRmb3JtQ2xvY2tDQS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdiNzU3NTJjMWNlZmY4MDQz
NmQzMDk2MTAwYTg2Zjc2Nzg4YWVmMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ0EuY3BwCkBAIC0wLDAgKzEsMTE4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKENPUkVBVURJTykKKworI2luY2x1
ZGUgIlBsYXRmb3JtQ2xvY2tDQS5oIgorCisjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCisj
aW5jbHVkZSA8QXVkaW9Ub29sYm94L0NvcmVBdWRpb0Nsb2NrLmg+CisjaW5jbHVkZSA8Q29yZUF1
ZGlvL0F1ZGlvSGFyZHdhcmUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1BsYXRm
b3JtQ2xvY2tDQTo6UGxhdGZvcm1DbG9ja0NBKCkKKyAgICA6IG1fY2xvY2soMCkKKyAgICAsIG1f
cnVubmluZyhmYWxzZSkKK3sKKyAgICBDQUNsb2NrTmV3KDAsICZtX2Nsb2NrKTsKKyAgICBVSW50
MzIgdGltZWJhc2UgPSBrQ0FDbG9ja1RpbWViYXNlX0F1ZGlvRGV2aWNlOworICAgIFVJbnQzMiB0
aW1lYmFzZVNpemUgPSBzaXplb2YodGltZWJhc2UpOworICAgIENBQ2xvY2tTZXRQcm9wZXJ0eSht
X2Nsb2NrLCBrQ0FDbG9ja1Byb3BlcnR5X0ludGVybmFsVGltZWJhc2UsIHRpbWViYXNlU2l6ZSwg
JnRpbWViYXNlKTsKKworICAgIEF1ZGlvT2JqZWN0SUQgZGVmYXVsdEF1ZGlvT3V0cHV0ID0gMDsK
KyAgICBVSW50MzIgZGVmYXVsdEF1ZGlvT3V0cHV0U2l6ZSA9IHNpemVvZihkZWZhdWx0QXVkaW9P
dXRwdXQpOworCisgICAgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MgYWRkcmVzczsKKyAgICBh
ZGRyZXNzLm1TZWxlY3RvciA9IGtBdWRpb0hhcmR3YXJlUHJvcGVydHlEZWZhdWx0T3V0cHV0RGV2
aWNlOworICAgIGFkZHJlc3MubVNjb3BlICAgID0ga0F1ZGlvT2JqZWN0UHJvcGVydHlTY29wZUds
b2JhbDsKKyAgICBhZGRyZXNzLm1FbGVtZW50ICA9IGtBdWRpb09iamVjdFByb3BlcnR5RWxlbWVu
dE1hc3RlcjsKKworICAgIEF1ZGlvT2JqZWN0R2V0UHJvcGVydHlEYXRhKGtBdWRpb09iamVjdFN5
c3RlbU9iamVjdCwgJmFkZHJlc3MsIDAsIDAsICZkZWZhdWx0QXVkaW9PdXRwdXRTaXplLCAmZGVm
YXVsdEF1ZGlvT3V0cHV0KTsKKyAgICBDQUNsb2NrU2V0UHJvcGVydHkobV9jbG9jaywga0NBQ2xv
Y2tQcm9wZXJ0eV9UaW1lYmFzZVNvdXJjZSwgZGVmYXVsdEF1ZGlvT3V0cHV0U2l6ZSwgJmRlZmF1
bHRBdWRpb091dHB1dCk7Cit9CisKK1BsYXRmb3JtQ2xvY2tDQTo6flBsYXRmb3JtQ2xvY2tDQSgp
Cit7CisgICAgQ0FDbG9ja0Rpc3Bvc2UobV9jbG9jayk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DbG9j
a0NBOjpzZXRDdXJyZW50VGltZShmbG9hdCB0aW1lKQoreworICAgIENBQ2xvY2tUaW1lIGNhVGlt
ZTsKKyAgICBjYVRpbWUuZm9ybWF0ID0ga0NBQ2xvY2tUaW1lRm9ybWF0X1NlY29uZHM7CisgICAg
Y2FUaW1lLnRpbWUuc2Vjb25kcyA9IHRpbWU7CisgICAgQ0FDbG9ja1NldEN1cnJlbnRUaW1lKG1f
Y2xvY2ssICZjYVRpbWUpOworfQorCitmbG9hdCBQbGF0Zm9ybUNsb2NrQ0E6OmN1cnJlbnRUaW1l
KCkgY29uc3QKK3sKKyAgICBDQUNsb2NrVGltZSBjYVRpbWU7CisKKyAgICAvLyBDQUNsb2NrIGRv
ZXMgbm90IHJldHVybiB0aGUgY29ycmVjdCBjdXJyZW50IHRpbWUgd2hlbiBzdG9wcGVkLiBJbnN0
ZWFkLCBxdWVyeSBmb3IKKyAgICAvLyB3aGF0IGlzIHRoZSBzdGFydCB0aW1lLCBpLmUuIHdoYXQg
dGhlIGN1cnJlbnQgdGltZSB3aWxsIGJlIHdoZW4gc3RhcnRlZC4KKyAgICBpZiAobV9ydW5uaW5n
KSB7CisgICAgICAgIGlmIChDQUNsb2NrR2V0Q3VycmVudFRpbWUobV9jbG9jaywga0NBQ2xvY2tU
aW1lRm9ybWF0X1NlY29uZHMsICZjYVRpbWUpID09IG5vRXJyKQorICAgICAgICAgICAgcmV0dXJu
IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY2FUaW1lLnRpbWUuc2Vjb25kcyk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgaWYgKENBQ2xvY2tHZXRTdGFydFRpbWUobV9jbG9jaywga0NBQ2xvY2tUaW1l
Rm9ybWF0X1NlY29uZHMsICZjYVRpbWUpID09IG5vRXJyKQorICAgICAgICAgICAgcmV0dXJuIG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQoY2FUaW1lLnRpbWUuc2Vjb25kcyk7CisgICAgfQorICAgIHJl
dHVybiAwOworfQorCit2b2lkIFBsYXRmb3JtQ2xvY2tDQTo6c2V0UGxheVJhdGUoZmxvYXQgcmF0
ZSkKK3sKKyAgICBDQUNsb2NrU2V0UGxheVJhdGUobV9jbG9jaywgcmF0ZSk7Cit9CisKK2Zsb2F0
IFBsYXRmb3JtQ2xvY2tDQTo6UGxhdGZvcm1DbG9ja0NBOjpwbGF5UmF0ZSgpIGNvbnN0Cit7Cisg
ICAgZG91YmxlIHJhdGUgPSAwOworICAgIGlmIChDQUNsb2NrR2V0UGxheVJhdGUobV9jbG9jaywg
JnJhdGUpID09IG5vRXJyKQorICAgICAgICByZXR1cm4gbmFycm93UHJlY2lzaW9uVG9GbG9hdChy
YXRlKTsKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBQbGF0Zm9ybUNsb2NrQ0E6OnN0YXJ0KCkK
K3sKKyAgICBpZiAobV9ydW5uaW5nKQorICAgICAgICByZXR1cm47CisgICAgbV9ydW5uaW5nID0g
dHJ1ZTsKKyAgICBDQUNsb2NrU3RhcnQobV9jbG9jayk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DbG9j
a0NBOjpzdG9wKCkKK3sKKyAgICBpZiAoIW1fcnVubmluZykKKyAgICAgICAgcmV0dXJuOworICAg
IG1fcnVubmluZyA9IGZhbHNlOworICAgIENBQ2xvY2tTdG9wKG1fY2xvY2spOworfQorCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtQ2xv
Y2tDQS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtQ2xvY2tDQS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmIxMDFkN2E5NWQyMzY1MzFhODZhMzdhMTZkOTYyNTAyYTI0ZTYzYWUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1DbG9ja0NB
LmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGxhdGZvcm1DbG9ja0NBX2gK
KyNkZWZpbmUgUGxhdGZvcm1DbG9ja0NBX2gKKworI2lmIFVTRShDT1JFQVVESU8pCisKKyNpbmNs
dWRlICJDbG9jay5oIgorCit0eXBlZGVmIHN0cnVjdCBPcGFxdWVDQUNsb2NrICpDQUNsb2NrUmVm
OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBsYXRmb3JtQ2xvY2tDQSA6IHB1Ymxp
YyBDbG9jayB7CitwdWJsaWM6CisgICAgUGxhdGZvcm1DbG9ja0NBKCk7CisgICAgdmlydHVhbCB+
UGxhdGZvcm1DbG9ja0NBKCk7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHNldEN1cnJl
bnRUaW1lKGZsb2F0KTsKKyAgICB2aXJ0dWFsIGZsb2F0IGN1cnJlbnRUaW1lKCkgY29uc3Q7CisK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0UGxheVJhdGUoZmxvYXQpOworICAgIHZpcnR1YWwgZmxvYXQg
cGxheVJhdGUoKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpOworICAgIHZpcnR1
YWwgdm9pZCBzdG9wKCk7CisgICAgdmlydHVhbCBib29sIGlzUnVubmluZygpIGNvbnN0IHsgcmV0
dXJuIG1fcnVubmluZzsgfQorCisgICAgQ0FDbG9ja1JlZiBtX2Nsb2NrOworICAgIGJvb2wgbV9y
dW5uaW5nOworfTsKKworfQorCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9QbGF0Zm9ybUNsb2NrUE9TSVguY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcG9zaXgvUGxhdGZvcm1DbG9ja1BPU0lYLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
MDUzNzVjNmJhZTI5NjMxNDU4NTJjYjczMTVlZTRlMjk3NDBiYjgxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvUGxhdGZvcm1DbG9ja1BPU0lYLmNwcApA
QCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1DbG9ja1BPU0lYLmgiCisKKyNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIK
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0YXRpYyBmbG9hdCB0aW1ldmFsVG9GbG9h
dCh0aW1ldmFsIHZhbCkKK3sKKyAgICByZXR1cm4gdmFsLnR2X3NlYyArICh2YWwudHZfdXNlYyAv
IDEwMDAwMDAuMGYpOworfQorCitzdGF0aWMgdGltZXZhbCB0aW1ldmFsRGVsdGEodGltZXZhbCBm
aXJzdCwgdGltZXZhbCBzZWNvbmQpCit7CisgICAgdGltZXZhbCBkZWx0YTsKKyAgICBkZWx0YS50
dl9zZWMgPSBmaXJzdC50dl9zZWMgLSBzZWNvbmQudHZfc2VjOworICAgIGRlbHRhLnR2X3VzZWMg
PSBmaXJzdC50dl91c2VjIC0gc2Vjb25kLnR2X3VzZWM7CisgICAgaWYgKGRlbHRhLnR2X3VzZWMg
PCAwKSB7CisgICAgICAgIGRlbHRhLnR2X3VzZWMgKz0gMTAwMDAwMDsKKyAgICAgICAgZGVsdGEu
dHZfc2VjLS07CisgICAgfQorICAgIHJldHVybiBkZWx0YTsKK30KKworUGxhdGZvcm1DbG9ja1BP
U0lYOjpQbGF0Zm9ybUNsb2NrUE9TSVgoKQorICAgIDogbV9ydW5uaW5nKGZhbHNlKQorICAgICwg
bV9yYXRlKDEpCisgICAgLCBtX29mZnNldCgwKQoreworICAgIG1fc3RhcnRUaW1lID0gbV9sYXN0
VGltZSA9IG5vdygpOworfQorCit2b2lkIFBsYXRmb3JtQ2xvY2tQT1NJWDo6c2V0Q3VycmVudFRp
bWUoZmxvYXQgdGltZSkKK3sKKyAgICBtX3N0YXJ0VGltZSA9IG1fbGFzdFRpbWUgPSBub3coKTsK
KyAgICBtX29mZnNldCA9IHRpbWU7Cit9CisKK2Zsb2F0IFBsYXRmb3JtQ2xvY2tQT1NJWDo6Y3Vy
cmVudFRpbWUoKSBjb25zdAoreworICAgIGlmIChtX3J1bm5pbmcpCisgICAgICAgIG1fbGFzdFRp
bWUgPSBub3coKTsKKyAgICBmbG9hdCB0aW1lID0gKHRpbWV2YWxUb0Zsb2F0KHRpbWV2YWxEZWx0
YShtX2xhc3RUaW1lLCBtX3N0YXJ0VGltZSkpICogbV9yYXRlKSArIG1fb2Zmc2V0OworICAgIHJl
dHVybiB0aW1lOworfQorCit2b2lkIFBsYXRmb3JtQ2xvY2tQT1NJWDo6c2V0UGxheVJhdGUoZmxv
YXQgcmF0ZSkKK3sKKyAgICBtX29mZnNldCA9IGN1cnJlbnRUaW1lKCk7CisgICAgbV9sYXN0VGlt
ZSA9IG1fc3RhcnRUaW1lID0gbm93KCk7CisgICAgbV9yYXRlID0gcmF0ZTsKK30KKwordm9pZCBQ
bGF0Zm9ybUNsb2NrUE9TSVg6OnN0YXJ0KCkKK3sKKyAgICBpZiAobV9ydW5uaW5nKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2xhc3RUaW1lID0gbV9zdGFydFRpbWUgPSBub3coKTsKKyAgICBt
X3J1bm5pbmcgPSB0cnVlOworfQorCit2b2lkIFBsYXRmb3JtQ2xvY2tQT1NJWDo6c3RvcCgpCit7
CisgICAgaWYgKCFtX3J1bm5pbmcpCisgICAgICAgIHJldHVybjsKKworICAgIG1fb2Zmc2V0ID0g
Y3VycmVudFRpbWUoKTsKKyAgICBtX2xhc3RUaW1lID0gbV9zdGFydFRpbWUgPSBub3coKTsKKyAg
ICBtX3J1bm5pbmcgPSBmYWxzZTsKK30KKwordGltZXZhbCBQbGF0Zm9ybUNsb2NrUE9TSVg6Om5v
dygpIGNvbnN0Cit7CisgICAgdGltZXZhbCB2YWw7CisgICAgZ2V0dGltZW9mZGF5KCZ2YWwsIDAp
OworICAgIHJldHVybiB2YWw7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9wb3NpeC9QbGF0Zm9ybUNsb2NrUE9TSVguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bv
c2l4L1BsYXRmb3JtQ2xvY2tQT1NJWC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxOTcyMmUzMjYwZjYwMmQ1Zjc5
MmM2MmY1YzJhOTkyZDM5MDczY2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9wb3NpeC9QbGF0Zm9ybUNsb2NrUE9TSVguaApAQCAtMCwwICsxLDYwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBQbGF0Zm9ybUNsb2NrUE9TSVhfaAorI2RlZmluZSBQbGF0Zm9ybUNsb2Nr
UE9TSVhfaAorCisjaW5jbHVkZSAiQ2xvY2suaCIKKyNpbmNsdWRlIDx0aW1lLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGxhdGZvcm1DbG9ja1BPU0lYIDogcHVibGljIENsb2Nr
IHsKK3B1YmxpYzoKKyAgICBQbGF0Zm9ybUNsb2NrUE9TSVgoKTsKKworcHJpdmF0ZToKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRpbWUoZmxvYXQpOworICAgIHZpcnR1YWwgZmxvYXQgY3Vy
cmVudFRpbWUoKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5UmF0ZShmbG9hdCk7
CisgICAgdmlydHVhbCBmbG9hdCBwbGF5UmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmF0ZTsgfQor
CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNSdW5uaW5nKCkgY29uc3QgeyByZXR1cm4gbV9ydW5uaW5nOyB9CisK
KyAgICB0aW1ldmFsIG5vdygpIGNvbnN0OworCisgICAgYm9vbCBtX3J1bm5pbmc7CisgICAgZmxv
YXQgbV9yYXRlOworICAgIGZsb2F0IG1fb2Zmc2V0OworICAgIHRpbWV2YWwgbV9zdGFydFRpbWU7
CisgICAgbXV0YWJsZSB0aW1ldmFsIG1fbGFzdFRpbWU7Cit9OworCit9CisKKyNlbmRpZgo=
</data>
<flag name="review"
          id="111754"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113401</attachid>
            <date>2011-11-02 16:40:01 -0700</date>
            <delta_ts>2011-11-02 16:40:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71341-20111102163959.patch</filename>
            <type>text/plain</type>
            <size>71789</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkxMTkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkYjkwZWY2NDI5OWI5ZjZi
NjI4Y2RmM2IzMzMwNDFmMjIzNDFhMzVhLi4zZGZjODhjMWU4ZDIzYzM4ZDBiNWE4ZTkxYWJlN2Qw
NDI3YWM4ZDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTU1IEBACiAyMDExLTExLTAyICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCisgICAgICAgIEltcGxlbWVudCBNZWRpYUNv
bnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTM0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBtZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWwKKyAgICAgICAgICAg
ICAgIG1lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbAorCisgICAgICAgIEFkZHMgc3VwcG9ydCBm
b3IgdGhlIE1lZGlhQ29udHJvbGxlciBET00gb2JqZWN0LCBhbmQgdGhlIG1lZGlhZ3JvdXAgYW5k
IG1lZGlhY29udHJvbGxlcgorICAgICAgICBIVE1MTWVkaWFFbGVtZW50IGF0dHJpYnV0ZXMuCisK
KyAgICAgICAgTWVkaWFDb250cm9sbGVyIGlzIGFuIERPTSBvYmplY3Qgd2hpY2ggc3luY2hyb25p
emVzIHBsYXliYWNrIG9mIG11bHRpcGxlIEhUTUxNZWRpYUVsZW1lbnRzLiBJdCBjYW4KKyAgICAg
ICAgZWl0aGVyIGJlIGNyZWF0ZWQgYnkgYSBwYWdlIHNjcmlwdCBhbmQgYXNzaWduZWQgdG8gYSBI
VE1MTWVkaWFFbGVtZW50IHVzaW5nIHRoZSBtZWRpYUNvbnRyb2xsZXIgcHJvcGVydHksCisgICAg
ICAgIG9yIGFsbCBIVE1MTWVkaWFFbGVtZW50cyB3aXRoIGlkZW50aWNhbCBtZWRpYWdyb3VwIGF0
dHJpYnV0ZXMgd2lsbCBoYXZlIGEgTWVkaWFDb250cm9sbGVyIGFzc2lnbmVkIAorICAgICAgICBh
dXRvbWF0aWNhbGx5LgorCisgICAgICAgIEFkZCBhbiBhYnN0cmFjdCBpbnRlcmZhY2UgaW1wbGVt
ZW50ZWQgYnkgYm90aCBNZWRpYUNvbnRyb2xsZXIgYW5kIEhUTUxNZWRpYUVsZW1lbnQuCisgICAg
ICAgICogaHRtbC9NZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2U6On5NZWRpYUNvbnRyb2xsZXJJbnRlcmZh
Y2UpOgorCisgICAgICAgIEFkZCB0aGUgTWVkaWFDb250cm9sbGVyIG9iamVjdCBhbmQgSURMLgor
ICAgICAgICAqIGh0bWwvTWVkaWFDb250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChtZWRp
YUdyb3VwVG9NZWRpYUNvbnRyb2xsZXJNYXApOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpt
ZWRpYUNvbnRyb2xsZXJGb3JNZWRpYUdyb3VwKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6
Y3JlYXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6TWVkaWFDb250cm9sbGVyKToKKyAg
ICAgICAgKE1lZGlhQ29udHJvbGxlcjo6fk1lZGlhQ29udHJvbGxlcik6CisgICAgICAgIChNZWRp
YUNvbnRyb2xsZXI6OmFkZE1lZGlhRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6
OnJlbW92ZU1lZGlhRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmNvbnRhaW5z
TWVkaWFFbGVtZW50KToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6YnVmZmVyZWQpOgorICAg
ICAgICAoTWVkaWFDb250cm9sbGVyOjpzZWVrYWJsZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6OnBsYXllZCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmR1cmF0aW9uKToKKyAgICAg
ICAgKE1lZGlhQ29udHJvbGxlcjo6Y3VycmVudFRpbWUpOgorICAgICAgICAoTWVkaWFDb250cm9s
bGVyOjpzZXRDdXJyZW50VGltZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnBsYXkpOgor
ICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpwYXVzZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xs
ZXI6OnNldERlZmF1bHRQbGF5YmFja1JhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpz
ZXRQbGF5YmFja1JhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpzZXRWb2x1bWUpOgor
ICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpzZXRNdXRlZCk6CisgICAgICAgIChNZWRpYUNvbnRy
b2xsZXI6OnVwZGF0ZVJlYWR5U3RhdGUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjp1cGRh
dGVQbGF5YmFja1N0YXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6dXBkYXRlTWVkaWFF
bGVtZW50cyk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnNjaGVkdWxlRXZlbnQpOgorICAg
ICAgICAoTWVkaWFDb250cm9sbGVyOjphc3luY0V2ZW50VGltZXJGaXJlZCk6CisgICAgICAgIChN
ZWRpYUNvbnRyb2xsZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoTWVkaWFD
b250cm9sbGVyOjpoYXNBdWRpbyk6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6Omhhc1ZpZGVv
KToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6aGFzQ2xvc2VkQ2FwdGlvbnMpOgorICAgICAg
ICAoTWVkaWFDb250cm9sbGVyOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUpOgorICAgICAgICAo
TWVkaWFDb250cm9sbGVyOjpzdXBwb3J0c1NjYW5uaW5nKToKKyAgICAgICAgKE1lZGlhQ29udHJv
bGxlcjo6YmVnaW5TY3J1YmJpbmcpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjplbmRTY3J1
YmJpbmcpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpjYW5QbGF5KToKKyAgICAgICAgKE1l
ZGlhQ29udHJvbGxlcjo6aXNMaXZlU3RyZWFtKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6
aXNMb2FkaW5nKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6cmV0dXJuVG9SZWFsdGltZSk6
CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmlzQmxvY2tlZCk6CisgICAgICAgIChNZWRpYUNv
bnRyb2xsZXI6Omhhc0VuZGVkKToKKyAgICAgICAgKiBodG1sL01lZGlhQ29udHJvbGxlci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6bWVkaWFHcm91cCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnBhdXNlZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnRyb2xsZXI6OmRlZmF1bHRQbGF5YmFja1JhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1JhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sbGVyOjp2b2x1bWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
bGVyOjptdXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xsZXI6OnJlYWR5U3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1N0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6c3VwcG9ydHNGdWxsc2NyZWVuKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6aXNGdWxsc2NyZWVuKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6Y2xvc2VkQ2FwdGlvbnNWaXNpYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6cmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb250cm9sbGVyOjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbGxlcjo6dG9NZWRpYUNvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sbGVyOjpldmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sbGVyOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAqIGh0
bWwvTWVkaWFDb250cm9sbGVyLmlkbDogQWRkZWQuCisKKyAgICAgICAgQWRkIGNvbnZlbmllbmNl
IGZ1bmN0aW9ucyB0byBUaW1lUmFuZ2VzIHdoaWNoIGNhbiBjYWxjdWxhdGUgaW50ZXJzZWN0aW9u
cyBhbmQKKyAgICAgICAgdW5pb25zIGJldHdlZW4gVGltZVJhbmdlcyBvYmplY3RzLgorICAgICAg
ICAqIGh0bWwvVGltZVJhbmdlcy5jcHA6CisgICAgICAgIChUaW1lUmFuZ2VzOjpjb3B5KToKKyAg
ICAgICAgKFRpbWVSYW5nZXM6OmludmVydCk6CisgICAgICAgIChUaW1lUmFuZ2VzOjppbnRlcnNl
Y3RXaXRoKToKKyAgICAgICAgKFRpbWVSYW5nZXM6OnVuaW9uV2l0aCk6CisgICAgICAgICogaHRt
bC9UaW1lUmFuZ2VzLmg6CisKKyAgICAgICAgQWRkIE1lZGlhQ29udHJvbGxlckNvbnN0cnVjdG9y
IHRvIHRoZSBXaW5kb3cgb2JqZWN0LgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoKKwor
ICAgICAgICBBZGQgdGhlIHR3byBuZXcgYXR0cmlidXRlIG5hbWVzLCBtZWRpYWdyb3VwIGFuZCBt
ZWRpYWNvbnRyb2xsZXIuCisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisK
KyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBuZXcgYXR0cmlidXRlcywgYW5kIGFkZCBvdmVy
cmlkZGVuIGJlaGF2aW9yIHdoZW4gYSBtZWRpYSBlbGVtZW50CisgICAgICAgIGhhcyBhIGN1cnJl
bnQgbWVkaWEgY29udHJvbGxlcjoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRDdXJyZW50VGltZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5YmFja1JhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlSW50ZXJuYWwpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVBsYXlTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWthYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxheWluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplbmRlZFBsYXliYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6dXNlckNhbmNlbGxlZExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6bWVkaWFHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpzZXRNZWRpYUdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpzZXRNZWRpYUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6dXBkYXRlTWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmlzQmxvY2tlZE9uTWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmlzTG9h
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojppc0xpdmVTdHJlYW0p
OgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGw6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpKU0hUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhQ29udHJvbGxlcik6CisKKyAgICAgICAg
QWRkIGEgZnVuY3Rpb24gInNlZWthYmxlIiB3aGljaCByZXR1cm5zIGEgVGltZVJhbmdlcyBjb250
YWluaW5nIHRoZSBzZWVrYWJsZSB0aW1lIHJhbmdlcworICAgICAgICBpbiBhIG1lZGlhIGVsZW1l
bnQuICBCeSBkZWZhdWx0IHRoaXMgaXMgYSBzaW5nbGUgcmFuZ2Ugb2YgWzAsIG1heFRpbWVTZWVr
YWJsZV0uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNlZWthYmxlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
SW50ZXJmYWNlOjpzZWVrYWJsZSk6CisKKyAgICAgICAgU3VwcG9ydCBmdW5jdGlvbnMgdG8gY2Fz
dCBiZXR3ZWVuIE1lZGlhQ29udHJvbGxlciBhbmQgRXZlbnRUYXJnZXQuCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAg
ICAgICAgKiBkb20vRXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJn
ZXQ6OnRvTWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaDoKKwor
ICAgICAgICBCb2lsZXJwbGF0ZSB0byBzdXBwb3J0IGNyZWF0aW5nIHRoZSBkZXJpdmVkIHNvdXJj
ZXMgZm9yIE1lZGlhQ29udHJvbGxlciBhbmQgYWRkaW5nIG5ldyBzb3VyY2VzCisgICAgICAgIHRv
IHRoZSBwcm9qZWN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisyMDExLTExLTAyICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCiAgICAgICAgIEFkZCBDbG9jayBjbGFzcyBhbmQg
cGxhdGZvcm0tc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zLgogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEzNDEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKaW5kZXggYjRjMjA2NjIwZTZkMTU0Y2I0ZWMzZTJjZmU1YzgwMWU1ZDAzZDU0Yy4uNWQy
NjhiYThiODg4ZWMxNWU5ODliZWY2YjNiNmY4NjM3ZmI1YjRhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCkBAIC0yNzYsNiArMjc2LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgS2V5
Ym9hcmRFdmVudCBcCiAgICAgTG9jYXRpb24gXAogICAgIExvd1Bhc3MyRmlsdGVyTm9kZSBcCisg
ICAgTWVkaWFDb250cm9sbGVyIFwKICAgICBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUgXAog
ICAgIE1lZGlhRXJyb3IgXAogICAgIE1lZGlhTGlzdCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjE4ZDljMmZhZGQ3NzRjZGVl
ODlmOGIzOTFjZGI1YWI2MTJiYzVmYy4uNjYzMmQ4ZTc0M2E4OTEzNDY4ODEwNzllMzg1ZmE5YmNh
YTZmMTc5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtNTY5NSw2ICs1Njk1LDggQEAKIAkJQ0QwREJGRUUxNDIyNzY4NTAwMjgw
MjYzIC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMTUud2F2IGluIENvcHkgQXVkaW8g
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMERCRTBEMTQy
Mjc1OTUwMDI4MDI2MyAvKiBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzE1LndhdiAqLzsg
fTsKIAkJQ0QwREJGRUYxNDIyNzY4NTAwMjgwMjYzIC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9U
MzQ1X1AzMzAud2F2IGluIENvcHkgQXVkaW8gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEMERCRTBFMTQyMjc1OTUwMDI4MDI2MyAvKiBJUkNfQ29tcG9zaXRl
X0NfUjAxOTVfVDM0NV9QMzMwLndhdiAqLzsgfTsKIAkJQ0QwREJGRjAxNDIyNzY4NTAwMjgwMjYz
IC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzNDUud2F2IGluIENvcHkgQXVkaW8gUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMERCRTBGMTQyMjc1
OTUwMDI4MDI2MyAvKiBJUkNfQ29tcG9zaXRlX0NfUjAxOTVfVDM0NV9QMzQ1LndhdiAqLzsgfTsK
KwkJQ0QyN0Y2RTUxNDU3Njg1QTAwNzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjdGNkUyMTQ1NzY3
NTgwMDc4MjA3RCAvKiBKU01lZGlhQ29udHJvbGxlci5jcHAgKi87IH07CisJCUNEMjdGNkU3MTQ1
NzcwRDMwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyN0Y2RTYxNDU3NzBEMzAwNzgyMDdEIC8qIE1l
ZGlhQ29udHJvbGxlci5jcHAgKi87IH07CiAJCUNEODIwMzBBMTM5NUFCNkEwMEY5NTZDNiAvKiBX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMwNjEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUNEODIwMzBCMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0Q4MjAzMDcxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXIubW0gKi87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1Xbm8tdW5kZWYi
OyB9OyB9OwogCQlDRDgyMDMwQzEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVu
SFVEV2luZG93Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0Q4MjAzMDgxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVl
bkhVRFdpbmRvd0NvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtNTcwMiwxMCArNTcwNCwxMyBAQAogCQlDRDgyMDMxMDEzOTVBQ0U3
MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMwRTEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2lu
ZG93QW5pbWF0aW9uLmggKi87IH07CiAJCUNEODIwMzExMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJX
aW5kb3dBbmltYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDgyMDMwRjEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLm1t
ICovOyB9OwogCQlDREVBNzYzMDE0NjA4QTUzMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUE3NjJF
MTQ2MDg0REUwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwICovOyB9OworCQlDREQ1MjVE
NzE0NUI2REQwMDA4RDIwNEQgLyogSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjY1Q0NDMTQ1QjZBRkUw
MEM0QzdBQSAvKiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwICovOyB9OwogCQlDREVBNzYz
NDE0NjBCNTZGMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja1BPU0lYLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUE3NjMyMTQ2MEFFMjkwMDhCMzFG
MSAvKiBQbGF0Zm9ybUNsb2NrUE9TSVguY3BwICovOyB9OwogCQlDREVBNzYzNTE0NjBCNzFBMDA4
QjMxRjEgLyogQ2xvY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RFQTc2MzMxNDYwQjQ2MjAwOEIzMUYxIC8qIENsb2NrLmNwcCAqLzsgfTsKIAkJ
Q0RFQTdDODQxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUE3QzgyMTI3NjIzMDQwMEI4
NDZERCAvKiBSZW5kZXJGdWxsU2NyZWVuLmggKi87IH07CiAJCUNERUE3Qzg1MTI3NjIzMDQwMEI4
NDZERCAvKiBSZW5kZXJGdWxsU2NyZWVuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENERUE3QzgzMTI3NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJGdWxs
U2NyZWVuLmNwcCAqLzsgfTsKKwkJQ0RGNjVDQzgxNDVCMUU3NTAwQzRDN0FBIC8qIE1lZGlhQ29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0QyN0Y2RTQxNDU3Njc4NzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNERjY1Q0NBMTQ1QjQ0ODgw
MEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjY1Q0M5MTQ1QjQzQTcwMEM0QzdBQSAvKiBN
ZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlDRTAyRjBDNDExRTgzQUREMDBDNjY4NEEgLyogU2NyaXB0Q29u
dHJvbGxlckJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENFMDJGMEMzMTFFODNBREQwMEM2Njg0QSAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMDU3RkE1
MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwNTdGQTMxMjIwNzMxMTAw
QTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgKi87IH07CiAJCUNFMDU3RkE2
MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDU3RkE0MTIyMDczMTEwMEE0
NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTI5NzgsNiArMTI5ODMsMTEgQEAKIAkJQ0Qw
REJFMEQxNDIyNzU5NTAwMjgwMjYzIC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMTUu
d2F2ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gYXVk
aW8ud2F2OyBuYW1lID0gSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMxNS53YXY7IHBhdGgg
PSBwbGF0Zm9ybS9hdWRpby9yZXNvdXJjZXMvSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMx
NS53YXY7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJQ0QwREJFMEUxNDIyNzU5NTAw
MjgwMjYzIC8qIElSQ19Db21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzMzAud2F2ICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gYXVkaW8ud2F2OyBuYW1lID0g
SVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMzMC53YXY7IHBhdGggPSBwbGF0Zm9ybS9hdWRp
by9yZXNvdXJjZXMvSVJDX0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDMzMC53YXY7IHNvdXJjZVRy
ZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJQ0QwREJFMEYxNDIyNzU5NTAwMjgwMjYzIC8qIElSQ19D
b21wb3NpdGVfQ19SMDE5NV9UMzQ1X1AzNDUud2F2ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gYXVkaW8ud2F2OyBuYW1lID0gSVJDX0NvbXBvc2l0ZV9D
X1IwMTk1X1QzNDVfUDM0NS53YXY7IHBhdGggPSBwbGF0Zm9ybS9hdWRpby9yZXNvdXJjZXMvSVJD
X0NvbXBvc2l0ZV9DX1IwMTk1X1QzNDVfUDM0NS53YXY7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9P
VDsgfTsKKwkJQ0QyN0Y2RTAxNDU3NUMxQjAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gTWVkaWFDb250cm9sbGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0QyN0Y2RTIxNDU3Njc1ODAwNzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFDb250cm9sbGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QyN0Y2RTMxNDU3Njc1ODAwNzgyMDdEIC8qIEpT
TWVkaWFDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVk
aWFDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMjdGNkU0MTQ1
NzY3ODcwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWVkaWFDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEMjdGNkU2MTQ1NzcwRDMwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb250cm9sbGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q0RTBBRkExMUY3QkMyNzAwOUQzODExIC8qIGZ1
bGxzY3JlZW4uY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBmdWxsc2NyZWVuLmNzczsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4MjAzMDYxMzk1QUI2QTAwRjk1NkM2IC8q
IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRDgyMDMwNzEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMjk5NCw2ICsxMzAwNCw4IEBACiAJCUNERUE3NjMzMTQ2MEI0NjIwMDhCMzFGMSAv
KiBDbG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbG9jay5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERUE3QzgyMTI3NjIzMDQwMEI4NDZE
RCAvKiBSZW5kZXJGdWxsU2NyZWVuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbmRlckZ1bGxTY3JlZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTdD
ODMxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyRnVsbFNjcmVlbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNERjY1Q0M5MTQ1QjQzQTcwMEM0QzdBQSAvKiBNZWRpYUNvbnRy
b2xsZXJJbnRlcmZhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFD
b250cm9sbGVySW50ZXJmYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERjY1
Q0NDMTQ1QjZBRkUwMEM0QzdBQSAvKiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9t
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UwMkYwQzMxMUU4M0FERDAwQzY2
ODRBIC8qIFNjcmlwdENvbnRyb2xsZXJCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNjcmlwdENvbnRyb2xsZXJCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNFMDU3RkEzMTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UwNTdGQTQxMjIw
NzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MzMyLDYgKzE3MzQ0LDEwIEBACiAJCQkJRTQ0NjEzQTAw
Q0Q2MzMxMDAwRkFEQTc1IC8qIFZvaWRDYWxsYmFjay5pZGwgKi8sCiAJCQkJRjU1QjNEQUIxMjUx
RjEyRDAwM0VGMjY5IC8qIFdlZWtJbnB1dFR5cGUuY3BwICovLAogCQkJCUY1NUIzREFDMTI1MUYx
MkQwMDNFRjI2OSAvKiBXZWVrSW5wdXRUeXBlLmggKi8sCisJCQkJQ0QyN0Y2RTAxNDU3NUMxQjAw
NzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5pZGwgKi8sCisJCQkJQ0QyN0Y2RTQxNDU3Njc4NzAw
NzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5oICovLAorCQkJCUNEMjdGNkU2MTQ1NzcwRDMwMDc4
MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuY3BwICovLAorCQkJCUNERjY1Q0M5MTQ1QjQzQTcwMEM0
QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0g
aHRtbDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNzU2NSw2ICsxNzU4MSw4IEBA
CiAJCUE4M0I3OTA4MENDQUZGMkIwMDBCMDgyNSAvKiBIVE1MICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDRDI3RjZFMjE0NTc2NzU4MDA3ODIwN0QgLyog
SlNNZWRpYUNvbnRyb2xsZXIuY3BwICovLAorCQkJCUNEMjdGNkUzMTQ1NzY3NTgwMDc4MjA3RCAv
KiBKU01lZGlhQ29udHJvbGxlci5oICovLAogCQkJCTQ5RUVDRUYyMTA1MDcwQzQwMDA5OUZBQiAv
KiBKU0FycmF5QnVmZmVyLmNwcCAqLywKIAkJCQk0OUVFQ0VGMzEwNTA3MEM0MDAwOTlGQUIgLyog
SlNBcnJheUJ1ZmZlci5oICovLAogCQkJCTQ5RUVDRjE5MTA1MDcyRjMwMDA5OUZBQiAvKiBKU0Fy
cmF5QnVmZmVyVmlldy5jcHAgKi8sCkBAIC0xOTU3Niw2ICsxOTU5NCw3IEBACiAJCQkJQkNDNDM4
NzcwRTg4NkNDNzAwNTMzREQ1IC8qIEpTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJ
CQkJRTFBRDE0MjIxMjk1RUE3RjAwQUNBOTg5IC8qIEpTSFRNTElucHV0RWxlbWVudEN1c3RvbS5o
ICovLAogCQkJCUUxQUQxMzlBMTI5NUQ5MjYwMEFDQTk4OSAvKiBKU0hUTUxMaW5rRWxlbWVudEN1
c3RvbS5jcHAgKi8sCisJCQkJQ0RGNjVDQ0MxNDVCNkFGRTAwQzRDN0FBIC8qIEpTSFRNTE1lZGlh
RWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJQkMzMDVDQTMwQzA3ODFCQjAwQ0QyMEYwIC8qIEpT
SFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUUxQUQxNDI0MTI5NUVBOTUwMEFD
QTk4OSAvKiBKU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmggKi8sCiAJCQkJNDQ4QUQyN0EwQTQ4
MTM3OTAwMjNEMTc5IC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCAqLywKQEAg
LTI0NTYwLDYgKzI0NTc5LDggQEAKIAkJCQlGRDYyRjUyRTE0NTg5OEQ4MDA5NEIwRUQgLyogQXVk
aW9Tb3VyY2VQcm92aWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ4RkVCREQxNDNF
M0VGNzAwNzI1MDJCIC8qIENTU0Nyb3NzZmFkZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkz
MTY5Mzc5QzE0NjA5QzZDMDBDMDEzNjIgLyogRHJhZ1Nlc3Npb24uaCBpbiBIZWFkZXJzICovLAor
CQkJCUNERjY1Q0M4MTQ1QjFFNzUwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUNERjY1Q0NBMTQ1QjQ0ODgwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXJJ
bnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjc0MDcsNiArMjc0MjgsOSBAQAogCQkJCUEz
QkI1OUYzMTQ1N0E0MEQwMEFDNTZGRSAvKiBEb2N1bWVudEV2ZW50UXVldWUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMkQ4RkVCREMxNDNFM0VGNzAwNzI1MDJCIC8qIENTU0Nyb3NzZmFkZVZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERUE3NjMwMTQ2MDhBNTMwMDhCMzFGMSAvKiBQbGF0
Zm9ybUNsb2NrQ0EuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0QyN0Y2RTUxNDU3Njg1QTAwNzgy
MDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEMjdGNkU3
MTQ1NzcwRDMwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQ0RENTI1RDcxNDVCNkREMDAwOEQyMDREIC8qIEpTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDREVBNzYzNDE0NjBCNTZGMDA4QjMxRjEgLyogUGxhdGZv
cm1DbG9ja1BPU0lYLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERUE3NjM1MTQ2MEI3MUEwMDhC
MzFGMSAvKiBDbG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yM2NhYTRkOTExNGZiMGJkNmU3OTNlYWUyZjliYTBjMzc0N2YyMmY5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MTWVkaWFFbGVtZW50
Q3VzdG9tLmNwcApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTSFRNTE1l
ZGlhRWxlbWVudC5oIgorCisjaW5jbHVkZSAiSlNNZWRpYUNvbnRyb2xsZXIuaCIKKworI2lmIEVO
QUJMRShWSURFTykKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsK
Kwordm9pZCBKU0hUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhQ29udHJvbGxlcihFeGVjU3RhdGUq
LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIEhUTUxNZWRpYUVsZW1lbnQqIGltcCA9IHN0YXRpY19j
YXN0PEhUTUxNZWRpYUVsZW1lbnQqPihpbXBsKCkpOworICAgIGltcC0+c2V0TWVkaWFDb250cm9s
bGVyKHRvTWVkaWFDb250cm9sbGVyKHZhbHVlKSk7Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXQuaAppbmRleCBjNmYxZjNkNDQzYjg1YjZmNjQyMGNlZWM5NGJlZmIyMjc4NjJk
NDQ2Li5iYWYwZWZjODlkNGFkZWFhYjMxYzcyMzMwZjhkMTVkZTE5ZDk4OGUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXQuaApAQCAtNTUsNiArNTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgY2xhc3MgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q7CiAgICAgY2xhc3MgSmF2YVNjcmlwdEF1
ZGlvTm9kZTsKICAgICBjbGFzcyBMb2NhbE1lZGlhU3RyZWFtOworICAgIGNsYXNzIE1lZGlhQ29u
dHJvbGxlcjsKICAgICBjbGFzcyBNZWRpYVN0cmVhbTsKICAgICBjbGFzcyBNZXNzYWdlUG9ydDsK
ICAgICBjbGFzcyBOb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4K
aW5kZXggNmJkYjJlMjFjYTk2YjNlMTBkM2JlMWM3MWVmNzMwZDI3ZjAwZDkxZC4uOTJmZTZiMjM2
M2FjY2I3YTNmNjNiYWUyMDFlYmRiZjBiYTc1MDU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXRGYWN0b3J5LmluCkBAIC0xMyw2ICsxMyw3IEBAIElEQlRyYW5zYWN0aW9uIGNvbmRp
dGlvbmFsPUlOREVYRURfREFUQUJBU0UKIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0IGNvbmRpdGlv
bmFsPUlOREVYRURfREFUQUJBU0UKIEphdmFTY3JpcHRBdWRpb05vZGUgY29uZGl0aW9uYWw9V0VC
X0FVRElPCiBMb2NhbE1lZGlhU3RyZWFtIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQorTWVkaWFD
b250cm9sbGVyCiBNZWRpYVN0cmVhbSBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIE1lc3NhZ2VQ
b3J0CiBOb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVO
YW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCmluZGV4
IGYxZTM1NGI2MzFmNDliYTNhYzEwMWU1NTEzZDI3NWFjNWQyZDA5ODIuLmFlNWZiNzFjZWVlODY0
MDk4MzZmZTJkNTAxZWMzZmE5OTBiYTM3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dHJpYnV0ZU5hbWVzLmluCkBAIC0xNDgsNiArMTQ4LDcgQEAgbWF4CiBtYXhsZW5ndGgKIG1heXNj
cmlwdAogbWVkaWEKK21lZGlhZ3JvdXAKIG1ldGhvZAogbWluCiBtdWx0aXBsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggYzkwNjVmNjkxYTljMGNhZTllNmVm
NjQzMmI4MTdjZmMyYmQ3OTcwZi4uNWMyOWM2YjkxNDBhOGFkMjZhZDZmOWU5ZjJlYTg1ZmJhZmVl
MTRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01Miw2
ICs1Miw3IEBACiAjaW5jbHVkZSAiSFRNTFNvdXJjZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
VmlkZW9FbGVtZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lZGlhQ29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIk1lZGlhQ29udHJvbHMuaCIKICNpbmNsdWRlICJNZWRpYURv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFFcnJvci5oIgpAQCAtMjI4LDYgKzIyOSw5IEBAIEhU
TUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV90ZXh0VHJhY2tzLnNpemUoKTsgKytpKQogICAgICAgICBtX3RleHRUcmFja3Nb
aV0tPnNldENsaWVudCgwKTsKICNlbmRpZgorCisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyKQor
ICAgICAgICBtX21lZGlhQ29udHJvbGxlci0+cmVtb3ZlTWVkaWFFbGVtZW50KHRoaXMpOwogfQog
CiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKQEAg
LTI5NCw3ICsyOTgsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmli
dXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgaWYgKCFhdXRvcGxheSgpICYmIG1fcGxheWVy
KQogICAgICAgICAgICAgbV9wbGF5ZXItPnNldFByZWxvYWQobV9wcmVsb2FkKTsKIAotICAgIH0g
ZWxzZSBpZiAoYXR0ck5hbWUgPT0gb25hYm9ydEF0dHIpCisgICAgfSBlbHNlIGlmIChhdHRyTmFt
ZSA9PSBtZWRpYWdyb3VwQXR0cikKKyAgICAgICAgc2V0TWVkaWFHcm91cChhdHRyLT52YWx1ZSgp
KTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBvbmFib3J0QXR0cikKICAgICAgICAgc2V0QXR0
cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYWJvcnRFdmVudCwgY3JlYXRlQXR0cmli
dXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0g
b25iZWZvcmVsb2FkQXR0cikKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkuYmVmb3JlbG9hZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRo
aXMsIGF0dHIpKTsKQEAgLTU4NCwxMCArNTkwLDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
cHJlcGFyZUZvckxvYWQoKQogICAgICAgICBtX3NlZWtpbmcgPSBmYWxzZTsKICAgICAgICAgaW52
YWxpZGF0ZUNhY2hlZFRpbWUoKTsKICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCku
ZW1wdGllZEV2ZW50KTsKKyAgICAgICAgdXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CiAgICAgfQog
CiAgICAgLy8gNSAtIFNldCB0aGUgcGxheWJhY2tSYXRlIGF0dHJpYnV0ZSB0byB0aGUgdmFsdWUg
b2YgdGhlIGRlZmF1bHRQbGF5YmFja1JhdGUgYXR0cmlidXRlLgotICAgIHNldFBsYXliYWNrUmF0
ZShkZWZhdWx0UGxheWJhY2tSYXRlKCkpOworICAgIHNldFBsYXliYWNrUmF0ZShtX21lZGlhQ29u
dHJvbGxlciA/IG1fbWVkaWFDb250cm9sbGVyLT5kZWZhdWx0UGxheWJhY2tSYXRlKCkgOiBkZWZh
dWx0UGxheWJhY2tSYXRlKCkpOwogCiAgICAgLy8gNiAtIFNldCB0aGUgZXJyb3IgYXR0cmlidXRl
IHRvIG51bGwgYW5kIHRoZSBhdXRvcGxheWluZyBmbGFnIHRvIHRydWUuCiAgICAgbV9lcnJvciA9
IDA7CkBAIC0xMjI0LDYgKzEyMzEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFJlYWR5
U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgc3RhdGUpCiAgICAgfQogCiAgICAgdXBkYXRl
UGxheVN0YXRlKCk7CisgICAgdXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CiB9CiAKICNpZiBFTkFC
TEUoTUVESUFfU09VUkNFKQpAQCAtMTUyMyw2ICsxNTMxLDEwIEBAIGZsb2F0IEhUTUxNZWRpYUVs
ZW1lbnQ6OmN1cnJlbnRUaW1lKCkgY29uc3QKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRD
dXJyZW50VGltZShmbG9hdCB0aW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBpZiAobV9t
ZWRpYUNvbnRyb2xsZXIpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KICAgICBzZWVrKHRpbWUsIGVjKTsKIH0KIApAQCAtMTU3Myw4ICsx
NTg1LDE2IEBAIGZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXliYWNrUmF0ZSgpIGNvbnN0CiAK
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlKGZsb2F0IHJhdGUpCiB7Ci0g
ICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlKCVmKSIsIHJh
dGUpOworICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
c2V0UGxheWJhY2tSYXRlSW50ZXJuYWwocmF0ZSk7Cit9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6c2V0UGxheWJhY2tSYXRlSW50ZXJuYWwoZmxvYXQgcmF0ZSkKK3sKKyAgICBMT0coTWVkaWEs
ICJIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5YmFja1JhdGVJbnRlcm5hbCglZikiLCByYXRlKTsK
KyAgICAKICAgICBpZiAobV9wbGF5YmFja1JhdGUgIT0gcmF0ZSkgewogICAgICAgICBtX3BsYXli
YWNrUmF0ZSA9IHJhdGU7CiAgICAgICAgIGludmFsaWRhdGVDYWNoZWRUaW1lKCk7CkBAIC0xNjkw
LDYgKzE3MTAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXlJbnRlcm5hbCgpCiAgICAg
bV9hdXRvcGxheWluZyA9IGZhbHNlOwogCiAgICAgdXBkYXRlUGxheVN0YXRlKCk7CisgICAgdXBk
YXRlTWVkaWFDb250cm9sbGVyKCk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGF1c2Uo
KQpAQCAtMTg4MSw3ICsxOTAyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0b2dnbGVQbGF5
U3RhdGUoKQogICAgIC8vIFdlIGNhbiBzYWZlbHkgY2FsbCB0aGUgaW50ZXJuYWwgcGxheS9wYXVz
ZSBtZXRob2RzLCB3aGljaCBkb24ndCBjaGVjayByZXN0cmljdGlvbnMsIGJlY2F1c2UKICAgICAv
LyB0aGlzIG1ldGhvZCBpcyBvbmx5IGNhbGxlZCBmcm9tIHRoZSBidWlsdC1pbiBtZWRpYSBjb250
cm9sbGVyCiAgICAgaWYgKGNhblBsYXkoKSkgewotICAgICAgICBzZXRQbGF5YmFja1JhdGUoZGVm
YXVsdFBsYXliYWNrUmF0ZSgpKTsKKyAgICAgICAgc2V0UGxheWJhY2tSYXRlKG1fbWVkaWFDb250
cm9sbGVyID8gbV9tZWRpYUNvbnRyb2xsZXItPmRlZmF1bHRQbGF5YmFja1JhdGUoKSA6IGRlZmF1
bHRQbGF5YmFja1JhdGUoKSk7CiAgICAgICAgIHBsYXlJbnRlcm5hbCgpOwogICAgIH0gZWxzZSAK
ICAgICAgICAgcGF1c2VJbnRlcm5hbCgpOwpAQCAtMjIzMCw3ICsyMjUxLDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVDaGFuZ2VkKE1lZGlhUGxheWVyKikKICAgICBm
bG9hdCBub3cgPSBjdXJyZW50VGltZSgpOwogICAgIGZsb2F0IGR1ciA9IGR1cmF0aW9uKCk7CiAg
ICAgaWYgKCFpc25hbihkdXIpICYmIGR1ciAmJiBub3cgPj0gZHVyKSB7Ci0gICAgICAgIGlmIChs
b29wKCkpIHsKKyAgICAgICAgaWYgKGxvb3AoKSAmJiAhbV9tZWRpYUNvbnRyb2xsZXIpIHsKICAg
ICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZEV4Y2VwdGlvbjsKICAgICAgICAgICAgIG1f
c2VudEVuZEV2ZW50ID0gZmFsc2U7CiAgICAgICAgICAgICBzZWVrKDAsIGlnbm9yZWRFeGNlcHRp
b24pOwpAQCAtMjI0Miw2ICsyMjYzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllclRpbWVDaGFuZ2VkKE1lZGlhUGxheWVyKikKICAgICAgICAgICAgIGlmICghbV9zZW50RW5k
RXZlbnQpIHsKICAgICAgICAgICAgICAgICBtX3NlbnRFbmRFdmVudCA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkuZW5kZWRFdmVudCk7CisgICAgICAg
ICAgICAgICAgdXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CkBAIC0yNDI2LDEwICsyNDQ4LDcgQEAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBI
VE1MTWVkaWFFbGVtZW50OjpwbGF5ZWQoKQogCiBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IEhUTUxN
ZWRpYUVsZW1lbnQ6OnNlZWthYmxlKCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRSByZWFsIHJhbmdl
cyBzdXBwb3J0Ci0gICAgaWYgKCFtYXhUaW1lU2Vla2FibGUoKSkKLSAgICAgICAgcmV0dXJuIFRp
bWVSYW5nZXM6OmNyZWF0ZSgpOwotICAgIHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUobWluVGlt
ZVNlZWthYmxlKCksIG1heFRpbWVTZWVrYWJsZSgpKTsKKyAgICByZXR1cm4gbV9wbGF5ZXIgPyBt
X3BsYXllci0+c2Vla2FibGUoKSA6IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOwogfQogCiBib29sIEhU
TUxNZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxheWluZygpIGNvbnN0CkBAIC0yNDM4LDcgKzI0
NTcsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxheWluZygpIGNvbnN0
CiAgICAgLy8gd2hlbiBpdCByYW4gb3V0IG9mIGJ1ZmZlcmVkIGRhdGEuIEEgbW92aWUgaXMgdGhp
cyBzdGF0ZSBpcyAicG90ZW50aWFsbHkgcGxheWluZyIsIG1vZHVsbyB0aGUKICAgICAvLyBjaGVj
a3MgaW4gY291bGRQbGF5SWZFbm91Z2hEYXRhKCkuCiAgICAgYm9vbCBwYXVzZWRUb0J1ZmZlciA9
IG1fcmVhZHlTdGF0ZU1heGltdW0gPj0gSEFWRV9GVVRVUkVfREFUQSAmJiBtX3JlYWR5U3RhdGUg
PCBIQVZFX0ZVVFVSRV9EQVRBOwotICAgIHJldHVybiAocGF1c2VkVG9CdWZmZXIgfHwgbV9yZWFk
eVN0YXRlID49IEhBVkVfRlVUVVJFX0RBVEEpICYmIGNvdWxkUGxheUlmRW5vdWdoRGF0YSgpOwor
ICAgIHJldHVybiAocGF1c2VkVG9CdWZmZXIgfHwgbV9yZWFkeVN0YXRlID49IEhBVkVfRlVUVVJF
X0RBVEEpICYmIGNvdWxkUGxheUlmRW5vdWdoRGF0YSgpICYmICFpc0Jsb2NrZWRPbk1lZGlhQ29u
dHJvbGxlcigpOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNvdWxkUGxheUlmRW5vdWdo
RGF0YSgpIGNvbnN0CkBAIC0yNDYzLDcgKzI0ODIsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6
OmVuZGVkUGxheWJhY2soKSBjb25zdAogICAgIC8vIG9mIHBsYXliYWNrIGlzIGZvcndhcmRzIGFu
ZCB0aGUgbWVkaWEgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgbG9vcCBhdHRyaWJ1dGUgc3BlY2lm
aWVkLAogICAgIGZsb2F0IG5vdyA9IGN1cnJlbnRUaW1lKCk7CiAgICAgaWYgKG1fcGxheWJhY2tS
YXRlID4gMCkKLSAgICAgICAgcmV0dXJuIGR1ciA+IDAgJiYgbm93ID49IGR1ciAmJiAhbG9vcCgp
OworICAgICAgICByZXR1cm4gZHVyID4gMCAmJiBub3cgPj0gZHVyICYmICghbG9vcCgpIHx8IG1f
bWVkaWFDb250cm9sbGVyKTsKIAogICAgIC8vIG9yIHRoZSBjdXJyZW50IHBsYXliYWNrIHBvc2l0
aW9uIGlzIHRoZSBlYXJsaWVzdCBwb3NzaWJsZSBwb3NpdGlvbiBhbmQgdGhlIGRpcmVjdGlvbiAK
ICAgICAvLyBvZiBwbGF5YmFjayBpcyBiYWNrd2FyZHMKQEAgLTI1MDksOCArMjUyOCwxNCBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVZvbHVtZSgpCiAgICAgaWYgKCFwcm9jZXNzaW5n
TWVkaWFQbGF5ZXJDYWxsYmFjaygpKSB7CiAgICAgICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgp
LT5wYWdlKCk7CiAgICAgICAgIGZsb2F0IHZvbHVtZU11bHRpcGxpZXIgPSBwYWdlID8gcGFnZS0+
bWVkaWFWb2x1bWUoKSA6IDE7Ci0gICAgCi0gICAgICAgIG1fcGxheWVyLT5zZXRNdXRlZChtX211
dGVkKTsKKyAgICAgICAgYm9vbCBzaG91bGRNdXRlID0gbV9tdXRlZDsKKworICAgICAgICBpZiAo
bV9tZWRpYUNvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIHZvbHVtZU11bHRpcGxpZXIgKj0gbV9t
ZWRpYUNvbnRyb2xsZXItPnZvbHVtZSgpOworICAgICAgICAgICAgc2hvdWxkTXV0ZSA9IG1fbWVk
aWFDb250cm9sbGVyLT5tdXRlZCgpOworICAgICAgICB9CisKKyAgICAgICAgbV9wbGF5ZXItPnNl
dE11dGVkKHNob3VsZE11dGUpOwogICAgICAgICBtX3BsYXllci0+c2V0Vm9sdW1lKG1fdm9sdW1l
ICogdm9sdW1lTXVsdGlwbGllcik7CiAgICAgfQogCkBAIC0yNTc3LDExICsyNjAyLDEzIEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlUGxheVN0YXRlKCkKICAgICAgICAgaWYgKGhhc01l
ZGlhQ29udHJvbHMoKSkKICAgICAgICAgICAgIG1lZGlhQ29udHJvbHMoKS0+cGxheWJhY2tTdG9w
cGVkKCk7CiAgICAgfQotICAgIAorCisgICAgdXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CisKICAg
ICBpZiAocmVuZGVyZXIoKSkKICAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlRnJvbUVsZW1lbnQo
KTsKIH0KLSAgICAKKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRQYXVzZWRJbnRlcm5hbChi
b29sIGIpCiB7CiAgICAgbV9wYXVzZWRJbnRlcm5hbCA9IGI7CkBAIC0yNjQxLDYgKzI2NjgsNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJDYW5jZWxsZWRMb2FkKCkKIAogICAgIC8vIFJl
c2V0IG1fcmVhZHlTdGF0ZSBzaW5jZSBtX3BsYXllciBpcyBnb25lLgogICAgIG1fcmVhZHlTdGF0
ZSA9IEhBVkVfTk9USElORzsKKyAgICB1cGRhdGVNZWRpYUNvbnRyb2xsZXIoKTsKIH0KIAogYm9v
bCBIVE1MTWVkaWFFbGVtZW50OjpjYW5TdXNwZW5kKCkgY29uc3QKQEAgLTMxMzMsNiArMzE2MSw1
OCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldEl0ZW1WYWx1ZVRleHQoY29uc3QgU3RyaW5n
JiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB9CiAjZW5kaWYKIAorY29uc3QgU3RyaW5nJiBI
VE1MTWVkaWFFbGVtZW50OjptZWRpYUdyb3VwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRp
YUNvbnRyb2xsZXIgPyBtX21lZGlhQ29udHJvbGxlci0+bWVkaWFHcm91cCgpIDogZW1wdHlTdHJp
bmcoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUdyb3VwKGNvbnN0IFN0
cmluZyYgZ3JvdXApCit7CisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyICYmIG1fbWVkaWFDb250
cm9sbGVyLT5tZWRpYUdyb3VwKCkgPT0gZ3JvdXApCisgICAgICAgIHJldHVybjsKKworICAgIHNl
dE1lZGlhQ29udHJvbGxlcihNZWRpYUNvbnRyb2xsZXI6Om1lZGlhQ29udHJvbGxlckZvck1lZGlh
R3JvdXAoZ3JvdXApKTsKK30KKworTWVkaWFDb250cm9sbGVyKiBIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYUNvbnRyb2xsZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX21lZGlhQ29udHJvbGxlci5n
ZXQoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNvbnRyb2xsZXIoUGFz
c1JlZlB0cjxNZWRpYUNvbnRyb2xsZXI+IGNvbnRyb2xsZXIpCit7CisgICAgaWYgKG1fbWVkaWFD
b250cm9sbGVyKQorICAgICAgICBtX21lZGlhQ29udHJvbGxlci0+cmVtb3ZlTWVkaWFFbGVtZW50
KHRoaXMpOworCisgICAgbV9tZWRpYUNvbnRyb2xsZXIgPSBjb250cm9sbGVyOworCisgICAgaWYg
KG1fbWVkaWFDb250cm9sbGVyKQorICAgICAgICBtX21lZGlhQ29udHJvbGxlci0+YWRkTWVkaWFF
bGVtZW50KHRoaXMpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZU1lZGlhQ29u
dHJvbGxlcigpCit7CisgICAgaWYgKCFtX21lZGlhQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJu
OworICAgIG1fbWVkaWFDb250cm9sbGVyLT51cGRhdGVSZWFkeVN0YXRlKCk7CisgICAgbV9tZWRp
YUNvbnRyb2xsZXItPnVwZGF0ZVBsYXliYWNrU3RhdGUoKTsKK30KKworYm9vbCBIVE1MTWVkaWFF
bGVtZW50Ojppc0Jsb2NrZWRPbk1lZGlhQ29udHJvbGxlcigpIGNvbnN0Cit7CisgICAgaWYgKCFt
X21lZGlhQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fbWVk
aWFDb250cm9sbGVyLT5pc0Jsb2NrZWQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBm
bG9hdCBjdXJyZW50VGltZSA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOworICAg
IGlmIChjdXJyZW50VGltZSA8IHN0YXJ0VGltZSgpIHx8IGN1cnJlbnRUaW1lID4gc3RhcnRUaW1l
KCkgKyBkdXJhdGlvbigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxz
ZTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
aW5kZXggMGQyZjlmYzQ5ZTEwMGNiNTE3YmVmMGQxNTBhYzRmNzdhNTc1ZTllYy4uYWRjNzk4N2Zi
N2FiMGUzYmJhNmM2MzQwYTEwZDQ2NmM4YjY3Y2ZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJIVE1MRWxlbWVudC5o
IgogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIk1lZGlhQ2FuU3RhcnRM
aXN0ZW5lci5oIgorI2luY2x1ZGUgIk1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIgogI2luY2x1
ZGUgIk1lZGlhUGxheWVyLmgiCiAKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykK
QEAgLTUwLDYgKzUxLDcgQEAgY2xhc3MgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOwogY2xh
c3MgRXZlbnQ7CiBjbGFzcyBIVE1MU291cmNlRWxlbWVudDsKIGNsYXNzIEhUTUxUcmFja0VsZW1l
bnQ7CitjbGFzcyBNZWRpYUNvbnRyb2xsZXI7CiBjbGFzcyBNZWRpYUNvbnRyb2xzOwogY2xhc3Mg
TWVkaWFFcnJvcjsKIGNsYXNzIEtVUkw7CkBAIC02Myw3ICs2NSw3IEBAIGNsYXNzIFdpZGdldDsK
IC8vIEJ1dCBpdCBjYW4ndCBiZSB1bnRpbCB0aGUgQ2hyb21pdW0gV2ViTWVkaWFQbGF5ZXJDbGll
bnRJbXBsIGNsYXNzIGlzIGZpeGVkIHNvIGl0CiAvLyBubyBsb25nZXIgZGVwZW5kcyBvbiB0eXBl
Y2FzdGluZyBhIE1lZGlhUGxheWVyQ2xpZW50IHRvIGFuIEhUTUxNZWRpYUVsZW1lbnQuCiAKLWNs
YXNzIEhUTUxNZWRpYUVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQsIHB1YmxpYyBNZWRpYVBs
YXllckNsaWVudCwgcHJpdmF0ZSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIsIHB1YmxpYyBBY3RpdmVE
T01PYmplY3QKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQsIHB1
YmxpYyBNZWRpYVBsYXllckNsaWVudCwgcHJpdmF0ZSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIsIHB1
YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UKICNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgLCBwcml2YXRlIFRleHRUcmFja0NsaWVudAogI2Vu
ZGlmCkBAIC0xMTQsNyArMTE2LDYgQEAgcHVibGljOgogICAgIFN0cmluZyBjYW5QbGF5VHlwZShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdDsKIAogLy8gcmVhZHkgc3RhdGUKLSAgICBlbnVt
IFJlYWR5U3RhdGUgeyBIQVZFX05PVEhJTkcsIEhBVkVfTUVUQURBVEEsIEhBVkVfQ1VSUkVOVF9E
QVRBLCBIQVZFX0ZVVFVSRV9EQVRBLCBIQVZFX0VOT1VHSF9EQVRBIH07CiAgICAgUmVhZHlTdGF0
ZSByZWFkeVN0YXRlKCkgY29uc3Q7CiAgICAgYm9vbCBzZWVraW5nKCkgY29uc3Q7CiAKQEAgLTIz
MCw2ICsyMzEsMTIgQEAgcHVibGljOgogICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291
cmNlUHJvdmlkZXIoKTsKICNlbmRpZgogCisgICAgY29uc3QgU3RyaW5nJiBtZWRpYUdyb3VwKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRNZWRpYUdyb3VwKGNvbnN0IFN0cmluZyYpOworCisgICAgTWVk
aWFDb250cm9sbGVyKiBtZWRpYUNvbnRyb2xsZXIoKSBjb25zdDsKKyAgICB2b2lkIHNldE1lZGlh
Q29udHJvbGxlcihQYXNzUmVmUHRyPE1lZGlhQ29udHJvbGxlcj4pOworCiBwcm90ZWN0ZWQ6CiAg
ICAgSFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAg
ICB2aXJ0dWFsIH5IVE1MTWVkaWFFbGVtZW50KCk7CkBAIC0zOTQsNiArNDAxLDggQEAgcHJpdmF0
ZToKICAgICAvLyBQYXVzZXMgcGxheWJhY2sgd2l0aG91dCBjaGFuZ2luZyBhbnkgc3RhdGVzIG9y
IGdlbmVyYXRpbmcgZXZlbnRzCiAgICAgdm9pZCBzZXRQYXVzZWRJbnRlcm5hbChib29sKTsKIAor
ICAgIHZvaWQgc2V0UGxheWJhY2tSYXRlSW50ZXJuYWwoZmxvYXQpOworCiAgICAgdmlydHVhbCB2
b2lkIG1lZGlhQ2FuU3RhcnQoKTsKIAogICAgIHZvaWQgc2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQo
Ym9vbCk7CkBAIC00MTIsNiArNDIxLDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNl
dEl0ZW1WYWx1ZVRleHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogI2VuZGlmCiAK
KyAgICB2b2lkIHVwZGF0ZU1lZGlhQ29udHJvbGxlcigpOworICAgIGJvb2wgaXNCbG9ja2VkT25N
ZWRpYUNvbnRyb2xsZXIoKSBjb25zdDsKKyAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IHsgcmV0
dXJuICFtX2N1cnJlbnRTcmMuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBpc0xpdmVTdHJlYW0oKSBj
b25zdCB7IHJldHVybiBtb3ZpZUxvYWRUeXBlKCkgPT0gTWVkaWFQbGF5ZXI6OkxpdmVTdHJlYW07
IH0KKwogICAgIFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+IG1fbG9hZFRpbWVyOwogICAgIFRpbWVy
PEhUTUxNZWRpYUVsZW1lbnQ+IG1fYXN5bmNFdmVudFRpbWVyOwogICAgIFRpbWVyPEhUTUxNZWRp
YUVsZW1lbnQ+IG1fcHJvZ3Jlc3NFdmVudFRpbWVyOwpAQCAtNTE2LDYgKzUzMCw5IEBAIHByaXZh
dGU6CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNr
PiA+IG1fdGV4dFRyYWNrczsKICNlbmRpZgorCisgICAgZnJpZW5kIGNsYXNzIE1lZGlhQ29udHJv
bGxlcjsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sbGVyPiBtX21lZGlhQ29udHJvbGxlcjsKIH07
CiAKIH0gLy9uYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRs
CmluZGV4IDMzMGFkYmFhZGU3MTAyNjljMmYyZGU1ZWVjNWNjMWUxNjJiMGM5YjUuLjQ5MjEwYjYy
MDI3MjM3MWU0NWFhYjlmYWIxOTFiZjYxMDA0M2NlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmlkbApAQCAtMTE0LDUgKzExNCw4IEBAIG1vZHVsZSBodG1sIHsKICNp
ZiBkZWZpbmVkKEVOQUJMRV9WSURFT19UUkFDSykgJiYgRU5BQkxFX1ZJREVPX1RSQUNLCiAgICAg
W0VuYWJsZWRBdFJ1bnRpbWU9d2Via2l0VmlkZW9UcmFja10gVGV4dFRyYWNrIGFkZFRyYWNrKGlu
IERPTVN0cmluZyBraW5kLCBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyBsYWJlbCwgaW4gW09wdGlv
bmFsXSBET01TdHJpbmcgbGFuZ3VhZ2UpOwogI2VuZGlmCisKKyAgICBhdHRyaWJ1dGUgW1JlZmxl
Y3QsIENvbnZlcnROdWxsVG9OdWxsU3RyaW5nLCBDb252ZXJ0TnVsbFN0cmluZ1RvTnVsbF0gRE9N
U3RyaW5nIG1lZGlhR3JvdXA7CisgICAgYXR0cmlidXRlIFtDdXN0b21TZXR0ZXJdIE1lZGlhQ29u
dHJvbGxlciBtZWRpYUNvbnRyb2xsZXI7CiB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNv
bnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzOWI4NGFmMjU3N2Q5ZTgyYjE1ZTA0NjVmYmYxMTIz
MjQxMDIyODQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29u
dHJvbGxlci5jcHAKQEAgLTAsMCArMSw0NTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoVklERU8pCisjaW5jbHVkZSAiTWVkaWFDb250cm9sbGVyLmgiCisK
KyNpbmNsdWRlICJDbG9jay5oIgorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNs
dWRlICJUaW1lUmFuZ2VzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworc3RhdGlj
IEhhc2hNYXA8U3RyaW5nLCBNZWRpYUNvbnRyb2xsZXIqPiYgbWVkaWFHcm91cFRvTWVkaWFDb250
cm9sbGVyTWFwKCkKK3sKKyAgICBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIE1lZGlhQ29udHJvbGxl
cio+KiBtYXAgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIE1lZGlhQ29udHJvbGxlcio+KCk7CisgICAg
cmV0dXJuICptYXA7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sbGVyPiBNZWRpYUNvbnRy
b2xsZXI6Om1lZGlhQ29udHJvbGxlckZvck1lZGlhR3JvdXAoY29uc3QgU3RyaW5nJiBncm91cCkK
K3sKKyAgICBpZiAoZ3JvdXAuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYg
KGdyb3VwLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoTWVkaWFDb250
cm9sbGVyKiBjb250cm9sbGVyID0gbWVkaWFHcm91cFRvTWVkaWFDb250cm9sbGVyTWFwKCkuZ2V0
KGdyb3VwKSkKKyAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXI7CisKKyAgICBSZWZQdHI8TWVkaWFD
b250cm9sbGVyPiBjb250cm9sbGVyID0gY3JlYXRlKCk7CisgICAgY29udHJvbGxlci0+bV9tZWRp
YUdyb3VwID0gZ3JvdXA7CisgICAgbWVkaWFHcm91cFRvTWVkaWFDb250cm9sbGVyTWFwKCkuc2V0
KGdyb3VwLCBjb250cm9sbGVyLmdldCgpKTsKKyAgICByZXR1cm4gY29udHJvbGxlci5yZWxlYXNl
KCk7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sbGVyPiBNZWRpYUNvbnRyb2xsZXI6OmNy
ZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xsZXIoKSk7Cit9
CisKK01lZGlhQ29udHJvbGxlcjo6TWVkaWFDb250cm9sbGVyKCkKKyAgICA6IG1fcGF1c2VkKGZh
bHNlKQorICAgICwgbV9kZWZhdWx0UGxheWJhY2tSYXRlKDEpCisgICAgLCBtX3BsYXliYWNrUmF0
ZSgxKQorICAgICwgbV92b2x1bWUoMSkKKyAgICAsIG1fbXV0ZWQoZmFsc2UpCisgICAgLCBtX3Jl
YWR5U3RhdGUoSEFWRV9OT1RISU5HKQorICAgICwgbV9wbGF5YmFja1N0YXRlKFdBSVRJTkcpCisg
ICAgLCBtX2FzeW5jRXZlbnRUaW1lcih0aGlzLCAmTWVkaWFDb250cm9sbGVyOjphc3luY0V2ZW50
VGltZXJGaXJlZCkKKyAgICAsIG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGZhbHNlKQorICAgICwg
bV9jbG9jayhDbG9jazo6Y3JlYXRlKCkpCit7Cit9CisKK01lZGlhQ29udHJvbGxlcjo6fk1lZGlh
Q29udHJvbGxlcigpCit7CisgICAgaWYgKCFtX21lZGlhR3JvdXAuaXNFbXB0eSgpKQorICAgICAg
ICBtZWRpYUdyb3VwVG9NZWRpYUNvbnRyb2xsZXJNYXAoKS5yZW1vdmUobV9tZWRpYUdyb3VwKTsK
K30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OmFkZE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVt
ZW50KiBlbGVtZW50KQoreworICAgIEFTU0VSVChlbGVtZW50KTsKKyAgICBBU1NFUlQoIW1fbWVk
aWFFbGVtZW50cy5jb250YWlucyhlbGVtZW50KSk7CisgICAgbV9tZWRpYUVsZW1lbnRzLmFwcGVu
ZChlbGVtZW50KTsKKyAgICB1cGRhdGVSZWFkeVN0YXRlKCk7CisgICAgdXBkYXRlUGxheWJhY2tT
dGF0ZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6cmVtb3ZlTWVkaWFFbGVtZW50KEhU
TUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgQVNTRVJUKGVsZW1lbnQpOworICAgIEFT
U0VSVChtX21lZGlhRWxlbWVudHMuY29udGFpbnMoZWxlbWVudCkpOworICAgIG1fbWVkaWFFbGVt
ZW50cy5yZW1vdmUobV9tZWRpYUVsZW1lbnRzLmZpbmQoZWxlbWVudCkpOworfQorCitib29sIE1l
ZGlhQ29udHJvbGxlcjo6Y29udGFpbnNNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogZWxl
bWVudCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnRzLmNvbnRhaW5zKGVsZW1l
bnQpOworfQorCitQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhQ29udHJvbGxlcjo6YnVmZmVy
ZWQoKSBjb25zdAoreworICAgIGlmIChtX21lZGlhRWxlbWVudHMuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gVGltZVJhbmdlczo6Y3JlYXRlKCk7CisKKyAgICBSZWZQdHI8VGltZVJhbmdlcz4g
YnVmZmVyZWRSYW5nZXMgPSBtX21lZGlhRWxlbWVudHMuZmlyc3QoKS0+YnVmZmVyZWQoKTsKKyAg
ICBmb3IgKHNpemVfdCBpbmRleCA9IDE7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsg
KytpbmRleCkKKyAgICAgICAgYnVmZmVyZWRSYW5nZXMtPmludGVyc2VjdFdpdGgobV9tZWRpYUVs
ZW1lbnRzW2luZGV4XS0+YnVmZmVyZWQoKS5nZXQoKSk7CisgICAgcmV0dXJuIGJ1ZmZlcmVkUmFu
Z2VzOworfQorCitQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhQ29udHJvbGxlcjo6c2Vla2Fi
bGUoKSBjb25zdAoreworICAgIGlmIChtX21lZGlhRWxlbWVudHMuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gVGltZVJhbmdlczo6Y3JlYXRlKCk7CisgICAgCisgICAgUmVmUHRyPFRpbWVSYW5n
ZXM+IHNlZWthYmxlUmFuZ2VzID0gbV9tZWRpYUVsZW1lbnRzLmZpcnN0KCktPnNlZWthYmxlKCk7
CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAxOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXpl
KCk7ICsraW5kZXgpCisgICAgICAgIHNlZWthYmxlUmFuZ2VzLT5pbnRlcnNlY3RXaXRoKG1fbWVk
aWFFbGVtZW50c1tpbmRleF0tPnNlZWthYmxlKCkuZ2V0KCkpOworICAgIHJldHVybiBzZWVrYWJs
ZVJhbmdlczsKK30KKworUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYUNvbnRyb2xsZXI6OnBs
YXllZCgpCit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKyAgICAKKyAgICBSZWZQdHI8VGltZVJhbmdlcz4g
cGxheWVkUmFuZ2VzID0gbV9tZWRpYUVsZW1lbnRzLmZpcnN0KCktPnBsYXllZCgpOworICAgIGZv
ciAoc2l6ZV90IGluZGV4ID0gMTsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2lu
ZGV4KQorICAgICAgICBwbGF5ZWRSYW5nZXMtPnVuaW9uV2l0aChtX21lZGlhRWxlbWVudHNbaW5k
ZXhdLT5wbGF5ZWQoKS5nZXQoKSk7CisgICAgcmV0dXJuIHBsYXllZFJhbmdlczsKK30KKworZmxv
YXQgTWVkaWFDb250cm9sbGVyOjpkdXJhdGlvbigpIGNvbnN0Cit7CisgICAgZmxvYXQgbWF4RHVy
YXRpb24gPSAwOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxl
bWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBtYXhEdXJhdGlvbiA9IG1heChtYXhEdXJh
dGlvbiwgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+ZHVyYXRpb24oKSk7CisgICAgcmV0dXJuIG1h
eER1cmF0aW9uOworfQorCitmbG9hdCBNZWRpYUNvbnRyb2xsZXI6OmN1cnJlbnRUaW1lKCkgY29u
c3QKK3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgCisgICAgcmV0dXJuIG1fY2xvY2stPmN1cnJlbnRUaW1lKCk7CisgICAgCit9CisK
K3ZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXRDdXJyZW50VGltZShmbG9hdCB0aW1lLCBFeGNlcHRp
b25Db2RlJiBjb2RlKQoreworICAgIG1fY2xvY2stPnNldEN1cnJlbnRUaW1lKHRpbWUpOworICAg
IGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyAr
K2luZGV4KQorICAgICAgICBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5zZWVrKHRpbWUsIGNvZGUp
OworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6cGxheSgpCit7CisgICAgaWYgKG1fcGxheWJh
Y2tTdGF0ZSA9PSBFTkRFRCkgeworICAgICAgICBFeGNlcHRpb25Db2RlIGNvZGUgPSAwOworICAg
ICAgICBzZXRDdXJyZW50VGltZSgwLCBjb2RlKTsKKyAgICB9CisKKyAgICBtX3BhdXNlZCA9IGZh
bHNlOworICAgIHVwZGF0ZU1lZGlhRWxlbWVudHMoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xs
ZXI6OnBhdXNlKCkKK3sKKyAgICBtX3BhdXNlZCA9IHRydWU7CisgICAgZm9yIChzaXplX3QgaW5k
ZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAg
IG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPnBhdXNlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9s
bGVyOjpzZXREZWZhdWx0UGxheWJhY2tSYXRlKGZsb2F0IHJhdGUpCit7CisgICAgbV9kZWZhdWx0
UGxheWJhY2tSYXRlID0gcmF0ZTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNldFBsYXli
YWNrUmF0ZShmbG9hdCByYXRlKQoreworICAgIG1fcGxheWJhY2tSYXRlID0gcmF0ZTsKKyAgICBt
X2Nsb2NrLT5zZXRQbGF5UmF0ZShyYXRlKTsKKworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsg
aW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBtX21lZGlh
RWxlbWVudHNbaW5kZXhdLT5zZXRQbGF5YmFja1JhdGUocmF0ZSk7Cit9CisKK3ZvaWQgTWVkaWFD
b250cm9sbGVyOjpzZXRWb2x1bWUoZmxvYXQgbGV2ZWwsIEV4Y2VwdGlvbkNvZGUmKQoreworICAg
IG1fdm9sdW1lID0gbGV2ZWw7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1f
bWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIG1fbWVkaWFFbGVtZW50c1tp
bmRleF0tPnVwZGF0ZVZvbHVtZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6c2V0TXV0
ZWQoYm9vbCBmbGFnKQoreworICAgIG1fbXV0ZWQgPSBmbGFnOworICAgIGZvciAoc2l6ZV90IGlu
ZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAg
ICBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT51cGRhdGVWb2x1bWUoKTsKK30KKwordm9pZCBNZWRp
YUNvbnRyb2xsZXI6OnVwZGF0ZVJlYWR5U3RhdGUoKQoreworICAgIFJlYWR5U3RhdGUgb2xkUmVh
ZHlTdGF0ZSA9IG1fcmVhZHlTdGF0ZTsKKyAgICBSZWFkeVN0YXRlIG5ld1JlYWR5U3RhdGU7CisK
KyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgbmV3UmVhZHlTdGF0
ZSA9IEhBVkVfTk9USElORzsKKyAgICBlbHNlIHsKKyAgICAgICAgbmV3UmVhZHlTdGF0ZSA9IG1f
bWVkaWFFbGVtZW50cy5maXJzdCgpLT5yZWFkeVN0YXRlKCk7CisgICAgICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMTsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAg
ICAgICAgICAgbmV3UmVhZHlTdGF0ZSA9IG1pbihuZXdSZWFkeVN0YXRlLCBtX21lZGlhRWxlbWVu
dHNbaW5kZXhdLT5yZWFkeVN0YXRlKCkpOworICAgIH0KKworICAgIGlmIChuZXdSZWFkeVN0YXRl
ID09IG9sZFJlYWR5U3RhdGUpIAorICAgICAgICByZXR1cm47CisKKyAgICBBdG9taWNTdHJpbmcg
ZXZlbnROYW1lOworICAgIHN3aXRjaCAobmV3UmVhZHlTdGF0ZSkgeworICAgIGNhc2UgSEFWRV9O
T1RISU5HOgorICAgICAgICBldmVudE5hbWUgPSBldmVudE5hbWVzKCkuZW1wdGllZEV2ZW50Owor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEhBVkVfTUVUQURBVEE6CisgICAgICAgIGV2ZW50TmFt
ZSA9IGV2ZW50TmFtZXMoKS5sb2FkZWRtZXRhZGF0YUV2ZW50OworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEhBVkVfQ1VSUkVOVF9EQVRBOgorICAgICAgICBldmVudE5hbWUgPSBldmVudE5hbWVz
KCkubG9hZGVkZGF0YUV2ZW50OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEhBVkVfRlVUVVJF
X0RBVEE6CisgICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS5jYW5wbGF5RXZlbnQ7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgSEFWRV9FTk9VR0hfREFUQToKKyAgICAgICAgZXZlbnRO
YW1lID0gZXZlbnROYW1lcygpLmNhbnBsYXl0aHJvdWdoRXZlbnQ7CisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICBz
Y2hlZHVsZUV2ZW50KGV2ZW50TmFtZSk7CisgICAgbV9yZWFkeVN0YXRlID0gbmV3UmVhZHlTdGF0
ZTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnVwZGF0ZVBsYXliYWNrU3RhdGUoKQorewor
ICAgIFBsYXliYWNrU3RhdGUgb2xkUGxheWJhY2tTdGF0ZSA9IG1fcGxheWJhY2tTdGF0ZTsKKyAg
ICBQbGF5YmFja1N0YXRlIG5ld1BsYXliYWNrU3RhdGU7CisKKyAgICBpZiAobV9tZWRpYUVsZW1l
bnRzLmlzRW1wdHkoKSkKKyAgICAgICAgbmV3UGxheWJhY2tTdGF0ZSA9IFdBSVRJTkc7CisgICAg
ZWxzZSBpZiAoaGFzRW5kZWQoKSkKKyAgICAgICAgbmV3UGxheWJhY2tTdGF0ZSA9IEVOREVEOwor
ICAgIGVsc2UgaWYgKGlzQmxvY2tlZCgpKSAKKyAgICAgICAgbmV3UGxheWJhY2tTdGF0ZSA9IFdB
SVRJTkc7CisgICAgZWxzZQorICAgICAgICBuZXdQbGF5YmFja1N0YXRlID0gUExBWUlORzsKKwor
ICAgIGlmIChuZXdQbGF5YmFja1N0YXRlID09IG9sZFBsYXliYWNrU3RhdGUpCisgICAgICAgIHJl
dHVybjsKKworICAgIEF0b21pY1N0cmluZyBldmVudE5hbWU7CisgICAgc3dpdGNoIChuZXdQbGF5
YmFja1N0YXRlKSB7CisgICAgY2FzZSBXQUlUSU5HOgorICAgICAgICBldmVudE5hbWUgPSBldmVu
dE5hbWVzKCkud2FpdGluZ0V2ZW50OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEVOREVEOgor
ICAgICAgICBldmVudE5hbWUgPSBldmVudE5hbWVzKCkuZW5kZWRFdmVudDsKKyAgICAgICAgbV9w
YXVzZWQgPSB0cnVlOworICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5wYXVzZUV2
ZW50KTsKKyAgICAgICAgbV9jbG9jay0+c3RvcCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFBMQVlJTkc6CisgICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS5wbGF5aW5nRXZlbnQ7
CisgICAgICAgIG1fY2xvY2stPnN0YXJ0KCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICBzY2hlZHVsZUV2ZW50
KGV2ZW50TmFtZSk7CisgICAgbV9wbGF5YmFja1N0YXRlID0gbmV3UGxheWJhY2tTdGF0ZTsKKyAg
ICB1cGRhdGVNZWRpYUVsZW1lbnRzKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjp1cGRh
dGVNZWRpYUVsZW1lbnRzKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwg
bV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRz
W2luZGV4XS0+dXBkYXRlUGxheVN0YXRlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpz
Y2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQoreworICAgIG1fcGVu
ZGluZ0V2ZW50cy5hcHBlbmQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIGZhbHNlLCB0cnVlKSk7
CisgICAgaWYgKCFtX2FzeW5jRXZlbnRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2FzeW5j
RXZlbnRUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjph
c3luY0V2ZW50VGltZXJGaXJlZChUaW1lcjxNZWRpYUNvbnRyb2xsZXI+KikKK3sKKyAgICBWZWN0
b3I8UmVmUHRyPEV2ZW50PiA+IHBlbmRpbmdFdmVudHM7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CisgICAgCisgICAgbV9wZW5kaW5nRXZlbnRzLnN3YXAocGVuZGluZ0V2ZW50cyk7CisgICAg
c2l6ZV90IGNvdW50ID0gcGVuZGluZ0V2ZW50cy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaW5k
ZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KQorICAgICAgICBkaXNwYXRjaEV2ZW50KHBl
bmRpbmdFdmVudHNbaW5kZXhdLnJlbGVhc2UoKSwgZWMpOworfQorCitTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBNZWRpYUNvbnRyb2xsZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAor
eworICAgIGlmIChtX21lZGlhRWxlbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsK
KyAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnRzLmZpcnN0KCktPmRvY3VtZW50KCk7Cit9CisKK2Jv
b2wgTWVkaWFDb250cm9sbGVyOjpoYXNBdWRpbygpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3Qg
aW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKKyAg
ICAgICAgaWYgKG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmhhc0F1ZGlvKCkpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlh
Q29udHJvbGxlcjo6aGFzVmlkZW8oKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0g
MDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlm
IChtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5oYXNWaWRlbygpKQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xs
ZXI6Omhhc0Nsb3NlZENhcHRpb25zKCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9
IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBp
ZiAobV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+aGFzQ2xvc2VkQ2FwdGlvbnMoKSkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVk
aWFDb250cm9sbGVyOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCB2aXNpYmxlKQorewor
ICAgIG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxlID0gdmlzaWJsZTsKKyAgICBmb3IgKHNpemVfdCBp
bmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAg
ICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKHZpc2li
bGUpOworfQorCitib29sIE1lZGlhQ29udHJvbGxlcjo6c3VwcG9ydHNTY2FubmluZygpIGNvbnN0
Cit7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5z
aXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgaWYgKCFtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5z
dXBwb3J0c1NjYW5uaW5nKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6YmVnaW5TY3J1YmJpbmco
KQoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMu
c2l6ZSgpOyArK2luZGV4KQorICAgICAgICBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5iZWdpblNj
cnViYmluZygpOworfQorCit2b2lkIE1lZGlhQ29udHJvbGxlcjo6ZW5kU2NydWJiaW5nKCkKK3sK
KyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUo
KTsgKytpbmRleCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+ZW5kU2NydWJiaW5n
KCk7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9sbGVyOjpjYW5QbGF5KCkgY29uc3QKK3sKKyAgICBm
b3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytp
bmRleCkgeworICAgICAgICBpZiAoIW1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmNhblBsYXkoKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgTWVkaWFDb250cm9sbGVyOjppc0xpdmVTdHJlYW0oKSBjb25zdAoreworICAgIGZvciAo
c2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4
KSB7CisgICAgICAgIGlmICghbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+aXNMaXZlU3RyZWFtKCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQor
Citib29sIE1lZGlhQ29udHJvbGxlcjo6aXNMb2FkaW5nKCkgY29uc3QKK3sKKyAgICBmb3IgKHNp
emVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkg
eworICAgICAgICBpZiAoIW1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmlzTG9hZGluZygpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9p
ZCBNZWRpYUNvbnRyb2xsZXI6OnJldHVyblRvUmVhbHRpbWUoKQoreworICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAg
ICAgICBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5yZXR1cm5Ub1JlYWx0aW1lKCk7Cit9CisKK2Jv
b2wgTWVkaWFDb250cm9sbGVyOjppc0Jsb2NrZWQoKSBjb25zdAoreworICAgIGlmIChtX3BhdXNl
ZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBhbGxQYXVzZWQgPSB0cnVl
OworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6
ZSgpOyArK2luZGV4KSB7CisgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQgPSBtX21l
ZGlhRWxlbWVudHNbaW5kZXhdOworICAgICAgICBpZiAoZWxlbWVudC0+cmVhZHlTdGF0ZSgpIDw9
IEhBVkVfQ1VSUkVOVF9EQVRBKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIAor
ICAgICAgICBpZiAoZWxlbWVudC0+YXV0b3BsYXkoKSAmJiBlbGVtZW50LT5wYXVzZWQoKSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIGFsbFBhdXNlZCAmPSBlbGVtZW50LT5w
YXVzZWQoKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGFsbFBhdXNlZDsKK30KKworYm9vbCBN
ZWRpYUNvbnRyb2xsZXI6Omhhc0VuZGVkKCkgY29uc3QKK3sKKyAgICBpZiAobV9wbGF5YmFja1Jh
dGUgPD0gMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fbWVkaWFFbGVtZW50
cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgYWxsSGF2ZUVu
ZGVkID0gdHJ1ZTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9tZWRpYUVs
ZW1lbnRzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgYWxsSGF2ZUVuZGVkICY9IG1fbWVkaWFF
bGVtZW50c1tpbmRleF0tPmVuZGVkKCk7CisgICAgcmV0dXJuIGFsbEhhdmVFbmRlZDsKK30KKwor
Citjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbGxlcjo6aW50ZXJmYWNlTmFtZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JNZWRpYUNvbnRyb2xs
ZXI7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTIzOTE5Yzc5NDJmYzI1YWEzNTRjYTcyNGMyYzFmMTc0MzAyODhlOAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmgKQEAgLTAsMCAr
MSwxNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBNZWRpYUNvbnRyb2xsZXJfaAorI2RlZmluZSBN
ZWRpYUNvbnRyb2xsZXJfaAorCisjaWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSAiQWN0aXZl
RE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudExpc3RlbmVy
LmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xsZXJJ
bnRlcmZhY2UuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ2xvY2s7CitjbGFzcyBIVE1MTWVkaWFF
bGVtZW50OworY2xhc3MgRXZlbnQ7CisKK2NsYXNzIE1lZGlhQ29udHJvbGxlciA6IHB1YmxpYyBS
ZWZDb3VudGVkPE1lZGlhQ29udHJvbGxlcj4sIHB1YmxpYyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZh
Y2UsIHB1YmxpYyBFdmVudFRhcmdldCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
TWVkaWFDb250cm9sbGVyPiBtZWRpYUNvbnRyb2xsZXJGb3JNZWRpYUdyb3VwKGNvbnN0IFN0cmlu
ZyYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbGxlcj4gY3JlYXRlKCk7Cisg
ICAgdmlydHVhbCB+TWVkaWFDb250cm9sbGVyKCk7CisKKyAgICB2b2lkIGFkZE1lZGlhRWxlbWVu
dChIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgdm9pZCByZW1vdmVNZWRpYUVsZW1lbnQoSFRNTE1l
ZGlhRWxlbWVudCopOworICAgIGJvb2wgY29udGFpbnNNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxl
bWVudCopIGNvbnN0OworCisgICAgY29uc3QgU3RyaW5nJiBtZWRpYUdyb3VwKCkgY29uc3QgeyBy
ZXR1cm4gbV9tZWRpYUdyb3VwOyB9CisgICAgCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVS
YW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5n
ZXM+IHNlZWthYmxlKCkgY29uc3Q7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+
IHBsYXllZCgpOworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgZHVyYXRpb24oKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGZsb2F0IGN1cnJlbnRUaW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNl
dEN1cnJlbnRUaW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJik7CisgICAgCisgICAgdmlydHVhbCBi
b29sIHBhdXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF1c2VkOyB9CisgICAgdmlydHVhbCB2b2lk
IHBsYXkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKTsKKyAgICAKKyAgICB2aXJ0dWFsIGZs
b2F0IGRlZmF1bHRQbGF5YmFja1JhdGUoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1bHRQbGF5YmFj
a1JhdGU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCk7
CisgICAgCisgICAgdmlydHVhbCBmbG9hdCBwbGF5YmFja1JhdGUoKSBjb25zdCB7IHJldHVybiBt
X3BsYXliYWNrUmF0ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5YmFja1JhdGUoZmxvYXQp
OworICAgIAorICAgIHZpcnR1YWwgZmxvYXQgdm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV92b2x1
bWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJik7
CisgICAgCisgICAgdmlydHVhbCBib29sIG11dGVkKCkgY29uc3QgeyByZXR1cm4gbV9tdXRlZDsg
fQorICAgIHZpcnR1YWwgdm9pZCBzZXRNdXRlZChib29sKTsKKyAgICAKKyAgICB2aXJ0dWFsIFJl
YWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZHlTdGF0ZTsgfQorCisg
ICAgZW51bSBQbGF5YmFja1N0YXRlIHsgV0FJVElORywgUExBWUlORywgRU5ERUQgfTsKKyAgICB2
aXJ0dWFsIFBsYXliYWNrU3RhdGUgcGxheWJhY2tTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxh
eWJhY2tTdGF0ZTsgfQorCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzRnVsbHNjcmVlbigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbigp
IHsgfQorCisgICAgdmlydHVhbCBib29sIGhhc0F1ZGlvKCkgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGhhc1ZpZGVvKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGhhc0Nsb3NlZENhcHRpb25z
KCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldENsb3NlZENhcHRpb25zVmlzaWJsZShib29s
KTsKKyAgICB2aXJ0dWFsIGJvb2wgY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCkgY29uc3QgeyByZXR1
cm4gbV9jbG9zZWRDYXB0aW9uc1Zpc2libGU7IH0KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgc3Vw
cG9ydHNTY2FubmluZygpIGNvbnN0OworICAgIAorICAgIHZpcnR1YWwgdm9pZCBiZWdpblNjcnVi
YmluZygpOworICAgIHZpcnR1YWwgdm9pZCBlbmRTY3J1YmJpbmcoKTsKKyAgICAKKyAgICB2aXJ0
dWFsIGJvb2wgY2FuUGxheSgpIGNvbnN0OworICAgIAorICAgIHZpcnR1YWwgYm9vbCBpc0xpdmVT
dHJlYW0oKSBjb25zdDsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkaW5nKCkgY29uc3Q7
CisgICAgCisgICAgdmlydHVhbCB2b2lkIHJldHVyblRvUmVhbHRpbWUoKTsKKworICAgIGJvb2wg
aXNCbG9ja2VkKCkgY29uc3Q7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHVzaW5nIFJlZkNv
dW50ZWQ8TWVkaWFDb250cm9sbGVyPjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFD
b250cm9sbGVyPjo6ZGVyZWY7CisKK3ByaXZhdGU6CisgICAgTWVkaWFDb250cm9sbGVyKCk7Cisg
ICAgdm9pZCB1cGRhdGVSZWFkeVN0YXRlKCk7CisgICAgdm9pZCB1cGRhdGVQbGF5YmFja1N0YXRl
KCk7CisgICAgdm9pZCB1cGRhdGVNZWRpYUVsZW1lbnRzKCk7CisgICAgdm9pZCBzY2hlZHVsZUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKTsKKyAgICB2b2lkIGFzeW5jRXZlbnRU
aW1lckZpcmVkKFRpbWVyPE1lZGlhQ29udHJvbGxlcj4qKTsKKyAgICBib29sIGhhc0VuZGVkKCkg
Y29uc3Q7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRh
cmdldCgpIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsg
ZGVyZWYoKTsgfQorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1l
KCkgY29uc3Q7CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3Q7CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50
VGFyZ2V0RGF0YSgpIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQorICAgIHZpcnR1YWwg
RXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSB7IHJldHVybiAmbV9ldmVu
dFRhcmdldERhdGE7IH0KKyAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CisK
KyAgICBmcmllbmQgY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKKyAgICBmcmllbmQgY2xhc3MgTWVk
aWFDb250cm9sbGVyRXZlbnRMaXN0ZW5lcjsKKyAgICBWZWN0b3I8SFRNTE1lZGlhRWxlbWVudCo+
IG1fbWVkaWFFbGVtZW50czsKKyAgICBib29sIG1fcGF1c2VkOworICAgIGZsb2F0IG1fZGVmYXVs
dFBsYXliYWNrUmF0ZTsKKyAgICBmbG9hdCBtX3BsYXliYWNrUmF0ZTsKKyAgICBmbG9hdCBtX3Zv
bHVtZTsKKyAgICBib29sIG1fbXV0ZWQ7CisgICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7Cisg
ICAgUGxheWJhY2tTdGF0ZSBtX3BsYXliYWNrU3RhdGU7CisgICAgVmVjdG9yPFJlZlB0cjxFdmVu
dD4gPiBtX3BlbmRpbmdFdmVudHM7CisgICAgVGltZXI8TWVkaWFDb250cm9sbGVyPiBtX2FzeW5j
RXZlbnRUaW1lcjsKKyAgICBTdHJpbmcgbV9tZWRpYUdyb3VwOworICAgIGJvb2wgbV9jbG9zZWRD
YXB0aW9uc1Zpc2libGU7CisgICAgUGFzc1JlZlB0cjxDbG9jaz4gbV9jbG9jazsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFDb250cm9sbGVyLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNGIyYTFmZDhjYjk0NDA4YTM4ZGFiYjk1
NjNlYmZhNWY3MzhmYzUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYUNvbnRyb2xsZXIuaWRsCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCittb2R1bGUgaHRt
bCB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9VklERU8sCisgICAgICAg
IENhbkJlQ29uc3RydWN0ZWQsCisgICAgICAgIEdlbmVyYXRlVG9KUywKKyAgICAgICAgRXZlbnRU
YXJnZXQKKyAgICBdIE1lZGlhQ29udHJvbGxlciB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBUaW1lUmFuZ2VzIGJ1ZmZlcmVkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgVGltZVJh
bmdlcyBzZWVrYWJsZTsKKworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIGR1cmF0
aW9uOworICAgICAgICBhdHRyaWJ1dGUgZG91YmxlIGN1cnJlbnRUaW1lCisgICAgICAgICAgICBz
ZXR0ZXIgcmFpc2VzIChET01FeGNlcHRpb24pOworCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBib29sZWFuIHBhdXNlZDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFRpbWVSYW5nZXMg
cGxheWVkOworICAgICAgICB2b2lkIHBsYXkoKTsKKyAgICAgICAgdm9pZCBwYXVzZSgpOworCisg
ICAgICAgIGF0dHJpYnV0ZSBkb3VibGUgZGVmYXVsdFBsYXliYWNrUmF0ZTsKKyAgICAgICAgYXR0
cmlidXRlIGRvdWJsZSBwbGF5YmFja1JhdGU7CisKKyAgICAgICAgYXR0cmlidXRlIGRvdWJsZSB2
b2x1bWUKKyAgICAgICAgICAgIHNldHRlciByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAg
IGF0dHJpYnV0ZSBib29sZWFuIG11dGVkOworCisgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVy
ZmFjZQorICAgICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwg
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNl
Q2FwdHVyZSk7CisgICAgICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcg
dHlwZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVy
IGxpc3RlbmVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25h
bF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGlu
IEV2ZW50IGV2dCkKKyAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CisgICAgfTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVySW50ZXJm
YWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlckludGVyZmFjZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ3ODQ3YjU1YzRhZTYzMmExNDg2Zjk5YTk2NjJjODZjMmE0ODc2ZjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlckludGVyZmFj
ZS5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBNZWRpYUNvbnRyb2xsZXJJ
bnRlcmZhY2VfaAorI2RlZmluZSBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2VfaAorCisjaWYgRU5B
QkxFKFZJREVPKQorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBUaW1lUmFuZ2VzOworCit0eXBlZGVmIGludCBFeGNlcHRpb25Db2Rl
OworCitjbGFzcyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UgeworcHVibGljOgorICAgIHZpcnR1
YWwgfk1lZGlhQ29udHJvbGxlckludGVyZmFjZSgpIHsgfTsKKyAgICAKKyAgICAvLyBNZWRpYUNv
bnRyb2xsZXIgSURMOgorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJl
ZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gc2Vla2Fi
bGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHBsYXll
ZCgpID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIGZsb2F0IGR1cmF0aW9uKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgZmxvYXQgY3VycmVudFRpbWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNldEN1cnJlbnRUaW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJikgPSAwOworICAgIAorICAg
IHZpcnR1YWwgYm9vbCBwYXVzZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBsYXko
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhdXNlKCkgPSAwOworICAgIAorICAgIHZpcnR1YWwg
ZmxvYXQgZGVmYXVsdFBsYXliYWNrUmF0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCkgPSAwOworICAgIAorICAgIHZpcnR1YWwgZmxv
YXQgcGxheWJhY2tSYXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5YmFj
a1JhdGUoZmxvYXQpID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIGZsb2F0IHZvbHVtZSgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJikg
PSAwOworICAgIAorICAgIHZpcnR1YWwgYm9vbCBtdXRlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0TXV0ZWQoYm9vbCkgPSAwOworICAgIAorICAgIGVudW0gUmVhZHlTdGF0ZSB7
IEhBVkVfTk9USElORywgSEFWRV9NRVRBREFUQSwgSEFWRV9DVVJSRU5UX0RBVEEsIEhBVkVfRlVU
VVJFX0RBVEEsIEhBVkVfRU5PVUdIX0RBVEEgfTsKKyAgICB2aXJ0dWFsIFJlYWR5U3RhdGUgcmVh
ZHlTdGF0ZSgpIGNvbnN0ID0gMDsKKworICAgIC8vIE1lZGlhQ29udHJvbEVsZW1lbnRzOgorICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGlzRnVsbHNjcmVlbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW50ZXJG
dWxsc2NyZWVuKCkgPSAwOworCisgICAgdmlydHVhbCBib29sIGhhc0F1ZGlvKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBoYXNWaWRlbygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaGFzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldENs
b3NlZENhcHRpb25zVmlzaWJsZShib29sKSA9IDA7CisgICAgdmlydHVhbCBib29sIGNsb3NlZENh
cHRpb25zVmlzaWJsZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nj
YW5uaW5nKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGJlZ2luU2NydWJiaW5nKCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmRTY3J1YmJpbmcoKSA9IDA7CisKKyAgICB2aXJ0dWFs
IGJvb2wgY2FuUGxheSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBpc0xpdmVTdHJl
YW0oKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkaW5nKCkgY29uc3QgPSAw
OworCisgICAgdmlydHVhbCB2b2lkIHJldHVyblRvUmVhbHRpbWUoKSA9IDA7Cit9OworCit9CisK
KyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5n
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcAppbmRleCAxZTE4MzA2
OTg3NzE0YjBlOTliMmQ1MzViYzRiNDdjZTNjY2M4NzgyLi43YjdkNTk0YTQ2YjliYzA1NGRjMmRh
OGQ2YTdjMjUwYjkxZDlkMTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVS
YW5nZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5jcHAKQEAgLTM2
LDcgKzM2LDcgQEAgVGltZVJhbmdlczo6VGltZVJhbmdlcyhmbG9hdCBzdGFydCwgZmxvYXQgZW5k
KQogICAgIGFkZChzdGFydCwgZW5kKTsKIH0KIAotUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBUaW1l
UmFuZ2VzOjpjb3B5KCkKK1Bhc3NSZWZQdHI8VGltZVJhbmdlcz4gVGltZVJhbmdlczo6Y29weSgp
IGNvbnN0CiB7CiAgICAgUmVmUHRyPFRpbWVSYW5nZXM+IG5ld1Nlc3Npb24gPSBUaW1lUmFuZ2Vz
OjpjcmVhdGUoKTsKICAgICAKQEAgLTQ3LDYgKzQ3LDQ5IEBAIFBhc3NSZWZQdHI8VGltZVJhbmdl
cz4gVGltZVJhbmdlczo6Y29weSgpCiAgICAgcmV0dXJuIG5ld1Nlc3Npb24ucmVsZWFzZSgpOwog
fQogCit2b2lkIFRpbWVSYW5nZXM6OmludmVydCgpCit7CisgICAgUmVmUHRyPFRpbWVSYW5nZXM+
IGludmVydGVkID0gVGltZVJhbmdlczo6Y3JlYXRlKCk7CisKKyAgICBpZiAoIW1fcmFuZ2VzLnNp
emUoKSkKKyAgICAgICAgaW52ZXJ0ZWQtPmFkZCgtSU5GSU5JVFksIElORklOSVRZKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgaWYgKGZsb2F0IHN0YXJ0ID0gbV9yYW5nZXMuZmlyc3QoKS5tX3N0YXJ0
ICE9IC1JTkZJTklUWSkKKyAgICAgICAgICAgIGludmVydGVkLT5hZGQoLUlORklOSVRZLCBzdGFy
dCk7CisKKyAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCArIDEgPCBtX3Jhbmdl
cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgICAgICBpbnZlcnRlZC0+YWRkKG1fcmFuZ2VzW2lu
ZGV4XS5tX2VuZCwgbV9yYW5nZXNbaW5kZXggKyAxXS5tX3N0YXJ0KTsKKworICAgICAgICBpZiAo
ZmxvYXQgZW5kID0gbV9yYW5nZXMubGFzdCgpLm1fZW5kICE9IElORklOSVRZKQorICAgICAgICAg
ICAgaW52ZXJ0ZWQtPmFkZChlbmQsIElORklOSVRZKTsKKyAgICB9CisKKyAgICBtX3Jhbmdlcy5z
d2FwKGludmVydGVkLT5tX3Jhbmdlcyk7Cit9CisKK3ZvaWQgVGltZVJhbmdlczo6aW50ZXJzZWN0
V2l0aChjb25zdCBUaW1lUmFuZ2VzKiBvdGhlcikKK3sKKyAgICBBU1NFUlQob3RoZXIpOworICAg
IFJlZlB0cjxUaW1lUmFuZ2VzPiBpbnZlcnRlZCA9IGNvcHkoKTsKKyAgICBSZWZQdHI8VGltZVJh
bmdlcz4gaW52ZXJ0ZWRPdGhlciA9IG90aGVyLT5jb3B5KCk7CisgICAgaW52ZXJ0ZWQtPnVuaW9u
V2l0aChpbnZlcnRlZE90aGVyLmdldCgpKTsKKyAgICBpbnZlcnRlZC0+aW52ZXJ0KCk7CisKKyAg
ICBtX3Jhbmdlcy5zd2FwKGludmVydGVkLT5tX3Jhbmdlcyk7Cit9CisKK3ZvaWQgVGltZVJhbmdl
czo6dW5pb25XaXRoKGNvbnN0IFRpbWVSYW5nZXMqIG90aGVyKQoreworICAgIEFTU0VSVChvdGhl
cik7CisgICAgUmVmUHRyPFRpbWVSYW5nZXM+IHVuaW9uZWQgPSBjb3B5KCk7CisgICAgZm9yIChz
aXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG90aGVyLT5tX3Jhbmdlcy5zaXplKCk7ICsraW5kZXgp
IHsKKyAgICAgICAgY29uc3QgUmFuZ2UmIHJhbmdlID0gb3RoZXItPm1fcmFuZ2VzW2luZGV4XTsK
KyAgICAgICAgdW5pb25lZC0+YWRkKHJhbmdlLm1fc3RhcnQsIHJhbmdlLm1fZW5kKTsKKyAgICB9
CisKKyAgICBtX3Jhbmdlcy5zd2FwKHVuaW9uZWQtPm1fcmFuZ2VzKTsKK30KKwogZmxvYXQgVGlt
ZVJhbmdlczo6c3RhcnQodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdCAK
IHsgCiAgICAgaWYgKGluZGV4ID49IGxlbmd0aCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1RpbWVSYW5nZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5o
CmluZGV4IDJkN2FmMjVhODA5MTM3MzBmODBkMjM5MzBiZTI3NGUwZmYxMjE3ZmQuLmNjY2NlMDVj
MTljNGFjOWU2MjlkZDJhMmExZmI2NjUyMTk3ODEwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVGltZVJhbmdlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdl
cy5oCkBAIC00Niw3ICs0NiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgVGltZVJhbmdlcyhzdGFydCwgZW5kKSk7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxUaW1l
UmFuZ2VzPiBjb3B5KCk7CisgICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBjb3B5KCkgY29uc3Q7
CisgICAgdm9pZCBpbnZlcnQoKTsKKyAgICB2b2lkIGludGVyc2VjdFdpdGgoY29uc3QgVGltZVJh
bmdlcyopOworICAgIHZvaWQgdW5pb25XaXRoKGNvbnN0IFRpbWVSYW5nZXMqKTsKIAogICAgIHVu
c2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2VzLnNpemUoKTsgfQogICAgIGZs
b2F0IHN0YXJ0KHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5pZGwKaW5kZXggNmNjZDRhNDdkMzEyM2ZhZmM4NjdhMzFjZmE2NzlkNDc2
ZjRhZWE2Mi4uMmQwZmFjYzc2YTUxZTk5ZTkwYmZmODZmN2I3ZDkyZmE1NTNjMWY4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmlkbApAQCAtNjMzLDYgKzYzMyw3IEBAIG1vZHVsZSB3aW5kb3cg
ewogICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPVZJREVPLCBFbmFibGVkQXRSdW50aW1l
XSBNZWRpYUVycm9yQ29uc3RydWN0b3IgTWVkaWFFcnJvcjsKICAgICAgICAgYXR0cmlidXRlIFtD
b25kaXRpb25hbD1WSURFTywgRW5hYmxlZEF0UnVudGltZV0gVGltZVJhbmdlc0NvbnN0cnVjdG9y
IFRpbWVSYW5nZXM7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9VklERU8sIEVuYWJs
ZWRBdFJ1bnRpbWVdIEhUTUxTb3VyY2VFbGVtZW50Q29uc3RydWN0b3IgSFRNTFNvdXJjZUVsZW1l
bnQ7CisgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9VklERU8sIEVuYWJsZWRBdFJ1bnRp
bWVdIE1lZGlhQ29udHJvbGxlckNvbnN0cnVjdG9yIE1lZGlhQ29udHJvbGxlcjsKIAogI2lmIGRl
ZmluZWQoRU5BQkxFX0FOSU1BVElPTl9BUEkpICYmIEVOQUJMRV9BTklNQVRJT05fQVBJCiAgICAg
ICAgIGF0dHJpYnV0ZSBXZWJLaXRBbmltYXRpb25Db25zdHJ1Y3RvciBXZWJLaXRBbmltYXRpb247
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAK
aW5kZXggMDE4YzdkZDMzZTM4YzFiOGY3NzM0NWE4YzNlNGY4MzVmZWM2MGE3My4uZmM3N2ZmMjg4
MzhiN2MwOTRhYTUzYTRmYmRmMDcxNjgwY2EyMjEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtNjA5LDYgKzYwOSwxMSBAQCBQ
YXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhUGxheWVyOjpidWZmZXJlZCgpCiAgICAgcmV0dXJu
IG1fcHJpdmF0ZS0+YnVmZmVyZWQoKTsKIH0KIAorUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRp
YVBsYXllcjo6c2Vla2FibGUoKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnNlZWthYmxlKCk7
Cit9CisKIGZsb2F0IE1lZGlhUGxheWVyOjptYXhUaW1lU2Vla2FibGUoKQogewogICAgIHJldHVy
biBtX3ByaXZhdGUtPm1heFRpbWVTZWVrYWJsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggYzk2YjAyNWQ4MmQwMDcwOTE2OWVlYTUx
YzA3ODI2Yjc0NTA2YzQ3MS4uNDc3MzlhMDhiMGUzZDljYzczYzk5YTEzMTQzNGE3OGFlMDM3NDU1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5o
CkBAIC0yNDEsNiArMjQxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJlc2VydmVzUGl0Y2go
Ym9vbCk7CiAKICAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCk7CisgICAgUGFz
c1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZSgpOwogICAgIGZsb2F0IG1heFRpbWVTZWVrYWJs
ZSgpOwogCiAgICAgdW5zaWduZWQgYnl0ZXNMb2FkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggZjhjNzBh
YmUyOGE3ZWQwMWRmYjhhMmNiN2YxYzYzNjYzN2QzODQ0MS4uMDVhNzdkZThmMjU2NTFmODQyMmI2
NDRiMWNhZGMyN2U4MTU1MjgyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBF
TkFCTEUoVklERU8pCiAKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIlRpbWVS
YW5nZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC05MSw2ICs5Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpOZXR3
b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgTWVkaWFQbGF5
ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0IHsgcmV0dXJuIFRpbWVSYW5nZXM6
OmNyZWF0ZSgwLCBtYXhUaW1lU2Vla2FibGUoKSk7IH0KICAgICB2aXJ0dWFsIGZsb2F0IG1heFRp
bWVTZWVrYWJsZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdl
cz4gYnVmZmVyZWQoKSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiNjJlN2Q5N2I2OTg0ZTI4MjAxNmJl
MGUzNzI2MmRiNDAzNjJmMzgzLi42ZDYzZWE0NzQ2ZWY4ZjZjOTEyZTk2NDgxYzJlYTZmOWM0ZmY5
NTJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMTEtMDIgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IE1lZGlhQ29udHJvbGxlci4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMzQxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtZWRpYS9tZWRp
YS1jb250cm9sbGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEt
Y29udHJvbGxlci1wbGF5YmFjay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlh
L21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2suaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEv
bWVkaWEtY29udHJvbGxlci5odG1sOiBBZGRlZC4KKwogMjAxMS0xMS0wMiAgRXJpayBBcnZpZHNz
b24gIDxhcnZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSByZWZlcmVuY2VzIHRvIG5v
biBleGlzdGluZyBmaWxlOyBqcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvbWVkaWEvbWVkaWEtY29udHJvbGxlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGM2ZDRk
MDdmZmNjZmNiMzBlNzU1YWNjMjY4ZTY3NGY3NGFjY2MwZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MjUgQEAKKyAKK1Rlc3QgcHJlc2VuY2Ugb2YgTWVkaWFDb250cm9sbGVyIGNvbnN0cnVjdG9yLCBt
ZWRpYUNvbnRyb2xsZXIsIGFuZCBtZWRpYUdyb3VwIGF0dHJpYnV0ZXM6CitFWFBFQ1RFRCAodHlw
ZW9mKE1lZGlhQ29udHJvbGxlcikgPT0gJ29iamVjdCcpIE9LCitFWFBFQ1RFRCAodmlkZW8ubWVk
aWFDb250cm9sbGVyID09ICdudWxsJykgT0sKK0VYUEVDVEVEICh2aWRlby5tZWRpYUdyb3VwID09
ICcnKSBPSworCitUZXN0IHRoYXQgdGhlIHByZXNlbmNlIG9mIGEgbWVkaWFHcm91cCBhdHRyaWJ1
dGUgY3JlYXRlcyBhIG1lZGlhQ29udHJvbGxlcjoKK0VYUEVDVEVEICh2aWRlbzIubWVkaWFHcm91
cCA9PSAnZ3JvdXAnKSBPSworRVhQRUNURUQgKHZpZGVvMi5tZWRpYUNvbnRyb2xsZXIgIT0gJ251
bGwnKSBPSworCitUZXN0IHRoYXQgc2V0dGluZyBtZWRpYUdyb3VwIHRvIGFuIGVtcHR5IHN0cmlu
ZyByZW1vdmVzIHRoZSBtZWRpYUNvbnRyb2xsZXI6CitSVU4odmlkZW8ubWVkaWFHcm91cCA9ICcn
KQorRVhQRUNURUQgKHZpZGVvLm1lZGlhQ29udHJvbGxlciA9PSAnbnVsbCcpIE9LCisKK1Rlc3Qg
bWFudWFsbHkgY3JlYXRpbmcgYW5kIGFzc2lnbmluZyBhIG1lZGlhQ29udHJvbGxlciB0byBhIG1l
ZGlhIGVsZW1lbnQ6CitSVU4oY29udHJvbGxlciA9IG5ldyBNZWRpYUNvbnRyb2xsZXIoKSkKK1JV
Tih2aWRlby5tZWRpYUNvbnRyb2xsZXIgPSBjb250cm9sbGVyKQorRVhQRUNURUQgKHZpZGVvLm1l
ZGlhQ29udHJvbGxlciA9PSAnW29iamVjdCBNZWRpYUNvbnRyb2xsZXJdJykgT0sKKworVGVzdCB0
aGF0IHR3byBtZWRpYSBlbGVtZW50cyB3aXRoIHRoZSBzYW1lIG1lZGlhR3JvdXAgaGF2ZSB0aGUg
c2FtZSBtZWRpYUNvbnRyb2xsZXI6CitSVU4odmlkZW8ubWVkaWFHcm91cCA9ICdncm91cCcpCitS
VU4odmlkZW8yLm1lZGlhR3JvdXAgPSAnZ3JvdXAnKQorRVhQRUNURUQgKHZpZGVvLm1lZGlhQ29u
dHJvbGxlciA9PT0gdmlkZW8yLm1lZGlhQ29udHJvbGxlciA9PSAndHJ1ZScpIE9LCitFTkQgT0Yg
VEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVyLXBs
YXliYWNrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXIt
cGxheWJhY2stZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4YThlMDkyMTNlZTFhNzEwN2I4MTFh
YjlmODgzYWQ0MDEyYTNmYTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9t
ZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACisg
CitSVU4oY29udHJvbGxlciA9IHZpZGVvLm1lZGlhQ29udHJvbGxlcikKK0VWRU5UKGNhbnBsYXl0
aHJvdWdoKQorUlVOKGNvbnRyb2xsZXIuY3VycmVudFRpbWUgPSA1KQorRVhQRUNURUQgKHZpZGVv
LmN1cnJlbnRUaW1lID09ICc1JykgT0sKK0VYUEVDVEVEICh2aWRlbzIuY3VycmVudFRpbWUgPT0g
JzUnKSBPSworUlVOKHZpZGVvLnBsYXkoKSkKK1JVTih2aWRlbzIucGxheSgpKQorUlVOKGNvbnRy
b2xsZXIucGxheSgpKQorRVZFTlQocGxheWluZykKK0VYUEVDVEVEIChjb250cm9sbGVyLnBhdXNl
ZCA9PSAnZmFsc2UnKSBPSworRVZFTlQoZW5kZWQpCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWwgYi9MYXlv
dXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
N2MyYjgzZWYxYWE4ODk2ZDdjMjIwN2Y3YTk0NjQ5MGYzY2NmNWYyZgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xsZXItcGxheWJhY2suaHRtbApAQCAt
MCwwICsxLDQ5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAg
ICA8c2NyaXB0IHNyYz1tZWRpYS1maWxlLmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNy
Yz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorCisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHZh
ciBjb250cm9sbGVyOworICAgICAgICB2YXIgdmlkZW8yOworCisgICAgICAgIGZ1bmN0aW9uIHN0
YXJ0KCkgeworICAgICAgICAgICAgdmlkZW8gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgndmlkZW8nKVswXTsKKyAgICAgICAgICAgIHZpZGVvMiA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCd2aWRlbycpWzFdOworICAgICAgICAgICAgcnVuKCdjb250cm9sbGVyID0gdmlk
ZW8ubWVkaWFDb250cm9sbGVyJyk7CisgICAgICAgICAgICBjb250cm9sbGVyLmFkZEV2ZW50TGlz
dGVuZXIoJ2NhbnBsYXl0aHJvdWdoJywgY2FucGxheXRocm91Z2gsIHRydWUpOworICAgICAgICAg
ICAgc2V0U3JjQnlUYWdOYW1lKCd2aWRlbycsIGZpbmRNZWRpYUZpbGUoJ3ZpZGVvJywgJ2NvbnRl
bnQvdGVzdCcpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24gY2FucGxh
eXRocm91Z2goKSB7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKGNhbnBsYXl0aHJv
dWdoKSIpOworICAgICAgICAgICAgY29udHJvbGxlci5yZW1vdmVFdmVudExpc3RlbmVyKCdjYW5w
bGF5dGhyb3VnaCcsIGNhbnBsYXl0aHJvdWdoLCB0cnVlKTsKKyAgICAgICAgICAgIHJ1bignY29u
dHJvbGxlci5jdXJyZW50VGltZSA9IDUnKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlk
ZW8uY3VycmVudFRpbWUnLCA1KTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8yLmN1
cnJlbnRUaW1lJywgNSk7CisgICAgICAgICAgICBydW4oJ3ZpZGVvLnBsYXkoKScpOworICAgICAg
ICAgICAgcnVuKCd2aWRlbzIucGxheSgpJyk7CisgICAgICAgICAgICBjb250cm9sbGVyLmFkZEV2
ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCBwbGF5aW5nLCB0cnVlKTsKKyAgICAgICAgICAgIHJ1bign
Y29udHJvbGxlci5wbGF5KCknKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZnVuY3Rp
b24gcGxheWluZygpIHsgCisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKHBsYXlpbmcp
Iik7CisgICAgICAgICAgICBjb250cm9sbGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcn
LCBwbGF5aW5nLCB0cnVlKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnY29udHJvbGxlci5w
YXVzZWQnLCBmYWxzZSk7CisgICAgICAgICAgICBjb250cm9sbGVyLmFkZEV2ZW50TGlzdGVuZXIo
J2VuZGVkJywgZW5kZWQsIHRydWUpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZW5k
ZWQoKSB7IAorICAgICAgICAgICAgY29uc29sZVdyaXRlKCJFVkVOVChlbmRlZCkiKTsKKyAgICAg
ICAgICAgIGNvbnRyb2xsZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcignZW5kZWQnLCBlbmRlZCwgdHJ1
ZSk7CisgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+
CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ic3RhcnQoKSI+CisgICAgICAgIDx2aWRl
byBtZWRpYUdyb3VwPSJncm91cCIgY29udHJvbHM+PC92aWRlbz4KKyAgICAgICAgPHZpZGVvIG1l
ZGlhR3JvdXA9Imdyb3VwIiBjb250cm9scz48L3ZpZGVvPgorICAgIDwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRp
YS9tZWRpYS1jb250cm9sbGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9s
bGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzBlNTk2NzU0ZDVhYmIxYzNlN2VkZjE0MjljNjkzYThiODc4
NGZhMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xs
ZXIuaHRtbApAQCAtMCwwICsxLDQ1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz1tZWRpYS1maWxlLmpzPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorCisgICAgICAgIDxzY3JpcHQ+
CisgICAgICAgIHZhciBjb250cm9sbGVyOworICAgICAgICB2YXIgdmlkZW8yOworCisgICAgICAg
IGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICAgICAgdmlkZW8gPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgndmlkZW8nKVswXTsKKyAgICAgICAgICAgIHZpZGVvMiA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2aWRlbycpWzFdOworCisgICAgICAgICAgICBjb25zb2xl
V3JpdGUoIlRlc3QgcHJlc2VuY2Ugb2YgTWVkaWFDb250cm9sbGVyIGNvbnN0cnVjdG9yLCBtZWRp
YUNvbnRyb2xsZXIsIGFuZCBtZWRpYUdyb3VwIGF0dHJpYnV0ZXM6Iik7CisgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoInR5cGVvZihNZWRpYUNvbnRyb2xsZXIpIiwgIm9iamVjdCIpOworICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5tZWRpYUNvbnRyb2xsZXIiLCBudWxsKTsKKyAgICAg
ICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubWVkaWFHcm91cCIsICIiKTsKKyAgICAgICAgICAg
IGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3QgdGhhdCB0
aGUgcHJlc2VuY2Ugb2YgYSBtZWRpYUdyb3VwIGF0dHJpYnV0ZSBjcmVhdGVzIGEgbWVkaWFDb250
cm9sbGVyOiIpCisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvMi5tZWRpYUdyb3VwIiwg
J2dyb3VwJyk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvMi5tZWRpYUNvbnRyb2xs
ZXIiLCBudWxsLCAiIT0iKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAg
ICAgICBjb25zb2xlV3JpdGUoIlRlc3QgdGhhdCBzZXR0aW5nIG1lZGlhR3JvdXAgdG8gYW4gZW1w
dHkgc3RyaW5nIHJlbW92ZXMgdGhlIG1lZGlhQ29udHJvbGxlcjoiKQorICAgICAgICAgICAgcnVu
KCJ2aWRlby5tZWRpYUdyb3VwID0gJyciKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlk
ZW8ubWVkaWFDb250cm9sbGVyIiwgbnVsbCk7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIp
OworICAgICAgICAgICAgY29uc29sZVdyaXRlKCJUZXN0IG1hbnVhbGx5IGNyZWF0aW5nIGFuZCBh
c3NpZ25pbmcgYSBtZWRpYUNvbnRyb2xsZXIgdG8gYSBtZWRpYSBlbGVtZW50OiIpCisgICAgICAg
ICAgICBydW4oImNvbnRyb2xsZXIgPSBuZXcgTWVkaWFDb250cm9sbGVyKCkiKTsKKyAgICAgICAg
ICAgIHJ1bigidmlkZW8ubWVkaWFDb250cm9sbGVyID0gY29udHJvbGxlciIpOworICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5tZWRpYUNvbnRyb2xsZXIiLCBjb250cm9sbGVyKTsKKyAg
ICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRl
c3QgdGhhdCB0d28gbWVkaWEgZWxlbWVudHMgd2l0aCB0aGUgc2FtZSBtZWRpYUdyb3VwIGhhdmUg
dGhlIHNhbWUgbWVkaWFDb250cm9sbGVyOiIpCisgICAgICAgICAgICBydW4oInZpZGVvLm1lZGlh
R3JvdXAgPSAnZ3JvdXAnIik7CisgICAgICAgICAgICBydW4oInZpZGVvMi5tZWRpYUdyb3VwID0g
J2dyb3VwJyIpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5tZWRpYUNvbnRyb2xs
ZXIgPT09IHZpZGVvMi5tZWRpYUNvbnRyb2xsZXIiLCB0cnVlKTsKKyAgICAgICAgICAgIGVuZFRl
c3QoKTsKKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJv
ZHkgb25sb2FkPSJzdGFydCgpIj4KKyAgICAgICAgPHZpZGVvPjwvdmlkZW8+CisgICAgICAgIDx2
aWRlbyBtZWRpYWdyb3VwPSJncm91cCI+PC92aWRlbz4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>