<?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>137993</bug_id>
          
          <creation_ts>2014-10-22 17:47:22 -0700</creation_ts>
          <short_desc>Abstractify WebOriginDataManager to support arbitrary ChildProcess supplements.</short_desc>
          <delta_ts>2022-08-08 16:07:22 -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>137120</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>ahmad.saleem792</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jonlee</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1043617</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-10-22 17:47:22 -0700</bug_when>
    <thetext>Abstractify WebOriginDataManager to support arbitrary ChildProcess supplements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043622</commentid>
    <comment_count>1</comment_count>
      <attachid>240315</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-10-22 18:05:57 -0700</bug_when>
    <thetext>Created attachment 240315
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043623</commentid>
    <comment_count>2</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-10-22 18:07:06 -0700</bug_when>
    <thetext>Abstractify? Genericize.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043989</commentid>
    <comment_count>3</comment_count>
      <attachid>240315</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-10-24 11:12:29 -0700</bug_when>
    <thetext>Comment on attachment 240315
Patch

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

&gt; Source/WebKit2/ChangeLog:48
&gt; +        to fall under the heel of the new regieme. DatabaseProcess will subclass

spelling - regime

&gt; Source/WebKit2/Shared/AsyncTask.h:40
&gt; +    AsyncTask(const std::function&lt;void()&gt; taskFunction)
&gt; +        : m_taskFunction(taskFunction)
&gt; +    {
&gt; +    }

ASSERT m_taskFunction plz

&gt; Source/WebKit2/Shared/AsyncTask.h:45
&gt; +        if (m_taskFunction)
&gt; +            m_taskFunction();

No null check, but ASSERT

&gt; Source/WebKit2/WebProcess/OriginData/WebOriginDataManager.cpp:57
&gt; +    ChildProcess* childProcess = m_childProcess;

Can be a ref instead of a pointer (see below)

&gt; Source/WebKit2/WebProcess/OriginData/WebOriginDataManager.cpp:65
&gt; +    ChildProcess* childProcess = m_childProcess;

Can be a ref instead of a pointer (see below)

&gt; Source/WebKit2/WebProcess/OriginData/WebOriginDataManager.cpp:73
&gt; +    ChildProcess* childProcess = m_childProcess;

Can be a ref instead of a pointer (see below)

&gt; Source/WebKit2/WebProcess/OriginData/WebOriginDataManager.cpp:81
&gt; +    ChildProcess* childProcess = m_childProcess;

Can be a ref instead of a pointer (see below)

&gt; Source/WebKit2/WebProcess/OriginData/WebOriginDataManager.h:44
&gt; +    WebOriginDataManager(ChildProcess*, WebOriginDataManagerSupplement*);

Good time to make these references instead of pointers.

&gt; Source/WebKit2/WebProcess/OriginData/WebOriginDataManager.h:56
&gt;      ChildProcess* m_childProcess;
&gt; +    WebOriginDataManagerSupplement* m_supplement;

References instead of pointers.

&gt; Source/WebKit2/WebProcess/OriginData/WebOriginDataManagerSupplement.h:46
&gt; +    virtual void getOrigins(WKOriginDataTypes, std::function&lt;void(const Vector&lt;SecurityOriginData&gt;&amp;)&gt; completion)
&gt; +    {
&gt; +        completion(Vector&lt;SecurityOriginData&gt;());
&gt; +    }
&gt; +    virtual void deleteEntriesForOrigin(WKOriginDataTypes, const SecurityOriginData&amp;, std::function&lt;void()&gt; completion) { completion(); }
&gt; +    virtual void deleteEntriesModifiedBetweenDates(WKOriginDataTypes, double startDate, double endDate, std::function&lt;void()&gt; completion) { completion(); }
&gt; +    virtual void deleteAllEntries(WKOriginDataTypes, std::function&lt;void()&gt; completion) { completion(); }

Pure virtuals please!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044067</commentid>
    <comment_count>4</comment_count>
      <attachid>240437</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-10-24 14:32:21 -0700</bug_when>
    <thetext>Created attachment 240437
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044075</commentid>
    <comment_count>5</comment_count>
      <attachid>240437</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-10-24 14:47:31 -0700</bug_when>
    <thetext>Comment on attachment 240437
Patch

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

&gt; Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:57
&gt; +    , m_webOriginDataManager(std::make_unique&lt;WebOriginDataManager&gt;(*this, *this))

This is silly.  I wonder if childprocess will always ever be the only supplement, in which case this is redundant. Oh well.

&gt; Source/WebKit2/WebProcess/OriginData/WebOriginDataManager.cpp:59
&gt; +    ChildProcess&amp; childProcess = m_childProcess;
&gt; +    m_supplement.getOrigins(types, [&amp;childProcess, callbackID](const Vector&lt;SecurityOriginData&gt;&amp; results) {
&gt; +        childProcess.send(Messages::WebOriginDataManagerProxy::DidGetOrigins(results, callbackID), 0);
&gt; +    });

There&apos;s actually no need for the temporary ChildProcess if you just capture `this` in the lamba instead, and then access m_childProcess in the function body.

There&apos;s no lifetime concern for either object anyways.

&gt; Source/WebKit2/WebProcess/OriginData/WebOriginDataManager.cpp:67
&gt; +    ChildProcess&amp; childProcess = m_childProcess;
&gt; +    m_supplement.deleteEntriesForOrigin(types, originData, [&amp;childProcess, callbackID] {
&gt; +        childProcess.send(Messages::WebOriginDataManagerProxy::DidDeleteEntries(callbackID), 0);
&gt; +    });

Ditto

&gt; Source/WebKit2/WebProcess/OriginData/WebOriginDataManager.cpp:75
&gt; +    ChildProcess&amp; childProcess = m_childProcess;
&gt; +    m_supplement.deleteEntriesModifiedBetweenDates(types, startTime, endTime, [&amp;childProcess, callbackID] {
&gt; +        childProcess.send(Messages::WebOriginDataManagerProxy::DidDeleteEntries(callbackID), 0);
&gt; +    });

Ditto

&gt; Source/WebKit2/WebProcess/OriginData/WebOriginDataManager.cpp:83
&gt; +    ChildProcess&amp; childProcess = m_childProcess;
&gt; +    m_supplement.deleteAllEntries(types, [&amp;childProcess, callbackID] {
&gt; +        childProcess.send(Messages::WebOriginDataManagerProxy::DidDeleteAllEntries(callbackID), 0);
&gt; +    });

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044076</commentid>
    <comment_count>6</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-10-24 14:51:27 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 240437 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=240437&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:57
&gt; &gt; +    , m_webOriginDataManager(std::make_unique&lt;WebOriginDataManager&gt;(*this, *this))
&gt; 
&gt; This is silly.  I wonder if childprocess will always ever be the only
&gt; supplement, in which case this is redundant. Oh well.

Maybe? But this way, a ChildProcess can choose to be a WebOriginDataManager supplement, rather than it being built into ChildProcess.

&gt; &gt; Source/WebKit2/WebProcess/OriginData/WebOriginDataManager.cpp:59
&gt; &gt; +    ChildProcess&amp; childProcess = m_childProcess;
&gt; &gt; +    m_supplement.getOrigins(types, [&amp;childProcess, callbackID](const Vector&lt;SecurityOriginData&gt;&amp; results) {
&gt; &gt; +        childProcess.send(Messages::WebOriginDataManagerProxy::DidGetOrigins(results, callbackID), 0);
&gt; &gt; +    });
&gt; 
&gt; There&apos;s actually no need for the temporary ChildProcess if you just capture
&gt; `this` in the lamba instead, and then access m_childProcess in the function
&gt; body.
&gt; 
&gt; There&apos;s no lifetime concern for either object anyways.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/OriginData/WebOriginDataManager.cpp:67
&gt; &gt; +    ChildProcess&amp; childProcess = m_childProcess;
&gt; &gt; +    m_supplement.deleteEntriesForOrigin(types, originData, [&amp;childProcess, callbackID] {
&gt; &gt; +        childProcess.send(Messages::WebOriginDataManagerProxy::DidDeleteEntries(callbackID), 0);
&gt; &gt; +    });
&gt; 
&gt; Ditto
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/OriginData/WebOriginDataManager.cpp:75
&gt; &gt; +    ChildProcess&amp; childProcess = m_childProcess;
&gt; &gt; +    m_supplement.deleteEntriesModifiedBetweenDates(types, startTime, endTime, [&amp;childProcess, callbackID] {
&gt; &gt; +        childProcess.send(Messages::WebOriginDataManagerProxy::DidDeleteEntries(callbackID), 0);
&gt; &gt; +    });
&gt; 
&gt; Ditto
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/OriginData/WebOriginDataManager.cpp:83
&gt; &gt; +    ChildProcess&amp; childProcess = m_childProcess;
&gt; &gt; +    m_supplement.deleteAllEntries(types, [&amp;childProcess, callbackID] {
&gt; &gt; +        childProcess.send(Messages::WebOriginDataManagerProxy::DidDeleteAllEntries(callbackID), 0);
&gt; &gt; +    });
&gt; 
&gt; Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044078</commentid>
    <comment_count>7</comment_count>
      <attachid>240439</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-10-24 14:54:44 -0700</bug_when>
    <thetext>Created attachment 240439
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044098</commentid>
    <comment_count>8</comment_count>
      <attachid>240439</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-24 16:01:53 -0700</bug_when>
    <thetext>Comment on attachment 240439
Patch for landing

Clearing flags on attachment: 240439

Committed r175188: &lt;http://trac.webkit.org/changeset/175188&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044930</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-10-29 17:48:05 -0700</bug_when>
    <thetext>&lt;rdar://problem/18819561&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1889825</commentid>
    <comment_count>10</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2022-08-08 16:07:22 -0700</bug_when>
    <thetext>From Comment 08, I can see this landing and I confirmed from Github that it was not backed out (checking with Bug Number).

Commit - https://github.com/WebKit/WebKit/commit/b71994375f44e9c5dc18885ecad9bdce0ba8e368

I am going to mark this as &quot;RESOLVED FIXED&quot;. Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240315</attachid>
            <date>2014-10-22 18:05:57 -0700</date>
            <delta_ts>2014-10-24 14:32:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137993-20141022180603.patch</filename>
            <type>text/plain</type>
            <size>28706</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1MDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjQ1YTYwNDM1YjNjN2Yx
