<?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>181637</bug_id>
          
          <creation_ts>2018-01-14 12:43:47 -0800</creation_ts>
          <short_desc>Add injected bundle SPI to replace subresource URLs when dropping or pasting rich content</short_desc>
          <delta_ts>2018-01-17 09:08:51 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</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="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>mitz</cc>
    
    <cc>rniwa</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1389213</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-01-14 12:43:47 -0800</bug_when>
    <thetext>&lt;rdar://problem/36508471&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389214</commentid>
    <comment_count>1</comment_count>
      <attachid>331309</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-01-14 13:24:38 -0800</bug_when>
    <thetext>Created attachment 331309
First pass</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389219</commentid>
    <comment_count>2</comment_count>
      <attachid>331312</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-01-14 14:27:43 -0800</bug_when>
    <thetext>Created attachment 331312
Try to fix Windows builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389792</commentid>
    <comment_count>3</comment_count>
      <attachid>331312</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-01-16 16:53:38 -0800</bug_when>
    <thetext>Comment on attachment 331312
Try to fix Windows builds

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

&gt; Source/WebCore/editing/cocoa/WebContentReaderCocoa.mm:293
&gt; +    HashMap&lt;AtomicString, AtomicString&gt; subresourceURLToClientURLMap;

Don’t see the need for AtomicString?

&gt; Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePageEditorClient.h:110
&gt; +    WKBundlePageReplacementURLForResource                               replacementURLForResource;

This is a big no-no. You need to make a new version and append this to the bottom.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389828</commentid>
    <comment_count>4</comment_count>
      <attachid>331312</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-01-16 19:09:09 -0800</bug_when>
    <thetext>Comment on attachment 331312
Try to fix Windows builds

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

&gt;&gt; Source/WebCore/editing/cocoa/WebContentReaderCocoa.mm:293
&gt;&gt; +    HashMap&lt;AtomicString, AtomicString&gt; subresourceURLToClientURLMap;
&gt; 
&gt; Don’t see the need for AtomicString?

Just spoke with Ryosuke about this — since the keys and values of this dictionary are either element attribute values or going to become attribute values after replacement, we&apos;ll end up making AtomicStrings for these anyways. For this reason, the existing blobURLMaps also in this file are HashMap&lt;AtomicString, AtomicString&gt;, so it seems like this should also be a HashMap&lt;AtomicString, AtomicString&gt;.

&gt;&gt; Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePageEditorClient.h:110
&gt;&gt; +    WKBundlePageReplacementURLForResource                               replacementURLForResource;
&gt; 
&gt; This is a big no-no. You need to make a new version and append this to the bottom.

Got it — fixed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389833</commentid>
    <comment_count>5</comment_count>
      <attachid>331450</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-01-16 19:19:40 -0800</bug_when>
    <thetext>Created attachment 331450
Bump WKBundlePageEditorClient version</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389836</commentid>
    <comment_count>6</comment_count>
      <attachid>331452</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-01-16 19:29:00 -0800</bug_when>
    <thetext>Created attachment 331452
Bump WKBundlePageEditorClient version</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1390031</commentid>
    <comment_count>7</comment_count>
      <attachid>331452</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-17 09:07:51 -0800</bug_when>
    <thetext>Comment on attachment 331452
Bump WKBundlePageEditorClient version

Clearing flags on attachment: 331452

Committed r227068: &lt;https://trac.webkit.org/changeset/227068&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331309</attachid>
            <date>2018-01-14 13:24:38 -0800</date>
            <delta_ts>2018-01-14 14:27:42 -0800</delta_ts>
            <desc>First pass</desc>
            <filename>bug-181637-20180114132437.patch</filename>
            <type>text/plain</type>
            <size>38910</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2OTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTZlMjNmMDFkNTU4YzQz
