<?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>176202</bug_id>
          
          <creation_ts>2017-08-31 17:23:43 -0700</creation_ts>
          <short_desc>Allow retrieving Cache Storage records for a given URL only</short_desc>
          <delta_ts>2017-09-27 12:43:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit 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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1344225</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-31 17:23:43 -0700</bug_when>
    <thetext>For efficiency, allow retrieving Cache Storage records for a given URL only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344231</commentid>
    <comment_count>1</comment_count>
      <attachid>319551</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-31 17:29:54 -0700</bug_when>
    <thetext>Created attachment 319551
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344235</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-31 17:30:52 -0700</bug_when>
    <thetext>Attachment 319551 did not pass style-queue:


ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCache.cpp:159:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCache.cpp:197:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 2 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344405</commentid>
    <comment_count>3</comment_count>
      <attachid>319596</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-01 08:49:00 -0700</bug_when>
    <thetext>Created attachment 319596
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344427</commentid>
    <comment_count>4</comment_count>
      <attachid>319605</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-01 09:49:45 -0700</bug_when>
    <thetext>Created attachment 319605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344429</commentid>
    <comment_count>5</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-01 09:51:07 -0700</bug_when>
    <thetext>Attachment 319605 did not pass style-queue:


ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCache.cpp:159:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCache.cpp:197:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 2 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344443</commentid>
    <comment_count>6</comment_count>
      <attachid>319610</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-01 10:18:50 -0700</bug_when>
    <thetext>Created attachment 319610
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344444</commentid>
    <comment_count>7</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-01 10:19:59 -0700</bug_when>
    <thetext>Attachment 319610 did not pass style-queue:


ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCache.cpp:159:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCache.cpp:197:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 2 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344519</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-01 12:27:41 -0700</bug_when>
    <thetext>WPE bots error is unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344596</commentid>
    <comment_count>9</comment_count>
      <attachid>319610</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-01 14:57:37 -0700</bug_when>
    <thetext>Comment on attachment 319610
Patch

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

&gt; Source/WebCore/Modules/cache/Cache.cpp:388
&gt; +    retrieveURL.setQuery({ });

Do we want to remove the fragment here, too?

&gt; Source/WebKit/NetworkProcess/cache/CacheStorageEngineCache.cpp:104
&gt; +    if (keyURL.hasQuery())
&gt; +        keyURL.setQuery({ });
&gt; +    keyURL.removeFragmentIdentifier();

Maybe we should make a method to do both of these at the same time.  That would avoid an unnecessary string allocation and copy.

&gt; Source/WebKit/NetworkProcess/cache/CacheStorageEngineCache.cpp:116
&gt; +    Vector&lt;Record&gt; newRecords;
&gt; +    newRecords.reserveInitialCapacity(1);
&gt; +    newRecords.uncheckedAppend(WTFMove(record));
&gt; +    return m_records.set(key, WTFMove(newRecords)).iterator-&gt;value.last();

{ WTFMove(record) }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345476</commentid>
    <comment_count>10</comment_count>
      <attachid>319905</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-05 09:34:55 -0700</bug_when>
    <thetext>Created attachment 319905
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345478</commentid>
    <comment_count>11</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-05 09:36:47 -0700</bug_when>
    <thetext>Attachment 319905 did not pass style-queue:


ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCache.cpp:159:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/NetworkProcess/cache/CacheStorageEngineCache.cpp:197:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 2 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345482</commentid>
    <comment_count>12</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-05 09:40:59 -0700</bug_when>
    <thetext>Thanks for the review.