NDUwODg3NDNlNjRhMDE1N2I2MjNkZGFiMi4uNmZhNDY2ZGJmNmI0YjMyZTQ0MGY1MzA3ZjE1NjBk
YTNiYzMxZGI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE0LTEwLTIyICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEFic3RyYWN0aWZ5IFdlYk9y
aWdpbkRhdGFNYW5hZ2VyIHRvIHN1cHBvcnQgYXJiaXRyYXJ5IENoaWxkUHJvY2VzcyBzdXBwbGVt
ZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
Nzk5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRv
IGFsbG93IGRpZmZlcmVudCBDaGlsZFByb2Nlc3Mgc3ViY2xhc3NlcyB0byBoYW5kbGUgbGlzdGlu
ZyBhbmQgZGVsZXRpb24gb2Ygb3JpZ2luCisgICAgICAgIGRhdGEsIG1ha2UgV2ViT3JpZ2luRGF0
YU1hbmFnZXIgbW9yZSBnZW5lcmljIGJ5IGhhdmluZyBhIHN1cHBsZW1lbnQgaW1wbGVtZW50IHRo
ZQorICAgICAgICBkZXRhaWxzLCBsZWF2aW5nIFdlYk9yaWdpbkRhdGFNYW5hZ2VyIHRvIGRlYWwg
d2l0aCBjcm9zcy1wcm9jZXNzIG1lc3NhZ2luZy4KKworICAgICAgICBEZS12aXJ0dWFsaXplIEFz
eW5jVGFzaywgYWxsb3dpbmcgYSB0YXNrIHRvIGJlIGNyZWF0ZWQgYnkgcGFzc2luZyBpbiBhCisg
ICAgICAgIGZ1bmN0aW9uPHZvaWQoKT4sIHJhdGhlciB0aGFuIGFuIG9iamVjdCwgbWV0aG9kLCBh
bmQgYXJndW1lbnRzLgorCisgICAgICAgICogU2hhcmVkL0FzeW5jVGFzay5oOgorICAgICAgICAo
V2ViS2l0OjpBc3luY1Rhc2s6OkFzeW5jVGFzayk6CisgICAgICAgIChXZWJLaXQ6OkFzeW5jVGFz
azo6cGVyZm9ybVRhc2spOgorICAgICAgICAoV2ViS2l0OjpBc3luY1Rhc2s6On5Bc3luY1Rhc2sp
OiBEZWxldGVkLgorCisgICAgICAgIEFkZCBhIG5ldyB2aXJ0dWFsIGJhc2UgY2xhc3MsIHRvIGJl
IGltcGxlbWVudGVkIGJ5IHZhcmlvdXMgQ2hpbGRQcm9jZXNzZXMsIHdoaWNoCisgICAgICAgIFdl
Yk9yaWdpbkRhdGFNYW5hZ2VyIHdpbGwgdXNlIHRvIGltcGxlbWVudCBsaXN0aW5nIGFuZCBkZWxl
dGlvbiByZXF1ZXN0cy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvT3JpZ2luRGF0YS9XZWJPcmln
aW5EYXRhTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvT3JpZ2luRGF0YS9XZWJPcmln
aW5EYXRhTWFuYWdlclN1cHBsZW1lbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYk9y
aWdpbkRhdGFNYW5hZ2VyU3VwcGxlbWVudDo6V2ViT3JpZ2luRGF0YU1hbmFnZXJTdXBwbGVtZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViT3JpZ2luRGF0YU1hbmFnZXJTdXBwbGVtZW50Ojp+V2Vi
T3JpZ2luRGF0YU1hbmFnZXJTdXBwbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViT3JpZ2lu
RGF0YU1hbmFnZXJTdXBwbGVtZW50OjpnZXRPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
T3JpZ2luRGF0YU1hbmFnZXJTdXBwbGVtZW50OjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViT3JpZ2luRGF0YU1hbmFnZXJTdXBwbGVtZW50OjpkZWxldGVFbnRy
aWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJPcmlnaW5EYXRh
TWFuYWdlclN1cHBsZW1lbnQ6OmRlbGV0ZUFsbEVudHJpZXMpOgorICAgICAgICAqIFdlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICBXZWJPcmlnaW5EYXRhTWFuYWdl
ciBkb2Vzbid0IG5lZWQgdG8gYmUgYSBDaGlsZFN1cHBsZW1lbnQuIFJlbW92ZSB0aGUgRGF0YWJh
c2VQcm9jZXNzLQorICAgICAgICBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgZm9yIGl0cyBtZXNz
YWdlIGhhbmRsZXJzIGFuZCByZXBsYWNlIHdpdGggY2xlYW4sIGdlbmVyaWMgY2FsbHMKKyAgICAg
ICAgdG8gaXRzIHN1cHBsZW1lbnQuIEJlY2F1c2UgdGhlc2Ugc3VwcGxlbWVudHMgbWF5IHdhbnQg
dG8gcmVzcG9uZCB0byB0aGUgcmVxdWVzdAorICAgICAgICBhc3luY2hyb25vdXNseSwgcGFzcyBh
IGNvbXBsZXRpb24gZnVuY3Rpb24gaW4gdG8gYmUgY2FsbGVkIGJ5IHRoZSBzdXBwbGVtZW50IG9u
Y2UgaXRzCisgICAgICAgIHdvcmsgaXMgY29tcGxldGUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L09yaWdpbkRhdGEvV2ViT3JpZ2luRGF0YU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJPcmlnaW5EYXRhTWFuYWdlcjo6V2ViT3JpZ2luRGF0YU1hbmFnZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJPcmlnaW5EYXRhTWFuYWdlcjo6Z2V0T3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6
OldlYk9yaWdpbkRhdGFNYW5hZ2VyOjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luKToKKyAgICAgICAg
KFdlYktpdDo6V2ViT3JpZ2luRGF0YU1hbmFnZXI6OmRlbGV0ZUVudHJpZXNNb2RpZmllZEJldHdl
ZW5EYXRlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYk9yaWdpbkRhdGFNYW5hZ2VyOjpkZWxldGVB
bGxFbnRyaWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViT3JpZ2luRGF0YU1hbmFnZXI6OnN1cHBs
ZW1lbnROYW1lKTogRGVsZXRlZC4KKworICAgICAgICBEYXRhYmFzZVByb2Nlc3MgYWxyZWFkeSB1
c2VzIFdlYk9yaWdpbkRhdGFNYW5hZ2VyLCBzbyBpdCB3aWxsIGJlIHRoZSBmaXJzdCBwcm9jZXNz
CisgICAgICAgIHRvIGZhbGwgdW5kZXIgdGhlIGhlZWwgb2YgdGhlIG5ldyByZWdpZW1lLiBEYXRh
YmFzZVByb2Nlc3Mgd2lsbCBzdWJjbGFzcworICAgICAgICBXZWJPcmlnaW5EYXRhTWFuYWdlclN1
cHBsZW1lbnQsIGFuZCBwYXNzIGl0c2VsZiBpbiB0d2ljZSB0byB0aGUgV2ViT3JpZ2luRGF0YU1h
bmFnZXIKKyAgICAgICAgY29uc3RydWN0b3IuIENyZWF0ZSBhIGxhbWJkYS1iYXNlZCBBc3luY1Rh
c2sgZm9yIGVhY2ggcmVxdWVzdCwgYW5kIGNhbGwgdGhlIGNvbXBsZXRpb24KKyAgICAgICAgZnVu
Y3Rpb24gd2hlbiBlYWNoIHJlcXVlc3QgaXMgY29tcGxldGUuCisKKyAgICAgICAgKiBEYXRhYmFz
ZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQ
cm9jZXNzOjpEYXRhYmFzZVByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nl
c3M6OmdldEluZGV4ZWREYXRhYmFzZU9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFz
ZVByb2Nlc3M6OmRlbGV0ZUluZGV4ZWREYXRhYmFzZUVudHJpZXNGb3JPcmlnaW4pOgorICAgICAg
ICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3M6OmRlbGV0ZUluZGV4ZWREYXRhYmFzZUVudHJpZXNN
b2RpZmllZEJldHdlZW5EYXRlcyk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6
ZGVsZXRlQWxsSW5kZXhlZERhdGFiYXNlRW50cmllcyk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFi
YXNlUHJvY2Vzczo6Z2V0T3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vz
czo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJv
Y2Vzczo6ZGVsZXRlRW50cmllc01vZGlmaWVkQmV0d2VlbkRhdGVzKToKKyAgICAgICAgKFdlYktp
dDo6RGF0YWJhc2VQcm9jZXNzOjpkZWxldGVBbGxFbnRyaWVzKToKKyAgICAgICAgKFdlYktpdDo6
RGF0YWJhc2VQcm9jZXNzOjpkb0dldEluZGV4ZWREYXRhYmFzZU9yaWdpbnMpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3M6OmRvRGVsZXRlSW5kZXhlZERhdGFiYXNl
RW50cmllc0Zvck9yaWdpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJv
Y2Vzczo6ZG9EZWxldGVJbmRleGVkRGF0YWJhc2VFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXMp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3M6OmRvRGVsZXRlQWxs
SW5kZXhlZERhdGFiYXNlRW50cmllcyk6IERlbGV0ZWQuCisgICAgICAgICogRGF0YWJhc2VQcm9j
ZXNzL0RhdGFiYXNlUHJvY2Vzcy5oOgorCiAyMDE0LTEwLTIyICBHeXV5b3VuZyBLaW0gIDxneXV5
b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgUmVtb3ZlIFRleHRDaGVja2VyRW5jaGFu
dDo6Y3JlYXRlKCkgZmFjdG9yeSBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
RGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRh
YmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcAppbmRleCBiOTBkY2I2ZmFjZjJiMWRjZmNm
MmM0ZDE4MmRkNDJjMTg4Mjc3ZDVjLi5jYTQyMTNlNTAxODFiMTJmNjMyOWI0ZDIwZDk2ZGEwNmYz
MjZhMjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJh
c2VQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJh
c2VQcm9jZXNzLmNwcApAQCAtNTQsNyArNTQsNyBAQCBEYXRhYmFzZVByb2Nlc3MmIERhdGFiYXNl
UHJvY2Vzczo6c2hhcmVkKCkKIAogRGF0YWJhc2VQcm9jZXNzOjpEYXRhYmFzZVByb2Nlc3MoKQog
ICAgIDogbV9xdWV1ZShhZG9wdFJlZigqV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJL
aXQuRGF0YWJhc2VQcm9jZXNzIikubGVha1JlZigpKSkKLSAgICAsIG1fd2ViT3JpZ2luRGF0YU1h
bmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJPcmlnaW5EYXRhTWFuYWdlcj4odGhpcykpCisgICAg
LCBtX3dlYk9yaWdpbkRhdGFNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8V2ViT3JpZ2luRGF0YU1h
bmFnZXI+KHRoaXMsIHRoaXMpKQogewogICAgIC8vIE1ha2Ugc3VyZSB0aGUgVVRGOEVuY29kaW5n
IGVuY29kaW5nIGFuZCB0aGUgdGV4dCBlbmNvZGluZyBtYXBzIGhhdmUgYmVlbiBidWlsdCBvbiB0
aGUgbWFpbiB0aHJlYWQgYmVmb3JlIGEgYmFja2dyb3VuZCB0aHJlYWQgbmVlZHMgaXQuCiAgICAg
Ly8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUzNjUg
LSBOZWVkIGEgbW9yZSBleHBsaWNpdCB3YXkgb2YgZG9pbmcgdGhpcyBiZXNpZGVzIGFjY2Vzc2lu
ZyB0aGUgVVRGOEVuY29kaW5nLgpAQCAtMTkxLDE4ICsxOTEsMTIgQEAgdm9pZCBEYXRhYmFzZVBy
b2Nlc3M6OmNyZWF0ZURhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbigpCiAjZW5kaWYKIH0K
IAotdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmdldEluZGV4ZWREYXRhYmFzZU9yaWdpbnModWludDY0
X3QgY2FsbGJhY2tJRCkKLXsKLSAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUFzeW5jVGFzaygq
dGhpcywgJkRhdGFiYXNlUHJvY2Vzczo6ZG9HZXRJbmRleGVkRGF0YWJhc2VPcmlnaW5zLCBjYWxs
YmFja0lEKSk7Ci19Ci0KLXZvaWQgRGF0YWJhc2VQcm9jZXNzOjpkb0dldEluZGV4ZWREYXRhYmFz
ZU9yaWdpbnModWludDY0X3QgY2FsbGJhY2tJRCkKK1ZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+
IERhdGFiYXNlUHJvY2Vzczo6Z2V0SW5kZXhlZERhdGFiYXNlT3JpZ2lucygpCiB7CiAgICAgVmVj
dG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4gcmVzdWx0czsKIAogICAgIGlmIChtX2luZGV4ZWREYXRh
YmFzZURpcmVjdG9yeS5pc0VtcHR5KCkpIHsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViT3Jp
Z2luRGF0YU1hbmFnZXJQcm94eTo6RGlkR2V0T3JpZ2lucyhyZXN1bHRzLCBjYWxsYmFja0lEKSwg
MCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICAgfQogCiAg
ICAgVmVjdG9yPFN0cmluZz4gb3JpZ2luUGF0aHMgPSBsaXN0RGlyZWN0b3J5KG1faW5kZXhlZERh
dGFiYXNlRGlyZWN0b3J5LCAiKiIpOwpAQCAtMjIwLDcgKzIxNCw3IEBAIHZvaWQgRGF0YWJhc2VQ
cm9jZXNzOjpkb0dldEluZGV4ZWREYXRhYmFzZU9yaWdpbnModWludDY0X3QgY2FsbGJhY2tJRCkK
ICAgICAgICAgcmVzdWx0cy5hcHBlbmQoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlP
cmlnaW4oc2VjdXJpdHlPcmlnaW4uZ2V0KCkpKTsKICAgICB9CiAKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpEaWRHZXRPcmlnaW5zKHJlc3VsdHMsIGNhbGxi
YWNrSUQpLCAwKTsKKyAgICByZXR1cm4gcmVzdWx0czsKIH0KIAogc3RhdGljIHZvaWQgcmVtb3Zl
QWxsRGF0YWJhc2VzRm9yT3JpZ2luUGF0aChjb25zdCBTdHJpbmcmIG9yaWdpblBhdGgsIGRvdWJs
ZSBzdGFydERhdGUsIGRvdWJsZSBlbmREYXRlKQpAQCAtMjUyLDYzICsyNDYsODcgQEAgc3RhdGlj
IHZvaWQgcmVtb3ZlQWxsRGF0YWJhc2VzRm9yT3JpZ2luUGF0aChjb25zdCBTdHJpbmcmIG9yaWdp
blBhdGgsIGRvdWJsZSBzdGEKICAgICBkZWxldGVFbXB0eURpcmVjdG9yeShvcmlnaW5QYXRoKTsK
IH0KIAotdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmRlbGV0ZUluZGV4ZWREYXRhYmFzZUVudHJpZXNG
b3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCit2b2lkIERhdGFiYXNlUHJvY2Vzczo6ZGVsZXRlSW5kZXhlZERhdGFiYXNlRW50cmll
c0Zvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbkRhdGEpCiB7Ci0gICAg
cG9zdERhdGFiYXNlVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZEYXRhYmFzZVByb2Nlc3M6
OmRvRGVsZXRlSW5kZXhlZERhdGFiYXNlRW50cmllc0Zvck9yaWdpbiwgb3JpZ2luLCBjYWxsYmFj
a0lEKSk7Ci19Ci0KLXZvaWQgRGF0YWJhc2VQcm9jZXNzOjpkb0RlbGV0ZUluZGV4ZWREYXRhYmFz
ZUVudHJpZXNGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW5EYXRhLCB1
aW50NjRfdCBjYWxsYmFja0lEKQotewotICAgIGlmIChtX2luZGV4ZWREYXRhYmFzZURpcmVjdG9y
eS5pc0VtcHR5KCkpIHsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViT3JpZ2luRGF0YU1hbmFn
ZXJQcm94eTo6RGlkRGVsZXRlRW50cmllcyhjYWxsYmFja0lEKSwgMCk7CisgICAgaWYgKG1faW5k
ZXhlZERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0K
IAogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gb3JpZ2luRGF0YS5zZWN1cml0
eU9yaWdpbigpOwogICAgIFN0cmluZyBkYXRhYmFzZUlkZW50aWZpZXIgPSBvcmlnaW4tPmRhdGFi
YXNlSWRlbnRpZmllcigpOwogICAgIFN0cmluZyBvcmlnaW5QYXRoID0gcGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KG1faW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBkYXRhYmFzZUlkZW50aWZpZXIp
OwogCiAgICAgcmVtb3ZlQWxsRGF0YWJhc2VzRm9yT3JpZ2luUGF0aChvcmlnaW5QYXRoLCBzdGQ6
Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Omxvd2VzdCgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGRv
dWJsZT46Om1heCgpKTsKLQotICAgIHNlbmQoTWVzc2FnZXM6OldlYk9yaWdpbkRhdGFNYW5hZ2Vy
UHJveHk6OkRpZERlbGV0ZUVudHJpZXMoY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIERhdGFi
YXNlUHJvY2Vzczo6ZGVsZXRlSW5kZXhlZERhdGFiYXNlRW50cmllc01vZGlmaWVkQmV0d2VlbkRh
dGVzKGRvdWJsZSBzdGFydERhdGUsIGRvdWJsZSBlbmREYXRlLCB1aW50NjRfdCBjYWxsYmFja0lE
KQordm9pZCBEYXRhYmFzZVByb2Nlc3M6OmRlbGV0ZUluZGV4ZWREYXRhYmFzZUVudHJpZXNNb2Rp
ZmllZEJldHdlZW5EYXRlcyhkb3VibGUgc3RhcnREYXRlLCBkb3VibGUgZW5kRGF0ZSkKIHsKLSAg
ICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJkRhdGFiYXNlUHJvY2Vz
czo6ZG9EZWxldGVJbmRleGVkRGF0YWJhc2VFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXMsIHN0
YXJ0RGF0ZSwgZW5kRGF0ZSwgY2FsbGJhY2tJRCkpOworICAgIGlmIChtX2luZGV4ZWREYXRhYmFz
ZURpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxTdHJp
bmc+IG9yaWdpblBhdGhzID0gbGlzdERpcmVjdG9yeShtX2luZGV4ZWREYXRhYmFzZURpcmVjdG9y
eSwgIioiKTsKKyAgICBmb3IgKGF1dG8mIG9yaWdpblBhdGggOiBvcmlnaW5QYXRocykKKyAgICAg
ICAgcmVtb3ZlQWxsRGF0YWJhc2VzRm9yT3JpZ2luUGF0aChvcmlnaW5QYXRoLCBzdGFydERhdGUs
IGVuZERhdGUpOwogfQogCi12b2lkIERhdGFiYXNlUHJvY2Vzczo6ZG9EZWxldGVJbmRleGVkRGF0
YWJhc2VFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXMoZG91YmxlIHN0YXJ0RGF0ZSwgZG91Ymxl
IGVuZERhdGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIERhdGFiYXNlUHJvY2Vzczo6ZGVs
ZXRlQWxsSW5kZXhlZERhdGFiYXNlRW50cmllcygpCiB7Ci0gICAgaWYgKG1faW5kZXhlZERhdGFi
YXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkgewotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJPcmln
aW5EYXRhTWFuYWdlclByb3h5OjpEaWREZWxldGVFbnRyaWVzKGNhbGxiYWNrSUQpLCAwKTsKKyAg
ICBpZiAobV9pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47Ci0gICAgfQogCiAgICAgVmVjdG9yPFN0cmluZz4gb3JpZ2luUGF0aHMgPSBsaXN0RGlyZWN0
b3J5KG1faW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCAiKiIpOwogICAgIGZvciAoYXV0byYgb3Jp
Z2luUGF0aCA6IG9yaWdpblBhdGhzKQotICAgICAgICByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmln
aW5QYXRoKG9yaWdpblBhdGgsIHN0YXJ0RGF0ZSwgZW5kRGF0ZSk7CisgICAgICAgIHJlbW92ZUFs
bERhdGFiYXNlc0Zvck9yaWdpblBhdGgob3JpZ2luUGF0aCwgc3RkOjpudW1lcmljX2xpbWl0czxk
b3VibGU+Ojpsb3dlc3QoKSwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSk7Cit9
CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpEaWREZWxl
dGVFbnRyaWVzKGNhbGxiYWNrSUQpLCAwKTsKK3ZvaWQgRGF0YWJhc2VQcm9jZXNzOjpnZXRPcmln
aW5zKFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgVmVj
dG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mKT4gY29tcGxldGlvbikKK3sKKyAgICBpZiAoISh0eXBl
cyAmIGtXS1dlYlNRTERhdGFiYXNlT3JpZ2luRGF0YSkpIHsKKyAgICAgICAgY29tcGxldGlvbihW
ZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPigpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIHBvc3REYXRhYmFzZVRhc2soc3RkOjptYWtlX3VuaXF1ZTxBc3luY1Rhc2s+KFtjb21wbGV0
aW9uLCB0aGlzXSB7CisgICAgICAgIGNvbXBsZXRpb24oZ2V0SW5kZXhlZERhdGFiYXNlT3JpZ2lu
cygpKTsKKyAgICB9KSk7CiB9CiAKLXZvaWQgRGF0YWJhc2VQcm9jZXNzOjpkZWxldGVBbGxJbmRl
eGVkRGF0YWJhc2VFbnRyaWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIERhdGFiYXNlUHJv
Y2Vzczo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbihXS09yaWdpbkRhdGFUeXBlcyB0eXBlcywgY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21w
bGV0aW9uKQogewotICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAm
RGF0YWJhc2VQcm9jZXNzOjpkb0RlbGV0ZUFsbEluZGV4ZWREYXRhYmFzZUVudHJpZXMsIGNhbGxi
YWNrSUQpKTsKKyAgICBpZiAoISh0eXBlcyAmIGtXS1dlYlNRTERhdGFiYXNlT3JpZ2luRGF0YSkp
IHsKKyAgICAgICAgY29tcGxldGlvbigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
cG9zdERhdGFiYXNlVGFzayhzdGQ6Om1ha2VfdW5pcXVlPEFzeW5jVGFzaz4oW3RoaXMsIG9yaWdp
biwgY29tcGxldGlvbl0geworICAgICAgICBkZWxldGVJbmRleGVkRGF0YWJhc2VFbnRyaWVzRm9y
T3JpZ2luKG9yaWdpbik7CisgICAgICAgIGNvbXBsZXRpb24oKTsKKyAgICB9KSk7CiB9CiAKLXZv
aWQgRGF0YWJhc2VQcm9jZXNzOjpkb0RlbGV0ZUFsbEluZGV4ZWREYXRhYmFzZUVudHJpZXModWlu
dDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgRGF0YWJhc2VQcm9jZXNzOjpkZWxldGVFbnRyaWVzTW9k
aWZpZWRCZXR3ZWVuRGF0ZXMoV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMsIGRvdWJsZSBzdGFydERh
dGUsIGRvdWJsZSBlbmREYXRlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbikKIHsK
LSAgICBpZiAobV9pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OkRpZERlbGV0ZUFsbEVu
dHJpZXMoY2FsbGJhY2tJRCksIDApOworICAgIGlmICghKHR5cGVzICYga1dLV2ViU1FMRGF0YWJh
c2VPcmlnaW5EYXRhKSkgeworICAgICAgICBjb21wbGV0aW9uKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBvcmlnaW5QYXRocyA9IGxpc3REaXJlY3Rvcnko
bV9pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksICIqIik7Ci0gICAgZm9yIChhdXRvJiBvcmlnaW5Q
YXRoIDogb3JpZ2luUGF0aHMpCi0gICAgICAgIHJlbW92ZUFsbERhdGFiYXNlc0Zvck9yaWdpblBh
dGgob3JpZ2luUGF0aCwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpsb3dlc3QoKSwgc3Rk
OjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSk7CisgICAgcG9zdERhdGFiYXNlVGFzayhz
dGQ6Om1ha2VfdW5pcXVlPEFzeW5jVGFzaz4oW3RoaXMsIHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgY29t
cGxldGlvbl0geworICAgICAgICBkZWxldGVJbmRleGVkRGF0YWJhc2VFbnRyaWVzTW9kaWZpZWRC
ZXR3ZWVuRGF0ZXMoc3RhcnREYXRlLCBlbmREYXRlKTsKKyAgICAgICAgY29tcGxldGlvbigpOwor
ICAgIH0pKTsKK30KKwordm9pZCBEYXRhYmFzZVByb2Nlc3M6OmRlbGV0ZUFsbEVudHJpZXMoV0tP
cmlnaW5EYXRhVHlwZXMgdHlwZXMsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uKQor
eworICAgIGlmICghKHR5cGVzICYga1dLV2ViU1FMRGF0YWJhc2VPcmlnaW5EYXRhKSkgeworICAg
ICAgICBjb21wbGV0aW9uKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpEaWREZWxldGVBbGxFbnRyaWVzKGNh
bGxiYWNrSUQpLCAwKTsKKyAgICBwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6bWFrZV91bmlxdWU8QXN5
bmNUYXNrPihbdGhpcywgY29tcGxldGlvbl0geworICAgICAgICBkZWxldGVBbGxJbmRleGVkRGF0
YWJhc2VFbnRyaWVzKCk7CisgICAgICAgIGNvbXBsZXRpb24oKTsKKyAgICB9KSk7CiB9CiAKICNp
ZiAhUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVBy
b2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3Mv
RGF0YWJhc2VQcm9jZXNzLmgKaW5kZXggM2RkMzY0Y2VlY2UxMTk0NmIwN2I0ZTFlOWE2NzhjNzBk
MGU5YTczZC4uMDhhYWY0MWYyZmVkYWMyYmFhOTE5MDYwNjQxZDU5NDgwYzAxYjU1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaApAQCAt
MzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzLmgiCiAjaW5jbHVkZSAiVW5p
cXVlSURCRGF0YWJhc2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiV2ViT3JpZ2luRGF0YU1hbmFn
ZXJTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIGNsYXNz
IFdvcmtRdWV1ZTsKQEAgLTQzLDcgKzQ0LDcgQEAgY2xhc3MgV2ViT3JpZ2luRGF0YU1hbmFnZXI7
CiAKIHN0cnVjdCBEYXRhYmFzZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiAKLWNsYXNzIERh
dGFiYXNlUHJvY2VzcyA6IHB1YmxpYyBDaGlsZFByb2Nlc3MgIHsKK2NsYXNzIERhdGFiYXNlUHJv
Y2VzcyA6IHB1YmxpYyBDaGlsZFByb2Nlc3MsIHB1YmxpYyBXZWJPcmlnaW5EYXRhTWFuYWdlclN1
cHBsZW1lbnQgIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEYXRhYmFzZVByb2Nlc3MpOwog
ICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxEYXRhYmFzZVByb2Nlc3M+OwogcHVibGlj
OgpAQCAtNjAsMTAgKzYxLDEyIEBAIHB1YmxpYzoKIAogICAgIFdvcmtRdWV1ZSYgcXVldWUoKSB7
IHJldHVybiBtX3F1ZXVlLmdldCgpOyB9CiAKLSAgICB2b2lkIGdldEluZGV4ZWREYXRhYmFzZU9y
aWdpbnModWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBkZWxldGVJbmRleGVkRGF0YWJh
c2VFbnRyaWVzRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpOwotICAgIHZvaWQgZGVsZXRlSW5kZXhlZERhdGFiYXNlRW50cmllc01vZGlmaWVk
QmV0d2VlbkRhdGVzKGRvdWJsZSBzdGFydERhdGUsIGRvdWJsZSBlbmREYXRlLCB1aW50NjRfdCBj
YWxsYmFja0lEKTsKLSAgICB2b2lkIGRlbGV0ZUFsbEluZGV4ZWREYXRhYmFzZUVudHJpZXModWlu
dDY0X3QgY2FsbGJhY2tJRCk7CisgICAgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4gZ2V0SW5k
ZXhlZERhdGFiYXNlT3JpZ2lucygpOworICAgIHZvaWQgZGVsZXRlSW5kZXhlZERhdGFiYXNlRW50
cmllc0Zvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKTsKKyAgICB2b2lkIGRlbGV0
ZUluZGV4ZWREYXRhYmFzZUVudHJpZXNNb2RpZmllZEJldHdlZW5EYXRlcyhkb3VibGUgc3RhcnRE
YXRlLCBkb3VibGUgZW5kRGF0ZSk7CisgICAgdm9pZCBkZWxldGVBbGxJbmRleGVkRGF0YWJhc2VF
bnRyaWVzKCk7CisKKyAgICB2b2lkIHBvc3REYXRhYmFzZVRhc2soc3RkOjp1bmlxdWVfcHRyPEFz
eW5jVGFzaz4pOwogCiBwcml2YXRlOgogICAgIERhdGFiYXNlUHJvY2VzcygpOwpAQCAtODUsMTUg
Kzg4LDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplRGF0YWJhc2VQcm9jZXNzKGNv
bnN0IERhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZvaWQgY3JlYXRl
RGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKCk7CiAKLSAgICB2b2lkIHBvc3REYXRhYmFz
ZVRhc2soc3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFzaz4pOwotCiAgICAgLy8gRm9yIGV4ZWN1dGlv
biBvbiB3b3JrIHF1ZXVlIHRocmVhZCBvbmx5CiAgICAgdm9pZCBwZXJmb3JtTmV4dERhdGFiYXNl
VGFzaygpOwogICAgIHZvaWQgZW5zdXJlUGF0aEV4aXN0cyhjb25zdCBTdHJpbmcmKTsKLSAgICB2
b2lkIGRvR2V0SW5kZXhlZERhdGFiYXNlT3JpZ2lucyh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAg
ICB2b2lkIGRvRGVsZXRlSW5kZXhlZERhdGFiYXNlRW50cmllc0Zvck9yaWdpbihjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGRvRGVsZXRl
SW5kZXhlZERhdGFiYXNlRW50cmllc01vZGlmaWVkQmV0d2VlbkRhdGVzKGRvdWJsZSBzdGFydERh
dGUsIGRvdWJsZSBlbmREYXRlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGRvRGVs
ZXRlQWxsSW5kZXhlZERhdGFiYXNlRW50cmllcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKKworICAg
IC8vIFdlYk9yaWdpbkRhdGFNYW5hZ2VyU3VwcGxlbWVudAorICAgIHZpcnR1YWwgdm9pZCBnZXRP
cmlnaW5zKFdLT3JpZ2luRGF0YVR5cGVzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9y
PFNlY3VyaXR5T3JpZ2luRGF0YT4mKT4gY29tcGxldGlvbikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIGRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tPcmlnaW5EYXRhVHlwZXMsIGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRW50cmllc01vZGlmaWVkQmV0d2VlbkRhdGVz
KFdLT3JpZ2luRGF0YVR5cGVzLCBkb3VibGUgc3RhcnREYXRlLCBkb3VibGUgZW5kRGF0ZSwgc3Rk
OjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVBbGxFbnRyaWVzKFdLT3JpZ2luRGF0YVR5cGVzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQo
KT4gY29tcGxldGlvbikgb3ZlcnJpZGU7CiAKICAgICBWZWN0b3I8UmVmUHRyPERhdGFiYXNlVG9X
ZWJQcm9jZXNzQ29ubmVjdGlvbj4+IG1fZGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uczsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FzeW5jVGFzay5oIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FzeW5jVGFzay5oCmluZGV4IGEwMjgwOTE5OTdkNWM0ZjU2MGQ2YTBh
MGE3NmI1YzY0YjY3YjVlNjcuLjQ5MTU0N2YzNDdkYjkwYjQ2M2MxYjU2Y2UwMTg5MTIwZmZiOGVk
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Bc3luY1Rhc2suaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXN5bmNUYXNrLmgKQEAgLTM0LDEyICszNCwyMSBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIGNsYXNzIEFzeW5jVGFzayB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoQXN5bmNUYXNrKTsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5Bc3luY1Rhc2soKSB7IH0KKyAg
ICBBc3luY1Rhc2soY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IHRhc2tGdW5jdGlvbikKKyAg
ICAgICAgOiBtX3Rhc2tGdW5jdGlvbih0YXNrRnVuY3Rpb24pCisgICAgeworICAgIH0KIAotICAg
IHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzaygpID0gMDsKKyAgICB2b2lkIHBlcmZvcm1UYXNrKCkK
KyAgICB7CisgICAgICAgIGlmIChtX3Rhc2tGdW5jdGlvbikKKyAgICAgICAgICAgIG1fdGFza0Z1
bmN0aW9uKCk7CisgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgQXN5bmNUYXNrKCkg
eyB9CisgICAgQXN5bmNUYXNrKCkgeyB9CisKKyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV90
YXNrRnVuY3Rpb247CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJn
dW1lbnRzPgpAQCAtNTEsMTggKzYwLDYgQEAgcHVibGljOgogICAgICAgICAgICAgKGNhbGxlZS0+
Km1ldGhvZCkoYXJndW1lbnRzLi4uKTsKICAgICAgICAgfTsKICAgICB9Ci0KLSAgICB2aXJ0dWFs
IH5Bc3luY1Rhc2tJbXBsKCkKLSAgICB7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHZpcnR1YWwg
dm9pZCBwZXJmb3JtVGFzaygpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBtX3Rhc2tGdW5jdGlv
bigpOwotICAgIH0KLQotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBtX3Rhc2tGdW5jdGlvbjsK
IH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjVhZGVmMWFiOGU0MDgyMmVjYTMyYjFm
M2ZmNDg2Y2JjNmQ4YmI5Ni4uODhiZjcxN2Y2YWU4NDVlNzQwOGJlZWUyODhkMjVlMWEzZGVhYmU0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTU4Niw2ICsxNTg2LDcgQEAKIAkJQ0RDMzgzMTAxNzIxMjQ0MDAwOEEyRkMzIC8q
IENvb2tpZVN0b3JhZ2VTaGltLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RDMzgzMEQxNzIxMjQyRDAwOEEyRkMzIC8qIENvb2tpZVN0b3JhZ2VTaGlt
Lm1tICovOyB9OwogCQlDRENBODVDODEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2lu
ZG93Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEQ0E4NUM2MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250
cm9sbGVyLm1tICovOyB9OwogCQlDRENBODVDOTEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2Ny
ZWVuV2luZG93Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RDQTg1QzcxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRv
d0NvbnRyb2xsZXIuaCAqLzsgfTsKKwkJQ0RFNkUyRDMxOUY3MzFDNDAwQkE5Njg4IC8qIFdlYk9y
aWdpbkRhdGFNYW5hZ2VyU3VwcGxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RFNkUyRDIxOUY3MzFDNDAwQkE5Njg4IC8qIFdlYk9yaWdpbkRh
dGFNYW5hZ2VyU3VwcGxlbWVudC5oICovOyB9OwogCQlDRURBMTJFMjE1MkNEMUFFMDBEOUUwOEQg
LyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFREExMkRGMTUyQ0NBRTgwMEQ5RTA4RCAvKiBXZWJBbHRl
cm5hdGl2ZVRleHRDbGllbnQuY3BwICovOyB9OwogCQlDRURBMTJFMzE1MkNEMUIzMDBEOUUwOEQg
LyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRURBMTJERTE1MkNDQUU4MDBEOUUwOEQgLyogV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50LmggKi87IH07CiAJCUQzQjk0ODQ2MTFGRjRCNjUwMDAzMkIzOSAvKiBX
ZWJQb3B1cE1lbnUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRDNCOTQ4NDIxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5jcHAgKi87IH07
CkBAIC0zNjc3LDYgKzM2NzgsNyBAQAogCQlDRENBODVDNjEzMkFCQTRFMDBFOTYxREYgLyogV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEQ0E4NUM3MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
RnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0RDQTg1RDQxMzJBQzJCMzAwRTk2MURGIC8qIElPS2l0LmZyYW1ld29yayAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3Jr
OyBuYW1lID0gSU9LaXQuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvSU9LaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OworCQlDREU2
RTJEMjE5RjczMUM0MDBCQTk2ODggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJTdXBwbGVtZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYk9yaWdpbkRhdGFNYW5hZ2VyU3Vw
cGxlbWVudC5oOyBwYXRoID0gT3JpZ2luRGF0YS9XZWJPcmlnaW5EYXRhTWFuYWdlclN1cHBsZW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VEQTEyREUxNTJDQ0FFODAwRDlF
MDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0VEQTEyREYxNTJDQ0FFODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4
dENsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBbHRl
cm5hdGl2ZVRleHRDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEM0I5
NDg0MjExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBvcHVwTWVudS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC01NTE0LDYgKzU1MTYsNyBAQAogCQk3NTU0MjJDNTE4MDY0RkZDMDA0NkY2
QTggLyogT3JpZ2luRGF0YSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJQ0RFNkUyRDIxOUY3MzFDNDAwQkE5Njg4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2Vy
U3VwcGxlbWVudC5oICovLAogCQkJCTc1NTQyMkM2MTgwNjRGRkMwMDQ2RjZBOCAvKiBXZWJPcmln
aW5EYXRhTWFuYWdlci5jcHAgKi8sCiAJCQkJNzU1NDIyQzcxODA2NEZGQzAwNDZGNkE4IC8qIFdl
Yk9yaWdpbkRhdGFNYW5hZ2VyLmggKi8sCiAJCQkJNzU1NDIyQzgxODA2NEZGQzAwNDZGNkE4IC8q
IFdlYk9yaWdpbkRhdGFNYW5hZ2VyLm1lc3NhZ2VzLmluICovLApAQCAtNzAwMCw2ICs3MDAzLDcg
QEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCQkx
QURBRTEyRTE5MTlBNUI0MDBGNDhFMjEgLyogV0tQcmVmZXJlbmNlcy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQ0RFNkUyRDMxOUY3MzFDNDAwQkE5Njg4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyU3Vw
cGxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGNDU5MzIxOTQ2NTU5NTAwRjlENEEyIC8q
IFdLRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxOUJEQThBMTkzNjg2QTQwMEI5N0Y1NyAv
KiBTYW5kYm94VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTcyODQ0NzE5NTlFRDEw
MDAwN0JDRTUgLyogU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL09yaWdpbkRhdGEvV2ViT3JpZ2luRGF0
YU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9PcmlnaW5EYXRhL1dlYk9y
aWdpbkRhdGFNYW5hZ2VyLmNwcAppbmRleCA2OGU4Yjc3MDE0Y2U3NGM5Yzg4ZDNjZTU0ZDY5OTg3
ZjkzOWYzNzdhLi4wYThjYmE5NDY5MTg2ZTBkNTI5MDM2ZjMxOTY2YzZlMDVjNDUwYTkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL09yaWdpbkRhdGEvV2ViT3JpZ2luRGF0
YU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvT3JpZ2luRGF0YS9X
ZWJPcmlnaW5EYXRhTWFuYWdlci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJXZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJPcmlnaW5EYXRhTWFuYWdlck1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiV2ViT3JpZ2luRGF0YU1hbmFnZXJTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5I
YXNoLmg+CiAKQEAgLTQzLDg1ICs0NCw0NCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLWNvbnN0IGNoYXIqIFdlYk9yaWdpbkRhdGFNYW5hZ2VyOjpz
dXBwbGVtZW50TmFtZSgpCi17Ci0gICAgcmV0dXJuICJXZWJPcmlnaW5EYXRhTWFuYWdlciI7Ci19
Ci0KLVdlYk9yaWdpbkRhdGFNYW5hZ2VyOjpXZWJPcmlnaW5EYXRhTWFuYWdlcihDaGlsZFByb2Nl
c3MqIGNoaWxkUHJvY2VzcykKK1dlYk9yaWdpbkRhdGFNYW5hZ2VyOjpXZWJPcmlnaW5EYXRhTWFu
YWdlcihDaGlsZFByb2Nlc3MqIGNoaWxkUHJvY2VzcywgV2ViT3JpZ2luRGF0YU1hbmFnZXJTdXBw
bGVtZW50KiBzdXBwbGVtZW50KQogICAgIDogbV9jaGlsZFByb2Nlc3MoY2hpbGRQcm9jZXNzKQor
ICAgICwgbV9zdXBwbGVtZW50KHN1cHBsZW1lbnQpCiB7CisgICAgQVNTRVJUKHN1cHBsZW1lbnQp
OwogICAgIG1fY2hpbGRQcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYk9y
aWdpbkRhdGFNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKIH0KIAogdm9p
ZCBXZWJPcmlnaW5EYXRhTWFuYWdlcjo6Z2V0T3JpZ2lucyhXS09yaWdpbkRhdGFUeXBlcyB0eXBl
cywgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykK
LSAgICAvLyBGSVhNRTogRm9yIG5vdywgdGhlIERhdGFiYXNlUHJvY2VzcyBvbmx5IGhhbmRsZXMg
SW5kZXhlZERhdGFiYXNlIG9yaWdpbiBkYXRhLgotICAgIC8vIElmIGl0IGV2ZXIgc3RhcnRzIGhh
bmRsaW5nIG90aGVyIGRhdGEgdHlwZXMgKGUuZy4gV2ViU1FMKSB0aGVuIGl0IHdpbGwgaGF2ZSB0
byBhZ2dyZWdyYXRlIHJlcXVlc3RzCi0gICAgLy8gZm9yIG11bHRpcGxlIHR5cGVzIGludG8gdGhl
IG9uZSBjYWxsYmFjay4KLSAgICBpZiAodHlwZXMgJiBrV0tJbmRleGVkRGF0YWJhc2VEYXRhKSB7
Ci0gICAgICAgIERhdGFiYXNlUHJvY2Vzczo6c2hhcmVkKCkuZ2V0SW5kZXhlZERhdGFiYXNlT3Jp
Z2lucyhjYWxsYmFja0lEKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKHR5cGVzKTsKLSNlbmRpZgotCi0gICAgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0
YT4gcmVzdWx0czsKLSAgICBtX2NoaWxkUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViT3JpZ2lu
RGF0YU1hbmFnZXJQcm94eTo6RGlkR2V0T3JpZ2lucyhyZXN1bHRzLCBjYWxsYmFja0lEKSwgMCk7
CisgICAgQ2hpbGRQcm9jZXNzKiBjaGlsZFByb2Nlc3MgPSBtX2NoaWxkUHJvY2VzczsKKyAgICBt
X3N1cHBsZW1lbnQtPmdldE9yaWdpbnModHlwZXMsIFtjaGlsZFByb2Nlc3MsIGNhbGxiYWNrSURd
KGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiByZXN1bHRzKSB7CisgICAgICAgIGNo
aWxkUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6RGlk
R2V0T3JpZ2lucyhyZXN1bHRzLCBjYWxsYmFja0lEKSwgMCk7CisgICAgfSk7CiB9CiAKIHZvaWQg
V2ViT3JpZ2luRGF0YU1hbmFnZXI6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tPcmlnaW5EYXRh
VHlwZXMgdHlwZXMsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luRGF0YSwgdWludDY0
X3QgY2FsbGJhY2tJRCkKIHsKLSNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKLSAgICAvLyBG
SVhNRTogRm9yIG5vdywgdGhlIERhdGFiYXNlUHJvY2VzcyBvbmx5IGhhbmRsZXMgSW5kZXhlZERh
dGFiYXNlIG9yaWdpbiBkYXRhLgotICAgIC8vIElmIGl0IGV2ZXIgc3RhcnRzIGhhbmRsaW5nIG90
aGVyIGRhdGEgdHlwZXMgKGUuZy4gV2ViU1FMKSB0aGVuIGl0IHdpbGwgaGF2ZSB0byBhZ2dyZWdy
YXRlIHJlcXVlc3RzCi0gICAgLy8gZm9yIG11bHRpcGxlIHR5cGVzIGludG8gdGhlIG9uZSBjYWxs
YmFjay4KLSAgICBpZiAodHlwZXMgJiBrV0tJbmRleGVkRGF0YWJhc2VEYXRhKSB7Ci0gICAgICAg
IERhdGFiYXNlUHJvY2Vzczo6c2hhcmVkKCkuZGVsZXRlSW5kZXhlZERhdGFiYXNlRW50cmllc0Zv
ck9yaWdpbihvcmlnaW5EYXRhLCBjYWxsYmFja0lEKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHR5cGVzKTsKLSAgICBVTlVTRURfUEFSQU0ob3JpZ2lu
RGF0YSk7Ci0jZW5kaWYKLQotICAgIG1fY2hpbGRQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJP
cmlnaW5EYXRhTWFuYWdlclByb3h5OjpEaWREZWxldGVFbnRyaWVzKGNhbGxiYWNrSUQpLCAwKTsK
KyAgICBDaGlsZFByb2Nlc3MqIGNoaWxkUHJvY2VzcyA9IG1fY2hpbGRQcm9jZXNzOworICAgIG1f
c3VwcGxlbWVudC0+ZGVsZXRlRW50cmllc0Zvck9yaWdpbih0eXBlcywgb3JpZ2luRGF0YSwgWyZj
aGlsZFByb2Nlc3MsIGNhbGxiYWNrSURdIHsKKyAgICAgICAgY2hpbGRQcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpEaWREZWxldGVFbnRyaWVzKGNhbGxi
YWNrSUQpLCAwKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJPcmlnaW5EYXRhTWFuYWdlcjo6ZGVs
ZXRlRW50cmllc01vZGlmaWVkQmV0d2VlbkRhdGVzKFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzLCBk
b3VibGUgc3RhcnRUaW1lLCBkb3VibGUgZW5kVGltZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsK
LSNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKLSAgICAvLyBGSVhNRTogRm9yIG5vdywgdGhl
IERhdGFiYXNlUHJvY2VzcyBvbmx5IGhhbmRsZXMgSW5kZXhlZERhdGFiYXNlIG9yaWdpbiBkYXRh
LgotICAgIC8vIElmIGl0IGV2ZXIgc3RhcnRzIGhhbmRsaW5nIG90aGVyIGRhdGEgdHlwZXMgKGUu
Zy4gV2ViU1FMKSB0aGVuIGl0IHdpbGwgaGF2ZSB0byBhZ2dyZWdyYXRlIHJlcXVlc3RzCi0gICAg
Ly8gZm9yIG11bHRpcGxlIHR5cGVzIGludG8gdGhlIG9uZSBjYWxsYmFjay4KLSAgICBpZiAodHlw
ZXMgJiBrV0tJbmRleGVkRGF0YWJhc2VEYXRhKSB7Ci0gICAgICAgIERhdGFiYXNlUHJvY2Vzczo6
c2hhcmVkKCkuZGVsZXRlSW5kZXhlZERhdGFiYXNlRW50cmllc01vZGlmaWVkQmV0d2VlbkRhdGVz
KHN0YXJ0VGltZSwgZW5kVGltZSwgY2FsbGJhY2tJRCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh0eXBlcyk7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXJ0
VGltZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGVuZFRpbWUpOwotI2VuZGlmCi0gICAgbV9jaGlsZFBy
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OkRpZERlbGV0
ZUVudHJpZXMoY2FsbGJhY2tJRCksIDApOworICAgIENoaWxkUHJvY2VzcyogY2hpbGRQcm9jZXNz
ID0gbV9jaGlsZFByb2Nlc3M7CisgICAgbV9zdXBwbGVtZW50LT5kZWxldGVFbnRyaWVzTW9kaWZp
ZWRCZXR3ZWVuRGF0ZXModHlwZXMsIHN0YXJ0VGltZSwgZW5kVGltZSwgW2NoaWxkUHJvY2Vzcywg
Y2FsbGJhY2tJRF0geworICAgICAgICBjaGlsZFByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYk9y
aWdpbkRhdGFNYW5hZ2VyUHJveHk6OkRpZERlbGV0ZUVudHJpZXMoY2FsbGJhY2tJRCksIDApOwor
ICAgIH0pOwogfQogCiB2b2lkIFdlYk9yaWdpbkRhdGFNYW5hZ2VyOjpkZWxldGVBbGxFbnRyaWVz
KFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKQogewotI2lmIEVO
QUJMRShEQVRBQkFTRV9QUk9DRVNTKQotICAgIC8vIEZJWE1FOiBGb3Igbm93LCB0aGUgRGF0YWJh
c2VQcm9jZXNzIG9ubHkgaGFuZGxlcyBJbmRleGVkRGF0YWJhc2Ugb3JpZ2luIGRhdGEuCi0gICAg
Ly8gSWYgaXQgZXZlciBzdGFydHMgaGFuZGxpbmcgb3RoZXIgZGF0YSB0eXBlcyAoZS5nLiBXZWJT
UUwpIHRoZW4gaXQgd2lsbCBoYXZlIHRvIGFnZ3JlZ3JhdGUgcmVxdWVzdHMKLSAgICAvLyBmb3Ig
bXVsdGlwbGUgdHlwZXMgaW50byB0aGUgb25lIGNhbGxiYWNrLgotICAgIGlmICh0eXBlcyAmIGtX
S0luZGV4ZWREYXRhYmFzZURhdGEpIHsKLSAgICAgICAgRGF0YWJhc2VQcm9jZXNzOjpzaGFyZWQo
KS5kZWxldGVBbGxJbmRleGVkRGF0YWJhc2VFbnRyaWVzKGNhbGxiYWNrSUQpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0odHlwZXMpOwotI2VuZGlmCi0g
ICAgbV9jaGlsZFByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJv
eHk6OkRpZERlbGV0ZUFsbEVudHJpZXMoY2FsbGJhY2tJRCksIDApOworICAgIENoaWxkUHJvY2Vz
cyogY2hpbGRQcm9jZXNzID0gbV9jaGlsZFByb2Nlc3M7CisgICAgbV9zdXBwbGVtZW50LT5kZWxl
dGVBbGxFbnRyaWVzKHR5cGVzLCBbY2hpbGRQcm9jZXNzLCBjYWxsYmFja0lEXSB7CisgICAgICAg
IGNoaWxkUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6
RGlkRGVsZXRlQWxsRW50cmllcyhjYWxsYmFja0lEKSwgMCk7CisgICAgfSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9P
cmlnaW5EYXRhL1dlYk9yaWdpbkRhdGFNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL09yaWdpbkRhdGEvV2ViT3JpZ2luRGF0YU1hbmFnZXIuaAppbmRleCA3ZjgzMGI5NmZmYmQ4
Njg0MTQ3NzQ1ZTJiMjdjZTU3ODUwMmExMDdmLi5lZTNlYzc4ODFjMmRiMGMwZGQ4NzQ5YzlkMjQ0
ZDk1Mjc3ZTg1ZGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL09yaWdp
bkRhdGEvV2ViT3JpZ2luRGF0YU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL09yaWdpbkRhdGEvV2ViT3JpZ2luRGF0YU1hbmFnZXIuaApAQCAtMjYsMjMgKzI2LDIyIEBA
CiAjaWZuZGVmIFdlYk9yaWdpbkRhdGFNYW5hZ2VyX2gKICNkZWZpbmUgV2ViT3JpZ2luRGF0YU1h
bmFnZXJfaAogCi0jaW5jbHVkZSAiQ2hpbGRQcm9jZXNzU3VwcGxlbWVudC5oIgogI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIldLT3JpZ2luRGF0YU1hbmFnZXIuaCIKKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgQ2hpbGRQcm9jZXNzOworY2xhc3MgV2ViT3JpZ2luRGF0YU1hbmFnZXJTdXBwbGVtZW50Owog
c3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIAotY2xhc3MgV2ViT3JpZ2luRGF0YU1hbmFnZXIg
OiBwdWJsaWMgQ2hpbGRQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2Vp
dmVyIHsKK2NsYXNzIFdlYk9yaWdpbkRhdGFNYW5hZ2VyIDogcHVibGljIElQQzo6TWVzc2FnZVJl
Y2VpdmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJPcmlnaW5EYXRhTWFuYWdlcik7
CiBwdWJsaWM6Ci0gICAgV2ViT3JpZ2luRGF0YU1hbmFnZXIoQ2hpbGRQcm9jZXNzKik7Ci0KLSAg
ICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKKyAgICBXZWJPcmlnaW5EYXRh
TWFuYWdlcihDaGlsZFByb2Nlc3MqLCBXZWJPcmlnaW5EYXRhTWFuYWdlclN1cHBsZW1lbnQqKTsK
IAogcHJpdmF0ZToKICAgICB2b2lkIGdldE9yaWdpbnMoV0tPcmlnaW5EYXRhVHlwZXMsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpOwpAQCAtNTQsNiArNTMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNv
ZGVyJikgb3ZlcnJpZGU7CiAKICAgICBDaGlsZFByb2Nlc3MqIG1fY2hpbGRQcm9jZXNzOworICAg
IFdlYk9yaWdpbkRhdGFNYW5hZ2VyU3VwcGxlbWVudCogbV9zdXBwbGVtZW50OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L09yaWdpbkRhdGEvV2ViT3JpZ2luRGF0YU1hbmFnZXJTdXBwbGVtZW50LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL09yaWdpbkRhdGEvV2ViT3JpZ2luRGF0YU1hbmFnZXJTdXBwbGVtZW50
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOGZhOTRlMzAxMTM5MWE2NDY0MGU4MDkxZWQ2NjlmZGU2YjExMDBjNAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvT3JpZ2luRGF0YS9X
ZWJPcmlnaW5EYXRhTWFuYWdlclN1cHBsZW1lbnQuaApAQCAtMCwwICsxLDUxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBXZWJPcmlnaW5EYXRhTWFuYWdlclN1cHBsZW1lbnRfaAorI2RlZmluZSBXZWJP
cmlnaW5EYXRhTWFuYWdlclN1cHBsZW1lbnRfaAorCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5E
YXRhLmgiCisjaW5jbHVkZSAiV0tPcmlnaW5EYXRhTWFuYWdlci5oIgorI2luY2x1ZGUgPGZ1bmN0
aW9uYWw+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJPcmlnaW5EYXRhTWFuYWdl
clN1cHBsZW1lbnQgeworcHVibGljOgorICAgIFdlYk9yaWdpbkRhdGFNYW5hZ2VyU3VwcGxlbWVu
dCgpIHsgfQorICAgIHZpcnR1YWwgfldlYk9yaWdpbkRhdGFNYW5hZ2VyU3VwcGxlbWVudCgpIHsg
fQorCisgICAgdmlydHVhbCB2b2lkIGdldE9yaWdpbnMoV0tPcmlnaW5EYXRhVHlwZXMsIHN0ZDo6
ZnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYpPiBjb21wbGV0
aW9uKQorICAgIHsKKyAgICAgICAgY29tcGxldGlvbihWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRh
PigpKTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tP
cmlnaW5EYXRhVHlwZXMsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPiBjb21wbGV0aW9uKSB7IGNvbXBsZXRpb24oKTsgfQorICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXMoV0tPcmlnaW5EYXRhVHlwZXMsIGRvdWJs
ZSBzdGFydERhdGUsIGRvdWJsZSBlbmREYXRlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxl
dGlvbikgeyBjb21wbGV0aW9uKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWxsRW50cmll
cyhXS09yaWdpbkRhdGFUeXBlcywgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb24pIHsg
Y29tcGxldGlvbigpOyB9Cit9OworCit9CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240437</attachid>
            <date>2014-10-24 14:32:21 -0700</date>
            <delta_ts>2015-01-26 08:40:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137993-20141024143228.patch</filename>
            <type>text/plain</type>
            <size>28760</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1MTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYWE1YWE1OTUyMTdjMDQ0