NDk5NGFkMjk0MzZiODAwMWM4MWMwOTZjMy4uMmI3NGQ5OGRlMmNhZTc1MjgxNWQ0N2M0OTMwN2M4
OTZjMGUzMTQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE4LTAxLTE0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBpbmplY3Rl
ZCBidW5kbGUgU1BJIHRvIHJlcGxhY2Ugc3VicmVzb3VyY2UgVVJMcyB3aGVuIGRyb3BwaW5nIG9y
IHBhc3RpbmcgcmljaCBjb250ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODE2MzcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2NTA4NDcxPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJlZm9yZSBj
YXJyeWluZyBvdXQgYmxvYiBVUkwgY29udmVyc2lvbiBmb3IgcGFzdGVkIG9yIGRyb3BwZWQgcmlj
aCBjb250ZW50LCBsZXQgdGhlIGVkaXRvciBjbGllbnQgcmVwbGFjZQorICAgICAgICBzdWJyZXNv
dXJjZSBVUkxzIGluIFdlYktpdDIgYnkgY2FsbGluZyBvdXQgdG8gbmV3IGluamVjdGVkIGJ1bmRs
ZSBTUEkuIFNlZSBjb21tZW50cyBiZWxvdyBmb3IgbW9yZSBkZXRhaWwuCisKKyAgICAgICAgVGVz
dHM6ICBXS0F0dGFjaG1lbnRUZXN0cy5JbmplY3RlZEJ1bmRsZVJlcGxhY2VVUkxzV2hlblBhc3Rp
bmdBdHRyaWJ1dGVkU3RyaW5nCisgICAgICAgICAgICAgICAgV0tBdHRhY2htZW50VGVzdHMuSW5q
ZWN0ZWRCdW5kbGVSZXBsYWNlVVJMV2hlblBhc3RpbmdJbWFnZQorCisgICAgICAgICogZWRpdGlu
Zy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjbGllbnRSZXBsYWNlbWVu
dFVSTEZvclJlc291cmNlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorCisgICAgICAg
IEFkZCBhIG5ldyBoZWxwZXIgdG8gY2FsbCBvdXQgdG8gdGhlIGVkaXRvciBjbGllbnQgZm9yIGEg
VVJMIHN0cmluZyB0byByZXBsYWNlIGEgZ2l2ZW4gQXJjaGl2ZVJlc291cmNlLiBJbgorICAgICAg
ICBXZWJLaXQyLCB0aGlzIGNhbGxzIG91dCB0byB0aGUgaW5qZWN0ZWQgYnVuZGxlJ3MgbmV3IGBy
ZXBsYWNlbWVudFVSTEZvclJlc291cmNlYCBTUEkgaG9vay4KKworICAgICAgICAqIGVkaXRpbmcv
Y29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxk
UmVwbGFjZVN1YnJlc291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29u
dGVudFdpdGhBdHRhY2htZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpyZXBsYWNlU3VicmVzb3Vy
Y2VVUkxzV2l0aFVSTHNGcm9tQ2xpZW50KToKKworICAgICAgICBBZGQgYSBuZXcgc3RhdGljIGhl
bHBlciB0byByZXBsYWNlIHN1YnJlc291cmNlIFVSTHMgaW4gdGhlIGdpdmVuIERvY3VtZW50RnJh
Z21lbnQgd2l0aCBVUkxzIHN1cHBsaWVkIGJ5IHRoZQorICAgICAgICBlZGl0b3IgY2xpZW50LiBB
ZGRpdGlvbmFsbHkgYnVpbGRzIGEgbGlzdCBvZiBBcmNoaXZlUmVzb3VyY2VzIHRoYXQgaGF2ZSBu
b3QgYmVlbiByZXBsYWNlZCwgZm9yIHVzZSBhdCBjYWxsIHNpdGVzCisgICAgICAgIHNvIHRoYXQg
d2UgZG9uJ3QgdW5uZWNlc3NhcmlseSBjcmVhdGUgbW9yZSBCbG9icyBmb3IgQXJjaGl2ZVJlc291
cmNlcyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIHJlcGxhY2VkLgorCisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5p
dGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToKKworICAgICAgICBUd2VhayB3ZWIgY29udGVudCByZWFk
aW5nIGNvZGVwYXRocyB0byBmaXJzdCByZXBsYWNlIHN1YnJlc291cmNlIFVSTHMgd2l0aCBlZGl0
b3ItY2xpZW50LXN1cHBsaWVkIFVSTHMuCisKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRS
ZWFkZXI6OnJlYWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRDb252ZXJ0VG9CbG9i
KTogRGVsZXRlZC4KKworICAgICAgICBSZW5hbWUgdGhpcyBoZWxwZXIgdG8gc2hvdWxkUmVwbGFj
ZVN1YnJlc291cmNlVVJMLCBibG9iIFVSTCByZXBsYWNlbWVudCBpcyBubyBsb25nZXIgdGhlIG9u
bHkgc2NlbmFyaW8gaW4gd2hpY2gKKyAgICAgICAgd2UgcmVwbGFjZSByZXNvdXJjZSBVUkxzLCBi
dXQgaW4gYm90aCBjYXNlcywgd2Ugc3RpbGwgd2FudCB0byBpZ25vcmUgYGh0dHA6YC1mYW1pbHkg
YW5kIGBkYXRhOmAgVVJMcy4KKworICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgor
ICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6CisKIDIwMTgtMDEtMTIgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiByZWdpc3Ry
YXRpb24gfHwgaXNUZXJtaW5hdGluZygpIGluIFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpza2lw
V2FpdGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlmY2YxYTkzMDRjMjAyN2U1YTQ4YmFiZTEwZTQ5N2NjZjRl
Y2U5YmIuLmFiNzIwMmJmOWIzYTEyM2Q5ZThlMWE5NDNiNDQ3YjA3ZWU5YWRjMDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjcgQEAKKzIwMTgtMDEtMTQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGluamVjdGVkIGJ1bmRsZSBTUEkgdG8gcmVwbGFj
ZSBzdWJyZXNvdXJjZSBVUkxzIHdoZW4gZHJvcHBpbmcgb3IgcGFzdGluZyByaWNoIGNvbnRlbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTYzNwor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzY1MDg0NzE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG5ldyBpbmplY3RlZCBidW5kbGUgU1BJLCBy
ZXBsYWNlbWVudFVSTEZvclJlc291cmNlLCB3aGljaCBjbGllbnRzIG1heSB1c2UgdG8gcHJvdmlk
ZSBhIHJlcGxhY2VtZW50IFVSTCB0bworICAgICAgICByZXByZXNlbnQgYW4gYXJjaGl2ZSByZXNv
dXJjZSwgZ2l2ZW4gdGhlIHJlc291cmNlJ3MgZGF0YSBhbmQgTUlNRSB0eXBlLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JD
bGllbnQuaDoKKyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudDo6cmVw
bGFjZW1lbnRVUkxGb3JSZXNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VFZGl0b3JD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tX
ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtX
S1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgX3NldEVkaXRpbmdEZWxl
Z2F0ZTpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxl
UGFnZUVkaXRvckNsaWVudDo6cmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6cmVwbGFjZW1lbnRVUkxGb3JS
ZXNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaDoKKwogMjAxOC0wMS0xMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBzcGVjdWxhdGl2ZSBidWlsZCBmaXggYWZ0ZXIg
cjIyNjg5OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBlMjhmYjMzZjBhZDE4NzRm
ZGIyNjZlMTk4MDMxM2Y1NjhhNzhiNGNjLi5jNGY5MGQ3ODQzNDM5N2ZkZGI3ODhlNjRkMjc5NWMx
ZmM3Y2QzZmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTgtMDEtMTQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkIGluamVjdGVkIGJ1bmRsZSBTUEkgdG8gcmVwbGFjZSBzdWJyZXNvdXJjZSBVUkxz
IHdoZW4gZHJvcHBpbmcgb3IgcGFzdGluZyByaWNoIGNvbnRlbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTYzNworICAgICAgICA8cmRhcjovL3By
b2JsZW0vMzY1MDg0NzE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGEgc3R1YiBpbXBsZW1lbnRhdGlvbiBvZiByZXBsYWNlbWVudFVSTEZvclJl
c291cmNlLiBTZWUgV2ViQ29yZSBhbmQgV2ViS2l0IENoYW5nZUxvZ3MgZm9yIG1vcmUgZGV0YWls
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9y
Q2xpZW50OjpyZXBsYWNlbWVudFVSTEZvclJlc291cmNlKToKKwogMjAxOC0wMS0xMSAgS2VpdGgg
TWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgRU5BQkxF
X0FTWU5DX0lURVJBVElPTiB0byBFTkFCTEVfSlNfQVNZTkNfSVRFUkFUSU9OCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAKaW5kZXggOTZlYzFlOWYzMDY0ZDVmYTc3MDJlZTAxZDQ0OWVmZjI3Y2My
ZDYwNS4uMDM3ZDY0Njc5YTU5ODJlZmQyZjhkZGE4MTAyNTMxOTY3YzUwZGRlYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzk1Miw0ICszOTUyLDEyIEBAIGNvbnN0IEZvbnQqIEVk
aXRvcjo6Zm9udEZvclNlbGVjdGlvbihib29sJiBoYXNNdWx0aXBsZUZvbnRzKSBjb25zdAogICAg
IHJldHVybiBmb250OwogfQogCitTdHJpbmcgRWRpdG9yOjpjbGllbnRSZXBsYWNlbWVudFVSTEZv
clJlc291cmNlKFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzb3VyY2VEYXRhLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKQoreworICAgIGlmIChhdXRvKiBlZGl0b3JDbGllbnQgPSBjbGllbnQoKSkKKyAg
ICAgICAgcmV0dXJuIGVkaXRvckNsaWVudC0+cmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZShXVEZN
b3ZlKHJlc291cmNlRGF0YSksIG1pbWVUeXBlKTsKKworICAgIHJldHVybiB7IH07Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IGU2YTg5Njdl
ZDk0YjRmODU1YmJjM2E1YzU1NDkxNzhhYWZhMGRiZDUuLjAxNDlmYzIxMDE4ODU4ZTFiMDVmMzZh
MTBmZmU3ODQ2OWZlYzNmNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtNDg0LDYgKzQ4
NCw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VTZWxlY3Rpb25X
aXRoQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKiwgTWFpbEJsb2NrcXVvdGVI
YW5kbGluZyA9IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3RlKTsKICNl
bmRpZgogCisgICAgU3RyaW5nIGNsaWVudFJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiByZXNvdXJjZURhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworCiAj
aWYgIVBMQVRGT1JNKFdJTikKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlU2VsZWN0aW9u
VG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRl
SW1hZ2VUb1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYsIEVsZW1lbnQmIGltYWdlRWxlbWVudCwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCmluZGV4IDFiOWFlM2ZlNDVj
OWM0ODY5MjZlOGMyN2MyZTY1MTYwMDdhNmUxOGMuLjAzZTE4YzBiZTMxMzA1MzUxNGYyODRlOTRi
MTRkNWZmOTAxMTI2NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
V2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC0xNzUsNyArMTc1LDcgQEAgcHJpdmF0ZToK
IH07CiAKIAotc3RhdGljIGJvb2wgc2hvdWxkQ29udmVydFRvQmxvYihjb25zdCBVUkwmIHVybCkK
K3N0YXRpYyBib29sIHNob3VsZFJlcGxhY2VTdWJyZXNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkK
IHsKICAgICByZXR1cm4gISh1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IHVybC5wcm90
b2NvbElzRGF0YSgpKTsKIH0KQEAgLTIyMyw3ICsyMjMsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNl
UmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIGNv
bnN0CiAgICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFJlZjxCbG9iPj4gdXJsVG9CbG9iTWFwOwog
ICAgIGZvciAoY29uc3QgUmVmPEFyY2hpdmVSZXNvdXJjZT4mIHN1YnJlc291cmNlIDogc3VicmVz
b3VyY2VzKSB7CiAgICAgICAgIGF1dG8mIHVybCA9IHN1YnJlc291cmNlLT51cmwoKTsKLSAgICAg
ICAgaWYgKHNob3VsZENvbnZlcnRUb0Jsb2IodXJsKSkKKyAgICAgICAgaWYgKHNob3VsZFJlcGxh
Y2VTdWJyZXNvdXJjZVVSTCh1cmwpKQogICAgICAgICAgICAgdXJsVG9CbG9iTWFwLnNldCh1cmwu
c3RyaW5nKCksIEJsb2I6OmNyZWF0ZShzdWJyZXNvdXJjZS0+ZGF0YSgpLCBzdWJyZXNvdXJjZS0+
bWltZVR5cGUoKSkpOwogICAgIH0KIApAQCAtMjg2LDYgKzI4NiwzMCBAQCBzdGF0aWMgdm9pZCBy
ZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21l
bnQsIGNvbnN0CiAjZW5kaWYKIH0KIAorc3RhdGljIHZvaWQgcmVwbGFjZVN1YnJlc291cmNlVVJM
c1dpdGhVUkxzRnJvbUNsaWVudChEb2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCwgY29uc3QgVmVj
dG9yPFJlZjxBcmNoaXZlUmVzb3VyY2U+PiYgc3VicmVzb3VyY2VzLCBWZWN0b3I8UmVmPEFyY2hp
dmVSZXNvdXJjZT4+JiBvdXRVbnJlcGxhY2VkUmVzb3VyY2VzKQoreworICAgIEFTU0VSVChmcmFn
bWVudC5kb2N1bWVudCgpLmZyYW1lKCkpOworICAgIGF1dG8mIGZyYW1lID0gKmZyYWdtZW50LmRv
Y3VtZW50KCkuZnJhbWUoKTsKKyAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgQXRvbWljU3RyaW5n
PiBzdWJyZXNvdXJjZVVSTFRvQ2xpZW50VVJMTWFwOworICAgIGZvciAoYXV0byYgc3VicmVzb3Vy
Y2UgOiBzdWJyZXNvdXJjZXMpIHsKKyAgICAgICAgYXV0byYgb3JpZ2luYWxVUkwgPSBzdWJyZXNv
dXJjZS0+dXJsKCk7CisgICAgICAgIGlmICghc2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKG9y
aWdpbmFsVVJMKSkgeworICAgICAgICAgICAgb3V0VW5yZXBsYWNlZFJlc291cmNlcy5hcHBlbmQo
c3VicmVzb3VyY2UuY29weVJlZigpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisKKyAgICAgICAgYXV0byByZXBsYWNlbWVudFVSTCA9IGZyYW1lLmVkaXRvcigpLmNsaWVudFJl
cGxhY2VtZW50VVJMRm9yUmVzb3VyY2Uoc3VicmVzb3VyY2UtPmRhdGEoKSwgc3VicmVzb3VyY2Ut
Pm1pbWVUeXBlKCkpOworICAgICAgICBpZiAocmVwbGFjZW1lbnRVUkwuaXNFbXB0eSgpKSB7Cisg
ICAgICAgICAgICBvdXRVbnJlcGxhY2VkUmVzb3VyY2VzLmFwcGVuZChzdWJyZXNvdXJjZS5jb3B5
UmVmKCkpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBzdWJy
ZXNvdXJjZVVSTFRvQ2xpZW50VVJMTWFwLnNldChvcmlnaW5hbFVSTC5zdHJpbmcoKSwgcmVwbGFj
ZW1lbnRVUkwpOworICAgIH0KKworICAgIGlmICghc3VicmVzb3VyY2VVUkxUb0NsaWVudFVSTE1h
cC5pc0VtcHR5KCkpCisgICAgICAgIHJlcGxhY2VTdWJyZXNvdXJjZVVSTHMoZnJhZ21lbnQsIFdU
Rk1vdmUoc3VicmVzb3VyY2VVUkxUb0NsaWVudFVSTE1hcCkpOworfQogCiBSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoRnJhbWUmIGZyYW1lLCBO
U0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsKQEAgLTMwOSwxMyArMzMzLDE2IEBAIFJlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhGcmFtZSYg
ZnJhbWUsIE5TQXR0cmlidXRlCiAgICAgICAgIHJldHVybiBXVEZNb3ZlKGZyYWdtZW50QW5kUmVz
b3VyY2VzLmZyYWdtZW50KTsKICAgICB9CiAKKyAgICBWZWN0b3I8UmVmPEFyY2hpdmVSZXNvdXJj
ZT4+IHVucmVwbGFjZWRSZXNvdXJjZXM7CisgICAgcmVwbGFjZVN1YnJlc291cmNlVVJMc1dpdGhV
UkxzRnJvbUNsaWVudCgqZnJhZ21lbnRBbmRSZXNvdXJjZXMuZnJhZ21lbnQsIGZyYWdtZW50QW5k
UmVzb3VyY2VzLnJlc291cmNlcywgdW5yZXBsYWNlZFJlc291cmNlcyk7CisKICAgICBpZiAoc2hv
dWxkUmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKCkpIHsKLSAgICAgICAgcmVwbGFj
ZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKCpmcmFnbWVudEFuZFJlc291cmNlcy5mcmFnbWVu
dCwgZnJhZ21lbnRBbmRSZXNvdXJjZXMucmVzb3VyY2VzKTsKKyAgICAgICAgcmVwbGFjZVJpY2hD
b250ZW50V2l0aEF0dGFjaG1lbnRzKCpmcmFnbWVudEFuZFJlc291cmNlcy5mcmFnbWVudCwgdW5y
ZXBsYWNlZFJlc291cmNlcyk7CiAgICAgICAgIHJldHVybiBXVEZNb3ZlKGZyYWdtZW50QW5kUmVz
b3VyY2VzLmZyYWdtZW50KTsKICAgICB9CiAKICAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgQXRv
bWljU3RyaW5nPiBibG9iVVJMTWFwOwotICAgIGZvciAoY29uc3QgUmVmPEFyY2hpdmVSZXNvdXJj
ZT4mIHN1YnJlc291cmNlIDogZnJhZ21lbnRBbmRSZXNvdXJjZXMucmVzb3VyY2VzKSB7CisgICAg
Zm9yIChjb25zdCBSZWY8QXJjaGl2ZVJlc291cmNlPiYgc3VicmVzb3VyY2UgOiB1bnJlcGxhY2Vk
UmVzb3VyY2VzKSB7CiAgICAgICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZShzdWJyZXNvdXJj
ZS0+ZGF0YSgpLCBzdWJyZXNvdXJjZS0+bWltZVR5cGUoKSk7CiAgICAgICAgIFN0cmluZyBibG9i
VVJMID0gRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIGJsb2IpOwogICAgICAgICBi
bG9iVVJMTWFwLnNldChzdWJyZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCksIGJsb2JVUkwpOwpAQCAt
MzY2LDE1ICszOTMsMTggQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZl
KERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmQKICAgICBBU1NFUlQoc3Rh
Z2luZ0RvY3VtZW50KTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tTWFy
a3VwKCpzdGFnaW5nRG9jdW1lbnQsIG1hcmt1cEFuZEFyY2hpdmUubWFya3VwLCBtYXJrdXBBbmRB
cmNoaXZlLm1haW5SZXNvdXJjZS0+dXJsKCksIERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29u
dGVudCk7CiAKKyAgICBWZWN0b3I8UmVmPEFyY2hpdmVSZXNvdXJjZT4+IHVucmVwbGFjZWRSZXNv
dXJjZXM7CisgICAgcmVwbGFjZVN1YnJlc291cmNlVVJMc1dpdGhVUkxzRnJvbUNsaWVudChmcmFn
bWVudCwgbWFya3VwQW5kQXJjaGl2ZS5hcmNoaXZlLT5zdWJyZXNvdXJjZXMoKSwgdW5yZXBsYWNl
ZFJlc291cmNlcyk7CisKICAgICBpZiAoc2hvdWxkUmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFj
aG1lbnRzKCkpIHsKLSAgICAgICAgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKGZy
YWdtZW50LCBtYXJrdXBBbmRBcmNoaXZlLmFyY2hpdmUtPnN1YnJlc291cmNlcygpKTsKKyAgICAg
ICAgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKGZyYWdtZW50LCB1bnJlcGxhY2Vk
UmVzb3VyY2VzKTsKICAgICAgICAgcmV0dXJuIG1hcmt1cEZvckZyYWdtZW50SW5Eb2N1bWVudChX
VEZNb3ZlKGZyYWdtZW50KSwgKnN0YWdpbmdEb2N1bWVudCk7CiAgICAgfQogCiAgICAgSGFzaE1h
cDxBdG9taWNTdHJpbmcsIEF0b21pY1N0cmluZz4gYmxvYlVSTE1hcDsKLSAgICBmb3IgKGNvbnN0
IFJlZjxBcmNoaXZlUmVzb3VyY2U+JiBzdWJyZXNvdXJjZSA6IG1hcmt1cEFuZEFyY2hpdmUuYXJj
aGl2ZS0+c3VicmVzb3VyY2VzKCkpIHsKKyAgICBmb3IgKGNvbnN0IFJlZjxBcmNoaXZlUmVzb3Vy
Y2U+JiBzdWJyZXNvdXJjZSA6IHVucmVwbGFjZWRSZXNvdXJjZXMpIHsKICAgICAgICAgYXV0byYg
c3VicmVzb3VyY2VVUkwgPSBzdWJyZXNvdXJjZS0+dXJsKCk7Ci0gICAgICAgIGlmICghc2hvdWxk
Q29udmVydFRvQmxvYihzdWJyZXNvdXJjZVVSTCkpCisgICAgICAgIGlmICghc2hvdWxkUmVwbGFj
ZVN1YnJlc291cmNlVVJMKHN1YnJlc291cmNlVVJMKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoc3VicmVzb3VyY2UtPmRhdGEoKSwgc3Vi
cmVzb3VyY2UtPm1pbWVUeXBlKCkpOwogICAgICAgICBTdHJpbmcgYmxvYlVSTCA9IERPTVVSTDo6
Y3JlYXRlT2JqZWN0VVJMKGRlc3RpbmF0aW9uRG9jdW1lbnQsIGJsb2IpOwpAQCAtMzkyLDcgKzQy
Miw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShEb2N1bWVudCYg
ZGVzdGluYXRpb25Eb2N1bWVudCwgTWFya3VwQW5kCiAgICAgICAgICAgICBjb250aW51ZTsKIAog
ICAgICAgICBhdXRvIHN1YmZyYW1lVVJMID0gc3ViZnJhbWVNYWluUmVzb3VyY2UtPnVybCgpOwot
ICAgICAgICBpZiAoIXNob3VsZENvbnZlcnRUb0Jsb2Ioc3ViZnJhbWVVUkwpKQorICAgICAgICBp
ZiAoIXNob3VsZFJlcGxhY2VTdWJyZXNvdXJjZVVSTChzdWJmcmFtZVVSTCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAogICAgICAgICBNYXJrdXBBbmRBcmNoaXZlIHN1YmZyYW1lQ29udGVudCA9
IHsgU3RyaW5nOjpmcm9tVVRGOChzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwg
c3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLApAQCAtNTgxLDEwICs2MTEsMTYg
QEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgdGV4
dCkKIAogYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKLSAgICBhdXRvIGJsb2IgPSBCbG9iOjpj
cmVhdGUoYnVmZmVyLmdldCgpLCB0eXBlKTsKICAgICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7
CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsKIAorICAgIGF1dG8gcmVw
bGFjZW1lbnRVUkwgPSBmcmFtZS5lZGl0b3IoKS5jbGllbnRSZXBsYWNlbWVudFVSTEZvclJlc291
cmNlKGJ1ZmZlci5jb3B5UmVmKCksIHR5cGUpOworICAgIGlmICghcmVwbGFjZW1lbnRVUkwuaXNF
bXB0eSgpKSB7CisgICAgICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBbmRV
UkwoZG9jdW1lbnQsIHJlcGxhY2VtZW50VVJMKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZShidWZmZXIuZ2V0KCksIHR5cGUpOwog
ICAgIGlmIChzaG91bGRSZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoKSkKICAgICAg
ICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQoZG9jdW1lbnQs
IFdURk1vdmUoYmxvYikpKTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuY3BwCmluZGV4IGYyNGFkNmFhMDEzMGZmOGE0NjA5NjU4MDhhMDBkOGY3MWY5YjYwZGMuLjI1
ZTllYjY5Y2ZhNThkYzc1ODNkZWQ4NWExNWZmYzQ4MzVjZjUwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0xNzYsNiArMTc2LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChSYW5nZSopIGZpbmFsIHsgfQogICAg
IHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbCB7IH0KICAgICB2b2lk
IGdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoUmFuZ2UqLCBWZWN0b3I8U3RyaW5nPiYs
IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KKyAgICBTdHJpbmcgcmVw
bGFjZW1lbnRVUkxGb3JSZXNvdXJjZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcm
KSBmaW5hbCB7IHJldHVybiB7IH07IH0KICAgICB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2Vs
ZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBmaW5hbCB7IH0KICAgICB2b2lkIGhhbmRs
ZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSBmaW5h
bCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKaW5kZXggZTAyY2MwOTAzODg5ODZi
NTIwNzJkNjJhMWYyZjBjN2M2OTJlOGRjMy4uMzE5MDUxZWYwN2NhM2M0MzI0YTBjZDE0MmU2MjZm
MzBiMTk1YjM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCkBAIC04Niw2ICs4Niw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKFJhbmdlKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGFG
b3JSYW5nZShSYW5nZSosIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7CisgICAgdmlydHVhbCBT
dHJpbmcgcmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZShSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc291
cmNlRGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMo
VGV4dENoZWNraW5nUmVzdWx0KSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3Rl
ZEJ1bmRsZUVkaXRvckNsaWVudC5oCmluZGV4IDc3NzRmNzVkMjczOGFmOWZlNGIxZDFiNzk5YjMw
NDkxMjhjY2IzNDIuLmE2NjhjMDQyODM3ZjU3MGUyMWY5MWFlOGFjYzk0MmI1MzllYzViZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJ
SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKQEAg
LTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvckluc2VydEFjdGlvbi5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVGV4dEFmZmluaXR5Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbjsKQEAgLTYyLDYgKzYzLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViS2l0OjpXZWJQYWdlJiwgU3Ry
aW5nSW1wbCogbm90aWZpY2F0aW9uTmFtZSkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0
ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmLCBXZWJDb3JlOjpSYW5nZSopIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYs
IFdlYkNvcmU6OlJhbmdlKiwgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBW
ZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgeyB9
CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyByZXBsYWNlbWVudFVSTEZvclJlc291cmNlKFdlYktp
dDo6V2ViUGFnZSYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3Ry
aW5nJikgeyByZXR1cm4geyB9OyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJv
YXJkKFdlYktpdDo6V2ViUGFnZSYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtVHdvU3Rl
cERyb3AoV2ViS2l0OjpXZWJQYWdlJiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIFdlYkNv
cmU6OlJhbmdlJiwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vz
c1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGUuaApp
bmRleCBjODIwOWExODE2NmViOGZjY2I4NDJiMzk1MzU2NDhkMTY5ZGE2MDExLi5iYzQ0NmE2NDI3
ZjNhZDIyZDA4MmRhNTkwN2JiOTUxMGYxMjdkYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkVk
aXRpbmdEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlLmgKQEAgLTU5
LDYgKzU5LDcgQEAgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIuMyksIGlvcygxMC4zKSkK
IC0gKHZvaWQpX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJEaWRDaGFu
Z2VCeUVkaXRpbmc6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAq
KWNvbnRyb2xsZXI7CiAtICh2b2lkKV93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyOihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKiljb250
cm9sbGVyIHdpbGxXcml0ZVJhbmdlVG9QYXN0ZWJvYXJkOihXS1dlYlByb2Nlc3NQbHVnSW5SYW5n
ZUhhbmRsZSAqKXJhbmdlOwogLSAoTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TRGF0YSAqPiAq
KV93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOihXS1dlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKiljb250cm9sbGVyIHBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2U6KFdLV2ViUHJvY2Vzc1BsdWdJblJhbmdlSGFuZGxlICopcmFuZ2U7CistIChOU1N0
cmluZyAqKV93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOihXS1dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKiljb250cm9sbGVyIHJlcGxhY2Vt
ZW50VVJMRm9yUmVzb3VyY2U6KE5TRGF0YSAqKXJlc291cmNlRGF0YSBtaW1lVHlwZTooTlNTdHJp
bmcgKiltaW1lVHlwZTsKIC0gKHZvaWQpX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENv
bnRyb2xsZXJEaWRXcml0ZVRvUGFzdGVib2FyZDooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNv
bnRleHRDb250cm9sbGVyICopY29udHJvbGxlcjsKIC0gKEJPT0wpX3dlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgcGVyZm9ybVR3b1N0ZXBEcm9wOihXS1dlYlByb2Nlc3NQ
bHVnSW5Ob2RlSGFuZGxlICopZnJhZ21lbnQgYXREZXN0aW5hdGlvbjooV0tXZWJQcm9jZXNzUGx1
Z0luUmFuZ2VIYW5kbGUgKilkZXN0aW5hdGlvbiBpc01vdmU6KEJPT0wpaXNNb3ZlIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3N4KDEwLjEzKSwgaW9zKDExLjApKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZUVkaXRv
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCmluZGV4IDBiNzU2NTBlOWY3OWViMzljY2E5ZjE5
ZTkxZmNmMTlkMzY2MjIxZmEuLmIyZGE4M2E2MDk5ZGYxNDgxZDdiM2NhODJiMGFhZjU0YjI3MWUz
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKQEAg
LTYyLDYgKzYyLDcgQEAgdHlwZWRlZiBib29sICgqV0tCdW5kbGVQYWdlU2hvdWxkQXBwbHlTdHls
ZSkoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlQ1NTU3QKIHR5cGVkZWYgdm9pZCAoKldL
QnVuZGxlUGFnZUVkaXRpbmdOb3RpZmljYXRpb24pKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0
cmluZ1JlZiBub3RpZmljYXRpb25OYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVk
ZWYgdm9pZCAoKldLQnVuZGxlUGFnZVdpbGxXcml0ZVRvUGFzdGVib2FyZCkoV0tCdW5kbGVQYWdl
UmVmIHBhZ2UsIFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYgcmFuZ2UsICBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZUdldFBhc3RlYm9hcmREYXRhRm9y
UmFuZ2UpKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZVJhbmdlSGFuZGxlUmVmIHJhbmdl
LCBXS0FycmF5UmVmKiBwYXN0ZWJvYXJkVHlwZXMsIFdLQXJyYXlSZWYqIHBhc3RlYm9hcmREYXRh
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgV0tTdHJpbmdSZWYgKCpXS0J1bmRs
ZVBhZ2VSZXBsYWNlbWVudFVSTEZvclJlc291cmNlKShXS0J1bmRsZVBhZ2VSZWYsIFdLRGF0YVJl
ZiByZXNvdXJjZURhdGEsIFdLU3RyaW5nUmVmIG1pbWVUeXBlLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZFdyaXRlVG9QYXN0ZWJvYXJkKShX
S0J1bmRsZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBlZGVmIGJv
b2wgKCpXS0J1bmRsZVBhZ2VQZXJmb3JtVHdvU3RlcERyb3ApKFdLQnVuZGxlUGFnZVJlZiBwYWdl
LCBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgZnJhZ21lbnQsIFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYg
ZGVzdGluYXRpb24sIGJvb2wgaXNNb3ZlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIApAQCAt
MTA2LDYgKzEwNyw3IEBAIHR5cGVkZWYgc3RydWN0IFdLQnVuZGxlUGFnZUVkaXRvckNsaWVudFYx
IHsKICAgICAvLyBWZXJzaW9uIDEuCiAgICAgV0tCdW5kbGVQYWdlV2lsbFdyaXRlVG9QYXN0ZWJv
YXJkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxsV3JpdGVUb1Bhc3RlYm9h
cmQ7CiAgICAgV0tCdW5kbGVQYWdlR2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlOworICAgIFdLQnVu
ZGxlUGFnZVJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZTsKICAgICBXS0J1bmRsZVBhZ2VEaWRXcml0
ZVRvUGFzdGVib2FyZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFdyaXRl
VG9QYXN0ZWJvYXJkOwogICAgIFdLQnVuZGxlUGFnZVBlcmZvcm1Ud29TdGVwRHJvcCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyZm9ybVR3b1N0ZXBEcm9wOwogfSBXS0J1
bmRsZVBhZ2VFZGl0b3JDbGllbnRWMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250
ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpp
bmRleCBmMmQ5NGE5NTYzZTFkNjFlMGIxNzQ0NjY3M2U4Njg2M2UyNjk2ZDczLi40OWQzMTE0OTAw
OTBhMGQ5OTY4MTBkZmYwNzM3M2UyZTU4ZGU0ZDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyLm1tCkBAIC02NjAsNiArNjYwLDE2IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0
ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAg
ICAgICAgICAgICB9OwogICAgICAgICB9CiAKKyAgICAgICAgV1RGOjpTdHJpbmcgcmVwbGFjZW1l
bnRVUkxGb3JSZXNvdXJjZShXZWJLaXQ6OldlYlBhZ2UmLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmIHJlc291cmNlRGF0YSwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAoIW1fZGVsZWdhdGVNZXRob2RzLnJlcGxhY2VtZW50VVJMRm9y
UmVzb3VyY2UpCisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICAgICAgTlNT
dHJpbmcgKnR5cGUgPSAoTlNTdHJpbmcgKiltaW1lVHlwZTsKKyAgICAgICAgICAgIGF1dG8gZGF0
YSA9IHJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgICAgICByZXR1cm4gW21f
Y29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgcmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJj
ZTpkYXRhLmdldCgpIG1pbWVUeXBlOnR5cGVdOworICAgICAgICB9CisKICAgICAgICAgdm9pZCBk
aWRXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmKSBmaW5hbAogICAgICAgICB7CiAg
ICAgICAgICAgICBpZiAoIW1fZGVsZWdhdGVNZXRob2RzLmRpZFdyaXRlVG9QYXN0ZWJvYXJkKQpA
QCAtNjg2LDYgKzY5Niw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2Vi
UHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAgICAgICAg
ICAgLCBkaWRDaGFuZ2UoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dl
YlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJEaWRDaGFuZ2VCeUVkaXRpbmc6
KV0pCiAgICAgICAgICAgICAgICAgLCB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoW2RlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXI6d2lsbFdyaXRlUmFuZ2VUb1Bhc3RlYm9hcmQ6KV0pCiAgICAgICAgICAgICAg
ICAgLCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOnBh
c3RlYm9hcmREYXRhRm9yUmFuZ2U6KV0pCisgICAgICAgICAgICAgICAgLCByZXBsYWNlbWVudFVS
TEZvclJlc291cmNlKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOnJlcGxhY2VtZW50VVJMRm9yUmVz
b3VyY2U6bWltZVR5cGU6KV0pCiAgICAgICAgICAgICAgICAgLCBkaWRXcml0ZVRvUGFzdGVib2Fy
ZChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlckRpZFdyaXRlVG9QYXN0ZWJvYXJkOildKQogICAgICAg
ICAgICAgICAgICwgcGVyZm9ybVR3b1N0ZXBEcm9wKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOnBl
cmZvcm1Ud29TdGVwRHJvcDphdERlc3RpbmF0aW9uOmlzTW92ZTopXSkKICAgICAgICAgICAgIHsK
QEAgLTY5Niw2ICs3MDcsNyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dl
YlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAg
Ym9vbCBkaWRDaGFuZ2U7CiAgICAgICAgICAgICBib29sIHdpbGxXcml0ZVRvUGFzdGVib2FyZDsK
ICAgICAgICAgICAgIGJvb2wgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZTsKKyAgICAgICAgICAg
IGJvb2wgcmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZTsKICAgICAgICAgICAgIGJvb2wgZGlkV3Jp
dGVUb1Bhc3RlYm9hcmQ7CiAgICAgICAgICAgICBib29sIHBlcmZvcm1Ud29TdGVwRHJvcDsKICAg
ICAgICAgfSBtX2RlbGVnYXRlTWV0aG9kczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUVkaXRvckNsaWVudC5jcHAKaW5kZXggMDQ5M2Q1YzcwMTQ5ZmU1MzI4MjkwOWMxODI3OGFh
ZDU5MDExZWI3NS4uNmE1YzgwMjI4NzRlNGI5ZDc1MmVjOWQwZTQ2MmM0YTYzM2FkOWU1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKQEAgLTMz
LDYgKzMzLDggQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgiCiAjaW5j
bHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCisjaW5jbHVk
ZSAiV0tEYXRhLmgiCisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKICNpbmNsdWRlICJXS1N0cmlu
Zy5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50RnJh
Z21lbnQuaD4KQEAgLTE3Myw2ICsxNzUsMTYgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0
b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgUmEKICAg
ICB9CiB9CiAKK1N0cmluZyBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OnJlcGxhY2Vt
ZW50VVJMRm9yUmVzb3VyY2UoV2ViUGFnZSYgcGFnZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNv
dXJjZURhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgaWYgKCFtX2NsaWVudC5y
ZXBsYWNlbWVudFVSTEZvclJlc291cmNlKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0
byBkYXRhID0gYWRvcHRXSyhXS0RhdGFDcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNp
Z25lZCBjaGFyKj4ocmVzb3VyY2VEYXRhLT5kYXRhKCkpLCByZXNvdXJjZURhdGEtPnNpemUoKSkp
OworICAgIGF1dG8gdHlwZSA9IGFkb3B0V0sodG9Db3BpZWRBUEkobWltZVR5cGUpKTsKKyAgICBy
ZXR1cm4gdG9XVEZTdHJpbmcobV9jbGllbnQucmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZSh0b0FQ
SSgmcGFnZSksIGRhdGEuZ2V0KCksIHR5cGUuZ2V0KCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
bykpOworfQorCiBib29sIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6cGVyZm9ybVR3
b1N0ZXBEcm9wKFdlYlBhZ2UmIHBhZ2UsIERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBSYW5n
ZSYgZGVzdGluYXRpb24sIGJvb2wgaXNNb3ZlKQogewogICAgIGlmICghbV9jbGllbnQucGVyZm9y
bVR3b1N0ZXBEcm9wKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVu
dC5oCmluZGV4IDY4OTk0MWExOGU4ZDllOTRjYTQyNmY5NDJiMWViOGEwYjNjZjg0YmIuLmZjZDEw
ODhmZjFkYmE3NGJhZjdkMTg1OTkyYjgxZDMwMTExNzQ1YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKQEAgLTY1LDYgKzY1LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJQYWdlJiwgU3RyaW5nSW1wbCogbm90aWZp
Y2F0aW9uTmFtZSkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFn
ZSYsIFdlYkNvcmU6OlJhbmdlKikgZmluYWw7CiAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZv
clJhbmdlKFdlYlBhZ2UmLCBXZWJDb3JlOjpSYW5nZSosIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9h
cmREYXRhKSBmaW5hbDsKKyAgICBTdHJpbmcgcmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZShXZWJQ
YWdlJiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNvdXJjZURhdGEsIGNvbnN0IFN0
cmluZyYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYpIGZp
bmFsOwogICAgIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1
bWVudEZyYWdtZW50JiwgV2ViQ29yZTo6UmFuZ2UmIGRlc3RpbmF0aW9uLCBib29sIGlzTW92ZSkg
ZmluYWw7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCA1MzkzZGYyMGNkNDNiZmUyZjcz
MmM4MzY0NmQ4MDUxMDAyM2VkZjMzLi4yYjllZDZkYmNkMmM2MTBhYzBjYjk2ODE2NWRiOTkyMjMw
N2FmYWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjU4LDYgKzI1OCwxMSBAQCB2b2lk
IFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShSYW5nZSog
cmFuZ2UsIFZlY3RvcjxTdHJpbgogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGll
bnQoKS5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKCptX3BhZ2UsIHJhbmdlLCBwYXN0ZWJvYXJk
VHlwZXMsIHBhc3RlYm9hcmREYXRhKTsKIH0KIAorU3RyaW5nIFdlYkVkaXRvckNsaWVudDo6cmVw
bGFjZW1lbnRVUkxGb3JSZXNvdXJjZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc291
cmNlRGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICByZXR1cm4gbV9wYWdlLT5p
bmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLnJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UoKm1f
cGFnZSwgV1RGTW92ZShyZXNvdXJjZURhdGEpLCBtaW1lVHlwZSk7Cit9CisKIGJvb2wgV2ViRWRp
dG9yQ2xpZW50OjpwZXJmb3JtVHdvU3RlcERyb3AoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQs
IFJhbmdlJiBkZXN0aW5hdGlvbiwgYm9vbCBpc01vdmUpCiB7CiAgICAgcmV0dXJuIG1fcGFnZS0+
aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS5wZXJmb3JtVHdvU3RlcERyb3AoKm1fcGFnZSwg
ZnJhZ21lbnQsIGRlc3RpbmF0aW9uLCBpc01vdmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IGE4
YTYxYjA1MmM5OTg2ODcwNDVkZTZiOTljNWMwMzU5OWNkYzZlMDIuLjg5NjAyMTk5NDQwZjA1NTU5
ZDc5YmI1NGIwOTY4MjU5NjI5YzNjZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTc2LDYgKzc2
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChX
ZWJDb3JlOjpSYW5nZSopIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoKSBmaW5hbDsKICAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Uo
V2ViQ29yZTo6UmFuZ2UqLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7Cisg
ICAgU3RyaW5nIHJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiByZXNvdXJjZURhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGZpbmFsOwogICAg
IAogICAgIHZvaWQgcmVnaXN0ZXJVbmRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFsOwog
ICAgIHZvaWQgcmVnaXN0ZXJSZWRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAppbmRleCA0NTExOTQ3NmRmYmYxMjQ2ZWM5ODAxNGNkZGY5NDBlMGZhZjhiMmI0
Li5mYTJlZDMyODI1Nzg0NzhiM2NmNWQwODFmNzFjODY1ZWY4MWQ3MDM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaApAQCAtNzgsNiArNzgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKFdlYkNvcmU6OlJhbmdlKikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwogICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVi
b2FyZERhdGFGb3JSYW5nZShXZWJDb3JlOjpSYW5nZSosIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9h
cmREYXRhKSBmaW5hbDsKKyAgICBTdHJpbmcgcmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZShSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc291cmNlRGF0YSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkgZmluYWw7CiAKICAgICB2b2lkIHNldEluc2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3Ry
aW5nJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCBlODA3YTNlOGZhMzNiNjgwZTYz
M2MyODU3MTBlM2ZiY2RiNjYxZjI2Li4wNDFiYWNhZDlmYmI5YjZkNzI1MGQ1Njk5ZmM2OWMyMDk1
ZTc5NDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC00MTksNiArNDE5LDEyIEBAIHZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYkNvcmU6OlJh
bmdlKiwgVmVjdG9yPFN0CiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJL
aXQyLgogfQogCitTdHJpbmcgV2ViRWRpdG9yQ2xpZW50OjpyZXBsYWNlbWVudFVSTEZvclJlc291
cmNlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYpCit7CisgICAgLy8gTm90IGlt
cGxlbWVudGVkIGluIFdlYktpdExlZ2FjeS4KKyAgICByZXR1cm4geyB9OworfQorCiAjaWYgKFBM
QVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAw
KSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTMwMCkKIAogLy8gRklYTUU6IFJlbW92ZSBib3RoIHRoaXMgc3R1YiBhbmQgdGhlIHJlYWwg
dmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uIGJlbG93IG9uY2Ugd2UgZG9uJ3QgbmVlZCB0aGUgcmVh
bCB2ZXJzaW9uIG9uIGFueSBzdXBwb3J0ZWQgcGxhdGZvcm0uCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzg2NTI1OGJhYTE0ZGZlOTY3NGFiZjdh
MmYyMDA2OTNiMjc3OGU4ZC4uYzkzZjEwNzNiYTYyZGYxYTNkYmU1Y2Q1NzVlMmNkYzM0N2NkMjYz
MCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM0IEBACisyMDE4LTAxLTE0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBpbmplY3RlZCBidW5kbGUgU1BJIHRvIHJlcGxhY2Ugc3Vi
cmVzb3VyY2UgVVJMcyB3aGVuIGRyb3BwaW5nIG9yIHBhc3RpbmcgcmljaCBjb250ZW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE2MzcKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM2NTA4NDcxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCAyIG5ldyBBUEkgdGVzdHMgdG8gZXhlcmNpc2UgaW5q
ZWN0ZWQgYnVuZGxlIFNQSSBmb3Igc3VwcGx5aW5nIHJlcGxhY2VtZW50IFVSTHMgd2hlbiBwYXN0
aW5nIGFuIGltYWdlLCBhbmQgYW4KKyAgICAgICAgYXR0cmlidXRlZCBzdHJpbmcgY29udGFpbmlu
ZyBtdWx0aXBsZSBOU1RleHRBdHRhY2htZW50cy4gU2VlIFdlYktpdCBhbmQgV2ViQ29yZSBDaGFu
Z2VMb2dzIGZvciBtb3JlIGRldGFpbC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvQnVuZGxlRWRpdGluZ0RlbGVnYXRlUGx1Z0luLm1tOgorICAgICAgICAoLVtC
dW5kbGVFZGl0aW5nRGVsZWdhdGVQbHVnSW4gd2ViUHJvY2Vzc1BsdWdJbjpkaWRDcmVhdGVCcm93
c2VyQ29udGV4dENvbnRyb2xsZXI6XSk6CisgICAgICAgICgtW0J1bmRsZUVkaXRpbmdEZWxlZ2F0
ZVBsdWdJbiBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpyZXBsYWNl
bWVudFVSTEZvclJlc291cmNlOm1pbWVUeXBlOl0pOgorCisgICAgICAgIEltcGxlbWVudCB0aGUg
bmV3IE9iamVjdGl2ZS1DIGJ1bmRsZSBTUEkgdG8gbG9vayB1cCB0aGUgaW5jb21pbmcgTUlNRSB0
eXBlIGluIHRoZSBkaWN0aW9uYXJ5IHN1cHBsaWVkIHZpYSB0aGUKKyAgICAgICAgIk1JTUVUeXBl
VG9SZXBsYWNlbWVudFVSTE1hcCIgYnVuZGxlIGluaXRpYWxpemF0aW9uIHBhcmFtZXRlciwgYW5k
IHJldHVybiBpdC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V0tBdHRhY2htZW50VGVzdHMubW06CisgICAgICAgICh3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1l
bnRzKToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyB0YWdzSW5Cb2R5XSk6CisgICAgICAgICgt
W1Rlc3RXS1dlYlZpZXcgZXhwZWN0RWxlbWVudFRhZ3NJbk9yZGVyOl0pOgorICAgICAgICAoLVtU
ZXN0V0tXZWJWaWV3IGV4cGVjdEVsZW1lbnRUYWc6dG9Db21lQmVmb3JlOl0pOgorCisgICAgICAg
IEFkZCBhIHRlc3QgaGVscGVyIHRvIGNoZWNrIHRoYXQgdGhlIGdpdmVuIGxpc3Qgb2YgZWxlbWVu
dCB0YWdzIGFwcGVhcnMgaW4gdGhlIGRvY3VtZW50IGJvZHkuIEFsc28sIHJlaW1wbGVtZW50Cisg
ICAgICAgIHRoZSBleGlzdGluZyAtZXhwZWN0RWxlbWVudFRhZzp0b0NvbWVCZWZvcmU6IGFzIGEg
c3BlY2lhbCBjYXNlIG9mIC1leHBlY3RFbGVtZW50VGFnc0luT3JkZXI6LgorCisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVu
ZGxlUGFnZTo6SW5qZWN0ZWRCdW5kbGVQYWdlKToKKwogMjAxOC0wMS0xMiAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIEFQSSB0ZXN0cyBD
aGFuZ2VBdHRhY2htZW50RGF0YVVwZGF0ZXNXaXRoSW5QbGFjZURpc3BsYXkgYW5kIEluUGxhY2VW
aWRlb0F0dGFjaG1lbnRJbnNlcnRpb25XaXRoaW5MaXN0IGFyZSBmYWlsaW5nCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0J1bmRsZUVkaXRpbmdEZWxl
Z2F0ZVBsdWdJbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQnVu
ZGxlRWRpdGluZ0RlbGVnYXRlUGx1Z0luLm1tCmluZGV4IGM2M2MwYThlY2Y0NDYwNTdkNTJlNjQw
NTM2ZmIxOGJlODI0Y2RiMmEuLjMzZjJiYjgzMjYwZjEyZDZkMmI4MzkwZTc0NTBkMGY1YmFmNjYw
MWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQnVu
ZGxlRWRpdGluZ0RlbGVnYXRlUGx1Z0luLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQnVuZGxlRWRpdGluZ0RlbGVnYXRlUGx1Z0luLm1tCkBAIC00Nyw2ICs0
Nyw3IEBAIEBpbXBsZW1lbnRhdGlvbiBCdW5kbGVFZGl0aW5nRGVsZWdhdGVQbHVnSW4gewogICAg
IFJldGFpblB0cjxpZCA8QnVuZGxlRWRpdGluZ0RlbGVnYXRlUHJvdG9jb2w+PiBfcmVtb3RlT2Jq
ZWN0OwogICAgIEJPT0wgX2VkaXRpbmdEZWxlZ2F0ZVNob3VsZEluc2VydFRleHQ7CiAgICAgQk9P
TCBfc2hvdWxkT3ZlcnJpZGVQZXJmb3JtVHdvU3RlcERyb3A7CisgICAgUmV0YWluUHRyPE5TRGlj
dGlvbmFyeTxOU1N0cmluZyAqLCBOU1N0cmluZyAqPj4gX21pbWVUeXBlVG9SZXBsYWNlbWVudFVS
TE1hcDsKIH0KIAogLSAodm9pZCl3ZWJQcm9jZXNzUGx1Z0luOihXS1dlYlByb2Nlc3NQbHVnSW5D
b250cm9sbGVyICopcGx1Z0luQ29udHJvbGxlciBkaWRDcmVhdGVCcm93c2VyQ29udGV4dENvbnRy
b2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlcgpAQCAtNjMsNiArNjQsNyBAQCAtICh2b2lkKXdlYlByb2Nlc3NQ
bHVnSW46KFdLV2ViUHJvY2Vzc1BsdWdJbkNvbnRyb2xsZXIgKilwbHVnSW5Db250cm9sbGVyIGRp
ZENyZQogICAgICAgICBfZWRpdGluZ0RlbGVnYXRlU2hvdWxkSW5zZXJ0VGV4dCA9IFlFUzsKIAog
ICAgIF9zaG91bGRPdmVycmlkZVBlcmZvcm1Ud29TdGVwRHJvcCA9IFtbcGx1Z0luQ29udHJvbGxl
ci5wYXJhbWV0ZXJzIHZhbHVlRm9yS2V5OkAiQnVuZGxlT3ZlcnJpZGVQZXJmb3JtVHdvU3RlcERy
b3AiXSBib29sVmFsdWVdOworICAgIF9taW1lVHlwZVRvUmVwbGFjZW1lbnRVUkxNYXAgPSBbcGx1
Z0luQ29udHJvbGxlci5wYXJhbWV0ZXJzIHZhbHVlRm9yS2V5OkAiTUlNRVR5cGVUb1JlcGxhY2Vt
ZW50VVJMTWFwIl07CiAKICAgICBfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgKmludGVyZmFjZSA9
IFtfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgcmVtb3RlT2JqZWN0SW50ZXJmYWNlV2l0aFByb3Rv
Y29sOkBwcm90b2NvbChCdW5kbGVFZGl0aW5nRGVsZWdhdGVQcm90b2NvbCldOwogICAgIF9yZW1v
dGVPYmplY3QgPSBbYnJvd3NlckNvbnRleHRDb250cm9sbGVyLl9yZW1vdGVPYmplY3RSZWdpc3Ry
eSByZW1vdGVPYmplY3RQcm94eVdpdGhJbnRlcmZhY2U6aW50ZXJmYWNlXTsKQEAgLTk4LDYgKzEw
MCwxMiBAQCAtIChCT09MKV93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVy
OihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udAogICAgIHJldHVybiBfc2hvdWxkT3ZlcnJp
ZGVQZXJmb3JtVHdvU3RlcERyb3A7CiB9CiAKKy0gKE5TU3RyaW5nICopX3dlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250
ZXh0Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgcmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZTooTlNE
YXRhICopcmVzb3VyY2VEYXRhIG1pbWVUeXBlOihOU1N0cmluZyAqKW1pbWVUeXBlCit7CisgICAg
YXNzZXJ0KCEhcmVzb3VyY2VEYXRhKTsKKyAgICByZXR1cm4gW19taW1lVHlwZVRvUmVwbGFjZW1l
bnRVUkxNYXAgb2JqZWN0Rm9yS2V5Om1pbWVUeXBlXTsKK30KKwogQGVuZAogCiAjZW5kaWYgLy8g
V0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCmluZGV4IGQxNzU2Mzk0Yzc5M2ZkZmYw
OGExMWY4OGE3MTVlMWYyZmY5ODliZDguLmZiZWZmMjQ5YTRhMzM0YWQwOGVmNmNkOGNhMWFiNmFk
MzdjMjE5ZTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tBdHRhY2htZW50VGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQpAQCAtMjgsNiArMjgsNyBAQAogI2ltcG9y
dCAiRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGll
cy5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmln
dXJhdGlvbkV4dHJhcy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNSZWZQcml2YXRl
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0
L1dlYktpdC5oPgpAQCAtMTI2LDE4ICsxMjcsMjMgQEAgcHJpdmF0ZToKIEBpbnRlcmZhY2UgVGVz
dFdLV2ViVmlldyAoQXR0YWNobWVudFRlc3RpbmcpCiBAZW5kCiAKLXN0YXRpYyBSZXRhaW5QdHI8
VGVzdFdLV2ViVmlldz4gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50cyhDR1NpemUgd2ViVmll
d1NpemUpCitzdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXdGb3JUZXN0aW5n
QXR0YWNobWVudHMoQ0dTaXplIHdlYlZpZXdTaXplLCBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpj
b25maWd1cmF0aW9uKQogewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW2NvbmZpZ3VyYXRpb24gX3Nl
dEF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZDpZRVNdOworICAgIGNvbmZpZ3VyYXRpb24uX2F0dGFj
aG1lbnRFbGVtZW50RW5hYmxlZCA9IFlFUzsKICAgICBXS1ByZWZlcmVuY2VzU2V0Q3VzdG9tUGFz
dGVib2FyZERhdGFFbmFibGVkKChXS1ByZWZlcmVuY2VzUmVmKVtjb25maWd1cmF0aW9uIHByZWZl
cmVuY2VzXSwgWUVTKTsKIAotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgd2ViVmlld1NpemUud2lk
dGgsIHdlYlZpZXdTaXplLmhlaWdodCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgp
XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCB3ZWJWaWV3U2l6ZS53aWR0aCwgd2ViVmlld1Np
emUuaGVpZ2h0KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKICAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8bWV0YSBuYW1lPSd2aWV3cG9ydCcgY29udGVu
dD0nd2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEnPjxzY3JpcHQ+Zm9jdXMgPSAo
KSA9PiBkb2N1bWVudC5ib2R5LmZvY3VzKCk8L3NjcmlwdD48Ym9keSBvbmxvYWQ9Zm9jdXMoKSBj
b250ZW50ZWRpdGFibGU+PC9ib2R5PiJdOwogCiAgICAgcmV0dXJuIHdlYlZpZXc7CiB9CiAKK3N0
YXRpYyBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50
cyhDR1NpemUgd2ViVmlld1NpemUpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICByZXR1cm4gd2Vi
Vmlld0ZvclRlc3RpbmdBdHRhY2htZW50cyh3ZWJWaWV3U2l6ZSwgY29uZmlndXJhdGlvbi5nZXQo
KSk7Cit9CisKIHN0YXRpYyBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlld0ZvclRlc3Rp
bmdBdHRhY2htZW50cygpCiB7CiAgICAgcmV0dXJuIHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVu
dHMoQ0dTaXplTWFrZSg1MDAsIDUwMCkpOwpAQCAtMTg5LDIwICsxOTUsMjkgQEAgc3RhdGljIF9X
S0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyAqZGlzcGxheU9wdGlvbnNXaXRoTW9kZShfV0tBdHRh
Y2htZW50RGlzcGxheU0KIAogQGltcGxlbWVudGF0aW9uIFRlc3RXS1dlYlZpZXcgKEF0dGFjaG1l
bnRUZXN0aW5nKQogCi0tICh2b2lkKWV4cGVjdEVsZW1lbnRUYWc6KE5TU3RyaW5nICopdGFnTmFt
ZSB0b0NvbWVCZWZvcmU6KE5TU3RyaW5nICopb3RoZXJUYWdOYW1lCistIChOU0FycmF5PE5TU3Ry
aW5nICo+ICopdGFnc0luQm9keQoreworICAgIHJldHVybiBbc2VsZiBvYmplY3RCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAiQXJyYXkuZnJvbShkb2N1bWVudC5ib2R5LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCcqJykpLm1hcChlID0+IGUudGFnTmFtZSkiXTsKK30KKworLSAodm9pZClleHBlY3RFbGVt
ZW50VGFnc0luT3JkZXI6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKil0YWdOYW1lcwogewotICAgIE5T
QXJyYXkgKnRhZ3NJbkJvZHkgPSBbc2VsZiBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
QXJyYXkuZnJvbShkb2N1bWVudC5ib2R5LmdldEVsZW1lbnRzQnlUYWdOYW1lKCcqJykpLm1hcChl
ID0+IGUudGFnTmFtZSkiXTsKLSAgICBCT09MIHN1Y2Nlc3MgPSBbdGFnc0luQm9keSBjb250YWlu
c09iamVjdDp0YWdOYW1lXSAmJiBbdGFnc0luQm9keSBjb250YWluc09iamVjdDpvdGhlclRhZ05h
bWVdOwotICAgIGlmIChzdWNjZXNzKSB7Ci0gICAgICAgIE5TVUludGVnZXIgaW5kZXggPSBbdGFn
c0luQm9keSBpbmRleE9mT2JqZWN0OnRhZ05hbWVdOwotICAgICAgICBOU1VJbnRlZ2VyIG90aGVy
SW5kZXggPSBbdGFnc0luQm9keSBpbmRleE9mT2JqZWN0V2l0aE9wdGlvbnM6TlNFbnVtZXJhdGlv
blJldmVyc2UgcGFzc2luZ1Rlc3Q6WyZdIChOU1N0cmluZyAqdGFnLCBOU1VJbnRlZ2VyLCBCT09M
ICopIHsKLSAgICAgICAgICAgIHJldHVybiBbdGFnIGlzRXF1YWxUb1N0cmluZzpvdGhlclRhZ05h
bWVdOwotICAgICAgICB9XTsKLSAgICAgICAgc3VjY2VzcyA9IGluZGV4IDwgb3RoZXJJbmRleDsK
KyAgICBhdXRvIHJlbWFpbmluZ1RhZ3MgPSBhZG9wdE5TKFt0YWdOYW1lcyBtdXRhYmxlQ29weV0p
OworICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKnRhZ3NJbkJvZHkgPSBzZWxmLnRhZ3NJbkJvZHk7
CisgICAgZm9yIChOU1N0cmluZyAqdGFnIGluIHRhZ3NJbkJvZHkucmV2ZXJzZU9iamVjdEVudW1l
cmF0b3IpIHsKKyAgICAgICAgaWYgKFt0YWcgaXNFcXVhbFRvU3RyaW5nOltyZW1haW5pbmdUYWdz
IGxhc3RPYmplY3RdXSkKKyAgICAgICAgICAgIFtyZW1haW5pbmdUYWdzIHJlbW92ZUxhc3RPYmpl
Y3RdOworICAgICAgICBpZiAoIVtyZW1haW5pbmdUYWdzIGNvdW50XSkKKyAgICAgICAgICAgIGJy
ZWFrOwogICAgIH0KLSAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKLSAgICBpZiAoIXN1Y2Nlc3Mp
Ci0gICAgICAgIE5TTG9nKEAiRXhwZWN0ZWQgJUAgdG8gY29tZSBiZWZvcmUgJUAgaW4gdGFnczog
JUAiLCB0YWdOYW1lLCBvdGhlclRhZ05hbWUsIHRhZ3NJbkJvZHkpOworICAgIEVYUEVDVF9FUShb
cmVtYWluaW5nVGFncyBjb3VudF0sIDBVKTsKKyAgICBpZiAoW3JlbWFpbmluZ1RhZ3MgY291bnRd
KQorICAgICAgICBOU0xvZyhAIkV4cGVjdGVkIHRvIGZpbmQgb3JkZXJlZCB0YWdzOiAlQCBpbjog
JUAiLCB0YWdOYW1lcywgdGFnc0luQm9keSk7Cit9CisKKy0gKHZvaWQpZXhwZWN0RWxlbWVudFRh
ZzooTlNTdHJpbmcgKil0YWdOYW1lIHRvQ29tZUJlZm9yZTooTlNTdHJpbmcgKilvdGhlclRhZ05h
bWUKK3sKKyAgICBbc2VsZiBleHBlY3RFbGVtZW50VGFnc0luT3JkZXI6QFt0YWdOYW1lLCBvdGhl
clRhZ05hbWVdXTsKIH0KIAogLSAoQk9PTClfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFu
ZDooTlNTdHJpbmcgKiljb21tYW5kIGFyZ3VtZW50OihOU1N0cmluZyAqKWFyZ3VtZW50CkBAIC0x
MDc3LDYgKzEwOTIsMzggQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgSW5zZXJ0RHVwbGljYXRl
QXR0YWNobWVudEFuZFVwZGF0ZURhdGEpCiAgICAgW3Bhc3RlZEF0dGFjaG1lbnQgZXhwZWN0UmVx
dWVzdGVkRGF0YVRvQmU6b3JpZ2luYWxEYXRhLmdldCgpXTsKIH0KIAorVEVTVChXS0F0dGFjaG1l
bnRUZXN0cywgSW5qZWN0ZWRCdW5kbGVSZXBsYWNlVVJMc1doZW5QYXN0aW5nQXR0cmlidXRlZFN0
cmluZykKK3sKKyAgICBwbGF0Zm9ybUNvcHlSaWNoVGV4dFdpdGhNdWx0aXBsZUF0dGFjaG1lbnRz
KCk7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSByZXRhaW5QdHIoW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiQnVu
ZGxlRWRpdGluZ0RlbGVnYXRlUGx1Z0luIl0pOworICAgIFtbY29uZmlndXJhdGlvbiBwcm9jZXNz
UG9vbF0gX3NldE9iamVjdDpAeyBAImltYWdlL3BuZyIgOiBAImNpZDpmb28tYmFyIiB9IGZvckJ1
bmRsZVBhcmFtZXRlcjpAIk1JTUVUeXBlVG9SZXBsYWNlbWVudFVSTE1hcCJdOworICAgIGF1dG8g
d2ViVmlldyA9IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoQ0dTaXplTWFrZSg1MDAsIDUw
MCksIGNvbmZpZ3VyYXRpb24uZ2V0KCkpOworICAgIHsKKyAgICAgICAgT2JzZXJ2ZUF0dGFjaG1l
bnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7CisgICAgICAgIFt3ZWJW
aWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5kOkAiUGFzdGUiIGFyZ3VtZW50Om5p
bF07CisgICAgICAgIEVYUEVDVF9FUSgyVSwgb2JzZXJ2ZXIub2JzZXJ2ZXIoKS5pbnNlcnRlZC5j
b3VudCk7CisgICAgfQorICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRUYWdzSW5PcmRlcjpAWyBA
IklNRyIsIEAiQVRUQUNITUVOVCIsIEAiQVRUQUNITUVOVCIgXV07CisgICAgRVhQRUNUX1dLX1NU
UkVRKCJjaWQ6Zm9vLWJhciIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJzcmMiIGZvclF1
ZXJ5U2VsZWN0b3I6QCJpbWciXSk7Cit9CisKK1RFU1QoV0tBdHRhY2htZW50VGVzdHMsIEluamVj
dGVkQnVuZGxlUmVwbGFjZVVSTFdoZW5QYXN0aW5nSW1hZ2UpCit7CisgICAgcGxhdGZvcm1Db3B5
UE5HKCk7CisKKyAgICBOU1N0cmluZyAqcmVwbGFjZW1lbnRVUkwgPSBAImNpZDpmb28tYmFyIjsK
KyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSByZXRhaW5QdHIoW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiQnVuZGxlRWRp
dGluZ0RlbGVnYXRlUGx1Z0luIl0pOworICAgIFtbY29uZmlndXJhdGlvbiBwcm9jZXNzUG9vbF0g
X3NldE9iamVjdDpAeyBAImltYWdlL3RpZmYiIDogcmVwbGFjZW1lbnRVUkwsIEAiaW1hZ2UvcG5n
IiA6IHJlcGxhY2VtZW50VVJMIH0gZm9yQnVuZGxlUGFyYW1ldGVyOkAiTUlNRVR5cGVUb1JlcGxh
Y2VtZW50VVJMTWFwIl07CisgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvclRlc3RpbmdBdHRh
Y2htZW50cyhDR1NpemVNYWtlKDUwMCwgNTAwKSwgY29uZmlndXJhdGlvbi5nZXQoKSk7CisgICAg
eworICAgICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JTY29wZSBvYnNlcnZlcih3ZWJW
aWV3LmdldCgpKTsKKyAgICAgICAgW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENv
bW1hbmQ6QCJQYXN0ZSIgYXJndW1lbnQ6bmlsXTsKKyAgICAgICAgRVhQRUNUX0VRKDBVLCBvYnNl
cnZlci5vYnNlcnZlcigpLmluc2VydGVkLmNvdW50KTsKKyAgICB9CisgICAgRVhQRUNUX1dLX1NU
UkVRKCJjaWQ6Zm9vLWJhciIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJzcmMiIGZvclF1
ZXJ5U2VsZWN0b3I6QCJpbWciXSk7Cit9CisKICNwcmFnbWEgbWFyayAtIFBsYXRmb3JtLXNwZWNp
ZmljIHRlc3RzCiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKaW5k
ZXggZGQ2NDg0MTY2ZTNhZWMzZjJkYjBiZjhlOGI2MWUzY2E2NmMwNzcwMS4uNmNlMWVmMWNkZDFl
YTAxOTZkN2FkODU2NDkzZDZjZjFiYzQ1MmQ5MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApA
QCAtMzczLDYgKzM3Myw3IEBAIEluamVjdGVkQnVuZGxlUGFnZTo6SW5qZWN0ZWRCdW5kbGVQYWdl
KFdLQnVuZGxlUGFnZVJlZiBwYWdlKQogICAgICAgICBkaWRDaGFuZ2VTZWxlY3Rpb24sCiAgICAg
ICAgIDAsIC8qIHdpbGxXcml0ZVRvUGFzdGVib2FyZCAqLwogICAgICAgICAwLCAvKiBnZXRQYXN0
ZWJvYXJkRGF0YUZvclJhbmdlICovCisgICAgICAgIDAsIC8qIHJlcGxhY2VtZW50VVJMRm9yUmVz
b3VyY2UgKi8KICAgICAgICAgMCwgLyogZGlkV3JpdGVUb1Bhc3RlYm9hcmQgKi8KICAgICAgICAg
MCwgLyogcGVyZm9ybVR3b1N0ZXBEcm9wICovCiAgICAgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331312</attachid>
            <date>2018-01-14 14:27:43 -0800</date>
            <delta_ts>2018-01-16 16:53:38 -0800</delta_ts>
            <desc>Try to fix Windows builds</desc>
            <filename>bug-181637-20180114142742.patch</filename>
            <type>text/plain</type>
            <size>41399</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2OTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTZlMjNmMDFkNTU4YzQz
NDk5NGFkMjk0MzZiODAwMWM4MWMwOTZjMy4uMmI3NGQ5OGRlMmNhZTc1MjgxNWQ0N2M0OTMwN2M4
OTZjMGUzMTQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE4LTAxLTE0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBpbmplY3Rl
ZCBidW5kbGUgU1BJIHRvIHJlcGxhY2Ugc3VicmVzb3VyY2UgVVJMcyB3aGVuIGRyb3BwaW5nIG9y
IHBhc3RpbmcgcmljaCBjb250ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODE2MzcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2NTA4NDcxPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJlZm9yZSBj
YXJyeWluZyBvdXQgYmxvYiBVUkwgY29udmVyc2lvbiBmb3IgcGFzdGVkIG9yIGRyb3BwZWQgcmlj
aCBjb250ZW50LCBsZXQgdGhlIGVkaXRvciBjbGllbnQgcmVwbGFjZQorICAgICAgICBzdWJyZXNv
dXJjZSBVUkxzIGluIFdlYktpdDIgYnkgY2FsbGluZyBvdXQgdG8gbmV3IGluamVjdGVkIGJ1bmRs
ZSBTUEkuIFNlZSBjb21tZW50cyBiZWxvdyBmb3IgbW9yZSBkZXRhaWwuCisKKyAgICAgICAgVGVz
dHM6ICBXS0F0dGFjaG1lbnRUZXN0cy5JbmplY3RlZEJ1bmRsZVJlcGxhY2VVUkxzV2hlblBhc3Rp
bmdBdHRyaWJ1dGVkU3RyaW5nCisgICAgICAgICAgICAgICAgV0tBdHRhY2htZW50VGVzdHMuSW5q
ZWN0ZWRCdW5kbGVSZXBsYWNlVVJMV2hlblBhc3RpbmdJbWFnZQorCisgICAgICAgICogZWRpdGlu
Zy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjbGllbnRSZXBsYWNlbWVu
dFVSTEZvclJlc291cmNlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorCisgICAgICAg
IEFkZCBhIG5ldyBoZWxwZXIgdG8gY2FsbCBvdXQgdG8gdGhlIGVkaXRvciBjbGllbnQgZm9yIGEg
VVJMIHN0cmluZyB0byByZXBsYWNlIGEgZ2l2ZW4gQXJjaGl2ZVJlc291cmNlLiBJbgorICAgICAg
ICBXZWJLaXQyLCB0aGlzIGNhbGxzIG91dCB0byB0aGUgaW5qZWN0ZWQgYnVuZGxlJ3MgbmV3IGBy
ZXBsYWNlbWVudFVSTEZvclJlc291cmNlYCBTUEkgaG9vay4KKworICAgICAgICAqIGVkaXRpbmcv
Y29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxk
UmVwbGFjZVN1YnJlc291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29u
dGVudFdpdGhBdHRhY2htZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpyZXBsYWNlU3VicmVzb3Vy
Y2VVUkxzV2l0aFVSTHNGcm9tQ2xpZW50KToKKworICAgICAgICBBZGQgYSBuZXcgc3RhdGljIGhl
bHBlciB0byByZXBsYWNlIHN1YnJlc291cmNlIFVSTHMgaW4gdGhlIGdpdmVuIERvY3VtZW50RnJh
Z21lbnQgd2l0aCBVUkxzIHN1cHBsaWVkIGJ5IHRoZQorICAgICAgICBlZGl0b3IgY2xpZW50LiBB
ZGRpdGlvbmFsbHkgYnVpbGRzIGEgbGlzdCBvZiBBcmNoaXZlUmVzb3VyY2VzIHRoYXQgaGF2ZSBu
b3QgYmVlbiByZXBsYWNlZCwgZm9yIHVzZSBhdCBjYWxsIHNpdGVzCisgICAgICAgIHNvIHRoYXQg
d2UgZG9uJ3QgdW5uZWNlc3NhcmlseSBjcmVhdGUgbW9yZSBCbG9icyBmb3IgQXJjaGl2ZVJlc291
cmNlcyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIHJlcGxhY2VkLgorCisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5p
dGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToKKworICAgICAgICBUd2VhayB3ZWIgY29udGVudCByZWFk
aW5nIGNvZGVwYXRocyB0byBmaXJzdCByZXBsYWNlIHN1YnJlc291cmNlIFVSTHMgd2l0aCBlZGl0
b3ItY2xpZW50LXN1cHBsaWVkIFVSTHMuCisKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRS
ZWFkZXI6OnJlYWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRDb252ZXJ0VG9CbG9i
KTogRGVsZXRlZC4KKworICAgICAgICBSZW5hbWUgdGhpcyBoZWxwZXIgdG8gc2hvdWxkUmVwbGFj
ZVN1YnJlc291cmNlVVJMLCBibG9iIFVSTCByZXBsYWNlbWVudCBpcyBubyBsb25nZXIgdGhlIG9u
bHkgc2NlbmFyaW8gaW4gd2hpY2gKKyAgICAgICAgd2UgcmVwbGFjZSByZXNvdXJjZSBVUkxzLCBi
dXQgaW4gYm90aCBjYXNlcywgd2Ugc3RpbGwgd2FudCB0byBpZ25vcmUgYGh0dHA6YC1mYW1pbHkg
YW5kIGBkYXRhOmAgVVJMcy4KKworICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgor
ICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6CisKIDIwMTgtMDEtMTIgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiByZWdpc3Ry
YXRpb24gfHwgaXNUZXJtaW5hdGluZygpIGluIFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpza2lw
V2FpdGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlmY2YxYTkzMDRjMjAyN2U1YTQ4YmFiZTEwZTQ5N2NjZjRl
Y2U5YmIuLmFiNzIwMmJmOWIzYTEyM2Q5ZThlMWE5NDNiNDQ3YjA3ZWU5YWRjMDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjcgQEAKKzIwMTgtMDEtMTQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGluamVjdGVkIGJ1bmRsZSBTUEkgdG8gcmVwbGFj
ZSBzdWJyZXNvdXJjZSBVUkxzIHdoZW4gZHJvcHBpbmcgb3IgcGFzdGluZyByaWNoIGNvbnRlbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTYzNwor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzY1MDg0NzE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG5ldyBpbmplY3RlZCBidW5kbGUgU1BJLCBy
ZXBsYWNlbWVudFVSTEZvclJlc291cmNlLCB3aGljaCBjbGllbnRzIG1heSB1c2UgdG8gcHJvdmlk
ZSBhIHJlcGxhY2VtZW50IFVSTCB0bworICAgICAgICByZXByZXNlbnQgYW4gYXJjaGl2ZSByZXNv
dXJjZSwgZ2l2ZW4gdGhlIHJlc291cmNlJ3MgZGF0YSBhbmQgTUlNRSB0eXBlLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JD
bGllbnQuaDoKKyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudDo6cmVw
bGFjZW1lbnRVUkxGb3JSZXNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VFZGl0b3JD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tX
ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtX
S1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgX3NldEVkaXRpbmdEZWxl
Z2F0ZTpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxl
UGFnZUVkaXRvckNsaWVudDo6cmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6cmVwbGFjZW1lbnRVUkxGb3JS
ZXNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaDoKKwogMjAxOC0wMS0xMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBzcGVjdWxhdGl2ZSBidWlsZCBmaXggYWZ0ZXIg
cjIyNjg5OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBlMjhmYjMzZjBhZDE4NzRm
ZGIyNjZlMTk4MDMxM2Y1NjhhNzhiNGNjLi5jNGY5MGQ3ODQzNDM5N2ZkZGI3ODhlNjRkMjc5NWMx
ZmM3Y2QzZmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTgtMDEtMTQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkIGluamVjdGVkIGJ1bmRsZSBTUEkgdG8gcmVwbGFjZSBzdWJyZXNvdXJjZSBVUkxz
IHdoZW4gZHJvcHBpbmcgb3IgcGFzdGluZyByaWNoIGNvbnRlbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTYzNworICAgICAgICA8cmRhcjovL3By
b2JsZW0vMzY1MDg0NzE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGEgc3R1YiBpbXBsZW1lbnRhdGlvbiBvZiByZXBsYWNlbWVudFVSTEZvclJl
c291cmNlLiBTZWUgV2ViQ29yZSBhbmQgV2ViS2l0IENoYW5nZUxvZ3MgZm9yIG1vcmUgZGV0YWls
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9y
Q2xpZW50OjpyZXBsYWNlbWVudFVSTEZvclJlc291cmNlKToKKwogMjAxOC0wMS0xMSAgS2VpdGgg
TWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgRU5BQkxF
X0FTWU5DX0lURVJBVElPTiB0byBFTkFCTEVfSlNfQVNZTkNfSVRFUkFUSU9OCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DaGFuZ2VMb2cKaW5kZXggOWY5YzMwOTJlNzUzOWE4MTRmZTJkY2Y4NWZkYmIzNTcyZWFl
ZDM3ZC4uZDhmMGZiNGRiYjRjNThlYjZkNzlmMGFmZTA3MTk3ZmYzZDEwODg1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE4LTAxLTE0ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBpbmplY3RlZCBi
dW5kbGUgU1BJIHRvIHJlcGxhY2Ugc3VicmVzb3VyY2UgVVJMcyB3aGVuIGRyb3BwaW5nIG9yIHBh
c3RpbmcgcmljaCBjb250ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODE2MzcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2NTA4NDcxPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHN0dWIg
aW1wbGVtZW50YXRpb24gb2YgcmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZS4gU2VlIFdlYkNvcmUg
YW5kIFdlYktpdCBDaGFuZ2VMb2dzIGZvciBtb3JlIGRldGFpbC4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6
OnJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oOgorCiAyMDE3LTEyLTI4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFJlbW92ZSBzdGQ6OmNocm9ubyBjb21wbGV0ZWx5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggOTZlYzFlOWYzMDY0ZDVmYTc3MDJlZTAxZDQ0
OWVmZjI3Y2MyZDYwNS4uMDM3ZDY0Njc5YTU5ODJlZmQyZjhkZGE4MTAyNTMxOTY3YzUwZGRlYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzk1Miw0ICszOTUyLDEyIEBAIGNvbnN0
IEZvbnQqIEVkaXRvcjo6Zm9udEZvclNlbGVjdGlvbihib29sJiBoYXNNdWx0aXBsZUZvbnRzKSBj
b25zdAogICAgIHJldHVybiBmb250OwogfQogCitTdHJpbmcgRWRpdG9yOjpjbGllbnRSZXBsYWNl
bWVudFVSTEZvclJlc291cmNlKFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzb3VyY2VEYXRhLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIGlmIChhdXRvKiBlZGl0b3JDbGllbnQgPSBjbGll
bnQoKSkKKyAgICAgICAgcmV0dXJuIGVkaXRvckNsaWVudC0+cmVwbGFjZW1lbnRVUkxGb3JSZXNv
dXJjZShXVEZNb3ZlKHJlc291cmNlRGF0YSksIG1pbWVUeXBlKTsKKworICAgIHJldHVybiB7IH07
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4
IGU2YTg5NjdlZDk0YjRmODU1YmJjM2E1YzU1NDkxNzhhYWZhMGRiZDUuLjAxNDlmYzIxMDE4ODU4
ZTFiMDVmMzZhMTBmZmU3ODQ2OWZlYzNmNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAt
NDg0LDYgKzQ4NCw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VT
ZWxlY3Rpb25XaXRoQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKiwgTWFpbEJs
b2NrcXVvdGVIYW5kbGluZyA9IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1
b3RlKTsKICNlbmRpZgogCisgICAgU3RyaW5nIGNsaWVudFJlcGxhY2VtZW50VVJMRm9yUmVzb3Vy
Y2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNvdXJjZURhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpOworCiAjaWYgIVBMQVRGT1JNKFdJTikKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHdyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYsIEVsZW1lbnQmIGltYWdlRWxl
bWVudCwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCmluZGV4IDFi
OWFlM2ZlNDVjOWM0ODY5MjZlOGMyN2MyZTY1MTYwMDdhNmUxOGMuLjAzZTE4YzBiZTMxMzA1MzUx
NGYyODRlOTRiMTRkNWZmOTAxMTI2NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC0xNzUsNyArMTc1LDcgQEAg
cHJpdmF0ZToKIH07CiAKIAotc3RhdGljIGJvb2wgc2hvdWxkQ29udmVydFRvQmxvYihjb25zdCBV
UkwmIHVybCkKK3N0YXRpYyBib29sIHNob3VsZFJlcGxhY2VTdWJyZXNvdXJjZVVSTChjb25zdCBV
UkwmIHVybCkKIHsKICAgICByZXR1cm4gISh1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8
IHVybC5wcm90b2NvbElzRGF0YSgpKTsKIH0KQEAgLTIyMyw3ICsyMjMsNyBAQCBzdGF0aWMgdm9p
ZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRG9jdW1lbnRGcmFnbWVudCYgZnJh
Z21lbnQsIGNvbnN0CiAgICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFJlZjxCbG9iPj4gdXJsVG9C
bG9iTWFwOwogICAgIGZvciAoY29uc3QgUmVmPEFyY2hpdmVSZXNvdXJjZT4mIHN1YnJlc291cmNl
IDogc3VicmVzb3VyY2VzKSB7CiAgICAgICAgIGF1dG8mIHVybCA9IHN1YnJlc291cmNlLT51cmwo
KTsKLSAgICAgICAgaWYgKHNob3VsZENvbnZlcnRUb0Jsb2IodXJsKSkKKyAgICAgICAgaWYgKHNo
b3VsZFJlcGxhY2VTdWJyZXNvdXJjZVVSTCh1cmwpKQogICAgICAgICAgICAgdXJsVG9CbG9iTWFw
LnNldCh1cmwuc3RyaW5nKCksIEJsb2I6OmNyZWF0ZShzdWJyZXNvdXJjZS0+ZGF0YSgpLCBzdWJy
ZXNvdXJjZS0+bWltZVR5cGUoKSkpOwogICAgIH0KIApAQCAtMjg2LDYgKzI4NiwzMCBAQCBzdGF0
aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRG9jdW1lbnRGcmFnbWVu
dCYgZnJhZ21lbnQsIGNvbnN0CiAjZW5kaWYKIH0KIAorc3RhdGljIHZvaWQgcmVwbGFjZVN1YnJl
c291cmNlVVJMc1dpdGhVUkxzRnJvbUNsaWVudChEb2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCwg
Y29uc3QgVmVjdG9yPFJlZjxBcmNoaXZlUmVzb3VyY2U+PiYgc3VicmVzb3VyY2VzLCBWZWN0b3I8
UmVmPEFyY2hpdmVSZXNvdXJjZT4+JiBvdXRVbnJlcGxhY2VkUmVzb3VyY2VzKQoreworICAgIEFT
U0VSVChmcmFnbWVudC5kb2N1bWVudCgpLmZyYW1lKCkpOworICAgIGF1dG8mIGZyYW1lID0gKmZy
YWdtZW50LmRvY3VtZW50KCkuZnJhbWUoKTsKKyAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgQXRv
bWljU3RyaW5nPiBzdWJyZXNvdXJjZVVSTFRvQ2xpZW50VVJMTWFwOworICAgIGZvciAoYXV0byYg
c3VicmVzb3VyY2UgOiBzdWJyZXNvdXJjZXMpIHsKKyAgICAgICAgYXV0byYgb3JpZ2luYWxVUkwg
PSBzdWJyZXNvdXJjZS0+dXJsKCk7CisgICAgICAgIGlmICghc2hvdWxkUmVwbGFjZVN1YnJlc291
cmNlVVJMKG9yaWdpbmFsVVJMKSkgeworICAgICAgICAgICAgb3V0VW5yZXBsYWNlZFJlc291cmNl
cy5hcHBlbmQoc3VicmVzb3VyY2UuY29weVJlZigpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICB9CisKKyAgICAgICAgYXV0byByZXBsYWNlbWVudFVSTCA9IGZyYW1lLmVkaXRvcigp
LmNsaWVudFJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2Uoc3VicmVzb3VyY2UtPmRhdGEoKSwgc3Vi
cmVzb3VyY2UtPm1pbWVUeXBlKCkpOworICAgICAgICBpZiAocmVwbGFjZW1lbnRVUkwuaXNFbXB0
eSgpKSB7CisgICAgICAgICAgICBvdXRVbnJlcGxhY2VkUmVzb3VyY2VzLmFwcGVuZChzdWJyZXNv
dXJjZS5jb3B5UmVmKCkpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAg
ICAgICBzdWJyZXNvdXJjZVVSTFRvQ2xpZW50VVJMTWFwLnNldChvcmlnaW5hbFVSTC5zdHJpbmco
KSwgcmVwbGFjZW1lbnRVUkwpOworICAgIH0KKworICAgIGlmICghc3VicmVzb3VyY2VVUkxUb0Ns
aWVudFVSTE1hcC5pc0VtcHR5KCkpCisgICAgICAgIHJlcGxhY2VTdWJyZXNvdXJjZVVSTHMoZnJh
Z21lbnQsIFdURk1vdmUoc3VicmVzb3VyY2VVUkxUb0NsaWVudFVSTE1hcCkpOworfQogCiBSZWZQ
dHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoRnJhbWUm
IGZyYW1lLCBOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsKQEAgLTMwOSwxMyArMzMzLDE2
IEBAIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNl
cyhGcmFtZSYgZnJhbWUsIE5TQXR0cmlidXRlCiAgICAgICAgIHJldHVybiBXVEZNb3ZlKGZyYWdt
ZW50QW5kUmVzb3VyY2VzLmZyYWdtZW50KTsKICAgICB9CiAKKyAgICBWZWN0b3I8UmVmPEFyY2hp
dmVSZXNvdXJjZT4+IHVucmVwbGFjZWRSZXNvdXJjZXM7CisgICAgcmVwbGFjZVN1YnJlc291cmNl
VVJMc1dpdGhVUkxzRnJvbUNsaWVudCgqZnJhZ21lbnRBbmRSZXNvdXJjZXMuZnJhZ21lbnQsIGZy
YWdtZW50QW5kUmVzb3VyY2VzLnJlc291cmNlcywgdW5yZXBsYWNlZFJlc291cmNlcyk7CisKICAg
ICBpZiAoc2hvdWxkUmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKCkpIHsKLSAgICAg
ICAgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKCpmcmFnbWVudEFuZFJlc291cmNl
cy5mcmFnbWVudCwgZnJhZ21lbnRBbmRSZXNvdXJjZXMucmVzb3VyY2VzKTsKKyAgICAgICAgcmVw
bGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKCpmcmFnbWVudEFuZFJlc291cmNlcy5mcmFn
bWVudCwgdW5yZXBsYWNlZFJlc291cmNlcyk7CiAgICAgICAgIHJldHVybiBXVEZNb3ZlKGZyYWdt
ZW50QW5kUmVzb3VyY2VzLmZyYWdtZW50KTsKICAgICB9CiAKICAgICBIYXNoTWFwPEF0b21pY1N0
cmluZywgQXRvbWljU3RyaW5nPiBibG9iVVJMTWFwOwotICAgIGZvciAoY29uc3QgUmVmPEFyY2hp
dmVSZXNvdXJjZT4mIHN1YnJlc291cmNlIDogZnJhZ21lbnRBbmRSZXNvdXJjZXMucmVzb3VyY2Vz
KSB7CisgICAgZm9yIChjb25zdCBSZWY8QXJjaGl2ZVJlc291cmNlPiYgc3VicmVzb3VyY2UgOiB1
bnJlcGxhY2VkUmVzb3VyY2VzKSB7CiAgICAgICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZShz
dWJyZXNvdXJjZS0+ZGF0YSgpLCBzdWJyZXNvdXJjZS0+bWltZVR5cGUoKSk7CiAgICAgICAgIFN0
cmluZyBibG9iVVJMID0gRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIGJsb2IpOwog
ICAgICAgICBibG9iVVJMTWFwLnNldChzdWJyZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCksIGJsb2JV
UkwpOwpAQCAtMzY2LDE1ICszOTMsMTggQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdp
dGhBcmNoaXZlKERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmQKICAgICBB
U1NFUlQoc3RhZ2luZ0RvY3VtZW50KTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21l
bnRGcm9tTWFya3VwKCpzdGFnaW5nRG9jdW1lbnQsIG1hcmt1cEFuZEFyY2hpdmUubWFya3VwLCBt
YXJrdXBBbmRBcmNoaXZlLm1haW5SZXNvdXJjZS0+dXJsKCksIERpc2FsbG93U2NyaXB0aW5nQW5k
UGx1Z2luQ29udGVudCk7CiAKKyAgICBWZWN0b3I8UmVmPEFyY2hpdmVSZXNvdXJjZT4+IHVucmVw
bGFjZWRSZXNvdXJjZXM7CisgICAgcmVwbGFjZVN1YnJlc291cmNlVVJMc1dpdGhVUkxzRnJvbUNs
aWVudChmcmFnbWVudCwgbWFya3VwQW5kQXJjaGl2ZS5hcmNoaXZlLT5zdWJyZXNvdXJjZXMoKSwg
dW5yZXBsYWNlZFJlc291cmNlcyk7CisKICAgICBpZiAoc2hvdWxkUmVwbGFjZVJpY2hDb250ZW50
V2l0aEF0dGFjaG1lbnRzKCkpIHsKLSAgICAgICAgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFj
aG1lbnRzKGZyYWdtZW50LCBtYXJrdXBBbmRBcmNoaXZlLmFyY2hpdmUtPnN1YnJlc291cmNlcygp
KTsKKyAgICAgICAgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKGZyYWdtZW50LCB1
bnJlcGxhY2VkUmVzb3VyY2VzKTsKICAgICAgICAgcmV0dXJuIG1hcmt1cEZvckZyYWdtZW50SW5E
b2N1bWVudChXVEZNb3ZlKGZyYWdtZW50KSwgKnN0YWdpbmdEb2N1bWVudCk7CiAgICAgfQogCiAg
ICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIEF0b21pY1N0cmluZz4gYmxvYlVSTE1hcDsKLSAgICBm
b3IgKGNvbnN0IFJlZjxBcmNoaXZlUmVzb3VyY2U+JiBzdWJyZXNvdXJjZSA6IG1hcmt1cEFuZEFy
Y2hpdmUuYXJjaGl2ZS0+c3VicmVzb3VyY2VzKCkpIHsKKyAgICBmb3IgKGNvbnN0IFJlZjxBcmNo
aXZlUmVzb3VyY2U+JiBzdWJyZXNvdXJjZSA6IHVucmVwbGFjZWRSZXNvdXJjZXMpIHsKICAgICAg
ICAgYXV0byYgc3VicmVzb3VyY2VVUkwgPSBzdWJyZXNvdXJjZS0+dXJsKCk7Ci0gICAgICAgIGlm
ICghc2hvdWxkQ29udmVydFRvQmxvYihzdWJyZXNvdXJjZVVSTCkpCisgICAgICAgIGlmICghc2hv
dWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YnJlc291cmNlVVJMKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoc3VicmVzb3VyY2UtPmRh
dGEoKSwgc3VicmVzb3VyY2UtPm1pbWVUeXBlKCkpOwogICAgICAgICBTdHJpbmcgYmxvYlVSTCA9
IERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRlc3RpbmF0aW9uRG9jdW1lbnQsIGJsb2IpOwpAQCAt
MzkyLDcgKzQyMiw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShE
b2N1bWVudCYgZGVzdGluYXRpb25Eb2N1bWVudCwgTWFya3VwQW5kCiAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICBhdXRvIHN1YmZyYW1lVVJMID0gc3ViZnJhbWVNYWluUmVzb3VyY2Ut
PnVybCgpOwotICAgICAgICBpZiAoIXNob3VsZENvbnZlcnRUb0Jsb2Ioc3ViZnJhbWVVUkwpKQor
ICAgICAgICBpZiAoIXNob3VsZFJlcGxhY2VTdWJyZXNvdXJjZVVSTChzdWJmcmFtZVVSTCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBNYXJrdXBBbmRBcmNoaXZlIHN1YmZyYW1l
Q29udGVudCA9IHsgU3RyaW5nOjpmcm9tVVRGOChzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgp
LmRhdGEoKSwgc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLApAQCAtNTgxLDEw
ICs2MTEsMTYgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUGxhaW5UZXh0KGNvbnN0IFN0
cmluZyYgdGV4dCkKIAogYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKLSAgICBhdXRvIGJsb2Ig
PSBCbG9iOjpjcmVhdGUoYnVmZmVyLmdldCgpLCB0eXBlKTsKICAgICBBU1NFUlQoZnJhbWUuZG9j
dW1lbnQoKSk7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsKIAorICAg
IGF1dG8gcmVwbGFjZW1lbnRVUkwgPSBmcmFtZS5lZGl0b3IoKS5jbGllbnRSZXBsYWNlbWVudFVS
TEZvclJlc291cmNlKGJ1ZmZlci5jb3B5UmVmKCksIHR5cGUpOworICAgIGlmICghcmVwbGFjZW1l
bnRVUkwuaXNFbXB0eSgpKSB7CisgICAgICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZyYWdtZW50Rm9y
SW1hZ2VBbmRVUkwoZG9jdW1lbnQsIHJlcGxhY2VtZW50VVJMKSk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZShidWZmZXIuZ2V0KCks
IHR5cGUpOwogICAgIGlmIChzaG91bGRSZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMo
KSkKICAgICAgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQo
ZG9jdW1lbnQsIFdURk1vdmUoYmxvYikpKTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuY3BwCmluZGV4IGYyNGFkNmFhMDEzMGZmOGE0NjA5NjU4MDhhMDBkOGY3MWY5
YjYwZGMuLjI1ZTllYjY5Y2ZhNThkYzc1ODNkZWQ4NWExNWZmYzQ4MzVjZjUwN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0xNzYsNiArMTc2LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChSYW5nZSopIGZpbmFs
IHsgfQogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbCB7IH0K
ICAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoUmFuZ2UqLCBWZWN0b3I8
U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KKyAgICBT
dHJpbmcgcmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25z
dCBTdHJpbmcmKSBmaW5hbCB7IHJldHVybiB7IH07IH0KICAgICB2b2lkIHJlcXVlc3RDYW5kaWRh
dGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBmaW5hbCB7IH0KICAgICB2
b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVz
dWx0KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKaW5kZXggZTAyY2Mw
OTAzODg5ODZiNTIwNzJkNjJhMWYyZjBjN2M2OTJlOGRjMy4uMzE5MDUxZWYwN2NhM2M0MzI0YTBj
ZDE0MmU2MjZmMzBiMTk1YjM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0
b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCkBAIC04
Niw2ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9u
VG9QYXN0ZWJvYXJkKFJhbmdlKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVj
dGlvblRvUGFzdGVib2FyZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVi
b2FyZERhdGFGb3JSYW5nZShSYW5nZSosIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7CisgICAg
dmlydHVhbCBTdHJpbmcgcmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZShSZWY8U2hhcmVkQnVmZmVy
PiYmIHJlc291cmNlRGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNv
ZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRv
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9B
UElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCmluZGV4IDc3NzRmNzVkMjczOGFmOWZlNGIx
ZDFiNzk5YjMwNDkxMjhjY2IzNDIuLmE2NjhjMDQyODM3ZjU3MGUyMWY5MWFlOGFjYzk0MmI1Mzll
YzViZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xp
ZW50LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvckluc2VydEFj
dGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEFmZmluaXR5Lmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbjsKQEAgLTYyLDYgKzYzLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViS2l0OjpXZWJQ
YWdlJiwgU3RyaW5nSW1wbCogbm90aWZpY2F0aW9uTmFtZSkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmLCBXZWJDb3JlOjpSYW5nZSop
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6
V2ViUGFnZSYsIFdlYkNvcmU6OlJhbmdlKiwgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFzdGVib2Fy
ZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJk
RGF0YSkgeyB9CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyByZXBsYWNlbWVudFVSTEZvclJlc291
cmNlKFdlYktpdDo6V2ViUGFnZSYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0
IFdURjo6U3RyaW5nJikgeyByZXR1cm4geyB9OyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRl
VG9QYXN0ZWJvYXJkKFdlYktpdDo6V2ViUGFnZSYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBwZXJm
b3JtVHdvU3RlcERyb3AoV2ViS2l0OjpXZWJQYWdlJiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVu
dCYsIFdlYkNvcmU6OlJhbmdlJiwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dL
V2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVs
ZWdhdGUuaAppbmRleCBjODIwOWExODE2NmViOGZjY2I4NDJiMzk1MzU2NDhkMTY5ZGE2MDExLi5i
YzQ0NmE2NDI3ZjNhZDIyZDA4MmRhNTkwN2JiOTUxMGYxMjdkYjQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vz
c1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRl
LmgKQEAgLTU5LDYgKzU5LDcgQEAgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIuMyksIGlv
cygxMC4zKSkKIC0gKHZvaWQpX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xs
ZXJEaWRDaGFuZ2VCeUVkaXRpbmc6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlciAqKWNvbnRyb2xsZXI7CiAtICh2b2lkKV93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNv
bnRleHRDb250cm9sbGVyOihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xs
ZXIgKiljb250cm9sbGVyIHdpbGxXcml0ZVJhbmdlVG9QYXN0ZWJvYXJkOihXS1dlYlByb2Nlc3NQ
bHVnSW5SYW5nZUhhbmRsZSAqKXJhbmdlOwogLSAoTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5T
RGF0YSAqPiAqKV93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOihXS1dl
YlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKiljb250cm9sbGVyIHBhc3Rl
Ym9hcmREYXRhRm9yUmFuZ2U6KFdLV2ViUHJvY2Vzc1BsdWdJblJhbmdlSGFuZGxlICopcmFuZ2U7
CistIChOU1N0cmluZyAqKV93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVy
OihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKiljb250cm9sbGVy
IHJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2U6KE5TRGF0YSAqKXJlc291cmNlRGF0YSBtaW1lVHlw
ZTooTlNTdHJpbmcgKiltaW1lVHlwZTsKIC0gKHZvaWQpX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXJEaWRXcml0ZVRvUGFzdGVib2FyZDooV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY29udHJvbGxlcjsKIC0gKEJPT0wpX3dlYlByb2Nl
c3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgcGVyZm9ybVR3b1N0ZXBEcm9wOihXS1dl
YlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlICopZnJhZ21lbnQgYXREZXN0aW5hdGlvbjooV0tXZWJQ
cm9jZXNzUGx1Z0luUmFuZ2VIYW5kbGUgKilkZXN0aW5hdGlvbiBpc01vdmU6KEJPT0wpaXNNb3Zl
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEzKSwgaW9zKDExLjApKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCmluZGV4IDBiNzU2NTBlOWY3OWVi
MzljY2E5ZjE5ZTkxZmNmMTlkMzY2MjIxZmEuLmIyZGE4M2E2MDk5ZGYxNDgxZDdiM2NhODJiMGFh
ZjU0YjI3MWUzNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50LmgKQEAgLTYyLDYgKzYyLDcgQEAgdHlwZWRlZiBib29sICgqV0tCdW5kbGVQYWdlU2hvdWxk
QXBwbHlTdHlsZSkoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlQ1NTU3QKIHR5cGVkZWYg
dm9pZCAoKldLQnVuZGxlUGFnZUVkaXRpbmdOb3RpZmljYXRpb24pKFdLQnVuZGxlUGFnZVJlZiBw
YWdlLCBXS1N0cmluZ1JlZiBub3RpZmljYXRpb25OYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZVdpbGxXcml0ZVRvUGFzdGVib2FyZCkoV0tC
dW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYgcmFuZ2UsICBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZUdldFBhc3RlYm9h
cmREYXRhRm9yUmFuZ2UpKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZVJhbmdlSGFuZGxl
UmVmIHJhbmdlLCBXS0FycmF5UmVmKiBwYXN0ZWJvYXJkVHlwZXMsIFdLQXJyYXlSZWYqIHBhc3Rl
Ym9hcmREYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgV0tTdHJpbmdSZWYg
KCpXS0J1bmRsZVBhZ2VSZXBsYWNlbWVudFVSTEZvclJlc291cmNlKShXS0J1bmRsZVBhZ2VSZWYs
IFdLRGF0YVJlZiByZXNvdXJjZURhdGEsIFdLU3RyaW5nUmVmIG1pbWVUeXBlLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZFdyaXRlVG9QYXN0
ZWJvYXJkKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0
eXBlZGVmIGJvb2wgKCpXS0J1bmRsZVBhZ2VQZXJmb3JtVHdvU3RlcERyb3ApKFdLQnVuZGxlUGFn
ZVJlZiBwYWdlLCBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgZnJhZ21lbnQsIFdLQnVuZGxlUmFuZ2VI
YW5kbGVSZWYgZGVzdGluYXRpb24sIGJvb2wgaXNNb3ZlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KTsKIApAQCAtMTA2LDYgKzEwNyw3IEBAIHR5cGVkZWYgc3RydWN0IFdLQnVuZGxlUGFnZUVkaXRv
ckNsaWVudFYxIHsKICAgICAvLyBWZXJzaW9uIDEuCiAgICAgV0tCdW5kbGVQYWdlV2lsbFdyaXRl
VG9QYXN0ZWJvYXJkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxsV3JpdGVU
b1Bhc3RlYm9hcmQ7CiAgICAgV0tCdW5kbGVQYWdlR2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlOwor
ICAgIFdLQnVuZGxlUGFnZVJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZTsKICAgICBXS0J1bmRsZVBh
Z2VEaWRXcml0ZVRvUGFzdGVib2FyZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRpZFdyaXRlVG9QYXN0ZWJvYXJkOwogICAgIFdLQnVuZGxlUGFnZVBlcmZvcm1Ud29TdGVwRHJv
cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyZm9ybVR3b1N0ZXBEcm9w
OwogfSBXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnRWMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJy
b3dzZXJDb250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlci5tbQppbmRleCBmMmQ5NGE5NTYzZTFkNjFlMGIxNzQ0NjY3M2U4Njg2M2UyNjk2ZDczLi40
OWQzMTE0OTAwOTBhMGQ5OTY4MTBkZmYwNzM3M2UyZTU4ZGU0ZDZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNv
bnRleHRDb250cm9sbGVyLm1tCkBAIC02NjAsNiArNjYwLDE2IEBAIC0gKHZvaWQpX3NldEVkaXRp
bmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGlu
Z0RlbGVnCiAgICAgICAgICAgICB9OwogICAgICAgICB9CiAKKyAgICAgICAgV1RGOjpTdHJpbmcg
cmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZShXZWJLaXQ6OldlYlBhZ2UmLCBSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmIHJlc291cmNlRGF0YSwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBl
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fZGVsZWdhdGVNZXRob2RzLnJlcGxhY2Vt
ZW50VVJMRm9yUmVzb3VyY2UpCisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAg
ICAgICAgTlNTdHJpbmcgKnR5cGUgPSAoTlNTdHJpbmcgKiltaW1lVHlwZTsKKyAgICAgICAgICAg
IGF1dG8gZGF0YSA9IHJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgICAgICBy
ZXR1cm4gW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1Bs
dWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgcmVwbGFjZW1lbnRVUkxG
b3JSZXNvdXJjZTpkYXRhLmdldCgpIG1pbWVUeXBlOnR5cGVdOworICAgICAgICB9CisKICAgICAg
ICAgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmKSBmaW5hbAogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fZGVsZWdhdGVNZXRob2RzLmRpZFdyaXRlVG9QYXN0
ZWJvYXJkKQpAQCAtNjg2LDYgKzY5Niw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZToo
aWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAg
ICAgICAgICAgICAgLCBkaWRDaGFuZ2UoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJEaWRDaGFuZ2VC
eUVkaXRpbmc6KV0pCiAgICAgICAgICAgICAgICAgLCB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXI6d2lsbFdyaXRlUmFuZ2VUb1Bhc3RlYm9hcmQ6KV0pCiAgICAg
ICAgICAgICAgICAgLCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFtkZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyOnBhc3RlYm9hcmREYXRhRm9yUmFuZ2U6KV0pCisgICAgICAgICAgICAgICAgLCByZXBs
YWNlbWVudFVSTEZvclJlc291cmNlKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOnJlcGxhY2VtZW50
VVJMRm9yUmVzb3VyY2U6bWltZVR5cGU6KV0pCiAgICAgICAgICAgICAgICAgLCBkaWRXcml0ZVRv
UGFzdGVib2FyZChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViUHJv
Y2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlckRpZFdyaXRlVG9QYXN0ZWJvYXJkOild
KQogICAgICAgICAgICAgICAgICwgcGVyZm9ybVR3b1N0ZXBEcm9wKFtkZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyOnBlcmZvcm1Ud29TdGVwRHJvcDphdERlc3RpbmF0aW9uOmlzTW92ZTopXSkKICAgICAg
ICAgICAgIHsKQEAgLTY5Niw2ICs3MDcsNyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6
KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAg
ICAgICAgICAgYm9vbCBkaWRDaGFuZ2U7CiAgICAgICAgICAgICBib29sIHdpbGxXcml0ZVRvUGFz
dGVib2FyZDsKICAgICAgICAgICAgIGJvb2wgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZTsKKyAg
ICAgICAgICAgIGJvb2wgcmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZTsKICAgICAgICAgICAgIGJv
b2wgZGlkV3JpdGVUb1Bhc3RlYm9hcmQ7CiAgICAgICAgICAgICBib29sIHBlcmZvcm1Ud29TdGVw
RHJvcDsKICAgICAgICAgfSBtX2RlbGVnYXRlTWV0aG9kczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKaW5kZXggMDQ5M2Q1YzcwMTQ5ZmU1MzI4Mjkw
OWMxODI3OGFhZDU5MDExZWI3NS4uNmE1YzgwMjI4NzRlNGI5ZDc1MmVjOWQwZTQ2MmM0YTYzM2Fk
OWU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5j
cHAKQEAgLTMzLDYgKzMzLDggQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxl
LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0Lmgi
CisjaW5jbHVkZSAiV0tEYXRhLmgiCisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKICNpbmNsdWRl
ICJXS1N0cmluZy5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Rv
Y3VtZW50RnJhZ21lbnQuaD4KQEAgLTE3Myw2ICsxNzUsMTYgQEAgdm9pZCBJbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFn
ZSwgUmEKICAgICB9CiB9CiAKK1N0cmluZyBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6
OnJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UoV2ViUGFnZSYgcGFnZSwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiByZXNvdXJjZURhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgaWYgKCFt
X2NsaWVudC5yZXBsYWNlbWVudFVSTEZvclJlc291cmNlKQorICAgICAgICByZXR1cm4geyB9Owor
CisgICAgYXV0byBkYXRhID0gYWRvcHRXSyhXS0RhdGFDcmVhdGUocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1bnNpZ25lZCBjaGFyKj4ocmVzb3VyY2VEYXRhLT5kYXRhKCkpLCByZXNvdXJjZURhdGEt
PnNpemUoKSkpOworICAgIGF1dG8gdHlwZSA9IGFkb3B0V0sodG9Db3BpZWRBUEkobWltZVR5cGUp
KTsKKyAgICByZXR1cm4gdG9XVEZTdHJpbmcobV9jbGllbnQucmVwbGFjZW1lbnRVUkxGb3JSZXNv
dXJjZSh0b0FQSSgmcGFnZSksIGRhdGEuZ2V0KCksIHR5cGUuZ2V0KCksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbykpOworfQorCiBib29sIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6
cGVyZm9ybVR3b1N0ZXBEcm9wKFdlYlBhZ2UmIHBhZ2UsIERvY3VtZW50RnJhZ21lbnQmIGZyYWdt
ZW50LCBSYW5nZSYgZGVzdGluYXRpb24sIGJvb2wgaXNNb3ZlKQogewogICAgIGlmICghbV9jbGll
bnQucGVyZm9ybVR3b1N0ZXBEcm9wKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudC5oCmluZGV4IDY4OTk0MWExOGU4ZDllOTRjYTQyNmY5NDJiMWViOGEwYjNjZjg0
YmIuLmZjZDEwODhmZjFkYmE3NGJhZjdkMTg1OTkyYjgxZDMwMTExNzQ1YzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKQEAgLTY1LDYgKzY1LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJQYWdlJiwgU3RyaW5nSW1w
bCogbm90aWZpY2F0aW9uTmFtZSkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVUb1Bhc3RlYm9h
cmQoV2ViUGFnZSYsIFdlYkNvcmU6OlJhbmdlKikgZmluYWw7CiAgICAgdm9pZCBnZXRQYXN0ZWJv
YXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmLCBXZWJDb3JlOjpSYW5nZSosIFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4m
IHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICBTdHJpbmcgcmVwbGFjZW1lbnRVUkxGb3JSZXNv
dXJjZShXZWJQYWdlJiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNvdXJjZURhdGEs
IGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2Vi
UGFnZSYpIGZpbmFsOwogICAgIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYlBhZ2UmLCBXZWJD
b3JlOjpEb2N1bWVudEZyYWdtZW50JiwgV2ViQ29yZTo6UmFuZ2UmIGRlc3RpbmF0aW9uLCBib29s
IGlzTW92ZSkgZmluYWw7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCA1MzkzZGYyMGNk
NDNiZmUyZjczMmM4MzY0NmQ4MDUxMDAyM2VkZjMzLi4yYjllZDZkYmNkMmM2MTBhYzBjYjk2ODE2
NWRiOTkyMjMwN2FmYWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjU4LDYgKzI1OCwx
MSBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5n
ZShSYW5nZSogcmFuZ2UsIFZlY3RvcjxTdHJpbgogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVF
ZGl0b3JDbGllbnQoKS5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKCptX3BhZ2UsIHJhbmdlLCBw
YXN0ZWJvYXJkVHlwZXMsIHBhc3RlYm9hcmREYXRhKTsKIH0KIAorU3RyaW5nIFdlYkVkaXRvckNs
aWVudDo6cmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmIHJlc291cmNlRGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICByZXR1cm4g
bV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLnJlcGxhY2VtZW50VVJMRm9yUmVz
b3VyY2UoKm1fcGFnZSwgV1RGTW92ZShyZXNvdXJjZURhdGEpLCBtaW1lVHlwZSk7Cit9CisKIGJv
b2wgV2ViRWRpdG9yQ2xpZW50OjpwZXJmb3JtVHdvU3RlcERyb3AoRG9jdW1lbnRGcmFnbWVudCYg
ZnJhZ21lbnQsIFJhbmdlJiBkZXN0aW5hdGlvbiwgYm9vbCBpc01vdmUpCiB7CiAgICAgcmV0dXJu
IG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS5wZXJmb3JtVHdvU3RlcERyb3Ao
Km1fcGFnZSwgZnJhZ21lbnQsIGRlc3RpbmF0aW9uLCBpc01vdmUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CmluZGV4IGE4YTYxYjA1MmM5OTg2ODcwNDVkZTZiOTljNWMwMzU5OWNkYzZlMDIuLjg5NjAyMTk5
NDQwZjA1NTU5ZDc5YmI1NGIwOTY4MjU5NjI5YzNjZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAg
LTc2LDYgKzc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZChXZWJDb3JlOjpSYW5nZSopIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKICAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UoV2ViQ29yZTo6UmFuZ2UqLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkg
ZmluYWw7CisgICAgU3RyaW5nIHJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UoUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiByZXNvdXJjZURhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGZp
bmFsOwogICAgIAogICAgIHZvaWQgcmVnaXN0ZXJVbmRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYp
IGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJSZWRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0NTExOTQ3NmRmYmYxMjQ2ZWM5ODAxNGNkZGY5NDBl
MGZhZjhiMmI0Li5mYTJlZDMyODI1Nzg0NzhiM2NmNWQwODFmNzFjODY1ZWY4MWQ3MDM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaApAQCAtNzgsNiArNzgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFdy
aXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFdlYkNvcmU6OlJhbmdlKikgZmluYWw7CiAgICAgdm9p
ZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwogICAgIHZvaWQgZ2V0Q2xp
ZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJDb3JlOjpSYW5nZSosIFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4m
IHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICBTdHJpbmcgcmVwbGFjZW1lbnRVUkxGb3JSZXNv
dXJjZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc291cmNlRGF0YSwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkgZmluYWw7CiAKICAgICB2b2lkIHNldEluc2VydGlvblBhc3RlYm9hcmQo
Y29uc3QgU3RyaW5nJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCBlODA3YTNlOGZh
MzNiNjgwZTYzM2MyODU3MTBlM2ZiY2RiNjYxZjI2Li4wNDFiYWNhZDlmYmI5YjZkNzI1MGQ1Njk5
ZmM2OWMyMDk1ZTc5NDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC00MTksNiArNDE5LDEyIEBA
IHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdl
YkNvcmU6OlJhbmdlKiwgVmVjdG9yPFN0CiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwg
b25seSBXZWJLaXQyLgogfQogCitTdHJpbmcgV2ViRWRpdG9yQ2xpZW50OjpyZXBsYWNlbWVudFVS
TEZvclJlc291cmNlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYpCit7CisgICAg
Ly8gTm90IGltcGxlbWVudGVkIGluIFdlYktpdExlZ2FjeS4KKyAgICByZXR1cm4geyB9OworfQor
CiAjaWYgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTEwMDAwKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTMwMCkKIAogLy8gRklYTUU6IFJlbW92ZSBib3RoIHRoaXMgc3R1YiBhbmQg
dGhlIHJlYWwgdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uIGJlbG93IG9uY2Ugd2UgZG9uJ3QgbmVl
ZCB0aGUgcmVhbCB2ZXJzaW9uIG9uIGFueSBzdXBwb3J0ZWQgcGxhdGZvcm0uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmNwcAppbmRleCA1YjBiNWNiMDEzYmU1OWEzOTU2ZjA4YTg3NmEzZjQxNTBiNzQ4M2EzLi41
NmU3Y2YwYjQ4YzlhNTQyMmZmMGFkZDY3NDY4ZmU4ZGVjNGRhYzBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5jcHAKQEAgLTI2OSw2ICsyNjksMTIgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVu
dFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViQ29yZTo6UmFuZ2UqLCBWZWN0b3I8U3QKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQogCitTdHJpbmcgV2ViRWRpdG9yQ2xpZW50OjpyZXBsYWNlbWVu
dFVSTEZvclJlc291cmNlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmlu
ZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4geyB9OworfQorCiBib29s
IFdlYkVkaXRvckNsaWVudDo6c2hvdWxkRGVsZXRlUmFuZ2UoUmFuZ2UqIHJhbmdlKQogewogICAg
IENPTVB0cjxJV2ViRWRpdGluZ0RlbGVnYXRlPiBlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNjNl
YzRmY2U0MGQ5MTliYjVlYmI2NmY4MmRiODU3ODkzNGUxZmRjMy4uN2E2ZWRkZTgxOTM2MTM4NTlh
MzFkMmYwZDJlYmIzNWY4MjJjNWQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTU0LDYgKzU0LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChXZWJD
b3JlOjpSYW5nZSopIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoKSBmaW5hbDsKICAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2Vi
Q29yZTo6UmFuZ2UqLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAg
U3RyaW5nIHJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiwgY29uc3QgU3RyaW5nJikgZmluYWw7CiAKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2Vy
ZWRTZWxlY3Rpb25DaGFuZ2VzKCkgZmluYWwgeyB9CiAgICAgdm9pZCByZXNwb25kVG9DaGFuZ2Vk
Q29udGVudHMoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCA3ODY1MjU4YmFhMTRkZmU5Njc0YWJmN2EyZjIwMDY5M2IyNzc4ZThkLi5j
OTNmMTA3M2JhNjJkZjFhM2RiZTVjZDU3NWUyY2RjMzQ3Y2QyNjMwIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTgt
MDEtMTQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAg
QWRkIGluamVjdGVkIGJ1bmRsZSBTUEkgdG8gcmVwbGFjZSBzdWJyZXNvdXJjZSBVUkxzIHdoZW4g
ZHJvcHBpbmcgb3IgcGFzdGluZyByaWNoIGNvbnRlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTYzNworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MzY1MDg0NzE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIDIgbmV3IEFQSSB0ZXN0cyB0byBleGVyY2lzZSBpbmplY3RlZCBidW5kbGUgU1BJIGZv
ciBzdXBwbHlpbmcgcmVwbGFjZW1lbnQgVVJMcyB3aGVuIHBhc3RpbmcgYW4gaW1hZ2UsIGFuZCBh
bgorICAgICAgICBhdHRyaWJ1dGVkIHN0cmluZyBjb250YWluaW5nIG11bHRpcGxlIE5TVGV4dEF0
dGFjaG1lbnRzLiBTZWUgV2ViS2l0IGFuZCBXZWJDb3JlIENoYW5nZUxvZ3MgZm9yIG1vcmUgZGV0
YWlsLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9CdW5kbGVF
ZGl0aW5nRGVsZWdhdGVQbHVnSW4ubW06CisgICAgICAgICgtW0J1bmRsZUVkaXRpbmdEZWxlZ2F0
ZVBsdWdJbiB3ZWJQcm9jZXNzUGx1Z0luOmRpZENyZWF0ZUJyb3dzZXJDb250ZXh0Q29udHJvbGxl
cjpdKToKKyAgICAgICAgKC1bQnVuZGxlRWRpdGluZ0RlbGVnYXRlUGx1Z0luIF93ZWJQcm9jZXNz
UGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOnJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2U6
bWltZVR5cGU6XSk6CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBuZXcgT2JqZWN0aXZlLUMgYnVu
ZGxlIFNQSSB0byBsb29rIHVwIHRoZSBpbmNvbWluZyBNSU1FIHR5cGUgaW4gdGhlIGRpY3Rpb25h
cnkgc3VwcGxpZWQgdmlhIHRoZQorICAgICAgICAiTUlNRVR5cGVUb1JlcGxhY2VtZW50VVJMTWFw
IiBidW5kbGUgaW5pdGlhbGl6YXRpb24gcGFyYW1ldGVyLCBhbmQgcmV0dXJuIGl0LgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5t
bToKKyAgICAgICAgKHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMpOgorICAgICAgICAoLVtU
ZXN0V0tXZWJWaWV3IHRhZ3NJbkJvZHldKToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBleHBl
Y3RFbGVtZW50VGFnc0luT3JkZXI6XSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgZXhwZWN0
RWxlbWVudFRhZzp0b0NvbWVCZWZvcmU6XSk6CisKKyAgICAgICAgQWRkIGEgdGVzdCBoZWxwZXIg
dG8gY2hlY2sgdGhhdCB0aGUgZ2l2ZW4gbGlzdCBvZiBlbGVtZW50IHRhZ3MgYXBwZWFycyBpbiB0
aGUgZG9jdW1lbnQgYm9keS4gQWxzbywgcmVpbXBsZW1lbnQKKyAgICAgICAgdGhlIGV4aXN0aW5n
IC1leHBlY3RFbGVtZW50VGFnOnRvQ29tZUJlZm9yZTogYXMgYSBzcGVjaWFsIGNhc2Ugb2YgLWV4
cGVjdEVsZW1lbnRUYWdzSW5PcmRlcjouCisKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmplY3RlZEJ1
bmRsZVBhZ2UpOgorCiAyMDE4LTAxLTEyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBw
bGUuY29tPgogCiAgICAgICAgIFttYWNPU10gQVBJIHRlc3RzIENoYW5nZUF0dGFjaG1lbnREYXRh
VXBkYXRlc1dpdGhJblBsYWNlRGlzcGxheSBhbmQgSW5QbGFjZVZpZGVvQXR0YWNobWVudEluc2Vy
dGlvbldpdGhpbkxpc3QgYXJlIGZhaWxpbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQnVuZGxlRWRpdGluZ0RlbGVnYXRlUGx1Z0luLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9CdW5kbGVFZGl0aW5nRGVsZWdhdGVQ
bHVnSW4ubW0KaW5kZXggYzYzYzBhOGVjZjQ0NjA1N2Q1MmU2NDA1MzZmYjE4YmU4MjRjZGIyYS4u
MzNmMmJiODMyNjBmMTJkNmQyYjgzOTBlNzQ1MGQwZjViYWY2NjAxYyAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9CdW5kbGVFZGl0aW5nRGVsZWdhdGVQ
bHVnSW4ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9CdW5k
bGVFZGl0aW5nRGVsZWdhdGVQbHVnSW4ubW0KQEAgLTQ3LDYgKzQ3LDcgQEAgQGltcGxlbWVudGF0
aW9uIEJ1bmRsZUVkaXRpbmdEZWxlZ2F0ZVBsdWdJbiB7CiAgICAgUmV0YWluUHRyPGlkIDxCdW5k
bGVFZGl0aW5nRGVsZWdhdGVQcm90b2NvbD4+IF9yZW1vdGVPYmplY3Q7CiAgICAgQk9PTCBfZWRp
dGluZ0RlbGVnYXRlU2hvdWxkSW5zZXJ0VGV4dDsKICAgICBCT09MIF9zaG91bGRPdmVycmlkZVBl
cmZvcm1Ud29TdGVwRHJvcDsKKyAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PE5TU3RyaW5nICos
IE5TU3RyaW5nICo+PiBfbWltZVR5cGVUb1JlcGxhY2VtZW50VVJMTWFwOwogfQogCiAtICh2b2lk
KXdlYlByb2Nlc3NQbHVnSW46KFdLV2ViUHJvY2Vzc1BsdWdJbkNvbnRyb2xsZXIgKilwbHVnSW5D
b250cm9sbGVyIGRpZENyZWF0ZUJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9jZXNz
UGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopYnJvd3NlckNvbnRleHRDb250cm9sbGVy
CkBAIC02Myw2ICs2NCw3IEBAIC0gKHZvaWQpd2ViUHJvY2Vzc1BsdWdJbjooV0tXZWJQcm9jZXNz
UGx1Z0luQ29udHJvbGxlciAqKXBsdWdJbkNvbnRyb2xsZXIgZGlkQ3JlCiAgICAgICAgIF9lZGl0
aW5nRGVsZWdhdGVTaG91bGRJbnNlcnRUZXh0ID0gWUVTOwogCiAgICAgX3Nob3VsZE92ZXJyaWRl
UGVyZm9ybVR3b1N0ZXBEcm9wID0gW1twbHVnSW5Db250cm9sbGVyLnBhcmFtZXRlcnMgdmFsdWVG
b3JLZXk6QCJCdW5kbGVPdmVycmlkZVBlcmZvcm1Ud29TdGVwRHJvcCJdIGJvb2xWYWx1ZV07Cisg
ICAgX21pbWVUeXBlVG9SZXBsYWNlbWVudFVSTE1hcCA9IFtwbHVnSW5Db250cm9sbGVyLnBhcmFt
ZXRlcnMgdmFsdWVGb3JLZXk6QCJNSU1FVHlwZVRvUmVwbGFjZW1lbnRVUkxNYXAiXTsKIAogICAg
IF9XS1JlbW90ZU9iamVjdEludGVyZmFjZSAqaW50ZXJmYWNlID0gW19XS1JlbW90ZU9iamVjdElu
dGVyZmFjZSByZW1vdGVPYmplY3RJbnRlcmZhY2VXaXRoUHJvdG9jb2w6QHByb3RvY29sKEJ1bmRs
ZUVkaXRpbmdEZWxlZ2F0ZVByb3RvY29sKV07CiAgICAgX3JlbW90ZU9iamVjdCA9IFticm93c2Vy
Q29udGV4dENvbnRyb2xsZXIuX3JlbW90ZU9iamVjdFJlZ2lzdHJ5IHJlbW90ZU9iamVjdFByb3h5
V2l0aEludGVyZmFjZTppbnRlcmZhY2VdOwpAQCAtOTgsNiArMTAwLDEyIEBAIC0gKEJPT0wpX3dl
YlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250CiAgICAgcmV0dXJuIF9zaG91bGRPdmVycmlkZVBlcmZvcm1Ud29TdGVwRHJv
cDsKIH0KIAorLSAoTlNTdHJpbmcgKilfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY29u
dHJvbGxlciByZXBsYWNlbWVudFVSTEZvclJlc291cmNlOihOU0RhdGEgKilyZXNvdXJjZURhdGEg
bWltZVR5cGU6KE5TU3RyaW5nICopbWltZVR5cGUKK3sKKyAgICBhc3NlcnQoISFyZXNvdXJjZURh
dGEpOworICAgIHJldHVybiBbX21pbWVUeXBlVG9SZXBsYWNlbWVudFVSTE1hcCBvYmplY3RGb3JL
ZXk6bWltZVR5cGVdOworfQorCiBAZW5kCiAKICNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1l
bnRUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRh
Y2htZW50VGVzdHMubW0KaW5kZXggZDE3NTYzOTRjNzkzZmRmZjA4YTExZjg4YTcxNWUxZjJmZjk4
OWJkOC4uZmJlZmYyNDlhNGEzMzRhZDA4ZWY2Y2Q4Y2ExYWI2YWQzN2MyMTllMCAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0
cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNo
bWVudFRlc3RzLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAjaW1wb3J0ICJEYXRhSW50ZXJhY3Rpb25T
aW11bGF0b3IuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0
V0tXZWJWaWV3LmgiCisjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLmgiCiAj
aW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktp
dC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CkBAIC0xMjYs
MTggKzEyNywyMyBAQCBwcml2YXRlOgogQGludGVyZmFjZSBUZXN0V0tXZWJWaWV3IChBdHRhY2ht
ZW50VGVzdGluZykKIEBlbmQKIAotc3RhdGljIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJW
aWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKENHU2l6ZSB3ZWJWaWV3U2l6ZSkKK3N0YXRpYyBSZXRh
aW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50cyhDR1NpemUg
d2ViVmlld1NpemUsIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24pCiB7Ci0g
ICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKLSAgICBbY29uZmlndXJhdGlvbiBfc2V0QXR0YWNobWVudEVsZW1lbnRF
bmFibGVkOllFU107CisgICAgY29uZmlndXJhdGlvbi5fYXR0YWNobWVudEVsZW1lbnRFbmFibGVk
ID0gWUVTOwogICAgIFdLUHJlZmVyZW5jZXNTZXRDdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQo
KFdLUHJlZmVyZW5jZXNSZWYpW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLCBZRVMpOwogCi0g
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCB3ZWJWaWV3U2l6ZS53aWR0aCwgd2ViVmlld1NpemUuaGVp
Z2h0KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RN
YWtlKDAsIDAsIHdlYlZpZXdTaXplLndpZHRoLCB3ZWJWaWV3U2l6ZS5oZWlnaHQpIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbl0pOwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRN
TFN0cmluZzpAIjxtZXRhIG5hbWU9J3ZpZXdwb3J0JyBjb250ZW50PSd3aWR0aD1kZXZpY2Utd2lk
dGgsIGluaXRpYWwtc2NhbGU9MSc+PHNjcmlwdD5mb2N1cyA9ICgpID0+IGRvY3VtZW50LmJvZHku
Zm9jdXMoKTwvc2NyaXB0Pjxib2R5IG9ubG9hZD1mb2N1cygpIGNvbnRlbnRlZGl0YWJsZT48L2Jv
ZHk+Il07CiAKICAgICByZXR1cm4gd2ViVmlldzsKIH0KIAorc3RhdGljIFJldGFpblB0cjxUZXN0
V0tXZWJWaWV3PiB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKENHU2l6ZSB3ZWJWaWV3U2l6
ZSkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIHJldHVybiB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFj
aG1lbnRzKHdlYlZpZXdTaXplLCBjb25maWd1cmF0aW9uLmdldCgpKTsKK30KKwogc3RhdGljIFJl
dGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKCkKIHsK
ICAgICByZXR1cm4gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50cyhDR1NpemVNYWtlKDUwMCwg
NTAwKSk7CkBAIC0xODksMjAgKzE5NSwyOSBAQCBzdGF0aWMgX1dLQXR0YWNobWVudERpc3BsYXlP
cHRpb25zICpkaXNwbGF5T3B0aW9uc1dpdGhNb2RlKF9XS0F0dGFjaG1lbnREaXNwbGF5TQogCiBA
aW1wbGVtZW50YXRpb24gVGVzdFdLV2ViVmlldyAoQXR0YWNobWVudFRlc3RpbmcpCiAKLS0gKHZv
aWQpZXhwZWN0RWxlbWVudFRhZzooTlNTdHJpbmcgKil0YWdOYW1lIHRvQ29tZUJlZm9yZTooTlNT
dHJpbmcgKilvdGhlclRhZ05hbWUKKy0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKil0YWdzSW5Cb2R5
Cit7CisgICAgcmV0dXJuIFtzZWxmIG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJBcnJh
eS5mcm9tKGRvY3VtZW50LmJvZHkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJyonKSkubWFwKGUgPT4g
ZS50YWdOYW1lKSJdOworfQorCistICh2b2lkKWV4cGVjdEVsZW1lbnRUYWdzSW5PcmRlcjooTlNB
cnJheTxOU1N0cmluZyAqPiAqKXRhZ05hbWVzCiB7Ci0gICAgTlNBcnJheSAqdGFnc0luQm9keSA9
IFtzZWxmIG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJBcnJheS5mcm9tKGRvY3VtZW50
LmJvZHkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJyonKSkubWFwKGUgPT4gZS50YWdOYW1lKSJdOwot
ICAgIEJPT0wgc3VjY2VzcyA9IFt0YWdzSW5Cb2R5IGNvbnRhaW5zT2JqZWN0OnRhZ05hbWVdICYm
IFt0YWdzSW5Cb2R5IGNvbnRhaW5zT2JqZWN0Om90aGVyVGFnTmFtZV07Ci0gICAgaWYgKHN1Y2Nl
c3MpIHsKLSAgICAgICAgTlNVSW50ZWdlciBpbmRleCA9IFt0YWdzSW5Cb2R5IGluZGV4T2ZPYmpl
Y3Q6dGFnTmFtZV07Ci0gICAgICAgIE5TVUludGVnZXIgb3RoZXJJbmRleCA9IFt0YWdzSW5Cb2R5
IGluZGV4T2ZPYmplY3RXaXRoT3B0aW9uczpOU0VudW1lcmF0aW9uUmV2ZXJzZSBwYXNzaW5nVGVz
dDpbJl0gKE5TU3RyaW5nICp0YWcsIE5TVUludGVnZXIsIEJPT0wgKikgewotICAgICAgICAgICAg
cmV0dXJuIFt0YWcgaXNFcXVhbFRvU3RyaW5nOm90aGVyVGFnTmFtZV07Ci0gICAgICAgIH1dOwot
ICAgICAgICBzdWNjZXNzID0gaW5kZXggPCBvdGhlckluZGV4OworICAgIGF1dG8gcmVtYWluaW5n
VGFncyA9IGFkb3B0TlMoW3RhZ05hbWVzIG11dGFibGVDb3B5XSk7CisgICAgTlNBcnJheTxOU1N0
cmluZyAqPiAqdGFnc0luQm9keSA9IHNlbGYudGFnc0luQm9keTsKKyAgICBmb3IgKE5TU3RyaW5n
ICp0YWcgaW4gdGFnc0luQm9keS5yZXZlcnNlT2JqZWN0RW51bWVyYXRvcikgeworICAgICAgICBp
ZiAoW3RhZyBpc0VxdWFsVG9TdHJpbmc6W3JlbWFpbmluZ1RhZ3MgbGFzdE9iamVjdF1dKQorICAg
ICAgICAgICAgW3JlbWFpbmluZ1RhZ3MgcmVtb3ZlTGFzdE9iamVjdF07CisgICAgICAgIGlmICgh
W3JlbWFpbmluZ1RhZ3MgY291bnRdKQorICAgICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIEVY
UEVDVF9UUlVFKHN1Y2Nlc3MpOwotICAgIGlmICghc3VjY2VzcykKLSAgICAgICAgTlNMb2coQCJF
eHBlY3RlZCAlQCB0byBjb21lIGJlZm9yZSAlQCBpbiB0YWdzOiAlQCIsIHRhZ05hbWUsIG90aGVy
VGFnTmFtZSwgdGFnc0luQm9keSk7CisgICAgRVhQRUNUX0VRKFtyZW1haW5pbmdUYWdzIGNvdW50
XSwgMFUpOworICAgIGlmIChbcmVtYWluaW5nVGFncyBjb3VudF0pCisgICAgICAgIE5TTG9nKEAi
RXhwZWN0ZWQgdG8gZmluZCBvcmRlcmVkIHRhZ3M6ICVAIGluOiAlQCIsIHRhZ05hbWVzLCB0YWdz
SW5Cb2R5KTsKK30KKworLSAodm9pZClleHBlY3RFbGVtZW50VGFnOihOU1N0cmluZyAqKXRhZ05h
bWUgdG9Db21lQmVmb3JlOihOU1N0cmluZyAqKW90aGVyVGFnTmFtZQoreworICAgIFtzZWxmIGV4
cGVjdEVsZW1lbnRUYWdzSW5PcmRlcjpAW3RhZ05hbWUsIG90aGVyVGFnTmFtZV1dOwogfQogCiAt
IChCT09MKV9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5kOihOU1N0cmluZyAqKWNvbW1h
bmQgYXJndW1lbnQ6KE5TU3RyaW5nICopYXJndW1lbnQKQEAgLTEwNzcsNiArMTA5MiwzOCBAQCBU
RVNUKFdLQXR0YWNobWVudFRlc3RzLCBJbnNlcnREdXBsaWNhdGVBdHRhY2htZW50QW5kVXBkYXRl
RGF0YSkKICAgICBbcGFzdGVkQXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTpvcmln
aW5hbERhdGEuZ2V0KCldOwogfQogCitURVNUKFdLQXR0YWNobWVudFRlc3RzLCBJbmplY3RlZEJ1
bmRsZVJlcGxhY2VVUkxzV2hlblBhc3RpbmdBdHRyaWJ1dGVkU3RyaW5nKQoreworICAgIHBsYXRm
b3JtQ29weVJpY2hUZXh0V2l0aE11bHRpcGxlQXR0YWNobWVudHMoKTsKKworICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IHJldGFpblB0cihbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25m
aWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJCdW5kbGVFZGl0aW5nRGVsZWdhdGVQ
bHVnSW4iXSk7CisgICAgW1tjb25maWd1cmF0aW9uIHByb2Nlc3NQb29sXSBfc2V0T2JqZWN0OkB7
IEAiaW1hZ2UvcG5nIiA6IEAiY2lkOmZvby1iYXIiIH0gZm9yQnVuZGxlUGFyYW1ldGVyOkAiTUlN
RVR5cGVUb1JlcGxhY2VtZW50VVJMTWFwIl07CisgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0Zv
clRlc3RpbmdBdHRhY2htZW50cyhDR1NpemVNYWtlKDUwMCwgNTAwKSwgY29uZmlndXJhdGlvbi5n
ZXQoKSk7CisgICAgeworICAgICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JTY29wZSBv
YnNlcnZlcih3ZWJWaWV3LmdldCgpKTsKKyAgICAgICAgW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlF
eGVjdXRlRWRpdENvbW1hbmQ6QCJQYXN0ZSIgYXJndW1lbnQ6bmlsXTsKKyAgICAgICAgRVhQRUNU
X0VRKDJVLCBvYnNlcnZlci5vYnNlcnZlcigpLmluc2VydGVkLmNvdW50KTsKKyAgICB9CisgICAg
W3dlYlZpZXcgZXhwZWN0RWxlbWVudFRhZ3NJbk9yZGVyOkBbIEAiSU1HIiwgQCJBVFRBQ0hNRU5U
IiwgQCJBVFRBQ0hNRU5UIiBdXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImNpZDpmb28tYmFyIiwg
W3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInNyYyIgZm9yUXVlcnlTZWxlY3RvcjpAImltZyJd
KTsKK30KKworVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgSW5qZWN0ZWRCdW5kbGVSZXBsYWNlVVJM
V2hlblBhc3RpbmdJbWFnZSkKK3sKKyAgICBwbGF0Zm9ybUNvcHlQTkcoKTsKKworICAgIE5TU3Ry
aW5nICpyZXBsYWNlbWVudFVSTCA9IEAiY2lkOmZvby1iYXIiOworICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IHJldGFpblB0cihbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0
aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJCdW5kbGVFZGl0aW5nRGVsZWdhdGVQbHVnSW4i
XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHByb2Nlc3NQb29sXSBfc2V0T2JqZWN0OkB7IEAiaW1h
Z2UvdGlmZiIgOiByZXBsYWNlbWVudFVSTCwgQCJpbWFnZS9wbmciIDogcmVwbGFjZW1lbnRVUkwg
fSBmb3JCdW5kbGVQYXJhbWV0ZXI6QCJNSU1FVHlwZVRvUmVwbGFjZW1lbnRVUkxNYXAiXTsKKyAg
ICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKENHU2l6ZU1ha2Uo
NTAwLCA1MDApLCBjb25maWd1cmF0aW9uLmdldCgpKTsKKyAgICB7CisgICAgICAgIE9ic2VydmVB
dHRhY2htZW50VXBkYXRlc0ZvclNjb3BlIG9ic2VydmVyKHdlYlZpZXcuZ2V0KCkpOworICAgICAg
ICBbd2ViVmlldyBfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpAIlBhc3RlIiBhcmd1
bWVudDpuaWxdOworICAgICAgICBFWFBFQ1RfRVEoMFUsIG9ic2VydmVyLm9ic2VydmVyKCkuaW5z
ZXJ0ZWQuY291bnQpOworICAgIH0KKyAgICBFWFBFQ1RfV0tfU1RSRVEoImNpZDpmb28tYmFyIiwg
W3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInNyYyIgZm9yUXVlcnlTZWxlY3RvcjpAImltZyJd
KTsKK30KKwogI3ByYWdtYSBtYXJrIC0gUGxhdGZvcm0tc3BlY2lmaWMgdGVzdHMKIAogI2lmIFBM
QVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAppbmRleCBkZDY0ODQxNjZlM2FlYzNm
MmRiMGJmOGU4YjYxZTNjYTY2YzA3NzAxLi42Y2UxZWYxY2RkMWVhMDE5NmQ3YWQ4NTY0OTNkNmNm
MWJjNDUyZDkzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCkBAIC0zNzMsNiArMzczLDcgQEAg
SW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2UoV0tCdW5kbGVQYWdlUmVmIHBh
Z2UpCiAgICAgICAgIGRpZENoYW5nZVNlbGVjdGlvbiwKICAgICAgICAgMCwgLyogd2lsbFdyaXRl
VG9QYXN0ZWJvYXJkICovCiAgICAgICAgIDAsIC8qIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Ug
Ki8KKyAgICAgICAgMCwgLyogcmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZSAqLwogICAgICAgICAw
LCAvKiBkaWRXcml0ZVRvUGFzdGVib2FyZCAqLwogICAgICAgICAwLCAvKiBwZXJmb3JtVHdvU3Rl
cERyb3AgKi8KICAgICB9Owo=
</data>
<flag name="review"
          id="350274"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331450</attachid>
            <date>2018-01-16 19:19:40 -0800</date>
            <delta_ts>2018-01-16 19:27:37 -0800</delta_ts>
            <desc>Bump WKBundlePageEditorClient version</desc>
            <filename>bug-181637-20180116191939.patch</filename>
            <type>text/plain</type>
            <size>42482</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2OTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWExNWU4N2Y2YWM4MDI3