(In reply to Alex Christensen from comment #9)
&gt; Comment on attachment 319610 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=319610&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/cache/Cache.cpp:388
&gt; &gt; +    retrieveURL.setQuery({ });
&gt; 
&gt; Do we want to remove the fragment here, too?

OK

&gt; &gt; Source/WebKit/NetworkProcess/cache/CacheStorageEngineCache.cpp:104
&gt; &gt; +    if (keyURL.hasQuery())
&gt; &gt; +        keyURL.setQuery({ });
&gt; &gt; +    keyURL.removeFragmentIdentifier();
&gt; 
&gt; Maybe we should make a method to do both of these at the same time.  That
&gt; would avoid an unnecessary string allocation and copy.

Will do in a follow-up
 
&gt; &gt; Source/WebKit/NetworkProcess/cache/CacheStorageEngineCache.cpp:116
&gt; &gt; +    Vector&lt;Record&gt; newRecords;
&gt; &gt; +    newRecords.reserveInitialCapacity(1);
&gt; &gt; +    newRecords.uncheckedAppend(WTFMove(record));
&gt; &gt; +    return m_records.set(key, WTFMove(newRecords)).iterator-&gt;value.last();
&gt; 
&gt; { WTFMove(record) }

That is not working.
Probably need a tweak in Vector.h.
I&apos;ll try to fix that in a follow-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345514</commentid>
    <comment_count>13</comment_count>
      <attachid>319905</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-05 10:52:55 -0700</bug_when>
    <thetext>Comment on attachment 319905
Patch for landing

Clearing flags on attachment: 319905

Committed r221624: &lt;http://trac.webkit.org/changeset/221624&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345515</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-05 10:52:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353626</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:43:42 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693839&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319551</attachid>
            <date>2017-08-31 17:29:54 -0700</date>
            <delta_ts>2017-09-01 08:48:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176202-20170831172954.patch</filename>
            <type>text/plain</type>
            <size>30790</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmQ3NDk3NDFjYTllMWUy
OTBlZWVkZWYwZDZmNWNjNmJjNWRiNWE0ZC4uMDlkOTkyNTA0NTEyNGNmMTc5MTA3NjM4ZWMxYmQ3
OTExNmQ4YmI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMzIEBACiAyMDE3LTA4LTMxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBBbGxvdyByZXRyaWV2aW5n
IENhY2hlIFN0b3JhZ2UgcmVjb3JkcyBmb3IgYSBnaXZlbiBVUkwgb25seQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MjAyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gb2JzZXJ2YWJsZSBjaGFuZ2Ug
b2YgYmVoYXZpb3IuCisKKyAgICAgICAgQWRkaW5nIGEgVVJMIHBhcmFtZXRlciB0byBDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uOjpyZXRyaWV2ZVJlY29yZHMuCisgICAgICAgIElmIGdpdmVuIFVSTCBp
cyBudWxsLCBhbGwgcmVjb3JkcyB3aWxsIGJlIHJldHJpZXZlZCwgd2hpY2ggaXMgdXNlZnVsIGZv
ciB0aGUga2V5cyBtZXRob2QuCisgICAgICAgIE90aGVyIG9wZXJhdGlvbnMgb25seSBuZWVkIHJl
Y29yZHMgdGhhdCBzaGFyZSB0aGUgc2FtZSBVUkwgKG1vZHVsbyBxdWVyeSBzdHJpbmcgYW5kIGZy
YWcgaWQpLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNoZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZTo6bWF0Y2hBbGwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OmtleXMp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OnJldHJpZXZlUmVjb3Jkcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZTo6cXVlcnlDYWNoZSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNo
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZXRyaWV2ZVJlY29y
ZHMpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZVJlY29y
ZHMpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpk
b1JldHJpZXZlUmVjb3Jkcyk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vVVJMLmg6CisKKzIwMTctMDgt
MzEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCiAgICAgICAgIFVwZGF0ZSBD
YWNoZVN0b3JhZ2UgY2FjaGVzIG9ubHkgaWYgaXQgaXMgdXBkYXRlZAogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MTM1CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTgy
M2Y5MTM2NWQ2ZDk5ZDY0ZTNkOTEyNjdmYTc4OTFhNjg5NTVhOS4uNjUzZWFmODM1NGI5YzEzNWQ2
NjI3NjZmMzNjMDkyY2M5NmE4ZjFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzNyBAQAogMjAxNy0w
OC0zMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKKyAgICAgICAgQWxsb3cg
cmV0cmlldmluZyBDYWNoZSBTdG9yYWdlIHJlY29yZHMgZm9yIGEgZ2l2ZW4gVVJMIG9ubHkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBDYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZSB0byBzdG9yZSByZWNvcmRzIGFzIGEgbWFwIFVSTCAtPiBWZWN0
b3Igb2YgUmVjb3Jkcy4KKyAgICAgICAgVGhpcyBhbGxvd3MgcmVndWxhciByZWNvcmQgcmV0cmll
dmFsIHRvIGJlIGZhc3Rlci4KKyAgICAgICAgUmV0cmlldmFsIG9mIGFsbCByZWNvcmRzIGlzIGxl
c3MgZWZmaWNpZW50IGJ1dCB0aGlzIHNob3VsZCBoYXBwZW4gbGVzcyBvZnRlbi4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZXRyaWV2ZVJlY29yZHMpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpxdWVyeUNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6
Q2FjaGVTdG9yYWdlOjpDYWNoZTo6cmV0cmlldmVSZWNvcmRzIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpjb21wdXRlS2V5VVJMKToKKyAgICAgICAgKFdlYktpdDo6Q2Fj
aGVTdG9yYWdlOjpDYWNoZTo6YWRkTmV3VVJMUmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6Q2Fj
aGVTdG9yYWdlOjpDYWNoZTo6cmVjb3Jkc0Zyb21VUkwpOgorICAgICAgICAoV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U6OkNhY2hlOjpyZWNvcmRzRnJvbVVSTCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OnB1dCk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6Q2FjaGU6OnJlbW92ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ2FjaGUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rp
b24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1Jl
dHJpZXZlUmVjb3Jkcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLmg6CisKKzIwMTctMDgtMzEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgorCiAgICAgICAgIFVwZGF0ZSBDYWNoZVN0b3JhZ2UgY2FjaGVzIG9ubHkgaWYgaXQg
aXMgdXBkYXRlZAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc2MTM1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2Fj
aGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZS5jcHAKaW5kZXggMzJh
MGYxMTQzMGI1ZDhiMDdkN2I3MGY2MGI2ZjkwZDIwNThhODg4ZS4uOWQzMTc4OWYyNzc5Njg4ZmVl
Njk2ZjliNDM4MjZhZGRmZGY5ZThlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNo
ZS5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIENhY2hlOjptYXRjaEFsbChzdGQ6Om9wdGlv
bmFsPFJlcXVlc3RJbmZvPiYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aQogICAgIH0K
IAogICAgIGlmICghcmVxdWVzdCkgewotICAgICAgICByZXRyaWV2ZVJlY29yZHMoW3RoaXMsIHBy
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSgpIG11dGFibGUgeworICAgICAgICByZXRyaWV2ZVJl
Y29yZHMoVVJMIHsgfSwgW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSgpIG11dGFi
bGUgewogICAgICAgICAgICAgVmVjdG9yPFJlZjxGZXRjaFJlc3BvbnNlPj4gcmVzcG9uc2VzOwog
ICAgICAgICAgICAgcmVzcG9uc2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9yZWNvcmRzLnNp
emUoKSk7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IG1fcmVjb3JkcykKQEAgLTM2
MSw3ICszNjEsNyBAQCB2b2lkIENhY2hlOjprZXlzKHN0ZDo6b3B0aW9uYWw8UmVxdWVzdEluZm8+
JiYgaW5mbywgQ2FjaGVRdWVyeU9wdGlvbnMmJiBvcHRpb25zLAogICAgIH0KIAogICAgIGlmICgh
cmVxdWVzdCkgewotICAgICAgICByZXRyaWV2ZVJlY29yZHMoW3RoaXMsIHByb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpXSgpIG11dGFibGUgeworICAgICAgICByZXRyaWV2ZVJlY29yZHMoVVJMIHsg
fSwgW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSgpIG11dGFibGUgewogICAgICAg
ICAgICAgVmVjdG9yPFJlZjxGZXRjaFJlcXVlc3Q+PiByZXF1ZXN0czsKICAgICAgICAgICAgIHJl
cXVlc3RzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9yZWNvcmRzLnNpemUoKSk7CiAgICAgICAg
ICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IG1fcmVjb3JkcykKQEAgLTM4MCwxMCArMzgwLDEzIEBA
IHZvaWQgQ2FjaGU6OmtleXMoc3RkOjpvcHRpb25hbDxSZXF1ZXN0SW5mbz4mJiBpbmZvLCBDYWNo
ZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsCiAgICAgfSk7CiB9CiAKLXZvaWQgQ2FjaGU6OnJldHJp
ZXZlUmVjb3JkcyhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKK3ZvaWQgQ2FjaGU6
OnJldHJpZXZlUmVjb3Jkcyhjb25zdCBVUkwmIHVybCwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYg
Y2FsbGJhY2spCiB7CiAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwotICAgIG1fY29ubmVj
dGlvbi0+cmV0cmlldmVSZWNvcmRzKG1faWRlbnRpZmllciwgW3RoaXMsIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKFJlY29yZHNPckVycm9yJiYgcmVzdWx0KSB7CisKKyAgICBVUkwgcmV0
cmlldmVVUkwgPSB1cmw7CisgICAgcmV0cmlldmVVUkwuc2V0UXVlcnkoeyB9KTsKKyAgICBtX2Nv
bm5lY3Rpb24tPnJldHJpZXZlUmVjb3JkcyhtX2lkZW50aWZpZXIsIHJldHJpZXZlVVJMLCBbdGhp
cywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oUmVjb3Jkc09yRXJyb3ImJiByZXN1bHQp
IHsKICAgICAgICAgaWYgKCFtX2lzU3RvcHBlZCkgewogICAgICAgICAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBwcm9iYWJseSBwcm9wYWdhdGUgdGhhdCBlcnJvciB1cCB0byB0aGUgcHJvbWlzZSBi
YXNlZCBvcGVyYXRpb24uCiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0Lmhhc1ZhbHVlKCkpOwpA
QCAtMzk3LDcgKzQwMCw4IEBAIHZvaWQgQ2FjaGU6OnJldHJpZXZlUmVjb3JkcyhXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKIAogdm9pZCBDYWNoZTo6cXVlcnlDYWNoZShSZWY8RmV0
Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywgV1RGOjpG
dW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxDYWNoZVN0b3JhZ2VSZWNvcmQ+Jik+JiYgY2FsbGJh
Y2spCiB7Ci0gICAgcmV0cmlldmVSZWNvcmRzKFt0aGlzLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1
ZXN0KSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9ucyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldKCkgbXV0YWJsZSB7CisgICAgY29uc3QgVVJMJiB1cmwgPSByZXF1ZXN0LT51cmwoKTsK
KyAgICByZXRyaWV2ZVJlY29yZHModXJsLCBbdGhpcywgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVz
dCksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXSgpIG11dGFibGUgewogICAgICAgICBjYWxsYmFjayhxdWVyeUNhY2hlV2l0aFRhcmdldFN0
b3JhZ2UocmVxdWVzdC5nZXQoKSwgb3B0aW9ucywgbV9yZWNvcmRzKSk7CiAgICAgfSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlLmgKaW5kZXggMjdjNTVjMjZlZTgzMjQxZGRhMjgx
MjQ1NjdhODhhNjEyNmM5MjliYi4uMzI2NTlkN2NiMzA1YzdlZjRiZDIxNDVkN2U4MzZlOGE2ZmJm
MWI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGUuaApAQCAtNjksNyArNjksNyBA
QCBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBm
aW5hbDsKICAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBm
aW5hbDsKIAotICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzKFdURjo6RnVuY3Rpb248dm9pZCgpPiYm
KTsKKyAgICB2b2lkIHJldHJpZXZlUmVjb3Jkcyhjb25zdCBVUkwmLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJik7CiAgICAgVmVjdG9yPENhY2hlU3RvcmFnZVJlY29yZD4gcXVlcnlDYWNoZVdpdGhU
YXJnZXRTdG9yYWdlKGNvbnN0IEZldGNoUmVxdWVzdCYsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25z
JiwgY29uc3QgVmVjdG9yPENhY2hlU3RvcmFnZVJlY29yZD4mKTsKICAgICB2b2lkIHF1ZXJ5Q2Fj
aGUoUmVmPEZldGNoUmVxdWVzdD4mJiwgQ2FjaGVRdWVyeU9wdGlvbnMmJiwgV1RGOjpGdW5jdGlv
bjx2b2lkKGNvbnN0IFZlY3RvcjxDYWNoZVN0b3JhZ2VSZWNvcmQ+Jik+JiYpOwogICAgIHZvaWQg
YmF0Y2hEZWxldGVPcGVyYXRpb24oY29uc3QgRmV0Y2hSZXF1ZXN0JiwgQ2FjaGVRdWVyeU9wdGlv
bnMmJiwgV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPGJvb2w+JiYpPiYmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rp
b24uY3BwCmluZGV4IGY2ZWFkNmUzZDJkYmY0YzdjZjczMGIyZGY1YTQwNzI5ODRjNjg3ZTEuLmFk
ZjFkODY2MDRmNjBlZjVhMmUyZjI4OTUzMTU5OGVkY2ZkZjAzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApA
QCAtNTUsMTIgKzU1LDEyIEBAIHZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVD
YWNoZXMoY29uc3QgU3RyaW5nJiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0CiAgICAgZG9SZXRyaWV2
ZUNhY2hlcyhyZXF1ZXN0SWRlbnRpZmllciwgb3JpZ2luLCB1cGRhdGVDb3VudGVyKTsKIH0KIAot
dm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyLCBSZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwg
Y29uc3QgVVJMJiB1cmwsIFJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRpZmllcjsKICAgICBt
X3JldHJpZXZlUmVjb3Jkc1BlbmRpbmdSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdU
Rk1vdmUoY2FsbGJhY2spKTsKIAotICAgIGRvUmV0cmlldmVSZWNvcmRzKHJlcXVlc3RJZGVudGlm
aWVyLCBjYWNoZUlkZW50aWZpZXIpOworICAgIGRvUmV0cmlldmVSZWNvcmRzKHJlcXVlc3RJZGVu
dGlmaWVyLCBjYWNoZUlkZW50aWZpZXIsIHVybCk7CiB9CiAKIHZvaWQgQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6YmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9u
cywgUmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaAppbmRleCAw
ZDQ0Yzk1ZjIwZjk5Zjc2NzY2YmQ3NjlmOWYxZTE0NDBlMTI0M2NjLi4xNjNhNzhmZWVhOWM3NGY5
NjI4NWZkMGZiYjUwMGJkYTUwODAyNTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaApAQCAtNDEsNyArNDEsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZW1vdmUodWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBET01DYWNo
ZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJik7CiAgICAgdm9pZCByZXRyaWV2ZUNhY2hlcyhj
b25zdCBTdHJpbmcmIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRlciwgRE9NQ2FjaGU6OkNh
Y2hlSW5mb3NDYWxsYmFjayYmKTsKIAotICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllciwgRE9NQ2FjaGU6OlJlY29yZHNDYWxsYmFjayYmKTsKKyAgICB2b2lk
IHJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYsIERP
TUNhY2hlOjpSZWNvcmRzQ2FsbGJhY2smJik7CiAgICAgdm9pZCBiYXRjaERlbGV0ZU9wZXJhdGlv
bih1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENhY2hl
UXVlcnlPcHRpb25zJiYsIERPTUNhY2hlOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwog
ICAgIHZvaWQgYmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0
b3I8RE9NQ2FjaGU6OlJlY29yZD4mJiwgRE9NQ2FjaGU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJh
Y2smJik7CiAKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZG9S
ZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRp
ZmllciAqLykgeyByZW1vdmVDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIG1ha2VVbmV4cGVj
dGVkKERPTUNhY2hlOjpFcnJvcjo6Tm90SW1wbGVtZW50ZWQpKTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIC8qIG9yaWdpbiAqLywgdWludDY0X3QgLyogdXBkYXRlQ291bnRlciAqLykgeyB1cGRhdGVD
YWNoZXMocmVxdWVzdElkZW50aWZpZXIsIHsgfSk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkb1Jl
dHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgLyogY2Fj
aGVJZGVudGlmaWVyICovKSB7IHVwZGF0ZVJlY29yZHMocmVxdWVzdElkZW50aWZpZXIsIHsgfSk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZG9SZXRyaWV2ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIsIHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLywgY29uc3QgVVJMJiAvKiB1
cmwgKi8pIHsgdXBkYXRlUmVjb3JkcyhyZXF1ZXN0SWRlbnRpZmllciwgeyB9KTsgfQogICAgIHZp
cnR1YWwgdm9pZCBkb0JhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWVyLCB1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8sIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIENhY2hlUXVlcnlPcHRpb25zJiYpIHsgZGVsZXRlUmVjb3Jkc0NvbXBsZXRlZChyZXF1ZXN0
SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoRE9NQ2FjaGU6OkVycm9yOjpOb3RJbXBsZW1lbnRl
ZCkpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRvQmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLywgVmVjdG9yPERP
TUNhY2hlOjpSZWNvcmQ+JiYpIHsgcHV0UmVjb3Jkc0NvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmll
ciwgbWFrZVVuZXhwZWN0ZWQoRE9NQ2FjaGU6OkVycm9yOjpOb3RJbXBsZW1lbnRlZCkpOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IDk5MjRjYWQ3MzY5Mjk0OThhMTJkNTliNDBh
YTQ4ODk1OWFiNjY0NGMuLjI5MDRlY2QyZjYwMmQzMjkwMjM5YWQyNzlmMTFkZThkODRlYmViZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3Jr
ZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtMTk2LDEzICsxOTYsMTMgQEAgc3RhdGlj
IGlubGluZSBSZWNvcmRzT3JFcnJvciByZWNvcmRzT3JFcnJvckZyb21SZWNvcmRzRGF0YShFeHBl
Y3RlZDxWZWN0b3I8Q3Jvc3MKICAgICByZXR1cm4gcmVjb3Jkc0Zyb21SZWNvcmRzRGF0YShXVEZN
b3ZlKHJlY29yZHNEYXRhLnZhbHVlKCkpKTsKIH0KIAotdm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjpkb1JldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwg
dWludDY0X3QgY2FjaGVJZGVudGlmaWVyKQordm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOjpkb1JldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0
X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCkKIHsKLSAgICBtX3Byb3h5LnBvc3RU
YXNrVG9Mb2FkZXIoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVz
dElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11
dGFibGUgeworICAgIG1fcHJveHkucG9zdFRhc2tUb0xvYWRlcihbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCB1
cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxl
IHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgQVNTRVJUKG1fbWFp
blRocmVhZENvbm5lY3Rpb24pOwogCi0gICAgICAgIG1fbWFpblRocmVhZENvbm5lY3Rpb24tPnJl
dHJpZXZlUmVjb3JkcyhjYWNoZUlkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RG
TW92ZShwcm90ZWN0ZWRUaGlzKSwgcmVxdWVzdElkZW50aWZpZXJdKFJlY29yZHNPckVycm9yJiYg
cmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgbV9tYWluVGhyZWFkQ29ubmVjdGlvbi0+cmV0cmll
dmVSZWNvcmRzKGNhY2hlSWRlbnRpZmllciwgdXJsLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdU
Rk1vdmUocHJvdGVjdGVkVGhpcyksIHJlcXVlc3RJZGVudGlmaWVyXShSZWNvcmRzT3JFcnJvciYm
IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBtX3Byb3h5LnBvc3RUYXNrRm9yTW9kZVRv
V29ya2VyR2xvYmFsU2NvcGUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3Rl
ZFRoaXMpLCByZXN1bHQgPSByZWNvcmRzRGF0YU9yRXJyb3JGcm9tUmVjb3JkcyhyZXN1bHQpLCBy
ZXF1ZXN0SWRlbnRpZmllcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29y
a2VyR2xvYmFsU2NvcGUoKSk7CiAgICAgICAgICAgICAgICAgdXBkYXRlUmVjb3JkcyhyZXF1ZXN0
SWRlbnRpZmllciwgcmVjb3Jkc09yRXJyb3JGcm9tUmVjb3Jkc0RhdGEoV1RGTW92ZShyZXN1bHQp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2Vy
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCmluZGV4IDMyNjE3MWU2NjFhZDI2N2YzMzA5Y2ZkNWQ5
YjQzN2Q4NTE1NTJkNmQuLjMyMzBlNjk5OWU5ODI1MTdjZjZjZWU2YjE0NzE1NjExZWZlZDA2YmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2Vy
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCkBAIC00Niw3ICs0Niw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkb1JlbW92ZSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCB1aW50NjRfdCB1cGRhdGVDb3Vu
dGVyKSBmaW5hbDsKIAotICAgIHZvaWQgZG9SZXRyaWV2ZVJlY29yZHModWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikgZmluYWw7CisgICAgdm9pZCBk
b1JldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyLCBjb25zdCBVUkwmKSBmaW5hbDsKICAgICB2b2lkIGRvQmF0Y2hEZWxldGVP
cGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Q2FjaGVRdWVy
eU9wdGlvbnMmJikgZmluYWw7CiAgICAgdm9pZCBkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxET01D
YWNoZTo6UmVjb3JkPiYmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaAppbmRleCA5N2RjODgy
YzFmYjA5NzhjN2UyNTIxMTM5MWY4OWZjZjIzN2I3MjBiLi44YmUwYjE2YzZlM2VjOTIwMzRlNjc0
NjVlM2VjODgyOWNmZGU3Y2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9V
UkwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaApAQCAtMTYxLDEwICsxNjEs
MTAgQEAgcHVibGljOgogICAgIC8vIFRoZSBxdWVyeSBtYXkgYmVnaW4gd2l0aCBhIHF1ZXN0aW9u
IG1hcmssIG9yLCBpZiBub3QsIG9uZSB3aWxsIGJlIGFkZGVkCiAgICAgLy8gZm9yIHlvdS4gU2V0
dGluZyB0aGUgcXVlcnkgdG8gdGhlIGVtcHR5IHN0cmluZyB3aWxsIGxlYXZlIGEgIj8iIGluIHRo
ZQogICAgIC8vIFVSTCAod2l0aCBub3RoaW5nIGFmdGVyIGl0KS4gVG8gY2xlYXIgdGhlIHF1ZXJ5
LCBwYXNzIGEgbnVsbCBzdHJpbmcuCi0gICAgdm9pZCBzZXRRdWVyeShjb25zdCBTdHJpbmcmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFF1ZXJ5KGNvbnN0IFN0cmluZyYpOwogCiAgICAg
dm9pZCBzZXRGcmFnbWVudElkZW50aWZpZXIoU3RyaW5nVmlldyk7Ci0gICAgdm9pZCByZW1vdmVG
cmFnbWVudElkZW50aWZpZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUZyYWdt
ZW50SWRlbnRpZmllcigpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgZnJpZW5kIGJvb2wgZXF1YWxJ
Z25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmUuY3BwCmluZGV4IDllOWYzNDQxMTA1ZjEyZDVkOGJhZjQ0ZGMzNWZkYzNjZDczYzVl
MjUuLmI0M2UyNTVlMTljNDM3ZDdkMmNkMjVmYTRhYWZjOGVkY2ZlMTJmODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZS5jcHAKQEAgLTEzOSwxNSArMTM5LDE1IEBAIHZvaWQgRW5naW5lOjpyZXRyaWV2ZUNhY2hl
cyhjb25zdCBTdHJpbmcmIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRlciwgQ2FjaGVJCiAg
ICAgfSk7CiB9CiAKLXZvaWQgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyLCBSZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgRW5naW5lOjpyZXRy
aWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpVUkwmJiB1cmws
IFJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIHJlYWRDYWNoZShjYWNoZUlkZW50
aWZpZXIsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShDYWNoZU9yRXJyb3ImJiByZXN1
bHQpIG11dGFibGUgeworICAgIHJlYWRDYWNoZShjYWNoZUlkZW50aWZpZXIsIFt1cmwgPSBXVEZN
b3ZlKHVybCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKENhY2hlT3JFcnJvciYmIHJl
c3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpIHsKICAgICAg
ICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKHJlc3VsdC5lcnJvcigpKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBjYWxsYmFjayhyZXN1bHQudmFsdWUo
KS5nZXQoKS5yZWNvcmRzKCkpOworICAgICAgICBjYWxsYmFjayhyZXN1bHQudmFsdWUoKS5nZXQo
KS5yZXRyaWV2ZVJlY29yZHModXJsKSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCmluZGV4
IGI2MWY1Mjg5OWM4ZTA2ODU0YjRiZjhjZGU3YWY1NjY0OGVhY2RiZDYuLmQ2NTRmNWM0ZDk1ZmIx
MGUyYTFhNGI4MzRiYmI5MzQ4OTE0MWE5ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaApAQCAtNTcsNyArNTcs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmUodWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBX
ZWJDb3JlOjpET01DYWNoZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJik7CiAgICAgdm9pZCBy
ZXRyaWV2ZUNhY2hlcyhjb25zdCBTdHJpbmcmIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRl
ciwgV2ViQ29yZTo6RE9NQ2FjaGU6OkNhY2hlSW5mb3NDYWxsYmFjayYmKTsKIAotICAgIHZvaWQg
cmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6RE9NQ2Fj
aGU6OlJlY29yZHNDYWxsYmFjayYmKTsKKyAgICB2b2lkIHJldHJpZXZlUmVjb3Jkcyh1aW50NjRf
dCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCYmLCBXZWJDb3JlOjpET01DYWNoZTo6UmVj
b3Jkc0NhbGxiYWNrJiYpOwogICAgIHZvaWQgcHV0UmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01D
YWNoZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKICAgICB2b2lkIGRlbGV0ZU1hdGNo
aW5nUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBXZWJDb3JlOjpET01DYWNoZTo6
UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNw
cAppbmRleCA5OWUxMmQ5N2QxOWU5OGRmOTY1M2U0ZmQ5OWJlZTBkZjNkYjg1N2FhLi42MmMwYjlm
MWIwYWEwNGM5ZWY4ZWRkOGYwOWRjNjQwNzQwODg3NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlLmNwcApAQCAtNDksMTkgKzQ5LDg3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3Bh
Y2UgQ2FjaGVTdG9yYWdlIHsKIAorc3RhdGljIGlubGluZSBWZWN0b3I8dWludDY0X3Q+IHF1ZXJ5
Q2FjaGUoY29uc3QgVmVjdG9yPFJlY29yZD4qIHJlY29yZHMsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgaWYg
KCFyZWNvcmRzKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgaWYgKCFvcHRpb25zLmlnbm9y
ZU1ldGhvZCAmJiByZXF1ZXN0Lmh0dHBNZXRob2QoKSAhPSAiR0VUIikKKyAgICAgICAgcmV0dXJu
IHsgfTsKKworICAgIFZlY3Rvcjx1aW50NjRfdD4gcmVzdWx0czsKKyAgICBmb3IgKGNvbnN0IGF1
dG8mIHJlY29yZCA6ICpyZWNvcmRzKSB7CisgICAgICAgIGlmIChXZWJDb3JlOjpET01DYWNoZTo6
cXVlcnlDYWNoZU1hdGNoKHJlcXVlc3QsIHJlY29yZC5yZXF1ZXN0LCByZWNvcmQucmVzcG9uc2Us
IG9wdGlvbnMpKQorICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVjb3JkLmlkZW50aWZpZXIp
OworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0czsKK30KKwogQ2FjaGU6OkNhY2hlKHVpbnQ2NF90
IGlkZW50aWZpZXIsIFN0cmluZyYmIG5hbWUpCiAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmll
cikKICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQogewogfQogCi1WZWN0b3I8UmVjb3JkPiBD
YWNoZTo6cmVjb3JkcygpIGNvbnN0CitWZWN0b3I8UmVjb3JkPiBDYWNoZTo6cmV0cmlldmVSZWNv
cmRzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAoreworICAgIGlmICh1cmwuaXNOdWxsKCkpIHsKKyAg
ICAgICAgVmVjdG9yPFJlY29yZD4gcmVzdWx0OworICAgICAgICBmb3IgKGF1dG8mIHJlY29yZHMg
OiBtX3JlY29yZHMudmFsdWVzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcmVjb3JkIDog
cmVjb3JkcykKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHJlY29yZC5jb3B5KCkpOwor
ICAgICAgICB9CisgICAgICAgIHN0ZDo6c29ydChyZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgp
LCBbJl0oY29uc3QgYXV0byYgYSwgY29uc3QgYXV0byYgYikgeworICAgICAgICAgICAgcmV0dXJu
IGEuaWRlbnRpZmllciA8IGIuaWRlbnRpZmllcjsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQorCisgICAgY29uc3QgYXV0byogcmVjb3JkcyA9IHJlY29yZHNGcm9t
VVJMKHVybCk7CisgICAgaWYgKCFyZWNvcmRzKQorICAgICAgICByZXR1cm4geyB9OworCisgICAg
VmVjdG9yPFJlY29yZD4gcmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KHJlY29yZHMtPnNpemUoKSk7CisgICAgZm9yIChhdXRvJiByZWNvcmQgOiAqcmVjb3JkcykKKyAg
ICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChyZWNvcmQuY29weSgpKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitzdGF0aWMgaW5saW5lIFN0cmluZyBjb21wdXRlS2V5VVJMKGNvbnN0IFVS
TCYgdXJsKQoreworICAgIFVSTCBrZXlVUkwgPSB1cmw7CisgICAgaWYgKGtleVVSTC5oYXNRdWVy
eSgpKQorICAgICAgICBrZXlVUkwuc2V0UXVlcnkoeyB9KTsKKyAgICBrZXlVUkwucmVtb3ZlRnJh
Z21lbnRJZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIGtleVVSTDsKK30KKworUmVjb3JkJiBDYWNo
ZTo6YWRkTmV3VVJMUmVjb3JkKFJlY29yZCYmIHJlY29yZCkKK3sKKyAgICBhdXRvIGtleSA9IGNv
bXB1dGVLZXlVUkwocmVjb3JkLnJlcXVlc3QudXJsKCkpOworICAgIEFTU0VSVCghbV9yZWNvcmRz
LmNvbnRhaW5zKGtleSkpOworCisgICAgVmVjdG9yPFJlY29yZD4gbmV3UmVjb3JkczsKKyAgICBu
ZXdSZWNvcmRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMSk7CisgICAgbmV3UmVjb3Jkcy51bmNo
ZWNrZWRBcHBlbmQoV1RGTW92ZShyZWNvcmQpKTsKKyAgICByZXR1cm4gbV9yZWNvcmRzLnNldChr
ZXksIFdURk1vdmUobmV3UmVjb3JkcykpLml0ZXJhdG9yLT52YWx1ZS5sYXN0KCk7Cit9CisKK1Zl
Y3RvcjxSZWNvcmQ+KiBDYWNoZTo6cmVjb3Jkc0Zyb21VUkwoY29uc3QgVVJMJiB1cmwpCit7Cisg
ICAgYXV0byBpdGVyYXRvciA9IG1fcmVjb3Jkcy5maW5kKGNvbXB1dGVLZXlVUkwodXJsKSk7Cisg
ICAgaWYgKGl0ZXJhdG9yID09IG1fcmVjb3Jkcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmV0dXJuICZpdGVyYXRvci0+dmFsdWU7Cit9CisKK2NvbnN0IFZlY3RvcjxSZWNv
cmQ+KiBDYWNoZTo6cmVjb3Jkc0Zyb21VUkwoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7Ci0gICAg
VmVjdG9yPFJlY29yZD4gcmVjb3JkczsKLSAgICByZWNvcmRzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobV9yZWNvcmRzLnNpemUoKSk7Ci0gICAgZm9yIChhdXRvJiByZWNvcmQgOiBtX3JlY29yZHMp
Ci0gICAgICAgIHJlY29yZHMudW5jaGVja2VkQXBwZW5kKHJlY29yZC5jb3B5KCkpOwotICAgIHJl
dHVybiByZWNvcmRzOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX3JlY29yZHMuZmluZChjb21wdXRl
S2V5VVJMKHVybCkpOworICAgIGlmIChpdGVyYXRvciA9PSBtX3JlY29yZHMuZW5kKCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmaXRlcmF0b3ItPnZhbHVlOwogfQogCiB2
b2lkIENhY2hlOjpwdXQoVmVjdG9yPFJlY29yZD4mJiByZWNvcmRzLCBSZWNvcmRJZGVudGlmaWVy
c0NhbGxiYWNrJiYgY2FsbGJhY2spCkBAIC03MSwyMCArMTM5LDI3IEBAIHZvaWQgQ2FjaGU6OnB1
dChWZWN0b3I8UmVjb3JkPiYmIHJlY29yZHMsIFJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJiBj
YWxsYmFjaykKICAgICBWZWN0b3I8dWludDY0X3Q+IHJlY29yZElkZW50aWZpZXJzOwogICAgIHJl
Y29yZElkZW50aWZpZXJzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVjb3Jkcy5zaXplKCkpOwog
ICAgIGZvciAoYXV0byYgcmVjb3JkIDogcmVjb3JkcykgewotICAgICAgICBhdXRvIG1hdGNoaW5n
UmVjb3JkcyA9IHF1ZXJ5Q2FjaGUocmVjb3JkLnJlcXVlc3QsIG9wdGlvbnMpOworICAgICAgICBh
dXRvKiBzYW1lVVJMUmVjb3JkcyA9IHJlY29yZHNGcm9tVVJMKHJlY29yZC5yZXF1ZXN0LnVybCgp
KTsKKworICAgICAgICBhdXRvIG1hdGNoaW5nUmVjb3JkcyA9IHF1ZXJ5Q2FjaGUoc2FtZVVSTFJl
Y29yZHMsIHJlY29yZC5yZXF1ZXN0LCBvcHRpb25zKTsKICAgICAgICAgaWYgKG1hdGNoaW5nUmVj
b3Jkcy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIHJlY29yZC5pZGVudGlmaWVyID0gKyttX25l
eHRSZWNvcmRJZGVudGlmaWVyOwogICAgICAgICAgICAgcmVjb3JkSWRlbnRpZmllcnMudW5jaGVj
a2VkQXBwZW5kKHJlY29yZC5pZGVudGlmaWVyKTsKLSAgICAgICAgICAgIG1fcmVjb3Jkcy5hcHBl
bmQoV1RGTW92ZShyZWNvcmQpKTsKIAogICAgICAgICAgICAgc2hvdWxkV3JpdGVSZWNvcmRMaXN0
ID0gdHJ1ZTsKLSAgICAgICAgICAgIHdyaXRlUmVjb3JkVG9EaXNrKG1fcmVjb3Jkcy5sYXN0KCkp
OworICAgICAgICAgICAgaWYgKCFzYW1lVVJMUmVjb3JkcykgeworICAgICAgICAgICAgICAgIGF1
dG8mIHJlY29yZFRvV3JpdGUgPSBhZGROZXdVUkxSZWNvcmQoV1RGTW92ZShyZWNvcmQpKTsKKyAg
ICAgICAgICAgICAgICB3cml0ZVJlY29yZFRvRGlzayhyZWNvcmRUb1dyaXRlKTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2FtZVVSTFJlY29yZHMtPmFwcGVuZChXVEZN
b3ZlKHJlY29yZCkpOworICAgICAgICAgICAgICAgIHdyaXRlUmVjb3JkVG9EaXNrKHNhbWVVUkxS
ZWNvcmRzLT5sYXN0KCkpOworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgYXV0byBpZGVudGlmaWVyID0gbWF0Y2hpbmdSZWNvcmRzWzBdOwotICAgICAgICAgICAg
YXV0byBwb3NpdGlvbiA9IG1fcmVjb3Jkcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIGl0
ZW0pIHsgcmV0dXJuIGl0ZW0uaWRlbnRpZmllciA9PSBpZGVudGlmaWVyOyB9KTsKKyAgICAgICAg
ICAgIGF1dG8gcG9zaXRpb24gPSBzYW1lVVJMUmVjb3Jkcy0+ZmluZE1hdGNoaW5nKFsmXShjb25z
dCBhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLmlkZW50aWZpZXIgPT0gaWRlbnRpZmllcjsgfSk7
CiAgICAgICAgICAgICBBU1NFUlQocG9zaXRpb24gIT0gbm90Rm91bmQpOwogICAgICAgICAgICAg
aWYgKHBvc2l0aW9uICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgZXhpc3Rp
bmdSZWNvcmQgPSBtX3JlY29yZHNbcG9zaXRpb25dOworICAgICAgICAgICAgICAgIGF1dG8mIGV4
aXN0aW5nUmVjb3JkID0gKCpzYW1lVVJMUmVjb3JkcylbcG9zaXRpb25dOwogICAgICAgICAgICAg
ICAgIHJlY29yZElkZW50aWZpZXJzLnVuY2hlY2tlZEFwcGVuZChpZGVudGlmaWVyKTsKICAgICAg
ICAgICAgICAgICBleGlzdGluZ1JlY29yZC5yZXNwb25zZUhlYWRlcnNHdWFyZCA9IHJlY29yZC5y
ZXNwb25zZUhlYWRlcnNHdWFyZDsKICAgICAgICAgICAgICAgICBleGlzdGluZ1JlY29yZC5yZXNw
b25zZSA9IFdURk1vdmUocmVjb3JkLnJlc3BvbnNlKTsKQEAgLTExMSwyMCArMTg2LDE5IEBAIHZv
aWQgQ2FjaGU6OnB1dChWZWN0b3I8UmVjb3JkPiYmIHJlY29yZHMsIFJlY29yZElkZW50aWZpZXJz
Q2FsbGJhY2smJiBjYWxsYmFjaykKIAogdm9pZCBDYWNoZTo6cmVtb3ZlKFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9u
cywgUmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIGF1dG8gcmVj
b3JkSWRlbnRpZmllcnMgPSBxdWVyeUNhY2hlKHJlcXVlc3QsIG9wdGlvbnMpOworICAgIGF1dG8q
IHJlY29yZHMgPSByZWNvcmRzRnJvbVVSTChyZXF1ZXN0LnVybCgpKTsKKyAgICBhdXRvIHJlY29y
ZElkZW50aWZpZXJzID0gcXVlcnlDYWNoZShyZWNvcmRzLCByZXF1ZXN0LCBvcHRpb25zKTsKICAg
ICBpZiAocmVjb3JkSWRlbnRpZmllcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNhbGxiYWNrKHsg
fSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8UmVjb3JkPiByZWNvcmRz
VG9LZWVwOwotICAgIGZvciAoYXV0byYgcmVjb3JkIDogbV9yZWNvcmRzKSB7Ci0gICAgICAgIGlm
IChyZWNvcmRJZGVudGlmaWVycy5maW5kTWF0Y2hpbmcoWyZdKGF1dG8gaXRlbSkgeyByZXR1cm4g
aXRlbSA9PSByZWNvcmQuaWRlbnRpZmllcjsgfSkgPT0gbm90Rm91bmQpCi0gICAgICAgICAgICBy
ZWNvcmRzVG9LZWVwLmFwcGVuZChXVEZNb3ZlKHJlY29yZCkpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICByZW1vdmVSZWNvcmRGcm9tRGlzayhyZWNvcmQpOwotICAgIH0KLSAgICBtX3JlY29y
ZHMgPSBXVEZNb3ZlKHJlY29yZHNUb0tlZXApOworICAgIHJlY29yZHMtPnJlbW92ZUFsbE1hdGNo
aW5nKFsmXShhdXRvJiBpdGVtKSB7CisgICAgICAgIGJvb2wgc2hvdWxkUmVtb3ZlID0gcmVjb3Jk
SWRlbnRpZmllcnMuZmluZE1hdGNoaW5nKFsmXShhdXRvIGlkZW50aWZpZXIpIHsgcmV0dXJuIGlk
ZW50aWZpZXIgPT0gaXRlbS5pZGVudGlmaWVyOyB9KSAhPSBub3RGb3VuZDsKKyAgICAgICAgaWYg
KHNob3VsZFJlbW92ZSkKKyAgICAgICAgICAgIHJlbW92ZVJlY29yZEZyb21EaXNrKGl0ZW0pOwor
ICAgICAgICByZXR1cm4gc2hvdWxkUmVtb3ZlOworICAgIH0pOwogCiAgICAgd3JpdGVSZWNvcmRz
TGlzdChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVjb3JkSWRlbnRpZmllcnMgPSBX
VEZNb3ZlKHJlY29yZElkZW50aWZpZXJzKV0oc3RkOjpvcHRpb25hbDxFcnJvcj4mJiBlcnJvcikg
bXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJvcikgewpAQCAtMTM1LDE5ICsyMDksNiBAQCB2b2lk
IENhY2hlOjpyZW1vdmUoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2ViQ29y
ZTo6Q2FjaGVRdWVyeU9wdGlvbgogICAgIH0pOwogfQogCi1WZWN0b3I8dWludDY0X3Q+IENhY2hl
OjpxdWVyeUNhY2hlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgQ2FjaGVR
dWVyeU9wdGlvbnMmIG9wdGlvbnMpCi17Ci0gICAgaWYgKCFvcHRpb25zLmlnbm9yZU1ldGhvZCAm
JiByZXF1ZXN0Lmh0dHBNZXRob2QoKSAhPSAiR0VUIikKLSAgICAgICAgcmV0dXJuIHsgfTsKLQot
ICAgIFZlY3Rvcjx1aW50NjRfdD4gcmVzdWx0czsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHJlY29y
ZCA6IG1fcmVjb3JkcykgewotICAgICAgICBpZiAoV2ViQ29yZTo6RE9NQ2FjaGU6OnF1ZXJ5Q2Fj
aGVNYXRjaChyZXF1ZXN0LCByZWNvcmQucmVxdWVzdCwgcmVjb3JkLnJlc3BvbnNlLCBvcHRpb25z
KSkKLSAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlY29yZC5pZGVudGlmaWVyKTsKLSAgICB9
Ci0gICAgcmV0dXJuIHJlc3VsdHM7Ci19Ci0KIHZvaWQgQ2FjaGU6OndyaXRlUmVjb3Jkc0xpc3Qo
Q29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVu
dCB0aGlzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oCmluZGV4IGUzM2E5NjcwZjlmZTFlMDFlMWYz
MTNlNWM3MWU4YTI4YWYxNDNmOWEuLjY2NGIwMjRmMDdjYmQ5NTE5NDc5MDYwMjViZGZiOWQxMWI3
M2E2MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmgKQEAgLTQwLDE0ICs0MCwxNiBAQCBwdWJs
aWM6CiAgICAgdWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmll
cjsgfQogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQog
Ci0gICAgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmQ+IHJlY29yZHMoKSBjb25zdDsK
KyAgICBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZD4gcmV0cmlldmVSZWNvcmRzKGNv
bnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OwogICAgIFdlYkNvcmU6OkRPTUNhY2hlOjpDYWNoZUlu
Zm8gaW5mbygpIGNvbnN0IHsgcmV0dXJuIHsgbV9pZGVudGlmaWVyLCBtX25hbWUgfTsgfQogCiAg
ICAgdm9pZCBwdXQoVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmQ+JiYsIFdlYkNvcmU6
OkRPTUNhY2hlOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwogICAgIHZvaWQgcmVtb3Zl
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYm
LCBXZWJDb3JlOjpET01DYWNoZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKIAogcHJp
dmF0ZToKLSAgICBWZWN0b3I8dWludDY0X3Q+IHF1ZXJ5Q2FjaGUoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmKTsKKyAgICBW
ZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZD4qIHJlY29yZHNGcm9tVVJMKGNvbnN0IFdl
YkNvcmU6OlVSTCYpOworICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZTo6UmVjb3Jk
PiogcmVjb3Jkc0Zyb21VUkwoY29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3Q7CisgICAgV2ViQ29y
ZTo6RE9NQ2FjaGU6OlJlY29yZCYgYWRkTmV3VVJMUmVjb3JkKFdlYkNvcmU6OkRPTUNhY2hlOjpS
ZWNvcmQmJik7CiAKICAgICB2b2lkIHdyaXRlUmVjb3Jkc0xpc3QoV2ViQ29yZTo6RE9NQ2FjaGU6
OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKICAgICB2b2lkIHdyaXRlUmVjb3JkVG9EaXNrKFdlYkNv
cmU6OkRPTUNhY2hlOjpSZWNvcmQmKTsKQEAgLTU1LDcgKzU3LDcgQEAgcHJpdmF0ZToKIAogICAg
IHVpbnQ2NF90IG1faWRlbnRpZmllciB7IDAgfTsKICAgICBTdHJpbmcgbV9uYW1lOwotICAgIFZl
Y3RvcjxXZWJDb3JlOjpET01DYWNoZTo6UmVjb3JkPiBtX3JlY29yZHM7CisgICAgSGFzaE1hcDxT
dHJpbmcsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZTo6UmVjb3JkPj4gbV9yZWNvcmRzOwogICAg
IHVpbnQ2NF90IG1fbmV4dFJlY29yZElkZW50aWZpZXIgeyAwIH07CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcAppbmRleCBlZTkzYjg4NGYxZjEwNGFmOGZhNDFiNmI3
MWQ3YWY4YmJkZGY3ZTBmLi5hM2Y0M2UwZTkwYzAwMTRjNmY3ZGU2NTM5ZDIzYjFjMGQyM2E1YTA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKQEAgLTY4LDkgKzY4LDkg
QEAgdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpjbGVhck1lbW9yeVJlcHJlc2Vu
dGF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3MKICAgICBFbmdpbmU6OmZyb20oc2Vzc2lvbklEKS5j
bGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKG9yaWdpbik7CiB9CiAKLXZvaWQgQ2FjaGVTdG9yYWdl
RW5naW5lQ29ubmVjdGlvbjo6cmVjb3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpCit2b2lkIENh
Y2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnJldHJpZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlk
ZW50aWZpZXIsIFdlYkNvcmU6OlVSTCYmIHVybCkKIHsKLSAgICBFbmdpbmU6OmZyb20oc2Vzc2lv
bklEKS5yZXRyaWV2ZVJlY29yZHMoY2FjaGVJZGVudGlmaWVyLCBbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCB0aGlzLCBzZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyXShSZWNvcmRz
T3JFcnJvciYmIHJlc3VsdCkgeworICAgIEVuZ2luZTo6ZnJvbShzZXNzaW9uSUQpLnJldHJpZXZl
UmVjb3JkcyhjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUodXJsKSwgW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgdGhpcywgc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmllcl0oUmVjb3Jk
c09yRXJyb3ImJiByZXN1bHQpIHsKICAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpVcGRhdGVSZWNvcmRzKHJl
cXVlc3RJZGVudGlmaWVyLCByZXN1bHQpLCBzZXNzaW9uSUQuc2Vzc2lvbklEKCkpOwogICAgIH0p
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaAppbmRleCA0ZTQ4YThlOTRmNGU1
Nzg0YTAxMjg4YmUwNmM3OGZmNTliNDgxMzIyLi5hMDZmMjcwODRhYWUwZWRjN2I3Mzc2Njc1OWY3
YzA2MWE3OTAwZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaApAQCAtNTYs
NyArNTYsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9u
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIG9yaWdpbik7CiAKLSAgICB2b2lkIHJlY29y
ZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBj
YWNoZUlkZW50aWZpZXIpOworICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklE
LCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBX
ZWJDb3JlOjpVUkwmJik7CiAgICAgdm9pZCBkZWxldGVNYXRjaGluZ1JlY29yZHMoUEFMOjpTZXNz
aW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9u
cyYmKTsKICAgICB2b2lkIHB1dFJlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpE
T01DYWNoZTo6UmVjb3JkPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDk1MGZhZTI0Nzc1MDRlMzdiYTZmYjAxN2YxMmRkNTNm
NDYwZjkyMWQuLmNkOWFlNWJiNDVkNzA5NzVkYmQ3Yzg4ZTg5ZDhhNjFiOWIyYWE0OGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTI3
LDcgKzI3LDcgQEAgbWVzc2FnZXMgLT4gQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbiB7CiAK
ICAgICBDbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
U3RyaW5nIG9yaWdpbik7CiAKLSAgICBSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcik7Cisg
ICAgUmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6VVJMIHVy
bCk7CiAgICAgRGVsZXRlTWF0Y2hpbmdSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpDYWNoZVF1ZXJ5
T3B0aW9ucyBvcHRpb25zKTsKICAgICBQdXRSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwg
VmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmQ+IHJlY29yZCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi5jcHAKaW5kZXggMWYxODIwODc5NWU2YjVlOTYxZjYzMDlmZDMzNWNmNWQ0ZGU3ODUz
NS4uNTA2ZDYyNWE2YmRjZGMzNjNlMzkzNjFhZjM2NDVjMWFjZDVhN2QxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uLmNwcApAQCAtNzEsOSArNzEsOSBAQCB2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OmRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbgog
ICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uOjpDYWNoZXMobV9zZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyLCBvcmlnaW4sIHVwZGF0
ZUNvdW50ZXIpLCAwKTsKIH0KIAotdm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1Jl
dHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyKQordm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JldHJpZXZlUmVj
b3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKIHsKLSAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6UmVjb3JkcyhtX3Nlc3Npb25JRCwg
cmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciksIDApOworICAgIGNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpSZXRyaWV2ZVJl
Y29yZHMobV9zZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIsIHVy
bCksIDApOwogfQogCiB2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvQmF0Y2hEZWxl
dGVPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJDb3Jl
OjpDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaAppbmRleCA0
NTk4YTYyZmMwZGFmM2NiYWQwMDQ3NjY4MDBmOTVmNTMzMjZkYmY3Li40OWIxMzQ2NGRhNmY1NTNi
NTRkNTljOTU3ZDc3MWZlNTc4NmJmZjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTU2LDcg
KzU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRvUmVtb3ZlKHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgZG9SZXRy
aWV2ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmln
aW4sIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIpIGZpbmFsOwogCi0gICAgdm9pZCBkb1JldHJpZXZl
UmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlm
aWVyKSBmaW5hbDsKKyAgICB2b2lkIGRvUmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlVSTCYp
IGZpbmFsOwogICAgIHZvaWQgZG9CYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmKSBmaW5hbDsKICAgICB2
b2lkIGRvQmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmQ+JiYp
IGZpbmFsOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319596</attachid>
            <date>2017-09-01 08:49:00 -0700</date>
            <delta_ts>2017-09-01 09:49:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176202-20170901084859.patch</filename>
            <type>text/plain</type>
            <size>30810</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmQ3NDk3NDFjYTllMWUy
OTBlZWVkZWYwZDZmNWNjNmJjNWRiNWE0ZC4uMDlkOTkyNTA0NTEyNGNmMTc5MTA3NjM4ZWMxYmQ3
OTExNmQ4YmI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMzIEBACiAyMDE3LTA4LTMxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBBbGxvdyByZXRyaWV2aW5n
IENhY2hlIFN0b3JhZ2UgcmVjb3JkcyBmb3IgYSBnaXZlbiBVUkwgb25seQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MjAyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gb2JzZXJ2YWJsZSBjaGFuZ2Ug
b2YgYmVoYXZpb3IuCisKKyAgICAgICAgQWRkaW5nIGEgVVJMIHBhcmFtZXRlciB0byBDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uOjpyZXRyaWV2ZVJlY29yZHMuCisgICAgICAgIElmIGdpdmVuIFVSTCBp
cyBudWxsLCBhbGwgcmVjb3JkcyB3aWxsIGJlIHJldHJpZXZlZCwgd2hpY2ggaXMgdXNlZnVsIGZv
ciB0aGUga2V5cyBtZXRob2QuCisgICAgICAgIE90aGVyIG9wZXJhdGlvbnMgb25seSBuZWVkIHJl
Y29yZHMgdGhhdCBzaGFyZSB0aGUgc2FtZSBVUkwgKG1vZHVsbyBxdWVyeSBzdHJpbmcgYW5kIGZy
YWcgaWQpLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNoZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZTo6bWF0Y2hBbGwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OmtleXMp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OnJldHJpZXZlUmVjb3Jkcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZTo6cXVlcnlDYWNoZSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNo
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZXRyaWV2ZVJlY29y
ZHMpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZVJlY29y
ZHMpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpk
b1JldHJpZXZlUmVjb3Jkcyk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vVVJMLmg6CisKKzIwMTctMDgt
MzEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCiAgICAgICAgIFVwZGF0ZSBD
YWNoZVN0b3JhZ2UgY2FjaGVzIG9ubHkgaWYgaXQgaXMgdXBkYXRlZAogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MTM1CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTgy
M2Y5MTM2NWQ2ZDk5ZDY0ZTNkOTEyNjdmYTc4OTFhNjg5NTVhOS4uNjUzZWFmODM1NGI5YzEzNWQ2
NjI3NjZmMzNjMDkyY2M5NmE4ZjFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzNyBAQAogMjAxNy0w
OC0zMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKKyAgICAgICAgQWxsb3cg
cmV0cmlldmluZyBDYWNoZSBTdG9yYWdlIHJlY29yZHMgZm9yIGEgZ2l2ZW4gVVJMIG9ubHkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBDYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZSB0byBzdG9yZSByZWNvcmRzIGFzIGEgbWFwIFVSTCAtPiBWZWN0
b3Igb2YgUmVjb3Jkcy4KKyAgICAgICAgVGhpcyBhbGxvd3MgcmVndWxhciByZWNvcmQgcmV0cmll
dmFsIHRvIGJlIGZhc3Rlci4KKyAgICAgICAgUmV0cmlldmFsIG9mIGFsbCByZWNvcmRzIGlzIGxl
c3MgZWZmaWNpZW50IGJ1dCB0aGlzIHNob3VsZCBoYXBwZW4gbGVzcyBvZnRlbi4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZXRyaWV2ZVJlY29yZHMpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpxdWVyeUNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6
Q2FjaGVTdG9yYWdlOjpDYWNoZTo6cmV0cmlldmVSZWNvcmRzIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpjb21wdXRlS2V5VVJMKToKKyAgICAgICAgKFdlYktpdDo6Q2Fj
aGVTdG9yYWdlOjpDYWNoZTo6YWRkTmV3VVJMUmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6Q2Fj
aGVTdG9yYWdlOjpDYWNoZTo6cmVjb3Jkc0Zyb21VUkwpOgorICAgICAgICAoV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U6OkNhY2hlOjpyZWNvcmRzRnJvbVVSTCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OnB1dCk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6Q2FjaGU6OnJlbW92ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ2FjaGUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rp
b24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1Jl
dHJpZXZlUmVjb3Jkcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLmg6CisKKzIwMTctMDgtMzEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgorCiAgICAgICAgIFVwZGF0ZSBDYWNoZVN0b3JhZ2UgY2FjaGVzIG9ubHkgaWYgaXQg
aXMgdXBkYXRlZAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc2MTM1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2Fj
aGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZS5jcHAKaW5kZXggMzJh
MGYxMTQzMGI1ZDhiMDdkN2I3MGY2MGI2ZjkwZDIwNThhODg4ZS4uOWY0YmI4YjUxYjMwMThhYTBm
YmE4ZjFkMTAwZDM4YzFjMWViNTk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNo
ZS5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIENhY2hlOjptYXRjaEFsbChzdGQ6Om9wdGlv
bmFsPFJlcXVlc3RJbmZvPiYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aQogICAgIH0K
IAogICAgIGlmICghcmVxdWVzdCkgewotICAgICAgICByZXRyaWV2ZVJlY29yZHMoW3RoaXMsIHBy
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSgpIG11dGFibGUgeworICAgICAgICByZXRyaWV2ZVJl
Y29yZHMoVVJMIHsgfSwgW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSgpIG11dGFi
bGUgewogICAgICAgICAgICAgVmVjdG9yPFJlZjxGZXRjaFJlc3BvbnNlPj4gcmVzcG9uc2VzOwog
ICAgICAgICAgICAgcmVzcG9uc2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9yZWNvcmRzLnNp
emUoKSk7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IG1fcmVjb3JkcykKQEAgLTM2
MSw3ICszNjEsNyBAQCB2b2lkIENhY2hlOjprZXlzKHN0ZDo6b3B0aW9uYWw8UmVxdWVzdEluZm8+
JiYgaW5mbywgQ2FjaGVRdWVyeU9wdGlvbnMmJiBvcHRpb25zLAogICAgIH0KIAogICAgIGlmICgh
cmVxdWVzdCkgewotICAgICAgICByZXRyaWV2ZVJlY29yZHMoW3RoaXMsIHByb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpXSgpIG11dGFibGUgeworICAgICAgICByZXRyaWV2ZVJlY29yZHMoVVJMIHsg
fSwgW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSgpIG11dGFibGUgewogICAgICAg
ICAgICAgVmVjdG9yPFJlZjxGZXRjaFJlcXVlc3Q+PiByZXF1ZXN0czsKICAgICAgICAgICAgIHJl
cXVlc3RzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9yZWNvcmRzLnNpemUoKSk7CiAgICAgICAg
ICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IG1fcmVjb3JkcykKQEAgLTM4MCwxMCArMzgwLDEzIEBA
IHZvaWQgQ2FjaGU6OmtleXMoc3RkOjpvcHRpb25hbDxSZXF1ZXN0SW5mbz4mJiBpbmZvLCBDYWNo
ZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsCiAgICAgfSk7CiB9CiAKLXZvaWQgQ2FjaGU6OnJldHJp
ZXZlUmVjb3JkcyhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKK3ZvaWQgQ2FjaGU6
OnJldHJpZXZlUmVjb3Jkcyhjb25zdCBVUkwmIHVybCwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYg
Y2FsbGJhY2spCiB7CiAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwotICAgIG1fY29ubmVj
dGlvbi0+cmV0cmlldmVSZWNvcmRzKG1faWRlbnRpZmllciwgW3RoaXMsIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKFJlY29yZHNPckVycm9yJiYgcmVzdWx0KSB7CisKKyAgICBVUkwgcmV0
cmlldmVVUkwgPSB1cmw7CisgICAgcmV0cmlldmVVUkwuc2V0UXVlcnkoeyB9KTsKKyAgICBtX2Nv
bm5lY3Rpb24tPnJldHJpZXZlUmVjb3JkcyhtX2lkZW50aWZpZXIsIHJldHJpZXZlVVJMLCBbdGhp
cywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oUmVjb3Jkc09yRXJyb3ImJiByZXN1bHQp
IHsKICAgICAgICAgaWYgKCFtX2lzU3RvcHBlZCkgewogICAgICAgICAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBwcm9iYWJseSBwcm9wYWdhdGUgdGhhdCBlcnJvciB1cCB0byB0aGUgcHJvbWlzZSBi
YXNlZCBvcGVyYXRpb24uCiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0Lmhhc1ZhbHVlKCkpOwpA
QCAtMzk3LDcgKzQwMCw4IEBAIHZvaWQgQ2FjaGU6OnJldHJpZXZlUmVjb3JkcyhXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKIAogdm9pZCBDYWNoZTo6cXVlcnlDYWNoZShSZWY8RmV0
Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywgV1RGOjpG
dW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxDYWNoZVN0b3JhZ2VSZWNvcmQ+Jik+JiYgY2FsbGJh
Y2spCiB7Ci0gICAgcmV0cmlldmVSZWNvcmRzKFt0aGlzLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1
ZXN0KSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9ucyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldKCkgbXV0YWJsZSB7CisgICAgYXV0byB1cmwgPSByZXF1ZXN0LT51cmwoKTsKKyAgICBy
ZXRyaWV2ZVJlY29yZHModXJsLCBbdGhpcywgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIG9w
dGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgp
IG11dGFibGUgewogICAgICAgICBjYWxsYmFjayhxdWVyeUNhY2hlV2l0aFRhcmdldFN0b3JhZ2Uo
cmVxdWVzdC5nZXQoKSwgb3B0aW9ucywgbV9yZWNvcmRzKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0NhY2hlLmgKaW5kZXggMjdjNTVjMjZlZTgzMjQxZGRhMjgxMjQ1Njdh
ODhhNjEyNmM5MjliYi4uMzI2NTlkN2NiMzA1YzdlZjRiZDIxNDVkN2U4MzZlOGE2ZmJmMWI1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGUuaApAQCAtNjksNyArNjksNyBAQCBwcml2
YXRlOgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsK
ICAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBmaW5hbDsK
IAotICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKTsKKyAg
ICB2b2lkIHJldHJpZXZlUmVjb3Jkcyhjb25zdCBVUkwmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
Jik7CiAgICAgVmVjdG9yPENhY2hlU3RvcmFnZVJlY29yZD4gcXVlcnlDYWNoZVdpdGhUYXJnZXRT
dG9yYWdlKGNvbnN0IEZldGNoUmVxdWVzdCYsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJiwgY29u
c3QgVmVjdG9yPENhY2hlU3RvcmFnZVJlY29yZD4mKTsKICAgICB2b2lkIHF1ZXJ5Q2FjaGUoUmVm
PEZldGNoUmVxdWVzdD4mJiwgQ2FjaGVRdWVyeU9wdGlvbnMmJiwgV1RGOjpGdW5jdGlvbjx2b2lk
KGNvbnN0IFZlY3RvcjxDYWNoZVN0b3JhZ2VSZWNvcmQ+Jik+JiYpOwogICAgIHZvaWQgYmF0Y2hE
ZWxldGVPcGVyYXRpb24oY29uc3QgRmV0Y2hSZXF1ZXN0JiwgQ2FjaGVRdWVyeU9wdGlvbnMmJiwg
V1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPGJvb2w+JiYpPiYmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3Bw
CmluZGV4IGY2ZWFkNmUzZDJkYmY0YzdjZjczMGIyZGY1YTQwNzI5ODRjNjg3ZTEuLmFkZjFkODY2
MDRmNjBlZjVhMmUyZjI4OTUzMTU5OGVkY2ZkZjAzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNTUs
MTIgKzU1LDEyIEBAIHZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVDYWNoZXMo
Y29uc3QgU3RyaW5nJiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0CiAgICAgZG9SZXRyaWV2ZUNhY2hl
cyhyZXF1ZXN0SWRlbnRpZmllciwgb3JpZ2luLCB1cGRhdGVDb3VudGVyKTsKIH0KIAotdm9pZCBD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyLCBSZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3Qg
VVJMJiB1cmwsIFJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRpZmllcjsKICAgICBtX3JldHJp
ZXZlUmVjb3Jkc1BlbmRpbmdSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUo
Y2FsbGJhY2spKTsKIAotICAgIGRvUmV0cmlldmVSZWNvcmRzKHJlcXVlc3RJZGVudGlmaWVyLCBj
YWNoZUlkZW50aWZpZXIpOworICAgIGRvUmV0cmlldmVSZWNvcmRzKHJlcXVlc3RJZGVudGlmaWVy
LCBjYWNoZUlkZW50aWZpZXIsIHVybCk7CiB9CiAKIHZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6YmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywgUmVj
b3JkSWRlbnRpZmllcnNDYWxsYmFjayYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaAppbmRleCAwZDQ0Yzk1
ZjIwZjk5Zjc2NzY2YmQ3NjlmOWYxZTE0NDBlMTI0M2NjLi4xNjNhNzhmZWVhOWM3NGY5NjI4NWZk
MGZiYjUwMGJkYTUwODAyNTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZW1vdmUodWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBET01DYWNoZTo6Q2Fj
aGVJZGVudGlmaWVyQ2FsbGJhY2smJik7CiAgICAgdm9pZCByZXRyaWV2ZUNhY2hlcyhjb25zdCBT
dHJpbmcmIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRlciwgRE9NQ2FjaGU6OkNhY2hlSW5m
b3NDYWxsYmFjayYmKTsKIAotICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hl
SWRlbnRpZmllciwgRE9NQ2FjaGU6OlJlY29yZHNDYWxsYmFjayYmKTsKKyAgICB2b2lkIHJldHJp
ZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYsIERPTUNhY2hl
OjpSZWNvcmRzQ2FsbGJhY2smJik7CiAgICAgdm9pZCBiYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENhY2hlUXVlcnlP
cHRpb25zJiYsIERPTUNhY2hlOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwogICAgIHZv
aWQgYmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8RE9N
Q2FjaGU6OlJlY29yZD4mJiwgRE9NQ2FjaGU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7
CiAKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZG9SZW1vdmUo
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAq
LykgeyByZW1vdmVDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVkKERP
TUNhY2hlOjpFcnJvcjo6Tm90SW1wbGVtZW50ZWQpKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkb1Jl
dHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIC8q
IG9yaWdpbiAqLywgdWludDY0X3QgLyogdXBkYXRlQ291bnRlciAqLykgeyB1cGRhdGVDYWNoZXMo
cmVxdWVzdElkZW50aWZpZXIsIHsgfSk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkb1JldHJpZXZl
UmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgLyogY2FjaGVJZGVu
dGlmaWVyICovKSB7IHVwZGF0ZVJlY29yZHMocmVxdWVzdElkZW50aWZpZXIsIHsgfSk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZG9SZXRyaWV2ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLywgY29uc3QgVVJMJiAvKiB1cmwgKi8p
IHsgdXBkYXRlUmVjb3JkcyhyZXF1ZXN0SWRlbnRpZmllciwgeyB9KTsgfQogICAgIHZpcnR1YWwg
dm9pZCBkb0JhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1
aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENh
Y2hlUXVlcnlPcHRpb25zJiYpIHsgZGVsZXRlUmVjb3Jkc0NvbXBsZXRlZChyZXF1ZXN0SWRlbnRp
ZmllciwgbWFrZVVuZXhwZWN0ZWQoRE9NQ2FjaGU6OkVycm9yOjpOb3RJbXBsZW1lbnRlZCkpOyB9
CiAgICAgdmlydHVhbCB2b2lkIGRvQmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIsIHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLywgVmVjdG9yPERPTUNhY2hl
OjpSZWNvcmQ+JiYpIHsgcHV0UmVjb3Jkc0NvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgbWFr
ZVVuZXhwZWN0ZWQoRE9NQ2FjaGU6OkVycm9yOjpOb3RJbXBsZW1lbnRlZCkpOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IDk5MjRjYWQ3MzY5Mjk0OThhMTJkNTliNDBhYTQ4ODk1
OWFiNjY0NGMuLjI5MDRlY2QyZjYwMmQzMjkwMjM5YWQyNzlmMTFkZThkODRlYmViZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtMTk2LDEzICsxOTYsMTMgQEAgc3RhdGljIGlubGlu
ZSBSZWNvcmRzT3JFcnJvciByZWNvcmRzT3JFcnJvckZyb21SZWNvcmRzRGF0YShFeHBlY3RlZDxW
ZWN0b3I8Q3Jvc3MKICAgICByZXR1cm4gcmVjb3Jkc0Zyb21SZWNvcmRzRGF0YShXVEZNb3ZlKHJl
Y29yZHNEYXRhLnZhbHVlKCkpKTsKIH0KIAotdm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOjpkb1JldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0
X3QgY2FjaGVJZGVudGlmaWVyKQordm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpk
b1JldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCkKIHsKLSAgICBtX3Byb3h5LnBvc3RUYXNrVG9M
b2FkZXIoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdElkZW50
aWZpZXIsIGNhY2hlSWRlbnRpZmllcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUg
eworICAgIG1fcHJveHkucG9zdFRhc2tUb0xvYWRlcihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCB1cmwgPSB1
cmwuaXNvbGF0ZWRDb3B5KCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKICAg
ICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgQVNTRVJUKG1fbWFpblRocmVh
ZENvbm5lY3Rpb24pOwogCi0gICAgICAgIG1fbWFpblRocmVhZENvbm5lY3Rpb24tPnJldHJpZXZl
UmVjb3JkcyhjYWNoZUlkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShw
cm90ZWN0ZWRUaGlzKSwgcmVxdWVzdElkZW50aWZpZXJdKFJlY29yZHNPckVycm9yJiYgcmVzdWx0
KSBtdXRhYmxlIHsKKyAgICAgICAgbV9tYWluVGhyZWFkQ29ubmVjdGlvbi0+cmV0cmlldmVSZWNv
cmRzKGNhY2hlSWRlbnRpZmllciwgdXJsLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUo
cHJvdGVjdGVkVGhpcyksIHJlcXVlc3RJZGVudGlmaWVyXShSZWNvcmRzT3JFcnJvciYmIHJlc3Vs
dCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBtX3Byb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2Vy
R2xvYmFsU2NvcGUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMp
LCByZXN1bHQgPSByZWNvcmRzRGF0YU9yRXJyb3JGcm9tUmVjb3JkcyhyZXN1bHQpLCByZXF1ZXN0
SWRlbnRpZmllcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xv
YmFsU2NvcGUoKSk7CiAgICAgICAgICAgICAgICAgdXBkYXRlUmVjb3JkcyhyZXF1ZXN0SWRlbnRp
ZmllciwgcmVjb3Jkc09yRXJyb3JGcm9tUmVjb3Jkc0RhdGEoV1RGTW92ZShyZXN1bHQpKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5oCmluZGV4IDMyNjE3MWU2NjFhZDI2N2YzMzA5Y2ZkNWQ5YjQzN2Q4
NTE1NTJkNmQuLjMyMzBlNjk5OWU5ODI1MTdjZjZjZWU2YjE0NzE1NjExZWZlZDA2YmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5oCkBAIC00Niw3ICs0Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
b1JlbW92ZSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlm
aWVyKSBmaW5hbDsKICAgICB2b2lkIGRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyKSBm
aW5hbDsKIAotICAgIHZvaWQgZG9SZXRyaWV2ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikgZmluYWw7CisgICAgdm9pZCBkb1JldHJp
ZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyLCBjb25zdCBVUkwmKSBmaW5hbDsKICAgICB2b2lkIGRvQmF0Y2hEZWxldGVPcGVyYXRp
b24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlv
bnMmJikgZmluYWw7CiAgICAgdm9pZCBkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxET01DYWNoZTo6
UmVjb3JkPiYmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaAppbmRleCA5N2RjODgyYzFmYjA5
NzhjN2UyNTIxMTM5MWY4OWZjZjIzN2I3MjBiLi44YmUwYjE2YzZlM2VjOTIwMzRlNjc0NjVlM2Vj
ODgyOWNmZGU3Y2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaApAQCAtMTYxLDEwICsxNjEsMTAgQEAg
cHVibGljOgogICAgIC8vIFRoZSBxdWVyeSBtYXkgYmVnaW4gd2l0aCBhIHF1ZXN0aW9uIG1hcmss
IG9yLCBpZiBub3QsIG9uZSB3aWxsIGJlIGFkZGVkCiAgICAgLy8gZm9yIHlvdS4gU2V0dGluZyB0
aGUgcXVlcnkgdG8gdGhlIGVtcHR5IHN0cmluZyB3aWxsIGxlYXZlIGEgIj8iIGluIHRoZQogICAg
IC8vIFVSTCAod2l0aCBub3RoaW5nIGFmdGVyIGl0KS4gVG8gY2xlYXIgdGhlIHF1ZXJ5LCBwYXNz
IGEgbnVsbCBzdHJpbmcuCi0gICAgdm9pZCBzZXRRdWVyeShjb25zdCBTdHJpbmcmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldFF1ZXJ5KGNvbnN0IFN0cmluZyYpOwogCiAgICAgdm9pZCBz
ZXRGcmFnbWVudElkZW50aWZpZXIoU3RyaW5nVmlldyk7Ci0gICAgdm9pZCByZW1vdmVGcmFnbWVu
dElkZW50aWZpZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUZyYWdtZW50SWRl
bnRpZmllcigpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgZnJpZW5kIGJvb2wgZXF1YWxJZ25vcmlu
Z0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmUuY3BwCmluZGV4IDllOWYzNDQxMTA1ZjEyZDVkOGJhZjQ0ZGMzNWZkYzNjZDczYzVlMjUuLmI0
M2UyNTVlMTljNDM3ZDdkMmNkMjVmYTRhYWZjOGVkY2ZlMTJmODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5j
cHAKQEAgLTEzOSwxNSArMTM5LDE1IEBAIHZvaWQgRW5naW5lOjpyZXRyaWV2ZUNhY2hlcyhjb25z
dCBTdHJpbmcmIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRlciwgQ2FjaGVJCiAgICAgfSk7
CiB9CiAKLXZvaWQgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlm
aWVyLCBSZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgRW5naW5lOjpyZXRyaWV2ZVJl
Y29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpVUkwmJiB1cmwsIFJlY29y
ZHNDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIHJlYWRDYWNoZShjYWNoZUlkZW50aWZpZXIs
IFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShDYWNoZU9yRXJyb3ImJiByZXN1bHQpIG11
dGFibGUgeworICAgIHJlYWRDYWNoZShjYWNoZUlkZW50aWZpZXIsIFt1cmwgPSBXVEZNb3ZlKHVy
bCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKENhY2hlT3JFcnJvciYmIHJlc3VsdCkg
bXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpIHsKICAgICAgICAgICAg
IGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKHJlc3VsdC5lcnJvcigpKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBjYWxsYmFjayhyZXN1bHQudmFsdWUoKS5nZXQo
KS5yZWNvcmRzKCkpOworICAgICAgICBjYWxsYmFjayhyZXN1bHQudmFsdWUoKS5nZXQoKS5yZXRy
aWV2ZVJlY29yZHModXJsKSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCmluZGV4IGI2MWY1
Mjg5OWM4ZTA2ODU0YjRiZjhjZGU3YWY1NjY0OGVhY2RiZDYuLmQ2NTRmNWM0ZDk1ZmIxMGUyYTFh
NGI4MzRiYmI5MzQ4OTE0MWE5ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaApAQCAtNTcsNyArNTcsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZW1vdmUodWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3Jl
OjpET01DYWNoZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJik7CiAgICAgdm9pZCByZXRyaWV2
ZUNhY2hlcyhjb25zdCBTdHJpbmcmIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRlciwgV2Vi
Q29yZTo6RE9NQ2FjaGU6OkNhY2hlSW5mb3NDYWxsYmFjayYmKTsKIAotICAgIHZvaWQgcmV0cmll
dmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6RE9NQ2FjaGU6OlJl
Y29yZHNDYWxsYmFjayYmKTsKKyAgICB2b2lkIHJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNo
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCYmLCBXZWJDb3JlOjpET01DYWNoZTo6UmVjb3Jkc0Nh
bGxiYWNrJiYpOwogICAgIHZvaWQgcHV0UmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIs
IFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZTo6
UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKICAgICB2b2lkIGRlbGV0ZU1hdGNoaW5nUmVj
b3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBXZWJDb3JlOjpET01DYWNoZTo6UmVjb3Jk
SWRlbnRpZmllcnNDYWxsYmFjayYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAppbmRl
eCA5OWUxMmQ5N2QxOWU5OGRmOTY1M2U0ZmQ5OWJlZTBkZjNkYjg1N2FhLi5lNGQ4ODBlZDZhYjBj
NTQyZjMzNGFjNDJlOWRkOTljZDEwMmQ5ZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNw
cApAQCAtNDksMTkgKzQ5LDg3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgQ2Fj
aGVTdG9yYWdlIHsKIAorc3RhdGljIGlubGluZSBWZWN0b3I8dWludDY0X3Q+IHF1ZXJ5Q2FjaGUo
Y29uc3QgVmVjdG9yPFJlY29yZD4qIHJlY29yZHMsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgaWYgKCFyZWNv
cmRzKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgaWYgKCFvcHRpb25zLmlnbm9yZU1ldGhv
ZCAmJiByZXF1ZXN0Lmh0dHBNZXRob2QoKSAhPSAiR0VUIikKKyAgICAgICAgcmV0dXJuIHsgfTsK
KworICAgIFZlY3Rvcjx1aW50NjRfdD4gcmVzdWx0czsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHJl
Y29yZCA6ICpyZWNvcmRzKSB7CisgICAgICAgIGlmIChXZWJDb3JlOjpET01DYWNoZTo6cXVlcnlD
YWNoZU1hdGNoKHJlcXVlc3QsIHJlY29yZC5yZXF1ZXN0LCByZWNvcmQucmVzcG9uc2UsIG9wdGlv
bnMpKQorICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVjb3JkLmlkZW50aWZpZXIpOworICAg
IH0KKyAgICByZXR1cm4gcmVzdWx0czsKK30KKwogQ2FjaGU6OkNhY2hlKHVpbnQ2NF90IGlkZW50
aWZpZXIsIFN0cmluZyYmIG5hbWUpCiAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAg
ICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQogewogfQogCi1WZWN0b3I8UmVjb3JkPiBDYWNoZTo6
cmVjb3JkcygpIGNvbnN0CitWZWN0b3I8UmVjb3JkPiBDYWNoZTo6cmV0cmlldmVSZWNvcmRzKGNv
bnN0IFVSTCYgdXJsKSBjb25zdAoreworICAgIGlmICh1cmwuaXNOdWxsKCkpIHsKKyAgICAgICAg
VmVjdG9yPFJlY29yZD4gcmVzdWx0OworICAgICAgICBmb3IgKGF1dG8mIHJlY29yZHMgOiBtX3Jl
Y29yZHMudmFsdWVzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcmVjb3JkIDogcmVjb3Jk
cykKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHJlY29yZC5jb3B5KCkpOworICAgICAg
ICB9CisgICAgICAgIHN0ZDo6c29ydChyZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpLCBbXShj
b25zdCBhdXRvJiBhLCBjb25zdCBhdXRvJiBiKSB7CisgICAgICAgICAgICByZXR1cm4gYS5pZGVu
dGlmaWVyIDwgYi5pZGVudGlmaWVyOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9CisKKyAgICBjb25zdCBhdXRvKiByZWNvcmRzID0gcmVjb3Jkc0Zyb21VUkwodXJs
KTsKKyAgICBpZiAoIXJlY29yZHMpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBWZWN0b3I8
UmVjb3JkPiByZXN1bHQ7CisgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVjb3Jk
cy0+c2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIHJlY29yZCA6ICpyZWNvcmRzKQorICAgICAgICBy
ZXN1bHQudW5jaGVja2VkQXBwZW5kKHJlY29yZC5jb3B5KCkpOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK3N0YXRpYyBpbmxpbmUgU3RyaW5nIGNvbXB1dGVLZXlVUkwoY29uc3QgVVJMJiB1cmwp
Cit7CisgICAgVVJMIGtleVVSTCA9IHVybDsKKyAgICBpZiAoa2V5VVJMLmhhc1F1ZXJ5KCkpCisg
ICAgICAgIGtleVVSTC5zZXRRdWVyeSh7IH0pOworICAgIGtleVVSTC5yZW1vdmVGcmFnbWVudElk
ZW50aWZpZXIoKTsKKyAgICByZXR1cm4ga2V5VVJMOworfQorCitSZWNvcmQmIENhY2hlOjphZGRO
ZXdVUkxSZWNvcmQoUmVjb3JkJiYgcmVjb3JkKQoreworICAgIGF1dG8ga2V5ID0gY29tcHV0ZUtl
eVVSTChyZWNvcmQucmVxdWVzdC51cmwoKSk7CisgICAgQVNTRVJUKCFtX3JlY29yZHMuY29udGFp
bnMoa2V5KSk7CisKKyAgICBWZWN0b3I8UmVjb3JkPiBuZXdSZWNvcmRzOworICAgIG5ld1JlY29y
ZHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgxKTsKKyAgICBuZXdSZWNvcmRzLnVuY2hlY2tlZEFw
cGVuZChXVEZNb3ZlKHJlY29yZCkpOworICAgIHJldHVybiBtX3JlY29yZHMuc2V0KGtleSwgV1RG
TW92ZShuZXdSZWNvcmRzKSkuaXRlcmF0b3ItPnZhbHVlLmxhc3QoKTsKK30KKworVmVjdG9yPFJl
Y29yZD4qIENhY2hlOjpyZWNvcmRzRnJvbVVSTChjb25zdCBVUkwmIHVybCkKK3sKKyAgICBhdXRv
IGl0ZXJhdG9yID0gbV9yZWNvcmRzLmZpbmQoY29tcHV0ZUtleVVSTCh1cmwpKTsKKyAgICBpZiAo
aXRlcmF0b3IgPT0gbV9yZWNvcmRzLmVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gJml0ZXJhdG9yLT52YWx1ZTsKK30KKworY29uc3QgVmVjdG9yPFJlY29yZD4qIENh
Y2hlOjpyZWNvcmRzRnJvbVVSTChjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKLSAgICBWZWN0b3I8
UmVjb3JkPiByZWNvcmRzOwotICAgIHJlY29yZHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3Jl
Y29yZHMuc2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8mIHJlY29yZCA6IG1fcmVjb3JkcykKLSAgICAg
ICAgcmVjb3Jkcy51bmNoZWNrZWRBcHBlbmQocmVjb3JkLmNvcHkoKSk7Ci0gICAgcmV0dXJuIHJl
Y29yZHM7CisgICAgYXV0byBpdGVyYXRvciA9IG1fcmVjb3Jkcy5maW5kKGNvbXB1dGVLZXlVUkwo
dXJsKSk7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fcmVjb3Jkcy5lbmQoKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZpdGVyYXRvci0+dmFsdWU7CiB9CiAKIHZvaWQgQ2Fj
aGU6OnB1dChWZWN0b3I8UmVjb3JkPiYmIHJlY29yZHMsIFJlY29yZElkZW50aWZpZXJzQ2FsbGJh
Y2smJiBjYWxsYmFjaykKQEAgLTcxLDIwICsxMzksMjcgQEAgdm9pZCBDYWNoZTo6cHV0KFZlY3Rv
cjxSZWNvcmQ+JiYgcmVjb3JkcywgUmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmIGNhbGxiYWNr
KQogICAgIFZlY3Rvcjx1aW50NjRfdD4gcmVjb3JkSWRlbnRpZmllcnM7CiAgICAgcmVjb3JkSWRl
bnRpZmllcnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShyZWNvcmRzLnNpemUoKSk7CiAgICAgZm9y
IChhdXRvJiByZWNvcmQgOiByZWNvcmRzKSB7Ci0gICAgICAgIGF1dG8gbWF0Y2hpbmdSZWNvcmRz
ID0gcXVlcnlDYWNoZShyZWNvcmQucmVxdWVzdCwgb3B0aW9ucyk7CisgICAgICAgIGF1dG8qIHNh
bWVVUkxSZWNvcmRzID0gcmVjb3Jkc0Zyb21VUkwocmVjb3JkLnJlcXVlc3QudXJsKCkpOworCisg
ICAgICAgIGF1dG8gbWF0Y2hpbmdSZWNvcmRzID0gcXVlcnlDYWNoZShzYW1lVVJMUmVjb3Jkcywg
cmVjb3JkLnJlcXVlc3QsIG9wdGlvbnMpOwogICAgICAgICBpZiAobWF0Y2hpbmdSZWNvcmRzLmlz
RW1wdHkoKSkgewogICAgICAgICAgICAgcmVjb3JkLmlkZW50aWZpZXIgPSArK21fbmV4dFJlY29y
ZElkZW50aWZpZXI7CiAgICAgICAgICAgICByZWNvcmRJZGVudGlmaWVycy51bmNoZWNrZWRBcHBl
bmQocmVjb3JkLmlkZW50aWZpZXIpOwotICAgICAgICAgICAgbV9yZWNvcmRzLmFwcGVuZChXVEZN
b3ZlKHJlY29yZCkpOwogCiAgICAgICAgICAgICBzaG91bGRXcml0ZVJlY29yZExpc3QgPSB0cnVl
OwotICAgICAgICAgICAgd3JpdGVSZWNvcmRUb0Rpc2sobV9yZWNvcmRzLmxhc3QoKSk7CisgICAg
ICAgICAgICBpZiAoIXNhbWVVUkxSZWNvcmRzKSB7CisgICAgICAgICAgICAgICAgYXV0byYgcmVj
b3JkVG9Xcml0ZSA9IGFkZE5ld1VSTFJlY29yZChXVEZNb3ZlKHJlY29yZCkpOworICAgICAgICAg
ICAgICAgIHdyaXRlUmVjb3JkVG9EaXNrKHJlY29yZFRvV3JpdGUpOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBzYW1lVVJMUmVjb3Jkcy0+YXBwZW5kKFdURk1vdmUocmVj
b3JkKSk7CisgICAgICAgICAgICAgICAgd3JpdGVSZWNvcmRUb0Rpc2soc2FtZVVSTFJlY29yZHMt
Pmxhc3QoKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBh
dXRvIGlkZW50aWZpZXIgPSBtYXRjaGluZ1JlY29yZHNbMF07Ci0gICAgICAgICAgICBhdXRvIHBv
c2l0aW9uID0gbV9yZWNvcmRzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgeyBy
ZXR1cm4gaXRlbS5pZGVudGlmaWVyID09IGlkZW50aWZpZXI7IH0pOworICAgICAgICAgICAgYXV0
byBwb3NpdGlvbiA9IHNhbWVVUkxSZWNvcmRzLT5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8m
IGl0ZW0pIHsgcmV0dXJuIGl0ZW0uaWRlbnRpZmllciA9PSBpZGVudGlmaWVyOyB9KTsKICAgICAg
ICAgICAgIEFTU0VSVChwb3NpdGlvbiAhPSBub3RGb3VuZCk7CiAgICAgICAgICAgICBpZiAocG9z
aXRpb24gIT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAgICAgICBhdXRvJiBleGlzdGluZ1JlY29y
ZCA9IG1fcmVjb3Jkc1twb3NpdGlvbl07CisgICAgICAgICAgICAgICAgYXV0byYgZXhpc3RpbmdS
ZWNvcmQgPSAoKnNhbWVVUkxSZWNvcmRzKVtwb3NpdGlvbl07CiAgICAgICAgICAgICAgICAgcmVj
b3JkSWRlbnRpZmllcnMudW5jaGVja2VkQXBwZW5kKGlkZW50aWZpZXIpOwogICAgICAgICAgICAg
ICAgIGV4aXN0aW5nUmVjb3JkLnJlc3BvbnNlSGVhZGVyc0d1YXJkID0gcmVjb3JkLnJlc3BvbnNl
SGVhZGVyc0d1YXJkOwogICAgICAgICAgICAgICAgIGV4aXN0aW5nUmVjb3JkLnJlc3BvbnNlID0g
V1RGTW92ZShyZWNvcmQucmVzcG9uc2UpOwpAQCAtMTExLDIwICsxODYsMTkgQEAgdm9pZCBDYWNo
ZTo6cHV0KFZlY3RvcjxSZWNvcmQ+JiYgcmVjb3JkcywgUmVjb3JkSWRlbnRpZmllcnNDYWxsYmFj
ayYmIGNhbGxiYWNrKQogCiB2b2lkIENhY2hlOjpyZW1vdmUoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJiBvcHRpb25zLCBSZWNv
cmRJZGVudGlmaWVyc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgYXV0byByZWNvcmRJZGVu
dGlmaWVycyA9IHF1ZXJ5Q2FjaGUocmVxdWVzdCwgb3B0aW9ucyk7CisgICAgYXV0byogcmVjb3Jk
cyA9IHJlY29yZHNGcm9tVVJMKHJlcXVlc3QudXJsKCkpOworICAgIGF1dG8gcmVjb3JkSWRlbnRp
ZmllcnMgPSBxdWVyeUNhY2hlKHJlY29yZHMsIHJlcXVlc3QsIG9wdGlvbnMpOwogICAgIGlmIChy
ZWNvcmRJZGVudGlmaWVycy5pc0VtcHR5KCkpIHsKICAgICAgICAgY2FsbGJhY2soeyB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFZlY3RvcjxSZWNvcmQ+IHJlY29yZHNUb0tlZXA7
Ci0gICAgZm9yIChhdXRvJiByZWNvcmQgOiBtX3JlY29yZHMpIHsKLSAgICAgICAgaWYgKHJlY29y
ZElkZW50aWZpZXJzLmZpbmRNYXRjaGluZyhbJl0oYXV0byBpdGVtKSB7IHJldHVybiBpdGVtID09
IHJlY29yZC5pZGVudGlmaWVyOyB9KSA9PSBub3RGb3VuZCkKLSAgICAgICAgICAgIHJlY29yZHNU
b0tlZXAuYXBwZW5kKFdURk1vdmUocmVjb3JkKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHJlbW92ZVJlY29yZEZyb21EaXNrKHJlY29yZCk7Ci0gICAgfQotICAgIG1fcmVjb3JkcyA9IFdU
Rk1vdmUocmVjb3Jkc1RvS2VlcCk7CisgICAgcmVjb3Jkcy0+cmVtb3ZlQWxsTWF0Y2hpbmcoW3Ro
aXMsICZyZWNvcmRJZGVudGlmaWVyc10oYXV0byYgaXRlbSkgeworICAgICAgICBib29sIHNob3Vs
ZFJlbW92ZSA9IHJlY29yZElkZW50aWZpZXJzLmZpbmRNYXRjaGluZyhbJml0ZW1dKGF1dG8gaWRl
bnRpZmllcikgeyByZXR1cm4gaWRlbnRpZmllciA9PSBpdGVtLmlkZW50aWZpZXI7IH0pICE9IG5v
dEZvdW5kOworICAgICAgICBpZiAoc2hvdWxkUmVtb3ZlKQorICAgICAgICAgICAgcmVtb3ZlUmVj
b3JkRnJvbURpc2soaXRlbSk7CisgICAgICAgIHJldHVybiBzaG91bGRSZW1vdmU7CisgICAgfSk7
CiAKICAgICB3cml0ZVJlY29yZHNMaXN0KFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBy
ZWNvcmRJZGVudGlmaWVycyA9IFdURk1vdmUocmVjb3JkSWRlbnRpZmllcnMpXShzdGQ6Om9wdGlv
bmFsPEVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGVycm9yKSB7CkBAIC0x
MzUsMTkgKzIwOSw2IEBAIHZvaWQgQ2FjaGU6OnJlbW92ZShXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9uCiAgICAgfSk7CiB9CiAKLVZl
Y3Rvcjx1aW50NjRfdD4gQ2FjaGU6OnF1ZXJ5Q2FjaGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICBpZiAoIW9w
dGlvbnMuaWdub3JlTWV0aG9kICYmIHJlcXVlc3QuaHR0cE1ldGhvZCgpICE9ICJHRVQiKQotICAg
ICAgICByZXR1cm4geyB9OwotCi0gICAgVmVjdG9yPHVpbnQ2NF90PiByZXN1bHRzOwotICAgIGZv
ciAoY29uc3QgYXV0byYgcmVjb3JkIDogbV9yZWNvcmRzKSB7Ci0gICAgICAgIGlmIChXZWJDb3Jl
OjpET01DYWNoZTo6cXVlcnlDYWNoZU1hdGNoKHJlcXVlc3QsIHJlY29yZC5yZXF1ZXN0LCByZWNv
cmQucmVzcG9uc2UsIG9wdGlvbnMpKQotICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVjb3Jk
LmlkZW50aWZpZXIpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0czsKLX0KLQogdm9pZCBDYWNo
ZTo6d3JpdGVSZWNvcmRzTGlzdChDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmgKaW5kZXgg
ZTMzYTk2NzBmOWZlMWUwMWUxZjMxM2U1YzcxZThhMjhhZjE0M2Y5YS4uNjY0YjAyNGYwN2NiZDk1
MTk0NzkwNjAyNWJkZmI5ZDExYjczYTYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaApAQCAt
NDAsMTQgKzQwLDE2IEBAIHB1YmxpYzoKICAgICB1aW50NjRfdCBpZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9uYW1lOyB9CiAKLSAgICBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29y
ZD4gcmVjb3JkcygpIGNvbnN0OworICAgIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZTo6UmVjb3Jk
PiByZXRyaWV2ZVJlY29yZHMoY29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3Q7CiAgICAgV2ViQ29y
ZTo6RE9NQ2FjaGU6OkNhY2hlSW5mbyBpbmZvKCkgY29uc3QgeyByZXR1cm4geyBtX2lkZW50aWZp
ZXIsIG1fbmFtZSB9OyB9CiAKICAgICB2b2lkIHB1dChWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6
OlJlY29yZD4mJiwgV2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2sm
Jik7CiAgICAgdm9pZCByZW1vdmUoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6
OkNhY2hlUXVlcnlPcHRpb25zJiYsIFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmRJZGVudGlmaWVy
c0NhbGxiYWNrJiYpOwogCiBwcml2YXRlOgotICAgIFZlY3Rvcjx1aW50NjRfdD4gcXVlcnlDYWNo
ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpDYWNoZVF1
ZXJ5T3B0aW9ucyYpOworICAgIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZTo6UmVjb3JkPiogcmVj
b3Jkc0Zyb21VUkwoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkRPTUNhY2hlOjpSZWNvcmQ+KiByZWNvcmRzRnJvbVVSTChjb25zdCBXZWJDb3JlOjpVUkwm
KSBjb25zdDsKKyAgICBXZWJDb3JlOjpET01DYWNoZTo6UmVjb3JkJiBhZGROZXdVUkxSZWNvcmQo
V2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZCYmKTsKIAogICAgIHZvaWQgd3JpdGVSZWNvcmRzTGlz
dChXZWJDb3JlOjpET01DYWNoZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOwogICAgIHZvaWQgd3Jp
dGVSZWNvcmRUb0Rpc2soV2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZCYpOwpAQCAtNTUsNyArNTcs
NyBAQCBwcml2YXRlOgogCiAgICAgdWludDY0X3QgbV9pZGVudGlmaWVyIHsgMCB9OwogICAgIFN0
cmluZyBtX25hbWU7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmQ+IG1fcmVj
b3JkczsKKyAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNv
cmQ+PiBtX3JlY29yZHM7CiAgICAgdWludDY0X3QgbV9uZXh0UmVjb3JkSWRlbnRpZmllciB7IDAg
fTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwCmluZGV4IGVlOTNi
ODg0ZjFmMTA0YWY4ZmE0MWI2YjcxZDdhZjhiYmRkZjdlMGYuLmEzZjQzZTBlOTBjMDAxNGM2Zjdk
ZTY1MzlkMjNiMWMwZDIzYTVhMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9u
LmNwcApAQCAtNjgsOSArNjgsOSBAQCB2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246
OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oUEFMOjpTZXNzaW9uSUQgc2VzcwogICAgIEVuZ2lu
ZTo6ZnJvbShzZXNzaW9uSUQpLmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24ob3JpZ2luKTsKIH0K
IAotdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpyZWNvcmRzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hl
SWRlbnRpZmllcikKK3ZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cmV0cmlldmVS
ZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6VVJMJiYgdXJsKQogewotICAg
IEVuZ2luZTo6ZnJvbShzZXNzaW9uSUQpLnJldHJpZXZlUmVjb3JkcyhjYWNoZUlkZW50aWZpZXIs
IFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIHNlc3Npb25JRCwgcmVxdWVz
dElkZW50aWZpZXJdKFJlY29yZHNPckVycm9yJiYgcmVzdWx0KSB7CisgICAgRW5naW5lOjpmcm9t
KHNlc3Npb25JRCkucmV0cmlldmVSZWNvcmRzKGNhY2hlSWRlbnRpZmllciwgV1RGTW92ZSh1cmwp
LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCBzZXNzaW9uSUQsIHJlcXVl
c3RJZGVudGlmaWVyXShSZWNvcmRzT3JFcnJvciYmIHJlc3VsdCkgewogICAgICAgICBtX2Nvbm5l
Y3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rp
b246OlVwZGF0ZVJlY29yZHMocmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCksIHNlc3Npb25JRC5z
ZXNzaW9uSUQoKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5o
CmluZGV4IDRlNDhhOGU5NGY0ZTU3ODRhMDEyODhiZTA2Yzc4ZmY1OWI0ODEzMjIuLmEwNmYyNzA4
NGFhZTBlZGM3YjczNzY2NzU5ZjdjMDYxYTc5MDBmMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbi5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNsZWFy
TWVtb3J5UmVwcmVzZW50YXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
KTsKIAotICAgIHZvaWQgcmVjb3JkcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcik7CisgICAgdm9pZCByZXRyaWV2ZVJl
Y29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRf
dCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCYmKTsKICAgICB2b2lkIGRlbGV0ZU1hdGNo
aW5nUmVjb3JkcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVp
bnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNv
cmU6OkNhY2hlUXVlcnlPcHRpb25zJiYpOwogICAgIHZvaWQgcHV0UmVjb3JkcyhQQUw6OlNlc3Np
b25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmll
ciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmQ+JiYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggOTUwZmFlMjQ3NzUw
NGUzN2JhNmZiMDE3ZjEyZGQ1M2Y0NjBmOTIxZC4uY2Q5YWU1YmI0NWQ3MDk3NWRiZDdjODhlODlk
OGE2MWI5YjJhYTQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbgpAQCAtMjcsNyArMjcsNyBAQCBtZXNzYWdlcyAtPiBDYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uIHsKIAogICAgIENsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgb3JpZ2luKTsKIAotICAgIFJlY29yZHMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qg
Y2FjaGVJZGVudGlmaWVyKTsKKyAgICBSZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlm
aWVyLCBXZWJDb3JlOjpVUkwgdXJsKTsKICAgICBEZWxldGVNYXRjaGluZ1JlY29yZHMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qg
Y2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0
IFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zIG9wdGlvbnMpOwogICAgIFB1dFJlY29yZHMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0
X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZD4gcmVj
b3JkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNo
ZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCAxZjE4MjA4Nzk1ZTZiNWU5NjFm
NjMwOWZkMzM1Y2Y1ZDRkZTc4NTM1Li41MDZkNjI1YTZiZGNkYzM2M2UzOTM2MWFmMzY0NWMxYWNk
NWE3ZDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Nh
Y2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC03MSw5ICs3MSw5IEBAIHZvaWQg
V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZUNhY2hlcyh1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgY29uCiAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkNhY2hl
U3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OkNhY2hlcyhtX3Nlc3Npb25JRCwgcmVxdWVzdElkZW50
aWZpZXIsIG9yaWdpbiwgdXBkYXRlQ291bnRlciksIDApOwogfQogCi12b2lkIFdlYkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpCit2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OmRvUmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQogewotICAgIGNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpS
ZWNvcmRzKG1fc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyKSwg
MCk7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkNhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb246OlJldHJpZXZlUmVjb3JkcyhtX3Nlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXIs
IGNhY2hlSWRlbnRpZmllciwgdXJsKSwgMCk7CiB9CiAKIHZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6ZG9CYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbi5oCmluZGV4IDQ1OThhNjJmYzBkYWYzY2JhZDAwNDc2NjgwMGY5NWY1MzMyNmRi
ZjcuLjQ5YjEzNDY0ZGE2ZjU1M2I1NGQ1OWM5NTdkNzcxZmU1Nzg2YmZmNTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZG9SZW1vdmUo
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikgZmlu
YWw7CiAgICAgdm9pZCBkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRlcikgZmluYWw7CiAK
LSAgICB2b2lkIGRvUmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpIGZpbmFsOworICAgIHZvaWQgZG9SZXRyaWV2ZVJlY29y
ZHModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6VVJMJikgZmluYWw7CiAgICAgdm9pZCBkb0JhdGNoRGVsZXRlT3BlcmF0
aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRp
b25zJiYpIGZpbmFsOwogICAgIHZvaWQgZG9CYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6
RE9NQ2FjaGU6OlJlY29yZD4mJikgZmluYWw7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319605</attachid>
            <date>2017-09-01 09:49:45 -0700</date>
            <delta_ts>2017-09-01 10:18:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176202-20170901094944.patch</filename>
            <type>text/plain</type>
            <size>30922</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDAzZjFmZGIwYmUyMGRl
OTZkNjA3YWRiMDg5MjM0OTAwNGU0NzA1My4uZGI4NTEzYWQ0NTQyYjNkOWMxZGE0MDY4NGMzOWVl
NmYxZGQ0MmI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3LTA4LTMxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyByZXRyaWV2aW5n
IENhY2hlIFN0b3JhZ2UgcmVjb3JkcyBmb3IgYSBnaXZlbiBVUkwgb25seQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MjAyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gb2JzZXJ2YWJsZSBjaGFuZ2Ug
b2YgYmVoYXZpb3IuCisKKyAgICAgICAgQWRkaW5nIGEgVVJMIHBhcmFtZXRlciB0byBDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uOjpyZXRyaWV2ZVJlY29yZHMuCisgICAgICAgIElmIGdpdmVuIFVSTCBp
cyBudWxsLCBhbGwgcmVjb3JkcyB3aWxsIGJlIHJldHJpZXZlZCwgd2hpY2ggaXMgdXNlZnVsIGZv
ciB0aGUga2V5cyBtZXRob2QuCisgICAgICAgIE90aGVyIG9wZXJhdGlvbnMgb25seSBuZWVkIHJl
Y29yZHMgdGhhdCBzaGFyZSB0aGUgc2FtZSBVUkwgKG1vZHVsbyBxdWVyeSBzdHJpbmcgYW5kIGZy
YWcgaWQpLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNoZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZTo6bWF0Y2hBbGwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OmtleXMp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OnJldHJpZXZlUmVjb3Jkcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZTo6cXVlcnlDYWNoZSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNo
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZXRyaWV2ZVJlY29y
ZHMpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZVJlY29y
ZHMpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpk
b1JldHJpZXZlUmVjb3Jkcyk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vVVJMLmg6CisKIDIwMTctMDkt
MDEgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5d
IENvbXBpbGUgZXJyb3IsICdDYWNoZScgaXMgbm90IGRlY2xhcmVkLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlNWM1
NmZlYTBiM2IzMzIzMTE4ZGM5MDhlOTYzNDE0Nzk0MGY5NDg5Li41ZDM1NjFhZDdkODVkM2YwZjQ1
OWE4ZDFiNGEwMDQwYmE1ZTgzYjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE3LTA4
LTMxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBy
ZXRyaWV2aW5nIENhY2hlIFN0b3JhZ2UgcmVjb3JkcyBmb3IgYSBnaXZlbiBVUkwgb25seQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MjAyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIENhY2hl
U3RvcmFnZUVuZ2luZUNhY2hlIHRvIHN0b3JlIHJlY29yZHMgYXMgYSBtYXAgVVJMIC0+IFZlY3Rv
ciBvZiBSZWNvcmRzLgorICAgICAgICBUaGlzIGFsbG93cyByZWd1bGFyIHJlY29yZCByZXRyaWV2
YWwgdG8gYmUgZmFzdGVyLgorICAgICAgICBSZXRyaWV2YWwgb2YgYWxsIHJlY29yZHMgaXMgbGVz
cyBlZmZpY2llbnQgYnV0IHRoaXMgc2hvdWxkIGhhcHBlbiBsZXNzIG9mdGVuLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJldHJpZXZlUmVjb3Jkcyk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OnF1ZXJ5Q2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpD
YWNoZVN0b3JhZ2U6OkNhY2hlOjpyZXRyaWV2ZVJlY29yZHMgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpDYWNoZVN0b3JhZ2U6OmNvbXB1dGVLZXlVUkwpOgorICAgICAgICAoV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U6OkNhY2hlOjphZGROZXdVUkxSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U6OkNhY2hlOjpyZWNvcmRzRnJvbVVSTCk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hl
U3RvcmFnZTo6Q2FjaGU6OnJlY29yZHNGcm9tVVJMIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
Q2FjaGVTdG9yYWdlOjpDYWNoZTo6cHV0KToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
OjpDYWNoZTo6cmVtb3ZlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2VFbmdpbmVDb25uZWN0aW9uOjpyZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0
cmlldmVSZWNvcmRzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24uaDoKKwogMjAxNy0wOS0wMSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gQ29tcGlsZSBlcnJvciwgJ0NhY2hlJyBpcyBub3Qg
ZGVjbGFyZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGUuY3BwCmluZGV4IGE2MGM2
YmU5NjA4Y2Q4ODFlZjMyNWJjYmNlYmJjZTczM2ZmZjk5YTYuLjNhODdkMGVhMzU0MzMyNGRkOWYw
MzJmMDQ5MTJkOGE2ZDAwYTRmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGUu
Y3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBDYWNoZTo6bWF0Y2hBbGwoc3RkOjpvcHRpb25h
bDxSZXF1ZXN0SW5mbz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGkKICAgICB9CiAK
ICAgICBpZiAoIXJlcXVlc3QpIHsKLSAgICAgICAgcmV0cmlldmVSZWNvcmRzKFt0aGlzLCBwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcmV0cmlldmVSZWNv
cmRzKFVSTCB7IH0sIFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgICAgIFZlY3RvcjxSZWY8RmV0Y2hSZXNwb25zZT4+IHJlc3BvbnNlczsKICAg
ICAgICAgICAgIHJlc3BvbnNlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fcmVjb3Jkcy5zaXpl
KCkpOwogICAgICAgICAgICAgZm9yIChhdXRvJiByZWNvcmQgOiBtX3JlY29yZHMpCkBAIC0zNjEs
NyArMzYxLDcgQEAgdm9pZCBDYWNoZTo6a2V5cyhzdGQ6Om9wdGlvbmFsPFJlcXVlc3RJbmZvPiYm
IGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywKICAgICB9CiAKICAgICBpZiAoIXJl
cXVlc3QpIHsKLSAgICAgICAgcmV0cmlldmVSZWNvcmRzKFt0aGlzLCBwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcmV0cmlldmVSZWNvcmRzKFVSTCB7IH0s
IFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIFZlY3RvcjxSZWY8RmV0Y2hSZXF1ZXN0Pj4gcmVxdWVzdHM7CiAgICAgICAgICAgICByZXF1
ZXN0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fcmVjb3Jkcy5zaXplKCkpOwogICAgICAgICAg
ICAgZm9yIChhdXRvJiByZWNvcmQgOiBtX3JlY29yZHMpCkBAIC0zODAsMTAgKzM4MCwxMyBAQCB2
b2lkIENhY2hlOjprZXlzKHN0ZDo6b3B0aW9uYWw8UmVxdWVzdEluZm8+JiYgaW5mbywgQ2FjaGVR
dWVyeU9wdGlvbnMmJiBvcHRpb25zLAogICAgIH0pOwogfQogCi12b2lkIENhY2hlOjpyZXRyaWV2
ZVJlY29yZHMoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCit2b2lkIENhY2hlOjpy
ZXRyaWV2ZVJlY29yZHMoY29uc3QgVVJMJiB1cmwsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNh
bGxiYWNrKQogewogICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKLSAgICBtX2Nvbm5lY3Rp
b24tPnJldHJpZXZlUmVjb3JkcyhtX2lkZW50aWZpZXIsIFt0aGlzLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXShSZWNvcmRzT3JFcnJvciYmIHJlc3VsdCkgeworCisgICAgVVJMIHJldHJp
ZXZlVVJMID0gdXJsOworICAgIHJldHJpZXZlVVJMLnNldFF1ZXJ5KHsgfSk7CisgICAgbV9jb25u
ZWN0aW9uLT5yZXRyaWV2ZVJlY29yZHMobV9pZGVudGlmaWVyLCByZXRyaWV2ZVVSTCwgW3RoaXMs
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFJlY29yZHNPckVycm9yJiYgcmVzdWx0KSB7
CiAgICAgICAgIGlmICghbV9pc1N0b3BwZWQpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgcHJvYmFibHkgcHJvcGFnYXRlIHRoYXQgZXJyb3IgdXAgdG8gdGhlIHByb21pc2UgYmFz
ZWQgb3BlcmF0aW9uLgogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5oYXNWYWx1ZSgpKTsKQEAg
LTM5Nyw3ICs0MDAsOCBAQCB2b2lkIENhY2hlOjpyZXRyaWV2ZVJlY29yZHMoV1RGOjpGdW5jdGlv
bjx2b2lkKCk+JiYgY2FsbGJhY2spCiAKIHZvaWQgQ2FjaGU6OnF1ZXJ5Q2FjaGUoUmVmPEZldGNo
UmVxdWVzdD4mJiByZXF1ZXN0LCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIFdURjo6RnVu
Y3Rpb248dm9pZChjb25zdCBWZWN0b3I8Q2FjaGVTdG9yYWdlUmVjb3JkPiYpPiYmIGNhbGxiYWNr
KQogewotICAgIHJldHJpZXZlUmVjb3JkcyhbdGhpcywgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVz
dCksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXSgpIG11dGFibGUgeworICAgIGF1dG8gdXJsID0gcmVxdWVzdC0+dXJsKCk7CisgICAgcmV0
cmlldmVSZWNvcmRzKHVybCwgW3RoaXMsIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRp
b25zID0gV1RGTW92ZShvcHRpb25zKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBt
dXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2socXVlcnlDYWNoZVdpdGhUYXJnZXRTdG9yYWdlKHJl
cXVlc3QuZ2V0KCksIG9wdGlvbnMsIG1fcmVjb3JkcykpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9DYWNoZS5oCmluZGV4IDU5NjIyNWM4NzVjZGJkODk1YjIwMDFlOWYyMzJk
ZDYxNDhhOGYwMzAuLjlkMGNjMGEzYjFiYzlmZGZmNjkxMjY5NDI1ZDZkMThmMGI0ZjVjMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlLmgKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0
ZToKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAg
ICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QgZmluYWw7CiAK
LSAgICB2b2lkIHJldHJpZXZlUmVjb3JkcyhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAg
dm9pZCByZXRyaWV2ZVJlY29yZHMoY29uc3QgVVJMJiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYp
OwogICAgIFZlY3RvcjxDYWNoZVN0b3JhZ2VSZWNvcmQ+IHF1ZXJ5Q2FjaGVXaXRoVGFyZ2V0U3Rv
cmFnZShjb25zdCBGZXRjaFJlcXVlc3QmLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYsIGNvbnN0
IFZlY3RvcjxDYWNoZVN0b3JhZ2VSZWNvcmQ+Jik7CiAgICAgdm9pZCBxdWVyeUNhY2hlKFJlZjxG
ZXRjaFJlcXVlc3Q+JiYsIENhY2hlUXVlcnlPcHRpb25zJiYsIFdURjo6RnVuY3Rpb248dm9pZChj
b25zdCBWZWN0b3I8Q2FjaGVTdG9yYWdlUmVjb3JkPiYpPiYmKTsKICAgICB2b2lkIGJhdGNoRGVs
ZXRlT3BlcmF0aW9uKGNvbnN0IEZldGNoUmVxdWVzdCYsIENhY2hlUXVlcnlPcHRpb25zJiYsIFdU
Rjo6RnVuY3Rpb248dm9pZChFeGNlcHRpb25Pcjxib29sPiYmKT4mJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApp
bmRleCA3M2U2MmY0MjYxNmIxNWQwNTY3ZTA5N2ZmMWUzZmVlMTU3YzNjOTZjLi5jOGQ5ZDIyNWY0
NjE5MjFhYjA3YTc5MDYwMTk2MTkxZjkxMTI1NzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTU1LDEy
ICs1NSwxMiBAQCB2b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJldHJpZXZlQ2FjaGVzKGNv
bnN0IFN0cmluZyYgb3JpZ2luLCB1aW50NjRfdCB1cGRhdAogICAgIGRvUmV0cmlldmVDYWNoZXMo
cmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbiwgdXBkYXRlQ291bnRlcik7CiB9CiAKLXZvaWQgQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgUmVjb3Jkc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OnJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFVS
TCYgdXJsLCBSZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICB1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciA9ICsrbV9sYXN0UmVxdWVzdElkZW50aWZpZXI7CiAgICAgbV9yZXRyaWV2
ZVJlY29yZHNQZW5kaW5nUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CiAKLSAgICBkb1JldHJpZXZlUmVjb3JkcyhyZXF1ZXN0SWRlbnRpZmllciwgY2Fj
aGVJZGVudGlmaWVyKTsKKyAgICBkb1JldHJpZXZlUmVjb3JkcyhyZXF1ZXN0SWRlbnRpZmllciwg
Y2FjaGVJZGVudGlmaWVyLCB1cmwpOwogfQogCiB2b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246
OmJhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIFJlY29y
ZElkZW50aWZpZXJzQ2FsbGJhY2smJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKaW5kZXggODcxN2I5MDc1
YzVhYTA4YWQ0YTA5NTZiOGM0ODNmNjhiODM2MzQ1ZS4uZjA0NTFhMzcwMWNkZTc0OTRjNGVkNmE2
ZDQzNjgwNzlmZTQ3NTQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVtb3ZlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgRE9NQ2FjaGVFbmdpbmU6
OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYpOwogICAgIHZvaWQgcmV0cmlldmVDYWNoZXMoY29u
c3QgU3RyaW5nJiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIsIERPTUNhY2hlRW5naW5l
OjpDYWNoZUluZm9zQ2FsbGJhY2smJik7CiAKLSAgICB2b2lkIHJldHJpZXZlUmVjb3Jkcyh1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIsIERPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJik7
CisgICAgdm9pZCByZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25z
dCBVUkwmLCBET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxiYWNrJiYpOwogICAgIHZvaWQgYmF0
Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRl
bnRpZmllcnNDYWxsYmFjayYmKTsKICAgICB2b2lkIGJhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+JiYsIERPTUNh
Y2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwogCkBAIC02NCw3ICs2NCw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRvUmVtb3ZlKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCB1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8pIHsgcmVtb3ZlQ29tcGxl
dGVkKHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5leHBlY3RlZChET01DYWNoZUVuZ2luZTo6RXJy
b3I6Ok5vdEltcGxlbWVudGVkKSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZG9SZXRyaWV2ZUNhY2hl
cyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiAvKiBvcmlnaW4gKi8s
IHVpbnQ2NF90IC8qIHVwZGF0ZUNvdW50ZXIgKi8pIHsgdXBkYXRlQ2FjaGVzKHJlcXVlc3RJZGVu
dGlmaWVyLCB7IH0pOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZG9SZXRyaWV2ZVJlY29yZHModWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLykg
eyB1cGRhdGVSZWNvcmRzKHJlcXVlc3RJZGVudGlmaWVyLCB7IH0pOyB9CisgICAgdmlydHVhbCB2
b2lkIGRvUmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRf
dCAvKiBjYWNoZUlkZW50aWZpZXIgKi8sIGNvbnN0IFVSTCYgLyogdXJsICovKSB7IHVwZGF0ZVJl
Y29yZHMocmVxdWVzdElkZW50aWZpZXIsIHsgfSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZG9CYXRj
aERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgLyog
Y2FjaGVJZGVudGlmaWVyICovLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDYWNoZVF1ZXJ5T3B0
aW9ucyYmKSB7IGRlbGV0ZVJlY29yZHNDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIG1ha2VV
bmV4cGVjdGVkKERPTUNhY2hlRW5naW5lOjpFcnJvcjo6Tm90SW1wbGVtZW50ZWQpKTsgfQogICAg
IHZpcnR1YWwgdm9pZCBkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWVyLCB1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8sIFZlY3RvcjxET01DYWNoZUVuZ2lu
ZTo6UmVjb3JkPiYmKSB7IHB1dFJlY29yZHNDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIG1h
a2VVbmV4cGVjdGVkKERPTUNhY2hlRW5naW5lOjpFcnJvcjo6Tm90SW1wbGVtZW50ZWQpKTsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCBlZDA0OTA5ZmU1OGRmYjdmYjFlNGVjMTkz
ZjcwMTRiMDA3MDkyNzBkLi5lODE1ZDM2ZmIzMTdlMjYyODM5YWU3ODEyOTg2YTQ4NzhjZTdhOGI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29y
a2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTE5NiwxMyArMTk2LDEzIEBAIHN0YXRp
YyBpbmxpbmUgUmVjb3Jkc09yRXJyb3IgcmVjb3Jkc09yRXJyb3JGcm9tUmVjb3Jkc0RhdGEoRXhw
ZWN0ZWQ8VmVjdG9yPENyb3NzCiAgICAgcmV0dXJuIHJlY29yZHNGcm9tUmVjb3Jkc0RhdGEoV1RG
TW92ZShyZWNvcmRzRGF0YS52YWx1ZSgpKSk7CiB9CiAKLXZvaWQgV29ya2VyQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbjo6ZG9SZXRyaWV2ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikKK3ZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjo6ZG9SZXRyaWV2ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgbV9wcm94eS5wb3N0
VGFza1RvTG9hZGVyKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVl
c3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXJdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBt
dXRhYmxlIHsKKyAgICBtX3Byb3h5LnBvc3RUYXNrVG9Mb2FkZXIoW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwg
dXJsID0gdXJsLmlzb2xhdGVkQ29weSgpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJs
ZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIEFTU0VSVChtX21h
aW5UaHJlYWRDb25uZWN0aW9uKTsKIAotICAgICAgICBtX21haW5UaHJlYWRDb25uZWN0aW9uLT5y
ZXRyaWV2ZVJlY29yZHMoY2FjaGVJZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdU
Rk1vdmUocHJvdGVjdGVkVGhpcyksIHJlcXVlc3RJZGVudGlmaWVyXShSZWNvcmRzT3JFcnJvciYm
IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIG1fbWFpblRocmVhZENvbm5lY3Rpb24tPnJldHJp
ZXZlUmVjb3JkcyhjYWNoZUlkZW50aWZpZXIsIHVybCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBX
VEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmllcl0oUmVjb3Jkc09yRXJyb3Im
JiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgbV9wcm94eS5wb3N0VGFza0Zvck1vZGVU
b1dvcmtlckdsb2JhbFNjb3BlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0
ZWRUaGlzKSwgcmVzdWx0ID0gcmVjb3Jkc0RhdGFPckVycm9yRnJvbVJlY29yZHMocmVzdWx0KSwg
cmVxdWVzdElkZW50aWZpZXJdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFi
bGUgewogICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dv
cmtlckdsb2JhbFNjb3BlKCkpOwogICAgICAgICAgICAgICAgIHVwZGF0ZVJlY29yZHMocmVxdWVz
dElkZW50aWZpZXIsIHJlY29yZHNPckVycm9yRnJvbVJlY29yZHNEYXRhKFdURk1vdmUocmVzdWx0
KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtl
ckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaAppbmRleCA4YzViNDEwMzQ4ZDgzYTljZDM0N2FiNjE4
YjJlZTMxYzRmZDIwNTEzLi5lMzRmYTdiZjc3ZTY1ZGZjZTJhYjFhNTY1MzgzMWViMWQ4MDNhNGYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtl
ckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaApAQCAtNDYsNyArNDYsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZG9SZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hl
SWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291
bnRlcikgZmluYWw7CiAKLSAgICB2b2lkIGRvUmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpIGZpbmFsOworICAgIHZvaWQg
ZG9SZXRyaWV2ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNh
Y2hlSWRlbnRpZmllciwgY29uc3QgVVJMJikgZmluYWw7CiAgICAgdm9pZCBkb0JhdGNoRGVsZXRl
T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkNhY2hlUXVl
cnlPcHRpb25zJiYpIGZpbmFsOwogICAgIHZvaWQgZG9CYXRjaFB1dE9wZXJhdGlvbih1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8RE9N
Q2FjaGVFbmdpbmU6OlJlY29yZD4mJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1VSTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmgKaW5kZXgg
OTdkYzg4MmMxZmIwOTc4YzdlMjUyMTEzOTFmODlmY2YyMzdiNzIwYi4uOGJlMGIxNmM2ZTNlYzky
MDM0ZTY3NDY1ZTNlYzg4MjljZmRlN2NhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVVJMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmgKQEAgLTE2MSwx
MCArMTYxLDEwIEBAIHB1YmxpYzoKICAgICAvLyBUaGUgcXVlcnkgbWF5IGJlZ2luIHdpdGggYSBx
dWVzdGlvbiBtYXJrLCBvciwgaWYgbm90LCBvbmUgd2lsbCBiZSBhZGRlZAogICAgIC8vIGZvciB5
b3UuIFNldHRpbmcgdGhlIHF1ZXJ5IHRvIHRoZSBlbXB0eSBzdHJpbmcgd2lsbCBsZWF2ZSBhICI/
IiBpbiB0aGUKICAgICAvLyBVUkwgKHdpdGggbm90aGluZyBhZnRlciBpdCkuIFRvIGNsZWFyIHRo
ZSBxdWVyeSwgcGFzcyBhIG51bGwgc3RyaW5nLgotICAgIHZvaWQgc2V0UXVlcnkoY29uc3QgU3Ry
aW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRRdWVyeShjb25zdCBTdHJpbmcmKTsK
IAogICAgIHZvaWQgc2V0RnJhZ21lbnRJZGVudGlmaWVyKFN0cmluZ1ZpZXcpOwotICAgIHZvaWQg
cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1v
dmVGcmFnbWVudElkZW50aWZpZXIoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGZyaWVuZCBib29s
IGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCBjYmJjYWZiZTk4MWU4ZmNhNmQxZDYxOWZkZDBlM2M5
MWI4YWVmYTQwLi5jNDY4YTkwYTJmODk2YTEwNTkxNGI4Y2MxZjkwMTk3ZTNkNzkxNGZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmUuY3BwCkBAIC0xMzksMTUgKzEzOSwxNSBAQCB2b2lkIEVuZ2luZTo6cmV0cmll
dmVDYWNoZXMoY29uc3QgU3RyaW5nJiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIsIENh
Y2hlSQogICAgIH0pOwogfQogCi12b2lkIEVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllciwgUmVjb3Jkc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIEVuZ2lu
ZTo6cmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6VVJM
JiYgdXJsLCBSZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICByZWFkQ2FjaGUoY2Fj
aGVJZGVudGlmaWVyLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oQ2FjaGVPckVycm9y
JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICByZWFkQ2FjaGUoY2FjaGVJZGVudGlmaWVyLCBbdXJs
ID0gV1RGTW92ZSh1cmwpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShDYWNoZU9yRXJy
b3ImJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKSB7
CiAgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChyZXN1bHQuZXJyb3IoKSkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY2FsbGJhY2socmVzdWx0
LnZhbHVlKCkuZ2V0KCkucmVjb3JkcygpKTsKKyAgICAgICAgY2FsbGJhY2socmVzdWx0LnZhbHVl
KCkuZ2V0KCkucmV0cmlldmVSZWNvcmRzKHVybCkpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUu
aAppbmRleCAyMmU5MmY3YTU1YTI2YjBhMGFkNTRkZGYxMWE5YzRiZTljOTljNjA2Li4yYWY4ODE1
OTFjNDYwZWQ5NWFlYzZkMzJkNTAzOGI3YTM3MTVhMDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTU3
LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlKHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYp
OwogICAgIHZvaWQgcmV0cmlldmVDYWNoZXMoY29uc3QgU3RyaW5nJiBvcmlnaW4sIHVpbnQ2NF90
IHVwZGF0ZUNvdW50ZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm9zQ2FsbGJh
Y2smJik7CiAKLSAgICB2b2lkIHJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJik7CisgICAgdm9p
ZCByZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpVUkwm
JiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNDYWxsYmFjayYmKTsKICAgICB2b2lk
IHB1dFJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9N
Q2FjaGVFbmdpbmU6OlJlY29yZD4mJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElk
ZW50aWZpZXJzQ2FsbGJhY2smJik7CiAgICAgdm9pZCBkZWxldGVNYXRjaGluZ1JlY29yZHModWlu
dDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29y
ZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElk
ZW50aWZpZXJzQ2FsbGJhY2smJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKaW5kZXgg
N2IwNjc3ZjU4MjYyYWVmZjM1NDQ4NWQ1YmE0MTg1NmE4ZWZkN2Q4OS4uOGYxYWM0OGFjNmQ2NDdl
ODliZDU4MWM1Y2YxN2M4ZWMxNjA3MTczYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAK
QEAgLTQ5LDE5ICs0OSw4NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIENhY2hl
U3RvcmFnZSB7CiAKK3N0YXRpYyBpbmxpbmUgVmVjdG9yPHVpbnQ2NF90PiBxdWVyeUNhY2hlKGNv
bnN0IFZlY3RvcjxSZWNvcmQ+KiByZWNvcmRzLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJiBvcHRpb25zKQoreworICAgIGlmICghcmVjb3Jk
cykKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmICghb3B0aW9ucy5pZ25vcmVNZXRob2Qg
JiYgcmVxdWVzdC5odHRwTWV0aG9kKCkgIT0gIkdFVCIpCisgICAgICAgIHJldHVybiB7IH07CisK
KyAgICBWZWN0b3I8dWludDY0X3Q+IHJlc3VsdHM7CisgICAgZm9yIChjb25zdCBhdXRvJiByZWNv
cmQgOiAqcmVjb3JkcykgeworICAgICAgICBpZiAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OnF1
ZXJ5Q2FjaGVNYXRjaChyZXF1ZXN0LCByZWNvcmQucmVxdWVzdCwgcmVjb3JkLnJlc3BvbnNlLCBv
cHRpb25zKSkKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlY29yZC5pZGVudGlmaWVyKTsK
KyAgICB9CisgICAgcmV0dXJuIHJlc3VsdHM7Cit9CisKIENhY2hlOjpDYWNoZSh1aW50NjRfdCBp
ZGVudGlmaWVyLCBTdHJpbmcmJiBuYW1lKQogICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIp
CiAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKIHsKIH0KIAotVmVjdG9yPFJlY29yZD4gQ2Fj
aGU6OnJlY29yZHMoKSBjb25zdAorVmVjdG9yPFJlY29yZD4gQ2FjaGU6OnJldHJpZXZlUmVjb3Jk
cyhjb25zdCBVUkwmIHVybCkgY29uc3QKK3sKKyAgICBpZiAodXJsLmlzTnVsbCgpKSB7CisgICAg
ICAgIFZlY3RvcjxSZWNvcmQ+IHJlc3VsdDsKKyAgICAgICAgZm9yIChhdXRvJiByZWNvcmRzIDog
bV9yZWNvcmRzLnZhbHVlcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IHJl
Y29yZHMpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChyZWNvcmQuY29weSgpKTsKKyAg
ICAgICAgfQorICAgICAgICBzdGQ6OnNvcnQocmVzdWx0LmJlZ2luKCksIHJlc3VsdC5lbmQoKSwg
W10oY29uc3QgYXV0byYgYSwgY29uc3QgYXV0byYgYikgeworICAgICAgICAgICAgcmV0dXJuIGEu
aWRlbnRpZmllciA8IGIuaWRlbnRpZmllcjsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQorCisgICAgY29uc3QgYXV0byogcmVjb3JkcyA9IHJlY29yZHNGcm9tVVJM
KHVybCk7CisgICAgaWYgKCFyZWNvcmRzKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgVmVj
dG9yPFJlY29yZD4gcmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJl
Y29yZHMtPnNpemUoKSk7CisgICAgZm9yIChhdXRvJiByZWNvcmQgOiAqcmVjb3JkcykKKyAgICAg
ICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChyZWNvcmQuY29weSgpKTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCitzdGF0aWMgaW5saW5lIFN0cmluZyBjb21wdXRlS2V5VVJMKGNvbnN0IFVSTCYg
dXJsKQoreworICAgIFVSTCBrZXlVUkwgPSB1cmw7CisgICAgaWYgKGtleVVSTC5oYXNRdWVyeSgp
KQorICAgICAgICBrZXlVUkwuc2V0UXVlcnkoeyB9KTsKKyAgICBrZXlVUkwucmVtb3ZlRnJhZ21l
bnRJZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIGtleVVSTDsKK30KKworUmVjb3JkJiBDYWNoZTo6
YWRkTmV3VVJMUmVjb3JkKFJlY29yZCYmIHJlY29yZCkKK3sKKyAgICBhdXRvIGtleSA9IGNvbXB1
dGVLZXlVUkwocmVjb3JkLnJlcXVlc3QudXJsKCkpOworICAgIEFTU0VSVCghbV9yZWNvcmRzLmNv
bnRhaW5zKGtleSkpOworCisgICAgVmVjdG9yPFJlY29yZD4gbmV3UmVjb3JkczsKKyAgICBuZXdS
ZWNvcmRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMSk7CisgICAgbmV3UmVjb3Jkcy51bmNoZWNr
ZWRBcHBlbmQoV1RGTW92ZShyZWNvcmQpKTsKKyAgICByZXR1cm4gbV9yZWNvcmRzLnNldChrZXks
IFdURk1vdmUobmV3UmVjb3JkcykpLml0ZXJhdG9yLT52YWx1ZS5sYXN0KCk7Cit9CisKK1ZlY3Rv
cjxSZWNvcmQ+KiBDYWNoZTo6cmVjb3Jkc0Zyb21VUkwoY29uc3QgVVJMJiB1cmwpCit7CisgICAg
YXV0byBpdGVyYXRvciA9IG1fcmVjb3Jkcy5maW5kKGNvbXB1dGVLZXlVUkwodXJsKSk7CisgICAg
aWYgKGl0ZXJhdG9yID09IG1fcmVjb3Jkcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmV0dXJuICZpdGVyYXRvci0+dmFsdWU7Cit9CisKK2NvbnN0IFZlY3RvcjxSZWNvcmQ+
KiBDYWNoZTo6cmVjb3Jkc0Zyb21VUkwoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7Ci0gICAgVmVj
dG9yPFJlY29yZD4gcmVjb3JkczsKLSAgICByZWNvcmRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
bV9yZWNvcmRzLnNpemUoKSk7Ci0gICAgZm9yIChhdXRvJiByZWNvcmQgOiBtX3JlY29yZHMpCi0g
ICAgICAgIHJlY29yZHMudW5jaGVja2VkQXBwZW5kKHJlY29yZC5jb3B5KCkpOwotICAgIHJldHVy
biByZWNvcmRzOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX3JlY29yZHMuZmluZChjb21wdXRlS2V5
VVJMKHVybCkpOworICAgIGlmIChpdGVyYXRvciA9PSBtX3JlY29yZHMuZW5kKCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmaXRlcmF0b3ItPnZhbHVlOwogfQogCiB2b2lk
IENhY2hlOjpwdXQoVmVjdG9yPFJlY29yZD4mJiByZWNvcmRzLCBSZWNvcmRJZGVudGlmaWVyc0Nh
bGxiYWNrJiYgY2FsbGJhY2spCkBAIC03MSwyMCArMTM5LDI3IEBAIHZvaWQgQ2FjaGU6OnB1dChW
ZWN0b3I8UmVjb3JkPiYmIHJlY29yZHMsIFJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJiBjYWxs
YmFjaykKICAgICBWZWN0b3I8dWludDY0X3Q+IHJlY29yZElkZW50aWZpZXJzOwogICAgIHJlY29y
ZElkZW50aWZpZXJzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVjb3Jkcy5zaXplKCkpOwogICAg
IGZvciAoYXV0byYgcmVjb3JkIDogcmVjb3JkcykgewotICAgICAgICBhdXRvIG1hdGNoaW5nUmVj
b3JkcyA9IHF1ZXJ5Q2FjaGUocmVjb3JkLnJlcXVlc3QsIG9wdGlvbnMpOworICAgICAgICBhdXRv
KiBzYW1lVVJMUmVjb3JkcyA9IHJlY29yZHNGcm9tVVJMKHJlY29yZC5yZXF1ZXN0LnVybCgpKTsK
KworICAgICAgICBhdXRvIG1hdGNoaW5nUmVjb3JkcyA9IHF1ZXJ5Q2FjaGUoc2FtZVVSTFJlY29y
ZHMsIHJlY29yZC5yZXF1ZXN0LCBvcHRpb25zKTsKICAgICAgICAgaWYgKG1hdGNoaW5nUmVjb3Jk
cy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIHJlY29yZC5pZGVudGlmaWVyID0gKyttX25leHRS
ZWNvcmRJZGVudGlmaWVyOwogICAgICAgICAgICAgcmVjb3JkSWRlbnRpZmllcnMudW5jaGVja2Vk
QXBwZW5kKHJlY29yZC5pZGVudGlmaWVyKTsKLSAgICAgICAgICAgIG1fcmVjb3Jkcy5hcHBlbmQo
V1RGTW92ZShyZWNvcmQpKTsKIAogICAgICAgICAgICAgc2hvdWxkV3JpdGVSZWNvcmRMaXN0ID0g
dHJ1ZTsKLSAgICAgICAgICAgIHdyaXRlUmVjb3JkVG9EaXNrKG1fcmVjb3Jkcy5sYXN0KCkpOwor
ICAgICAgICAgICAgaWYgKCFzYW1lVVJMUmVjb3JkcykgeworICAgICAgICAgICAgICAgIGF1dG8m
IHJlY29yZFRvV3JpdGUgPSBhZGROZXdVUkxSZWNvcmQoV1RGTW92ZShyZWNvcmQpKTsKKyAgICAg
ICAgICAgICAgICB3cml0ZVJlY29yZFRvRGlzayhyZWNvcmRUb1dyaXRlKTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2FtZVVSTFJlY29yZHMtPmFwcGVuZChXVEZNb3Zl
KHJlY29yZCkpOworICAgICAgICAgICAgICAgIHdyaXRlUmVjb3JkVG9EaXNrKHNhbWVVUkxSZWNv
cmRzLT5sYXN0KCkpOworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgYXV0byBpZGVudGlmaWVyID0gbWF0Y2hpbmdSZWNvcmRzWzBdOwotICAgICAgICAgICAgYXV0
byBwb3NpdGlvbiA9IG1fcmVjb3Jkcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIGl0ZW0p
IHsgcmV0dXJuIGl0ZW0uaWRlbnRpZmllciA9PSBpZGVudGlmaWVyOyB9KTsKKyAgICAgICAgICAg
IGF1dG8gcG9zaXRpb24gPSBzYW1lVVJMUmVjb3Jkcy0+ZmluZE1hdGNoaW5nKFsmXShjb25zdCBh
dXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLmlkZW50aWZpZXIgPT0gaWRlbnRpZmllcjsgfSk7CiAg
ICAgICAgICAgICBBU1NFUlQocG9zaXRpb24gIT0gbm90Rm91bmQpOwogICAgICAgICAgICAgaWYg
KHBvc2l0aW9uICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgZXhpc3RpbmdS
ZWNvcmQgPSBtX3JlY29yZHNbcG9zaXRpb25dOworICAgICAgICAgICAgICAgIGF1dG8mIGV4aXN0
aW5nUmVjb3JkID0gKCpzYW1lVVJMUmVjb3JkcylbcG9zaXRpb25dOwogICAgICAgICAgICAgICAg
IHJlY29yZElkZW50aWZpZXJzLnVuY2hlY2tlZEFwcGVuZChpZGVudGlmaWVyKTsKICAgICAgICAg
ICAgICAgICBleGlzdGluZ1JlY29yZC5yZXNwb25zZUhlYWRlcnNHdWFyZCA9IHJlY29yZC5yZXNw
b25zZUhlYWRlcnNHdWFyZDsKICAgICAgICAgICAgICAgICBleGlzdGluZ1JlY29yZC5yZXNwb25z
ZSA9IFdURk1vdmUocmVjb3JkLnJlc3BvbnNlKTsKQEAgLTExMSwyMCArMTg2LDE5IEBAIHZvaWQg
Q2FjaGU6OnB1dChWZWN0b3I8UmVjb3JkPiYmIHJlY29yZHMsIFJlY29yZElkZW50aWZpZXJzQ2Fs
bGJhY2smJiBjYWxsYmFjaykKIAogdm9pZCBDYWNoZTo6cmVtb3ZlKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywg
UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIGF1dG8gcmVjb3Jk
SWRlbnRpZmllcnMgPSBxdWVyeUNhY2hlKHJlcXVlc3QsIG9wdGlvbnMpOworICAgIGF1dG8qIHJl
Y29yZHMgPSByZWNvcmRzRnJvbVVSTChyZXF1ZXN0LnVybCgpKTsKKyAgICBhdXRvIHJlY29yZElk
ZW50aWZpZXJzID0gcXVlcnlDYWNoZShyZWNvcmRzLCByZXF1ZXN0LCBvcHRpb25zKTsKICAgICBp
ZiAocmVjb3JkSWRlbnRpZmllcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNhbGxiYWNrKHsgfSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8UmVjb3JkPiByZWNvcmRzVG9L
ZWVwOwotICAgIGZvciAoYXV0byYgcmVjb3JkIDogbV9yZWNvcmRzKSB7Ci0gICAgICAgIGlmIChy
ZWNvcmRJZGVudGlmaWVycy5maW5kTWF0Y2hpbmcoWyZdKGF1dG8gaXRlbSkgeyByZXR1cm4gaXRl
bSA9PSByZWNvcmQuaWRlbnRpZmllcjsgfSkgPT0gbm90Rm91bmQpCi0gICAgICAgICAgICByZWNv
cmRzVG9LZWVwLmFwcGVuZChXVEZNb3ZlKHJlY29yZCkpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICByZW1vdmVSZWNvcmRGcm9tRGlzayhyZWNvcmQpOwotICAgIH0KLSAgICBtX3JlY29yZHMg
PSBXVEZNb3ZlKHJlY29yZHNUb0tlZXApOworICAgIHJlY29yZHMtPnJlbW92ZUFsbE1hdGNoaW5n
KFt0aGlzLCAmcmVjb3JkSWRlbnRpZmllcnNdKGF1dG8mIGl0ZW0pIHsKKyAgICAgICAgYm9vbCBz
aG91bGRSZW1vdmUgPSByZWNvcmRJZGVudGlmaWVycy5maW5kTWF0Y2hpbmcoWyZpdGVtXShhdXRv
IGlkZW50aWZpZXIpIHsgcmV0dXJuIGlkZW50aWZpZXIgPT0gaXRlbS5pZGVudGlmaWVyOyB9KSAh
PSBub3RGb3VuZDsKKyAgICAgICAgaWYgKHNob3VsZFJlbW92ZSkKKyAgICAgICAgICAgIHJlbW92
ZVJlY29yZEZyb21EaXNrKGl0ZW0pOworICAgICAgICByZXR1cm4gc2hvdWxkUmVtb3ZlOworICAg
IH0pOwogCiAgICAgd3JpdGVSZWNvcmRzTGlzdChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KSwgcmVjb3JkSWRlbnRpZmllcnMgPSBXVEZNb3ZlKHJlY29yZElkZW50aWZpZXJzKV0oc3RkOjpv
cHRpb25hbDxFcnJvcj4mJiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJvcikgewpA
QCAtMTM1LDE5ICsyMDksNiBAQCB2b2lkIENhY2hlOjpyZW1vdmUoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbgogICAgIH0pOwogfQog
Ci1WZWN0b3I8dWludDY0X3Q+IENhY2hlOjpxdWVyeUNhY2hlKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmIG9wdGlvbnMpCi17Ci0gICAgaWYg
KCFvcHRpb25zLmlnbm9yZU1ldGhvZCAmJiByZXF1ZXN0Lmh0dHBNZXRob2QoKSAhPSAiR0VUIikK
LSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIFZlY3Rvcjx1aW50NjRfdD4gcmVzdWx0czsKLSAg
ICBmb3IgKGNvbnN0IGF1dG8mIHJlY29yZCA6IG1fcmVjb3JkcykgewotICAgICAgICBpZiAoV2Vi
Q29yZTo6RE9NQ2FjaGVFbmdpbmU6OnF1ZXJ5Q2FjaGVNYXRjaChyZXF1ZXN0LCByZWNvcmQucmVx
dWVzdCwgcmVjb3JkLnJlc3BvbnNlLCBvcHRpb25zKSkKLSAgICAgICAgICAgIHJlc3VsdHMuYXBw
ZW5kKHJlY29yZC5pZGVudGlmaWVyKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdHM7Ci19Ci0K
IHZvaWQgQ2FjaGU6OndyaXRlUmVjb3Jkc0xpc3QoQ29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJh
Y2spCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNo
ZS5oCmluZGV4IGRlZjg2ZjUwMjA1Y2M5ZjI3MWE5NzljZTgyYmM3MGQzOGQ0NGQ1MTUuLjE4ZDY5
NzY2NDlmNjU4MGM1MDQyNzNhOTllYjk2ODllMzM3NDlkOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlLmgKQEAgLTQwLDE0ICs0MCwxNiBAQCBwdWJsaWM6CiAgICAgdWludDY0X3QgaWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIGNvbnN0IFN0cmluZyYgbmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogCi0gICAgVmVjdG9yPFdlYkNvcmU6OkRPTUNh
Y2hlRW5naW5lOjpSZWNvcmQ+IHJlY29yZHMoKSBjb25zdDsKKyAgICBWZWN0b3I8V2ViQ29yZTo6
RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gcmV0cmlldmVSZWNvcmRzKGNvbnN0IFdlYkNvcmU6OlVS
TCYpIGNvbnN0OwogICAgIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm8gaW5mbygp
IGNvbnN0IHsgcmV0dXJuIHsgbV9pZGVudGlmaWVyLCBtX25hbWUgfTsgfQogCiAgICAgdm9pZCBw
dXQoVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+JiYsIFdlYkNvcmU6OkRP
TUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwogICAgIHZvaWQgcmVt
b3ZlKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9u
cyYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYm
KTsKIAogcHJpdmF0ZToKLSAgICBWZWN0b3I8dWludDY0X3Q+IHF1ZXJ5Q2FjaGUoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMm
KTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4qIHJlY29yZHNG
cm9tVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6UmVjb3JkPiogcmVjb3Jkc0Zyb21VUkwoY29uc3QgV2ViQ29yZTo6VVJM
JikgY29uc3Q7CisgICAgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZCYgYWRkTmV3VVJM
UmVjb3JkKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQmJik7CiAKICAgICB2b2lkIHdy
aXRlUmVjb3Jkc0xpc3QoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFj
ayYmKTsKICAgICB2b2lkIHdyaXRlUmVjb3JkVG9EaXNrKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5l
OjpSZWNvcmQmKTsKQEAgLTU1LDcgKzU3LDcgQEAgcHJpdmF0ZToKIAogICAgIHVpbnQ2NF90IG1f
aWRlbnRpZmllciB7IDAgfTsKICAgICBTdHJpbmcgbV9uYW1lOwotICAgIFZlY3RvcjxXZWJDb3Jl
OjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiBtX3JlY29yZHM7CisgICAgSGFzaE1hcDxTdHJpbmcs
IFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPj4gbV9yZWNvcmRzOwogICAg
IHVpbnQ2NF90IG1fbmV4dFJlY29yZElkZW50aWZpZXIgeyAwIH07CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcAppbmRleCBiNzNiMTU1NzE1YWZkZDk4ZDJkOTg3Mzli
YjdjMDMzYjIyYzVkNDVlLi5jZWEyZWJjMzUwMmM5NDM0MzBjYzRjNTQyYzFmZWJiYTdkOGFkNjY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKQEAgLTY4LDkgKzY4LDkg
QEAgdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpjbGVhck1lbW9yeVJlcHJlc2Vu
dGF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3MKICAgICBFbmdpbmU6OmZyb20oc2Vzc2lvbklEKS5j
bGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKG9yaWdpbik7CiB9CiAKLXZvaWQgQ2FjaGVTdG9yYWdl
RW5naW5lQ29ubmVjdGlvbjo6cmVjb3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpCit2b2lkIENh
Y2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnJldHJpZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlk
ZW50aWZpZXIsIFdlYkNvcmU6OlVSTCYmIHVybCkKIHsKLSAgICBFbmdpbmU6OmZyb20oc2Vzc2lv
bklEKS5yZXRyaWV2ZVJlY29yZHMoY2FjaGVJZGVudGlmaWVyLCBbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCB0aGlzLCBzZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyXShSZWNvcmRz
T3JFcnJvciYmIHJlc3VsdCkgeworICAgIEVuZ2luZTo6ZnJvbShzZXNzaW9uSUQpLnJldHJpZXZl
UmVjb3JkcyhjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUodXJsKSwgW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgdGhpcywgc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmllcl0oUmVjb3Jk
c09yRXJyb3ImJiByZXN1bHQpIHsKICAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpVcGRhdGVSZWNvcmRzKHJl
cXVlc3RJZGVudGlmaWVyLCByZXN1bHQpLCBzZXNzaW9uSUQuc2Vzc2lvbklEKCkpOwogICAgIH0p
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaAppbmRleCBhMzNlMTQ3ZTc0YmYz
ZmYyNGFkN2NhM2EwYzQwNTVjM2UyYWRmNGI2Li5hZGJmNGFjOThhMzM4YTdjZDQwNDdjMjM5NDVl
M2NlYTU4OGZiNWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaApAQCAtNTYs
NyArNTYsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9u
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIG9yaWdpbik7CiAKLSAgICB2b2lkIHJlY29y
ZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBj
YWNoZUlkZW50aWZpZXIpOworICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklE
LCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBX
ZWJDb3JlOjpVUkwmJik7CiAgICAgdm9pZCBkZWxldGVNYXRjaGluZ1JlY29yZHMoUEFMOjpTZXNz
aW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9u
cyYmKTsKICAgICB2b2lkIHB1dFJlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDA3N2Q5M2JiMmVlNTQxMzFjYjI3OTJiMzQ3
ZjRiYmRjYzgyNTNjNWMuLjRmNjFiNjc4NmZmMjI4ZDNhYjQwOTQwMGUwNGYzMWRjYTk4NGNkNzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
QEAgLTI3LDcgKzI3LDcgQEAgbWVzc2FnZXMgLT4gQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlv
biB7CiAKICAgICBDbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgU3RyaW5nIG9yaWdpbik7CiAKLSAgICBSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmll
cik7CisgICAgUmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0
X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6
VVJMIHVybCk7CiAgICAgRGVsZXRlTWF0Y2hpbmdSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpDYWNo
ZVF1ZXJ5T3B0aW9ucyBvcHRpb25zKTsKICAgICBQdXRSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IHJlY29yZCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggNDYxMjEwZGZlNTQxNjNlNzQzMzAzY2QyZGY2
ZDE4MTM3NzA2MTE4Ny4uODE4YjlkMGZlZjQ5MGE5Mzk4ZWE5MGI1YjAxNjg0MWM4MWM5NjkwOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNzEsOSArNzEsOSBAQCB2b2lkIFdlYkNhY2hl
U3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIsIGNvbgogICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpDYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uOjpDYWNoZXMobV9zZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyLCBv
cmlnaW4sIHVwZGF0ZUNvdW50ZXIpLCAwKTsKIH0KIAotdm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjpkb1JldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWlu
dDY0X3QgY2FjaGVJZGVudGlmaWVyKQordm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpk
b1JldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKIHsKLSAgICBjb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6UmVjb3Jkcyht
X3Nlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciksIDApOworICAg
IGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9u
OjpSZXRyaWV2ZVJlY29yZHMobV9zZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlk
ZW50aWZpZXIsIHVybCksIDApOwogfQogCiB2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246
OmRvQmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rp
b24uaAppbmRleCA2ZTkzN2RmZDNhMjJiOWVkMTE0NTVlMWZiODRjMmJkYmI0NjViOGEwLi45ZjJh
ZWQyN2I2MzU1ZGY2OTE5N2Y2N2FiZDM0NTc0YmVhY2M3ZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRvUmVtb3ZlKHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpIGZpbmFsOwogICAg
IHZvaWQgZG9SZXRyaWV2ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIpIGZpbmFsOwogCi0gICAgdm9p
ZCBkb1JldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qg
Y2FjaGVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICB2b2lkIGRvUmV0cmlldmVSZWNvcmRzKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6OlVSTCYpIGZpbmFsOwogICAgIHZvaWQgZG9CYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmKSBm
aW5hbDsKICAgICB2b2lkIGRvQmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hl
RW5naW5lOjpSZWNvcmQ+JiYpIGZpbmFsOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319610</attachid>
            <date>2017-09-01 10:18:50 -0700</date>
            <delta_ts>2017-09-05 09:34:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176202-20170901101849.patch</filename>
            <type>text/plain</type>
            <size>30928</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDAzZjFmZGIwYmUyMGRl
OTZkNjA3YWRiMDg5MjM0OTAwNGU0NzA1My4uZGI4NTEzYWQ0NTQyYjNkOWMxZGE0MDY4NGMzOWVl
NmYxZGQ0MmI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3LTA4LTMxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyByZXRyaWV2aW5n
IENhY2hlIFN0b3JhZ2UgcmVjb3JkcyBmb3IgYSBnaXZlbiBVUkwgb25seQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MjAyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gb2JzZXJ2YWJsZSBjaGFuZ2Ug
b2YgYmVoYXZpb3IuCisKKyAgICAgICAgQWRkaW5nIGEgVVJMIHBhcmFtZXRlciB0byBDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uOjpyZXRyaWV2ZVJlY29yZHMuCisgICAgICAgIElmIGdpdmVuIFVSTCBp
cyBudWxsLCBhbGwgcmVjb3JkcyB3aWxsIGJlIHJldHJpZXZlZCwgd2hpY2ggaXMgdXNlZnVsIGZv
ciB0aGUga2V5cyBtZXRob2QuCisgICAgICAgIE90aGVyIG9wZXJhdGlvbnMgb25seSBuZWVkIHJl
Y29yZHMgdGhhdCBzaGFyZSB0aGUgc2FtZSBVUkwgKG1vZHVsbyBxdWVyeSBzdHJpbmcgYW5kIGZy
YWcgaWQpLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNoZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZTo6bWF0Y2hBbGwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OmtleXMp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OnJldHJpZXZlUmVjb3Jkcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZTo6cXVlcnlDYWNoZSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNo
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZXRyaWV2ZVJlY29y
ZHMpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZVJlY29y
ZHMpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpk
b1JldHJpZXZlUmVjb3Jkcyk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vVVJMLmg6CisKIDIwMTctMDkt
MDEgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5d
IENvbXBpbGUgZXJyb3IsICdDYWNoZScgaXMgbm90IGRlY2xhcmVkLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlNWM1
NmZlYTBiM2IzMzIzMTE4ZGM5MDhlOTYzNDE0Nzk0MGY5NDg5Li41ZDM1NjFhZDdkODVkM2YwZjQ1
OWE4ZDFiNGEwMDQwYmE1ZTgzYjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE3LTA4
LTMxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBy
ZXRyaWV2aW5nIENhY2hlIFN0b3JhZ2UgcmVjb3JkcyBmb3IgYSBnaXZlbiBVUkwgb25seQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MjAyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIENhY2hl
U3RvcmFnZUVuZ2luZUNhY2hlIHRvIHN0b3JlIHJlY29yZHMgYXMgYSBtYXAgVVJMIC0+IFZlY3Rv
ciBvZiBSZWNvcmRzLgorICAgICAgICBUaGlzIGFsbG93cyByZWd1bGFyIHJlY29yZCByZXRyaWV2
YWwgdG8gYmUgZmFzdGVyLgorICAgICAgICBSZXRyaWV2YWwgb2YgYWxsIHJlY29yZHMgaXMgbGVz
cyBlZmZpY2llbnQgYnV0IHRoaXMgc2hvdWxkIGhhcHBlbiBsZXNzIG9mdGVuLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJldHJpZXZlUmVjb3Jkcyk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OnF1ZXJ5Q2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpD
YWNoZVN0b3JhZ2U6OkNhY2hlOjpyZXRyaWV2ZVJlY29yZHMgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpDYWNoZVN0b3JhZ2U6OmNvbXB1dGVLZXlVUkwpOgorICAgICAgICAoV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U6OkNhY2hlOjphZGROZXdVUkxSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U6OkNhY2hlOjpyZWNvcmRzRnJvbVVSTCk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hl
U3RvcmFnZTo6Q2FjaGU6OnJlY29yZHNGcm9tVVJMIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
Q2FjaGVTdG9yYWdlOjpDYWNoZTo6cHV0KToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
OjpDYWNoZTo6cmVtb3ZlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2VFbmdpbmVDb25uZWN0aW9uOjpyZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0
cmlldmVSZWNvcmRzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24uaDoKKwogMjAxNy0wOS0wMSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gQ29tcGlsZSBlcnJvciwgJ0NhY2hlJyBpcyBub3Qg
ZGVjbGFyZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGUuY3BwCmluZGV4IGE2MGM2
YmU5NjA4Y2Q4ODFlZjMyNWJjYmNlYmJjZTczM2ZmZjk5YTYuLjNhODdkMGVhMzU0MzMyNGRkOWYw
MzJmMDQ5MTJkOGE2ZDAwYTRmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGUu
Y3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBDYWNoZTo6bWF0Y2hBbGwoc3RkOjpvcHRpb25h
bDxSZXF1ZXN0SW5mbz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGkKICAgICB9CiAK
ICAgICBpZiAoIXJlcXVlc3QpIHsKLSAgICAgICAgcmV0cmlldmVSZWNvcmRzKFt0aGlzLCBwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcmV0cmlldmVSZWNv
cmRzKFVSTCB7IH0sIFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgICAgIFZlY3RvcjxSZWY8RmV0Y2hSZXNwb25zZT4+IHJlc3BvbnNlczsKICAg
ICAgICAgICAgIHJlc3BvbnNlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fcmVjb3Jkcy5zaXpl
KCkpOwogICAgICAgICAgICAgZm9yIChhdXRvJiByZWNvcmQgOiBtX3JlY29yZHMpCkBAIC0zNjEs
NyArMzYxLDcgQEAgdm9pZCBDYWNoZTo6a2V5cyhzdGQ6Om9wdGlvbmFsPFJlcXVlc3RJbmZvPiYm
IGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywKICAgICB9CiAKICAgICBpZiAoIXJl
cXVlc3QpIHsKLSAgICAgICAgcmV0cmlldmVSZWNvcmRzKFt0aGlzLCBwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcmV0cmlldmVSZWNvcmRzKFVSTCB7IH0s
IFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIFZlY3RvcjxSZWY8RmV0Y2hSZXF1ZXN0Pj4gcmVxdWVzdHM7CiAgICAgICAgICAgICByZXF1
ZXN0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fcmVjb3Jkcy5zaXplKCkpOwogICAgICAgICAg
ICAgZm9yIChhdXRvJiByZWNvcmQgOiBtX3JlY29yZHMpCkBAIC0zODAsMTAgKzM4MCwxMyBAQCB2
b2lkIENhY2hlOjprZXlzKHN0ZDo6b3B0aW9uYWw8UmVxdWVzdEluZm8+JiYgaW5mbywgQ2FjaGVR
dWVyeU9wdGlvbnMmJiBvcHRpb25zLAogICAgIH0pOwogfQogCi12b2lkIENhY2hlOjpyZXRyaWV2
ZVJlY29yZHMoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCit2b2lkIENhY2hlOjpy
ZXRyaWV2ZVJlY29yZHMoY29uc3QgVVJMJiB1cmwsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNh
bGxiYWNrKQogewogICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKLSAgICBtX2Nvbm5lY3Rp
b24tPnJldHJpZXZlUmVjb3JkcyhtX2lkZW50aWZpZXIsIFt0aGlzLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXShSZWNvcmRzT3JFcnJvciYmIHJlc3VsdCkgeworCisgICAgVVJMIHJldHJp
ZXZlVVJMID0gdXJsOworICAgIHJldHJpZXZlVVJMLnNldFF1ZXJ5KHsgfSk7CisgICAgbV9jb25u
ZWN0aW9uLT5yZXRyaWV2ZVJlY29yZHMobV9pZGVudGlmaWVyLCByZXRyaWV2ZVVSTCwgW3RoaXMs
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFJlY29yZHNPckVycm9yJiYgcmVzdWx0KSB7
CiAgICAgICAgIGlmICghbV9pc1N0b3BwZWQpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgcHJvYmFibHkgcHJvcGFnYXRlIHRoYXQgZXJyb3IgdXAgdG8gdGhlIHByb21pc2UgYmFz
ZWQgb3BlcmF0aW9uLgogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5oYXNWYWx1ZSgpKTsKQEAg
LTM5Nyw3ICs0MDAsOCBAQCB2b2lkIENhY2hlOjpyZXRyaWV2ZVJlY29yZHMoV1RGOjpGdW5jdGlv
bjx2b2lkKCk+JiYgY2FsbGJhY2spCiAKIHZvaWQgQ2FjaGU6OnF1ZXJ5Q2FjaGUoUmVmPEZldGNo
UmVxdWVzdD4mJiByZXF1ZXN0LCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIFdURjo6RnVu
Y3Rpb248dm9pZChjb25zdCBWZWN0b3I8Q2FjaGVTdG9yYWdlUmVjb3JkPiYpPiYmIGNhbGxiYWNr
KQogewotICAgIHJldHJpZXZlUmVjb3JkcyhbdGhpcywgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVz
dCksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXSgpIG11dGFibGUgeworICAgIGF1dG8gdXJsID0gcmVxdWVzdC0+dXJsKCk7CisgICAgcmV0
cmlldmVSZWNvcmRzKHVybCwgW3RoaXMsIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRp
b25zID0gV1RGTW92ZShvcHRpb25zKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBt
dXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2socXVlcnlDYWNoZVdpdGhUYXJnZXRTdG9yYWdlKHJl
cXVlc3QuZ2V0KCksIG9wdGlvbnMsIG1fcmVjb3JkcykpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9DYWNoZS5oCmluZGV4IDU5NjIyNWM4NzVjZGJkODk1YjIwMDFlOWYyMzJk
ZDYxNDhhOGYwMzAuLjlkMGNjMGEzYjFiYzlmZGZmNjkxMjY5NDI1ZDZkMThmMGI0ZjVjMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlLmgKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0
ZToKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAg
ICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QgZmluYWw7CiAK
LSAgICB2b2lkIHJldHJpZXZlUmVjb3JkcyhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAg
dm9pZCByZXRyaWV2ZVJlY29yZHMoY29uc3QgVVJMJiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYp
OwogICAgIFZlY3RvcjxDYWNoZVN0b3JhZ2VSZWNvcmQ+IHF1ZXJ5Q2FjaGVXaXRoVGFyZ2V0U3Rv
cmFnZShjb25zdCBGZXRjaFJlcXVlc3QmLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYsIGNvbnN0
IFZlY3RvcjxDYWNoZVN0b3JhZ2VSZWNvcmQ+Jik7CiAgICAgdm9pZCBxdWVyeUNhY2hlKFJlZjxG
ZXRjaFJlcXVlc3Q+JiYsIENhY2hlUXVlcnlPcHRpb25zJiYsIFdURjo6RnVuY3Rpb248dm9pZChj
b25zdCBWZWN0b3I8Q2FjaGVTdG9yYWdlUmVjb3JkPiYpPiYmKTsKICAgICB2b2lkIGJhdGNoRGVs
ZXRlT3BlcmF0aW9uKGNvbnN0IEZldGNoUmVxdWVzdCYsIENhY2hlUXVlcnlPcHRpb25zJiYsIFdU
Rjo6RnVuY3Rpb248dm9pZChFeGNlcHRpb25Pcjxib29sPiYmKT4mJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApp
bmRleCA3M2U2MmY0MjYxNmIxNWQwNTY3ZTA5N2ZmMWUzZmVlMTU3YzNjOTZjLi5jOGQ5ZDIyNWY0
NjE5MjFhYjA3YTc5MDYwMTk2MTkxZjkxMTI1NzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTU1LDEy
ICs1NSwxMiBAQCB2b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJldHJpZXZlQ2FjaGVzKGNv
bnN0IFN0cmluZyYgb3JpZ2luLCB1aW50NjRfdCB1cGRhdAogICAgIGRvUmV0cmlldmVDYWNoZXMo
cmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbiwgdXBkYXRlQ291bnRlcik7CiB9CiAKLXZvaWQgQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgUmVjb3Jkc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OnJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFVS
TCYgdXJsLCBSZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICB1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciA9ICsrbV9sYXN0UmVxdWVzdElkZW50aWZpZXI7CiAgICAgbV9yZXRyaWV2
ZVJlY29yZHNQZW5kaW5nUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CiAKLSAgICBkb1JldHJpZXZlUmVjb3JkcyhyZXF1ZXN0SWRlbnRpZmllciwgY2Fj
aGVJZGVudGlmaWVyKTsKKyAgICBkb1JldHJpZXZlUmVjb3JkcyhyZXF1ZXN0SWRlbnRpZmllciwg
Y2FjaGVJZGVudGlmaWVyLCB1cmwpOwogfQogCiB2b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246
OmJhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIFJlY29y
ZElkZW50aWZpZXJzQ2FsbGJhY2smJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKaW5kZXggODcxN2I5MDc1
YzVhYTA4YWQ0YTA5NTZiOGM0ODNmNjhiODM2MzQ1ZS4uZjA0NTFhMzcwMWNkZTc0OTRjNGVkNmE2
ZDQzNjgwNzlmZTQ3NTQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVtb3ZlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgRE9NQ2FjaGVFbmdpbmU6
OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYpOwogICAgIHZvaWQgcmV0cmlldmVDYWNoZXMoY29u
c3QgU3RyaW5nJiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIsIERPTUNhY2hlRW5naW5l
OjpDYWNoZUluZm9zQ2FsbGJhY2smJik7CiAKLSAgICB2b2lkIHJldHJpZXZlUmVjb3Jkcyh1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIsIERPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJik7
CisgICAgdm9pZCByZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25z
dCBVUkwmLCBET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxiYWNrJiYpOwogICAgIHZvaWQgYmF0
Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRl
bnRpZmllcnNDYWxsYmFjayYmKTsKICAgICB2b2lkIGJhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+JiYsIERPTUNh
Y2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwogCkBAIC02NCw3ICs2NCw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRvUmVtb3ZlKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCB1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8pIHsgcmVtb3ZlQ29tcGxl
dGVkKHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5leHBlY3RlZChET01DYWNoZUVuZ2luZTo6RXJy
b3I6Ok5vdEltcGxlbWVudGVkKSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZG9SZXRyaWV2ZUNhY2hl
cyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiAvKiBvcmlnaW4gKi8s
IHVpbnQ2NF90IC8qIHVwZGF0ZUNvdW50ZXIgKi8pIHsgdXBkYXRlQ2FjaGVzKHJlcXVlc3RJZGVu
dGlmaWVyLCB7IH0pOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZG9SZXRyaWV2ZVJlY29yZHModWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLykg
eyB1cGRhdGVSZWNvcmRzKHJlcXVlc3RJZGVudGlmaWVyLCB7IH0pOyB9CisgICAgdmlydHVhbCB2
b2lkIGRvUmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRf
dCAvKiBjYWNoZUlkZW50aWZpZXIgKi8sIGNvbnN0IFVSTCYgLyogdXJsICovKSB7IHVwZGF0ZVJl
Y29yZHMocmVxdWVzdElkZW50aWZpZXIsIHsgfSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZG9CYXRj
aERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgLyog
Y2FjaGVJZGVudGlmaWVyICovLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDYWNoZVF1ZXJ5T3B0
aW9ucyYmKSB7IGRlbGV0ZVJlY29yZHNDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIG1ha2VV
bmV4cGVjdGVkKERPTUNhY2hlRW5naW5lOjpFcnJvcjo6Tm90SW1wbGVtZW50ZWQpKTsgfQogICAg
IHZpcnR1YWwgdm9pZCBkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWVyLCB1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8sIFZlY3RvcjxET01DYWNoZUVuZ2lu
ZTo6UmVjb3JkPiYmKSB7IHB1dFJlY29yZHNDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIG1h
a2VVbmV4cGVjdGVkKERPTUNhY2hlRW5naW5lOjpFcnJvcjo6Tm90SW1wbGVtZW50ZWQpKTsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCBlZDA0OTA5ZmU1OGRmYjdmYjFlNGVjMTkz
ZjcwMTRiMDA3MDkyNzBkLi5lODE1ZDM2ZmIzMTdlMjYyODM5YWU3ODEyOTg2YTQ4NzhjZTdhOGI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29y
a2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTE5NiwxMyArMTk2LDEzIEBAIHN0YXRp
YyBpbmxpbmUgUmVjb3Jkc09yRXJyb3IgcmVjb3Jkc09yRXJyb3JGcm9tUmVjb3Jkc0RhdGEoRXhw
ZWN0ZWQ8VmVjdG9yPENyb3NzCiAgICAgcmV0dXJuIHJlY29yZHNGcm9tUmVjb3Jkc0RhdGEoV1RG
TW92ZShyZWNvcmRzRGF0YS52YWx1ZSgpKSk7CiB9CiAKLXZvaWQgV29ya2VyQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbjo6ZG9SZXRyaWV2ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikKK3ZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjo6ZG9SZXRyaWV2ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgbV9wcm94eS5wb3N0
VGFza1RvTG9hZGVyKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVl
c3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXJdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBt
dXRhYmxlIHsKKyAgICBtX3Byb3h5LnBvc3RUYXNrVG9Mb2FkZXIoW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwg
dXJsID0gdXJsLmlzb2xhdGVkQ29weSgpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJs
ZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIEFTU0VSVChtX21h
aW5UaHJlYWRDb25uZWN0aW9uKTsKIAotICAgICAgICBtX21haW5UaHJlYWRDb25uZWN0aW9uLT5y
ZXRyaWV2ZVJlY29yZHMoY2FjaGVJZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdU
Rk1vdmUocHJvdGVjdGVkVGhpcyksIHJlcXVlc3RJZGVudGlmaWVyXShSZWNvcmRzT3JFcnJvciYm
IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIG1fbWFpblRocmVhZENvbm5lY3Rpb24tPnJldHJp
ZXZlUmVjb3JkcyhjYWNoZUlkZW50aWZpZXIsIHVybCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBX
VEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmllcl0oUmVjb3Jkc09yRXJyb3Im
JiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgbV9wcm94eS5wb3N0VGFza0Zvck1vZGVU
b1dvcmtlckdsb2JhbFNjb3BlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0
ZWRUaGlzKSwgcmVzdWx0ID0gcmVjb3Jkc0RhdGFPckVycm9yRnJvbVJlY29yZHMocmVzdWx0KSwg
cmVxdWVzdElkZW50aWZpZXJdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFi
bGUgewogICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dv
cmtlckdsb2JhbFNjb3BlKCkpOwogICAgICAgICAgICAgICAgIHVwZGF0ZVJlY29yZHMocmVxdWVz
dElkZW50aWZpZXIsIHJlY29yZHNPckVycm9yRnJvbVJlY29yZHNEYXRhKFdURk1vdmUocmVzdWx0
KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtl
ckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaAppbmRleCA4YzViNDEwMzQ4ZDgzYTljZDM0N2FiNjE4
YjJlZTMxYzRmZDIwNTEzLi5lMzRmYTdiZjc3ZTY1ZGZjZTJhYjFhNTY1MzgzMWViMWQ4MDNhNGYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtl
ckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaApAQCAtNDYsNyArNDYsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZG9SZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hl
SWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291
bnRlcikgZmluYWw7CiAKLSAgICB2b2lkIGRvUmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpIGZpbmFsOworICAgIHZvaWQg
ZG9SZXRyaWV2ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNh
Y2hlSWRlbnRpZmllciwgY29uc3QgVVJMJikgZmluYWw7CiAgICAgdm9pZCBkb0JhdGNoRGVsZXRl
T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkNhY2hlUXVl
cnlPcHRpb25zJiYpIGZpbmFsOwogICAgIHZvaWQgZG9CYXRjaFB1dE9wZXJhdGlvbih1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8RE9N
Q2FjaGVFbmdpbmU6OlJlY29yZD4mJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1VSTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmgKaW5kZXgg
OTdkYzg4MmMxZmIwOTc4YzdlMjUyMTEzOTFmODlmY2YyMzdiNzIwYi4uOGJlMGIxNmM2ZTNlYzky
MDM0ZTY3NDY1ZTNlYzg4MjljZmRlN2NhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVVJMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmgKQEAgLTE2MSwx
MCArMTYxLDEwIEBAIHB1YmxpYzoKICAgICAvLyBUaGUgcXVlcnkgbWF5IGJlZ2luIHdpdGggYSBx
dWVzdGlvbiBtYXJrLCBvciwgaWYgbm90LCBvbmUgd2lsbCBiZSBhZGRlZAogICAgIC8vIGZvciB5
b3UuIFNldHRpbmcgdGhlIHF1ZXJ5IHRvIHRoZSBlbXB0eSBzdHJpbmcgd2lsbCBsZWF2ZSBhICI/
IiBpbiB0aGUKICAgICAvLyBVUkwgKHdpdGggbm90aGluZyBhZnRlciBpdCkuIFRvIGNsZWFyIHRo
ZSBxdWVyeSwgcGFzcyBhIG51bGwgc3RyaW5nLgotICAgIHZvaWQgc2V0UXVlcnkoY29uc3QgU3Ry
aW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRRdWVyeShjb25zdCBTdHJpbmcmKTsK
IAogICAgIHZvaWQgc2V0RnJhZ21lbnRJZGVudGlmaWVyKFN0cmluZ1ZpZXcpOwotICAgIHZvaWQg
cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1v
dmVGcmFnbWVudElkZW50aWZpZXIoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGZyaWVuZCBib29s
IGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCBjYmJjYWZiZTk4MWU4ZmNhNmQxZDYxOWZkZDBlM2M5
MWI4YWVmYTQwLi5jNDY4YTkwYTJmODk2YTEwNTkxNGI4Y2MxZjkwMTk3ZTNkNzkxNGZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmUuY3BwCkBAIC0xMzksMTUgKzEzOSwxNSBAQCB2b2lkIEVuZ2luZTo6cmV0cmll
dmVDYWNoZXMoY29uc3QgU3RyaW5nJiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIsIENh
Y2hlSQogICAgIH0pOwogfQogCi12b2lkIEVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllciwgUmVjb3Jkc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIEVuZ2lu
ZTo6cmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6VVJM
JiYgdXJsLCBSZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICByZWFkQ2FjaGUoY2Fj
aGVJZGVudGlmaWVyLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oQ2FjaGVPckVycm9y
JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICByZWFkQ2FjaGUoY2FjaGVJZGVudGlmaWVyLCBbdXJs
ID0gV1RGTW92ZSh1cmwpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShDYWNoZU9yRXJy
b3ImJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKSB7
CiAgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChyZXN1bHQuZXJyb3IoKSkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY2FsbGJhY2socmVzdWx0
LnZhbHVlKCkuZ2V0KCkucmVjb3JkcygpKTsKKyAgICAgICAgY2FsbGJhY2socmVzdWx0LnZhbHVl
KCkuZ2V0KCkucmV0cmlldmVSZWNvcmRzKHVybCkpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUu
aAppbmRleCAyMmU5MmY3YTU1YTI2YjBhMGFkNTRkZGYxMWE5YzRiZTljOTljNjA2Li4yYWY4ODE1
OTFjNDYwZWQ5NWFlYzZkMzJkNTAzOGI3YTM3MTVhMDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTU3
LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlKHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYp
OwogICAgIHZvaWQgcmV0cmlldmVDYWNoZXMoY29uc3QgU3RyaW5nJiBvcmlnaW4sIHVpbnQ2NF90
IHVwZGF0ZUNvdW50ZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm9zQ2FsbGJh
Y2smJik7CiAKLSAgICB2b2lkIHJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJik7CisgICAgdm9p
ZCByZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpVUkwm
JiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNDYWxsYmFjayYmKTsKICAgICB2b2lk
IHB1dFJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9N
Q2FjaGVFbmdpbmU6OlJlY29yZD4mJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElk
ZW50aWZpZXJzQ2FsbGJhY2smJik7CiAgICAgdm9pZCBkZWxldGVNYXRjaGluZ1JlY29yZHModWlu
dDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29y
ZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElk
ZW50aWZpZXJzQ2FsbGJhY2smJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKaW5kZXgg
N2IwNjc3ZjU4MjYyYWVmZjM1NDQ4NWQ1YmE0MTg1NmE4ZWZkN2Q4OS4uODM1ZDk1YjI2ZGFkOTli
MTUyZjA0OGY1ZTM1NzM4OWE4ODNjNmY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAK
QEAgLTQ5LDE5ICs0OSw4NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIENhY2hl
U3RvcmFnZSB7CiAKK3N0YXRpYyBpbmxpbmUgVmVjdG9yPHVpbnQ2NF90PiBxdWVyeUNhY2hlKGNv
bnN0IFZlY3RvcjxSZWNvcmQ+KiByZWNvcmRzLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJiBvcHRpb25zKQoreworICAgIGlmICghcmVjb3Jk
cykKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmICghb3B0aW9ucy5pZ25vcmVNZXRob2Qg
JiYgcmVxdWVzdC5odHRwTWV0aG9kKCkgIT0gIkdFVCIpCisgICAgICAgIHJldHVybiB7IH07CisK
KyAgICBWZWN0b3I8dWludDY0X3Q+IHJlc3VsdHM7CisgICAgZm9yIChjb25zdCBhdXRvJiByZWNv
cmQgOiAqcmVjb3JkcykgeworICAgICAgICBpZiAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OnF1
ZXJ5Q2FjaGVNYXRjaChyZXF1ZXN0LCByZWNvcmQucmVxdWVzdCwgcmVjb3JkLnJlc3BvbnNlLCBv
cHRpb25zKSkKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlY29yZC5pZGVudGlmaWVyKTsK
KyAgICB9CisgICAgcmV0dXJuIHJlc3VsdHM7Cit9CisKIENhY2hlOjpDYWNoZSh1aW50NjRfdCBp
ZGVudGlmaWVyLCBTdHJpbmcmJiBuYW1lKQogICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIp
CiAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKIHsKIH0KIAotVmVjdG9yPFJlY29yZD4gQ2Fj
aGU6OnJlY29yZHMoKSBjb25zdAorVmVjdG9yPFJlY29yZD4gQ2FjaGU6OnJldHJpZXZlUmVjb3Jk
cyhjb25zdCBVUkwmIHVybCkgY29uc3QKK3sKKyAgICBpZiAodXJsLmlzTnVsbCgpKSB7CisgICAg
ICAgIFZlY3RvcjxSZWNvcmQ+IHJlc3VsdDsKKyAgICAgICAgZm9yIChhdXRvJiByZWNvcmRzIDog
bV9yZWNvcmRzLnZhbHVlcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IHJl
Y29yZHMpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChyZWNvcmQuY29weSgpKTsKKyAg
ICAgICAgfQorICAgICAgICBzdGQ6OnNvcnQocmVzdWx0LmJlZ2luKCksIHJlc3VsdC5lbmQoKSwg
W10oY29uc3QgYXV0byYgYSwgY29uc3QgYXV0byYgYikgeworICAgICAgICAgICAgcmV0dXJuIGEu
aWRlbnRpZmllciA8IGIuaWRlbnRpZmllcjsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQorCisgICAgY29uc3QgYXV0byogcmVjb3JkcyA9IHJlY29yZHNGcm9tVVJM
KHVybCk7CisgICAgaWYgKCFyZWNvcmRzKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgVmVj
dG9yPFJlY29yZD4gcmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJl
Y29yZHMtPnNpemUoKSk7CisgICAgZm9yIChhdXRvJiByZWNvcmQgOiAqcmVjb3JkcykKKyAgICAg
ICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChyZWNvcmQuY29weSgpKTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCitzdGF0aWMgaW5saW5lIFN0cmluZyBjb21wdXRlS2V5VVJMKGNvbnN0IFVSTCYg
dXJsKQoreworICAgIFVSTCBrZXlVUkwgPSB1cmw7CisgICAgaWYgKGtleVVSTC5oYXNRdWVyeSgp
KQorICAgICAgICBrZXlVUkwuc2V0UXVlcnkoeyB9KTsKKyAgICBrZXlVUkwucmVtb3ZlRnJhZ21l
bnRJZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIGtleVVSTDsKK30KKworUmVjb3JkJiBDYWNoZTo6
YWRkTmV3VVJMUmVjb3JkKFJlY29yZCYmIHJlY29yZCkKK3sKKyAgICBhdXRvIGtleSA9IGNvbXB1
dGVLZXlVUkwocmVjb3JkLnJlcXVlc3QudXJsKCkpOworICAgIEFTU0VSVCghbV9yZWNvcmRzLmNv
bnRhaW5zKGtleSkpOworCisgICAgVmVjdG9yPFJlY29yZD4gbmV3UmVjb3JkczsKKyAgICBuZXdS
ZWNvcmRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMSk7CisgICAgbmV3UmVjb3Jkcy51bmNoZWNr
ZWRBcHBlbmQoV1RGTW92ZShyZWNvcmQpKTsKKyAgICByZXR1cm4gbV9yZWNvcmRzLnNldChrZXks
IFdURk1vdmUobmV3UmVjb3JkcykpLml0ZXJhdG9yLT52YWx1ZS5sYXN0KCk7Cit9CisKK1ZlY3Rv
cjxSZWNvcmQ+KiBDYWNoZTo6cmVjb3Jkc0Zyb21VUkwoY29uc3QgVVJMJiB1cmwpCit7CisgICAg
YXV0byBpdGVyYXRvciA9IG1fcmVjb3Jkcy5maW5kKGNvbXB1dGVLZXlVUkwodXJsKSk7CisgICAg
aWYgKGl0ZXJhdG9yID09IG1fcmVjb3Jkcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmV0dXJuICZpdGVyYXRvci0+dmFsdWU7Cit9CisKK2NvbnN0IFZlY3RvcjxSZWNvcmQ+
KiBDYWNoZTo6cmVjb3Jkc0Zyb21VUkwoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7Ci0gICAgVmVj
dG9yPFJlY29yZD4gcmVjb3JkczsKLSAgICByZWNvcmRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
bV9yZWNvcmRzLnNpemUoKSk7Ci0gICAgZm9yIChhdXRvJiByZWNvcmQgOiBtX3JlY29yZHMpCi0g
ICAgICAgIHJlY29yZHMudW5jaGVja2VkQXBwZW5kKHJlY29yZC5jb3B5KCkpOwotICAgIHJldHVy
biByZWNvcmRzOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX3JlY29yZHMuZmluZChjb21wdXRlS2V5
VVJMKHVybCkpOworICAgIGlmIChpdGVyYXRvciA9PSBtX3JlY29yZHMuZW5kKCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmaXRlcmF0b3ItPnZhbHVlOwogfQogCiB2b2lk
IENhY2hlOjpwdXQoVmVjdG9yPFJlY29yZD4mJiByZWNvcmRzLCBSZWNvcmRJZGVudGlmaWVyc0Nh
bGxiYWNrJiYgY2FsbGJhY2spCkBAIC03MSwyMCArMTM5LDI3IEBAIHZvaWQgQ2FjaGU6OnB1dChW
ZWN0b3I8UmVjb3JkPiYmIHJlY29yZHMsIFJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJiBjYWxs
YmFjaykKICAgICBWZWN0b3I8dWludDY0X3Q+IHJlY29yZElkZW50aWZpZXJzOwogICAgIHJlY29y
ZElkZW50aWZpZXJzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVjb3Jkcy5zaXplKCkpOwogICAg
IGZvciAoYXV0byYgcmVjb3JkIDogcmVjb3JkcykgewotICAgICAgICBhdXRvIG1hdGNoaW5nUmVj
b3JkcyA9IHF1ZXJ5Q2FjaGUocmVjb3JkLnJlcXVlc3QsIG9wdGlvbnMpOworICAgICAgICBhdXRv
KiBzYW1lVVJMUmVjb3JkcyA9IHJlY29yZHNGcm9tVVJMKHJlY29yZC5yZXF1ZXN0LnVybCgpKTsK
KworICAgICAgICBhdXRvIG1hdGNoaW5nUmVjb3JkcyA9IHF1ZXJ5Q2FjaGUoc2FtZVVSTFJlY29y
ZHMsIHJlY29yZC5yZXF1ZXN0LCBvcHRpb25zKTsKICAgICAgICAgaWYgKG1hdGNoaW5nUmVjb3Jk
cy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIHJlY29yZC5pZGVudGlmaWVyID0gKyttX25leHRS
ZWNvcmRJZGVudGlmaWVyOwogICAgICAgICAgICAgcmVjb3JkSWRlbnRpZmllcnMudW5jaGVja2Vk
QXBwZW5kKHJlY29yZC5pZGVudGlmaWVyKTsKLSAgICAgICAgICAgIG1fcmVjb3Jkcy5hcHBlbmQo
V1RGTW92ZShyZWNvcmQpKTsKIAogICAgICAgICAgICAgc2hvdWxkV3JpdGVSZWNvcmRMaXN0ID0g
dHJ1ZTsKLSAgICAgICAgICAgIHdyaXRlUmVjb3JkVG9EaXNrKG1fcmVjb3Jkcy5sYXN0KCkpOwor
ICAgICAgICAgICAgaWYgKCFzYW1lVVJMUmVjb3JkcykgeworICAgICAgICAgICAgICAgIGF1dG8m
IHJlY29yZFRvV3JpdGUgPSBhZGROZXdVUkxSZWNvcmQoV1RGTW92ZShyZWNvcmQpKTsKKyAgICAg
ICAgICAgICAgICB3cml0ZVJlY29yZFRvRGlzayhyZWNvcmRUb1dyaXRlKTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2FtZVVSTFJlY29yZHMtPmFwcGVuZChXVEZNb3Zl
KHJlY29yZCkpOworICAgICAgICAgICAgICAgIHdyaXRlUmVjb3JkVG9EaXNrKHNhbWVVUkxSZWNv
cmRzLT5sYXN0KCkpOworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgYXV0byBpZGVudGlmaWVyID0gbWF0Y2hpbmdSZWNvcmRzWzBdOwotICAgICAgICAgICAgYXV0
byBwb3NpdGlvbiA9IG1fcmVjb3Jkcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIGl0ZW0p
IHsgcmV0dXJuIGl0ZW0uaWRlbnRpZmllciA9PSBpZGVudGlmaWVyOyB9KTsKKyAgICAgICAgICAg
IGF1dG8gcG9zaXRpb24gPSBzYW1lVVJMUmVjb3Jkcy0+ZmluZE1hdGNoaW5nKFsmXShjb25zdCBh
dXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLmlkZW50aWZpZXIgPT0gaWRlbnRpZmllcjsgfSk7CiAg
ICAgICAgICAgICBBU1NFUlQocG9zaXRpb24gIT0gbm90Rm91bmQpOwogICAgICAgICAgICAgaWYg
KHBvc2l0aW9uICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgZXhpc3RpbmdS
ZWNvcmQgPSBtX3JlY29yZHNbcG9zaXRpb25dOworICAgICAgICAgICAgICAgIGF1dG8mIGV4aXN0
aW5nUmVjb3JkID0gKCpzYW1lVVJMUmVjb3JkcylbcG9zaXRpb25dOwogICAgICAgICAgICAgICAg
IHJlY29yZElkZW50aWZpZXJzLnVuY2hlY2tlZEFwcGVuZChpZGVudGlmaWVyKTsKICAgICAgICAg
ICAgICAgICBleGlzdGluZ1JlY29yZC5yZXNwb25zZUhlYWRlcnNHdWFyZCA9IHJlY29yZC5yZXNw
b25zZUhlYWRlcnNHdWFyZDsKICAgICAgICAgICAgICAgICBleGlzdGluZ1JlY29yZC5yZXNwb25z
ZSA9IFdURk1vdmUocmVjb3JkLnJlc3BvbnNlKTsKQEAgLTExMSwyMCArMTg2LDE5IEBAIHZvaWQg
Q2FjaGU6OnB1dChWZWN0b3I8UmVjb3JkPiYmIHJlY29yZHMsIFJlY29yZElkZW50aWZpZXJzQ2Fs
bGJhY2smJiBjYWxsYmFjaykKIAogdm9pZCBDYWNoZTo6cmVtb3ZlKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywg
UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIGF1dG8gcmVjb3Jk
SWRlbnRpZmllcnMgPSBxdWVyeUNhY2hlKHJlcXVlc3QsIG9wdGlvbnMpOworICAgIGF1dG8qIHJl
Y29yZHMgPSByZWNvcmRzRnJvbVVSTChyZXF1ZXN0LnVybCgpKTsKKyAgICBhdXRvIHJlY29yZElk
ZW50aWZpZXJzID0gcXVlcnlDYWNoZShyZWNvcmRzLCByZXF1ZXN0LCBvcHRpb25zKTsKICAgICBp
ZiAocmVjb3JkSWRlbnRpZmllcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNhbGxiYWNrKHsgfSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8UmVjb3JkPiByZWNvcmRzVG9L
ZWVwOwotICAgIGZvciAoYXV0byYgcmVjb3JkIDogbV9yZWNvcmRzKSB7Ci0gICAgICAgIGlmIChy
ZWNvcmRJZGVudGlmaWVycy5maW5kTWF0Y2hpbmcoWyZdKGF1dG8gaXRlbSkgeyByZXR1cm4gaXRl
bSA9PSByZWNvcmQuaWRlbnRpZmllcjsgfSkgPT0gbm90Rm91bmQpCi0gICAgICAgICAgICByZWNv
cmRzVG9LZWVwLmFwcGVuZChXVEZNb3ZlKHJlY29yZCkpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICByZW1vdmVSZWNvcmRGcm9tRGlzayhyZWNvcmQpOwotICAgIH0KLSAgICBtX3JlY29yZHMg
PSBXVEZNb3ZlKHJlY29yZHNUb0tlZXApOworICAgIHJlY29yZHMtPnJlbW92ZUFsbE1hdGNoaW5n
KFt0aGlzLCAmcmVjb3JkSWRlbnRpZmllcnNdKGF1dG8mIGl0ZW0pIHsKKyAgICAgICAgYm9vbCBz
aG91bGRSZW1vdmUgPSByZWNvcmRJZGVudGlmaWVycy5maW5kTWF0Y2hpbmcoWyZpdGVtXShhdXRv
IGlkZW50aWZpZXIpIHsgcmV0dXJuIGlkZW50aWZpZXIgPT0gaXRlbS5pZGVudGlmaWVyOyB9KSAh
PSBub3RGb3VuZDsKKyAgICAgICAgaWYgKHNob3VsZFJlbW92ZSkKKyAgICAgICAgICAgIHRoaXMt
PnJlbW92ZVJlY29yZEZyb21EaXNrKGl0ZW0pOworICAgICAgICByZXR1cm4gc2hvdWxkUmVtb3Zl
OworICAgIH0pOwogCiAgICAgd3JpdGVSZWNvcmRzTGlzdChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwgcmVjb3JkSWRlbnRpZmllcnMgPSBXVEZNb3ZlKHJlY29yZElkZW50aWZpZXJzKV0o
c3RkOjpvcHRpb25hbDxFcnJvcj4mJiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJv
cikgewpAQCAtMTM1LDE5ICsyMDksNiBAQCB2b2lkIENhY2hlOjpyZW1vdmUoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbgogICAgIH0p
OwogfQogCi1WZWN0b3I8dWludDY0X3Q+IENhY2hlOjpxdWVyeUNhY2hlKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmIG9wdGlvbnMpCi17Ci0g
ICAgaWYgKCFvcHRpb25zLmlnbm9yZU1ldGhvZCAmJiByZXF1ZXN0Lmh0dHBNZXRob2QoKSAhPSAi
R0VUIikKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIFZlY3Rvcjx1aW50NjRfdD4gcmVzdWx0
czsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHJlY29yZCA6IG1fcmVjb3JkcykgewotICAgICAgICBp
ZiAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OnF1ZXJ5Q2FjaGVNYXRjaChyZXF1ZXN0LCByZWNv
cmQucmVxdWVzdCwgcmVjb3JkLnJlc3BvbnNlLCBvcHRpb25zKSkKLSAgICAgICAgICAgIHJlc3Vs
dHMuYXBwZW5kKHJlY29yZC5pZGVudGlmaWVyKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdHM7
Ci19Ci0KIHZvaWQgQ2FjaGU6OndyaXRlUmVjb3Jkc0xpc3QoQ29tcGxldGlvbkNhbGxiYWNrJiYg
Y2FsbGJhY2spCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNo
ZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmVDYWNoZS5oCmluZGV4IGRlZjg2ZjUwMjA1Y2M5ZjI3MWE5NzljZTgyYmM3MGQzOGQ0NGQ1MTUu
LjE4ZDY5NzY2NDlmNjU4MGM1MDQyNzNhOTllYjk2ODllMzM3NDlkOTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlLmgKQEAgLTQwLDE0ICs0MCwxNiBAQCBwdWJsaWM6CiAgICAgdWludDY0X3QgaWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIGNvbnN0IFN0cmlu
ZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogCi0gICAgVmVjdG9yPFdlYkNvcmU6
OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IHJlY29yZHMoKSBjb25zdDsKKyAgICBWZWN0b3I8V2Vi
Q29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gcmV0cmlldmVSZWNvcmRzKGNvbnN0IFdlYkNv
cmU6OlVSTCYpIGNvbnN0OwogICAgIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm8g
aW5mbygpIGNvbnN0IHsgcmV0dXJuIHsgbV9pZGVudGlmaWVyLCBtX25hbWUgfTsgfQogCiAgICAg
dm9pZCBwdXQoVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+JiYsIFdlYkNv
cmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwogICAgIHZv
aWQgcmVtb3ZlKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5
T3B0aW9ucyYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxs
YmFjayYmKTsKIAogcHJpdmF0ZToKLSAgICBWZWN0b3I8dWludDY0X3Q+IHF1ZXJ5Q2FjaGUoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6Q2FjaGVRdWVyeU9w
dGlvbnMmKTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4qIHJl
Y29yZHNGcm9tVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiogcmVjb3Jkc0Zyb21VUkwoY29uc3QgV2ViQ29y
ZTo6VVJMJikgY29uc3Q7CisgICAgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZCYgYWRk
TmV3VVJMUmVjb3JkKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQmJik7CiAKICAgICB2
b2lkIHdyaXRlUmVjb3Jkc0xpc3QoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25D
YWxsYmFjayYmKTsKICAgICB2b2lkIHdyaXRlUmVjb3JkVG9EaXNrKFdlYkNvcmU6OkRPTUNhY2hl
RW5naW5lOjpSZWNvcmQmKTsKQEAgLTU1LDcgKzU3LDcgQEAgcHJpdmF0ZToKIAogICAgIHVpbnQ2
NF90IG1faWRlbnRpZmllciB7IDAgfTsKICAgICBTdHJpbmcgbV9uYW1lOwotICAgIFZlY3RvcjxX
ZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiBtX3JlY29yZHM7CisgICAgSGFzaE1hcDxT
dHJpbmcsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPj4gbV9yZWNvcmRz
OwogICAgIHVpbnQ2NF90IG1fbmV4dFJlY29yZElkZW50aWZpZXIgeyAwIH07CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcAppbmRleCBiNzNiMTU1NzE1YWZkZDk4ZDJk
OTg3MzliYjdjMDMzYjIyYzVkNDVlLi5jZWEyZWJjMzUwMmM5NDM0MzBjYzRjNTQyYzFmZWJiYTdk
OGFkNjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKQEAgLTY4LDkg
KzY4LDkgQEAgdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpjbGVhck1lbW9yeVJl
cHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3MKICAgICBFbmdpbmU6OmZyb20oc2Vzc2lv
bklEKS5jbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKG9yaWdpbik7CiB9CiAKLXZvaWQgQ2FjaGVT
dG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cmVjb3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpCit2
b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnJldHJpZXZlUmVjb3JkcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBj
YWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCYmIHVybCkKIHsKLSAgICBFbmdpbmU6OmZyb20o
c2Vzc2lvbklEKS5yZXRyaWV2ZVJlY29yZHMoY2FjaGVJZGVudGlmaWVyLCBbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCBzZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyXShS
ZWNvcmRzT3JFcnJvciYmIHJlc3VsdCkgeworICAgIEVuZ2luZTo6ZnJvbShzZXNzaW9uSUQpLnJl
dHJpZXZlUmVjb3JkcyhjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUodXJsKSwgW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmllcl0o
UmVjb3Jkc09yRXJyb3ImJiByZXN1bHQpIHsKICAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpVcGRhdGVSZWNv
cmRzKHJlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQpLCBzZXNzaW9uSUQuc2Vzc2lvbklEKCkpOwog
ICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaAppbmRleCBhMzNlMTQ3
ZTc0YmYzZmYyNGFkN2NhM2EwYzQwNTVjM2UyYWRmNGI2Li5hZGJmNGFjOThhMzM4YTdjZDQwNDdj
MjM5NDVlM2NlYTU4OGZiNWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaApA
QCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjbGVhck1lbW9yeVJlcHJlc2Vu
dGF0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIG9yaWdpbik7CiAKLSAgICB2b2lk
IHJlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIpOworICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vz
c2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlm
aWVyLCBXZWJDb3JlOjpVUkwmJik7CiAgICAgdm9pZCBkZWxldGVNYXRjaGluZ1JlY29yZHMoUEFM
OjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlk
ZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5
T3B0aW9ucyYmKTsKICAgICB2b2lkIHB1dFJlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJD
b3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDA3N2Q5M2JiMmVlNTQxMzFjYjI3
OTJiMzQ3ZjRiYmRjYzgyNTNjNWMuLjRmNjFiNjc4NmZmMjI4ZDNhYjQwOTQwMGUwNGYzMWRjYTk4
NGNkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KQEAgLTI3LDcgKzI3LDcgQEAgbWVzc2FnZXMgLT4gQ2FjaGVTdG9yYWdlRW5naW5lQ29u
bmVjdGlvbiB7CiAKICAgICBDbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgU3RyaW5nIG9yaWdpbik7CiAKLSAgICBSZWNvcmRzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRl
bnRpZmllcik7CisgICAgUmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2Vi
Q29yZTo6VVJMIHVybCk7CiAgICAgRGVsZXRlTWF0Y2hpbmdSZWNvcmRzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRl
bnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3Jl
OjpDYWNoZVF1ZXJ5T3B0aW9ucyBvcHRpb25zKTsKICAgICBQdXRSZWNvcmRzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hl
SWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IHJlY29y
ZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUv
V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggNDYxMjEwZGZlNTQxNjNlNzQzMzAz
Y2QyZGY2ZDE4MTM3NzA2MTE4Ny4uODE4YjlkMGZlZjQ5MGE5Mzk4ZWE5MGI1YjAxNjg0MWM4MWM5
NjkwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNo
ZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNzEsOSArNzEsOSBAQCB2b2lkIFdl
YkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIGNvbgogICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpDYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpDYWNoZXMobV9zZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlm
aWVyLCBvcmlnaW4sIHVwZGF0ZUNvdW50ZXIpLCAwKTsKIH0KIAotdm9pZCBXZWJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOjpkb1JldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKQordm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOjpkb1JldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0
X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKIHsKLSAgICBjb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6UmVj
b3JkcyhtX3Nlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciksIDAp
OworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25u
ZWN0aW9uOjpSZXRyaWV2ZVJlY29yZHMobV9zZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyLCBj
YWNoZUlkZW50aWZpZXIsIHVybCksIDApOwogfQogCiB2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OmRvQmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uaAppbmRleCA2ZTkzN2RmZDNhMjJiOWVkMTE0NTVlMWZiODRjMmJkYmI0NjViOGEw
Li45ZjJhZWQyN2I2MzU1ZGY2OTE5N2Y2N2FiZDM0NTc0YmVhY2M3ZTg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRvUmVtb3ZlKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpIGZpbmFs
OwogICAgIHZvaWQgZG9SZXRyaWV2ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIpIGZpbmFsOwogCi0g
ICAgdm9pZCBkb1JldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWlu
dDY0X3QgY2FjaGVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICB2b2lkIGRvUmV0cmlldmVSZWNvcmRz
KHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OlVSTCYpIGZpbmFsOwogICAgIHZvaWQgZG9CYXRjaERlbGV0ZU9wZXJhdGlv
bih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9u
cyYmKSBmaW5hbDsKICAgICB2b2lkIGRvQmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OkRP
TUNhY2hlRW5naW5lOjpSZWNvcmQ+JiYpIGZpbmFsOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319905</attachid>
            <date>2017-09-05 09:34:55 -0700</date>
            <delta_ts>2017-09-05 10:52:55 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-176202-20170905093454.patch</filename>
            <type>text/plain</type>
            <size>31336</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzkzYmEwNzcyMzRmNWNl
ZjVjM2ExZTM0OWZiNzUxMjNhYzlmZGE3MS4uZGM3NzVkZTRmOWRmMGI1MzgxNjY0OTIzZmU2NWNh
M2FmNTk5MTc1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3LTA5LTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyByZXRyaWV2aW5n
IENhY2hlIFN0b3JhZ2UgcmVjb3JkcyBmb3IgYSBnaXZlbiBVUkwgb25seQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MjAyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBObyBvYnNlcnZhYmxlIGNoYW5n
ZSBvZiBiZWhhdmlvci4KKworICAgICAgICBBZGRpbmcgYSBVUkwgcGFyYW1ldGVyIHRvIENhY2hl
U3RvcmFnZUNvbm5lY3Rpb246OnJldHJpZXZlUmVjb3Jkcy4KKyAgICAgICAgSWYgZ2l2ZW4gVVJM
IGlzIG51bGwsIGFsbCByZWNvcmRzIHdpbGwgYmUgcmV0cmlldmVkLCB3aGljaCBpcyB1c2VmdWwg
Zm9yIHRoZSBrZXlzIG1ldGhvZC4KKyAgICAgICAgT3RoZXIgb3BlcmF0aW9ucyBvbmx5IG5lZWQg
cmVjb3JkcyB0aGF0IHNoYXJlIHRoZSBzYW1lIFVSTCAobW9kdWxvIHF1ZXJ5IHN0cmluZyBhbmQg
ZnJhZyBpZCkuCisKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlOjptYXRjaEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6a2V5
cyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6cmV0cmlldmVSZWNvcmRzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlOjpxdWVyeUNhY2hlKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0Nh
Y2hlLmg6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJldHJpZXZlUmVj
b3Jkcyk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JldHJpZXZlUmVj
b3Jkcyk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246
OmRvUmV0cmlldmVSZWNvcmRzKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9VUkwuaDoKKwogMjAxNy0w
OS0wNSAgRnJlZGVyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+CiAKICAgICAgICAgVXNlIFRp
bGVzQmFja2luZyBmb3IgaWZyYW1lcyB3aGVuIGFzeW5jIGZyYW1lIHNjcm9sbGluZyBpcyBlbmFi
bGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IGMxODcxYjE5Y2FiZDhjNGEzZTJlMGJlNzE3ZTgyNDJhZjBjOWQ4YmMu
LmM5OWQyOTgyNTcyZDQzMzNmYWFiZDE3NDRjZjRjNTA4OGM0NWI0MjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzUgQEAKKzIwMTctMDktMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgorCisgICAgICAgIEFsbG93IHJldHJpZXZpbmcgQ2FjaGUgU3RvcmFnZSByZWNvcmRzIGZvciBh
IGdpdmVuIFVSTCBvbmx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzYyMDIKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgor
CisgICAgICAgIFVwZGF0ZSBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZSB0byBzdG9yZSByZWNvcmRz
IGFzIGEgbWFwIFVSTCAtPiBWZWN0b3Igb2YgUmVjb3Jkcy4KKyAgICAgICAgVGhpcyBhbGxvd3Mg
cmVndWxhciByZWNvcmQgcmV0cmlldmFsIHRvIGJlIGZhc3Rlci4KKyAgICAgICAgUmV0cmlldmFs
IG9mIGFsbCByZWNvcmRzIGlzIGxlc3MgZWZmaWNpZW50IGJ1dCB0aGlzIHNob3VsZCBoYXBwZW4g
bGVzcyBvZnRlbi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZXRy
aWV2ZVJlY29yZHMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpxdWVyeUNhY2hl
KToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6cmV0cmlldmVSZWNvcmRz
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpjb21wdXRlS2V5VVJMKToK
KyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6YWRkTmV3VVJMUmVjb3JkKToK
KyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6cmVjb3Jkc0Zyb21VUkwpOgor
ICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjpyZWNvcmRzRnJvbVVSTCBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OnB1dCk6CisgICAgICAg
IChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OnJlbW92ZSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRz
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25u
ZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0NhY2hlL1dl
YkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uOjpkb1JldHJpZXZlUmVjb3Jkcyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmg6CisKIDIwMTctMDktMDUgIEZyZWRl
cmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVzZSBUaWxlc0JhY2tpbmcg
Zm9yIGlmcmFtZXMgd2hlbiBhc3luYyBmcmFtZSBzY3JvbGxpbmcgaXMgZW5hYmxlZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5jcHAKaW5kZXggNzNlNjJmNDI2MTZiMTVkMDU2N2UwOTdmZjFlM2ZlZTE1N2MzYzk2Yy4uYzhk
OWQyMjVmNDYxOTIxYWIwN2E3OTA2MDE5NjE5MWY5MTEyNTc2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBA
IC01NSwxMiArNTUsMTIgQEAgdm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZXRyaWV2ZUNh
Y2hlcyhjb25zdCBTdHJpbmcmIG9yaWdpbiwgdWludDY0X3QgdXBkYXQKICAgICBkb1JldHJpZXZl
Q2FjaGVzKHJlcXVlc3RJZGVudGlmaWVyLCBvcmlnaW4sIHVwZGF0ZUNvdW50ZXIpOwogfQogCi12
b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNo
ZUlkZW50aWZpZXIsIFJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOjpyZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBj
b25zdCBVUkwmIHVybCwgUmVjb3Jkc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgdWludDY0
X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fbGFzdFJlcXVlc3RJZGVudGlmaWVyOwogICAgIG1f
cmV0cmlldmVSZWNvcmRzUGVuZGluZ1JlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgV1RG
TW92ZShjYWxsYmFjaykpOwogCi0gICAgZG9SZXRyaWV2ZVJlY29yZHMocmVxdWVzdElkZW50aWZp
ZXIsIGNhY2hlSWRlbnRpZmllcik7CisgICAgZG9SZXRyaWV2ZVJlY29yZHMocmVxdWVzdElkZW50
aWZpZXIsIGNhY2hlSWRlbnRpZmllciwgdXJsKTsKIH0KIAogdm9pZCBDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjpiYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2FjaGVRdWVyeU9wdGlvbnMmJiBvcHRpb25z
LCBSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCmluZGV4IDg3
MTdiOTA3NWM1YWEwOGFkNGEwOTU2YjhjNDgzZjY4YjgzNjM0NWUuLmYwNDUxYTM3MDFjZGU3NDk0
YzRlZDZhNmQ0MzY4MDc5ZmU0NzU0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCkBAIC00MSw3ICs0MSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlbW92ZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIERPTUNhY2hl
RW5naW5lOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKICAgICB2b2lkIHJldHJpZXZlQ2Fj
aGVzKGNvbnN0IFN0cmluZyYgb3JpZ2luLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyLCBET01DYWNo
ZUVuZ2luZTo6Q2FjaGVJbmZvc0NhbGxiYWNrJiYpOwogCi0gICAgdm9pZCByZXRyaWV2ZVJlY29y
ZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxi
YWNrJiYpOworICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmll
ciwgY29uc3QgVVJMJiwgRE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNDYWxsYmFjayYmKTsKICAgICB2
b2lkIGJhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgQ2FjaGVRdWVyeU9wdGlvbnMmJiwgRE9NQ2FjaGVFbmdpbmU6OlJl
Y29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CiAgICAgdm9pZCBiYXRjaFB1dE9wZXJhdGlvbih1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYm
LCBET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKIApAQCAtNjQs
NyArNjQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkb1JlbW92ZSh1aW50NjRfdCBy
ZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgLyogY2FjaGVJZGVudGlmaWVyICovKSB7IHJlbW92
ZUNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoRE9NQ2FjaGVFbmdp
bmU6OkVycm9yOjpOb3RJbXBsZW1lbnRlZCkpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRvUmV0cmll
dmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgLyogb3Jp
Z2luICovLCB1aW50NjRfdCAvKiB1cGRhdGVDb3VudGVyICovKSB7IHVwZGF0ZUNhY2hlcyhyZXF1
ZXN0SWRlbnRpZmllciwgeyB9KTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRvUmV0cmlldmVSZWNv
cmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZp
ZXIgKi8pIHsgdXBkYXRlUmVjb3JkcyhyZXF1ZXN0SWRlbnRpZmllciwgeyB9KTsgfQorICAgIHZp
cnR1YWwgdm9pZCBkb1JldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwg
dWludDY0X3QgLyogY2FjaGVJZGVudGlmaWVyICovLCBjb25zdCBVUkwmIC8qIHVybCAqLykgeyB1
cGRhdGVSZWNvcmRzKHJlcXVlc3RJZGVudGlmaWVyLCB7IH0pOyB9CiAgICAgdmlydHVhbCB2b2lk
IGRvQmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2
NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLywgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2FjaGVR
dWVyeU9wdGlvbnMmJikgeyBkZWxldGVSZWNvcmRzQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVy
LCBtYWtlVW5leHBlY3RlZChET01DYWNoZUVuZ2luZTo6RXJyb3I6Ok5vdEltcGxlbWVudGVkKSk7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZG9CYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgdWludDY0X3QgLyogY2FjaGVJZGVudGlmaWVyICovLCBWZWN0b3I8RE9NQ2Fj
aGVFbmdpbmU6OlJlY29yZD4mJikgeyBwdXRSZWNvcmRzQ29tcGxldGVkKHJlcXVlc3RJZGVudGlm
aWVyLCBtYWtlVW5leHBlY3RlZChET01DYWNoZUVuZ2luZTo6RXJyb3I6Ok5vdEltcGxlbWVudGVk
KSk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCA0
YmQ3YzUxMDdkMjBjYzdiZWIzNDE3ODFlOTU0ZjI4N2VjMzIzMjdlLi5hY2QzMzljMTA4NGFlZjVj
MzZjMjQxZTQ4MTY1ZmJjMjcwNzQzNzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgRE9NQ2FjaGU6Om1hdGNoQWxs
KHN0ZDo6b3B0aW9uYWw8UmVxdWVzdEluZm8+JiYgaW5mbywgQ2FjaGVRdWVyeU9wdGlvbnMmJiBv
CiAgICAgfQogCiAgICAgaWYgKCFyZXF1ZXN0KSB7Ci0gICAgICAgIHJldHJpZXZlUmVjb3Jkcyhb
dGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9u
PiYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CisgICAgICAgIHJldHJpZXZlUmVjb3JkcyhVUkwgeyB9
LCBbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKHN0ZDo6b3B0aW9uYWw8RXhjZXB0
aW9uPiYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKSB7
CiAgICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92ZShleGNlcHRpb24udmFsdWUo
KSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTM3OCw3ICszNzgsNyBAQCB2b2lkIERP
TUNhY2hlOjprZXlzKHN0ZDo6b3B0aW9uYWw8UmVxdWVzdEluZm8+JiYgaW5mbywgQ2FjaGVRdWVy
eU9wdGlvbnMmJiBvcHRpbwogICAgIH0KIAogICAgIGlmICghcmVxdWVzdCkgewotICAgICAgICBy
ZXRyaWV2ZVJlY29yZHMoW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShzdGQ6Om9w
dGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgeworICAgICAgICByZXRyaWV2
ZVJlY29yZHMoVVJMIHsgfSwgW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShzdGQ6
Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICAgICAg
aWYgKGV4Y2VwdGlvbikgewogICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KFdURk1vdmUo
ZXhjZXB0aW9uLnZhbHVlKCkpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC00MDcsMTAg
KzQwNywxNiBAQCB2b2lkIERPTUNhY2hlOjprZXlzKHN0ZDo6b3B0aW9uYWw8UmVxdWVzdEluZm8+
JiYgaW5mbywgQ2FjaGVRdWVyeU9wdGlvbnMmJiBvcHRpbwogICAgIH0pOwogfQogCi12b2lkIERP
TUNhY2hlOjpyZXRyaWV2ZVJlY29yZHMoV1RGOjpGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8
RXhjZXB0aW9uPiYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgRE9NQ2FjaGU6OnJldHJpZXZlUmVjb3Jk
cyhjb25zdCBVUkwmIHVybCwgV1RGOjpGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0
aW9uPiYmKT4mJiBjYWxsYmFjaykKIHsKICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7Ci0g
ICAgbV9jb25uZWN0aW9uLT5yZXRyaWV2ZVJlY29yZHMobV9pZGVudGlmaWVyLCBbdGhpcywgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oUmVjb3Jkc09yRXJyb3ImJiByZXN1bHQpIHsKKwor
ICAgIFVSTCByZXRyaWV2ZVVSTCA9IHVybDsKKyAgICBpZiAocmV0cmlldmVVUkwuaGFzUXVlcnko
KSkKKyAgICAgICAgcmV0cmlldmVVUkwuc2V0UXVlcnkoeyB9KTsKKyAgICByZXRyaWV2ZVVSTC5y
ZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKKworICAgIG1fY29ubmVjdGlvbi0+cmV0cmlldmVS
ZWNvcmRzKG1faWRlbnRpZmllciwgcmV0cmlldmVVUkwsIFt0aGlzLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXShSZWNvcmRzT3JFcnJvciYmIHJlc3VsdCkgewogICAgICAgICBpZiAoIW1f
aXNTdG9wcGVkKSB7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKSB7CiAgICAg
ICAgICAgICAgICAgY2FsbGJhY2soRE9NQ2FjaGVFbmdpbmU6OmVycm9yVG9FeGNlcHRpb24ocmVz
dWx0LmVycm9yKCkpKTsKQEAgLTQyNyw3ICs0MzMsOCBAQCB2b2lkIERPTUNhY2hlOjpyZXRyaWV2
ZVJlY29yZHMoV1RGOjpGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4m
JgogCiB2b2lkIERPTUNhY2hlOjpxdWVyeUNhY2hlKFJlZjxGZXRjaFJlcXVlc3Q+JiYgcmVxdWVz
dCwgQ2FjaGVRdWVyeU9wdGlvbnMmJiBvcHRpb25zLCBXVEY6OkZ1bmN0aW9uPHZvaWQoRXhjZXB0
aW9uT3I8VmVjdG9yPENhY2hlU3RvcmFnZVJlY29yZD4+JiYpPiYmIGNhbGxiYWNrKQogewotICAg
IHJldHJpZXZlUmVjb3JkcyhbdGhpcywgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIG9wdGlv
bnMgPSBXVEZNb3ZlKG9wdGlvbnMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShzdGQ6
Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgeworICAgIGF1dG8gdXJs
ID0gcmVxdWVzdC0+dXJsKCk7CisgICAgcmV0cmlldmVSZWNvcmRzKHVybCwgW3RoaXMsIHJlcXVl
c3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25zKSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0
aW9uKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewogICAgICAgICAgICAgY2Fs
bGJhY2soV1RGTW92ZShleGNlcHRpb24udmFsdWUoKSkpOwogICAgICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCmluZGV4IDEzYzdkNjA4MTNiOWJj
M2E3MTllOWUzNmU4OTdhMDJiN2Q1M2VmYjkuLjFhZDAwMTk4MjkwNmNmZmQyMmM0MzA4OTdlYWRi
OTc4YTIwMGNhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKQEAg
LTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3RO
YW1lKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5z
aW9uKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHJldHJpZXZlUmVjb3JkcyhXVEY6OkZ1bmN0
aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmKTsKKyAgICB2b2lkIHJldHJp
ZXZlUmVjb3Jkcyhjb25zdCBVUkwmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxF
eGNlcHRpb24+JiYpPiYmKTsKICAgICBWZWN0b3I8Q2FjaGVTdG9yYWdlUmVjb3JkPiBxdWVyeUNh
Y2hlV2l0aFRhcmdldFN0b3JhZ2UoY29uc3QgRmV0Y2hSZXF1ZXN0JiwgY29uc3QgQ2FjaGVRdWVy
eU9wdGlvbnMmLCBjb25zdCBWZWN0b3I8Q2FjaGVTdG9yYWdlUmVjb3JkPiYpOwogICAgIHZvaWQg
cXVlcnlDYWNoZShSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBXVEY6
OkZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8VmVjdG9yPENhY2hlU3RvcmFnZVJlY29yZD4+JiYp
PiYmKTsKICAgICB2b2lkIGJhdGNoRGVsZXRlT3BlcmF0aW9uKGNvbnN0IEZldGNoUmVxdWVzdCYs
IENhY2hlUXVlcnlPcHRpb25zJiYsIFdURjo6RnVuY3Rpb248dm9pZChFeGNlcHRpb25Pcjxib29s
PiYmKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtl
ckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCA0NzAwYjFjOGQwZmFjYmI1
NjQ5ZGQ3NDBlMjExOWQ1N2EyNjAxZDkxLi5hZjk1NWRlNDc3NGYxMWI0OTk0Y2QzNjU0ZTFiMTdl
MDNmNDZmNTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtl
ckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTE5NiwxMyArMTk2LDEz
IEBAIHN0YXRpYyBpbmxpbmUgUmVjb3Jkc09yRXJyb3IgcmVjb3Jkc09yRXJyb3JGcm9tUmVjb3Jk
c0RhdGEoRXhwZWN0ZWQ8VmVjdG9yPENyb3NzCiAgICAgcmV0dXJuIHJlY29yZHNGcm9tUmVjb3Jk
c0RhdGEoV1RGTW92ZShyZWNvcmRzRGF0YS52YWx1ZSgpKSk7CiB9CiAKLXZvaWQgV29ya2VyQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikKK3ZvaWQgV29ya2VyQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgbV9w
cm94eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXJdKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmKSBtdXRhYmxlIHsKKyAgICBtX3Byb3h5LnBvc3RUYXNrVG9Mb2FkZXIoW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRl
bnRpZmllciwgdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JikgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIEFT
U0VSVChtX21haW5UaHJlYWRDb25uZWN0aW9uKTsKIAotICAgICAgICBtX21haW5UaHJlYWRDb25u
ZWN0aW9uLT5yZXRyaWV2ZVJlY29yZHMoY2FjaGVJZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHJlcXVlc3RJZGVudGlmaWVyXShSZWNvcmRz
T3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIG1fbWFpblRocmVhZENvbm5lY3Rp
b24tPnJldHJpZXZlUmVjb3JkcyhjYWNoZUlkZW50aWZpZXIsIHVybCwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmllcl0oUmVjb3Jk
c09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgbV9wcm94eS5wb3N0VGFz
a0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92
ZShwcm90ZWN0ZWRUaGlzKSwgcmVzdWx0ID0gcmVjb3Jkc0RhdGFPckVycm9yRnJvbVJlY29yZHMo
cmVzdWx0KSwgcmVxdWVzdElkZW50aWZpZXJdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29u
dGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwogICAgICAgICAgICAgICAgIHVwZGF0ZVJlY29y
ZHMocmVxdWVzdElkZW50aWZpZXIsIHJlY29yZHNPckVycm9yRnJvbVJlY29yZHNEYXRhKFdURk1v
dmUocmVzdWx0KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9X
b3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaAppbmRleCA4YzViNDEwMzQ4ZDgzYTlj
ZDM0N2FiNjE4YjJlZTMxYzRmZDIwNTEzLi5lMzRmYTdiZjc3ZTY1ZGZjZTJhYjFhNTY1MzgzMWVi
MWQ4MDNhNGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtl
ckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaApAQCAtNDYsNyArNDYsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZG9SZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkb1JldHJpZXZlQ2FjaGVzKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgdWludDY0X3Qg
dXBkYXRlQ291bnRlcikgZmluYWw7CiAKLSAgICB2b2lkIGRvUmV0cmlldmVSZWNvcmRzKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpIGZpbmFsOwor
ICAgIHZvaWQgZG9SZXRyaWV2ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVp
bnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgVVJMJikgZmluYWw7CiAgICAgdm9pZCBkb0Jh
dGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBj
YWNoZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6
OkNhY2hlUXVlcnlPcHRpb25zJiYpIGZpbmFsOwogICAgIHZvaWQgZG9CYXRjaFB1dE9wZXJhdGlv
bih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBW
ZWN0b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4mJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJM
LmgKaW5kZXggOTdkYzg4MmMxZmIwOTc4YzdlMjUyMTEzOTFmODlmY2YyMzdiNzIwYi4uOGJlMGIx
NmM2ZTNlYzkyMDM0ZTY3NDY1ZTNlYzg4MjljZmRlN2NhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVVJMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmgK
QEAgLTE2MSwxMCArMTYxLDEwIEBAIHB1YmxpYzoKICAgICAvLyBUaGUgcXVlcnkgbWF5IGJlZ2lu
IHdpdGggYSBxdWVzdGlvbiBtYXJrLCBvciwgaWYgbm90LCBvbmUgd2lsbCBiZSBhZGRlZAogICAg
IC8vIGZvciB5b3UuIFNldHRpbmcgdGhlIHF1ZXJ5IHRvIHRoZSBlbXB0eSBzdHJpbmcgd2lsbCBs
ZWF2ZSBhICI/IiBpbiB0aGUKICAgICAvLyBVUkwgKHdpdGggbm90aGluZyBhZnRlciBpdCkuIFRv
IGNsZWFyIHRoZSBxdWVyeSwgcGFzcyBhIG51bGwgc3RyaW5nLgotICAgIHZvaWQgc2V0UXVlcnko
Y29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRRdWVyeShjb25zdCBT
dHJpbmcmKTsKIAogICAgIHZvaWQgc2V0RnJhZ21lbnRJZGVudGlmaWVyKFN0cmluZ1ZpZXcpOwot
ICAgIHZvaWQgcmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCByZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGZy
aWVuZCBib29sIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY29uc3QgVVJMJiwgY29u
c3QgVVJMJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCAxNGYyOTY3Yzk0ODk1YzBiYmVmNzM2
MThiYTA2NmZkNWYxZmQ3ZjBlLi5jYmE3ZDUxOThmNGY0OTBhZjIxZDgzNDk4M2ZiNjZiMmI5YTY5
YmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCkBAIC0xMjQsMTUgKzEyNCwxNSBAQCB2b2lkIEVuZ2lu
ZTo6cmV0cmlldmVDYWNoZXMoY29uc3QgU3RyaW5nJiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZUNv
dW50ZXIsIENhY2hlSQogICAgIH0pOwogfQogCi12b2lkIEVuZ2luZTo6cmV0cmlldmVSZWNvcmRz
KHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgUmVjb3Jkc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2
b2lkIEVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2Vi
Q29yZTo6VVJMJiYgdXJsLCBSZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICByZWFk
Q2FjaGUoY2FjaGVJZGVudGlmaWVyLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oQ2Fj
aGVPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICByZWFkQ2FjaGUoY2FjaGVJZGVudGlm
aWVyLCBbdXJsID0gV1RGTW92ZSh1cmwpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShD
YWNoZU9yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdC5oYXNW
YWx1ZSgpKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChyZXN1bHQuZXJy
b3IoKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY2FsbGJh
Y2socmVzdWx0LnZhbHVlKCkuZ2V0KCkucmVjb3JkcygpKTsKKyAgICAgICAgY2FsbGJhY2socmVz
dWx0LnZhbHVlKCkuZ2V0KCkucmV0cmlldmVSZWNvcmRzKHVybCkpOwogICAgIH0pOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmUuaAppbmRleCAyMmU5MmY3YTU1YTI2YjBhMGFkNTRkZGYxMWE5YzRiZTljOTljNjA2
Li4yYWY4ODE1OTFjNDYwZWQ5NWFlYzZkMzJkNTAzOGI3YTM3MTVhMDc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlKHVpbnQ2NF90IGNh
Y2hlSWRlbnRpZmllciwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllckNh
bGxiYWNrJiYpOwogICAgIHZvaWQgcmV0cmlldmVDYWNoZXMoY29uc3QgU3RyaW5nJiBvcmlnaW4s
IHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUlu
Zm9zQ2FsbGJhY2smJik7CiAKLSAgICB2b2lkIHJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNo
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJik7
CisgICAgdm9pZCByZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJD
b3JlOjpVUkwmJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNDYWxsYmFjayYmKTsK
ICAgICB2b2lkIHB1dFJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2Vi
Q29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4mJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6
OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CiAgICAgdm9pZCBkZWxldGVNYXRjaGluZ1Jl
Y29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6
OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5j
cHAKaW5kZXggN2IwNjc3ZjU4MjYyYWVmZjM1NDQ4NWQ1YmE0MTg1NmE4ZWZkN2Q4OS4uODM1ZDk1
YjI2ZGFkOTliMTUyZjA0OGY1ZTM1NzM4OWE4ODNjNmY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
YWNoZS5jcHAKQEAgLTQ5LDE5ICs0OSw4NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNw
YWNlIENhY2hlU3RvcmFnZSB7CiAKK3N0YXRpYyBpbmxpbmUgVmVjdG9yPHVpbnQ2NF90PiBxdWVy
eUNhY2hlKGNvbnN0IFZlY3RvcjxSZWNvcmQ+KiByZWNvcmRzLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJiBvcHRpb25zKQoreworICAgIGlm
ICghcmVjb3JkcykKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmICghb3B0aW9ucy5pZ25v
cmVNZXRob2QgJiYgcmVxdWVzdC5odHRwTWV0aG9kKCkgIT0gIkdFVCIpCisgICAgICAgIHJldHVy
biB7IH07CisKKyAgICBWZWN0b3I8dWludDY0X3Q+IHJlc3VsdHM7CisgICAgZm9yIChjb25zdCBh
dXRvJiByZWNvcmQgOiAqcmVjb3JkcykgeworICAgICAgICBpZiAoV2ViQ29yZTo6RE9NQ2FjaGVF
bmdpbmU6OnF1ZXJ5Q2FjaGVNYXRjaChyZXF1ZXN0LCByZWNvcmQucmVxdWVzdCwgcmVjb3JkLnJl
c3BvbnNlLCBvcHRpb25zKSkKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlY29yZC5pZGVu
dGlmaWVyKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdHM7Cit9CisKIENhY2hlOjpDYWNoZSh1
aW50NjRfdCBpZGVudGlmaWVyLCBTdHJpbmcmJiBuYW1lKQogICAgIDogbV9pZGVudGlmaWVyKGlk
ZW50aWZpZXIpCiAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKIHsKIH0KIAotVmVjdG9yPFJl
Y29yZD4gQ2FjaGU6OnJlY29yZHMoKSBjb25zdAorVmVjdG9yPFJlY29yZD4gQ2FjaGU6OnJldHJp
ZXZlUmVjb3Jkcyhjb25zdCBVUkwmIHVybCkgY29uc3QKK3sKKyAgICBpZiAodXJsLmlzTnVsbCgp
KSB7CisgICAgICAgIFZlY3RvcjxSZWNvcmQ+IHJlc3VsdDsKKyAgICAgICAgZm9yIChhdXRvJiBy
ZWNvcmRzIDogbV9yZWNvcmRzLnZhbHVlcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHJl
Y29yZCA6IHJlY29yZHMpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChyZWNvcmQuY29w
eSgpKTsKKyAgICAgICAgfQorICAgICAgICBzdGQ6OnNvcnQocmVzdWx0LmJlZ2luKCksIHJlc3Vs
dC5lbmQoKSwgW10oY29uc3QgYXV0byYgYSwgY29uc3QgYXV0byYgYikgeworICAgICAgICAgICAg
cmV0dXJuIGEuaWRlbnRpZmllciA8IGIuaWRlbnRpZmllcjsKKyAgICAgICAgfSk7CisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgY29uc3QgYXV0byogcmVjb3JkcyA9IHJlY29y
ZHNGcm9tVVJMKHVybCk7CisgICAgaWYgKCFyZWNvcmRzKQorICAgICAgICByZXR1cm4geyB9Owor
CisgICAgVmVjdG9yPFJlY29yZD4gcmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHJlY29yZHMtPnNpemUoKSk7CisgICAgZm9yIChhdXRvJiByZWNvcmQgOiAqcmVjb3Jk
cykKKyAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChyZWNvcmQuY29weSgpKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW5saW5lIFN0cmluZyBjb21wdXRlS2V5VVJMKGNv
bnN0IFVSTCYgdXJsKQoreworICAgIFVSTCBrZXlVUkwgPSB1cmw7CisgICAgaWYgKGtleVVSTC5o
YXNRdWVyeSgpKQorICAgICAgICBrZXlVUkwuc2V0UXVlcnkoeyB9KTsKKyAgICBrZXlVUkwucmVt
b3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIGtleVVSTDsKK30KKworUmVjb3Jk
JiBDYWNoZTo6YWRkTmV3VVJMUmVjb3JkKFJlY29yZCYmIHJlY29yZCkKK3sKKyAgICBhdXRvIGtl
eSA9IGNvbXB1dGVLZXlVUkwocmVjb3JkLnJlcXVlc3QudXJsKCkpOworICAgIEFTU0VSVCghbV9y
ZWNvcmRzLmNvbnRhaW5zKGtleSkpOworCisgICAgVmVjdG9yPFJlY29yZD4gbmV3UmVjb3JkczsK
KyAgICBuZXdSZWNvcmRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMSk7CisgICAgbmV3UmVjb3Jk
cy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShyZWNvcmQpKTsKKyAgICByZXR1cm4gbV9yZWNvcmRz
LnNldChrZXksIFdURk1vdmUobmV3UmVjb3JkcykpLml0ZXJhdG9yLT52YWx1ZS5sYXN0KCk7Cit9
CisKK1ZlY3RvcjxSZWNvcmQ+KiBDYWNoZTo6cmVjb3Jkc0Zyb21VUkwoY29uc3QgVVJMJiB1cmwp
Cit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fcmVjb3Jkcy5maW5kKGNvbXB1dGVLZXlVUkwodXJs
KSk7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fcmVjb3Jkcy5lbmQoKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuICZpdGVyYXRvci0+dmFsdWU7Cit9CisKK2NvbnN0IFZlY3Rv
cjxSZWNvcmQ+KiBDYWNoZTo6cmVjb3Jkc0Zyb21VUkwoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7
Ci0gICAgVmVjdG9yPFJlY29yZD4gcmVjb3JkczsKLSAgICByZWNvcmRzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkobV9yZWNvcmRzLnNpemUoKSk7Ci0gICAgZm9yIChhdXRvJiByZWNvcmQgOiBtX3Jl
Y29yZHMpCi0gICAgICAgIHJlY29yZHMudW5jaGVja2VkQXBwZW5kKHJlY29yZC5jb3B5KCkpOwot
ICAgIHJldHVybiByZWNvcmRzOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX3JlY29yZHMuZmluZChj
b21wdXRlS2V5VVJMKHVybCkpOworICAgIGlmIChpdGVyYXRvciA9PSBtX3JlY29yZHMuZW5kKCkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmaXRlcmF0b3ItPnZhbHVlOwog
fQogCiB2b2lkIENhY2hlOjpwdXQoVmVjdG9yPFJlY29yZD4mJiByZWNvcmRzLCBSZWNvcmRJZGVu
dGlmaWVyc0NhbGxiYWNrJiYgY2FsbGJhY2spCkBAIC03MSwyMCArMTM5LDI3IEBAIHZvaWQgQ2Fj
aGU6OnB1dChWZWN0b3I8UmVjb3JkPiYmIHJlY29yZHMsIFJlY29yZElkZW50aWZpZXJzQ2FsbGJh
Y2smJiBjYWxsYmFjaykKICAgICBWZWN0b3I8dWludDY0X3Q+IHJlY29yZElkZW50aWZpZXJzOwog
ICAgIHJlY29yZElkZW50aWZpZXJzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVjb3Jkcy5zaXpl
KCkpOwogICAgIGZvciAoYXV0byYgcmVjb3JkIDogcmVjb3JkcykgewotICAgICAgICBhdXRvIG1h
dGNoaW5nUmVjb3JkcyA9IHF1ZXJ5Q2FjaGUocmVjb3JkLnJlcXVlc3QsIG9wdGlvbnMpOworICAg
ICAgICBhdXRvKiBzYW1lVVJMUmVjb3JkcyA9IHJlY29yZHNGcm9tVVJMKHJlY29yZC5yZXF1ZXN0
LnVybCgpKTsKKworICAgICAgICBhdXRvIG1hdGNoaW5nUmVjb3JkcyA9IHF1ZXJ5Q2FjaGUoc2Ft
ZVVSTFJlY29yZHMsIHJlY29yZC5yZXF1ZXN0LCBvcHRpb25zKTsKICAgICAgICAgaWYgKG1hdGNo
aW5nUmVjb3Jkcy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIHJlY29yZC5pZGVudGlmaWVyID0g
KyttX25leHRSZWNvcmRJZGVudGlmaWVyOwogICAgICAgICAgICAgcmVjb3JkSWRlbnRpZmllcnMu
dW5jaGVja2VkQXBwZW5kKHJlY29yZC5pZGVudGlmaWVyKTsKLSAgICAgICAgICAgIG1fcmVjb3Jk
cy5hcHBlbmQoV1RGTW92ZShyZWNvcmQpKTsKIAogICAgICAgICAgICAgc2hvdWxkV3JpdGVSZWNv
cmRMaXN0ID0gdHJ1ZTsKLSAgICAgICAgICAgIHdyaXRlUmVjb3JkVG9EaXNrKG1fcmVjb3Jkcy5s
YXN0KCkpOworICAgICAgICAgICAgaWYgKCFzYW1lVVJMUmVjb3JkcykgeworICAgICAgICAgICAg
ICAgIGF1dG8mIHJlY29yZFRvV3JpdGUgPSBhZGROZXdVUkxSZWNvcmQoV1RGTW92ZShyZWNvcmQp
KTsKKyAgICAgICAgICAgICAgICB3cml0ZVJlY29yZFRvRGlzayhyZWNvcmRUb1dyaXRlKTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2FtZVVSTFJlY29yZHMtPmFwcGVu
ZChXVEZNb3ZlKHJlY29yZCkpOworICAgICAgICAgICAgICAgIHdyaXRlUmVjb3JkVG9EaXNrKHNh
bWVVUkxSZWNvcmRzLT5sYXN0KCkpOworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gbWF0Y2hpbmdSZWNvcmRzWzBdOwotICAgICAg
ICAgICAgYXV0byBwb3NpdGlvbiA9IG1fcmVjb3Jkcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1
dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0uaWRlbnRpZmllciA9PSBpZGVudGlmaWVyOyB9KTsKKyAg
ICAgICAgICAgIGF1dG8gcG9zaXRpb24gPSBzYW1lVVJMUmVjb3Jkcy0+ZmluZE1hdGNoaW5nKFsm
XShjb25zdCBhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLmlkZW50aWZpZXIgPT0gaWRlbnRpZmll
cjsgfSk7CiAgICAgICAgICAgICBBU1NFUlQocG9zaXRpb24gIT0gbm90Rm91bmQpOwogICAgICAg
ICAgICAgaWYgKHBvc2l0aW9uICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYg
ZXhpc3RpbmdSZWNvcmQgPSBtX3JlY29yZHNbcG9zaXRpb25dOworICAgICAgICAgICAgICAgIGF1
dG8mIGV4aXN0aW5nUmVjb3JkID0gKCpzYW1lVVJMUmVjb3JkcylbcG9zaXRpb25dOwogICAgICAg
ICAgICAgICAgIHJlY29yZElkZW50aWZpZXJzLnVuY2hlY2tlZEFwcGVuZChpZGVudGlmaWVyKTsK
ICAgICAgICAgICAgICAgICBleGlzdGluZ1JlY29yZC5yZXNwb25zZUhlYWRlcnNHdWFyZCA9IHJl
Y29yZC5yZXNwb25zZUhlYWRlcnNHdWFyZDsKICAgICAgICAgICAgICAgICBleGlzdGluZ1JlY29y
ZC5yZXNwb25zZSA9IFdURk1vdmUocmVjb3JkLnJlc3BvbnNlKTsKQEAgLTExMSwyMCArMTg2LDE5
IEBAIHZvaWQgQ2FjaGU6OnB1dChWZWN0b3I8UmVjb3JkPiYmIHJlY29yZHMsIFJlY29yZElkZW50
aWZpZXJzQ2FsbGJhY2smJiBjYWxsYmFjaykKIAogdm9pZCBDYWNoZTo6cmVtb3ZlKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYg
b3B0aW9ucywgUmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIGF1
dG8gcmVjb3JkSWRlbnRpZmllcnMgPSBxdWVyeUNhY2hlKHJlcXVlc3QsIG9wdGlvbnMpOworICAg
IGF1dG8qIHJlY29yZHMgPSByZWNvcmRzRnJvbVVSTChyZXF1ZXN0LnVybCgpKTsKKyAgICBhdXRv
IHJlY29yZElkZW50aWZpZXJzID0gcXVlcnlDYWNoZShyZWNvcmRzLCByZXF1ZXN0LCBvcHRpb25z
KTsKICAgICBpZiAocmVjb3JkSWRlbnRpZmllcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNhbGxi
YWNrKHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8UmVjb3JkPiBy
ZWNvcmRzVG9LZWVwOwotICAgIGZvciAoYXV0byYgcmVjb3JkIDogbV9yZWNvcmRzKSB7Ci0gICAg
ICAgIGlmIChyZWNvcmRJZGVudGlmaWVycy5maW5kTWF0Y2hpbmcoWyZdKGF1dG8gaXRlbSkgeyBy
ZXR1cm4gaXRlbSA9PSByZWNvcmQuaWRlbnRpZmllcjsgfSkgPT0gbm90Rm91bmQpCi0gICAgICAg
ICAgICByZWNvcmRzVG9LZWVwLmFwcGVuZChXVEZNb3ZlKHJlY29yZCkpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICByZW1vdmVSZWNvcmRGcm9tRGlzayhyZWNvcmQpOwotICAgIH0KLSAgICBt
X3JlY29yZHMgPSBXVEZNb3ZlKHJlY29yZHNUb0tlZXApOworICAgIHJlY29yZHMtPnJlbW92ZUFs
bE1hdGNoaW5nKFt0aGlzLCAmcmVjb3JkSWRlbnRpZmllcnNdKGF1dG8mIGl0ZW0pIHsKKyAgICAg
ICAgYm9vbCBzaG91bGRSZW1vdmUgPSByZWNvcmRJZGVudGlmaWVycy5maW5kTWF0Y2hpbmcoWyZp
dGVtXShhdXRvIGlkZW50aWZpZXIpIHsgcmV0dXJuIGlkZW50aWZpZXIgPT0gaXRlbS5pZGVudGlm
aWVyOyB9KSAhPSBub3RGb3VuZDsKKyAgICAgICAgaWYgKHNob3VsZFJlbW92ZSkKKyAgICAgICAg
ICAgIHRoaXMtPnJlbW92ZVJlY29yZEZyb21EaXNrKGl0ZW0pOworICAgICAgICByZXR1cm4gc2hv
dWxkUmVtb3ZlOworICAgIH0pOwogCiAgICAgd3JpdGVSZWNvcmRzTGlzdChbY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKSwgcmVjb3JkSWRlbnRpZmllcnMgPSBXVEZNb3ZlKHJlY29yZElkZW50
aWZpZXJzKV0oc3RkOjpvcHRpb25hbDxFcnJvcj4mJiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAg
IGlmIChlcnJvcikgewpAQCAtMTM1LDE5ICsyMDksNiBAQCB2b2lkIENhY2hlOjpyZW1vdmUoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlv
bgogICAgIH0pOwogfQogCi1WZWN0b3I8dWludDY0X3Q+IENhY2hlOjpxdWVyeUNhY2hlKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmIG9wdGlv
bnMpCi17Ci0gICAgaWYgKCFvcHRpb25zLmlnbm9yZU1ldGhvZCAmJiByZXF1ZXN0Lmh0dHBNZXRo
b2QoKSAhPSAiR0VUIikKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIFZlY3Rvcjx1aW50NjRf
dD4gcmVzdWx0czsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHJlY29yZCA6IG1fcmVjb3Jkcykgewot
ICAgICAgICBpZiAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OnF1ZXJ5Q2FjaGVNYXRjaChyZXF1
ZXN0LCByZWNvcmQucmVxdWVzdCwgcmVjb3JkLnJlc3BvbnNlLCBvcHRpb25zKSkKLSAgICAgICAg
ICAgIHJlc3VsdHMuYXBwZW5kKHJlY29yZC5pZGVudGlmaWVyKTsKLSAgICB9Ci0gICAgcmV0dXJu
IHJlc3VsdHM7Ci19Ci0KIHZvaWQgQ2FjaGU6OndyaXRlUmVjb3Jkc0xpc3QoQ29tcGxldGlvbkNh
bGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDYWNoZS5oCmluZGV4IGRlZjg2ZjUwMjA1Y2M5ZjI3MWE5NzljZTgyYmM3MGQz
OGQ0NGQ1MTUuLjE4ZDY5NzY2NDlmNjU4MGM1MDQyNzNhOTllYjk2ODllMzM3NDlkOTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNhY2hlLmgKQEAgLTQwLDE0ICs0MCwxNiBAQCBwdWJsaWM6CiAgICAgdWlu
dDY0X3QgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIGNv
bnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogCi0gICAgVmVjdG9y
PFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IHJlY29yZHMoKSBjb25zdDsKKyAgICBW
ZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gcmV0cmlldmVSZWNvcmRzKGNv
bnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OwogICAgIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpD
YWNoZUluZm8gaW5mbygpIGNvbnN0IHsgcmV0dXJuIHsgbV9pZGVudGlmaWVyLCBtX25hbWUgfTsg
fQogCiAgICAgdm9pZCBwdXQoVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+
JiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYp
OwogICAgIHZvaWQgcmVtb3ZlKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpD
YWNoZVF1ZXJ5T3B0aW9ucyYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRp
ZmllcnNDYWxsYmFjayYmKTsKIAogcHJpdmF0ZToKLSAgICBWZWN0b3I8dWludDY0X3Q+IHF1ZXJ5
Q2FjaGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6Q2Fj
aGVRdWVyeU9wdGlvbnMmKTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJl
Y29yZD4qIHJlY29yZHNGcm9tVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiogcmVjb3Jkc0Zyb21VUkwoY29u
c3QgV2ViQ29yZTo6VVJMJikgY29uc3Q7CisgICAgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJl
Y29yZCYgYWRkTmV3VVJMUmVjb3JkKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQmJik7
CiAKICAgICB2b2lkIHdyaXRlUmVjb3Jkc0xpc3QoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNv
bXBsZXRpb25DYWxsYmFjayYmKTsKICAgICB2b2lkIHdyaXRlUmVjb3JkVG9EaXNrKFdlYkNvcmU6
OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQmKTsKQEAgLTU1LDcgKzU3LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHVpbnQ2NF90IG1faWRlbnRpZmllciB7IDAgfTsKICAgICBTdHJpbmcgbV9uYW1lOwotICAg
IFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiBtX3JlY29yZHM7CisgICAg
SGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPj4g
bV9yZWNvcmRzOwogICAgIHVpbnQ2NF90IG1fbmV4dFJlY29yZElkZW50aWZpZXIgeyAwIH07CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcAppbmRleCBiNzNiMTU1NzE1
YWZkZDk4ZDJkOTg3MzliYjdjMDMzYjIyYzVkNDVlLi5jZWEyZWJjMzUwMmM5NDM0MzBjYzRjNTQy
YzFmZWJiYTdkOGFkNjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAK
QEAgLTY4LDkgKzY4LDkgQEAgdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpjbGVh
ck1lbW9yeVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3MKICAgICBFbmdpbmU6OmZy
b20oc2Vzc2lvbklEKS5jbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKG9yaWdpbik7CiB9CiAKLXZv
aWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cmVjb3JkcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIpCit2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnJldHJpZXZlUmVjb3Jk
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCYmIHVybCkKIHsKLSAgICBFbmdp
bmU6OmZyb20oc2Vzc2lvbklEKS5yZXRyaWV2ZVJlY29yZHMoY2FjaGVJZGVudGlmaWVyLCBbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCBzZXNzaW9uSUQsIHJlcXVlc3RJZGVu
dGlmaWVyXShSZWNvcmRzT3JFcnJvciYmIHJlc3VsdCkgeworICAgIEVuZ2luZTo6ZnJvbShzZXNz
aW9uSUQpLnJldHJpZXZlUmVjb3JkcyhjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUodXJsKSwgW3By
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgc2Vzc2lvbklELCByZXF1ZXN0SWRl
bnRpZmllcl0oUmVjb3Jkc09yRXJyb3ImJiByZXN1bHQpIHsKICAgICAgICAgbV9jb25uZWN0aW9u
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpV
cGRhdGVSZWNvcmRzKHJlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQpLCBzZXNzaW9uSUQuc2Vzc2lv
bklEKCkpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaAppbmRl
eCBhMzNlMTQ3ZTc0YmYzZmYyNGFkN2NhM2EwYzQwNTVjM2UyYWRmNGI2Li5hZGJmNGFjOThhMzM4
YTdjZDQwNDdjMjM5NDVlM2NlYTU4OGZiNWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5l
Y3Rpb24uaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjbGVhck1lbW9y
eVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIG9yaWdpbik7CiAK
LSAgICB2b2lkIHJlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOworICAgIHZvaWQgcmV0cmlldmVSZWNvcmRz
KFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyLCBXZWJDb3JlOjpVUkwmJik7CiAgICAgdm9pZCBkZWxldGVNYXRjaGluZ1Jl
Y29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRf
dCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpD
YWNoZVF1ZXJ5T3B0aW9ucyYmKTsKICAgICB2b2lkIHB1dFJlY29yZHMoUEFMOjpTZXNzaW9uSUQs
IHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZl
Y3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDA3N2Q5M2JiMmVl
NTQxMzFjYjI3OTJiMzQ3ZjRiYmRjYzgyNTNjNWMuLjRmNjFiNjc4NmZmMjI4ZDNhYjQwOTQwMGUw
NGYzMWRjYTk4NGNkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KQEAgLTI3LDcgKzI3LDcgQEAgbWVzc2FnZXMgLT4gQ2FjaGVTdG9yYWdl
RW5naW5lQ29ubmVjdGlvbiB7CiAKICAgICBDbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIG9yaWdpbik7CiAKLSAgICBSZWNvcmRzKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllcik7CisgICAgUmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgV2ViQ29yZTo6VVJMIHVybCk7CiAgICAgRGVsZXRlTWF0Y2hpbmdSZWNvcmRzKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVj
dCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyBvcHRpb25zKTsKICAgICBQdXRSZWNvcmRzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNv
cmQ+IHJlY29yZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2Fj
aGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggNDYxMjEwZGZlNTQx
NjNlNzQzMzAzY2QyZGY2ZDE4MTM3NzA2MTE4Ny4uODE4YjlkMGZlZjQ5MGE5Mzk4ZWE5MGI1YjAx
Njg0MWM4MWM5NjkwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hl
L1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNzEsOSArNzEsOSBA
QCB2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVDYWNoZXModWludDY0
X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbgogICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpDYWNoZXMobV9zZXNzaW9uSUQsIHJlcXVl
c3RJZGVudGlmaWVyLCBvcmlnaW4sIHVwZGF0ZUNvdW50ZXIpLCAwKTsKIH0KIAotdm9pZCBXZWJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKQordm9pZCBXZWJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOjpkb1JldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKIHsK
LSAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbjo6UmVjb3JkcyhtX3Nlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRp
ZmllciksIDApOworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpDYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uOjpSZXRyaWV2ZVJlY29yZHMobV9zZXNzaW9uSUQsIHJlcXVlc3RJZGVu
dGlmaWVyLCBjYWNoZUlkZW50aWZpZXIsIHVybCksIDApOwogfQogCiB2b2lkIFdlYkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OmRvQmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uaAppbmRleCA2ZTkzN2RmZDNhMjJiOWVkMTE0NTVlMWZiODRjMmJk
YmI0NjViOGEwLi45ZjJhZWQyN2I2MzU1ZGY2OTE5N2Y2N2FiZDM0NTc0YmVhY2M3ZTg0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRv
UmVtb3ZlKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIpIGZpbmFsOwogICAgIHZvaWQgZG9SZXRyaWV2ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIpIGZp
bmFsOwogCi0gICAgdm9pZCBkb1JldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRp
ZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICB2b2lkIGRvUmV0cmll
dmVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIGZpbmFsOwogICAgIHZvaWQgZG9CYXRjaERlbGV0
ZU9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpDYWNoZVF1
ZXJ5T3B0aW9ucyYmKSBmaW5hbDsKICAgICB2b2lkIGRvQmF0Y2hQdXRPcGVyYXRpb24odWludDY0
X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFdl
YkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+JiYpIGZpbmFsOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>