NmQ2MTA1OGY1YjVkZjIwZjA3MTJlYTI2ZC4uYzFmN2E5MWZhYjVkMmE2N2M4NDNjM2VjZDU0YTZl
NmEyOTAxZWNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE0LTEwLTIyICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEFic3RyYWN0aWZ5IFdlYk9y
aWdpbkRhdGFNYW5hZ2VyIHRvIHN1cHBvcnQgYXJiaXRyYXJ5IENoaWxkUHJvY2VzcyBzdXBwbGVt
ZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
Nzk5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRv
IGFsbG93IGRpZmZlcmVudCBDaGlsZFByb2Nlc3Mgc3ViY2xhc3NlcyB0byBoYW5kbGUgbGlzdGlu
ZyBhbmQgZGVsZXRpb24gb2Ygb3JpZ2luCisgICAgICAgIGRhdGEsIG1ha2UgV2ViT3JpZ2luRGF0
YU1hbmFnZXIgbW9yZSBnZW5lcmljIGJ5IGhhdmluZyBhIHN1cHBsZW1lbnQgaW1wbGVtZW50IHRo
ZQorICAgICAgICBkZXRhaWxzLCBsZWF2aW5nIFdlYk9yaWdpbkRhdGFNYW5hZ2VyIHRvIGRlYWwg
d2l0aCBjcm9zcy1wcm9jZXNzIG1lc3NhZ2luZy4KKworICAgICAgICBEZS12aXJ0dWFsaXplIEFz
eW5jVGFzaywgYWxsb3dpbmcgYSB0YXNrIHRvIGJlIGNyZWF0ZWQgYnkgcGFzc2luZyBpbiBhCisg
ICAgICAgIGZ1bmN0aW9uPHZvaWQoKT4sIHJhdGhlciB0aGFuIGFuIG9iamVjdCwgbWV0aG9kLCBh
bmQgYXJndW1lbnRzLgorCisgICAgICAgICogU2hhcmVkL0FzeW5jVGFzay5oOgorICAgICAgICAo
V2ViS2l0OjpBc3luY1Rhc2s6OkFzeW5jVGFzayk6CisgICAgICAgIChXZWJLaXQ6OkFzeW5jVGFz
azo6cGVyZm9ybVRhc2spOgorICAgICAgICAoV2ViS2l0OjpBc3luY1Rhc2s6On5Bc3luY1Rhc2sp
OiBEZWxldGVkLgorCisgICAgICAgIEFkZCBhIG5ldyB2aXJ0dWFsIGJhc2UgY2xhc3MsIHRvIGJl
IGltcGxlbWVudGVkIGJ5IHZhcmlvdXMgQ2hpbGRQcm9jZXNzZXMsIHdoaWNoCisgICAgICAgIFdl
Yk9yaWdpbkRhdGFNYW5hZ2VyIHdpbGwgdXNlIHRvIGltcGxlbWVudCBsaXN0aW5nIGFuZCBkZWxl
dGlvbiByZXF1ZXN0cy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvT3JpZ2luRGF0YS9XZWJPcmln
aW5EYXRhTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvT3JpZ2luRGF0YS9XZWJPcmln
aW5EYXRhTWFuYWdlclN1cHBsZW1lbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYk9y
aWdpbkRhdGFNYW5hZ2VyU3VwcGxlbWVudDo6V2ViT3JpZ2luRGF0YU1hbmFnZXJTdXBwbGVtZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViT3JpZ2luRGF0YU1hbmFnZXJTdXBwbGVtZW50Ojp+V2Vi
T3JpZ2luRGF0YU1hbmFnZXJTdXBwbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViT3JpZ2lu
RGF0YU1hbmFnZXJTdXBwbGVtZW50OjpnZXRPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
T3JpZ2luRGF0YU1hbmFnZXJTdXBwbGVtZW50OjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViT3JpZ2luRGF0YU1hbmFnZXJTdXBwbGVtZW50OjpkZWxldGVFbnRy
aWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJPcmlnaW5EYXRh
TWFuYWdlclN1cHBsZW1lbnQ6OmRlbGV0ZUFsbEVudHJpZXMpOgorICAgICAgICAqIFdlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICBXZWJPcmlnaW5EYXRhTWFuYWdl
ciBkb2Vzbid0IG5lZWQgdG8gYmUgYSBDaGlsZFN1cHBsZW1lbnQuIFJlbW92ZSB0aGUgRGF0YWJh
c2VQcm9jZXNzLQorICAgICAgICBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgZm9yIGl0cyBtZXNz
YWdlIGhhbmRsZXJzIGFuZCByZXBsYWNlIHdpdGggY2xlYW4sIGdlbmVyaWMgY2FsbHMKKyAgICAg
ICAgdG8gaXRzIHN1cHBsZW1lbnQuIEJlY2F1c2UgdGhlc2Ugc3VwcGxlbWVudHMgbWF5IHdhbnQg
dG8gcmVzcG9uZCB0byB0aGUgcmVxdWVzdAorICAgICAgICBhc3luY2hyb25vdXNseSwgcGFzcyBh
IGNvbXBsZXRpb24gZnVuY3Rpb24gaW4gdG8gYmUgY2FsbGVkIGJ5IHRoZSBzdXBwbGVtZW50IG9u
Y2UgaXRzCisgICAgICAgIHdvcmsgaXMgY29tcGxldGUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L09yaWdpbkRhdGEvV2ViT3JpZ2luRGF0YU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJPcmlnaW5EYXRhTWFuYWdlcjo6V2ViT3JpZ2luRGF0YU1hbmFnZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJPcmlnaW5EYXRhTWFuYWdlcjo6Z2V0T3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6
OldlYk9yaWdpbkRhdGFNYW5hZ2VyOjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luKToKKyAgICAgICAg
KFdlYktpdDo6V2ViT3JpZ2luRGF0YU1hbmFnZXI6OmRlbGV0ZUVudHJpZXNNb2RpZmllZEJldHdl
ZW5EYXRlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYk9yaWdpbkRhdGFNYW5hZ2VyOjpkZWxldGVB
bGxFbnRyaWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViT3JpZ2luRGF0YU1hbmFnZXI6OnN1cHBs
ZW1lbnROYW1lKTogRGVsZXRlZC4KKworICAgICAgICBEYXRhYmFzZVByb2Nlc3MgYWxyZWFkeSB1
c2VzIFdlYk9yaWdpbkRhdGFNYW5hZ2VyLCBzbyBpdCB3aWxsIGJlIHRoZSBmaXJzdCBwcm9jZXNz
CisgICAgICAgIHRvIGZhbGwgdW5kZXIgdGhlIGhlZWwgb2YgdGhlIG5ldyByZWdpbWUuIERhdGFi
YXNlUHJvY2VzcyB3aWxsIHN1YmNsYXNzCisgICAgICAgIFdlYk9yaWdpbkRhdGFNYW5hZ2VyU3Vw
cGxlbWVudCwgYW5kIHBhc3MgaXRzZWxmIGluIHR3aWNlIHRvIHRoZSBXZWJPcmlnaW5EYXRhTWFu
YWdlcgorICAgICAgICBjb25zdHJ1Y3Rvci4gQ3JlYXRlIGEgbGFtYmRhLWJhc2VkIEFzeW5jVGFz
ayBmb3IgZWFjaCByZXF1ZXN0LCBhbmQgY2FsbCB0aGUgY29tcGxldGlvbgorICAgICAgICBmdW5j
dGlvbiB3aGVuIGVhY2ggcmVxdWVzdCBpcyBjb21wbGV0ZS4KKworICAgICAgICAqIERhdGFiYXNl
UHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVBy
b2Nlc3M6OkRhdGFiYXNlUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vz
czo6Z2V0SW5kZXhlZERhdGFiYXNlT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNl
UHJvY2Vzczo6ZGVsZXRlSW5kZXhlZERhdGFiYXNlRW50cmllc0Zvck9yaWdpbik6CisgICAgICAg
IChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6ZGVsZXRlSW5kZXhlZERhdGFiYXNlRW50cmllc01v
ZGlmaWVkQmV0d2VlbkRhdGVzKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzOjpk
ZWxldGVBbGxJbmRleGVkRGF0YWJhc2VFbnRyaWVzKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJh
c2VQcm9jZXNzOjpnZXRPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNz
OjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9j
ZXNzOjpkZWxldGVFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXMpOgorICAgICAgICAoV2ViS2l0
OjpEYXRhYmFzZVByb2Nlc3M6OmRlbGV0ZUFsbEVudHJpZXMpOgorICAgICAgICAoV2ViS2l0OjpE
YXRhYmFzZVByb2Nlc3M6OmRvR2V0SW5kZXhlZERhdGFiYXNlT3JpZ2lucyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6ZG9EZWxldGVJbmRleGVkRGF0YWJhc2VF
bnRyaWVzRm9yT3JpZ2luKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9j
ZXNzOjpkb0RlbGV0ZUluZGV4ZWREYXRhYmFzZUVudHJpZXNNb2RpZmllZEJldHdlZW5EYXRlcyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6ZG9EZWxldGVBbGxJ
bmRleGVkRGF0YWJhc2VFbnRyaWVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBEYXRhYmFzZVByb2Nl
c3MvRGF0YWJhc2VQcm9jZXNzLmg6CisKIDIwMTQtMTAtMjQgIE1hcmNvcyBDaGF2YXJyw61hIFRl
aWplaXJvICA8Y2hhdmFycmlhMTk5MUBnbWFpbC5jb20+CiAKICAgICAgICAgW0dUS10gSW1wbGVt
ZW50IGlzX3NlbGVjdGVkIG1ldGhvZCBvbiBXZWJLaXRIaXRUZXN0UmVzdWx0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwCmluZGV4IGI5
MGRjYjZmYWNmMmIxZGNmY2YyYzRkMTgyZGQ0MmMxODgyNzdkNWMuLjUzYjFlOTIxZWY4ZDhlYTFj
MWYwN2I3ZTU4NjgwZTM2NGQwZGI2ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFi
YXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFi
YXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwCkBAIC01NCw3ICs1NCw3IEBAIERhdGFiYXNl
UHJvY2VzcyYgRGF0YWJhc2VQcm9jZXNzOjpzaGFyZWQoKQogCiBEYXRhYmFzZVByb2Nlc3M6OkRh
dGFiYXNlUHJvY2VzcygpCiAgICAgOiBtX3F1ZXVlKGFkb3B0UmVmKCpXb3JrUXVldWU6OmNyZWF0
ZSgiY29tLmFwcGxlLldlYktpdC5EYXRhYmFzZVByb2Nlc3MiKS5sZWFrUmVmKCkpKQotICAgICwg
bV93ZWJPcmlnaW5EYXRhTWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYk9yaWdpbkRhdGFNYW5h
Z2VyPih0aGlzKSkKKyAgICAsIG1fd2ViT3JpZ2luRGF0YU1hbmFnZXIoc3RkOjptYWtlX3VuaXF1
ZTxXZWJPcmlnaW5EYXRhTWFuYWdlcj4oKnRoaXMsICp0aGlzKSkKIHsKICAgICAvLyBNYWtlIHN1
cmUgdGhlIFVURjhFbmNvZGluZyBlbmNvZGluZyBhbmQgdGhlIHRleHQgZW5jb2RpbmcgbWFwcyBo
YXZlIGJlZW4gYnVpbHQgb24gdGhlIG1haW4gdGhyZWFkIGJlZm9yZSBhIGJhY2tncm91bmQgdGhy
ZWFkIG5lZWRzIGl0LgogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTM1MzY1IC0gTmVlZCBhIG1vcmUgZXhwbGljaXQgd2F5IG9mIGRvaW5nIHRo
aXMgYmVzaWRlcyBhY2Nlc3NpbmcgdGhlIFVURjhFbmNvZGluZy4KQEAgLTE5MSwxOCArMTkxLDEy
IEBAIHZvaWQgRGF0YWJhc2VQcm9jZXNzOjpjcmVhdGVEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24oKQogI2VuZGlmCiB9CiAKLXZvaWQgRGF0YWJhc2VQcm9jZXNzOjpnZXRJbmRleGVkRGF0
YWJhc2VPcmlnaW5zKHVpbnQ2NF90IGNhbGxiYWNrSUQpCi17Ci0gICAgcG9zdERhdGFiYXNlVGFz
ayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZEYXRhYmFzZVByb2Nlc3M6OmRvR2V0SW5kZXhlZERh
dGFiYXNlT3JpZ2lucywgY2FsbGJhY2tJRCkpOwotfQotCi12b2lkIERhdGFiYXNlUHJvY2Vzczo6
ZG9HZXRJbmRleGVkRGF0YWJhc2VPcmlnaW5zKHVpbnQ2NF90IGNhbGxiYWNrSUQpCitWZWN0b3I8
U2VjdXJpdHlPcmlnaW5EYXRhPiBEYXRhYmFzZVByb2Nlc3M6OmdldEluZGV4ZWREYXRhYmFzZU9y
aWdpbnMoKQogewogICAgIFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IHJlc3VsdHM7CiAKICAg
ICBpZiAobV9pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OkRpZEdldE9yaWdpbnMocmVz
dWx0cywgY2FsbGJhY2tJRCksIDApOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBy
ZXN1bHRzOwogICAgIH0KIAogICAgIFZlY3RvcjxTdHJpbmc+IG9yaWdpblBhdGhzID0gbGlzdERp
cmVjdG9yeShtX2luZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwgIioiKTsKQEAgLTIyMCw3ICsyMTQs
NyBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzczo6ZG9HZXRJbmRleGVkRGF0YWJhc2VPcmlnaW5zKHVp
bnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgICAgIHJlc3VsdHMuYXBwZW5kKFNlY3VyaXR5T3JpZ2lu
RGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luLmdldCgpKSk7CiAgICAgfQog
Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6RGlkR2V0T3Jp
Z2lucyhyZXN1bHRzLCBjYWxsYmFja0lEKSwgMCk7CisgICAgcmV0dXJuIHJlc3VsdHM7CiB9CiAK
IHN0YXRpYyB2b2lkIHJlbW92ZUFsbERhdGFiYXNlc0Zvck9yaWdpblBhdGgoY29uc3QgU3RyaW5n
JiBvcmlnaW5QYXRoLCBkb3VibGUgc3RhcnREYXRlLCBkb3VibGUgZW5kRGF0ZSkKQEAgLTI1Miw2
MyArMjQ2LDg3IEBAIHN0YXRpYyB2b2lkIHJlbW92ZUFsbERhdGFiYXNlc0Zvck9yaWdpblBhdGgo
Y29uc3QgU3RyaW5nJiBvcmlnaW5QYXRoLCBkb3VibGUgc3RhCiAgICAgZGVsZXRlRW1wdHlEaXJl
Y3Rvcnkob3JpZ2luUGF0aCk7CiB9CiAKLXZvaWQgRGF0YWJhc2VQcm9jZXNzOjpkZWxldGVJbmRl
eGVkRGF0YWJhc2VFbnRyaWVzRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3Jp
Z2luLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBEYXRhYmFzZVByb2Nlc3M6OmRlbGV0ZUlu
ZGV4ZWREYXRhYmFzZUVudHJpZXNGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBv
cmlnaW5EYXRhKQogewotICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlz
LCAmRGF0YWJhc2VQcm9jZXNzOjpkb0RlbGV0ZUluZGV4ZWREYXRhYmFzZUVudHJpZXNGb3JPcmln
aW4sIG9yaWdpbiwgY2FsbGJhY2tJRCkpOwotfQotCi12b2lkIERhdGFiYXNlUHJvY2Vzczo6ZG9E
ZWxldGVJbmRleGVkRGF0YWJhc2VFbnRyaWVzRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSYgb3JpZ2luRGF0YSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLXsKLSAgICBpZiAobV9pbmRl
eGVkRGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OkRpZERlbGV0ZUVudHJpZXMoY2FsbGJhY2tJRCks
IDApOworICAgIGlmIChtX2luZGV4ZWREYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICB9CiAKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9
IG9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKTsKICAgICBTdHJpbmcgZGF0YWJhc2VJZGVudGlm
aWVyID0gb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKTsKICAgICBTdHJpbmcgb3JpZ2luUGF0
aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2luZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwg
ZGF0YWJhc2VJZGVudGlmaWVyKTsKIAogICAgIHJlbW92ZUFsbERhdGFiYXNlc0Zvck9yaWdpblBh
dGgob3JpZ2luUGF0aCwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpsb3dlc3QoKSwgc3Rk
OjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSk7Ci0KLSAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpEaWREZWxldGVFbnRyaWVzKGNhbGxiYWNrSUQpLCAw
KTsKIH0KIAotdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmRlbGV0ZUluZGV4ZWREYXRhYmFzZUVudHJp
ZXNNb2RpZmllZEJldHdlZW5EYXRlcyhkb3VibGUgc3RhcnREYXRlLCBkb3VibGUgZW5kRGF0ZSwg
dWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgRGF0YWJhc2VQcm9jZXNzOjpkZWxldGVJbmRleGVk
RGF0YWJhc2VFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXMoZG91YmxlIHN0YXJ0RGF0ZSwgZG91
YmxlIGVuZERhdGUpCiB7Ci0gICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVBc3luY1Rhc2soKnRo
aXMsICZEYXRhYmFzZVByb2Nlc3M6OmRvRGVsZXRlSW5kZXhlZERhdGFiYXNlRW50cmllc01vZGlm
aWVkQmV0d2VlbkRhdGVzLCBzdGFydERhdGUsIGVuZERhdGUsIGNhbGxiYWNrSUQpKTsKKyAgICBp
ZiAobV9pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBWZWN0b3I8U3RyaW5nPiBvcmlnaW5QYXRocyA9IGxpc3REaXJlY3RvcnkobV9pbmRl
eGVkRGF0YWJhc2VEaXJlY3RvcnksICIqIik7CisgICAgZm9yIChhdXRvJiBvcmlnaW5QYXRoIDog
b3JpZ2luUGF0aHMpCisgICAgICAgIHJlbW92ZUFsbERhdGFiYXNlc0Zvck9yaWdpblBhdGgob3Jp
Z2luUGF0aCwgc3RhcnREYXRlLCBlbmREYXRlKTsKIH0KIAotdm9pZCBEYXRhYmFzZVByb2Nlc3M6
OmRvRGVsZXRlSW5kZXhlZERhdGFiYXNlRW50cmllc01vZGlmaWVkQmV0d2VlbkRhdGVzKGRvdWJs
ZSBzdGFydERhdGUsIGRvdWJsZSBlbmREYXRlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBE
YXRhYmFzZVByb2Nlc3M6OmRlbGV0ZUFsbEluZGV4ZWREYXRhYmFzZUVudHJpZXMoKQogewotICAg
IGlmIChtX2luZGV4ZWREYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5KCkpIHsKLSAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6RGlkRGVsZXRlRW50cmllcyhj
YWxsYmFja0lEKSwgMCk7CisgICAgaWYgKG1faW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIFZlY3RvcjxTdHJpbmc+IG9yaWdp
blBhdGhzID0gbGlzdERpcmVjdG9yeShtX2luZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwgIioiKTsK
ICAgICBmb3IgKGF1dG8mIG9yaWdpblBhdGggOiBvcmlnaW5QYXRocykKLSAgICAgICAgcmVtb3Zl
QWxsRGF0YWJhc2VzRm9yT3JpZ2luUGF0aChvcmlnaW5QYXRoLCBzdGFydERhdGUsIGVuZERhdGUp
OworICAgICAgICByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmlnaW5QYXRoKG9yaWdpblBhdGgsIHN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bG93ZXN0KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8
ZG91YmxlPjo6bWF4KCkpOworfQogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViT3JpZ2luRGF0YU1h
bmFnZXJQcm94eTo6RGlkRGVsZXRlRW50cmllcyhjYWxsYmFja0lEKSwgMCk7Cit2b2lkIERhdGFi
YXNlUHJvY2Vzczo6Z2V0T3JpZ2lucyhXS09yaWdpbkRhdGFUeXBlcyB0eXBlcywgc3RkOjpmdW5j
dGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+Jik+IGNvbXBsZXRpb24p
Cit7CisgICAgaWYgKCEodHlwZXMgJiBrV0tXZWJTUUxEYXRhYmFzZU9yaWdpbkRhdGEpKSB7Cisg
ICAgICAgIGNvbXBsZXRpb24oVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4oKSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6bWFrZV91bmlxdWU8
QXN5bmNUYXNrPihbY29tcGxldGlvbiwgdGhpc10geworICAgICAgICBjb21wbGV0aW9uKGdldElu
ZGV4ZWREYXRhYmFzZU9yaWdpbnMoKSk7CisgICAgfSkpOwogfQogCi12b2lkIERhdGFiYXNlUHJv
Y2Vzczo6ZGVsZXRlQWxsSW5kZXhlZERhdGFiYXNlRW50cmllcyh1aW50NjRfdCBjYWxsYmFja0lE
KQordm9pZCBEYXRhYmFzZVByb2Nlc3M6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tPcmlnaW5E
YXRhVHlwZXMgdHlwZXMsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbikKIHsKLSAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0
ZUFzeW5jVGFzaygqdGhpcywgJkRhdGFiYXNlUHJvY2Vzczo6ZG9EZWxldGVBbGxJbmRleGVkRGF0
YWJhc2VFbnRyaWVzLCBjYWxsYmFja0lEKSk7CisgICAgaWYgKCEodHlwZXMgJiBrV0tXZWJTUUxE
YXRhYmFzZU9yaWdpbkRhdGEpKSB7CisgICAgICAgIGNvbXBsZXRpb24oKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIHBvc3REYXRhYmFzZVRhc2soc3RkOjptYWtlX3VuaXF1ZTxBc3lu
Y1Rhc2s+KFt0aGlzLCBvcmlnaW4sIGNvbXBsZXRpb25dIHsKKyAgICAgICAgZGVsZXRlSW5kZXhl
ZERhdGFiYXNlRW50cmllc0Zvck9yaWdpbihvcmlnaW4pOworICAgICAgICBjb21wbGV0aW9uKCk7
CisgICAgfSkpOwogfQogCi12b2lkIERhdGFiYXNlUHJvY2Vzczo6ZG9EZWxldGVBbGxJbmRleGVk
RGF0YWJhc2VFbnRyaWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIERhdGFiYXNlUHJvY2Vz
czo6ZGVsZXRlRW50cmllc01vZGlmaWVkQmV0d2VlbkRhdGVzKFdLT3JpZ2luRGF0YVR5cGVzIHR5
cGVzLCBkb3VibGUgc3RhcnREYXRlLCBkb3VibGUgZW5kRGF0ZSwgc3RkOjpmdW5jdGlvbjx2b2lk
KCk+IGNvbXBsZXRpb24pCiB7Ci0gICAgaWYgKG1faW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5Lmlz
RW1wdHkoKSkgewotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJPcmlnaW5EYXRhTWFuYWdlclBy
b3h5OjpEaWREZWxldGVBbGxFbnRyaWVzKGNhbGxiYWNrSUQpLCAwKTsKKyAgICBpZiAoISh0eXBl
cyAmIGtXS1dlYlNRTERhdGFiYXNlT3JpZ2luRGF0YSkpIHsKKyAgICAgICAgY29tcGxldGlvbigp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgVmVjdG9yPFN0cmluZz4gb3JpZ2luUGF0
aHMgPSBsaXN0RGlyZWN0b3J5KG1faW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCAiKiIpOwotICAg
IGZvciAoYXV0byYgb3JpZ2luUGF0aCA6IG9yaWdpblBhdGhzKQotICAgICAgICByZW1vdmVBbGxE
YXRhYmFzZXNGb3JPcmlnaW5QYXRoKG9yaWdpblBhdGgsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91
YmxlPjo6bG93ZXN0KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkpOworICAg
IHBvc3REYXRhYmFzZVRhc2soc3RkOjptYWtlX3VuaXF1ZTxBc3luY1Rhc2s+KFt0aGlzLCBzdGFy
dERhdGUsIGVuZERhdGUsIGNvbXBsZXRpb25dIHsKKyAgICAgICAgZGVsZXRlSW5kZXhlZERhdGFi
YXNlRW50cmllc01vZGlmaWVkQmV0d2VlbkRhdGVzKHN0YXJ0RGF0ZSwgZW5kRGF0ZSk7CisgICAg
ICAgIGNvbXBsZXRpb24oKTsKKyAgICB9KSk7Cit9CisKK3ZvaWQgRGF0YWJhc2VQcm9jZXNzOjpk
ZWxldGVBbGxFbnRyaWVzKFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQoKT4gY29tcGxldGlvbikKK3sKKyAgICBpZiAoISh0eXBlcyAmIGtXS1dlYlNRTERhdGFiYXNl
T3JpZ2luRGF0YSkpIHsKKyAgICAgICAgY29tcGxldGlvbigpOworICAgICAgICByZXR1cm47Cisg
ICAgfQogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6RGlk
RGVsZXRlQWxsRW50cmllcyhjYWxsYmFja0lEKSwgMCk7CisgICAgcG9zdERhdGFiYXNlVGFzayhz
dGQ6Om1ha2VfdW5pcXVlPEFzeW5jVGFzaz4oW3RoaXMsIGNvbXBsZXRpb25dIHsKKyAgICAgICAg
ZGVsZXRlQWxsSW5kZXhlZERhdGFiYXNlRW50cmllcygpOworICAgICAgICBjb21wbGV0aW9uKCk7
CisgICAgfSkpOwogfQogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCmluZGV4IDNkZDM2NGNlZWNlMTE5
NDZiMDdiNGUxZTlhNjc4YzcwZDBlOWE3M2QuLjA4YWFmNDFmMmZlZGFjMmJhYTkxOTA2MDY0MWQ1
OTQ4MGMwMWI1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9E
YXRhYmFzZVByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0
YWJhc2VQcm9jZXNzLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNoaWxkUHJvY2Vz
cy5oIgogI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
IldlYk9yaWdpbkRhdGFNYW5hZ2VyU3VwcGxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogCiBjbGFzcyBXb3JrUXVldWU7CkBAIC00Myw3ICs0NCw3IEBAIGNsYXNzIFdl
Yk9yaWdpbkRhdGFNYW5hZ2VyOwogCiBzdHJ1Y3QgRGF0YWJhc2VQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOwogCi1jbGFzcyBEYXRhYmFzZVByb2Nlc3MgOiBwdWJsaWMgQ2hpbGRQcm9jZXNzICB7
CitjbGFzcyBEYXRhYmFzZVByb2Nlc3MgOiBwdWJsaWMgQ2hpbGRQcm9jZXNzLCBwdWJsaWMgV2Vi
T3JpZ2luRGF0YU1hbmFnZXJTdXBwbGVtZW50ICB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
RGF0YWJhc2VQcm9jZXNzKTsKICAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8RGF0YWJh
c2VQcm9jZXNzPjsKIHB1YmxpYzoKQEAgLTYwLDEwICs2MSwxMiBAQCBwdWJsaWM6CiAKICAgICBX
b3JrUXVldWUmIHF1ZXVlKCkgeyByZXR1cm4gbV9xdWV1ZS5nZXQoKTsgfQogCi0gICAgdm9pZCBn
ZXRJbmRleGVkRGF0YWJhc2VPcmlnaW5zKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQg
ZGVsZXRlSW5kZXhlZERhdGFiYXNlRW50cmllc0Zvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGRlbGV0ZUluZGV4ZWREYXRh
YmFzZUVudHJpZXNNb2RpZmllZEJldHdlZW5EYXRlcyhkb3VibGUgc3RhcnREYXRlLCBkb3VibGUg
ZW5kRGF0ZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBkZWxldGVBbGxJbmRleGVk
RGF0YWJhc2VFbnRyaWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIFZlY3RvcjxTZWN1cml0
eU9yaWdpbkRhdGE+IGdldEluZGV4ZWREYXRhYmFzZU9yaWdpbnMoKTsKKyAgICB2b2lkIGRlbGV0
ZUluZGV4ZWREYXRhYmFzZUVudHJpZXNGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
Jik7CisgICAgdm9pZCBkZWxldGVJbmRleGVkRGF0YWJhc2VFbnRyaWVzTW9kaWZpZWRCZXR3ZWVu
RGF0ZXMoZG91YmxlIHN0YXJ0RGF0ZSwgZG91YmxlIGVuZERhdGUpOworICAgIHZvaWQgZGVsZXRl
QWxsSW5kZXhlZERhdGFiYXNlRW50cmllcygpOworCisgICAgdm9pZCBwb3N0RGF0YWJhc2VUYXNr
KHN0ZDo6dW5pcXVlX3B0cjxBc3luY1Rhc2s+KTsKIAogcHJpdmF0ZToKICAgICBEYXRhYmFzZVBy
b2Nlc3MoKTsKQEAgLTg1LDE1ICs4OCwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6
ZURhdGFiYXNlUHJvY2Vzcyhjb25zdCBEYXRhYmFzZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMm
KTsKICAgICB2b2lkIGNyZWF0ZURhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbigpOwogCi0g
ICAgdm9pZCBwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6dW5pcXVlX3B0cjxBc3luY1Rhc2s+KTsKLQog
ICAgIC8vIEZvciBleGVjdXRpb24gb24gd29yayBxdWV1ZSB0aHJlYWQgb25seQogICAgIHZvaWQg
cGVyZm9ybU5leHREYXRhYmFzZVRhc2soKTsKICAgICB2b2lkIGVuc3VyZVBhdGhFeGlzdHMoY29u
c3QgU3RyaW5nJik7Ci0gICAgdm9pZCBkb0dldEluZGV4ZWREYXRhYmFzZU9yaWdpbnModWludDY0
X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBkb0RlbGV0ZUluZGV4ZWREYXRhYmFzZUVudHJpZXNG
b3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7
Ci0gICAgdm9pZCBkb0RlbGV0ZUluZGV4ZWREYXRhYmFzZUVudHJpZXNNb2RpZmllZEJldHdlZW5E
YXRlcyhkb3VibGUgc3RhcnREYXRlLCBkb3VibGUgZW5kRGF0ZSwgdWludDY0X3QgY2FsbGJhY2tJ
RCk7Ci0gICAgdm9pZCBkb0RlbGV0ZUFsbEluZGV4ZWREYXRhYmFzZUVudHJpZXModWludDY0X3Qg
Y2FsbGJhY2tJRCk7CisKKyAgICAvLyBXZWJPcmlnaW5EYXRhTWFuYWdlclN1cHBsZW1lbnQKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0T3JpZ2lucyhXS09yaWdpbkRhdGFUeXBlcywgc3RkOjpmdW5jdGlv
bjx2b2lkKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+Jik+IGNvbXBsZXRpb24pIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLT3JpZ2lu
RGF0YVR5cGVzLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQo
KT4gY29tcGxldGlvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUVudHJpZXNN
b2RpZmllZEJldHdlZW5EYXRlcyhXS09yaWdpbkRhdGFUeXBlcywgZG91YmxlIHN0YXJ0RGF0ZSwg
ZG91YmxlIGVuZERhdGUsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWxsRW50cmllcyhXS09yaWdpbkRhdGFUeXBlcywg
c3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb24pIG92ZXJyaWRlOwogCiAgICAgVmVjdG9y
PFJlZlB0cjxEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24+PiBtX2RhdGFiYXNlVG9XZWJQ
cm9jZXNzQ29ubmVjdGlvbnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
c3luY1Rhc2suaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Bc3luY1Rhc2suaAppbmRleCBhMDI4
MDkxOTk3ZDVjNGY1NjBkNmEwYTBhNzZiNWM2NGI2N2I1ZTY3Li42M2M3ODRmOGQxNTBiYTU5NTJk
MmU4OTgyYjQ2MzNkYThhODlhNWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QXN5bmNUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FzeW5jVGFzay5oCkBAIC0z
NCwxMiArMzQsMjEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBBc3luY1Rhc2sgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEFzeW5jVGFzayk7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+
QXN5bmNUYXNrKCkgeyB9CisgICAgQXN5bmNUYXNrKGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZCgp
PiB0YXNrRnVuY3Rpb24pCisgICAgICAgIDogbV90YXNrRnVuY3Rpb24odGFza0Z1bmN0aW9uKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKHRhc2tGdW5jdGlvbik7CisgICAgfQogCi0gICAgdmlydHVh
bCB2b2lkIHBlcmZvcm1UYXNrKCkgPSAwOworICAgIHZvaWQgcGVyZm9ybVRhc2soKQorICAgIHsK
KyAgICAgICAgbV90YXNrRnVuY3Rpb24oKTsKKyAgICB9CiAKIHByb3RlY3RlZDoKLSAgICBleHBs
aWNpdCBBc3luY1Rhc2soKSB7IH0KKyAgICBBc3luY1Rhc2soKSB7IH0KKworICAgIHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiBtX3Rhc2tGdW5jdGlvbjsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
LCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CkBAIC01MSwxOCArNjAsNiBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAoY2FsbGVlLT4qbWV0aG9kKShhcmd1bWVudHMuLi4pOwogICAgICAgICB9OwogICAg
IH0KLQotICAgIHZpcnR1YWwgfkFzeW5jVGFza0ltcGwoKQotICAgIHsKLSAgICB9Ci0KLXByaXZh
dGU6Ci0gICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAg
ICAgIG1fdGFza0Z1bmN0aW9uKCk7Ci0gICAgfQotCi0gICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+
IG1fdGFza0Z1bmN0aW9uOwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5Y2U5M2U5
Y2YwMWJmOGFiNDcyYzk4N2ZkYTk4Zjk5OWVjZGFiYjg4Li45ZTkyYzY2ZmE4MDJjNDJkYjc3NTYz
ZmVmNjYzYjAxZTRlMmNiMTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTkyLDYgKzE1OTIsNyBAQAogCQlDREMzODMxMDE3
MjEyNDQwMDA4QTJGQzMgLyogQ29va2llU3RvcmFnZVNoaW0ubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREMzODMwRDE3MjEyNDJEMDA4QTJGQzMgLyog
Q29va2llU3RvcmFnZVNoaW0ubW0gKi87IH07CiAJCUNEQ0E4NUM4MTMyQUJBNEUwMEU5NjFERiAv
KiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDQTg1QzYxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVs
bFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0gKi87IH07CiAJCUNEQ0E4NUM5MTMyQUJBNEUwMEU5
NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRENBODVDNzEzMkFCQTRFMDBFOTYxREYgLyog
V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oICovOyB9OworCQlDREU2RTJEMzE5RjczMUM0
MDBCQTk2ODggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJTdXBwbGVtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREU2RTJEMjE5RjczMUM0MDBCQTk2
ODggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJTdXBwbGVtZW50LmggKi87IH07CiAJCUNFREExMkUy
MTUyQ0QxQUUwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VEQTEyREYxNTJDQ0FFODAw
RDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAgKi87IH07CiAJCUNFREExMkUz
MTUyQ0QxQjMwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFREExMkRFMTUyQ0NBRTgwMEQ5
RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCAqLzsgfTsKIAkJRDNCOTQ4NDYxMUZG
NEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEM0I5NDg0MjExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9w
dXBNZW51LmNwcCAqLzsgfTsKQEAgLTM2ODksNiArMzY5MCw3IEBACiAJCUNEQ0E4NUM2MTMyQUJB
NEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxl
ci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDQTg1QzcxMzJBQkE0RTAwRTk2
MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRENBODVENDEzMkFDMkIzMDBFOTYxREYgLyogSU9LaXQuZnJh
bWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
d3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBJT0tpdC5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29s
dXRlPiI7IH07CisJCUNERTZFMkQyMTlGNzMxQzQwMEJBOTY4OCAvKiBXZWJPcmlnaW5EYXRhTWFu
YWdlclN1cHBsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViT3Jp
Z2luRGF0YU1hbmFnZXJTdXBwbGVtZW50Lmg7IHBhdGggPSBPcmlnaW5EYXRhL1dlYk9yaWdpbkRh
dGFNYW5hZ2VyU3VwcGxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRURB
MTJERTE1MkNDQUU4MDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRURBMTJERjE1MkNDQUU4MDBEOUUwOEQgLyog
V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUQzQjk0ODQyMTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUG9wdXBNZW51LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU1MzAsNiArNTUzMiw3IEBACiAJCTc1NTQy
MkM1MTgwNjRGRkMwMDQ2RjZBOCAvKiBPcmlnaW5EYXRhICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDREU2RTJEMjE5RjczMUM0MDBCQTk2ODggLyogV2Vi
T3JpZ2luRGF0YU1hbmFnZXJTdXBwbGVtZW50LmggKi8sCiAJCQkJNzU1NDIyQzYxODA2NEZGQzAw
NDZGNkE4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyLmNwcCAqLywKIAkJCQk3NTU0MjJDNzE4MDY0
RkZDMDA0NkY2QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXIuaCAqLywKIAkJCQk3NTU0MjJDODE4
MDY0RkZDMDA0NkY2QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCkBA
IC03MDE4LDYgKzcwMjEsNyBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJ
CWZpbGVzID0gKAogCQkJCTFBREFFMTJFMTkxOUE1QjQwMEY0OEUyMSAvKiBXS1ByZWZlcmVuY2Vz
LmggaW4gSGVhZGVycyAqLywKKwkJCQlDREU2RTJEMzE5RjczMUM0MDBCQTk2ODggLyogV2ViT3Jp
Z2luRGF0YU1hbmFnZXJTdXBwbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUY0NTkzMjE5
NDY1NTk1MDBGOUQ0QTIgLyogV0tFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE5QkRBOEEx
OTM2ODZBNDAwQjk3RjU3IC8qIFNhbmRib3hVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBNzI4NDQ3MTk1OUVEMTAwMDA3QkNFNSAvKiBTZXNzaW9uU3RhdGVDb252ZXJzaW9uLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvT3JpZ2lu
RGF0YS9XZWJPcmlnaW5EYXRhTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L09yaWdpbkRhdGEvV2ViT3JpZ2luRGF0YU1hbmFnZXIuY3BwCmluZGV4IDY4ZThiNzcwMTRjZTc0
YzljODhkM2NlNTRkNjk5ODdmOTM5ZjM3N2EuLjljMmMyOGIxZjFmYzI5NTZjYTc4ZTQzODY4OWVj
MmE5NDNlYzc1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvT3JpZ2lu
RGF0YS9XZWJPcmlnaW5EYXRhTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9PcmlnaW5EYXRhL1dlYk9yaWdpbkRhdGFNYW5hZ2VyLmNwcApAQCAtMzQsNiArMzQsNyBA
QAogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYk9yaWdp
bkRhdGFNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJPcmlnaW5EYXRhTWFuYWdlclBy
b3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJPcmlnaW5EYXRhTWFuYWdlclN1cHBsZW1lbnQu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZWN1cml0eU9yaWdpbkhhc2guaD4KIApAQCAtNDMsODUgKzQ0LDQzIEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY29uc3QgY2hhciogV2ViT3Jp
Z2luRGF0YU1hbmFnZXI6OnN1cHBsZW1lbnROYW1lKCkKLXsKLSAgICByZXR1cm4gIldlYk9yaWdp
bkRhdGFNYW5hZ2VyIjsKLX0KLQotV2ViT3JpZ2luRGF0YU1hbmFnZXI6OldlYk9yaWdpbkRhdGFN
YW5hZ2VyKENoaWxkUHJvY2VzcyogY2hpbGRQcm9jZXNzKQorV2ViT3JpZ2luRGF0YU1hbmFnZXI6
OldlYk9yaWdpbkRhdGFNYW5hZ2VyKENoaWxkUHJvY2VzcyYgY2hpbGRQcm9jZXNzLCBXZWJPcmln
aW5EYXRhTWFuYWdlclN1cHBsZW1lbnQmIHN1cHBsZW1lbnQpCiAgICAgOiBtX2NoaWxkUHJvY2Vz
cyhjaGlsZFByb2Nlc3MpCisgICAgLCBtX3N1cHBsZW1lbnQoc3VwcGxlbWVudCkKIHsKLSAgICBt
X2NoaWxkUHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJPcmlnaW5EYXRh
TWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7CisgICAgbV9jaGlsZFByb2Nl
c3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJPcmlnaW5EYXRhTWFuYWdlcjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7CiB9CiAKIHZvaWQgV2ViT3JpZ2luRGF0YU1hbmFn
ZXI6OmdldE9yaWdpbnMoV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCiB7Ci0jaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCi0gICAgLy8gRklYTUU6IEZvciBu
b3csIHRoZSBEYXRhYmFzZVByb2Nlc3Mgb25seSBoYW5kbGVzIEluZGV4ZWREYXRhYmFzZSBvcmln
aW4gZGF0YS4KLSAgICAvLyBJZiBpdCBldmVyIHN0YXJ0cyBoYW5kbGluZyBvdGhlciBkYXRhIHR5
cGVzIChlLmcuIFdlYlNRTCkgdGhlbiBpdCB3aWxsIGhhdmUgdG8gYWdncmVncmF0ZSByZXF1ZXN0
cwotICAgIC8vIGZvciBtdWx0aXBsZSB0eXBlcyBpbnRvIHRoZSBvbmUgY2FsbGJhY2suCi0gICAg
aWYgKHR5cGVzICYga1dLSW5kZXhlZERhdGFiYXNlRGF0YSkgewotICAgICAgICBEYXRhYmFzZVBy
b2Nlc3M6OnNoYXJlZCgpLmdldEluZGV4ZWREYXRhYmFzZU9yaWdpbnMoY2FsbGJhY2tJRCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh0eXBlcyk7Ci0j
ZW5kaWYKLQotICAgIFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IHJlc3VsdHM7Ci0gICAgbV9j
aGlsZFByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OkRp
ZEdldE9yaWdpbnMocmVzdWx0cywgY2FsbGJhY2tJRCksIDApOworICAgIENoaWxkUHJvY2VzcyYg
Y2hpbGRQcm9jZXNzID0gbV9jaGlsZFByb2Nlc3M7CisgICAgbV9zdXBwbGVtZW50LmdldE9yaWdp
bnModHlwZXMsIFsmY2hpbGRQcm9jZXNzLCBjYWxsYmFja0lEXShjb25zdCBWZWN0b3I8U2VjdXJp
dHlPcmlnaW5EYXRhPiYgcmVzdWx0cykgeworICAgICAgICBjaGlsZFByb2Nlc3Muc2VuZChNZXNz
YWdlczo6V2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6RGlkR2V0T3JpZ2lucyhyZXN1bHRzLCBj
YWxsYmFja0lEKSwgMCk7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViT3JpZ2luRGF0YU1hbmFnZXI6
OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMsIGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luRGF0YSwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSNp
ZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKLSAgICAvLyBGSVhNRTogRm9yIG5vdywgdGhlIERh
dGFiYXNlUHJvY2VzcyBvbmx5IGhhbmRsZXMgSW5kZXhlZERhdGFiYXNlIG9yaWdpbiBkYXRhLgot
ICAgIC8vIElmIGl0IGV2ZXIgc3RhcnRzIGhhbmRsaW5nIG90aGVyIGRhdGEgdHlwZXMgKGUuZy4g
V2ViU1FMKSB0aGVuIGl0IHdpbGwgaGF2ZSB0byBhZ2dyZWdyYXRlIHJlcXVlc3RzCi0gICAgLy8g
Zm9yIG11bHRpcGxlIHR5cGVzIGludG8gdGhlIG9uZSBjYWxsYmFjay4KLSAgICBpZiAodHlwZXMg
JiBrV0tJbmRleGVkRGF0YWJhc2VEYXRhKSB7Ci0gICAgICAgIERhdGFiYXNlUHJvY2Vzczo6c2hh
cmVkKCkuZGVsZXRlSW5kZXhlZERhdGFiYXNlRW50cmllc0Zvck9yaWdpbihvcmlnaW5EYXRhLCBj
YWxsYmFja0lEKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BB
UkFNKHR5cGVzKTsKLSAgICBVTlVTRURfUEFSQU0ob3JpZ2luRGF0YSk7Ci0jZW5kaWYKLQotICAg
IG1fY2hpbGRQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5
OjpEaWREZWxldGVFbnRyaWVzKGNhbGxiYWNrSUQpLCAwKTsKKyAgICBDaGlsZFByb2Nlc3MmIGNo
aWxkUHJvY2VzcyA9IG1fY2hpbGRQcm9jZXNzOworICAgIG1fc3VwcGxlbWVudC5kZWxldGVFbnRy
aWVzRm9yT3JpZ2luKHR5cGVzLCBvcmlnaW5EYXRhLCBbJmNoaWxkUHJvY2VzcywgY2FsbGJhY2tJ
RF0geworICAgICAgICBjaGlsZFByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViT3JpZ2luRGF0YU1h
bmFnZXJQcm94eTo6RGlkRGVsZXRlRW50cmllcyhjYWxsYmFja0lEKSwgMCk7CisgICAgfSk7CiB9
CiAKIHZvaWQgV2ViT3JpZ2luRGF0YU1hbmFnZXI6OmRlbGV0ZUVudHJpZXNNb2RpZmllZEJldHdl
ZW5EYXRlcyhXS09yaWdpbkRhdGFUeXBlcyB0eXBlcywgZG91YmxlIHN0YXJ0VGltZSwgZG91Ymxl
IGVuZFRpbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7Ci0jaWYgRU5BQkxFKERBVEFCQVNFX1BS
T0NFU1MpCi0gICAgLy8gRklYTUU6IEZvciBub3csIHRoZSBEYXRhYmFzZVByb2Nlc3Mgb25seSBo
YW5kbGVzIEluZGV4ZWREYXRhYmFzZSBvcmlnaW4gZGF0YS4KLSAgICAvLyBJZiBpdCBldmVyIHN0
YXJ0cyBoYW5kbGluZyBvdGhlciBkYXRhIHR5cGVzIChlLmcuIFdlYlNRTCkgdGhlbiBpdCB3aWxs
IGhhdmUgdG8gYWdncmVncmF0ZSByZXF1ZXN0cwotICAgIC8vIGZvciBtdWx0aXBsZSB0eXBlcyBp
bnRvIHRoZSBvbmUgY2FsbGJhY2suCi0gICAgaWYgKHR5cGVzICYga1dLSW5kZXhlZERhdGFiYXNl
RGF0YSkgewotICAgICAgICBEYXRhYmFzZVByb2Nlc3M6OnNoYXJlZCgpLmRlbGV0ZUluZGV4ZWRE
YXRhYmFzZUVudHJpZXNNb2RpZmllZEJldHdlZW5EYXRlcyhzdGFydFRpbWUsIGVuZFRpbWUsIGNh
bGxiYWNrSUQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0odHlwZXMpOwotICAgIFVOVVNFRF9QQVJBTShzdGFydFRpbWUpOwotICAgIFVOVVNFRF9QQVJB
TShlbmRUaW1lKTsKLSNlbmRpZgotICAgIG1fY2hpbGRQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpEaWREZWxldGVFbnRyaWVzKGNhbGxiYWNrSUQpLCAw
KTsKKyAgICBDaGlsZFByb2Nlc3MmIGNoaWxkUHJvY2VzcyA9IG1fY2hpbGRQcm9jZXNzOworICAg
IG1fc3VwcGxlbWVudC5kZWxldGVFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXModHlwZXMsIHN0
YXJ0VGltZSwgZW5kVGltZSwgWyZjaGlsZFByb2Nlc3MsIGNhbGxiYWNrSURdIHsKKyAgICAgICAg
Y2hpbGRQcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OkRp
ZERlbGV0ZUVudHJpZXMoY2FsbGJhY2tJRCksIDApOworICAgIH0pOwogfQogCiB2b2lkIFdlYk9y
aWdpbkRhdGFNYW5hZ2VyOjpkZWxldGVBbGxFbnRyaWVzKFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVz
LCB1aW50NjRfdCBjYWxsYmFja0lEKQogewotI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQot
ICAgIC8vIEZJWE1FOiBGb3Igbm93LCB0aGUgRGF0YWJhc2VQcm9jZXNzIG9ubHkgaGFuZGxlcyBJ
bmRleGVkRGF0YWJhc2Ugb3JpZ2luIGRhdGEuCi0gICAgLy8gSWYgaXQgZXZlciBzdGFydHMgaGFu
ZGxpbmcgb3RoZXIgZGF0YSB0eXBlcyAoZS5nLiBXZWJTUUwpIHRoZW4gaXQgd2lsbCBoYXZlIHRv
IGFnZ3JlZ3JhdGUgcmVxdWVzdHMKLSAgICAvLyBmb3IgbXVsdGlwbGUgdHlwZXMgaW50byB0aGUg
b25lIGNhbGxiYWNrLgotICAgIGlmICh0eXBlcyAmIGtXS0luZGV4ZWREYXRhYmFzZURhdGEpIHsK
LSAgICAgICAgRGF0YWJhc2VQcm9jZXNzOjpzaGFyZWQoKS5kZWxldGVBbGxJbmRleGVkRGF0YWJh
c2VFbnRyaWVzKGNhbGxiYWNrSUQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0odHlwZXMpOwotI2VuZGlmCi0gICAgbV9jaGlsZFByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OkRpZERlbGV0ZUFsbEVudHJpZXMo
Y2FsbGJhY2tJRCksIDApOworICAgIENoaWxkUHJvY2VzcyYgY2hpbGRQcm9jZXNzID0gbV9jaGls
ZFByb2Nlc3M7CisgICAgbV9zdXBwbGVtZW50LmRlbGV0ZUFsbEVudHJpZXModHlwZXMsIFsmY2hp
bGRQcm9jZXNzLCBjYWxsYmFja0lEXSB7CisgICAgICAgIGNoaWxkUHJvY2Vzcy5zZW5kKE1lc3Nh
Z2VzOjpXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpEaWREZWxldGVBbGxFbnRyaWVzKGNhbGxi
YWNrSUQpLCAwKTsKKyAgICB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL09yaWdpbkRhdGEvV2ViT3JpZ2luRGF0YU1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvT3JpZ2luRGF0YS9XZWJPcmlnaW5E
YXRhTWFuYWdlci5oCmluZGV4IDdmODMwYjk2ZmZiZDg2ODQxNDc3NDVlMmIyN2NlNTc4NTAyYTEw
N2YuLjE2Y2Y1NzA3ODA3Nzc2YzY3YTlmMDQxYzQ5NjcxYWM1ODkzNWU3N2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvT3JpZ2luRGF0YS9XZWJPcmlnaW5EYXRhTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvT3JpZ2luRGF0YS9XZWJPcmlnaW5E
YXRhTWFuYWdlci5oCkBAIC0yNiwyMyArMjYsMjIgQEAKICNpZm5kZWYgV2ViT3JpZ2luRGF0YU1h
bmFnZXJfaAogI2RlZmluZSBXZWJPcmlnaW5EYXRhTWFuYWdlcl9oCiAKLSNpbmNsdWRlICJDaGls
ZFByb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5j
bHVkZSAiV0tPcmlnaW5EYXRhTWFuYWdlci5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBDaGlsZFByb2Nlc3M7CitjbGFzcyBX
ZWJPcmlnaW5EYXRhTWFuYWdlclN1cHBsZW1lbnQ7CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRh
OwogCi1jbGFzcyBXZWJPcmlnaW5EYXRhTWFuYWdlciA6IHB1YmxpYyBDaGlsZFByb2Nlc3NTdXBw
bGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgV2ViT3JpZ2luRGF0
YU1hbmFnZXIgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFdlYk9yaWdpbkRhdGFNYW5hZ2VyKTsKIHB1YmxpYzoKLSAgICBXZWJPcmlnaW5E
YXRhTWFuYWdlcihDaGlsZFByb2Nlc3MqKTsKLQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBw
bGVtZW50TmFtZSgpOworICAgIFdlYk9yaWdpbkRhdGFNYW5hZ2VyKENoaWxkUHJvY2VzcyYsIFdl
Yk9yaWdpbkRhdGFNYW5hZ2VyU3VwcGxlbWVudCYpOwogCiBwcml2YXRlOgogICAgIHZvaWQgZ2V0
T3JpZ2lucyhXS09yaWdpbkRhdGFUeXBlcywgdWludDY0X3QgY2FsbGJhY2tJRCk7CkBAIC01Myw3
ICs1Miw4IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdl
RGVjb2RlciYpIG92ZXJyaWRlOwogCi0gICAgQ2hpbGRQcm9jZXNzKiBtX2NoaWxkUHJvY2VzczsK
KyAgICBDaGlsZFByb2Nlc3MmIG1fY2hpbGRQcm9jZXNzOworICAgIFdlYk9yaWdpbkRhdGFNYW5h
Z2VyU3VwcGxlbWVudCYgbV9zdXBwbGVtZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL09yaWdpbkRhdGEvV2ViT3Jp
Z2luRGF0YU1hbmFnZXJTdXBwbGVtZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL09y
aWdpbkRhdGEvV2ViT3JpZ2luRGF0YU1hbmFnZXJTdXBwbGVtZW50LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmE4
NjQ5M2U4YTgyODU4MjYzODM1YWMzNDg2YTBlM2I4MWY2Yzc5YwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvT3JpZ2luRGF0YS9XZWJPcmlnaW5EYXRhTWFuYWdl
clN1cHBsZW1lbnQuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBXZWJPcmln
aW5EYXRhTWFuYWdlclN1cHBsZW1lbnRfaAorI2RlZmluZSBXZWJPcmlnaW5EYXRhTWFuYWdlclN1
cHBsZW1lbnRfaAorCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCisjaW5jbHVkZSAi
V0tPcmlnaW5EYXRhTWFuYWdlci5oIgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBXZWJPcmlnaW5EYXRhTWFuYWdlclN1cHBsZW1lbnQgeworcHVi
bGljOgorICAgIFdlYk9yaWdpbkRhdGFNYW5hZ2VyU3VwcGxlbWVudCgpIHsgfQorICAgIHZpcnR1
YWwgfldlYk9yaWdpbkRhdGFNYW5hZ2VyU3VwcGxlbWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2
b2lkIGdldE9yaWdpbnMoV0tPcmlnaW5EYXRhVHlwZXMsIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25z
dCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYpPiBjb21wbGV0aW9uKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tPcmlnaW5EYXRhVHlwZXMsIGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUVudHJpZXNNb2RpZmllZEJldHdlZW5EYXRlcyhX
S09yaWdpbkRhdGFUeXBlcywgZG91YmxlIHN0YXJ0RGF0ZSwgZG91YmxlIGVuZERhdGUsIHN0ZDo6
ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0
ZUFsbEVudHJpZXMoV0tPcmlnaW5EYXRhVHlwZXMsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21w
bGV0aW9uKSA9IDA7Cit9OworCit9CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240439</attachid>
            <date>2014-10-24 14:54:44 -0700</date>
            <delta_ts>2014-10-24 16:01:53 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-137993-20141024145451.patch</filename>
            <type>text/plain</type>
            <size>28530</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1MTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYWE1YWE1OTUyMTdjMDQ0