MzRkMjQ2YzI4OGM0OTliMmEzNTg0ZTg5Yy4uZDhlMDQ0ZDg2MTk5YjFmOWJkYWUxNGRmZDVmYzIy
NDI5MGEzZWRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE4LTAxLTE2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBpbmplY3Rl
ZCBidW5kbGUgU1BJIHRvIHJlcGxhY2Ugc3VicmVzb3VyY2UgVVJMcyB3aGVuIGRyb3BwaW5nIG9y
IHBhc3RpbmcgcmljaCBjb250ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODE2MzcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2NTA4NDcxPgor
CisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgQmVmb3JlIGNhcnJ5
aW5nIG91dCBibG9iIFVSTCBjb252ZXJzaW9uIGZvciBwYXN0ZWQgb3IgZHJvcHBlZCByaWNoIGNv
bnRlbnQsIGxldCB0aGUgZWRpdG9yIGNsaWVudCByZXBsYWNlCisgICAgICAgIHN1YnJlc291cmNl
IFVSTHMgaW4gV2ViS2l0MiBieSBjYWxsaW5nIG91dCB0byBuZXcgaW5qZWN0ZWQgYnVuZGxlIFNQ
SS4gU2VlIGNvbW1lbnRzIGJlbG93IGZvciBtb3JlIGRldGFpbC4KKworICAgICAgICBUZXN0czog
IFdLQXR0YWNobWVudFRlc3RzLkluamVjdGVkQnVuZGxlUmVwbGFjZVVSTHNXaGVuUGFzdGluZ0F0
dHJpYnV0ZWRTdHJpbmcKKyAgICAgICAgICAgICAgICBXS0F0dGFjaG1lbnRUZXN0cy5JbmplY3Rl
ZEJ1bmRsZVJlcGxhY2VVUkxXaGVuUGFzdGluZ0ltYWdlCisKKyAgICAgICAgKiBlZGl0aW5nL0Vk
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNsaWVudFJlcGxhY2VtZW50VVJM
Rm9yUmVzb3VyY2UpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisKKyAgICAgICAgQWRk
IGEgbmV3IGhlbHBlciB0byBjYWxsIG91dCB0byB0aGUgZWRpdG9yIGNsaWVudCBmb3IgYSBVUkwg
c3RyaW5nIHRvIHJlcGxhY2UgYSBnaXZlbiBBcmNoaXZlUmVzb3VyY2UuIEluCisgICAgICAgIFdl
YktpdDIsIHRoaXMgY2FsbHMgb3V0IHRvIHRoZSBpbmplY3RlZCBidW5kbGUncyBuZXcgYHJlcGxh
Y2VtZW50VVJMRm9yUmVzb3VyY2VgIFNQSSBob29rLgorCisgICAgICAgICogZWRpdGluZy9jb2Nv
YS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRSZXBs
YWNlU3VicmVzb3VyY2VVUkwpOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50
V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VTdWJyZXNvdXJjZVVS
THNXaXRoVVJMc0Zyb21DbGllbnQpOgorCisgICAgICAgIEFkZCBhIG5ldyBzdGF0aWMgaGVscGVy
IHRvIHJlcGxhY2Ugc3VicmVzb3VyY2UgVVJMcyBpbiB0aGUgZ2l2ZW4gRG9jdW1lbnRGcmFnbWVu
dCB3aXRoIFVSTHMgc3VwcGxpZWQgYnkgdGhlCisgICAgICAgIGVkaXRvciBjbGllbnQuIEFkZGl0
aW9uYWxseSBidWlsZHMgYSBsaXN0IG9mIEFyY2hpdmVSZXNvdXJjZXMgdGhhdCBoYXZlIG5vdCBi
ZWVuIHJlcGxhY2VkLCBmb3IgdXNlIGF0IGNhbGwgc2l0ZXMKKyAgICAgICAgc28gdGhhdCB3ZSBk
b24ndCB1bm5lY2Vzc2FyaWx5IGNyZWF0ZSBtb3JlIEJsb2JzIGZvciBBcmNoaXZlUmVzb3VyY2Vz
IHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gcmVwbGFjZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXpl
TWFya3VwV2l0aEFyY2hpdmUpOgorCisgICAgICAgIFR3ZWFrIHdlYiBjb250ZW50IHJlYWRpbmcg
Y29kZXBhdGhzIHRvIGZpcnN0IHJlcGxhY2Ugc3VicmVzb3VyY2UgVVJMcyB3aXRoIGVkaXRvci1j
bGllbnQtc3VwcGxpZWQgVVJMcy4KKworICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRl
cjo6cmVhZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZENvbnZlcnRUb0Jsb2IpOiBE
ZWxldGVkLgorCisgICAgICAgIFJlbmFtZSB0aGlzIGhlbHBlciB0byBzaG91bGRSZXBsYWNlU3Vi
cmVzb3VyY2VVUkwsIGJsb2IgVVJMIHJlcGxhY2VtZW50IGlzIG5vIGxvbmdlciB0aGUgb25seSBz
Y2VuYXJpbyBpbiB3aGljaAorICAgICAgICB3ZSByZXBsYWNlIHJlc291cmNlIFVSTHMsIGJ1dCBp
biBib3RoIGNhc2VzLCB3ZSBzdGlsbCB3YW50IHRvIGlnbm9yZSBgaHR0cDpgLWZhbWlseSBhbmQg
YGRhdGE6YCBVUkxzLgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAg
ICAgICogcGFnZS9FZGl0b3JDbGllbnQuaDoKKwogMjAxOC0wMS0xNiAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbQXR0YWNobWVudCBTdXBwb3J0XSBQ
cm92aWRlIHRoZSBgc3JjYCBvZiBhbiBhdHRhY2htZW50IHRvIHRoZSBVSSBkZWxlZ2F0ZSB3aGVu
IGFuIGF0dGFjaG1lbnQgaXMgaW5zZXJ0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDQ4MWEwMTk3ODEzYjk4YmZj
OTViYjNkNDI3NTc0MjdjNGUzOTBlYy4uODlhNGU5NzUzZTlmMTk2OWVkNzY4NjRlODhmZGMzZmNi
MGViNDNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxOC0wMS0xNiAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgaW5qZWN0ZWQgYnVu
ZGxlIFNQSSB0byByZXBsYWNlIHN1YnJlc291cmNlIFVSTHMgd2hlbiBkcm9wcGluZyBvciBwYXN0
aW5nIHJpY2ggY29udGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTgxNjM3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjUwODQ3MT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIEFkZCBuZXcgaW5qZWN0ZWQg
YnVuZGxlIFNQSSwgcmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZSwgd2hpY2ggY2xpZW50cyBtYXkg
dXNlIHRvIHByb3ZpZGUgYSByZXBsYWNlbWVudCBVUkwgdG8KKyAgICAgICAgcmVwcmVzZW50IGFu
IGFyY2hpdmUgcmVzb3VyY2UsIGdpdmVuIHRoZSByZXNvdXJjZSdzIGRhdGEgYW5kIE1JTUUgdHlw
ZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVk
QnVuZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0
b3JDbGllbnQ6OnJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxl
Z2F0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50Lmg6CisKKyAgICAgICAgQWRkIHJlcGxhY2VtZW50VVJMRm9yUmVz
b3VyY2UsIGFuZCBhbHNvIGJ1bXAgdGhlIGN1cnJlbnQgaW5qZWN0ZWQgYnVuZGxlIGVkaXRvciBj
bGllbnQgdmVyc2lvbiB0byAyLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbToK
KyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9z
ZXRFZGl0aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OnJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2Up
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OnJlcGxh
Y2VtZW50VVJMRm9yUmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisKIDIwMTgtMDEtMTYgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0gUHJvdmlk
ZSB0aGUgYHNyY2Agb2YgYW4gYXR0YWNobWVudCB0byB0aGUgVUkgZGVsZWdhdGUgd2hlbiBhbiBh
dHRhY2htZW50IGlzIGluc2VydGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZTI4
ZmIzM2YwYWQxODc0ZmRiMjY2ZTE5ODAzMTNmNTY4YTc4YjRjYy4uNWY0MmI1OGFjM2M3YTFiOWUw
NWE0NzkxNTIwZTdjNDIzNDkwYzM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3IEBACisyMDE4LTAxLTE0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBpbmplY3RlZCBidW5kbGUgU1BJIHRvIHJlcGxhY2Ugc3Vi
cmVzb3VyY2UgVVJMcyB3aGVuIGRyb3BwaW5nIG9yIHBhc3RpbmcgcmljaCBjb250ZW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE2MzcKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM2NTA4NDcxPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBI
b3J0b24uCisKKyAgICAgICAgQWRkIGEgc3R1YiBpbXBsZW1lbnRhdGlvbiBvZiByZXBsYWNlbWVu
dFVSTEZvclJlc291cmNlLiBTZWUgV2ViQ29yZSBhbmQgV2ViS2l0IENoYW5nZUxvZ3MgZm9yIG1v
cmUgZGV0YWlsLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAo
V2ViRWRpdG9yQ2xpZW50OjpyZXBsYWNlbWVudFVSTEZvclJlc291cmNlKToKKwogMjAxOC0wMS0x
MSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5h
bWUgRU5BQkxFX0FTWU5DX0lURVJBVElPTiB0byBFTkFCTEVfSlNfQVNZTkNfSVRFUkFUSU9OCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggOWY5YzMwOTJlNzUzOWE4MTRmZTJkY2Y4NWZk
YmIzNTcyZWFlZDM3ZC4uZWE0NGFkYmEzNmJkMTgwYzkzNTVjNTYzYjM4MDk1ZGQyNWIzNWNmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE4LTAxLTE0
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBp
bmplY3RlZCBidW5kbGUgU1BJIHRvIHJlcGxhY2Ugc3VicmVzb3VyY2UgVVJMcyB3aGVuIGRyb3Bw
aW5nIG9yIHBhc3RpbmcgcmljaCBjb250ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODE2MzcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2NTA4
NDcxPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgQWRkIGEg
c3R1YiBpbXBsZW1lbnRhdGlvbiBvZiByZXBsYWNlbWVudFVSTEZvclJlc291cmNlLiBTZWUgV2Vi
Q29yZSBhbmQgV2ViS2l0IENoYW5nZUxvZ3MgZm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkVkaXRvckNs
aWVudDo6cmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisKIDIwMTctMTItMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgUmVtb3ZlIHN0ZDo6Y2hyb25vIGNvbXBsZXRl
bHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAzMWVlYWUzMjBmZDY1NTU0YzEyMjQ0
MTNmZTQwNmU0MzBjNmIxYWZiLi5mZWNhNGQxMTkyYzM1MDViZjI4OTYxNmZmN2JjMDQyOTRiZTg3
ZjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zOTYxLDQgKzM5NjEsMTIgQEAg
Y29uc3QgRm9udCogRWRpdG9yOjpmb250Rm9yU2VsZWN0aW9uKGJvb2wmIGhhc011bHRpcGxlRm9u
dHMpIGNvbnN0CiAgICAgcmV0dXJuIGZvbnQ7CiB9CiAKK1N0cmluZyBFZGl0b3I6OmNsaWVudFJl
cGxhY2VtZW50VVJMRm9yUmVzb3VyY2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNvdXJjZURhdGEs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgaWYgKGF1dG8qIGVkaXRvckNsaWVudCA9
IGNsaWVudCgpKQorICAgICAgICByZXR1cm4gZWRpdG9yQ2xpZW50LT5yZXBsYWNlbWVudFVSTEZv
clJlc291cmNlKFdURk1vdmUocmVzb3VyY2VEYXRhKSwgbWltZVR5cGUpOworCisgICAgcmV0dXJu
IHsgfTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgK
aW5kZXggZTZhODk2N2VkOTRiNGY4NTViYmMzYTVjNTU0OTE3OGFhZmEwZGJkNS4uMDE0OWZjMjEw
MTg4NThlMWIwNWYzNmExMGZmZTc4NDY5ZmVjM2Y1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5o
CkBAIC00ODQsNiArNDg0LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVw
bGFjZVNlbGVjdGlvbldpdGhBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqLCBN
YWlsQmxvY2txdW90ZUhhbmRsaW5nID0gTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6UmVzcGVjdEJs
b2NrcXVvdGUpOwogI2VuZGlmCiAKKyAgICBTdHJpbmcgY2xpZW50UmVwbGFjZW1lbnRVUkxGb3JS
ZXNvdXJjZShSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc291cmNlRGF0YSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSk7CisKICNpZiAhUExBVEZPUk0oV0lOKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgd3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiwgRWxlbWVudCYgaW1h
Z2VFbGVtZW50LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5k
ZXggMWI5YWUzZmU0NWM5YzQ4NjkyNmU4YzI3YzJlNjUxNjAwN2E2ZTE4Yy4uMDNlMThjMGJlMzEz
MDUzNTE0ZjI4NGU5NGIxNGQ1ZmY5MDExMjY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTE3NSw3ICsxNzUs
NyBAQCBwcml2YXRlOgogfTsKIAogCi1zdGF0aWMgYm9vbCBzaG91bGRDb252ZXJ0VG9CbG9iKGNv
bnN0IFVSTCYgdXJsKQorc3RhdGljIGJvb2wgc2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKGNv
bnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiAhKHVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5
KCkgfHwgdXJsLnByb3RvY29sSXNEYXRhKCkpOwogfQpAQCAtMjIzLDcgKzIyMyw3IEBAIHN0YXRp
YyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhEb2N1bWVudEZyYWdtZW50
JiBmcmFnbWVudCwgY29uc3QKICAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgUmVmPEJsb2I+PiB1
cmxUb0Jsb2JNYXA7CiAgICAgZm9yIChjb25zdCBSZWY8QXJjaGl2ZVJlc291cmNlPiYgc3VicmVz
b3VyY2UgOiBzdWJyZXNvdXJjZXMpIHsKICAgICAgICAgYXV0byYgdXJsID0gc3VicmVzb3VyY2Ut
PnVybCgpOwotICAgICAgICBpZiAoc2hvdWxkQ29udmVydFRvQmxvYih1cmwpKQorICAgICAgICBp
ZiAoc2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHVybCkpCiAgICAgICAgICAgICB1cmxUb0Js
b2JNYXAuc2V0KHVybC5zdHJpbmcoKSwgQmxvYjo6Y3JlYXRlKHN1YnJlc291cmNlLT5kYXRhKCks
IHN1YnJlc291cmNlLT5taW1lVHlwZSgpKSk7CiAgICAgfQogCkBAIC0yODYsNiArMjg2LDMwIEBA
IHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhEb2N1bWVudEZy
YWdtZW50JiBmcmFnbWVudCwgY29uc3QKICNlbmRpZgogfQogCitzdGF0aWMgdm9pZCByZXBsYWNl
U3VicmVzb3VyY2VVUkxzV2l0aFVSTHNGcm9tQ2xpZW50KERvY3VtZW50RnJhZ21lbnQmIGZyYWdt
ZW50LCBjb25zdCBWZWN0b3I8UmVmPEFyY2hpdmVSZXNvdXJjZT4+JiBzdWJyZXNvdXJjZXMsIFZl
Y3RvcjxSZWY8QXJjaGl2ZVJlc291cmNlPj4mIG91dFVucmVwbGFjZWRSZXNvdXJjZXMpCit7Cisg
ICAgQVNTRVJUKGZyYWdtZW50LmRvY3VtZW50KCkuZnJhbWUoKSk7CisgICAgYXV0byYgZnJhbWUg
PSAqZnJhZ21lbnQuZG9jdW1lbnQoKS5mcmFtZSgpOworICAgIEhhc2hNYXA8QXRvbWljU3RyaW5n
LCBBdG9taWNTdHJpbmc+IHN1YnJlc291cmNlVVJMVG9DbGllbnRVUkxNYXA7CisgICAgZm9yIChh
dXRvJiBzdWJyZXNvdXJjZSA6IHN1YnJlc291cmNlcykgeworICAgICAgICBhdXRvJiBvcmlnaW5h
bFVSTCA9IHN1YnJlc291cmNlLT51cmwoKTsKKyAgICAgICAgaWYgKCFzaG91bGRSZXBsYWNlU3Vi
cmVzb3VyY2VVUkwob3JpZ2luYWxVUkwpKSB7CisgICAgICAgICAgICBvdXRVbnJlcGxhY2VkUmVz
b3VyY2VzLmFwcGVuZChzdWJyZXNvdXJjZS5jb3B5UmVmKCkpOworICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIH0KKworICAgICAgICBhdXRvIHJlcGxhY2VtZW50VVJMID0gZnJhbWUuZWRp
dG9yKCkuY2xpZW50UmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZShzdWJyZXNvdXJjZS0+ZGF0YSgp
LCBzdWJyZXNvdXJjZS0+bWltZVR5cGUoKSk7CisgICAgICAgIGlmIChyZXBsYWNlbWVudFVSTC5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgIG91dFVucmVwbGFjZWRSZXNvdXJjZXMuYXBwZW5kKHN1
YnJlc291cmNlLmNvcHlSZWYoKSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
CisgICAgICAgIHN1YnJlc291cmNlVVJMVG9DbGllbnRVUkxNYXAuc2V0KG9yaWdpbmFsVVJMLnN0
cmluZygpLCByZXBsYWNlbWVudFVSTCk7CisgICAgfQorCisgICAgaWYgKCFzdWJyZXNvdXJjZVVS
TFRvQ2xpZW50VVJMTWFwLmlzRW1wdHkoKSkKKyAgICAgICAgcmVwbGFjZVN1YnJlc291cmNlVVJM
cyhmcmFnbWVudCwgV1RGTW92ZShzdWJyZXNvdXJjZVVSTFRvQ2xpZW50VVJMTWFwKSk7Cit9CiAK
IFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhG
cmFtZSYgZnJhbWUsIE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQogewpAQCAtMzA5LDEzICsz
MzMsMTYgQEAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVz
b3VyY2VzKEZyYW1lJiBmcmFtZSwgTlNBdHRyaWJ1dGUKICAgICAgICAgcmV0dXJuIFdURk1vdmUo
ZnJhZ21lbnRBbmRSZXNvdXJjZXMuZnJhZ21lbnQpOwogICAgIH0KIAorICAgIFZlY3RvcjxSZWY8
QXJjaGl2ZVJlc291cmNlPj4gdW5yZXBsYWNlZFJlc291cmNlczsKKyAgICByZXBsYWNlU3VicmVz
b3VyY2VVUkxzV2l0aFVSTHNGcm9tQ2xpZW50KCpmcmFnbWVudEFuZFJlc291cmNlcy5mcmFnbWVu
dCwgZnJhZ21lbnRBbmRSZXNvdXJjZXMucmVzb3VyY2VzLCB1bnJlcGxhY2VkUmVzb3VyY2VzKTsK
KwogICAgIGlmIChzaG91bGRSZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoKSkgewot
ICAgICAgICByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoKmZyYWdtZW50QW5kUmVz
b3VyY2VzLmZyYWdtZW50LCBmcmFnbWVudEFuZFJlc291cmNlcy5yZXNvdXJjZXMpOworICAgICAg
ICByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoKmZyYWdtZW50QW5kUmVzb3VyY2Vz
LmZyYWdtZW50LCB1bnJlcGxhY2VkUmVzb3VyY2VzKTsKICAgICAgICAgcmV0dXJuIFdURk1vdmUo
ZnJhZ21lbnRBbmRSZXNvdXJjZXMuZnJhZ21lbnQpOwogICAgIH0KIAogICAgIEhhc2hNYXA8QXRv
bWljU3RyaW5nLCBBdG9taWNTdHJpbmc+IGJsb2JVUkxNYXA7Ci0gICAgZm9yIChjb25zdCBSZWY8
QXJjaGl2ZVJlc291cmNlPiYgc3VicmVzb3VyY2UgOiBmcmFnbWVudEFuZFJlc291cmNlcy5yZXNv
dXJjZXMpIHsKKyAgICBmb3IgKGNvbnN0IFJlZjxBcmNoaXZlUmVzb3VyY2U+JiBzdWJyZXNvdXJj
ZSA6IHVucmVwbGFjZWRSZXNvdXJjZXMpIHsKICAgICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3Jl
YXRlKHN1YnJlc291cmNlLT5kYXRhKCksIHN1YnJlc291cmNlLT5taW1lVHlwZSgpKTsKICAgICAg
ICAgU3RyaW5nIGJsb2JVUkwgPSBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgYmxv
Yik7CiAgICAgICAgIGJsb2JVUkxNYXAuc2V0KHN1YnJlc291cmNlLT51cmwoKS5zdHJpbmcoKSwg
YmxvYlVSTCk7CkBAIC0zNjYsMTUgKzM5MywxOCBAQCBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFy
a3VwV2l0aEFyY2hpdmUoRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW1lbnQsIE1hcmt1cEFuZAog
ICAgIEFTU0VSVChzdGFnaW5nRG9jdW1lbnQpOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVG
cmFnbWVudEZyb21NYXJrdXAoKnN0YWdpbmdEb2N1bWVudCwgbWFya3VwQW5kQXJjaGl2ZS5tYXJr
dXAsIG1hcmt1cEFuZEFyY2hpdmUubWFpblJlc291cmNlLT51cmwoKSwgRGlzYWxsb3dTY3JpcHRp
bmdBbmRQbHVnaW5Db250ZW50KTsKIAorICAgIFZlY3RvcjxSZWY8QXJjaGl2ZVJlc291cmNlPj4g
dW5yZXBsYWNlZFJlc291cmNlczsKKyAgICByZXBsYWNlU3VicmVzb3VyY2VVUkxzV2l0aFVSTHNG
cm9tQ2xpZW50KGZyYWdtZW50LCBtYXJrdXBBbmRBcmNoaXZlLmFyY2hpdmUtPnN1YnJlc291cmNl
cygpLCB1bnJlcGxhY2VkUmVzb3VyY2VzKTsKKwogICAgIGlmIChzaG91bGRSZXBsYWNlUmljaENv
bnRlbnRXaXRoQXR0YWNobWVudHMoKSkgewotICAgICAgICByZXBsYWNlUmljaENvbnRlbnRXaXRo
QXR0YWNobWVudHMoZnJhZ21lbnQsIG1hcmt1cEFuZEFyY2hpdmUuYXJjaGl2ZS0+c3VicmVzb3Vy
Y2VzKCkpOworICAgICAgICByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoZnJhZ21l
bnQsIHVucmVwbGFjZWRSZXNvdXJjZXMpOwogICAgICAgICByZXR1cm4gbWFya3VwRm9yRnJhZ21l
bnRJbkRvY3VtZW50KFdURk1vdmUoZnJhZ21lbnQpLCAqc3RhZ2luZ0RvY3VtZW50KTsKICAgICB9
CiAKICAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgQXRvbWljU3RyaW5nPiBibG9iVVJMTWFwOwot
ICAgIGZvciAoY29uc3QgUmVmPEFyY2hpdmVSZXNvdXJjZT4mIHN1YnJlc291cmNlIDogbWFya3Vw
QW5kQXJjaGl2ZS5hcmNoaXZlLT5zdWJyZXNvdXJjZXMoKSkgeworICAgIGZvciAoY29uc3QgUmVm
PEFyY2hpdmVSZXNvdXJjZT4mIHN1YnJlc291cmNlIDogdW5yZXBsYWNlZFJlc291cmNlcykgewog
ICAgICAgICBhdXRvJiBzdWJyZXNvdXJjZVVSTCA9IHN1YnJlc291cmNlLT51cmwoKTsKLSAgICAg
ICAgaWYgKCFzaG91bGRDb252ZXJ0VG9CbG9iKHN1YnJlc291cmNlVVJMKSkKKyAgICAgICAgaWYg
KCFzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VVUkwoc3VicmVzb3VyY2VVUkwpKQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZShzdWJyZXNvdXJj
ZS0+ZGF0YSgpLCBzdWJyZXNvdXJjZS0+bWltZVR5cGUoKSk7CiAgICAgICAgIFN0cmluZyBibG9i
VVJMID0gRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZGVzdGluYXRpb25Eb2N1bWVudCwgYmxvYik7
CkBAIC0zOTIsNyArNDIyLDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNo
aXZlKERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmQKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8gc3ViZnJhbWVVUkwgPSBzdWJmcmFtZU1haW5SZXNv
dXJjZS0+dXJsKCk7Ci0gICAgICAgIGlmICghc2hvdWxkQ29udmVydFRvQmxvYihzdWJmcmFtZVVS
TCkpCisgICAgICAgIGlmICghc2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YmZyYW1lVVJM
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3Vi
ZnJhbWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5k
YXRhKCkuZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCkBAIC01
ODEsMTAgKzYxMSwxNiBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRQbGFpblRleHQoY29u
c3QgU3RyaW5nJiB0ZXh0KQogCiBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlKQogewotICAgIGF1dG8g
YmxvYiA9IEJsb2I6OmNyZWF0ZShidWZmZXIuZ2V0KCksIHR5cGUpOwogICAgIEFTU0VSVChmcmFt
ZS5kb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOwog
CisgICAgYXV0byByZXBsYWNlbWVudFVSTCA9IGZyYW1lLmVkaXRvcigpLmNsaWVudFJlcGxhY2Vt
ZW50VVJMRm9yUmVzb3VyY2UoYnVmZmVyLmNvcHlSZWYoKSwgdHlwZSk7CisgICAgaWYgKCFyZXBs
YWNlbWVudFVSTC5pc0VtcHR5KCkpIHsKKyAgICAgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21l
bnRGb3JJbWFnZUFuZFVSTChkb2N1bWVudCwgcmVwbGFjZW1lbnRVUkwpKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKGJ1ZmZlci5n
ZXQoKSwgdHlwZSk7CiAgICAgaWYgKHNob3VsZFJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2ht
ZW50cygpKQogICAgICAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNo
bWVudChkb2N1bWVudCwgV1RGTW92ZShibG9iKSkpOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggZjI0YWQ2YWEwMTMwZmY4YTQ2MDk2NTgwOGEwMGQ4
ZjcxZjliNjBkYy4uMjVlOWViNjljZmE1OGRjNzU4M2RlZDg1YTE1ZmZjNDgzNWNmNTA3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTE3Niw2ICsxNzYsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFJhbmdlKikg
ZmluYWwgeyB9CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFs
IHsgfQogICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShSYW5nZSosIFZl
Y3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQor
ICAgIFN0cmluZyByZXBsYWNlbWVudFVSTEZvclJlc291cmNlKFJlZjxTaGFyZWRCdWZmZXI+JiYs
IGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgcmV0dXJuIHsgfTsgfQogICAgIHZvaWQgcmVxdWVzdENh
bmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpIGZpbmFsIHsgfQog
ICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tp
bmdSZXN1bHQpIGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Vk
aXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCAx
ZjUxYTkyODgzOTEwYWVhMTY3YmRlYWZjZGZjMGI5MzljNGQ2MTI0Li4zNmFkN2JlODY5YzE3Mjg2
Y2M0MzU3OTFjZDg1MjE4NTUwODM1OTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgK
QEAgLTg2LDYgKzg2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxl
Y3Rpb25Ub1Bhc3RlYm9hcmQoUmFuZ2UqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YUZvclJhbmdlKFJhbmdlKiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsK
KyAgICB2aXJ0dWFsIFN0cmluZyByZXBsYWNlbWVudFVSTEZvclJlc291cmNlKFJlZjxTaGFyZWRC
dWZmZXI+JiYgcmVzb3VyY2VEYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVX
aXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxl
RWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKaW5kZXggNzc3NGY3NWQyNzM4YWY5
ZmU0YjFkMWI3OTliMzA0OTEyOGNjYjM0Mi4uNjAxNWU1Zjg3NzM3OTQ5MTQ1YmM3YTFjYWNmMmE5
NzhiODVmMzhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0
b3JDbGllbnQuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9ySW5z
ZXJ0QWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0QWZmaW5pdHkuaD4KICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwpAQCAtNjQsNiArNjUs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Uo
V2ViS2l0OjpXZWJQYWdlJiwgV2ViQ29yZTo6UmFuZ2UqLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBh
c3RlYm9hcmREYXRhKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQo
V2ViS2l0OjpXZWJQYWdlJikgeyB9CiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1Ud29TdGVwRHJv
cChXZWJLaXQ6OldlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50JiwgV2ViQ29yZTo6
UmFuZ2UmLCBib29sKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcg
cmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZShXZWJLaXQ6OldlYlBhZ2UmLCBSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgcmV0dXJuIHsgfTsgfQogfTsK
IAogfSAvLyBuYW1lc3BhY2UgSW5qZWN0ZWRCdW5kbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0lu
RWRpdGluZ0RlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZS5oCmluZGV4IGM4
MjA5YTE4MTY2ZWI4ZmNjYjg0MmIzOTUzNTY0OGQxNjlkYTYwMTEuLjlkMWFlYmYzMmNiNjUzZjc4
OGI2MzQ3YjNjZTBhMWUwMzNhMzllMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0Rl
bGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGUuaApAQCAtNjEsNiArNjEs
NyBAQCBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMi4zKSwgaW9zKDEwLjMpKQogLSAoTlNE
aWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TRGF0YSAqPiAqKV93ZWJQcm9jZXNzUGx1Z0luQnJvd3Nl
ckNvbnRleHRDb250cm9sbGVyOihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXIgKiljb250cm9sbGVyIHBhc3RlYm9hcmREYXRhRm9yUmFuZ2U6KFdLV2ViUHJvY2Vzc1Bs
dWdJblJhbmdlSGFuZGxlICopcmFuZ2U7CiAtICh2b2lkKV93ZWJQcm9jZXNzUGx1Z0luQnJvd3Nl
ckNvbnRleHRDb250cm9sbGVyRGlkV3JpdGVUb1Bhc3RlYm9hcmQ6KFdLV2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7CiAtIChCT09MKV93ZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXIgKiljb250cm9sbGVyIHBlcmZvcm1Ud29TdGVwRHJvcDooV0tX
ZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZSAqKWZyYWdtZW50IGF0RGVzdGluYXRpb246KFdLV2Vi
UHJvY2Vzc1BsdWdJblJhbmdlSGFuZGxlICopZGVzdGluYXRpb24gaXNNb3ZlOihCT09MKWlzTW92
ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMyksIGlvcygxMS4wKSk7CistIChOU1N0cmlu
ZyAqKV93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOihXS1dlYlByb2Nl
c3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKiljb250cm9sbGVyIHJlcGxhY2VtZW50
VVJMRm9yUmVzb3VyY2U6KE5TRGF0YSAqKXJlc291cmNlRGF0YSBtaW1lVHlwZTooTlNTdHJpbmcg
KiltaW1lVHlwZSBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50LmgKaW5kZXggMGI3NTY1MGU5Zjc5ZWIzOWNjYTlmMTllOTFmY2YxOWQzNjYyMjFmYS4u
ZGY5ZTkxNTk3YmQ5YzczMmM5MzBhNmIzMDk1ODcyZWMwODNkZGU0MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZUVk
aXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaApAQCAtNjIsNiArNjIsNyBAQCB0eXBl
ZGVmIGJvb2wgKCpXS0J1bmRsZVBhZ2VTaG91bGRBcHBseVN0eWxlKShXS0J1bmRsZVBhZ2VSZWYg
cGFnZSwgV0tCdW5kbGVDU1NTdAogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRWRpdGluZ05v
dGlmaWNhdGlvbikoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG5vdGlmaWNhdGlv
bk5hbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQ
YWdlV2lsbFdyaXRlVG9QYXN0ZWJvYXJkKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVS
YW5nZUhhbmRsZVJlZiByYW5nZSwgIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiB2
b2lkICgqV0tCdW5kbGVQYWdlR2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSkoV0tCdW5kbGVQYWdl
UmVmIHBhZ2UsIFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYgcmFuZ2UsIFdLQXJyYXlSZWYqIHBhc3Rl
Ym9hcmRUeXBlcywgV0tBcnJheVJlZiogcGFzdGVib2FyZERhdGEsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pOwordHlwZWRlZiBXS1N0cmluZ1JlZiAoKldLQnVuZGxlUGFnZVJlcGxhY2VtZW50VVJM
Rm9yUmVzb3VyY2UpKFdLQnVuZGxlUGFnZVJlZiwgV0tEYXRhUmVmIHJlc291cmNlRGF0YSwgV0tT
dHJpbmdSZWYgbWltZVR5cGUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lk
ICgqV0tCdW5kbGVQYWdlRGlkV3JpdGVUb1Bhc3RlYm9hcmQpKFdLQnVuZGxlUGFnZVJlZiBwYWdl
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgYm9vbCAoKldLQnVuZGxlUGFnZVBl
cmZvcm1Ud29TdGVwRHJvcCkoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlTm9kZUhhbmRs
ZVJlZiBmcmFnbWVudCwgV0tCdW5kbGVSYW5nZUhhbmRsZVJlZiBkZXN0aW5hdGlvbiwgYm9vbCBp
c01vdmUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogCkBAIC0xMTAsNCArMTExLDMwIEBAIHR5
cGVkZWYgc3RydWN0IFdLQnVuZGxlUGFnZUVkaXRvckNsaWVudFYxIHsKICAgICBXS0J1bmRsZVBh
Z2VQZXJmb3JtVHdvU3RlcERyb3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBlcmZvcm1Ud29TdGVwRHJvcDsKIH0gV0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50VjE7CiAKK3R5
cGVkZWYgc3RydWN0IFdLQnVuZGxlUGFnZUVkaXRvckNsaWVudFYyIHsKKyAgICBXS0J1bmRsZVBh
Z2VFZGl0b3JDbGllbnRCYXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJhc2U7CisKKyAgICAvLyBWZXJzaW9uIDAuCisgICAgV0tCdW5kbGVQYWdlU2hvdWxkQmVnaW5F
ZGl0aW5nQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCZWdpbkVk
aXRpbmc7CisgICAgV0tCdW5kbGVQYWdlU2hvdWxkRW5kRWRpdGluZ0NhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRFbmRFZGl0aW5nOworICAgIFdLQnVuZGxlUGFn
ZVNob3VsZEluc2VydE5vZGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2hvdWxkSW5zZXJ0Tm9kZTsKKyAgICBXS0J1bmRsZVBhZ2VTaG91bGRJbnNlcnRUZXh0Q2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEluc2VydFRleHQ7CisgICAg
V0tCdW5kbGVQYWdlU2hvdWxkRGVsZXRlUmFuZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaG91bGREZWxldGVSYW5nZTsKKyAgICBXS0J1bmRsZVBhZ2VTaG91bGRDaGFu
Z2VTZWxlY3RlZFJhbmdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZENoYW5n
ZVNlbGVjdGVkUmFuZ2U7CisgICAgV0tCdW5kbGVQYWdlU2hvdWxkQXBwbHlTdHlsZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRBcHBseVN0eWxlOworICAgIFdL
QnVuZGxlUGFnZUVkaXRpbmdOb3RpZmljYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGlkQmVnaW5FZGl0aW5nOworICAgIFdLQnVuZGxlUGFnZUVkaXRpbmdOb3RpZmlj
YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRW5kRWRpdGluZzsK
KyAgICBXS0J1bmRsZVBhZ2VFZGl0aW5nTm90aWZpY2F0aW9uICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRpZENoYW5nZTsKKyAgICBXS0J1bmRsZVBhZ2VFZGl0aW5nTm90aWZp
Y2F0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZENoYW5nZVNlbGVj
dGlvbjsKKworICAgIC8vIFZlcnNpb24gMS4KKyAgICBXS0J1bmRsZVBhZ2VXaWxsV3JpdGVUb1Bh
c3RlYm9hcmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGxXcml0ZVRvUGFz
dGVib2FyZDsKKyAgICBXS0J1bmRsZVBhZ2VHZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2U7CisgICAg
V0tCdW5kbGVQYWdlRGlkV3JpdGVUb1Bhc3RlYm9hcmQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkaWRXcml0ZVRvUGFzdGVib2FyZDsKKyAgICBXS0J1bmRsZVBhZ2VQZXJmb3Jt
VHdvU3RlcERyb3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1U
d29TdGVwRHJvcDsKKworICAgIC8vIFZlcnNpb24gMi4KKyAgICBXS0J1bmRsZVBhZ2VSZXBsYWNl
bWVudFVSTEZvclJlc291cmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2Vt
ZW50VVJMRm9yUmVzb3VyY2U7Cit9IFdLQnVuZGxlUGFnZUVkaXRvckNsaWVudFYyOworCiAjZW5k
aWYgLy8gV0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJy
b3dzZXJDb250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlci5tbQppbmRleCBmMmQ5NGE5NTYzZTFkNjFlMGIxNzQ0NjY3M2U4Njg2M2UyNjk2ZDczLi4z
Mzk5ZWZlMjMzODljNTQ5MGUzOTRjYjViMzI3YmEwYjBkOTVhYTQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNv
bnRleHRDb250cm9sbGVyLm1tCkBAIC02NzgsNiArNjc4LDE2IEBAIC0gKHZvaWQpX3NldEVkaXRp
bmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGlu
Z0RlbGVnCiAgICAgICAgICAgICByZXR1cm4gW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0
ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRy
b2xsZXIgcGVyZm9ybVR3b1N0ZXBEcm9wOndyYXBwZXIoKm5vZGVIYW5kbGUpIGF0RGVzdGluYXRp
b246d3JhcHBlcigqcmFuZ2VIYW5kbGUpIGlzTW92ZTppc01vdmVdOwogICAgICAgICB9CiAKKyAg
ICAgICAgV1RGOjpTdHJpbmcgcmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZShXZWJLaXQ6OldlYlBh
Z2UmLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc291cmNlRGF0YSwgY29uc3QgV1RG
OjpTdHJpbmcmIG1pbWVUeXBlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fZGVsZWdh
dGVNZXRob2RzLnJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UpCisgICAgICAgICAgICAgICAgcmV0
dXJuIHsgfTsKKworICAgICAgICAgICAgTlNTdHJpbmcgKnR5cGUgPSAoTlNTdHJpbmcgKiltaW1l
VHlwZTsKKyAgICAgICAgICAgIGF1dG8gZGF0YSA9IHJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRh
KCk7CisgICAgICAgICAgICByZXR1cm4gW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5n
ZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xs
ZXIgcmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZTpkYXRhLmdldCgpIG1pbWVUeXBlOnR5cGVdOwor
ICAgICAgICB9CisKICAgICAgICAgV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyICptX2NvbnRyb2xsZXI7CiAgICAgICAgIGNvbnN0IHN0cnVjdCBEZWxlZ2F0ZU1ldGhv
ZHMgewogICAgICAgICAgICAgRGVsZWdhdGVNZXRob2RzKFJldGFpblB0cjxpZCA8V0tXZWJQcm9j
ZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPj4gZGVsZWdhdGUpCkBAIC02ODgsNiArNjk4LDcgQEAg
LSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGlu
Z0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAgICAgICAgICAgICAsIGdldFBhc3RlYm9hcmRE
YXRhRm9yUmFuZ2UoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6cGFzdGVib2FyZERhdGFGb3JSYW5n
ZTopXSkKICAgICAgICAgICAgICAgICAsIGRpZFdyaXRlVG9QYXN0ZWJvYXJkKFtkZWxlZ2F0ZSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRl
eHRDb250cm9sbGVyRGlkV3JpdGVUb1Bhc3RlYm9hcmQ6KV0pCiAgICAgICAgICAgICAgICAgLCBw
ZXJmb3JtVHdvU3RlcERyb3AoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6cGVyZm9ybVR3b1N0ZXBE
cm9wOmF0RGVzdGluYXRpb246aXNNb3ZlOildKQorICAgICAgICAgICAgICAgICwgcmVwbGFjZW1l
bnRVUkxGb3JSZXNvdXJjZShbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihf
d2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpyZXBsYWNlbWVudFVSTEZv
clJlc291cmNlOm1pbWVUeXBlOildKQogICAgICAgICAgICAgewogICAgICAgICAgICAgfQogCkBA
IC02OTgsNiArNzA5LDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQ
cm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAgICAgICAgIGJv
b2wgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZTsKICAgICAgICAgICAgIGJvb2wgZGlkV3JpdGVU
b1Bhc3RlYm9hcmQ7CiAgICAgICAgICAgICBib29sIHBlcmZvcm1Ud29TdGVwRHJvcDsKKyAgICAg
ICAgICAgIGJvb2wgcmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZTsKICAgICAgICAgfSBtX2RlbGVn
YXRlTWV0aG9kczsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VF
ZGl0b3JDbGllbnQuY3BwCmluZGV4IDA0OTNkNWM3MDE0OWZlNTMyODI5MDljMTgyNzhhYWQ1OTAx
MWViNzUuLmJjZjllODQ2OTk1OTc0ZWVhMGExZTAzYzEyZDY0ZDY5M2Y5NGJhMzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC0zMyw2ICsz
Myw4IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oIgogI2luY2x1ZGUg
IldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldL
RGF0YS5oIgorI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIK
ICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudEZyYWdtZW50
Lmg+CkBAIC0xODksNCArMTkxLDE0IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50OjpkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJiBwYWdlKQogICAgICAgICBtX2NsaWVu
dC5kaWRXcml0ZVRvUGFzdGVib2FyZCh0b0FQSSgmcGFnZSksIG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbyk7CiB9CiAKK1N0cmluZyBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OnJlcGxh
Y2VtZW50VVJMRm9yUmVzb3VyY2UoV2ViUGFnZSYgcGFnZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBy
ZXNvdXJjZURhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgaWYgKCFtX2NsaWVu
dC5yZXBsYWNlbWVudFVSTEZvclJlc291cmNlKQorICAgICAgICByZXR1cm4geyB9OworCisgICAg
YXV0byBkYXRhID0gYWRvcHRXSyhXS0RhdGFDcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
bnNpZ25lZCBjaGFyKj4ocmVzb3VyY2VEYXRhLT5kYXRhKCkpLCByZXNvdXJjZURhdGEtPnNpemUo
KSkpOworICAgIGF1dG8gdHlwZSA9IGFkb3B0V0sodG9Db3BpZWRBUEkobWltZVR5cGUpKTsKKyAg
ICByZXR1cm4gdG9XVEZTdHJpbmcobV9jbGllbnQucmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZSh0
b0FQSSgmcGFnZSksIGRhdGEuZ2V0KCksIHR5cGUuZ2V0KCksIG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbykpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAppbmRleCA2ODk5NDFhMThlOGQ5ZTk0Y2E0MjZmOTQy
YjFlYjhhMGIzY2Y4NGJiLi4xZDk3NmI2NzUyYjJmZmQwMGU0YjJkOWZjMGFkZDZlMGZiMzI5Yzcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCkBAIC0z
MSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBBUEkgewogdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50
VHJhaXRzPFdLQnVuZGxlUGFnZUVkaXRvckNsaWVudEJhc2U+IHsKLSAgICB0eXBlZGVmIHN0ZDo6
dHVwbGU8V0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50VjAsIFdLQnVuZGxlUGFnZUVkaXRvckNsaWVu
dFYxPiBWZXJzaW9uczsKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50VjAsIFdLQnVuZGxlUGFnZUVkaXRvckNsaWVudFYxLCBXS0J1bmRsZVBhZ2VFZGl0b3JD
bGllbnRWMj4gVmVyc2lvbnM7CiB9OwogfQogCkBAIC02Nyw2ICs2Nyw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmLCBXZWJDb3JlOjpSYW5n
ZSosIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKICAgICB2b2lkIGRpZFdy
aXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmKSBmaW5hbDsKICAgICBib29sIHBlcmZvcm1Ud29TdGVw
RHJvcChXZWJQYWdlJiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIFdlYkNvcmU6OlJhbmdl
JiBkZXN0aW5hdGlvbiwgYm9vbCBpc01vdmUpIGZpbmFsOworICAgIFN0cmluZyByZXBsYWNlbWVu
dFVSTEZvclJlc291cmNlKFdlYlBhZ2UmLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJl
c291cmNlRGF0YSwgY29uc3QgU3RyaW5nJikgZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggNmM2OWQwOTZjZTI1NWY3OWI0ZTgyOWMx
YTgxMDMwNzBjODA2NmFhNi4uODg0Y2ViNjNjOWZkNDRkNGY3Zjk1YWZiMjNjNzZiN2FlYjBiODBk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI2Myw2ICsyNjMsMTEgQEAgYm9vbCBXZWJF
ZGl0b3JDbGllbnQ6OnBlcmZvcm1Ud29TdGVwRHJvcChEb2N1bWVudEZyYWdtZW50JiBmcmFnbWVu
dCwgUmFuZ2UmIGRlc3QKICAgICByZXR1cm4gbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNs
aWVudCgpLnBlcmZvcm1Ud29TdGVwRHJvcCgqbV9wYWdlLCBmcmFnbWVudCwgZGVzdGluYXRpb24s
IGlzTW92ZSk7CiB9CiAKK1N0cmluZyBXZWJFZGl0b3JDbGllbnQ6OnJlcGxhY2VtZW50VVJMRm9y
UmVzb3VyY2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNvdXJjZURhdGEsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgcmV0dXJuIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVF
ZGl0b3JDbGllbnQoKS5yZXBsYWNlbWVudFVSTEZvclJlc291cmNlKCptX3BhZ2UsIFdURk1vdmUo
cmVzb3VyY2VEYXRhKSwgbWltZVR5cGUpOworfQorCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVn
aXN0ZXJVbmRvU3RlcChVbmRvU3RlcCYgc3RlcCkKIHsKICAgICAvLyBGSVhNRTogQWRkIGFzc2Vy
dGlvbiB0aGF0IHRoZSBjb21tYW5kIGJlaW5nIHJlYXBwbGllZCBpcyB0aGUgc2FtZSBjb21tYW5k
IHRoYXQgaXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCBmZGU3MTBhOTNkMjhjMDU5ZmRlNmZkYWNi
NDEyZWZiZDliNWU5YzY3Li5iZTY2ZmFmMTgxYTljZjBlOGI2NDY5OThlZmE0NGYwMzllYWM2NDkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC03Niw2ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoV2ViQ29yZTo6UmFuZ2UqKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7CiAgICAgdm9p
ZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYkNvcmU6OlJhbmdlKiwgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIFN0cmluZyByZXBsYWNlbWVudFVS
TEZvclJlc291cmNlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzb3VyY2VEYXRhLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKSBmaW5hbDsKICAgICAKICAgICB2b2lkIHJlZ2lzdGVyVW5k
b1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyUmVkb1N0
ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNDUxMTk0
NzZkZmJmMTI0NmVjOTgwMTRjZGRmOTQwZTBmYWY4YjJiNC4uZmEyZWQzMjgyNTc4NDc4YjNjZjVk
MDgxZjcxYzg2NWVmODFkNzAzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTc4LDYgKzc4LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChXZWJDb3Jl
OjpSYW5nZSopIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQo
KSBmaW5hbDsKICAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViQ29y
ZTo6UmFuZ2UqLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgU3Ry
aW5nIHJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiByZXNvdXJjZURhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGZpbmFsOwogCiAgICAgdm9p
ZCBzZXRJbnNlcnRpb25QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQubW0KaW5kZXggZTgwN2EzZThmYTMzYjY4MGU2MzNjMjg1NzEwZTNmYmNkYjY2MWYyNi4u
MDQxYmFjYWQ5ZmJiOWI2ZDcyNTBkNTY5OWZjNjljMjA5NWU3OTQ0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5tbQpAQCAtNDE5LDYgKzQxOSwxMiBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50
UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJDb3JlOjpSYW5nZSosIFZlY3RvcjxTdAogICAgIC8v
IE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KIAorU3RyaW5nIFdlYkVk
aXRvckNsaWVudDo6cmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZShSZWY8U2hhcmVkQnVmZmVyPiYm
LCBjb25zdCBTdHJpbmcmKQoreworICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXRMZWdh
Y3kuCisgICAgcmV0dXJuIHsgfTsKK30KKwogI2lmIChQTEFURk9STShJT1MpICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApCiAKIC8vIEZJWE1FOiBS
ZW1vdmUgYm90aCB0aGlzIHN0dWIgYW5kIHRoZSByZWFsIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlv
biBiZWxvdyBvbmNlIHdlIGRvbid0IG5lZWQgdGhlIHJlYWwgdmVyc2lvbiBvbiBhbnkgc3VwcG9y
dGVkIHBsYXRmb3JtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggNWIwYjVjYjAxM2JlNTlhMzk1
NmYwOGE4NzZhM2Y0MTUwYjc0ODNhMy4uNTZlN2NmMGI0OGM5YTU0MjJmZjBhZGQ2NzQ2OGZlOGRl
YzRkYWMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yNjksNiArMjY5LDEyIEBAIHZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYkNvcmU6
OlJhbmdlKiwgVmVjdG9yPFN0CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAorU3RyaW5nIFdl
YkVkaXRvckNsaWVudDo6cmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZShSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIHsgfTsKK30KKwogYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZERlbGV0ZVJh
bmdlKFJhbmdlKiByYW5nZSkKIHsKICAgICBDT01QdHI8SVdlYkVkaXRpbmdEZWxlZ2F0ZT4gZWQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oCmluZGV4IDYzZWM0ZmNlNDBkOTE5YmI1ZWJiNjZmODJkYjg1Nzg5MzRl
MWZkYzMuLjdhNmVkZGU4MTkzNjEzODU5YTMxZDJmMGQyZWJiMzVmODIyYzVkMmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCkBAIC01NCw2ICs1NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsV3JpdGVT
ZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoV2ViQ29yZTo6UmFuZ2UqKSBmaW5hbDsKICAgICB2b2lkIGRp
ZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7CiAgICAgdm9pZCBnZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYkNvcmU6OlJhbmdlKiwgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFz
dGVib2FyZERhdGEpIGZpbmFsOworICAgIFN0cmluZyByZXBsYWNlbWVudFVSTEZvclJlc291cmNl
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYpIGZpbmFsOwogCiAg
ICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQog
ICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCkgZmluYWw7CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTBmYmZjMmFhNDFiZjBkNjA5
MzhkMGZjNWQzYzg3ODM2NzNjZGVkMC4uYTE3NDYzNzA4Yjk3OGIxMTE3ZmY3MmI5ZmU1ODhlNDcx
ODk2NTFjNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDM0IEBACisyMDE4LTAxLTE0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBpbmplY3RlZCBidW5kbGUgU1BJIHRvIHJlcGxh
Y2Ugc3VicmVzb3VyY2UgVVJMcyB3aGVuIGRyb3BwaW5nIG9yIHBhc3RpbmcgcmljaCBjb250ZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE2MzcK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2NTA4NDcxPgorCisgICAgICAgIFJldmlld2VkIGJ5
IFRpbSBIb3J0b24uCisKKyAgICAgICAgQWRkIDIgbmV3IEFQSSB0ZXN0cyB0byBleGVyY2lzZSBp
bmplY3RlZCBidW5kbGUgU1BJIGZvciBzdXBwbHlpbmcgcmVwbGFjZW1lbnQgVVJMcyB3aGVuIHBh
c3RpbmcgYW4gaW1hZ2UsIGFuZCBhbgorICAgICAgICBhdHRyaWJ1dGVkIHN0cmluZyBjb250YWlu
aW5nIG11bHRpcGxlIE5TVGV4dEF0dGFjaG1lbnRzLiBTZWUgV2ViS2l0IGFuZCBXZWJDb3JlIENo
YW5nZUxvZ3MgZm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9CdW5kbGVFZGl0aW5nRGVsZWdhdGVQbHVnSW4ubW06CisgICAgICAgICgt
W0J1bmRsZUVkaXRpbmdEZWxlZ2F0ZVBsdWdJbiB3ZWJQcm9jZXNzUGx1Z0luOmRpZENyZWF0ZUJy
b3dzZXJDb250ZXh0Q29udHJvbGxlcjpdKToKKyAgICAgICAgKC1bQnVuZGxlRWRpdGluZ0RlbGVn
YXRlUGx1Z0luIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOnJlcGxh
Y2VtZW50VVJMRm9yUmVzb3VyY2U6bWltZVR5cGU6XSk6CisKKyAgICAgICAgSW1wbGVtZW50IHRo
ZSBuZXcgT2JqZWN0aXZlLUMgYnVuZGxlIFNQSSB0byBsb29rIHVwIHRoZSBpbmNvbWluZyBNSU1F
IHR5cGUgaW4gdGhlIGRpY3Rpb25hcnkgc3VwcGxpZWQgdmlhIHRoZQorICAgICAgICAiTUlNRVR5
cGVUb1JlcGxhY2VtZW50VVJMTWFwIiBidW5kbGUgaW5pdGlhbGl6YXRpb24gcGFyYW1ldGVyLCBh
bmQgcmV0dXJuIGl0LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XS0F0dGFjaG1lbnRUZXN0cy5tbToKKyAgICAgICAgKHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNo
bWVudHMpOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHRhZ3NJbkJvZHldKToKKyAgICAgICAg
KC1bVGVzdFdLV2ViVmlldyBleHBlY3RFbGVtZW50VGFnc0luT3JkZXI6XSk6CisgICAgICAgICgt
W1Rlc3RXS1dlYlZpZXcgZXhwZWN0RWxlbWVudFRhZzp0b0NvbWVCZWZvcmU6XSk6CisKKyAgICAg
ICAgQWRkIGEgdGVzdCBoZWxwZXIgdG8gY2hlY2sgdGhhdCB0aGUgZ2l2ZW4gbGlzdCBvZiBlbGVt
ZW50IHRhZ3MgYXBwZWFycyBpbiB0aGUgZG9jdW1lbnQgYm9keS4gQWxzbywgcmVpbXBsZW1lbnQK
KyAgICAgICAgdGhlIGV4aXN0aW5nIC1leHBlY3RFbGVtZW50VGFnOnRvQ29tZUJlZm9yZTogYXMg
YSBzcGVjaWFsIGNhc2Ugb2YgLWV4cGVjdEVsZW1lbnRUYWdzSW5PcmRlcjouCisKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRC
dW5kbGVQYWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2UpOgorCiAyMDE4LTAxLTE2ICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtBdHRhY2htZW50IFN1cHBv
cnRdIFByb3ZpZGUgdGhlIGBzcmNgIG9mIGFuIGF0dGFjaG1lbnQgdG8gdGhlIFVJIGRlbGVnYXRl
IHdoZW4gYW4gYXR0YWNobWVudCBpcyBpbnNlcnRlZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9CdW5kbGVFZGl0aW5nRGVsZWdhdGVQbHVnSW4ubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0J1bmRsZUVkaXRpbmdEZWxl
Z2F0ZVBsdWdJbi5tbQppbmRleCBjNjNjMGE4ZWNmNDQ2MDU3ZDUyZTY0MDUzNmZiMThiZTgyNGNk
YjJhLi4zM2YyYmI4MzI2MGYxMmQ2ZDJiODM5MGU3NDUwZDBmNWJhZjY2MDFjIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0J1bmRsZUVkaXRpbmdEZWxl
Z2F0ZVBsdWdJbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0J1bmRsZUVkaXRpbmdEZWxlZ2F0ZVBsdWdJbi5tbQpAQCAtNDcsNiArNDcsNyBAQCBAaW1wbGVt
ZW50YXRpb24gQnVuZGxlRWRpdGluZ0RlbGVnYXRlUGx1Z0luIHsKICAgICBSZXRhaW5QdHI8aWQg
PEJ1bmRsZUVkaXRpbmdEZWxlZ2F0ZVByb3RvY29sPj4gX3JlbW90ZU9iamVjdDsKICAgICBCT09M
IF9lZGl0aW5nRGVsZWdhdGVTaG91bGRJbnNlcnRUZXh0OwogICAgIEJPT0wgX3Nob3VsZE92ZXJy
aWRlUGVyZm9ybVR3b1N0ZXBEcm9wOworICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk8TlNTdHJp
bmcgKiwgTlNTdHJpbmcgKj4+IF9taW1lVHlwZVRvUmVwbGFjZW1lbnRVUkxNYXA7CiB9CiAKIC0g
KHZvaWQpd2ViUHJvY2Vzc1BsdWdJbjooV0tXZWJQcm9jZXNzUGx1Z0luQ29udHJvbGxlciAqKXBs
dWdJbkNvbnRyb2xsZXIgZGlkQ3JlYXRlQnJvd3NlckNvbnRleHRDb250cm9sbGVyOihXS1dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKilicm93c2VyQ29udGV4dENvbnRy
b2xsZXIKQEAgLTYzLDYgKzY0LDcgQEAgLSAodm9pZCl3ZWJQcm9jZXNzUGx1Z0luOihXS1dlYlBy
b2Nlc3NQbHVnSW5Db250cm9sbGVyICopcGx1Z0luQ29udHJvbGxlciBkaWRDcmUKICAgICAgICAg
X2VkaXRpbmdEZWxlZ2F0ZVNob3VsZEluc2VydFRleHQgPSBZRVM7CiAKICAgICBfc2hvdWxkT3Zl
cnJpZGVQZXJmb3JtVHdvU3RlcERyb3AgPSBbW3BsdWdJbkNvbnRyb2xsZXIucGFyYW1ldGVycyB2
YWx1ZUZvcktleTpAIkJ1bmRsZU92ZXJyaWRlUGVyZm9ybVR3b1N0ZXBEcm9wIl0gYm9vbFZhbHVl
XTsKKyAgICBfbWltZVR5cGVUb1JlcGxhY2VtZW50VVJMTWFwID0gW3BsdWdJbkNvbnRyb2xsZXIu
cGFyYW1ldGVycyB2YWx1ZUZvcktleTpAIk1JTUVUeXBlVG9SZXBsYWNlbWVudFVSTE1hcCJdOwog
CiAgICAgX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlICppbnRlcmZhY2UgPSBbX1dLUmVtb3RlT2Jq
ZWN0SW50ZXJmYWNlIHJlbW90ZU9iamVjdEludGVyZmFjZVdpdGhQcm90b2NvbDpAcHJvdG9jb2wo
QnVuZGxlRWRpdGluZ0RlbGVnYXRlUHJvdG9jb2wpXTsKICAgICBfcmVtb3RlT2JqZWN0ID0gW2Jy
b3dzZXJDb250ZXh0Q29udHJvbGxlci5fcmVtb3RlT2JqZWN0UmVnaXN0cnkgcmVtb3RlT2JqZWN0
UHJveHlXaXRoSW50ZXJmYWNlOmludGVyZmFjZV07CkBAIC05OCw2ICsxMDAsMTIgQEAgLSAoQk9P
TClfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9jZXNz
UGx1Z0luQnJvd3NlckNvbnQKICAgICByZXR1cm4gX3Nob3VsZE92ZXJyaWRlUGVyZm9ybVR3b1N0
ZXBEcm9wOwogfQogCistIChOU1N0cmluZyAqKV93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRl
eHRDb250cm9sbGVyOihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIg
Kiljb250cm9sbGVyIHJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2U6KE5TRGF0YSAqKXJlc291cmNl
RGF0YSBtaW1lVHlwZTooTlNTdHJpbmcgKiltaW1lVHlwZQoreworICAgIGFzc2VydCghIXJlc291
cmNlRGF0YSk7CisgICAgcmV0dXJuIFtfbWltZVR5cGVUb1JlcGxhY2VtZW50VVJMTWFwIG9iamVj
dEZvcktleTptaW1lVHlwZV07Cit9CisKIEBlbmQKIAogI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVE
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0
YWNobWVudFRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
S0F0dGFjaG1lbnRUZXN0cy5tbQppbmRleCBiODdhNjBiNWFlZDA5YTE5M2M4ZDllOGE2NmFiNjAx
NmFlNzMxODEwLi5iOWEzMmM5YTZhZWRlODdmZTdhMTY3ZDQ1Y2M4ZjdiNDk4MTVmNjM0IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVu
dFRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tB
dHRhY2htZW50VGVzdHMubW0KQEAgLTI4LDYgKzI4LDcgQEAKICNpbXBvcnQgIkRhdGFJbnRlcmFj
dGlvblNpbXVsYXRvci5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQg
IlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25FeHRyYXMu
aCIKICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KQEAg
LTE0NCwxOCArMTQ1LDIzIEBAIHByaXZhdGU6CiBAaW50ZXJmYWNlIFRlc3RXS1dlYlZpZXcgKEF0
dGFjaG1lbnRUZXN0aW5nKQogQGVuZAogCi1zdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+
IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoQ0dTaXplIHdlYlZpZXdTaXplKQorc3RhdGlj
IFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKENH
U2l6ZSB3ZWJWaWV3U2l6ZSwgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbikK
IHsKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtjb25maWd1cmF0aW9uIF9zZXRBdHRhY2htZW50RWxl
bWVudEVuYWJsZWQ6WUVTXTsKKyAgICBjb25maWd1cmF0aW9uLl9hdHRhY2htZW50RWxlbWVudEVu
YWJsZWQgPSBZRVM7CiAgICAgV0tQcmVmZXJlbmNlc1NldEN1c3RvbVBhc3RlYm9hcmREYXRhRW5h
YmxlZCgoV0tQcmVmZXJlbmNlc1JlZilbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10sIFlFUyk7
CiAKLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIHdlYlZpZXdTaXplLndpZHRoLCB3ZWJWaWV3U2l6
ZS5oZWlnaHQpIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdE1ha2UoMCwgMCwgd2ViVmlld1NpemUud2lkdGgsIHdlYlZpZXdTaXplLmhlaWdodCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxv
YWRIVE1MU3RyaW5nOkAiPG1ldGEgbmFtZT0ndmlld3BvcnQnIGNvbnRlbnQ9J3dpZHRoPWRldmlj
ZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xJz48c2NyaXB0PmZvY3VzID0gKCkgPT4gZG9jdW1lbnQu
Ym9keS5mb2N1cygpPC9zY3JpcHQ+PGJvZHkgb25sb2FkPWZvY3VzKCkgY29udGVudGVkaXRhYmxl
PjwvYm9keT4iXTsKIAogICAgIHJldHVybiB3ZWJWaWV3OwogfQogCitzdGF0aWMgUmV0YWluUHRy
PFRlc3RXS1dlYlZpZXc+IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoQ0dTaXplIHdlYlZp
ZXdTaXplKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgcmV0dXJuIHdlYlZpZXdGb3JUZXN0aW5n
QXR0YWNobWVudHMod2ViVmlld1NpemUsIGNvbmZpZ3VyYXRpb24uZ2V0KCkpOworfQorCiBzdGF0
aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMo
KQogewogICAgIHJldHVybiB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKENHU2l6ZU1ha2Uo
NTAwLCA1MDApKTsKQEAgLTIwNywyMCArMjEzLDI5IEBAIHN0YXRpYyBfV0tBdHRhY2htZW50RGlz
cGxheU9wdGlvbnMgKmRpc3BsYXlPcHRpb25zV2l0aE1vZGUoX1dLQXR0YWNobWVudERpc3BsYXlN
CiAKIEBpbXBsZW1lbnRhdGlvbiBUZXN0V0tXZWJWaWV3IChBdHRhY2htZW50VGVzdGluZykKIAot
LSAodm9pZClleHBlY3RFbGVtZW50VGFnOihOU1N0cmluZyAqKXRhZ05hbWUgdG9Db21lQmVmb3Jl
OihOU1N0cmluZyAqKW90aGVyVGFnTmFtZQorLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKXRhZ3NJ
bkJvZHkKK3sKKyAgICByZXR1cm4gW3NlbGYgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
IkFycmF5LmZyb20oZG9jdW1lbnQuYm9keS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnKicpKS5tYXAo
ZSA9PiBlLnRhZ05hbWUpIl07Cit9CisKKy0gKHZvaWQpZXhwZWN0RWxlbWVudFRhZ3NJbk9yZGVy
OihOU0FycmF5PE5TU3RyaW5nICo+ICopdGFnTmFtZXMKIHsKLSAgICBOU0FycmF5ICp0YWdzSW5C
b2R5ID0gW3NlbGYgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIkFycmF5LmZyb20oZG9j
dW1lbnQuYm9keS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnKicpKS5tYXAoZSA9PiBlLnRhZ05hbWUp
Il07Ci0gICAgQk9PTCBzdWNjZXNzID0gW3RhZ3NJbkJvZHkgY29udGFpbnNPYmplY3Q6dGFnTmFt
ZV0gJiYgW3RhZ3NJbkJvZHkgY29udGFpbnNPYmplY3Q6b3RoZXJUYWdOYW1lXTsKLSAgICBpZiAo
c3VjY2VzcykgewotICAgICAgICBOU1VJbnRlZ2VyIGluZGV4ID0gW3RhZ3NJbkJvZHkgaW5kZXhP
Zk9iamVjdDp0YWdOYW1lXTsKLSAgICAgICAgTlNVSW50ZWdlciBvdGhlckluZGV4ID0gW3RhZ3NJ
bkJvZHkgaW5kZXhPZk9iamVjdFdpdGhPcHRpb25zOk5TRW51bWVyYXRpb25SZXZlcnNlIHBhc3Np
bmdUZXN0OlsmXSAoTlNTdHJpbmcgKnRhZywgTlNVSW50ZWdlciwgQk9PTCAqKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gW3RhZyBpc0VxdWFsVG9TdHJpbmc6b3RoZXJUYWdOYW1lXTsKLSAgICAgICAg
fV07Ci0gICAgICAgIHN1Y2Nlc3MgPSBpbmRleCA8IG90aGVySW5kZXg7CisgICAgYXV0byByZW1h
aW5pbmdUYWdzID0gYWRvcHROUyhbdGFnTmFtZXMgbXV0YWJsZUNvcHldKTsKKyAgICBOU0FycmF5
PE5TU3RyaW5nICo+ICp0YWdzSW5Cb2R5ID0gc2VsZi50YWdzSW5Cb2R5OworICAgIGZvciAoTlNT
dHJpbmcgKnRhZyBpbiB0YWdzSW5Cb2R5LnJldmVyc2VPYmplY3RFbnVtZXJhdG9yKSB7CisgICAg
ICAgIGlmIChbdGFnIGlzRXF1YWxUb1N0cmluZzpbcmVtYWluaW5nVGFncyBsYXN0T2JqZWN0XV0p
CisgICAgICAgICAgICBbcmVtYWluaW5nVGFncyByZW1vdmVMYXN0T2JqZWN0XTsKKyAgICAgICAg
aWYgKCFbcmVtYWluaW5nVGFncyBjb3VudF0pCisgICAgICAgICAgICBicmVhazsKICAgICB9Ci0g
ICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7Ci0gICAgaWYgKCFzdWNjZXNzKQotICAgICAgICBOU0xv
ZyhAIkV4cGVjdGVkICVAIHRvIGNvbWUgYmVmb3JlICVAIGluIHRhZ3M6ICVAIiwgdGFnTmFtZSwg
b3RoZXJUYWdOYW1lLCB0YWdzSW5Cb2R5KTsKKyAgICBFWFBFQ1RfRVEoW3JlbWFpbmluZ1RhZ3Mg
Y291bnRdLCAwVSk7CisgICAgaWYgKFtyZW1haW5pbmdUYWdzIGNvdW50XSkKKyAgICAgICAgTlNM
b2coQCJFeHBlY3RlZCB0byBmaW5kIG9yZGVyZWQgdGFnczogJUAgaW46ICVAIiwgdGFnTmFtZXMs
IHRhZ3NJbkJvZHkpOworfQorCistICh2b2lkKWV4cGVjdEVsZW1lbnRUYWc6KE5TU3RyaW5nICop
dGFnTmFtZSB0b0NvbWVCZWZvcmU6KE5TU3RyaW5nICopb3RoZXJUYWdOYW1lCit7CisgICAgW3Nl
bGYgZXhwZWN0RWxlbWVudFRhZ3NJbk9yZGVyOkBbdGFnTmFtZSwgb3RoZXJUYWdOYW1lXV07CiB9
CiAKIC0gKEJPT0wpX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6KE5TU3RyaW5nICop
Y29tbWFuZCBhcmd1bWVudDooTlNTdHJpbmcgKilhcmd1bWVudApAQCAtMTA5Niw2ICsxMTExLDM4
IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHMsIEluc2VydER1cGxpY2F0ZUF0dGFjaG1lbnRBbmRV
cGRhdGVEYXRhKQogICAgIFtwYXN0ZWRBdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERhdGFUb0Jl
Om9yaWdpbmFsRGF0YS5nZXQoKV07CiB9CiAKK1RFU1QoV0tBdHRhY2htZW50VGVzdHMsIEluamVj
dGVkQnVuZGxlUmVwbGFjZVVSTHNXaGVuUGFzdGluZ0F0dHJpYnV0ZWRTdHJpbmcpCit7CisgICAg
cGxhdGZvcm1Db3B5UmljaFRleHRXaXRoTXVsdGlwbGVBdHRhY2htZW50cygpOworCisgICAgYXV0
byBjb25maWd1cmF0aW9uID0gcmV0YWluUHRyKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0
X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIkJ1bmRsZUVkaXRpbmdEZWxl
Z2F0ZVBsdWdJbiJdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJvY2Vzc1Bvb2xdIF9zZXRPYmpl
Y3Q6QHsgQCJpbWFnZS9wbmciIDogQCJjaWQ6Zm9vLWJhciIgfSBmb3JCdW5kbGVQYXJhbWV0ZXI6
QCJNSU1FVHlwZVRvUmVwbGFjZW1lbnRVUkxNYXAiXTsKKyAgICBhdXRvIHdlYlZpZXcgPSB3ZWJW
aWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKENHU2l6ZU1ha2UoNTAwLCA1MDApLCBjb25maWd1cmF0
aW9uLmdldCgpKTsKKyAgICB7CisgICAgICAgIE9ic2VydmVBdHRhY2htZW50VXBkYXRlc0ZvclNj
b3BlIG9ic2VydmVyKHdlYlZpZXcuZ2V0KCkpOworICAgICAgICBbd2ViVmlldyBfc3luY2hyb25v
dXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpAIlBhc3RlIiBhcmd1bWVudDpuaWxdOworICAgICAgICBF
WFBFQ1RfRVEoMlUsIG9ic2VydmVyLm9ic2VydmVyKCkuaW5zZXJ0ZWQuY291bnQpOworICAgIH0K
KyAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50VGFnc0luT3JkZXI6QFsgQCJJTUciLCBAIkFUVEFD
SE1FTlQiLCBAIkFUVEFDSE1FTlQiIF1dOworICAgIEVYUEVDVF9XS19TVFJFUSgiY2lkOmZvby1i
YXIiLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAic3JjIiBmb3JRdWVyeVNlbGVjdG9yOkAi
aW1nIl0pOworfQorCitURVNUKFdLQXR0YWNobWVudFRlc3RzLCBJbmplY3RlZEJ1bmRsZVJlcGxh
Y2VVUkxXaGVuUGFzdGluZ0ltYWdlKQoreworICAgIHBsYXRmb3JtQ29weVBORygpOworCisgICAg
TlNTdHJpbmcgKnJlcGxhY2VtZW50VVJMID0gQCJjaWQ6Zm9vLWJhciI7CisgICAgYXV0byBjb25m
aWd1cmF0aW9uID0gcmV0YWluUHRyKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZp
Z3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIkJ1bmRsZUVkaXRpbmdEZWxlZ2F0ZVBs
dWdJbiJdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJvY2Vzc1Bvb2xdIF9zZXRPYmplY3Q6QHsg
QCJpbWFnZS90aWZmIiA6IHJlcGxhY2VtZW50VVJMLCBAImltYWdlL3BuZyIgOiByZXBsYWNlbWVu
dFVSTCB9IGZvckJ1bmRsZVBhcmFtZXRlcjpAIk1JTUVUeXBlVG9SZXBsYWNlbWVudFVSTE1hcCJd
OworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoQ0dTaXpl
TWFrZSg1MDAsIDUwMCksIGNvbmZpZ3VyYXRpb24uZ2V0KCkpOworICAgIHsKKyAgICAgICAgT2Jz
ZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7Cisg
ICAgICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5kOkAiUGFzdGUi
IGFyZ3VtZW50Om5pbF07CisgICAgICAgIEVYUEVDVF9FUSgwVSwgb2JzZXJ2ZXIub2JzZXJ2ZXIo
KS5pbnNlcnRlZC5jb3VudCk7CisgICAgfQorICAgIEVYUEVDVF9XS19TVFJFUSgiY2lkOmZvby1i
YXIiLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAic3JjIiBmb3JRdWVyeVNlbGVjdG9yOkAi
aW1nIl0pOworfQorCiAjcHJhZ21hIG1hcmsgLSBQbGF0Zm9ybS1zcGVjaWZpYyB0ZXN0cwogCiAj
aWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCmluZGV4IGRkNjQ4NDE2NmUz
YWVjM2YyZGIwYmY4ZThiNjFlM2NhNjZjMDc3MDEuLjVlZGZhNTUyNmI1YWU5YjQwNmExZmM4NTlm
NjM0NWI0YjQxZjk5NmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKQEAgLTM3NSw2ICszNzUs
NyBAQCBJbmplY3RlZEJ1bmRsZVBhZ2U6OkluamVjdGVkQnVuZGxlUGFnZShXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSkKICAgICAgICAgMCwgLyogZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSAqLwogICAg
ICAgICAwLCAvKiBkaWRXcml0ZVRvUGFzdGVib2FyZCAqLwogICAgICAgICAwLCAvKiBwZXJmb3Jt
VHdvU3RlcERyb3AgKi8KKyAgICAgICAgMCwgLyogcmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZSAq
LwogICAgIH07CiAgICAgV0tCdW5kbGVQYWdlU2V0RWRpdG9yQ2xpZW50KG1fcGFnZSwgJmVkaXRv
ckNsaWVudC5iYXNlKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331452</attachid>
            <date>2018-01-16 19:29:00 -0800</date>
            <delta_ts>2018-01-17 09:07:51 -0800</delta_ts>
            <desc>Bump WKBundlePageEditorClient version</desc>
            <filename>bug-181637-20180116192859.patch</filename>
            <type>text/plain</type>
            <size>42852</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2OTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWExNWU4N2Y2YWM4MDI3
MzRkMjQ2YzI4OGM0OTliMmEzNTg0ZTg5Yy4uZDhlMDQ0ZDg2MTk5YjFmOWJkYWUxNGRmZDVmYzIy
NDI5MGEzZWRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE4LTAxLTE2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBpbmplY3Rl
ZCBidW5kbGUgU1BJIHRvIHJlcGxhY2Ugc3VicmVzb3VyY2UgVVJMcyB3aGVuIGRyb3BwaW5nIG9y
IHBhc3RpbmcgcmljaCBjb250ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODE2MzcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2NTA4NDcxPgor
CisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgQmVmb3JlIGNhcnJ5
aW5nIG91dCBibG9iIFVSTCBjb252ZXJzaW9uIGZvciBwYXN0ZWQgb3IgZHJvcHBlZCByaWNoIGNv
bnRlbnQsIGxldCB0aGUgZWRpdG9yIGNsaWVudCByZXBsYWNlCisgICAgICAgIHN1YnJlc291cmNl
IFVSTHMgaW4gV2ViS2l0MiBieSBjYWxsaW5nIG91dCB0byBuZXcgaW5qZWN0ZWQgYnVuZGxlIFNQ
SS4gU2VlIGNvbW1lbnRzIGJlbG93IGZvciBtb3JlIGRldGFpbC4KKworICAgICAgICBUZXN0czog
IFdLQXR0YWNobWVudFRlc3RzLkluamVjdGVkQnVuZGxlUmVwbGFjZVVSTHNXaGVuUGFzdGluZ0F0
dHJpYnV0ZWRTdHJpbmcKKyAgICAgICAgICAgICAgICBXS0F0dGFjaG1lbnRUZXN0cy5JbmplY3Rl
ZEJ1bmRsZVJlcGxhY2VVUkxXaGVuUGFzdGluZ0ltYWdlCisKKyAgICAgICAgKiBlZGl0aW5nL0Vk
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNsaWVudFJlcGxhY2VtZW50VVJM
Rm9yUmVzb3VyY2UpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisKKyAgICAgICAgQWRk
IGEgbmV3IGhlbHBlciB0byBjYWxsIG91dCB0byB0aGUgZWRpdG9yIGNsaWVudCBmb3IgYSBVUkwg
c3RyaW5nIHRvIHJlcGxhY2UgYSBnaXZlbiBBcmNoaXZlUmVzb3VyY2UuIEluCisgICAgICAgIFdl
YktpdDIsIHRoaXMgY2FsbHMgb3V0IHRvIHRoZSBpbmplY3RlZCBidW5kbGUncyBuZXcgYHJlcGxh
Y2VtZW50VVJMRm9yUmVzb3VyY2VgIFNQSSBob29rLgorCisgICAgICAgICogZWRpdGluZy9jb2Nv
YS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRSZXBs
YWNlU3VicmVzb3VyY2VVUkwpOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50
V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VTdWJyZXNvdXJjZVVS
THNXaXRoVVJMc0Zyb21DbGllbnQpOgorCisgICAgICAgIEFkZCBhIG5ldyBzdGF0aWMgaGVscGVy
IHRvIHJlcGxhY2Ugc3VicmVzb3VyY2UgVVJMcyBpbiB0aGUgZ2l2ZW4gRG9jdW1lbnRGcmFnbWVu
dCB3aXRoIFVSTHMgc3VwcGxpZWQgYnkgdGhlCisgICAgICAgIGVkaXRvciBjbGllbnQuIEFkZGl0
aW9uYWxseSBidWlsZHMgYSBsaXN0IG9mIEFyY2hpdmVSZXNvdXJjZXMgdGhhdCBoYXZlIG5vdCBi
ZWVuIHJlcGxhY2VkLCBmb3IgdXNlIGF0IGNhbGwgc2l0ZXMKKyAgICAgICAgc28gdGhhdCB3ZSBk
b24ndCB1bm5lY2Vzc2FyaWx5IGNyZWF0ZSBtb3JlIEJsb2JzIGZvciBBcmNoaXZlUmVzb3VyY2Vz
IHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gcmVwbGFjZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXpl
TWFya3VwV2l0aEFyY2hpdmUpOgorCisgICAgICAgIFR3ZWFrIHdlYiBjb250ZW50IHJlYWRpbmcg
Y29kZXBhdGhzIHRvIGZpcnN0IHJlcGxhY2Ugc3VicmVzb3VyY2UgVVJMcyB3aXRoIGVkaXRvci1j
bGllbnQtc3VwcGxpZWQgVVJMcy4KKworICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRl
cjo6cmVhZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZENvbnZlcnRUb0Jsb2IpOiBE
ZWxldGVkLgorCisgICAgICAgIFJlbmFtZSB0aGlzIGhlbHBlciB0byBzaG91bGRSZXBsYWNlU3Vi
cmVzb3VyY2VVUkwsIGJsb2IgVVJMIHJlcGxhY2VtZW50IGlzIG5vIGxvbmdlciB0aGUgb25seSBz
Y2VuYXJpbyBpbiB3aGljaAorICAgICAgICB3ZSByZXBsYWNlIHJlc291cmNlIFVSTHMsIGJ1dCBp
biBib3RoIGNhc2VzLCB3ZSBzdGlsbCB3YW50IHRvIGlnbm9yZSBgaHR0cDpgLWZhbWlseSBhbmQg
YGRhdGE6YCBVUkxzLgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAg
ICAgICogcGFnZS9FZGl0b3JDbGllbnQuaDoKKwogMjAxOC0wMS0xNiAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbQXR0YWNobWVudCBTdXBwb3J0XSBQ
cm92aWRlIHRoZSBgc3JjYCBvZiBhbiBhdHRhY2htZW50IHRvIHRoZSBVSSBkZWxlZ2F0ZSB3aGVu
IGFuIGF0dGFjaG1lbnQgaXMgaW5zZXJ0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDQ4MWEwMTk3ODEzYjk4YmZj
OTViYjNkNDI3NTc0MjdjNGUzOTBlYy4uODlhNGU5NzUzZTlmMTk2OWVkNzY4NjRlODhmZGMzZmNi
MGViNDNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxOC0wMS0xNiAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgaW5qZWN0ZWQgYnVu
ZGxlIFNQSSB0byByZXBsYWNlIHN1YnJlc291cmNlIFVSTHMgd2hlbiBkcm9wcGluZyBvciBwYXN0
aW5nIHJpY2ggY29udGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTgxNjM3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjUwODQ3MT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIEFkZCBuZXcgaW5qZWN0ZWQg
YnVuZGxlIFNQSSwgcmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZSwgd2hpY2ggY2xpZW50cyBtYXkg
dXNlIHRvIHByb3ZpZGUgYSByZXBsYWNlbWVudCBVUkwgdG8KKyAgICAgICAgcmVwcmVzZW50IGFu
IGFyY2hpdmUgcmVzb3VyY2UsIGdpdmVuIHRoZSByZXNvdXJjZSdzIGRhdGEgYW5kIE1JTUUgdHlw
ZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVk
QnVuZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0
b3JDbGllbnQ6OnJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxl
Z2F0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50Lmg6CisKKyAgICAgICAgQWRkIHJlcGxhY2VtZW50VVJMRm9yUmVz
b3VyY2UsIGFuZCBhbHNvIGJ1bXAgdGhlIGN1cnJlbnQgaW5qZWN0ZWQgYnVuZGxlIGVkaXRvciBj
bGllbnQgdmVyc2lvbiB0byAyLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbToK
KyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9z
ZXRFZGl0aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OnJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2Up
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OnJlcGxh
Y2VtZW50VVJMRm9yUmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisKIDIwMTgtMDEtMTYgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0gUHJvdmlk
ZSB0aGUgYHNyY2Agb2YgYW4gYXR0YWNobWVudCB0byB0aGUgVUkgZGVsZWdhdGUgd2hlbiBhbiBh
dHRhY2htZW50IGlzIGluc2VydGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZTI4
ZmIzM2YwYWQxODc0ZmRiMjY2ZTE5ODAzMTNmNTY4YTc4YjRjYy4uNWY0MmI1OGFjM2M3YTFiOWUw
NWE0NzkxNTIwZTdjNDIzNDkwYzM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3IEBACisyMDE4LTAxLTE0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBpbmplY3RlZCBidW5kbGUgU1BJIHRvIHJlcGxhY2Ugc3Vi
cmVzb3VyY2UgVVJMcyB3aGVuIGRyb3BwaW5nIG9yIHBhc3RpbmcgcmljaCBjb250ZW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE2MzcKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM2NTA4NDcxPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBI
b3J0b24uCisKKyAgICAgICAgQWRkIGEgc3R1YiBpbXBsZW1lbnRhdGlvbiBvZiByZXBsYWNlbWVu
dFVSTEZvclJlc291cmNlLiBTZWUgV2ViQ29yZSBhbmQgV2ViS2l0IENoYW5nZUxvZ3MgZm9yIG1v
cmUgZGV0YWlsLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAo
V2ViRWRpdG9yQ2xpZW50OjpyZXBsYWNlbWVudFVSTEZvclJlc291cmNlKToKKwogMjAxOC0wMS0x
MSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5h
bWUgRU5BQkxFX0FTWU5DX0lURVJBVElPTiB0byBFTkFCTEVfSlNfQVNZTkNfSVRFUkFUSU9OCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggOWY5YzMwOTJlNzUzOWE4MTRmZTJkY2Y4NWZk
YmIzNTcyZWFlZDM3ZC4uZWE0NGFkYmEzNmJkMTgwYzkzNTVjNTYzYjM4MDk1ZGQyNWIzNWNmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE4LTAxLTE0
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBp
bmplY3RlZCBidW5kbGUgU1BJIHRvIHJlcGxhY2Ugc3VicmVzb3VyY2UgVVJMcyB3aGVuIGRyb3Bw
aW5nIG9yIHBhc3RpbmcgcmljaCBjb250ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODE2MzcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2NTA4
NDcxPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgQWRkIGEg
c3R1YiBpbXBsZW1lbnRhdGlvbiBvZiByZXBsYWNlbWVudFVSTEZvclJlc291cmNlLiBTZWUgV2Vi
Q29yZSBhbmQgV2ViS2l0IENoYW5nZUxvZ3MgZm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkVkaXRvckNs
aWVudDo6cmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisKIDIwMTctMTItMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgUmVtb3ZlIHN0ZDo6Y2hyb25vIGNvbXBsZXRl
bHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAzMWVlYWUzMjBmZDY1NTU0YzEyMjQ0
MTNmZTQwNmU0MzBjNmIxYWZiLi5mZWNhNGQxMTkyYzM1MDViZjI4OTYxNmZmN2JjMDQyOTRiZTg3
ZjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zOTYxLDQgKzM5NjEsMTIgQEAg
Y29uc3QgRm9udCogRWRpdG9yOjpmb250Rm9yU2VsZWN0aW9uKGJvb2wmIGhhc011bHRpcGxlRm9u
dHMpIGNvbnN0CiAgICAgcmV0dXJuIGZvbnQ7CiB9CiAKK1N0cmluZyBFZGl0b3I6OmNsaWVudFJl
cGxhY2VtZW50VVJMRm9yUmVzb3VyY2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNvdXJjZURhdGEs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgaWYgKGF1dG8qIGVkaXRvckNsaWVudCA9
IGNsaWVudCgpKQorICAgICAgICByZXR1cm4gZWRpdG9yQ2xpZW50LT5yZXBsYWNlbWVudFVSTEZv
clJlc291cmNlKFdURk1vdmUocmVzb3VyY2VEYXRhKSwgbWltZVR5cGUpOworCisgICAgcmV0dXJu
IHsgfTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgK
aW5kZXggZTZhODk2N2VkOTRiNGY4NTViYmMzYTVjNTU0OTE3OGFhZmEwZGJkNS4uMDE0OWZjMjEw
MTg4NThlMWIwNWYzNmExMGZmZTc4NDY5ZmVjM2Y1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5o
CkBAIC00ODQsNiArNDg0LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVw
bGFjZVNlbGVjdGlvbldpdGhBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqLCBN
YWlsQmxvY2txdW90ZUhhbmRsaW5nID0gTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6UmVzcGVjdEJs
b2NrcXVvdGUpOwogI2VuZGlmCiAKKyAgICBTdHJpbmcgY2xpZW50UmVwbGFjZW1lbnRVUkxGb3JS
ZXNvdXJjZShSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc291cmNlRGF0YSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSk7CisKICNpZiAhUExBVEZPUk0oV0lOKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgd3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiwgRWxlbWVudCYgaW1h
Z2VFbGVtZW50LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5k
ZXggMWI5YWUzZmU0NWM5YzQ4NjkyNmU4YzI3YzJlNjUxNjAwN2E2ZTE4Yy4uMDNlMThjMGJlMzEz
MDUzNTE0ZjI4NGU5NGIxNGQ1ZmY5MDExMjY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTE3NSw3ICsxNzUs
NyBAQCBwcml2YXRlOgogfTsKIAogCi1zdGF0aWMgYm9vbCBzaG91bGRDb252ZXJ0VG9CbG9iKGNv
bnN0IFVSTCYgdXJsKQorc3RhdGljIGJvb2wgc2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKGNv
bnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiAhKHVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5
KCkgfHwgdXJsLnByb3RvY29sSXNEYXRhKCkpOwogfQpAQCAtMjIzLDcgKzIyMyw3IEBAIHN0YXRp
YyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhEb2N1bWVudEZyYWdtZW50
JiBmcmFnbWVudCwgY29uc3QKICAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgUmVmPEJsb2I+PiB1
cmxUb0Jsb2JNYXA7CiAgICAgZm9yIChjb25zdCBSZWY8QXJjaGl2ZVJlc291cmNlPiYgc3VicmVz
b3VyY2UgOiBzdWJyZXNvdXJjZXMpIHsKICAgICAgICAgYXV0byYgdXJsID0gc3VicmVzb3VyY2Ut
PnVybCgpOwotICAgICAgICBpZiAoc2hvdWxkQ29udmVydFRvQmxvYih1cmwpKQorICAgICAgICBp
ZiAoc2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHVybCkpCiAgICAgICAgICAgICB1cmxUb0Js
b2JNYXAuc2V0KHVybC5zdHJpbmcoKSwgQmxvYjo6Y3JlYXRlKHN1YnJlc291cmNlLT5kYXRhKCks
IHN1YnJlc291cmNlLT5taW1lVHlwZSgpKSk7CiAgICAgfQogCkBAIC0yODYsNiArMjg2LDMwIEBA
IHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhEb2N1bWVudEZy
YWdtZW50JiBmcmFnbWVudCwgY29uc3QKICNlbmRpZgogfQogCitzdGF0aWMgdm9pZCByZXBsYWNl
U3VicmVzb3VyY2VVUkxzV2l0aFVSTHNGcm9tQ2xpZW50KERvY3VtZW50RnJhZ21lbnQmIGZyYWdt
ZW50LCBjb25zdCBWZWN0b3I8UmVmPEFyY2hpdmVSZXNvdXJjZT4+JiBzdWJyZXNvdXJjZXMsIFZl
Y3RvcjxSZWY8QXJjaGl2ZVJlc291cmNlPj4mIG91dFVucmVwbGFjZWRSZXNvdXJjZXMpCit7Cisg
ICAgQVNTRVJUKGZyYWdtZW50LmRvY3VtZW50KCkuZnJhbWUoKSk7CisgICAgYXV0byYgZnJhbWUg
PSAqZnJhZ21lbnQuZG9jdW1lbnQoKS5mcmFtZSgpOworICAgIEhhc2hNYXA8QXRvbWljU3RyaW5n
LCBBdG9taWNTdHJpbmc+IHN1YnJlc291cmNlVVJMVG9DbGllbnRVUkxNYXA7CisgICAgZm9yIChh
dXRvJiBzdWJyZXNvdXJjZSA6IHN1YnJlc291cmNlcykgeworICAgICAgICBhdXRvJiBvcmlnaW5h
bFVSTCA9IHN1YnJlc291cmNlLT51cmwoKTsKKyAgICAgICAgaWYgKCFzaG91bGRSZXBsYWNlU3Vi
cmVzb3VyY2VVUkwob3JpZ2luYWxVUkwpKSB7CisgICAgICAgICAgICBvdXRVbnJlcGxhY2VkUmVz
b3VyY2VzLmFwcGVuZChzdWJyZXNvdXJjZS5jb3B5UmVmKCkpOworICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIH0KKworICAgICAgICBhdXRvIHJlcGxhY2VtZW50VVJMID0gZnJhbWUuZWRp
dG9yKCkuY2xpZW50UmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZShzdWJyZXNvdXJjZS0+ZGF0YSgp
LCBzdWJyZXNvdXJjZS0+bWltZVR5cGUoKSk7CisgICAgICAgIGlmIChyZXBsYWNlbWVudFVSTC5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgIG91dFVucmVwbGFjZWRSZXNvdXJjZXMuYXBwZW5kKHN1
YnJlc291cmNlLmNvcHlSZWYoKSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
CisgICAgICAgIHN1YnJlc291cmNlVVJMVG9DbGllbnRVUkxNYXAuc2V0KG9yaWdpbmFsVVJMLnN0
cmluZygpLCByZXBsYWNlbWVudFVSTCk7CisgICAgfQorCisgICAgaWYgKCFzdWJyZXNvdXJjZVVS
TFRvQ2xpZW50VVJMTWFwLmlzRW1wdHkoKSkKKyAgICAgICAgcmVwbGFjZVN1YnJlc291cmNlVVJM
cyhmcmFnbWVudCwgV1RGTW92ZShzdWJyZXNvdXJjZVVSTFRvQ2xpZW50VVJMTWFwKSk7Cit9CiAK
IFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhG
cmFtZSYgZnJhbWUsIE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQogewpAQCAtMzA5LDEzICsz
MzMsMTYgQEAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVz
b3VyY2VzKEZyYW1lJiBmcmFtZSwgTlNBdHRyaWJ1dGUKICAgICAgICAgcmV0dXJuIFdURk1vdmUo
ZnJhZ21lbnRBbmRSZXNvdXJjZXMuZnJhZ21lbnQpOwogICAgIH0KIAorICAgIFZlY3RvcjxSZWY8
QXJjaGl2ZVJlc291cmNlPj4gdW5yZXBsYWNlZFJlc291cmNlczsKKyAgICByZXBsYWNlU3VicmVz
b3VyY2VVUkxzV2l0aFVSTHNGcm9tQ2xpZW50KCpmcmFnbWVudEFuZFJlc291cmNlcy5mcmFnbWVu
dCwgZnJhZ21lbnRBbmRSZXNvdXJjZXMucmVzb3VyY2VzLCB1bnJlcGxhY2VkUmVzb3VyY2VzKTsK
KwogICAgIGlmIChzaG91bGRSZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoKSkgewot
ICAgICAgICByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoKmZyYWdtZW50QW5kUmVz
b3VyY2VzLmZyYWdtZW50LCBmcmFnbWVudEFuZFJlc291cmNlcy5yZXNvdXJjZXMpOworICAgICAg
ICByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoKmZyYWdtZW50QW5kUmVzb3VyY2Vz
LmZyYWdtZW50LCB1bnJlcGxhY2VkUmVzb3VyY2VzKTsKICAgICAgICAgcmV0dXJuIFdURk1vdmUo
ZnJhZ21lbnRBbmRSZXNvdXJjZXMuZnJhZ21lbnQpOwogICAgIH0KIAogICAgIEhhc2hNYXA8QXRv
bWljU3RyaW5nLCBBdG9taWNTdHJpbmc+IGJsb2JVUkxNYXA7Ci0gICAgZm9yIChjb25zdCBSZWY8
QXJjaGl2ZVJlc291cmNlPiYgc3VicmVzb3VyY2UgOiBmcmFnbWVudEFuZFJlc291cmNlcy5yZXNv
dXJjZXMpIHsKKyAgICBmb3IgKGNvbnN0IFJlZjxBcmNoaXZlUmVzb3VyY2U+JiBzdWJyZXNvdXJj
ZSA6IHVucmVwbGFjZWRSZXNvdXJjZXMpIHsKICAgICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3Jl
YXRlKHN1YnJlc291cmNlLT5kYXRhKCksIHN1YnJlc291cmNlLT5taW1lVHlwZSgpKTsKICAgICAg
ICAgU3RyaW5nIGJsb2JVUkwgPSBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgYmxv
Yik7CiAgICAgICAgIGJsb2JVUkxNYXAuc2V0KHN1YnJlc291cmNlLT51cmwoKS5zdHJpbmcoKSwg
YmxvYlVSTCk7CkBAIC0zNjYsMTUgKzM5MywxOCBAQCBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFy
a3VwV2l0aEFyY2hpdmUoRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW1lbnQsIE1hcmt1cEFuZAog
ICAgIEFTU0VSVChzdGFnaW5nRG9jdW1lbnQpOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVG
cmFnbWVudEZyb21NYXJrdXAoKnN0YWdpbmdEb2N1bWVudCwgbWFya3VwQW5kQXJjaGl2ZS5tYXJr
dXAsIG1hcmt1cEFuZEFyY2hpdmUubWFpblJlc291cmNlLT51cmwoKSwgRGlzYWxsb3dTY3JpcHRp
bmdBbmRQbHVnaW5Db250ZW50KTsKIAorICAgIFZlY3RvcjxSZWY8QXJjaGl2ZVJlc291cmNlPj4g
dW5yZXBsYWNlZFJlc291cmNlczsKKyAgICByZXBsYWNlU3VicmVzb3VyY2VVUkxzV2l0aFVSTHNG
cm9tQ2xpZW50KGZyYWdtZW50LCBtYXJrdXBBbmRBcmNoaXZlLmFyY2hpdmUtPnN1YnJlc291cmNl
cygpLCB1bnJlcGxhY2VkUmVzb3VyY2VzKTsKKwogICAgIGlmIChzaG91bGRSZXBsYWNlUmljaENv
bnRlbnRXaXRoQXR0YWNobWVudHMoKSkgewotICAgICAgICByZXBsYWNlUmljaENvbnRlbnRXaXRo
QXR0YWNobWVudHMoZnJhZ21lbnQsIG1hcmt1cEFuZEFyY2hpdmUuYXJjaGl2ZS0+c3VicmVzb3Vy
Y2VzKCkpOworICAgICAgICByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoZnJhZ21l
bnQsIHVucmVwbGFjZWRSZXNvdXJjZXMpOwogICAgICAgICByZXR1cm4gbWFya3VwRm9yRnJhZ21l
bnRJbkRvY3VtZW50KFdURk1vdmUoZnJhZ21lbnQpLCAqc3RhZ2luZ0RvY3VtZW50KTsKICAgICB9
CiAKICAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgQXRvbWljU3RyaW5nPiBibG9iVVJMTWFwOwot
ICAgIGZvciAoY29uc3QgUmVmPEFyY2hpdmVSZXNvdXJjZT4mIHN1YnJlc291cmNlIDogbWFya3Vw
QW5kQXJjaGl2ZS5hcmNoaXZlLT5zdWJyZXNvdXJjZXMoKSkgeworICAgIGZvciAoY29uc3QgUmVm
PEFyY2hpdmVSZXNvdXJjZT4mIHN1YnJlc291cmNlIDogdW5yZXBsYWNlZFJlc291cmNlcykgewog
ICAgICAgICBhdXRvJiBzdWJyZXNvdXJjZVVSTCA9IHN1YnJlc291cmNlLT51cmwoKTsKLSAgICAg
ICAgaWYgKCFzaG91bGRDb252ZXJ0VG9CbG9iKHN1YnJlc291cmNlVVJMKSkKKyAgICAgICAgaWYg
KCFzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VVUkwoc3VicmVzb3VyY2VVUkwpKQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZShzdWJyZXNvdXJj
ZS0+ZGF0YSgpLCBzdWJyZXNvdXJjZS0+bWltZVR5cGUoKSk7CiAgICAgICAgIFN0cmluZyBibG9i
VVJMID0gRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZGVzdGluYXRpb25Eb2N1bWVudCwgYmxvYik7
CkBAIC0zOTIsNyArNDIyLDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNo
aXZlKERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmQKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8gc3ViZnJhbWVVUkwgPSBzdWJmcmFtZU1haW5SZXNv
dXJjZS0+dXJsKCk7Ci0gICAgICAgIGlmICghc2hvdWxkQ29udmVydFRvQmxvYihzdWJmcmFtZVVS
TCkpCisgICAgICAgIGlmICghc2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YmZyYW1lVVJM
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3Vi
ZnJhbWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5k
YXRhKCkuZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCkBAIC01
ODEsMTAgKzYxMSwxNiBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRQbGFpblRleHQoY29u
c3QgU3RyaW5nJiB0ZXh0KQogCiBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlKQogewotICAgIGF1dG8g
YmxvYiA9IEJsb2I6OmNyZWF0ZShidWZmZXIuZ2V0KCksIHR5cGUpOwogICAgIEFTU0VSVChmcmFt
ZS5kb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOwog
CisgICAgYXV0byByZXBsYWNlbWVudFVSTCA9IGZyYW1lLmVkaXRvcigpLmNsaWVudFJlcGxhY2Vt
ZW50VVJMRm9yUmVzb3VyY2UoYnVmZmVyLmNvcHlSZWYoKSwgdHlwZSk7CisgICAgaWYgKCFyZXBs
YWNlbWVudFVSTC5pc0VtcHR5KCkpIHsKKyAgICAgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21l
bnRGb3JJbWFnZUFuZFVSTChkb2N1bWVudCwgcmVwbGFjZW1lbnRVUkwpKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKGJ1ZmZlci5n
ZXQoKSwgdHlwZSk7CiAgICAgaWYgKHNob3VsZFJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2ht
ZW50cygpKQogICAgICAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNo
bWVudChkb2N1bWVudCwgV1RGTW92ZShibG9iKSkpOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggZjI0YWQ2YWEwMTMwZmY4YTQ2MDk2NTgwOGEwMGQ4
ZjcxZjliNjBkYy4uMjVlOWViNjljZmE1OGRjNzU4M2RlZDg1YTE1ZmZjNDgzNWNmNTA3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTE3Niw2ICsxNzYsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFJhbmdlKikg
ZmluYWwgeyB9CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFs
IHsgfQogICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShSYW5nZSosIFZl
Y3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQor
ICAgIFN0cmluZyByZXBsYWNlbWVudFVSTEZvclJlc291cmNlKFJlZjxTaGFyZWRCdWZmZXI+JiYs
IGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgcmV0dXJuIHsgfTsgfQogICAgIHZvaWQgcmVxdWVzdENh
bmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpIGZpbmFsIHsgfQog
ICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tp
bmdSZXN1bHQpIGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Vk
aXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCAx
ZjUxYTkyODgzOTEwYWVhMTY3YmRlYWZjZGZjMGI5MzljNGQ2MTI0Li4zNmFkN2JlODY5YzE3Mjg2
Y2M0MzU3OTFjZDg1MjE4NTUwODM1OTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgK
QEAgLTg2LDYgKzg2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxl
Y3Rpb25Ub1Bhc3RlYm9hcmQoUmFuZ2UqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YUZvclJhbmdlKFJhbmdlKiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsK
KyAgICB2aXJ0dWFsIFN0cmluZyByZXBsYWNlbWVudFVSTEZvclJlc291cmNlKFJlZjxTaGFyZWRC
dWZmZXI+JiYgcmVzb3VyY2VEYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVX
aXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxl
RWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKaW5kZXggNzc3NGY3NWQyNzM4YWY5
ZmU0YjFkMWI3OTliMzA0OTEyOGNjYjM0Mi4uNjAxNWU1Zjg3NzM3OTQ5MTQ1YmM3YTFjYWNmMmE5
NzhiODVmMzhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0
b3JDbGllbnQuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9ySW5z
ZXJ0QWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0QWZmaW5pdHkuaD4KICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwpAQCAtNjQsNiArNjUs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Uo
V2ViS2l0OjpXZWJQYWdlJiwgV2ViQ29yZTo6UmFuZ2UqLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBh
c3RlYm9hcmREYXRhKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQo
V2ViS2l0OjpXZWJQYWdlJikgeyB9CiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1Ud29TdGVwRHJv
cChXZWJLaXQ6OldlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50JiwgV2ViQ29yZTo6
UmFuZ2UmLCBib29sKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcg
cmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZShXZWJLaXQ6OldlYlBhZ2UmLCBSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgcmV0dXJuIHsgfTsgfQogfTsK
IAogfSAvLyBuYW1lc3BhY2UgSW5qZWN0ZWRCdW5kbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0lu
RWRpdGluZ0RlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZS5oCmluZGV4IGM4
MjA5YTE4MTY2ZWI4ZmNjYjg0MmIzOTUzNTY0OGQxNjlkYTYwMTEuLjlkMWFlYmYzMmNiNjUzZjc4
OGI2MzQ3YjNjZTBhMWUwMzNhMzllMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0Rl
bGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGUuaApAQCAtNjEsNiArNjEs
NyBAQCBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMi4zKSwgaW9zKDEwLjMpKQogLSAoTlNE
aWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TRGF0YSAqPiAqKV93ZWJQcm9jZXNzUGx1Z0luQnJvd3Nl
ckNvbnRleHRDb250cm9sbGVyOihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXIgKiljb250cm9sbGVyIHBhc3RlYm9hcmREYXRhRm9yUmFuZ2U6KFdLV2ViUHJvY2Vzc1Bs
dWdJblJhbmdlSGFuZGxlICopcmFuZ2U7CiAtICh2b2lkKV93ZWJQcm9jZXNzUGx1Z0luQnJvd3Nl
ckNvbnRleHRDb250cm9sbGVyRGlkV3JpdGVUb1Bhc3RlYm9hcmQ6KFdLV2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7CiAtIChCT09MKV93ZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXIgKiljb250cm9sbGVyIHBlcmZvcm1Ud29TdGVwRHJvcDooV0tX
ZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZSAqKWZyYWdtZW50IGF0RGVzdGluYXRpb246KFdLV2Vi
UHJvY2Vzc1BsdWdJblJhbmdlSGFuZGxlICopZGVzdGluYXRpb24gaXNNb3ZlOihCT09MKWlzTW92
ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMyksIGlvcygxMS4wKSk7CistIChOU1N0cmlu
ZyAqKV93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOihXS1dlYlByb2Nl
c3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKiljb250cm9sbGVyIHJlcGxhY2VtZW50
VVJMRm9yUmVzb3VyY2U6KE5TRGF0YSAqKXJlc291cmNlRGF0YSBtaW1lVHlwZTooTlNTdHJpbmcg
KiltaW1lVHlwZSBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50LmgKaW5kZXggMGI3NTY1MGU5Zjc5ZWIzOWNjYTlmMTllOTFmY2YxOWQzNjYyMjFmYS4u
ZGY5ZTkxNTk3YmQ5YzczMmM5MzBhNmIzMDk1ODcyZWMwODNkZGU0MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZUVk
aXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaApAQCAtNjIsNiArNjIsNyBAQCB0eXBl
ZGVmIGJvb2wgKCpXS0J1bmRsZVBhZ2VTaG91bGRBcHBseVN0eWxlKShXS0J1bmRsZVBhZ2VSZWYg
cGFnZSwgV0tCdW5kbGVDU1NTdAogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRWRpdGluZ05v
dGlmaWNhdGlvbikoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG5vdGlmaWNhdGlv
bk5hbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQ
YWdlV2lsbFdyaXRlVG9QYXN0ZWJvYXJkKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVS
YW5nZUhhbmRsZVJlZiByYW5nZSwgIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiB2
b2lkICgqV0tCdW5kbGVQYWdlR2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSkoV0tCdW5kbGVQYWdl
UmVmIHBhZ2UsIFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYgcmFuZ2UsIFdLQXJyYXlSZWYqIHBhc3Rl
Ym9hcmRUeXBlcywgV0tBcnJheVJlZiogcGFzdGVib2FyZERhdGEsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pOwordHlwZWRlZiBXS1N0cmluZ1JlZiAoKldLQnVuZGxlUGFnZVJlcGxhY2VtZW50VVJM
Rm9yUmVzb3VyY2UpKFdLQnVuZGxlUGFnZVJlZiwgV0tEYXRhUmVmIHJlc291cmNlRGF0YSwgV0tT
dHJpbmdSZWYgbWltZVR5cGUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lk
ICgqV0tCdW5kbGVQYWdlRGlkV3JpdGVUb1Bhc3RlYm9hcmQpKFdLQnVuZGxlUGFnZVJlZiBwYWdl
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgYm9vbCAoKldLQnVuZGxlUGFnZVBl
cmZvcm1Ud29TdGVwRHJvcCkoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlTm9kZUhhbmRs
ZVJlZiBmcmFnbWVudCwgV0tCdW5kbGVSYW5nZUhhbmRsZVJlZiBkZXN0aW5hdGlvbiwgYm9vbCBp
c01vdmUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogCkBAIC0xMTAsNCArMTExLDMwIEBAIHR5
cGVkZWYgc3RydWN0IFdLQnVuZGxlUGFnZUVkaXRvckNsaWVudFYxIHsKICAgICBXS0J1bmRsZVBh
Z2VQZXJmb3JtVHdvU3RlcERyb3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBlcmZvcm1Ud29TdGVwRHJvcDsKIH0gV0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50VjE7CiAKK3R5
cGVkZWYgc3RydWN0IFdLQnVuZGxlUGFnZUVkaXRvckNsaWVudFYyIHsKKyAgICBXS0J1bmRsZVBh
Z2VFZGl0b3JDbGllbnRCYXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJhc2U7CisKKyAgICAvLyBWZXJzaW9uIDAuCisgICAgV0tCdW5kbGVQYWdlU2hvdWxkQmVnaW5F
ZGl0aW5nQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCZWdpbkVk
aXRpbmc7CisgICAgV0tCdW5kbGVQYWdlU2hvdWxkRW5kRWRpdGluZ0NhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRFbmRFZGl0aW5nOworICAgIFdLQnVuZGxlUGFn
ZVNob3VsZEluc2VydE5vZGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2hvdWxkSW5zZXJ0Tm9kZTsKKyAgICBXS0J1bmRsZVBhZ2VTaG91bGRJbnNlcnRUZXh0Q2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEluc2VydFRleHQ7CisgICAg
V0tCdW5kbGVQYWdlU2hvdWxkRGVsZXRlUmFuZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaG91bGREZWxldGVSYW5nZTsKKyAgICBXS0J1bmRsZVBhZ2VTaG91bGRDaGFu
Z2VTZWxlY3RlZFJhbmdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZENoYW5n
ZVNlbGVjdGVkUmFuZ2U7CisgICAgV0tCdW5kbGVQYWdlU2hvdWxkQXBwbHlTdHlsZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRBcHBseVN0eWxlOworICAgIFdL
QnVuZGxlUGFnZUVkaXRpbmdOb3RpZmljYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGlkQmVnaW5FZGl0aW5nOworICAgIFdLQnVuZGxlUGFnZUVkaXRpbmdOb3RpZmlj
YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRW5kRWRpdGluZzsK
KyAgICBXS0J1bmRsZVBhZ2VFZGl0aW5nTm90aWZpY2F0aW9uICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRpZENoYW5nZTsKKyAgICBXS0J1bmRsZVBhZ2VFZGl0aW5nTm90aWZp
Y2F0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZENoYW5nZVNlbGVj
dGlvbjsKKworICAgIC8vIFZlcnNpb24gMS4KKyAgICBXS0J1bmRsZVBhZ2VXaWxsV3JpdGVUb1Bh
c3RlYm9hcmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGxXcml0ZVRvUGFz
dGVib2FyZDsKKyAgICBXS0J1bmRsZVBhZ2VHZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2U7CisgICAg
V0tCdW5kbGVQYWdlRGlkV3JpdGVUb1Bhc3RlYm9hcmQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkaWRXcml0ZVRvUGFzdGVib2FyZDsKKyAgICBXS0J1bmRsZVBhZ2VQZXJmb3Jt
VHdvU3RlcERyb3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1U
d29TdGVwRHJvcDsKKworICAgIC8vIFZlcnNpb24gMi4KKyAgICBXS0J1bmRsZVBhZ2VSZXBsYWNl
bWVudFVSTEZvclJlc291cmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2Vt
ZW50VVJMRm9yUmVzb3VyY2U7Cit9IFdLQnVuZGxlUGFnZUVkaXRvckNsaWVudFYyOworCiAjZW5k
aWYgLy8gV0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJy
b3dzZXJDb250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlci5tbQppbmRleCBmMmQ5NGE5NTYzZTFkNjFlMGIxNzQ0NjY3M2U4Njg2M2UyNjk2ZDczLi4z
Mzk5ZWZlMjMzODljNTQ5MGUzOTRjYjViMzI3YmEwYjBkOTVhYTQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNv
bnRleHRDb250cm9sbGVyLm1tCkBAIC02NzgsNiArNjc4LDE2IEBAIC0gKHZvaWQpX3NldEVkaXRp
bmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGlu
Z0RlbGVnCiAgICAgICAgICAgICByZXR1cm4gW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0
ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRy
b2xsZXIgcGVyZm9ybVR3b1N0ZXBEcm9wOndyYXBwZXIoKm5vZGVIYW5kbGUpIGF0RGVzdGluYXRp
b246d3JhcHBlcigqcmFuZ2VIYW5kbGUpIGlzTW92ZTppc01vdmVdOwogICAgICAgICB9CiAKKyAg
ICAgICAgV1RGOjpTdHJpbmcgcmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZShXZWJLaXQ6OldlYlBh
Z2UmLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc291cmNlRGF0YSwgY29uc3QgV1RG
OjpTdHJpbmcmIG1pbWVUeXBlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fZGVsZWdh
dGVNZXRob2RzLnJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UpCisgICAgICAgICAgICAgICAgcmV0
dXJuIHsgfTsKKworICAgICAgICAgICAgTlNTdHJpbmcgKnR5cGUgPSAoTlNTdHJpbmcgKiltaW1l
VHlwZTsKKyAgICAgICAgICAgIGF1dG8gZGF0YSA9IHJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRh
KCk7CisgICAgICAgICAgICByZXR1cm4gW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5n
ZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xs
ZXIgcmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZTpkYXRhLmdldCgpIG1pbWVUeXBlOnR5cGVdOwor
ICAgICAgICB9CisKICAgICAgICAgV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyICptX2NvbnRyb2xsZXI7CiAgICAgICAgIGNvbnN0IHN0cnVjdCBEZWxlZ2F0ZU1ldGhv
ZHMgewogICAgICAgICAgICAgRGVsZWdhdGVNZXRob2RzKFJldGFpblB0cjxpZCA8V0tXZWJQcm9j
ZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPj4gZGVsZWdhdGUpCkBAIC02ODgsNiArNjk4LDcgQEAg
LSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGlu
Z0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAgICAgICAgICAgICAsIGdldFBhc3RlYm9hcmRE
YXRhRm9yUmFuZ2UoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6cGFzdGVib2FyZERhdGFGb3JSYW5n
ZTopXSkKICAgICAgICAgICAgICAgICAsIGRpZFdyaXRlVG9QYXN0ZWJvYXJkKFtkZWxlZ2F0ZSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRl
eHRDb250cm9sbGVyRGlkV3JpdGVUb1Bhc3RlYm9hcmQ6KV0pCiAgICAgICAgICAgICAgICAgLCBw
ZXJmb3JtVHdvU3RlcERyb3AoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6cGVyZm9ybVR3b1N0ZXBE
cm9wOmF0RGVzdGluYXRpb246aXNNb3ZlOildKQorICAgICAgICAgICAgICAgICwgcmVwbGFjZW1l
bnRVUkxGb3JSZXNvdXJjZShbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihf
d2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpyZXBsYWNlbWVudFVSTEZv
clJlc291cmNlOm1pbWVUeXBlOildKQogICAgICAgICAgICAgewogICAgICAgICAgICAgfQogCkBA
IC02OTgsNiArNzA5LDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQ
cm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAgICAgICAgIGJv
b2wgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZTsKICAgICAgICAgICAgIGJvb2wgZGlkV3JpdGVU
b1Bhc3RlYm9hcmQ7CiAgICAgICAgICAgICBib29sIHBlcmZvcm1Ud29TdGVwRHJvcDsKKyAgICAg
ICAgICAgIGJvb2wgcmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZTsKICAgICAgICAgfSBtX2RlbGVn
YXRlTWV0aG9kczsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VF
ZGl0b3JDbGllbnQuY3BwCmluZGV4IDA0OTNkNWM3MDE0OWZlNTMyODI5MDljMTgyNzhhYWQ1OTAx
MWViNzUuLmJjZjllODQ2OTk1OTc0ZWVhMGExZTAzYzEyZDY0ZDY5M2Y5NGJhMzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC0zMyw2ICsz
Myw4IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oIgogI2luY2x1ZGUg
IldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldL
RGF0YS5oIgorI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIK
ICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudEZyYWdtZW50
Lmg+CkBAIC0xODksNCArMTkxLDE0IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50OjpkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJiBwYWdlKQogICAgICAgICBtX2NsaWVu
dC5kaWRXcml0ZVRvUGFzdGVib2FyZCh0b0FQSSgmcGFnZSksIG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbyk7CiB9CiAKK1N0cmluZyBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OnJlcGxh
Y2VtZW50VVJMRm9yUmVzb3VyY2UoV2ViUGFnZSYgcGFnZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBy
ZXNvdXJjZURhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgaWYgKCFtX2NsaWVu
dC5yZXBsYWNlbWVudFVSTEZvclJlc291cmNlKQorICAgICAgICByZXR1cm4geyB9OworCisgICAg
YXV0byBkYXRhID0gYWRvcHRXSyhXS0RhdGFDcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
bnNpZ25lZCBjaGFyKj4ocmVzb3VyY2VEYXRhLT5kYXRhKCkpLCByZXNvdXJjZURhdGEtPnNpemUo
KSkpOworICAgIGF1dG8gdHlwZSA9IGFkb3B0V0sodG9Db3BpZWRBUEkobWltZVR5cGUpKTsKKyAg
ICByZXR1cm4gdG9XVEZTdHJpbmcobV9jbGllbnQucmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZSh0
b0FQSSgmcGFnZSksIGRhdGEuZ2V0KCksIHR5cGUuZ2V0KCksIG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbykpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAppbmRleCA2ODk5NDFhMThlOGQ5ZTk0Y2E0MjZmOTQy
YjFlYjhhMGIzY2Y4NGJiLi4xZDk3NmI2NzUyYjJmZmQwMGU0YjJkOWZjMGFkZDZlMGZiMzI5Yzcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCkBAIC0z
MSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBBUEkgewogdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50
VHJhaXRzPFdLQnVuZGxlUGFnZUVkaXRvckNsaWVudEJhc2U+IHsKLSAgICB0eXBlZGVmIHN0ZDo6
dHVwbGU8V0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50VjAsIFdLQnVuZGxlUGFnZUVkaXRvckNsaWVu
dFYxPiBWZXJzaW9uczsKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50VjAsIFdLQnVuZGxlUGFnZUVkaXRvckNsaWVudFYxLCBXS0J1bmRsZVBhZ2VFZGl0b3JD
bGllbnRWMj4gVmVyc2lvbnM7CiB9OwogfQogCkBAIC02Nyw2ICs2Nyw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmLCBXZWJDb3JlOjpSYW5n
ZSosIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKICAgICB2b2lkIGRpZFdy
aXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmKSBmaW5hbDsKICAgICBib29sIHBlcmZvcm1Ud29TdGVw
RHJvcChXZWJQYWdlJiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIFdlYkNvcmU6OlJhbmdl
JiBkZXN0aW5hdGlvbiwgYm9vbCBpc01vdmUpIGZpbmFsOworICAgIFN0cmluZyByZXBsYWNlbWVu
dFVSTEZvclJlc291cmNlKFdlYlBhZ2UmLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJl
c291cmNlRGF0YSwgY29uc3QgU3RyaW5nJikgZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggNmM2OWQwOTZjZTI1NWY3OWI0ZTgyOWMx
YTgxMDMwNzBjODA2NmFhNi4uODg0Y2ViNjNjOWZkNDRkNGY3Zjk1YWZiMjNjNzZiN2FlYjBiODBk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI2Myw2ICsyNjMsMTEgQEAgYm9vbCBXZWJF
ZGl0b3JDbGllbnQ6OnBlcmZvcm1Ud29TdGVwRHJvcChEb2N1bWVudEZyYWdtZW50JiBmcmFnbWVu
dCwgUmFuZ2UmIGRlc3QKICAgICByZXR1cm4gbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNs
aWVudCgpLnBlcmZvcm1Ud29TdGVwRHJvcCgqbV9wYWdlLCBmcmFnbWVudCwgZGVzdGluYXRpb24s
IGlzTW92ZSk7CiB9CiAKK1N0cmluZyBXZWJFZGl0b3JDbGllbnQ6OnJlcGxhY2VtZW50VVJMRm9y
UmVzb3VyY2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNvdXJjZURhdGEsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgcmV0dXJuIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVF
ZGl0b3JDbGllbnQoKS5yZXBsYWNlbWVudFVSTEZvclJlc291cmNlKCptX3BhZ2UsIFdURk1vdmUo
cmVzb3VyY2VEYXRhKSwgbWltZVR5cGUpOworfQorCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVn
aXN0ZXJVbmRvU3RlcChVbmRvU3RlcCYgc3RlcCkKIHsKICAgICAvLyBGSVhNRTogQWRkIGFzc2Vy
dGlvbiB0aGF0IHRoZSBjb21tYW5kIGJlaW5nIHJlYXBwbGllZCBpcyB0aGUgc2FtZSBjb21tYW5k
IHRoYXQgaXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCBmZGU3MTBhOTNkMjhjMDU5ZmRlNmZkYWNi
NDEyZWZiZDliNWU5YzY3Li5iZTY2ZmFmMTgxYTljZjBlOGI2NDY5OThlZmE0NGYwMzllYWM2NDkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC03Niw2ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoV2ViQ29yZTo6UmFuZ2UqKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7CiAgICAgdm9p
ZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYkNvcmU6OlJhbmdlKiwgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIFN0cmluZyByZXBsYWNlbWVudFVS
TEZvclJlc291cmNlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzb3VyY2VEYXRhLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKSBmaW5hbDsKICAgICAKICAgICB2b2lkIHJlZ2lzdGVyVW5k
b1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyUmVkb1N0
ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNDUxMTk0
NzZkZmJmMTI0NmVjOTgwMTRjZGRmOTQwZTBmYWY4YjJiNC4uZmEyZWQzMjgyNTc4NDc4YjNjZjVk
MDgxZjcxYzg2NWVmODFkNzAzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTc4LDYgKzc4LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChXZWJDb3Jl
OjpSYW5nZSopIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQo
KSBmaW5hbDsKICAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViQ29y
ZTo6UmFuZ2UqLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgU3Ry
aW5nIHJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiByZXNvdXJjZURhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGZpbmFsOwogCiAgICAgdm9p
ZCBzZXRJbnNlcnRpb25QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQubW0KaW5kZXggZTgwN2EzZThmYTMzYjY4MGU2MzNjMjg1NzEwZTNmYmNkYjY2MWYyNi4u
MDQxYmFjYWQ5ZmJiOWI2ZDcyNTBkNTY5OWZjNjljMjA5NWU3OTQ0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5tbQpAQCAtNDE5LDYgKzQxOSwxMiBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50
UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJDb3JlOjpSYW5nZSosIFZlY3RvcjxTdAogICAgIC8v
IE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KIAorU3RyaW5nIFdlYkVk
aXRvckNsaWVudDo6cmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZShSZWY8U2hhcmVkQnVmZmVyPiYm
LCBjb25zdCBTdHJpbmcmKQoreworICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXRMZWdh
Y3kuCisgICAgcmV0dXJuIHsgfTsKK30KKwogI2lmIChQTEFURk9STShJT1MpICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApCiAKIC8vIEZJWE1FOiBS
ZW1vdmUgYm90aCB0aGlzIHN0dWIgYW5kIHRoZSByZWFsIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlv
biBiZWxvdyBvbmNlIHdlIGRvbid0IG5lZWQgdGhlIHJlYWwgdmVyc2lvbiBvbiBhbnkgc3VwcG9y
dGVkIHBsYXRmb3JtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggNWIwYjVjYjAxM2JlNTlhMzk1
NmYwOGE4NzZhM2Y0MTUwYjc0ODNhMy4uNTZlN2NmMGI0OGM5YTU0MjJmZjBhZGQ2NzQ2OGZlOGRl
YzRkYWMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yNjksNiArMjY5LDEyIEBAIHZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYkNvcmU6
OlJhbmdlKiwgVmVjdG9yPFN0CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAorU3RyaW5nIFdl
YkVkaXRvckNsaWVudDo6cmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZShSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIHsgfTsKK30KKwogYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZERlbGV0ZVJh
bmdlKFJhbmdlKiByYW5nZSkKIHsKICAgICBDT01QdHI8SVdlYkVkaXRpbmdEZWxlZ2F0ZT4gZWQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oCmluZGV4IDYzZWM0ZmNlNDBkOTE5YmI1ZWJiNjZmODJkYjg1Nzg5MzRl
MWZkYzMuLjdhNmVkZGU4MTkzNjEzODU5YTMxZDJmMGQyZWJiMzVmODIyYzVkMmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCkBAIC01NCw2ICs1NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsV3JpdGVT
ZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoV2ViQ29yZTo6UmFuZ2UqKSBmaW5hbDsKICAgICB2b2lkIGRp
ZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7CiAgICAgdm9pZCBnZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYkNvcmU6OlJhbmdlKiwgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFz
dGVib2FyZERhdGEpIGZpbmFsOworICAgIFN0cmluZyByZXBsYWNlbWVudFVSTEZvclJlc291cmNl
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYpIGZpbmFsOwogCiAg
ICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQog
ICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCkgZmluYWw7CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTBmYmZjMmFhNDFiZjBkNjA5
MzhkMGZjNWQzYzg3ODM2NzNjZGVkMC4uYTE3NDYzNzA4Yjk3OGIxMTE3ZmY3MmI5ZmU1ODhlNDcx
ODk2NTFjNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDM0IEBACisyMDE4LTAxLTE0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBpbmplY3RlZCBidW5kbGUgU1BJIHRvIHJlcGxh
Y2Ugc3VicmVzb3VyY2UgVVJMcyB3aGVuIGRyb3BwaW5nIG9yIHBhc3RpbmcgcmljaCBjb250ZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE2MzcK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2NTA4NDcxPgorCisgICAgICAgIFJldmlld2VkIGJ5
IFRpbSBIb3J0b24uCisKKyAgICAgICAgQWRkIDIgbmV3IEFQSSB0ZXN0cyB0byBleGVyY2lzZSBp
bmplY3RlZCBidW5kbGUgU1BJIGZvciBzdXBwbHlpbmcgcmVwbGFjZW1lbnQgVVJMcyB3aGVuIHBh
c3RpbmcgYW4gaW1hZ2UsIGFuZCBhbgorICAgICAgICBhdHRyaWJ1dGVkIHN0cmluZyBjb250YWlu
aW5nIG11bHRpcGxlIE5TVGV4dEF0dGFjaG1lbnRzLiBTZWUgV2ViS2l0IGFuZCBXZWJDb3JlIENo
YW5nZUxvZ3MgZm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9CdW5kbGVFZGl0aW5nRGVsZWdhdGVQbHVnSW4ubW06CisgICAgICAgICgt
W0J1bmRsZUVkaXRpbmdEZWxlZ2F0ZVBsdWdJbiB3ZWJQcm9jZXNzUGx1Z0luOmRpZENyZWF0ZUJy
b3dzZXJDb250ZXh0Q29udHJvbGxlcjpdKToKKyAgICAgICAgKC1bQnVuZGxlRWRpdGluZ0RlbGVn
YXRlUGx1Z0luIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOnJlcGxh
Y2VtZW50VVJMRm9yUmVzb3VyY2U6bWltZVR5cGU6XSk6CisKKyAgICAgICAgSW1wbGVtZW50IHRo
ZSBuZXcgT2JqZWN0aXZlLUMgYnVuZGxlIFNQSSB0byBsb29rIHVwIHRoZSBpbmNvbWluZyBNSU1F
IHR5cGUgaW4gdGhlIGRpY3Rpb25hcnkgc3VwcGxpZWQgdmlhIHRoZQorICAgICAgICAiTUlNRVR5
cGVUb1JlcGxhY2VtZW50VVJMTWFwIiBidW5kbGUgaW5pdGlhbGl6YXRpb24gcGFyYW1ldGVyLCBh
bmQgcmV0dXJuIGl0LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XS0F0dGFjaG1lbnRUZXN0cy5tbToKKyAgICAgICAgKHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNo
bWVudHMpOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHRhZ3NJbkJvZHldKToKKyAgICAgICAg
KC1bVGVzdFdLV2ViVmlldyBleHBlY3RFbGVtZW50VGFnc0luT3JkZXI6XSk6CisgICAgICAgICgt
W1Rlc3RXS1dlYlZpZXcgZXhwZWN0RWxlbWVudFRhZzp0b0NvbWVCZWZvcmU6XSk6CisKKyAgICAg
ICAgQWRkIGEgdGVzdCBoZWxwZXIgdG8gY2hlY2sgdGhhdCB0aGUgZ2l2ZW4gbGlzdCBvZiBlbGVt
ZW50IHRhZ3MgYXBwZWFycyBpbiB0aGUgZG9jdW1lbnQgYm9keS4gQWxzbywgcmVpbXBsZW1lbnQK
KyAgICAgICAgdGhlIGV4aXN0aW5nIC1leHBlY3RFbGVtZW50VGFnOnRvQ29tZUJlZm9yZTogYXMg
YSBzcGVjaWFsIGNhc2Ugb2YgLWV4cGVjdEVsZW1lbnRUYWdzSW5PcmRlcjouCisKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRC
dW5kbGVQYWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2UpOgorCiAyMDE4LTAxLTE2ICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtBdHRhY2htZW50IFN1cHBv
cnRdIFByb3ZpZGUgdGhlIGBzcmNgIG9mIGFuIGF0dGFjaG1lbnQgdG8gdGhlIFVJIGRlbGVnYXRl
IHdoZW4gYW4gYXR0YWNobWVudCBpcyBpbnNlcnRlZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9CdW5kbGVFZGl0aW5nRGVsZWdhdGVQbHVnSW4ubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0J1bmRsZUVkaXRpbmdEZWxl
Z2F0ZVBsdWdJbi5tbQppbmRleCBjNjNjMGE4ZWNmNDQ2MDU3ZDUyZTY0MDUzNmZiMThiZTgyNGNk
YjJhLi4zM2YyYmI4MzI2MGYxMmQ2ZDJiODM5MGU3NDUwZDBmNWJhZjY2MDFjIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0J1bmRsZUVkaXRpbmdEZWxl
Z2F0ZVBsdWdJbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0J1bmRsZUVkaXRpbmdEZWxlZ2F0ZVBsdWdJbi5tbQpAQCAtNDcsNiArNDcsNyBAQCBAaW1wbGVt
ZW50YXRpb24gQnVuZGxlRWRpdGluZ0RlbGVnYXRlUGx1Z0luIHsKICAgICBSZXRhaW5QdHI8aWQg
PEJ1bmRsZUVkaXRpbmdEZWxlZ2F0ZVByb3RvY29sPj4gX3JlbW90ZU9iamVjdDsKICAgICBCT09M
IF9lZGl0aW5nRGVsZWdhdGVTaG91bGRJbnNlcnRUZXh0OwogICAgIEJPT0wgX3Nob3VsZE92ZXJy
aWRlUGVyZm9ybVR3b1N0ZXBEcm9wOworICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk8TlNTdHJp
bmcgKiwgTlNTdHJpbmcgKj4+IF9taW1lVHlwZVRvUmVwbGFjZW1lbnRVUkxNYXA7CiB9CiAKIC0g
KHZvaWQpd2ViUHJvY2Vzc1BsdWdJbjooV0tXZWJQcm9jZXNzUGx1Z0luQ29udHJvbGxlciAqKXBs
dWdJbkNvbnRyb2xsZXIgZGlkQ3JlYXRlQnJvd3NlckNvbnRleHRDb250cm9sbGVyOihXS1dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKilicm93c2VyQ29udGV4dENvbnRy
b2xsZXIKQEAgLTYzLDYgKzY0LDcgQEAgLSAodm9pZCl3ZWJQcm9jZXNzUGx1Z0luOihXS1dlYlBy
b2Nlc3NQbHVnSW5Db250cm9sbGVyICopcGx1Z0luQ29udHJvbGxlciBkaWRDcmUKICAgICAgICAg
X2VkaXRpbmdEZWxlZ2F0ZVNob3VsZEluc2VydFRleHQgPSBZRVM7CiAKICAgICBfc2hvdWxkT3Zl
cnJpZGVQZXJmb3JtVHdvU3RlcERyb3AgPSBbW3BsdWdJbkNvbnRyb2xsZXIucGFyYW1ldGVycyB2
YWx1ZUZvcktleTpAIkJ1bmRsZU92ZXJyaWRlUGVyZm9ybVR3b1N0ZXBEcm9wIl0gYm9vbFZhbHVl
XTsKKyAgICBfbWltZVR5cGVUb1JlcGxhY2VtZW50VVJMTWFwID0gW3BsdWdJbkNvbnRyb2xsZXIu
cGFyYW1ldGVycyB2YWx1ZUZvcktleTpAIk1JTUVUeXBlVG9SZXBsYWNlbWVudFVSTE1hcCJdOwog
CiAgICAgX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlICppbnRlcmZhY2UgPSBbX1dLUmVtb3RlT2Jq
ZWN0SW50ZXJmYWNlIHJlbW90ZU9iamVjdEludGVyZmFjZVdpdGhQcm90b2NvbDpAcHJvdG9jb2wo
QnVuZGxlRWRpdGluZ0RlbGVnYXRlUHJvdG9jb2wpXTsKICAgICBfcmVtb3RlT2JqZWN0ID0gW2Jy
b3dzZXJDb250ZXh0Q29udHJvbGxlci5fcmVtb3RlT2JqZWN0UmVnaXN0cnkgcmVtb3RlT2JqZWN0
UHJveHlXaXRoSW50ZXJmYWNlOmludGVyZmFjZV07CkBAIC05OCw2ICsxMDAsMTIgQEAgLSAoQk9P
TClfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9jZXNz
UGx1Z0luQnJvd3NlckNvbnQKICAgICByZXR1cm4gX3Nob3VsZE92ZXJyaWRlUGVyZm9ybVR3b1N0
ZXBEcm9wOwogfQogCistIChOU1N0cmluZyAqKV93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRl
eHRDb250cm9sbGVyOihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIg
Kiljb250cm9sbGVyIHJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2U6KE5TRGF0YSAqKXJlc291cmNl
RGF0YSBtaW1lVHlwZTooTlNTdHJpbmcgKiltaW1lVHlwZQoreworICAgIGFzc2VydCghIXJlc291
cmNlRGF0YSk7CisgICAgcmV0dXJuIFtfbWltZVR5cGVUb1JlcGxhY2VtZW50VVJMTWFwIG9iamVj
dEZvcktleTptaW1lVHlwZV07Cit9CisKIEBlbmQKIAogI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVE
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0
YWNobWVudFRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
S0F0dGFjaG1lbnRUZXN0cy5tbQppbmRleCBiODdhNjBiNWFlZDA5YTE5M2M4ZDllOGE2NmFiNjAx
NmFlNzMxODEwLi5iOWEzMmM5YTZhZWRlODdmZTdhMTY3ZDQ1Y2M4ZjdiNDk4MTVmNjM0IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVu
dFRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tB
dHRhY2htZW50VGVzdHMubW0KQEAgLTI4LDYgKzI4LDcgQEAKICNpbXBvcnQgIkRhdGFJbnRlcmFj
dGlvblNpbXVsYXRvci5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQg
IlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25FeHRyYXMu
aCIKICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KQEAg
LTE0NCwxOCArMTQ1LDIzIEBAIHByaXZhdGU6CiBAaW50ZXJmYWNlIFRlc3RXS1dlYlZpZXcgKEF0
dGFjaG1lbnRUZXN0aW5nKQogQGVuZAogCi1zdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+
IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoQ0dTaXplIHdlYlZpZXdTaXplKQorc3RhdGlj
IFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKENH
U2l6ZSB3ZWJWaWV3U2l6ZSwgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbikK
IHsKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtjb25maWd1cmF0aW9uIF9zZXRBdHRhY2htZW50RWxl
bWVudEVuYWJsZWQ6WUVTXTsKKyAgICBjb25maWd1cmF0aW9uLl9hdHRhY2htZW50RWxlbWVudEVu
YWJsZWQgPSBZRVM7CiAgICAgV0tQcmVmZXJlbmNlc1NldEN1c3RvbVBhc3RlYm9hcmREYXRhRW5h
YmxlZCgoV0tQcmVmZXJlbmNlc1JlZilbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10sIFlFUyk7
CiAKLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIHdlYlZpZXdTaXplLndpZHRoLCB3ZWJWaWV3U2l6
ZS5oZWlnaHQpIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdE1ha2UoMCwgMCwgd2ViVmlld1NpemUud2lkdGgsIHdlYlZpZXdTaXplLmhlaWdodCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxv
YWRIVE1MU3RyaW5nOkAiPG1ldGEgbmFtZT0ndmlld3BvcnQnIGNvbnRlbnQ9J3dpZHRoPWRldmlj
ZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xJz48c2NyaXB0PmZvY3VzID0gKCkgPT4gZG9jdW1lbnQu
Ym9keS5mb2N1cygpPC9zY3JpcHQ+PGJvZHkgb25sb2FkPWZvY3VzKCkgY29udGVudGVkaXRhYmxl
PjwvYm9keT4iXTsKIAogICAgIHJldHVybiB3ZWJWaWV3OwogfQogCitzdGF0aWMgUmV0YWluUHRy
PFRlc3RXS1dlYlZpZXc+IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoQ0dTaXplIHdlYlZp
ZXdTaXplKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgcmV0dXJuIHdlYlZpZXdGb3JUZXN0aW5n
QXR0YWNobWVudHMod2ViVmlld1NpemUsIGNvbmZpZ3VyYXRpb24uZ2V0KCkpOworfQorCiBzdGF0
aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMo
KQogewogICAgIHJldHVybiB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKENHU2l6ZU1ha2Uo
NTAwLCA1MDApKTsKQEAgLTIwNywyMCArMjEzLDI5IEBAIHN0YXRpYyBfV0tBdHRhY2htZW50RGlz
cGxheU9wdGlvbnMgKmRpc3BsYXlPcHRpb25zV2l0aE1vZGUoX1dLQXR0YWNobWVudERpc3BsYXlN
CiAKIEBpbXBsZW1lbnRhdGlvbiBUZXN0V0tXZWJWaWV3IChBdHRhY2htZW50VGVzdGluZykKIAot
LSAodm9pZClleHBlY3RFbGVtZW50VGFnOihOU1N0cmluZyAqKXRhZ05hbWUgdG9Db21lQmVmb3Jl
OihOU1N0cmluZyAqKW90aGVyVGFnTmFtZQorLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKXRhZ3NJ
bkJvZHkKK3sKKyAgICByZXR1cm4gW3NlbGYgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
IkFycmF5LmZyb20oZG9jdW1lbnQuYm9keS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnKicpKS5tYXAo
ZSA9PiBlLnRhZ05hbWUpIl07Cit9CisKKy0gKHZvaWQpZXhwZWN0RWxlbWVudFRhZ3NJbk9yZGVy
OihOU0FycmF5PE5TU3RyaW5nICo+ICopdGFnTmFtZXMKIHsKLSAgICBOU0FycmF5ICp0YWdzSW5C
b2R5ID0gW3NlbGYgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIkFycmF5LmZyb20oZG9j
dW1lbnQuYm9keS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnKicpKS5tYXAoZSA9PiBlLnRhZ05hbWUp
Il07Ci0gICAgQk9PTCBzdWNjZXNzID0gW3RhZ3NJbkJvZHkgY29udGFpbnNPYmplY3Q6dGFnTmFt
ZV0gJiYgW3RhZ3NJbkJvZHkgY29udGFpbnNPYmplY3Q6b3RoZXJUYWdOYW1lXTsKLSAgICBpZiAo
c3VjY2VzcykgewotICAgICAgICBOU1VJbnRlZ2VyIGluZGV4ID0gW3RhZ3NJbkJvZHkgaW5kZXhP
Zk9iamVjdDp0YWdOYW1lXTsKLSAgICAgICAgTlNVSW50ZWdlciBvdGhlckluZGV4ID0gW3RhZ3NJ
bkJvZHkgaW5kZXhPZk9iamVjdFdpdGhPcHRpb25zOk5TRW51bWVyYXRpb25SZXZlcnNlIHBhc3Np
bmdUZXN0OlsmXSAoTlNTdHJpbmcgKnRhZywgTlNVSW50ZWdlciwgQk9PTCAqKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gW3RhZyBpc0VxdWFsVG9TdHJpbmc6b3RoZXJUYWdOYW1lXTsKLSAgICAgICAg
fV07Ci0gICAgICAgIHN1Y2Nlc3MgPSBpbmRleCA8IG90aGVySW5kZXg7CisgICAgYXV0byByZW1h
aW5pbmdUYWdzID0gYWRvcHROUyhbdGFnTmFtZXMgbXV0YWJsZUNvcHldKTsKKyAgICBOU0FycmF5
PE5TU3RyaW5nICo+ICp0YWdzSW5Cb2R5ID0gc2VsZi50YWdzSW5Cb2R5OworICAgIGZvciAoTlNT
dHJpbmcgKnRhZyBpbiB0YWdzSW5Cb2R5LnJldmVyc2VPYmplY3RFbnVtZXJhdG9yKSB7CisgICAg
ICAgIGlmIChbdGFnIGlzRXF1YWxUb1N0cmluZzpbcmVtYWluaW5nVGFncyBsYXN0T2JqZWN0XV0p
CisgICAgICAgICAgICBbcmVtYWluaW5nVGFncyByZW1vdmVMYXN0T2JqZWN0XTsKKyAgICAgICAg
aWYgKCFbcmVtYWluaW5nVGFncyBjb3VudF0pCisgICAgICAgICAgICBicmVhazsKICAgICB9Ci0g
ICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7Ci0gICAgaWYgKCFzdWNjZXNzKQotICAgICAgICBOU0xv
ZyhAIkV4cGVjdGVkICVAIHRvIGNvbWUgYmVmb3JlICVAIGluIHRhZ3M6ICVAIiwgdGFnTmFtZSwg
b3RoZXJUYWdOYW1lLCB0YWdzSW5Cb2R5KTsKKyAgICBFWFBFQ1RfRVEoW3JlbWFpbmluZ1RhZ3Mg
Y291bnRdLCAwVSk7CisgICAgaWYgKFtyZW1haW5pbmdUYWdzIGNvdW50XSkKKyAgICAgICAgTlNM
b2coQCJFeHBlY3RlZCB0byBmaW5kIG9yZGVyZWQgdGFnczogJUAgaW46ICVAIiwgdGFnTmFtZXMs
IHRhZ3NJbkJvZHkpOworfQorCistICh2b2lkKWV4cGVjdEVsZW1lbnRUYWc6KE5TU3RyaW5nICop
dGFnTmFtZSB0b0NvbWVCZWZvcmU6KE5TU3RyaW5nICopb3RoZXJUYWdOYW1lCit7CisgICAgW3Nl
bGYgZXhwZWN0RWxlbWVudFRhZ3NJbk9yZGVyOkBbdGFnTmFtZSwgb3RoZXJUYWdOYW1lXV07CiB9
CiAKIC0gKEJPT0wpX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6KE5TU3RyaW5nICop
Y29tbWFuZCBhcmd1bWVudDooTlNTdHJpbmcgKilhcmd1bWVudApAQCAtMTA5Niw2ICsxMTExLDM4
IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHMsIEluc2VydER1cGxpY2F0ZUF0dGFjaG1lbnRBbmRV
cGRhdGVEYXRhKQogICAgIFtwYXN0ZWRBdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERhdGFUb0Jl
Om9yaWdpbmFsRGF0YS5nZXQoKV07CiB9CiAKK1RFU1QoV0tBdHRhY2htZW50VGVzdHMsIEluamVj
dGVkQnVuZGxlUmVwbGFjZVVSTHNXaGVuUGFzdGluZ0F0dHJpYnV0ZWRTdHJpbmcpCit7CisgICAg
cGxhdGZvcm1Db3B5UmljaFRleHRXaXRoTXVsdGlwbGVBdHRhY2htZW50cygpOworCisgICAgYXV0
byBjb25maWd1cmF0aW9uID0gcmV0YWluUHRyKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0
X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIkJ1bmRsZUVkaXRpbmdEZWxl
Z2F0ZVBsdWdJbiJdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJvY2Vzc1Bvb2xdIF9zZXRPYmpl
Y3Q6QHsgQCJpbWFnZS9wbmciIDogQCJjaWQ6Zm9vLWJhciIgfSBmb3JCdW5kbGVQYXJhbWV0ZXI6
QCJNSU1FVHlwZVRvUmVwbGFjZW1lbnRVUkxNYXAiXTsKKyAgICBhdXRvIHdlYlZpZXcgPSB3ZWJW
aWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKENHU2l6ZU1ha2UoNTAwLCA1MDApLCBjb25maWd1cmF0
aW9uLmdldCgpKTsKKyAgICB7CisgICAgICAgIE9ic2VydmVBdHRhY2htZW50VXBkYXRlc0ZvclNj
b3BlIG9ic2VydmVyKHdlYlZpZXcuZ2V0KCkpOworICAgICAgICBbd2ViVmlldyBfc3luY2hyb25v
dXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpAIlBhc3RlIiBhcmd1bWVudDpuaWxdOworICAgICAgICBF
WFBFQ1RfRVEoMlUsIG9ic2VydmVyLm9ic2VydmVyKCkuaW5zZXJ0ZWQuY291bnQpOworICAgIH0K
KyAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50VGFnc0luT3JkZXI6QFsgQCJJTUciLCBAIkFUVEFD
SE1FTlQiLCBAIkFUVEFDSE1FTlQiIF1dOworICAgIEVYUEVDVF9XS19TVFJFUSgiY2lkOmZvby1i
YXIiLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAic3JjIiBmb3JRdWVyeVNlbGVjdG9yOkAi
aW1nIl0pOworfQorCitURVNUKFdLQXR0YWNobWVudFRlc3RzLCBJbmplY3RlZEJ1bmRsZVJlcGxh
Y2VVUkxXaGVuUGFzdGluZ0ltYWdlKQoreworICAgIHBsYXRmb3JtQ29weVBORygpOworCisgICAg
TlNTdHJpbmcgKnJlcGxhY2VtZW50VVJMID0gQCJjaWQ6Zm9vLWJhciI7CisgICAgYXV0byBjb25m
aWd1cmF0aW9uID0gcmV0YWluUHRyKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZp
Z3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIkJ1bmRsZUVkaXRpbmdEZWxlZ2F0ZVBs
dWdJbiJdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJvY2Vzc1Bvb2xdIF9zZXRPYmplY3Q6QHsg
QCJpbWFnZS90aWZmIiA6IHJlcGxhY2VtZW50VVJMLCBAImltYWdlL3BuZyIgOiByZXBsYWNlbWVu
dFVSTCB9IGZvckJ1bmRsZVBhcmFtZXRlcjpAIk1JTUVUeXBlVG9SZXBsYWNlbWVudFVSTE1hcCJd
OworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoQ0dTaXpl
TWFrZSg1MDAsIDUwMCksIGNvbmZpZ3VyYXRpb24uZ2V0KCkpOworICAgIHsKKyAgICAgICAgT2Jz
ZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7Cisg
ICAgICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5kOkAiUGFzdGUi
IGFyZ3VtZW50Om5pbF07CisgICAgICAgIEVYUEVDVF9FUSgwVSwgb2JzZXJ2ZXIub2JzZXJ2ZXIo
KS5pbnNlcnRlZC5jb3VudCk7CisgICAgfQorICAgIEVYUEVDVF9XS19TVFJFUSgiY2lkOmZvby1i
YXIiLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAic3JjIiBmb3JRdWVyeVNlbGVjdG9yOkAi
aW1nIl0pOworfQorCiAjcHJhZ21hIG1hcmsgLSBQbGF0Zm9ybS1zcGVjaWZpYyB0ZXN0cwogCiAj
aWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCmluZGV4IGRkNjQ4NDE2NmUz
YWVjM2YyZGIwYmY4ZThiNjFlM2NhNjZjMDc3MDEuLjk5MzNkODE3YzhjMDRlMjFiZWM0NDdjNTdh
MzkxMzU5OGQ0Y2RiOGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKQEAgLTM1OCw4ICszNTgs
OCBAQCBJbmplY3RlZEJ1bmRsZVBhZ2U6OkluamVjdGVkQnVuZGxlUGFnZShXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSkKICAgICB9OwogICAgIFdLQnVuZGxlUGFnZVNldFVJQ2xpZW50KG1fcGFnZSwgJnVp
Q2xpZW50LmJhc2UpOwogCi0gICAgV0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50VjEgZWRpdG9yQ2xp
ZW50ID0gewotICAgICAgICB7IDEsIHRoaXMgfSwKKyAgICBXS0J1bmRsZVBhZ2VFZGl0b3JDbGll
bnRWMiBlZGl0b3JDbGllbnQgPSB7CisgICAgICAgIHsgMiwgdGhpcyB9LAogICAgICAgICBzaG91
bGRCZWdpbkVkaXRpbmcsCiAgICAgICAgIHNob3VsZEVuZEVkaXRpbmcsCiAgICAgICAgIHNob3Vs
ZEluc2VydE5vZGUsCkBAIC0zNzUsNiArMzc1LDcgQEAgSW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmpl
Y3RlZEJ1bmRsZVBhZ2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpCiAgICAgICAgIDAsIC8qIGdldFBh
c3RlYm9hcmREYXRhRm9yUmFuZ2UgKi8KICAgICAgICAgMCwgLyogZGlkV3JpdGVUb1Bhc3RlYm9h
cmQgKi8KICAgICAgICAgMCwgLyogcGVyZm9ybVR3b1N0ZXBEcm9wICovCisgICAgICAgIDAsIC8q
IHJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UgKi8KICAgICB9OwogICAgIFdLQnVuZGxlUGFnZVNl
dEVkaXRvckNsaWVudChtX3BhZ2UsICZlZGl0b3JDbGllbnQuYmFzZSk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>