NmQ2MTA1OGY1YjVkZjIwZjA3MTJlYTI2ZC4uZDc5M2QzZWZhYTZiNmNlMDZjM2UwOTk2MjE2NTJl
ZjUyZTk1ZTUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE0LTEwLTIyICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEFic3RyYWN0aWZ5IFdlYk9y
aWdpbkRhdGFNYW5hZ2VyIHRvIHN1cHBvcnQgYXJiaXRyYXJ5IENoaWxkUHJvY2VzcyBzdXBwbGVt
ZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
Nzk5MworCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KKworICAgICAgICBUbyBh
bGxvdyBkaWZmZXJlbnQgQ2hpbGRQcm9jZXNzIHN1YmNsYXNzZXMgdG8gaGFuZGxlIGxpc3Rpbmcg
YW5kIGRlbGV0aW9uIG9mIG9yaWdpbgorICAgICAgICBkYXRhLCBtYWtlIFdlYk9yaWdpbkRhdGFN
YW5hZ2VyIG1vcmUgZ2VuZXJpYyBieSBoYXZpbmcgYSBzdXBwbGVtZW50IGltcGxlbWVudCB0aGUK
KyAgICAgICAgZGV0YWlscywgbGVhdmluZyBXZWJPcmlnaW5EYXRhTWFuYWdlciB0byBkZWFsIHdp
dGggY3Jvc3MtcHJvY2VzcyBtZXNzYWdpbmcuCisKKyAgICAgICAgRGUtdmlydHVhbGl6ZSBBc3lu
Y1Rhc2ssIGFsbG93aW5nIGEgdGFzayB0byBiZSBjcmVhdGVkIGJ5IHBhc3NpbmcgaW4gYQorICAg
ICAgICBmdW5jdGlvbjx2b2lkKCk+LCByYXRoZXIgdGhhbiBhbiBvYmplY3QsIG1ldGhvZCwgYW5k
IGFyZ3VtZW50cy4KKworICAgICAgICAqIFNoYXJlZC9Bc3luY1Rhc2suaDoKKyAgICAgICAgKFdl
YktpdDo6QXN5bmNUYXNrOjpBc3luY1Rhc2spOgorICAgICAgICAoV2ViS2l0OjpBc3luY1Rhc2s6
OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYktpdDo6QXN5bmNUYXNrOjp+QXN5bmNUYXNrKTog
RGVsZXRlZC4KKworICAgICAgICBBZGQgYSBuZXcgdmlydHVhbCBiYXNlIGNsYXNzLCB0byBiZSBp
bXBsZW1lbnRlZCBieSB2YXJpb3VzIENoaWxkUHJvY2Vzc2VzLCB3aGljaAorICAgICAgICBXZWJP
cmlnaW5EYXRhTWFuYWdlciB3aWxsIHVzZSB0byBpbXBsZW1lbnQgbGlzdGluZyBhbmQgZGVsZXRp
b24gcmVxdWVzdHMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL09yaWdpbkRhdGEvV2ViT3JpZ2lu
RGF0YU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL09yaWdpbkRhdGEvV2ViT3JpZ2lu
RGF0YU1hbmFnZXJTdXBwbGVtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJPcmln
aW5EYXRhTWFuYWdlclN1cHBsZW1lbnQ6OldlYk9yaWdpbkRhdGFNYW5hZ2VyU3VwcGxlbWVudCk6
CisgICAgICAgIChXZWJLaXQ6OldlYk9yaWdpbkRhdGFNYW5hZ2VyU3VwcGxlbWVudDo6fldlYk9y
aWdpbkRhdGFNYW5hZ2VyU3VwcGxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYk9yaWdpbkRh
dGFNYW5hZ2VyU3VwcGxlbWVudDo6Z2V0T3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OldlYk9y
aWdpbkRhdGFNYW5hZ2VyU3VwcGxlbWVudDo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYk9yaWdpbkRhdGFNYW5hZ2VyU3VwcGxlbWVudDo6ZGVsZXRlRW50cmll
c01vZGlmaWVkQmV0d2VlbkRhdGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViT3JpZ2luRGF0YU1h
bmFnZXJTdXBwbGVtZW50OjpkZWxldGVBbGxFbnRyaWVzKToKKyAgICAgICAgKiBXZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgV2ViT3JpZ2luRGF0YU1hbmFnZXIg
ZG9lc24ndCBuZWVkIHRvIGJlIGEgQ2hpbGRTdXBwbGVtZW50LiBSZW1vdmUgdGhlIERhdGFiYXNl
UHJvY2Vzcy0KKyAgICAgICAgc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zIGZvciBpdHMgbWVzc2Fn
ZSBoYW5kbGVycyBhbmQgcmVwbGFjZSB3aXRoIGNsZWFuLCBnZW5lcmljIGNhbGxzCisgICAgICAg
IHRvIGl0cyBzdXBwbGVtZW50LiBCZWNhdXNlIHRoZXNlIHN1cHBsZW1lbnRzIG1heSB3YW50IHRv
IHJlc3BvbmQgdG8gdGhlIHJlcXVlc3QKKyAgICAgICAgYXN5bmNocm9ub3VzbHksIHBhc3MgYSBj
b21wbGV0aW9uIGZ1bmN0aW9uIGluIHRvIGJlIGNhbGxlZCBieSB0aGUgc3VwcGxlbWVudCBvbmNl
IGl0cworICAgICAgICB3b3JrIGlzIGNvbXBsZXRlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9P
cmlnaW5EYXRhL1dlYk9yaWdpbkRhdGFNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
T3JpZ2luRGF0YU1hbmFnZXI6OldlYk9yaWdpbkRhdGFNYW5hZ2VyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViT3JpZ2luRGF0YU1hbmFnZXI6OmdldE9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJPcmlnaW5EYXRhTWFuYWdlcjo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYk9yaWdpbkRhdGFNYW5hZ2VyOjpkZWxldGVFbnRyaWVzTW9kaWZpZWRCZXR3ZWVu
RGF0ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJPcmlnaW5EYXRhTWFuYWdlcjo6ZGVsZXRlQWxs
RW50cmllcyk6CisgICAgICAgIChXZWJLaXQ6OldlYk9yaWdpbkRhdGFNYW5hZ2VyOjpzdXBwbGVt
ZW50TmFtZSk6IERlbGV0ZWQuCisKKyAgICAgICAgRGF0YWJhc2VQcm9jZXNzIGFscmVhZHkgdXNl
cyBXZWJPcmlnaW5EYXRhTWFuYWdlciwgc28gaXQgd2lsbCBiZSB0aGUgZmlyc3QgcHJvY2Vzcwor
ICAgICAgICB0byBmYWxsIHVuZGVyIHRoZSBoZWVsIG9mIHRoZSBuZXcgcmVnaW1lLiBEYXRhYmFz
ZVByb2Nlc3Mgd2lsbCBzdWJjbGFzcworICAgICAgICBXZWJPcmlnaW5EYXRhTWFuYWdlclN1cHBs
ZW1lbnQsIGFuZCBwYXNzIGl0c2VsZiBpbiB0d2ljZSB0byB0aGUgV2ViT3JpZ2luRGF0YU1hbmFn
ZXIKKyAgICAgICAgY29uc3RydWN0b3IuIENyZWF0ZSBhIGxhbWJkYS1iYXNlZCBBc3luY1Rhc2sg
Zm9yIGVhY2ggcmVxdWVzdCwgYW5kIGNhbGwgdGhlIGNvbXBsZXRpb24KKyAgICAgICAgZnVuY3Rp
b24gd2hlbiBlYWNoIHJlcXVlc3QgaXMgY29tcGxldGUuCisKKyAgICAgICAgKiBEYXRhYmFzZVBy
b2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9j
ZXNzOjpEYXRhYmFzZVByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3M6
OmdldEluZGV4ZWREYXRhYmFzZU9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVBy
b2Nlc3M6OmRlbGV0ZUluZGV4ZWREYXRhYmFzZUVudHJpZXNGb3JPcmlnaW4pOgorICAgICAgICAo
V2ViS2l0OjpEYXRhYmFzZVByb2Nlc3M6OmRlbGV0ZUluZGV4ZWREYXRhYmFzZUVudHJpZXNNb2Rp
ZmllZEJldHdlZW5EYXRlcyk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6ZGVs
ZXRlQWxsSW5kZXhlZERhdGFiYXNlRW50cmllcyk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNl
UHJvY2Vzczo6Z2V0T3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6
ZGVsZXRlRW50cmllc0Zvck9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vz
czo6ZGVsZXRlRW50cmllc01vZGlmaWVkQmV0d2VlbkRhdGVzKToKKyAgICAgICAgKFdlYktpdDo6
RGF0YWJhc2VQcm9jZXNzOjpkZWxldGVBbGxFbnRyaWVzKToKKyAgICAgICAgKFdlYktpdDo6RGF0
YWJhc2VQcm9jZXNzOjpkb0dldEluZGV4ZWREYXRhYmFzZU9yaWdpbnMpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3M6OmRvRGVsZXRlSW5kZXhlZERhdGFiYXNlRW50
cmllc0Zvck9yaWdpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vz
czo6ZG9EZWxldGVJbmRleGVkRGF0YWJhc2VFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXMpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3M6OmRvRGVsZXRlQWxsSW5k
ZXhlZERhdGFiYXNlRW50cmllcyk6IERlbGV0ZWQuCisgICAgICAgICogRGF0YWJhc2VQcm9jZXNz
L0RhdGFiYXNlUHJvY2Vzcy5oOgorCiAyMDE0LTEwLTI0ICBNYXJjb3MgQ2hhdmFycsOtYSBUZWlq
ZWlybyAgPGNoYXZhcnJpYTE5OTFAZ21haWwuY29tPgogCiAgICAgICAgIFtHVEtdIEltcGxlbWVu
dCBpc19zZWxlY3RlZCBtZXRob2Qgb24gV2ViS2l0SGl0VGVzdFJlc3VsdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcAppbmRleCBiOTBk
Y2I2ZmFjZjJiMWRjZmNmMmM0ZDE4MmRkNDJjMTg4Mjc3ZDVjLi41M2IxZTkyMWVmOGQ4ZWExYzFm
MDdiN2U1ODY4MGUzNjRkMGRiNmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFz
ZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFz
ZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcApAQCAtNTQsNyArNTQsNyBAQCBEYXRhYmFzZVBy
b2Nlc3MmIERhdGFiYXNlUHJvY2Vzczo6c2hhcmVkKCkKIAogRGF0YWJhc2VQcm9jZXNzOjpEYXRh
YmFzZVByb2Nlc3MoKQogICAgIDogbV9xdWV1ZShhZG9wdFJlZigqV29ya1F1ZXVlOjpjcmVhdGUo
ImNvbS5hcHBsZS5XZWJLaXQuRGF0YWJhc2VQcm9jZXNzIikubGVha1JlZigpKSkKLSAgICAsIG1f
d2ViT3JpZ2luRGF0YU1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJPcmlnaW5EYXRhTWFuYWdl
cj4odGhpcykpCisgICAgLCBtX3dlYk9yaWdpbkRhdGFNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8
V2ViT3JpZ2luRGF0YU1hbmFnZXI+KCp0aGlzLCAqdGhpcykpCiB7CiAgICAgLy8gTWFrZSBzdXJl
IHRoZSBVVEY4RW5jb2RpbmcgZW5jb2RpbmcgYW5kIHRoZSB0ZXh0IGVuY29kaW5nIG1hcHMgaGF2
ZSBiZWVuIGJ1aWx0IG9uIHRoZSBtYWluIHRocmVhZCBiZWZvcmUgYSBiYWNrZ3JvdW5kIHRocmVh
ZCBuZWVkcyBpdC4KICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzNTM2NSAtIE5lZWQgYSBtb3JlIGV4cGxpY2l0IHdheSBvZiBkb2luZyB0aGlz
IGJlc2lkZXMgYWNjZXNzaW5nIHRoZSBVVEY4RW5jb2RpbmcuCkBAIC0xOTEsMTggKzE5MSwxMiBA
QCB2b2lkIERhdGFiYXNlUHJvY2Vzczo6Y3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0
aW9uKCkKICNlbmRpZgogfQogCi12b2lkIERhdGFiYXNlUHJvY2Vzczo6Z2V0SW5kZXhlZERhdGFi
YXNlT3JpZ2lucyh1aW50NjRfdCBjYWxsYmFja0lEKQotewotICAgIHBvc3REYXRhYmFzZVRhc2so
Y3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmRGF0YWJhc2VQcm9jZXNzOjpkb0dldEluZGV4ZWREYXRh
YmFzZU9yaWdpbnMsIGNhbGxiYWNrSUQpKTsKLX0KLQotdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmRv
R2V0SW5kZXhlZERhdGFiYXNlT3JpZ2lucyh1aW50NjRfdCBjYWxsYmFja0lEKQorVmVjdG9yPFNl
Y3VyaXR5T3JpZ2luRGF0YT4gRGF0YWJhc2VQcm9jZXNzOjpnZXRJbmRleGVkRGF0YWJhc2VPcmln
aW5zKCkKIHsKICAgICBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiByZXN1bHRzOwogCiAgICAg
aWYgKG1faW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkgewotICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpEaWRHZXRPcmlnaW5zKHJlc3Vs
dHMsIGNhbGxiYWNrSUQpLCAwKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gcmVz
dWx0czsKICAgICB9CiAKICAgICBWZWN0b3I8U3RyaW5nPiBvcmlnaW5QYXRocyA9IGxpc3REaXJl
Y3RvcnkobV9pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksICIqIik7CkBAIC0yMjAsNyArMjE0LDcg
QEAgdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmRvR2V0SW5kZXhlZERhdGFiYXNlT3JpZ2lucyh1aW50
NjRfdCBjYWxsYmFja0lEKQogICAgICAgICByZXN1bHRzLmFwcGVuZChTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbi5nZXQoKSkpOwogICAgIH0KIAot
ICAgIHNlbmQoTWVzc2FnZXM6OldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OkRpZEdldE9yaWdp
bnMocmVzdWx0cywgY2FsbGJhY2tJRCksIDApOworICAgIHJldHVybiByZXN1bHRzOwogfQogCiBz
dGF0aWMgdm9pZCByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmlnaW5QYXRoKGNvbnN0IFN0cmluZyYg
b3JpZ2luUGF0aCwgZG91YmxlIHN0YXJ0RGF0ZSwgZG91YmxlIGVuZERhdGUpCkBAIC0yNTIsNjMg
KzI0Niw4NyBAQCBzdGF0aWMgdm9pZCByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmlnaW5QYXRoKGNv
bnN0IFN0cmluZyYgb3JpZ2luUGF0aCwgZG91YmxlIHN0YQogICAgIGRlbGV0ZUVtcHR5RGlyZWN0
b3J5KG9yaWdpblBhdGgpOwogfQogCi12b2lkIERhdGFiYXNlUHJvY2Vzczo6ZGVsZXRlSW5kZXhl
ZERhdGFiYXNlRW50cmllc0Zvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdp
biwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgRGF0YWJhc2VQcm9jZXNzOjpkZWxldGVJbmRl
eGVkRGF0YWJhc2VFbnRyaWVzRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3Jp
Z2luRGF0YSkKIHsKLSAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywg
JkRhdGFiYXNlUHJvY2Vzczo6ZG9EZWxldGVJbmRleGVkRGF0YWJhc2VFbnRyaWVzRm9yT3JpZ2lu
LCBvcmlnaW4sIGNhbGxiYWNrSUQpKTsKLX0KLQotdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmRvRGVs
ZXRlSW5kZXhlZERhdGFiYXNlRW50cmllc0Zvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmIG9yaWdpbkRhdGEsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi17Ci0gICAgaWYgKG1faW5kZXhl
ZERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkgewotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpEaWREZWxldGVFbnRyaWVzKGNhbGxiYWNrSUQpLCAw
KTsKKyAgICBpZiAobV9pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47Ci0gICAgfQogCiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBv
cmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCk7CiAgICAgU3RyaW5nIGRhdGFiYXNlSWRlbnRpZmll
ciA9IG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCk7CiAgICAgU3RyaW5nIG9yaWdpblBhdGgg
PSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIGRh
dGFiYXNlSWRlbnRpZmllcik7CiAKICAgICByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmlnaW5QYXRo
KG9yaWdpblBhdGgsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bG93ZXN0KCksIHN0ZDo6
bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkpOwotCi0gICAgc2VuZChNZXNzYWdlczo6V2Vi
T3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6RGlkRGVsZXRlRW50cmllcyhjYWxsYmFja0lEKSwgMCk7
CiB9CiAKLXZvaWQgRGF0YWJhc2VQcm9jZXNzOjpkZWxldGVJbmRleGVkRGF0YWJhc2VFbnRyaWVz
TW9kaWZpZWRCZXR3ZWVuRGF0ZXMoZG91YmxlIHN0YXJ0RGF0ZSwgZG91YmxlIGVuZERhdGUsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIERhdGFiYXNlUHJvY2Vzczo6ZGVsZXRlSW5kZXhlZERh
dGFiYXNlRW50cmllc01vZGlmaWVkQmV0d2VlbkRhdGVzKGRvdWJsZSBzdGFydERhdGUsIGRvdWJs
ZSBlbmREYXRlKQogewotICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlz
LCAmRGF0YWJhc2VQcm9jZXNzOjpkb0RlbGV0ZUluZGV4ZWREYXRhYmFzZUVudHJpZXNNb2RpZmll
ZEJldHdlZW5EYXRlcywgc3RhcnREYXRlLCBlbmREYXRlLCBjYWxsYmFja0lEKSk7CisgICAgaWYg
KG1faW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgVmVjdG9yPFN0cmluZz4gb3JpZ2luUGF0aHMgPSBsaXN0RGlyZWN0b3J5KG1faW5kZXhl
ZERhdGFiYXNlRGlyZWN0b3J5LCAiKiIpOworICAgIGZvciAoYXV0byYgb3JpZ2luUGF0aCA6IG9y
aWdpblBhdGhzKQorICAgICAgICByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmlnaW5QYXRoKG9yaWdp
blBhdGgsIHN0YXJ0RGF0ZSwgZW5kRGF0ZSk7CiB9CiAKLXZvaWQgRGF0YWJhc2VQcm9jZXNzOjpk
b0RlbGV0ZUluZGV4ZWREYXRhYmFzZUVudHJpZXNNb2RpZmllZEJldHdlZW5EYXRlcyhkb3VibGUg
c3RhcnREYXRlLCBkb3VibGUgZW5kRGF0ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgRGF0
YWJhc2VQcm9jZXNzOjpkZWxldGVBbGxJbmRleGVkRGF0YWJhc2VFbnRyaWVzKCkKIHsKLSAgICBp
ZiAobV9pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OkRpZERlbGV0ZUVudHJpZXMoY2Fs
bGJhY2tJRCksIDApOworICAgIGlmIChtX2luZGV4ZWREYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBWZWN0b3I8U3RyaW5nPiBvcmlnaW5Q
YXRocyA9IGxpc3REaXJlY3RvcnkobV9pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksICIqIik7CiAg
ICAgZm9yIChhdXRvJiBvcmlnaW5QYXRoIDogb3JpZ2luUGF0aHMpCi0gICAgICAgIHJlbW92ZUFs
bERhdGFiYXNlc0Zvck9yaWdpblBhdGgob3JpZ2luUGF0aCwgc3RhcnREYXRlLCBlbmREYXRlKTsK
KyAgICAgICAgcmVtb3ZlQWxsRGF0YWJhc2VzRm9yT3JpZ2luUGF0aChvcmlnaW5QYXRoLCBzdGQ6
Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Omxvd2VzdCgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGRv
dWJsZT46Om1heCgpKTsKK30KIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYk9yaWdpbkRhdGFNYW5h
Z2VyUHJveHk6OkRpZERlbGV0ZUVudHJpZXMoY2FsbGJhY2tJRCksIDApOwordm9pZCBEYXRhYmFz
ZVByb2Nlc3M6OmdldE9yaWdpbnMoV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMsIHN0ZDo6ZnVuY3Rp
b248dm9pZChjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYpPiBjb21wbGV0aW9uKQor
eworICAgIGlmICghKHR5cGVzICYga1dLV2ViU1FMRGF0YWJhc2VPcmlnaW5EYXRhKSkgeworICAg
ICAgICBjb21wbGV0aW9uKFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+KCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgcG9zdERhdGFiYXNlVGFzayhzdGQ6Om1ha2VfdW5pcXVlPEFz
eW5jVGFzaz4oW2NvbXBsZXRpb24sIHRoaXNdIHsKKyAgICAgICAgY29tcGxldGlvbihnZXRJbmRl
eGVkRGF0YWJhc2VPcmlnaW5zKCkpOworICAgIH0pKTsKIH0KIAotdm9pZCBEYXRhYmFzZVByb2Nl
c3M6OmRlbGV0ZUFsbEluZGV4ZWREYXRhYmFzZUVudHJpZXModWludDY0X3QgY2FsbGJhY2tJRCkK
K3ZvaWQgRGF0YWJhc2VQcm9jZXNzOjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLT3JpZ2luRGF0
YVR5cGVzIHR5cGVzLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgc3RkOjpmdW5j
dGlvbjx2b2lkKCk+IGNvbXBsZXRpb24pCiB7Ci0gICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVB
c3luY1Rhc2soKnRoaXMsICZEYXRhYmFzZVByb2Nlc3M6OmRvRGVsZXRlQWxsSW5kZXhlZERhdGFi
YXNlRW50cmllcywgY2FsbGJhY2tJRCkpOworICAgIGlmICghKHR5cGVzICYga1dLV2ViU1FMRGF0
YWJhc2VPcmlnaW5EYXRhKSkgeworICAgICAgICBjb21wbGV0aW9uKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNU
YXNrPihbdGhpcywgb3JpZ2luLCBjb21wbGV0aW9uXSB7CisgICAgICAgIGRlbGV0ZUluZGV4ZWRE
YXRhYmFzZUVudHJpZXNGb3JPcmlnaW4ob3JpZ2luKTsKKyAgICAgICAgY29tcGxldGlvbigpOwor
ICAgIH0pKTsKIH0KIAotdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmRvRGVsZXRlQWxsSW5kZXhlZERh
dGFiYXNlRW50cmllcyh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBEYXRhYmFzZVByb2Nlc3M6
OmRlbGV0ZUVudHJpZXNNb2RpZmllZEJldHdlZW5EYXRlcyhXS09yaWdpbkRhdGFUeXBlcyB0eXBl
cywgZG91YmxlIHN0YXJ0RGF0ZSwgZG91YmxlIGVuZERhdGUsIHN0ZDo6ZnVuY3Rpb248dm9pZCgp
PiBjb21wbGV0aW9uKQogewotICAgIGlmIChtX2luZGV4ZWREYXRhYmFzZURpcmVjdG9yeS5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94
eTo6RGlkRGVsZXRlQWxsRW50cmllcyhjYWxsYmFja0lEKSwgMCk7CisgICAgaWYgKCEodHlwZXMg
JiBrV0tXZWJTUUxEYXRhYmFzZU9yaWdpbkRhdGEpKSB7CisgICAgICAgIGNvbXBsZXRpb24oKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFZlY3RvcjxTdHJpbmc+IG9yaWdpblBhdGhz
ID0gbGlzdERpcmVjdG9yeShtX2luZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwgIioiKTsKLSAgICBm
b3IgKGF1dG8mIG9yaWdpblBhdGggOiBvcmlnaW5QYXRocykKLSAgICAgICAgcmVtb3ZlQWxsRGF0
YWJhc2VzRm9yT3JpZ2luUGF0aChvcmlnaW5QYXRoLCBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJs
ZT46Omxvd2VzdCgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKTsKKyAgICBw
b3N0RGF0YWJhc2VUYXNrKHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNUYXNrPihbdGhpcywgc3RhcnRE
YXRlLCBlbmREYXRlLCBjb21wbGV0aW9uXSB7CisgICAgICAgIGRlbGV0ZUluZGV4ZWREYXRhYmFz
ZUVudHJpZXNNb2RpZmllZEJldHdlZW5EYXRlcyhzdGFydERhdGUsIGVuZERhdGUpOworICAgICAg
ICBjb21wbGV0aW9uKCk7CisgICAgfSkpOworfQorCit2b2lkIERhdGFiYXNlUHJvY2Vzczo6ZGVs
ZXRlQWxsRW50cmllcyhXS09yaWdpbkRhdGFUeXBlcyB0eXBlcywgc3RkOjpmdW5jdGlvbjx2b2lk
KCk+IGNvbXBsZXRpb24pCit7CisgICAgaWYgKCEodHlwZXMgJiBrV0tXZWJTUUxEYXRhYmFzZU9y
aWdpbkRhdGEpKSB7CisgICAgICAgIGNvbXBsZXRpb24oKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OkRpZERl
bGV0ZUFsbEVudHJpZXMoY2FsbGJhY2tJRCksIDApOworICAgIHBvc3REYXRhYmFzZVRhc2soc3Rk
OjptYWtlX3VuaXF1ZTxBc3luY1Rhc2s+KFt0aGlzLCBjb21wbGV0aW9uXSB7CisgICAgICAgIGRl
bGV0ZUFsbEluZGV4ZWREYXRhYmFzZUVudHJpZXMoKTsKKyAgICAgICAgY29tcGxldGlvbigpOwor
ICAgIH0pKTsKIH0KIAogI2lmICFQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQy
L0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaAppbmRleCAzZGQzNjRjZWVjZTExOTQ2
YjA3YjRlMWU5YTY3OGM3MGQwZTlhNzNkLi4wOGFhZjQxZjJmZWRhYzJiYWE5MTkwNjA2NDFkNTk0
ODBjMDFiNTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0
YWJhc2VQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFi
YXNlUHJvY2Vzcy5oCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDaGlsZFByb2Nlc3Mu
aCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJX
ZWJPcmlnaW5EYXRhTWFuYWdlclN1cHBsZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KIAogY2xhc3MgV29ya1F1ZXVlOwpAQCAtNDMsNyArNDQsNyBAQCBjbGFzcyBXZWJP
cmlnaW5EYXRhTWFuYWdlcjsKIAogc3RydWN0IERhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVyczsKIAotY2xhc3MgRGF0YWJhc2VQcm9jZXNzIDogcHVibGljIENoaWxkUHJvY2VzcyAgewor
Y2xhc3MgRGF0YWJhc2VQcm9jZXNzIDogcHVibGljIENoaWxkUHJvY2VzcywgcHVibGljIFdlYk9y
aWdpbkRhdGFNYW5hZ2VyU3VwcGxlbWVudCAgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERh
dGFiYXNlUHJvY2Vzcyk7CiAgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPERhdGFiYXNl
UHJvY2Vzcz47CiBwdWJsaWM6CkBAIC02MCwxMCArNjEsMTIgQEAgcHVibGljOgogCiAgICAgV29y
a1F1ZXVlJiBxdWV1ZSgpIHsgcmV0dXJuIG1fcXVldWUuZ2V0KCk7IH0KIAotICAgIHZvaWQgZ2V0
SW5kZXhlZERhdGFiYXNlT3JpZ2lucyh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGRl
bGV0ZUluZGV4ZWREYXRhYmFzZUVudHJpZXNGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBkZWxldGVJbmRleGVkRGF0YWJh
c2VFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXMoZG91YmxlIHN0YXJ0RGF0ZSwgZG91YmxlIGVu
ZERhdGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZGVsZXRlQWxsSW5kZXhlZERh
dGFiYXNlRW50cmllcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICBWZWN0b3I8U2VjdXJpdHlP
cmlnaW5EYXRhPiBnZXRJbmRleGVkRGF0YWJhc2VPcmlnaW5zKCk7CisgICAgdm9pZCBkZWxldGVJ
bmRleGVkRGF0YWJhc2VFbnRyaWVzRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYp
OworICAgIHZvaWQgZGVsZXRlSW5kZXhlZERhdGFiYXNlRW50cmllc01vZGlmaWVkQmV0d2VlbkRh
dGVzKGRvdWJsZSBzdGFydERhdGUsIGRvdWJsZSBlbmREYXRlKTsKKyAgICB2b2lkIGRlbGV0ZUFs
bEluZGV4ZWREYXRhYmFzZUVudHJpZXMoKTsKKworICAgIHZvaWQgcG9zdERhdGFiYXNlVGFzayhz
dGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPik7CiAKIHByaXZhdGU6CiAgICAgRGF0YWJhc2VQcm9j
ZXNzKCk7CkBAIC04NSwxNSArODgsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluaXRpYWxpemVE
YXRhYmFzZVByb2Nlc3MoY29uc3QgRGF0YWJhc2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7
CiAgICAgdm9pZCBjcmVhdGVEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIAotICAg
IHZvaWQgcG9zdERhdGFiYXNlVGFzayhzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPik7Ci0KICAg
ICAvLyBGb3IgZXhlY3V0aW9uIG9uIHdvcmsgcXVldWUgdGhyZWFkIG9ubHkKICAgICB2b2lkIHBl
cmZvcm1OZXh0RGF0YWJhc2VUYXNrKCk7CiAgICAgdm9pZCBlbnN1cmVQYXRoRXhpc3RzKGNvbnN0
IFN0cmluZyYpOwotICAgIHZvaWQgZG9HZXRJbmRleGVkRGF0YWJhc2VPcmlnaW5zKHVpbnQ2NF90
IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZG9EZWxldGVJbmRleGVkRGF0YWJhc2VFbnRyaWVzRm9y
T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwot
ICAgIHZvaWQgZG9EZWxldGVJbmRleGVkRGF0YWJhc2VFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0
ZXMoZG91YmxlIHN0YXJ0RGF0ZSwgZG91YmxlIGVuZERhdGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
OwotICAgIHZvaWQgZG9EZWxldGVBbGxJbmRleGVkRGF0YWJhc2VFbnRyaWVzKHVpbnQ2NF90IGNh
bGxiYWNrSUQpOworCisgICAgLy8gV2ViT3JpZ2luRGF0YU1hbmFnZXJTdXBwbGVtZW50CisgICAg
dmlydHVhbCB2b2lkIGdldE9yaWdpbnMoV0tPcmlnaW5EYXRhVHlwZXMsIHN0ZDo6ZnVuY3Rpb248
dm9pZChjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYpPiBjb21wbGV0aW9uKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRW50cmllc0Zvck9yaWdpbihXS09yaWdpbkRh
dGFUeXBlcywgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+
IGNvbXBsZXRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVFbnRyaWVzTW9k
aWZpZWRCZXR3ZWVuRGF0ZXMoV0tPcmlnaW5EYXRhVHlwZXMsIGRvdWJsZSBzdGFydERhdGUsIGRv
dWJsZSBlbmREYXRlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbikgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUFsbEVudHJpZXMoV0tPcmlnaW5EYXRhVHlwZXMsIHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uKSBvdmVycmlkZTsKIAogICAgIFZlY3RvcjxS
ZWZQdHI8RGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uPj4gbV9kYXRhYmFzZVRvV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb25zOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXN5
bmNUYXNrLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXN5bmNUYXNrLmgKaW5kZXggYTAyODA5
MTk5N2Q1YzRmNTYwZDZhMGEwYTc2YjVjNjRiNjdiNWU2Ny4uNjNjNzg0ZjhkMTUwYmE1OTUyZDJl
ODk4MmI0NjMzZGE4YTg5YTViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Fz
eW5jVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Bc3luY1Rhc2suaApAQCAtMzQs
MTIgKzM0LDIxIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQXN5bmNUYXNrIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShBc3luY1Rhc2spOwogcHVibGljOgotICAgIHZpcnR1YWwgfkFz
eW5jVGFzaygpIHsgfQorICAgIEFzeW5jVGFzayhjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4g
dGFza0Z1bmN0aW9uKQorICAgICAgICA6IG1fdGFza0Z1bmN0aW9uKHRhc2tGdW5jdGlvbikKKyAg
ICB7CisgICAgICAgIEFTU0VSVCh0YXNrRnVuY3Rpb24pOworICAgIH0KIAotICAgIHZpcnR1YWwg
dm9pZCBwZXJmb3JtVGFzaygpID0gMDsKKyAgICB2b2lkIHBlcmZvcm1UYXNrKCkKKyAgICB7Cisg
ICAgICAgIG1fdGFza0Z1bmN0aW9uKCk7CisgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgZXhwbGlj
aXQgQXN5bmNUYXNrKCkgeyB9CisgICAgQXN5bmNUYXNrKCkgeyB9CisKKyAgICBzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4gbV90YXNrRnVuY3Rpb247CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dHlwZW5hbWUuLi4gQXJndW1lbnRzPgpAQCAtNTEsMTggKzYwLDYgQEAgcHVibGljOgogICAgICAg
ICAgICAgKGNhbGxlZS0+Km1ldGhvZCkoYXJndW1lbnRzLi4uKTsKICAgICAgICAgfTsKICAgICB9
Ci0KLSAgICB2aXJ0dWFsIH5Bc3luY1Rhc2tJbXBsKCkKLSAgICB7Ci0gICAgfQotCi1wcml2YXRl
OgotICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzaygpIG92ZXJyaWRlCi0gICAgewotICAgICAg
ICBtX3Rhc2tGdW5jdGlvbigpOwotICAgIH0KLQotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBt
X3Rhc2tGdW5jdGlvbjsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWNlOTNlOWNm
MDFiZjhhYjQ3MmM5ODdmZGE5OGY5OTllY2RhYmI4OC4uOWU5MmM2NmZhODAyYzQyZGI3NzU2M2Zl
ZjY2M2IwMWU0ZTJjYjE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTU5Miw2ICsxNTkyLDcgQEAKIAkJQ0RDMzgzMTAxNzIx
MjQ0MDAwOEEyRkMzIC8qIENvb2tpZVN0b3JhZ2VTaGltLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDMzgzMEQxNzIxMjQyRDAwOEEyRkMzIC8qIENv
b2tpZVN0b3JhZ2VTaGltLm1tICovOyB9OwogCQlDRENBODVDODEzMkFCQTRFMDBFOTYxREYgLyog
V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQ0E4NUM2MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxT
Y3JlZW5XaW5kb3dDb250cm9sbGVyLm1tICovOyB9OwogCQlDRENBODVDOTEzMkFCQTRFMDBFOTYx
REYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDQTg1QzcxMzJBQkE0RTAwRTk2MURGIC8qIFdL
RnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCAqLzsgfTsKKwkJQ0RFNkUyRDMxOUY3MzFDNDAw
QkE5Njg4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyU3VwcGxlbWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFNkUyRDIxOUY3MzFDNDAwQkE5Njg4
IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyU3VwcGxlbWVudC5oICovOyB9OwogCQlDRURBMTJFMjE1
MkNEMUFFMDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFREExMkRGMTUyQ0NBRTgwMEQ5
RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwICovOyB9OwogCQlDRURBMTJFMzE1
MkNEMUIzMDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRURBMTJERTE1MkNDQUU4MDBEOUUw
OEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggKi87IH07CiAJCUQzQjk0ODQ2MTFGRjRC
NjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRDNCOTQ4NDIxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVw
TWVudS5jcHAgKi87IH07CkBAIC0zNjg5LDYgKzM2OTAsNyBAQAogCQlDRENBODVDNjEzMkFCQTRF
MDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQ0E4NUM3MTMyQUJBNEUwMEU5NjFE
RiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDQTg1RDQxMzJBQzJCMzAwRTk2MURGIC8qIElPS2l0LmZyYW1l
d29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdy
YXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gSU9LaXQuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0
ZT4iOyB9OworCQlDREU2RTJEMjE5RjczMUM0MDBCQTk2ODggLyogV2ViT3JpZ2luRGF0YU1hbmFn
ZXJTdXBwbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYk9yaWdp
bkRhdGFNYW5hZ2VyU3VwcGxlbWVudC5oOyBwYXRoID0gT3JpZ2luRGF0YS9XZWJPcmlnaW5EYXRh
TWFuYWdlclN1cHBsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VEQTEy
REUxNTJDQ0FFODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VEQTEyREYxNTJDQ0FFODAwRDlFMDhEIC8qIFdl
YkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlEM0I5NDg0MjExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBvcHVwTWVudS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NTMwLDYgKzU1MzIsNyBAQAogCQk3NTU0MjJD
NTE4MDY0RkZDMDA0NkY2QTggLyogT3JpZ2luRGF0YSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0RFNkUyRDIxOUY3MzFDNDAwQkE5Njg4IC8qIFdlYk9y
aWdpbkRhdGFNYW5hZ2VyU3VwcGxlbWVudC5oICovLAogCQkJCTc1NTQyMkM2MTgwNjRGRkMwMDQ2
RjZBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlci5jcHAgKi8sCiAJCQkJNzU1NDIyQzcxODA2NEZG
QzAwNDZGNkE4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyLmggKi8sCiAJCQkJNzU1NDIyQzgxODA2
NEZGQzAwNDZGNkE4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyLm1lc3NhZ2VzLmluICovLApAQCAt
NzAxOCw2ICs3MDIxLDcgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlm
aWxlcyA9ICgKIAkJCQkxQURBRTEyRTE5MTlBNUI0MDBGNDhFMjEgLyogV0tQcmVmZXJlbmNlcy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQ0RFNkUyRDMxOUY3MzFDNDAwQkE5Njg4IC8qIFdlYk9yaWdp
bkRhdGFNYW5hZ2VyU3VwcGxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGNDU5MzIxOTQ2
NTU5NTAwRjlENEEyIC8qIFdLRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxOUJEQThBMTkz
Njg2QTQwMEI5N0Y1NyAvKiBTYW5kYm94VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTcyODQ0NzE5NTlFRDEwMDAwN0JDRTUgLyogU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL09yaWdpbkRh
dGEvV2ViT3JpZ2luRGF0YU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9P
cmlnaW5EYXRhL1dlYk9yaWdpbkRhdGFNYW5hZ2VyLmNwcAppbmRleCA2OGU4Yjc3MDE0Y2U3NGM5
Yzg4ZDNjZTU0ZDY5OTg3ZjkzOWYzNzdhLi44Y2M4NWI5OTEzZTllZmM1ZTMwZjE3NzAxMzEwNzVh
MDNmMGI5MTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL09yaWdpbkRh
dGEvV2ViT3JpZ2luRGF0YU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvT3JpZ2luRGF0YS9XZWJPcmlnaW5EYXRhTWFuYWdlci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJPcmlnaW5E
YXRhTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94
eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViT3JpZ2luRGF0YU1hbmFnZXJTdXBwbGVtZW50Lmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW5IYXNoLmg+CiAKQEAgLTQzLDg1ICs0NCwzOSBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNvbnN0IGNoYXIqIFdlYk9yaWdp
bkRhdGFNYW5hZ2VyOjpzdXBwbGVtZW50TmFtZSgpCi17Ci0gICAgcmV0dXJuICJXZWJPcmlnaW5E
YXRhTWFuYWdlciI7Ci19Ci0KLVdlYk9yaWdpbkRhdGFNYW5hZ2VyOjpXZWJPcmlnaW5EYXRhTWFu
YWdlcihDaGlsZFByb2Nlc3MqIGNoaWxkUHJvY2VzcykKK1dlYk9yaWdpbkRhdGFNYW5hZ2VyOjpX
ZWJPcmlnaW5EYXRhTWFuYWdlcihDaGlsZFByb2Nlc3MmIGNoaWxkUHJvY2VzcywgV2ViT3JpZ2lu
RGF0YU1hbmFnZXJTdXBwbGVtZW50JiBzdXBwbGVtZW50KQogICAgIDogbV9jaGlsZFByb2Nlc3Mo
Y2hpbGRQcm9jZXNzKQorICAgICwgbV9zdXBwbGVtZW50KHN1cHBsZW1lbnQpCiB7Ci0gICAgbV9j
aGlsZFByb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViT3JpZ2luRGF0YU1h
bmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOworICAgIG1fY2hpbGRQcm9jZXNz
LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViT3JpZ2luRGF0YU1hbmFnZXI6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOwogfQogCiB2b2lkIFdlYk9yaWdpbkRhdGFNYW5hZ2Vy
OjpnZXRPcmlnaW5zKFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzLCB1aW50NjRfdCBjYWxsYmFja0lE
KQogewotI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQotICAgIC8vIEZJWE1FOiBGb3Igbm93
LCB0aGUgRGF0YWJhc2VQcm9jZXNzIG9ubHkgaGFuZGxlcyBJbmRleGVkRGF0YWJhc2Ugb3JpZ2lu
IGRhdGEuCi0gICAgLy8gSWYgaXQgZXZlciBzdGFydHMgaGFuZGxpbmcgb3RoZXIgZGF0YSB0eXBl
cyAoZS5nLiBXZWJTUUwpIHRoZW4gaXQgd2lsbCBoYXZlIHRvIGFnZ3JlZ3JhdGUgcmVxdWVzdHMK
LSAgICAvLyBmb3IgbXVsdGlwbGUgdHlwZXMgaW50byB0aGUgb25lIGNhbGxiYWNrLgotICAgIGlm
ICh0eXBlcyAmIGtXS0luZGV4ZWREYXRhYmFzZURhdGEpIHsKLSAgICAgICAgRGF0YWJhc2VQcm9j
ZXNzOjpzaGFyZWQoKS5nZXRJbmRleGVkRGF0YWJhc2VPcmlnaW5zKGNhbGxiYWNrSUQpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0odHlwZXMpOwotI2Vu
ZGlmCi0KLSAgICBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiByZXN1bHRzOwotICAgIG1fY2hp
bGRQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpEaWRH
ZXRPcmlnaW5zKHJlc3VsdHMsIGNhbGxiYWNrSUQpLCAwKTsKKyAgICBtX3N1cHBsZW1lbnQuZ2V0
T3JpZ2lucyh0eXBlcywgW3RoaXMsIGNhbGxiYWNrSURdKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9y
aWdpbkRhdGE+JiByZXN1bHRzKSB7CisgICAgICAgIG1fY2hpbGRQcm9jZXNzLnNlbmQoTWVzc2Fn
ZXM6OldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OkRpZEdldE9yaWdpbnMocmVzdWx0cywgY2Fs
bGJhY2tJRCksIDApOworICAgIH0pOwogfQogCiB2b2lkIFdlYk9yaWdpbkRhdGFNYW5hZ2VyOjpk
ZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzLCBjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmIG9yaWdpbkRhdGEsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7Ci0jaWYg
RU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCi0gICAgLy8gRklYTUU6IEZvciBub3csIHRoZSBEYXRh
YmFzZVByb2Nlc3Mgb25seSBoYW5kbGVzIEluZGV4ZWREYXRhYmFzZSBvcmlnaW4gZGF0YS4KLSAg
ICAvLyBJZiBpdCBldmVyIHN0YXJ0cyBoYW5kbGluZyBvdGhlciBkYXRhIHR5cGVzIChlLmcuIFdl
YlNRTCkgdGhlbiBpdCB3aWxsIGhhdmUgdG8gYWdncmVncmF0ZSByZXF1ZXN0cwotICAgIC8vIGZv
ciBtdWx0aXBsZSB0eXBlcyBpbnRvIHRoZSBvbmUgY2FsbGJhY2suCi0gICAgaWYgKHR5cGVzICYg
a1dLSW5kZXhlZERhdGFiYXNlRGF0YSkgewotICAgICAgICBEYXRhYmFzZVByb2Nlc3M6OnNoYXJl
ZCgpLmRlbGV0ZUluZGV4ZWREYXRhYmFzZUVudHJpZXNGb3JPcmlnaW4ob3JpZ2luRGF0YSwgY2Fs
bGJhY2tJRCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJB
TSh0eXBlcyk7Ci0gICAgVU5VU0VEX1BBUkFNKG9yaWdpbkRhdGEpOwotI2VuZGlmCi0KLSAgICBt
X2NoaWxkUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6
RGlkRGVsZXRlRW50cmllcyhjYWxsYmFja0lEKSwgMCk7CisgICAgbV9zdXBwbGVtZW50LmRlbGV0
ZUVudHJpZXNGb3JPcmlnaW4odHlwZXMsIG9yaWdpbkRhdGEsIFt0aGlzLCBjYWxsYmFja0lEXSB7
CisgICAgICAgIG1fY2hpbGRQcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYk9yaWdpbkRhdGFNYW5h
Z2VyUHJveHk6OkRpZERlbGV0ZUVudHJpZXMoY2FsbGJhY2tJRCksIDApOworICAgIH0pOwogfQog
CiB2b2lkIFdlYk9yaWdpbkRhdGFNYW5hZ2VyOjpkZWxldGVFbnRyaWVzTW9kaWZpZWRCZXR3ZWVu
RGF0ZXMoV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMsIGRvdWJsZSBzdGFydFRpbWUsIGRvdWJsZSBl
bmRUaW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKQogewotI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9D
RVNTKQotICAgIC8vIEZJWE1FOiBGb3Igbm93LCB0aGUgRGF0YWJhc2VQcm9jZXNzIG9ubHkgaGFu
ZGxlcyBJbmRleGVkRGF0YWJhc2Ugb3JpZ2luIGRhdGEuCi0gICAgLy8gSWYgaXQgZXZlciBzdGFy
dHMgaGFuZGxpbmcgb3RoZXIgZGF0YSB0eXBlcyAoZS5nLiBXZWJTUUwpIHRoZW4gaXQgd2lsbCBo
YXZlIHRvIGFnZ3JlZ3JhdGUgcmVxdWVzdHMKLSAgICAvLyBmb3IgbXVsdGlwbGUgdHlwZXMgaW50
byB0aGUgb25lIGNhbGxiYWNrLgotICAgIGlmICh0eXBlcyAmIGtXS0luZGV4ZWREYXRhYmFzZURh
dGEpIHsKLSAgICAgICAgRGF0YWJhc2VQcm9jZXNzOjpzaGFyZWQoKS5kZWxldGVJbmRleGVkRGF0
YWJhc2VFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXMoc3RhcnRUaW1lLCBlbmRUaW1lLCBjYWxs
YmFja0lEKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KHR5cGVzKTsKLSAgICBVTlVTRURfUEFSQU0oc3RhcnRUaW1lKTsKLSAgICBVTlVTRURfUEFSQU0o
ZW5kVGltZSk7Ci0jZW5kaWYKLSAgICBtX2NoaWxkUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
T3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6RGlkRGVsZXRlRW50cmllcyhjYWxsYmFja0lEKSwgMCk7
CisgICAgbV9zdXBwbGVtZW50LmRlbGV0ZUVudHJpZXNNb2RpZmllZEJldHdlZW5EYXRlcyh0eXBl
cywgc3RhcnRUaW1lLCBlbmRUaW1lLCBbdGhpcywgY2FsbGJhY2tJRF0geworICAgICAgICBtX2No
aWxkUHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpEaWRE
ZWxldGVFbnRyaWVzKGNhbGxiYWNrSUQpLCAwKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJPcmln
aW5EYXRhTWFuYWdlcjo6ZGVsZXRlQWxsRW50cmllcyhXS09yaWdpbkRhdGFUeXBlcyB0eXBlcywg
dWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKLSAg
ICAvLyBGSVhNRTogRm9yIG5vdywgdGhlIERhdGFiYXNlUHJvY2VzcyBvbmx5IGhhbmRsZXMgSW5k
ZXhlZERhdGFiYXNlIG9yaWdpbiBkYXRhLgotICAgIC8vIElmIGl0IGV2ZXIgc3RhcnRzIGhhbmRs
aW5nIG90aGVyIGRhdGEgdHlwZXMgKGUuZy4gV2ViU1FMKSB0aGVuIGl0IHdpbGwgaGF2ZSB0byBh
Z2dyZWdyYXRlIHJlcXVlc3RzCi0gICAgLy8gZm9yIG11bHRpcGxlIHR5cGVzIGludG8gdGhlIG9u
ZSBjYWxsYmFjay4KLSAgICBpZiAodHlwZXMgJiBrV0tJbmRleGVkRGF0YWJhc2VEYXRhKSB7Ci0g
ICAgICAgIERhdGFiYXNlUHJvY2Vzczo6c2hhcmVkKCkuZGVsZXRlQWxsSW5kZXhlZERhdGFiYXNl
RW50cmllcyhjYWxsYmFja0lEKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKHR5cGVzKTsKLSNlbmRpZgotICAgIG1fY2hpbGRQcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpEaWREZWxldGVBbGxFbnRyaWVzKGNh
bGxiYWNrSUQpLCAwKTsKKyAgICBtX3N1cHBsZW1lbnQuZGVsZXRlQWxsRW50cmllcyh0eXBlcywg
W3RoaXMsIGNhbGxiYWNrSURdIHsKKyAgICAgICAgbV9jaGlsZFByb2Nlc3Muc2VuZChNZXNzYWdl
czo6V2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6RGlkRGVsZXRlQWxsRW50cmllcyhjYWxsYmFj
a0lEKSwgMCk7CisgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9PcmlnaW5EYXRhL1dlYk9yaWdpbkRhdGFNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL09yaWdpbkRhdGEvV2ViT3JpZ2luRGF0
YU1hbmFnZXIuaAppbmRleCA3ZjgzMGI5NmZmYmQ4Njg0MTQ3NzQ1ZTJiMjdjZTU3ODUwMmExMDdm
Li4xNmNmNTcwNzgwNzc3NmM2N2E5ZjA0MWM0OTY3MWFjNTg5MzVlNzdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL09yaWdpbkRhdGEvV2ViT3JpZ2luRGF0YU1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL09yaWdpbkRhdGEvV2ViT3JpZ2luRGF0
YU1hbmFnZXIuaApAQCAtMjYsMjMgKzI2LDIyIEBACiAjaWZuZGVmIFdlYk9yaWdpbkRhdGFNYW5h
Z2VyX2gKICNkZWZpbmUgV2ViT3JpZ2luRGF0YU1hbmFnZXJfaAogCi0jaW5jbHVkZSAiQ2hpbGRQ
cm9jZXNzU3VwcGxlbWVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1
ZGUgIldLT3JpZ2luRGF0YU1hbmFnZXIuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQ2hpbGRQcm9jZXNzOworY2xhc3MgV2Vi
T3JpZ2luRGF0YU1hbmFnZXJTdXBwbGVtZW50Owogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsK
IAotY2xhc3MgV2ViT3JpZ2luRGF0YU1hbmFnZXIgOiBwdWJsaWMgQ2hpbGRQcm9jZXNzU3VwcGxl
bWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK2NsYXNzIFdlYk9yaWdpbkRhdGFN
YW5hZ2VyIDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShXZWJPcmlnaW5EYXRhTWFuYWdlcik7CiBwdWJsaWM6Ci0gICAgV2ViT3JpZ2luRGF0
YU1hbmFnZXIoQ2hpbGRQcm9jZXNzKik7Ci0KLSAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxl
bWVudE5hbWUoKTsKKyAgICBXZWJPcmlnaW5EYXRhTWFuYWdlcihDaGlsZFByb2Nlc3MmLCBXZWJP
cmlnaW5EYXRhTWFuYWdlclN1cHBsZW1lbnQmKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGdldE9y
aWdpbnMoV0tPcmlnaW5EYXRhVHlwZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpAQCAtNTMsNyAr
NTIsOCBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURl
Y29kZXImKSBvdmVycmlkZTsKIAotICAgIENoaWxkUHJvY2VzcyogbV9jaGlsZFByb2Nlc3M7Cisg
ICAgQ2hpbGRQcm9jZXNzJiBtX2NoaWxkUHJvY2VzczsKKyAgICBXZWJPcmlnaW5EYXRhTWFuYWdl
clN1cHBsZW1lbnQmIG1fc3VwcGxlbWVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9PcmlnaW5EYXRhL1dlYk9yaWdp
bkRhdGFNYW5hZ2VyU3VwcGxlbWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Pcmln
aW5EYXRhL1dlYk9yaWdpbkRhdGFNYW5hZ2VyU3VwcGxlbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhODY0
OTNlOGE4Mjg1ODI2MzgzNWFjMzQ4NmEwZTNiODFmNmM3OWMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL09yaWdpbkRhdGEvV2ViT3JpZ2luRGF0YU1hbmFnZXJT
dXBwbGVtZW50LmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgV2ViT3JpZ2lu
RGF0YU1hbmFnZXJTdXBwbGVtZW50X2gKKyNkZWZpbmUgV2ViT3JpZ2luRGF0YU1hbmFnZXJTdXBw
bGVtZW50X2gKKworI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgorI2luY2x1ZGUgIldL
T3JpZ2luRGF0YU1hbmFnZXIuaCIKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2ViT3JpZ2luRGF0YU1hbmFnZXJTdXBwbGVtZW50IHsKK3B1Ymxp
YzoKKyAgICBXZWJPcmlnaW5EYXRhTWFuYWdlclN1cHBsZW1lbnQoKSB7IH0KKyAgICB2aXJ0dWFs
IH5XZWJPcmlnaW5EYXRhTWFuYWdlclN1cHBsZW1lbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9p
ZCBnZXRPcmlnaW5zKFdLT3JpZ2luRGF0YVR5cGVzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3Qg
VmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mKT4gY29tcGxldGlvbikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBkZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLT3JpZ2luRGF0YVR5cGVzLCBjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXMoV0tP
cmlnaW5EYXRhVHlwZXMsIGRvdWJsZSBzdGFydERhdGUsIGRvdWJsZSBlbmREYXRlLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVB
bGxFbnRyaWVzKFdLT3JpZ2luRGF0YVR5cGVzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxl
dGlvbikgPSAwOworfTsKKworfQorCisjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>