<?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>221914</bug_id>
          
          <creation_ts>2021-02-15 12:16:13 -0800</creation_ts>
          <short_desc>Reduce explicit usage of [objC release] in WebKit even more</short_desc>
          <delta_ts>2021-02-16 11:27:21 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=221780</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=221932</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>221932</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bburg</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1729288</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-15 12:16:13 -0800</bug_when>
    <thetext>Reduce explicit usage of [objC release] in WebKit even more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729399</commentid>
    <comment_count>1</comment_count>
      <attachid>420379</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-15 14:50:10 -0800</bug_when>
    <thetext>Created attachment 420379
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729400</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-02-15 14:50:58 -0800</bug_when>
    <thetext>This patch modifies the inspector protocol generator. Please ensure that you have rebaselined any generator test results (i.e., by running `Tools/Scripts/run-inspector-generator-tests --reset-results`)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729714</commentid>
    <comment_count>3</comment_count>
      <attachid>420379</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-02-16 09:31:40 -0800</bug_when>
    <thetext>Comment on attachment 420379
Patch

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

&gt; Source/WebKitLegacy/mac/History/WebHistory.mm:664
&gt; +    _sharedHistory = retainPtr(history).leakRef();

I think it would be nicer to change the type of _sharedHistory to a function-scoped NeverDestroyed&lt;RetainPtr&gt;

&gt; Source/WebKitLegacy/mac/Plugins/WebPluginDatabase.mm:195
&gt; +    auto oldPaths = adoptNS(additionalWebPlugInPaths);

Ditto.  additionalWebPlugInPaths should be a RetainPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729718</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-16 09:34:16 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #3)
&gt; Comment on attachment 420379 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=420379&amp;action=review
&gt; 
&gt; &gt; Source/WebKitLegacy/mac/History/WebHistory.mm:664
&gt; &gt; +    _sharedHistory = retainPtr(history).leakRef();
&gt; 
&gt; I think it would be nicer to change the type of _sharedHistory to a
&gt; function-scoped NeverDestroyed&lt;RetainPtr&gt;

Same comment as below. _sharedHistory is a global static.

&gt; 
&gt; &gt; Source/WebKitLegacy/mac/Plugins/WebPluginDatabase.mm:195
&gt; &gt; +    auto oldPaths = adoptNS(additionalWebPlugInPaths);
&gt; 
&gt; Ditto.  additionalWebPlugInPaths should be a RetainPtr.

additionalWebPlugInPaths is a global static. If I use a RetainPtr&lt;&gt; then the compiler complains about having an exit-time destructor. We usually use NeverDestroyed&lt;&gt; but it does not seem to fit the bill here since we want to update the pointer and release the previous value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729721</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-16 09:36:06 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #4)
&gt; additionalWebPlugInPaths is a global static. If I use a RetainPtr&lt;&gt; then the
&gt; compiler complains about having an exit-time destructor. We usually use
&gt; NeverDestroyed&lt;&gt; but it does not seem to fit the bill here since we want to
&gt; update the pointer and release the previous value.

NeverDestroyed&lt;RetainPtr&lt;&gt;&gt; should work fine for that. Despite its name, assigning something to such a variable would update the pointer and release the previous value. That’s *assigning*, not *destroying*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729726</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-16 09:39:24 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; (In reply to Chris Dumez from comment #4)
&gt; &gt; additionalWebPlugInPaths is a global static. If I use a RetainPtr&lt;&gt; then the
&gt; &gt; compiler complains about having an exit-time destructor. We usually use
&gt; &gt; NeverDestroyed&lt;&gt; but it does not seem to fit the bill here since we want to
&gt; &gt; update the pointer and release the previous value.
&gt; 
&gt; NeverDestroyed&lt;RetainPtr&lt;&gt;&gt; should work fine for that. Despite its name,
&gt; assigning something to such a variable would update the pointer and release
&gt; the previous value. That’s *assigning*, not *destroying*.

Hmm. I did not see an operator=() in NeverDestroyed&lt;&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729734</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-16 09:47:41 -0800</bug_when>
    <thetext>You have to write .get() on the left side of the &quot;=&quot; operator. Adding operator= to NeverDestroyed would eliminate the need to write .get().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729746</commentid>
    <comment_count>8</comment_count>
      <attachid>420484</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-16 10:00:34 -0800</bug_when>
    <thetext>Created attachment 420484
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729758</commentid>
    <comment_count>9</comment_count>
      <attachid>420487</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-16 10:06:57 -0800</bug_when>
    <thetext>Created attachment 420487
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729825</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-16 11:26:55 -0800</bug_when>
    <thetext>Committed r272919: &lt;https://commits.webkit.org/r272919&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 420487.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729826</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-16 11:27:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/74399599&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420379</attachid>
            <date>2021-02-15 14:50:10 -0800</date>
            <delta_ts>2021-02-16 10:00:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221914-20210215145010.patch</filename>
            <type>text/plain</type>
            <size>120600</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyODcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YjQ0NjQzOTYwMGVkOWJiYTdhNzk5M2M1M2JiZWM5NmMyM2JkNDYzLi41MWE0NDIyOWVlMWRmNDkw
MDA1MDVkNDVjOWRiMzAxZWIyNjdmYmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAyMS0wMi0xNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyByZWxlYXNlXSBpbiBXZWJL
aXQgZXZlbiBtb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjE5MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIEFQSS9KU0NvbnRleHQubW06CisgICAgICAgICgtW0pTQ29udGV4dCBpbml0V2l0aFZp
cnR1YWxNYWNoaW5lOl0pOgorICAgICAgICAoLVtKU0NvbnRleHQgZGVhbGxvY10pOgorICAgICAg
ICAoLVtKU0NvbnRleHQgdmlydHVhbE1hY2hpbmVdKToKKyAgICAgICAgKC1bSlNDb250ZXh0IGlu
aXRXaXRoR2xvYmFsQ29udGV4dFJlZjpdKToKKyAgICAgICAgKiBBUEkvSlNNYW5hZ2VkVmFsdWUu
bW06CisgICAgICAgICgtW0pTTWFuYWdlZFZhbHVlIGluaXRXaXRoVmFsdWU6XSk6CisgICAgICAg
ICgtW0pTTWFuYWdlZFZhbHVlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFsdWUg
ZGlkQWRkT3duZXI6XSk6CisgICAgICAgICgtW0pTTWFuYWdlZFZhbHVlIGRpZFJlbW92ZU93bmVy
Ol0pOgorICAgICAgICAqIEFQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tOgorICAgICAgICAoLVtKU1Zp
cnR1YWxNYWNoaW5lIGluaXRXaXRoQ29udGV4dEdyb3VwUmVmOl0pOgorICAgICAgICAoLVtKU1Zp
cnR1YWxNYWNoaW5lIGRlYWxsb2NdKToKKyAgICAgICAgKC1bSlNWaXJ0dWFsTWFjaGluZSBjb250
ZXh0Rm9yR2xvYmFsQ29udGV4dFJlZjpdKToKKyAgICAgICAgKC1bSlNWaXJ0dWFsTWFjaGluZSBh
ZGRDb250ZXh0OmZvckdsb2JhbENvbnRleHRSZWY6XSk6CisgICAgICAgICgtW0pTVmlydHVhbE1h
Y2hpbmUgZXh0ZXJuYWxPYmplY3RHcmFwaF0pOgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5l
IGV4dGVybmFsUmVtZW1iZXJlZFNldF0pOgorICAgICAgICAqIEFQSS9KU1dyYXBwZXJNYXAubW06
CisgICAgICAgIChjcmVhdGVSZW5hbWVNYXApOgorICAgICAgICAoY29weU1ldGhvZHNUb09iamVj
dCk6CisgICAgICAgICgtW0pTV3JhcHBlck1hcCBpbml0V2l0aEdsb2JhbENvbnRleHRSZWY6XSk6
CisgICAgICAgICgtW0pTV3JhcHBlck1hcCBjbGFzc0luZm9Gb3JDbGFzczpdKToKKyAgICAgICAg
KC1bSlNXcmFwcGVyTWFwIG9iamNXcmFwcGVyRm9ySlNWYWx1ZVJlZjppbkNvbnRleHQ6XSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2NvbmZpZ3Vy
YXRpb25faW1wbGVtZW50YXRpb24ucHk6CisgICAgICAgIChPYmpDQ29uZmlndXJhdGlvbkltcGxl
bWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0ZV9jb25maWd1cmF0aW9uX2ltcGxlbWVudGF0aW9u
X2Zvcl9kb21haW5zKToKKyAgICAgICAgKE9iakNDb25maWd1cmF0aW9uSW1wbGVtZW50YXRpb25H
ZW5lcmF0b3IuX2dlbmVyYXRlX2l2YXJzKToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL29iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weToKKwogMjAyMS0wMi0xNSAgQ29tbWl0
IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cmV2ZXJ0aW5nIHIyNzI4MzEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTQ3MzU4ZmE4ZmE4OTgxYzhjMjEyMzhl
OWUxMWI2ZTMzZTJlZjU1Ni4uMTVmN2EzMjU2OWJlYTViMDRkMzU0MGY5ZmI0ODFjNmQyNGIwODQ2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTAyLTE1ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtv
YmpDIHJlbGVhc2VdIGluIFdlYktpdCBldmVuIG1vcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTkxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbToK
KyAgICAgICAgKE9iamNJbnN0YW5jZTo6c2V0R2xvYmFsRXhjZXB0aW9uKToKKyAgICAgICAgKE9i
amNJbnN0YW5jZTo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKToKKyAgICAgICAgKiBi
cmlkZ2UvdGVzdGJpbmRpbmdzLm1tOgorICAgICAgICAoLVtNeUZpcnN0SW50ZXJmYWNlIGluaXRd
KToKKyAgICAgICAgKC1bTXlGaXJzdEludGVyZmFjZSBnZXRNeVNlY29uZEludGVyZmFjZV0pOgor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV0FLVmlldy5tbToKKyAgICAgICAgKHNldEdsb2Jh
bEZvY3VzVmlldyk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5kb3cubW06Cisg
ICAgICAgICgtW1dBS1dpbmRvdyBzZW5kRXZlbnRTeW5jaHJvbm91c2x5Ol0pOgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbToKKyAgICAgICAgKE1haW5UaHJlYWRB
ZG9wdEFuZFJlbGVhc2UpOgorICAgICAgICAoSGFuZGxlV2ViVGhyZWFkUmVsZWFzZVNvdXJjZSk6
CisKIDIwMjEtMDItMTUgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAg
IFByZXBhcmUgZm9yIGFkZGluZyByZWxhdGl2ZSBjb2xvciBzdXBwb3J0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKaW5kZXggNzdkYzFmODk5ZWM2MDgyYjhjOGFkNDJkNDlhNjE1OTk3ODQ4MzZm
MS4uZTYyMWIxY2JiNzVhNjVkNjUzYzU2YmJhZDExMGE3NDNjZmY0ZmEwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDIxLTAyLTE1ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9m
IFtvYmpDIHJlbGVhc2VdIGluIFdlYktpdCBldmVuIG1vcmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTkxNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5Lm1tOgorICAg
ICAgICAoK1tXZWJIaXN0b3J5IHNldE9wdGlvbmFsU2hhcmVkSGlzdG9yeTpdKToKKyAgICAgICAg
KiBQbHVnaW5zL1dlYlBsdWdpbkRhdGFiYXNlLm1tOgorICAgICAgICAoK1tXZWJQbHVnaW5EYXRh
YmFzZSBzZXRBZGRpdGlvbmFsV2ViUGx1Z0luUGF0aHM6XSk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjplbnRl
ckZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVH
bG9iYWxIaXN0b3J5KToKKyAgICAgICAgKE5ldHNjYXBlUGx1Z2luV2lkZ2V0OjpnZXRGb3JtVmFs
dWUpOgorICAgICAgICAqIFdlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5tbToKKyAg
ICAgICAgKC1bV2ViTm9kZUhpZ2hsaWdodFZpZXcgX2F0dGFjaDpudW1MYXllcnM6XSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJGcmFtZVZpZXcubW06CisgICAgICAgICgtW1dlYkZyYW1lVmlldyBf
bWFrZURvY3VtZW50Vmlld0ZvckRhdGFTb3VyY2U6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJW
aWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFt
ZU5hbWU6Z3JvdXBOYW1lOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGluaXRTaW1wbGVIVE1MRG9j
dW1lbnRXaXRoU3R5bGU6ZnJhbWU6cHJlZmVyZW5jZXM6Z3JvdXBOYW1lOl0pOgorICAgICAgICAo
LVtXZWJWaWV3IF9jbG9zZVBsdWdpbkRhdGFiYXNlc10pOgorICAgICAgICAoLVtXZWJWaWV3IF9j
bG9zZV0pOgorICAgICAgICAoLVtXZWJWaWV3IGluc3BlY3Rvcl0pOgorICAgICAgICAoLVtXZWJW
aWV3IHNldFNob3dpbmdJbnNwZWN0b3JJbmRpY2F0aW9uOl0pOgorICAgICAgICAoLVtXZWJWaWV3
IF9zZXRGb3JtRGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2Zvcm1EZWxlZ2F0ZUZv
cndhcmRlcl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9VSUtpdERlbGVnYXRlRm9yd2FyZGVyXSk6
CisgICAgICAgICgtW1dlYlZpZXcgX3BvbGljeURlbGVnYXRlRm9yd2FyZGVyXSk6CisgICAgICAg
ICgtW1dlYlZpZXcgX1VJRGVsZWdhdGVGb3J3YXJkZXJdKToKKyAgICAgICAgKC1bV2ViVmlldyBf
ZWRpdGluZ0RlbGVnYXRlRm9yd2FyZGVyXSk6CisgICAgICAgICgtW1dlYlZpZXcgX3NldFVJS2l0
RGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgY2FyZXRDaGFuZ2VMaXN0ZW5lcnNdKToK
KyAgICAgICAgKC1bV2ViVmlldyBhZGRDYXJldENoYW5nZUxpc3RlbmVyOl0pOgorICAgICAgICAo
LVtXZWJWaWV3IF9zZXRBZGRpdGlvbmFsV2ViUGx1Z0luUGF0aHM6XSk6CisgICAgICAgICgtW1dl
YlZpZXcgc2V0QmFja2dyb3VuZENvbG9yOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGJhY2tncm91
bmRDb2xvcl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9maXhlZFBvc2l0aW9uQ29udGVudF0pOgor
ICAgICAgICAoLVtXZWJWaWV3IHNldFVJRGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dlYlZpZXcg
X3Jlc291cmNlTG9hZERlbGVnYXRlRm9yd2FyZGVyXSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0
UmVzb3VyY2VMb2FkRGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0UG9saWN5RGVs
ZWdhdGU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2ZyYW1lTG9hZERlbGVnYXRlRm9yd2FyZGVy
XSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0RnJhbWVMb2FkRGVsZWdhdGU6XSk6CisgICAgICAg
ICgtW1dlYlZpZXcgc2V0QXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50Ol0pOgorICAgICAgICAo
LVtXZWJWaWV3IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudF0pOgorICAgICAgICAoLVtXZWJW
aWV3IHNldE1lZGlhU3R5bGU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgbWVkaWFTdHlsZV0pOgor
ICAgICAgICAoLVtXZWJWaWV3IF91c2VyQWdlbnRTdHJpbmddKToKKyAgICAgICAgKC1bV2ViVmll
dyBzZXRIb3N0V2luZG93Ol0pOgorICAgICAgICAoLVtXZWJWaWV3IGhvc3RXaW5kb3ddKToKKyAg
ICAgICAgKC1bV2ViVmlldyBzZXRDdXJyZW50Tm9kZUhpZ2hsaWdodDpdKToKKyAgICAgICAgKC1b
V2ViVmlldyBjdXJyZW50Tm9kZUhpZ2hsaWdodF0pOgorICAgICAgICAoLVtXZWJWaWV3IF9hbGxv
d3NMaW5rUHJldmlld10pOgorICAgICAgICAoLVtXZWJWaWV3IF9zZXRBbGxvd3NMaW5rUHJldmll
dzpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRFZGl0aW5nRGVsZWdhdGU6XSk6CisgICAgICAg
ICgtW1dlYlZpZXcgX2ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXJdKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYlZpZXdEYXRhLmg6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3RGF0YS5tbToKKyAg
ICAgICAgKC1bV2ViVmlld1ByaXZhdGUgZGVhbGxvY10pOgorCiAyMDIxLTAyLTEyICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdl
IG9mIFtvYmpDIHJlbGVhc2VdIGluIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NvbnRleHQubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29u
dGV4dC5tbQppbmRleCBmZDI1YzA4ZDNjZTA1ZmFhMTUzZTczZjBmMDU2OGE4OTg0ZWE0NjY3Li43
NGIyMzQ0OWU2OWE5YzM5ZTE4NzIyN2RjOGM2OTdhZmI0OTI2MGJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ29udGV4dC5tbQpAQCAtNDEsMTMgKzQxLDEzIEBACiAjaW1wb3J0ICJKYXZh
U2NyaXB0Q29yZS5oIgogI2ltcG9ydCAiT2JqY1J1bnRpbWVFeHRyYXMuaCIKICNpbXBvcnQgIlN0
cm9uZ0lubGluZXMuaCIKLQorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3Rm
L1dlYWtPYmpDUHRyLmg+CiAKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogCiBAaW1wbGVtZW50
YXRpb24gSlNDb250ZXh0IHsKLSAgICBKU1ZpcnR1YWxNYWNoaW5lICptX3ZpcnR1YWxNYWNoaW5l
OworICAgIFJldGFpblB0cjxKU1ZpcnR1YWxNYWNoaW5lPiBtX3ZpcnR1YWxNYWNoaW5lOwogICAg
IEpTR2xvYmFsQ29udGV4dFJlZiBtX2NvbnRleHQ7CiAgICAgSlNDOjpTdHJvbmc8SlNDOjpKU09i
amVjdD4gbV9leGNlcHRpb247CiAgICAgV2Vha09iakNQdHI8aWQgPEpTTW9kdWxlTG9hZGVyRGVs
ZWdhdGU+PiBtX21vZHVsZUxvYWRlckRlbGVnYXRlOwpAQCAtNzcsNyArNzcsNyBAQCAtIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhWaXJ0dWFsTWFjaGluZTooSlNWaXJ0dWFsTWFjaGluZSAqKXZpcnR1
YWxNYWNoaW5lCiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgbV92
aXJ0dWFsTWFjaGluZSA9IFt2aXJ0dWFsTWFjaGluZSByZXRhaW5dOworICAgIG1fdmlydHVhbE1h
Y2hpbmUgPSB2aXJ0dWFsTWFjaGluZTsKICAgICBtX2NvbnRleHQgPSBKU0dsb2JhbENvbnRleHRD
cmVhdGVJbkdyb3VwKGdldEdyb3VwRnJvbVZpcnR1YWxNYWNoaW5lKHZpcnR1YWxNYWNoaW5lKSwg
MCk7CiAKICAgICBzZWxmLmV4Y2VwdGlvbkhhbmRsZXIgPSBeKEpTQ29udGV4dCAqY29udGV4dCwg
SlNWYWx1ZSAqZXhjZXB0aW9uVmFsdWUpIHsKQEAgLTk0LDcgKzk0LDYgQEAgLSAodm9pZClkZWFs
bG9jCiB7CiAgICAgbV9leGNlcHRpb24uY2xlYXIoKTsKICAgICBKU0dsb2JhbENvbnRleHRSZWxl
YXNlKG1fY29udGV4dCk7Ci0gICAgW21fdmlydHVhbE1hY2hpbmUgcmVsZWFzZV07CiAgICAgW19l
eGNlcHRpb25IYW5kbGVyIHJlbGVhc2VdOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KQEAgLTI1
NCw3ICsyNTMsNyBAQCArIChOU0FycmF5ICopY3VycmVudEFyZ3VtZW50cwogCiAtIChKU1ZpcnR1
YWxNYWNoaW5lICopdmlydHVhbE1hY2hpbmUKIHsKLSAgICByZXR1cm4gbV92aXJ0dWFsTWFjaGlu
ZTsKKyAgICByZXR1cm4gbV92aXJ0dWFsTWFjaGluZS5nZXQoKTsKIH0KIAogLSAoTlNTdHJpbmcg
KiluYW1lCkBAIC0zMzYsNyArMzM1LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoR2xvYmFs
Q29udGV4dFJlZjooSlNHbG9iYWxDb250ZXh0UmVmKWNvbnRleHQKICAgICAgICAgcmV0dXJuIG5p
bDsKIAogICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlMoY29udGV4
dCk7Ci0gICAgbV92aXJ0dWFsTWFjaGluZSA9IFtbSlNWaXJ0dWFsTWFjaGluZSB2aXJ0dWFsTWFj
aGluZVdpdGhDb250ZXh0R3JvdXBSZWY6dG9SZWYoJmdsb2JhbE9iamVjdC0+dm0oKSldIHJldGFp
bl07CisgICAgbV92aXJ0dWFsTWFjaGluZSA9IFtKU1ZpcnR1YWxNYWNoaW5lIHZpcnR1YWxNYWNo
aW5lV2l0aENvbnRleHRHcm91cFJlZjp0b1JlZigmZ2xvYmFsT2JqZWN0LT52bSgpKV07CiAgICAg
QVNTRVJUKG1fdmlydHVhbE1hY2hpbmUpOwogICAgIG1fY29udGV4dCA9IEpTR2xvYmFsQ29udGV4
dFJldGFpbihjb250ZXh0KTsKICAgICBbc2VsZiBlbnN1cmVXcmFwcGVyTWFwXTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCmluZGV4IGMxODczN2JmODc2YjZk
ZDUyMGEzMzcyOTRiOWMyMjM5Mjc1OTk5YzQuLjYzODY5YTAzNDE0MDAzZGM4NzAxZjUyM2M1MDlj
YmViZWNkZDk2YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5h
Z2VkVmFsdWUubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1
ZS5tbQpAQCAtMzgsNiArMzgsNyBAQAogI2ltcG9ydCAiT2JqY1J1bnRpbWVFeHRyYXMuaCIKICNp
bXBvcnQgIkpTQ0lubGluZXMuaCIKICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBjbGFzcyBKU01hbmFnZWRWYWx1ZUhhbmRsZU93bmVy
IGZpbmFsIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKIHB1YmxpYzoKQEAgLTU1LDcg
KzU2LDcgQEAgQGltcGxlbWVudGF0aW9uIEpTTWFuYWdlZFZhbHVlIHsKICAgICBKU0M6OldlYWs8
SlNDOjpKU0dsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7CiAgICAgUmVmUHRyPEpTQzo6SlNM
b2NrPiBtX2xvY2s7CiAgICAgSlNDOjpKU1dlYWtWYWx1ZSBtX3dlYWtWYWx1ZTsKLSAgICBOU01h
cFRhYmxlICptX293bmVyczsKKyAgICBSZXRhaW5QdHI8TlNNYXBUYWJsZT4gbV9vd25lcnM7CiB9
CiAKICsgKEpTTWFuYWdlZFZhbHVlICopbWFuYWdlZFZhbHVlV2l0aFZhbHVlOihKU1ZhbHVlICop
dmFsdWUKQEAgLTkzLDcgKzk0LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVmFsdWU6KEpT
VmFsdWUgKil2YWx1ZQogCiAgICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyB3ZWFrSURPcHRp
b25zID0gTlNQb2ludGVyRnVuY3Rpb25zV2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09i
amVjdFBlcnNvbmFsaXR5OwogICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgaW50ZWdlck9w
dGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlvbnNPcGFxdWVNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlv
bnNJbnRlZ2VyUGVyc29uYWxpdHk7Ci0gICAgbV9vd25lcnMgPSBbW05TTWFwVGFibGUgYWxsb2Nd
IGluaXRXaXRoS2V5T3B0aW9uczp3ZWFrSURPcHRpb25zIHZhbHVlT3B0aW9uczppbnRlZ2VyT3B0
aW9ucyBjYXBhY2l0eToxXTsKKyAgICBtX293bmVycyA9IGFkb3B0TlMoW1tOU01hcFRhYmxlIGFs
bG9jXSBpbml0V2l0aEtleU9wdGlvbnM6d2Vha0lET3B0aW9ucyB2YWx1ZU9wdGlvbnM6aW50ZWdl
ck9wdGlvbnMgY2FwYWNpdHk6MV0pOwogCiAgICAgSlNDOjpKU1ZhbHVlIGpzVmFsdWUgPSB0b0pT
KGdsb2JhbE9iamVjdCwgW3ZhbHVlIEpTVmFsdWVSZWZdKTsKICAgICBpZiAoanNWYWx1ZS5pc09i
amVjdCgpKQpAQCAtMTA5LDM5ICsxMTAsMzcgQEAgLSAodm9pZClkZWFsbG9jCiB7CiAgICAgSlNW
aXJ0dWFsTWFjaGluZSAqdmlydHVhbE1hY2hpbmUgPSBbW1tzZWxmIHZhbHVlXSBjb250ZXh0XSB2
aXJ0dWFsTWFjaGluZV07CiAgICAgaWYgKHZpcnR1YWxNYWNoaW5lKSB7Ci0gICAgICAgIE5TTWFw
VGFibGUgKmNvcHkgPSBbbV9vd25lcnMgY29weV07CisgICAgICAgIGF1dG8gY29weSA9IGFkb3B0
TlMoW21fb3duZXJzIGNvcHldKTsKICAgICAgICAgZm9yIChpZCBvd25lciBpbiBbY29weSBrZXlF
bnVtZXJhdG9yXSkgewotICAgICAgICAgICAgc2l6ZV90IGNvdW50ID0gcmVpbnRlcnByZXRfY2Fz
dDxzaXplX3Q+KE5TTWFwR2V0KG1fb3duZXJzLCAoX19icmlkZ2Ugdm9pZCopb3duZXIpKTsKKyAg
ICAgICAgICAgIHNpemVfdCBjb3VudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihOU01hcEdl
dChtX293bmVycy5nZXQoKSwgKF9fYnJpZGdlIHZvaWQqKW93bmVyKSk7CiAgICAgICAgICAgICB3
aGlsZSAoY291bnQtLSkKICAgICAgICAgICAgICAgICBbdmlydHVhbE1hY2hpbmUgcmVtb3ZlTWFu
YWdlZFJlZmVyZW5jZTpzZWxmIHdpdGhPd25lcjpvd25lcl07CiAgICAgICAgIH0KLSAgICAgICAg
W2NvcHkgcmVsZWFzZV07CiAgICAgfQogCiAgICAgW3NlbGYgZGlzY29ubmVjdFZhbHVlXTsKLSAg
ICBbbV9vd25lcnMgcmVsZWFzZV07CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCiAtICh2b2lk
KWRpZEFkZE93bmVyOihpZClvd25lcgogewotICAgIHNpemVfdCBjb3VudCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8c2l6ZV90PihOU01hcEdldChtX293bmVycywgKF9fYnJpZGdlIHZvaWQqKW93bmVyKSk7
Ci0gICAgTlNNYXBJbnNlcnQobV9vd25lcnMsIChfX2JyaWRnZSB2b2lkKilvd25lciwgcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oY291bnQgKyAxKSk7CisgICAgc2l6ZV90IGNvdW50ID0gcmVpbnRl
cnByZXRfY2FzdDxzaXplX3Q+KE5TTWFwR2V0KG1fb3duZXJzLmdldCgpLCAoX19icmlkZ2Ugdm9p
ZCopb3duZXIpKTsKKyAgICBOU01hcEluc2VydChtX293bmVycy5nZXQoKSwgKF9fYnJpZGdlIHZv
aWQqKW93bmVyLCByZWludGVycHJldF9jYXN0PHZvaWQqPihjb3VudCArIDEpKTsKIH0KIAogLSAo
dm9pZClkaWRSZW1vdmVPd25lcjooaWQpb3duZXIKIHsKLSAgICBzaXplX3QgY291bnQgPSByZWlu
dGVycHJldF9jYXN0PHNpemVfdD4oTlNNYXBHZXQobV9vd25lcnMsIChfX2JyaWRnZSB2b2lkKilv
d25lcikpOworICAgIHNpemVfdCBjb3VudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihOU01h
cEdldChtX293bmVycy5nZXQoKSwgKF9fYnJpZGdlIHZvaWQqKW93bmVyKSk7CiAKICAgICBpZiAo
IWNvdW50KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoY291bnQgPT0gMSkgewotICAgICAg
ICBOU01hcFJlbW92ZShtX293bmVycywgKF9fYnJpZGdlIHZvaWQqKW93bmVyKTsKKyAgICAgICAg
TlNNYXBSZW1vdmUobV9vd25lcnMuZ2V0KCksIChfX2JyaWRnZSB2b2lkKilvd25lcik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBOU01hcEluc2VydChtX293bmVycywgKF9fYnJpZGdl
IHZvaWQqKW93bmVyLCByZWludGVycHJldF9jYXN0PHZvaWQqPihjb3VudCAtIDEpKTsKKyAgICBO
U01hcEluc2VydChtX293bmVycy5nZXQoKSwgKF9fYnJpZGdlIHZvaWQqKW93bmVyLCByZWludGVy
cHJldF9jYXN0PHZvaWQqPihjb3VudCAtIDEpKTsKIH0KIAogLSAoSlNWYWx1ZSAqKXZhbHVlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUubW0g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUubW0KaW5kZXggMzE5
MjRkMDEyYzBiMjY4ODMwNjE1ZjI0ZDc4M2I5MDVkZTAyODY4Ny4uMTdiMzJhNjY2NzBiMDA1NDYx
ZGFmN2FmMTdhYTE3MWNlNWI4YTk5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNWaXJ0dWFsTWFjaGluZS5tbQpAQCAtODQsOSArODQsOSBAQCBAZW5kCiBAaW1wbGVtZW50YXRp
b24gSlNWaXJ0dWFsTWFjaGluZSB7CiAgICAgSlNDb250ZXh0R3JvdXBSZWYgbV9ncm91cDsKICAg
ICBMb2NrIG1fZXh0ZXJuYWxEYXRhTXV0ZXg7Ci0gICAgTlNNYXBUYWJsZSAqbV9jb250ZXh0Q2Fj
aGU7Ci0gICAgTlNNYXBUYWJsZSAqbV9leHRlcm5hbE9iamVjdEdyYXBoOwotICAgIE5TTWFwVGFi
bGUgKm1fZXh0ZXJuYWxSZW1lbWJlcmVkU2V0OworICAgIFJldGFpblB0cjxOU01hcFRhYmxlPiBt
X2NvbnRleHRDYWNoZTsKKyAgICBSZXRhaW5QdHI8TlNNYXBUYWJsZT4gbV9leHRlcm5hbE9iamVj
dEdyYXBoOworICAgIFJldGFpblB0cjxOU01hcFRhYmxlPiBtX2V4dGVybmFsUmVtZW1iZXJlZFNl
dDsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXQKQEAgLTEwOCwxNCArMTA4LDE0IEBAIC0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aENvbnRleHRHcm91cFJlZjooSlNDb250ZXh0R3JvdXBSZWYpZ3Jv
dXAKICAgICAKICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIGtleU9wdGlvbnMgPSBOU1Bv
aW50ZXJGdW5jdGlvbnNPcGFxdWVNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPcGFxdWVQZXJz
b25hbGl0eTsKICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHZhbHVlT3B0aW9ucyA9IE5T
UG9pbnRlckZ1bmN0aW9uc1dlYWtNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPYmplY3RQZXJz
b25hbGl0eTsKLSAgICBtX2NvbnRleHRDYWNoZSA9IFtbTlNNYXBUYWJsZSBhbGxvY10gaW5pdFdp
dGhLZXlPcHRpb25zOmtleU9wdGlvbnMgdmFsdWVPcHRpb25zOnZhbHVlT3B0aW9ucyBjYXBhY2l0
eTowXTsKKyAgICBtX2NvbnRleHRDYWNoZSA9IGFkb3B0TlMoW1tOU01hcFRhYmxlIGFsbG9jXSBp
bml0V2l0aEtleU9wdGlvbnM6a2V5T3B0aW9ucyB2YWx1ZU9wdGlvbnM6dmFsdWVPcHRpb25zIGNh
cGFjaXR5OjBdKTsKICAgICAKICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHdlYWtJRE9w
dGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlvbnNXZWFrTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25z
T2JqZWN0UGVyc29uYWxpdHk7CiAgICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyBzdHJvbmdJ
RE9wdGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlvbnNTdHJvbmdNZW1vcnkgfCBOU1BvaW50ZXJGdW5j
dGlvbnNPYmplY3RQZXJzb25hbGl0eTsKLSAgICBtX2V4dGVybmFsT2JqZWN0R3JhcGggPSBbW05T
TWFwVGFibGUgYWxsb2NdIGluaXRXaXRoS2V5T3B0aW9uczp3ZWFrSURPcHRpb25zIHZhbHVlT3B0
aW9uczpzdHJvbmdJRE9wdGlvbnMgY2FwYWNpdHk6MF07CisgICAgbV9leHRlcm5hbE9iamVjdEdy
YXBoID0gYWRvcHROUyhbW05TTWFwVGFibGUgYWxsb2NdIGluaXRXaXRoS2V5T3B0aW9uczp3ZWFr
SURPcHRpb25zIHZhbHVlT3B0aW9uczpzdHJvbmdJRE9wdGlvbnMgY2FwYWNpdHk6MF0pOwogCiAg
ICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyBpbnRlZ2VyT3B0aW9ucyA9IE5TUG9pbnRlckZ1
bmN0aW9uc09wYXF1ZU1lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc0ludGVnZXJQZXJzb25hbGl0
eTsKLSAgICBtX2V4dGVybmFsUmVtZW1iZXJlZFNldCA9IFtbTlNNYXBUYWJsZSBhbGxvY10gaW5p
dFdpdGhLZXlPcHRpb25zOndlYWtJRE9wdGlvbnMgdmFsdWVPcHRpb25zOmludGVnZXJPcHRpb25z
IGNhcGFjaXR5OjBdOworICAgIG1fZXh0ZXJuYWxSZW1lbWJlcmVkU2V0ID0gYWRvcHROUyhbW05T
TWFwVGFibGUgYWxsb2NdIGluaXRXaXRoS2V5T3B0aW9uczp3ZWFrSURPcHRpb25zIHZhbHVlT3B0
aW9uczppbnRlZ2VyT3B0aW9ucyBjYXBhY2l0eTowXSk7CiAgICAKICAgICBbSlNWTVdyYXBwZXJD
YWNoZSBhZGRXcmFwcGVyOnNlbGYgZm9ySlNDb250ZXh0R3JvdXBSZWY6Z3JvdXBdOwogIApAQCAt
MTI1LDkgKzEyNSw2IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbnRleHRHcm91cFJlZjoo
SlNDb250ZXh0R3JvdXBSZWYpZ3JvdXAKIC0gKHZvaWQpZGVhbGxvYwogewogICAgIEpTQ29udGV4
dEdyb3VwUmVsZWFzZShtX2dyb3VwKTsKLSAgICBbbV9jb250ZXh0Q2FjaGUgcmVsZWFzZV07Ci0g
ICAgW21fZXh0ZXJuYWxPYmplY3RHcmFwaCByZWxlYXNlXTsKLSAgICBbbV9leHRlcm5hbFJlbWVt
YmVyZWRTZXQgcmVsZWFzZV07CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCkBAIC0yNDUsMTIg
KzI0MiwxMiBAQCArIChKU1ZpcnR1YWxNYWNoaW5lICopdmlydHVhbE1hY2hpbmVXaXRoQ29udGV4
dEdyb3VwUmVmOihKU0NvbnRleHRHcm91cFJlZilncm91cAogCiAtIChKU0NvbnRleHQgKiljb250
ZXh0Rm9yR2xvYmFsQ29udGV4dFJlZjooSlNHbG9iYWxDb250ZXh0UmVmKWdsb2JhbENvbnRleHQK
IHsKLSAgICByZXR1cm4gKF9fYnJpZGdlIEpTQ29udGV4dCAqKU5TTWFwR2V0KG1fY29udGV4dENh
Y2hlLCBnbG9iYWxDb250ZXh0KTsKKyAgICByZXR1cm4gKF9fYnJpZGdlIEpTQ29udGV4dCAqKU5T
TWFwR2V0KG1fY29udGV4dENhY2hlLmdldCgpLCBnbG9iYWxDb250ZXh0KTsKIH0KIAogLSAodm9p
ZClhZGRDb250ZXh0OihKU0NvbnRleHQgKil3cmFwcGVyIGZvckdsb2JhbENvbnRleHRSZWY6KEpT
R2xvYmFsQ29udGV4dFJlZilnbG9iYWxDb250ZXh0CiB7Ci0gICAgTlNNYXBJbnNlcnQobV9jb250
ZXh0Q2FjaGUsIGdsb2JhbENvbnRleHQsIChfX2JyaWRnZSB2b2lkKil3cmFwcGVyKTsKKyAgICBO
U01hcEluc2VydChtX2NvbnRleHRDYWNoZS5nZXQoKSwgZ2xvYmFsQ29udGV4dCwgKF9fYnJpZGdl
IHZvaWQqKXdyYXBwZXIpOwogfQogCiAtIChMb2NrJilleHRlcm5hbERhdGFNdXRleApAQCAtMjYw
LDEyICsyNTcsMTIgQEAgLSAoTG9jayYpZXh0ZXJuYWxEYXRhTXV0ZXgKIAogLSAoTlNNYXBUYWJs
ZSAqKWV4dGVybmFsT2JqZWN0R3JhcGgKIHsKLSAgICByZXR1cm4gbV9leHRlcm5hbE9iamVjdEdy
YXBoOworICAgIHJldHVybiBtX2V4dGVybmFsT2JqZWN0R3JhcGguZ2V0KCk7CiB9CiAKIC0gKE5T
TWFwVGFibGUgKilleHRlcm5hbFJlbWVtYmVyZWRTZXQKIHsKLSAgICByZXR1cm4gbV9leHRlcm5h
bFJlbWVtYmVyZWRTZXQ7CisgICAgcmV0dXJuIG1fZXh0ZXJuYWxSZW1lbWJlcmVkU2V0LmdldCgp
OwogfQogCiAtICh2b2lkKXNocmlua0Zvb3RwcmludFdoZW5JZGxlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCmluZGV4IGU4ZDIzMGY0ZDc5N2I4N2E4NmY3YTk4MDkw
ZWMyNDliNmU1NTFkYjguLjE0NTU2YjU3NzEzZTczMGFlNTJiZGY5NTJlNjY5MTQyMDg1OWViMTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCkBAIC0xNjMsOSAr
MTYzLDkgQEAgc3RhdGljIEpTQzo6SlNPYmplY3QgKmNvbnN0cnVjdG9yV2l0aEN1c3RvbUJyYW5k
KEpTQ29udGV4dCAqY29udGV4dCwgTlNTdHJpbmcgKmIKIAogLy8gTG9vayBmb3IgQG9wdGlvbmFs
IHByb3BlcnRpZXMgaW4gdGhlIHByb3RvdHlwZSBjb250YWluaW5nIGEgc2VsZWN0b3IgdG8gcHJv
cGVydHkKIC8vIG5hbWUgbWFwcGluZywgc2VwYXJhdGVkIGJ5IGEgX19KU19FWFBPUlRfQVNfXyBk
ZWxpbWl0ZXIuCi1zdGF0aWMgTlNNdXRhYmxlRGljdGlvbmFyeSAqY3JlYXRlUmVuYW1lTWFwKFBy
b3RvY29sICpwcm90b2NvbCwgQk9PTCBpc0luc3RhbmNlTWV0aG9kKQorc3RhdGljIFJldGFpblB0
cjxOU011dGFibGVEaWN0aW9uYXJ5PiBjcmVhdGVSZW5hbWVNYXAoUHJvdG9jb2wgKnByb3RvY29s
LCBCT09MIGlzSW5zdGFuY2VNZXRob2QpCiB7Ci0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqcmVu
YW1lTWFwID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKKyAgICBhdXRvIHJl
bmFtZU1hcCA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAK
ICAgICBmb3JFYWNoTWV0aG9kSW5Qcm90b2NvbChwcm90b2NvbCwgTk8sIGlzSW5zdGFuY2VNZXRo
b2QsIF4oU0VMIHNlbCwgY29uc3QgY2hhciopewogICAgICAgICBOU1N0cmluZyAqcmVuYW1lID0g
QChzZWxfZ2V0TmFtZShzZWwpKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCBzdGF0aWMgTlNNdXRhYmxl
RGljdGlvbmFyeSAqY3JlYXRlUmVuYW1lTWFwKFByb3RvY29sICpwcm90b2NvbCwgQk9PTCBpc0lu
c3RhbmNlTQogICAgICAgICBOU1VJbnRlZ2VyIGJlZ2luID0gcmFuZ2UubG9jYXRpb24gKyByYW5n
ZS5sZW5ndGg7CiAgICAgICAgIE5TVUludGVnZXIgbGVuZ3RoID0gW3JlbmFtZSBsZW5ndGhdIC0g
YmVnaW4gLSAxOwogICAgICAgICBOU1N0cmluZyAqbmFtZSA9IFtyZW5hbWUgc3Vic3RyaW5nV2l0
aFJhbmdlOihOU1JhbmdlKXsgYmVnaW4sIGxlbmd0aCB9XTsKLSAgICAgICAgcmVuYW1lTWFwW3Nl
bGVjdG9yXSA9IG5hbWU7CisgICAgICAgIHJlbmFtZU1hcC5nZXQoKVtzZWxlY3Rvcl0gPSBuYW1l
OwogICAgIH0pOwogCiAgICAgcmV0dXJuIHJlbmFtZU1hcDsKQEAgLTI1Myw3ICsyNTMsNyBAQCBz
dGF0aWMgYm9vbCBzaG91bGRTa2lwTWV0aG9kV2l0aE5hbWUoTlNTdHJpbmcgKm5hbWUpCiAvLyAg
KiBPdGhlcndpc2UsIGlmIHRoZSBvYmplY3QgZG9lc24ndCBhbHJlYWR5IGNvbnRhaW4gYSBwcm9w
ZXJ0eSB3aXRoIG5hbWUsIGNyZWF0ZSBpdC4KIHN0YXRpYyB2b2lkIGNvcHlNZXRob2RzVG9PYmpl
Y3QoSlNDb250ZXh0ICpjb250ZXh0LCBDbGFzcyBvYmpjQ2xhc3MsIFByb3RvY29sICpwcm90b2Nv
bCwgQk9PTCBpc0luc3RhbmNlTWV0aG9kLCBKU1ZhbHVlICpvYmplY3QsIE5TTXV0YWJsZURpY3Rp
b25hcnkgKmFjY2Vzc29yTWV0aG9kcyA9IG5pbCkKIHsKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5
ICpyZW5hbWVNYXAgPSBjcmVhdGVSZW5hbWVNYXAocHJvdG9jb2wsIGlzSW5zdGFuY2VNZXRob2Qp
OworICAgIGF1dG8gcmVuYW1lTWFwID0gY3JlYXRlUmVuYW1lTWFwKHByb3RvY29sLCBpc0luc3Rh
bmNlTWV0aG9kKTsKIAogICAgIGZvckVhY2hNZXRob2RJblByb3RvY29sKHByb3RvY29sLCBZRVMs
IGlzSW5zdGFuY2VNZXRob2QsIF4oU0VMIHNlbCwgY29uc3QgY2hhciogdHlwZXMpewogICAgICAg
ICBjb25zdCBjaGFyKiBuYW1lQ1N0ciA9IHNlbF9nZXROYW1lKHNlbCk7CkBAIC0yNjgsNyArMjY4
LDcgQEAgc3RhdGljIHZvaWQgY29weU1ldGhvZHNUb09iamVjdChKU0NvbnRleHQgKmNvbnRleHQs
IENsYXNzIG9iamNDbGFzcywgUHJvdG9jb2wgKnAKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICBhY2Nlc3Nvck1ldGhvZHNbbmFtZV0gPSBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1Zh
bHVlUmVmOm1ldGhvZCBpbkNvbnRleHQ6Y29udGV4dF07CiAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBuYW1lID0gcmVuYW1lTWFwW25hbWVdOworICAgICAgICAgICAgbmFtZSA9IHJlbmFt
ZU1hcC5nZXQoKVtuYW1lXTsKICAgICAgICAgICAgIGlmICghbmFtZSkKICAgICAgICAgICAgICAg
ICBuYW1lID0gc2VsZWN0b3JUb1Byb3BlcnR5TmFtZShuYW1lQ1N0cik7CiAgICAgICAgICAgICBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTKFtjb250ZXh0IEpTR2xvYmFs
Q29udGV4dFJlZl0pOwpAQCAtMjg3LDggKzI4Nyw2IEBAIHN0YXRpYyB2b2lkIGNvcHlNZXRob2Rz
VG9PYmplY3QoSlNDb250ZXh0ICpjb250ZXh0LCBDbGFzcyBvYmpjQ2xhc3MsIFByb3RvY29sICpw
CiAgICAgICAgICAgICAgICAgcHV0Tm9uRW51bWVyYWJsZShjb250ZXh0LCBvYmplY3QsIG5hbWUs
IFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6bWV0aG9kIGluQ29udGV4dDpjb250ZXh0XSk7
CiAgICAgICAgIH0KICAgICB9KTsKLQotICAgIFtyZW5hbWVNYXAgcmVsZWFzZV07CiB9CiAKIHN0
cnVjdCBQcm9wZXJ0eSB7CkBAIC01OTMsOSArNTkxLDkgQEAgLSAoSlNDOjpTdHJ1Y3R1cmUqKXN0
cnVjdHVyZUluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dAogQGVuZAogCiBAaW1wbGVtZW50
YXRpb24gSlNXcmFwcGVyTWFwIHsKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICptX2NsYXNzTWFw
OworICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBtX2NsYXNzTWFwOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxKU0M6OldlYWtHQ01hcDxfX3Vuc2FmZV91bnJldGFpbmVkIGlkLCBKU0M6
OkpTT2JqZWN0Pj4gbV9jYWNoZWRKU1dyYXBwZXJzOwotICAgIE5TTWFwVGFibGUgKm1fY2FjaGVk
T2JqQ1dyYXBwZXJzOworICAgIFJldGFpblB0cjxOU01hcFRhYmxlPiBtX2NhY2hlZE9iakNXcmFw
cGVyczsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoR2xvYmFsQ29udGV4dFJlZjooSlNH
bG9iYWxDb250ZXh0UmVmKWNvbnRleHQKQEAgLTYwNiwzMCArNjA0LDIzIEBAIC0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aEdsb2JhbENvbnRleHRSZWY6KEpTR2xvYmFsQ29udGV4dFJlZiljb250ZXh0
CiAKICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIGtleU9wdGlvbnMgPSBOU1BvaW50ZXJG
dW5jdGlvbnNPcGFxdWVNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPcGFxdWVQZXJzb25hbGl0
eTsKICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHZhbHVlT3B0aW9ucyA9IE5TUG9pbnRl
ckZ1bmN0aW9uc1dlYWtNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPYmplY3RQZXJzb25hbGl0
eTsKLSAgICBtX2NhY2hlZE9iakNXcmFwcGVycyA9IFtbTlNNYXBUYWJsZSBhbGxvY10gaW5pdFdp
dGhLZXlPcHRpb25zOmtleU9wdGlvbnMgdmFsdWVPcHRpb25zOnZhbHVlT3B0aW9ucyBjYXBhY2l0
eTowXTsKKyAgICBtX2NhY2hlZE9iakNXcmFwcGVycyA9IGFkb3B0TlMoW1tOU01hcFRhYmxlIGFs
bG9jXSBpbml0V2l0aEtleU9wdGlvbnM6a2V5T3B0aW9ucyB2YWx1ZU9wdGlvbnM6dmFsdWVPcHRp
b25zIGNhcGFjaXR5OjBdKTsKIAogICAgIG1fY2FjaGVkSlNXcmFwcGVycyA9IG1ha2VVbmlxdWU8
SlNDOjpXZWFrR0NNYXA8X191bnNhZmVfdW5yZXRhaW5lZCBpZCwgSlNDOjpKU09iamVjdD4+KHRv
SlMoY29udGV4dCktPnZtKCkpOwogCiAgICAgQVNTRVJUKCF0b0pTR2xvYmFsT2JqZWN0KGNvbnRl
eHQpLT53cmFwcGVyTWFwKCkpOwogICAgIHRvSlNHbG9iYWxPYmplY3QoY29udGV4dCktPnNldFdy
YXBwZXJNYXAoc2VsZik7Ci0gICAgbV9jbGFzc01hcCA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBh
bGxvY10gaW5pdF07CisgICAgbV9jbGFzc01hcCA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9u
YXJ5IGFsbG9jXSBpbml0XSk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKHZvaWQpZGVhbGxv
YwotewotICAgIFttX2NhY2hlZE9iakNXcmFwcGVycyByZWxlYXNlXTsKLSAgICBbbV9jbGFzc01h
cCByZWxlYXNlXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KIC0gKEpTT2JqQ0NsYXNzSW5m
byopY2xhc3NJbmZvRm9yQ2xhc3M6KENsYXNzKWNscwogewogICAgIGlmICghY2xzKQogICAgICAg
ICByZXR1cm4gbmlsOwogCiAgICAgLy8gQ2hlY2sgaWYgd2UndmUgYWxyZWFkeSBjcmVhdGVkIGEg
SlNPYmpDQ2xhc3NJbmZvIGZvciB0aGlzIENsYXNzLgotICAgIGlmIChKU09iakNDbGFzc0luZm8q
IGNsYXNzSW5mbyA9IChKU09iakNDbGFzc0luZm8qKW1fY2xhc3NNYXBbKGlkKWNsc10pCisgICAg
aWYgKEpTT2JqQ0NsYXNzSW5mbyogY2xhc3NJbmZvID0gKEpTT2JqQ0NsYXNzSW5mbyopbV9jbGFz
c01hcC5nZXQoKVsoaWQpY2xzXSkKICAgICAgICAgcmV0dXJuIGNsYXNzSW5mbzsKIAogICAgIC8v
IFNraXAgaW50ZXJuYWwgY2xhc3NlcyBiZWdpbm5pbmcgd2l0aCAnXycgLSBqdXN0IGNvcHkgbGlu
ayB0byB0aGUgcGFyZW50IGNsYXNzJ3MgaW5mby4KQEAgLTY0MSwxMCArNjMyLDEwIEBAIC0gKEpT
T2JqQ0NsYXNzSW5mbyopY2xhc3NJbmZvRm9yQ2xhc3M6KENsYXNzKWNscwogICAgICAgICB9KTsK
IAogICAgICAgICBpZiAoIWNvbmZvcm1zVG9FeHBvcnRQcm90b2NvbCkKLSAgICAgICAgICAgIHJl
dHVybiBtX2NsYXNzTWFwWyhpZCljbHNdID0gW3NlbGYgY2xhc3NJbmZvRm9yQ2xhc3M6Y2xhc3Nf
Z2V0U3VwZXJjbGFzcyhjbHMpXTsKKyAgICAgICAgICAgIHJldHVybiBtX2NsYXNzTWFwLmdldCgp
WyhpZCljbHNdID0gW3NlbGYgY2xhc3NJbmZvRm9yQ2xhc3M6Y2xhc3NfZ2V0U3VwZXJjbGFzcyhj
bHMpXTsKICAgICB9CiAKLSAgICByZXR1cm4gbV9jbGFzc01hcFsoaWQpY2xzXSA9IFtbW0pTT2Jq
Q0NsYXNzSW5mbyBhbGxvY10gaW5pdEZvckNsYXNzOmNsc10gYXV0b3JlbGVhc2VdOworICAgIHJl
dHVybiBtX2NsYXNzTWFwLmdldCgpWyhpZCljbHNdID0gW1tbSlNPYmpDQ2xhc3NJbmZvIGFsbG9j
XSBpbml0Rm9yQ2xhc3M6Y2xzXSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKEpTVmFsdWUgKilqc1dy
YXBwZXJGb3JPYmplY3Q6KGlkKW9iamVjdCBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQK
QEAgLTY3MywxMCArNjY0LDEwIEBAIC0gKEpTVmFsdWUgKilqc1dyYXBwZXJGb3JPYmplY3Q6KGlk
KW9iamVjdCBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQKIC0gKEpTVmFsdWUgKilvYmpj
V3JhcHBlckZvckpTVmFsdWVSZWY6KEpTVmFsdWVSZWYpdmFsdWUgaW5Db250ZXh0OmNvbnRleHQK
IHsKICAgICBBU1NFUlQodG9KU0dsb2JhbE9iamVjdChbY29udGV4dCBKU0dsb2JhbENvbnRleHRS
ZWZdKS0+d3JhcHBlck1hcCgpID09IHNlbGYpOwotICAgIEpTVmFsdWUgKndyYXBwZXIgPSAoX19i
cmlkZ2UgSlNWYWx1ZSAqKU5TTWFwR2V0KG1fY2FjaGVkT2JqQ1dyYXBwZXJzLCB2YWx1ZSk7Cisg
ICAgSlNWYWx1ZSAqd3JhcHBlciA9IChfX2JyaWRnZSBKU1ZhbHVlICopTlNNYXBHZXQobV9jYWNo
ZWRPYmpDV3JhcHBlcnMuZ2V0KCksIHZhbHVlKTsKICAgICBpZiAoIXdyYXBwZXIpIHsKICAgICAg
ICAgd3JhcHBlciA9IFtbW0pTVmFsdWUgYWxsb2NdIGluaXRXaXRoVmFsdWU6dmFsdWUgaW5Db250
ZXh0OmNvbnRleHRdIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgTlNNYXBJbnNlcnQobV9jYWNoZWRP
YmpDV3JhcHBlcnMsIHZhbHVlLCAoX19icmlkZ2Ugdm9pZCopd3JhcHBlcik7CisgICAgICAgIE5T
TWFwSW5zZXJ0KG1fY2FjaGVkT2JqQ1dyYXBwZXJzLmdldCgpLCB2YWx1ZSwgKF9fYnJpZGdlIHZv
aWQqKXdyYXBwZXIpOwogICAgIH0KICAgICByZXR1cm4gd3JhcHBlcjsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRl
X29iamNfY29uZmlndXJhdGlvbl9pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfY29uZmlndXJhdGlv
bl9pbXBsZW1lbnRhdGlvbi5weQppbmRleCAxMmM3NTRjM2QwOGM1ZTcxNjQwMmRjOTkwYWViNWFh
MzJhZTE3YzAxLi42MGEzMDk2ODM0NTg5ZDNjMjNmZGE1ZTI5NzNhMDI0YjJjNzIyNDMzIDEwMDc1
NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0ZV9vYmpjX2NvbmZpZ3VyYXRpb25faW1wbGVtZW50YXRpb24ucHkKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19j
b25maWd1cmF0aW9uX2ltcGxlbWVudGF0aW9uLnB5CkBAIC04OSw4ICs4OSw2IEBAIGNsYXNzIE9i
akNDb25maWd1cmF0aW9uSW1wbGVtZW50YXRpb25HZW5lcmF0b3IoT2JqQ0dlbmVyYXRvcik6CiAg
ICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIHJldHVybiBzZWxmOycpCiAgICAgICAgIGxpbmVzLmFw
cGVuZCgnfScpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnJykKLSAgICAgICAgbGluZXMuZXh0ZW5k
KHNlbGYuX2dlbmVyYXRlX2RlYWxsb2MoZG9tYWlucykpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgn
JykKICAgICAgICAgZm9yIGRvbWFpbiBpbiBkb21haW5zOgogICAgICAgICAgICAgZG9tYWluX2xp
bmVzID0gW10KICAgICAgICAgICAgIGlmIHNlbGYuc2hvdWxkX2dlbmVyYXRlX2NvbW1hbmRzX2Zv
cl9kb21haW4oZG9tYWluKToKQEAgLTExMSwyOSArMTA5LDEzIEBAIGNsYXNzIE9iakNDb25maWd1
cmF0aW9uSW1wbGVtZW50YXRpb25HZW5lcmF0b3IoT2JqQ0dlbmVyYXRvcik6CiAgICAgICAgICAg
ICBpZiBzZWxmLnNob3VsZF9nZW5lcmF0ZV9jb21tYW5kc19mb3JfZG9tYWluKGRvbWFpbik6CiAg
ICAgICAgICAgICAgICAgb2JqY19jbGFzc19uYW1lID0gJyVzJXNEb21haW5IYW5kbGVyJyAlIChz
ZWxmLm9iamNfcHJlZml4KCksIGRvbWFpbi5kb21haW5fbmFtZSkKICAgICAgICAgICAgICAgICBp
dmFyX25hbWUgPSAnXyVzSGFuZGxlcicgJSBPYmpDR2VuZXJhdG9yLnZhcmlhYmxlX25hbWVfcHJl
Zml4X2Zvcl9kb21haW4oZG9tYWluKQotICAgICAgICAgICAgICAgIGRvbWFpbl9saW5lcy5hcHBl
bmQoJyAgICBpZDwlcz4gJXM7JyAlIChvYmpjX2NsYXNzX25hbWUsIGl2YXJfbmFtZSkpCisgICAg
ICAgICAgICAgICAgZG9tYWluX2xpbmVzLmFwcGVuZCgnICAgIFJldGFpblB0cjxpZDwlcz4+ICVz
OycgJSAob2JqY19jbGFzc19uYW1lLCBpdmFyX25hbWUpKQogICAgICAgICAgICAgaWYgc2VsZi5z
aG91bGRfZ2VuZXJhdGVfZXZlbnRzX2Zvcl9kb21haW4oZG9tYWluKToKICAgICAgICAgICAgICAg
ICBvYmpjX2NsYXNzX25hbWUgPSAnJXMlc0RvbWFpbkV2ZW50RGlzcGF0Y2hlcicgJSAoc2VsZi5v
YmpjX3ByZWZpeCgpLCBkb21haW4uZG9tYWluX25hbWUpCiAgICAgICAgICAgICAgICAgaXZhcl9u
YW1lID0gJ18lc0V2ZW50RGlzcGF0Y2hlcicgJSBPYmpDR2VuZXJhdG9yLnZhcmlhYmxlX25hbWVf
cHJlZml4X2Zvcl9kb21haW4oZG9tYWluKQotICAgICAgICAgICAgICAgIGRvbWFpbl9saW5lcy5h
cHBlbmQoJyAgICAlcyAqJXM7JyAlIChvYmpjX2NsYXNzX25hbWUsIGl2YXJfbmFtZSkpCi0gICAg
ICAgICAgICBpZiBsZW4oZG9tYWluX2xpbmVzKToKLSAgICAgICAgICAgICAgICBsaW5lcy5hcHBl
bmQoc2VsZi53cmFwX3dpdGhfZ3VhcmRfZm9yX2NvbmRpdGlvbihkb21haW4uY29uZGl0aW9uLCAn
XG4nLmpvaW4oZG9tYWluX2xpbmVzKSkpCi0gICAgICAgIHJldHVybiBsaW5lcwotCi0gICAgZGVm
IF9nZW5lcmF0ZV9kZWFsbG9jKHNlbGYsIGRvbWFpbnMpOgotICAgICAgICBsaW5lcyA9IFtdCi0g
ICAgICAgIGxpbmVzLmFwcGVuZCgnLSAodm9pZClkZWFsbG9jJykKLSAgICAgICAgbGluZXMuYXBw
ZW5kKCd7JykKLSAgICAgICAgZm9yIGRvbWFpbiBpbiBkb21haW5zOgotICAgICAgICAgICAgZG9t
YWluX2xpbmVzID0gW10KLSAgICAgICAgICAgIGlmIHNlbGYuc2hvdWxkX2dlbmVyYXRlX2NvbW1h
bmRzX2Zvcl9kb21haW4oZG9tYWluKToKLSAgICAgICAgICAgICAgICBkb21haW5fbGluZXMuYXBw
ZW5kKCcgICAgW18lc0hhbmRsZXIgcmVsZWFzZV07JyAlIE9iakNHZW5lcmF0b3IudmFyaWFibGVf
bmFtZV9wcmVmaXhfZm9yX2RvbWFpbihkb21haW4pKQotICAgICAgICAgICAgaWYgc2VsZi5zaG91
bGRfZ2VuZXJhdGVfZXZlbnRzX2Zvcl9kb21haW4oZG9tYWluKToKLSAgICAgICAgICAgICAgICBk
b21haW5fbGluZXMuYXBwZW5kKCcgICAgW18lc0V2ZW50RGlzcGF0Y2hlciByZWxlYXNlXTsnICUg
T2JqQ0dlbmVyYXRvci52YXJpYWJsZV9uYW1lX3ByZWZpeF9mb3JfZG9tYWluKGRvbWFpbikpCisg
ICAgICAgICAgICAgICAgZG9tYWluX2xpbmVzLmFwcGVuZCgnICAgIFJldGFpblB0cjwlcz4gJXM7
JyAlIChvYmpjX2NsYXNzX25hbWUsIGl2YXJfbmFtZSkpCiAgICAgICAgICAgICBpZiBsZW4oZG9t
YWluX2xpbmVzKToKICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoc2VsZi53cmFwX3dpdGhf
Z3VhcmRfZm9yX2NvbmRpdGlvbihkb21haW4uY29uZGl0aW9uLCAnXG4nLmpvaW4oZG9tYWluX2xp
bmVzKSkpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIFtzdXBlciBkZWFsbG9jXTsnKQotICAg
ICAgICBsaW5lcy5hcHBlbmQoJ30nKQogICAgICAgICByZXR1cm4gbGluZXMKIAogICAgIGRlZiBf
Z2VuZXJhdGVfaGFuZGxlcl9zZXR0ZXJfZm9yX2RvbWFpbihzZWxmLCBkb21haW4pOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2Jq
Y19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CmluZGV4IDczOTMy
OTRjYzZmOGUwOTM4ZGM0NDhkZGYzMzc0NDJjNjgzZGYyMmMuLmY4NmZiZTk1MTVhOWQyYzdlYzhi
NTllMGVhYjlkMjFkNDk3ZDk1ZmYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dl
bmVyYXRvcl90ZW1wbGF0ZXMucHkKQEAgLTE0MSw4ICsxNDEsNyBAQCAke2ludm9jYXRpb259CiAg
ICAgaWYgKGhhbmRsZXIgPT0gXyR7dmFyaWFibGVOYW1lUHJlZml4fUhhbmRsZXIpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFtfJHt2YXJpYWJsZU5hbWVQcmVmaXh9SGFuZGxlciByZWxlYXNlXTsK
LSAgICBfJHt2YXJpYWJsZU5hbWVQcmVmaXh9SGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07Cisg
ICAgXyR7dmFyaWFibGVOYW1lUHJlZml4fUhhbmRsZXIgPSBoYW5kbGVyOwogCiAgICAgYXV0byBh
bHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yJHtkb21haW5OYW1l
fUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKICAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0g
bWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDwke2RvbWFpbk5hbWV9QmFja2Vu
ZERpc3BhdGNoZXIsIEFsdGVybmF0ZSR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4+KCIk
e2RvbWFpbk5hbWV9Il9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hl
cikpOwpAQCAtMTUxLDEzICsxNTAsMTMgQEAgJHtpbnZvY2F0aW9ufQogCiAtIChpZDwke29iamNQ
cmVmaXh9JHtkb21haW5OYW1lfURvbWFpbkhhbmRsZXI+KSR7dmFyaWFibGVOYW1lUHJlZml4fUhh
bmRsZXIKIHsKLSAgICByZXR1cm4gXyR7dmFyaWFibGVOYW1lUHJlZml4fUhhbmRsZXI7CisgICAg
cmV0dXJuIF8ke3ZhcmlhYmxlTmFtZVByZWZpeH1IYW5kbGVyLmdldCgpOwogfSIiIikKIAogICAg
IENvbmZpZ3VyYXRpb25HZXR0ZXJJbXBsZW1lbnRhdGlvbiA9ICgKICAgICAiIiItICgke29iamNQ
cmVmaXh9JHtkb21haW5OYW1lfURvbWFpbkV2ZW50RGlzcGF0Y2hlciAqKSR7dmFyaWFibGVOYW1l
UHJlZml4fUV2ZW50RGlzcGF0Y2hlcgogewogICAgIGlmICghXyR7dmFyaWFibGVOYW1lUHJlZml4
fUV2ZW50RGlzcGF0Y2hlcikKLSAgICAgICAgXyR7dmFyaWFibGVOYW1lUHJlZml4fUV2ZW50RGlz
cGF0Y2hlciA9IFtbJHtvYmpjUHJlZml4fSR7ZG9tYWluTmFtZX1Eb21haW5FdmVudERpc3BhdGNo
ZXIgYWxsb2NdIGluaXRXaXRoQ29udHJvbGxlcjpfY29udHJvbGxlcl07Ci0gICAgcmV0dXJuIF8k
e3ZhcmlhYmxlTmFtZVByZWZpeH1FdmVudERpc3BhdGNoZXI7CisgICAgICAgIF8ke3ZhcmlhYmxl
TmFtZVByZWZpeH1FdmVudERpc3BhdGNoZXIgPSBhZG9wdE5TKFtbJHtvYmpjUHJlZml4fSR7ZG9t
YWluTmFtZX1Eb21haW5FdmVudERpc3BhdGNoZXIgYWxsb2NdIGluaXRXaXRoQ29udHJvbGxlcjpf
Y29udHJvbGxlcl0pOworICAgIHJldHVybiBfJHt2YXJpYWJsZU5hbWVQcmVmaXh9RXZlbnREaXNw
YXRjaGVyLmdldCgpOwogfSIiIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9v
YmpjL29iamNfaW5zdGFuY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2lu
c3RhbmNlLm1tCmluZGV4IGY3ZmYzNjJjOWVmZmQzN2ExMjI5ZDYzN2ZiNTIxMjExNTU1ZDU1YjYu
LjZmNWJkMWE2Y2E4NmVmZGMxZmEzM2YxMzQ5ZjZhNzFlNDI2OGZlNjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQpAQCAtNzIsOSArNzIsOCBAQCBSdW50
aW1lT2JqZWN0KiBPYmpjSW5zdGFuY2U6Om5ld1J1bnRpbWVPYmplY3QoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplYwogCiB2b2lkIE9iamNJbnN0YW5jZTo6c2V0R2xvYmFsRXhjZXB0
aW9uKE5TU3RyaW5nKiBleGNlcHRpb24sIEpTR2xvYmFsT2JqZWN0KiBleGNlcHRpb25FbnZpcm9u
bWVudCkKIHsKLSAgICBOU1N0cmluZyAqb2xkRXhjZXB0aW9uID0gc19leGNlcHRpb247CisgICAg
YXV0byBvbGRFeGNlcHRpb24gPSBhZG9wdE5TKHNfZXhjZXB0aW9uKTsKICAgICBzX2V4Y2VwdGlv
biA9IFtleGNlcHRpb24gY29weV07Ci0gICAgW29sZEV4Y2VwdGlvbiByZWxlYXNlXTsKIAogICAg
IHNfZXhjZXB0aW9uRW52aXJvbm1lbnQgPSBleGNlcHRpb25FbnZpcm9ubWVudDsKIH0KQEAgLTk0
LDkgKzkzLDggQEAgdm9pZCBPYmpjSW5zdGFuY2U6Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNT
dGF0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE8KICAgICAgICAgdGhyb3dFcnJvcihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgc19leGNlcHRpb24pOwogICAgIH0KIAotICAgIFtz
X2V4Y2VwdGlvbiByZWxlYXNlXTsKLSAgICBzX2V4Y2VwdGlvbiA9IG5pbDsKLSAgICBzX2V4Y2Vw
dGlvbkVudmlyb25tZW50ID0gMDsKKyAgICBhdXRvIGV4Y2VwdGlvbiA9IGFkb3B0TlMoc3RkOjpl
eGNoYW5nZShzX2V4Y2VwdGlvbiwgbmlsKSk7CisgICAgc19leGNlcHRpb25FbnZpcm9ubWVudCA9
IG51bGxwdHI7CiB9CiAKIE9iamNJbnN0YW5jZTo6T2JqY0luc3RhbmNlKGlkIGluc3RhbmNlLCBS
ZWZQdHI8Um9vdE9iamVjdD4mJiByb290T2JqZWN0KSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS90ZXN0YmluZGluZ3MubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJp
bmRpbmdzLm1tCmluZGV4IGM1OTBkNDkzMDc5ZmJlN2Q2MzFmNGIwNTk1ZDZiNDYyYzY1MTk1OTUu
LjRhYzg1NDBiNmZhNzYxMzQ2OTM1ODA4MWExNWExOGE4YjAyMmIxMzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3Rlc3RiaW5kaW5ncy5tbQpAQCAtNjQsNyArNjQsNyBAQCBAZW5kCiBAaW50ZXJmYWNl
IE15Rmlyc3RJbnRlcmZhY2UgOiBOU09iamVjdAogewogICAgIGludCBteUludDsKLSAgICBNeVNl
Y29uZEludGVyZmFjZSAqbXlTZWNvbmRJbnRlcmZhY2U7CisgICAgUmV0YWluUHRyPE15U2Vjb25k
SW50ZXJmYWNlPiBteVNlY29uZEludGVyZmFjZTsKICAgICBpZCBqc29iamVjdDsKICAgICBOU1N0
cmluZyAqc3RyaW5nOwogfQpAQCAtMTI4LDE3ICsxMjgsMTAgQEAgLSAodm9pZClzZXRWYWx1ZToo
aWQpdmFsdWUgZm9yVW5kZWZpbmVkS2V5OihOU1N0cmluZyAqKWtleQogLSBpbml0CiB7CiAgICAg
TE9HICgiXG4iKTsKLSAgICBteVNlY29uZEludGVyZmFjZSA9IFtbTXlTZWNvbmRJbnRlcmZhY2Ug
YWxsb2NdIGluaXRdOworICAgIG15U2Vjb25kSW50ZXJmYWNlID0gYWRvcHROUyhbW015U2Vjb25k
SW50ZXJmYWNlIGFsbG9jXSBpbml0XSk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKHZvaWQp
ZGVhbGxvYwotewotICAgIExPRyAoIlxuIik7Ci0gICAgW215U2Vjb25kSW50ZXJmYWNlIHJlbGVh
c2VdOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQogLSAoaW50KWdldEludCAKIHsKICAgICBM
T0cgKCJteUludCA9ICVkXG4iLCBteUludCk7CkBAIC0xNTksNyArMTUyLDcgQEAgLSAoTlNTdHJp
bmcgKilnZXRTdHJpbmcKIC0gKE15U2Vjb25kSW50ZXJmYWNlICopZ2V0TXlTZWNvbmRJbnRlcmZh
Y2UgCiB7CiAgICAgTE9HICgiXG4iKTsKLSAgICByZXR1cm4gbXlTZWNvbmRJbnRlcmZhY2U7Cisg
ICAgcmV0dXJuIG15U2Vjb25kSW50ZXJmYWNlLmdldCgpOwogfQogCiAtICh2b2lkKWxvZ01lc3Nh
Z2U6KE5TU3RyaW5nICopbWVzc2FnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL3dhay9XQUtWaWV3Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9X
QUtWaWV3Lm1tCmluZGV4IGYyNDM1YmYzYjE2MGRmODgwOTM3ZDIyZTMyMWEzZDliNTQ1MGVlNDku
LjczNmYwOTExNzZlODM0NjdmZGYwNmI3OWFkMGU3OTdjNmNjY2Q3OGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLVmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW0KQEAgLTUwLDkgKzUwLDggQEAgc3RhdGlj
IHZvaWQgc2V0R2xvYmFsRm9jdXNWaWV3KFdBS1ZpZXcgKnZpZXcpCiAgICAgaWYgKHZpZXcgPT0g
Z2xvYmFsRm9jdXNWaWV3KQogICAgICAgICByZXR1cm47CiAKLSAgICBbdmlldyByZXRhaW5dOwot
ICAgIFtnbG9iYWxGb2N1c1ZpZXcgcmVsZWFzZV07Ci0gICAgZ2xvYmFsRm9jdXNWaWV3ID0gdmll
dzsKKyAgICBhdXRvIG9sZFZpZXcgPSBhZG9wdE5TKGdsb2JhbEZvY3VzVmlldyk7CisgICAgZ2xv
YmFsRm9jdXNWaWV3ID0gcmV0YWluUHRyKHZpZXcpLmxlYWtSZWYoKTsKIH0KIAogc3RhdGljIFdB
S1Njcm9sbFZpZXcgKmVuY2xvc2luZ1Njcm9sbFZpZXcoV0FLVmlldyAqdmlldykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5kb3cubW0KaW5kZXggMWU0YmRmZjhiYjI0
NWUxZDY3NjFhN2E4ZjFjOTQ5YmJhYWMwODc0OS4uNzdhOTUwOWQwYTc0ZmFmYzFiMDI4Njg4NWQw
YzM5YjEyY2VhYjdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dh
ay9XQUtXaW5kb3cubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtX
aW5kb3cubW0KQEAgLTMzNyw3ICszMzcsOCBAQCAtICh2b2lkKXNlbmRFdmVudFN5bmNocm9ub3Vz
bHk6KFdlYkV2ZW50ICopYW5FdmVudAogICAgIEFTU0VSVChhbkV2ZW50KTsKICAgICBBU1NFUlQo
V2ViVGhyZWFkSXNMb2NrZWRPckRpc2FibGVkKCkpOwogICAgIFdlYkV2ZW50ICpsYXN0RXZlbnQg
PSBjdXJyZW50RXZlbnQ7Ci0gICAgY3VycmVudEV2ZW50ID0gW2FuRXZlbnQgcmV0YWluXTsKKyAg
ICBhdXRvIGN1cnJlbnRFdmVudFByb3RlY3RvciA9IHJldGFpblB0cihhbkV2ZW50KTsKKyAgICBj
dXJyZW50RXZlbnQgPSBhbkV2ZW50OwogCiAgICAgc3dpdGNoIChhbkV2ZW50LnR5cGUpIHsKICAg
ICBjYXNlIFdlYkV2ZW50TW91c2VNb3ZlZDoKQEAgLTM2NCw3ICszNjUsNiBAQCAtICh2b2lkKXNl
bmRFdmVudFN5bmNocm9ub3VzbHk6KFdlYkV2ZW50ICopYW5FdmVudAogICAgICAgICBicmVhazsK
ICAgICB9CiAKLSAgICBbY3VycmVudEV2ZW50IHJlbGVhc2VdOwogICAgIGN1cnJlbnRFdmVudCA9
IGxhc3RFdmVudDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L3dhay9XZWJDb3JlVGhyZWFkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9X
ZWJDb3JlVGhyZWFkLm1tCmluZGV4IGZhZWQ5MjQyZjgyMmMxNzhiNDQxZDMxOTUyYThmNTIyYTVi
NzE2NjEuLmY1NDBkZTA3NWNkZmMwZDkxMDBmZTlhNzMxNTc4YmRjNTU3ZWRjNjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KQEAgLTI4
MCwxOCArMjgwLDE1IEBAIHZvaWQgV2ViVGhyZWFkUnVuT25NYWluVGhyZWFkKHZvaWQoXmRlbGVn
YXRlQmxvY2spKCkpCiAKIHN0YXRpYyB2b2lkIE1haW5UaHJlYWRBZG9wdEFuZFJlbGVhc2UoaWQg
b2JqKQogewotICAgIGlmICghV2ViVGhyZWFkSXNFbmFibGVkKCkgfHwgQ0ZSdW5Mb29wR2V0TWFp
bigpID09IENGUnVuTG9vcEdldEN1cnJlbnQoKSkgewotICAgICAgICBbb2JqIHJlbGVhc2VdOwor
ICAgIGF1dG8gYWRvcHRlZE9iaiA9IGFkb3B0TlMob2JqKTsKKyAgICBpZiAoIVdlYlRocmVhZElz
RW5hYmxlZCgpIHx8IENGUnVuTG9vcEdldE1haW4oKSA9PSBDRlJ1bkxvb3BHZXRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKLSAgICB9CiAjaWYgTE9HX1JFTEVBU0VTCiAgICAgTlNMb2coQCJS
ZWxlYXNlIHNlbmQgW3dlYiB0aHJlYWRdIDogJUAiLCBvYmopOwogI2VuZGlmCiAgICAgLy8gV2Ug
b3duIG9iaiBhdCB0aGlzIHBvaW50LCBzbyB3ZSBkb24ndCBuZWVkIHRoZSBibG9jayB0byBpbXBs
aWNpdGx5CiAgICAgLy8gcmV0YWluIGl0LgotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
b2JqXSB7Ci0gICAgICAgIFtvYmogcmVsZWFzZV07Ci0gICAgfSk7CisgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFthZG9wdGVkT2JqID0gV1RGTW92ZShhZG9wdGVkT2JqKV0geyB9KTsKIH0K
IAogdm9pZCBXZWJUaHJlYWRBZG9wdEFuZFJlbGVhc2UoaWQgb2JqKQpAQCAtNDAyLDExICszOTks
MTEgQEAgc3RhdGljIHZvaWQgSGFuZGxlV2ViVGhyZWFkUmVsZWFzZVNvdXJjZSh2b2lkKikKIHsK
ICAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwogCi0gICAgQ0ZNdXRhYmxlQXJyYXlS
ZWYgb2JqZWN0cyA9IG51bGxwdHI7CisgICAgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPiBv
YmplY3RzOwogICAgIHsKICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh3ZWJUaHJlYWRS
ZWxlYXNlTG9jayk7CiAgICAgICAgIGlmIChDRkFycmF5R2V0Q291bnQoV2ViVGhyZWFkUmVsZWFz
ZU9iakFycmF5KSkgewotICAgICAgICAgICAgb2JqZWN0cyA9IENGQXJyYXlDcmVhdGVNdXRhYmxl
Q29weShudWxscHRyLCAwLCBXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkpOworICAgICAgICAgICAg
b2JqZWN0cyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGVDb3B5KG51bGxwdHIsIDAsIFdl
YlRocmVhZFJlbGVhc2VPYmpBcnJheSkpOwogICAgICAgICAgICAgQ0ZBcnJheVJlbW92ZUFsbFZh
bHVlcyhXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDE0
LDE1ICs0MTEsMTIgQEAgc3RhdGljIHZvaWQgSGFuZGxlV2ViVGhyZWFkUmVsZWFzZVNvdXJjZSh2
b2lkKikKICAgICBpZiAoIW9iamVjdHMpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZvciAodW5z
aWduZWQgaSA9IDAsIGNvdW50ID0gQ0ZBcnJheUdldENvdW50KG9iamVjdHMpOyBpIDwgY291bnQ7
ICsraSkgewotICAgICAgICBpZCBvYmogPSAoaWQpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChvYmpl
Y3RzLCBpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBjb3VudCA9IENGQXJyYXlHZXRDb3Vu
dChvYmplY3RzLmdldCgpKTsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgYXV0byBvYmogPSBh
ZG9wdENGKENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgob2JqZWN0cy5nZXQoKSwgaSkpOwogI2lmIExP
R19SRUxFQVNFUwotICAgICAgICBOU0xvZyhAIlJlbGVhc2UgcmVjdiBbd2ViIHRocmVhZF0gOiAl
QCIsIG9iaik7CisgICAgICAgIE5TTG9nKEAiUmVsZWFzZSByZWN2IFt3ZWIgdGhyZWFkXSA6ICVA
Iiwgb2JqLmdldCgpKTsKICNlbmRpZgotICAgICAgICBbb2JqIHJlbGVhc2VdOwogICAgIH0KLQot
ICAgIENGUmVsZWFzZShvYmplY3RzKTsKIH0KIAogdm9pZCBXZWJUaHJlYWRDYWxsRGVsZWdhdGUo
TlNJbnZvY2F0aW9uKiBpbnZvY2F0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlz
dG9yeS9XZWJIaXN0b3J5Lm1tCmluZGV4IDlhNjY2ODNmNmUzMmM0NDg2MDk5Y2U1Yzk1N2I5YzA3
MmM5Y2Y1NDYuLjE1MGQyNTA2Y2VjM2U4MGMwZTI2OTgwOGIzNjg0NjY2NGU1N2IyYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KQEAgLTY2MCw4
ICs2NjAsOCBAQCArICh2b2lkKXNldE9wdGlvbmFsU2hhcmVkSGlzdG9yeTooV2ViSGlzdG9yeSAq
KWhpc3RvcnkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBOZWVkIHRvIHRoaW5rIGFi
b3V0IG11bHRpcGxlIGluc3RhbmNlcyBvZiBXZWJIaXN0b3J5IHBlciBhcHBsaWNhdGlvbgogICAg
IC8vIGFuZCBjb3JyZWN0IHN5bmNocm9uaXphdGlvbiBvZiBoaXN0b3J5IGZpbGUgYmV0d2VlbiBh
cHBsaWNhdGlvbnMuCi0gICAgW19zaGFyZWRIaXN0b3J5IHJlbGVhc2VdOwotICAgIF9zaGFyZWRI
aXN0b3J5ID0gW2hpc3RvcnkgcmV0YWluXTsKKyAgICBhdXRvIG9sZEhpc3RvcnkgPSBhZG9wdE5T
KF9zaGFyZWRIaXN0b3J5KTsKKyAgICBfc2hhcmVkSGlzdG9yeSA9IHJldGFpblB0cihoaXN0b3J5
KS5sZWFrUmVmKCk7CiAKICAgICBXZWJWaXNpdGVkTGlua1N0b3JlOjpzZXRTaG91bGRUcmFja1Zp
c2l0ZWRMaW5rcyhoaXN0b3J5KTsKICAgICBXZWJWaXNpdGVkTGlua1N0b3JlOjpyZW1vdmVBbGxW
aXNpdGVkTGlua3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvV2ViUGx1Z2luRGF0YWJhc2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L1dlYlBsdWdpbkRhdGFiYXNlLm1tCmluZGV4IGRhMDQ4NjlkZGMxNWE0NmQwNWY5YjZlOWU2NjA3
Mjk0ZGRhZDlmMWMuLmUzYWZlOWEwODE3YWM2ZTljNTRiYTJiYzg4OWZkMzNjY2Q5Y2NkNDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luRGF0YWJh
c2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5EYXRh
YmFzZS5tbQpAQCAtMTkyLDcgKzE5Miw3IEBAICsgKHZvaWQpc2V0QWRkaXRpb25hbFdlYlBsdWdJ
blBhdGhzOihOU0FycmF5ICopYWRkaXRpb25hbFBhdGhzCiAgICAgaWYgKGFkZGl0aW9uYWxQYXRo
cyA9PSBhZGRpdGlvbmFsV2ViUGx1Z0luUGF0aHMpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAg
ICBbYWRkaXRpb25hbFdlYlBsdWdJblBhdGhzIHJlbGVhc2VdOworICAgIGF1dG8gb2xkUGF0aHMg
PSBhZG9wdE5TKGFkZGl0aW9uYWxXZWJQbHVnSW5QYXRocyk7CiAgICAgYWRkaXRpb25hbFdlYlBs
dWdJblBhdGhzID0gW2FkZGl0aW9uYWxQYXRocyBjb3B5XTsKIAogICAgIC8vIE9uZSBtaWdodCBi
ZSB0ZW1wdGVkIHRvIGFkZCBhZGRpdGlvbmFsV2ViUGx1Z0luUGF0aHMgdG8gdGhlIGdsb2JhbCBX
ZWJQbHVnaW5EYXRhYmFzZSBoZXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4IGZmODYzMDg2OWFl
ZTgzMzBmNzBhODdhODAwZjM1Mjc2Y2Y5Nzc4YTcuLjMxYWFjMTliNDgxZmIwNmU5YzEyNWEyNDUx
MTc2ZWExZDI4ZWFjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KQEAgLTEwMzQsOSArMTAzNCw4IEBA
IHZvaWQgV2ViQ2hyb21lQ2xpZW50OjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQm
IGVsZW1lbnQpCiB7CiAgICAgU0VMIHNlbGVjdG9yID0gQHNlbGVjdG9yKHdlYlZpZXc6ZW50ZXJG
dWxsU2NyZWVuRm9yRWxlbWVudDpsaXN0ZW5lcjopOwogICAgIGlmIChbW21fd2ViVmlldyBVSURl
bGVnYXRlXSByZXNwb25kc1RvU2VsZWN0b3I6c2VsZWN0b3JdKSB7Ci0gICAgICAgIFdlYktpdEZ1
bGxTY3JlZW5MaXN0ZW5lciogbGlzdGVuZXIgPSBbW1dlYktpdEZ1bGxTY3JlZW5MaXN0ZW5lciBh
bGxvY10gaW5pdFdpdGhFbGVtZW50OiZlbGVtZW50XTsKLSAgICAgICAgQ2FsbFVJRGVsZWdhdGUo
bV93ZWJWaWV3LCBzZWxlY3Rvciwga2l0KCZlbGVtZW50KSwgbGlzdGVuZXIpOwotICAgICAgICBb
bGlzdGVuZXIgcmVsZWFzZV07CisgICAgICAgIGF1dG8gbGlzdGVuZXIgPSBhZG9wdE5TKFtbV2Vi
S2l0RnVsbFNjcmVlbkxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aEVsZW1lbnQ6JmVsZW1lbnRdKTsK
KyAgICAgICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBzZWxlY3Rvciwga2l0KCZlbGVtZW50
KSwgbGlzdGVuZXIuZ2V0KCkpOwogICAgIH0KICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDg5Mzg3MGE1NDViOWI3NTRm
NDFkNGI2YzU2Yjk1MTNiMTQ2OGQ2OTAuLjJhYThjMzlhNDAzOTZiZmMxODEwNDQzNjlhM2M2MjBj
MzRlMDgwNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xMDM0LDE1ICsxMDM0
LDE0IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnkoKQog
ICAgIGlmIChbdmlldyBoaXN0b3J5RGVsZWdhdGVdKSB7CiAgICAgICAgIFdlYkhpc3RvcnlEZWxl
Z2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGltcGxlbWVudGF0aW9ucyA9IFdlYlZpZXdHZXRIaXN0
b3J5RGVsZWdhdGVJbXBsZW1lbnRhdGlvbnModmlldyk7CiAgICAgICAgIGlmIChpbXBsZW1lbnRh
dGlvbnMtPm5hdmlnYXRlZEZ1bmMpIHsKLSAgICAgICAgICAgIFdlYk5hdmlnYXRpb25EYXRhICpk
YXRhID0gW1tXZWJOYXZpZ2F0aW9uRGF0YSBhbGxvY10gaW5pdFdpdGhVUkxTdHJpbmc6bG9hZGVy
LT51cmwoKS5zdHJpbmcoKQorICAgICAgICAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW1dlYk5h
dmlnYXRpb25EYXRhIGFsbG9jXSBpbml0V2l0aFVSTFN0cmluZzpsb2FkZXItPnVybCgpLnN0cmlu
ZygpCiAgICAgICAgICAgICAgICAgdGl0bGU6bmlsT3JOU1N0cmluZyhsb2FkZXItPnRpdGxlKCku
c3RyaW5nKQogICAgICAgICAgICAgICAgIG9yaWdpbmFsUmVxdWVzdDpsb2FkZXItPm9yaWdpbmFs
UmVxdWVzdENvcHkoKS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6
OlVwZGF0ZUhUVFBCb2R5KQogICAgICAgICAgICAgICAgIHJlc3BvbnNlOmxvYWRlci0+cmVzcG9u
c2UoKS5uc1VSTFJlc3BvbnNlKCkKICAgICAgICAgICAgICAgICBoYXNTdWJzdGl0dXRlRGF0YTps
b2FkZXItPnN1YnN0aXR1dGVEYXRhKCkuaXNWYWxpZCgpCi0gICAgICAgICAgICAgICAgY2xpZW50
UmVkaXJlY3RTb3VyY2U6bG9hZGVyLT5jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkoKV07
CisgICAgICAgICAgICAgICAgY2xpZW50UmVkaXJlY3RTb3VyY2U6bG9hZGVyLT5jbGllbnRSZWRp
cmVjdFNvdXJjZUZvckhpc3RvcnkoKV0pOwogCi0gICAgICAgICAgICBDYWxsSGlzdG9yeURlbGVn
YXRlKGltcGxlbWVudGF0aW9ucy0+bmF2aWdhdGVkRnVuYywgdmlldywgQHNlbGVjdG9yKHdlYlZp
ZXc6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGE6aW5GcmFtZTopLCBkYXRhLCBtX3dlYkZy
YW1lLmdldCgpKTsKLSAgICAgICAgICAgIFtkYXRhIHJlbGVhc2VdOworICAgICAgICAgICAgQ2Fs
bEhpc3RvcnlEZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPm5hdmlnYXRlZEZ1bmMsIHZpZXcsIEBz
ZWxlY3Rvcih3ZWJWaWV3OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhOmluRnJhbWU6KSwg
ZGF0YS5nZXQoKSwgbV93ZWJGcmFtZS5nZXQoKSk7CiAgICAgICAgIH0KICAgICAKICAgICAgICAg
cmV0dXJuOwpAQCAtMTgwMCw4ICsxNzk5LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoWyhXZWJC
YXNlTmV0c2NhcGVQbHVnaW5WaWV3ICopcGxhdGZvcm1XaWRnZXQoKSBnZXRGb3JtVmFsdWU6Jm5z
VmFsdWVdKSB7CiAgICAgICAgICAgICBpZiAoIW5zVmFsdWUpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgdmFsdWUgPSBTdHJpbmcobnNWYWx1ZSk7Ci0gICAgICAg
ICAgICBbbnNWYWx1ZSByZWxlYXNlXTsKKyAgICAgICAgICAgIHZhbHVlID0gU3RyaW5nKGFkb3B0
TlMobnNWYWx1ZSkuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRWaWV3Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRWaWV3Lm1tCmluZGV4IDE3Mjdj
NjdmMzk0NGYyZDZmZTI4OGZiODg3YzUxNGEyN2EzN2QzYzQuLjIwZjE5ZjBiYzRiYjQ4ZGQyZGU1
OTA2ZDllMjdlM2IzYzM0YzI1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodFZpZXcubW0KQEAgLTExNSwx
MCArMTE1LDkgQEAgLSAodm9pZClfYXR0YWNoOihDQUxheWVyICopcGFyZW50IG51bUxheWVyczoo
TlNVSW50ZWdlciludW1MYXllcnMKICAgICAvLyBSZW1vdmUgYW5kIGNyZWF0ZSBuZXcgbGF5ZXJz
LgogICAgIFtzZWxmIF9yZW1vdmVBbGxMYXllcnNdOwogICAgIGZvciAoTlNVSW50ZWdlciBpID0g
MDsgaSA8IG51bUxheWVyczsgKytpKSB7Ci0gICAgICAgIENBU2hhcGVMYXllciAqbGF5ZXIgPSBb
W0NBU2hhcGVMYXllciBhbGxvY10gaW5pdF07Ci0gICAgICAgIFtfbGF5ZXJzIGFkZE9iamVjdDps
YXllcl07Ci0gICAgICAgIFtwYXJlbnQgYWRkU3VibGF5ZXI6bGF5ZXJdOwotICAgICAgICBbbGF5
ZXIgcmVsZWFzZV07CisgICAgICAgIGF1dG8gbGF5ZXIgPSBhZG9wdE5TKFtbQ0FTaGFwZUxheWVy
IGFsbG9jXSBpbml0XSk7CisgICAgICAgIFtfbGF5ZXJzIGFkZE9iamVjdDpsYXllci5nZXQoKV07
CisgICAgICAgIFtwYXJlbnQgYWRkU3VibGF5ZXI6bGF5ZXIuZ2V0KCldOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQppbmRl
eCA5NGUwYzkyZTFkMjNkNzVlZjEyZTc3NTlhOTljMzRjODFmNWJjZDA0Li42NGRkNzJlYmFiOThl
ZWIxYTJmMDZiMjRhNmNmOWVlNWMxNDFiYjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQpAQCAtMTg5LDIzICsxODksMjAgQEAgLShOU1Zp
ZXcgPFdlYkRvY3VtZW50Vmlldz4gKilfbWFrZURvY3VtZW50Vmlld0ZvckRhdGFTb3VyY2U6KFdl
YkRhdGFTb3VyY2UgKilkYXQKICAgICBpZiAoIU1JTUVUeXBlKQogICAgICAgICBNSU1FVHlwZSA9
IEAidGV4dC9odG1sIjsKICAgICBDbGFzcyB2aWV3Q2xhc3MgPSBbc2VsZiBfdmlld0NsYXNzRm9y
TUlNRVR5cGU6TUlNRVR5cGVdOwotICAgIE5TVmlldyA8V2ViRG9jdW1lbnRWaWV3PiAqZG9jdW1l
bnRWaWV3OworICAgIFJldGFpblB0cjxOU1ZpZXcgPFdlYkRvY3VtZW50Vmlldz4+IGRvY3VtZW50
VmlldzsKICAgICBpZiAodmlld0NsYXNzKSB7CiAgICAgICAgIC8vIElmIHRoZSBkYXRhU291cmNl
J3MgcmVwcmVzZW50YXRpb24gaGFzIGFscmVhZHkgYmVlbiBjcmVhdGVkLCBhbmQgaXQgaXMgYWxz
byB0aGUKICAgICAgICAgLy8gc2FtZSBjbGFzcyBhcyB0aGUgZGVzaXJlZCBkb2N1bWVudFZpZXcs
IHRoZW4gdXNlIGl0IGFzIHRoZSBkb2N1bWVudFZpZXcgaW5zdGVhZAogICAgICAgICAvLyBvZiBj
cmVhdGluZyBhbm90aGVyIG9uZSAoUmFkYXIgNDM0MDc4NykuCiAgICAgICAgIGlkIDxXZWJEb2N1
bWVudFJlcHJlc2VudGF0aW9uPiBkYXRhU291cmNlUmVwcmVzZW50YXRpb24gPSBbZGF0YVNvdXJj
ZSByZXByZXNlbnRhdGlvbl07CiAgICAgICAgIGlmIChkYXRhU291cmNlUmVwcmVzZW50YXRpb24g
JiYgW2RhdGFTb3VyY2VSZXByZXNlbnRhdGlvbiBjbGFzc10gPT0gdmlld0NsYXNzKQotICAgICAg
ICAgICAgZG9jdW1lbnRWaWV3ID0gKE5TVmlldyA8V2ViRG9jdW1lbnRWaWV3PiAqKVtkYXRhU291
cmNlUmVwcmVzZW50YXRpb24gcmV0YWluXTsKKyAgICAgICAgICAgIGRvY3VtZW50VmlldyA9IChO
U1ZpZXcgPFdlYkRvY3VtZW50Vmlldz4gKilkYXRhU291cmNlUmVwcmVzZW50YXRpb247CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIGRvY3VtZW50VmlldyA9IFsoTlNWaWV3IDxXZWJEb2N1bWVu
dFZpZXc+ICopW3ZpZXdDbGFzcyBhbGxvY10gaW5pdF07Ci0gICAgfSBlbHNlCi0gICAgICAgIGRv
Y3VtZW50VmlldyA9IG5pbDsKLSAgICAKLSAgICBbc2VsZiBfc2V0RG9jdW1lbnRWaWV3OmRvY3Vt
ZW50Vmlld107Ci0gICAgW2RvY3VtZW50VmlldyByZWxlYXNlXTsKKyAgICAgICAgICAgIGRvY3Vt
ZW50VmlldyA9IGFkb3B0TlMoWyhOU1ZpZXcgPFdlYkRvY3VtZW50Vmlldz4gKilbdmlld0NsYXNz
IGFsbG9jXSBpbml0XSk7CisgICAgfQogICAgIAotICAgIHJldHVybiBkb2N1bWVudFZpZXc7Cisg
ICAgW3NlbGYgX3NldERvY3VtZW50Vmlldzpkb2N1bWVudFZpZXcuZ2V0KCldOworICAgIHJldHVy
biBkb2N1bWVudFZpZXcuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAodm9pZClfc2V0V2ViRnJhbWU6
KFdlYkZyYW1lICopd2ViRnJhbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQppbmRleCA0OGU5MjBkZTA5ODE3NjIwNTY2NDdlMDFjZjU1OTdmZWMwMmZjZWYzLi44
NTY4YzBlY2E2M2QxMjhhOGVhOWY3ZjlkZTk4ZDc3YmVjZmMwNWY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xNDM4LDkgKzE0MzgsOSBAQCAtICh2
b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6KE5TU3RyaW5nICopZnJhbWVO
YW1lIGdyb3VwTmFtZTooTlNTdAogICAgIF9wcml2YXRlLT5tYWluRnJhbWVEb2N1bWVudFJlYWR5
ID0gTk87CiAgICAgX3ByaXZhdGUtPmRyYXdzQmFja2dyb3VuZCA9IFlFUzsKICNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKLSAgICBfcHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yID0gW1tOU0NvbG9y
IGNvbG9yV2l0aERldmljZVdoaXRlOjEgYWxwaGE6MV0gcmV0YWluXTsKKyAgICBfcHJpdmF0ZS0+
YmFja2dyb3VuZENvbG9yID0gYWRvcHROUyhbW05TQ29sb3IgY29sb3JXaXRoRGV2aWNlV2hpdGU6
MSBhbHBoYToxXSByZXRhaW5dKTsKICNlbHNlCi0gICAgX3ByaXZhdGUtPmJhY2tncm91bmRDb2xv
ciA9IENHQ29sb3JSZXRhaW4oV2ViQ29yZTo6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6
d2hpdGUpKTsKKyAgICBfcHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yID0gV2ViQ29yZTo6Y2FjaGVk
Q0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6d2hpdGUpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShN
QUMpCkBAIC0xNDU1LDggKzE0NTUsOCBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldp
dGhGcmFtZU5hbWU6KE5TU3RyaW5nICopZnJhbWVOYW1lIGdyb3VwTmFtZTooTlNTdAogI2lmIFBM
QVRGT1JNKE1BQykKICAgICBpZiAoQ2xhc3MgZ2VzdHVyZUNsYXNzID0gTlNDbGFzc0Zyb21TdHJp
bmcoQCJOU0ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyIikpIHsKICAgICAgICAgUmV0
YWluUHRyPE5TSW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXI+IHJlY29nbml6ZXIgPSBh
ZG9wdE5TKFsoTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplciAqKVtnZXN0dXJlQ2xh
c3MgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgX3ByaXZhdGUtPmltbWVkaWF0ZUFjdGlvbkNvbnRy
b2xsZXIgPSBbW1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoV2Vi
VmlldzpzZWxmIHJlY29nbml6ZXI6cmVjb2duaXplci5nZXQoKV07Ci0gICAgICAgIFtyZWNvZ25p
emVyIHNldERlbGVnYXRlOl9wcml2YXRlLT5pbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyXTsKKyAg
ICAgICAgX3ByaXZhdGUtPmltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV2Vi
SW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OnNlbGYgcmVj
b2duaXplcjpyZWNvZ25pemVyLmdldCgpXSk7CisgICAgICAgIFtyZWNvZ25pemVyIHNldERlbGVn
YXRlOl9wcml2YXRlLT5pbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLmdldCgpXTsKICAgICAgICAg
W3JlY29nbml6ZXIgc2V0RGVsYXlzUHJpbWFyeU1vdXNlQnV0dG9uRXZlbnRzOk5PXTsKICAgICB9
CiAjZW5kaWYKQEAgLTE1OTgsNyArMTU5OCw3IEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0
aW9uV2l0aEZyYW1lTmFtZTooTlNTdHJpbmcgKilmcmFtZU5hbWUgZ3JvdXBOYW1lOihOU1N0CiAg
ICAgW3NlbGYgX3VwZGF0ZVNjcmVlblNjYWxlRnJvbVdpbmRvd107CiAgICAgW1tOU05vdGlmaWNh
dGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxl
Y3Rvcihfd2FrV2luZG93U2NyZWVuU2NhbGVDaGFuZ2VkOikgbmFtZTpXQUtXaW5kb3dTY3JlZW5T
Y2FsZURpZENoYW5nZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKICAgICBbW05TTm90aWZpY2F0
aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVj
dG9yKF93YWtXaW5kb3dWaXNpYmlsaXR5Q2hhbmdlZDopIG5hbWU6V0FLV2luZG93VmlzaWJpbGl0
eURpZENoYW5nZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKLSAgICBfcHJpdmF0ZS0+X2ZpeGVk
UG9zaXRpb25Db250ZW50ID0gW1tXZWJGaXhlZFBvc2l0aW9uQ29udGVudCBhbGxvY10gaW5pdFdp
dGhXZWJWaWV3OnNlbGZdOworICAgIF9wcml2YXRlLT5fZml4ZWRQb3NpdGlvbkNvbnRlbnQgPSBh
ZG9wdE5TKFtbV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQgYWxsb2NdIGluaXRXaXRoV2ViVmlldzpz
ZWxmXSk7CiAjaWYgRU5BQkxFKE9SSUVOVEFUSU9OX0VWRU5UUykKICAgICBfcHJpdmF0ZS0+ZGV2
aWNlT3JpZW50YXRpb24gPSBbW3NlbGYgX1VJS2l0RGVsZWdhdGVGb3J3YXJkZXJdIGRldmljZU9y
aWVudGF0aW9uXTsKICNlbmRpZgpAQCAtMTc3OSw3ICsxNzc5LDcgQEAgLSAoaWQpaW5pdFNpbXBs
ZUhUTUxEb2N1bWVudFdpdGhTdHlsZTooTlNTdHJpbmcgKilzdHlsZSBmcmFtZTooQ0dSZWN0KWZy
YW1lIHByZWYKICAgICBfcHJpdmF0ZS0+cHJlZmVyZW5jZXMgPSBbcHJlZmVyZW5jZXMgcmV0YWlu
XTsKICAgICBfcHJpdmF0ZS0+bWFpbkZyYW1lRG9jdW1lbnRSZWFkeSA9IE5POwogICAgIF9wcml2
YXRlLT5kcmF3c0JhY2tncm91bmQgPSBZRVM7Ci0gICAgX3ByaXZhdGUtPmJhY2tncm91bmRDb2xv
ciA9IENHQ29sb3JSZXRhaW4oV2ViQ29yZTo6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6
d2hpdGUpKTsKKyAgICBfcHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yID0gV2ViQ29yZTo6Y2FjaGVk
Q0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6d2hpdGUpOwogCiAgICAgYXV0byBmcmFtZVZpZXcgPSBh
ZG9wdE5TKFtbV2ViRnJhbWVWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOiBDR1JlY3RNYWtlKDAs
MCxmcmFtZS5zaXplLndpZHRoLGZyYW1lLnNpemUuaGVpZ2h0KV0pOwogICAgIFtmcmFtZVZpZXcg
c2V0QXV0b3Jlc2l6aW5nTWFzazpOU1ZpZXdXaWR0aFNpemFibGUgfCBOU1ZpZXdIZWlnaHRTaXph
YmxlXTsKQEAgLTIzNjQsNyArMjM2NCw2IEBAIC0gKHZvaWQpX2Nsb3NlUGx1Z2luRGF0YWJhc2Vz
CiAgICAgaWYgKF9wcml2YXRlLT5wbHVnaW5EYXRhYmFzZSkgewogICAgICAgICBbX3ByaXZhdGUt
PnBsdWdpbkRhdGFiYXNlIGRlc3Ryb3lBbGxQbHVnaW5JbnN0YW5jZVZpZXdzXTsKICAgICAgICAg
W19wcml2YXRlLT5wbHVnaW5EYXRhYmFzZSBjbG9zZV07Ci0gICAgICAgIFtfcHJpdmF0ZS0+cGx1
Z2luRGF0YWJhc2UgcmVsZWFzZV07CiAgICAgICAgIF9wcml2YXRlLT5wbHVnaW5EYXRhYmFzZSA9
IG5pbDsKICAgICB9CiAjZW5kaWYKQEAgLTI1MDMsMTAgKzI1MDIsOCBAQCAtICh2b2lkKV9jbG9z
ZQogCiAgICAgW1dlYlByZWZlcmVuY2VzIF9yZW1vdmVSZWZlcmVuY2VGb3JJZGVudGlmaWVyOltz
ZWxmIHByZWZlcmVuY2VzSWRlbnRpZmllcl1dOwogCi0gICAgV2ViUHJlZmVyZW5jZXMgKnByZWZl
cmVuY2VzID0gX3ByaXZhdGUtPnByZWZlcmVuY2VzOwotICAgIF9wcml2YXRlLT5wcmVmZXJlbmNl
cyA9IG5pbDsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gYWRvcHROUyhzdGQ6OmV4Y2hhbmdlKF9w
cml2YXRlLT5wcmVmZXJlbmNlcywgbmlsKSk7CiAgICAgW3ByZWZlcmVuY2VzIGRpZFJlbW92ZUZy
b21XZWJWaWV3XTsKLSAgICBbcHJlZmVyZW5jZXMgcmVsZWFzZV07CiAKICAgICBbc2VsZiBfY2xv
c2VQbHVnaW5EYXRhYmFzZXNdOwogCkBAIC0yNjQwLDggKzI2MzcsOCBAQCArIChCT09MKV9pc0lj
b25Mb2FkaW5nRW5hYmxlZAogLSAoV2ViSW5zcGVjdG9yICopaW5zcGVjdG9yCiB7CiAgICAgaWYg
KCFfcHJpdmF0ZS0+aW5zcGVjdG9yKQotICAgICAgICBfcHJpdmF0ZS0+aW5zcGVjdG9yID0gW1tX
ZWJJbnNwZWN0b3IgYWxsb2NdIGluaXRXaXRoSW5zcGVjdGVkV2ViVmlldzpzZWxmXTsKLSAgICBy
ZXR1cm4gX3ByaXZhdGUtPmluc3BlY3RvcjsKKyAgICAgICAgX3ByaXZhdGUtPmluc3BlY3RvciA9
IGFkb3B0TlMoW1tXZWJJbnNwZWN0b3IgYWxsb2NdIGluaXRXaXRoSW5zcGVjdGVkV2ViVmlldzpz
ZWxmXSk7CisgICAgcmV0dXJuIF9wcml2YXRlLT5pbnNwZWN0b3IuZ2V0KCk7CiB9CiAKICNpZiBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKQEAgLTI2ODcsMTMgKzI2ODQsMTIgQEAgLSAodm9pZClz
ZXRTaG93aW5nSW5zcGVjdG9ySW5kaWNhdGlvbjooQk9PTClzaG93aW5nCiAKICAgICBpZiAoc2hv
d2luZykgewogICAgICAgICBpZiAoIV9wcml2YXRlLT5pbmRpY2F0ZUxheWVyKSB7Ci0gICAgICAg
ICAgICBfcHJpdmF0ZS0+aW5kaWNhdGVMYXllciA9IFtbV2ViSW5kaWNhdGVMYXllciBhbGxvY10g
aW5pdFdpdGhXZWJWaWV3OnNlbGZdOworICAgICAgICAgICAgX3ByaXZhdGUtPmluZGljYXRlTGF5
ZXIgPSBhZG9wdE5TKFtbV2ViSW5kaWNhdGVMYXllciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OnNl
bGZdKTsKICAgICAgICAgICAgIFtfcHJpdmF0ZS0+aW5kaWNhdGVMYXllciBzZXROZWVkc0xheW91
dF07Ci0gICAgICAgICAgICBbW1tzZWxmIHdpbmRvd10gaG9zdExheWVyXSBhZGRTdWJsYXllcjpf
cHJpdmF0ZS0+aW5kaWNhdGVMYXllcl07CisgICAgICAgICAgICBbW1tzZWxmIHdpbmRvd10gaG9z
dExheWVyXSBhZGRTdWJsYXllcjpfcHJpdmF0ZS0+aW5kaWNhdGVMYXllci5nZXQoKV07CiAgICAg
ICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBbX3ByaXZhdGUtPmluZGljYXRlTGF5ZXIgcmVt
b3ZlRnJvbVN1cGVybGF5ZXJdOwotICAgICAgICBbX3ByaXZhdGUtPmluZGljYXRlTGF5ZXIgcmVs
ZWFzZV07CiAgICAgICAgIF9wcml2YXRlLT5pbmRpY2F0ZUxheWVyID0gbmlsOwogICAgIH0KICNl
bHNlCkBAIC0yNzk2LDcgKzI3OTIsNiBAQCAtICh2b2lkKV9zZXRGb3JtRGVsZWdhdGU6IChpZDxX
ZWJGb3JtRGVsZWdhdGU+KWRlbGVnYXRlCiAgICAgX3ByaXZhdGUtPmZvcm1EZWxlZ2F0ZSA9IGRl
bGVnYXRlOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW19wcml2YXRlLT5mb3JtRGVs
ZWdhdGVGb3J3YXJkZXIgY2xlYXJUYXJnZXRdOwotICAgIFtfcHJpdmF0ZS0+Zm9ybURlbGVnYXRl
Rm9yd2FyZGVyIHJlbGVhc2VdOwogICAgIF9wcml2YXRlLT5mb3JtRGVsZWdhdGVGb3J3YXJkZXIg
PSBuaWw7CiAjZW5kaWYKIH0KQEAgLTI4MTMsOCArMjgwOCw4IEBAIC0gKGlkKV9mb3JtRGVsZWdh
dGVGb3J3YXJkZXIKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIGlmICghX3ByaXZhdGUtPmZv
cm1EZWxlZ2F0ZUZvcndhcmRlcikKLSAgICAgICAgX3ByaXZhdGUtPmZvcm1EZWxlZ2F0ZUZvcndh
cmRlciA9IFtbX1dlYlNhZmVGb3J3YXJkZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OltzZWxmIF9m
b3JtRGVsZWdhdGVdIGRlZmF1bHRUYXJnZXQ6W1dlYkRlZmF1bHRGb3JtRGVsZWdhdGUgc2hhcmVk
Rm9ybURlbGVnYXRlXV07Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5mb3JtRGVsZWdhdGVGb3J3YXJk
ZXI7CisgICAgICAgIF9wcml2YXRlLT5mb3JtRGVsZWdhdGVGb3J3YXJkZXIgPSBhZG9wdE5TKFtb
X1dlYlNhZmVGb3J3YXJkZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OltzZWxmIF9mb3JtRGVsZWdh
dGVdIGRlZmF1bHRUYXJnZXQ6W1dlYkRlZmF1bHRGb3JtRGVsZWdhdGUgc2hhcmVkRm9ybURlbGVn
YXRlXV0pOworICAgIHJldHVybiBfcHJpdmF0ZS0+Zm9ybURlbGVnYXRlRm9yd2FyZGVyLmdldCgp
OwogfQogCiAtIChpZClfZm9ybURlbGVnYXRlRm9yU2VsZWN0b3I6KFNFTClzZWxlY3RvcgpAQCAt
Mjk4Niw4ICsyOTgxLDggQEAgLSAoaWQpX1VJS2l0RGVsZWdhdGVGb3J3YXJkZXIKICAgICAgICAg
cmV0dXJuIG5pbDsKIAogICAgIGlmICghX3ByaXZhdGUtPlVJS2l0RGVsZWdhdGVGb3J3YXJkZXIp
Ci0gICAgICAgIF9wcml2YXRlLT5VSUtpdERlbGVnYXRlRm9yd2FyZGVyID0gW1tfV2ViU2FmZUZv
cndhcmRlciBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6X3ByaXZhdGUtPlVJS2l0RGVsZWdhdGUgZGVm
YXVsdFRhcmdldDpbV2ViRGVmYXVsdFVJS2l0RGVsZWdhdGUgc2hhcmVkVUlLaXREZWxlZ2F0ZV1d
OwotICAgIHJldHVybiBfcHJpdmF0ZS0+VUlLaXREZWxlZ2F0ZUZvcndhcmRlcjsKKyAgICAgICAg
X3ByaXZhdGUtPlVJS2l0RGVsZWdhdGVGb3J3YXJkZXIgPSBhZG9wdE5TKFtbX1dlYlNhZmVGb3J3
YXJkZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0Ol9wcml2YXRlLT5VSUtpdERlbGVnYXRlIGRlZmF1
bHRUYXJnZXQ6W1dlYkRlZmF1bHRVSUtpdERlbGVnYXRlIHNoYXJlZFVJS2l0RGVsZWdhdGVdXSk7
CisgICAgcmV0dXJuIF9wcml2YXRlLT5VSUtpdERlbGVnYXRlRm9yd2FyZGVyLmdldCgpOwogfQog
I2VuZGlmCiAKQEAgLTMxNTAsOCArMzE0NSw4IEBAIC0gKGlkKV9wb2xpY3lEZWxlZ2F0ZUZvcndh
cmRlcgogICAgICAgICByZXR1cm4gbmlsOwogI2VuZGlmCiAgICAgaWYgKCFfcHJpdmF0ZS0+cG9s
aWN5RGVsZWdhdGVGb3J3YXJkZXIpCi0gICAgICAgIF9wcml2YXRlLT5wb2xpY3lEZWxlZ2F0ZUZv
cndhcmRlciA9IFtbX1dlYlNhZmVGb3J3YXJkZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0Ol9wcml2
YXRlLT5wb2xpY3lEZWxlZ2F0ZSBkZWZhdWx0VGFyZ2V0OltXZWJEZWZhdWx0UG9saWN5RGVsZWdh
dGUgc2hhcmVkUG9saWN5RGVsZWdhdGVdXTsKLSAgICByZXR1cm4gX3ByaXZhdGUtPnBvbGljeURl
bGVnYXRlRm9yd2FyZGVyOworICAgICAgICBfcHJpdmF0ZS0+cG9saWN5RGVsZWdhdGVGb3J3YXJk
ZXIgPSBhZG9wdE5TKFtbX1dlYlNhZmVGb3J3YXJkZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0Ol9w
cml2YXRlLT5wb2xpY3lEZWxlZ2F0ZSBkZWZhdWx0VGFyZ2V0OltXZWJEZWZhdWx0UG9saWN5RGVs
ZWdhdGUgc2hhcmVkUG9saWN5RGVsZWdhdGVdXSk7CisgICAgcmV0dXJuIF9wcml2YXRlLT5wb2xp
Y3lEZWxlZ2F0ZUZvcndhcmRlci5nZXQoKTsKIH0KIAogLSAoaWQpX1VJRGVsZWdhdGVGb3J3YXJk
ZXIKQEAgLTMxNjEsOCArMzE1Niw4IEBAIC0gKGlkKV9VSURlbGVnYXRlRm9yd2FyZGVyCiAgICAg
ICAgIHJldHVybiBuaWw7CiAjZW5kaWYKICAgICBpZiAoIV9wcml2YXRlLT5VSURlbGVnYXRlRm9y
d2FyZGVyKQotICAgICAgICBfcHJpdmF0ZS0+VUlEZWxlZ2F0ZUZvcndhcmRlciA9IFtbX1dlYlNh
ZmVGb3J3YXJkZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0Ol9wcml2YXRlLT5VSURlbGVnYXRlIGRl
ZmF1bHRUYXJnZXQ6W1dlYkRlZmF1bHRVSURlbGVnYXRlIHNoYXJlZFVJRGVsZWdhdGVdXTsKLSAg
ICByZXR1cm4gX3ByaXZhdGUtPlVJRGVsZWdhdGVGb3J3YXJkZXI7CisgICAgICAgIF9wcml2YXRl
LT5VSURlbGVnYXRlRm9yd2FyZGVyID0gYWRvcHROUyhbW19XZWJTYWZlRm9yd2FyZGVyIGFsbG9j
XSBpbml0V2l0aFRhcmdldDpfcHJpdmF0ZS0+VUlEZWxlZ2F0ZSBkZWZhdWx0VGFyZ2V0OltXZWJE
ZWZhdWx0VUlEZWxlZ2F0ZSBzaGFyZWRVSURlbGVnYXRlXV0pOworICAgIHJldHVybiBfcHJpdmF0
ZS0+VUlEZWxlZ2F0ZUZvcndhcmRlci5nZXQoKTsKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCkBAIC0zMTkyLDggKzMxODcsOCBAQCAtIChpZClfZWRpdGluZ0RlbGVnYXRlRm9yd2FyZGVy
CiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBpZiAoIV9wcml2YXRlLT5lZGl0aW5nRGVsZWdh
dGVGb3J3YXJkZXIpCi0gICAgICAgIF9wcml2YXRlLT5lZGl0aW5nRGVsZWdhdGVGb3J3YXJkZXIg
PSBbW19XZWJTYWZlRm9yd2FyZGVyIGFsbG9jXSBpbml0V2l0aFRhcmdldDpfcHJpdmF0ZS0+ZWRp
dGluZ0RlbGVnYXRlIGRlZmF1bHRUYXJnZXQ6W1dlYkRlZmF1bHRFZGl0aW5nRGVsZWdhdGUgc2hh
cmVkRWRpdGluZ0RlbGVnYXRlXV07Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5lZGl0aW5nRGVsZWdh
dGVGb3J3YXJkZXI7CisgICAgICAgIF9wcml2YXRlLT5lZGl0aW5nRGVsZWdhdGVGb3J3YXJkZXIg
PSBhZG9wdE5TKFtbX1dlYlNhZmVGb3J3YXJkZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0Ol9wcml2
YXRlLT5lZGl0aW5nRGVsZWdhdGUgZGVmYXVsdFRhcmdldDpbV2ViRGVmYXVsdEVkaXRpbmdEZWxl
Z2F0ZSBzaGFyZWRFZGl0aW5nRGVsZWdhdGVdXSk7CisgICAgcmV0dXJuIF9wcml2YXRlLT5lZGl0
aW5nRGVsZWdhdGVGb3J3YXJkZXIuZ2V0KCk7CiB9CiAKICsgKHZvaWQpX3VucmVnaXN0ZXJWaWV3
Q2xhc3NBbmRSZXByZXNlbnRhdGlvbkNsYXNzRm9yTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5
cGUKQEAgLTM1NDMsNyArMzUzOCw2IEBAIC0gKHZvaWQpX3NldFVJS2l0RGVsZWdhdGU6KGlkKWRl
bGVnYXRlCiB7CiAgICAgX3ByaXZhdGUtPlVJS2l0RGVsZWdhdGUgPSBkZWxlZ2F0ZTsKICAgICBb
X3ByaXZhdGUtPlVJS2l0RGVsZWdhdGVGb3J3YXJkZXIgY2xlYXJUYXJnZXRdOwotICAgIFtfcHJp
dmF0ZS0+VUlLaXREZWxlZ2F0ZUZvcndhcmRlciByZWxlYXNlXTsKICAgICBfcHJpdmF0ZS0+VUlL
aXREZWxlZ2F0ZUZvcndhcmRlciA9IG5pbDsKIH0KIApAQCAtMzU3NCwxMyArMzU2OCwxMyBAQCAt
ICh2b2lkKXNldENhcmV0Q2hhbmdlTGlzdGVuZXI6KGlkIDxXZWJDYXJldENoYW5nZUxpc3RlbmVy
PilsaXN0ZW5lcgogCiAtIChOU1NldCAqKWNhcmV0Q2hhbmdlTGlzdGVuZXJzCiB7Ci0gICAgcmV0
dXJuIF9wcml2YXRlLT5fY2FyZXRDaGFuZ2VMaXN0ZW5lcnM7CisgICAgcmV0dXJuIF9wcml2YXRl
LT5fY2FyZXRDaGFuZ2VMaXN0ZW5lcnMuZ2V0KCk7CiB9CiAKIC0gKHZvaWQpYWRkQ2FyZXRDaGFu
Z2VMaXN0ZW5lcjooaWQgPFdlYkNhcmV0Q2hhbmdlTGlzdGVuZXI+KWxpc3RlbmVyCiB7CiAgICAg
aWYgKF9wcml2YXRlLT5fY2FyZXRDaGFuZ2VMaXN0ZW5lcnMgPT0gbmlsKSB7Ci0gICAgICAgIF9w
cml2YXRlLT5fY2FyZXRDaGFuZ2VMaXN0ZW5lcnMgPSBbW05TTXV0YWJsZVNldCBhbGxvY10gaW5p
dF07CisgICAgICAgIF9wcml2YXRlLT5fY2FyZXRDaGFuZ2VMaXN0ZW5lcnMgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0XSk7CiAgICAgfQogCiAgICAgW19wcml2YXRlLT5fY2Fy
ZXRDaGFuZ2VMaXN0ZW5lcnMgYWRkT2JqZWN0Omxpc3RlbmVyXTsKQEAgLTM3MTMsNyArMzcwNyw3
IEBAIC0gKHZvaWQpX3NldENvb2tpZUVuYWJsZWQ6KEJPT0wpZW5hYmxlCiAtICh2b2lkKV9zZXRB
ZGRpdGlvbmFsV2ViUGx1Z0luUGF0aHM6KE5TQXJyYXkgKiluZXdQYXRocwogewogICAgIGlmICgh
X3ByaXZhdGUtPnBsdWdpbkRhdGFiYXNlKQotICAgICAgICBfcHJpdmF0ZS0+cGx1Z2luRGF0YWJh
c2UgPSBbW1dlYlBsdWdpbkRhdGFiYXNlIGFsbG9jXSBpbml0XTsKKyAgICAgICAgX3ByaXZhdGUt
PnBsdWdpbkRhdGFiYXNlID0gYWRvcHROUyhbW1dlYlBsdWdpbkRhdGFiYXNlIGFsbG9jXSBpbml0
XSk7CiAKICAgICBbX3ByaXZhdGUtPnBsdWdpbkRhdGFiYXNlIHNldFBsdWdJblBhdGhzOm5ld1Bh
dGhzXTsKICAgICBbX3ByaXZhdGUtPnBsdWdpbkRhdGFiYXNlIHJlZnJlc2hdOwpAQCAtMzg0Niwz
MyArMzg0MCwyOSBAQCAtICh2b2lkKXNldEJhY2tncm91bmRDb2xvcjooTlNDb2xvciAqKWJhY2tn
cm91bmRDb2xvcgogICAgIGlmIChbX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvciBpc0VxdWFsOmJh
Y2tncm91bmRDb2xvcl0pCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gb2xkID0gYWRvcHRO
UyhfcHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yKTsKLSAgICBfcHJpdmF0ZS0+YmFja2dyb3VuZENv
bG9yID0gW2JhY2tncm91bmRDb2xvciByZXRhaW5dOworICAgIF9wcml2YXRlLT5iYWNrZ3JvdW5k
Q29sb3IgPSBiYWNrZ3JvdW5kQ29sb3I7CiAKICAgICBbW3NlbGYgbWFpbkZyYW1lXSBfdXBkYXRl
QmFja2dyb3VuZEFuZFVwZGF0ZXNXaGlsZU9mZnNjcmVlbl07CiB9CiAKIC0gKE5TQ29sb3IgKili
YWNrZ3JvdW5kQ29sb3IKIHsKLSAgICByZXR1cm4gX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvcjsK
KyAgICByZXR1cm4gX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvci5nZXQoKTsKIH0KICNlbHNlCiAt
ICh2b2lkKXNldEJhY2tncm91bmRDb2xvcjooQ0dDb2xvclJlZiliYWNrZ3JvdW5kQ29sb3IKIHsK
LSAgIGlmICghYmFja2dyb3VuZENvbG9yIHx8IENGRXF1YWwoX3ByaXZhdGUtPmJhY2tncm91bmRD
b2xvciwgYmFja2dyb3VuZENvbG9yKSkKKyAgIGlmICghYmFja2dyb3VuZENvbG9yIHx8IENGRXF1
YWwoX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvci5nZXQoKSwgYmFja2dyb3VuZENvbG9yKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgQ0ZUeXBlUmVmIG9sZCA9IF9wcml2YXRlLT5iYWNrZ3JvdW5k
Q29sb3I7Ci0gICAgQ0ZSZXRhaW4oYmFja2dyb3VuZENvbG9yKTsKICAgICBfcHJpdmF0ZS0+YmFj
a2dyb3VuZENvbG9yID0gYmFja2dyb3VuZENvbG9yOwotICAgIENGUmVsZWFzZShvbGQpOwogCiAg
ICAgW1tzZWxmIG1haW5GcmFtZV0gX3VwZGF0ZUJhY2tncm91bmRBbmRVcGRhdGVzV2hpbGVPZmZz
Y3JlZW5dOwogfQogCiAtIChDR0NvbG9yUmVmKWJhY2tncm91bmRDb2xvcgogewotICAgIHJldHVy
biBfcHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yOworICAgIHJldHVybiBfcHJpdmF0ZS0+YmFja2dy
b3VuZENvbG9yLmdldCgpOwogfQogI2VuZGlmCiAKQEAgLTQ3NjYsNyArNDc1Niw3IEBAIC0gKHZv
aWQpX2RpZFNjcm9sbERvY3VtZW50SW5GcmFtZVZpZXc6KFdlYkZyYW1lVmlldyAqKWZyYW1lVmll
dwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChXZWJGaXhlZFBvc2l0aW9uQ29udGVudCop
X2ZpeGVkUG9zaXRpb25Db250ZW50CiB7Ci0gICAgcmV0dXJuIF9wcml2YXRlID8gX3ByaXZhdGUt
Pl9maXhlZFBvc2l0aW9uQ29udGVudCA6IG5pbDsKKyAgICByZXR1cm4gX3ByaXZhdGUgPyBfcHJp
dmF0ZS0+X2ZpeGVkUG9zaXRpb25Db250ZW50LmdldCgpIDogbmlsOwogfQogCiAtICh2b2lkKV9k
b2N1bWVudFNjYWxlQ2hhbmdlZApAQCAtNTgzMiw3ICs1ODIyLDYgQEAgLSAodm9pZClzZXRVSURl
bGVnYXRlOmRlbGVnYXRlCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbX3ByaXZhdGUt
PlVJRGVsZWdhdGVGb3J3YXJkZXIgY2xlYXJUYXJnZXRdOwogI2VuZGlmCi0gICAgW19wcml2YXRl
LT5VSURlbGVnYXRlRm9yd2FyZGVyIHJlbGVhc2VdOwogICAgIF9wcml2YXRlLT5VSURlbGVnYXRl
Rm9yd2FyZGVyID0gbmlsOwogfQogCkBAIC01ODQ4LDggKzU4MzcsOCBAQCAtIChpZClfcmVzb3Vy
Y2VMb2FkRGVsZWdhdGVGb3J3YXJkZXIKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIGlmICgh
X3ByaXZhdGUtPnJlc291cmNlUHJvZ3Jlc3NEZWxlZ2F0ZUZvcndhcmRlcikKLSAgICAgICAgX3By
aXZhdGUtPnJlc291cmNlUHJvZ3Jlc3NEZWxlZ2F0ZUZvcndhcmRlciA9IFtbX1dlYlNhZmVGb3J3
YXJkZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OltzZWxmIHJlc291cmNlTG9hZERlbGVnYXRlXSBk
ZWZhdWx0VGFyZ2V0OltXZWJEZWZhdWx0UmVzb3VyY2VMb2FkRGVsZWdhdGUgc2hhcmVkUmVzb3Vy
Y2VMb2FkRGVsZWdhdGVdXTsKLSAgICByZXR1cm4gX3ByaXZhdGUtPnJlc291cmNlUHJvZ3Jlc3NE
ZWxlZ2F0ZUZvcndhcmRlcjsKKyAgICAgICAgX3ByaXZhdGUtPnJlc291cmNlUHJvZ3Jlc3NEZWxl
Z2F0ZUZvcndhcmRlciA9IGFkb3B0TlMoW1tfV2ViU2FmZUZvcndhcmRlciBhbGxvY10gaW5pdFdp
dGhUYXJnZXQ6W3NlbGYgcmVzb3VyY2VMb2FkRGVsZWdhdGVdIGRlZmF1bHRUYXJnZXQ6W1dlYkRl
ZmF1bHRSZXNvdXJjZUxvYWREZWxlZ2F0ZSBzaGFyZWRSZXNvdXJjZUxvYWREZWxlZ2F0ZV1dKTsK
KyAgICByZXR1cm4gX3ByaXZhdGUtPnJlc291cmNlUHJvZ3Jlc3NEZWxlZ2F0ZUZvcndhcmRlci5n
ZXQoKTsKIH0KICNlbmRpZgogCkBAIC01ODU3LDcgKzU4NDYsNiBAQCAtICh2b2lkKXNldFJlc291
cmNlTG9hZERlbGVnYXRlOiBkZWxlZ2F0ZQogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgW19wcml2YXRlLT5yZXNvdXJjZVByb2dyZXNzRGVsZWdhdGVGb3J3YXJkZXIgY2xlYXJUYXJn
ZXRdOwotICAgIFtfcHJpdmF0ZS0+cmVzb3VyY2VQcm9ncmVzc0RlbGVnYXRlRm9yd2FyZGVyIHJl
bGVhc2VdOwogICAgIF9wcml2YXRlLT5yZXNvdXJjZVByb2dyZXNzRGVsZWdhdGVGb3J3YXJkZXIg
PSBuaWw7CiAjZW5kaWYKICAgICBfcHJpdmF0ZS0+cmVzb3VyY2VQcm9ncmVzc0RlbGVnYXRlID0g
ZGVsZWdhdGU7CkBAIC01ODg2LDcgKzU4NzQsNiBAQCAtICh2b2lkKXNldFBvbGljeURlbGVnYXRl
OmRlbGVnYXRlCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbX3ByaXZhdGUtPnBvbGlj
eURlbGVnYXRlRm9yd2FyZGVyIGNsZWFyVGFyZ2V0XTsKICNlbmRpZgotICAgIFtfcHJpdmF0ZS0+
cG9saWN5RGVsZWdhdGVGb3J3YXJkZXIgcmVsZWFzZV07CiAgICAgX3ByaXZhdGUtPnBvbGljeURl
bGVnYXRlRm9yd2FyZGVyID0gbmlsOwogfQogCkBAIC01OTAyLDggKzU4ODksOCBAQCAtIChpZClf
ZnJhbWVMb2FkRGVsZWdhdGVGb3J3YXJkZXIKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIGlm
ICghX3ByaXZhdGUtPmZyYW1lTG9hZERlbGVnYXRlRm9yd2FyZGVyKQotICAgICAgICBfcHJpdmF0
ZS0+ZnJhbWVMb2FkRGVsZWdhdGVGb3J3YXJkZXIgPSBbW19XZWJTYWZlRm9yd2FyZGVyIGFsbG9j
XSBpbml0V2l0aFRhcmdldDpbc2VsZiBmcmFtZUxvYWREZWxlZ2F0ZV0gZGVmYXVsdFRhcmdldDpb
V2ViRGVmYXVsdEZyYW1lTG9hZERlbGVnYXRlIHNoYXJlZEZyYW1lTG9hZERlbGVnYXRlXV07Ci0g
ICAgcmV0dXJuIF9wcml2YXRlLT5mcmFtZUxvYWREZWxlZ2F0ZUZvcndhcmRlcjsKKyAgICAgICAg
X3ByaXZhdGUtPmZyYW1lTG9hZERlbGVnYXRlRm9yd2FyZGVyID0gYWRvcHROUyhbW19XZWJTYWZl
Rm9yd2FyZGVyIGFsbG9jXSBpbml0V2l0aFRhcmdldDpbc2VsZiBmcmFtZUxvYWREZWxlZ2F0ZV0g
ZGVmYXVsdFRhcmdldDpbV2ViRGVmYXVsdEZyYW1lTG9hZERlbGVnYXRlIHNoYXJlZEZyYW1lTG9h
ZERlbGVnYXRlXV0pOworICAgIHJldHVybiBfcHJpdmF0ZS0+ZnJhbWVMb2FkRGVsZWdhdGVGb3J3
YXJkZXIuZ2V0KCk7CiB9CiAjZW5kaWYKIApAQCAtNTkyMCw3ICs1OTA3LDYgQEAgLSAodm9pZClz
ZXRGcmFtZUxvYWREZWxlZ2F0ZTpkZWxlZ2F0ZQogICAgIH0KICNlbHNlCiAgICAgW19wcml2YXRl
LT5mcmFtZUxvYWREZWxlZ2F0ZUZvcndhcmRlciBjbGVhclRhcmdldF07Ci0gICAgW19wcml2YXRl
LT5mcmFtZUxvYWREZWxlZ2F0ZUZvcndhcmRlciByZWxlYXNlXTsKICAgICBfcHJpdmF0ZS0+ZnJh
bWVMb2FkRGVsZWdhdGVGb3J3YXJkZXIgPSBuaWw7CiAjZW5kaWYKIApAQCAtNjEzOSw5ICs2MTI1
LDcgQEAgLSAoSUJBY3Rpb24pX3Jlc2V0Wm9vbTooaWQpc2VuZGVyIGlzVGV4dE9ubHk6KEJPT0wp
aXNUZXh0T25seQogCiAtICh2b2lkKXNldEFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudDooTlNT
dHJpbmcgKilhcHBsaWNhdGlvbk5hbWUKIHsKLSAgICBOU1N0cmluZyAqbmFtZSA9IFthcHBsaWNh
dGlvbk5hbWUgY29weV07Ci0gICAgW19wcml2YXRlLT5hcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdl
bnQgcmVsZWFzZV07Ci0gICAgX3ByaXZhdGUtPmFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9
IG5hbWU7CisgICAgX3ByaXZhdGUtPmFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IGFkb3B0
TlMoW2FwcGxpY2F0aW9uTmFtZSBjb3B5XSk7CiAgICAgaWYgKCFfcHJpdmF0ZS0+dXNlckFnZW50
T3ZlcnJpZGRlbikKICAgICAgICAgW3NlbGYgX2ludmFsaWRhdGVVc2VyQWdlbnRDYWNoZV07CiB9
CkBAIC02MTU4LDcgKzYxNDIsOCBAQCAtICh2b2lkKV9pbnZhbGlkYXRlVXNlckFnZW50Q2FjaGUK
IAogLSAoTlNTdHJpbmcgKilhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQKIHsKLSAgICByZXR1
cm4gW1tfcHJpdmF0ZS0+YXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50IHJldGFpbl0gYXV0b3Jl
bGVhc2VdOworICAgIGF1dG8gYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50Q29weSA9IF9wcml2
YXRlLT5hcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQ7CisgICAgcmV0dXJuIGFwcGxpY2F0aW9u
TmFtZUZvclVzZXJBZ2VudENvcHkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAodm9pZClzZXRDdXN0
b21Vc2VyQWdlbnQ6KE5TU3RyaW5nICopdXNlckFnZW50U3RyaW5nCkBAIC02MTc4LDE0ICs2MTYz
LDEzIEBAIC0gKE5TU3RyaW5nICopY3VzdG9tVXNlckFnZW50CiAtICh2b2lkKXNldE1lZGlhU3R5
bGU6KE5TU3RyaW5nICopbWVkaWFTdHlsZQogewogICAgIGlmIChfcHJpdmF0ZS0+bWVkaWFTdHls
ZSAhPSBtZWRpYVN0eWxlKSB7Ci0gICAgICAgIFtfcHJpdmF0ZS0+bWVkaWFTdHlsZSByZWxlYXNl
XTsKLSAgICAgICAgX3ByaXZhdGUtPm1lZGlhU3R5bGUgPSBbbWVkaWFTdHlsZSBjb3B5XTsKKyAg
ICAgICAgX3ByaXZhdGUtPm1lZGlhU3R5bGUgPSBhZG9wdE5TKFttZWRpYVN0eWxlIGNvcHldKTsK
ICAgICB9CiB9CiAKIC0gKE5TU3RyaW5nICopbWVkaWFTdHlsZQogewotICAgIHJldHVybiBfcHJp
dmF0ZS0+bWVkaWFTdHlsZTsKKyAgICByZXR1cm4gX3ByaXZhdGUtPm1lZGlhU3R5bGUuZ2V0KCk7
CiB9CiAKIC0gKEJPT0wpc3VwcG9ydHNUZXh0RW5jb2RpbmcKQEAgLTYyNTgsNyArNjI0Miw3IEBA
IC0gKFdlYlNjcmlwdE9iamVjdCAqKXdpbmRvd1NjcmlwdE9iamVjdAogLSAoU3RyaW5nKV91c2Vy
QWdlbnRTdHJpbmcKIHsKICAgICBpZiAoX3ByaXZhdGUtPnVzZXJBZ2VudC5pc051bGwoKSkKLSAg
ICAgICAgX3ByaXZhdGUtPnVzZXJBZ2VudCA9IFtbc2VsZiBjbGFzc10gX3N0YW5kYXJkVXNlckFn
ZW50V2l0aEFwcGxpY2F0aW9uTmFtZTpfcHJpdmF0ZS0+YXBwbGljYXRpb25OYW1lRm9yVXNlckFn
ZW50XTsKKyAgICAgICAgX3ByaXZhdGUtPnVzZXJBZ2VudCA9IFtbc2VsZiBjbGFzc10gX3N0YW5k
YXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZTpfcHJpdmF0ZS0+YXBwbGljYXRpb25OYW1l
Rm9yVXNlckFnZW50LmdldCgpXTsKIAogICAgIHJldHVybiBfcHJpdmF0ZS0+dXNlckFnZW50Owog
fQpAQCAtNjI4MSwxMiArNjI2NSwxMSBAQCAtICh2b2lkKXNldEhvc3RXaW5kb3c6KE5TV2luZG93
ICopaG9zdFdpbmRvdwogICAgIGZvciAoYXV0byogZnJhbWUgPSBjb3JlRnJhbWU7IGZyYW1lOyBm
cmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KGNvcmVGcmFtZSkpCiAgICAgICAgIFtb
W2tpdChmcmFtZSkgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIHZpZXdXaWxsTW92ZVRvSG9zdFdp
bmRvdzpob3N0V2luZG93XTsKICAgICBpZiAoX3ByaXZhdGUtPmhvc3RXaW5kb3cgJiYgW3NlbGYg
d2luZG93XSAhPSBfcHJpdmF0ZS0+aG9zdFdpbmRvdykKLSAgICAgICAgW1tOU05vdGlmaWNhdGlv
bkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmIG5hbWU6TlNXaW5kb3dX
aWxsQ2xvc2VOb3RpZmljYXRpb24gb2JqZWN0Ol9wcml2YXRlLT5ob3N0V2luZG93XTsKKyAgICAg
ICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpz
ZWxmIG5hbWU6TlNXaW5kb3dXaWxsQ2xvc2VOb3RpZmljYXRpb24gb2JqZWN0Ol9wcml2YXRlLT5o
b3N0V2luZG93LmdldCgpXTsKICAgICBpZiAoaG9zdFdpbmRvdykKICAgICAgICAgW1tOU05vdGlm
aWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBz
ZWxlY3Rvcihfd2luZG93V2lsbENsb3NlOikgbmFtZTpOU1dpbmRvd1dpbGxDbG9zZU5vdGlmaWNh
dGlvbiBvYmplY3Q6aG9zdFdpbmRvd107CiAjZW5kaWYKLSAgICBbX3ByaXZhdGUtPmhvc3RXaW5k
b3cgcmVsZWFzZV07Ci0gICAgX3ByaXZhdGUtPmhvc3RXaW5kb3cgPSBbaG9zdFdpbmRvdyByZXRh
aW5dOworICAgIF9wcml2YXRlLT5ob3N0V2luZG93ID0gaG9zdFdpbmRvdzsKICAgICBmb3IgKGF1
dG8qIGZyYW1lID0gY29yZUZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZl
cnNlTmV4dChjb3JlRnJhbWUpKQogICAgICAgICBbW1traXQoZnJhbWUpIGZyYW1lVmlld10gZG9j
dW1lbnRWaWV3XSB2aWV3RGlkTW92ZVRvSG9zdFdpbmRvd107CiAjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCkBAIC02MzAxLDcgKzYyODQsNyBAQCAtIChOU1dpbmRvdyAqKWhvc3RXaW5kb3cKICAg
ICBpZiAoIV9wcml2YXRlKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIF9wcml2
YXRlLT5ob3N0V2luZG93OworICAgIHJldHVybiBfcHJpdmF0ZS0+aG9zdFdpbmRvdy5nZXQoKTsK
IH0KIAogLSAoTlNWaWV3IDxXZWJEb2N1bWVudFZpZXc+ICopZG9jdW1lbnRWaWV3QXRXaW5kb3dQ
b2ludDooTlNQb2ludClwb2ludApAQCAtNjc4OCwxMyArNjc3MSwxMiBAQCAtIChCT09MKXNob3Vs
ZFVwZGF0ZVdoaWxlT2Zmc2NyZWVuCiAKIC0gKHZvaWQpc2V0Q3VycmVudE5vZGVIaWdobGlnaHQ6
KFdlYk5vZGVIaWdobGlnaHQgKilub2RlSGlnaGxpZ2h0CiB7Ci0gICAgYXV0byBvbGQgPSBhZG9w
dE5TKF9wcml2YXRlLT5jdXJyZW50Tm9kZUhpZ2hsaWdodCk7Ci0gICAgX3ByaXZhdGUtPmN1cnJl
bnROb2RlSGlnaGxpZ2h0ID0gW25vZGVIaWdobGlnaHQgcmV0YWluXTsKKyAgICBfcHJpdmF0ZS0+
Y3VycmVudE5vZGVIaWdobGlnaHQgPSBub2RlSGlnaGxpZ2h0OwogfQogCiAtIChXZWJOb2RlSGln
aGxpZ2h0ICopY3VycmVudE5vZGVIaWdobGlnaHQKIHsKLSAgICByZXR1cm4gX3ByaXZhdGUtPmN1
cnJlbnROb2RlSGlnaGxpZ2h0OworICAgIHJldHVybiBfcHJpdmF0ZS0+Y3VycmVudE5vZGVIaWdo
bGlnaHQuZ2V0KCk7CiB9CiAKIC0gKE5TVmlldyAqKXByZXZpb3VzVmFsaWRLZXlWaWV3CkBAIC03
NzE4LDE0ICs3NzAwLDE0IEBAIC0gKHZvaWQpcmVzdW1lQWxsTWVkaWFQbGF5YmFjawogI2lmIFBM
QVRGT1JNKE1BQykKIC0gKEJPT0wpX2FsbG93c0xpbmtQcmV2aWV3CiB7Ci0gICAgaWYgKFdlYklt
bWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgKmltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgPSBfcHJp
dmF0ZS0+aW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlcikKKyAgICBpZiAoV2ViSW1tZWRpYXRlQWN0
aW9uQ29udHJvbGxlciAqaW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciA9IF9wcml2YXRlLT5pbW1l
ZGlhdGVBY3Rpb25Db250cm9sbGVyLmdldCgpKQogICAgICAgICByZXR1cm4gaW1tZWRpYXRlQWN0
aW9uQ29udHJvbGxlci5lbmFibGVkOwogICAgIHJldHVybiBOTzsKIH0KIAogLSAodm9pZClfc2V0
QWxsb3dzTGlua1ByZXZpZXc6KEJPT0wpYWxsb3dzTGlua1ByZXZpZXcKIHsKLSAgICBpZiAoV2Vi
SW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciAqaW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciA9IF9w
cml2YXRlLT5pbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyKQorICAgIGlmIChXZWJJbW1lZGlhdGVB
Y3Rpb25Db250cm9sbGVyICppbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyID0gX3ByaXZhdGUtPmlt
bWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIuZ2V0KCkpCiAgICAgICAgIGltbWVkaWF0ZUFjdGlvbkNv
bnRyb2xsZXIuZW5hYmxlZCA9IGFsbG93c0xpbmtQcmV2aWV3OwogfQogI2VuZGlmCkBAIC04MDgx
LDcgKzgwNjMsNiBAQCAtICh2b2lkKXNldEVkaXRpbmdEZWxlZ2F0ZTooaWQpZGVsZWdhdGUKICAg
ICBbZGVmYXVsdENlbnRlciByZW1vdmVPYnNlcnZlcjpfcHJpdmF0ZS0+ZWRpdGluZ0RlbGVnYXRl
IG5hbWU6V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbiBvYmplY3Q6c2VsZl07
CiAKICAgICBfcHJpdmF0ZS0+ZWRpdGluZ0RlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgW19wcml2
YXRlLT5lZGl0aW5nRGVsZWdhdGVGb3J3YXJkZXIgcmVsZWFzZV07CiAgICAgX3ByaXZhdGUtPmVk
aXRpbmdEZWxlZ2F0ZUZvcndhcmRlciA9IG5pbDsKIAogICAgIC8vIGFkZCBub3RpZmljYXRpb25z
IGZvciBuZXcgZGVsZWdhdGUKQEAgLTkxMDIsNyArOTA4Myw3IEBAIC0gKE5TUmVjdClfY29udmVy
dFJlY3RGcm9tUm9vdFZpZXc6KE5TUmVjdClyZWN0CiAjaWYgUExBVEZPUk0oTUFDKQogLSAoV2Vi
SW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciAqKV9pbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyCiB7
Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5pbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyOworICAgIHJl
dHVybiBfcHJpdmF0ZS0+aW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5nZXQoKTsKIH0KIAogLSAo
aWQpX2FuaW1hdGlvbkNvbnRyb2xsZXJGb3JEaWN0aW9uYXJ5TG9va3VwUG9wdXBJbmZvOihjb25z
dCBXZWJDb3JlOjpEaWN0aW9uYXJ5UG9wdXBJbmZvJilkaWN0aW9uYXJ5UG9wdXBJbmZvCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKaW5kZXggZGZlMmMz
MDBkNzY2M2JjNThmMGNmOGM2YjY3YmU4NTcwMDRjZDAyNS4uNDBiNjdkMWU4MzBjN2ZiODVjOTQ5
ZWI3YThiNjRlMDJkMDdiODMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlld0RhdGEuaApAQCAtMTYxLDI4ICsxNjEsMjggQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8V2ViVmlld0dyb3VwPiBncm91cDsKIAogICAgIGlkIFVJRGVsZWdhdGU7Ci0gICAgaWQgVUlE
ZWxlZ2F0ZUZvcndhcmRlcjsKKyAgICBSZXRhaW5QdHI8aWQ+IFVJRGVsZWdhdGVGb3J3YXJkZXI7
CiAgICAgaWQgcmVzb3VyY2VQcm9ncmVzc0RlbGVnYXRlOwogICAgIGlkIGRvd25sb2FkRGVsZWdh
dGU7CiAgICAgaWQgcG9saWN5RGVsZWdhdGU7Ci0gICAgaWQgcG9saWN5RGVsZWdhdGVGb3J3YXJk
ZXI7CisgICAgUmV0YWluUHRyPGlkPiBwb2xpY3lEZWxlZ2F0ZUZvcndhcmRlcjsKICAgICBpZCBm
cmFtZUxvYWREZWxlZ2F0ZTsKLSAgICBpZCBmcmFtZUxvYWREZWxlZ2F0ZUZvcndhcmRlcjsKKyAg
ICBSZXRhaW5QdHI8aWQ+IGZyYW1lTG9hZERlbGVnYXRlRm9yd2FyZGVyOwogICAgIGlkIDxXZWJG
b3JtRGVsZWdhdGU+IGZvcm1EZWxlZ2F0ZTsKICAgICBpZCBlZGl0aW5nRGVsZWdhdGU7Ci0gICAg
aWQgZWRpdGluZ0RlbGVnYXRlRm9yd2FyZGVyOworICAgIFJldGFpblB0cjxpZD4gZWRpdGluZ0Rl
bGVnYXRlRm9yd2FyZGVyOwogICAgIGlkIHNjcmlwdERlYnVnRGVsZWdhdGU7CiAgICAgaWQgaGlz
dG9yeURlbGVnYXRlOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaWQgcmVzb3VyY2VQ
cm9ncmVzc0RlbGVnYXRlRm9yd2FyZGVyOwotICAgIGlkIGZvcm1EZWxlZ2F0ZUZvcndhcmRlcjsK
KyAgICBSZXRhaW5QdHI8aWQ+IHJlc291cmNlUHJvZ3Jlc3NEZWxlZ2F0ZUZvcndhcmRlcjsKKyAg
ICBSZXRhaW5QdHI8aWQ+IGZvcm1EZWxlZ2F0ZUZvcndhcmRlcjsKICNlbmRpZgogCi0gICAgV2Vi
SW5zcGVjdG9yICppbnNwZWN0b3I7Ci0gICAgV2ViTm9kZUhpZ2hsaWdodCAqY3VycmVudE5vZGVI
aWdobGlnaHQ7CisgICAgUmV0YWluUHRyPFdlYkluc3BlY3Rvcj4gaW5zcGVjdG9yOworICAgIFJl
dGFpblB0cjxXZWJOb2RlSGlnaGxpZ2h0PiBjdXJyZW50Tm9kZUhpZ2hsaWdodDsKIAogI2lmIFBM
QVRGT1JNKE1BQykKLSAgICBXZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyICppbW1lZGlhdGVB
Y3Rpb25Db250cm9sbGVyOworICAgIFJldGFpblB0cjxXZWJJbW1lZGlhdGVBY3Rpb25Db250cm9s
bGVyPiBpbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyOwogCiAjaWYgSEFWRShUT1VDSF9CQVIpCiAg
ICAgUmV0YWluUHRyPE5TVG91Y2hCYXI+IF9jdXJyZW50VG91Y2hCYXI7CkBAIC0yMjIsNyArMjIy
LDcgQEAgcHJpdmF0ZToKICAgICBmbG9hdCB6b29tTXVsdGlwbGllcjsKICAgICBCT09MIHpvb21z
VGV4dE9ubHk7CiAKLSAgICBOU1N0cmluZyAqYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50Owor
ICAgIFJldGFpblB0cjxOU1N0cmluZz4gYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50OwogICAg
IFdURjo6U3RyaW5nIHVzZXJBZ2VudDsKICAgICBCT09MIHVzZXJBZ2VudE92ZXJyaWRkZW47CiAg
ICAgCkBAIC0yMzEsNyArMjMxLDcgQEAgcHJpdmF0ZToKICAgICBOU1VSTCAqdXNlclN0eWxlU2hl
ZXRMb2NhdGlvbjsKICNlbmRpZgogCi0gICAgTlNXaW5kb3cgKmhvc3RXaW5kb3c7CisgICAgUmV0
YWluUHRyPE5TV2luZG93PiBob3N0V2luZG93OwogCiAgICAgaW50IHByb2dyYW1tYXRpY0ZvY3Vz
Q291bnQ7CiAgICAgCkBAIC0yNTYsMTIgKzI1NiwxMiBAQCBwcml2YXRlOgogICAgIEJPT0wgdXNl
c1BhZ2VDYWNoZTsKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgIE5TQ29sb3IgKmJh
Y2tncm91bmRDb2xvcjsKKyAgICBSZXRhaW5QdHI8TlNDb2xvcj4gYmFja2dyb3VuZENvbG9yOwog
I2Vsc2UKLSAgICBDR0NvbG9yUmVmIGJhY2tncm91bmRDb2xvcjsKKyAgICBSZXRhaW5QdHI8Q0dD
b2xvclJlZj4gYmFja2dyb3VuZENvbG9yOwogI2VuZGlmCiAKLSAgICBOU1N0cmluZyAqbWVkaWFT
dHlsZTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1lZGlhU3R5bGU7CiAgICAgCiAgICAgQk9P
TCBoYXNTcGVsbENoZWNrZXJEb2N1bWVudFRhZzsKICAgICBOU0ludGVnZXIgc3BlbGxDaGVja2Vy
RG9jdW1lbnRUYWc7CkBAIC0yNzAsMTIgKzI3MCwxMiBAQCBwcml2YXRlOgogICAgIEJPT0wgaXNT
dG9wcGluZzsKIAogICAgIGlkIFVJS2l0RGVsZWdhdGU7Ci0gICAgaWQgVUlLaXREZWxlZ2F0ZUZv
cndhcmRlcjsKKyAgICBSZXRhaW5QdHI8aWQ+IFVJS2l0RGVsZWdhdGVGb3J3YXJkZXI7CiAKICAg
ICBpZCBXZWJNYWlsRGVsZWdhdGU7CiAKICAgICBCT09MIGFsbG93c01lc3NhZ2luZzsKLSAgICBO
U011dGFibGVTZXQgKl9jYXJldENoYW5nZUxpc3RlbmVyczsKKyAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlU2V0PiBfY2FyZXRDaGFuZ2VMaXN0ZW5lcnM7CiAgICAgaWQgPFdlYkNhcmV0Q2hhbmdlTGlz
dGVuZXI+IF9jYXJldENoYW5nZUxpc3RlbmVyOwogCiAgICAgQ0dTaXplIGZpeGVkTGF5b3V0U2l6
ZTsKQEAgLTI5Niw3ICsyOTYsNyBAQCBwcml2YXRlOgogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgLy8gV2ViS2l0IGhhcyBib3RoIGEgZ2xvYmFsIHBsdWctaW4gZGF0YWJhc2UgYW5k
IGEgc2VwYXJhdGUsIHBlciBXZWJWaWV3IHBsdWctaW4gZGF0YWJhc2UuIERhc2hib2FyZCB1c2Vz
IHRoZSBwZXIgV2ViVmlldyBkYXRhYmFzZS4KLSAgICBXZWJQbHVnaW5EYXRhYmFzZSAqcGx1Z2lu
RGF0YWJhc2U7CisgICAgUmV0YWluUHRyPFdlYlBsdWdpbkRhdGFiYXNlPiBwbHVnaW5EYXRhYmFz
ZTsKICNlbmRpZgogICAgIAogICAgIEhhc2hNYXA8dW5zaWduZWQgbG9uZywgUmV0YWluUHRyPGlk
Pj4gaWRlbnRpZmllck1hcDsKQEAgLTMzNSw3ICszMzUsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBXZWJJ
bmRpY2F0ZUxheWVyICppbmRpY2F0ZUxheWVyOworICAgIFJldGFpblB0cjxXZWJJbmRpY2F0ZUxh
eWVyPiBpbmRpY2F0ZUxheWVyOwogI2VuZGlmCiAjZW5kaWYKIApAQCAtMzUyLDcgKzM1Miw3IEBA
IHByaXZhdGU6CiAKICAgICBmbG9hdCBjdXN0b21EZXZpY2VTY2FsZUZhY3RvcjsKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQotICAgIFdlYkZpeGVkUG9zaXRpb25Db250ZW50KiBfZml4ZWRQb3Np
dGlvbkNvbnRlbnQ7CisgICAgUmV0YWluUHRyPFdlYkZpeGVkUG9zaXRpb25Db250ZW50PiBfZml4
ZWRQb3NpdGlvbkNvbnRlbnQ7CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+IG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9s
bGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
RGF0YS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0K
aW5kZXggODY3YmVhMzYwNjhmNTMzNjVlNzViYTY0NmE3YzM5OTg5MTcyYjFkMi4uNDliZGM2Mjcz
ZDAwZjE5MmQzYjQ0NmYwNWY4ODE5ZTk1ZGY3ZWI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCkBAIC0yMzIsMzcgKzIzMiw2IEBAIC0gKHZv
aWQpZGVhbGxvYwogICAgIEFTU0VSVCghZnVsbHNjcmVlbkNvbnRyb2xsZXIpOwogI2VuZGlmCiAK
LSAgICBbYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50IHJlbGVhc2VdOwotI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgIFtiYWNrZ3JvdW5kQ29sb3IgcmVsZWFzZV07Ci0jZWxzZQotICAg
IENHQ29sb3JSZWxlYXNlKGJhY2tncm91bmRDb2xvcik7Ci0jZW5kaWYKLSAgICBbaW5zcGVjdG9y
IHJlbGVhc2VdOwotICAgIFtjdXJyZW50Tm9kZUhpZ2hsaWdodCByZWxlYXNlXTsKLSNpZiBQTEFU
Rk9STShNQUMpCi0gICAgW2ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgcmVsZWFzZV07Ci0jZW5k
aWYKLSAgICBbaG9zdFdpbmRvdyByZWxlYXNlXTsKLSAgICBbcG9saWN5RGVsZWdhdGVGb3J3YXJk
ZXIgcmVsZWFzZV07Ci0gICAgW1VJRGVsZWdhdGVGb3J3YXJkZXIgcmVsZWFzZV07Ci0gICAgW2Zy
YW1lTG9hZERlbGVnYXRlRm9yd2FyZGVyIHJlbGVhc2VdOwotICAgIFtlZGl0aW5nRGVsZWdhdGVG
b3J3YXJkZXIgcmVsZWFzZV07Ci0gICAgW21lZGlhU3R5bGUgcmVsZWFzZV07Ci0KLSNpZiBFTkFC
TEUoUkVNT1RFX0lOU1BFQ1RPUikKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFtpbmRp
Y2F0ZUxheWVyIHJlbGVhc2VdOwotI2VuZGlmCi0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCi0gICAgW1VJS2l0RGVsZWdhdGVGb3J3YXJkZXIgcmVsZWFzZV07Ci0gICAgW2Zvcm1E
ZWxlZ2F0ZUZvcndhcmRlciByZWxlYXNlXTsKLSAgICBbX2NhcmV0Q2hhbmdlTGlzdGVuZXJzIHJl
bGVhc2VdOwotICAgIFtfZml4ZWRQb3NpdGlvbkNvbnRlbnQgcmVsZWFzZV07Ci0jZW5kaWYKLQog
ICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGE0MzEzMzE1MGYxMGE1ZDhkY2ZhMzFjYTMyYzE5OTJkZmZj
Y2Q0NGMuLmZkZDM4NGJlOTVlMjcwZTM3M2I5MTAwZmM4NDdiNzJiMDQ1MTQ5ZWMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MyBA
QAorMjAyMS0wMi0xNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyByZWxlYXNlXSBpbiBXZWJLaXQgZXZlbiBt
b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE5
MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKGRlc3Ryb3lXZWJW
aWV3QW5kT2Zmc2NyZWVuV2luZG93KToKKyAgICAgICAgKHJlbGVhc2VBbmRaZXJvKToKKyAgICAg
ICAgKHJ1blRlc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJl
ZVBhc3RlYm9hcmQubW06CisgICAgICAgICgrW0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZCByZWxl
YXNlTG9jYWxQYXN0ZWJvYXJkc10pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9FdmVu
dFNlbmRpbmdDb250cm9sbGVyLm1tOgorICAgICAgICAoK1tFdmVudFNlbmRpbmdDb250cm9sbGVy
IGNsZWFyU2F2ZWRFdmVudHNdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OldlYkNvcmVOU1VSTFNlc3Npb25UZXN0OjpTZXRVcCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpXZWJDb3JlTlNVUkxTZXNzaW9uVGVzdDo6VGVhckRvd24pOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0FzeW5jRnVuY3Rpb24ubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tOgorICAgICAg
ICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFw
cEJyb3dzZXJQcml2YWN5Lm1tOgorICAgICAgICAoc2V0VXBDb29raWVUZXN0V2l0aFdlYnNpdGVE
YXRhU3RvcmUpOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9OYXZpZ2F0aW9uLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9WaWRlb0NvbnRyb2xzTWFuYWdlci5tbToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV0tIVFRQQ29va2llU3RvcmUubW06CisgICAgICAgIChydW5UZXN0
V2l0aFdlYnNpdGVEYXRhU3RvcmUpOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvVXNlckNvbnRlbnRUZXN0Lm1tOgor
ICAgICAgICAoVEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9i
akMvV0tCcm93c2luZ0NvbnRleHRHcm91cFRlc3QubW06CisgICAgICAgIChURVNUKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvV0tCcm93c2luZ0NvbnRleHRMb2Fk
RGVsZWdhdGVUZXN0Lm1tOgorICAgICAgICAoVEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL2lvcy9XS1Njcm9sbFZpZXdEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NhbmRpZGF0
ZVRlc3RzLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9tYWMvRE9NTm9kZUZyb21KU09iamVjdC5tbToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1N1
YnJlc291cmNlRXJyb3JDcmFzaC5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1R5cGluZ1N0eWxlQ3Jhc2gubW06Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL21hYy9XZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5tbToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlZpZXdD
YW5QYXN0ZVVSTC5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlZpZXdDYW5QYXN0ZVplcm9QbmcubW06CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9XZWJWaWV3RGlkQ3JlYXRlSmF2YVNjcmlwdENvbnRleHQubW06CisgICAgICAgICgtW0Rp
ZENyZWF0ZUphdmFTY3JpcHRDb250ZXh0RnJhbWVMb2FkRGVsZWdhdGUgd2ViVmlldzpkaWRDcmVh
dGVKYXZhU2NyaXB0Q29udGV4dDpmb3JGcmFtZTpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RQcm90b2NvbC5tbToKKyAgICAgICAgKCtbVGVzdFByb3RvY29sIHJlZ2lzdGVy
V2l0aFNjaGVtZTpdKToKKyAgICAgICAgKCtbVGVzdFByb3RvY29sIHVucmVnaXN0ZXJdKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL21hYy9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXJNYWMubW06
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OnBsYXRm
b3JtSW5pdGlhbGl6ZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29u
dHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjppbml0aWFsaXplV2ViVmlld0NvbmZpZ3Vy
YXRpb24pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lP
Uy5tbToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjphZGRDaHJvbWVJbnB1dEZpZWxk
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyUGFzdGVi
b2FyZC5tbToKKyAgICAgICAgKCtbV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQgcmVsZWFzZUxv
Y2FsUGFzdGVib2FyZHNdKToKKwogMjAyMS0wMi0xNSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBs
ZS5jb20+CiAKICAgICAgICAgUHJlcGFyZSBmb3IgYWRkaW5nIHJlbGF0aXZlIGNvbG9yIHN1cHBv
cnQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5t
bSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCAzNWFi
ZjFiZTVlZmZlNDZhNDkzMDE5NDc1N2VhZTYxNDdmNDFlODlhLi5iZDZlODQyZjZjNzE4YjQ5MmQz
MTVkNDFhMGU4YWFiYWYzYzRlZTk5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRHVtcFJlbmRlclRyZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlLm1tCkBAIC03NzQsNiArNzc0LDcgQEAgV2ViVmlldyAqY3JlYXRlV2ViVmlld0Fu
ZE9mZnNjcmVlbldpbmRvdygpCiBzdGF0aWMgdm9pZCBkZXN0cm95V2ViVmlld0FuZE9mZnNjcmVl
bldpbmRvdyhXZWJWaWV3ICp3ZWJWaWV3KQogewogICAgIEFTU0VSVCh3ZWJWaWV3ID09IFttYWlu
RnJhbWUgd2ViVmlld10pOworICAgIGF1dG8gYWRvcHRlZFdlYlZpZXcgPSBhZG9wdE5TKHdlYlZp
ZXcpOwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIE5TV2luZG93ICp3aW5kb3cgPSBb
d2ViVmlldyB3aW5kb3ddOwogI2VuZGlmCkBAIC03OTIsOCArNzkzLDYgQEAgc3RhdGljIHZvaWQg
ZGVzdHJveVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kb3coV2ViVmlldyAqd2ViVmlldykKICAgICBh
dXRvIHVpV2luZG93ID0gYWRvcHROUyhbZ1dlYkJyb3dzZXJWaWV3IHdpbmRvd10pOwogICAgIFt1
aVdpbmRvdyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKICNlbmRpZgotCi0gICAgW3dlYlZpZXcgcmVs
ZWFzZV07CiB9CiAKIHN0YXRpYyBOU1N0cmluZyAqbGlicmFyeVBhdGhGb3JEdW1wUmVuZGVyVHJl
ZSgpCkBAIC05ODUsMTAgKzk4NCwxMCBAQCBzdGF0aWMgdm9pZCBhbGxvY2F0ZUdsb2JhbENvbnRy
b2xsZXJzKCkKICNlbmRpZgogfQogCi0vLyBPYmpDKysgZG9lbnMndCBzZWVtIHRvIGxldCBtZSBw
YXNzIE5TT2JqZWN0KiYgc2FkbHkuCisvLyBPYmpDKysgZG9lc24ndCBzZWVtIHRvIGxldCBtZSBw
YXNzIE5TT2JqZWN0KiYgc2FkbHkuCiBzdGF0aWMgaW5saW5lIHZvaWQgcmVsZWFzZUFuZFplcm8o
TlNPYmplY3QqKiBvYmplY3QpCiB7Ci0gICAgWypvYmplY3QgcmVsZWFzZV07CisgICAgYXV0byBv
bGRPYmplY3QgPSBhZG9wdE5TKCpvYmplY3QpOwogICAgICpvYmplY3QgPSBuaWw7CiB9CiAKQEAg
LTE5NjMsOCArMTk2Miw4IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RkOjpzdHJpbmcm
IGlucHV0TGluZSkKICAgICBsYXN0TW91c2VQb3NpdGlvbiA9IE5TWmVyb1BvaW50OwogICAgIGxh
c3RDbGlja1Bvc2l0aW9uID0gTlNaZXJvUG9pbnQ7CiAKLSAgICBbcHJldlRlc3RCRkl0ZW0gcmVs
ZWFzZV07Ci0gICAgcHJldlRlc3RCRkl0ZW0gPSBbW1tbbWFpbkZyYW1lIHdlYlZpZXddIGJhY2tG
b3J3YXJkTGlzdF0gY3VycmVudEl0ZW1dIHJldGFpbl07CisgICAgYXV0byBvbGRCRkl0ZW0gPSBh
ZG9wdE5TKHByZXZUZXN0QkZJdGVtKTsKKyAgICBwcmV2VGVzdEJGSXRlbSA9IHJldGFpblB0cihb
W1ttYWluRnJhbWUgd2ViVmlld10gYmFja0ZvcndhcmRMaXN0XSBjdXJyZW50SXRlbV0pLmxlYWtS
ZWYoKTsKIAogICAgIGF1dG8mIHdvcmtRdWV1ZSA9IERSVDo6V29ya1F1ZXVlOjpzaW5nbGV0b24o
KTsKICAgICB3b3JrUXVldWUuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm1tCmluZGV4IDQxNjI4ODkzNTMzNWY2Mzg4
NmQ0YjBhNTgzODRmNTg1ZmVmZDdiNTkuLmU5NDRiNDE3ZGJmNTdmZjZkOTc4MmE5OGI0NTQwZDk5
MzNmMGJkOTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVy
VHJlZVBhc3RlYm9hcmQubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlUGFzdGVib2FyZC5tbQpAQCAtNzcsOCArNzcsNyBAQCArIChOU1Bhc3RlYm9hcmQgKilf
cGFzdGVib2FyZFdpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUKIAogKyAodm9pZClyZWxlYXNlTG9j
YWxQYXN0ZWJvYXJkcwogewotICAgIFtsb2NhbFBhc3RlYm9hcmRzIHJlbGVhc2VdOwotICAgIGxv
Y2FsUGFzdGVib2FyZHMgPSBuaWw7CisgICAgYXV0byBvbGRQYXN0ZWJvYWRzID0gYWRvcHROUyhz
dGQ6OmV4Y2hhbmdlKGxvY2FsUGFzdGVib2FyZHMsIG5pbCkpOwogfQogCiAvLyBDb252ZW5pZW5j
ZSBtZXRob2QgZm9yIEpTIHNvIHRoYXQgaXQgZG9lc24ndCBoYXZlIHRvIHRyeSBhbmQgY3JlYXRl
IGEgTlNBcnJheSBvbiB0aGUgb2JqYyBzaWRlIGluc3RlYWQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KaW5kZXggN2VkOWE4ZGViNTky
Nzg5NDczZmExMjlhM2JjMmViYzhjYTNiN2M0ZS4uYzZiMThlNzMwM2JlYTJjZjEzNjVlNzUzZGUz
Y2E3YTMyYmY3YTJjZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50
U2VuZGluZ0NvbnRyb2xsZXIubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50
U2VuZGluZ0NvbnRyb2xsZXIubW0KQEAgLTk2Myw4ICs5NjMsNyBAQCArICh2b2lkKXJlcGxheVNh
dmVkRXZlbnRzCiAKICsgKHZvaWQpY2xlYXJTYXZlZEV2ZW50cwogewotICAgIFtzYXZlZE1vdXNl
RXZlbnRzIHJlbGVhc2VdOwotICAgIHNhdmVkTW91c2VFdmVudHMgPSBuaWw7CisgICAgYXV0byBv
bGRFdmVudHMgPSBhZG9wdE5TKHN0ZDo6ZXhjaGFuZ2Uoc2F2ZWRNb3VzZUV2ZW50cywgbmlsKSk7
CiB9CiAKIC0gKHZvaWQpa2V5RG93bjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgd2l0aE1vZGlmaWVy
czooV2ViU2NyaXB0T2JqZWN0ICopbW9kaWZpZXJzIHdpdGhMb2NhdGlvbjoodW5zaWduZWQgbG9u
Zylsb2NhdGlvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBhMTgwOWU3NmU4ZTMx
ZDkzMjAxZDdkY2U2NGFhNWVmZTkyODAyMDZkLi43MWE3ZmY0ZjM2ZWNhZDkzZGM5NjdmYmMyMzEz
Y2EyY2IzYjkyZmYxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtNDIsNiArNDIs
NyBAQAogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlTlNVUkxTZXNzaW9uLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1Jlc291cmNlTG9hZGVyLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViVmlldy5oPgorI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1NjaGVkdWxlUGFpci5oPgogCiBz
dGF0aWMgYm9vbCBkaWRMb2FkTWFpblJlc291cmNlOwpAQCAtMTA1LDkgKzEwNiw5IEBAIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogY2xhc3MgV2ViQ29yZU5TVVJMU2Vzc2lvblRlc3QgOiBw
dWJsaWMgdGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6Ci0gICAgV2ViVmlldyAqdmlldyB7IG5pbCB9
OworICAgIFJldGFpblB0cjxXZWJWaWV3PiB2aWV3OwogICAgIEZyYW1lKiBmcmFtZSB7IG51bGxw
dHIgfTsKLSAgICBUZXN0TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlICpkZWxlZ2F0ZSB7IG5pbCB9
OworICAgIFJldGFpblB0cjxUZXN0TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkZWxlZ2F0ZTsK
ICAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZUxvYWRlcj4gbG9hZGVyOwogICAgIFJlZlB0cjxIVE1M
TWVkaWFFbGVtZW50PiBtZWRpYUVsZW1lbnQ7CiAKQEAgLTExNiwxNCArMTE3LDE0IEBAIHB1Ymxp
YzoKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBKU0M6OmluaXRpYWxpemUoKTsK
ICNlbmRpZgotICAgICAgICB2aWV3ID0gW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
WmVyb1JlY3RdOwotICAgICAgICB2aWV3LmZyYW1lTG9hZERlbGVnYXRlID0gW1tbVGVzdE5TVVJM
U2Vzc2lvbkxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgICAg
IHZpZXcgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0
XSk7CisgICAgICAgIFt2aWV3IHNldEZyYW1lTG9hZERlbGVnYXRlOltbW1Rlc3ROU1VSTFNlc3Np
b25Mb2FkZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdXTsKIAogICAgICAgICBk
aWRMb2FkTWFpblJlc291cmNlID0gZmFsc2U7Ci0gICAgICAgIHZpZXcubWFpbkZyYW1lVVJMID0g
ZG9jdW1lbnRVUkwuYWJzb2x1dGVTdHJpbmc7CisgICAgICAgIFt2aWV3IHNldE1haW5GcmFtZVVS
TDpkb2N1bWVudFVSTC5hYnNvbHV0ZVN0cmluZ107CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZGlkTG9hZE1haW5SZXNvdXJjZSk7CiAKLSAgICAgICAgZGVsZWdhdGUgPSBbW1Rl
c3ROU1VSTFNlc3Npb25EYXRhRGVsZWdhdGUgYWxsb2NdIGluaXRdOworICAgICAgICBkZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tUZXN0TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlIGFsbG9jXSBpbml0XSk7
CiAgICAgICAgIGZyYW1lID0gW3ZpZXcgX21haW5Db3JlRnJhbWVdOwogICAgICAgICBtZWRpYUVs
ZW1lbnQgPSBIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGUoKmZyYW1lLT5kb2N1bWVudCgpKTsKICAg
ICAgICAgbG9hZGVyID0gYWRvcHRSZWYobmV3IE1lZGlhUmVzb3VyY2VMb2FkZXIoKmZyYW1lLT5k
b2N1bWVudCgpLCAqbWVkaWFFbGVtZW50LmdldCgpLCBlbXB0eVN0cmluZygpLCBGZXRjaE9wdGlv
bnM6OkRlc3RpbmF0aW9uOjpWaWRlbykpOwpAQCAtMTMxLDE1ICsxMzIsMTMgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkKICAgICB7Ci0gICAgICAgIFt2aWV3IHJlbGVh
c2VdOwotICAgICAgICBbZGVsZWdhdGUgcmVsZWFzZV07CiAgICAgICAgIGxvYWRlciA9IG51bGxw
dHI7CiAgICAgfQogfTsKIAogVEVTVF9GKFdlYkNvcmVOU1VSTFNlc3Npb25UZXN0LCBCYXNpY09w
ZXJhdGlvbikKIHsKLSAgICBXZWJDb3JlTlNVUkxTZXNzaW9uKiBzZXNzaW9uID0gW1tXZWJDb3Jl
TlNVUkxTZXNzaW9uIGFsbG9jXSBpbml0V2l0aFJlc291cmNlTG9hZGVyOipsb2FkZXIgZGVsZWdh
dGU6ZGVsZWdhdGUgZGVsZWdhdGVRdWV1ZTpbTlNPcGVyYXRpb25RdWV1ZSBtYWluUXVldWVdXTsK
KyAgICBhdXRvIHNlc3Npb24gPSBhZG9wdE5TKFtbV2ViQ29yZU5TVVJMU2Vzc2lvbiBhbGxvY10g
aW5pdFdpdGhSZXNvdXJjZUxvYWRlcjoqbG9hZGVyIGRlbGVnYXRlOmRlbGVnYXRlLmdldCgpIGRl
bGVnYXRlUXVldWU6W05TT3BlcmF0aW9uUXVldWUgbWFpblF1ZXVlXV0pOwogICAgIGRpZFJlY2ll
dmVSZXNwb25zZSA9IGZhbHNlOwogICAgIGRpZFJlY2lldmVEYXRhID0gZmFsc2U7CiAgICAgZGlk
Q29tcGxldGUgPSBmYWxzZTsKQEAgLTE1OCwxNyArMTU3LDE0IEBAIFRFU1RfRihXZWJDb3JlTlNV
UkxTZXNzaW9uVGVzdCwgQmFzaWNPcGVyYXRpb24pCiAgICAgW3Nlc3Npb24gZmluaXNoVGFza3NB
bmRJbnZhbGlkYXRlXTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkSW52YWxp
ZGF0ZSk7Ci0KLSAgICBbc2Vzc2lvbiByZWxlYXNlXTsKIH0KIAogVEVTVF9GKFdlYkNvcmVOU1VS
TFNlc3Npb25UZXN0LCBJbnZhbGlkYXRlRW1wdHkpCiB7Ci0gICAgV2ViQ29yZU5TVVJMU2Vzc2lv
biogc2Vzc2lvbiA9IFtbV2ViQ29yZU5TVVJMU2Vzc2lvbiBhbGxvY10gaW5pdFdpdGhSZXNvdXJj
ZUxvYWRlcjoqbG9hZGVyIGRlbGVnYXRlOmRlbGVnYXRlIGRlbGVnYXRlUXVldWU6W05TT3BlcmF0
aW9uUXVldWUgbWFpblF1ZXVlXV07CisgICAgYXV0byBzZXNzaW9uID0gYWRvcHROUyhbW1dlYkNv
cmVOU1VSTFNlc3Npb24gYWxsb2NdIGluaXRXaXRoUmVzb3VyY2VMb2FkZXI6KmxvYWRlciBkZWxl
Z2F0ZTpkZWxlZ2F0ZS5nZXQoKSBkZWxlZ2F0ZVF1ZXVlOltOU09wZXJhdGlvblF1ZXVlIG1haW5R
dWV1ZV1dKTsKICAgICBkaWRJbnZhbGlkYXRlID0gZmFsc2U7CiAgICAgW3Nlc3Npb24gZmluaXNo
VGFza3NBbmRJbnZhbGlkYXRlXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZElu
dmFsaWRhdGUpOwotICAgIFtzZXNzaW9uIHJlbGVhc2VdOwogfQogCiB9CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FzeW5jRnVuY3Rpb24ubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FzeW5jRnVuY3Rpb24ubW0KaW5k
ZXggYTQ5Mjc1NzgzZDhhZGIwMWEyMWE0NGRjNTdhNDE2NGYwMDEzMDRlMS4uZDY0NWE4NjEwZjZl
NGVmOWY0YzRiMWJlMzZmODFlOWQyNmQ5NmRkMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Bc3luY0Z1bmN0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXN5bmNGdW5jdGlvbi5tbQpAQCAtMTM4LDEzICsx
MzgsMTIgQEAgVEVTVChBc3luY0Z1bmN0aW9uLCBSb3VuZFRyaXApCiAgICAgRVhQRUNUX05VTEwo
ZXJyb3IpOwogICAgIEVYUEVDVF9UUlVFKFt2YWx1ZSBpc0VxdWFsOnJlc3VsdF0pOwogCi0gICAg
TlNNdXRhYmxlQXJyYXkgKm11dGFibGVBcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRdOworICAgIGF1dG8gbXV0YWJsZUFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0XSk7CiAgICAgW211dGFibGVBcnJheSBhZGRPYmplY3Q6dmFsdWVdOwotICAgIGFy
Z3VtZW50cyA9IEB7IEAiYSIgOiBtdXRhYmxlQXJyYXkgfTsKKyAgICBhcmd1bWVudHMgPSBAeyBA
ImEiIDogbXV0YWJsZUFycmF5LmdldCgpIH07CiAgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0
QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50
cyBlcnJvcjomZXJyb3JdOwogICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKICAgICBFWFBFQ1RfVFJV
RShbbXV0YWJsZUFycmF5IGlzRXF1YWw6cmVzdWx0XSk7Ci0gICAgW211dGFibGVBcnJheSByZWxl
YXNlXTsKIAogICAgIHZhbHVlID0gQFsgQCJmb28iLCBbTlNEYXRlIGRhdGVXaXRoVGltZUludGVy
dmFsU2luY2VSZWZlcmVuY2VEYXRlOjBdIF07CiAgICAgYXJndW1lbnRzID0gQHsgQCJhIiA6IHZh
bHVlIH07CkBAIC0xNTgsMTMgKzE1NywxMiBAQCBURVNUKEFzeW5jRnVuY3Rpb24sIFJvdW5kVHJp
cCkKICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CiAgICAgRVhQRUNUX1RSVUUoW3ZhbHVlIGlzRXF1
YWw6cmVzdWx0XSk7CiAKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAq
bXV0YWJsZURpY3Rpb25hcnkgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwot
ICAgIG11dGFibGVEaWN0aW9uYXJ5W0AiZm9vIl0gPSB2YWx1ZTsKLSAgICBhcmd1bWVudHMgPSBA
eyBAImEiIDogbXV0YWJsZURpY3Rpb25hcnkgfTsKKyAgICBhdXRvIG11dGFibGVEaWN0aW9uYXJ5
ID0gYWRvcHROUygoTlNNdXRhYmxlRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilbW05TTXV0
YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKyAgICBtdXRhYmxlRGljdGlvbmFyeS5nZXQo
KVtAImZvbyJdID0gdmFsdWU7CisgICAgYXJndW1lbnRzID0gQHsgQCJhIiA6IG11dGFibGVEaWN0
aW9uYXJ5LmdldCgpIH07CiAgICAgcmVzdWx0ID0gW3dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5
bmNGdW5jdGlvbjpAInJldHVybiBhIiB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBlcnJvcjomZXJy
b3JdOwogICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKICAgICBFWFBFQ1RfVFJVRShbbXV0YWJsZURp
Y3Rpb25hcnkgaXNFcXVhbDpyZXN1bHRdKTsKLSAgICBbbXV0YWJsZURpY3Rpb25hcnkgcmVsZWFz
ZV07CiAKICAgICB2YWx1ZSA9IEB7IEAiYSIgOiBAImZvbyIsIEAiYiIgOiBbTlNEYXRlIGRhdGVX
aXRoVGltZUludGVydmFsU2luY2VSZWZlcmVuY2VEYXRlOjBdIH07CiAgICAgYXJndW1lbnRzID0g
QHsgQCJhIiA6IHZhbHVlIH07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0Rvd25sb2FkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Eb3dubG9hZC5tbQppbmRleCA1MDFkM2E0NWRhMmU1OWViNmEwNWQxY2E3NTZmYmFl
ZDAzZDE0OWNiLi5hMjE3YWVmNGFmOGIwNTczZDBlMjBjYWUyYTY2NTRmNTJiZWIwMWU3IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0K
QEAgLTEzMywxNCArMTMzLDE0IEBAIEBlbmQKIFRFU1QoX1dLRG93bmxvYWQsIERvd25sb2FkRGVs
ZWdhdGUpCiB7CiAgICAgUmV0YWluUHRyPFdLUHJvY2Vzc1Bvb2w+IHByb2Nlc3NQb29sID0gYWRv
cHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIGluaXRdKTsKLSAgICBEb3dubG9hZERlbGVnYXRl
ICpkb3dubG9hZERlbGVnYXRlID0gW1tEb3dubG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XTsKLSAg
ICBbcHJvY2Vzc1Bvb2wgX3NldERvd25sb2FkRGVsZWdhdGU6ZG93bmxvYWREZWxlZ2F0ZV07Cisg
ICAgYXV0byBkb3dubG9hZERlbGVnYXRlID0gYWRvcHROUyhbW0Rvd25sb2FkRGVsZWdhdGUgYWxs
b2NdIGluaXRdKTsKKyAgICBbcHJvY2Vzc1Bvb2wgX3NldERvd25sb2FkRGVsZWdhdGU6ZG93bmxv
YWREZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgRVhQ
RUNUX0VRKGRvd25sb2FkRGVsZWdhdGUsIFtwcm9jZXNzUG9vbCBfZG93bmxvYWREZWxlZ2F0ZV0p
OworICAgICAgICBFWFBFQ1RfRVEoZG93bmxvYWREZWxlZ2F0ZS5nZXQoKSwgW3Byb2Nlc3NQb29s
IF9kb3dubG9hZERlbGVnYXRlXSk7CiAgICAgfQogCi0gICAgW2Rvd25sb2FkRGVsZWdhdGUgcmVs
ZWFzZV07CisgICAgZG93bmxvYWREZWxlZ2F0ZSA9IG5pbDsKICAgICBFWFBFQ1RfTlVMTChbcHJv
Y2Vzc1Bvb2wgX2Rvd25sb2FkRGVsZWdhdGVdKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1t
CmluZGV4IGViMWM2Yjg1YTg5MjZkYTc4NmIzZWRlNzc4YmVmZTkzYTZmZGMxZTQuLmJkMjkxOWQ5
NTE5NDQ0Y2I3OWZkYWI0ZWM0YTdkZmVlMjRhMjNjMjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3ku
bW0KQEAgLTUzOSwxOCArNTM5LDE3IEBAIHN0YXRpYyB2b2lkIHNldFVwQ29va2llVGVzdFdpdGhX
ZWJzaXRlRGF0YVN0b3JlKFdLV2Vic2l0ZURhdGFTdG9yZSogZGF0YVN0b3JlKQogICAgIG9ic2Vy
dmVyQ2FsbGJhY2tzID0gMDsKICAgICBnbG9iYWxDb29raWVTdG9yZSA9IGRhdGFTdG9yZS5odHRw
Q29va2llU3RvcmU7CiAKLSAgICBOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqY29va2llcyA9IG5p
bDsKKyAgICBSZXRhaW5QdHI8TlNBcnJheTxOU0hUVFBDb29raWUgKj4+IGNvb2tpZXM7CiAgICAg
Z290RmxhZyA9IGZhbHNlOwotICAgIFtnbG9iYWxDb29raWVTdG9yZSBnZXRBbGxDb29raWVzOltj
b29raWVzUHRyID0gJmNvb2tpZXNdKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tpZXMp
IHsKLSAgICAgICAgKmNvb2tpZXNQdHIgPSBbbnNDb29raWVzIHJldGFpbl07CisgICAgW2dsb2Jh
bENvb2tpZVN0b3JlIGdldEFsbENvb2tpZXM6WyZdKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpu
c0Nvb2tpZXMpIHsKKyAgICAgICAgY29va2llcyA9IG5zQ29va2llczsKICAgICAgICAgZ290Rmxh
ZyA9IHRydWU7CiAgICAgfV07CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdEZs
YWcpOwogCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBjb29raWUgc3RvcmUgc3RhcnRzIG91dCBlbXB0
eS4KLSAgICBBU1NFUlRfRVEoY29va2llcy5jb3VudCwgMHUpOwotICAgIFtjb29raWVzIHJlbGVh
c2VdOworICAgIEFTU0VSVF9FUShbY29va2llcyBjb3VudF0sIDB1KTsKIAogICAgIGdvdEZsYWcg
PSBmYWxzZTsKIH0KQEAgLTYwNCwyMCArNjAzLDE5IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFj
eSwgU2V0Q29va2llRm9yTm9uQXBwQm91bmREb21haW5GYWlscykKICAgICBnb3RGbGFnID0gZmFs
c2U7CiAKICAgICAvLyBDaGVjayB0aGUgY29va2llIHN0b3JlIHRvIG1ha2Ugc3VyZSBvbmx5IG9u
ZSBjb29raWUgd2FzIHNldC4KLSAgICBOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqY29va2llcyA9
IG5pbDsKLSAgICBbZ2xvYmFsQ29va2llU3RvcmUgZ2V0QWxsQ29va2llczpbY29va2llc1B0ciA9
ICZjb29raWVzXShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzKSB7Ci0gICAgICAg
ICpjb29raWVzUHRyID0gW25zQ29va2llcyByZXRhaW5dOworICAgIFJldGFpblB0cjxOU0FycmF5
PE5TSFRUUENvb2tpZSAqPj4gY29va2llczsKKyAgICBbZ2xvYmFsQ29va2llU3RvcmUgZ2V0QWxs
Q29va2llczpbJl0oTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2llcykgeworICAgICAg
ICBjb29raWVzID0gbnNDb29raWVzOwogICAgICAgICBnb3RGbGFnID0gdHJ1ZTsKICAgICB9XTsK
IAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290RmxhZyk7CiAKLSAgICBBU1NFUlRf
RVEoY29va2llcy5jb3VudCwgMXUpOwotICAgIEVYUEVDVF9XS19TVFJFUShjb29raWVzWzBdLmRv
bWFpbiwgQCJ3d3cud2Via2l0Lm9yZyIpOworICAgIEFTU0VSVF9FUShbY29va2llcyBjb3VudF0s
IDF1KTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoY29va2llcy5nZXQoKVswXS5kb21haW4sIEAid3d3
LndlYmtpdC5vcmciKTsKICAgICB3aGlsZSAob2JzZXJ2ZXJDYWxsYmFja3MgIT0gMXUpCiAgICAg
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKCk7CiAKLSAgICBbY29va2llcyBy
ZWxlYXNlXTsKICAgICBnb3RGbGFnID0gZmFsc2U7CiAgICAgW2dsb2JhbENvb2tpZVN0b3JlIGRl
bGV0ZUNvb2tpZTphcHBCb3VuZENvb2tpZS5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpbXSgpIHsK
ICAgICAgICAgZ290RmxhZyA9IHRydWU7CkBAIC02ODYsMTYgKzY4NCwxNCBAQCBURVNUKEluQXBw
QnJvd3NlclByaXZhY3ksIEdldENvb2tpZUZvck5vbkFwcEJvdW5kRG9tYWluRmFpbHMpCiAKICAg
ICBjb29raWVzID0gbmlsOwogICAgIGdvdEZsYWcgPSBmYWxzZTsKLSAgICBbZ2xvYmFsQ29va2ll
U3RvcmUgZ2V0QWxsQ29va2llczpbY29va2llc1B0ciA9ICZjb29raWVzXShOU0FycmF5PE5TSFRU
UENvb2tpZSAqPiAqbnNDb29raWVzKSB7Ci0gICAgICAgICpjb29raWVzUHRyID0gW25zQ29va2ll
cyByZXRhaW5dOworICAgIFtnbG9iYWxDb29raWVTdG9yZSBnZXRBbGxDb29raWVzOlsmXShOU0Fy
cmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzKSB7CisgICAgICAgIGNvb2tpZXMgPSBuc0Nv
b2tpZXM7CiAgICAgICAgIGdvdEZsYWcgPSB0cnVlOwogICAgIH1dOwogCiAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZnb3RGbGFnKTsKIAotICAgIEFTU0VSVF9FUShjb29raWVzLmNvdW50
LCAxdSk7Ci0KLSAgICBbY29va2llcyByZWxlYXNlXTsKKyAgICBBU1NFUlRfRVEoW2Nvb2tpZXMg
Y291bnRdLCAxdSk7CiAKICAgICBnb3RGbGFnID0gZmFsc2U7CiAgICAgW2dsb2JhbENvb2tpZVN0
b3JlIGRlbGV0ZUNvb2tpZTpub25BcHBCb3VuZENvb2tpZS5nZXQoKSBjb21wbGV0aW9uSGFuZGxl
cjpbXSgpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
TmF2aWdhdGlvbi5tbQppbmRleCAwMjk3ZDgyMTBhZThiM2VlMjBlNTc1OWI1MTI4MDZjMDM3ZGYx
NzQwLi41ZTc0ODIxZmE1YTRjZDIxNTYyMzkwMzY2OWRmY2I1YmQ5ZTY2ZDI1IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05hdmlnYXRpb24ubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OYXZpZ2F0aW9uLm1tCkBA
IC03NSwxNCArNzUsMTQgQEAgVEVTVChXS05hdmlnYXRpb24sIE5hdmlnYXRpb25EZWxlZ2F0ZSkK
IHsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwogCi0g
ICAgTmF2aWdhdGlvbkRlbGVnYXRlICpkZWxlZ2F0ZSA9IFtbTmF2aWdhdGlvbkRlbGVnYXRlIGFs
bG9jXSBpbml0XTsKLSAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGVd
OworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9j
XSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdl
dCgpXTsKIAogICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAgICBFWFBFQ1RfRVEoZGVsZWdh
dGUsIFt3ZWJWaWV3IG5hdmlnYXRpb25EZWxlZ2F0ZV0pOwogICAgIH0KIAotICAgIFtkZWxlZ2F0
ZSByZWxlYXNlXTsKKyAgICBkZWxlZ2F0ZSA9IG5pbDsKICAgICBFWFBFQ1RfTlVMTChbd2ViVmll
dyBuYXZpZ2F0aW9uRGVsZWdhdGVdKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9WaWRlb0NvbnRyb2xzTWFuYWdlci5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVmlkZW9Db250cm9sc01hbmFnZXIubW0KaW5k
ZXggODVmZWM5OGZjODRjYmRhODlkMWZkODI3OTFiNGMzMDMxNDMyYWNiZS4uNzQ2M2E4YTdiZTU0
ZTU1NTFlZWIzMTc5OTI1YzdhYWI3YjIzOWQ4OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9WaWRlb0NvbnRyb2xzTWFuYWdlci5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1ZpZGVvQ29udHJvbHNNYW5hZ2VyLm1t
CkBAIC0zNjQsNyArMzY0LDYgQEAgVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250
cm9sc01hbmFnZXJUZWFyc0Rvd25NZWRpYUNvbnRyb2xzT25EZWFsbG9jKQogICAgICAgICBpZiAo
W3dlYlZpZXcgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfaW50ZXJhY3RXaXRoTWVkaWFD
b250cm9sc0ZvclRlc3RpbmcpXSkKICAgICAgICAgICAgIFt3ZWJWaWV3IF9pbnRlcmFjdFdpdGhN
ZWRpYUNvbnRyb2xzRm9yVGVzdGluZ107CiAKLSAgICAgICAgW3dlYlZpZXcgcmVsZWFzZV07CiAg
ICAgICAgIGZpbmlzaGVkVGVzdCA9IHRydWU7CiAgICAgfV07CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1t
CmluZGV4IDMzNzYwOTJhMTk1YjUxMmRhNjdjNDk2ZTQ1MjE3YjkxNGZlMmE1NzkuLjBmODA3Yjhm
YTAyNWQyMTZjM2Q1MmU5YjFiZDI3OTk5MGI0NDEzMjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQpA
QCAtODUsMTYgKzg1LDE1IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3RXaXRoV2Vic2l0ZURhdGFTdG9y
ZShXS1dlYnNpdGVEYXRhU3RvcmUqIGRhdGFTdG9yZSkKICAgICBbZ2xvYmFsQ29va2llU3RvcmUg
YWRkT2JzZXJ2ZXI6b2JzZXJ2ZXIxLmdldCgpXTsKICAgICBbZ2xvYmFsQ29va2llU3RvcmUgYWRk
T2JzZXJ2ZXI6b2JzZXJ2ZXIyLmdldCgpXTsKIAotICAgIE5TQXJyYXk8TlNIVFRQQ29va2llICo+
ICpjb29raWVzID0gbmlsOwotICAgIFtnbG9iYWxDb29raWVTdG9yZSBnZXRBbGxDb29raWVzOltj
b29raWVzUHRyID0gJmNvb2tpZXNdKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tpZXMp
IHsKLSAgICAgICAgKmNvb2tpZXNQdHIgPSBbbnNDb29raWVzIHJldGFpbl07CisgICAgUmV0YWlu
UHRyPE5TQXJyYXk8TlNIVFRQQ29va2llICo+PiBjb29raWVzOworICAgIFtnbG9iYWxDb29raWVT
dG9yZSBnZXRBbGxDb29raWVzOlsmXShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVz
KSB7CisgICAgICAgIGNvb2tpZXMgPSBuc0Nvb2tpZXM7CiAgICAgICAgIGdvdEZsYWcgPSB0cnVl
OwogICAgIH1dOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RGbGFnKTsKIAot
ICAgIEFTU0VSVF9FUShjb29raWVzLmNvdW50LCAwdSk7Ci0gICAgW2Nvb2tpZXMgcmVsZWFzZV07
CisgICAgQVNTRVJUX0VRKFtjb29raWVzIGNvdW50XSwgMHUpOwogCiAgICAgZ290RmxhZyA9IGZh
bHNlOwogCkBAIC0xMzAsMTkgKzEyOSwxOSBAQCBzdGF0aWMgdm9pZCBydW5UZXN0V2l0aFdlYnNp
dGVEYXRhU3RvcmUoV0tXZWJzaXRlRGF0YVN0b3JlKiBkYXRhU3RvcmUpCiAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZnb3RGbGFnKTsKICAgICBnb3RGbGFnID0gZmFsc2U7CiAKLSAgICBb
Z2xvYmFsQ29va2llU3RvcmUgZ2V0QWxsQ29va2llczpbY29va2llc1B0ciA9ICZjb29raWVzXShO
U0FycmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzKSB7Ci0gICAgICAgICpjb29raWVzUHRy
ID0gW25zQ29va2llcyByZXRhaW5dOworICAgIFtnbG9iYWxDb29raWVTdG9yZSBnZXRBbGxDb29r
aWVzOlsmXShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzKSB7CisgICAgICAgIGNv
b2tpZXMgPSBuc0Nvb2tpZXM7CiAgICAgICAgIGdvdEZsYWcgPSB0cnVlOwogICAgIH1dOwogCiAg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RGbGFnKTsKICAgICBnb3RGbGFnID0gZmFs
c2U7CiAKLSAgICBBU1NFUlRfRVEoY29va2llcy5jb3VudCwgMnUpOworICAgIEFTU0VSVF9FUShb
Y29va2llcyBjb3VudF0sIDJ1KTsKICAgICB3aGlsZSAob2JzZXJ2ZXJDYWxsYmFja3MgIT0gNHUp
CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKCk7CiAKLSAgICBmb3Ig
KE5TSFRUUENvb2tpZSAqY29va2llIDogY29va2llcykgeworICAgIGZvciAoTlNIVFRQQ29va2ll
ICpjb29raWUgOiBjb29raWVzLmdldCgpKSB7CiAgICAgICAgIGlmIChbY29va2llLm5hbWUgaXNF
cXVhbDpAIkNvb2tpZU5hbWUiXSkgewogICAgICAgICAgICAgQVNTRVJUX1RSVUUoW2Nvb2tpZTEu
Z2V0KCkucGF0aCBpc0VxdWFsVG9TdHJpbmc6Y29va2llLnBhdGhdKTsKICAgICAgICAgICAgIEFT
U0VSVF9UUlVFKFtjb29raWUxLmdldCgpLnZhbHVlIGlzRXF1YWxUb1N0cmluZzpjb29raWUudmFs
dWVdKTsKQEAgLTE1OCw3ICsxNTcsNiBAQCBzdGF0aWMgdm9pZCBydW5UZXN0V2l0aFdlYnNpdGVE
YXRhU3RvcmUoV0tXZWJzaXRlRGF0YVN0b3JlKiBkYXRhU3RvcmUpCiAgICAgICAgICAgICBBU1NF
UlRfRkFMU0UoY29va2llLnNlc3Npb25Pbmx5KTsKICAgICAgICAgfQogICAgIH0KLSAgICBbY29v
a2llcyByZWxlYXNlXTsKIAogICAgIFtnbG9iYWxDb29raWVTdG9yZSBkZWxldGVDb29raWU6Y29v
a2llMi5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpbXSgpewogICAgICAgICBnb3RGbGFnID0gdHJ1
ZTsKQEAgLTE2NywyNiArMTY1LDI1IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3RXaXRoV2Vic2l0ZURh
dGFTdG9yZShXS1dlYnNpdGVEYXRhU3RvcmUqIGRhdGFTdG9yZSkKICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmdvdEZsYWcpOwogICAgIGdvdEZsYWcgPSBmYWxzZTsKIAotICAgIFtnbG9i
YWxDb29raWVTdG9yZSBnZXRBbGxDb29raWVzOltjb29raWVzUHRyID0gJmNvb2tpZXNdKE5TQXJy
YXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tpZXMpIHsKLSAgICAgICAgKmNvb2tpZXNQdHIgPSBb
bnNDb29raWVzIHJldGFpbl07CisgICAgW2dsb2JhbENvb2tpZVN0b3JlIGdldEFsbENvb2tpZXM6
WyZdKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tpZXMpIHsKKyAgICAgICAgY29va2ll
cyA9IG5zQ29va2llczsKICAgICAgICAgZ290RmxhZyA9IHRydWU7CiAgICAgfV07CiAKICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdEZsYWcpOwogICAgIGdvdEZsYWcgPSBmYWxzZTsK
IAotICAgIEFTU0VSVF9FUShjb29raWVzLmNvdW50LCAxdSk7CisgICAgQVNTRVJUX0VRKFtjb29r
aWVzIGNvdW50XSwgMXUpOwogICAgIHdoaWxlIChvYnNlcnZlckNhbGxiYWNrcyAhPSA2dSkKICAg
ICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoKTsKIAotICAgIGZvciAoTlNI
VFRQQ29va2llICpjb29raWUgOiBjb29raWVzKSB7CisgICAgZm9yIChOU0hUVFBDb29raWUgKmNv
b2tpZSA6IGNvb2tpZXMuZ2V0KCkpIHsKICAgICAgICAgQVNTRVJUX1RSVUUoW2Nvb2tpZTEuZ2V0
KCkucGF0aCBpc0VxdWFsVG9TdHJpbmc6Y29va2llLnBhdGhdKTsKICAgICAgICAgQVNTRVJUX1RS
VUUoW2Nvb2tpZTEuZ2V0KCkudmFsdWUgaXNFcXVhbFRvU3RyaW5nOmNvb2tpZS52YWx1ZV0pOwog
ICAgICAgICBBU1NFUlRfVFJVRShbY29va2llMS5nZXQoKS5kb21haW4gaXNFcXVhbFRvU3RyaW5n
OmNvb2tpZS5kb21haW5dKTsKICAgICAgICAgQVNTRVJUX1RSVUUoY29va2llLnNlY3VyZSk7CiAg
ICAgICAgIEFTU0VSVF9UUlVFKGNvb2tpZS5zZXNzaW9uT25seSk7CiAgICAgfQotICAgIFtjb29r
aWVzIHJlbGVhc2VdOwogCiAgICAgW2dsb2JhbENvb2tpZVN0b3JlIHJlbW92ZU9ic2VydmVyOm9i
c2VydmVyMS5nZXQoKV07CiAgICAgW2dsb2JhbENvb2tpZVN0b3JlIHJlbW92ZU9ic2VydmVyOm9i
c2VydmVyMi5nZXQoKV07CkBAIC0yNTEsMTUgKzI0OCwxNCBAQCBURVNUKFdLSFRUUENvb2tpZVN0
b3JlLCBIdHRwT25seSkKIAogICAgIGdsb2JhbENvb2tpZVN0b3JlID0gZGF0YVN0b3JlLmh0dHBD
b29raWVTdG9yZTsKIAotICAgIE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpjb29raWVzID0gbmls
OwotICAgIFtnbG9iYWxDb29raWVTdG9yZSBnZXRBbGxDb29raWVzOltjb29raWVzUHRyID0gJmNv
b2tpZXNdKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tpZXMpIHsKLSAgICAgICAgKmNv
b2tpZXNQdHIgPSBbbnNDb29raWVzIHJldGFpbl07CisgICAgUmV0YWluUHRyPE5TQXJyYXk8TlNI
VFRQQ29va2llICo+PiBjb29raWVzOworICAgIFtnbG9iYWxDb29raWVTdG9yZSBnZXRBbGxDb29r
aWVzOlsmXShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzKSB7CisgICAgICAgIGNv
b2tpZXMgPSBuc0Nvb2tpZXM7CiAgICAgICAgIGdvdEZsYWcgPSB0cnVlOwogICAgIH1dOwogICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290RmxhZyk7CiAgICAgZ290RmxhZyA9IGZhbHNl
OwotICAgIEFTU0VSVF9FUShjb29raWVzLmNvdW50LCAwdSk7Ci0gICAgW2Nvb2tpZXMgcmVsZWFz
ZV07CisgICAgQVNTRVJUX0VRKFtjb29raWVzIGNvdW50XSwgMHUpOwogCiAgICAgTlNNdXRhYmxl
RGljdGlvbmFyeSAqY29va2llUHJvcGVydGllcyA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxv
Y10gaW5pdF07CiAgICAgW2Nvb2tpZVByb3BlcnRpZXMgc2V0T2JqZWN0OkAiY29va2llTmFtZSIg
Zm9yS2V5Ok5TSFRUUENvb2tpZU5hbWVdOwpAQCAtMjkwLDE1ICsyODYsMTQgQEAgVEVTVChXS0hU
VFBDb29raWVTdG9yZSwgSHR0cE9ubHkpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZn
b3RGbGFnKTsKICAgICBnb3RGbGFnID0gZmFsc2U7CiAKLSAgICBbZ2xvYmFsQ29va2llU3RvcmUg
Z2V0QWxsQ29va2llczpbY29va2llc1B0ciA9ICZjb29raWVzXShOU0FycmF5PE5TSFRUUENvb2tp
ZSAqPiAqbnNDb29raWVzKSB7Ci0gICAgICAgICpjb29raWVzUHRyID0gW25zQ29va2llcyByZXRh
aW5dOworICAgIFtnbG9iYWxDb29raWVTdG9yZSBnZXRBbGxDb29raWVzOlsmXShOU0FycmF5PE5T
SFRUUENvb2tpZSAqPiAqbnNDb29raWVzKSB7CisgICAgICAgIGNvb2tpZXMgPSBuc0Nvb2tpZXM7
CiAgICAgICAgIGdvdEZsYWcgPSB0cnVlOwogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZ290RmxhZyk7CiAgICAgZ290RmxhZyA9IGZhbHNlOwotICAgIEFTU0VSVF9FUShj
b29raWVzLmNvdW50LCAxdSk7CisgICAgQVNTRVJUX0VRKFtjb29raWVzIGNvdW50XSwgMXUpOwog
ICAgIEVYUEVDVF9UUlVFKFtbW2Nvb2tpZXMgb2JqZWN0QXRJbmRleDowXSB2YWx1ZV0gaXNFcXVh
bDpAImNvb2tpZVZhbHVlMiJdKTsKLSAgICBbY29va2llcyByZWxlYXNlXTsKIAogICAgIC8vIFNl
dHRpbmcgbm90SHR0cE9ubHlDb29raWUgc2hvdWxkIGZhaWwgYmVjYXVzZSB3ZSBjYW5ub3Qgb3Zl
cndyaXRlIEhUVFBPbmx5IHByb3BlcnR5IHVzaW5nIHB1YmxpYyBBUEkuCiAgICAgW2dsb2JhbENv
b2tpZVN0b3JlIHNldENvb2tpZTpub3RIdHRwT25seUNvb2tpZS5nZXQoKSBjb21wbGV0aW9uSGFu
ZGxlcjpbXSgpIHsKQEAgLTMwNywxNSArMzAyLDE0IEBAIFRFU1QoV0tIVFRQQ29va2llU3RvcmUs
IEh0dHBPbmx5KQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290RmxhZyk7CiAgICAg
Z290RmxhZyA9IGZhbHNlOwogCi0gICAgW2dsb2JhbENvb2tpZVN0b3JlIGdldEFsbENvb2tpZXM6
W2Nvb2tpZXNQdHIgPSAmY29va2llc10oTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2ll
cykgewotICAgICAgICAqY29va2llc1B0ciA9IFtuc0Nvb2tpZXMgcmV0YWluXTsKKyAgICBbZ2xv
YmFsQ29va2llU3RvcmUgZ2V0QWxsQ29va2llczpbJl0oTlNBcnJheTxOU0hUVFBDb29raWUgKj4g
Km5zQ29va2llcykgeworICAgICAgICBjb29raWVzID0gbnNDb29raWVzOwogICAgICAgICBnb3RG
bGFnID0gdHJ1ZTsKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdEZs
YWcpOwogICAgIGdvdEZsYWcgPSBmYWxzZTsKLSAgICBBU1NFUlRfRVEoY29va2llcy5jb3VudCwg
MXUpOworICAgIEFTU0VSVF9FUShbY29va2llcyBjb3VudF0sIDF1KTsKICAgICBFWFBFQ1RfVFJV
RShbW2Nvb2tpZXMgb2JqZWN0QXRJbmRleDowXSBpc0hUVFBPbmx5XSk7Ci0gICAgW2Nvb2tpZXMg
cmVsZWFzZV07CiAKICAgICAvLyBEZWxldGluZyBub3RIdHRwT25seUNvb2tpZSBzaG91bGQgZmFp
bCBiZWNhdXNlIHRoZSBjb29raWUgc3RvcmVkIGlzIEhUVFBPbmx5LgogICAgIFtnbG9iYWxDb29r
aWVTdG9yZSBkZWxldGVDb29raWU6bm90SHR0cE9ubHlDb29raWUuZ2V0KCkgY29tcGxldGlvbkhh
bmRsZXI6W10oKSB7CkBAIC0zMjQsMTQgKzMxOCwxMyBAQCBURVNUKFdLSFRUUENvb2tpZVN0b3Jl
LCBIdHRwT25seSkKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdEZsYWcpOwogICAg
IGdvdEZsYWcgPSBmYWxzZTsKIAotICAgIFtnbG9iYWxDb29raWVTdG9yZSBnZXRBbGxDb29raWVz
Oltjb29raWVzUHRyID0gJmNvb2tpZXNdKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tp
ZXMpIHsKLSAgICAgICAgKmNvb2tpZXNQdHIgPSBbbnNDb29raWVzIHJldGFpbl07CisgICAgW2ds
b2JhbENvb2tpZVN0b3JlIGdldEFsbENvb2tpZXM6WyZdKE5TQXJyYXk8TlNIVFRQQ29va2llICo+
ICpuc0Nvb2tpZXMpIHsKKyAgICAgICAgY29va2llcyA9IG5zQ29va2llczsKICAgICAgICAgZ290
RmxhZyA9IHRydWU7CiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RG
bGFnKTsKICAgICBnb3RGbGFnID0gZmFsc2U7Ci0gICAgQVNTRVJUX0VRKGNvb2tpZXMuY291bnQs
IDF1KTsKLSAgICBbY29va2llcyByZWxlYXNlXTsKKyAgICBBU1NFUlRfRVEoW2Nvb2tpZXMgY291
bnRdLCAxdSk7CiAKICAgICAvLyBEZWxldGluZyBodHRwT25seUNvb2tpZSBzaG91bGQgc3VjY2Vl
ZC4gCiAgICAgW2dsb2JhbENvb2tpZVN0b3JlIGRlbGV0ZUNvb2tpZTpodHRwT25seUNvb2tpZS5n
ZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpbXSgpIHsKQEAgLTM0MCwxNCArMzMzLDEzIEBAIFRFU1Qo
V0tIVFRQQ29va2llU3RvcmUsIEh0dHBPbmx5KQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZ290RmxhZyk7CiAgICAgZ290RmxhZyA9IGZhbHNlOwogCi0gICAgW2dsb2JhbENvb2tpZVN0
b3JlIGdldEFsbENvb2tpZXM6W2Nvb2tpZXNQdHIgPSAmY29va2llc10oTlNBcnJheTxOU0hUVFBD
b29raWUgKj4gKm5zQ29va2llcykgewotICAgICAgICAqY29va2llc1B0ciA9IFtuc0Nvb2tpZXMg
cmV0YWluXTsKKyAgICBbZ2xvYmFsQ29va2llU3RvcmUgZ2V0QWxsQ29va2llczpbJl0oTlNBcnJh
eTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2llcykgeworICAgICAgICBjb29raWVzID0gbnNDb29r
aWVzOwogICAgICAgICBnb3RGbGFnID0gdHJ1ZTsKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmdvdEZsYWcpOwogICAgIGdvdEZsYWcgPSBmYWxzZTsKLSAgICBBU1NFUlRf
RVEoY29va2llcy5jb3VudCwgMHUpOwotICAgIFtjb29raWVzIHJlbGVhc2VdOworICAgIEFTU0VS
VF9FUShbY29va2llcyBjb3VudF0sIDB1KTsKIH0KIAogLy8gRklYTUU6IFdvdWxkIGJlIGdvb2Qg
dG8gZW5hYmxlIHRoaXMgdGVzdCBmb3Igd2F0Y2hPUyBhbmQgdHZPUy4KZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFu
ZGxlci0xLm1tCmluZGV4IDI3YzY1YWU3MjQzMTc4MTFiYjhiMWM4NmIwMWRkOTczMDcxMzcwOGQu
LmQ3NWU1YjI0MDYwMmZlOGRkMWEwMmI1Y2NkOGE5NDIwMzg3ZWQwZDkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVt
ZUhhbmRsZXItMS5tbQpAQCAtNzczLDggKzc3Myw3IEBAIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwg
VGhyZWFkcykKICAgICBbcG9vbCBkcmFpbl07CiAKICAgICBUaHJlYWQ6OmNyZWF0ZSgiQiIsIFtd
IHsKLSAgICAgICAgW3RoZVRhc2sgcmVsZWFzZV07Ci0gICAgICAgIHRoZVRhc2sgPSBuaWw7Cisg
ICAgICAgIGF1dG8gb2xkVGFzayA9IGFkb3B0TlMoc3RkOjpleGNoYW5nZSh0aGVUYXNrLCBuaWwp
KTsKICAgICB9KS0+d2FpdEZvckNvbXBsZXRpb24oKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRPYmpDL1VzZXJDb250ZW50VGVzdC5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9Vc2VyQ29udGVudFRlc3QubW0KaW5kZXgg
OGUxNzdhZmJiZTU5Y2VmZTkwZjhkMTA5MTQ3ODdlNjM3Yjk4MzllNi4uMmQwYjE3M2ZkYTU2ZDdi
OGE4NTBiMzc4YzdiOGVjOTJjOGYxZTRjMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRPYmpDL1VzZXJDb250ZW50VGVzdC5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvVXNlckNvbnRlbnRUZXN0Lm1tCkBAIC0zNSw2ICszNSw3
IEBACiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tWaWV3
UHJpdmF0ZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBzdGF0aWMgYm9vbCB0ZXN0
RmluaXNoZWQgPSBmYWxzZTsKIHN0YXRpYyBOU1N0cmluZyAqaHRtbFN0cmluZyA9IEAiPGJvZHkg
c3R5bGU9J2JhY2tncm91bmQtY29sb3I6IHJlZCc+IjsKQEAgLTQ3LDI1ICs0OCwyMSBAQCBzdGF0
aWMgY29uc3QgY2hhciogdXNlclNjcmlwdFRlc3RQcm9wZXJ0eSA9ICJ3aW5kb3cuX3VzZXJTY3Jp
cHRJbnN0YWxsZWQiOwogbmFtZXNwYWNlIHsKICAgICBjbGFzcyBXZWJLaXQyVXNlckNvbnRlbnRU
ZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgcHVibGljOgotICAgICAgICBXS1By
b2Nlc3NHcm91cCAqcHJvY2Vzc0dyb3VwOwotICAgICAgICBXS0Jyb3dzaW5nQ29udGV4dEdyb3Vw
ICpicm93c2luZ0NvbnRleHRHcm91cDsKKyAgICAgICAgUmV0YWluUHRyPFdLUHJvY2Vzc0dyb3Vw
PiBwcm9jZXNzR3JvdXA7CisgICAgICAgIFJldGFpblB0cjxXS0Jyb3dzaW5nQ29udGV4dEdyb3Vw
PiBicm93c2luZ0NvbnRleHRHcm91cDsKIAotICAgICAgICBXZWJLaXQyVXNlckNvbnRlbnRUZXN0
KCkKLSAgICAgICAgICAgIDogcHJvY2Vzc0dyb3VwKG5pbCkKLSAgICAgICAgICAgICwgYnJvd3Np
bmdDb250ZXh0R3JvdXAobmlsKQotICAgICAgICB7Ci0gICAgICAgIH0KKyAgICAgICAgV2ViS2l0
MlVzZXJDb250ZW50VGVzdCgpID0gZGVmYXVsdDsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwg
dm9pZCBTZXRVcCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHByb2Nlc3NHcm91cCA9IFtbV0tQ
cm9jZXNzR3JvdXAgYWxsb2NdIGluaXRdOwotICAgICAgICAgICAgYnJvd3NpbmdDb250ZXh0R3Jv
dXAgPSBbW1dLQnJvd3NpbmdDb250ZXh0R3JvdXAgYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpA
IlVzZXJDb250ZW50SWRlbnRpZmllciJdOworICAgICAgICAgICAgcHJvY2Vzc0dyb3VwID0gYWRv
cHROUyhbW1dLUHJvY2Vzc0dyb3VwIGFsbG9jXSBpbml0XSk7CisgICAgICAgICAgICBicm93c2lu
Z0NvbnRleHRHcm91cCA9IGFkb3B0TlMoW1tXS0Jyb3dzaW5nQ29udGV4dEdyb3VwIGFsbG9jXSBp
bml0V2l0aElkZW50aWZpZXI6QCJVc2VyQ29udGVudElkZW50aWZpZXIiXSk7CiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIFticm93c2luZ0NvbnRleHRHcm91cCByZWxlYXNlXTsKLSAgICAgICAgICAgIFtw
cm9jZXNzR3JvdXAgcmVsZWFzZV07CisgICAgICAgICAgICBicm93c2luZ0NvbnRleHRHcm91cCA9
IG51bGxwdHI7CisgICAgICAgICAgICBwcm9jZXNzR3JvdXAgPSBudWxscHRyOwogICAgICAgICB9
CiAgICAgfTsKIH0gLy8gbmFtZXNwYWNlCkBAIC0xMjMsNyArMTIwLDcgQEAgVEVTVF9GKFdlYktp
dDJVc2VyQ29udGVudFRlc3QsIEFkZFVzZXJTdHlsZVNoZWV0QmVmb3JlQ3JlYXRpbmdWaWV3KQog
ICAgIHRlc3RGaW5pc2hlZCA9IGZhbHNlOwogICAgIFticm93c2luZ0NvbnRleHRHcm91cCBhZGRV
c2VyU3R5bGVTaGVldDp1c2VyU3R5bGVTaGVldCBiYXNlVVJMOm5pbCBpbmNsdWRlTWF0Y2hQYXR0
ZXJuU3RyaW5nczpuaWwgZXhjbHVkZU1hdGNoUGF0dGVyblN0cmluZ3M6bmlsIG1haW5GcmFtZU9u
bHk6WUVTXTsKICAgICAKLSAgICBXS1ZpZXcgKndrVmlldyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNz
R3JvdXAgYnJvd3NpbmdDb250ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXBdOworICAgIFdL
VmlldyAqd2tWaWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nlc3NHcm91cC5nZXQoKSBicm93c2luZ0Nv
bnRleHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91cC5nZXQoKV07CiAgICAgV0tTdHJpbmdSZWYg
YmFja2dyb3VuZENvbG9yUXVlcnkgPSBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhiYWNr
Z3JvdW5kQ29sb3JTY3JpcHQpOwogICAgIHdrVmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVy
LmxvYWREZWxlZ2F0ZSA9IFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZSBhbGxvY10g
aW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpz
ZW5kZXIpIHsKICAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHdrVmlldy5wYWdlUmVm
LCBiYWNrZ3JvdW5kQ29sb3JRdWVyeSwgXihXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJp
YWxpemVkU2NyaXB0VmFsdWUsIFdLRXJyb3JSZWYgZXJyb3IpIHsKQEAgLTE0Miw3ICsxMzksNyBA
QCBURVNUX0YoV2ViS2l0MlVzZXJDb250ZW50VGVzdCwgQWRkVXNlclN0eWxlU2hlZXRBZnRlckNy
ZWF0aW5nVmlldykKIHsKICAgICB0ZXN0RmluaXNoZWQgPSBmYWxzZTsKICAgICAKLSAgICBXS1Zp
ZXcgKndrVmlldyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAgYnJvd3NpbmdDb250ZXh0R3Jv
dXA6YnJvd3NpbmdDb250ZXh0R3JvdXBdOworICAgIFdLVmlldyAqd2tWaWV3ID0gW1tXS1ZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dy
b3VwOnByb2Nlc3NHcm91cC5nZXQoKSBicm93c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0NvbnRl
eHRHcm91cC5nZXQoKV07CiAgICAgV0tTdHJpbmdSZWYgYmFja2dyb3VuZENvbG9yUXVlcnkgPSBX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhiYWNrZ3JvdW5kQ29sb3JTY3JpcHQpOwogICAg
IHdrVmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbVGVzdEJy
b3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2Fk
Ol4oV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpzZW5kZXIpIHsKICAgICAgICAgcnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lKHdrVmlldy5wYWdlUmVmLCBiYWNrZ3JvdW5kQ29sb3JRdWVyeSwg
XihXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIFdLRXJy
b3JSZWYgZXJyb3IpIHsKQEAgLTE2NCw3ICsxNjEsNyBAQCBURVNUX0YoV2ViS2l0MlVzZXJDb250
ZW50VGVzdCwgUmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKQogICAgIHRlc3RGaW5pc2hlZCA9IGZh
bHNlOwogICAgIFticm93c2luZ0NvbnRleHRHcm91cCBhZGRVc2VyU3R5bGVTaGVldDp1c2VyU3R5
bGVTaGVldCBiYXNlVVJMOm5pbCBpbmNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5nczpuaWwgZXhjbHVk
ZU1hdGNoUGF0dGVyblN0cmluZ3M6bmlsIG1haW5GcmFtZU9ubHk6WUVTXTsKICAgICAKLSAgICBX
S1ZpZXcgKndrVmlldyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAgYnJvd3NpbmdDb250ZXh0
R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXBdOworICAgIFdLVmlldyAqd2tWaWV3ID0gW1tXS1Zp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vz
c0dyb3VwOnByb2Nlc3NHcm91cC5nZXQoKSBicm93c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0Nv
bnRleHRHcm91cC5nZXQoKV07CiAgICAgV0tTdHJpbmdSZWYgYmFja2dyb3VuZENvbG9yUXVlcnkg
PSBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhiYWNrZ3JvdW5kQ29sb3JTY3JpcHQpOwog
ICAgIHdrVmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbVGVz
dEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25M
b2FkOl4oV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpzZW5kZXIpIHsKICAgICAgICAgcnVu
SmF2YVNjcmlwdEluTWFpbkZyYW1lKHdrVmlldy5wYWdlUmVmLCBiYWNrZ3JvdW5kQ29sb3JRdWVy
eSwgXihXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIFdL
RXJyb3JSZWYgZXJyb3IpIHsKQEAgLTE4Niw3ICsxODMsNyBAQCBURVNUX0YoV2ViS2l0MlVzZXJD
b250ZW50VGVzdCwgQWRkVXNlclNjcmlwdEJlZm9yZUNyZWF0aW5nVmlldykKICAgICB0ZXN0Rmlu
aXNoZWQgPSBmYWxzZTsKICAgICBbYnJvd3NpbmdDb250ZXh0R3JvdXAgYWRkVXNlclNjcmlwdDpb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVzID0gdHJ1ZTsiLCB1c2VyU2NyaXB0VGVzdFBy
b3BlcnR5XSBiYXNlVVJMOm5pbCBpbmNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5nczpuaWwgZXhjbHVk
ZU1hdGNoUGF0dGVyblN0cmluZ3M6bmlsIGluamVjdGlvblRpbWU6a1dLSW5qZWN0QXREb2N1bWVu
dFN0YXJ0IG1haW5GcmFtZU9ubHk6WUVTXTsKICAgICAKLSAgICBXS1ZpZXcgKndrVmlldyA9IFtb
V0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHBy
b2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAgYnJvd3NpbmdDb250ZXh0R3JvdXA6YnJvd3NpbmdDb250
ZXh0R3JvdXBdOworICAgIFdLVmlldyAqd2tWaWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nlc3NHcm91
cC5nZXQoKSBicm93c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91cC5nZXQoKV07
CiAgICAgV0tTdHJpbmdSZWYgdXNlclNjcmlwdFRlc3RQcm9wZXJ0eVN0cmluZyA9IFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKHVzZXJTY3JpcHRUZXN0UHJvcGVydHkpOwogICAgIHdrVmll
dy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbVGVzdEJyb3dzaW5n
Q29udGV4dExvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tC
cm93c2luZ0NvbnRleHRDb250cm9sbGVyICpzZW5kZXIpIHsKICAgICAgICAgcnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lKHdrVmlldy5wYWdlUmVmLCB1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5n
LCBeKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tF
cnJvclJlZiBlcnJvcikgewpAQCAtMjA1LDcgKzIwMiw3IEBAIFRFU1RfRihXZWJLaXQyVXNlckNv
bnRlbnRUZXN0LCBBZGRVc2VyU2NyaXB0QWZ0ZXJDcmVhdGluZ1ZpZXcpCiB7CiAgICAgdGVzdEZp
bmlzaGVkID0gZmFsc2U7CiAgICAgCi0gICAgV0tWaWV3ICp3a1ZpZXcgPSBbW1dLVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6
cHJvY2Vzc0dyb3VwIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3VwXTsK
KyAgICBXS1ZpZXcgKndrVmlldyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAuZ2V0KCkgYnJv
d3NpbmdDb250ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXAuZ2V0KCldOwogICAgIFdLU3Ry
aW5nUmVmIHVzZXJTY3JpcHRUZXN0UHJvcGVydHlTdHJpbmcgPSBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZyh1c2VyU2NyaXB0VGVzdFByb3BlcnR5KTsKICAgICB3a1ZpZXcuYnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBbW1Rlc3RCcm93c2luZ0NvbnRleHRMb2Fk
RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tUb1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7CiAgICAgICAgIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFt
ZSh3a1ZpZXcucGFnZVJlZiwgdXNlclNjcmlwdFRlc3RQcm9wZXJ0eVN0cmluZywgXihXS1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIFdLRXJyb3JSZWYgZXJy
b3IpIHsKQEAgLTIyNyw3ICsyMjQsNyBAQCBURVNUX0YoV2ViS2l0MlVzZXJDb250ZW50VGVzdCwg
UmVtb3ZlQWxsVXNlclNjcmlwdHMpCiAgICAgdGVzdEZpbmlzaGVkID0gZmFsc2U7CiAgICAgW2Jy
b3dzaW5nQ29udGV4dEdyb3VwIGFkZFVzZXJTY3JpcHQ6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCIlcyA9IHRydWU7IiwgdXNlclNjcmlwdFRlc3RQcm9wZXJ0eV0gYmFzZVVSTDpuaWwgaW5j
bHVkZU1hdGNoUGF0dGVyblN0cmluZ3M6bmlsIGV4Y2x1ZGVNYXRjaFBhdHRlcm5TdHJpbmdzOm5p
bCBpbmplY3Rpb25UaW1lOmtXS0luamVjdEF0RG9jdW1lbnRTdGFydCBtYWluRnJhbWVPbmx5OllF
U107CiAgICAgCi0gICAgV0tWaWV3ICp3a1ZpZXcgPSBbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3Vw
IGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3VwXTsKKyAgICBXS1ZpZXcg
KndrVmlldyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
ODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAuZ2V0KCkgYnJvd3NpbmdDb250ZXh0
R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXAuZ2V0KCldOwogICAgIFdLU3RyaW5nUmVmIHVzZXJT
Y3JpcHRUZXN0UHJvcGVydHlTdHJpbmcgPSBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyh1
c2VyU2NyaXB0VGVzdFByb3BlcnR5KTsKICAgICB3a1ZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJv
bGxlci5sb2FkRGVsZWdhdGUgPSBbW1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUgYWxs
b2NdIGluaXRXaXRoQmxvY2tUb1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
ciAqc2VuZGVyKSB7CiAgICAgICAgIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh3a1ZpZXcucGFn
ZVJlZiwgdXNlclNjcmlwdFRlc3RQcm9wZXJ0eVN0cmluZywgXihXS1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZVJlZiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIFdLRXJyb3JSZWYgZXJyb3IpIHsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9XS0Jyb3dzaW5nQ29u
dGV4dEdyb3VwVGVzdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9X
S0Jyb3dzaW5nQ29udGV4dEdyb3VwVGVzdC5tbQppbmRleCAyNzc1ODkzYTU1MGRkMzk4NTQ3YWNj
NjA2NWNmNGMwNDVjZmE4Nzc0Li42NWZhOWZmYWI5MDA5YmZiNGMxZTgwZTA2YWZiOTQwMjE3ODJh
Mzg1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvV0tC
cm93c2luZ0NvbnRleHRHcm91cFRlc3QubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRPYmpDL1dLQnJvd3NpbmdDb250ZXh0R3JvdXBUZXN0Lm1tCkBAIC0yNywzMyArMjcs
MzAgQEAKICNpbXBvcnQgIlRlc3QuaCIKIAogI2ltcG9ydCA8V2ViS2l0L1dLQnJvd3NpbmdDb250
ZXh0R3JvdXAuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogI2lmIFBMQVRGT1JNKE1B
QykKIAogVEVTVChXS0Jyb3dzaW5nQ29udGV4dEdyb3VwVGVzdCwgR2V0U2V0SmF2YVNjcmlwdEVu
YWJsZWQpCiB7Ci0gICAgV0tCcm93c2luZ0NvbnRleHRHcm91cCAqYnJvd3NpbmdDb250ZXh0R3Jv
dXAgPSBbW1dLQnJvd3NpbmdDb250ZXh0R3JvdXAgYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpA
IlRlc3RJZGVudGlmaWVyIl07CisgICAgYXV0byBicm93c2luZ0NvbnRleHRHcm91cCA9IGFkb3B0
TlMoW1tXS0Jyb3dzaW5nQ29udGV4dEdyb3VwIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6QCJU
ZXN0SWRlbnRpZmllciJdKTsKICAgICAKLSAgICBBU1NFUlRfVFJVRShicm93c2luZ0NvbnRleHRH
cm91cC5hbGxvd3NKYXZhU2NyaXB0KTsKKyAgICBBU1NFUlRfVFJVRShbYnJvd3NpbmdDb250ZXh0
R3JvdXAgYWxsb3dzSmF2YVNjcmlwdF0pOwogCi0gICAgYnJvd3NpbmdDb250ZXh0R3JvdXAuYWxs
b3dzSmF2YVNjcmlwdCA9IE5POworICAgIFticm93c2luZ0NvbnRleHRHcm91cCBzZXRBbGxvd3NK
YXZhU2NyaXB0Ok5PXTsKIAotICAgIEFTU0VSVF9GQUxTRShicm93c2luZ0NvbnRleHRHcm91cC5h
bGxvd3NKYXZhU2NyaXB0KTsKLQotICAgIFticm93c2luZ0NvbnRleHRHcm91cCByZWxlYXNlXTsK
KyAgICBBU1NFUlRfRkFMU0UoW2Jyb3dzaW5nQ29udGV4dEdyb3VwIGFsbG93c0phdmFTY3JpcHRd
KTsKIH0KIAogVEVTVChXS0Jyb3dzaW5nQ29udGV4dEdyb3VwVGVzdCwgR2V0U2V0UGx1Z2luc0Vu
YWJsZWQpCiB7Ci0gICAgV0tCcm93c2luZ0NvbnRleHRHcm91cCAqYnJvd3NpbmdDb250ZXh0R3Jv
dXAgPSBbW1dLQnJvd3NpbmdDb250ZXh0R3JvdXAgYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpA
IlRlc3RJZGVudGlmaWVyIl07CisgICAgYXV0byBicm93c2luZ0NvbnRleHRHcm91cCA9IGFkb3B0
TlMoW1tXS0Jyb3dzaW5nQ29udGV4dEdyb3VwIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6QCJU
ZXN0SWRlbnRpZmllciJdKTsKICAgICAKLSAgICBBU1NFUlRfVFJVRShicm93c2luZ0NvbnRleHRH
cm91cC5hbGxvd3NQbHVnSW5zKTsKLQotICAgIGJyb3dzaW5nQ29udGV4dEdyb3VwLmFsbG93c1Bs
dWdJbnMgPSBOTzsKKyAgICBBU1NFUlRfVFJVRShbYnJvd3NpbmdDb250ZXh0R3JvdXAgYWxsb3dz
UGx1Z0luc10pOwogCi0gICAgQVNTRVJUX0ZBTFNFKGJyb3dzaW5nQ29udGV4dEdyb3VwLmFsbG93
c1BsdWdJbnMpOworICAgIFticm93c2luZ0NvbnRleHRHcm91cCBzZXRBbGxvd3NQbHVnSW5zOk5P
XTsKIAotICAgIFticm93c2luZ0NvbnRleHRHcm91cCByZWxlYXNlXTsKKyAgICBBU1NFUlRfRkFM
U0UoW2Jyb3dzaW5nQ29udGV4dEdyb3VwIGFsbG93c1BsdWdJbnNdKTsKIH0KIAogI2VuZGlmIC8v
IFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0T2JqQy9XS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZVRlc3QubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvV0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGVU
ZXN0Lm1tCmluZGV4IDQyODExNTVmYjgxNTM0ZThiZGIzYTY3YTEyODEyZWM5MTY1N2RlY2YuLmVm
MmRlMjUwMTU3YTUxZGFkYWU1ZDFkOGFlMTUwNzhiNzY1MWQ3OTggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9XS0Jyb3dzaW5nQ29udGV4dExvYWREZWxl
Z2F0ZVRlc3QubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRPYmpDL1dL
QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlVGVzdC5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2lt
cG9ydCA8V2ViS2l0L1dLUHJvY2Vzc0dyb3VwLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tSZXRhaW5Q
dHIuaD4KICNpbXBvcnQgPFdlYktpdC9XS1ZpZXcuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KIAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKIApAQCAtNDEsMjkgKzQyLDI0IEBA
IG5hbWVzcGFjZSB7CiAKIGNsYXNzIFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeyAKIHB1YmxpYzoKLSAgICBXS1Byb2Nlc3NHcm91cCAq
cHJvY2Vzc0dyb3VwOwotICAgIFdLQnJvd3NpbmdDb250ZXh0R3JvdXAgKmJyb3dzaW5nQ29udGV4
dEdyb3VwOwotICAgIFdLVmlldyAqdmlldzsKLQotICAgIFdLQnJvd3NpbmdDb250ZXh0TG9hZERl
bGVnYXRlVGVzdCgpCi0gICAgICAgIDogcHJvY2Vzc0dyb3VwKG5pbCkKLSAgICAgICAgLCBicm93
c2luZ0NvbnRleHRHcm91cChuaWwpCi0gICAgICAgICwgdmlldyhuaWwpCi0gICAgewotICAgIH0K
KyAgICBSZXRhaW5QdHI8V0tQcm9jZXNzR3JvdXA+IHByb2Nlc3NHcm91cDsKKyAgICBSZXRhaW5Q
dHI8V0tCcm93c2luZ0NvbnRleHRHcm91cD4gYnJvd3NpbmdDb250ZXh0R3JvdXA7CisgICAgUmV0
YWluUHRyPFdLVmlldz4gdmlldzsKKworICAgIFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRl
VGVzdCgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCiAgICAgewotICAg
ICAgICBwcm9jZXNzR3JvdXAgPSBbW1dLUHJvY2Vzc0dyb3VwIGFsbG9jXSBpbml0XTsKLSAgICAg
ICAgYnJvd3NpbmdDb250ZXh0R3JvdXAgPSBbW1dLQnJvd3NpbmdDb250ZXh0R3JvdXAgYWxsb2Nd
IGluaXRXaXRoSWRlbnRpZmllcjpAIlRlc3RJZGVudGlmaWVyIl07Ci0gICAgICAgIHZpZXcgPSBb
W1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBw
cm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29u
dGV4dEdyb3VwXTsKKyAgICAgICAgcHJvY2Vzc0dyb3VwID0gYWRvcHROUyhbW1dLUHJvY2Vzc0dy
b3VwIGFsbG9jXSBpbml0XSk7CisgICAgICAgIGJyb3dzaW5nQ29udGV4dEdyb3VwID0gYWRvcHRO
UyhbW1dLQnJvd3NpbmdDb250ZXh0R3JvdXAgYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpAIlRl
c3RJZGVudGlmaWVyIl0pOworICAgICAgICB2aWV3ID0gYWRvcHROUyhbW1dLVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJv
Y2Vzc0dyb3VwLmdldCgpIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3Vw
LmdldCgpXSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkKICAgICB7Ci0g
ICAgICAgIFt2aWV3IHJlbGVhc2VdOwotICAgICAgICBbYnJvd3NpbmdDb250ZXh0R3JvdXAgcmVs
ZWFzZV07Ci0gICAgICAgIFtwcm9jZXNzR3JvdXAgcmVsZWFzZV07CisgICAgICAgIHZpZXcgPSBu
dWxscHRyOworICAgICAgICBicm93c2luZ0NvbnRleHRHcm91cCA9IG51bGxwdHI7CisgICAgICAg
IHByb2Nlc3NHcm91cCA9IG51bGxwdHI7CiAgICAgfQogfTsKIApAQCAtMTA3LDE5ICsxMDMsMTgg
QEAgVEVTVF9GKFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlVGVzdCwgU2ltcGxlTG9hZCkK
ICAgICBib29sIHNpbXBsZUxvYWREb25lID0gZmFsc2U7CiAKICAgICAvLyBBZGQgdGhlIGxvYWQg
ZGVsZWdhdGUuCi0gICAgU2ltcGxlTG9hZERlbGVnYXRlICpsb2FkRGVsZWdhdGUgPSBbW1NpbXBs
ZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhGbGFnOiZzaW1wbGVMb2FkRG9uZV07Ci0gICAg
dmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IGxvYWREZWxlZ2F0
ZTsKKyAgICBhdXRvIGxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tTaW1wbGVMb2FkRGVsZWdhdGUg
YWxsb2NdIGluaXRXaXRoRmxhZzomc2ltcGxlTG9hZERvbmVdKTsKKyAgICB2aWV3LmdldCgpLmJy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gbG9hZERlbGVnYXRlLmdldCgp
OwogCiAgICAgLy8gTG9hZCB0aGUgZmlsZS4KICAgICBOU1VSTCAqbnNVUkwgPSBbW05TQnVuZGxl
IG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRt
bCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKLSAgICBbdmlldy5i
cm93c2luZ0NvbnRleHRDb250cm9sbGVyIGxvYWRGaWxlVVJMOm5zVVJMIHJlc3RyaWN0VG9GaWxl
c1dpdGhpbjpuaWxdOworICAgIFt2aWV3LmdldCgpLmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIg
bG9hZEZpbGVVUkw6bnNVUkwgcmVzdHJpY3RUb0ZpbGVzV2l0aGluOm5pbF07CiAKICAgICAvLyBX
YWl0IGZvciB0aGUgbG9hZCB0byBmaW5pc2guCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZzaW1wbGVMb2FkRG9uZSk7CiAKICAgICAvLyBUZWFyIGRvd24gdGhlIGRlbGVnYXRlLgotICAg
IHZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBuaWw7Ci0gICAg
W2xvYWREZWxlZ2F0ZSByZWxlYXNlXTsKKyAgICB2aWV3LmdldCgpLmJyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIubG9hZERlbGVnYXRlID0gbmlsOwogfQogCiBURVNUX0YoV0tCcm93c2luZ0NvbnRl
eHRMb2FkRGVsZWdhdGVUZXN0LCBTaW1wbGVMb2FkT2ZIVE1MU3RyaW5nKQpAQCAtMTI3LDE4ICsx
MjIsMTcgQEAgVEVTVF9GKFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlVGVzdCwgU2ltcGxl
TG9hZE9mSFRNTFN0cmluZykKICAgICBib29sIHNpbXBsZUxvYWREb25lID0gZmFsc2U7CiAKICAg
ICAvLyBBZGQgdGhlIGxvYWQgZGVsZWdhdGUuCi0gICAgU2ltcGxlTG9hZERlbGVnYXRlICpsb2Fk
RGVsZWdhdGUgPSBbW1NpbXBsZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhGbGFnOiZzaW1w
bGVMb2FkRG9uZV07Ci0gICAgdmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxl
Z2F0ZSA9IGxvYWREZWxlZ2F0ZTsKKyAgICBhdXRvIGxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tT
aW1wbGVMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRmxhZzomc2ltcGxlTG9hZERvbmVdKTsK
KyAgICB2aWV3LmdldCgpLmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0g
bG9hZERlbGVnYXRlLmdldCgpOwogCiAgICAgLy8gTG9hZCB0aGUgSFRNTCBzdHJpbmcuCi0gICAg
W3ZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2FkSFRNTFN0cmluZzpAIjxodG1sPjxi
b2R5PlNpbXBsZSBIVE1MIFN0cmluZzwvYm9keT48L2h0bWw+IiBiYXNlVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOkAiYWJvdXQ6YmxhbmsiXV07CisgICAgW3ZpZXcuZ2V0KCkuYnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlciBsb2FkSFRNTFN0cmluZzpAIjxodG1sPjxib2R5PlNpbXBsZSBIVE1MIFN0
cmluZzwvYm9keT48L2h0bWw+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiYWJvdXQ6
YmxhbmsiXV07CiAKICAgICAvLyBXYWl0IGZvciB0aGUgbG9hZCB0byBmaW5pc2guCiAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZzaW1wbGVMb2FkRG9uZSk7CiAKICAgICAvLyBUZWFyIGRv
d24gdGhlIGRlbGVnYXRlLgotICAgIHZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2Fk
RGVsZWdhdGUgPSBuaWw7Ci0gICAgW2xvYWREZWxlZ2F0ZSByZWxlYXNlXTsKKyAgICB2aWV3Lmdl
dCgpLmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gbmlsOwogfQogCiBU
RVNUX0YoV0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGVUZXN0LCBTaW1wbGVMb2FkT2ZIVE1M
U3RyaW5nX05pbEJhc2VVUkwpCkBAIC0xNDYsMTggKzE0MCwxNyBAQCBURVNUX0YoV0tCcm93c2lu
Z0NvbnRleHRMb2FkRGVsZWdhdGVUZXN0LCBTaW1wbGVMb2FkT2ZIVE1MU3RyaW5nX05pbEJhc2VV
UkwpCiAgICAgYm9vbCBzaW1wbGVMb2FkRG9uZSA9IGZhbHNlOwogCiAgICAgLy8gQWRkIHRoZSBs
b2FkIGRlbGVnYXRlLgotICAgIFNpbXBsZUxvYWREZWxlZ2F0ZSAqbG9hZERlbGVnYXRlID0gW1tT
aW1wbGVMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRmxhZzomc2ltcGxlTG9hZERvbmVdOwot
ICAgIHZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBsb2FkRGVs
ZWdhdGU7CisgICAgYXV0byBsb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbU2ltcGxlTG9hZERlbGVn
YXRlIGFsbG9jXSBpbml0V2l0aEZsYWc6JnNpbXBsZUxvYWREb25lXSk7CisgICAgdmlldy5nZXQo
KS5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IGxvYWREZWxlZ2F0ZS5n
ZXQoKTsKIAogICAgIC8vIExvYWQgdGhlIEhUTUwgc3RyaW5nLCBwYXNzIG5pbCBhcyB0aGUgYmFz
ZVVSTC4KLSAgICBbdmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyIGxvYWRIVE1MU3RyaW5n
OkAiPGh0bWw+PGJvZHk+U2ltcGxlIEhUTUwgU3RyaW5nPC9ib2R5PjwvaHRtbD4iIGJhc2VVUkw6
bmlsXTsKKyAgICBbdmlldy5nZXQoKS5icm93c2luZ0NvbnRleHRDb250cm9sbGVyIGxvYWRIVE1M
U3RyaW5nOkAiPGh0bWw+PGJvZHk+U2ltcGxlIEhUTUwgU3RyaW5nPC9ib2R5PjwvaHRtbD4iIGJh
c2VVUkw6bmlsXTsKIAogICAgIC8vIFdhaXQgZm9yIHRoZSBsb2FkIHRvIGZpbmlzaC4KICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnNpbXBsZUxvYWREb25lKTsKIAogICAgIC8vIFRlYXIg
ZG93biB0aGUgZGVsZWdhdGUuCi0gICAgdmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxv
YWREZWxlZ2F0ZSA9IG5pbDsKLSAgICBbbG9hZERlbGVnYXRlIHJlbGVhc2VdOworICAgIHZpZXcu
Z2V0KCkuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBuaWw7CiB9CiAK
IFRFU1RfRihXS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZVRlc3QsIFNpbXBsZUxvYWRPZkhU
TUxTdHJpbmdfTmlsSFRNTFN0cmluZ0FuZEJhc2VVUkwpCkBAIC0xNjUsMTggKzE1OCwxNyBAQCBU
RVNUX0YoV0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGVUZXN0LCBTaW1wbGVMb2FkT2ZIVE1M
U3RyaW5nX05pbEhUTUxTdHJpbmdBbgogICAgIGJvb2wgc2ltcGxlTG9hZERvbmUgPSBmYWxzZTsK
IAogICAgIC8vIEFkZCB0aGUgbG9hZCBkZWxlZ2F0ZS4KLSAgICBTaW1wbGVMb2FkRGVsZWdhdGUg
KmxvYWREZWxlZ2F0ZSA9IFtbU2ltcGxlTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEZsYWc6
JnNpbXBsZUxvYWREb25lXTsKLSAgICB2aWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9h
ZERlbGVnYXRlID0gbG9hZERlbGVnYXRlOworICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYWRvcHRO
UyhbW1NpbXBsZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhGbGFnOiZzaW1wbGVMb2FkRG9u
ZV0pOworICAgIHZpZXcuZ2V0KCkuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdh
dGUgPSBsb2FkRGVsZWdhdGUuZ2V0KCk7CiAKICAgICAvLyBMb2FkIHRoZSBIVE1MIHN0cmluZyAo
YXMgbmlsKS4KLSAgICBbdmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyIGxvYWRIVE1MU3Ry
aW5nOm5pbCBiYXNlVVJMOm5pbF07CisgICAgW3ZpZXcuZ2V0KCkuYnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlciBsb2FkSFRNTFN0cmluZzpuaWwgYmFzZVVSTDpuaWxdOwogCiAgICAgLy8gV2FpdCBm
b3IgdGhlIGxvYWQgdG8gZmluaXNoLgogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmc2lt
cGxlTG9hZERvbmUpOwogCiAgICAgLy8gVGVhciBkb3duIHRoZSBkZWxlZ2F0ZS4KLSAgICB2aWV3
LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gbmlsOwotICAgIFtsb2Fk
RGVsZWdhdGUgcmVsZWFzZV07CisgICAgdmlldy5nZXQoKS5icm93c2luZ0NvbnRleHRDb250cm9s
bGVyLmxvYWREZWxlZ2F0ZSA9IG5pbDsKIH0KIAogQGludGVyZmFjZSBTaW1wbGVMb2FkRmFpbERl
bGVnYXRlIDogTlNPYmplY3QgPFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlPgpAQCAtMjE1
LDE5ICsyMDcsMTggQEAgVEVTVF9GKFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlVGVzdCwg
U2ltcGxlTG9hZEZhaWwpCiAgICAgYm9vbCBzaW1wbGVMb2FkRmFpbERvbmUgPSBmYWxzZTsKIAog
ICAgIC8vIEFkZCB0aGUgbG9hZCBkZWxlZ2F0ZS4KLSAgICBTaW1wbGVMb2FkRmFpbERlbGVnYXRl
ICpsb2FkRGVsZWdhdGUgPSBbW1NpbXBsZUxvYWRGYWlsRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRo
RmxhZzomc2ltcGxlTG9hZEZhaWxEb25lXTsKLSAgICB2aWV3LmJyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXIubG9hZERlbGVnYXRlID0gbG9hZERlbGVnYXRlOworICAgIGF1dG8gbG9hZERlbGVnYXRl
ID0gYWRvcHROUyhbW1NpbXBsZUxvYWRGYWlsRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRmxhZzom
c2ltcGxlTG9hZEZhaWxEb25lXSk7CisgICAgdmlldy5nZXQoKS5icm93c2luZ0NvbnRleHRDb250
cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IGxvYWREZWxlZ2F0ZS5nZXQoKTsKIAogICAgIC8vIExvYWQg
YSBub24tZXhpc3RlbnQgZmlsZS4KICAgICBOU1VSTCAqbnNVUkwgPSBbTlNVUkwgVVJMV2l0aFN0
cmluZzpAImZpbGU6Ly8vZG9lcy1ub3QtZXhpc3QuaHRtbCJdOwotICAgIFt2aWV3LmJyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIgbG9hZEZpbGVVUkw6bnNVUkwgcmVzdHJpY3RUb0ZpbGVzV2l0aGlu
Om5pbF07CisgICAgW3ZpZXcuZ2V0KCkuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2FkRmls
ZVVSTDpuc1VSTCByZXN0cmljdFRvRmlsZXNXaXRoaW46bmlsXTsKIAogICAgIC8vIFdhaXQgZm9y
IHRoZSBsb2FkIHRvIGZhaWwuCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZzaW1wbGVM
b2FkRmFpbERvbmUpOwogCiAgICAgLy8gVGVhciBkb3duIHRoZSBkZWxlZ2F0ZS4KLSAgICB2aWV3
LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gbmlsOwotICAgIFtsb2Fk
RGVsZWdhdGUgcmVsZWFzZV07CisgICAgdmlldy5nZXQoKS5icm93c2luZ0NvbnRleHRDb250cm9s
bGVyLmxvYWREZWxlZ2F0ZSA9IG5pbDsKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLU2Nyb2xsVmlld0RlbGVn
YXRlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tTY3JvbGxWaWV3RGVsZWdh
dGUubW0KaW5kZXggNTQ3NDNkYWUxMzZkNzA3ZTlmYjY1MDU4Mzc0YmVhOGQ0Zjk3Yjk1Yi4uZDIy
OGMyM2QxZGUzYWU0ZDAxNDY2ODU2MWU4MTgyNjRmNjZlNmFlZSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tTY3JvbGxWaWV3RGVsZWdhdGUubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tTY3JvbGxWaWV3RGVsZWdhdGUubW0KQEAgLTU1
LDEyICs1NSwxMiBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiBURVNUKFdLV2ViVmlldywg
V0tTY3JvbGxWaWV3RGVsZWdhdGVDcmFzaCkKIHsKICAgICBXS1dlYlZpZXcgKndlYlZpZXcgPSBb
W1dLV2ViVmlldyBhbGxvY10gaW5pdF07Ci0gICAgVGVzdERlbGVnYXRlRm9yU2Nyb2xsVmlldyAq
ZGVsZWdhdGVGb3JTY3JvbGxWaWV3ID0gW1tUZXN0RGVsZWdhdGVGb3JTY3JvbGxWaWV3IGFsbG9j
XSBpbml0XTsKKyAgICBhdXRvIGRlbGVnYXRlRm9yU2Nyb2xsVmlldyA9IGFkb3B0TlMoW1tUZXN0
RGVsZWdhdGVGb3JTY3JvbGxWaWV3IGFsbG9jXSBpbml0XSk7CiAgICAgQGF1dG9yZWxlYXNlcG9v
bCB7Ci0gICAgICAgIHdlYlZpZXcuc2Nyb2xsVmlldy5kZWxlZ2F0ZSA9IGRlbGVnYXRlRm9yU2Ny
b2xsVmlldzsKKyAgICAgICAgd2ViVmlldy5zY3JvbGxWaWV3LmRlbGVnYXRlID0gZGVsZWdhdGVG
b3JTY3JvbGxWaWV3LmdldCgpOwogICAgIH0KICAgICBkZWxlZ2F0ZUlzRGVhbGxvY2F0ZWQgPSBm
YWxzZTsKLSAgICBbZGVsZWdhdGVGb3JTY3JvbGxWaWV3IHJlbGVhc2VdOworICAgIGRlbGVnYXRl
Rm9yU2Nyb2xsVmlldyA9IG5pbDsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRlbGVn
YXRlSXNEZWFsbG9jYXRlZCk7CiAKICAgICBFWFBFQ1RfTlVMTCh3ZWJWaWV3LnNjcm9sbFZpZXcu
ZGVsZWdhdGUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ2Fu
ZGlkYXRlVGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9DYW5kaWRhdGVU
ZXN0cy5tbQppbmRleCA3YzVlMDZhMjQ2MTc5YmVmOGU4Mzk3YTdlMmMxZjUyMjA2ZWU2MjgxLi5h
YmZjY2EyMTEwMWUwZjEwN2NmYWZjZTg3ZmU1NDllNzQxYTIwNWNlIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9DYW5kaWRhdGVUZXN0cy5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9DYW5kaWRhdGVUZXN0cy5tbQpAQCAtODksNyArODksNyBA
QCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1QoQ2FuZGlkYXRlVGVzdHMsIERJU0FC
TEVEX0RvTm90TGVha1ZpZXdUaGF0TG9hZHNFZGl0YWJsZUFyZWEpCiB7Ci0gICAgRG9Ob3RMZWFr
V2ViVmlldyAqd2ViVmlldyA9IFtbRG9Ob3RMZWFrV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW0RvTm90TGVha1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCAxMDAsIDEwMCldKTsKICAgICBEb05vdExlYWtGcmFtZUxvYWREZWxlZ2F0ZSAqZGVsZWdhdGUg
PSBbW0RvTm90TGVha0ZyYW1lTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XTsKICAgICBbd2ViVmll
dyBzZXRGcmFtZUxvYWREZWxlZ2F0ZTpkZWxlZ2F0ZV07CiAgICAgCkBAIC05OSwxMyArOTksMTMg
QEAgVEVTVChDYW5kaWRhdGVUZXN0cywgRElTQUJMRURfRG9Ob3RMZWFrVmlld1RoYXRMb2Fkc0Vk
aXRhYmxlQXJlYSkKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEZpbmlzaExvYWQp
OwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkQ2FsbFNob3dDYW5kaWRhdGVzKTsK
IAotICAgIFt3ZWJWaWV3IHJlbGVhc2VdOworICAgIHdlYlZpZXcgPSBuaWw7CiAgICAgRVhQRUNU
X1RSVUUod2ViVmlld1dhc0RlYWxsb2NhdGVkKTsKIH0KIAogVEVTVChDYW5kaWRhdGVUZXN0cywg
RElTQUJMRURfUmVxdWVzdENhbmRpZGF0ZXNGb3JUZXh0SW5wdXQpCiB7Ci0gICAgV2ViVmlldyAq
d2ViVmlldyA9IFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDEwMCwgMTAwKV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCldKTsKICAgICBbd2ViVmll
dyBmb3JjZVJlcXVlc3RDYW5kaWRhdGVzRm9yVGVzdGluZ107CiAgICAgQ2FuZGlkYXRlUmVxdWVz
dEZyYW1lTG9hZERlbGVnYXRlICpkZWxlZ2F0ZSA9IFtbQ2FuZGlkYXRlUmVxdWVzdEZyYW1lTG9h
ZERlbGVnYXRlIGFsbG9jXSBpbml0XTsKICAgICBbd2ViVmlldyBzZXRGcmFtZUxvYWREZWxlZ2F0
ZTpkZWxlZ2F0ZV07CkBAIC0xMjAsNyArMTIwLDcgQEAgVEVTVChDYW5kaWRhdGVUZXN0cywgRElT
QUJMRURfUmVxdWVzdENhbmRpZGF0ZXNGb3JUZXh0SW5wdXQpCiAgICAgaWYgKFt3ZWJWaWV3IHNo
b3VsZFJlcXVlc3RDYW5kaWRhdGVzXSkKICAgICAgICAgY2FuZGlkYXRlc1dlcmVSZXF1ZXN0ZWQg
PSB0cnVlOwogCi0gICAgW3dlYlZpZXcgcmVsZWFzZV07CisgICAgd2ViVmlldyA9IG5pbDsKICAg
ICBFWFBFQ1RfVFJVRShjYW5kaWRhdGVzV2VyZVJlcXVlc3RlZCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0RPTU5vZGVGcm9tSlNPYmplY3QubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9ET01Ob2RlRnJvbUpTT2JqZWN0Lm1tCmluZGV4
IDJiMTE5Yjg3ZjQ5YTQ5YzMyZDcyZmVjZThkNzIzYmYzODUyZWE1NTkuLmFhNjk4OTQ0N2U4MDhm
ODIxYmMzZDEyODJjNjA2NmI2ZTU1M2FhMWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvbWFjL0RPTU5vZGVGcm9tSlNPYmplY3QubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9tYWMvRE9NTm9kZUZyb21KU09iamVjdC5tbQpAQCAtMzAsMTIgKzMwLDEzIEBA
CiAjaW1wb3J0IDxXZWJLaXQvV2ViRnJhbWVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2Vi
U2NyaXB0V29ybGQuaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1QoV2ViS2l0TGVn
YWN5LCBET01Ob2RlRnJvbUpTT2JqZWN0KQogewotICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbW1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBmcmFtZU5hbWU6bmlsIGdyb3Vw
TmFtZTpuaWxdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7CiAK
ICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpAImRv
Y3VtZW50LmJvZHkubWFpbldvcmxkUHJvcGVydHkgPSB0cnVlIl07CiAKQEAgLTU0LDggKzU1LDYg
QEAgVEVTVChXZWJLaXRMZWdhY3ksIERPTU5vZGVGcm9tSlNPYmplY3QpCiAKICAgICAvLyBWZXJp
ZnkgdGhhdCB0aGUgT2JqZWN0aXZlLUMgd3JhcHBlciBpcyBmb3IgdGhlIG1haW4gd29ybGQgSlMg
d3JhcHBlci4KICAgICBFWFBFQ1RfVFJVRShbW29iamNCb2R5IHZhbHVlRm9yS2V5OkAibWFpbldv
cmxkUHJvcGVydHkiXSBib29sVmFsdWVdKTsKLQotICAgIFt3ZWJWaWV3IHJlbGVhc2VdOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL21hYy9TdWJyZXNvdXJjZUVycm9yQ3Jhc2gubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL21hYy9TdWJyZXNvdXJjZUVycm9yQ3Jhc2gubW0KaW5kZXggNDdjMTE2ZDcw
ZGMwOTNkZmMyYTBhNTc0ZjBjNWUxOTUzZDIzNzNhMy4uNzEzNGM3NmRhMGMwYjJlZjYwZTRmZGM2
Y2ZmYTdlMmIwNzU1MmM3NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9t
YWMvU3VicmVzb3VyY2VFcnJvckNyYXNoLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvbWFjL1N1YnJlc291cmNlRXJyb3JDcmFzaC5tbQpAQCAtMjUsMTMgKzI1LDE1IEBACiAKICNp
bXBvcnQgImNvbmZpZy5oIgogCisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVChXZWJLaXRMZWdhY3ksIFN1YnJlc291cmNlRXJyb3JD
cmFzaCkKIHsKLSAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TWmVyb1JlY3QgZnJhbWVOYW1lOkAiIiBncm91cE5hbWU6QCIiXTsKLSAgICBbd2Vi
Vmlldy5tYWluRnJhbWUgbG9hZEhUTUxTdHJpbmc6QCI8bGluayByZWw9c3R5bGVzaGVldCBocmVm
PSd4LWVycm9yOmVycm9yJz4iIGJhc2VVUkw6bmlsXTsKLSAgICBbd2ViVmlldyByZWxlYXNlXTsK
KyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU1plcm9SZWN0IGZyYW1lTmFtZTpAIiIgZ3JvdXBOYW1lOkAiIl0pOworICAgIFtbd2ViVmll
dyBtYWluRnJhbWVdIGxvYWRIVE1MU3RyaW5nOkAiPGxpbmsgcmVsPXN0eWxlc2hlZXQgaHJlZj0n
eC1lcnJvcjplcnJvcic+IiBiYXNlVVJMOm5pbF07CisgICAgd2ViVmlldyA9IG5pbDsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9tYWMvVHlwaW5nU3R5bGVDcmFzaC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvbWFjL1R5cGluZ1N0eWxlQ3Jhc2gubW0KaW5kZXggNDkyODI4OWZlZTg5ZjYwZTViOGI4
MWJiMmRmZGFmMzJmNjZhNmVlNi4uM2UwZjU1ZjliZDFkMTNlZWZmZDg4MmRiYmIwNzM2OWYwODZl
Y2Q0NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvVHlwaW5nU3R5
bGVDcmFzaC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9UeXBpbmdTdHls
ZUNyYXNoLm1tCkBAIC0yNSwxMyArMjUsMTUgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAKKyNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKwogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBU
RVNUKFdlYktpdExlZ2FjeSwgVHlwaW5nU3R5bGVDcmFzaCkKIHsKLSAgICBXZWJWaWV3ICp3ZWJW
aWV3ID0gW1tXZWJWaWV3IGFsbG9jXSBpbml0XTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbV2ViVmlldyBhbGxvY10gaW5pdF0pOwogICAgICh2b2lkKVt3ZWJWaWV3IHR5cGluZ1N0eWxl
XTsKLSAgICBbd2ViVmlldyByZWxlYXNlXTsKKyAgICB3ZWJWaWV3ID0gbmlsOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL21hYy9XZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvbWFjL1dlYlNjcmlwdE9iamVjdERlc2NyaXB0aW9uLm1tCmluZGV4IDI2ZDc3
NDE5ZjQ1OTJjMzEwMDhjMDI0ZWQxN2E4NTllNGNlNWVhMTEuLjVhYTgxMzhiMGFjNjY2Zjc4ZTgz
YzA5MGZkMTI3MTM5N2IxOGMyNTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvbWFjL1dlYlNjcmlwdE9iamVjdERlc2NyaXB0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvbWFjL1dlYlNjcmlwdE9iamVjdERlc2NyaXB0aW9uLm1tCkBAIC02Miw3ICs2
Miw3IEBAIFRFU1QoV2ViS2l0TGVnYWN5LCBXZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbikKIHsK
ICAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwg
Z3JvdXBOYW1lOm5pbF0pOwogICAgIFJldGFpblB0cjxXZWJTY3JpcHREZXNjcmlwdGlvblRlc3Q+
IHRlc3RDb250cm9sbGVyID0gYWRvcHROUyhbV2ViU2NyaXB0RGVzY3JpcHRpb25UZXN0IG5ld10p
OwotICAgIE5TT2JqZWN0ICpvYmplY3QgPSBbW05TT2JqZWN0IGFsbG9jXSBpbml0XTsKKyAgICBh
dXRvIG9iamVjdCA9IGFkb3B0TlMoW1tOU09iamVjdCBhbGxvY10gaW5pdF0pOwogCiAgICAgd2Vi
Vmlldy5nZXQoKS5mcmFtZUxvYWREZWxlZ2F0ZSA9IHRlc3RDb250cm9sbGVyLmdldCgpOwogICAg
IFtbd2ViVmlldy5nZXQoKSBtYWluRnJhbWVdIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXQpAQCAtNzIsMTQgKzcyLDEzIEBAIFRF
U1QoV2ViS2l0TGVnYWN5LCBXZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbikKICAgICBkaWRGaW5p
c2hMb2FkID0gZmFsc2U7CiAgICAgZmFpbGVkT2JqQ0Rlc2NyaXB0aW9uID0gZmFsc2U7CiAKLSAg
ICBzdGQ6OnRocmVhZCB0aHJlYWQxKG5zT2JqZWN0RGVzY3JpcHRpb25UZXN0LCBvYmplY3QpOwor
ICAgIHN0ZDo6dGhyZWFkIHRocmVhZDEobnNPYmplY3REZXNjcmlwdGlvblRlc3QsIG9iamVjdC5n
ZXQoKSk7CiAKLSAgICBDRkJvb2xlYW5SZWYgcmVzdWx0ID0gKENGQm9vbGVhblJlZikoW1t3ZWJW
aWV3LmdldCgpIHdpbmRvd1NjcmlwdE9iamVjdF0gY2FsbFdlYlNjcmlwdE1ldGhvZDpAImZvbyIg
d2l0aEFyZ3VtZW50czpAWyBvYmplY3QgXV0pOworICAgIENGQm9vbGVhblJlZiByZXN1bHQgPSAo
Q0ZCb29sZWFuUmVmKShbW3dlYlZpZXcuZ2V0KCkgd2luZG93U2NyaXB0T2JqZWN0XSBjYWxsV2Vi
U2NyaXB0TWV0aG9kOkAiZm9vIiB3aXRoQXJndW1lbnRzOkBbIG9iamVjdC5nZXQoKSBdXSk7CiAg
ICAgRVhQRUNUX0VRKENGQm9vbGVhbkdldFZhbHVlKHJlc3VsdCksIHRydWUpOwogCiAgICAgdGhy
ZWFkMS5qb2luKCk7CiAgICAgRVhQRUNUX0VRKGZhaWxlZE9iakNEZXNjcmlwdGlvbiwgZmFsc2Up
OwotICAgIFtvYmplY3QgcmVsZWFzZV07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlZpZXdDYW5Q
YXN0ZVVSTC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlZpZXdDYW5QYXN0
ZVVSTC5tbQppbmRleCA0YjI5ZTc5ZGI3ZDg3NjNlMGJhZDFlNmIzYmEyMjlhZWY3MWIzYmUyLi5j
MTdhNjI4NTcxZDI4OTE1ZmUyYjllZjUxMTg3MjA2MzViMGI4M2EzIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XZWJWaWV3Q2FuUGFzdGVVUkwubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2ViVmlld0NhblBhc3RlVVJMLm1tCkBAIC0zNCw3
ICszNCw3IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVChXZWJLaXRMZWdhY3ks
IFdlYlZpZXdDYW5QYXN0ZVVSTCkKIHsKLSAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW1tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6
bmlsXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU1plcm9SZWN0IGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOwogICAgIFt3
ZWJWaWV3IHNldEVkaXRhYmxlOllFU107CiAKICAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFz
dGVib2FyZF0gZGVjbGFyZVR5cGVzOkBbTlNVUkxQYm9hcmRUeXBlXSBvd25lcjpuaWxdOwpAQCAt
NDcsOCArNDcsNiBAQCBURVNUKFdlYktpdExlZ2FjeSwgV2ViVmlld0NhblBhc3RlVVJMKQogICAg
IE5TU3RyaW5nICp0ZXh0ID0gW2FuY2hvciBocmVmXTsKICAgICAKICAgICBFWFBFQ1RfRVEoU3Ry
aW5nKCJodHRwOi8vd3d3LndlYmtpdC5vcmcvIiksIFN0cmluZyh0ZXh0KSk7Ci0gICAgCi0gICAg
W3dlYlZpZXcgcmVsZWFzZV07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlZpZXdDYW5QYXN0ZVpl
cm9QbmcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XZWJWaWV3Q2FuUGFzdGVa
ZXJvUG5nLm1tCmluZGV4IGZhMmUyYWE5NjdhYmEyMzFhNzcwNzBkMmMxNzBhMThlYjFiZGY4YTIu
LmZjYTFhZWQ1Y2UyZWUxOWQxNjJmNzYzYmE3NmE4MDlhNTRlNmM4MjggMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlZpZXdDYW5QYXN0ZVplcm9QbmcubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2ViVmlld0NhblBhc3RlWmVyb1BuZy5t
bQpAQCAtMzQsMTUgKzM0LDEzIEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVChX
ZWJLaXRMZWdhY3ksIFdlYlZpZXdDYW5QYXN0ZVplcm9QbmcpCiB7Ci0gICAgV2ViVmlldyAqd2Vi
VmlldyA9IFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGZyYW1lTmFt
ZTpuaWwgZ3JvdXBOYW1lOm5pbF07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBmcmFtZU5hbWU6bmlsIGdyb3VwTmFt
ZTpuaWxdKTsKICAgICBbd2ViVmlldyBzZXRFZGl0YWJsZTpZRVNdOwogICAgIAogICAgIC8vcGFz
dGluZyBhIDB4MCBpbWFnZSBhcyBwZGYgYm9hcmQgdHlwZS4gUmVmZXJyaW5nIHRvIDxyZGFyOi8v
cHJvYmxlbS8xMTE0MTkyMD4KICAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0g
ZGVjbGFyZVR5cGVzOkBbTlNQREZQYm9hcmRUeXBlXSBvd25lcjpuaWxdOwogICAgIFtbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiMCIgd2l0aEV4dGVuc2lvbjpAInBuZyIg
c3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXSB3cml0ZVRvUGFzdGVib2Fy
ZDpbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXV07CiAgICAgW3dlYlZpZXcgcGFzdGU6
bmlsXTsKLSAgICAKLSAgICBbd2ViVmlldyByZWxlYXNlXTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMv
V2ViVmlld0RpZENyZWF0ZUphdmFTY3JpcHRDb250ZXh0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9tYWMvV2ViVmlld0RpZENyZWF0ZUphdmFTY3JpcHRDb250ZXh0Lm1tCmluZGV4IGEw
ZjM0ODEzNGFlNDU0ODFlNGI2ZWVmOGViYmI5ZTg2YWVjMmY2MTkuLjQxMWFmZDdjNTUwNWZkN2Yw
Y2ZmOGQ2MTNkMDVlOWUxOGM0MDZhOTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvbWFjL1dlYlZpZXdEaWRDcmVhdGVKYXZhU2NyaXB0Q29udGV4dC5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XZWJWaWV3RGlkQ3JlYXRlSmF2YVNjcmlwdENvbnRl
eHQubW0KQEAgLTgwLDEwICs4MCw5IEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRl
ciBkaWRGaW5pc2hMb2FkRm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWUKIAogLSAodm9pZCl3ZWJW
aWV3OihXZWJWaWV3ICopd2ViVmlldyBkaWRDcmVhdGVKYXZhU2NyaXB0Q29udGV4dDooSlNDb250
ZXh0ICopY29udGV4dCBmb3JGcmFtZTooV2ViRnJhbWUgKilmcmFtZQogewotICAgIE15Q29uc29s
ZSAqbXlDb25zb2xlID0gW1tNeUNvbnNvbGUgYWxsb2NdIGluaXRdOwotICAgIGNvbnRleHRbQCJt
eUNvbnNvbGUiXSA9IG15Q29uc29sZTsKKyAgICBhdXRvIG15Q29uc29sZSA9IGFkb3B0TlMoW1tN
eUNvbnNvbGUgYWxsb2NdIGluaXRdKTsKKyAgICBjb250ZXh0W0AibXlDb25zb2xlIl0gPSBteUNv
bnNvbGUuZ2V0KCk7CiAgICAgY29udGV4dC5leGNlcHRpb25IYW5kbGVyID0gbmlsOwotICAgIFtt
eUNvbnNvbGUgcmVsZWFzZV07CiAKICAgICBjb250ZXh0W0Aid2luZG93Q2FsbGJhY2siXSA9IF4o
SlNWYWx1ZSAqdGhpc09iamVjdCl7CiAgICAgICAgIGRpZENhbGxXaW5kb3dDYWxsYmFjayA9IHRy
dWU7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQcm90b2NvbC5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFByb3RvY29sLm1tCmluZGV4IGUzY2E0
YWY3NDNjOTc5MzRjNzNjZTE4M2ZlMzcyNjQ3NzZmZjI2ZjcuLjg3NjJjMzYyNTljNjQzMmQ0ODkx
OTNmNDA3MzBmNjBiZmQ2NmU5ZGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdFByb3RvY29sLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFBy
b3RvY29sLm1tCkBAIC01OSw3ICs1OSw3IEBAICsgKE5TU3RyaW5nICopc2NoZW1lCiAKICsgKHZv
aWQpcmVnaXN0ZXJXaXRoU2NoZW1lOihOU1N0cmluZyAqKXNjaGVtZQogewotICAgIHRlc3RTY2hl
bWUgPSBbc2NoZW1lIHJldGFpbl07CisgICAgdGVzdFNjaGVtZSA9IHJldGFpblB0cihzY2hlbWUp
LmxlYWtSZWYoKTsKICAgICBbTlNVUkxQcm90b2NvbCByZWdpc3RlckNsYXNzOltzZWxmIGNsYXNz
XV07CiAgICAgW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciByZWdpc3RlclNjaGVtZUZvckN1
c3RvbVByb3RvY29sOnRlc3RTY2hlbWVdOwogfQpAQCAtNjgsOCArNjgsNyBAQCArICh2b2lkKXVu
cmVnaXN0ZXIKIHsKICAgICBbV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIHVucmVnaXN0ZXJT
Y2hlbWVGb3JDdXN0b21Qcm90b2NvbDp0ZXN0U2NoZW1lXTsKICAgICBbTlNVUkxQcm90b2NvbCB1
bnJlZ2lzdGVyQ2xhc3M6W3NlbGYgY2xhc3NdXTsKLSAgICBbdGVzdFNjaGVtZSByZWxlYXNlXTsK
LSAgICB0ZXN0U2NoZW1lID0gbmlsOworICAgIGF1dG8gb2xkVGVzdFNjaGVtZSA9IGFkb3B0TlMo
c3RkOjpleGNoYW5nZSh0ZXN0U2NoZW1lLCBuaWwpKTsKIH0KIAogc3RhdGljIE5TRGljdGlvbmFy
eTxOU1N0cmluZyAqLCBOU1N0cmluZyAqPiAqYWRkaXRpb25hbFJlc3BvbnNlSGVhZGVyczsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL0luamVjdGVkQnVuZGxlQ29udHJvbGxl
ck1hYy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL0luamVjdGVkQnVuZGxlQ29udHJvbGxl
ck1hYy5tbQppbmRleCA0MDExNDA1MGIxZDY0ZjQ1ODhlNmVjYzYyYjk5M2ZkYWM0MTUxN2IyLi40
NDNlYzIwOGQ1OTUwNTFmMmEyNWQyMDRlYWU0NTYwNTgyZWNmYmE0IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL21hYy9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXJNYWMubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyTWFjLm1tCkBA
IC0yNywxNSArMjcsMTYgQEAKICNpbXBvcnQgIkluamVjdGVkQnVuZGxlQ29udHJvbGxlci5oIgog
CiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiB2b2lkIEluamVjdGVkQnVuZGxl
Q29udHJvbGxlcjo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIHsKICAgICAvLyBTZXQgdXAgdXNlciBk
ZWZhdWx0cy4KLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICphcmd1bWVudERvbWFpbiA9IFtbW05T
VXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSB2b2xhdGlsZURvbWFpbkZvck5hbWU6
TlNBcmd1bWVudERvbWFpbl0gbXV0YWJsZUNvcHldOworICAgIGF1dG8gYXJndW1lbnREb21haW4g
PSBhZG9wdE5TKFtbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSB2b2xhdGls
ZURvbWFpbkZvck5hbWU6TlNBcmd1bWVudERvbWFpbl0gbXV0YWJsZUNvcHldKTsKICAgICBpZiAo
IWFyZ3VtZW50RG9tYWluKQotICAgICAgICBhcmd1bWVudERvbWFpbiA9IFtbTlNNdXRhYmxlRGlj
dGlvbmFyeSBhbGxvY10gaW5pdF07CisgICAgICAgIGFyZ3VtZW50RG9tYWluID0gYWRvcHROUyhb
W05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKIAogICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgc2V0IHRoZXNlIGluIHRoZSBVSSBwcm9jZXNzIGFuZCBwcm9wYWdhdGUgdGhlbSB0byB0
aGUKICAgICAvLyBXZWIgQ29udGVudCBwcm9jZXNzIGF0IHByb2Nlc3MgbGF1bmNoIHRpbWUsIGJl
Y2F1c2UgbW9zdCB0ZXN0cyBkbyBub3QKQEAgLTQ3LDkgKzQ4LDcgQEAgdm9pZCBJbmplY3RlZEJ1
bmRsZUNvbnRyb2xsZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAgICAgfTsKIAogICAgIFthcmd1
bWVudERvbWFpbiBhZGRFbnRyaWVzRnJvbURpY3Rpb25hcnk6ZGljdF07Ci0gICAgW1tOU1VzZXJE
ZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Vm9sYXRpbGVEb21haW46YXJndW1lbnRE
b21haW4gZm9yTmFtZTpOU0FyZ3VtZW50RG9tYWluXTsKLQotICAgIFthcmd1bWVudERvbWFpbiBy
ZWxlYXNlXTsKKyAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRW
b2xhdGlsZURvbWFpbjphcmd1bWVudERvbWFpbi5nZXQoKSBmb3JOYW1lOk5TQXJndW1lbnREb21h
aW5dOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0gYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KaW5kZXggZDY5NGMx
YzkyYzNkZWEzNTlhN2IxNTg2YTY1ZGNlY2VmNzQyMzJiYi4uNjViMThkMzc5NGJkMjAzZDZlOGY1
ODJmNjlmZmYxNjkwNzBjYzQxMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9j
b2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
Y29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQpAQCAtNjQsNyArNjQsNyBAQCBzdGF0aWMgVGVz
dFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZSAqZ2xvYmFsV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRl
Q2xpZW50OwogCiB2b2lkIGluaXRpYWxpemVXZWJWaWV3Q29uZmlndXJhdGlvbihjb25zdCBjaGFy
KiBsaWJyYXJ5UGF0aCwgV0tTdHJpbmdSZWYgaW5qZWN0ZWRCdW5kbGVQYXRoLCBXS0NvbnRleHRS
ZWYgY29udGV4dCwgV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBjb250ZXh0Q29uZmlndXJhdGlv
bikKIHsKLSAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24gcmVsZWFzZV07CisgICAgYXV0
byBvbGRHbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoZ2xvYmFsV2ViVmlld0Nv
bmZpZ3VyYXRpb24pOwogICAgIGdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uID0gW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XTsKIAogICAgIGdsb2JhbFdlYlZpZXdDb25maWd1
cmF0aW9uLnByb2Nlc3NQb29sID0gKF9fYnJpZGdlIFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0OwpA
QCAtNzMsNyArNzMsNyBAQCB2b2lkIGluaXRpYWxpemVXZWJWaWV3Q29uZmlndXJhdGlvbihjb25z
dCBjaGFyKiBsaWJyYXJ5UGF0aCwgV0tTdHJpbmdSZWYgaW5qZWN0ZQogICAgIGdsb2JhbFdlYlZp
ZXdDb25maWd1cmF0aW9uLl9hbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzID0gWUVTOwogICAg
IGdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLl9hcHBsZVBheUVuYWJsZWQgPSBZRVM7CiAKLSAg
ICBbZ2xvYmFsV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlQ2xpZW50IHJlbGVhc2VdOworICAgIGF1
dG8gb2xkR2xvYmFsV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlQ2xpZW50ID0gYWRvcHROUyhnbG9i
YWxXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGVDbGllbnQpOwogICAgIGdsb2JhbFdlYnNpdGVEYXRh
U3RvcmVEZWxlZ2F0ZUNsaWVudCA9IFtbVGVzdFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZSBhbGxv
Y10gaW5pdF07CiAgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3Rv
cmUgc2V0X2RlbGVnYXRlOmdsb2JhbFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNsaWVudF07CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lP
Uy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lPUy5tbQpp
bmRleCBlODA2ZDY3M2EwY2FhYzkwNWQ4ZmNlNTlmNDM5ZGNjMTI5OTU4MTc3Li44NjFjMzFiOGVl
YWYyNWVkMDRjNDhlYWVjYWRmZGI3MGMyMmVkMzRlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2lvcy9QbGF0Zm9ybVdlYlZpZXdJT1MubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3SU9TLm1tCkBAIC0zMDEsMTAgKzMwMSw5IEBAIHZv
aWQgUGxhdGZvcm1XZWJWaWV3OjpkaWRJbml0aWFsaXplQ2xpZW50cygpCiAKIHZvaWQgUGxhdGZv
cm1XZWJWaWV3OjphZGRDaHJvbWVJbnB1dEZpZWxkKCkKIHsKLSAgICBVSVRleHRGaWVsZCogdGV4
dEZpZWxkID0gW1tVSVRleHRGaWVsZCBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAs
IDAsIDEwMCwgMjApXTsKLSAgICB0ZXh0RmllbGQudGFnID0gMTsKLSAgICBbbV93aW5kb3cgYWRk
U3Vidmlldzp0ZXh0RmllbGRdOwotICAgIFt0ZXh0RmllbGQgcmVsZWFzZV07CisgICAgYXV0byB0
ZXh0RmllbGQgPSBhZG9wdE5TKFtbVUlUZXh0RmllbGQgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dS
ZWN0TWFrZSgwLCAwLCAxMDAsIDIwKV0pOworICAgIFt0ZXh0RmllbGQgc2V0VGFnOjFdOworICAg
IFttX3dpbmRvdyBhZGRTdWJ2aWV3OnRleHRGaWVsZC5nZXQoKV07CiB9CiAKIHZvaWQgUGxhdGZv
cm1XZWJWaWV3OjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxkKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0KaW5kZXgg
YjNhZDIzN2NhZDk1YjM2MTA3M2Y4YzkzNmI2YjhlNGNkM2RiNjk5OS4uMTMxOTlkMjRmNTQ5NWI4
YzIyMjA2ZjgzMGVjZTI3M2Y4M2ZkZWY5MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0KKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0KQEAgLTcyLDggKzcy
LDcgQEAgLSAodm9pZClfdXBkYXRlVHlwZUNhY2hlSWZOZWVkZWQKIAogKyAodm9pZClyZWxlYXNl
TG9jYWxQYXN0ZWJvYXJkcwogewotICAgIFtsb2NhbFBhc3RlYm9hcmRzIHJlbGVhc2VdOwotICAg
IGxvY2FsUGFzdGVib2FyZHMgPSBuaWw7CisgICAgYXV0byBvbGRMb2NhbFBhc3RlQm9hcmRzID0g
YWRvcHROUyhzdGQ6OmV4Y2hhbmdlKGxvY2FsUGFzdGVib2FyZHMsIG5pbCkpOwogfQogCiAvLyBD
b252ZW5pZW5jZSBtZXRob2QgZm9yIEpTIHNvIHRoYXQgaXQgZG9lc24ndCBoYXZlIHRvIHRyeSBh
bmQgY3JlYXRlIGEgTlNBcnJheSBvbiB0aGUgb2JqYyBzaWRlIGluc3RlYWQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420484</attachid>
            <date>2021-02-16 10:00:34 -0800</date>
            <delta_ts>2021-02-16 10:06:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221914-20210216100033.patch</filename>
            <type>text/plain</type>
            <size>127041</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyODcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YjQ0NjQzOTYwMGVkOWJiYTdhNzk5M2M1M2JiZWM5NmMyM2JkNDYzLi5mN2RlNjgwOTU3YjJhNmU0
MzI4Yzc4ZGMxMGRjNDk5YjdhNWNiZjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAyMS0wMi0xNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyByZWxlYXNlXSBpbiBXZWJL
aXQgZXZlbiBtb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjE5MTQKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisg
ICAgICAgICogQVBJL0pTQ29udGV4dC5tbToKKyAgICAgICAgKC1bSlNDb250ZXh0IGluaXRXaXRo
VmlydHVhbE1hY2hpbmU6XSk6CisgICAgICAgICgtW0pTQ29udGV4dCBkZWFsbG9jXSk6CisgICAg
ICAgICgtW0pTQ29udGV4dCB2aXJ0dWFsTWFjaGluZV0pOgorICAgICAgICAoLVtKU0NvbnRleHQg
aW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOl0pOgorICAgICAgICAqIEFQSS9KU01hbmFnZWRWYWx1
ZS5tbToKKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFsdWUgaW5pdFdpdGhWYWx1ZTpdKToKKyAgICAg
ICAgKC1bSlNNYW5hZ2VkVmFsdWUgZGVhbGxvY10pOgorICAgICAgICAoLVtKU01hbmFnZWRWYWx1
ZSBkaWRBZGRPd25lcjpdKToKKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFsdWUgZGlkUmVtb3ZlT3du
ZXI6XSk6CisgICAgICAgICogQVBJL0pTVmlydHVhbE1hY2hpbmUubW06CisgICAgICAgICgtW0pT
VmlydHVhbE1hY2hpbmUgaW5pdFdpdGhDb250ZXh0R3JvdXBSZWY6XSk6CisgICAgICAgICgtW0pT
VmlydHVhbE1hY2hpbmUgZGVhbGxvY10pOgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGNv
bnRleHRGb3JHbG9iYWxDb250ZXh0UmVmOl0pOgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5l
IGFkZENvbnRleHQ6Zm9yR2xvYmFsQ29udGV4dFJlZjpdKToKKyAgICAgICAgKC1bSlNWaXJ0dWFs
TWFjaGluZSBleHRlcm5hbE9iamVjdEdyYXBoXSk6CisgICAgICAgICgtW0pTVmlydHVhbE1hY2hp
bmUgZXh0ZXJuYWxSZW1lbWJlcmVkU2V0XSk6CisgICAgICAgICogQVBJL0pTV3JhcHBlck1hcC5t
bToKKyAgICAgICAgKGNyZWF0ZVJlbmFtZU1hcCk6CisgICAgICAgIChjb3B5TWV0aG9kc1RvT2Jq
ZWN0KToKKyAgICAgICAgKC1bSlNXcmFwcGVyTWFwIGluaXRXaXRoR2xvYmFsQ29udGV4dFJlZjpd
KToKKyAgICAgICAgKC1bSlNXcmFwcGVyTWFwIGNsYXNzSW5mb0ZvckNsYXNzOl0pOgorICAgICAg
ICAoLVtKU1dyYXBwZXJNYXAgb2JqY1dyYXBwZXJGb3JKU1ZhbHVlUmVmOmluQ29udGV4dDpdKToK
KyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfY29uZmln
dXJhdGlvbl9pbXBsZW1lbnRhdGlvbi5weToKKyAgICAgICAgKE9iakNDb25maWd1cmF0aW9uSW1w
bGVtZW50YXRpb25HZW5lcmF0b3IuX2dlbmVyYXRlX2NvbmZpZ3VyYXRpb25faW1wbGVtZW50YXRp
b25fZm9yX2RvbWFpbnMpOgorICAgICAgICAoT2JqQ0NvbmZpZ3VyYXRpb25JbXBsZW1lbnRhdGlv
bkdlbmVyYXRvci5fZ2VuZXJhdGVfaXZhcnMpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5OgorCiAyMDIxLTAyLTE1ICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
LCByZXZlcnRpbmcgcjI3MjgzMS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhNDczNThmYThmYTg5ODFjOGMyMTIz
OGU5ZTExYjZlMzNlMmVmNTU2Li5lNGIwNDhmN2FjZTJlNDE4N2FlMmYyMWM4MTdiODBiNmNiYWU3
MDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjEtMDItMTUgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2Yg
W29iakMgcmVsZWFzZV0gaW4gV2ViS2l0IGV2ZW4gbW9yZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxOTE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfaW5zdGFuY2Uu
bW06CisgICAgICAgIChPYmpjSW5zdGFuY2U6OnNldEdsb2JhbEV4Y2VwdGlvbik6CisgICAgICAg
IChPYmpjSW5zdGFuY2U6Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZSk6CisgICAgICAg
ICogYnJpZGdlL3Rlc3RiaW5kaW5ncy5tbToKKyAgICAgICAgKC1bTXlGaXJzdEludGVyZmFjZSBp
bml0XSk6CisgICAgICAgICgtW015Rmlyc3RJbnRlcmZhY2UgZ2V0TXlTZWNvbmRJbnRlcmZhY2Vd
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW06CisgICAgICAgIChzZXRH
bG9iYWxGb2N1c1ZpZXcpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lm1t
OgorICAgICAgICAoLVtXQUtXaW5kb3cgc2VuZEV2ZW50U3luY2hyb25vdXNseTpdKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW06CisgICAgICAgIChNYWluVGhy
ZWFkQWRvcHRBbmRSZWxlYXNlKToKKyAgICAgICAgKEhhbmRsZVdlYlRocmVhZFJlbGVhc2VTb3Vy
Y2UpOgorCiAyMDIxLTAyLTE1ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAg
ICAgICBQcmVwYXJlIGZvciBhZGRpbmcgcmVsYXRpdmUgY29sb3Igc3VwcG9ydApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc3ZGMxZjg5OWVjNjA4MmI4YzhhZDQyZDQ5YTYxNTk5Nzg0
ODM2ZjEuLmQxOGRiMmQyOTYyNTBlM2MxNmE3N2Q4YjNlNzc2ZTc3MDkxNzUyNTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NiBAQAorMjAyMS0wMi0xNSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2Fn
ZSBvZiBbb2JqQyByZWxlYXNlXSBpbiBXZWJLaXQgZXZlbiBtb3JlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE5MTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5Lm1t
OgorICAgICAgICAoK1tXZWJIaXN0b3J5IHNldE9wdGlvbmFsU2hhcmVkSGlzdG9yeTpdKToKKyAg
ICAgICAgKiBQbHVnaW5zL1dlYlBsdWdpbkRhdGFiYXNlLm1tOgorICAgICAgICAoK1tXZWJQbHVn
aW5EYXRhYmFzZSBzZXRBZGRpdGlvbmFsV2ViUGx1Z0luUGF0aHM6XSk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50
OjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1
cGRhdGVHbG9iYWxIaXN0b3J5KToKKyAgICAgICAgKE5ldHNjYXBlUGx1Z2luV2lkZ2V0OjpnZXRG
b3JtVmFsdWUpOgorICAgICAgICAqIFdlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5t
bToKKyAgICAgICAgKC1bV2ViTm9kZUhpZ2hsaWdodFZpZXcgX2F0dGFjaDpudW1MYXllcnM6XSk6
CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZVZpZXcubW06CisgICAgICAgICgtW1dlYkZyYW1l
VmlldyBfbWFrZURvY3VtZW50Vmlld0ZvckRhdGFTb3VyY2U6XSk6CisgICAgICAgICogV2ViVmll
dy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldp
dGhGcmFtZU5hbWU6Z3JvdXBOYW1lOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGluaXRTaW1wbGVI
VE1MRG9jdW1lbnRXaXRoU3R5bGU6ZnJhbWU6cHJlZmVyZW5jZXM6Z3JvdXBOYW1lOl0pOgorICAg
ICAgICAoLVtXZWJWaWV3IF9jbG9zZVBsdWdpbkRhdGFiYXNlc10pOgorICAgICAgICAoLVtXZWJW
aWV3IF9jbG9zZV0pOgorICAgICAgICAoLVtXZWJWaWV3IGluc3BlY3Rvcl0pOgorICAgICAgICAo
LVtXZWJWaWV3IHNldFNob3dpbmdJbnNwZWN0b3JJbmRpY2F0aW9uOl0pOgorICAgICAgICAoLVtX
ZWJWaWV3IF9zZXRGb3JtRGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2Zvcm1EZWxl
Z2F0ZUZvcndhcmRlcl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9VSUtpdERlbGVnYXRlRm9yd2Fy
ZGVyXSk6CisgICAgICAgICgtW1dlYlZpZXcgX3BvbGljeURlbGVnYXRlRm9yd2FyZGVyXSk6Cisg
ICAgICAgICgtW1dlYlZpZXcgX1VJRGVsZWdhdGVGb3J3YXJkZXJdKToKKyAgICAgICAgKC1bV2Vi
VmlldyBfZWRpdGluZ0RlbGVnYXRlRm9yd2FyZGVyXSk6CisgICAgICAgICgtW1dlYlZpZXcgX3Nl
dFVJS2l0RGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgY2FyZXRDaGFuZ2VMaXN0ZW5l
cnNdKToKKyAgICAgICAgKC1bV2ViVmlldyBhZGRDYXJldENoYW5nZUxpc3RlbmVyOl0pOgorICAg
ICAgICAoLVtXZWJWaWV3IF9zZXRBZGRpdGlvbmFsV2ViUGx1Z0luUGF0aHM6XSk6CisgICAgICAg
ICgtW1dlYlZpZXcgc2V0QmFja2dyb3VuZENvbG9yOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGJh
Y2tncm91bmRDb2xvcl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9maXhlZFBvc2l0aW9uQ29udGVu
dF0pOgorICAgICAgICAoLVtXZWJWaWV3IHNldFVJRGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dl
YlZpZXcgX3Jlc291cmNlTG9hZERlbGVnYXRlRm9yd2FyZGVyXSk6CisgICAgICAgICgtW1dlYlZp
ZXcgc2V0UmVzb3VyY2VMb2FkRGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0UG9s
aWN5RGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2ZyYW1lTG9hZERlbGVnYXRlRm9y
d2FyZGVyXSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0RnJhbWVMb2FkRGVsZWdhdGU6XSk6Cisg
ICAgICAgICgtW1dlYlZpZXcgc2V0QXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50Ol0pOgorICAg
ICAgICAoLVtXZWJWaWV3IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudF0pOgorICAgICAgICAo
LVtXZWJWaWV3IHNldE1lZGlhU3R5bGU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgbWVkaWFTdHls
ZV0pOgorICAgICAgICAoLVtXZWJWaWV3IF91c2VyQWdlbnRTdHJpbmddKToKKyAgICAgICAgKC1b
V2ViVmlldyBzZXRIb3N0V2luZG93Ol0pOgorICAgICAgICAoLVtXZWJWaWV3IGhvc3RXaW5kb3dd
KToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRDdXJyZW50Tm9kZUhpZ2hsaWdodDpdKToKKyAgICAg
ICAgKC1bV2ViVmlldyBjdXJyZW50Tm9kZUhpZ2hsaWdodF0pOgorICAgICAgICAoLVtXZWJWaWV3
IF9hbGxvd3NMaW5rUHJldmlld10pOgorICAgICAgICAoLVtXZWJWaWV3IF9zZXRBbGxvd3NMaW5r
UHJldmlldzpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRFZGl0aW5nRGVsZWdhdGU6XSk6Cisg
ICAgICAgICgtW1dlYlZpZXcgX2ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXJdKToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYlZpZXdEYXRhLmg6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3RGF0YS5t
bToKKyAgICAgICAgKC1bV2ViVmlld1ByaXZhdGUgZGVhbGxvY10pOgorCiAyMDIxLTAyLTEyICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVkdWNlIGV4cGxpY2l0
IHVzYWdlIG9mIFtvYmpDIHJlbGVhc2VdIGluIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ29udGV4dC5tbQppbmRleCBmZDI1YzA4ZDNjZTA1ZmFhMTUzZTczZjBmMDU2OGE4OTg0ZWE0
NjY3Li43NGIyMzQ0OWU2OWE5YzM5ZTE4NzIyN2RjOGM2OTdhZmI0OTI2MGJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbQpAQCAtNDEsMTMgKzQxLDEzIEBACiAjaW1wb3J0
ICJKYXZhU2NyaXB0Q29yZS5oIgogI2ltcG9ydCAiT2JqY1J1bnRpbWVFeHRyYXMuaCIKICNpbXBv
cnQgIlN0cm9uZ0lubGluZXMuaCIKLQorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9y
dCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogCiBAaW1w
bGVtZW50YXRpb24gSlNDb250ZXh0IHsKLSAgICBKU1ZpcnR1YWxNYWNoaW5lICptX3ZpcnR1YWxN
YWNoaW5lOworICAgIFJldGFpblB0cjxKU1ZpcnR1YWxNYWNoaW5lPiBtX3ZpcnR1YWxNYWNoaW5l
OwogICAgIEpTR2xvYmFsQ29udGV4dFJlZiBtX2NvbnRleHQ7CiAgICAgSlNDOjpTdHJvbmc8SlND
OjpKU09iamVjdD4gbV9leGNlcHRpb247CiAgICAgV2Vha09iakNQdHI8aWQgPEpTTW9kdWxlTG9h
ZGVyRGVsZWdhdGU+PiBtX21vZHVsZUxvYWRlckRlbGVnYXRlOwpAQCAtNzcsNyArNzcsNyBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhWaXJ0dWFsTWFjaGluZTooSlNWaXJ0dWFsTWFjaGluZSAq
KXZpcnR1YWxNYWNoaW5lCiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0g
ICAgbV92aXJ0dWFsTWFjaGluZSA9IFt2aXJ0dWFsTWFjaGluZSByZXRhaW5dOworICAgIG1fdmly
dHVhbE1hY2hpbmUgPSB2aXJ0dWFsTWFjaGluZTsKICAgICBtX2NvbnRleHQgPSBKU0dsb2JhbENv
bnRleHRDcmVhdGVJbkdyb3VwKGdldEdyb3VwRnJvbVZpcnR1YWxNYWNoaW5lKHZpcnR1YWxNYWNo
aW5lKSwgMCk7CiAKICAgICBzZWxmLmV4Y2VwdGlvbkhhbmRsZXIgPSBeKEpTQ29udGV4dCAqY29u
dGV4dCwgSlNWYWx1ZSAqZXhjZXB0aW9uVmFsdWUpIHsKQEAgLTk0LDcgKzk0LDYgQEAgLSAodm9p
ZClkZWFsbG9jCiB7CiAgICAgbV9leGNlcHRpb24uY2xlYXIoKTsKICAgICBKU0dsb2JhbENvbnRl
eHRSZWxlYXNlKG1fY29udGV4dCk7Ci0gICAgW21fdmlydHVhbE1hY2hpbmUgcmVsZWFzZV07CiAg
ICAgW19leGNlcHRpb25IYW5kbGVyIHJlbGVhc2VdOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0K
QEAgLTI1NCw3ICsyNTMsNyBAQCArIChOU0FycmF5ICopY3VycmVudEFyZ3VtZW50cwogCiAtIChK
U1ZpcnR1YWxNYWNoaW5lICopdmlydHVhbE1hY2hpbmUKIHsKLSAgICByZXR1cm4gbV92aXJ0dWFs
TWFjaGluZTsKKyAgICByZXR1cm4gbV92aXJ0dWFsTWFjaGluZS5nZXQoKTsKIH0KIAogLSAoTlNT
dHJpbmcgKiluYW1lCkBAIC0zMzYsNyArMzM1LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
R2xvYmFsQ29udGV4dFJlZjooSlNHbG9iYWxDb250ZXh0UmVmKWNvbnRleHQKICAgICAgICAgcmV0
dXJuIG5pbDsKIAogICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlMo
Y29udGV4dCk7Ci0gICAgbV92aXJ0dWFsTWFjaGluZSA9IFtbSlNWaXJ0dWFsTWFjaGluZSB2aXJ0
dWFsTWFjaGluZVdpdGhDb250ZXh0R3JvdXBSZWY6dG9SZWYoJmdsb2JhbE9iamVjdC0+dm0oKSld
IHJldGFpbl07CisgICAgbV92aXJ0dWFsTWFjaGluZSA9IFtKU1ZpcnR1YWxNYWNoaW5lIHZpcnR1
YWxNYWNoaW5lV2l0aENvbnRleHRHcm91cFJlZjp0b1JlZigmZ2xvYmFsT2JqZWN0LT52bSgpKV07
CiAgICAgQVNTRVJUKG1fdmlydHVhbE1hY2hpbmUpOwogICAgIG1fY29udGV4dCA9IEpTR2xvYmFs
Q29udGV4dFJldGFpbihjb250ZXh0KTsKICAgICBbc2VsZiBlbnN1cmVXcmFwcGVyTWFwXTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCmluZGV4IGMxODczN2Jm
ODc2YjZkZDUyMGEzMzcyOTRiOWMyMjM5Mjc1OTk5YzQuLjYzODY5YTAzNDE0MDAzZGM4NzAxZjUy
M2M1MDljYmViZWNkZDk2YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNNYW5hZ2VkVmFsdWUubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFn
ZWRWYWx1ZS5tbQpAQCAtMzgsNiArMzgsNyBAQAogI2ltcG9ydCAiT2JqY1J1bnRpbWVFeHRyYXMu
aCIKICNpbXBvcnQgIkpTQ0lubGluZXMuaCIKICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBjbGFzcyBKU01hbmFnZWRWYWx1ZUhhbmRs
ZU93bmVyIGZpbmFsIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKIHB1YmxpYzoKQEAg
LTU1LDcgKzU2LDcgQEAgQGltcGxlbWVudGF0aW9uIEpTTWFuYWdlZFZhbHVlIHsKICAgICBKU0M6
OldlYWs8SlNDOjpKU0dsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7CiAgICAgUmVmUHRyPEpT
Qzo6SlNMb2NrPiBtX2xvY2s7CiAgICAgSlNDOjpKU1dlYWtWYWx1ZSBtX3dlYWtWYWx1ZTsKLSAg
ICBOU01hcFRhYmxlICptX293bmVyczsKKyAgICBSZXRhaW5QdHI8TlNNYXBUYWJsZT4gbV9vd25l
cnM7CiB9CiAKICsgKEpTTWFuYWdlZFZhbHVlICopbWFuYWdlZFZhbHVlV2l0aFZhbHVlOihKU1Zh
bHVlICopdmFsdWUKQEAgLTkzLDcgKzk0LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVmFs
dWU6KEpTVmFsdWUgKil2YWx1ZQogCiAgICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyB3ZWFr
SURPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zV2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0
aW9uc09iamVjdFBlcnNvbmFsaXR5OwogICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgaW50
ZWdlck9wdGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlvbnNPcGFxdWVNZW1vcnkgfCBOU1BvaW50ZXJG
dW5jdGlvbnNJbnRlZ2VyUGVyc29uYWxpdHk7Ci0gICAgbV9vd25lcnMgPSBbW05TTWFwVGFibGUg
YWxsb2NdIGluaXRXaXRoS2V5T3B0aW9uczp3ZWFrSURPcHRpb25zIHZhbHVlT3B0aW9uczppbnRl
Z2VyT3B0aW9ucyBjYXBhY2l0eToxXTsKKyAgICBtX293bmVycyA9IGFkb3B0TlMoW1tOU01hcFRh
YmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6d2Vha0lET3B0aW9ucyB2YWx1ZU9wdGlvbnM6
aW50ZWdlck9wdGlvbnMgY2FwYWNpdHk6MV0pOwogCiAgICAgSlNDOjpKU1ZhbHVlIGpzVmFsdWUg
PSB0b0pTKGdsb2JhbE9iamVjdCwgW3ZhbHVlIEpTVmFsdWVSZWZdKTsKICAgICBpZiAoanNWYWx1
ZS5pc09iamVjdCgpKQpAQCAtMTA5LDM5ICsxMTAsMzcgQEAgLSAodm9pZClkZWFsbG9jCiB7CiAg
ICAgSlNWaXJ0dWFsTWFjaGluZSAqdmlydHVhbE1hY2hpbmUgPSBbW1tzZWxmIHZhbHVlXSBjb250
ZXh0XSB2aXJ0dWFsTWFjaGluZV07CiAgICAgaWYgKHZpcnR1YWxNYWNoaW5lKSB7Ci0gICAgICAg
IE5TTWFwVGFibGUgKmNvcHkgPSBbbV9vd25lcnMgY29weV07CisgICAgICAgIGF1dG8gY29weSA9
IGFkb3B0TlMoW21fb3duZXJzIGNvcHldKTsKICAgICAgICAgZm9yIChpZCBvd25lciBpbiBbY29w
eSBrZXlFbnVtZXJhdG9yXSkgewotICAgICAgICAgICAgc2l6ZV90IGNvdW50ID0gcmVpbnRlcnBy
ZXRfY2FzdDxzaXplX3Q+KE5TTWFwR2V0KG1fb3duZXJzLCAoX19icmlkZ2Ugdm9pZCopb3duZXIp
KTsKKyAgICAgICAgICAgIHNpemVfdCBjb3VudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihO
U01hcEdldChtX293bmVycy5nZXQoKSwgKF9fYnJpZGdlIHZvaWQqKW93bmVyKSk7CiAgICAgICAg
ICAgICB3aGlsZSAoY291bnQtLSkKICAgICAgICAgICAgICAgICBbdmlydHVhbE1hY2hpbmUgcmVt
b3ZlTWFuYWdlZFJlZmVyZW5jZTpzZWxmIHdpdGhPd25lcjpvd25lcl07CiAgICAgICAgIH0KLSAg
ICAgICAgW2NvcHkgcmVsZWFzZV07CiAgICAgfQogCiAgICAgW3NlbGYgZGlzY29ubmVjdFZhbHVl
XTsKLSAgICBbbV9vd25lcnMgcmVsZWFzZV07CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCiAt
ICh2b2lkKWRpZEFkZE93bmVyOihpZClvd25lcgogewotICAgIHNpemVfdCBjb3VudCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8c2l6ZV90PihOU01hcEdldChtX293bmVycywgKF9fYnJpZGdlIHZvaWQqKW93
bmVyKSk7Ci0gICAgTlNNYXBJbnNlcnQobV9vd25lcnMsIChfX2JyaWRnZSB2b2lkKilvd25lciwg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY291bnQgKyAxKSk7CisgICAgc2l6ZV90IGNvdW50ID0g
cmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KE5TTWFwR2V0KG1fb3duZXJzLmdldCgpLCAoX19icmlk
Z2Ugdm9pZCopb3duZXIpKTsKKyAgICBOU01hcEluc2VydChtX293bmVycy5nZXQoKSwgKF9fYnJp
ZGdlIHZvaWQqKW93bmVyLCByZWludGVycHJldF9jYXN0PHZvaWQqPihjb3VudCArIDEpKTsKIH0K
IAogLSAodm9pZClkaWRSZW1vdmVPd25lcjooaWQpb3duZXIKIHsKLSAgICBzaXplX3QgY291bnQg
PSByZWludGVycHJldF9jYXN0PHNpemVfdD4oTlNNYXBHZXQobV9vd25lcnMsIChfX2JyaWRnZSB2
b2lkKilvd25lcikpOworICAgIHNpemVfdCBjb3VudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90
PihOU01hcEdldChtX293bmVycy5nZXQoKSwgKF9fYnJpZGdlIHZvaWQqKW93bmVyKSk7CiAKICAg
ICBpZiAoIWNvdW50KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoY291bnQgPT0gMSkgewot
ICAgICAgICBOU01hcFJlbW92ZShtX293bmVycywgKF9fYnJpZGdlIHZvaWQqKW93bmVyKTsKKyAg
ICAgICAgTlNNYXBSZW1vdmUobV9vd25lcnMuZ2V0KCksIChfX2JyaWRnZSB2b2lkKilvd25lcik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBOU01hcEluc2VydChtX293bmVycywgKF9f
YnJpZGdlIHZvaWQqKW93bmVyLCByZWludGVycHJldF9jYXN0PHZvaWQqPihjb3VudCAtIDEpKTsK
KyAgICBOU01hcEluc2VydChtX293bmVycy5nZXQoKSwgKF9fYnJpZGdlIHZvaWQqKW93bmVyLCBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihjb3VudCAtIDEpKTsKIH0KIAogLSAoSlNWYWx1ZSAqKXZh
bHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hp
bmUubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUubW0KaW5k
ZXggMzE5MjRkMDEyYzBiMjY4ODMwNjE1ZjI0ZDc4M2I5MDVkZTAyODY4Ny4uMTdiMzJhNjY2NzBi
MDA1NDYxZGFmN2FmMTdhYTE3MWNlNWI4YTk5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNWaXJ0dWFsTWFjaGluZS5tbQpAQCAtODQsOSArODQsOSBAQCBAZW5kCiBAaW1wbGVt
ZW50YXRpb24gSlNWaXJ0dWFsTWFjaGluZSB7CiAgICAgSlNDb250ZXh0R3JvdXBSZWYgbV9ncm91
cDsKICAgICBMb2NrIG1fZXh0ZXJuYWxEYXRhTXV0ZXg7Ci0gICAgTlNNYXBUYWJsZSAqbV9jb250
ZXh0Q2FjaGU7Ci0gICAgTlNNYXBUYWJsZSAqbV9leHRlcm5hbE9iamVjdEdyYXBoOwotICAgIE5T
TWFwVGFibGUgKm1fZXh0ZXJuYWxSZW1lbWJlcmVkU2V0OworICAgIFJldGFpblB0cjxOU01hcFRh
YmxlPiBtX2NvbnRleHRDYWNoZTsKKyAgICBSZXRhaW5QdHI8TlNNYXBUYWJsZT4gbV9leHRlcm5h
bE9iamVjdEdyYXBoOworICAgIFJldGFpblB0cjxOU01hcFRhYmxlPiBtX2V4dGVybmFsUmVtZW1i
ZXJlZFNldDsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXQKQEAgLTEwOCwxNCArMTA4LDE0IEBA
IC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbnRleHRHcm91cFJlZjooSlNDb250ZXh0R3JvdXBS
ZWYpZ3JvdXAKICAgICAKICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIGtleU9wdGlvbnMg
PSBOU1BvaW50ZXJGdW5jdGlvbnNPcGFxdWVNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPcGFx
dWVQZXJzb25hbGl0eTsKICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHZhbHVlT3B0aW9u
cyA9IE5TUG9pbnRlckZ1bmN0aW9uc1dlYWtNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPYmpl
Y3RQZXJzb25hbGl0eTsKLSAgICBtX2NvbnRleHRDYWNoZSA9IFtbTlNNYXBUYWJsZSBhbGxvY10g
aW5pdFdpdGhLZXlPcHRpb25zOmtleU9wdGlvbnMgdmFsdWVPcHRpb25zOnZhbHVlT3B0aW9ucyBj
YXBhY2l0eTowXTsKKyAgICBtX2NvbnRleHRDYWNoZSA9IGFkb3B0TlMoW1tOU01hcFRhYmxlIGFs
bG9jXSBpbml0V2l0aEtleU9wdGlvbnM6a2V5T3B0aW9ucyB2YWx1ZU9wdGlvbnM6dmFsdWVPcHRp
b25zIGNhcGFjaXR5OjBdKTsKICAgICAKICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHdl
YWtJRE9wdGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlvbnNXZWFrTWVtb3J5IHwgTlNQb2ludGVyRnVu
Y3Rpb25zT2JqZWN0UGVyc29uYWxpdHk7CiAgICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyBz
dHJvbmdJRE9wdGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlvbnNTdHJvbmdNZW1vcnkgfCBOU1BvaW50
ZXJGdW5jdGlvbnNPYmplY3RQZXJzb25hbGl0eTsKLSAgICBtX2V4dGVybmFsT2JqZWN0R3JhcGgg
PSBbW05TTWFwVGFibGUgYWxsb2NdIGluaXRXaXRoS2V5T3B0aW9uczp3ZWFrSURPcHRpb25zIHZh
bHVlT3B0aW9uczpzdHJvbmdJRE9wdGlvbnMgY2FwYWNpdHk6MF07CisgICAgbV9leHRlcm5hbE9i
amVjdEdyYXBoID0gYWRvcHROUyhbW05TTWFwVGFibGUgYWxsb2NdIGluaXRXaXRoS2V5T3B0aW9u
czp3ZWFrSURPcHRpb25zIHZhbHVlT3B0aW9uczpzdHJvbmdJRE9wdGlvbnMgY2FwYWNpdHk6MF0p
OwogCiAgICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyBpbnRlZ2VyT3B0aW9ucyA9IE5TUG9p
bnRlckZ1bmN0aW9uc09wYXF1ZU1lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc0ludGVnZXJQZXJz
b25hbGl0eTsKLSAgICBtX2V4dGVybmFsUmVtZW1iZXJlZFNldCA9IFtbTlNNYXBUYWJsZSBhbGxv
Y10gaW5pdFdpdGhLZXlPcHRpb25zOndlYWtJRE9wdGlvbnMgdmFsdWVPcHRpb25zOmludGVnZXJP
cHRpb25zIGNhcGFjaXR5OjBdOworICAgIG1fZXh0ZXJuYWxSZW1lbWJlcmVkU2V0ID0gYWRvcHRO
UyhbW05TTWFwVGFibGUgYWxsb2NdIGluaXRXaXRoS2V5T3B0aW9uczp3ZWFrSURPcHRpb25zIHZh
bHVlT3B0aW9uczppbnRlZ2VyT3B0aW9ucyBjYXBhY2l0eTowXSk7CiAgICAKICAgICBbSlNWTVdy
YXBwZXJDYWNoZSBhZGRXcmFwcGVyOnNlbGYgZm9ySlNDb250ZXh0R3JvdXBSZWY6Z3JvdXBdOwog
IApAQCAtMTI1LDkgKzEyNSw2IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbnRleHRHcm91
cFJlZjooSlNDb250ZXh0R3JvdXBSZWYpZ3JvdXAKIC0gKHZvaWQpZGVhbGxvYwogewogICAgIEpT
Q29udGV4dEdyb3VwUmVsZWFzZShtX2dyb3VwKTsKLSAgICBbbV9jb250ZXh0Q2FjaGUgcmVsZWFz
ZV07Ci0gICAgW21fZXh0ZXJuYWxPYmplY3RHcmFwaCByZWxlYXNlXTsKLSAgICBbbV9leHRlcm5h
bFJlbWVtYmVyZWRTZXQgcmVsZWFzZV07CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCkBAIC0y
NDUsMTIgKzI0MiwxMiBAQCArIChKU1ZpcnR1YWxNYWNoaW5lICopdmlydHVhbE1hY2hpbmVXaXRo
Q29udGV4dEdyb3VwUmVmOihKU0NvbnRleHRHcm91cFJlZilncm91cAogCiAtIChKU0NvbnRleHQg
Kiljb250ZXh0Rm9yR2xvYmFsQ29udGV4dFJlZjooSlNHbG9iYWxDb250ZXh0UmVmKWdsb2JhbENv
bnRleHQKIHsKLSAgICByZXR1cm4gKF9fYnJpZGdlIEpTQ29udGV4dCAqKU5TTWFwR2V0KG1fY29u
dGV4dENhY2hlLCBnbG9iYWxDb250ZXh0KTsKKyAgICByZXR1cm4gKF9fYnJpZGdlIEpTQ29udGV4
dCAqKU5TTWFwR2V0KG1fY29udGV4dENhY2hlLmdldCgpLCBnbG9iYWxDb250ZXh0KTsKIH0KIAog
LSAodm9pZClhZGRDb250ZXh0OihKU0NvbnRleHQgKil3cmFwcGVyIGZvckdsb2JhbENvbnRleHRS
ZWY6KEpTR2xvYmFsQ29udGV4dFJlZilnbG9iYWxDb250ZXh0CiB7Ci0gICAgTlNNYXBJbnNlcnQo
bV9jb250ZXh0Q2FjaGUsIGdsb2JhbENvbnRleHQsIChfX2JyaWRnZSB2b2lkKil3cmFwcGVyKTsK
KyAgICBOU01hcEluc2VydChtX2NvbnRleHRDYWNoZS5nZXQoKSwgZ2xvYmFsQ29udGV4dCwgKF9f
YnJpZGdlIHZvaWQqKXdyYXBwZXIpOwogfQogCiAtIChMb2NrJilleHRlcm5hbERhdGFNdXRleApA
QCAtMjYwLDEyICsyNTcsMTIgQEAgLSAoTG9jayYpZXh0ZXJuYWxEYXRhTXV0ZXgKIAogLSAoTlNN
YXBUYWJsZSAqKWV4dGVybmFsT2JqZWN0R3JhcGgKIHsKLSAgICByZXR1cm4gbV9leHRlcm5hbE9i
amVjdEdyYXBoOworICAgIHJldHVybiBtX2V4dGVybmFsT2JqZWN0R3JhcGguZ2V0KCk7CiB9CiAK
IC0gKE5TTWFwVGFibGUgKilleHRlcm5hbFJlbWVtYmVyZWRTZXQKIHsKLSAgICByZXR1cm4gbV9l
eHRlcm5hbFJlbWVtYmVyZWRTZXQ7CisgICAgcmV0dXJuIG1fZXh0ZXJuYWxSZW1lbWJlcmVkU2V0
LmdldCgpOwogfQogCiAtICh2b2lkKXNocmlua0Zvb3RwcmludFdoZW5JZGxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCmluZGV4IGU4ZDIzMGY0ZDc5N2I4N2E4NmY3
YTk4MDkwZWMyNDliNmU1NTFkYjguLjE0NTU2YjU3NzEzZTczMGFlNTJiZGY5NTJlNjY5MTQyMDg1
OWViMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFw
Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCkBAIC0x
NjMsOSArMTYzLDkgQEAgc3RhdGljIEpTQzo6SlNPYmplY3QgKmNvbnN0cnVjdG9yV2l0aEN1c3Rv
bUJyYW5kKEpTQ29udGV4dCAqY29udGV4dCwgTlNTdHJpbmcgKmIKIAogLy8gTG9vayBmb3IgQG9w
dGlvbmFsIHByb3BlcnRpZXMgaW4gdGhlIHByb3RvdHlwZSBjb250YWluaW5nIGEgc2VsZWN0b3Ig
dG8gcHJvcGVydHkKIC8vIG5hbWUgbWFwcGluZywgc2VwYXJhdGVkIGJ5IGEgX19KU19FWFBPUlRf
QVNfXyBkZWxpbWl0ZXIuCi1zdGF0aWMgTlNNdXRhYmxlRGljdGlvbmFyeSAqY3JlYXRlUmVuYW1l
TWFwKFByb3RvY29sICpwcm90b2NvbCwgQk9PTCBpc0luc3RhbmNlTWV0aG9kKQorc3RhdGljIFJl
dGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBjcmVhdGVSZW5hbWVNYXAoUHJvdG9jb2wgKnBy
b3RvY29sLCBCT09MIGlzSW5zdGFuY2VNZXRob2QpCiB7Ci0gICAgTlNNdXRhYmxlRGljdGlvbmFy
eSAqcmVuYW1lTWFwID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKKyAgICBh
dXRvIHJlbmFtZU1hcCA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0
XSk7CiAKICAgICBmb3JFYWNoTWV0aG9kSW5Qcm90b2NvbChwcm90b2NvbCwgTk8sIGlzSW5zdGFu
Y2VNZXRob2QsIF4oU0VMIHNlbCwgY29uc3QgY2hhciopewogICAgICAgICBOU1N0cmluZyAqcmVu
YW1lID0gQChzZWxfZ2V0TmFtZShzZWwpKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCBzdGF0aWMgTlNN
dXRhYmxlRGljdGlvbmFyeSAqY3JlYXRlUmVuYW1lTWFwKFByb3RvY29sICpwcm90b2NvbCwgQk9P
TCBpc0luc3RhbmNlTQogICAgICAgICBOU1VJbnRlZ2VyIGJlZ2luID0gcmFuZ2UubG9jYXRpb24g
KyByYW5nZS5sZW5ndGg7CiAgICAgICAgIE5TVUludGVnZXIgbGVuZ3RoID0gW3JlbmFtZSBsZW5n
dGhdIC0gYmVnaW4gLSAxOwogICAgICAgICBOU1N0cmluZyAqbmFtZSA9IFtyZW5hbWUgc3Vic3Ry
aW5nV2l0aFJhbmdlOihOU1JhbmdlKXsgYmVnaW4sIGxlbmd0aCB9XTsKLSAgICAgICAgcmVuYW1l
TWFwW3NlbGVjdG9yXSA9IG5hbWU7CisgICAgICAgIHJlbmFtZU1hcC5nZXQoKVtzZWxlY3Rvcl0g
PSBuYW1lOwogICAgIH0pOwogCiAgICAgcmV0dXJuIHJlbmFtZU1hcDsKQEAgLTI1Myw3ICsyNTMs
NyBAQCBzdGF0aWMgYm9vbCBzaG91bGRTa2lwTWV0aG9kV2l0aE5hbWUoTlNTdHJpbmcgKm5hbWUp
CiAvLyAgKiBPdGhlcndpc2UsIGlmIHRoZSBvYmplY3QgZG9lc24ndCBhbHJlYWR5IGNvbnRhaW4g
YSBwcm9wZXJ0eSB3aXRoIG5hbWUsIGNyZWF0ZSBpdC4KIHN0YXRpYyB2b2lkIGNvcHlNZXRob2Rz
VG9PYmplY3QoSlNDb250ZXh0ICpjb250ZXh0LCBDbGFzcyBvYmpjQ2xhc3MsIFByb3RvY29sICpw
cm90b2NvbCwgQk9PTCBpc0luc3RhbmNlTWV0aG9kLCBKU1ZhbHVlICpvYmplY3QsIE5TTXV0YWJs
ZURpY3Rpb25hcnkgKmFjY2Vzc29yTWV0aG9kcyA9IG5pbCkKIHsKLSAgICBOU011dGFibGVEaWN0
aW9uYXJ5ICpyZW5hbWVNYXAgPSBjcmVhdGVSZW5hbWVNYXAocHJvdG9jb2wsIGlzSW5zdGFuY2VN
ZXRob2QpOworICAgIGF1dG8gcmVuYW1lTWFwID0gY3JlYXRlUmVuYW1lTWFwKHByb3RvY29sLCBp
c0luc3RhbmNlTWV0aG9kKTsKIAogICAgIGZvckVhY2hNZXRob2RJblByb3RvY29sKHByb3RvY29s
LCBZRVMsIGlzSW5zdGFuY2VNZXRob2QsIF4oU0VMIHNlbCwgY29uc3QgY2hhciogdHlwZXMpewog
ICAgICAgICBjb25zdCBjaGFyKiBuYW1lQ1N0ciA9IHNlbF9nZXROYW1lKHNlbCk7CkBAIC0yNjgs
NyArMjY4LDcgQEAgc3RhdGljIHZvaWQgY29weU1ldGhvZHNUb09iamVjdChKU0NvbnRleHQgKmNv
bnRleHQsIENsYXNzIG9iamNDbGFzcywgUHJvdG9jb2wgKnAKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICBhY2Nlc3Nvck1ldGhvZHNbbmFtZV0gPSBbSlNWYWx1ZSB2YWx1ZVdp
dGhKU1ZhbHVlUmVmOm1ldGhvZCBpbkNvbnRleHQ6Y29udGV4dF07CiAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBuYW1lID0gcmVuYW1lTWFwW25hbWVdOworICAgICAgICAgICAgbmFtZSA9
IHJlbmFtZU1hcC5nZXQoKVtuYW1lXTsKICAgICAgICAgICAgIGlmICghbmFtZSkKICAgICAgICAg
ICAgICAgICBuYW1lID0gc2VsZWN0b3JUb1Byb3BlcnR5TmFtZShuYW1lQ1N0cik7CiAgICAgICAg
ICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTKFtjb250ZXh0IEpT
R2xvYmFsQ29udGV4dFJlZl0pOwpAQCAtMjg3LDggKzI4Nyw2IEBAIHN0YXRpYyB2b2lkIGNvcHlN
ZXRob2RzVG9PYmplY3QoSlNDb250ZXh0ICpjb250ZXh0LCBDbGFzcyBvYmpjQ2xhc3MsIFByb3Rv
Y29sICpwCiAgICAgICAgICAgICAgICAgcHV0Tm9uRW51bWVyYWJsZShjb250ZXh0LCBvYmplY3Qs
IG5hbWUsIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6bWV0aG9kIGluQ29udGV4dDpjb250
ZXh0XSk7CiAgICAgICAgIH0KICAgICB9KTsKLQotICAgIFtyZW5hbWVNYXAgcmVsZWFzZV07CiB9
CiAKIHN0cnVjdCBQcm9wZXJ0eSB7CkBAIC01OTMsOSArNTkxLDkgQEAgLSAoSlNDOjpTdHJ1Y3R1
cmUqKXN0cnVjdHVyZUluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dAogQGVuZAogCiBAaW1w
bGVtZW50YXRpb24gSlNXcmFwcGVyTWFwIHsKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICptX2Ns
YXNzTWFwOworICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBtX2NsYXNzTWFwOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OldlYWtHQ01hcDxfX3Vuc2FmZV91bnJldGFpbmVkIGlk
LCBKU0M6OkpTT2JqZWN0Pj4gbV9jYWNoZWRKU1dyYXBwZXJzOwotICAgIE5TTWFwVGFibGUgKm1f
Y2FjaGVkT2JqQ1dyYXBwZXJzOworICAgIFJldGFpblB0cjxOU01hcFRhYmxlPiBtX2NhY2hlZE9i
akNXcmFwcGVyczsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoR2xvYmFsQ29udGV4dFJl
ZjooSlNHbG9iYWxDb250ZXh0UmVmKWNvbnRleHQKQEAgLTYwNiwzMCArNjA0LDIzIEBAIC0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aEdsb2JhbENvbnRleHRSZWY6KEpTR2xvYmFsQ29udGV4dFJlZilj
b250ZXh0CiAKICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIGtleU9wdGlvbnMgPSBOU1Bv
aW50ZXJGdW5jdGlvbnNPcGFxdWVNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPcGFxdWVQZXJz
b25hbGl0eTsKICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHZhbHVlT3B0aW9ucyA9IE5T
UG9pbnRlckZ1bmN0aW9uc1dlYWtNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPYmplY3RQZXJz
b25hbGl0eTsKLSAgICBtX2NhY2hlZE9iakNXcmFwcGVycyA9IFtbTlNNYXBUYWJsZSBhbGxvY10g
aW5pdFdpdGhLZXlPcHRpb25zOmtleU9wdGlvbnMgdmFsdWVPcHRpb25zOnZhbHVlT3B0aW9ucyBj
YXBhY2l0eTowXTsKKyAgICBtX2NhY2hlZE9iakNXcmFwcGVycyA9IGFkb3B0TlMoW1tOU01hcFRh
YmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6a2V5T3B0aW9ucyB2YWx1ZU9wdGlvbnM6dmFs
dWVPcHRpb25zIGNhcGFjaXR5OjBdKTsKIAogICAgIG1fY2FjaGVkSlNXcmFwcGVycyA9IG1ha2VV
bmlxdWU8SlNDOjpXZWFrR0NNYXA8X191bnNhZmVfdW5yZXRhaW5lZCBpZCwgSlNDOjpKU09iamVj
dD4+KHRvSlMoY29udGV4dCktPnZtKCkpOwogCiAgICAgQVNTRVJUKCF0b0pTR2xvYmFsT2JqZWN0
KGNvbnRleHQpLT53cmFwcGVyTWFwKCkpOwogICAgIHRvSlNHbG9iYWxPYmplY3QoY29udGV4dCkt
PnNldFdyYXBwZXJNYXAoc2VsZik7Ci0gICAgbV9jbGFzc01hcCA9IFtbTlNNdXRhYmxlRGljdGlv
bmFyeSBhbGxvY10gaW5pdF07CisgICAgbV9jbGFzc01hcCA9IGFkb3B0TlMoW1tOU011dGFibGVE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKHZvaWQp
ZGVhbGxvYwotewotICAgIFttX2NhY2hlZE9iakNXcmFwcGVycyByZWxlYXNlXTsKLSAgICBbbV9j
bGFzc01hcCByZWxlYXNlXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KIC0gKEpTT2JqQ0Ns
YXNzSW5mbyopY2xhc3NJbmZvRm9yQ2xhc3M6KENsYXNzKWNscwogewogICAgIGlmICghY2xzKQog
ICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgLy8gQ2hlY2sgaWYgd2UndmUgYWxyZWFkeSBjcmVh
dGVkIGEgSlNPYmpDQ2xhc3NJbmZvIGZvciB0aGlzIENsYXNzLgotICAgIGlmIChKU09iakNDbGFz
c0luZm8qIGNsYXNzSW5mbyA9IChKU09iakNDbGFzc0luZm8qKW1fY2xhc3NNYXBbKGlkKWNsc10p
CisgICAgaWYgKEpTT2JqQ0NsYXNzSW5mbyogY2xhc3NJbmZvID0gKEpTT2JqQ0NsYXNzSW5mbyop
bV9jbGFzc01hcC5nZXQoKVsoaWQpY2xzXSkKICAgICAgICAgcmV0dXJuIGNsYXNzSW5mbzsKIAog
ICAgIC8vIFNraXAgaW50ZXJuYWwgY2xhc3NlcyBiZWdpbm5pbmcgd2l0aCAnXycgLSBqdXN0IGNv
cHkgbGluayB0byB0aGUgcGFyZW50IGNsYXNzJ3MgaW5mby4KQEAgLTY0MSwxMCArNjMyLDEwIEBA
IC0gKEpTT2JqQ0NsYXNzSW5mbyopY2xhc3NJbmZvRm9yQ2xhc3M6KENsYXNzKWNscwogICAgICAg
ICB9KTsKIAogICAgICAgICBpZiAoIWNvbmZvcm1zVG9FeHBvcnRQcm90b2NvbCkKLSAgICAgICAg
ICAgIHJldHVybiBtX2NsYXNzTWFwWyhpZCljbHNdID0gW3NlbGYgY2xhc3NJbmZvRm9yQ2xhc3M6
Y2xhc3NfZ2V0U3VwZXJjbGFzcyhjbHMpXTsKKyAgICAgICAgICAgIHJldHVybiBtX2NsYXNzTWFw
LmdldCgpWyhpZCljbHNdID0gW3NlbGYgY2xhc3NJbmZvRm9yQ2xhc3M6Y2xhc3NfZ2V0U3VwZXJj
bGFzcyhjbHMpXTsKICAgICB9CiAKLSAgICByZXR1cm4gbV9jbGFzc01hcFsoaWQpY2xzXSA9IFtb
W0pTT2JqQ0NsYXNzSW5mbyBhbGxvY10gaW5pdEZvckNsYXNzOmNsc10gYXV0b3JlbGVhc2VdOwor
ICAgIHJldHVybiBtX2NsYXNzTWFwLmdldCgpWyhpZCljbHNdID0gW1tbSlNPYmpDQ2xhc3NJbmZv
IGFsbG9jXSBpbml0Rm9yQ2xhc3M6Y2xzXSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKEpTVmFsdWUg
Kilqc1dyYXBwZXJGb3JPYmplY3Q6KGlkKW9iamVjdCBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNv
bnRleHQKQEAgLTY3MywxMCArNjY0LDEwIEBAIC0gKEpTVmFsdWUgKilqc1dyYXBwZXJGb3JPYmpl
Y3Q6KGlkKW9iamVjdCBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQKIC0gKEpTVmFsdWUg
KilvYmpjV3JhcHBlckZvckpTVmFsdWVSZWY6KEpTVmFsdWVSZWYpdmFsdWUgaW5Db250ZXh0OmNv
bnRleHQKIHsKICAgICBBU1NFUlQodG9KU0dsb2JhbE9iamVjdChbY29udGV4dCBKU0dsb2JhbENv
bnRleHRSZWZdKS0+d3JhcHBlck1hcCgpID09IHNlbGYpOwotICAgIEpTVmFsdWUgKndyYXBwZXIg
PSAoX19icmlkZ2UgSlNWYWx1ZSAqKU5TTWFwR2V0KG1fY2FjaGVkT2JqQ1dyYXBwZXJzLCB2YWx1
ZSk7CisgICAgSlNWYWx1ZSAqd3JhcHBlciA9IChfX2JyaWRnZSBKU1ZhbHVlICopTlNNYXBHZXQo
bV9jYWNoZWRPYmpDV3JhcHBlcnMuZ2V0KCksIHZhbHVlKTsKICAgICBpZiAoIXdyYXBwZXIpIHsK
ICAgICAgICAgd3JhcHBlciA9IFtbW0pTVmFsdWUgYWxsb2NdIGluaXRXaXRoVmFsdWU6dmFsdWUg
aW5Db250ZXh0OmNvbnRleHRdIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgTlNNYXBJbnNlcnQobV9j
YWNoZWRPYmpDV3JhcHBlcnMsIHZhbHVlLCAoX19icmlkZ2Ugdm9pZCopd3JhcHBlcik7CisgICAg
ICAgIE5TTWFwSW5zZXJ0KG1fY2FjaGVkT2JqQ1dyYXBwZXJzLmdldCgpLCB2YWx1ZSwgKF9fYnJp
ZGdlIHZvaWQqKXdyYXBwZXIpOwogICAgIH0KICAgICByZXR1cm4gd3JhcHBlcjsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dl
bmVyYXRlX29iamNfY29uZmlndXJhdGlvbl9pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfY29uZmln
dXJhdGlvbl9pbXBsZW1lbnRhdGlvbi5weQppbmRleCAxMmM3NTRjM2QwOGM1ZTcxNjQwMmRjOTkw
YWViNWFhMzJhZTE3YzAxLi42MGEzMDk2ODM0NTg5ZDNjMjNmZGE1ZTI5NzNhMDI0YjJjNzIyNDMz
IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29k
ZWdlbi9nZW5lcmF0ZV9vYmpjX2NvbmZpZ3VyYXRpb25faW1wbGVtZW50YXRpb24ucHkKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVf
b2JqY19jb25maWd1cmF0aW9uX2ltcGxlbWVudGF0aW9uLnB5CkBAIC04OSw4ICs4OSw2IEBAIGNs
YXNzIE9iakNDb25maWd1cmF0aW9uSW1wbGVtZW50YXRpb25HZW5lcmF0b3IoT2JqQ0dlbmVyYXRv
cik6CiAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIHJldHVybiBzZWxmOycpCiAgICAgICAgIGxp
bmVzLmFwcGVuZCgnfScpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnJykKLSAgICAgICAgbGluZXMu
ZXh0ZW5kKHNlbGYuX2dlbmVyYXRlX2RlYWxsb2MoZG9tYWlucykpCi0gICAgICAgIGxpbmVzLmFw
cGVuZCgnJykKICAgICAgICAgZm9yIGRvbWFpbiBpbiBkb21haW5zOgogICAgICAgICAgICAgZG9t
YWluX2xpbmVzID0gW10KICAgICAgICAgICAgIGlmIHNlbGYuc2hvdWxkX2dlbmVyYXRlX2NvbW1h
bmRzX2Zvcl9kb21haW4oZG9tYWluKToKQEAgLTExMSwyOSArMTA5LDEzIEBAIGNsYXNzIE9iakND
b25maWd1cmF0aW9uSW1wbGVtZW50YXRpb25HZW5lcmF0b3IoT2JqQ0dlbmVyYXRvcik6CiAgICAg
ICAgICAgICBpZiBzZWxmLnNob3VsZF9nZW5lcmF0ZV9jb21tYW5kc19mb3JfZG9tYWluKGRvbWFp
bik6CiAgICAgICAgICAgICAgICAgb2JqY19jbGFzc19uYW1lID0gJyVzJXNEb21haW5IYW5kbGVy
JyAlIChzZWxmLm9iamNfcHJlZml4KCksIGRvbWFpbi5kb21haW5fbmFtZSkKICAgICAgICAgICAg
ICAgICBpdmFyX25hbWUgPSAnXyVzSGFuZGxlcicgJSBPYmpDR2VuZXJhdG9yLnZhcmlhYmxlX25h
bWVfcHJlZml4X2Zvcl9kb21haW4oZG9tYWluKQotICAgICAgICAgICAgICAgIGRvbWFpbl9saW5l
cy5hcHBlbmQoJyAgICBpZDwlcz4gJXM7JyAlIChvYmpjX2NsYXNzX25hbWUsIGl2YXJfbmFtZSkp
CisgICAgICAgICAgICAgICAgZG9tYWluX2xpbmVzLmFwcGVuZCgnICAgIFJldGFpblB0cjxpZDwl
cz4+ICVzOycgJSAob2JqY19jbGFzc19uYW1lLCBpdmFyX25hbWUpKQogICAgICAgICAgICAgaWYg
c2VsZi5zaG91bGRfZ2VuZXJhdGVfZXZlbnRzX2Zvcl9kb21haW4oZG9tYWluKToKICAgICAgICAg
ICAgICAgICBvYmpjX2NsYXNzX25hbWUgPSAnJXMlc0RvbWFpbkV2ZW50RGlzcGF0Y2hlcicgJSAo
c2VsZi5vYmpjX3ByZWZpeCgpLCBkb21haW4uZG9tYWluX25hbWUpCiAgICAgICAgICAgICAgICAg
aXZhcl9uYW1lID0gJ18lc0V2ZW50RGlzcGF0Y2hlcicgJSBPYmpDR2VuZXJhdG9yLnZhcmlhYmxl
X25hbWVfcHJlZml4X2Zvcl9kb21haW4oZG9tYWluKQotICAgICAgICAgICAgICAgIGRvbWFpbl9s
aW5lcy5hcHBlbmQoJyAgICAlcyAqJXM7JyAlIChvYmpjX2NsYXNzX25hbWUsIGl2YXJfbmFtZSkp
Ci0gICAgICAgICAgICBpZiBsZW4oZG9tYWluX2xpbmVzKToKLSAgICAgICAgICAgICAgICBsaW5l
cy5hcHBlbmQoc2VsZi53cmFwX3dpdGhfZ3VhcmRfZm9yX2NvbmRpdGlvbihkb21haW4uY29uZGl0
aW9uLCAnXG4nLmpvaW4oZG9tYWluX2xpbmVzKSkpCi0gICAgICAgIHJldHVybiBsaW5lcwotCi0g
ICAgZGVmIF9nZW5lcmF0ZV9kZWFsbG9jKHNlbGYsIGRvbWFpbnMpOgotICAgICAgICBsaW5lcyA9
IFtdCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnLSAodm9pZClkZWFsbG9jJykKLSAgICAgICAgbGlu
ZXMuYXBwZW5kKCd7JykKLSAgICAgICAgZm9yIGRvbWFpbiBpbiBkb21haW5zOgotICAgICAgICAg
ICAgZG9tYWluX2xpbmVzID0gW10KLSAgICAgICAgICAgIGlmIHNlbGYuc2hvdWxkX2dlbmVyYXRl
X2NvbW1hbmRzX2Zvcl9kb21haW4oZG9tYWluKToKLSAgICAgICAgICAgICAgICBkb21haW5fbGlu
ZXMuYXBwZW5kKCcgICAgW18lc0hhbmRsZXIgcmVsZWFzZV07JyAlIE9iakNHZW5lcmF0b3IudmFy
aWFibGVfbmFtZV9wcmVmaXhfZm9yX2RvbWFpbihkb21haW4pKQotICAgICAgICAgICAgaWYgc2Vs
Zi5zaG91bGRfZ2VuZXJhdGVfZXZlbnRzX2Zvcl9kb21haW4oZG9tYWluKToKLSAgICAgICAgICAg
ICAgICBkb21haW5fbGluZXMuYXBwZW5kKCcgICAgW18lc0V2ZW50RGlzcGF0Y2hlciByZWxlYXNl
XTsnICUgT2JqQ0dlbmVyYXRvci52YXJpYWJsZV9uYW1lX3ByZWZpeF9mb3JfZG9tYWluKGRvbWFp
bikpCisgICAgICAgICAgICAgICAgZG9tYWluX2xpbmVzLmFwcGVuZCgnICAgIFJldGFpblB0cjwl
cz4gJXM7JyAlIChvYmpjX2NsYXNzX25hbWUsIGl2YXJfbmFtZSkpCiAgICAgICAgICAgICBpZiBs
ZW4oZG9tYWluX2xpbmVzKToKICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoc2VsZi53cmFw
X3dpdGhfZ3VhcmRfZm9yX2NvbmRpdGlvbihkb21haW4uY29uZGl0aW9uLCAnXG4nLmpvaW4oZG9t
YWluX2xpbmVzKSkpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIFtzdXBlciBkZWFsbG9jXTsn
KQotICAgICAgICBsaW5lcy5hcHBlbmQoJ30nKQogICAgICAgICByZXR1cm4gbGluZXMKIAogICAg
IGRlZiBfZ2VuZXJhdGVfaGFuZGxlcl9zZXR0ZXJfZm9yX2RvbWFpbihzZWxmLCBkb21haW4pOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CmluZGV4
IDczOTMyOTRjYzZmOGUwOTM4ZGM0NDhkZGYzMzc0NDJjNjgzZGYyMmMuLmY4NmZiZTk1MTVhOWQy
YzdlYzhiNTllMGVhYjlkMjFkNDk3ZDk1ZmYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5w
eQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9v
YmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKQEAgLTE0MSw4ICsxNDEsNyBAQCAke2ludm9jYXRp
b259CiAgICAgaWYgKGhhbmRsZXIgPT0gXyR7dmFyaWFibGVOYW1lUHJlZml4fUhhbmRsZXIpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFtfJHt2YXJpYWJsZU5hbWVQcmVmaXh9SGFuZGxlciByZWxl
YXNlXTsKLSAgICBfJHt2YXJpYWJsZU5hbWVQcmVmaXh9SGFuZGxlciA9IFtoYW5kbGVyIHJldGFp
bl07CisgICAgXyR7dmFyaWFibGVOYW1lUHJlZml4fUhhbmRsZXIgPSBoYW5kbGVyOwogCiAgICAg
YXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yJHtkb21h
aW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKICAgICBhdXRvIGFsdGVybmF0ZUFn
ZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDwke2RvbWFpbk5hbWV9
QmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZSR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hl
cj4+KCIke2RvbWFpbk5hbWV9Il9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlz
cGF0Y2hlcikpOwpAQCAtMTUxLDEzICsxNTAsMTMgQEAgJHtpbnZvY2F0aW9ufQogCiAtIChpZDwk
e29iamNQcmVmaXh9JHtkb21haW5OYW1lfURvbWFpbkhhbmRsZXI+KSR7dmFyaWFibGVOYW1lUHJl
Zml4fUhhbmRsZXIKIHsKLSAgICByZXR1cm4gXyR7dmFyaWFibGVOYW1lUHJlZml4fUhhbmRsZXI7
CisgICAgcmV0dXJuIF8ke3ZhcmlhYmxlTmFtZVByZWZpeH1IYW5kbGVyLmdldCgpOwogfSIiIikK
IAogICAgIENvbmZpZ3VyYXRpb25HZXR0ZXJJbXBsZW1lbnRhdGlvbiA9ICgKICAgICAiIiItICgk
e29iamNQcmVmaXh9JHtkb21haW5OYW1lfURvbWFpbkV2ZW50RGlzcGF0Y2hlciAqKSR7dmFyaWFi
bGVOYW1lUHJlZml4fUV2ZW50RGlzcGF0Y2hlcgogewogICAgIGlmICghXyR7dmFyaWFibGVOYW1l
UHJlZml4fUV2ZW50RGlzcGF0Y2hlcikKLSAgICAgICAgXyR7dmFyaWFibGVOYW1lUHJlZml4fUV2
ZW50RGlzcGF0Y2hlciA9IFtbJHtvYmpjUHJlZml4fSR7ZG9tYWluTmFtZX1Eb21haW5FdmVudERp
c3BhdGNoZXIgYWxsb2NdIGluaXRXaXRoQ29udHJvbGxlcjpfY29udHJvbGxlcl07Ci0gICAgcmV0
dXJuIF8ke3ZhcmlhYmxlTmFtZVByZWZpeH1FdmVudERpc3BhdGNoZXI7CisgICAgICAgIF8ke3Zh
cmlhYmxlTmFtZVByZWZpeH1FdmVudERpc3BhdGNoZXIgPSBhZG9wdE5TKFtbJHtvYmpjUHJlZml4
fSR7ZG9tYWluTmFtZX1Eb21haW5FdmVudERpc3BhdGNoZXIgYWxsb2NdIGluaXRXaXRoQ29udHJv
bGxlcjpfY29udHJvbGxlcl0pOworICAgIHJldHVybiBfJHt2YXJpYWJsZU5hbWVQcmVmaXh9RXZl
bnREaXNwYXRjaGVyLmdldCgpOwogfSIiIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9v
YmpjX2luc3RhbmNlLm1tCmluZGV4IGY3ZmYzNjJjOWVmZmQzN2ExMjI5ZDYzN2ZiNTIxMjExNTU1
ZDU1YjYuLjZmNWJkMWE2Y2E4NmVmZGMxZmEzM2YxMzQ5ZjZhNzFlNDI2OGZlNjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQpAQCAtNzIsOSArNzIsOCBA
QCBSdW50aW1lT2JqZWN0KiBPYmpjSW5zdGFuY2U6Om5ld1J1bnRpbWVPYmplY3QoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplYwogCiB2b2lkIE9iamNJbnN0YW5jZTo6c2V0R2xvYmFs
RXhjZXB0aW9uKE5TU3RyaW5nKiBleGNlcHRpb24sIEpTR2xvYmFsT2JqZWN0KiBleGNlcHRpb25F
bnZpcm9ubWVudCkKIHsKLSAgICBOU1N0cmluZyAqb2xkRXhjZXB0aW9uID0gc19leGNlcHRpb247
CisgICAgYXV0byBvbGRFeGNlcHRpb24gPSBhZG9wdE5TKHNfZXhjZXB0aW9uKTsKICAgICBzX2V4
Y2VwdGlvbiA9IFtleGNlcHRpb24gY29weV07Ci0gICAgW29sZEV4Y2VwdGlvbiByZWxlYXNlXTsK
IAogICAgIHNfZXhjZXB0aW9uRW52aXJvbm1lbnQgPSBleGNlcHRpb25FbnZpcm9ubWVudDsKIH0K
QEAgLTk0LDkgKzkzLDggQEAgdm9pZCBPYmpjSW5zdGFuY2U6Om1vdmVHbG9iYWxFeGNlcHRpb25U
b0V4ZWNTdGF0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE8KICAgICAgICAgdGhyb3dF
cnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgc19leGNlcHRpb24pOwogICAgIH0KIAot
ICAgIFtzX2V4Y2VwdGlvbiByZWxlYXNlXTsKLSAgICBzX2V4Y2VwdGlvbiA9IG5pbDsKLSAgICBz
X2V4Y2VwdGlvbkVudmlyb25tZW50ID0gMDsKKyAgICBhdXRvIGV4Y2VwdGlvbiA9IGFkb3B0TlMo
c3RkOjpleGNoYW5nZShzX2V4Y2VwdGlvbiwgbmlsKSk7CisgICAgc19leGNlcHRpb25FbnZpcm9u
bWVudCA9IG51bGxwdHI7CiB9CiAKIE9iamNJbnN0YW5jZTo6T2JqY0luc3RhbmNlKGlkIGluc3Rh
bmNlLCBSZWZQdHI8Um9vdE9iamVjdD4mJiByb290T2JqZWN0KSAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
dGVzdGJpbmRpbmdzLm1tCmluZGV4IGM1OTBkNDkzMDc5ZmJlN2Q2MzFmNGIwNTk1ZDZiNDYyYzY1
MTk1OTUuLjRhYzg1NDBiNmZhNzYxMzQ2OTM1ODA4MWExNWExOGE4YjAyMmIxMzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5tbQpAQCAtNjQsNyArNjQsNyBAQCBAZW5kCiBAaW50
ZXJmYWNlIE15Rmlyc3RJbnRlcmZhY2UgOiBOU09iamVjdAogewogICAgIGludCBteUludDsKLSAg
ICBNeVNlY29uZEludGVyZmFjZSAqbXlTZWNvbmRJbnRlcmZhY2U7CisgICAgUmV0YWluUHRyPE15
U2Vjb25kSW50ZXJmYWNlPiBteVNlY29uZEludGVyZmFjZTsKICAgICBpZCBqc29iamVjdDsKICAg
ICBOU1N0cmluZyAqc3RyaW5nOwogfQpAQCAtMTI4LDE3ICsxMjgsMTAgQEAgLSAodm9pZClzZXRW
YWx1ZTooaWQpdmFsdWUgZm9yVW5kZWZpbmVkS2V5OihOU1N0cmluZyAqKWtleQogLSBpbml0CiB7
CiAgICAgTE9HICgiXG4iKTsKLSAgICBteVNlY29uZEludGVyZmFjZSA9IFtbTXlTZWNvbmRJbnRl
cmZhY2UgYWxsb2NdIGluaXRdOworICAgIG15U2Vjb25kSW50ZXJmYWNlID0gYWRvcHROUyhbW015
U2Vjb25kSW50ZXJmYWNlIGFsbG9jXSBpbml0XSk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0g
KHZvaWQpZGVhbGxvYwotewotICAgIExPRyAoIlxuIik7Ci0gICAgW215U2Vjb25kSW50ZXJmYWNl
IHJlbGVhc2VdOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQogLSAoaW50KWdldEludCAKIHsK
ICAgICBMT0cgKCJteUludCA9ICVkXG4iLCBteUludCk7CkBAIC0xNTksNyArMTUyLDcgQEAgLSAo
TlNTdHJpbmcgKilnZXRTdHJpbmcKIC0gKE15U2Vjb25kSW50ZXJmYWNlICopZ2V0TXlTZWNvbmRJ
bnRlcmZhY2UgCiB7CiAgICAgTE9HICgiXG4iKTsKLSAgICByZXR1cm4gbXlTZWNvbmRJbnRlcmZh
Y2U7CisgICAgcmV0dXJuIG15U2Vjb25kSW50ZXJmYWNlLmdldCgpOwogfQogCiAtICh2b2lkKWxv
Z01lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L3dhay9XQUtWaWV3Lm1tCmluZGV4IGYyNDM1YmYzYjE2MGRmODgwOTM3ZDIyZTMyMWEzZDliNTQ1
MGVlNDkuLmY2YTc1NDU2N2Y1Y2FkYzg4MTc3NzI1N2JmMzJiZWU3MDQ1ZDk1NjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW0KQEAgLTM4LDIxICszOCwyMiBA
QAogI2ltcG9ydCAiV2ViQ29yZVRocmVhZE1lc3NhZ2UuaCIKICNpbXBvcnQgIldlYkV2ZW50Lmgi
CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAKIFdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICpXQUtWaWV3RnJhbWVTaXplRGlkQ2hhbmdl
Tm90aWZpY2F0aW9uID0gICBAIldBS1ZpZXdGcmFtZVNpemVEaWRDaGFuZ2VOb3RpZmljYXRpb24i
OwogV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcgKldBS1ZpZXdEaWRTY3JvbGxOb3RpZmljYXRpb24g
PSAgICAgICAgICAgIEAiV0FLVmlld0RpZFNjcm9sbE5vdGlmaWNhdGlvbiI7CiAKLXN0YXRpYyBX
QUtWaWV3ICpnbG9iYWxGb2N1c1ZpZXcgPSBuaWw7CitzdGF0aWMgUmV0YWluUHRyPFdBS1ZpZXc+
JiBnbG9iYWxGb2N1c1ZpZXcoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5Q
dHI8V0FLVmlldz4+IF9nbG9iYWxGb2N1c1ZpZXc7CisgICAgcmV0dXJuIF9nbG9iYWxGb2N1c1Zp
ZXc7Cit9CisKIHN0YXRpYyBDR0ludGVycG9sYXRpb25RdWFsaXR5IHNJbnRlcnBvbGF0aW9uUXVh
bGl0eTsKIAogc3RhdGljIHZvaWQgc2V0R2xvYmFsRm9jdXNWaWV3KFdBS1ZpZXcgKnZpZXcpCiB7
Ci0gICAgaWYgKHZpZXcgPT0gZ2xvYmFsRm9jdXNWaWV3KQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBbdmlldyByZXRhaW5dOwotICAgIFtnbG9iYWxGb2N1c1ZpZXcgcmVsZWFzZV07Ci0gICAgZ2xv
YmFsRm9jdXNWaWV3ID0gdmlldzsKKyAgICBnbG9iYWxGb2N1c1ZpZXcoKSA9IHZpZXc7CiB9CiAK
IHN0YXRpYyBXQUtTY3JvbGxWaWV3ICplbmNsb3NpbmdTY3JvbGxWaWV3KFdBS1ZpZXcgKnZpZXcp
CkBAIC00MDcsNyArNDA4LDcgQEAgLSAodm9pZCl2aWV3V2lsbERyYXcKIAogKyAoV0FLVmlldyAq
KWZvY3VzVmlldwogewotICAgIHJldHVybiBnbG9iYWxGb2N1c1ZpZXc7CisgICAgcmV0dXJuIGds
b2JhbEZvY3VzVmlldygpLmdldCgpOwogfQogCiAtIChOU1JlY3QpYm91bmRzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1dpbmRvdy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lm1tCmluZGV4IDFlNGJkZmY4YmIyNDVl
MWQ2NzYxYTdhOGYxYzk0OWJiYWFjMDg3NDkuLjc3YTk1MDlkMGE3NGZhZmMxYjAyODY4ODVkMGMz
OWIxMmNlYWI3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsv
V0FLV2luZG93Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2lu
ZG93Lm1tCkBAIC0zMzcsNyArMzM3LDggQEAgLSAodm9pZClzZW5kRXZlbnRTeW5jaHJvbm91c2x5
OihXZWJFdmVudCAqKWFuRXZlbnQKICAgICBBU1NFUlQoYW5FdmVudCk7CiAgICAgQVNTRVJUKFdl
YlRocmVhZElzTG9ja2VkT3JEaXNhYmxlZCgpKTsKICAgICBXZWJFdmVudCAqbGFzdEV2ZW50ID0g
Y3VycmVudEV2ZW50OwotICAgIGN1cnJlbnRFdmVudCA9IFthbkV2ZW50IHJldGFpbl07CisgICAg
YXV0byBjdXJyZW50RXZlbnRQcm90ZWN0b3IgPSByZXRhaW5QdHIoYW5FdmVudCk7CisgICAgY3Vy
cmVudEV2ZW50ID0gYW5FdmVudDsKIAogICAgIHN3aXRjaCAoYW5FdmVudC50eXBlKSB7CiAgICAg
Y2FzZSBXZWJFdmVudE1vdXNlTW92ZWQ6CkBAIC0zNjQsNyArMzY1LDYgQEAgLSAodm9pZClzZW5k
RXZlbnRTeW5jaHJvbm91c2x5OihXZWJFdmVudCAqKWFuRXZlbnQKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCi0gICAgW2N1cnJlbnRFdmVudCByZWxlYXNlXTsKICAgICBjdXJyZW50RXZlbnQgPSBs
YXN0RXZlbnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93
YWsvV2ViQ29yZVRocmVhZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2Vi
Q29yZVRocmVhZC5tbQppbmRleCBmYWVkOTI0MmY4MjJjMTc4YjQ0MWQzMTk1MmE4ZjUyMmE1Yjcx
NjYxLi5mNTQwZGUwNzVjZGZjMGQ5MTAwZmU5YTczMTU3OGJkYzU1N2VkYzY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCkBAIC0yODAs
MTggKzI4MCwxNSBAQCB2b2lkIFdlYlRocmVhZFJ1bk9uTWFpblRocmVhZCh2b2lkKF5kZWxlZ2F0
ZUJsb2NrKSgpKQogCiBzdGF0aWMgdm9pZCBNYWluVGhyZWFkQWRvcHRBbmRSZWxlYXNlKGlkIG9i
aikKIHsKLSAgICBpZiAoIVdlYlRocmVhZElzRW5hYmxlZCgpIHx8IENGUnVuTG9vcEdldE1haW4o
KSA9PSBDRlJ1bkxvb3BHZXRDdXJyZW50KCkpIHsKLSAgICAgICAgW29iaiByZWxlYXNlXTsKKyAg
ICBhdXRvIGFkb3B0ZWRPYmogPSBhZG9wdE5TKG9iaik7CisgICAgaWYgKCFXZWJUaHJlYWRJc0Vu
YWJsZWQoKSB8fCBDRlJ1bkxvb3BHZXRNYWluKCkgPT0gQ0ZSdW5Mb29wR2V0Q3VycmVudCgpKQog
ICAgICAgICByZXR1cm47Ci0gICAgfQogI2lmIExPR19SRUxFQVNFUwogICAgIE5TTG9nKEAiUmVs
ZWFzZSBzZW5kIFt3ZWIgdGhyZWFkXSA6ICVAIiwgb2JqKTsKICNlbmRpZgogICAgIC8vIFdlIG93
biBvYmogYXQgdGhpcyBwb2ludCwgc28gd2UgZG9uJ3QgbmVlZCB0aGUgYmxvY2sgdG8gaW1wbGlj
aXRseQogICAgIC8vIHJldGFpbiBpdC4KLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW29i
al0gewotICAgICAgICBbb2JqIHJlbGVhc2VdOwotICAgIH0pOworICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbYWRvcHRlZE9iaiA9IFdURk1vdmUoYWRvcHRlZE9iaildIHsgfSk7CiB9CiAK
IHZvaWQgV2ViVGhyZWFkQWRvcHRBbmRSZWxlYXNlKGlkIG9iaikKQEAgLTQwMiwxMSArMzk5LDEx
IEBAIHN0YXRpYyB2b2lkIEhhbmRsZVdlYlRocmVhZFJlbGVhc2VTb3VyY2Uodm9pZCopCiB7CiAg
ICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKIAotICAgIENGTXV0YWJsZUFycmF5UmVm
IG9iamVjdHMgPSBudWxscHRyOworICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4gb2Jq
ZWN0czsKICAgICB7CiAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod2ViVGhyZWFkUmVs
ZWFzZUxvY2spOwogICAgICAgICBpZiAoQ0ZBcnJheUdldENvdW50KFdlYlRocmVhZFJlbGVhc2VP
YmpBcnJheSkpIHsKLSAgICAgICAgICAgIG9iamVjdHMgPSBDRkFycmF5Q3JlYXRlTXV0YWJsZUNv
cHkobnVsbHB0ciwgMCwgV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5KTsKKyAgICAgICAgICAgIG9i
amVjdHMgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlQ29weShudWxscHRyLCAwLCBXZWJU
aHJlYWRSZWxlYXNlT2JqQXJyYXkpKTsKICAgICAgICAgICAgIENGQXJyYXlSZW1vdmVBbGxWYWx1
ZXMoV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5KTsKICAgICAgICAgfQogICAgIH0KQEAgLTQxNCwx
NSArNDExLDEyIEBAIHN0YXRpYyB2b2lkIEhhbmRsZVdlYlRocmVhZFJlbGVhc2VTb3VyY2Uodm9p
ZCopCiAgICAgaWYgKCFvYmplY3RzKQogICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwLCBjb3VudCA9IENGQXJyYXlHZXRDb3VudChvYmplY3RzKTsgaSA8IGNvdW50OyAr
K2kpIHsKLSAgICAgICAgaWQgb2JqID0gKGlkKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgob2JqZWN0
cywgaSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgY291bnQgPSBDRkFycmF5R2V0Q291bnQo
b2JqZWN0cy5nZXQoKSk7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIGF1dG8gb2JqID0gYWRv
cHRDRihDRkFycmF5R2V0VmFsdWVBdEluZGV4KG9iamVjdHMuZ2V0KCksIGkpKTsKICNpZiBMT0df
UkVMRUFTRVMKLSAgICAgICAgTlNMb2coQCJSZWxlYXNlIHJlY3YgW3dlYiB0aHJlYWRdIDogJUAi
LCBvYmopOworICAgICAgICBOU0xvZyhAIlJlbGVhc2UgcmVjdiBbd2ViIHRocmVhZF0gOiAlQCIs
IG9iai5nZXQoKSk7CiAjZW5kaWYKLSAgICAgICAgW29iaiByZWxlYXNlXTsKICAgICB9Ci0KLSAg
ICBDRlJlbGVhc2Uob2JqZWN0cyk7CiB9CiAKIHZvaWQgV2ViVGhyZWFkQ2FsbERlbGVnYXRlKE5T
SW52b2NhdGlvbiogaW52b2NhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3Rv
cnkvV2ViSGlzdG9yeS5tbQppbmRleCA5YTY2NjgzZjZlMzJjNDQ4NjA5OWNlNWM5NTdiOWMwNzJj
OWNmNTQ2Li5jN2Y0NWFjNWUwM2UwNTI0YWU5ZTkwNGZmNjExMjExMmI5NTJjODczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCkBAIC01NSw3ICs1
NSwxMSBAQCBOU1N0cmluZyAqV2ViSGlzdG9yeUl0ZW1zRGlzY2FyZGVkV2hpbGVMb2FkaW5nTm90
aWZpY2F0aW9uID0gQCJXZWJIaXN0b3J5SXRlbXNEaQogTlNTdHJpbmcgKldlYkhpc3RvcnlTYXZl
ZE5vdGlmaWNhdGlvbiA9IEAiV2ViSGlzdG9yeVNhdmVkTm90aWZpY2F0aW9uIjsKIE5TU3RyaW5n
ICpXZWJIaXN0b3J5SXRlbXNLZXkgPSBAIldlYkhpc3RvcnlJdGVtcyI7CiAKLXN0YXRpYyBXZWJI
aXN0b3J5ICpfc2hhcmVkSGlzdG9yeSA9IG5pbDsKK3N0YXRpYyBSZXRhaW5QdHI8V2ViSGlzdG9y
eT4mIHNoYXJlZEhpc3RvcnkoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5Q
dHI8V2ViSGlzdG9yeT4+IF9zaGFyZWRIaXN0b3J5OworICAgIHJldHVybiBfc2hhcmVkSGlzdG9y
eTsKK30KIAogTlNTdHJpbmcgKkZpbGVWZXJzaW9uS2V5ID0gQCJXZWJIaXN0b3J5RmlsZVZlcnNp
b24iOwogTlNTdHJpbmcgKkRhdGVzQXJyYXlLZXkgPSBAIldlYkhpc3RvcnlEYXRlcyI7CkBAIC02
NTEsMTcgKzY1NSwxNiBAQCBAaW1wbGVtZW50YXRpb24gV2ViSGlzdG9yeQogCiArIChXZWJIaXN0
b3J5ICopb3B0aW9uYWxTaGFyZWRIaXN0b3J5CiB7Ci0gICAgcmV0dXJuIF9zaGFyZWRIaXN0b3J5
OworICAgIHJldHVybiBzaGFyZWRIaXN0b3J5KCkuZ2V0KCk7CiB9CiAKICsgKHZvaWQpc2V0T3B0
aW9uYWxTaGFyZWRIaXN0b3J5OihXZWJIaXN0b3J5ICopaGlzdG9yeQogewotICAgIGlmIChfc2hh
cmVkSGlzdG9yeSA9PSBoaXN0b3J5KQorICAgIGlmIChzaGFyZWRIaXN0b3J5KCkgPT0gaGlzdG9y
eSkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBOZWVkIHRvIHRoaW5rIGFib3V0IG11
bHRpcGxlIGluc3RhbmNlcyBvZiBXZWJIaXN0b3J5IHBlciBhcHBsaWNhdGlvbgogICAgIC8vIGFu
ZCBjb3JyZWN0IHN5bmNocm9uaXphdGlvbiBvZiBoaXN0b3J5IGZpbGUgYmV0d2VlbiBhcHBsaWNh
dGlvbnMuCi0gICAgW19zaGFyZWRIaXN0b3J5IHJlbGVhc2VdOwotICAgIF9zaGFyZWRIaXN0b3J5
ID0gW2hpc3RvcnkgcmV0YWluXTsKKyAgICBzaGFyZWRIaXN0b3J5KCkgPSBoaXN0b3J5OwogCiAg
ICAgV2ViVmlzaXRlZExpbmtTdG9yZTo6c2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlua3MoaGlzdG9y
eSk7CiAgICAgV2ViVmlzaXRlZExpbmtTdG9yZTo6cmVtb3ZlQWxsVmlzaXRlZExpbmtzKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkRhdGFi
YXNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5EYXRhYmFz
ZS5tbQppbmRleCBkYTA0ODY5ZGRjMTVhNDZkMDVmOWI2ZTllNjYwNzI5NGRkYWQ5ZjFjLi42ZTI4
NzJkMmMzYzM3MDViMzQxNTdlODMyODMyNWYwODQxZWM3M2M1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkRhdGFiYXNlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luRGF0YWJhc2UubW0KQEAgLTE4NSwx
NSArMTg1LDE4IEBAIC0gKE5TQXJyYXkgKilwbHVnaW5zCiAgICAgcmV0dXJuIFtwbHVnaW5zIGFs
bFZhbHVlc107CiB9CiAKLXN0YXRpYyBOU0FycmF5ICphZGRpdGlvbmFsV2ViUGx1Z0luUGF0aHM7
CitzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+JiBhZGRpdGlvbmFsV2ViUGx1Z0luUGF0aHMoKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IF9hZGRpdGlv
bmFsV2ViUGx1Z0luUGF0aHM7CisgICAgcmV0dXJuIF9hZGRpdGlvbmFsV2ViUGx1Z0luUGF0aHM7
Cit9CiAKICsgKHZvaWQpc2V0QWRkaXRpb25hbFdlYlBsdWdJblBhdGhzOihOU0FycmF5ICopYWRk
aXRpb25hbFBhdGhzCiB7Ci0gICAgaWYgKGFkZGl0aW9uYWxQYXRocyA9PSBhZGRpdGlvbmFsV2Vi
UGx1Z0luUGF0aHMpCisgICAgaWYgKGFkZGl0aW9uYWxQYXRocyA9PSBhZGRpdGlvbmFsV2ViUGx1
Z0luUGF0aHMoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFthZGRpdGlvbmFsV2ViUGx1
Z0luUGF0aHMgcmVsZWFzZV07Ci0gICAgYWRkaXRpb25hbFdlYlBsdWdJblBhdGhzID0gW2FkZGl0
aW9uYWxQYXRocyBjb3B5XTsKKyAgICBhZGRpdGlvbmFsV2ViUGx1Z0luUGF0aHMoKSA9IGFkb3B0
TlMoW2FkZGl0aW9uYWxQYXRocyBjb3B5XSk7CiAKICAgICAvLyBPbmUgbWlnaHQgYmUgdGVtcHRl
ZCB0byBhZGQgYWRkaXRpb25hbFdlYlBsdWdJblBhdGhzIHRvIHRoZSBnbG9iYWwgV2ViUGx1Z2lu
RGF0YWJhc2UgaGVyZS4KICAgICAvLyBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIGVh
cmxpZXIgdmVyc2lvbnMgb2YgdGhlICtzZXRBZGRpdGlvbmFsV2ViUGx1Z0luUGF0aHM6IFNQSSwK
QEAgLTQxMSwxNiArNDE0LDE2IEBAICsgKE5TQXJyYXkgKilfZGVmYXVsdFBsdWdJblBhdGhzCiAK
IC0gKE5TQXJyYXkgKilfcGx1Z0luUGF0aHMKIHsKLSAgICBpZiAoc2VsZiA9PSBzaGFyZWREYXRh
YmFzZSAmJiBhZGRpdGlvbmFsV2ViUGx1Z0luUGF0aHMpIHsKKyAgICBpZiAoc2VsZiA9PSBzaGFy
ZWREYXRhYmFzZSAmJiBhZGRpdGlvbmFsV2ViUGx1Z0luUGF0aHMoKSkgewogICAgICAgICAvLyBB
ZGQgYWRkaXRpb25hbFdlYlBsdWdJblBhdGhzIHRvIHRoZSBnbG9iYWwgV2ViUGx1Z2luRGF0YWJh
c2UuICBXZSBkbyB0aGlzIGhlcmUgZm9yCiAgICAgICAgIC8vIGJhY2t3YXJkIGNvbXBhdGliaWxp
dHkgd2l0aCBlYXJsaWVyIHZlcnNpb25zIG9mIHRoZSArc2V0QWRkaXRpb25hbFdlYlBsdWdJblBh
dGhzOiBTUEksCiAgICAgICAgIC8vIHdoaWNoIHNpbXBseSBzYXZlZCBhIGNvcHkgb2YgdGhlIGFk
ZGl0aW9uYWwgcGF0aHMgYW5kIGRpZCBub3QgY2F1c2UgdGhlIHBsdWdpbiBEQiB0byAKICAgICAg
ICAgLy8gcmVmcmVzaC4gIFNlZSBSYWRhcnMgNDYwODQ4NyBhbmQgNDYwOTA0Ny4KICAgICAgICAg
TlNNdXRhYmxlQXJyYXkgKm1vZGlmaWVkUGx1Z0luUGF0aHMgPSBbW3BsdWdJblBhdGhzIG11dGFi
bGVDb3B5XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIFttb2RpZmllZFBsdWdJblBhdGhzIGFkZE9i
amVjdHNGcm9tQXJyYXk6YWRkaXRpb25hbFdlYlBsdWdJblBhdGhzXTsKKyAgICAgICAgW21vZGlm
aWVkUGx1Z0luUGF0aHMgYWRkT2JqZWN0c0Zyb21BcnJheTphZGRpdGlvbmFsV2ViUGx1Z0luUGF0
aHMoKS5nZXQoKV07CiAgICAgICAgIHJldHVybiBtb2RpZmllZFBsdWdJblBhdGhzOwotICAgIH0g
ZWxzZQotICAgICAgICByZXR1cm4gcGx1Z0luUGF0aHM7CisgICAgfQorICAgIHJldHVybiBwbHVn
SW5QYXRoczsKIH0KIAogLSAodm9pZClfYWRkUGx1Z2luOihXZWJCYXNlUGx1Z2luUGFja2FnZSAq
KXBsdWdpbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4IGZmODYzMDg2OWFlZTgzMzBmNzBhODdhODAw
ZjM1Mjc2Y2Y5Nzc4YTcuLjMxYWFjMTliNDgxZmIwNmU5YzEyNWEyNDUxMTc2ZWExZDI4ZWFjZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQubW0KQEAgLTEwMzQsOSArMTAzNCw4IEBAIHZvaWQgV2ViQ2hyb21l
Q2xpZW50OjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAg
ICAgU0VMIHNlbGVjdG9yID0gQHNlbGVjdG9yKHdlYlZpZXc6ZW50ZXJGdWxsU2NyZWVuRm9yRWxl
bWVudDpsaXN0ZW5lcjopOwogICAgIGlmIChbW21fd2ViVmlldyBVSURlbGVnYXRlXSByZXNwb25k
c1RvU2VsZWN0b3I6c2VsZWN0b3JdKSB7Ci0gICAgICAgIFdlYktpdEZ1bGxTY3JlZW5MaXN0ZW5l
ciogbGlzdGVuZXIgPSBbW1dlYktpdEZ1bGxTY3JlZW5MaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhF
bGVtZW50OiZlbGVtZW50XTsKLSAgICAgICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBzZWxl
Y3Rvciwga2l0KCZlbGVtZW50KSwgbGlzdGVuZXIpOwotICAgICAgICBbbGlzdGVuZXIgcmVsZWFz
ZV07CisgICAgICAgIGF1dG8gbGlzdGVuZXIgPSBhZG9wdE5TKFtbV2ViS2l0RnVsbFNjcmVlbkxp
c3RlbmVyIGFsbG9jXSBpbml0V2l0aEVsZW1lbnQ6JmVsZW1lbnRdKTsKKyAgICAgICAgQ2FsbFVJ
RGVsZWdhdGUobV93ZWJWaWV3LCBzZWxlY3Rvciwga2l0KCZlbGVtZW50KSwgbGlzdGVuZXIuZ2V0
KCkpOwogICAgIH0KICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDg5Mzg3MGE1NDViOWI3NTRmNDFkNGI2YzU2Yjk1MTNi
MTQ2OGQ2OTAuLjJhYThjMzlhNDAzOTZiZmMxODEwNDQzNjlhM2M2MjBjMzRlMDgwNDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xMDM0LDE1ICsxMDM0LDE0IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnkoKQogICAgIGlmIChbdmlldyBo
aXN0b3J5RGVsZWdhdGVdKSB7CiAgICAgICAgIFdlYkhpc3RvcnlEZWxlZ2F0ZUltcGxlbWVudGF0
aW9uQ2FjaGUqIGltcGxlbWVudGF0aW9ucyA9IFdlYlZpZXdHZXRIaXN0b3J5RGVsZWdhdGVJbXBs
ZW1lbnRhdGlvbnModmlldyk7CiAgICAgICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPm5hdmlnYXRl
ZEZ1bmMpIHsKLSAgICAgICAgICAgIFdlYk5hdmlnYXRpb25EYXRhICpkYXRhID0gW1tXZWJOYXZp
Z2F0aW9uRGF0YSBhbGxvY10gaW5pdFdpdGhVUkxTdHJpbmc6bG9hZGVyLT51cmwoKS5zdHJpbmco
KQorICAgICAgICAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW1dlYk5hdmlnYXRpb25EYXRhIGFs
bG9jXSBpbml0V2l0aFVSTFN0cmluZzpsb2FkZXItPnVybCgpLnN0cmluZygpCiAgICAgICAgICAg
ICAgICAgdGl0bGU6bmlsT3JOU1N0cmluZyhsb2FkZXItPnRpdGxlKCkuc3RyaW5nKQogICAgICAg
ICAgICAgICAgIG9yaWdpbmFsUmVxdWVzdDpsb2FkZXItPm9yaWdpbmFsUmVxdWVzdENvcHkoKS5u
c1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OlVwZGF0ZUhUVFBCb2R5
KQogICAgICAgICAgICAgICAgIHJlc3BvbnNlOmxvYWRlci0+cmVzcG9uc2UoKS5uc1VSTFJlc3Bv
bnNlKCkKICAgICAgICAgICAgICAgICBoYXNTdWJzdGl0dXRlRGF0YTpsb2FkZXItPnN1YnN0aXR1
dGVEYXRhKCkuaXNWYWxpZCgpCi0gICAgICAgICAgICAgICAgY2xpZW50UmVkaXJlY3RTb3VyY2U6
bG9hZGVyLT5jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkoKV07CisgICAgICAgICAgICAg
ICAgY2xpZW50UmVkaXJlY3RTb3VyY2U6bG9hZGVyLT5jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhp
c3RvcnkoKV0pOwogCi0gICAgICAgICAgICBDYWxsSGlzdG9yeURlbGVnYXRlKGltcGxlbWVudGF0
aW9ucy0+bmF2aWdhdGVkRnVuYywgdmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkTmF2aWdhdGVX
aXRoTmF2aWdhdGlvbkRhdGE6aW5GcmFtZTopLCBkYXRhLCBtX3dlYkZyYW1lLmdldCgpKTsKLSAg
ICAgICAgICAgIFtkYXRhIHJlbGVhc2VdOworICAgICAgICAgICAgQ2FsbEhpc3RvcnlEZWxlZ2F0
ZShpbXBsZW1lbnRhdGlvbnMtPm5hdmlnYXRlZEZ1bmMsIHZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3
OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhOmluRnJhbWU6KSwgZGF0YS5nZXQoKSwgbV93
ZWJGcmFtZS5nZXQoKSk7CiAgICAgICAgIH0KICAgICAKICAgICAgICAgcmV0dXJuOwpAQCAtMTgw
MCw4ICsxNzk5LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoWyhXZWJCYXNlTmV0c2NhcGVQbHVn
aW5WaWV3ICopcGxhdGZvcm1XaWRnZXQoKSBnZXRGb3JtVmFsdWU6Jm5zVmFsdWVdKSB7CiAgICAg
ICAgICAgICBpZiAoIW5zVmFsdWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgdmFsdWUgPSBTdHJpbmcobnNWYWx1ZSk7Ci0gICAgICAgICAgICBbbnNWYWx1ZSBy
ZWxlYXNlXTsKKyAgICAgICAgICAgIHZhbHVlID0gU3RyaW5nKGFkb3B0TlMobnNWYWx1ZSkuZ2V0
KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViSW5zcGVjdG9y
L1dlYk5vZGVIaWdobGlnaHRWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViSW5z
cGVjdG9yL1dlYk5vZGVIaWdobGlnaHRWaWV3Lm1tCmluZGV4IDE3MjdjNjdmMzk0NGYyZDZmZTI4
OGZiODg3YzUxNGEyN2EzN2QzYzQuLjIwZjE5ZjBiYzRiYjQ4ZGQyZGU1OTA2ZDllMjdlM2IzYzM0
YzI1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkluc3BlY3Rvci9X
ZWJOb2RlSGlnaGxpZ2h0Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJJ
bnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodFZpZXcubW0KQEAgLTExNSwxMCArMTE1LDkgQEAgLSAo
dm9pZClfYXR0YWNoOihDQUxheWVyICopcGFyZW50IG51bUxheWVyczooTlNVSW50ZWdlciludW1M
YXllcnMKICAgICAvLyBSZW1vdmUgYW5kIGNyZWF0ZSBuZXcgbGF5ZXJzLgogICAgIFtzZWxmIF9y
ZW1vdmVBbGxMYXllcnNdOwogICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IG51bUxheWVy
czsgKytpKSB7Ci0gICAgICAgIENBU2hhcGVMYXllciAqbGF5ZXIgPSBbW0NBU2hhcGVMYXllciBh
bGxvY10gaW5pdF07Ci0gICAgICAgIFtfbGF5ZXJzIGFkZE9iamVjdDpsYXllcl07Ci0gICAgICAg
IFtwYXJlbnQgYWRkU3VibGF5ZXI6bGF5ZXJdOwotICAgICAgICBbbGF5ZXIgcmVsZWFzZV07Cisg
ICAgICAgIGF1dG8gbGF5ZXIgPSBhZG9wdE5TKFtbQ0FTaGFwZUxheWVyIGFsbG9jXSBpbml0XSk7
CisgICAgICAgIFtfbGF5ZXJzIGFkZE9iamVjdDpsYXllci5nZXQoKV07CisgICAgICAgIFtwYXJl
bnQgYWRkU3VibGF5ZXI6bGF5ZXIuZ2V0KCldOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQppbmRleCA5NGUwYzkyZTFkMjNk
NzVlZjEyZTc3NTlhOTljMzRjODFmNWJjZDA0Li42NGRkNzJlYmFiOThlZWIxYTJmMDZiMjRhNmNm
OWVlNWMxNDFiYjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkZyYW1lVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkZyYW1lVmlldy5tbQpAQCAtMTg5LDIzICsxODksMjAgQEAgLShOU1ZpZXcgPFdlYkRvY3VtZW50
Vmlldz4gKilfbWFrZURvY3VtZW50Vmlld0ZvckRhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilk
YXQKICAgICBpZiAoIU1JTUVUeXBlKQogICAgICAgICBNSU1FVHlwZSA9IEAidGV4dC9odG1sIjsK
ICAgICBDbGFzcyB2aWV3Q2xhc3MgPSBbc2VsZiBfdmlld0NsYXNzRm9yTUlNRVR5cGU6TUlNRVR5
cGVdOwotICAgIE5TVmlldyA8V2ViRG9jdW1lbnRWaWV3PiAqZG9jdW1lbnRWaWV3OworICAgIFJl
dGFpblB0cjxOU1ZpZXcgPFdlYkRvY3VtZW50Vmlldz4+IGRvY3VtZW50VmlldzsKICAgICBpZiAo
dmlld0NsYXNzKSB7CiAgICAgICAgIC8vIElmIHRoZSBkYXRhU291cmNlJ3MgcmVwcmVzZW50YXRp
b24gaGFzIGFscmVhZHkgYmVlbiBjcmVhdGVkLCBhbmQgaXQgaXMgYWxzbyB0aGUKICAgICAgICAg
Ly8gc2FtZSBjbGFzcyBhcyB0aGUgZGVzaXJlZCBkb2N1bWVudFZpZXcsIHRoZW4gdXNlIGl0IGFz
IHRoZSBkb2N1bWVudFZpZXcgaW5zdGVhZAogICAgICAgICAvLyBvZiBjcmVhdGluZyBhbm90aGVy
IG9uZSAoUmFkYXIgNDM0MDc4NykuCiAgICAgICAgIGlkIDxXZWJEb2N1bWVudFJlcHJlc2VudGF0
aW9uPiBkYXRhU291cmNlUmVwcmVzZW50YXRpb24gPSBbZGF0YVNvdXJjZSByZXByZXNlbnRhdGlv
bl07CiAgICAgICAgIGlmIChkYXRhU291cmNlUmVwcmVzZW50YXRpb24gJiYgW2RhdGFTb3VyY2VS
ZXByZXNlbnRhdGlvbiBjbGFzc10gPT0gdmlld0NsYXNzKQotICAgICAgICAgICAgZG9jdW1lbnRW
aWV3ID0gKE5TVmlldyA8V2ViRG9jdW1lbnRWaWV3PiAqKVtkYXRhU291cmNlUmVwcmVzZW50YXRp
b24gcmV0YWluXTsKKyAgICAgICAgICAgIGRvY3VtZW50VmlldyA9IChOU1ZpZXcgPFdlYkRvY3Vt
ZW50Vmlldz4gKilkYXRhU291cmNlUmVwcmVzZW50YXRpb247CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGRvY3VtZW50VmlldyA9IFsoTlNWaWV3IDxXZWJEb2N1bWVudFZpZXc+ICopW3ZpZXdD
bGFzcyBhbGxvY10gaW5pdF07Ci0gICAgfSBlbHNlCi0gICAgICAgIGRvY3VtZW50VmlldyA9IG5p
bDsKLSAgICAKLSAgICBbc2VsZiBfc2V0RG9jdW1lbnRWaWV3OmRvY3VtZW50Vmlld107Ci0gICAg
W2RvY3VtZW50VmlldyByZWxlYXNlXTsKKyAgICAgICAgICAgIGRvY3VtZW50VmlldyA9IGFkb3B0
TlMoWyhOU1ZpZXcgPFdlYkRvY3VtZW50Vmlldz4gKilbdmlld0NsYXNzIGFsbG9jXSBpbml0XSk7
CisgICAgfQogICAgIAotICAgIHJldHVybiBkb2N1bWVudFZpZXc7CisgICAgW3NlbGYgX3NldERv
Y3VtZW50Vmlldzpkb2N1bWVudFZpZXcuZ2V0KCldOworICAgIHJldHVybiBkb2N1bWVudFZpZXcu
YXV0b3JlbGVhc2UoKTsKIH0KIAogLSAodm9pZClfc2V0V2ViRnJhbWU6KFdlYkZyYW1lICopd2Vi
RnJhbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA0
OGU5MjBkZTA5ODE3NjIwNTY2NDdlMDFjZjU1OTdmZWMwMmZjZWYzLi4xM2UxZjhiZTliNTlhYTZh
M2VjODBiZDQxMjJiYTQ2NzY0Yjg3NGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCkBAIC0xNDM4LDkgKzE0MzgsOSBAQCAtICh2b2lkKV9jb21tb25Jbml0
aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6KE5TU3RyaW5nICopZnJhbWVOYW1lIGdyb3VwTmFtZToo
TlNTdAogICAgIF9wcml2YXRlLT5tYWluRnJhbWVEb2N1bWVudFJlYWR5ID0gTk87CiAgICAgX3By
aXZhdGUtPmRyYXdzQmFja2dyb3VuZCA9IFlFUzsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LSAgICBfcHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yID0gW1tOU0NvbG9yIGNvbG9yV2l0aERldmlj
ZVdoaXRlOjEgYWxwaGE6MV0gcmV0YWluXTsKKyAgICBfcHJpdmF0ZS0+YmFja2dyb3VuZENvbG9y
ID0gYWRvcHROUyhbW05TQ29sb3IgY29sb3JXaXRoRGV2aWNlV2hpdGU6MSBhbHBoYToxXSByZXRh
aW5dKTsKICNlbHNlCi0gICAgX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvciA9IENHQ29sb3JSZXRh
aW4oV2ViQ29yZTo6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6d2hpdGUpKTsKKyAgICBf
cHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yID0gV2ViQ29yZTo6Y2FjaGVkQ0dDb2xvcihXZWJDb3Jl
OjpDb2xvcjo6d2hpdGUpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0xNDU1LDgg
KzE0NTUsOCBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6KE5T
U3RyaW5nICopZnJhbWVOYW1lIGdyb3VwTmFtZTooTlNTdAogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICBpZiAoQ2xhc3MgZ2VzdHVyZUNsYXNzID0gTlNDbGFzc0Zyb21TdHJpbmcoQCJOU0ltbWVkaWF0
ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyIikpIHsKICAgICAgICAgUmV0YWluUHRyPE5TSW1tZWRp
YXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXI+IHJlY29nbml6ZXIgPSBhZG9wdE5TKFsoTlNJbW1l
ZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplciAqKVtnZXN0dXJlQ2xhc3MgYWxsb2NdIGluaXRd
KTsKLSAgICAgICAgX3ByaXZhdGUtPmltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgPSBbW1dlYklt
bWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoV2ViVmlldzpzZWxmIHJlY29n
bml6ZXI6cmVjb2duaXplci5nZXQoKV07Ci0gICAgICAgIFtyZWNvZ25pemVyIHNldERlbGVnYXRl
Ol9wcml2YXRlLT5pbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyXTsKKyAgICAgICAgX3ByaXZhdGUt
PmltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV2ViSW1tZWRpYXRlQWN0aW9u
Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OnNlbGYgcmVjb2duaXplcjpyZWNvZ25p
emVyLmdldCgpXSk7CisgICAgICAgIFtyZWNvZ25pemVyIHNldERlbGVnYXRlOl9wcml2YXRlLT5p
bW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLmdldCgpXTsKICAgICAgICAgW3JlY29nbml6ZXIgc2V0
RGVsYXlzUHJpbWFyeU1vdXNlQnV0dG9uRXZlbnRzOk5PXTsKICAgICB9CiAjZW5kaWYKQEAgLTE1
OTgsNyArMTU5OCw3IEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFt
ZTooTlNTdHJpbmcgKilmcmFtZU5hbWUgZ3JvdXBOYW1lOihOU1N0CiAgICAgW3NlbGYgX3VwZGF0
ZVNjcmVlblNjYWxlRnJvbVdpbmRvd107CiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZh
dWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcihfd2FrV2luZG93
U2NyZWVuU2NhbGVDaGFuZ2VkOikgbmFtZTpXQUtXaW5kb3dTY3JlZW5TY2FsZURpZENoYW5nZU5v
dGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1
bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF93YWtXaW5kb3dW
aXNpYmlsaXR5Q2hhbmdlZDopIG5hbWU6V0FLV2luZG93VmlzaWJpbGl0eURpZENoYW5nZU5vdGlm
aWNhdGlvbiBvYmplY3Q6bmlsXTsKLSAgICBfcHJpdmF0ZS0+X2ZpeGVkUG9zaXRpb25Db250ZW50
ID0gW1tXZWJGaXhlZFBvc2l0aW9uQ29udGVudCBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OnNlbGZd
OworICAgIF9wcml2YXRlLT5fZml4ZWRQb3NpdGlvbkNvbnRlbnQgPSBhZG9wdE5TKFtbV2ViRml4
ZWRQb3NpdGlvbkNvbnRlbnQgYWxsb2NdIGluaXRXaXRoV2ViVmlldzpzZWxmXSk7CiAjaWYgRU5B
QkxFKE9SSUVOVEFUSU9OX0VWRU5UUykKICAgICBfcHJpdmF0ZS0+ZGV2aWNlT3JpZW50YXRpb24g
PSBbW3NlbGYgX1VJS2l0RGVsZWdhdGVGb3J3YXJkZXJdIGRldmljZU9yaWVudGF0aW9uXTsKICNl
bmRpZgpAQCAtMTc3OSw3ICsxNzc5LDcgQEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdp
dGhTdHlsZTooTlNTdHJpbmcgKilzdHlsZSBmcmFtZTooQ0dSZWN0KWZyYW1lIHByZWYKICAgICBf
cHJpdmF0ZS0+cHJlZmVyZW5jZXMgPSBbcHJlZmVyZW5jZXMgcmV0YWluXTsKICAgICBfcHJpdmF0
ZS0+bWFpbkZyYW1lRG9jdW1lbnRSZWFkeSA9IE5POwogICAgIF9wcml2YXRlLT5kcmF3c0JhY2tn
cm91bmQgPSBZRVM7Ci0gICAgX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvciA9IENHQ29sb3JSZXRh
aW4oV2ViQ29yZTo6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6d2hpdGUpKTsKKyAgICBf
cHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yID0gV2ViQ29yZTo6Y2FjaGVkQ0dDb2xvcihXZWJDb3Jl
OjpDb2xvcjo6d2hpdGUpOwogCiAgICAgYXV0byBmcmFtZVZpZXcgPSBhZG9wdE5TKFtbV2ViRnJh
bWVWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOiBDR1JlY3RNYWtlKDAsMCxmcmFtZS5zaXplLndp
ZHRoLGZyYW1lLnNpemUuaGVpZ2h0KV0pOwogICAgIFtmcmFtZVZpZXcgc2V0QXV0b3Jlc2l6aW5n
TWFzazpOU1ZpZXdXaWR0aFNpemFibGUgfCBOU1ZpZXdIZWlnaHRTaXphYmxlXTsKQEAgLTIzNjQs
NyArMjM2NCw2IEBAIC0gKHZvaWQpX2Nsb3NlUGx1Z2luRGF0YWJhc2VzCiAgICAgaWYgKF9wcml2
YXRlLT5wbHVnaW5EYXRhYmFzZSkgewogICAgICAgICBbX3ByaXZhdGUtPnBsdWdpbkRhdGFiYXNl
IGRlc3Ryb3lBbGxQbHVnaW5JbnN0YW5jZVZpZXdzXTsKICAgICAgICAgW19wcml2YXRlLT5wbHVn
aW5EYXRhYmFzZSBjbG9zZV07Ci0gICAgICAgIFtfcHJpdmF0ZS0+cGx1Z2luRGF0YWJhc2UgcmVs
ZWFzZV07CiAgICAgICAgIF9wcml2YXRlLT5wbHVnaW5EYXRhYmFzZSA9IG5pbDsKICAgICB9CiAj
ZW5kaWYKQEAgLTI1MDMsMTAgKzI1MDIsOCBAQCAtICh2b2lkKV9jbG9zZQogCiAgICAgW1dlYlBy
ZWZlcmVuY2VzIF9yZW1vdmVSZWZlcmVuY2VGb3JJZGVudGlmaWVyOltzZWxmIHByZWZlcmVuY2Vz
SWRlbnRpZmllcl1dOwogCi0gICAgV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzID0gX3ByaXZh
dGUtPnByZWZlcmVuY2VzOwotICAgIF9wcml2YXRlLT5wcmVmZXJlbmNlcyA9IG5pbDsKKyAgICBh
dXRvIHByZWZlcmVuY2VzID0gYWRvcHROUyhzdGQ6OmV4Y2hhbmdlKF9wcml2YXRlLT5wcmVmZXJl
bmNlcywgbmlsKSk7CiAgICAgW3ByZWZlcmVuY2VzIGRpZFJlbW92ZUZyb21XZWJWaWV3XTsKLSAg
ICBbcHJlZmVyZW5jZXMgcmVsZWFzZV07CiAKICAgICBbc2VsZiBfY2xvc2VQbHVnaW5EYXRhYmFz
ZXNdOwogCkBAIC0yNjQwLDggKzI2MzcsOCBAQCArIChCT09MKV9pc0ljb25Mb2FkaW5nRW5hYmxl
ZAogLSAoV2ViSW5zcGVjdG9yICopaW5zcGVjdG9yCiB7CiAgICAgaWYgKCFfcHJpdmF0ZS0+aW5z
cGVjdG9yKQotICAgICAgICBfcHJpdmF0ZS0+aW5zcGVjdG9yID0gW1tXZWJJbnNwZWN0b3IgYWxs
b2NdIGluaXRXaXRoSW5zcGVjdGVkV2ViVmlldzpzZWxmXTsKLSAgICByZXR1cm4gX3ByaXZhdGUt
Pmluc3BlY3RvcjsKKyAgICAgICAgX3ByaXZhdGUtPmluc3BlY3RvciA9IGFkb3B0TlMoW1tXZWJJ
bnNwZWN0b3IgYWxsb2NdIGluaXRXaXRoSW5zcGVjdGVkV2ViVmlldzpzZWxmXSk7CisgICAgcmV0
dXJuIF9wcml2YXRlLT5pbnNwZWN0b3IuZ2V0KCk7CiB9CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lO
U1BFQ1RPUikKQEAgLTI2ODcsMTMgKzI2ODQsMTIgQEAgLSAodm9pZClzZXRTaG93aW5nSW5zcGVj
dG9ySW5kaWNhdGlvbjooQk9PTClzaG93aW5nCiAKICAgICBpZiAoc2hvd2luZykgewogICAgICAg
ICBpZiAoIV9wcml2YXRlLT5pbmRpY2F0ZUxheWVyKSB7Ci0gICAgICAgICAgICBfcHJpdmF0ZS0+
aW5kaWNhdGVMYXllciA9IFtbV2ViSW5kaWNhdGVMYXllciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3
OnNlbGZdOworICAgICAgICAgICAgX3ByaXZhdGUtPmluZGljYXRlTGF5ZXIgPSBhZG9wdE5TKFtb
V2ViSW5kaWNhdGVMYXllciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OnNlbGZdKTsKICAgICAgICAg
ICAgIFtfcHJpdmF0ZS0+aW5kaWNhdGVMYXllciBzZXROZWVkc0xheW91dF07Ci0gICAgICAgICAg
ICBbW1tzZWxmIHdpbmRvd10gaG9zdExheWVyXSBhZGRTdWJsYXllcjpfcHJpdmF0ZS0+aW5kaWNh
dGVMYXllcl07CisgICAgICAgICAgICBbW1tzZWxmIHdpbmRvd10gaG9zdExheWVyXSBhZGRTdWJs
YXllcjpfcHJpdmF0ZS0+aW5kaWNhdGVMYXllci5nZXQoKV07CiAgICAgICAgIH0KICAgICB9IGVs
c2UgewogICAgICAgICBbX3ByaXZhdGUtPmluZGljYXRlTGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5
ZXJdOwotICAgICAgICBbX3ByaXZhdGUtPmluZGljYXRlTGF5ZXIgcmVsZWFzZV07CiAgICAgICAg
IF9wcml2YXRlLT5pbmRpY2F0ZUxheWVyID0gbmlsOwogICAgIH0KICNlbHNlCkBAIC0yNzk2LDcg
KzI3OTIsNiBAQCAtICh2b2lkKV9zZXRGb3JtRGVsZWdhdGU6IChpZDxXZWJGb3JtRGVsZWdhdGU+
KWRlbGVnYXRlCiAgICAgX3ByaXZhdGUtPmZvcm1EZWxlZ2F0ZSA9IGRlbGVnYXRlOwogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgW19wcml2YXRlLT5mb3JtRGVsZWdhdGVGb3J3YXJkZXIg
Y2xlYXJUYXJnZXRdOwotICAgIFtfcHJpdmF0ZS0+Zm9ybURlbGVnYXRlRm9yd2FyZGVyIHJlbGVh
c2VdOwogICAgIF9wcml2YXRlLT5mb3JtRGVsZWdhdGVGb3J3YXJkZXIgPSBuaWw7CiAjZW5kaWYK
IH0KQEAgLTI4MTMsOCArMjgwOCw4IEBAIC0gKGlkKV9mb3JtRGVsZWdhdGVGb3J3YXJkZXIKICAg
ICAgICAgcmV0dXJuIG5pbDsKIAogICAgIGlmICghX3ByaXZhdGUtPmZvcm1EZWxlZ2F0ZUZvcndh
cmRlcikKLSAgICAgICAgX3ByaXZhdGUtPmZvcm1EZWxlZ2F0ZUZvcndhcmRlciA9IFtbX1dlYlNh
ZmVGb3J3YXJkZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OltzZWxmIF9mb3JtRGVsZWdhdGVdIGRl
ZmF1bHRUYXJnZXQ6W1dlYkRlZmF1bHRGb3JtRGVsZWdhdGUgc2hhcmVkRm9ybURlbGVnYXRlXV07
Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5mb3JtRGVsZWdhdGVGb3J3YXJkZXI7CisgICAgICAgIF9w
cml2YXRlLT5mb3JtRGVsZWdhdGVGb3J3YXJkZXIgPSBhZG9wdE5TKFtbX1dlYlNhZmVGb3J3YXJk
ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OltzZWxmIF9mb3JtRGVsZWdhdGVdIGRlZmF1bHRUYXJn
ZXQ6W1dlYkRlZmF1bHRGb3JtRGVsZWdhdGUgc2hhcmVkRm9ybURlbGVnYXRlXV0pOworICAgIHJl
dHVybiBfcHJpdmF0ZS0+Zm9ybURlbGVnYXRlRm9yd2FyZGVyLmdldCgpOwogfQogCiAtIChpZClf
Zm9ybURlbGVnYXRlRm9yU2VsZWN0b3I6KFNFTClzZWxlY3RvcgpAQCAtMjk4Niw4ICsyOTgxLDgg
QEAgLSAoaWQpX1VJS2l0RGVsZWdhdGVGb3J3YXJkZXIKICAgICAgICAgcmV0dXJuIG5pbDsKIAog
ICAgIGlmICghX3ByaXZhdGUtPlVJS2l0RGVsZWdhdGVGb3J3YXJkZXIpCi0gICAgICAgIF9wcml2
YXRlLT5VSUtpdERlbGVnYXRlRm9yd2FyZGVyID0gW1tfV2ViU2FmZUZvcndhcmRlciBhbGxvY10g
aW5pdFdpdGhUYXJnZXQ6X3ByaXZhdGUtPlVJS2l0RGVsZWdhdGUgZGVmYXVsdFRhcmdldDpbV2Vi
RGVmYXVsdFVJS2l0RGVsZWdhdGUgc2hhcmVkVUlLaXREZWxlZ2F0ZV1dOwotICAgIHJldHVybiBf
cHJpdmF0ZS0+VUlLaXREZWxlZ2F0ZUZvcndhcmRlcjsKKyAgICAgICAgX3ByaXZhdGUtPlVJS2l0
RGVsZWdhdGVGb3J3YXJkZXIgPSBhZG9wdE5TKFtbX1dlYlNhZmVGb3J3YXJkZXIgYWxsb2NdIGlu
aXRXaXRoVGFyZ2V0Ol9wcml2YXRlLT5VSUtpdERlbGVnYXRlIGRlZmF1bHRUYXJnZXQ6W1dlYkRl
ZmF1bHRVSUtpdERlbGVnYXRlIHNoYXJlZFVJS2l0RGVsZWdhdGVdXSk7CisgICAgcmV0dXJuIF9w
cml2YXRlLT5VSUtpdERlbGVnYXRlRm9yd2FyZGVyLmdldCgpOwogfQogI2VuZGlmCiAKQEAgLTMx
NTAsOCArMzE0NSw4IEBAIC0gKGlkKV9wb2xpY3lEZWxlZ2F0ZUZvcndhcmRlcgogICAgICAgICBy
ZXR1cm4gbmlsOwogI2VuZGlmCiAgICAgaWYgKCFfcHJpdmF0ZS0+cG9saWN5RGVsZWdhdGVGb3J3
YXJkZXIpCi0gICAgICAgIF9wcml2YXRlLT5wb2xpY3lEZWxlZ2F0ZUZvcndhcmRlciA9IFtbX1dl
YlNhZmVGb3J3YXJkZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0Ol9wcml2YXRlLT5wb2xpY3lEZWxl
Z2F0ZSBkZWZhdWx0VGFyZ2V0OltXZWJEZWZhdWx0UG9saWN5RGVsZWdhdGUgc2hhcmVkUG9saWN5
RGVsZWdhdGVdXTsKLSAgICByZXR1cm4gX3ByaXZhdGUtPnBvbGljeURlbGVnYXRlRm9yd2FyZGVy
OworICAgICAgICBfcHJpdmF0ZS0+cG9saWN5RGVsZWdhdGVGb3J3YXJkZXIgPSBhZG9wdE5TKFtb
X1dlYlNhZmVGb3J3YXJkZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0Ol9wcml2YXRlLT5wb2xpY3lE
ZWxlZ2F0ZSBkZWZhdWx0VGFyZ2V0OltXZWJEZWZhdWx0UG9saWN5RGVsZWdhdGUgc2hhcmVkUG9s
aWN5RGVsZWdhdGVdXSk7CisgICAgcmV0dXJuIF9wcml2YXRlLT5wb2xpY3lEZWxlZ2F0ZUZvcndh
cmRlci5nZXQoKTsKIH0KIAogLSAoaWQpX1VJRGVsZWdhdGVGb3J3YXJkZXIKQEAgLTMxNjEsOCAr
MzE1Niw4IEBAIC0gKGlkKV9VSURlbGVnYXRlRm9yd2FyZGVyCiAgICAgICAgIHJldHVybiBuaWw7
CiAjZW5kaWYKICAgICBpZiAoIV9wcml2YXRlLT5VSURlbGVnYXRlRm9yd2FyZGVyKQotICAgICAg
ICBfcHJpdmF0ZS0+VUlEZWxlZ2F0ZUZvcndhcmRlciA9IFtbX1dlYlNhZmVGb3J3YXJkZXIgYWxs
b2NdIGluaXRXaXRoVGFyZ2V0Ol9wcml2YXRlLT5VSURlbGVnYXRlIGRlZmF1bHRUYXJnZXQ6W1dl
YkRlZmF1bHRVSURlbGVnYXRlIHNoYXJlZFVJRGVsZWdhdGVdXTsKLSAgICByZXR1cm4gX3ByaXZh
dGUtPlVJRGVsZWdhdGVGb3J3YXJkZXI7CisgICAgICAgIF9wcml2YXRlLT5VSURlbGVnYXRlRm9y
d2FyZGVyID0gYWRvcHROUyhbW19XZWJTYWZlRm9yd2FyZGVyIGFsbG9jXSBpbml0V2l0aFRhcmdl
dDpfcHJpdmF0ZS0+VUlEZWxlZ2F0ZSBkZWZhdWx0VGFyZ2V0OltXZWJEZWZhdWx0VUlEZWxlZ2F0
ZSBzaGFyZWRVSURlbGVnYXRlXV0pOworICAgIHJldHVybiBfcHJpdmF0ZS0+VUlEZWxlZ2F0ZUZv
cndhcmRlci5nZXQoKTsKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0zMTkyLDgg
KzMxODcsOCBAQCAtIChpZClfZWRpdGluZ0RlbGVnYXRlRm9yd2FyZGVyCiAgICAgICAgIHJldHVy
biBuaWw7CiAKICAgICBpZiAoIV9wcml2YXRlLT5lZGl0aW5nRGVsZWdhdGVGb3J3YXJkZXIpCi0g
ICAgICAgIF9wcml2YXRlLT5lZGl0aW5nRGVsZWdhdGVGb3J3YXJkZXIgPSBbW19XZWJTYWZlRm9y
d2FyZGVyIGFsbG9jXSBpbml0V2l0aFRhcmdldDpfcHJpdmF0ZS0+ZWRpdGluZ0RlbGVnYXRlIGRl
ZmF1bHRUYXJnZXQ6W1dlYkRlZmF1bHRFZGl0aW5nRGVsZWdhdGUgc2hhcmVkRWRpdGluZ0RlbGVn
YXRlXV07Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5lZGl0aW5nRGVsZWdhdGVGb3J3YXJkZXI7Cisg
ICAgICAgIF9wcml2YXRlLT5lZGl0aW5nRGVsZWdhdGVGb3J3YXJkZXIgPSBhZG9wdE5TKFtbX1dl
YlNhZmVGb3J3YXJkZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0Ol9wcml2YXRlLT5lZGl0aW5nRGVs
ZWdhdGUgZGVmYXVsdFRhcmdldDpbV2ViRGVmYXVsdEVkaXRpbmdEZWxlZ2F0ZSBzaGFyZWRFZGl0
aW5nRGVsZWdhdGVdXSk7CisgICAgcmV0dXJuIF9wcml2YXRlLT5lZGl0aW5nRGVsZWdhdGVGb3J3
YXJkZXIuZ2V0KCk7CiB9CiAKICsgKHZvaWQpX3VucmVnaXN0ZXJWaWV3Q2xhc3NBbmRSZXByZXNl
bnRhdGlvbkNsYXNzRm9yTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUKQEAgLTM1NDMsNyAr
MzUzOCw2IEBAIC0gKHZvaWQpX3NldFVJS2l0RGVsZWdhdGU6KGlkKWRlbGVnYXRlCiB7CiAgICAg
X3ByaXZhdGUtPlVJS2l0RGVsZWdhdGUgPSBkZWxlZ2F0ZTsKICAgICBbX3ByaXZhdGUtPlVJS2l0
RGVsZWdhdGVGb3J3YXJkZXIgY2xlYXJUYXJnZXRdOwotICAgIFtfcHJpdmF0ZS0+VUlLaXREZWxl
Z2F0ZUZvcndhcmRlciByZWxlYXNlXTsKICAgICBfcHJpdmF0ZS0+VUlLaXREZWxlZ2F0ZUZvcndh
cmRlciA9IG5pbDsKIH0KIApAQCAtMzU3NCwxMyArMzU2OCwxMyBAQCAtICh2b2lkKXNldENhcmV0
Q2hhbmdlTGlzdGVuZXI6KGlkIDxXZWJDYXJldENoYW5nZUxpc3RlbmVyPilsaXN0ZW5lcgogCiAt
IChOU1NldCAqKWNhcmV0Q2hhbmdlTGlzdGVuZXJzCiB7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5f
Y2FyZXRDaGFuZ2VMaXN0ZW5lcnM7CisgICAgcmV0dXJuIF9wcml2YXRlLT5fY2FyZXRDaGFuZ2VM
aXN0ZW5lcnMuZ2V0KCk7CiB9CiAKIC0gKHZvaWQpYWRkQ2FyZXRDaGFuZ2VMaXN0ZW5lcjooaWQg
PFdlYkNhcmV0Q2hhbmdlTGlzdGVuZXI+KWxpc3RlbmVyCiB7CiAgICAgaWYgKF9wcml2YXRlLT5f
Y2FyZXRDaGFuZ2VMaXN0ZW5lcnMgPT0gbmlsKSB7Ci0gICAgICAgIF9wcml2YXRlLT5fY2FyZXRD
aGFuZ2VMaXN0ZW5lcnMgPSBbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF07CisgICAgICAgIF9w
cml2YXRlLT5fY2FyZXRDaGFuZ2VMaXN0ZW5lcnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlU2V0IGFs
bG9jXSBpbml0XSk7CiAgICAgfQogCiAgICAgW19wcml2YXRlLT5fY2FyZXRDaGFuZ2VMaXN0ZW5l
cnMgYWRkT2JqZWN0Omxpc3RlbmVyXTsKQEAgLTM3MTMsNyArMzcwNyw3IEBAIC0gKHZvaWQpX3Nl
dENvb2tpZUVuYWJsZWQ6KEJPT0wpZW5hYmxlCiAtICh2b2lkKV9zZXRBZGRpdGlvbmFsV2ViUGx1
Z0luUGF0aHM6KE5TQXJyYXkgKiluZXdQYXRocwogewogICAgIGlmICghX3ByaXZhdGUtPnBsdWdp
bkRhdGFiYXNlKQotICAgICAgICBfcHJpdmF0ZS0+cGx1Z2luRGF0YWJhc2UgPSBbW1dlYlBsdWdp
bkRhdGFiYXNlIGFsbG9jXSBpbml0XTsKKyAgICAgICAgX3ByaXZhdGUtPnBsdWdpbkRhdGFiYXNl
ID0gYWRvcHROUyhbW1dlYlBsdWdpbkRhdGFiYXNlIGFsbG9jXSBpbml0XSk7CiAKICAgICBbX3By
aXZhdGUtPnBsdWdpbkRhdGFiYXNlIHNldFBsdWdJblBhdGhzOm5ld1BhdGhzXTsKICAgICBbX3By
aXZhdGUtPnBsdWdpbkRhdGFiYXNlIHJlZnJlc2hdOwpAQCAtMzg0NiwzMyArMzg0MCwyOSBAQCAt
ICh2b2lkKXNldEJhY2tncm91bmRDb2xvcjooTlNDb2xvciAqKWJhY2tncm91bmRDb2xvcgogICAg
IGlmIChbX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvciBpc0VxdWFsOmJhY2tncm91bmRDb2xvcl0p
CiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gb2xkID0gYWRvcHROUyhfcHJpdmF0ZS0+YmFj
a2dyb3VuZENvbG9yKTsKLSAgICBfcHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yID0gW2JhY2tncm91
bmRDb2xvciByZXRhaW5dOworICAgIF9wcml2YXRlLT5iYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3Jv
dW5kQ29sb3I7CiAKICAgICBbW3NlbGYgbWFpbkZyYW1lXSBfdXBkYXRlQmFja2dyb3VuZEFuZFVw
ZGF0ZXNXaGlsZU9mZnNjcmVlbl07CiB9CiAKIC0gKE5TQ29sb3IgKiliYWNrZ3JvdW5kQ29sb3IK
IHsKLSAgICByZXR1cm4gX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvcjsKKyAgICByZXR1cm4gX3By
aXZhdGUtPmJhY2tncm91bmRDb2xvci5nZXQoKTsKIH0KICNlbHNlCiAtICh2b2lkKXNldEJhY2tn
cm91bmRDb2xvcjooQ0dDb2xvclJlZiliYWNrZ3JvdW5kQ29sb3IKIHsKLSAgIGlmICghYmFja2dy
b3VuZENvbG9yIHx8IENGRXF1YWwoX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvciwgYmFja2dyb3Vu
ZENvbG9yKSkKKyAgICBpZiAoIWJhY2tncm91bmRDb2xvciB8fCBDRkVxdWFsKF9wcml2YXRlLT5i
YWNrZ3JvdW5kQ29sb3IuZ2V0KCksIGJhY2tncm91bmRDb2xvcikpCiAgICAgICAgIHJldHVybjsK
IAotICAgIENGVHlwZVJlZiBvbGQgPSBfcHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yOwotICAgIENG
UmV0YWluKGJhY2tncm91bmRDb2xvcik7CiAgICAgX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvciA9
IGJhY2tncm91bmRDb2xvcjsKLSAgICBDRlJlbGVhc2Uob2xkKTsKIAogICAgIFtbc2VsZiBtYWlu
RnJhbWVdIF91cGRhdGVCYWNrZ3JvdW5kQW5kVXBkYXRlc1doaWxlT2Zmc2NyZWVuXTsKIH0KIAog
LSAoQ0dDb2xvclJlZiliYWNrZ3JvdW5kQ29sb3IKIHsKLSAgICByZXR1cm4gX3ByaXZhdGUtPmJh
Y2tncm91bmRDb2xvcjsKKyAgICByZXR1cm4gX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvci5nZXQo
KTsKIH0KICNlbmRpZgogCkBAIC00NzY2LDcgKzQ3NTYsNyBAQCAtICh2b2lkKV9kaWRTY3JvbGxE
b2N1bWVudEluRnJhbWVWaWV3OihXZWJGcmFtZVZpZXcgKilmcmFtZVZpZXcKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogLSAoV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQqKV9maXhlZFBvc2l0aW9u
Q29udGVudAogewotICAgIHJldHVybiBfcHJpdmF0ZSA/IF9wcml2YXRlLT5fZml4ZWRQb3NpdGlv
bkNvbnRlbnQgOiBuaWw7CisgICAgcmV0dXJuIF9wcml2YXRlID8gX3ByaXZhdGUtPl9maXhlZFBv
c2l0aW9uQ29udGVudC5nZXQoKSA6IG5pbDsKIH0KIAogLSAodm9pZClfZG9jdW1lbnRTY2FsZUNo
YW5nZWQKQEAgLTU4MzIsNyArNTgyMiw2IEBAIC0gKHZvaWQpc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0
ZQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW19wcml2YXRlLT5VSURlbGVnYXRlRm9y
d2FyZGVyIGNsZWFyVGFyZ2V0XTsKICNlbmRpZgotICAgIFtfcHJpdmF0ZS0+VUlEZWxlZ2F0ZUZv
cndhcmRlciByZWxlYXNlXTsKICAgICBfcHJpdmF0ZS0+VUlEZWxlZ2F0ZUZvcndhcmRlciA9IG5p
bDsKIH0KIApAQCAtNTg0OCw4ICs1ODM3LDggQEAgLSAoaWQpX3Jlc291cmNlTG9hZERlbGVnYXRl
Rm9yd2FyZGVyCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBpZiAoIV9wcml2YXRlLT5yZXNv
dXJjZVByb2dyZXNzRGVsZWdhdGVGb3J3YXJkZXIpCi0gICAgICAgIF9wcml2YXRlLT5yZXNvdXJj
ZVByb2dyZXNzRGVsZWdhdGVGb3J3YXJkZXIgPSBbW19XZWJTYWZlRm9yd2FyZGVyIGFsbG9jXSBp
bml0V2l0aFRhcmdldDpbc2VsZiByZXNvdXJjZUxvYWREZWxlZ2F0ZV0gZGVmYXVsdFRhcmdldDpb
V2ViRGVmYXVsdFJlc291cmNlTG9hZERlbGVnYXRlIHNoYXJlZFJlc291cmNlTG9hZERlbGVnYXRl
XV07Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5yZXNvdXJjZVByb2dyZXNzRGVsZWdhdGVGb3J3YXJk
ZXI7CisgICAgICAgIF9wcml2YXRlLT5yZXNvdXJjZVByb2dyZXNzRGVsZWdhdGVGb3J3YXJkZXIg
PSBhZG9wdE5TKFtbX1dlYlNhZmVGb3J3YXJkZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OltzZWxm
IHJlc291cmNlTG9hZERlbGVnYXRlXSBkZWZhdWx0VGFyZ2V0OltXZWJEZWZhdWx0UmVzb3VyY2VM
b2FkRGVsZWdhdGUgc2hhcmVkUmVzb3VyY2VMb2FkRGVsZWdhdGVdXSk7CisgICAgcmV0dXJuIF9w
cml2YXRlLT5yZXNvdXJjZVByb2dyZXNzRGVsZWdhdGVGb3J3YXJkZXIuZ2V0KCk7CiB9CiAjZW5k
aWYKIApAQCAtNTg1Nyw3ICs1ODQ2LDYgQEAgLSAodm9pZClzZXRSZXNvdXJjZUxvYWREZWxlZ2F0
ZTogZGVsZWdhdGUKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtfcHJpdmF0ZS0+
cmVzb3VyY2VQcm9ncmVzc0RlbGVnYXRlRm9yd2FyZGVyIGNsZWFyVGFyZ2V0XTsKLSAgICBbX3By
aXZhdGUtPnJlc291cmNlUHJvZ3Jlc3NEZWxlZ2F0ZUZvcndhcmRlciByZWxlYXNlXTsKICAgICBf
cHJpdmF0ZS0+cmVzb3VyY2VQcm9ncmVzc0RlbGVnYXRlRm9yd2FyZGVyID0gbmlsOwogI2VuZGlm
CiAgICAgX3ByaXZhdGUtPnJlc291cmNlUHJvZ3Jlc3NEZWxlZ2F0ZSA9IGRlbGVnYXRlOwpAQCAt
NTg4Niw3ICs1ODc0LDYgQEAgLSAodm9pZClzZXRQb2xpY3lEZWxlZ2F0ZTpkZWxlZ2F0ZQogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW19wcml2YXRlLT5wb2xpY3lEZWxlZ2F0ZUZvcndh
cmRlciBjbGVhclRhcmdldF07CiAjZW5kaWYKLSAgICBbX3ByaXZhdGUtPnBvbGljeURlbGVnYXRl
Rm9yd2FyZGVyIHJlbGVhc2VdOwogICAgIF9wcml2YXRlLT5wb2xpY3lEZWxlZ2F0ZUZvcndhcmRl
ciA9IG5pbDsKIH0KIApAQCAtNTkwMiw4ICs1ODg5LDggQEAgLSAoaWQpX2ZyYW1lTG9hZERlbGVn
YXRlRm9yd2FyZGVyCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBpZiAoIV9wcml2YXRlLT5m
cmFtZUxvYWREZWxlZ2F0ZUZvcndhcmRlcikKLSAgICAgICAgX3ByaXZhdGUtPmZyYW1lTG9hZERl
bGVnYXRlRm9yd2FyZGVyID0gW1tfV2ViU2FmZUZvcndhcmRlciBhbGxvY10gaW5pdFdpdGhUYXJn
ZXQ6W3NlbGYgZnJhbWVMb2FkRGVsZWdhdGVdIGRlZmF1bHRUYXJnZXQ6W1dlYkRlZmF1bHRGcmFt
ZUxvYWREZWxlZ2F0ZSBzaGFyZWRGcmFtZUxvYWREZWxlZ2F0ZV1dOwotICAgIHJldHVybiBfcHJp
dmF0ZS0+ZnJhbWVMb2FkRGVsZWdhdGVGb3J3YXJkZXI7CisgICAgICAgIF9wcml2YXRlLT5mcmFt
ZUxvYWREZWxlZ2F0ZUZvcndhcmRlciA9IGFkb3B0TlMoW1tfV2ViU2FmZUZvcndhcmRlciBhbGxv
Y10gaW5pdFdpdGhUYXJnZXQ6W3NlbGYgZnJhbWVMb2FkRGVsZWdhdGVdIGRlZmF1bHRUYXJnZXQ6
W1dlYkRlZmF1bHRGcmFtZUxvYWREZWxlZ2F0ZSBzaGFyZWRGcmFtZUxvYWREZWxlZ2F0ZV1dKTsK
KyAgICByZXR1cm4gX3ByaXZhdGUtPmZyYW1lTG9hZERlbGVnYXRlRm9yd2FyZGVyLmdldCgpOwog
fQogI2VuZGlmCiAKQEAgLTU5MjAsNyArNTkwNyw2IEBAIC0gKHZvaWQpc2V0RnJhbWVMb2FkRGVs
ZWdhdGU6ZGVsZWdhdGUKICAgICB9CiAjZWxzZQogICAgIFtfcHJpdmF0ZS0+ZnJhbWVMb2FkRGVs
ZWdhdGVGb3J3YXJkZXIgY2xlYXJUYXJnZXRdOwotICAgIFtfcHJpdmF0ZS0+ZnJhbWVMb2FkRGVs
ZWdhdGVGb3J3YXJkZXIgcmVsZWFzZV07CiAgICAgX3ByaXZhdGUtPmZyYW1lTG9hZERlbGVnYXRl
Rm9yd2FyZGVyID0gbmlsOwogI2VuZGlmCiAKQEAgLTYxMzksOSArNjEyNSw3IEBAIC0gKElCQWN0
aW9uKV9yZXNldFpvb206KGlkKXNlbmRlciBpc1RleHRPbmx5OihCT09MKWlzVGV4dE9ubHkKIAog
LSAodm9pZClzZXRBcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQ6KE5TU3RyaW5nICopYXBwbGlj
YXRpb25OYW1lCiB7Ci0gICAgTlNTdHJpbmcgKm5hbWUgPSBbYXBwbGljYXRpb25OYW1lIGNvcHld
OwotICAgIFtfcHJpdmF0ZS0+YXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50IHJlbGVhc2VdOwot
ICAgIF9wcml2YXRlLT5hcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSBuYW1lOworICAgIF9w
cml2YXRlLT5hcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSBhZG9wdE5TKFthcHBsaWNhdGlv
bk5hbWUgY29weV0pOwogICAgIGlmICghX3ByaXZhdGUtPnVzZXJBZ2VudE92ZXJyaWRkZW4pCiAg
ICAgICAgIFtzZWxmIF9pbnZhbGlkYXRlVXNlckFnZW50Q2FjaGVdOwogfQpAQCAtNjE1OCw3ICs2
MTQyLDggQEAgLSAodm9pZClfaW52YWxpZGF0ZVVzZXJBZ2VudENhY2hlCiAKIC0gKE5TU3RyaW5n
ICopYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50CiB7Ci0gICAgcmV0dXJuIFtbX3ByaXZhdGUt
PmFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICBh
dXRvIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudENvcHkgPSBfcHJpdmF0ZS0+YXBwbGljYXRp
b25OYW1lRm9yVXNlckFnZW50OworICAgIHJldHVybiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdl
bnRDb3B5LmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKHZvaWQpc2V0Q3VzdG9tVXNlckFnZW50OihO
U1N0cmluZyAqKXVzZXJBZ2VudFN0cmluZwpAQCAtNjE3OCwxNCArNjE2MywxMyBAQCAtIChOU1N0
cmluZyAqKWN1c3RvbVVzZXJBZ2VudAogLSAodm9pZClzZXRNZWRpYVN0eWxlOihOU1N0cmluZyAq
KW1lZGlhU3R5bGUKIHsKICAgICBpZiAoX3ByaXZhdGUtPm1lZGlhU3R5bGUgIT0gbWVkaWFTdHls
ZSkgewotICAgICAgICBbX3ByaXZhdGUtPm1lZGlhU3R5bGUgcmVsZWFzZV07Ci0gICAgICAgIF9w
cml2YXRlLT5tZWRpYVN0eWxlID0gW21lZGlhU3R5bGUgY29weV07CisgICAgICAgIF9wcml2YXRl
LT5tZWRpYVN0eWxlID0gYWRvcHROUyhbbWVkaWFTdHlsZSBjb3B5XSk7CiAgICAgfQogfQogCiAt
IChOU1N0cmluZyAqKW1lZGlhU3R5bGUKIHsKLSAgICByZXR1cm4gX3ByaXZhdGUtPm1lZGlhU3R5
bGU7CisgICAgcmV0dXJuIF9wcml2YXRlLT5tZWRpYVN0eWxlLmdldCgpOwogfQogCiAtIChCT09M
KXN1cHBvcnRzVGV4dEVuY29kaW5nCkBAIC02MjU4LDcgKzYyNDIsNyBAQCAtIChXZWJTY3JpcHRP
YmplY3QgKil3aW5kb3dTY3JpcHRPYmplY3QKIC0gKFN0cmluZylfdXNlckFnZW50U3RyaW5nCiB7
CiAgICAgaWYgKF9wcml2YXRlLT51c2VyQWdlbnQuaXNOdWxsKCkpCi0gICAgICAgIF9wcml2YXRl
LT51c2VyQWdlbnQgPSBbW3NlbGYgY2xhc3NdIF9zdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNh
dGlvbk5hbWU6X3ByaXZhdGUtPmFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudF07CisgICAgICAg
IF9wcml2YXRlLT51c2VyQWdlbnQgPSBbW3NlbGYgY2xhc3NdIF9zdGFuZGFyZFVzZXJBZ2VudFdp
dGhBcHBsaWNhdGlvbk5hbWU6X3ByaXZhdGUtPmFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudC5n
ZXQoKV07CiAKICAgICByZXR1cm4gX3ByaXZhdGUtPnVzZXJBZ2VudDsKIH0KQEAgLTYyODEsMTIg
KzYyNjUsMTEgQEAgLSAodm9pZClzZXRIb3N0V2luZG93OihOU1dpbmRvdyAqKWhvc3RXaW5kb3cK
ICAgICBmb3IgKGF1dG8qIGZyYW1lID0gY29yZUZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+
dHJlZSgpLnRyYXZlcnNlTmV4dChjb3JlRnJhbWUpKQogICAgICAgICBbW1traXQoZnJhbWUpIGZy
YW1lVmlld10gZG9jdW1lbnRWaWV3XSB2aWV3V2lsbE1vdmVUb0hvc3RXaW5kb3c6aG9zdFdpbmRv
d107CiAgICAgaWYgKF9wcml2YXRlLT5ob3N0V2luZG93ICYmIFtzZWxmIHdpbmRvd10gIT0gX3By
aXZhdGUtPmhvc3RXaW5kb3cpCi0gICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVs
dENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBuYW1lOk5TV2luZG93V2lsbENsb3NlTm90aWZp
Y2F0aW9uIG9iamVjdDpfcHJpdmF0ZS0+aG9zdFdpbmRvd107CisgICAgICAgIFtbTlNOb3RpZmlj
YXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBuYW1lOk5TV2lu
ZG93V2lsbENsb3NlTm90aWZpY2F0aW9uIG9iamVjdDpfcHJpdmF0ZS0+aG9zdFdpbmRvdy5nZXQo
KV07CiAgICAgaWYgKGhvc3RXaW5kb3cpCiAgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIg
ZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX3dpbmRv
d1dpbGxDbG9zZTopIG5hbWU6TlNXaW5kb3dXaWxsQ2xvc2VOb3RpZmljYXRpb24gb2JqZWN0Omhv
c3RXaW5kb3ddOwogI2VuZGlmCi0gICAgW19wcml2YXRlLT5ob3N0V2luZG93IHJlbGVhc2VdOwot
ICAgIF9wcml2YXRlLT5ob3N0V2luZG93ID0gW2hvc3RXaW5kb3cgcmV0YWluXTsKKyAgICBfcHJp
dmF0ZS0+aG9zdFdpbmRvdyA9IGhvc3RXaW5kb3c7CiAgICAgZm9yIChhdXRvKiBmcmFtZSA9IGNv
cmVGcmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoY29yZUZy
YW1lKSkKICAgICAgICAgW1tba2l0KGZyYW1lKSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld10gdmll
d0RpZE1vdmVUb0hvc3RXaW5kb3ddOwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNjMw
MSw3ICs2Mjg0LDcgQEAgLSAoTlNXaW5kb3cgKilob3N0V2luZG93CiAgICAgaWYgKCFfcHJpdmF0
ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBfcHJpdmF0ZS0+aG9zdFdpbmRv
dzsKKyAgICByZXR1cm4gX3ByaXZhdGUtPmhvc3RXaW5kb3cuZ2V0KCk7CiB9CiAKIC0gKE5TVmll
dyA8V2ViRG9jdW1lbnRWaWV3PiAqKWRvY3VtZW50Vmlld0F0V2luZG93UG9pbnQ6KE5TUG9pbnQp
cG9pbnQKQEAgLTY3ODgsMTMgKzY3NzEsMTIgQEAgLSAoQk9PTClzaG91bGRVcGRhdGVXaGlsZU9m
ZnNjcmVlbgogCiAtICh2b2lkKXNldEN1cnJlbnROb2RlSGlnaGxpZ2h0OihXZWJOb2RlSGlnaGxp
Z2h0ICopbm9kZUhpZ2hsaWdodAogewotICAgIGF1dG8gb2xkID0gYWRvcHROUyhfcHJpdmF0ZS0+
Y3VycmVudE5vZGVIaWdobGlnaHQpOwotICAgIF9wcml2YXRlLT5jdXJyZW50Tm9kZUhpZ2hsaWdo
dCA9IFtub2RlSGlnaGxpZ2h0IHJldGFpbl07CisgICAgX3ByaXZhdGUtPmN1cnJlbnROb2RlSGln
aGxpZ2h0ID0gbm9kZUhpZ2hsaWdodDsKIH0KIAogLSAoV2ViTm9kZUhpZ2hsaWdodCAqKWN1cnJl
bnROb2RlSGlnaGxpZ2h0CiB7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5jdXJyZW50Tm9kZUhpZ2hs
aWdodDsKKyAgICByZXR1cm4gX3ByaXZhdGUtPmN1cnJlbnROb2RlSGlnaGxpZ2h0LmdldCgpOwog
fQogCiAtIChOU1ZpZXcgKilwcmV2aW91c1ZhbGlkS2V5VmlldwpAQCAtNzcxOCwxNCArNzcwMCwx
NCBAQCAtICh2b2lkKXJlc3VtZUFsbE1lZGlhUGxheWJhY2sKICNpZiBQTEFURk9STShNQUMpCiAt
IChCT09MKV9hbGxvd3NMaW5rUHJldmlldwogewotICAgIGlmIChXZWJJbW1lZGlhdGVBY3Rpb25D
b250cm9sbGVyICppbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyID0gX3ByaXZhdGUtPmltbWVkaWF0
ZUFjdGlvbkNvbnRyb2xsZXIpCisgICAgaWYgKFdlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIg
KmltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgPSBfcHJpdmF0ZS0+aW1tZWRpYXRlQWN0aW9uQ29u
dHJvbGxlci5nZXQoKSkKICAgICAgICAgcmV0dXJuIGltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIu
ZW5hYmxlZDsKICAgICByZXR1cm4gTk87CiB9CiAKIC0gKHZvaWQpX3NldEFsbG93c0xpbmtQcmV2
aWV3OihCT09MKWFsbG93c0xpbmtQcmV2aWV3CiB7Ci0gICAgaWYgKFdlYkltbWVkaWF0ZUFjdGlv
bkNvbnRyb2xsZXIgKmltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgPSBfcHJpdmF0ZS0+aW1tZWRp
YXRlQWN0aW9uQ29udHJvbGxlcikKKyAgICBpZiAoV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxl
ciAqaW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciA9IF9wcml2YXRlLT5pbW1lZGlhdGVBY3Rpb25D
b250cm9sbGVyLmdldCgpKQogICAgICAgICBpbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLmVuYWJs
ZWQgPSBhbGxvd3NMaW5rUHJldmlldzsKIH0KICNlbmRpZgpAQCAtODA4MSw3ICs4MDYzLDYgQEAg
LSAodm9pZClzZXRFZGl0aW5nRGVsZWdhdGU6KGlkKWRlbGVnYXRlCiAgICAgW2RlZmF1bHRDZW50
ZXIgcmVtb3ZlT2JzZXJ2ZXI6X3ByaXZhdGUtPmVkaXRpbmdEZWxlZ2F0ZSBuYW1lOldlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24gb2JqZWN0OnNlbGZdOwogCiAgICAgX3ByaXZh
dGUtPmVkaXRpbmdEZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgIFtfcHJpdmF0ZS0+ZWRpdGluZ0Rl
bGVnYXRlRm9yd2FyZGVyIHJlbGVhc2VdOwogICAgIF9wcml2YXRlLT5lZGl0aW5nRGVsZWdhdGVG
b3J3YXJkZXIgPSBuaWw7CiAKICAgICAvLyBhZGQgbm90aWZpY2F0aW9ucyBmb3IgbmV3IGRlbGVn
YXRlCkBAIC05MTAyLDcgKzkwODMsNyBAQCAtIChOU1JlY3QpX2NvbnZlcnRSZWN0RnJvbVJvb3RW
aWV3OihOU1JlY3QpcmVjdAogI2lmIFBMQVRGT1JNKE1BQykKIC0gKFdlYkltbWVkaWF0ZUFjdGlv
bkNvbnRyb2xsZXIgKilfaW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlcgogewotICAgIHJldHVybiBf
cHJpdmF0ZS0+aW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlcjsKKyAgICByZXR1cm4gX3ByaXZhdGUt
PmltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIuZ2V0KCk7CiB9CiAKIC0gKGlkKV9hbmltYXRpb25D
b250cm9sbGVyRm9yRGljdGlvbmFyeUxvb2t1cFBvcHVwSW5mbzooY29uc3QgV2ViQ29yZTo6RGlj
dGlvbmFyeVBvcHVwSW5mbyYpZGljdGlvbmFyeVBvcHVwSW5mbwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCmluZGV4IGRmZTJjMzAwZDc2NjNiYzU4ZjBj
ZjhjNmI2N2JlODU3MDA0Y2QwMjUuLjQwYjY3ZDFlODMwYzdmYjg1Yzk0OWViN2E4YjY0ZTAyZDA3
YjgzMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
d0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRh
LmgKQEAgLTE2MSwyOCArMTYxLDI4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYlZpZXdHcm91
cD4gZ3JvdXA7CiAKICAgICBpZCBVSURlbGVnYXRlOwotICAgIGlkIFVJRGVsZWdhdGVGb3J3YXJk
ZXI7CisgICAgUmV0YWluUHRyPGlkPiBVSURlbGVnYXRlRm9yd2FyZGVyOwogICAgIGlkIHJlc291
cmNlUHJvZ3Jlc3NEZWxlZ2F0ZTsKICAgICBpZCBkb3dubG9hZERlbGVnYXRlOwogICAgIGlkIHBv
bGljeURlbGVnYXRlOwotICAgIGlkIHBvbGljeURlbGVnYXRlRm9yd2FyZGVyOworICAgIFJldGFp
blB0cjxpZD4gcG9saWN5RGVsZWdhdGVGb3J3YXJkZXI7CiAgICAgaWQgZnJhbWVMb2FkRGVsZWdh
dGU7Ci0gICAgaWQgZnJhbWVMb2FkRGVsZWdhdGVGb3J3YXJkZXI7CisgICAgUmV0YWluUHRyPGlk
PiBmcmFtZUxvYWREZWxlZ2F0ZUZvcndhcmRlcjsKICAgICBpZCA8V2ViRm9ybURlbGVnYXRlPiBm
b3JtRGVsZWdhdGU7CiAgICAgaWQgZWRpdGluZ0RlbGVnYXRlOwotICAgIGlkIGVkaXRpbmdEZWxl
Z2F0ZUZvcndhcmRlcjsKKyAgICBSZXRhaW5QdHI8aWQ+IGVkaXRpbmdEZWxlZ2F0ZUZvcndhcmRl
cjsKICAgICBpZCBzY3JpcHREZWJ1Z0RlbGVnYXRlOwogICAgIGlkIGhpc3RvcnlEZWxlZ2F0ZTsK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlkIHJlc291cmNlUHJvZ3Jlc3NEZWxlZ2F0
ZUZvcndhcmRlcjsKLSAgICBpZCBmb3JtRGVsZWdhdGVGb3J3YXJkZXI7CisgICAgUmV0YWluUHRy
PGlkPiByZXNvdXJjZVByb2dyZXNzRGVsZWdhdGVGb3J3YXJkZXI7CisgICAgUmV0YWluUHRyPGlk
PiBmb3JtRGVsZWdhdGVGb3J3YXJkZXI7CiAjZW5kaWYKIAotICAgIFdlYkluc3BlY3RvciAqaW5z
cGVjdG9yOwotICAgIFdlYk5vZGVIaWdobGlnaHQgKmN1cnJlbnROb2RlSGlnaGxpZ2h0OworICAg
IFJldGFpblB0cjxXZWJJbnNwZWN0b3I+IGluc3BlY3RvcjsKKyAgICBSZXRhaW5QdHI8V2ViTm9k
ZUhpZ2hsaWdodD4gY3VycmVudE5vZGVIaWdobGlnaHQ7CiAKICNpZiBQTEFURk9STShNQUMpCi0g
ICAgV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciAqaW1tZWRpYXRlQWN0aW9uQ29udHJvbGxl
cjsKKyAgICBSZXRhaW5QdHI8V2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlcj4gaW1tZWRpYXRl
QWN0aW9uQ29udHJvbGxlcjsKIAogI2lmIEhBVkUoVE9VQ0hfQkFSKQogICAgIFJldGFpblB0cjxO
U1RvdWNoQmFyPiBfY3VycmVudFRvdWNoQmFyOwpAQCAtMjIyLDcgKzIyMiw3IEBAIHByaXZhdGU6
CiAgICAgZmxvYXQgem9vbU11bHRpcGxpZXI7CiAgICAgQk9PTCB6b29tc1RleHRPbmx5OwogCi0g
ICAgTlNTdHJpbmcgKmFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudDsKKyAgICBSZXRhaW5QdHI8
TlNTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudDsKICAgICBXVEY6OlN0cmluZyB1
c2VyQWdlbnQ7CiAgICAgQk9PTCB1c2VyQWdlbnRPdmVycmlkZGVuOwogICAgIApAQCAtMjMxLDcg
KzIzMSw3IEBAIHByaXZhdGU6CiAgICAgTlNVUkwgKnVzZXJTdHlsZVNoZWV0TG9jYXRpb247CiAj
ZW5kaWYKIAotICAgIE5TV2luZG93ICpob3N0V2luZG93OworICAgIFJldGFpblB0cjxOU1dpbmRv
dz4gaG9zdFdpbmRvdzsKIAogICAgIGludCBwcm9ncmFtbWF0aWNGb2N1c0NvdW50OwogICAgIApA
QCAtMjU2LDEyICsyNTYsMTIgQEAgcHJpdmF0ZToKICAgICBCT09MIHVzZXNQYWdlQ2FjaGU7CiAK
ICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBOU0NvbG9yICpiYWNrZ3JvdW5kQ29sb3I7
CisgICAgUmV0YWluUHRyPE5TQ29sb3I+IGJhY2tncm91bmRDb2xvcjsKICNlbHNlCi0gICAgQ0dD
b2xvclJlZiBiYWNrZ3JvdW5kQ29sb3I7CisgICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IGJhY2tn
cm91bmRDb2xvcjsKICNlbmRpZgogCi0gICAgTlNTdHJpbmcgKm1lZGlhU3R5bGU7CisgICAgUmV0
YWluUHRyPE5TU3RyaW5nPiBtZWRpYVN0eWxlOwogICAgIAogICAgIEJPT0wgaGFzU3BlbGxDaGVj
a2VyRG9jdW1lbnRUYWc7CiAgICAgTlNJbnRlZ2VyIHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnOwpA
QCAtMjcwLDEyICsyNzAsMTIgQEAgcHJpdmF0ZToKICAgICBCT09MIGlzU3RvcHBpbmc7CiAKICAg
ICBpZCBVSUtpdERlbGVnYXRlOwotICAgIGlkIFVJS2l0RGVsZWdhdGVGb3J3YXJkZXI7CisgICAg
UmV0YWluUHRyPGlkPiBVSUtpdERlbGVnYXRlRm9yd2FyZGVyOwogCiAgICAgaWQgV2ViTWFpbERl
bGVnYXRlOwogCiAgICAgQk9PTCBhbGxvd3NNZXNzYWdpbmc7Ci0gICAgTlNNdXRhYmxlU2V0ICpf
Y2FyZXRDaGFuZ2VMaXN0ZW5lcnM7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZVNldD4gX2NhcmV0
Q2hhbmdlTGlzdGVuZXJzOwogICAgIGlkIDxXZWJDYXJldENoYW5nZUxpc3RlbmVyPiBfY2FyZXRD
aGFuZ2VMaXN0ZW5lcjsKIAogICAgIENHU2l6ZSBmaXhlZExheW91dFNpemU7CkBAIC0yOTYsNyAr
Mjk2LDcgQEAgcHJpdmF0ZToKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFdl
YktpdCBoYXMgYm90aCBhIGdsb2JhbCBwbHVnLWluIGRhdGFiYXNlIGFuZCBhIHNlcGFyYXRlLCBw
ZXIgV2ViVmlldyBwbHVnLWluIGRhdGFiYXNlLiBEYXNoYm9hcmQgdXNlcyB0aGUgcGVyIFdlYlZp
ZXcgZGF0YWJhc2UuCi0gICAgV2ViUGx1Z2luRGF0YWJhc2UgKnBsdWdpbkRhdGFiYXNlOworICAg
IFJldGFpblB0cjxXZWJQbHVnaW5EYXRhYmFzZT4gcGx1Z2luRGF0YWJhc2U7CiAjZW5kaWYKICAg
ICAKICAgICBIYXNoTWFwPHVuc2lnbmVkIGxvbmcsIFJldGFpblB0cjxpZD4+IGlkZW50aWZpZXJN
YXA7CkBAIC0zMzUsNyArMzM1LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgV2ViSW5kaWNhdGVMYXllciAq
aW5kaWNhdGVMYXllcjsKKyAgICBSZXRhaW5QdHI8V2ViSW5kaWNhdGVMYXllcj4gaW5kaWNhdGVM
YXllcjsKICNlbmRpZgogI2VuZGlmCiAKQEAgLTM1Miw3ICszNTIsNyBAQCBwcml2YXRlOgogCiAg
ICAgZmxvYXQgY3VzdG9tRGV2aWNlU2NhbGVGYWN0b3I7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSAgICBXZWJGaXhlZFBvc2l0aW9uQ29udGVudCogX2ZpeGVkUG9zaXRpb25Db250ZW50Owor
ICAgIFJldGFpblB0cjxXZWJGaXhlZFBvc2l0aW9uQ29udGVudD4gX2ZpeGVkUG9zaXRpb25Db250
ZW50OwogI2VuZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyPiBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCmluZGV4IDg2N2JlYTM2
MDY4ZjUzMzY1ZTc1YmE2NDZhN2MzOTk4OTE3MmIxZDIuLjQ5YmRjNjI3M2QwMGYxOTJkM2I0NDZm
MDVmODgxOWU5NWRmN2ViNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlld0RhdGEubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3RGF0YS5tbQpAQCAtMjMyLDM3ICsyMzIsNiBAQCAtICh2b2lkKWRlYWxsb2MKICAg
ICBBU1NFUlQoIWZ1bGxzY3JlZW5Db250cm9sbGVyKTsKICNlbmRpZgogCi0gICAgW2FwcGxpY2F0
aW9uTmFtZUZvclVzZXJBZ2VudCByZWxlYXNlXTsKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LSAgICBbYmFja2dyb3VuZENvbG9yIHJlbGVhc2VdOwotI2Vsc2UKLSAgICBDR0NvbG9yUmVsZWFz
ZShiYWNrZ3JvdW5kQ29sb3IpOwotI2VuZGlmCi0gICAgW2luc3BlY3RvciByZWxlYXNlXTsKLSAg
ICBbY3VycmVudE5vZGVIaWdobGlnaHQgcmVsZWFzZV07Ci0jaWYgUExBVEZPUk0oTUFDKQotICAg
IFtpbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIHJlbGVhc2VdOwotI2VuZGlmCi0gICAgW2hvc3RX
aW5kb3cgcmVsZWFzZV07Ci0gICAgW3BvbGljeURlbGVnYXRlRm9yd2FyZGVyIHJlbGVhc2VdOwot
ICAgIFtVSURlbGVnYXRlRm9yd2FyZGVyIHJlbGVhc2VdOwotICAgIFtmcmFtZUxvYWREZWxlZ2F0
ZUZvcndhcmRlciByZWxlYXNlXTsKLSAgICBbZWRpdGluZ0RlbGVnYXRlRm9yd2FyZGVyIHJlbGVh
c2VdOwotICAgIFttZWRpYVN0eWxlIHJlbGVhc2VdOwotCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBbaW5kaWNhdGVMYXllciByZWxl
YXNlXTsKLSNlbmRpZgotI2VuZGlmCi0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFtV
SUtpdERlbGVnYXRlRm9yd2FyZGVyIHJlbGVhc2VdOwotICAgIFtmb3JtRGVsZWdhdGVGb3J3YXJk
ZXIgcmVsZWFzZV07Ci0gICAgW19jYXJldENoYW5nZUxpc3RlbmVycyByZWxlYXNlXTsKLSAgICBb
X2ZpeGVkUG9zaXRpb25Db250ZW50IHJlbGVhc2VdOwotI2VuZGlmCi0KICAgICBbc3VwZXIgZGVh
bGxvY107CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCBhNDMxMzMxNTBmMTBhNWQ4ZGNmYTMxY2EzMmMxOTkyZGZmY2NkNDRjLi5jNWZkZDhj
YTRkODNmYzdkOGNiMzUwMGE0ZmE0OWZiMTMzYjliNzdlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIwMjEtMDItMTUg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgZXhwbGlj
aXQgdXNhZ2Ugb2YgW29iakMgcmVsZWFzZV0gaW4gV2ViS2l0IGV2ZW4gbW9yZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxOTE0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKGRlc3Ryb3lXZWJWaWV3QW5kT2Zmc2Ny
ZWVuV2luZG93KToKKyAgICAgICAgKHJlbGVhc2VBbmRaZXJvKToKKyAgICAgICAgKHJ1blRlc3Qp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQu
bW06CisgICAgICAgICgrW0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZCByZWxlYXNlTG9jYWxQYXN0
ZWJvYXJkc10pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250
cm9sbGVyLm1tOgorICAgICAgICAoK1tFdmVudFNlbmRpbmdDb250cm9sbGVyIGNsZWFyU2F2ZWRF
dmVudHNdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvV2Vi
Q29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OldlYkNvcmVOU1VS
TFNlc3Npb25UZXN0OjpTZXRVcCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpXZWJDb3JlTlNV
UkxTZXNzaW9uVGVzdDo6VGVhckRvd24pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9G
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FzeW5jRnVuY3Rp
b24ubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tOgorICAgICAgICAoVEVTVCk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2
YWN5Lm1tOgorICAgICAgICAoc2V0VXBDb29raWVUZXN0V2l0aFdlYnNpdGVEYXRhU3RvcmUpOgor
ICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9OYXZpZ2F0aW9uLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9WaWRlb0NvbnRyb2xzTWFuYWdlci5tbToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tIVFRQQ29va2llU3RvcmUubW06CisgICAgICAgIChydW5UZXN0V2l0aFdlYnNpdGVE
YXRhU3RvcmUpOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvVXNlckNvbnRlbnRUZXN0Lm1tOgorICAgICAgICAoVEVT
VF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvV0tCcm93c2lu
Z0NvbnRleHRHcm91cFRlc3QubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvV0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGVUZXN0
Lm1tOgorICAgICAgICAoVEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lv
cy9XS1Njcm9sbFZpZXdEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NhbmRpZGF0ZVRlc3RzLm1tOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9tYWMvRE9NTm9kZUZyb21KU09iamVjdC5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1N1YnJlc291cmNlRXJy
b3JDcmFzaC5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvbWFjL1R5cGluZ1N0eWxlQ3Jhc2gubW06CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XZWJT
Y3JpcHRPYmplY3REZXNjcmlwdGlvbi5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlZpZXdDYW5QYXN0ZVVSTC5t
bToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvbWFjL1dlYlZpZXdDYW5QYXN0ZVplcm9QbmcubW06CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XZWJWaWV3
RGlkQ3JlYXRlSmF2YVNjcmlwdENvbnRleHQubW06CisgICAgICAgICgtW0RpZENyZWF0ZUphdmFT
Y3JpcHRDb250ZXh0RnJhbWVMb2FkRGVsZWdhdGUgd2ViVmlldzpkaWRDcmVhdGVKYXZhU2NyaXB0
Q29udGV4dDpmb3JGcmFtZTpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQ
cm90b2NvbC5tbToKKyAgICAgICAgKCtbVGVzdFByb3RvY29sIHJlZ2lzdGVyV2l0aFNjaGVtZTpd
KToKKyAgICAgICAgKCtbVGVzdFByb3RvY29sIHVucmVnaXN0ZXJdKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL21hYy9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OnBsYXRmb3JtSW5pdGlhbGl6
ZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29h
Lm1tOgorICAgICAgICAoV1RSOjppbml0aWFsaXplV2ViVmlld0NvbmZpZ3VyYXRpb24pOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lPUy5tbToKKyAgICAg
ICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjphZGRDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZC5tbToKKyAg
ICAgICAgKCtbV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQgcmVsZWFzZUxvY2FsUGFzdGVib2Fy
ZHNdKToKKwogMjAyMS0wMi0xNSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgUHJlcGFyZSBmb3IgYWRkaW5nIHJlbGF0aXZlIGNvbG9yIHN1cHBvcnQKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCAzNWFiZjFiZTVlZmZlNDZh
NDkzMDE5NDc1N2VhZTYxNDdmNDFlODlhLi5jM2U1ZjJiMDc5ZjUwOTMxNjAyZTRiMTUzMjY5NjQ1
ZDBhZmQzYjlkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRl
clRyZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1t
CkBAIC05OSw2ICs5OSw3IEBACiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHd0
Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5oPgorI2ltcG9ydCA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1RocmVhZGluZy5oPgpAQCAtMjM4
LDcgKzIzOSwxMSBAQCBzdGF0aWMgQk9PTCBwcmludFNlcGFyYXRvcnM7CiBzdGF0aWMgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBwZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbjsKIHN0YXRp
YyBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gYWxsb3dlZEhvc3RzOwogCi1zdGF0aWMgV2ViSGlzdG9y
eUl0ZW0gKnByZXZUZXN0QkZJdGVtOyAvLyBjdXJyZW50IGIvZiBpdGVtIGF0IHRoZSBlbmQgb2Yg
dGhlIHByZXZpb3VzIHRlc3QKK3N0YXRpYyBSZXRhaW5QdHI8V2ViSGlzdG9yeUl0ZW0+JiBwcmV2
VGVzdEJGSXRlbSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxXZWJI
aXN0b3J5SXRlbT4+IF9wcmV2VGVzdEJGSXRlbTsgLy8gY3VycmVudCBiL2YgaXRlbSBhdCB0aGUg
ZW5kIG9mIHRoZSBwcmV2aW91cyB0ZXN0LgorICAgIHJldHVybiBfcHJldlRlc3RCRkl0ZW07Cit9
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogY29uc3QgQ0dSZWN0IGxheW91dFRlc3RWaWV3
cG9ydFJlY3QgPSB7IHswLCAwfSwge3N0YXRpY19jYXN0PENHRmxvYXQ+KFRlc3RSdW5uZXI6OnZp
ZXdXaWR0aCksIHN0YXRpY19jYXN0PENHRmxvYXQ+KFRlc3RSdW5uZXI6OnZpZXdIZWlnaHQpfSB9
OwpAQCAtNzc0LDYgKzc3OSw3IEBAIFdlYlZpZXcgKmNyZWF0ZVdlYlZpZXdBbmRPZmZzY3JlZW5X
aW5kb3coKQogc3RhdGljIHZvaWQgZGVzdHJveVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kb3coV2Vi
VmlldyAqd2ViVmlldykKIHsKICAgICBBU1NFUlQod2ViVmlldyA9PSBbbWFpbkZyYW1lIHdlYlZp
ZXddKTsKKyAgICBhdXRvIGFkb3B0ZWRXZWJWaWV3ID0gYWRvcHROUyh3ZWJWaWV3KTsKICNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU1dpbmRvdyAqd2luZG93ID0gW3dlYlZpZXcgd2lu
ZG93XTsKICNlbmRpZgpAQCAtNzkyLDggKzc5OCw2IEBAIHN0YXRpYyB2b2lkIGRlc3Ryb3lXZWJW
aWV3QW5kT2Zmc2NyZWVuV2luZG93KFdlYlZpZXcgKndlYlZpZXcpCiAgICAgYXV0byB1aVdpbmRv
dyA9IGFkb3B0TlMoW2dXZWJCcm93c2VyVmlldyB3aW5kb3ddKTsKICAgICBbdWlXaW5kb3cgcmVt
b3ZlRnJvbVN1cGVydmlld107CiAjZW5kaWYKLQotICAgIFt3ZWJWaWV3IHJlbGVhc2VdOwogfQog
CiBzdGF0aWMgTlNTdHJpbmcgKmxpYnJhcnlQYXRoRm9yRHVtcFJlbmRlclRyZWUoKQpAQCAtOTg1
LDEwICs5ODksMTAgQEAgc3RhdGljIHZvaWQgYWxsb2NhdGVHbG9iYWxDb250cm9sbGVycygpCiAj
ZW5kaWYKIH0KIAotLy8gT2JqQysrIGRvZW5zJ3Qgc2VlbSB0byBsZXQgbWUgcGFzcyBOU09iamVj
dComIHNhZGx5LgorLy8gT2JqQysrIGRvZXNuJ3Qgc2VlbSB0byBsZXQgbWUgcGFzcyBOU09iamVj
dComIHNhZGx5Lgogc3RhdGljIGlubGluZSB2b2lkIHJlbGVhc2VBbmRaZXJvKE5TT2JqZWN0Kiog
b2JqZWN0KQogewotICAgIFsqb2JqZWN0IHJlbGVhc2VdOworICAgIGF1dG8gb2xkT2JqZWN0ID0g
YWRvcHROUygqb2JqZWN0KTsKICAgICAqb2JqZWN0ID0gbmlsOwogfQogCkBAIC0xNDgwLDE3ICsx
NDg0LDE3IEBAIHN0YXRpYyB2b2lkIGR1bXBCYWNrRm9yd2FyZExpc3RGb3JXZWJWaWV3KFdlYlZp
ZXcgKnZpZXcpCiAgICAgZm9yIChpbnQgaSA9IFtiZkxpc3QgZm9yd2FyZExpc3RDb3VudF07IGkg
PiAwOyBpLS0pIHsKICAgICAgICAgV2ViSGlzdG9yeUl0ZW0gKml0ZW0gPSBbYmZMaXN0IGl0ZW1B
dEluZGV4OmldOwogICAgICAgICAvLyBzb21ldGhpbmcgaXMgd3JvbmcgaWYgdGhlIGl0ZW0gZnJv
bSB0aGUgbGFzdCB0ZXN0IGlzIGluIHRoZSBmb3J3YXJkIHBhcnQgb2YgdGhlIGIvZiBsaXN0Ci0g
ICAgICAgIGFzc2VydChpdGVtICE9IHByZXZUZXN0QkZJdGVtKTsKKyAgICAgICAgYXNzZXJ0KGl0
ZW0gIT0gcHJldlRlc3RCRkl0ZW0oKSk7CiAgICAgICAgIFtpdGVtc1RvUHJpbnQgYWRkT2JqZWN0
Oml0ZW1dOwogICAgIH0KIAotICAgIGFzc2VydChbYmZMaXN0IGN1cnJlbnRJdGVtXSAhPSBwcmV2
VGVzdEJGSXRlbSk7CisgICAgYXNzZXJ0KFtiZkxpc3QgY3VycmVudEl0ZW1dICE9IHByZXZUZXN0
QkZJdGVtKCkpOwogICAgIFtpdGVtc1RvUHJpbnQgYWRkT2JqZWN0OltiZkxpc3QgY3VycmVudEl0
ZW1dXTsKICAgICBpbnQgY3VycmVudEl0ZW1JbmRleCA9IFtpdGVtc1RvUHJpbnQgY291bnRdIC0g
MTsKIAogICAgIGZvciAoaW50IGkgPSAtMTsgaSA+PSAtW2JmTGlzdCBiYWNrTGlzdENvdW50XTsg
aS0tKSB7CiAgICAgICAgIFdlYkhpc3RvcnlJdGVtICppdGVtID0gW2JmTGlzdCBpdGVtQXRJbmRl
eDppXTsKLSAgICAgICAgaWYgKGl0ZW0gPT0gcHJldlRlc3RCRkl0ZW0pCisgICAgICAgIGlmIChp
dGVtID09IHByZXZUZXN0QkZJdGVtKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgW2l0
ZW1zVG9QcmludCBhZGRPYmplY3Q6aXRlbV07CiAgICAgfQpAQCAtMTk2Myw4ICsxOTY3LDcgQEAg
c3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdGQ6OnN0cmluZyYgaW5wdXRMaW5lKQogICAgIGxh
c3RNb3VzZVBvc2l0aW9uID0gTlNaZXJvUG9pbnQ7CiAgICAgbGFzdENsaWNrUG9zaXRpb24gPSBO
U1plcm9Qb2ludDsKIAotICAgIFtwcmV2VGVzdEJGSXRlbSByZWxlYXNlXTsKLSAgICBwcmV2VGVz
dEJGSXRlbSA9IFtbW1ttYWluRnJhbWUgd2ViVmlld10gYmFja0ZvcndhcmRMaXN0XSBjdXJyZW50
SXRlbV0gcmV0YWluXTsKKyAgICBwcmV2VGVzdEJGSXRlbSgpID0gW1tbbWFpbkZyYW1lIHdlYlZp
ZXddIGJhY2tGb3J3YXJkTGlzdF0gY3VycmVudEl0ZW1dOwogCiAgICAgYXV0byYgd29ya1F1ZXVl
ID0gRFJUOjpXb3JrUXVldWU6OnNpbmdsZXRvbigpOwogICAgIHdvcmtRdWV1ZS5jbGVhcigpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVi
b2FyZC5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9h
cmQubW0KaW5kZXggNDE2Mjg4OTM1MzM1ZjYzODg2ZDRiMGE1ODM4NGY1ODVmZWZkN2I1OS4uZTk0
NGI0MTdkYmY1N2ZmNmQ5NzgyYTk4YjQ1NDBkOTkzM2YwYmQ5NSAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbQorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm1tCkBAIC03Nyw4
ICs3Nyw3IEBAICsgKE5TUGFzdGVib2FyZCAqKV9wYXN0ZWJvYXJkV2l0aE5hbWU6KE5TU3RyaW5n
ICopbmFtZQogCiArICh2b2lkKXJlbGVhc2VMb2NhbFBhc3RlYm9hcmRzCiB7Ci0gICAgW2xvY2Fs
UGFzdGVib2FyZHMgcmVsZWFzZV07Ci0gICAgbG9jYWxQYXN0ZWJvYXJkcyA9IG5pbDsKKyAgICBh
dXRvIG9sZFBhc3RlYm9hZHMgPSBhZG9wdE5TKHN0ZDo6ZXhjaGFuZ2UobG9jYWxQYXN0ZWJvYXJk
cywgbmlsKSk7CiB9CiAKIC8vIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgSlMgc28gdGhhdCBpdCBk
b2Vzbid0IGhhdmUgdG8gdHJ5IGFuZCBjcmVhdGUgYSBOU0FycmF5IG9uIHRoZSBvYmpjIHNpZGUg
aW5zdGVhZApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGlu
Z0NvbnRyb2xsZXIubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5tbQppbmRleCA3ZWQ5YThkZWI1OTI3ODk0NzNmYTEyOWEzYmMyZWJjOGNhM2I3YzRl
Li5jNmIxOGU3MzAzYmVhMmNmMTM2NWU3NTNkZTNjYTdhMzJiZjdhMmNlIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQpAQCAtOTYz
LDggKzk2Myw3IEBAICsgKHZvaWQpcmVwbGF5U2F2ZWRFdmVudHMKIAogKyAodm9pZCljbGVhclNh
dmVkRXZlbnRzCiB7Ci0gICAgW3NhdmVkTW91c2VFdmVudHMgcmVsZWFzZV07Ci0gICAgc2F2ZWRN
b3VzZUV2ZW50cyA9IG5pbDsKKyAgICBhdXRvIG9sZEV2ZW50cyA9IGFkb3B0TlMoc3RkOjpleGNo
YW5nZShzYXZlZE1vdXNlRXZlbnRzLCBuaWwpKTsKIH0KIAogLSAodm9pZClrZXlEb3duOihOU1N0
cmluZyAqKWNoYXJhY3RlciB3aXRoTW9kaWZpZXJzOihXZWJTY3JpcHRPYmplY3QgKiltb2RpZmll
cnMgd2l0aExvY2F0aW9uOih1bnNpZ25lZCBsb25nKWxvY2F0aW9uCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9XZWJDb3JlTlNVUkxT
ZXNzaW9uLm1tCmluZGV4IGExODA5ZTc2ZThlMzFkOTMyMDFkN2RjZTY0YWE1ZWZlOTI4MDIwNmQu
LjcxYTdmZjRmMzZlY2FkOTNkYzk2N2ZiYzIzMTNjYTJjYjNiOTJmZjEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9u
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9XZWJDb3Jl
TlNVUkxTZXNzaW9uLm1tCkBAIC00Miw2ICs0Miw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNv
cmVOU1VSTFNlc3Npb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIuaD4KICNp
bXBvcnQgPFdlYktpdC9XZWJWaWV3Lmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1w
b3J0IDx3dGYvU2NoZWR1bGVQYWlyLmg+CiAKIHN0YXRpYyBib29sIGRpZExvYWRNYWluUmVzb3Vy
Y2U7CkBAIC0xMDUsOSArMTA2LDkgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBjbGFz
cyBXZWJDb3JlTlNVUkxTZXNzaW9uVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIHB1Ymxp
YzoKLSAgICBXZWJWaWV3ICp2aWV3IHsgbmlsIH07CisgICAgUmV0YWluUHRyPFdlYlZpZXc+IHZp
ZXc7CiAgICAgRnJhbWUqIGZyYW1lIHsgbnVsbHB0ciB9OwotICAgIFRlc3ROU1VSTFNlc3Npb25E
YXRhRGVsZWdhdGUgKmRlbGVnYXRlIHsgbmlsIH07CisgICAgUmV0YWluUHRyPFRlc3ROU1VSTFNl
c3Npb25EYXRhRGVsZWdhdGU+IGRlbGVnYXRlOwogICAgIFJlZlB0cjxNZWRpYVJlc291cmNlTG9h
ZGVyPiBsb2FkZXI7CiAgICAgUmVmUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IG1lZGlhRWxlbWVudDsK
IApAQCAtMTE2LDE0ICsxMTcsMTQgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgICAgIEpTQzo6aW5pdGlhbGl6ZSgpOwogI2VuZGlmCi0gICAgICAgIHZpZXcgPSBbW1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdF07Ci0gICAgICAgIHZpZXcuZnJh
bWVMb2FkRGVsZWdhdGUgPSBbW1tUZXN0TlNVUkxTZXNzaW9uTG9hZGVyRGVsZWdhdGUgYWxsb2Nd
IGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgdmlldyA9IGFkb3B0TlMoW1tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdKTsKKyAgICAgICAgW3ZpZXcgc2V0RnJhbWVM
b2FkRGVsZWdhdGU6W1tbVGVzdE5TVVJMU2Vzc2lvbkxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0
XSBhdXRvcmVsZWFzZV1dOwogCiAgICAgICAgIGRpZExvYWRNYWluUmVzb3VyY2UgPSBmYWxzZTsK
LSAgICAgICAgdmlldy5tYWluRnJhbWVVUkwgPSBkb2N1bWVudFVSTC5hYnNvbHV0ZVN0cmluZzsK
KyAgICAgICAgW3ZpZXcgc2V0TWFpbkZyYW1lVVJMOmRvY3VtZW50VVJMLmFic29sdXRlU3RyaW5n
XTsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRMb2FkTWFpblJlc291cmNl
KTsKIAotICAgICAgICBkZWxlZ2F0ZSA9IFtbVGVzdE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZSBh
bGxvY10gaW5pdF07CisgICAgICAgIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3ROU1VSTFNlc3Np
b25EYXRhRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICAgICAgZnJhbWUgPSBbdmlldyBfbWFp
bkNvcmVGcmFtZV07CiAgICAgICAgIG1lZGlhRWxlbWVudCA9IEhUTUxWaWRlb0VsZW1lbnQ6OmNy
ZWF0ZSgqZnJhbWUtPmRvY3VtZW50KCkpOwogICAgICAgICBsb2FkZXIgPSBhZG9wdFJlZihuZXcg
TWVkaWFSZXNvdXJjZUxvYWRlcigqZnJhbWUtPmRvY3VtZW50KCksICptZWRpYUVsZW1lbnQuZ2V0
KCksIGVtcHR5U3RyaW5nKCksIEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OlZpZGVvKSk7CkBA
IC0xMzEsMTUgKzEzMiwxMyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24o
KQogICAgIHsKLSAgICAgICAgW3ZpZXcgcmVsZWFzZV07Ci0gICAgICAgIFtkZWxlZ2F0ZSByZWxl
YXNlXTsKICAgICAgICAgbG9hZGVyID0gbnVsbHB0cjsKICAgICB9CiB9OwogCiBURVNUX0YoV2Vi
Q29yZU5TVVJMU2Vzc2lvblRlc3QsIEJhc2ljT3BlcmF0aW9uKQogewotICAgIFdlYkNvcmVOU1VS
TFNlc3Npb24qIHNlc3Npb24gPSBbW1dlYkNvcmVOU1VSTFNlc3Npb24gYWxsb2NdIGluaXRXaXRo
UmVzb3VyY2VMb2FkZXI6KmxvYWRlciBkZWxlZ2F0ZTpkZWxlZ2F0ZSBkZWxlZ2F0ZVF1ZXVlOltO
U09wZXJhdGlvblF1ZXVlIG1haW5RdWV1ZV1dOworICAgIGF1dG8gc2Vzc2lvbiA9IGFkb3B0TlMo
W1tXZWJDb3JlTlNVUkxTZXNzaW9uIGFsbG9jXSBpbml0V2l0aFJlc291cmNlTG9hZGVyOipsb2Fk
ZXIgZGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCkgZGVsZWdhdGVRdWV1ZTpbTlNPcGVyYXRpb25RdWV1
ZSBtYWluUXVldWVdXSk7CiAgICAgZGlkUmVjaWV2ZVJlc3BvbnNlID0gZmFsc2U7CiAgICAgZGlk
UmVjaWV2ZURhdGEgPSBmYWxzZTsKICAgICBkaWRDb21wbGV0ZSA9IGZhbHNlOwpAQCAtMTU4LDE3
ICsxNTcsMTQgQEAgVEVTVF9GKFdlYkNvcmVOU1VSTFNlc3Npb25UZXN0LCBCYXNpY09wZXJhdGlv
bikKICAgICBbc2Vzc2lvbiBmaW5pc2hUYXNrc0FuZEludmFsaWRhdGVdOwogCiAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkaWRJbnZhbGlkYXRlKTsKLQotICAgIFtzZXNzaW9uIHJlbGVh
c2VdOwogfQogCiBURVNUX0YoV2ViQ29yZU5TVVJMU2Vzc2lvblRlc3QsIEludmFsaWRhdGVFbXB0
eSkKIHsKLSAgICBXZWJDb3JlTlNVUkxTZXNzaW9uKiBzZXNzaW9uID0gW1tXZWJDb3JlTlNVUkxT
ZXNzaW9uIGFsbG9jXSBpbml0V2l0aFJlc291cmNlTG9hZGVyOipsb2FkZXIgZGVsZWdhdGU6ZGVs
ZWdhdGUgZGVsZWdhdGVRdWV1ZTpbTlNPcGVyYXRpb25RdWV1ZSBtYWluUXVldWVdXTsKKyAgICBh
dXRvIHNlc3Npb24gPSBhZG9wdE5TKFtbV2ViQ29yZU5TVVJMU2Vzc2lvbiBhbGxvY10gaW5pdFdp
dGhSZXNvdXJjZUxvYWRlcjoqbG9hZGVyIGRlbGVnYXRlOmRlbGVnYXRlLmdldCgpIGRlbGVnYXRl
UXVldWU6W05TT3BlcmF0aW9uUXVldWUgbWFpblF1ZXVlXV0pOwogICAgIGRpZEludmFsaWRhdGUg
PSBmYWxzZTsKICAgICBbc2Vzc2lvbiBmaW5pc2hUYXNrc0FuZEludmFsaWRhdGVdOwogICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkSW52YWxpZGF0ZSk7Ci0gICAgW3Nlc3Npb24gcmVs
ZWFzZV07CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQXN5bmNGdW5jdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQXN5bmNGdW5jdGlvbi5tbQppbmRleCBhNDkyNzU3ODNkOGFkYjAxYTIxYTQ0ZGM1
N2E0MTY0ZjAwMTMwNGUxLi5kNjQ1YTg2MTBmNmU0ZWY5ZjRjNGIxYmUzNmY4MWU5ZDI2ZDk2ZGQw
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FzeW5j
RnVuY3Rpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9B
c3luY0Z1bmN0aW9uLm1tCkBAIC0xMzgsMTMgKzEzOCwxMiBAQCBURVNUKEFzeW5jRnVuY3Rpb24s
IFJvdW5kVHJpcCkKICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CiAgICAgRVhQRUNUX1RSVUUoW3Zh
bHVlIGlzRXF1YWw6cmVzdWx0XSk7CiAKLSAgICBOU011dGFibGVBcnJheSAqbXV0YWJsZUFycmF5
ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07CisgICAgYXV0byBtdXRhYmxlQXJyYXkg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBbbXV0YWJsZUFy
cmF5IGFkZE9iamVjdDp2YWx1ZV07Ci0gICAgYXJndW1lbnRzID0gQHsgQCJhIiA6IG11dGFibGVB
cnJheSB9OworICAgIGFyZ3VtZW50cyA9IEB7IEAiYSIgOiBtdXRhYmxlQXJyYXkuZ2V0KCkgfTsK
ICAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0
dXJuIGEiIHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGVycm9yOiZlcnJvcl07CiAgICAgRVhQRUNU
X05VTEwoZXJyb3IpOwogICAgIEVYUEVDVF9UUlVFKFttdXRhYmxlQXJyYXkgaXNFcXVhbDpyZXN1
bHRdKTsKLSAgICBbbXV0YWJsZUFycmF5IHJlbGVhc2VdOwogCiAgICAgdmFsdWUgPSBAWyBAImZv
byIsIFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZVJlZmVyZW5jZURhdGU6MF0gXTsK
ICAgICBhcmd1bWVudHMgPSBAeyBAImEiIDogdmFsdWUgfTsKQEAgLTE1OCwxMyArMTU3LDEyIEBA
IFRFU1QoQXN5bmNGdW5jdGlvbiwgUm91bmRUcmlwKQogICAgIEVYUEVDVF9OVUxMKGVycm9yKTsK
ICAgICBFWFBFQ1RfVFJVRShbdmFsdWUgaXNFcXVhbDpyZXN1bHRdKTsKIAotICAgIE5TTXV0YWJs
ZURpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICptdXRhYmxlRGljdGlvbmFyeSA9IFtbTlNNdXRh
YmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07Ci0gICAgbXV0YWJsZURpY3Rpb25hcnlbQCJmb28i
XSA9IHZhbHVlOwotICAgIGFyZ3VtZW50cyA9IEB7IEAiYSIgOiBtdXRhYmxlRGljdGlvbmFyeSB9
OworICAgIGF1dG8gbXV0YWJsZURpY3Rpb25hcnkgPSBhZG9wdE5TKChOU011dGFibGVEaWN0aW9u
YXJ5PE5TU3RyaW5nICosIGlkPiAqKVtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0p
OworICAgIG11dGFibGVEaWN0aW9uYXJ5LmdldCgpW0AiZm9vIl0gPSB2YWx1ZTsKKyAgICBhcmd1
bWVudHMgPSBAeyBAImEiIDogbXV0YWJsZURpY3Rpb25hcnkuZ2V0KCkgfTsKICAgICByZXN1bHQg
PSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIGEiIHdpdGhB
cmd1bWVudHM6YXJndW1lbnRzIGVycm9yOiZlcnJvcl07CiAgICAgRVhQRUNUX05VTEwoZXJyb3Ip
OwogICAgIEVYUEVDVF9UUlVFKFttdXRhYmxlRGljdGlvbmFyeSBpc0VxdWFsOnJlc3VsdF0pOwot
ICAgIFttdXRhYmxlRGljdGlvbmFyeSByZWxlYXNlXTsKIAogICAgIHZhbHVlID0gQHsgQCJhIiA6
IEAiZm9vIiwgQCJiIiA6IFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZVJlZmVyZW5j
ZURhdGU6MF0gfTsKICAgICBhcmd1bWVudHMgPSBAeyBAImEiIDogdmFsdWUgfTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCmluZGV4IDUw
MWQzYTQ1ZGEyZTU5ZWI2YTA1ZDFjYTc1NmZiYWVkMDNkMTQ5Y2IuLmEyMTdhZWY0YWY4YjA1NzNk
MGUyMGNhZTJhNjY1NGY1MmJlYjAxZTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQpAQCAtMTMzLDE0ICsxMzMsMTQgQEAgQGVuZAog
VEVTVChfV0tEb3dubG9hZCwgRG93bmxvYWREZWxlZ2F0ZSkKIHsKICAgICBSZXRhaW5QdHI8V0tQ
cm9jZXNzUG9vbD4gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10g
aW5pdF0pOwotICAgIERvd25sb2FkRGVsZWdhdGUgKmRvd25sb2FkRGVsZWdhdGUgPSBbW0Rvd25s
b2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdOwotICAgIFtwcm9jZXNzUG9vbCBfc2V0RG93bmxvYWRE
ZWxlZ2F0ZTpkb3dubG9hZERlbGVnYXRlXTsKKyAgICBhdXRvIGRvd25sb2FkRGVsZWdhdGUgPSBh
ZG9wdE5TKFtbRG93bmxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFtwcm9jZXNzUG9v
bCBfc2V0RG93bmxvYWREZWxlZ2F0ZTpkb3dubG9hZERlbGVnYXRlLmdldCgpXTsKIAogICAgIEBh
dXRvcmVsZWFzZXBvb2wgewotICAgICAgICBFWFBFQ1RfRVEoZG93bmxvYWREZWxlZ2F0ZSwgW3By
b2Nlc3NQb29sIF9kb3dubG9hZERlbGVnYXRlXSk7CisgICAgICAgIEVYUEVDVF9FUShkb3dubG9h
ZERlbGVnYXRlLmdldCgpLCBbcHJvY2Vzc1Bvb2wgX2Rvd25sb2FkRGVsZWdhdGVdKTsKICAgICB9
CiAKLSAgICBbZG93bmxvYWREZWxlZ2F0ZSByZWxlYXNlXTsKKyAgICBkb3dubG9hZERlbGVnYXRl
ID0gbmlsOwogICAgIEVYUEVDVF9OVUxMKFtwcm9jZXNzUG9vbCBfZG93bmxvYWREZWxlZ2F0ZV0p
OwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0luQXBwQnJvd3NlclByaXZhY3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KaW5kZXggZWIxYzZiODVhODkyNmRhNzg2YjNl
ZGU3NzhiZWZlOTNhNmZkYzFlNC4uYmQyOTE5ZDk1MTk0NDRjYjc5ZmRhYjRlYzRhN2RmZWUyNGEy
M2MyMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
bkFwcEJyb3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAtNTM5LDE4ICs1MzksMTcgQEAgc3Rh
dGljIHZvaWQgc2V0VXBDb29raWVUZXN0V2l0aFdlYnNpdGVEYXRhU3RvcmUoV0tXZWJzaXRlRGF0
YVN0b3JlKiBkYXRhU3RvcmUpCiAgICAgb2JzZXJ2ZXJDYWxsYmFja3MgPSAwOwogICAgIGdsb2Jh
bENvb2tpZVN0b3JlID0gZGF0YVN0b3JlLmh0dHBDb29raWVTdG9yZTsKIAotICAgIE5TQXJyYXk8
TlNIVFRQQ29va2llICo+ICpjb29raWVzID0gbmlsOworICAgIFJldGFpblB0cjxOU0FycmF5PE5T
SFRUUENvb2tpZSAqPj4gY29va2llczsKICAgICBnb3RGbGFnID0gZmFsc2U7Ci0gICAgW2dsb2Jh
bENvb2tpZVN0b3JlIGdldEFsbENvb2tpZXM6W2Nvb2tpZXNQdHIgPSAmY29va2llc10oTlNBcnJh
eTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2llcykgewotICAgICAgICAqY29va2llc1B0ciA9IFtu
c0Nvb2tpZXMgcmV0YWluXTsKKyAgICBbZ2xvYmFsQ29va2llU3RvcmUgZ2V0QWxsQ29va2llczpb
Jl0oTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2llcykgeworICAgICAgICBjb29raWVz
ID0gbnNDb29raWVzOwogICAgICAgICBnb3RGbGFnID0gdHJ1ZTsKICAgICB9XTsKIAogICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290RmxhZyk7CiAKICAgICAvLyBNYWtlIHN1cmUgdGhl
IGNvb2tpZSBzdG9yZSBzdGFydHMgb3V0IGVtcHR5LgotICAgIEFTU0VSVF9FUShjb29raWVzLmNv
dW50LCAwdSk7Ci0gICAgW2Nvb2tpZXMgcmVsZWFzZV07CisgICAgQVNTRVJUX0VRKFtjb29raWVz
IGNvdW50XSwgMHUpOwogCiAgICAgZ290RmxhZyA9IGZhbHNlOwogfQpAQCAtNjA0LDIwICs2MDMs
MTkgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBTZXRDb29raWVGb3JOb25BcHBCb3VuZERv
bWFpbkZhaWxzKQogICAgIGdvdEZsYWcgPSBmYWxzZTsKIAogICAgIC8vIENoZWNrIHRoZSBjb29r
aWUgc3RvcmUgdG8gbWFrZSBzdXJlIG9ubHkgb25lIGNvb2tpZSB3YXMgc2V0LgotICAgIE5TQXJy
YXk8TlNIVFRQQ29va2llICo+ICpjb29raWVzID0gbmlsOwotICAgIFtnbG9iYWxDb29raWVTdG9y
ZSBnZXRBbGxDb29raWVzOltjb29raWVzUHRyID0gJmNvb2tpZXNdKE5TQXJyYXk8TlNIVFRQQ29v
a2llICo+ICpuc0Nvb2tpZXMpIHsKLSAgICAgICAgKmNvb2tpZXNQdHIgPSBbbnNDb29raWVzIHJl
dGFpbl07CisgICAgUmV0YWluUHRyPE5TQXJyYXk8TlNIVFRQQ29va2llICo+PiBjb29raWVzOwor
ICAgIFtnbG9iYWxDb29raWVTdG9yZSBnZXRBbGxDb29raWVzOlsmXShOU0FycmF5PE5TSFRUUENv
b2tpZSAqPiAqbnNDb29raWVzKSB7CisgICAgICAgIGNvb2tpZXMgPSBuc0Nvb2tpZXM7CiAgICAg
ICAgIGdvdEZsYWcgPSB0cnVlOwogICAgIH1dOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZnb3RGbGFnKTsKIAotICAgIEFTU0VSVF9FUShjb29raWVzLmNvdW50LCAxdSk7Ci0gICAg
RVhQRUNUX1dLX1NUUkVRKGNvb2tpZXNbMF0uZG9tYWluLCBAInd3dy53ZWJraXQub3JnIik7Cisg
ICAgQVNTRVJUX0VRKFtjb29raWVzIGNvdW50XSwgMXUpOworICAgIEVYUEVDVF9XS19TVFJFUShj
b29raWVzLmdldCgpWzBdLmRvbWFpbiwgQCJ3d3cud2Via2l0Lm9yZyIpOwogICAgIHdoaWxlIChv
YnNlcnZlckNhbGxiYWNrcyAhPSAxdSkKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3Bp
blJ1bkxvb3AoKTsKIAotICAgIFtjb29raWVzIHJlbGVhc2VdOwogICAgIGdvdEZsYWcgPSBmYWxz
ZTsKICAgICBbZ2xvYmFsQ29va2llU3RvcmUgZGVsZXRlQ29va2llOmFwcEJvdW5kQ29va2llLmdl
dCgpIGNvbXBsZXRpb25IYW5kbGVyOltdKCkgewogICAgICAgICBnb3RGbGFnID0gdHJ1ZTsKQEAg
LTY4NiwxNiArNjg0LDE0IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgR2V0Q29va2llRm9y
Tm9uQXBwQm91bmREb21haW5GYWlscykKIAogICAgIGNvb2tpZXMgPSBuaWw7CiAgICAgZ290Rmxh
ZyA9IGZhbHNlOwotICAgIFtnbG9iYWxDb29raWVTdG9yZSBnZXRBbGxDb29raWVzOltjb29raWVz
UHRyID0gJmNvb2tpZXNdKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tpZXMpIHsKLSAg
ICAgICAgKmNvb2tpZXNQdHIgPSBbbnNDb29raWVzIHJldGFpbl07CisgICAgW2dsb2JhbENvb2tp
ZVN0b3JlIGdldEFsbENvb2tpZXM6WyZdKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tp
ZXMpIHsKKyAgICAgICAgY29va2llcyA9IG5zQ29va2llczsKICAgICAgICAgZ290RmxhZyA9IHRy
dWU7CiAgICAgfV07CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdEZsYWcpOwog
Ci0gICAgQVNTRVJUX0VRKGNvb2tpZXMuY291bnQsIDF1KTsKLQotICAgIFtjb29raWVzIHJlbGVh
c2VdOworICAgIEFTU0VSVF9FUShbY29va2llcyBjb3VudF0sIDF1KTsKIAogICAgIGdvdEZsYWcg
PSBmYWxzZTsKICAgICBbZ2xvYmFsQ29va2llU3RvcmUgZGVsZXRlQ29va2llOm5vbkFwcEJvdW5k
Q29va2llLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOltdKCkgewpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OYXZpZ2F0aW9uLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OYXZpZ2F0aW9uLm1tCmluZGV4IDAyOTdkODIx
MGFlOGIzZWUyMGU1NzU5YjUxMjgwNmMwMzdkZjE3NDAuLjVlNzQ4MjFmYTVhNGNkMjE1NjIzOTAz
NjY5ZGZjYjViZDllNjZkMjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL05hdmlnYXRpb24ubW0KQEAgLTc1LDE0ICs3NSwxNCBAQCBURVNUKFdLTmF2
aWdhdGlvbiwgTmF2aWdhdGlvbkRlbGVnYXRlKQogewogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+
IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CiAKLSAgICBOYXZpZ2F0aW9uRGVsZWdhdGUgKmRlbGVn
YXRlID0gW1tOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdOwotICAgIFt3ZWJWaWV3IHNl
dE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZV07CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXRO
YXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgQGF1dG9yZWxlYXNlcG9v
bCB7CiAgICAgICAgIEVYUEVDVF9FUShkZWxlZ2F0ZSwgW3dlYlZpZXcgbmF2aWdhdGlvbkRlbGVn
YXRlXSk7CiAgICAgfQogCi0gICAgW2RlbGVnYXRlIHJlbGVhc2VdOworICAgIGRlbGVnYXRlID0g
bmlsOwogICAgIEVYUEVDVF9OVUxMKFt3ZWJWaWV3IG5hdmlnYXRpb25EZWxlZ2F0ZV0pOwogfQog
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1ZpZGVv
Q29udHJvbHNNYW5hZ2VyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9WaWRlb0NvbnRyb2xzTWFuYWdlci5tbQppbmRleCA4NWZlYzk4ZmM4NGNiZGE4OWQxZmQ4Mjc5
MWI0YzMwMzE0MzJhY2JlLi43NDYzYThhN2JlNTRlNTU1MWVlYjMxNzk5MjVjN2FhYjdiMjM5ZDg4
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1ZpZGVv
Q29udHJvbHNNYW5hZ2VyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvVmlkZW9Db250cm9sc01hbmFnZXIubW0KQEAgLTM2NCw3ICszNjQsNiBAQCBURVNUKFZp
ZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclRlYXJzRG93bk1lZGlhQ29u
dHJvbHNPbkRlYWxsb2MpCiAgICAgICAgIGlmIChbd2ViVmlldyByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKF9pbnRlcmFjdFdpdGhNZWRpYUNvbnRyb2xzRm9yVGVzdGluZyldKQogICAgICAg
ICAgICAgW3dlYlZpZXcgX2ludGVyYWN0V2l0aE1lZGlhQ29udHJvbHNGb3JUZXN0aW5nXTsKIAot
ICAgICAgICBbd2ViVmlldyByZWxlYXNlXTsKICAgICAgICAgZmluaXNoZWRUZXN0ID0gdHJ1ZTsK
ICAgICB9XTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KaW5kZXggMzM3NjA5MmExOTViNTEyZGE2N2M0
OTZlNDUyMTdiOTE0ZmUyYTU3OS4uMGY4MDdiOGZhMDI1ZDIxNmMzZDUyZTliMWJkMjc5OTkwYjQ0
MTMyOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
S0hUVFBDb29raWVTdG9yZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCkBAIC04NSwxNiArODUsMTUgQEAgc3RhdGljIHZv
aWQgcnVuVGVzdFdpdGhXZWJzaXRlRGF0YVN0b3JlKFdLV2Vic2l0ZURhdGFTdG9yZSogZGF0YVN0
b3JlKQogICAgIFtnbG9iYWxDb29raWVTdG9yZSBhZGRPYnNlcnZlcjpvYnNlcnZlcjEuZ2V0KCld
OwogICAgIFtnbG9iYWxDb29raWVTdG9yZSBhZGRPYnNlcnZlcjpvYnNlcnZlcjIuZ2V0KCldOwog
Ci0gICAgTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKmNvb2tpZXMgPSBuaWw7Ci0gICAgW2dsb2Jh
bENvb2tpZVN0b3JlIGdldEFsbENvb2tpZXM6W2Nvb2tpZXNQdHIgPSAmY29va2llc10oTlNBcnJh
eTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2llcykgewotICAgICAgICAqY29va2llc1B0ciA9IFtu
c0Nvb2tpZXMgcmV0YWluXTsKKyAgICBSZXRhaW5QdHI8TlNBcnJheTxOU0hUVFBDb29raWUgKj4+
IGNvb2tpZXM7CisgICAgW2dsb2JhbENvb2tpZVN0b3JlIGdldEFsbENvb2tpZXM6WyZdKE5TQXJy
YXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tpZXMpIHsKKyAgICAgICAgY29va2llcyA9IG5zQ29v
a2llczsKICAgICAgICAgZ290RmxhZyA9IHRydWU7CiAgICAgfV07CiAKICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmdvdEZsYWcpOwogCi0gICAgQVNTRVJUX0VRKGNvb2tpZXMuY291bnQs
IDB1KTsKLSAgICBbY29va2llcyByZWxlYXNlXTsKKyAgICBBU1NFUlRfRVEoW2Nvb2tpZXMgY291
bnRdLCAwdSk7CiAKICAgICBnb3RGbGFnID0gZmFsc2U7CiAKQEAgLTEzMCwxOSArMTI5LDE5IEBA
IHN0YXRpYyB2b2lkIHJ1blRlc3RXaXRoV2Vic2l0ZURhdGFTdG9yZShXS1dlYnNpdGVEYXRhU3Rv
cmUqIGRhdGFTdG9yZSkKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdEZsYWcpOwog
ICAgIGdvdEZsYWcgPSBmYWxzZTsKIAotICAgIFtnbG9iYWxDb29raWVTdG9yZSBnZXRBbGxDb29r
aWVzOltjb29raWVzUHRyID0gJmNvb2tpZXNdKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nv
b2tpZXMpIHsKLSAgICAgICAgKmNvb2tpZXNQdHIgPSBbbnNDb29raWVzIHJldGFpbl07CisgICAg
W2dsb2JhbENvb2tpZVN0b3JlIGdldEFsbENvb2tpZXM6WyZdKE5TQXJyYXk8TlNIVFRQQ29va2ll
ICo+ICpuc0Nvb2tpZXMpIHsKKyAgICAgICAgY29va2llcyA9IG5zQ29va2llczsKICAgICAgICAg
Z290RmxhZyA9IHRydWU7CiAgICAgfV07CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmdvdEZsYWcpOwogICAgIGdvdEZsYWcgPSBmYWxzZTsKIAotICAgIEFTU0VSVF9FUShjb29raWVz
LmNvdW50LCAydSk7CisgICAgQVNTRVJUX0VRKFtjb29raWVzIGNvdW50XSwgMnUpOwogICAgIHdo
aWxlIChvYnNlcnZlckNhbGxiYWNrcyAhPSA0dSkKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6c3BpblJ1bkxvb3AoKTsKIAotICAgIGZvciAoTlNIVFRQQ29va2llICpjb29raWUgOiBjb29r
aWVzKSB7CisgICAgZm9yIChOU0hUVFBDb29raWUgKmNvb2tpZSA6IGNvb2tpZXMuZ2V0KCkpIHsK
ICAgICAgICAgaWYgKFtjb29raWUubmFtZSBpc0VxdWFsOkAiQ29va2llTmFtZSJdKSB7CiAgICAg
ICAgICAgICBBU1NFUlRfVFJVRShbY29va2llMS5nZXQoKS5wYXRoIGlzRXF1YWxUb1N0cmluZzpj
b29raWUucGF0aF0pOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoW2Nvb2tpZTEuZ2V0KCkudmFs
dWUgaXNFcXVhbFRvU3RyaW5nOmNvb2tpZS52YWx1ZV0pOwpAQCAtMTU4LDcgKzE1Nyw2IEBAIHN0
YXRpYyB2b2lkIHJ1blRlc3RXaXRoV2Vic2l0ZURhdGFTdG9yZShXS1dlYnNpdGVEYXRhU3RvcmUq
IGRhdGFTdG9yZSkKICAgICAgICAgICAgIEFTU0VSVF9GQUxTRShjb29raWUuc2Vzc2lvbk9ubHkp
OwogICAgICAgICB9CiAgICAgfQotICAgIFtjb29raWVzIHJlbGVhc2VdOwogCiAgICAgW2dsb2Jh
bENvb2tpZVN0b3JlIGRlbGV0ZUNvb2tpZTpjb29raWUyLmdldCgpIGNvbXBsZXRpb25IYW5kbGVy
OltdKCl7CiAgICAgICAgIGdvdEZsYWcgPSB0cnVlOwpAQCAtMTY3LDI2ICsxNjUsMjUgQEAgc3Rh
dGljIHZvaWQgcnVuVGVzdFdpdGhXZWJzaXRlRGF0YVN0b3JlKFdLV2Vic2l0ZURhdGFTdG9yZSog
ZGF0YVN0b3JlKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290RmxhZyk7CiAgICAg
Z290RmxhZyA9IGZhbHNlOwogCi0gICAgW2dsb2JhbENvb2tpZVN0b3JlIGdldEFsbENvb2tpZXM6
W2Nvb2tpZXNQdHIgPSAmY29va2llc10oTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2ll
cykgewotICAgICAgICAqY29va2llc1B0ciA9IFtuc0Nvb2tpZXMgcmV0YWluXTsKKyAgICBbZ2xv
YmFsQ29va2llU3RvcmUgZ2V0QWxsQ29va2llczpbJl0oTlNBcnJheTxOU0hUVFBDb29raWUgKj4g
Km5zQ29va2llcykgeworICAgICAgICBjb29raWVzID0gbnNDb29raWVzOwogICAgICAgICBnb3RG
bGFnID0gdHJ1ZTsKICAgICB9XTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290
RmxhZyk7CiAgICAgZ290RmxhZyA9IGZhbHNlOwogCi0gICAgQVNTRVJUX0VRKGNvb2tpZXMuY291
bnQsIDF1KTsKKyAgICBBU1NFUlRfRVEoW2Nvb2tpZXMgY291bnRdLCAxdSk7CiAgICAgd2hpbGUg
KG9ic2VydmVyQ2FsbGJhY2tzICE9IDZ1KQogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpz
cGluUnVuTG9vcCgpOwogCi0gICAgZm9yIChOU0hUVFBDb29raWUgKmNvb2tpZSA6IGNvb2tpZXMp
IHsKKyAgICBmb3IgKE5TSFRUUENvb2tpZSAqY29va2llIDogY29va2llcy5nZXQoKSkgewogICAg
ICAgICBBU1NFUlRfVFJVRShbY29va2llMS5nZXQoKS5wYXRoIGlzRXF1YWxUb1N0cmluZzpjb29r
aWUucGF0aF0pOwogICAgICAgICBBU1NFUlRfVFJVRShbY29va2llMS5nZXQoKS52YWx1ZSBpc0Vx
dWFsVG9TdHJpbmc6Y29va2llLnZhbHVlXSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKFtjb29raWUx
LmdldCgpLmRvbWFpbiBpc0VxdWFsVG9TdHJpbmc6Y29va2llLmRvbWFpbl0pOwogICAgICAgICBB
U1NFUlRfVFJVRShjb29raWUuc2VjdXJlKTsKICAgICAgICAgQVNTRVJUX1RSVUUoY29va2llLnNl
c3Npb25Pbmx5KTsKICAgICB9Ci0gICAgW2Nvb2tpZXMgcmVsZWFzZV07CiAKICAgICBbZ2xvYmFs
Q29va2llU3RvcmUgcmVtb3ZlT2JzZXJ2ZXI6b2JzZXJ2ZXIxLmdldCgpXTsKICAgICBbZ2xvYmFs
Q29va2llU3RvcmUgcmVtb3ZlT2JzZXJ2ZXI6b2JzZXJ2ZXIyLmdldCgpXTsKQEAgLTI1MSwxNSAr
MjQ4LDE0IEBAIFRFU1QoV0tIVFRQQ29va2llU3RvcmUsIEh0dHBPbmx5KQogCiAgICAgZ2xvYmFs
Q29va2llU3RvcmUgPSBkYXRhU3RvcmUuaHR0cENvb2tpZVN0b3JlOwogCi0gICAgTlNBcnJheTxO
U0hUVFBDb29raWUgKj4gKmNvb2tpZXMgPSBuaWw7Ci0gICAgW2dsb2JhbENvb2tpZVN0b3JlIGdl
dEFsbENvb2tpZXM6W2Nvb2tpZXNQdHIgPSAmY29va2llc10oTlNBcnJheTxOU0hUVFBDb29raWUg
Kj4gKm5zQ29va2llcykgewotICAgICAgICAqY29va2llc1B0ciA9IFtuc0Nvb2tpZXMgcmV0YWlu
XTsKKyAgICBSZXRhaW5QdHI8TlNBcnJheTxOU0hUVFBDb29raWUgKj4+IGNvb2tpZXM7CisgICAg
W2dsb2JhbENvb2tpZVN0b3JlIGdldEFsbENvb2tpZXM6WyZdKE5TQXJyYXk8TlNIVFRQQ29va2ll
ICo+ICpuc0Nvb2tpZXMpIHsKKyAgICAgICAgY29va2llcyA9IG5zQ29va2llczsKICAgICAgICAg
Z290RmxhZyA9IHRydWU7CiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZn
b3RGbGFnKTsKICAgICBnb3RGbGFnID0gZmFsc2U7Ci0gICAgQVNTRVJUX0VRKGNvb2tpZXMuY291
bnQsIDB1KTsKLSAgICBbY29va2llcyByZWxlYXNlXTsKKyAgICBBU1NFUlRfRVEoW2Nvb2tpZXMg
Y291bnRdLCAwdSk7CiAKICAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpjb29raWVQcm9wZXJ0aWVz
ID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKICAgICBbY29va2llUHJvcGVy
dGllcyBzZXRPYmplY3Q6QCJjb29raWVOYW1lIiBmb3JLZXk6TlNIVFRQQ29va2llTmFtZV07CkBA
IC0yOTAsMTUgKzI4NiwxNCBAQCBURVNUKFdLSFRUUENvb2tpZVN0b3JlLCBIdHRwT25seSkKICAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdEZsYWcpOwogICAgIGdvdEZsYWcgPSBmYWxz
ZTsKIAotICAgIFtnbG9iYWxDb29raWVTdG9yZSBnZXRBbGxDb29raWVzOltjb29raWVzUHRyID0g
JmNvb2tpZXNdKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tpZXMpIHsKLSAgICAgICAg
KmNvb2tpZXNQdHIgPSBbbnNDb29raWVzIHJldGFpbl07CisgICAgW2dsb2JhbENvb2tpZVN0b3Jl
IGdldEFsbENvb2tpZXM6WyZdKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tpZXMpIHsK
KyAgICAgICAgY29va2llcyA9IG5zQ29va2llczsKICAgICAgICAgZ290RmxhZyA9IHRydWU7CiAg
ICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RGbGFnKTsKICAgICBnb3RG
bGFnID0gZmFsc2U7Ci0gICAgQVNTRVJUX0VRKGNvb2tpZXMuY291bnQsIDF1KTsKKyAgICBBU1NF
UlRfRVEoW2Nvb2tpZXMgY291bnRdLCAxdSk7CiAgICAgRVhQRUNUX1RSVUUoW1tbY29va2llcyBv
YmplY3RBdEluZGV4OjBdIHZhbHVlXSBpc0VxdWFsOkAiY29va2llVmFsdWUyIl0pOwotICAgIFtj
b29raWVzIHJlbGVhc2VdOwogCiAgICAgLy8gU2V0dGluZyBub3RIdHRwT25seUNvb2tpZSBzaG91
bGQgZmFpbCBiZWNhdXNlIHdlIGNhbm5vdCBvdmVyd3JpdGUgSFRUUE9ubHkgcHJvcGVydHkgdXNp
bmcgcHVibGljIEFQSS4KICAgICBbZ2xvYmFsQ29va2llU3RvcmUgc2V0Q29va2llOm5vdEh0dHBP
bmx5Q29va2llLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOltdKCkgewpAQCAtMzA3LDE1ICszMDIs
MTQgQEAgVEVTVChXS0hUVFBDb29raWVTdG9yZSwgSHR0cE9ubHkpCiAgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZnb3RGbGFnKTsKICAgICBnb3RGbGFnID0gZmFsc2U7CiAKLSAgICBbZ2xv
YmFsQ29va2llU3RvcmUgZ2V0QWxsQ29va2llczpbY29va2llc1B0ciA9ICZjb29raWVzXShOU0Fy
cmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzKSB7Ci0gICAgICAgICpjb29raWVzUHRyID0g
W25zQ29va2llcyByZXRhaW5dOworICAgIFtnbG9iYWxDb29raWVTdG9yZSBnZXRBbGxDb29raWVz
OlsmXShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzKSB7CisgICAgICAgIGNvb2tp
ZXMgPSBuc0Nvb2tpZXM7CiAgICAgICAgIGdvdEZsYWcgPSB0cnVlOwogICAgIH1dOwogICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290RmxhZyk7CiAgICAgZ290RmxhZyA9IGZhbHNlOwot
ICAgIEFTU0VSVF9FUShjb29raWVzLmNvdW50LCAxdSk7CisgICAgQVNTRVJUX0VRKFtjb29raWVz
IGNvdW50XSwgMXUpOwogICAgIEVYUEVDVF9UUlVFKFtbY29va2llcyBvYmplY3RBdEluZGV4OjBd
IGlzSFRUUE9ubHldKTsKLSAgICBbY29va2llcyByZWxlYXNlXTsKIAogICAgIC8vIERlbGV0aW5n
IG5vdEh0dHBPbmx5Q29va2llIHNob3VsZCBmYWlsIGJlY2F1c2UgdGhlIGNvb2tpZSBzdG9yZWQg
aXMgSFRUUE9ubHkuCiAgICAgW2dsb2JhbENvb2tpZVN0b3JlIGRlbGV0ZUNvb2tpZTpub3RIdHRw
T25seUNvb2tpZS5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpbXSgpIHsKQEAgLTMyNCwxNCArMzE4
LDEzIEBAIFRFU1QoV0tIVFRQQ29va2llU3RvcmUsIEh0dHBPbmx5KQogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZ290RmxhZyk7CiAgICAgZ290RmxhZyA9IGZhbHNlOwogCi0gICAgW2ds
b2JhbENvb2tpZVN0b3JlIGdldEFsbENvb2tpZXM6W2Nvb2tpZXNQdHIgPSAmY29va2llc10oTlNB
cnJheTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2llcykgewotICAgICAgICAqY29va2llc1B0ciA9
IFtuc0Nvb2tpZXMgcmV0YWluXTsKKyAgICBbZ2xvYmFsQ29va2llU3RvcmUgZ2V0QWxsQ29va2ll
czpbJl0oTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2llcykgeworICAgICAgICBjb29r
aWVzID0gbnNDb29raWVzOwogICAgICAgICBnb3RGbGFnID0gdHJ1ZTsKICAgICB9XTsKICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdEZsYWcpOwogICAgIGdvdEZsYWcgPSBmYWxzZTsK
LSAgICBBU1NFUlRfRVEoY29va2llcy5jb3VudCwgMXUpOwotICAgIFtjb29raWVzIHJlbGVhc2Vd
OworICAgIEFTU0VSVF9FUShbY29va2llcyBjb3VudF0sIDF1KTsKIAogICAgIC8vIERlbGV0aW5n
IGh0dHBPbmx5Q29va2llIHNob3VsZCBzdWNjZWVkLiAKICAgICBbZ2xvYmFsQ29va2llU3RvcmUg
ZGVsZXRlQ29va2llOmh0dHBPbmx5Q29va2llLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOltdKCkg
ewpAQCAtMzQwLDE0ICszMzMsMTMgQEAgVEVTVChXS0hUVFBDb29raWVTdG9yZSwgSHR0cE9ubHkp
CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RGbGFnKTsKICAgICBnb3RGbGFnID0g
ZmFsc2U7CiAKLSAgICBbZ2xvYmFsQ29va2llU3RvcmUgZ2V0QWxsQ29va2llczpbY29va2llc1B0
ciA9ICZjb29raWVzXShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzKSB7Ci0gICAg
ICAgICpjb29raWVzUHRyID0gW25zQ29va2llcyByZXRhaW5dOworICAgIFtnbG9iYWxDb29raWVT
dG9yZSBnZXRBbGxDb29raWVzOlsmXShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVz
KSB7CisgICAgICAgIGNvb2tpZXMgPSBuc0Nvb2tpZXM7CiAgICAgICAgIGdvdEZsYWcgPSB0cnVl
OwogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290RmxhZyk7CiAgICAg
Z290RmxhZyA9IGZhbHNlOwotICAgIEFTU0VSVF9FUShjb29raWVzLmNvdW50LCAwdSk7Ci0gICAg
W2Nvb2tpZXMgcmVsZWFzZV07CisgICAgQVNTRVJUX0VRKFtjb29raWVzIGNvdW50XSwgMHUpOwog
fQogCiAvLyBGSVhNRTogV291bGQgYmUgZ29vZCB0byBlbmFibGUgdGhpcyB0ZXN0IGZvciB3YXRj
aE9TIGFuZCB0dk9TLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0KaW5kZXggMjdjNjVhZTcyNDMx
NzgxMWJiOGIxYzg2YjAxZGQ5NzMwNzEzNzA4ZC4uZDc1ZTViMjQwNjAyZmU4ZGQxYTAyYjVjY2Q4
YTk0MjAzODdlZDBkOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCkBAIC03NzMsOCArNzcz
LDcgQEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBUaHJlYWRzKQogICAgIFtwb29sIGRyYWluXTsK
IAogICAgIFRocmVhZDo6Y3JlYXRlKCJCIiwgW10gewotICAgICAgICBbdGhlVGFzayByZWxlYXNl
XTsKLSAgICAgICAgdGhlVGFzayA9IG5pbDsKKyAgICAgICAgYXV0byBvbGRUYXNrID0gYWRvcHRO
UyhzdGQ6OmV4Y2hhbmdlKHRoZVRhc2ssIG5pbCkpOwogICAgIH0pLT53YWl0Rm9yQ29tcGxldGlv
bigpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9i
akMvVXNlckNvbnRlbnRUZXN0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRP
YmpDL1VzZXJDb250ZW50VGVzdC5tbQppbmRleCA4ZTE3N2FmYmJlNTljZWZlOTBmOGQxMDkxNDc4
N2U2MzdiOTgzOWU2Li4yZDBiMTczZmRhNTZkN2I4YTg1MGIzNzhjN2I4ZWM5MmM4ZjFlNGMzIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvVXNlckNvbnRl
bnRUZXN0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9Vc2Vy
Q29udGVudFRlc3QubW0KQEAgLTM1LDYgKzM1LDcgQEAKICNpbXBvcnQgPEphdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1ZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CiAKIHN0YXRpYyBib29sIHRlc3RGaW5pc2hlZCA9IGZhbHNlOwogc3RhdGljIE5T
U3RyaW5nICpodG1sU3RyaW5nID0gQCI8Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogcmVk
Jz4iOwpAQCAtNDcsMjUgKzQ4LDIxIEBAIHN0YXRpYyBjb25zdCBjaGFyKiB1c2VyU2NyaXB0VGVz
dFByb3BlcnR5ID0gIndpbmRvdy5fdXNlclNjcmlwdEluc3RhbGxlZCI7CiBuYW1lc3BhY2Ugewog
ICAgIGNsYXNzIFdlYktpdDJVc2VyQ29udGVudFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFdLUHJvY2Vzc0dyb3VwICpwcm9jZXNzR3JvdXA7Ci0g
ICAgICAgIFdLQnJvd3NpbmdDb250ZXh0R3JvdXAgKmJyb3dzaW5nQ29udGV4dEdyb3VwOworICAg
ICAgICBSZXRhaW5QdHI8V0tQcm9jZXNzR3JvdXA+IHByb2Nlc3NHcm91cDsKKyAgICAgICAgUmV0
YWluUHRyPFdLQnJvd3NpbmdDb250ZXh0R3JvdXA+IGJyb3dzaW5nQ29udGV4dEdyb3VwOwogCi0g
ICAgICAgIFdlYktpdDJVc2VyQ29udGVudFRlc3QoKQotICAgICAgICAgICAgOiBwcm9jZXNzR3Jv
dXAobmlsKQotICAgICAgICAgICAgLCBicm93c2luZ0NvbnRleHRHcm91cChuaWwpCi0gICAgICAg
IHsKLSAgICAgICAgfQorICAgICAgICBXZWJLaXQyVXNlckNvbnRlbnRUZXN0KCkgPSBkZWZhdWx0
OwogICAgICAgICAKICAgICAgICAgdmlydHVhbCB2b2lkIFNldFVwKCkKICAgICAgICAgewotICAg
ICAgICAgICAgcHJvY2Vzc0dyb3VwID0gW1tXS1Byb2Nlc3NHcm91cCBhbGxvY10gaW5pdF07Ci0g
ICAgICAgICAgICBicm93c2luZ0NvbnRleHRHcm91cCA9IFtbV0tCcm93c2luZ0NvbnRleHRHcm91
cCBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOkAiVXNlckNvbnRlbnRJZGVudGlmaWVyIl07Cisg
ICAgICAgICAgICBwcm9jZXNzR3JvdXAgPSBhZG9wdE5TKFtbV0tQcm9jZXNzR3JvdXAgYWxsb2Nd
IGluaXRdKTsKKyAgICAgICAgICAgIGJyb3dzaW5nQ29udGV4dEdyb3VwID0gYWRvcHROUyhbW1dL
QnJvd3NpbmdDb250ZXh0R3JvdXAgYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpAIlVzZXJDb250
ZW50SWRlbnRpZmllciJdKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdmlydHVhbCB2
b2lkIFRlYXJEb3duKCkKICAgICAgICAgewotICAgICAgICAgICAgW2Jyb3dzaW5nQ29udGV4dEdy
b3VwIHJlbGVhc2VdOwotICAgICAgICAgICAgW3Byb2Nlc3NHcm91cCByZWxlYXNlXTsKKyAgICAg
ICAgICAgIGJyb3dzaW5nQ29udGV4dEdyb3VwID0gbnVsbHB0cjsKKyAgICAgICAgICAgIHByb2Nl
c3NHcm91cCA9IG51bGxwdHI7CiAgICAgICAgIH0KICAgICB9OwogfSAvLyBuYW1lc3BhY2UKQEAg
LTEyMyw3ICsxMjAsNyBAQCBURVNUX0YoV2ViS2l0MlVzZXJDb250ZW50VGVzdCwgQWRkVXNlclN0
eWxlU2hlZXRCZWZvcmVDcmVhdGluZ1ZpZXcpCiAgICAgdGVzdEZpbmlzaGVkID0gZmFsc2U7CiAg
ICAgW2Jyb3dzaW5nQ29udGV4dEdyb3VwIGFkZFVzZXJTdHlsZVNoZWV0OnVzZXJTdHlsZVNoZWV0
IGJhc2VVUkw6bmlsIGluY2x1ZGVNYXRjaFBhdHRlcm5TdHJpbmdzOm5pbCBleGNsdWRlTWF0Y2hQ
YXR0ZXJuU3RyaW5nczpuaWwgbWFpbkZyYW1lT25seTpZRVNdOwogICAgIAotICAgIFdLVmlldyAq
d2tWaWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nlc3NHcm91cCBicm93c2luZ0NvbnRleHRHcm91cDpi
cm93c2luZ0NvbnRleHRHcm91cF07CisgICAgV0tWaWV3ICp3a1ZpZXcgPSBbW1dLVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6
cHJvY2Vzc0dyb3VwLmdldCgpIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdy
b3VwLmdldCgpXTsKICAgICBXS1N0cmluZ1JlZiBiYWNrZ3JvdW5kQ29sb3JRdWVyeSA9IFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJhY2tncm91bmRDb2xvclNjcmlwdCk7CiAgICAgd2tW
aWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gW1tUZXN0QnJvd3Np
bmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XihX
S0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikgewogICAgICAgICBydW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWUod2tWaWV3LnBhZ2VSZWYsIGJhY2tncm91bmRDb2xvclF1ZXJ5LCBeKFdL
U2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJl
ZiBlcnJvcikgewpAQCAtMTQyLDcgKzEzOSw3IEBAIFRFU1RfRihXZWJLaXQyVXNlckNvbnRlbnRU
ZXN0LCBBZGRVc2VyU3R5bGVTaGVldEFmdGVyQ3JlYXRpbmdWaWV3KQogewogICAgIHRlc3RGaW5p
c2hlZCA9IGZhbHNlOwogICAgIAotICAgIFdLVmlldyAqd2tWaWV3ID0gW1tXS1ZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnBy
b2Nlc3NHcm91cCBicm93c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91cF07Cisg
ICAgV0tWaWV3ICp3a1ZpZXcgPSBbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgpIGJyb3dz
aW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3VwLmdldCgpXTsKICAgICBXS1N0cmlu
Z1JlZiBiYWNrZ3JvdW5kQ29sb3JRdWVyeSA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KGJhY2tncm91bmRDb2xvclNjcmlwdCk7CiAgICAgd2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXIubG9hZERlbGVnYXRlID0gW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFs
bG9jXSBpbml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXIgKnNlbmRlcikgewogICAgICAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUod2tWaWV3LnBh
Z2VSZWYsIGJhY2tncm91bmRDb2xvclF1ZXJ5LCBeKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVm
IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBlcnJvcikgewpAQCAtMTY0LDcgKzE2
MSw3IEBAIFRFU1RfRihXZWJLaXQyVXNlckNvbnRlbnRUZXN0LCBSZW1vdmVBbGxVc2VyU3R5bGVT
aGVldHMpCiAgICAgdGVzdEZpbmlzaGVkID0gZmFsc2U7CiAgICAgW2Jyb3dzaW5nQ29udGV4dEdy
b3VwIGFkZFVzZXJTdHlsZVNoZWV0OnVzZXJTdHlsZVNoZWV0IGJhc2VVUkw6bmlsIGluY2x1ZGVN
YXRjaFBhdHRlcm5TdHJpbmdzOm5pbCBleGNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5nczpuaWwgbWFp
bkZyYW1lT25seTpZRVNdOwogICAgIAotICAgIFdLVmlldyAqd2tWaWV3ID0gW1tXS1ZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3Vw
OnByb2Nlc3NHcm91cCBicm93c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91cF07
CisgICAgV0tWaWV3ICp3a1ZpZXcgPSBbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgpIGJy
b3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3VwLmdldCgpXTsKICAgICBXS1N0
cmluZ1JlZiBiYWNrZ3JvdW5kQ29sb3JRdWVyeSA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKGJhY2tncm91bmRDb2xvclNjcmlwdCk7CiAgICAgd2tWaWV3LmJyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIubG9hZERlbGVnYXRlID0gW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRl
IGFsbG9jXSBpbml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXIgKnNlbmRlcikgewogICAgICAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUod2tWaWV3
LnBhZ2VSZWYsIGJhY2tncm91bmRDb2xvclF1ZXJ5LCBeKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVl
UmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBlcnJvcikgewpAQCAtMTg2LDcg
KzE4Myw3IEBAIFRFU1RfRihXZWJLaXQyVXNlckNvbnRlbnRUZXN0LCBBZGRVc2VyU2NyaXB0QmVm
b3JlQ3JlYXRpbmdWaWV3KQogICAgIHRlc3RGaW5pc2hlZCA9IGZhbHNlOwogICAgIFticm93c2lu
Z0NvbnRleHRHcm91cCBhZGRVc2VyU2NyaXB0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAi
JXMgPSB0cnVlOyIsIHVzZXJTY3JpcHRUZXN0UHJvcGVydHldIGJhc2VVUkw6bmlsIGluY2x1ZGVN
YXRjaFBhdHRlcm5TdHJpbmdzOm5pbCBleGNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5nczpuaWwgaW5q
ZWN0aW9uVGltZTprV0tJbmplY3RBdERvY3VtZW50U3RhcnQgbWFpbkZyYW1lT25seTpZRVNdOwog
ICAgIAotICAgIFdLVmlldyAqd2tWaWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nlc3NHcm91cCBicm93
c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91cF07CisgICAgV0tWaWV3ICp3a1Zp
ZXcgPSBbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwg
NjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgpIGJyb3dzaW5nQ29udGV4dEdyb3Vw
OmJyb3dzaW5nQ29udGV4dEdyb3VwLmdldCgpXTsKICAgICBXS1N0cmluZ1JlZiB1c2VyU2NyaXB0
VGVzdFByb3BlcnR5U3RyaW5nID0gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcodXNlclNj
cmlwdFRlc3RQcm9wZXJ0eSk7CiAgICAgd2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIu
bG9hZERlbGVnYXRlID0gW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBp
bml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNl
bmRlcikgewogICAgICAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUod2tWaWV3LnBhZ2VSZWYs
IHVzZXJTY3JpcHRUZXN0UHJvcGVydHlTdHJpbmcsIF4oV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVS
ZWYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yKSB7CkBAIC0yMDUsNyAr
MjAyLDcgQEAgVEVTVF9GKFdlYktpdDJVc2VyQ29udGVudFRlc3QsIEFkZFVzZXJTY3JpcHRBZnRl
ckNyZWF0aW5nVmlldykKIHsKICAgICB0ZXN0RmluaXNoZWQgPSBmYWxzZTsKICAgICAKLSAgICBX
S1ZpZXcgKndrVmlldyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAgYnJvd3NpbmdDb250ZXh0
R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXBdOworICAgIFdLVmlldyAqd2tWaWV3ID0gW1tXS1Zp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vz
c0dyb3VwOnByb2Nlc3NHcm91cC5nZXQoKSBicm93c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0Nv
bnRleHRHcm91cC5nZXQoKV07CiAgICAgV0tTdHJpbmdSZWYgdXNlclNjcmlwdFRlc3RQcm9wZXJ0
eVN0cmluZyA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHVzZXJTY3JpcHRUZXN0UHJv
cGVydHkpOwogICAgIHdrVmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0
ZSA9IFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9j
a1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpzZW5kZXIpIHsKICAg
ICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHdrVmlldy5wYWdlUmVmLCB1c2VyU2NyaXB0
VGVzdFByb3BlcnR5U3RyaW5nLCBeKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBlcnJvcikgewpAQCAtMjI3LDcgKzIyNCw3IEBAIFRF
U1RfRihXZWJLaXQyVXNlckNvbnRlbnRUZXN0LCBSZW1vdmVBbGxVc2VyU2NyaXB0cykKICAgICB0
ZXN0RmluaXNoZWQgPSBmYWxzZTsKICAgICBbYnJvd3NpbmdDb250ZXh0R3JvdXAgYWRkVXNlclNj
cmlwdDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVzID0gdHJ1ZTsiLCB1c2VyU2NyaXB0
VGVzdFByb3BlcnR5XSBiYXNlVVJMOm5pbCBpbmNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5nczpuaWwg
ZXhjbHVkZU1hdGNoUGF0dGVyblN0cmluZ3M6bmlsIGluamVjdGlvblRpbWU6a1dLSW5qZWN0QXRE
b2N1bWVudFN0YXJ0IG1haW5GcmFtZU9ubHk6WUVTXTsKICAgICAKLSAgICBXS1ZpZXcgKndrVmll
dyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAgYnJvd3NpbmdDb250ZXh0R3JvdXA6YnJvd3Np
bmdDb250ZXh0R3JvdXBdOworICAgIFdLVmlldyAqd2tWaWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nl
c3NHcm91cC5nZXQoKSBicm93c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91cC5n
ZXQoKV07CiAgICAgV0tTdHJpbmdSZWYgdXNlclNjcmlwdFRlc3RQcm9wZXJ0eVN0cmluZyA9IFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHVzZXJTY3JpcHRUZXN0UHJvcGVydHkpOwogICAg
IHdrVmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbVGVzdEJy
b3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2Fk
Ol4oV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpzZW5kZXIpIHsKICAgICAgICAgcnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lKHdrVmlldy5wYWdlUmVmLCB1c2VyU2NyaXB0VGVzdFByb3BlcnR5
U3RyaW5nLCBeKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSwgV0tFcnJvclJlZiBlcnJvcikgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRPYmpDL1dLQnJvd3NpbmdDb250ZXh0R3JvdXBUZXN0Lm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRPYmpDL1dLQnJvd3NpbmdDb250ZXh0R3JvdXBUZXN0Lm1t
CmluZGV4IDI3NzU4OTNhNTUwZGQzOTg1NDdhY2M2MDY1Y2Y0YzA0NWNmYTg3NzQuLjY1ZmE5ZmZh
YjkwMDliZmI0YzFlODBlMDZhZmI5NDAyMTc4MmEzODUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwVGVzdC5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvV0tCcm93c2luZ0NvbnRl
eHRHcm91cFRlc3QubW0KQEAgLTI3LDMzICsyNywzMCBAQAogI2ltcG9ydCAiVGVzdC5oIgogCiAj
aW1wb3J0IDxXZWJLaXQvV0tCcm93c2luZ0NvbnRleHRHcm91cC5oPgorI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQogCiBURVNUKFdLQnJvd3NpbmdDb250ZXh0
R3JvdXBUZXN0LCBHZXRTZXRKYXZhU2NyaXB0RW5hYmxlZCkKIHsKLSAgICBXS0Jyb3dzaW5nQ29u
dGV4dEdyb3VwICpicm93c2luZ0NvbnRleHRHcm91cCA9IFtbV0tCcm93c2luZ0NvbnRleHRHcm91
cCBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOkAiVGVzdElkZW50aWZpZXIiXTsKKyAgICBhdXRv
IGJyb3dzaW5nQ29udGV4dEdyb3VwID0gYWRvcHROUyhbW1dLQnJvd3NpbmdDb250ZXh0R3JvdXAg
YWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpAIlRlc3RJZGVudGlmaWVyIl0pOwogICAgIAotICAg
IEFTU0VSVF9UUlVFKGJyb3dzaW5nQ29udGV4dEdyb3VwLmFsbG93c0phdmFTY3JpcHQpOworICAg
IEFTU0VSVF9UUlVFKFticm93c2luZ0NvbnRleHRHcm91cCBhbGxvd3NKYXZhU2NyaXB0XSk7CiAK
LSAgICBicm93c2luZ0NvbnRleHRHcm91cC5hbGxvd3NKYXZhU2NyaXB0ID0gTk87CisgICAgW2Jy
b3dzaW5nQ29udGV4dEdyb3VwIHNldEFsbG93c0phdmFTY3JpcHQ6Tk9dOwogCi0gICAgQVNTRVJU
X0ZBTFNFKGJyb3dzaW5nQ29udGV4dEdyb3VwLmFsbG93c0phdmFTY3JpcHQpOwotCi0gICAgW2Jy
b3dzaW5nQ29udGV4dEdyb3VwIHJlbGVhc2VdOworICAgIEFTU0VSVF9GQUxTRShbYnJvd3NpbmdD
b250ZXh0R3JvdXAgYWxsb3dzSmF2YVNjcmlwdF0pOwogfQogCiBURVNUKFdLQnJvd3NpbmdDb250
ZXh0R3JvdXBUZXN0LCBHZXRTZXRQbHVnaW5zRW5hYmxlZCkKIHsKLSAgICBXS0Jyb3dzaW5nQ29u
dGV4dEdyb3VwICpicm93c2luZ0NvbnRleHRHcm91cCA9IFtbV0tCcm93c2luZ0NvbnRleHRHcm91
cCBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOkAiVGVzdElkZW50aWZpZXIiXTsKKyAgICBhdXRv
IGJyb3dzaW5nQ29udGV4dEdyb3VwID0gYWRvcHROUyhbW1dLQnJvd3NpbmdDb250ZXh0R3JvdXAg
YWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpAIlRlc3RJZGVudGlmaWVyIl0pOwogICAgIAotICAg
IEFTU0VSVF9UUlVFKGJyb3dzaW5nQ29udGV4dEdyb3VwLmFsbG93c1BsdWdJbnMpOwotCi0gICAg
YnJvd3NpbmdDb250ZXh0R3JvdXAuYWxsb3dzUGx1Z0lucyA9IE5POworICAgIEFTU0VSVF9UUlVF
KFticm93c2luZ0NvbnRleHRHcm91cCBhbGxvd3NQbHVnSW5zXSk7CiAKLSAgICBBU1NFUlRfRkFM
U0UoYnJvd3NpbmdDb250ZXh0R3JvdXAuYWxsb3dzUGx1Z0lucyk7CisgICAgW2Jyb3dzaW5nQ29u
dGV4dEdyb3VwIHNldEFsbG93c1BsdWdJbnM6Tk9dOwogCi0gICAgW2Jyb3dzaW5nQ29udGV4dEdy
b3VwIHJlbGVhc2VdOworICAgIEFTU0VSVF9GQUxTRShbYnJvd3NpbmdDb250ZXh0R3JvdXAgYWxs
b3dzUGx1Z0luc10pOwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRPYmpDL1dLQnJvd3NpbmdDb250ZXh0TG9h
ZERlbGVnYXRlVGVzdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9X
S0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZVRlc3QubW0KaW5kZXggNDI4MTE1NWZiODE1MzRl
OGJkYjNhNjdhMTI4MTJlYzkxNjU3ZGVjZi4uZWYyZGUyNTAxNTdhNTFkYWRhZTVkMWQ4YWUxNTA3
OGI3NjUxZDc5OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRP
YmpDL1dLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlVGVzdC5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvV0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGVU
ZXN0Lm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzR3JvdXAu
aD4KICNpbXBvcnQgPFdlYktpdC9XS1JldGFpblB0ci5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVmll
dy5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxp
dGllcy5oIgogCkBAIC00MSwyOSArNDIsMjQgQEAgbmFtZXNwYWNlIHsKIAogY2xhc3MgV0tCcm93
c2luZ0NvbnRleHRMb2FkRGVsZWdhdGVUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7IAog
cHVibGljOgotICAgIFdLUHJvY2Vzc0dyb3VwICpwcm9jZXNzR3JvdXA7Ci0gICAgV0tCcm93c2lu
Z0NvbnRleHRHcm91cCAqYnJvd3NpbmdDb250ZXh0R3JvdXA7Ci0gICAgV0tWaWV3ICp2aWV3Owot
Ci0gICAgV0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGVUZXN0KCkKLSAgICAgICAgOiBwcm9j
ZXNzR3JvdXAobmlsKQotICAgICAgICAsIGJyb3dzaW5nQ29udGV4dEdyb3VwKG5pbCkKLSAgICAg
ICAgLCB2aWV3KG5pbCkKLSAgICB7Ci0gICAgfQorICAgIFJldGFpblB0cjxXS1Byb2Nlc3NHcm91
cD4gcHJvY2Vzc0dyb3VwOworICAgIFJldGFpblB0cjxXS0Jyb3dzaW5nQ29udGV4dEdyb3VwPiBi
cm93c2luZ0NvbnRleHRHcm91cDsKKyAgICBSZXRhaW5QdHI8V0tWaWV3PiB2aWV3OworCisgICAg
V0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGVUZXN0KCkgPSBkZWZhdWx0OwogCiAgICAgdmly
dHVhbCB2b2lkIFNldFVwKCkKICAgICB7Ci0gICAgICAgIHByb2Nlc3NHcm91cCA9IFtbV0tQcm9j
ZXNzR3JvdXAgYWxsb2NdIGluaXRdOwotICAgICAgICBicm93c2luZ0NvbnRleHRHcm91cCA9IFtb
V0tCcm93c2luZ0NvbnRleHRHcm91cCBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOkAiVGVzdElk
ZW50aWZpZXIiXTsKLSAgICAgICAgdmlldyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAgYnJv
d3NpbmdDb250ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXBdOworICAgICAgICBwcm9jZXNz
R3JvdXAgPSBhZG9wdE5TKFtbV0tQcm9jZXNzR3JvdXAgYWxsb2NdIGluaXRdKTsKKyAgICAgICAg
YnJvd3NpbmdDb250ZXh0R3JvdXAgPSBhZG9wdE5TKFtbV0tCcm93c2luZ0NvbnRleHRHcm91cCBh
bGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOkAiVGVzdElkZW50aWZpZXIiXSk7CisgICAgICAgIHZp
ZXcgPSBhZG9wdE5TKFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAuZ2V0KCkgYnJvd3NpbmdDb250
ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXAuZ2V0KCldKTsKICAgICB9CiAKICAgICB2aXJ0
dWFsIHZvaWQgVGVhckRvd24oKQogICAgIHsKLSAgICAgICAgW3ZpZXcgcmVsZWFzZV07Ci0gICAg
ICAgIFticm93c2luZ0NvbnRleHRHcm91cCByZWxlYXNlXTsKLSAgICAgICAgW3Byb2Nlc3NHcm91
cCByZWxlYXNlXTsKKyAgICAgICAgdmlldyA9IG51bGxwdHI7CisgICAgICAgIGJyb3dzaW5nQ29u
dGV4dEdyb3VwID0gbnVsbHB0cjsKKyAgICAgICAgcHJvY2Vzc0dyb3VwID0gbnVsbHB0cjsKICAg
ICB9CiB9OwogCkBAIC0xMDcsMTkgKzEwMywxOCBAQCBURVNUX0YoV0tCcm93c2luZ0NvbnRleHRM
b2FkRGVsZWdhdGVUZXN0LCBTaW1wbGVMb2FkKQogICAgIGJvb2wgc2ltcGxlTG9hZERvbmUgPSBm
YWxzZTsKIAogICAgIC8vIEFkZCB0aGUgbG9hZCBkZWxlZ2F0ZS4KLSAgICBTaW1wbGVMb2FkRGVs
ZWdhdGUgKmxvYWREZWxlZ2F0ZSA9IFtbU2ltcGxlTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0
aEZsYWc6JnNpbXBsZUxvYWREb25lXTsKLSAgICB2aWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXIubG9hZERlbGVnYXRlID0gbG9hZERlbGVnYXRlOworICAgIGF1dG8gbG9hZERlbGVnYXRlID0g
YWRvcHROUyhbW1NpbXBsZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhGbGFnOiZzaW1wbGVM
b2FkRG9uZV0pOworICAgIHZpZXcuZ2V0KCkuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2Fk
RGVsZWdhdGUgPSBsb2FkRGVsZWdhdGUuZ2V0KCk7CiAKICAgICAvLyBMb2FkIHRoZSBmaWxlLgog
ICAgIE5TVVJMICpuc1VSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6
QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0
QVBJLnJlc291cmNlcyJdOwotICAgIFt2aWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgbG9h
ZEZpbGVVUkw6bnNVUkwgcmVzdHJpY3RUb0ZpbGVzV2l0aGluOm5pbF07CisgICAgW3ZpZXcuZ2V0
KCkuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2FkRmlsZVVSTDpuc1VSTCByZXN0cmljdFRv
RmlsZXNXaXRoaW46bmlsXTsKIAogICAgIC8vIFdhaXQgZm9yIHRoZSBsb2FkIHRvIGZpbmlzaC4K
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnNpbXBsZUxvYWREb25lKTsKIAogICAgIC8v
IFRlYXIgZG93biB0aGUgZGVsZWdhdGUuCi0gICAgdmlldy5icm93c2luZ0NvbnRleHRDb250cm9s
bGVyLmxvYWREZWxlZ2F0ZSA9IG5pbDsKLSAgICBbbG9hZERlbGVnYXRlIHJlbGVhc2VdOworICAg
IHZpZXcuZ2V0KCkuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBuaWw7
CiB9CiAKIFRFU1RfRihXS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZVRlc3QsIFNpbXBsZUxv
YWRPZkhUTUxTdHJpbmcpCkBAIC0xMjcsMTggKzEyMiwxNyBAQCBURVNUX0YoV0tCcm93c2luZ0Nv
bnRleHRMb2FkRGVsZWdhdGVUZXN0LCBTaW1wbGVMb2FkT2ZIVE1MU3RyaW5nKQogICAgIGJvb2wg
c2ltcGxlTG9hZERvbmUgPSBmYWxzZTsKIAogICAgIC8vIEFkZCB0aGUgbG9hZCBkZWxlZ2F0ZS4K
LSAgICBTaW1wbGVMb2FkRGVsZWdhdGUgKmxvYWREZWxlZ2F0ZSA9IFtbU2ltcGxlTG9hZERlbGVn
YXRlIGFsbG9jXSBpbml0V2l0aEZsYWc6JnNpbXBsZUxvYWREb25lXTsKLSAgICB2aWV3LmJyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gbG9hZERlbGVnYXRlOworICAgIGF1
dG8gbG9hZERlbGVnYXRlID0gYWRvcHROUyhbW1NpbXBsZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5p
dFdpdGhGbGFnOiZzaW1wbGVMb2FkRG9uZV0pOworICAgIHZpZXcuZ2V0KCkuYnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBsb2FkRGVsZWdhdGUuZ2V0KCk7CiAKICAgICAv
LyBMb2FkIHRoZSBIVE1MIHN0cmluZy4KLSAgICBbdmlldy5icm93c2luZ0NvbnRleHRDb250cm9s
bGVyIGxvYWRIVE1MU3RyaW5nOkAiPGh0bWw+PGJvZHk+U2ltcGxlIEhUTUwgU3RyaW5nPC9ib2R5
PjwvaHRtbD4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJhYm91dDpibGFuayJdXTsK
KyAgICBbdmlldy5nZXQoKS5icm93c2luZ0NvbnRleHRDb250cm9sbGVyIGxvYWRIVE1MU3RyaW5n
OkAiPGh0bWw+PGJvZHk+U2ltcGxlIEhUTUwgU3RyaW5nPC9ib2R5PjwvaHRtbD4iIGJhc2VVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJhYm91dDpibGFuayJdXTsKIAogICAgIC8vIFdhaXQgZm9y
IHRoZSBsb2FkIHRvIGZpbmlzaC4KICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnNpbXBs
ZUxvYWREb25lKTsKIAogICAgIC8vIFRlYXIgZG93biB0aGUgZGVsZWdhdGUuCi0gICAgdmlldy5i
cm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IG5pbDsKLSAgICBbbG9hZERl
bGVnYXRlIHJlbGVhc2VdOworICAgIHZpZXcuZ2V0KCkuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
ci5sb2FkRGVsZWdhdGUgPSBuaWw7CiB9CiAKIFRFU1RfRihXS0Jyb3dzaW5nQ29udGV4dExvYWRE
ZWxlZ2F0ZVRlc3QsIFNpbXBsZUxvYWRPZkhUTUxTdHJpbmdfTmlsQmFzZVVSTCkKQEAgLTE0Niwx
OCArMTQwLDE3IEBAIFRFU1RfRihXS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZVRlc3QsIFNp
bXBsZUxvYWRPZkhUTUxTdHJpbmdfTmlsQmFzZVVSTCkKICAgICBib29sIHNpbXBsZUxvYWREb25l
ID0gZmFsc2U7CiAKICAgICAvLyBBZGQgdGhlIGxvYWQgZGVsZWdhdGUuCi0gICAgU2ltcGxlTG9h
ZERlbGVnYXRlICpsb2FkRGVsZWdhdGUgPSBbW1NpbXBsZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5p
dFdpdGhGbGFnOiZzaW1wbGVMb2FkRG9uZV07Ci0gICAgdmlldy5icm93c2luZ0NvbnRleHRDb250
cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IGxvYWREZWxlZ2F0ZTsKKyAgICBhdXRvIGxvYWREZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tTaW1wbGVMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRmxhZzomc2lt
cGxlTG9hZERvbmVdKTsKKyAgICB2aWV3LmdldCgpLmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIu
bG9hZERlbGVnYXRlID0gbG9hZERlbGVnYXRlLmdldCgpOwogCiAgICAgLy8gTG9hZCB0aGUgSFRN
TCBzdHJpbmcsIHBhc3MgbmlsIGFzIHRoZSBiYXNlVVJMLgotICAgIFt2aWV3LmJyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXIgbG9hZEhUTUxTdHJpbmc6QCI8aHRtbD48Ym9keT5TaW1wbGUgSFRNTCBT
dHJpbmc8L2JvZHk+PC9odG1sPiIgYmFzZVVSTDpuaWxdOworICAgIFt2aWV3LmdldCgpLmJyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXIgbG9hZEhUTUxTdHJpbmc6QCI8aHRtbD48Ym9keT5TaW1wbGUg
SFRNTCBTdHJpbmc8L2JvZHk+PC9odG1sPiIgYmFzZVVSTDpuaWxdOwogCiAgICAgLy8gV2FpdCBm
b3IgdGhlIGxvYWQgdG8gZmluaXNoLgogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmc2lt
cGxlTG9hZERvbmUpOwogCiAgICAgLy8gVGVhciBkb3duIHRoZSBkZWxlZ2F0ZS4KLSAgICB2aWV3
LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gbmlsOwotICAgIFtsb2Fk
RGVsZWdhdGUgcmVsZWFzZV07CisgICAgdmlldy5nZXQoKS5icm93c2luZ0NvbnRleHRDb250cm9s
bGVyLmxvYWREZWxlZ2F0ZSA9IG5pbDsKIH0KIAogVEVTVF9GKFdLQnJvd3NpbmdDb250ZXh0TG9h
ZERlbGVnYXRlVGVzdCwgU2ltcGxlTG9hZE9mSFRNTFN0cmluZ19OaWxIVE1MU3RyaW5nQW5kQmFz
ZVVSTCkKQEAgLTE2NSwxOCArMTU4LDE3IEBAIFRFU1RfRihXS0Jyb3dzaW5nQ29udGV4dExvYWRE
ZWxlZ2F0ZVRlc3QsIFNpbXBsZUxvYWRPZkhUTUxTdHJpbmdfTmlsSFRNTFN0cmluZ0FuCiAgICAg
Ym9vbCBzaW1wbGVMb2FkRG9uZSA9IGZhbHNlOwogCiAgICAgLy8gQWRkIHRoZSBsb2FkIGRlbGVn
YXRlLgotICAgIFNpbXBsZUxvYWREZWxlZ2F0ZSAqbG9hZERlbGVnYXRlID0gW1tTaW1wbGVMb2Fk
RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRmxhZzomc2ltcGxlTG9hZERvbmVdOwotICAgIHZpZXcu
YnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBsb2FkRGVsZWdhdGU7Cisg
ICAgYXV0byBsb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbU2ltcGxlTG9hZERlbGVnYXRlIGFsbG9j
XSBpbml0V2l0aEZsYWc6JnNpbXBsZUxvYWREb25lXSk7CisgICAgdmlldy5nZXQoKS5icm93c2lu
Z0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IGxvYWREZWxlZ2F0ZS5nZXQoKTsKIAog
ICAgIC8vIExvYWQgdGhlIEhUTUwgc3RyaW5nIChhcyBuaWwpLgotICAgIFt2aWV3LmJyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIgbG9hZEhUTUxTdHJpbmc6bmlsIGJhc2VVUkw6bmlsXTsKKyAgICBb
dmlldy5nZXQoKS5icm93c2luZ0NvbnRleHRDb250cm9sbGVyIGxvYWRIVE1MU3RyaW5nOm5pbCBi
YXNlVVJMOm5pbF07CiAKICAgICAvLyBXYWl0IGZvciB0aGUgbG9hZCB0byBmaW5pc2guCiAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZzaW1wbGVMb2FkRG9uZSk7CiAKICAgICAvLyBUZWFy
IGRvd24gdGhlIGRlbGVnYXRlLgotICAgIHZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5s
b2FkRGVsZWdhdGUgPSBuaWw7Ci0gICAgW2xvYWREZWxlZ2F0ZSByZWxlYXNlXTsKKyAgICB2aWV3
LmdldCgpLmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gbmlsOwogfQog
CiBAaW50ZXJmYWNlIFNpbXBsZUxvYWRGYWlsRGVsZWdhdGUgOiBOU09iamVjdCA8V0tCcm93c2lu
Z0NvbnRleHRMb2FkRGVsZWdhdGU+CkBAIC0yMTUsMTkgKzIwNywxOCBAQCBURVNUX0YoV0tCcm93
c2luZ0NvbnRleHRMb2FkRGVsZWdhdGVUZXN0LCBTaW1wbGVMb2FkRmFpbCkKICAgICBib29sIHNp
bXBsZUxvYWRGYWlsRG9uZSA9IGZhbHNlOwogCiAgICAgLy8gQWRkIHRoZSBsb2FkIGRlbGVnYXRl
LgotICAgIFNpbXBsZUxvYWRGYWlsRGVsZWdhdGUgKmxvYWREZWxlZ2F0ZSA9IFtbU2ltcGxlTG9h
ZEZhaWxEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhGbGFnOiZzaW1wbGVMb2FkRmFpbERvbmVdOwot
ICAgIHZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBsb2FkRGVs
ZWdhdGU7CisgICAgYXV0byBsb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbU2ltcGxlTG9hZEZhaWxE
ZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhGbGFnOiZzaW1wbGVMb2FkRmFpbERvbmVdKTsKKyAgICB2
aWV3LmdldCgpLmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gbG9hZERl
bGVnYXRlLmdldCgpOwogCiAgICAgLy8gTG9hZCBhIG5vbi1leGlzdGVudCBmaWxlLgogICAgIE5T
VVJMICpuc1VSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiZmlsZTovLy9kb2VzLW5vdC1leGlz
dC5odG1sIl07Ci0gICAgW3ZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2FkRmlsZVVS
TDpuc1VSTCByZXN0cmljdFRvRmlsZXNXaXRoaW46bmlsXTsKKyAgICBbdmlldy5nZXQoKS5icm93
c2luZ0NvbnRleHRDb250cm9sbGVyIGxvYWRGaWxlVVJMOm5zVVJMIHJlc3RyaWN0VG9GaWxlc1dp
dGhpbjpuaWxdOwogCiAgICAgLy8gV2FpdCBmb3IgdGhlIGxvYWQgdG8gZmFpbC4KICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJnNpbXBsZUxvYWRGYWlsRG9uZSk7CiAKICAgICAvLyBUZWFy
IGRvd24gdGhlIGRlbGVnYXRlLgotICAgIHZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5s
b2FkRGVsZWdhdGUgPSBuaWw7Ci0gICAgW2xvYWREZWxlZ2F0ZSByZWxlYXNlXTsKKyAgICB2aWV3
LmdldCgpLmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gbmlsOwogfQog
CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9pb3MvV0tTY3JvbGxWaWV3RGVsZWdhdGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL2lvcy9XS1Njcm9sbFZpZXdEZWxlZ2F0ZS5tbQppbmRleCA1NDc0M2RhZTEzNmQ3MDdl
OWZiNjUwNTgzNzRiZWE4ZDRmOTdiOTViLi5kMjI4YzIzZDFkZTNhZTRkMDE0NjY4NTYxZTgxODI2
NGY2NmU2YWVlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9XS1Nj
cm9sbFZpZXdEZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9X
S1Njcm9sbFZpZXdEZWxlZ2F0ZS5tbQpAQCAtNTUsMTIgKzU1LDEyIEBAIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKIFRFU1QoV0tXZWJWaWV3LCBXS1Njcm9sbFZpZXdEZWxlZ2F0ZUNyYXNoKQog
ewogICAgIFdLV2ViVmlldyAqd2ViVmlldyA9IFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0XTsKLSAg
ICBUZXN0RGVsZWdhdGVGb3JTY3JvbGxWaWV3ICpkZWxlZ2F0ZUZvclNjcm9sbFZpZXcgPSBbW1Rl
c3REZWxlZ2F0ZUZvclNjcm9sbFZpZXcgYWxsb2NdIGluaXRdOworICAgIGF1dG8gZGVsZWdhdGVG
b3JTY3JvbGxWaWV3ID0gYWRvcHROUyhbW1Rlc3REZWxlZ2F0ZUZvclNjcm9sbFZpZXcgYWxsb2Nd
IGluaXRdKTsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgd2ViVmlldy5zY3JvbGxW
aWV3LmRlbGVnYXRlID0gZGVsZWdhdGVGb3JTY3JvbGxWaWV3OworICAgICAgICB3ZWJWaWV3LnNj
cm9sbFZpZXcuZGVsZWdhdGUgPSBkZWxlZ2F0ZUZvclNjcm9sbFZpZXcuZ2V0KCk7CiAgICAgfQog
ICAgIGRlbGVnYXRlSXNEZWFsbG9jYXRlZCA9IGZhbHNlOwotICAgIFtkZWxlZ2F0ZUZvclNjcm9s
bFZpZXcgcmVsZWFzZV07CisgICAgZGVsZWdhdGVGb3JTY3JvbGxWaWV3ID0gbmlsOwogICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGVsZWdhdGVJc0RlYWxsb2NhdGVkKTsKIAogICAgIEVY
UEVDVF9OVUxMKHdlYlZpZXcuc2Nyb2xsVmlldy5kZWxlZ2F0ZSk7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9DYW5kaWRhdGVUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvbWFjL0NhbmRpZGF0ZVRlc3RzLm1tCmluZGV4IDdjNWUwNmEyNDYxNzli
ZWY4ZTgzOTdhN2UyYzFmNTIyMDZlZTYyODEuLmFiZmNjYTIxMTAxZTBmMTA3Y2ZhZmNlODdmZTU0
OWU3NDFhMjA1Y2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0Nh
bmRpZGF0ZVRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NhbmRp
ZGF0ZVRlc3RzLm1tCkBAIC04OSw3ICs4OSw3IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
IAogVEVTVChDYW5kaWRhdGVUZXN0cywgRElTQUJMRURfRG9Ob3RMZWFrVmlld1RoYXRMb2Fkc0Vk
aXRhYmxlQXJlYSkKIHsKLSAgICBEb05vdExlYWtXZWJWaWV3ICp3ZWJWaWV3ID0gW1tEb05vdExl
YWtXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDAp
XTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbRG9Ob3RMZWFrV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKV0pOwogICAgIERvTm90TGVh
a0ZyYW1lTG9hZERlbGVnYXRlICpkZWxlZ2F0ZSA9IFtbRG9Ob3RMZWFrRnJhbWVMb2FkRGVsZWdh
dGUgYWxsb2NdIGluaXRdOwogICAgIFt3ZWJWaWV3IHNldEZyYW1lTG9hZERlbGVnYXRlOmRlbGVn
YXRlXTsKICAgICAKQEAgLTk5LDEzICs5OSwxMyBAQCBURVNUKENhbmRpZGF0ZVRlc3RzLCBESVNB
QkxFRF9Eb05vdExlYWtWaWV3VGhhdExvYWRzRWRpdGFibGVBcmVhKQogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkaWRDYWxsU2hvd0NhbmRpZGF0ZXMpOwogCi0gICAgW3dlYlZpZXcgcmVsZWFzZV07Cisg
ICAgd2ViVmlldyA9IG5pbDsKICAgICBFWFBFQ1RfVFJVRSh3ZWJWaWV3V2FzRGVhbGxvY2F0ZWQp
OwogfQogCiBURVNUKENhbmRpZGF0ZVRlc3RzLCBESVNBQkxFRF9SZXF1ZXN0Q2FuZGlkYXRlc0Zv
clRleHRJbnB1dCkKIHsKLSAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW1tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApXTsKKyAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDEwMCwgMTAwKV0pOwogICAgIFt3ZWJWaWV3IGZvcmNlUmVxdWVzdENhbmRpZGF0ZXNGb3JU
ZXN0aW5nXTsKICAgICBDYW5kaWRhdGVSZXF1ZXN0RnJhbWVMb2FkRGVsZWdhdGUgKmRlbGVnYXRl
ID0gW1tDYW5kaWRhdGVSZXF1ZXN0RnJhbWVMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdOwogICAg
IFt3ZWJWaWV3IHNldEZyYW1lTG9hZERlbGVnYXRlOmRlbGVnYXRlXTsKQEAgLTEyMCw3ICsxMjAs
NyBAQCBURVNUKENhbmRpZGF0ZVRlc3RzLCBESVNBQkxFRF9SZXF1ZXN0Q2FuZGlkYXRlc0ZvclRl
eHRJbnB1dCkKICAgICBpZiAoW3dlYlZpZXcgc2hvdWxkUmVxdWVzdENhbmRpZGF0ZXNdKQogICAg
ICAgICBjYW5kaWRhdGVzV2VyZVJlcXVlc3RlZCA9IHRydWU7CiAKLSAgICBbd2ViVmlldyByZWxl
YXNlXTsKKyAgICB3ZWJWaWV3ID0gbmlsOwogICAgIEVYUEVDVF9UUlVFKGNhbmRpZGF0ZXNXZXJl
UmVxdWVzdGVkKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9t
YWMvRE9NTm9kZUZyb21KU09iamVjdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFj
L0RPTU5vZGVGcm9tSlNPYmplY3QubW0KaW5kZXggMmIxMTliODdmNDlhNDljMzJkNzJmZWNlOGQ3
MjNiZjM4NTJlYTU1OS4uYWE2OTg5NDQ3ZTgwOGY4MjFiYzNkMTI4MmM2MDY2YjZlNTUzYWExZSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRE9NTm9kZUZyb21KU09i
amVjdC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9ET01Ob2RlRnJvbUpT
T2JqZWN0Lm1tCkBAIC0zMCwxMiArMzAsMTMgQEAKICNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZVBy
aXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJTY3JpcHRXb3JsZC5oPgogI2ltcG9ydCA8b2Jq
Yy9ydW50aW1lLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKIAogVEVTVChXZWJLaXRMZWdhY3ksIERPTU5vZGVGcm9tSlNPYmplY3QpCiB7
Ci0gICAgV2ViVmlldyAqd2ViVmlldyA9IFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U1plcm9SZWN0IGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF07CisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBmcmFt
ZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKIAogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOkAiZG9jdW1lbnQuYm9keS5tYWluV29ybGRQcm9wZXJ0
eSA9IHRydWUiXTsKIApAQCAtNTQsOCArNTUsNiBAQCBURVNUKFdlYktpdExlZ2FjeSwgRE9NTm9k
ZUZyb21KU09iamVjdCkKIAogICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBPYmplY3RpdmUtQyB3cmFw
cGVyIGlzIGZvciB0aGUgbWFpbiB3b3JsZCBKUyB3cmFwcGVyLgogICAgIEVYUEVDVF9UUlVFKFtb
b2JqY0JvZHkgdmFsdWVGb3JLZXk6QCJtYWluV29ybGRQcm9wZXJ0eSJdIGJvb2xWYWx1ZV0pOwot
Ci0gICAgW3dlYlZpZXcgcmVsZWFzZV07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1N1YnJlc291cmNl
RXJyb3JDcmFzaC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1N1YnJlc291cmNl
RXJyb3JDcmFzaC5tbQppbmRleCA0N2MxMTZkNzBkYzA5M2RmYzJhMGE1NzRmMGM1ZTE5NTNkMjM3
M2EzLi43MTM0Yzc2ZGEwYzBiMmVmNjBlNGZkYzZjZmZhN2UyYjA3NTUyYzc2IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9TdWJyZXNvdXJjZUVycm9yQ3Jhc2gubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvU3VicmVzb3VyY2VFcnJvckNyYXNo
Lm1tCkBAIC0yNSwxMyArMjUsMTUgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAKKyNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KKwogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUKFdl
YktpdExlZ2FjeSwgU3VicmVzb3VyY2VFcnJvckNyYXNoKQogewotICAgIFdlYlZpZXcgKndlYlZp
ZXcgPSBbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBmcmFtZU5hbWU6
QCIiIGdyb3VwTmFtZTpAIiJdOwotICAgIFt3ZWJWaWV3Lm1haW5GcmFtZSBsb2FkSFRNTFN0cmlu
ZzpAIjxsaW5rIHJlbD1zdHlsZXNoZWV0IGhyZWY9J3gtZXJyb3I6ZXJyb3InPiIgYmFzZVVSTDpu
aWxdOwotICAgIFt3ZWJWaWV3IHJlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgZnJhbWVOYW1lOkAiIiBn
cm91cE5hbWU6QCIiXSk7CisgICAgW1t3ZWJWaWV3IG1haW5GcmFtZV0gbG9hZEhUTUxTdHJpbmc6
QCI8bGluayByZWw9c3R5bGVzaGVldCBocmVmPSd4LWVycm9yOmVycm9yJz4iIGJhc2VVUkw6bmls
XTsKKyAgICB3ZWJWaWV3ID0gbmlsOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9UeXBpbmdTdHlsZUNy
YXNoLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvVHlwaW5nU3R5bGVDcmFzaC5t
bQppbmRleCA0OTI4Mjg5ZmVlODlmNjBlNWI4YjgxYmIyZGZkYWYzMmY2NmE2ZWU2Li4zZTBmNTVm
OWJkMWQxM2VlZmZkODgyZGJiYjA3MzY5ZjA4NmVjZDQ2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL21hYy9UeXBpbmdTdHlsZUNyYXNoLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvbWFjL1R5cGluZ1N0eWxlQ3Jhc2gubW0KQEAgLTI1LDEzICsyNSwxNSBA
QAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCiBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1QoV2ViS2l0TGVnYWN5LCBUeXBpbmdTdHls
ZUNyYXNoKQogewotICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbW1dlYlZpZXcgYWxsb2NdIGluaXRd
OworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0XSk7CiAg
ICAgKHZvaWQpW3dlYlZpZXcgdHlwaW5nU3R5bGVdOwotICAgIFt3ZWJWaWV3IHJlbGVhc2VdOwor
ICAgIHdlYlZpZXcgPSBuaWw7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlNjcmlwdE9iamVjdERl
c2NyaXB0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2ViU2NyaXB0T2Jq
ZWN0RGVzY3JpcHRpb24ubW0KaW5kZXggMjZkNzc0MTlmNDU5MmMzMTAwOGMwMjRlZDE3YTg1OWU0
Y2U1ZWExMS4uNWFhODEzOGIwYWM2NjZmNzhlODNjMDkwZmQxMjcxMzk3YjE4YzI1NyAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2ViU2NyaXB0T2JqZWN0RGVzY3Jp
cHRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2ViU2NyaXB0T2Jq
ZWN0RGVzY3JpcHRpb24ubW0KQEAgLTYyLDcgKzYyLDcgQEAgVEVTVChXZWJLaXRMZWdhY3ksIFdl
YlNjcmlwdE9iamVjdERlc2NyaXB0aW9uKQogewogICAgIFJldGFpblB0cjxXZWJWaWV3PiB3ZWJW
aWV3ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7CiAgICAgUmV0YWlu
UHRyPFdlYlNjcmlwdERlc2NyaXB0aW9uVGVzdD4gdGVzdENvbnRyb2xsZXIgPSBhZG9wdE5TKFtX
ZWJTY3JpcHREZXNjcmlwdGlvblRlc3QgbmV3XSk7Ci0gICAgTlNPYmplY3QgKm9iamVjdCA9IFtb
TlNPYmplY3QgYWxsb2NdIGluaXRdOworICAgIGF1dG8gb2JqZWN0ID0gYWRvcHROUyhbW05TT2Jq
ZWN0IGFsbG9jXSBpbml0XSk7CiAKICAgICB3ZWJWaWV3LmdldCgpLmZyYW1lTG9hZERlbGVnYXRl
ID0gdGVzdENvbnRyb2xsZXIuZ2V0KCk7CiAgICAgW1t3ZWJWaWV3LmdldCgpIG1haW5GcmFtZV0g
bG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5C
dW5kbGVdCkBAIC03MiwxNCArNzIsMTMgQEAgVEVTVChXZWJLaXRMZWdhY3ksIFdlYlNjcmlwdE9i
amVjdERlc2NyaXB0aW9uKQogICAgIGRpZEZpbmlzaExvYWQgPSBmYWxzZTsKICAgICBmYWlsZWRP
YmpDRGVzY3JpcHRpb24gPSBmYWxzZTsKIAotICAgIHN0ZDo6dGhyZWFkIHRocmVhZDEobnNPYmpl
Y3REZXNjcmlwdGlvblRlc3QsIG9iamVjdCk7CisgICAgc3RkOjp0aHJlYWQgdGhyZWFkMShuc09i
amVjdERlc2NyaXB0aW9uVGVzdCwgb2JqZWN0LmdldCgpKTsKIAotICAgIENGQm9vbGVhblJlZiBy
ZXN1bHQgPSAoQ0ZCb29sZWFuUmVmKShbW3dlYlZpZXcuZ2V0KCkgd2luZG93U2NyaXB0T2JqZWN0
XSBjYWxsV2ViU2NyaXB0TWV0aG9kOkAiZm9vIiB3aXRoQXJndW1lbnRzOkBbIG9iamVjdCBdXSk7
CisgICAgQ0ZCb29sZWFuUmVmIHJlc3VsdCA9IChDRkJvb2xlYW5SZWYpKFtbd2ViVmlldy5nZXQo
KSB3aW5kb3dTY3JpcHRPYmplY3RdIGNhbGxXZWJTY3JpcHRNZXRob2Q6QCJmb28iIHdpdGhBcmd1
bWVudHM6QFsgb2JqZWN0LmdldCgpIF1dKTsKICAgICBFWFBFQ1RfRVEoQ0ZCb29sZWFuR2V0VmFs
dWUocmVzdWx0KSwgdHJ1ZSk7CiAKICAgICB0aHJlYWQxLmpvaW4oKTsKICAgICBFWFBFQ1RfRVEo
ZmFpbGVkT2JqQ0Rlc2NyaXB0aW9uLCBmYWxzZSk7Ci0gICAgW29iamVjdCByZWxlYXNlXTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9tYWMvV2ViVmlld0NhblBhc3RlVVJMLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9tYWMvV2ViVmlld0NhblBhc3RlVVJMLm1tCmluZGV4IDRiMjllNzlkYjdkODc2
M2UwYmFkMWU2YjNiYTIyOWFlZjcxYjNiZTIuLmMxN2E2Mjg1NzFkMjg5MTVmZTJiOWVmNTExODcy
MDYzNWIwYjgzYTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dl
YlZpZXdDYW5QYXN0ZVVSTC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9X
ZWJWaWV3Q2FuUGFzdGVVUkwubW0KQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgewogCiBURVNUKFdlYktpdExlZ2FjeSwgV2ViVmlld0NhblBhc3RlVVJMKQogewotICAg
IFdlYlZpZXcgKndlYlZpZXcgPSBbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJv
UmVjdCBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdOworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgZnJhbWVOYW1l
Om5pbCBncm91cE5hbWU6bmlsXSk7CiAgICAgW3dlYlZpZXcgc2V0RWRpdGFibGU6WUVTXTsKIAog
ICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBkZWNsYXJlVHlwZXM6QFtOU1VS
TFBib2FyZFR5cGVdIG93bmVyOm5pbF07CkBAIC00Nyw4ICs0Nyw2IEBAIFRFU1QoV2ViS2l0TGVn
YWN5LCBXZWJWaWV3Q2FuUGFzdGVVUkwpCiAgICAgTlNTdHJpbmcgKnRleHQgPSBbYW5jaG9yIGhy
ZWZdOwogICAgIAogICAgIEVYUEVDVF9FUShTdHJpbmcoImh0dHA6Ly93d3cud2Via2l0Lm9yZy8i
KSwgU3RyaW5nKHRleHQpKTsKLSAgICAKLSAgICBbd2ViVmlldyByZWxlYXNlXTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9tYWMvV2ViVmlld0NhblBhc3RlWmVyb1BuZy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvbWFjL1dlYlZpZXdDYW5QYXN0ZVplcm9QbmcubW0KaW5kZXggZmEyZTJhYTk2N2Fi
YTIzMWE3NzA3MGQyYzE3MGExOGViMWJkZjhhMi4uZmNhMWFlZDVjZTJlZTE5ZDE2MmY3NjNiYTc2
YTgwOWE1NGU2YzgyOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMv
V2ViVmlld0NhblBhc3RlWmVyb1BuZy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9XZWJWaWV3Q2FuUGFzdGVaZXJvUG5nLm1tCkBAIC0zNCwxNSArMzQsMTMgQEAgbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUKFdlYktpdExlZ2FjeSwgV2ViVmlld0NhblBhc3Rl
WmVyb1BuZykKIHsKLSAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW1tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TWmVyb1JlY3QgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXTsKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1pl
cm9SZWN0IGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOwogICAgIFt3ZWJWaWV3IHNldEVk
aXRhYmxlOllFU107CiAgICAgCiAgICAgLy9wYXN0aW5nIGEgMHgwIGltYWdlIGFzIHBkZiBib2Fy
ZCB0eXBlLiBSZWZlcnJpbmcgdG8gPHJkYXI6Ly9wcm9ibGVtLzExMTQxOTIwPgogICAgIFtbTlNQ
YXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBkZWNsYXJlVHlwZXM6QFtOU1BERlBib2FyZFR5
cGVdIG93bmVyOm5pbF07CiAgICAgW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3Vy
Y2U6QCIwIiB3aXRoRXh0ZW5zaW9uOkAicG5nIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJ
LnJlc291cmNlcyJdIHdyaXRlVG9QYXN0ZWJvYXJkOltOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3Rl
Ym9hcmRdXTsKICAgICBbd2ViVmlldyBwYXN0ZTpuaWxdOwotICAgIAotICAgIFt3ZWJWaWV3IHJl
bGVhc2VdOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XZWJWaWV3RGlkQ3JlYXRlSmF2YVNjcmlwdENv
bnRleHQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XZWJWaWV3RGlkQ3JlYXRl
SmF2YVNjcmlwdENvbnRleHQubW0KaW5kZXggYTBmMzQ4MTM0YWU0NTQ4MWU0YjZlZWY4ZWJiYjll
ODZhZWMyZjYxOS4uNDExYWZkN2M1NTA1ZmQ3ZjBjZmY4ZDYxM2QwNWU5ZTE4YzQwNmE5MSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2ViVmlld0RpZENyZWF0ZUph
dmFTY3JpcHRDb250ZXh0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dl
YlZpZXdEaWRDcmVhdGVKYXZhU2NyaXB0Q29udGV4dC5tbQpAQCAtODAsMTAgKzgwLDkgQEAgLSAo
dm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRpZEZpbmlzaExvYWRGb3JGcmFtZTooV2Vi
RnJhbWUgKilmcmFtZQogCiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRpZENy
ZWF0ZUphdmFTY3JpcHRDb250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0IGZvckZyYW1lOihXZWJG
cmFtZSAqKWZyYW1lCiB7Ci0gICAgTXlDb25zb2xlICpteUNvbnNvbGUgPSBbW015Q29uc29sZSBh
bGxvY10gaW5pdF07Ci0gICAgY29udGV4dFtAIm15Q29uc29sZSJdID0gbXlDb25zb2xlOworICAg
IGF1dG8gbXlDb25zb2xlID0gYWRvcHROUyhbW015Q29uc29sZSBhbGxvY10gaW5pdF0pOworICAg
IGNvbnRleHRbQCJteUNvbnNvbGUiXSA9IG15Q29uc29sZS5nZXQoKTsKICAgICBjb250ZXh0LmV4
Y2VwdGlvbkhhbmRsZXIgPSBuaWw7Ci0gICAgW215Q29uc29sZSByZWxlYXNlXTsKIAogICAgIGNv
bnRleHRbQCJ3aW5kb3dDYWxsYmFjayJdID0gXihKU1ZhbHVlICp0aGlzT2JqZWN0KXsKICAgICAg
ICAgZGlkQ2FsbFdpbmRvd0NhbGxiYWNrID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdFByb3RvY29sLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0UHJvdG9jb2wubW0KaW5kZXggZTNjYTRhZjc0M2M5NzkzNGM3M2NlMTgzZmUzNzI2NDc3
NmZmMjZmNy4uYWZkNmRkYzliN2U5MjJmYjY3Y2FiNzliNjBjOTA3NTAwOTFkYTgzMiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UHJvdG9jb2wubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UHJvdG9jb2wubW0KQEAgLTI3LDE5ICsyNywyNCBA
QAogI2ltcG9ydCAiVGVzdFByb3RvY29sLmgiCiAKICNpbXBvcnQgPFdlYktpdC9XS0Jyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBv
cnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KICNlbmRpZgogCi1z
dGF0aWMgTlNTdHJpbmcgKnRlc3RTY2hlbWU7CitzdGF0aWMgUmV0YWluUHRyPE5TU3RyaW5nPiYg
dGVzdFNjaGVtZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU1N0
cmluZz4+IF90ZXN0U2NoZW1lOworICAgIHJldHVybiBfdGVzdFNjaGVtZTsKK30KIAogQGltcGxl
bWVudGF0aW9uIFRlc3RQcm90b2NvbAogCiArIChCT09MKWNhbkluaXRXaXRoUmVxdWVzdDooTlNV
UkxSZXF1ZXN0ICopcmVxdWVzdAogewotICAgIHJldHVybiBbcmVxdWVzdC5VUkwuc2NoZW1lIGNh
c2VJbnNlbnNpdGl2ZUNvbXBhcmU6dGVzdFNjaGVtZV0gPT0gTlNPcmRlcmVkU2FtZTsKKyAgICBy
ZXR1cm4gW3JlcXVlc3QuVVJMLnNjaGVtZSBjYXNlSW5zZW5zaXRpdmVDb21wYXJlOnRlc3RTY2hl
bWUoKS5nZXQoKV0gPT0gTlNPcmRlcmVkU2FtZTsKIH0KIAogKyAoTlNVUkxSZXF1ZXN0ICopY2Fu
b25pY2FsUmVxdWVzdEZvclJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKQEAgLTU0LDIy
ICs1OSwyMSBAQCArIChCT09MKXJlcXVlc3RJc0NhY2hlRXF1aXZhbGVudDooTlNVUkxSZXF1ZXN0
ICopYSB0b1JlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKWIKIAogKyAoTlNTdHJpbmcgKilzY2hlbWUK
IHsKLSAgICByZXR1cm4gdGVzdFNjaGVtZTsKKyAgICByZXR1cm4gdGVzdFNjaGVtZSgpLmdldCgp
OwogfQogCiArICh2b2lkKXJlZ2lzdGVyV2l0aFNjaGVtZTooTlNTdHJpbmcgKilzY2hlbWUKIHsK
LSAgICB0ZXN0U2NoZW1lID0gW3NjaGVtZSByZXRhaW5dOworICAgIHRlc3RTY2hlbWUoKSA9IHNj
aGVtZTsKICAgICBbTlNVUkxQcm90b2NvbCByZWdpc3RlckNsYXNzOltzZWxmIGNsYXNzXV07Ci0g
ICAgW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciByZWdpc3RlclNjaGVtZUZvckN1c3RvbVBy
b3RvY29sOnRlc3RTY2hlbWVdOworICAgIFtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgcmVn
aXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbDpzY2hlbWVdOwogfQogCiArICh2b2lkKXVucmVn
aXN0ZXIKIHsKLSAgICBbV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIHVucmVnaXN0ZXJTY2hl
bWVGb3JDdXN0b21Qcm90b2NvbDp0ZXN0U2NoZW1lXTsKKyAgICBbV0tCcm93c2luZ0NvbnRleHRD
b250cm9sbGVyIHVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbDp0ZXN0U2NoZW1lKCku
Z2V0KCldOwogICAgIFtOU1VSTFByb3RvY29sIHVucmVnaXN0ZXJDbGFzczpbc2VsZiBjbGFzc11d
OwotICAgIFt0ZXN0U2NoZW1lIHJlbGVhc2VdOwotICAgIHRlc3RTY2hlbWUgPSBuaWw7CisgICAg
dGVzdFNjaGVtZSgpID0gbmlsOwogfQogCiBzdGF0aWMgTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICos
IE5TU3RyaW5nICo+ICphZGRpdGlvbmFsUmVzcG9uc2VIZWFkZXJzOwpAQCAtODcsNyArOTEsNyBA
QCArICh2b2lkKXNldEFkZGl0aW9uYWxSZXNwb25zZUhlYWRlcnM6KE5TRGljdGlvbmFyeTxOU1N0
cmluZyAqLCBOU1N0cmluZyAqPiAqKWFkZAogCiBzdGF0aWMgTlNVUkwgKmNyZWF0ZVJlZGlyZWN0
VVJMKE5TU3RyaW5nICpxdWVyeSkKIHsKLSAgICByZXR1cm4gW05TVVJMIFVSTFdpdGhTdHJpbmc6
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQDovLyVAIiwgdGVzdFNjaGVtZSwgcXVlcnld
XTsKKyAgICByZXR1cm4gW05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCIlQDovLyVAIiwgdGVzdFNjaGVtZSgpLmdldCgpLCBxdWVyeV1dOwogfQogCiBzdGF0
aWMgTlNTdHJpbmcgKmNvbnRlbnRUeXBlRm9yRmlsZUV4dGVuc2lvbihOU1N0cmluZyAqZmlsZUV4
dGVuc2lvbikKQEAgLTEwMCw3ICsxMDQsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKmNvbnRlbnRUeXBl
Rm9yRmlsZUV4dGVuc2lvbihOU1N0cmluZyAqZmlsZUV4dGVuc2lvbikKIC0gKHZvaWQpc3RhcnRM
b2FkaW5nCiB7CiAgICAgTlNVUkwgKnJlcXVlc3RVUkwgPSBzZWxmLnJlcXVlc3QuVVJMOwotICAg
IEVYUEVDVF9UUlVFKFtyZXF1ZXN0VVJMLnNjaGVtZSBpc0VxdWFsVG9TdHJpbmc6dGVzdFNjaGVt
ZV0pOworICAgIEVYUEVDVF9UUlVFKFtyZXF1ZXN0VVJMLnNjaGVtZSBpc0VxdWFsVG9TdHJpbmc6
dGVzdFNjaGVtZSgpLmdldCgpXSk7CiAKICAgICBpZiAoW3JlcXVlc3RVUkwuaG9zdCBpc0VxdWFs
VG9TdHJpbmc6QCIzMDctcmVkaXJlY3QiXSkgewogICAgICAgICBSZXRhaW5QdHI8TlNIVFRQVVJM
UmVzcG9uc2U+IHJlc3BvbnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBp
bml0V2l0aFVSTDpyZXF1ZXN0VVJMIHN0YXR1c0NvZGU6MzA3IEhUVFBWZXJzaW9uOkAiSFRUUC8x
LjEiIGhlYWRlckZpZWxkczpAe0AiQ29udGVudC1UeXBlIiA6IEAidGV4dC9odG1sIn1dKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL0luamVjdGVkQnVuZGxlQ29udHJvbGxl
ck1hYy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL0luamVjdGVkQnVuZGxlQ29udHJvbGxl
ck1hYy5tbQppbmRleCA0MDExNDA1MGIxZDY0ZjQ1ODhlNmVjYzYyYjk5M2ZkYWM0MTUxN2IyLi40
NDNlYzIwOGQ1OTUwNTFmMmEyNWQyMDRlYWU0NTYwNTgyZWNmYmE0IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL21hYy9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXJNYWMubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyTWFjLm1tCkBA
IC0yNywxNSArMjcsMTYgQEAKICNpbXBvcnQgIkluamVjdGVkQnVuZGxlQ29udHJvbGxlci5oIgog
CiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiB2b2lkIEluamVjdGVkQnVuZGxl
Q29udHJvbGxlcjo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIHsKICAgICAvLyBTZXQgdXAgdXNlciBk
ZWZhdWx0cy4KLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICphcmd1bWVudERvbWFpbiA9IFtbW05T
VXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSB2b2xhdGlsZURvbWFpbkZvck5hbWU6
TlNBcmd1bWVudERvbWFpbl0gbXV0YWJsZUNvcHldOworICAgIGF1dG8gYXJndW1lbnREb21haW4g
PSBhZG9wdE5TKFtbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSB2b2xhdGls
ZURvbWFpbkZvck5hbWU6TlNBcmd1bWVudERvbWFpbl0gbXV0YWJsZUNvcHldKTsKICAgICBpZiAo
IWFyZ3VtZW50RG9tYWluKQotICAgICAgICBhcmd1bWVudERvbWFpbiA9IFtbTlNNdXRhYmxlRGlj
dGlvbmFyeSBhbGxvY10gaW5pdF07CisgICAgICAgIGFyZ3VtZW50RG9tYWluID0gYWRvcHROUyhb
W05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKIAogICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgc2V0IHRoZXNlIGluIHRoZSBVSSBwcm9jZXNzIGFuZCBwcm9wYWdhdGUgdGhlbSB0byB0
aGUKICAgICAvLyBXZWIgQ29udGVudCBwcm9jZXNzIGF0IHByb2Nlc3MgbGF1bmNoIHRpbWUsIGJl
Y2F1c2UgbW9zdCB0ZXN0cyBkbyBub3QKQEAgLTQ3LDkgKzQ4LDcgQEAgdm9pZCBJbmplY3RlZEJ1
bmRsZUNvbnRyb2xsZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAgICAgfTsKIAogICAgIFthcmd1
bWVudERvbWFpbiBhZGRFbnRyaWVzRnJvbURpY3Rpb25hcnk6ZGljdF07Ci0gICAgW1tOU1VzZXJE
ZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Vm9sYXRpbGVEb21haW46YXJndW1lbnRE
b21haW4gZm9yTmFtZTpOU0FyZ3VtZW50RG9tYWluXTsKLQotICAgIFthcmd1bWVudERvbWFpbiBy
ZWxlYXNlXTsKKyAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRW
b2xhdGlsZURvbWFpbjphcmd1bWVudERvbWFpbi5nZXQoKSBmb3JOYW1lOk5TQXJndW1lbnREb21h
aW5dOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0gYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KaW5kZXggZDY5NGMx
YzkyYzNkZWEzNTlhN2IxNTg2YTY1ZGNlY2VmNzQyMzJiYi4uNjViMThkMzc5NGJkMjAzZDZlOGY1
ODJmNjlmZmYxNjkwNzBjYzQxMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9j
b2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
Y29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQpAQCAtNjQsNyArNjQsNyBAQCBzdGF0aWMgVGVz
dFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZSAqZ2xvYmFsV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRl
Q2xpZW50OwogCiB2b2lkIGluaXRpYWxpemVXZWJWaWV3Q29uZmlndXJhdGlvbihjb25zdCBjaGFy
KiBsaWJyYXJ5UGF0aCwgV0tTdHJpbmdSZWYgaW5qZWN0ZWRCdW5kbGVQYXRoLCBXS0NvbnRleHRS
ZWYgY29udGV4dCwgV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBjb250ZXh0Q29uZmlndXJhdGlv
bikKIHsKLSAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24gcmVsZWFzZV07CisgICAgYXV0
byBvbGRHbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoZ2xvYmFsV2ViVmlld0Nv
bmZpZ3VyYXRpb24pOwogICAgIGdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uID0gW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XTsKIAogICAgIGdsb2JhbFdlYlZpZXdDb25maWd1
cmF0aW9uLnByb2Nlc3NQb29sID0gKF9fYnJpZGdlIFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0OwpA
QCAtNzMsNyArNzMsNyBAQCB2b2lkIGluaXRpYWxpemVXZWJWaWV3Q29uZmlndXJhdGlvbihjb25z
dCBjaGFyKiBsaWJyYXJ5UGF0aCwgV0tTdHJpbmdSZWYgaW5qZWN0ZQogICAgIGdsb2JhbFdlYlZp
ZXdDb25maWd1cmF0aW9uLl9hbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzID0gWUVTOwogICAg
IGdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLl9hcHBsZVBheUVuYWJsZWQgPSBZRVM7CiAKLSAg
ICBbZ2xvYmFsV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlQ2xpZW50IHJlbGVhc2VdOworICAgIGF1
dG8gb2xkR2xvYmFsV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlQ2xpZW50ID0gYWRvcHROUyhnbG9i
YWxXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGVDbGllbnQpOwogICAgIGdsb2JhbFdlYnNpdGVEYXRh
U3RvcmVEZWxlZ2F0ZUNsaWVudCA9IFtbVGVzdFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZSBhbGxv
Y10gaW5pdF07CiAgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3Rv
cmUgc2V0X2RlbGVnYXRlOmdsb2JhbFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNsaWVudF07CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lP
Uy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lPUy5tbQpp
bmRleCBlODA2ZDY3M2EwY2FhYzkwNWQ4ZmNlNTlmNDM5ZGNjMTI5OTU4MTc3Li44NjFjMzFiOGVl
YWYyNWVkMDRjNDhlYWVjYWRmZGI3MGMyMmVkMzRlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2lvcy9QbGF0Zm9ybVdlYlZpZXdJT1MubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3SU9TLm1tCkBAIC0zMDEsMTAgKzMwMSw5IEBAIHZv
aWQgUGxhdGZvcm1XZWJWaWV3OjpkaWRJbml0aWFsaXplQ2xpZW50cygpCiAKIHZvaWQgUGxhdGZv
cm1XZWJWaWV3OjphZGRDaHJvbWVJbnB1dEZpZWxkKCkKIHsKLSAgICBVSVRleHRGaWVsZCogdGV4
dEZpZWxkID0gW1tVSVRleHRGaWVsZCBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAs
IDAsIDEwMCwgMjApXTsKLSAgICB0ZXh0RmllbGQudGFnID0gMTsKLSAgICBbbV93aW5kb3cgYWRk
U3Vidmlldzp0ZXh0RmllbGRdOwotICAgIFt0ZXh0RmllbGQgcmVsZWFzZV07CisgICAgYXV0byB0
ZXh0RmllbGQgPSBhZG9wdE5TKFtbVUlUZXh0RmllbGQgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dS
ZWN0TWFrZSgwLCAwLCAxMDAsIDIwKV0pOworICAgIFt0ZXh0RmllbGQgc2V0VGFnOjFdOworICAg
IFttX3dpbmRvdyBhZGRTdWJ2aWV3OnRleHRGaWVsZC5nZXQoKV07CiB9CiAKIHZvaWQgUGxhdGZv
cm1XZWJWaWV3OjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxkKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0KaW5kZXgg
YjNhZDIzN2NhZDk1YjM2MTA3M2Y4YzkzNmI2YjhlNGNkM2RiNjk5OS4uMTMxOTlkMjRmNTQ5NWI4
YzIyMjA2ZjgzMGVjZTI3M2Y4M2ZkZWY5MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0KKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0KQEAgLTcyLDggKzcy
LDcgQEAgLSAodm9pZClfdXBkYXRlVHlwZUNhY2hlSWZOZWVkZWQKIAogKyAodm9pZClyZWxlYXNl
TG9jYWxQYXN0ZWJvYXJkcwogewotICAgIFtsb2NhbFBhc3RlYm9hcmRzIHJlbGVhc2VdOwotICAg
IGxvY2FsUGFzdGVib2FyZHMgPSBuaWw7CisgICAgYXV0byBvbGRMb2NhbFBhc3RlQm9hcmRzID0g
YWRvcHROUyhzdGQ6OmV4Y2hhbmdlKGxvY2FsUGFzdGVib2FyZHMsIG5pbCkpOwogfQogCiAvLyBD
b252ZW5pZW5jZSBtZXRob2QgZm9yIEpTIHNvIHRoYXQgaXQgZG9lc24ndCBoYXZlIHRvIHRyeSBh
bmQgY3JlYXRlIGEgTlNBcnJheSBvbiB0aGUgb2JqYyBzaWRlIGluc3RlYWQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420487</attachid>
            <date>2021-02-16 10:06:57 -0800</date>
            <delta_ts>2021-02-16 11:26:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221914-20210216100656.patch</filename>
            <type>text/plain</type>
            <size>127789</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyODcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YjQ0NjQzOTYwMGVkOWJiYTdhNzk5M2M1M2JiZWM5NmMyM2JkNDYzLi5mN2RlNjgwOTU3YjJhNmU0
MzI4Yzc4ZGMxMGRjNDk5YjdhNWNiZjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAyMS0wMi0xNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyByZWxlYXNlXSBpbiBXZWJL
aXQgZXZlbiBtb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjE5MTQKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisg
ICAgICAgICogQVBJL0pTQ29udGV4dC5tbToKKyAgICAgICAgKC1bSlNDb250ZXh0IGluaXRXaXRo
VmlydHVhbE1hY2hpbmU6XSk6CisgICAgICAgICgtW0pTQ29udGV4dCBkZWFsbG9jXSk6CisgICAg
ICAgICgtW0pTQ29udGV4dCB2aXJ0dWFsTWFjaGluZV0pOgorICAgICAgICAoLVtKU0NvbnRleHQg
aW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOl0pOgorICAgICAgICAqIEFQSS9KU01hbmFnZWRWYWx1
ZS5tbToKKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFsdWUgaW5pdFdpdGhWYWx1ZTpdKToKKyAgICAg
ICAgKC1bSlNNYW5hZ2VkVmFsdWUgZGVhbGxvY10pOgorICAgICAgICAoLVtKU01hbmFnZWRWYWx1
ZSBkaWRBZGRPd25lcjpdKToKKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFsdWUgZGlkUmVtb3ZlT3du
ZXI6XSk6CisgICAgICAgICogQVBJL0pTVmlydHVhbE1hY2hpbmUubW06CisgICAgICAgICgtW0pT
VmlydHVhbE1hY2hpbmUgaW5pdFdpdGhDb250ZXh0R3JvdXBSZWY6XSk6CisgICAgICAgICgtW0pT
VmlydHVhbE1hY2hpbmUgZGVhbGxvY10pOgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGNv
bnRleHRGb3JHbG9iYWxDb250ZXh0UmVmOl0pOgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5l
IGFkZENvbnRleHQ6Zm9yR2xvYmFsQ29udGV4dFJlZjpdKToKKyAgICAgICAgKC1bSlNWaXJ0dWFs
TWFjaGluZSBleHRlcm5hbE9iamVjdEdyYXBoXSk6CisgICAgICAgICgtW0pTVmlydHVhbE1hY2hp
bmUgZXh0ZXJuYWxSZW1lbWJlcmVkU2V0XSk6CisgICAgICAgICogQVBJL0pTV3JhcHBlck1hcC5t
bToKKyAgICAgICAgKGNyZWF0ZVJlbmFtZU1hcCk6CisgICAgICAgIChjb3B5TWV0aG9kc1RvT2Jq
ZWN0KToKKyAgICAgICAgKC1bSlNXcmFwcGVyTWFwIGluaXRXaXRoR2xvYmFsQ29udGV4dFJlZjpd
KToKKyAgICAgICAgKC1bSlNXcmFwcGVyTWFwIGNsYXNzSW5mb0ZvckNsYXNzOl0pOgorICAgICAg
ICAoLVtKU1dyYXBwZXJNYXAgb2JqY1dyYXBwZXJGb3JKU1ZhbHVlUmVmOmluQ29udGV4dDpdKToK
KyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfY29uZmln
dXJhdGlvbl9pbXBsZW1lbnRhdGlvbi5weToKKyAgICAgICAgKE9iakNDb25maWd1cmF0aW9uSW1w
bGVtZW50YXRpb25HZW5lcmF0b3IuX2dlbmVyYXRlX2NvbmZpZ3VyYXRpb25faW1wbGVtZW50YXRp
b25fZm9yX2RvbWFpbnMpOgorICAgICAgICAoT2JqQ0NvbmZpZ3VyYXRpb25JbXBsZW1lbnRhdGlv
bkdlbmVyYXRvci5fZ2VuZXJhdGVfaXZhcnMpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5OgorCiAyMDIxLTAyLTE1ICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
LCByZXZlcnRpbmcgcjI3MjgzMS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhNDczNThmYThmYTg5ODFjOGMyMTIz
OGU5ZTExYjZlMzNlMmVmNTU2Li5lNGIwNDhmN2FjZTJlNDE4N2FlMmYyMWM4MTdiODBiNmNiYWU3
MDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjEtMDItMTUgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2Yg
W29iakMgcmVsZWFzZV0gaW4gV2ViS2l0IGV2ZW4gbW9yZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxOTE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfaW5zdGFuY2Uu
bW06CisgICAgICAgIChPYmpjSW5zdGFuY2U6OnNldEdsb2JhbEV4Y2VwdGlvbik6CisgICAgICAg
IChPYmpjSW5zdGFuY2U6Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZSk6CisgICAgICAg
ICogYnJpZGdlL3Rlc3RiaW5kaW5ncy5tbToKKyAgICAgICAgKC1bTXlGaXJzdEludGVyZmFjZSBp
bml0XSk6CisgICAgICAgICgtW015Rmlyc3RJbnRlcmZhY2UgZ2V0TXlTZWNvbmRJbnRlcmZhY2Vd
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW06CisgICAgICAgIChzZXRH
bG9iYWxGb2N1c1ZpZXcpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lm1t
OgorICAgICAgICAoLVtXQUtXaW5kb3cgc2VuZEV2ZW50U3luY2hyb25vdXNseTpdKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW06CisgICAgICAgIChNYWluVGhy
ZWFkQWRvcHRBbmRSZWxlYXNlKToKKyAgICAgICAgKEhhbmRsZVdlYlRocmVhZFJlbGVhc2VTb3Vy
Y2UpOgorCiAyMDIxLTAyLTE1ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAg
ICAgICBQcmVwYXJlIGZvciBhZGRpbmcgcmVsYXRpdmUgY29sb3Igc3VwcG9ydApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc3ZGMxZjg5OWVjNjA4MmI4YzhhZDQyZDQ5YTYxNTk5Nzg0
ODM2ZjEuLmQxOGRiMmQyOTYyNTBlM2MxNmE3N2Q4YjNlNzc2ZTc3MDkxNzUyNTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NiBAQAorMjAyMS0wMi0xNSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2Fn
ZSBvZiBbb2JqQyByZWxlYXNlXSBpbiBXZWJLaXQgZXZlbiBtb3JlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE5MTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5Lm1t
OgorICAgICAgICAoK1tXZWJIaXN0b3J5IHNldE9wdGlvbmFsU2hhcmVkSGlzdG9yeTpdKToKKyAg
ICAgICAgKiBQbHVnaW5zL1dlYlBsdWdpbkRhdGFiYXNlLm1tOgorICAgICAgICAoK1tXZWJQbHVn
aW5EYXRhYmFzZSBzZXRBZGRpdGlvbmFsV2ViUGx1Z0luUGF0aHM6XSk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50
OjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1
cGRhdGVHbG9iYWxIaXN0b3J5KToKKyAgICAgICAgKE5ldHNjYXBlUGx1Z2luV2lkZ2V0OjpnZXRG
b3JtVmFsdWUpOgorICAgICAgICAqIFdlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5t
bToKKyAgICAgICAgKC1bV2ViTm9kZUhpZ2hsaWdodFZpZXcgX2F0dGFjaDpudW1MYXllcnM6XSk6
CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZVZpZXcubW06CisgICAgICAgICgtW1dlYkZyYW1l
VmlldyBfbWFrZURvY3VtZW50Vmlld0ZvckRhdGFTb3VyY2U6XSk6CisgICAgICAgICogV2ViVmll
dy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldp
dGhGcmFtZU5hbWU6Z3JvdXBOYW1lOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGluaXRTaW1wbGVI
VE1MRG9jdW1lbnRXaXRoU3R5bGU6ZnJhbWU6cHJlZmVyZW5jZXM6Z3JvdXBOYW1lOl0pOgorICAg
ICAgICAoLVtXZWJWaWV3IF9jbG9zZVBsdWdpbkRhdGFiYXNlc10pOgorICAgICAgICAoLVtXZWJW
aWV3IF9jbG9zZV0pOgorICAgICAgICAoLVtXZWJWaWV3IGluc3BlY3Rvcl0pOgorICAgICAgICAo
LVtXZWJWaWV3IHNldFNob3dpbmdJbnNwZWN0b3JJbmRpY2F0aW9uOl0pOgorICAgICAgICAoLVtX
ZWJWaWV3IF9zZXRGb3JtRGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2Zvcm1EZWxl
Z2F0ZUZvcndhcmRlcl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9VSUtpdERlbGVnYXRlRm9yd2Fy
ZGVyXSk6CisgICAgICAgICgtW1dlYlZpZXcgX3BvbGljeURlbGVnYXRlRm9yd2FyZGVyXSk6Cisg
ICAgICAgICgtW1dlYlZpZXcgX1VJRGVsZWdhdGVGb3J3YXJkZXJdKToKKyAgICAgICAgKC1bV2Vi
VmlldyBfZWRpdGluZ0RlbGVnYXRlRm9yd2FyZGVyXSk6CisgICAgICAgICgtW1dlYlZpZXcgX3Nl
dFVJS2l0RGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgY2FyZXRDaGFuZ2VMaXN0ZW5l
cnNdKToKKyAgICAgICAgKC1bV2ViVmlldyBhZGRDYXJldENoYW5nZUxpc3RlbmVyOl0pOgorICAg
ICAgICAoLVtXZWJWaWV3IF9zZXRBZGRpdGlvbmFsV2ViUGx1Z0luUGF0aHM6XSk6CisgICAgICAg
ICgtW1dlYlZpZXcgc2V0QmFja2dyb3VuZENvbG9yOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGJh
Y2tncm91bmRDb2xvcl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9maXhlZFBvc2l0aW9uQ29udGVu
dF0pOgorICAgICAgICAoLVtXZWJWaWV3IHNldFVJRGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dl
YlZpZXcgX3Jlc291cmNlTG9hZERlbGVnYXRlRm9yd2FyZGVyXSk6CisgICAgICAgICgtW1dlYlZp
ZXcgc2V0UmVzb3VyY2VMb2FkRGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0UG9s
aWN5RGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2ZyYW1lTG9hZERlbGVnYXRlRm9y
d2FyZGVyXSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0RnJhbWVMb2FkRGVsZWdhdGU6XSk6Cisg
ICAgICAgICgtW1dlYlZpZXcgc2V0QXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50Ol0pOgorICAg
ICAgICAoLVtXZWJWaWV3IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudF0pOgorICAgICAgICAo
LVtXZWJWaWV3IHNldE1lZGlhU3R5bGU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgbWVkaWFTdHls
ZV0pOgorICAgICAgICAoLVtXZWJWaWV3IF91c2VyQWdlbnRTdHJpbmddKToKKyAgICAgICAgKC1b
V2ViVmlldyBzZXRIb3N0V2luZG93Ol0pOgorICAgICAgICAoLVtXZWJWaWV3IGhvc3RXaW5kb3dd
KToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRDdXJyZW50Tm9kZUhpZ2hsaWdodDpdKToKKyAgICAg
ICAgKC1bV2ViVmlldyBjdXJyZW50Tm9kZUhpZ2hsaWdodF0pOgorICAgICAgICAoLVtXZWJWaWV3
IF9hbGxvd3NMaW5rUHJldmlld10pOgorICAgICAgICAoLVtXZWJWaWV3IF9zZXRBbGxvd3NMaW5r
UHJldmlldzpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRFZGl0aW5nRGVsZWdhdGU6XSk6Cisg
ICAgICAgICgtW1dlYlZpZXcgX2ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXJdKToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYlZpZXdEYXRhLmg6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3RGF0YS5t
bToKKyAgICAgICAgKC1bV2ViVmlld1ByaXZhdGUgZGVhbGxvY10pOgorCiAyMDIxLTAyLTEyICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVkdWNlIGV4cGxpY2l0
IHVzYWdlIG9mIFtvYmpDIHJlbGVhc2VdIGluIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ29udGV4dC5tbQppbmRleCBmZDI1YzA4ZDNjZTA1ZmFhMTUzZTczZjBmMDU2OGE4OTg0ZWE0
NjY3Li43NGIyMzQ0OWU2OWE5YzM5ZTE4NzIyN2RjOGM2OTdhZmI0OTI2MGJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbQpAQCAtNDEsMTMgKzQxLDEzIEBACiAjaW1wb3J0
ICJKYXZhU2NyaXB0Q29yZS5oIgogI2ltcG9ydCAiT2JqY1J1bnRpbWVFeHRyYXMuaCIKICNpbXBv
cnQgIlN0cm9uZ0lubGluZXMuaCIKLQorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9y
dCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogCiBAaW1w
bGVtZW50YXRpb24gSlNDb250ZXh0IHsKLSAgICBKU1ZpcnR1YWxNYWNoaW5lICptX3ZpcnR1YWxN
YWNoaW5lOworICAgIFJldGFpblB0cjxKU1ZpcnR1YWxNYWNoaW5lPiBtX3ZpcnR1YWxNYWNoaW5l
OwogICAgIEpTR2xvYmFsQ29udGV4dFJlZiBtX2NvbnRleHQ7CiAgICAgSlNDOjpTdHJvbmc8SlND
OjpKU09iamVjdD4gbV9leGNlcHRpb247CiAgICAgV2Vha09iakNQdHI8aWQgPEpTTW9kdWxlTG9h
ZGVyRGVsZWdhdGU+PiBtX21vZHVsZUxvYWRlckRlbGVnYXRlOwpAQCAtNzcsNyArNzcsNyBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhWaXJ0dWFsTWFjaGluZTooSlNWaXJ0dWFsTWFjaGluZSAq
KXZpcnR1YWxNYWNoaW5lCiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0g
ICAgbV92aXJ0dWFsTWFjaGluZSA9IFt2aXJ0dWFsTWFjaGluZSByZXRhaW5dOworICAgIG1fdmly
dHVhbE1hY2hpbmUgPSB2aXJ0dWFsTWFjaGluZTsKICAgICBtX2NvbnRleHQgPSBKU0dsb2JhbENv
bnRleHRDcmVhdGVJbkdyb3VwKGdldEdyb3VwRnJvbVZpcnR1YWxNYWNoaW5lKHZpcnR1YWxNYWNo
aW5lKSwgMCk7CiAKICAgICBzZWxmLmV4Y2VwdGlvbkhhbmRsZXIgPSBeKEpTQ29udGV4dCAqY29u
dGV4dCwgSlNWYWx1ZSAqZXhjZXB0aW9uVmFsdWUpIHsKQEAgLTk0LDcgKzk0LDYgQEAgLSAodm9p
ZClkZWFsbG9jCiB7CiAgICAgbV9leGNlcHRpb24uY2xlYXIoKTsKICAgICBKU0dsb2JhbENvbnRl
eHRSZWxlYXNlKG1fY29udGV4dCk7Ci0gICAgW21fdmlydHVhbE1hY2hpbmUgcmVsZWFzZV07CiAg
ICAgW19leGNlcHRpb25IYW5kbGVyIHJlbGVhc2VdOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0K
QEAgLTI1NCw3ICsyNTMsNyBAQCArIChOU0FycmF5ICopY3VycmVudEFyZ3VtZW50cwogCiAtIChK
U1ZpcnR1YWxNYWNoaW5lICopdmlydHVhbE1hY2hpbmUKIHsKLSAgICByZXR1cm4gbV92aXJ0dWFs
TWFjaGluZTsKKyAgICByZXR1cm4gbV92aXJ0dWFsTWFjaGluZS5nZXQoKTsKIH0KIAogLSAoTlNT
dHJpbmcgKiluYW1lCkBAIC0zMzYsNyArMzM1LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
R2xvYmFsQ29udGV4dFJlZjooSlNHbG9iYWxDb250ZXh0UmVmKWNvbnRleHQKICAgICAgICAgcmV0
dXJuIG5pbDsKIAogICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlMo
Y29udGV4dCk7Ci0gICAgbV92aXJ0dWFsTWFjaGluZSA9IFtbSlNWaXJ0dWFsTWFjaGluZSB2aXJ0
dWFsTWFjaGluZVdpdGhDb250ZXh0R3JvdXBSZWY6dG9SZWYoJmdsb2JhbE9iamVjdC0+dm0oKSld
IHJldGFpbl07CisgICAgbV92aXJ0dWFsTWFjaGluZSA9IFtKU1ZpcnR1YWxNYWNoaW5lIHZpcnR1
YWxNYWNoaW5lV2l0aENvbnRleHRHcm91cFJlZjp0b1JlZigmZ2xvYmFsT2JqZWN0LT52bSgpKV07
CiAgICAgQVNTRVJUKG1fdmlydHVhbE1hY2hpbmUpOwogICAgIG1fY29udGV4dCA9IEpTR2xvYmFs
Q29udGV4dFJldGFpbihjb250ZXh0KTsKICAgICBbc2VsZiBlbnN1cmVXcmFwcGVyTWFwXTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCmluZGV4IGMxODczN2Jm
ODc2YjZkZDUyMGEzMzcyOTRiOWMyMjM5Mjc1OTk5YzQuLjYzODY5YTAzNDE0MDAzZGM4NzAxZjUy
M2M1MDljYmViZWNkZDk2YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNNYW5hZ2VkVmFsdWUubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFn
ZWRWYWx1ZS5tbQpAQCAtMzgsNiArMzgsNyBAQAogI2ltcG9ydCAiT2JqY1J1bnRpbWVFeHRyYXMu
aCIKICNpbXBvcnQgIkpTQ0lubGluZXMuaCIKICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBjbGFzcyBKU01hbmFnZWRWYWx1ZUhhbmRs
ZU93bmVyIGZpbmFsIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKIHB1YmxpYzoKQEAg
LTU1LDcgKzU2LDcgQEAgQGltcGxlbWVudGF0aW9uIEpTTWFuYWdlZFZhbHVlIHsKICAgICBKU0M6
OldlYWs8SlNDOjpKU0dsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7CiAgICAgUmVmUHRyPEpT
Qzo6SlNMb2NrPiBtX2xvY2s7CiAgICAgSlNDOjpKU1dlYWtWYWx1ZSBtX3dlYWtWYWx1ZTsKLSAg
ICBOU01hcFRhYmxlICptX293bmVyczsKKyAgICBSZXRhaW5QdHI8TlNNYXBUYWJsZT4gbV9vd25l
cnM7CiB9CiAKICsgKEpTTWFuYWdlZFZhbHVlICopbWFuYWdlZFZhbHVlV2l0aFZhbHVlOihKU1Zh
bHVlICopdmFsdWUKQEAgLTkzLDcgKzk0LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVmFs
dWU6KEpTVmFsdWUgKil2YWx1ZQogCiAgICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyB3ZWFr
SURPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zV2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0
aW9uc09iamVjdFBlcnNvbmFsaXR5OwogICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgaW50
ZWdlck9wdGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlvbnNPcGFxdWVNZW1vcnkgfCBOU1BvaW50ZXJG
dW5jdGlvbnNJbnRlZ2VyUGVyc29uYWxpdHk7Ci0gICAgbV9vd25lcnMgPSBbW05TTWFwVGFibGUg
YWxsb2NdIGluaXRXaXRoS2V5T3B0aW9uczp3ZWFrSURPcHRpb25zIHZhbHVlT3B0aW9uczppbnRl
Z2VyT3B0aW9ucyBjYXBhY2l0eToxXTsKKyAgICBtX293bmVycyA9IGFkb3B0TlMoW1tOU01hcFRh
YmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6d2Vha0lET3B0aW9ucyB2YWx1ZU9wdGlvbnM6
aW50ZWdlck9wdGlvbnMgY2FwYWNpdHk6MV0pOwogCiAgICAgSlNDOjpKU1ZhbHVlIGpzVmFsdWUg
PSB0b0pTKGdsb2JhbE9iamVjdCwgW3ZhbHVlIEpTVmFsdWVSZWZdKTsKICAgICBpZiAoanNWYWx1
ZS5pc09iamVjdCgpKQpAQCAtMTA5LDM5ICsxMTAsMzcgQEAgLSAodm9pZClkZWFsbG9jCiB7CiAg
ICAgSlNWaXJ0dWFsTWFjaGluZSAqdmlydHVhbE1hY2hpbmUgPSBbW1tzZWxmIHZhbHVlXSBjb250
ZXh0XSB2aXJ0dWFsTWFjaGluZV07CiAgICAgaWYgKHZpcnR1YWxNYWNoaW5lKSB7Ci0gICAgICAg
IE5TTWFwVGFibGUgKmNvcHkgPSBbbV9vd25lcnMgY29weV07CisgICAgICAgIGF1dG8gY29weSA9
IGFkb3B0TlMoW21fb3duZXJzIGNvcHldKTsKICAgICAgICAgZm9yIChpZCBvd25lciBpbiBbY29w
eSBrZXlFbnVtZXJhdG9yXSkgewotICAgICAgICAgICAgc2l6ZV90IGNvdW50ID0gcmVpbnRlcnBy
ZXRfY2FzdDxzaXplX3Q+KE5TTWFwR2V0KG1fb3duZXJzLCAoX19icmlkZ2Ugdm9pZCopb3duZXIp
KTsKKyAgICAgICAgICAgIHNpemVfdCBjb3VudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihO
U01hcEdldChtX293bmVycy5nZXQoKSwgKF9fYnJpZGdlIHZvaWQqKW93bmVyKSk7CiAgICAgICAg
ICAgICB3aGlsZSAoY291bnQtLSkKICAgICAgICAgICAgICAgICBbdmlydHVhbE1hY2hpbmUgcmVt
b3ZlTWFuYWdlZFJlZmVyZW5jZTpzZWxmIHdpdGhPd25lcjpvd25lcl07CiAgICAgICAgIH0KLSAg
ICAgICAgW2NvcHkgcmVsZWFzZV07CiAgICAgfQogCiAgICAgW3NlbGYgZGlzY29ubmVjdFZhbHVl
XTsKLSAgICBbbV9vd25lcnMgcmVsZWFzZV07CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCiAt
ICh2b2lkKWRpZEFkZE93bmVyOihpZClvd25lcgogewotICAgIHNpemVfdCBjb3VudCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8c2l6ZV90PihOU01hcEdldChtX293bmVycywgKF9fYnJpZGdlIHZvaWQqKW93
bmVyKSk7Ci0gICAgTlNNYXBJbnNlcnQobV9vd25lcnMsIChfX2JyaWRnZSB2b2lkKilvd25lciwg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY291bnQgKyAxKSk7CisgICAgc2l6ZV90IGNvdW50ID0g
cmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KE5TTWFwR2V0KG1fb3duZXJzLmdldCgpLCAoX19icmlk
Z2Ugdm9pZCopb3duZXIpKTsKKyAgICBOU01hcEluc2VydChtX293bmVycy5nZXQoKSwgKF9fYnJp
ZGdlIHZvaWQqKW93bmVyLCByZWludGVycHJldF9jYXN0PHZvaWQqPihjb3VudCArIDEpKTsKIH0K
IAogLSAodm9pZClkaWRSZW1vdmVPd25lcjooaWQpb3duZXIKIHsKLSAgICBzaXplX3QgY291bnQg
PSByZWludGVycHJldF9jYXN0PHNpemVfdD4oTlNNYXBHZXQobV9vd25lcnMsIChfX2JyaWRnZSB2
b2lkKilvd25lcikpOworICAgIHNpemVfdCBjb3VudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90
PihOU01hcEdldChtX293bmVycy5nZXQoKSwgKF9fYnJpZGdlIHZvaWQqKW93bmVyKSk7CiAKICAg
ICBpZiAoIWNvdW50KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoY291bnQgPT0gMSkgewot
ICAgICAgICBOU01hcFJlbW92ZShtX293bmVycywgKF9fYnJpZGdlIHZvaWQqKW93bmVyKTsKKyAg
ICAgICAgTlNNYXBSZW1vdmUobV9vd25lcnMuZ2V0KCksIChfX2JyaWRnZSB2b2lkKilvd25lcik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBOU01hcEluc2VydChtX293bmVycywgKF9f
YnJpZGdlIHZvaWQqKW93bmVyLCByZWludGVycHJldF9jYXN0PHZvaWQqPihjb3VudCAtIDEpKTsK
KyAgICBOU01hcEluc2VydChtX293bmVycy5nZXQoKSwgKF9fYnJpZGdlIHZvaWQqKW93bmVyLCBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihjb3VudCAtIDEpKTsKIH0KIAogLSAoSlNWYWx1ZSAqKXZh
bHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hp
bmUubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUubW0KaW5k
ZXggMzE5MjRkMDEyYzBiMjY4ODMwNjE1ZjI0ZDc4M2I5MDVkZTAyODY4Ny4uMTdiMzJhNjY2NzBi
MDA1NDYxZGFmN2FmMTdhYTE3MWNlNWI4YTk5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNWaXJ0dWFsTWFjaGluZS5tbQpAQCAtODQsOSArODQsOSBAQCBAZW5kCiBAaW1wbGVt
ZW50YXRpb24gSlNWaXJ0dWFsTWFjaGluZSB7CiAgICAgSlNDb250ZXh0R3JvdXBSZWYgbV9ncm91
cDsKICAgICBMb2NrIG1fZXh0ZXJuYWxEYXRhTXV0ZXg7Ci0gICAgTlNNYXBUYWJsZSAqbV9jb250
ZXh0Q2FjaGU7Ci0gICAgTlNNYXBUYWJsZSAqbV9leHRlcm5hbE9iamVjdEdyYXBoOwotICAgIE5T
TWFwVGFibGUgKm1fZXh0ZXJuYWxSZW1lbWJlcmVkU2V0OworICAgIFJldGFpblB0cjxOU01hcFRh
YmxlPiBtX2NvbnRleHRDYWNoZTsKKyAgICBSZXRhaW5QdHI8TlNNYXBUYWJsZT4gbV9leHRlcm5h
bE9iamVjdEdyYXBoOworICAgIFJldGFpblB0cjxOU01hcFRhYmxlPiBtX2V4dGVybmFsUmVtZW1i
ZXJlZFNldDsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXQKQEAgLTEwOCwxNCArMTA4LDE0IEBA
IC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbnRleHRHcm91cFJlZjooSlNDb250ZXh0R3JvdXBS
ZWYpZ3JvdXAKICAgICAKICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIGtleU9wdGlvbnMg
PSBOU1BvaW50ZXJGdW5jdGlvbnNPcGFxdWVNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPcGFx
dWVQZXJzb25hbGl0eTsKICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHZhbHVlT3B0aW9u
cyA9IE5TUG9pbnRlckZ1bmN0aW9uc1dlYWtNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPYmpl
Y3RQZXJzb25hbGl0eTsKLSAgICBtX2NvbnRleHRDYWNoZSA9IFtbTlNNYXBUYWJsZSBhbGxvY10g
aW5pdFdpdGhLZXlPcHRpb25zOmtleU9wdGlvbnMgdmFsdWVPcHRpb25zOnZhbHVlT3B0aW9ucyBj
YXBhY2l0eTowXTsKKyAgICBtX2NvbnRleHRDYWNoZSA9IGFkb3B0TlMoW1tOU01hcFRhYmxlIGFs
bG9jXSBpbml0V2l0aEtleU9wdGlvbnM6a2V5T3B0aW9ucyB2YWx1ZU9wdGlvbnM6dmFsdWVPcHRp
b25zIGNhcGFjaXR5OjBdKTsKICAgICAKICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHdl
YWtJRE9wdGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlvbnNXZWFrTWVtb3J5IHwgTlNQb2ludGVyRnVu
Y3Rpb25zT2JqZWN0UGVyc29uYWxpdHk7CiAgICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyBz
dHJvbmdJRE9wdGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlvbnNTdHJvbmdNZW1vcnkgfCBOU1BvaW50
ZXJGdW5jdGlvbnNPYmplY3RQZXJzb25hbGl0eTsKLSAgICBtX2V4dGVybmFsT2JqZWN0R3JhcGgg
PSBbW05TTWFwVGFibGUgYWxsb2NdIGluaXRXaXRoS2V5T3B0aW9uczp3ZWFrSURPcHRpb25zIHZh
bHVlT3B0aW9uczpzdHJvbmdJRE9wdGlvbnMgY2FwYWNpdHk6MF07CisgICAgbV9leHRlcm5hbE9i
amVjdEdyYXBoID0gYWRvcHROUyhbW05TTWFwVGFibGUgYWxsb2NdIGluaXRXaXRoS2V5T3B0aW9u
czp3ZWFrSURPcHRpb25zIHZhbHVlT3B0aW9uczpzdHJvbmdJRE9wdGlvbnMgY2FwYWNpdHk6MF0p
OwogCiAgICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyBpbnRlZ2VyT3B0aW9ucyA9IE5TUG9p
bnRlckZ1bmN0aW9uc09wYXF1ZU1lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc0ludGVnZXJQZXJz
b25hbGl0eTsKLSAgICBtX2V4dGVybmFsUmVtZW1iZXJlZFNldCA9IFtbTlNNYXBUYWJsZSBhbGxv
Y10gaW5pdFdpdGhLZXlPcHRpb25zOndlYWtJRE9wdGlvbnMgdmFsdWVPcHRpb25zOmludGVnZXJP
cHRpb25zIGNhcGFjaXR5OjBdOworICAgIG1fZXh0ZXJuYWxSZW1lbWJlcmVkU2V0ID0gYWRvcHRO
UyhbW05TTWFwVGFibGUgYWxsb2NdIGluaXRXaXRoS2V5T3B0aW9uczp3ZWFrSURPcHRpb25zIHZh
bHVlT3B0aW9uczppbnRlZ2VyT3B0aW9ucyBjYXBhY2l0eTowXSk7CiAgICAKICAgICBbSlNWTVdy
YXBwZXJDYWNoZSBhZGRXcmFwcGVyOnNlbGYgZm9ySlNDb250ZXh0R3JvdXBSZWY6Z3JvdXBdOwog
IApAQCAtMTI1LDkgKzEyNSw2IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbnRleHRHcm91
cFJlZjooSlNDb250ZXh0R3JvdXBSZWYpZ3JvdXAKIC0gKHZvaWQpZGVhbGxvYwogewogICAgIEpT
Q29udGV4dEdyb3VwUmVsZWFzZShtX2dyb3VwKTsKLSAgICBbbV9jb250ZXh0Q2FjaGUgcmVsZWFz
ZV07Ci0gICAgW21fZXh0ZXJuYWxPYmplY3RHcmFwaCByZWxlYXNlXTsKLSAgICBbbV9leHRlcm5h
bFJlbWVtYmVyZWRTZXQgcmVsZWFzZV07CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCkBAIC0y
NDUsMTIgKzI0MiwxMiBAQCArIChKU1ZpcnR1YWxNYWNoaW5lICopdmlydHVhbE1hY2hpbmVXaXRo
Q29udGV4dEdyb3VwUmVmOihKU0NvbnRleHRHcm91cFJlZilncm91cAogCiAtIChKU0NvbnRleHQg
Kiljb250ZXh0Rm9yR2xvYmFsQ29udGV4dFJlZjooSlNHbG9iYWxDb250ZXh0UmVmKWdsb2JhbENv
bnRleHQKIHsKLSAgICByZXR1cm4gKF9fYnJpZGdlIEpTQ29udGV4dCAqKU5TTWFwR2V0KG1fY29u
dGV4dENhY2hlLCBnbG9iYWxDb250ZXh0KTsKKyAgICByZXR1cm4gKF9fYnJpZGdlIEpTQ29udGV4
dCAqKU5TTWFwR2V0KG1fY29udGV4dENhY2hlLmdldCgpLCBnbG9iYWxDb250ZXh0KTsKIH0KIAog
LSAodm9pZClhZGRDb250ZXh0OihKU0NvbnRleHQgKil3cmFwcGVyIGZvckdsb2JhbENvbnRleHRS
ZWY6KEpTR2xvYmFsQ29udGV4dFJlZilnbG9iYWxDb250ZXh0CiB7Ci0gICAgTlNNYXBJbnNlcnQo
bV9jb250ZXh0Q2FjaGUsIGdsb2JhbENvbnRleHQsIChfX2JyaWRnZSB2b2lkKil3cmFwcGVyKTsK
KyAgICBOU01hcEluc2VydChtX2NvbnRleHRDYWNoZS5nZXQoKSwgZ2xvYmFsQ29udGV4dCwgKF9f
YnJpZGdlIHZvaWQqKXdyYXBwZXIpOwogfQogCiAtIChMb2NrJilleHRlcm5hbERhdGFNdXRleApA
QCAtMjYwLDEyICsyNTcsMTIgQEAgLSAoTG9jayYpZXh0ZXJuYWxEYXRhTXV0ZXgKIAogLSAoTlNN
YXBUYWJsZSAqKWV4dGVybmFsT2JqZWN0R3JhcGgKIHsKLSAgICByZXR1cm4gbV9leHRlcm5hbE9i
amVjdEdyYXBoOworICAgIHJldHVybiBtX2V4dGVybmFsT2JqZWN0R3JhcGguZ2V0KCk7CiB9CiAK
IC0gKE5TTWFwVGFibGUgKilleHRlcm5hbFJlbWVtYmVyZWRTZXQKIHsKLSAgICByZXR1cm4gbV9l
eHRlcm5hbFJlbWVtYmVyZWRTZXQ7CisgICAgcmV0dXJuIG1fZXh0ZXJuYWxSZW1lbWJlcmVkU2V0
LmdldCgpOwogfQogCiAtICh2b2lkKXNocmlua0Zvb3RwcmludFdoZW5JZGxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCmluZGV4IGU4ZDIzMGY0ZDc5N2I4N2E4NmY3
YTk4MDkwZWMyNDliNmU1NTFkYjguLjE0NTU2YjU3NzEzZTczMGFlNTJiZGY5NTJlNjY5MTQyMDg1
OWViMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFw
Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCkBAIC0x
NjMsOSArMTYzLDkgQEAgc3RhdGljIEpTQzo6SlNPYmplY3QgKmNvbnN0cnVjdG9yV2l0aEN1c3Rv
bUJyYW5kKEpTQ29udGV4dCAqY29udGV4dCwgTlNTdHJpbmcgKmIKIAogLy8gTG9vayBmb3IgQG9w
dGlvbmFsIHByb3BlcnRpZXMgaW4gdGhlIHByb3RvdHlwZSBjb250YWluaW5nIGEgc2VsZWN0b3Ig
dG8gcHJvcGVydHkKIC8vIG5hbWUgbWFwcGluZywgc2VwYXJhdGVkIGJ5IGEgX19KU19FWFBPUlRf
QVNfXyBkZWxpbWl0ZXIuCi1zdGF0aWMgTlNNdXRhYmxlRGljdGlvbmFyeSAqY3JlYXRlUmVuYW1l
TWFwKFByb3RvY29sICpwcm90b2NvbCwgQk9PTCBpc0luc3RhbmNlTWV0aG9kKQorc3RhdGljIFJl
dGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBjcmVhdGVSZW5hbWVNYXAoUHJvdG9jb2wgKnBy
b3RvY29sLCBCT09MIGlzSW5zdGFuY2VNZXRob2QpCiB7Ci0gICAgTlNNdXRhYmxlRGljdGlvbmFy
eSAqcmVuYW1lTWFwID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKKyAgICBh
dXRvIHJlbmFtZU1hcCA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0
XSk7CiAKICAgICBmb3JFYWNoTWV0aG9kSW5Qcm90b2NvbChwcm90b2NvbCwgTk8sIGlzSW5zdGFu
Y2VNZXRob2QsIF4oU0VMIHNlbCwgY29uc3QgY2hhciopewogICAgICAgICBOU1N0cmluZyAqcmVu
YW1lID0gQChzZWxfZ2V0TmFtZShzZWwpKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCBzdGF0aWMgTlNN
dXRhYmxlRGljdGlvbmFyeSAqY3JlYXRlUmVuYW1lTWFwKFByb3RvY29sICpwcm90b2NvbCwgQk9P
TCBpc0luc3RhbmNlTQogICAgICAgICBOU1VJbnRlZ2VyIGJlZ2luID0gcmFuZ2UubG9jYXRpb24g
KyByYW5nZS5sZW5ndGg7CiAgICAgICAgIE5TVUludGVnZXIgbGVuZ3RoID0gW3JlbmFtZSBsZW5n
dGhdIC0gYmVnaW4gLSAxOwogICAgICAgICBOU1N0cmluZyAqbmFtZSA9IFtyZW5hbWUgc3Vic3Ry
aW5nV2l0aFJhbmdlOihOU1JhbmdlKXsgYmVnaW4sIGxlbmd0aCB9XTsKLSAgICAgICAgcmVuYW1l
TWFwW3NlbGVjdG9yXSA9IG5hbWU7CisgICAgICAgIHJlbmFtZU1hcC5nZXQoKVtzZWxlY3Rvcl0g
PSBuYW1lOwogICAgIH0pOwogCiAgICAgcmV0dXJuIHJlbmFtZU1hcDsKQEAgLTI1Myw3ICsyNTMs
NyBAQCBzdGF0aWMgYm9vbCBzaG91bGRTa2lwTWV0aG9kV2l0aE5hbWUoTlNTdHJpbmcgKm5hbWUp
CiAvLyAgKiBPdGhlcndpc2UsIGlmIHRoZSBvYmplY3QgZG9lc24ndCBhbHJlYWR5IGNvbnRhaW4g
YSBwcm9wZXJ0eSB3aXRoIG5hbWUsIGNyZWF0ZSBpdC4KIHN0YXRpYyB2b2lkIGNvcHlNZXRob2Rz
VG9PYmplY3QoSlNDb250ZXh0ICpjb250ZXh0LCBDbGFzcyBvYmpjQ2xhc3MsIFByb3RvY29sICpw
cm90b2NvbCwgQk9PTCBpc0luc3RhbmNlTWV0aG9kLCBKU1ZhbHVlICpvYmplY3QsIE5TTXV0YWJs
ZURpY3Rpb25hcnkgKmFjY2Vzc29yTWV0aG9kcyA9IG5pbCkKIHsKLSAgICBOU011dGFibGVEaWN0
aW9uYXJ5ICpyZW5hbWVNYXAgPSBjcmVhdGVSZW5hbWVNYXAocHJvdG9jb2wsIGlzSW5zdGFuY2VN
ZXRob2QpOworICAgIGF1dG8gcmVuYW1lTWFwID0gY3JlYXRlUmVuYW1lTWFwKHByb3RvY29sLCBp
c0luc3RhbmNlTWV0aG9kKTsKIAogICAgIGZvckVhY2hNZXRob2RJblByb3RvY29sKHByb3RvY29s
LCBZRVMsIGlzSW5zdGFuY2VNZXRob2QsIF4oU0VMIHNlbCwgY29uc3QgY2hhciogdHlwZXMpewog
ICAgICAgICBjb25zdCBjaGFyKiBuYW1lQ1N0ciA9IHNlbF9nZXROYW1lKHNlbCk7CkBAIC0yNjgs
NyArMjY4LDcgQEAgc3RhdGljIHZvaWQgY29weU1ldGhvZHNUb09iamVjdChKU0NvbnRleHQgKmNv
bnRleHQsIENsYXNzIG9iamNDbGFzcywgUHJvdG9jb2wgKnAKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICBhY2Nlc3Nvck1ldGhvZHNbbmFtZV0gPSBbSlNWYWx1ZSB2YWx1ZVdp
dGhKU1ZhbHVlUmVmOm1ldGhvZCBpbkNvbnRleHQ6Y29udGV4dF07CiAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBuYW1lID0gcmVuYW1lTWFwW25hbWVdOworICAgICAgICAgICAgbmFtZSA9
IHJlbmFtZU1hcC5nZXQoKVtuYW1lXTsKICAgICAgICAgICAgIGlmICghbmFtZSkKICAgICAgICAg
ICAgICAgICBuYW1lID0gc2VsZWN0b3JUb1Byb3BlcnR5TmFtZShuYW1lQ1N0cik7CiAgICAgICAg
ICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTKFtjb250ZXh0IEpT
R2xvYmFsQ29udGV4dFJlZl0pOwpAQCAtMjg3LDggKzI4Nyw2IEBAIHN0YXRpYyB2b2lkIGNvcHlN
ZXRob2RzVG9PYmplY3QoSlNDb250ZXh0ICpjb250ZXh0LCBDbGFzcyBvYmpjQ2xhc3MsIFByb3Rv
Y29sICpwCiAgICAgICAgICAgICAgICAgcHV0Tm9uRW51bWVyYWJsZShjb250ZXh0LCBvYmplY3Qs
IG5hbWUsIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6bWV0aG9kIGluQ29udGV4dDpjb250
ZXh0XSk7CiAgICAgICAgIH0KICAgICB9KTsKLQotICAgIFtyZW5hbWVNYXAgcmVsZWFzZV07CiB9
CiAKIHN0cnVjdCBQcm9wZXJ0eSB7CkBAIC01OTMsOSArNTkxLDkgQEAgLSAoSlNDOjpTdHJ1Y3R1
cmUqKXN0cnVjdHVyZUluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dAogQGVuZAogCiBAaW1w
bGVtZW50YXRpb24gSlNXcmFwcGVyTWFwIHsKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICptX2Ns
YXNzTWFwOworICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBtX2NsYXNzTWFwOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OldlYWtHQ01hcDxfX3Vuc2FmZV91bnJldGFpbmVkIGlk
LCBKU0M6OkpTT2JqZWN0Pj4gbV9jYWNoZWRKU1dyYXBwZXJzOwotICAgIE5TTWFwVGFibGUgKm1f
Y2FjaGVkT2JqQ1dyYXBwZXJzOworICAgIFJldGFpblB0cjxOU01hcFRhYmxlPiBtX2NhY2hlZE9i
akNXcmFwcGVyczsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoR2xvYmFsQ29udGV4dFJl
ZjooSlNHbG9iYWxDb250ZXh0UmVmKWNvbnRleHQKQEAgLTYwNiwzMCArNjA0LDIzIEBAIC0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aEdsb2JhbENvbnRleHRSZWY6KEpTR2xvYmFsQ29udGV4dFJlZilj
b250ZXh0CiAKICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIGtleU9wdGlvbnMgPSBOU1Bv
aW50ZXJGdW5jdGlvbnNPcGFxdWVNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPcGFxdWVQZXJz
b25hbGl0eTsKICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHZhbHVlT3B0aW9ucyA9IE5T
UG9pbnRlckZ1bmN0aW9uc1dlYWtNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPYmplY3RQZXJz
b25hbGl0eTsKLSAgICBtX2NhY2hlZE9iakNXcmFwcGVycyA9IFtbTlNNYXBUYWJsZSBhbGxvY10g
aW5pdFdpdGhLZXlPcHRpb25zOmtleU9wdGlvbnMgdmFsdWVPcHRpb25zOnZhbHVlT3B0aW9ucyBj
YXBhY2l0eTowXTsKKyAgICBtX2NhY2hlZE9iakNXcmFwcGVycyA9IGFkb3B0TlMoW1tOU01hcFRh
YmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6a2V5T3B0aW9ucyB2YWx1ZU9wdGlvbnM6dmFs
dWVPcHRpb25zIGNhcGFjaXR5OjBdKTsKIAogICAgIG1fY2FjaGVkSlNXcmFwcGVycyA9IG1ha2VV
bmlxdWU8SlNDOjpXZWFrR0NNYXA8X191bnNhZmVfdW5yZXRhaW5lZCBpZCwgSlNDOjpKU09iamVj
dD4+KHRvSlMoY29udGV4dCktPnZtKCkpOwogCiAgICAgQVNTRVJUKCF0b0pTR2xvYmFsT2JqZWN0
KGNvbnRleHQpLT53cmFwcGVyTWFwKCkpOwogICAgIHRvSlNHbG9iYWxPYmplY3QoY29udGV4dCkt
PnNldFdyYXBwZXJNYXAoc2VsZik7Ci0gICAgbV9jbGFzc01hcCA9IFtbTlNNdXRhYmxlRGljdGlv
bmFyeSBhbGxvY10gaW5pdF07CisgICAgbV9jbGFzc01hcCA9IGFkb3B0TlMoW1tOU011dGFibGVE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKHZvaWQp
ZGVhbGxvYwotewotICAgIFttX2NhY2hlZE9iakNXcmFwcGVycyByZWxlYXNlXTsKLSAgICBbbV9j
bGFzc01hcCByZWxlYXNlXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KIC0gKEpTT2JqQ0Ns
YXNzSW5mbyopY2xhc3NJbmZvRm9yQ2xhc3M6KENsYXNzKWNscwogewogICAgIGlmICghY2xzKQog
ICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgLy8gQ2hlY2sgaWYgd2UndmUgYWxyZWFkeSBjcmVh
dGVkIGEgSlNPYmpDQ2xhc3NJbmZvIGZvciB0aGlzIENsYXNzLgotICAgIGlmIChKU09iakNDbGFz
c0luZm8qIGNsYXNzSW5mbyA9IChKU09iakNDbGFzc0luZm8qKW1fY2xhc3NNYXBbKGlkKWNsc10p
CisgICAgaWYgKEpTT2JqQ0NsYXNzSW5mbyogY2xhc3NJbmZvID0gKEpTT2JqQ0NsYXNzSW5mbyop
bV9jbGFzc01hcC5nZXQoKVsoaWQpY2xzXSkKICAgICAgICAgcmV0dXJuIGNsYXNzSW5mbzsKIAog
ICAgIC8vIFNraXAgaW50ZXJuYWwgY2xhc3NlcyBiZWdpbm5pbmcgd2l0aCAnXycgLSBqdXN0IGNv
cHkgbGluayB0byB0aGUgcGFyZW50IGNsYXNzJ3MgaW5mby4KQEAgLTY0MSwxMCArNjMyLDEwIEBA
IC0gKEpTT2JqQ0NsYXNzSW5mbyopY2xhc3NJbmZvRm9yQ2xhc3M6KENsYXNzKWNscwogICAgICAg
ICB9KTsKIAogICAgICAgICBpZiAoIWNvbmZvcm1zVG9FeHBvcnRQcm90b2NvbCkKLSAgICAgICAg
ICAgIHJldHVybiBtX2NsYXNzTWFwWyhpZCljbHNdID0gW3NlbGYgY2xhc3NJbmZvRm9yQ2xhc3M6
Y2xhc3NfZ2V0U3VwZXJjbGFzcyhjbHMpXTsKKyAgICAgICAgICAgIHJldHVybiBtX2NsYXNzTWFw
LmdldCgpWyhpZCljbHNdID0gW3NlbGYgY2xhc3NJbmZvRm9yQ2xhc3M6Y2xhc3NfZ2V0U3VwZXJj
bGFzcyhjbHMpXTsKICAgICB9CiAKLSAgICByZXR1cm4gbV9jbGFzc01hcFsoaWQpY2xzXSA9IFtb
W0pTT2JqQ0NsYXNzSW5mbyBhbGxvY10gaW5pdEZvckNsYXNzOmNsc10gYXV0b3JlbGVhc2VdOwor
ICAgIHJldHVybiBtX2NsYXNzTWFwLmdldCgpWyhpZCljbHNdID0gW1tbSlNPYmpDQ2xhc3NJbmZv
IGFsbG9jXSBpbml0Rm9yQ2xhc3M6Y2xzXSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKEpTVmFsdWUg
Kilqc1dyYXBwZXJGb3JPYmplY3Q6KGlkKW9iamVjdCBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNv
bnRleHQKQEAgLTY3MywxMCArNjY0LDEwIEBAIC0gKEpTVmFsdWUgKilqc1dyYXBwZXJGb3JPYmpl
Y3Q6KGlkKW9iamVjdCBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQKIC0gKEpTVmFsdWUg
KilvYmpjV3JhcHBlckZvckpTVmFsdWVSZWY6KEpTVmFsdWVSZWYpdmFsdWUgaW5Db250ZXh0OmNv
bnRleHQKIHsKICAgICBBU1NFUlQodG9KU0dsb2JhbE9iamVjdChbY29udGV4dCBKU0dsb2JhbENv
bnRleHRSZWZdKS0+d3JhcHBlck1hcCgpID09IHNlbGYpOwotICAgIEpTVmFsdWUgKndyYXBwZXIg
PSAoX19icmlkZ2UgSlNWYWx1ZSAqKU5TTWFwR2V0KG1fY2FjaGVkT2JqQ1dyYXBwZXJzLCB2YWx1
ZSk7CisgICAgSlNWYWx1ZSAqd3JhcHBlciA9IChfX2JyaWRnZSBKU1ZhbHVlICopTlNNYXBHZXQo
bV9jYWNoZWRPYmpDV3JhcHBlcnMuZ2V0KCksIHZhbHVlKTsKICAgICBpZiAoIXdyYXBwZXIpIHsK
ICAgICAgICAgd3JhcHBlciA9IFtbW0pTVmFsdWUgYWxsb2NdIGluaXRXaXRoVmFsdWU6dmFsdWUg
aW5Db250ZXh0OmNvbnRleHRdIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgTlNNYXBJbnNlcnQobV9j
YWNoZWRPYmpDV3JhcHBlcnMsIHZhbHVlLCAoX19icmlkZ2Ugdm9pZCopd3JhcHBlcik7CisgICAg
ICAgIE5TTWFwSW5zZXJ0KG1fY2FjaGVkT2JqQ1dyYXBwZXJzLmdldCgpLCB2YWx1ZSwgKF9fYnJp
ZGdlIHZvaWQqKXdyYXBwZXIpOwogICAgIH0KICAgICByZXR1cm4gd3JhcHBlcjsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dl
bmVyYXRlX29iamNfY29uZmlndXJhdGlvbl9pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfY29uZmln
dXJhdGlvbl9pbXBsZW1lbnRhdGlvbi5weQppbmRleCAxMmM3NTRjM2QwOGM1ZTcxNjQwMmRjOTkw
YWViNWFhMzJhZTE3YzAxLi42MGEzMDk2ODM0NTg5ZDNjMjNmZGE1ZTI5NzNhMDI0YjJjNzIyNDMz
IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29k
ZWdlbi9nZW5lcmF0ZV9vYmpjX2NvbmZpZ3VyYXRpb25faW1wbGVtZW50YXRpb24ucHkKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVf
b2JqY19jb25maWd1cmF0aW9uX2ltcGxlbWVudGF0aW9uLnB5CkBAIC04OSw4ICs4OSw2IEBAIGNs
YXNzIE9iakNDb25maWd1cmF0aW9uSW1wbGVtZW50YXRpb25HZW5lcmF0b3IoT2JqQ0dlbmVyYXRv
cik6CiAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIHJldHVybiBzZWxmOycpCiAgICAgICAgIGxp
bmVzLmFwcGVuZCgnfScpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnJykKLSAgICAgICAgbGluZXMu
ZXh0ZW5kKHNlbGYuX2dlbmVyYXRlX2RlYWxsb2MoZG9tYWlucykpCi0gICAgICAgIGxpbmVzLmFw
cGVuZCgnJykKICAgICAgICAgZm9yIGRvbWFpbiBpbiBkb21haW5zOgogICAgICAgICAgICAgZG9t
YWluX2xpbmVzID0gW10KICAgICAgICAgICAgIGlmIHNlbGYuc2hvdWxkX2dlbmVyYXRlX2NvbW1h
bmRzX2Zvcl9kb21haW4oZG9tYWluKToKQEAgLTExMSwyOSArMTA5LDEzIEBAIGNsYXNzIE9iakND
b25maWd1cmF0aW9uSW1wbGVtZW50YXRpb25HZW5lcmF0b3IoT2JqQ0dlbmVyYXRvcik6CiAgICAg
ICAgICAgICBpZiBzZWxmLnNob3VsZF9nZW5lcmF0ZV9jb21tYW5kc19mb3JfZG9tYWluKGRvbWFp
bik6CiAgICAgICAgICAgICAgICAgb2JqY19jbGFzc19uYW1lID0gJyVzJXNEb21haW5IYW5kbGVy
JyAlIChzZWxmLm9iamNfcHJlZml4KCksIGRvbWFpbi5kb21haW5fbmFtZSkKICAgICAgICAgICAg
ICAgICBpdmFyX25hbWUgPSAnXyVzSGFuZGxlcicgJSBPYmpDR2VuZXJhdG9yLnZhcmlhYmxlX25h
bWVfcHJlZml4X2Zvcl9kb21haW4oZG9tYWluKQotICAgICAgICAgICAgICAgIGRvbWFpbl9saW5l
cy5hcHBlbmQoJyAgICBpZDwlcz4gJXM7JyAlIChvYmpjX2NsYXNzX25hbWUsIGl2YXJfbmFtZSkp
CisgICAgICAgICAgICAgICAgZG9tYWluX2xpbmVzLmFwcGVuZCgnICAgIFJldGFpblB0cjxpZDwl
cz4+ICVzOycgJSAob2JqY19jbGFzc19uYW1lLCBpdmFyX25hbWUpKQogICAgICAgICAgICAgaWYg
c2VsZi5zaG91bGRfZ2VuZXJhdGVfZXZlbnRzX2Zvcl9kb21haW4oZG9tYWluKToKICAgICAgICAg
ICAgICAgICBvYmpjX2NsYXNzX25hbWUgPSAnJXMlc0RvbWFpbkV2ZW50RGlzcGF0Y2hlcicgJSAo
c2VsZi5vYmpjX3ByZWZpeCgpLCBkb21haW4uZG9tYWluX25hbWUpCiAgICAgICAgICAgICAgICAg
aXZhcl9uYW1lID0gJ18lc0V2ZW50RGlzcGF0Y2hlcicgJSBPYmpDR2VuZXJhdG9yLnZhcmlhYmxl
X25hbWVfcHJlZml4X2Zvcl9kb21haW4oZG9tYWluKQotICAgICAgICAgICAgICAgIGRvbWFpbl9s
aW5lcy5hcHBlbmQoJyAgICAlcyAqJXM7JyAlIChvYmpjX2NsYXNzX25hbWUsIGl2YXJfbmFtZSkp
Ci0gICAgICAgICAgICBpZiBsZW4oZG9tYWluX2xpbmVzKToKLSAgICAgICAgICAgICAgICBsaW5l
cy5hcHBlbmQoc2VsZi53cmFwX3dpdGhfZ3VhcmRfZm9yX2NvbmRpdGlvbihkb21haW4uY29uZGl0
aW9uLCAnXG4nLmpvaW4oZG9tYWluX2xpbmVzKSkpCi0gICAgICAgIHJldHVybiBsaW5lcwotCi0g
ICAgZGVmIF9nZW5lcmF0ZV9kZWFsbG9jKHNlbGYsIGRvbWFpbnMpOgotICAgICAgICBsaW5lcyA9
IFtdCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnLSAodm9pZClkZWFsbG9jJykKLSAgICAgICAgbGlu
ZXMuYXBwZW5kKCd7JykKLSAgICAgICAgZm9yIGRvbWFpbiBpbiBkb21haW5zOgotICAgICAgICAg
ICAgZG9tYWluX2xpbmVzID0gW10KLSAgICAgICAgICAgIGlmIHNlbGYuc2hvdWxkX2dlbmVyYXRl
X2NvbW1hbmRzX2Zvcl9kb21haW4oZG9tYWluKToKLSAgICAgICAgICAgICAgICBkb21haW5fbGlu
ZXMuYXBwZW5kKCcgICAgW18lc0hhbmRsZXIgcmVsZWFzZV07JyAlIE9iakNHZW5lcmF0b3IudmFy
aWFibGVfbmFtZV9wcmVmaXhfZm9yX2RvbWFpbihkb21haW4pKQotICAgICAgICAgICAgaWYgc2Vs
Zi5zaG91bGRfZ2VuZXJhdGVfZXZlbnRzX2Zvcl9kb21haW4oZG9tYWluKToKLSAgICAgICAgICAg
ICAgICBkb21haW5fbGluZXMuYXBwZW5kKCcgICAgW18lc0V2ZW50RGlzcGF0Y2hlciByZWxlYXNl
XTsnICUgT2JqQ0dlbmVyYXRvci52YXJpYWJsZV9uYW1lX3ByZWZpeF9mb3JfZG9tYWluKGRvbWFp
bikpCisgICAgICAgICAgICAgICAgZG9tYWluX2xpbmVzLmFwcGVuZCgnICAgIFJldGFpblB0cjwl
cz4gJXM7JyAlIChvYmpjX2NsYXNzX25hbWUsIGl2YXJfbmFtZSkpCiAgICAgICAgICAgICBpZiBs
ZW4oZG9tYWluX2xpbmVzKToKICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoc2VsZi53cmFw
X3dpdGhfZ3VhcmRfZm9yX2NvbmRpdGlvbihkb21haW4uY29uZGl0aW9uLCAnXG4nLmpvaW4oZG9t
YWluX2xpbmVzKSkpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIFtzdXBlciBkZWFsbG9jXTsn
KQotICAgICAgICBsaW5lcy5hcHBlbmQoJ30nKQogICAgICAgICByZXR1cm4gbGluZXMKIAogICAg
IGRlZiBfZ2VuZXJhdGVfaGFuZGxlcl9zZXR0ZXJfZm9yX2RvbWFpbihzZWxmLCBkb21haW4pOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CmluZGV4
IDczOTMyOTRjYzZmOGUwOTM4ZGM0NDhkZGYzMzc0NDJjNjgzZGYyMmMuLmY4NmZiZTk1MTVhOWQy
YzdlYzhiNTllMGVhYjlkMjFkNDk3ZDk1ZmYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5w
eQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9v
YmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKQEAgLTE0MSw4ICsxNDEsNyBAQCAke2ludm9jYXRp
b259CiAgICAgaWYgKGhhbmRsZXIgPT0gXyR7dmFyaWFibGVOYW1lUHJlZml4fUhhbmRsZXIpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFtfJHt2YXJpYWJsZU5hbWVQcmVmaXh9SGFuZGxlciByZWxl
YXNlXTsKLSAgICBfJHt2YXJpYWJsZU5hbWVQcmVmaXh9SGFuZGxlciA9IFtoYW5kbGVyIHJldGFp
bl07CisgICAgXyR7dmFyaWFibGVOYW1lUHJlZml4fUhhbmRsZXIgPSBoYW5kbGVyOwogCiAgICAg
YXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yJHtkb21h
aW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKICAgICBhdXRvIGFsdGVybmF0ZUFn
ZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDwke2RvbWFpbk5hbWV9
QmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZSR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hl
cj4+KCIke2RvbWFpbk5hbWV9Il9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlz
cGF0Y2hlcikpOwpAQCAtMTUxLDEzICsxNTAsMTMgQEAgJHtpbnZvY2F0aW9ufQogCiAtIChpZDwk
e29iamNQcmVmaXh9JHtkb21haW5OYW1lfURvbWFpbkhhbmRsZXI+KSR7dmFyaWFibGVOYW1lUHJl
Zml4fUhhbmRsZXIKIHsKLSAgICByZXR1cm4gXyR7dmFyaWFibGVOYW1lUHJlZml4fUhhbmRsZXI7
CisgICAgcmV0dXJuIF8ke3ZhcmlhYmxlTmFtZVByZWZpeH1IYW5kbGVyLmdldCgpOwogfSIiIikK
IAogICAgIENvbmZpZ3VyYXRpb25HZXR0ZXJJbXBsZW1lbnRhdGlvbiA9ICgKICAgICAiIiItICgk
e29iamNQcmVmaXh9JHtkb21haW5OYW1lfURvbWFpbkV2ZW50RGlzcGF0Y2hlciAqKSR7dmFyaWFi
bGVOYW1lUHJlZml4fUV2ZW50RGlzcGF0Y2hlcgogewogICAgIGlmICghXyR7dmFyaWFibGVOYW1l
UHJlZml4fUV2ZW50RGlzcGF0Y2hlcikKLSAgICAgICAgXyR7dmFyaWFibGVOYW1lUHJlZml4fUV2
ZW50RGlzcGF0Y2hlciA9IFtbJHtvYmpjUHJlZml4fSR7ZG9tYWluTmFtZX1Eb21haW5FdmVudERp
c3BhdGNoZXIgYWxsb2NdIGluaXRXaXRoQ29udHJvbGxlcjpfY29udHJvbGxlcl07Ci0gICAgcmV0
dXJuIF8ke3ZhcmlhYmxlTmFtZVByZWZpeH1FdmVudERpc3BhdGNoZXI7CisgICAgICAgIF8ke3Zh
cmlhYmxlTmFtZVByZWZpeH1FdmVudERpc3BhdGNoZXIgPSBhZG9wdE5TKFtbJHtvYmpjUHJlZml4
fSR7ZG9tYWluTmFtZX1Eb21haW5FdmVudERpc3BhdGNoZXIgYWxsb2NdIGluaXRXaXRoQ29udHJv
bGxlcjpfY29udHJvbGxlcl0pOworICAgIHJldHVybiBfJHt2YXJpYWJsZU5hbWVQcmVmaXh9RXZl
bnREaXNwYXRjaGVyLmdldCgpOwogfSIiIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9v
YmpjX2luc3RhbmNlLm1tCmluZGV4IGY3ZmYzNjJjOWVmZmQzN2ExMjI5ZDYzN2ZiNTIxMjExNTU1
ZDU1YjYuLjZmNWJkMWE2Y2E4NmVmZGMxZmEzM2YxMzQ5ZjZhNzFlNDI2OGZlNjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQpAQCAtNzIsOSArNzIsOCBA
QCBSdW50aW1lT2JqZWN0KiBPYmpjSW5zdGFuY2U6Om5ld1J1bnRpbWVPYmplY3QoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplYwogCiB2b2lkIE9iamNJbnN0YW5jZTo6c2V0R2xvYmFs
RXhjZXB0aW9uKE5TU3RyaW5nKiBleGNlcHRpb24sIEpTR2xvYmFsT2JqZWN0KiBleGNlcHRpb25F
bnZpcm9ubWVudCkKIHsKLSAgICBOU1N0cmluZyAqb2xkRXhjZXB0aW9uID0gc19leGNlcHRpb247
CisgICAgYXV0byBvbGRFeGNlcHRpb24gPSBhZG9wdE5TKHNfZXhjZXB0aW9uKTsKICAgICBzX2V4
Y2VwdGlvbiA9IFtleGNlcHRpb24gY29weV07Ci0gICAgW29sZEV4Y2VwdGlvbiByZWxlYXNlXTsK
IAogICAgIHNfZXhjZXB0aW9uRW52aXJvbm1lbnQgPSBleGNlcHRpb25FbnZpcm9ubWVudDsKIH0K
QEAgLTk0LDkgKzkzLDggQEAgdm9pZCBPYmpjSW5zdGFuY2U6Om1vdmVHbG9iYWxFeGNlcHRpb25U
b0V4ZWNTdGF0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE8KICAgICAgICAgdGhyb3dF
cnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgc19leGNlcHRpb24pOwogICAgIH0KIAot
ICAgIFtzX2V4Y2VwdGlvbiByZWxlYXNlXTsKLSAgICBzX2V4Y2VwdGlvbiA9IG5pbDsKLSAgICBz
X2V4Y2VwdGlvbkVudmlyb25tZW50ID0gMDsKKyAgICBhdXRvIGV4Y2VwdGlvbiA9IGFkb3B0TlMo
c3RkOjpleGNoYW5nZShzX2V4Y2VwdGlvbiwgbmlsKSk7CisgICAgc19leGNlcHRpb25FbnZpcm9u
bWVudCA9IG51bGxwdHI7CiB9CiAKIE9iamNJbnN0YW5jZTo6T2JqY0luc3RhbmNlKGlkIGluc3Rh
bmNlLCBSZWZQdHI8Um9vdE9iamVjdD4mJiByb290T2JqZWN0KSAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
dGVzdGJpbmRpbmdzLm1tCmluZGV4IGM1OTBkNDkzMDc5ZmJlN2Q2MzFmNGIwNTk1ZDZiNDYyYzY1
MTk1OTUuLjRhYzg1NDBiNmZhNzYxMzQ2OTM1ODA4MWExNWExOGE4YjAyMmIxMzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5tbQpAQCAtNjQsNyArNjQsNyBAQCBAZW5kCiBAaW50
ZXJmYWNlIE15Rmlyc3RJbnRlcmZhY2UgOiBOU09iamVjdAogewogICAgIGludCBteUludDsKLSAg
ICBNeVNlY29uZEludGVyZmFjZSAqbXlTZWNvbmRJbnRlcmZhY2U7CisgICAgUmV0YWluUHRyPE15
U2Vjb25kSW50ZXJmYWNlPiBteVNlY29uZEludGVyZmFjZTsKICAgICBpZCBqc29iamVjdDsKICAg
ICBOU1N0cmluZyAqc3RyaW5nOwogfQpAQCAtMTI4LDE3ICsxMjgsMTAgQEAgLSAodm9pZClzZXRW
YWx1ZTooaWQpdmFsdWUgZm9yVW5kZWZpbmVkS2V5OihOU1N0cmluZyAqKWtleQogLSBpbml0CiB7
CiAgICAgTE9HICgiXG4iKTsKLSAgICBteVNlY29uZEludGVyZmFjZSA9IFtbTXlTZWNvbmRJbnRl
cmZhY2UgYWxsb2NdIGluaXRdOworICAgIG15U2Vjb25kSW50ZXJmYWNlID0gYWRvcHROUyhbW015
U2Vjb25kSW50ZXJmYWNlIGFsbG9jXSBpbml0XSk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0g
KHZvaWQpZGVhbGxvYwotewotICAgIExPRyAoIlxuIik7Ci0gICAgW215U2Vjb25kSW50ZXJmYWNl
IHJlbGVhc2VdOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQogLSAoaW50KWdldEludCAKIHsK
ICAgICBMT0cgKCJteUludCA9ICVkXG4iLCBteUludCk7CkBAIC0xNTksNyArMTUyLDcgQEAgLSAo
TlNTdHJpbmcgKilnZXRTdHJpbmcKIC0gKE15U2Vjb25kSW50ZXJmYWNlICopZ2V0TXlTZWNvbmRJ
bnRlcmZhY2UgCiB7CiAgICAgTE9HICgiXG4iKTsKLSAgICByZXR1cm4gbXlTZWNvbmRJbnRlcmZh
Y2U7CisgICAgcmV0dXJuIG15U2Vjb25kSW50ZXJmYWNlLmdldCgpOwogfQogCiAtICh2b2lkKWxv
Z01lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L3dhay9XQUtWaWV3Lm1tCmluZGV4IGYyNDM1YmYzYjE2MGRmODgwOTM3ZDIyZTMyMWEzZDliNTQ1
MGVlNDkuLmY2YTc1NDU2N2Y1Y2FkYzg4MTc3NzI1N2JmMzJiZWU3MDQ1ZDk1NjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW0KQEAgLTM4LDIxICszOCwyMiBA
QAogI2ltcG9ydCAiV2ViQ29yZVRocmVhZE1lc3NhZ2UuaCIKICNpbXBvcnQgIldlYkV2ZW50Lmgi
CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAKIFdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICpXQUtWaWV3RnJhbWVTaXplRGlkQ2hhbmdl
Tm90aWZpY2F0aW9uID0gICBAIldBS1ZpZXdGcmFtZVNpemVEaWRDaGFuZ2VOb3RpZmljYXRpb24i
OwogV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcgKldBS1ZpZXdEaWRTY3JvbGxOb3RpZmljYXRpb24g
PSAgICAgICAgICAgIEAiV0FLVmlld0RpZFNjcm9sbE5vdGlmaWNhdGlvbiI7CiAKLXN0YXRpYyBX
QUtWaWV3ICpnbG9iYWxGb2N1c1ZpZXcgPSBuaWw7CitzdGF0aWMgUmV0YWluUHRyPFdBS1ZpZXc+
JiBnbG9iYWxGb2N1c1ZpZXcoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5Q
dHI8V0FLVmlldz4+IF9nbG9iYWxGb2N1c1ZpZXc7CisgICAgcmV0dXJuIF9nbG9iYWxGb2N1c1Zp
ZXc7Cit9CisKIHN0YXRpYyBDR0ludGVycG9sYXRpb25RdWFsaXR5IHNJbnRlcnBvbGF0aW9uUXVh
bGl0eTsKIAogc3RhdGljIHZvaWQgc2V0R2xvYmFsRm9jdXNWaWV3KFdBS1ZpZXcgKnZpZXcpCiB7
Ci0gICAgaWYgKHZpZXcgPT0gZ2xvYmFsRm9jdXNWaWV3KQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBbdmlldyByZXRhaW5dOwotICAgIFtnbG9iYWxGb2N1c1ZpZXcgcmVsZWFzZV07Ci0gICAgZ2xv
YmFsRm9jdXNWaWV3ID0gdmlldzsKKyAgICBnbG9iYWxGb2N1c1ZpZXcoKSA9IHZpZXc7CiB9CiAK
IHN0YXRpYyBXQUtTY3JvbGxWaWV3ICplbmNsb3NpbmdTY3JvbGxWaWV3KFdBS1ZpZXcgKnZpZXcp
CkBAIC00MDcsNyArNDA4LDcgQEAgLSAodm9pZCl2aWV3V2lsbERyYXcKIAogKyAoV0FLVmlldyAq
KWZvY3VzVmlldwogewotICAgIHJldHVybiBnbG9iYWxGb2N1c1ZpZXc7CisgICAgcmV0dXJuIGds
b2JhbEZvY3VzVmlldygpLmdldCgpOwogfQogCiAtIChOU1JlY3QpYm91bmRzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1dpbmRvdy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lm1tCmluZGV4IDFlNGJkZmY4YmIyNDVl
MWQ2NzYxYTdhOGYxYzk0OWJiYWFjMDg3NDkuLjc3YTk1MDlkMGE3NGZhZmMxYjAyODY4ODVkMGMz
OWIxMmNlYWI3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsv
V0FLV2luZG93Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2lu
ZG93Lm1tCkBAIC0zMzcsNyArMzM3LDggQEAgLSAodm9pZClzZW5kRXZlbnRTeW5jaHJvbm91c2x5
OihXZWJFdmVudCAqKWFuRXZlbnQKICAgICBBU1NFUlQoYW5FdmVudCk7CiAgICAgQVNTRVJUKFdl
YlRocmVhZElzTG9ja2VkT3JEaXNhYmxlZCgpKTsKICAgICBXZWJFdmVudCAqbGFzdEV2ZW50ID0g
Y3VycmVudEV2ZW50OwotICAgIGN1cnJlbnRFdmVudCA9IFthbkV2ZW50IHJldGFpbl07CisgICAg
YXV0byBjdXJyZW50RXZlbnRQcm90ZWN0b3IgPSByZXRhaW5QdHIoYW5FdmVudCk7CisgICAgY3Vy
cmVudEV2ZW50ID0gYW5FdmVudDsKIAogICAgIHN3aXRjaCAoYW5FdmVudC50eXBlKSB7CiAgICAg
Y2FzZSBXZWJFdmVudE1vdXNlTW92ZWQ6CkBAIC0zNjQsNyArMzY1LDYgQEAgLSAodm9pZClzZW5k
RXZlbnRTeW5jaHJvbm91c2x5OihXZWJFdmVudCAqKWFuRXZlbnQKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCi0gICAgW2N1cnJlbnRFdmVudCByZWxlYXNlXTsKICAgICBjdXJyZW50RXZlbnQgPSBs
YXN0RXZlbnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93
YWsvV2ViQ29yZVRocmVhZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2Vi
Q29yZVRocmVhZC5tbQppbmRleCBmYWVkOTI0MmY4MjJjMTc4YjQ0MWQzMTk1MmE4ZjUyMmE1Yjcx
NjYxLi5mNTQwZGUwNzVjZGZjMGQ5MTAwZmU5YTczMTU3OGJkYzU1N2VkYzY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCkBAIC0yODAs
MTggKzI4MCwxNSBAQCB2b2lkIFdlYlRocmVhZFJ1bk9uTWFpblRocmVhZCh2b2lkKF5kZWxlZ2F0
ZUJsb2NrKSgpKQogCiBzdGF0aWMgdm9pZCBNYWluVGhyZWFkQWRvcHRBbmRSZWxlYXNlKGlkIG9i
aikKIHsKLSAgICBpZiAoIVdlYlRocmVhZElzRW5hYmxlZCgpIHx8IENGUnVuTG9vcEdldE1haW4o
KSA9PSBDRlJ1bkxvb3BHZXRDdXJyZW50KCkpIHsKLSAgICAgICAgW29iaiByZWxlYXNlXTsKKyAg
ICBhdXRvIGFkb3B0ZWRPYmogPSBhZG9wdE5TKG9iaik7CisgICAgaWYgKCFXZWJUaHJlYWRJc0Vu
YWJsZWQoKSB8fCBDRlJ1bkxvb3BHZXRNYWluKCkgPT0gQ0ZSdW5Mb29wR2V0Q3VycmVudCgpKQog
ICAgICAgICByZXR1cm47Ci0gICAgfQogI2lmIExPR19SRUxFQVNFUwogICAgIE5TTG9nKEAiUmVs
ZWFzZSBzZW5kIFt3ZWIgdGhyZWFkXSA6ICVAIiwgb2JqKTsKICNlbmRpZgogICAgIC8vIFdlIG93
biBvYmogYXQgdGhpcyBwb2ludCwgc28gd2UgZG9uJ3QgbmVlZCB0aGUgYmxvY2sgdG8gaW1wbGlj
aXRseQogICAgIC8vIHJldGFpbiBpdC4KLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW29i
al0gewotICAgICAgICBbb2JqIHJlbGVhc2VdOwotICAgIH0pOworICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbYWRvcHRlZE9iaiA9IFdURk1vdmUoYWRvcHRlZE9iaildIHsgfSk7CiB9CiAK
IHZvaWQgV2ViVGhyZWFkQWRvcHRBbmRSZWxlYXNlKGlkIG9iaikKQEAgLTQwMiwxMSArMzk5LDEx
IEBAIHN0YXRpYyB2b2lkIEhhbmRsZVdlYlRocmVhZFJlbGVhc2VTb3VyY2Uodm9pZCopCiB7CiAg
ICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKIAotICAgIENGTXV0YWJsZUFycmF5UmVm
IG9iamVjdHMgPSBudWxscHRyOworICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4gb2Jq
ZWN0czsKICAgICB7CiAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod2ViVGhyZWFkUmVs
ZWFzZUxvY2spOwogICAgICAgICBpZiAoQ0ZBcnJheUdldENvdW50KFdlYlRocmVhZFJlbGVhc2VP
YmpBcnJheSkpIHsKLSAgICAgICAgICAgIG9iamVjdHMgPSBDRkFycmF5Q3JlYXRlTXV0YWJsZUNv
cHkobnVsbHB0ciwgMCwgV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5KTsKKyAgICAgICAgICAgIG9i
amVjdHMgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlQ29weShudWxscHRyLCAwLCBXZWJU
aHJlYWRSZWxlYXNlT2JqQXJyYXkpKTsKICAgICAgICAgICAgIENGQXJyYXlSZW1vdmVBbGxWYWx1
ZXMoV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5KTsKICAgICAgICAgfQogICAgIH0KQEAgLTQxNCwx
NSArNDExLDEyIEBAIHN0YXRpYyB2b2lkIEhhbmRsZVdlYlRocmVhZFJlbGVhc2VTb3VyY2Uodm9p
ZCopCiAgICAgaWYgKCFvYmplY3RzKQogICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwLCBjb3VudCA9IENGQXJyYXlHZXRDb3VudChvYmplY3RzKTsgaSA8IGNvdW50OyAr
K2kpIHsKLSAgICAgICAgaWQgb2JqID0gKGlkKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgob2JqZWN0
cywgaSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgY291bnQgPSBDRkFycmF5R2V0Q291bnQo
b2JqZWN0cy5nZXQoKSk7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIGF1dG8gb2JqID0gYWRv
cHRDRihDRkFycmF5R2V0VmFsdWVBdEluZGV4KG9iamVjdHMuZ2V0KCksIGkpKTsKICNpZiBMT0df
UkVMRUFTRVMKLSAgICAgICAgTlNMb2coQCJSZWxlYXNlIHJlY3YgW3dlYiB0aHJlYWRdIDogJUAi
LCBvYmopOworICAgICAgICBOU0xvZyhAIlJlbGVhc2UgcmVjdiBbd2ViIHRocmVhZF0gOiAlQCIs
IG9iai5nZXQoKSk7CiAjZW5kaWYKLSAgICAgICAgW29iaiByZWxlYXNlXTsKICAgICB9Ci0KLSAg
ICBDRlJlbGVhc2Uob2JqZWN0cyk7CiB9CiAKIHZvaWQgV2ViVGhyZWFkQ2FsbERlbGVnYXRlKE5T
SW52b2NhdGlvbiogaW52b2NhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3Rv
cnkvV2ViSGlzdG9yeS5tbQppbmRleCA5YTY2NjgzZjZlMzJjNDQ4NjA5OWNlNWM5NTdiOWMwNzJj
OWNmNTQ2Li5jN2Y0NWFjNWUwM2UwNTI0YWU5ZTkwNGZmNjExMjExMmI5NTJjODczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCkBAIC01NSw3ICs1
NSwxMSBAQCBOU1N0cmluZyAqV2ViSGlzdG9yeUl0ZW1zRGlzY2FyZGVkV2hpbGVMb2FkaW5nTm90
aWZpY2F0aW9uID0gQCJXZWJIaXN0b3J5SXRlbXNEaQogTlNTdHJpbmcgKldlYkhpc3RvcnlTYXZl
ZE5vdGlmaWNhdGlvbiA9IEAiV2ViSGlzdG9yeVNhdmVkTm90aWZpY2F0aW9uIjsKIE5TU3RyaW5n
ICpXZWJIaXN0b3J5SXRlbXNLZXkgPSBAIldlYkhpc3RvcnlJdGVtcyI7CiAKLXN0YXRpYyBXZWJI
aXN0b3J5ICpfc2hhcmVkSGlzdG9yeSA9IG5pbDsKK3N0YXRpYyBSZXRhaW5QdHI8V2ViSGlzdG9y
eT4mIHNoYXJlZEhpc3RvcnkoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5Q
dHI8V2ViSGlzdG9yeT4+IF9zaGFyZWRIaXN0b3J5OworICAgIHJldHVybiBfc2hhcmVkSGlzdG9y
eTsKK30KIAogTlNTdHJpbmcgKkZpbGVWZXJzaW9uS2V5ID0gQCJXZWJIaXN0b3J5RmlsZVZlcnNp
b24iOwogTlNTdHJpbmcgKkRhdGVzQXJyYXlLZXkgPSBAIldlYkhpc3RvcnlEYXRlcyI7CkBAIC02
NTEsMTcgKzY1NSwxNiBAQCBAaW1wbGVtZW50YXRpb24gV2ViSGlzdG9yeQogCiArIChXZWJIaXN0
b3J5ICopb3B0aW9uYWxTaGFyZWRIaXN0b3J5CiB7Ci0gICAgcmV0dXJuIF9zaGFyZWRIaXN0b3J5
OworICAgIHJldHVybiBzaGFyZWRIaXN0b3J5KCkuZ2V0KCk7CiB9CiAKICsgKHZvaWQpc2V0T3B0
aW9uYWxTaGFyZWRIaXN0b3J5OihXZWJIaXN0b3J5ICopaGlzdG9yeQogewotICAgIGlmIChfc2hh
cmVkSGlzdG9yeSA9PSBoaXN0b3J5KQorICAgIGlmIChzaGFyZWRIaXN0b3J5KCkgPT0gaGlzdG9y
eSkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBOZWVkIHRvIHRoaW5rIGFib3V0IG11
bHRpcGxlIGluc3RhbmNlcyBvZiBXZWJIaXN0b3J5IHBlciBhcHBsaWNhdGlvbgogICAgIC8vIGFu
ZCBjb3JyZWN0IHN5bmNocm9uaXphdGlvbiBvZiBoaXN0b3J5IGZpbGUgYmV0d2VlbiBhcHBsaWNh
dGlvbnMuCi0gICAgW19zaGFyZWRIaXN0b3J5IHJlbGVhc2VdOwotICAgIF9zaGFyZWRIaXN0b3J5
ID0gW2hpc3RvcnkgcmV0YWluXTsKKyAgICBzaGFyZWRIaXN0b3J5KCkgPSBoaXN0b3J5OwogCiAg
ICAgV2ViVmlzaXRlZExpbmtTdG9yZTo6c2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlua3MoaGlzdG9y
eSk7CiAgICAgV2ViVmlzaXRlZExpbmtTdG9yZTo6cmVtb3ZlQWxsVmlzaXRlZExpbmtzKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkRhdGFi
YXNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5EYXRhYmFz
ZS5tbQppbmRleCBkYTA0ODY5ZGRjMTVhNDZkMDVmOWI2ZTllNjYwNzI5NGRkYWQ5ZjFjLi42ZTI4
NzJkMmMzYzM3MDViMzQxNTdlODMyODMyNWYwODQxZWM3M2M1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkRhdGFiYXNlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luRGF0YWJhc2UubW0KQEAgLTE4NSwx
NSArMTg1LDE4IEBAIC0gKE5TQXJyYXkgKilwbHVnaW5zCiAgICAgcmV0dXJuIFtwbHVnaW5zIGFs
bFZhbHVlc107CiB9CiAKLXN0YXRpYyBOU0FycmF5ICphZGRpdGlvbmFsV2ViUGx1Z0luUGF0aHM7
CitzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+JiBhZGRpdGlvbmFsV2ViUGx1Z0luUGF0aHMoKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IF9hZGRpdGlv
bmFsV2ViUGx1Z0luUGF0aHM7CisgICAgcmV0dXJuIF9hZGRpdGlvbmFsV2ViUGx1Z0luUGF0aHM7
Cit9CiAKICsgKHZvaWQpc2V0QWRkaXRpb25hbFdlYlBsdWdJblBhdGhzOihOU0FycmF5ICopYWRk
aXRpb25hbFBhdGhzCiB7Ci0gICAgaWYgKGFkZGl0aW9uYWxQYXRocyA9PSBhZGRpdGlvbmFsV2Vi
UGx1Z0luUGF0aHMpCisgICAgaWYgKGFkZGl0aW9uYWxQYXRocyA9PSBhZGRpdGlvbmFsV2ViUGx1
Z0luUGF0aHMoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFthZGRpdGlvbmFsV2ViUGx1
Z0luUGF0aHMgcmVsZWFzZV07Ci0gICAgYWRkaXRpb25hbFdlYlBsdWdJblBhdGhzID0gW2FkZGl0
aW9uYWxQYXRocyBjb3B5XTsKKyAgICBhZGRpdGlvbmFsV2ViUGx1Z0luUGF0aHMoKSA9IGFkb3B0
TlMoW2FkZGl0aW9uYWxQYXRocyBjb3B5XSk7CiAKICAgICAvLyBPbmUgbWlnaHQgYmUgdGVtcHRl
ZCB0byBhZGQgYWRkaXRpb25hbFdlYlBsdWdJblBhdGhzIHRvIHRoZSBnbG9iYWwgV2ViUGx1Z2lu
RGF0YWJhc2UgaGVyZS4KICAgICAvLyBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIGVh
cmxpZXIgdmVyc2lvbnMgb2YgdGhlICtzZXRBZGRpdGlvbmFsV2ViUGx1Z0luUGF0aHM6IFNQSSwK
QEAgLTQxMSwxNiArNDE0LDE2IEBAICsgKE5TQXJyYXkgKilfZGVmYXVsdFBsdWdJblBhdGhzCiAK
IC0gKE5TQXJyYXkgKilfcGx1Z0luUGF0aHMKIHsKLSAgICBpZiAoc2VsZiA9PSBzaGFyZWREYXRh
YmFzZSAmJiBhZGRpdGlvbmFsV2ViUGx1Z0luUGF0aHMpIHsKKyAgICBpZiAoc2VsZiA9PSBzaGFy
ZWREYXRhYmFzZSAmJiBhZGRpdGlvbmFsV2ViUGx1Z0luUGF0aHMoKSkgewogICAgICAgICAvLyBB
ZGQgYWRkaXRpb25hbFdlYlBsdWdJblBhdGhzIHRvIHRoZSBnbG9iYWwgV2ViUGx1Z2luRGF0YWJh
c2UuICBXZSBkbyB0aGlzIGhlcmUgZm9yCiAgICAgICAgIC8vIGJhY2t3YXJkIGNvbXBhdGliaWxp
dHkgd2l0aCBlYXJsaWVyIHZlcnNpb25zIG9mIHRoZSArc2V0QWRkaXRpb25hbFdlYlBsdWdJblBh
dGhzOiBTUEksCiAgICAgICAgIC8vIHdoaWNoIHNpbXBseSBzYXZlZCBhIGNvcHkgb2YgdGhlIGFk
ZGl0aW9uYWwgcGF0aHMgYW5kIGRpZCBub3QgY2F1c2UgdGhlIHBsdWdpbiBEQiB0byAKICAgICAg
ICAgLy8gcmVmcmVzaC4gIFNlZSBSYWRhcnMgNDYwODQ4NyBhbmQgNDYwOTA0Ny4KICAgICAgICAg
TlNNdXRhYmxlQXJyYXkgKm1vZGlmaWVkUGx1Z0luUGF0aHMgPSBbW3BsdWdJblBhdGhzIG11dGFi
bGVDb3B5XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIFttb2RpZmllZFBsdWdJblBhdGhzIGFkZE9i
amVjdHNGcm9tQXJyYXk6YWRkaXRpb25hbFdlYlBsdWdJblBhdGhzXTsKKyAgICAgICAgW21vZGlm
aWVkUGx1Z0luUGF0aHMgYWRkT2JqZWN0c0Zyb21BcnJheTphZGRpdGlvbmFsV2ViUGx1Z0luUGF0
aHMoKS5nZXQoKV07CiAgICAgICAgIHJldHVybiBtb2RpZmllZFBsdWdJblBhdGhzOwotICAgIH0g
ZWxzZQotICAgICAgICByZXR1cm4gcGx1Z0luUGF0aHM7CisgICAgfQorICAgIHJldHVybiBwbHVn
SW5QYXRoczsKIH0KIAogLSAodm9pZClfYWRkUGx1Z2luOihXZWJCYXNlUGx1Z2luUGFja2FnZSAq
KXBsdWdpbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4IGZmODYzMDg2OWFlZTgzMzBmNzBhODdhODAw
ZjM1Mjc2Y2Y5Nzc4YTcuLjMxYWFjMTliNDgxZmIwNmU5YzEyNWEyNDUxMTc2ZWExZDI4ZWFjZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQubW0KQEAgLTEwMzQsOSArMTAzNCw4IEBAIHZvaWQgV2ViQ2hyb21l
Q2xpZW50OjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAg
ICAgU0VMIHNlbGVjdG9yID0gQHNlbGVjdG9yKHdlYlZpZXc6ZW50ZXJGdWxsU2NyZWVuRm9yRWxl
bWVudDpsaXN0ZW5lcjopOwogICAgIGlmIChbW21fd2ViVmlldyBVSURlbGVnYXRlXSByZXNwb25k
c1RvU2VsZWN0b3I6c2VsZWN0b3JdKSB7Ci0gICAgICAgIFdlYktpdEZ1bGxTY3JlZW5MaXN0ZW5l
ciogbGlzdGVuZXIgPSBbW1dlYktpdEZ1bGxTY3JlZW5MaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhF
bGVtZW50OiZlbGVtZW50XTsKLSAgICAgICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBzZWxl
Y3Rvciwga2l0KCZlbGVtZW50KSwgbGlzdGVuZXIpOwotICAgICAgICBbbGlzdGVuZXIgcmVsZWFz
ZV07CisgICAgICAgIGF1dG8gbGlzdGVuZXIgPSBhZG9wdE5TKFtbV2ViS2l0RnVsbFNjcmVlbkxp
c3RlbmVyIGFsbG9jXSBpbml0V2l0aEVsZW1lbnQ6JmVsZW1lbnRdKTsKKyAgICAgICAgQ2FsbFVJ
RGVsZWdhdGUobV93ZWJWaWV3LCBzZWxlY3Rvciwga2l0KCZlbGVtZW50KSwgbGlzdGVuZXIuZ2V0
KCkpOwogICAgIH0KICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDg5Mzg3MGE1NDViOWI3NTRmNDFkNGI2YzU2Yjk1MTNi
MTQ2OGQ2OTAuLjJhYThjMzlhNDAzOTZiZmMxODEwNDQzNjlhM2M2MjBjMzRlMDgwNDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xMDM0LDE1ICsxMDM0LDE0IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnkoKQogICAgIGlmIChbdmlldyBo
aXN0b3J5RGVsZWdhdGVdKSB7CiAgICAgICAgIFdlYkhpc3RvcnlEZWxlZ2F0ZUltcGxlbWVudGF0
aW9uQ2FjaGUqIGltcGxlbWVudGF0aW9ucyA9IFdlYlZpZXdHZXRIaXN0b3J5RGVsZWdhdGVJbXBs
ZW1lbnRhdGlvbnModmlldyk7CiAgICAgICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPm5hdmlnYXRl
ZEZ1bmMpIHsKLSAgICAgICAgICAgIFdlYk5hdmlnYXRpb25EYXRhICpkYXRhID0gW1tXZWJOYXZp
Z2F0aW9uRGF0YSBhbGxvY10gaW5pdFdpdGhVUkxTdHJpbmc6bG9hZGVyLT51cmwoKS5zdHJpbmco
KQorICAgICAgICAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW1dlYk5hdmlnYXRpb25EYXRhIGFs
bG9jXSBpbml0V2l0aFVSTFN0cmluZzpsb2FkZXItPnVybCgpLnN0cmluZygpCiAgICAgICAgICAg
ICAgICAgdGl0bGU6bmlsT3JOU1N0cmluZyhsb2FkZXItPnRpdGxlKCkuc3RyaW5nKQogICAgICAg
ICAgICAgICAgIG9yaWdpbmFsUmVxdWVzdDpsb2FkZXItPm9yaWdpbmFsUmVxdWVzdENvcHkoKS5u
c1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OlVwZGF0ZUhUVFBCb2R5
KQogICAgICAgICAgICAgICAgIHJlc3BvbnNlOmxvYWRlci0+cmVzcG9uc2UoKS5uc1VSTFJlc3Bv
bnNlKCkKICAgICAgICAgICAgICAgICBoYXNTdWJzdGl0dXRlRGF0YTpsb2FkZXItPnN1YnN0aXR1
dGVEYXRhKCkuaXNWYWxpZCgpCi0gICAgICAgICAgICAgICAgY2xpZW50UmVkaXJlY3RTb3VyY2U6
bG9hZGVyLT5jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkoKV07CisgICAgICAgICAgICAg
ICAgY2xpZW50UmVkaXJlY3RTb3VyY2U6bG9hZGVyLT5jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhp
c3RvcnkoKV0pOwogCi0gICAgICAgICAgICBDYWxsSGlzdG9yeURlbGVnYXRlKGltcGxlbWVudGF0
aW9ucy0+bmF2aWdhdGVkRnVuYywgdmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkTmF2aWdhdGVX
aXRoTmF2aWdhdGlvbkRhdGE6aW5GcmFtZTopLCBkYXRhLCBtX3dlYkZyYW1lLmdldCgpKTsKLSAg
ICAgICAgICAgIFtkYXRhIHJlbGVhc2VdOworICAgICAgICAgICAgQ2FsbEhpc3RvcnlEZWxlZ2F0
ZShpbXBsZW1lbnRhdGlvbnMtPm5hdmlnYXRlZEZ1bmMsIHZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3
OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhOmluRnJhbWU6KSwgZGF0YS5nZXQoKSwgbV93
ZWJGcmFtZS5nZXQoKSk7CiAgICAgICAgIH0KICAgICAKICAgICAgICAgcmV0dXJuOwpAQCAtMTgw
MCw4ICsxNzk5LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoWyhXZWJCYXNlTmV0c2NhcGVQbHVn
aW5WaWV3ICopcGxhdGZvcm1XaWRnZXQoKSBnZXRGb3JtVmFsdWU6Jm5zVmFsdWVdKSB7CiAgICAg
ICAgICAgICBpZiAoIW5zVmFsdWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgdmFsdWUgPSBTdHJpbmcobnNWYWx1ZSk7Ci0gICAgICAgICAgICBbbnNWYWx1ZSBy
ZWxlYXNlXTsKKyAgICAgICAgICAgIHZhbHVlID0gU3RyaW5nKGFkb3B0TlMobnNWYWx1ZSkuZ2V0
KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViSW5zcGVjdG9y
L1dlYk5vZGVIaWdobGlnaHRWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViSW5z
cGVjdG9yL1dlYk5vZGVIaWdobGlnaHRWaWV3Lm1tCmluZGV4IDE3MjdjNjdmMzk0NGYyZDZmZTI4
OGZiODg3YzUxNGEyN2EzN2QzYzQuLjIwZjE5ZjBiYzRiYjQ4ZGQyZGU1OTA2ZDllMjdlM2IzYzM0
YzI1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkluc3BlY3Rvci9X
ZWJOb2RlSGlnaGxpZ2h0Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJJ
bnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodFZpZXcubW0KQEAgLTExNSwxMCArMTE1LDkgQEAgLSAo
dm9pZClfYXR0YWNoOihDQUxheWVyICopcGFyZW50IG51bUxheWVyczooTlNVSW50ZWdlciludW1M
YXllcnMKICAgICAvLyBSZW1vdmUgYW5kIGNyZWF0ZSBuZXcgbGF5ZXJzLgogICAgIFtzZWxmIF9y
ZW1vdmVBbGxMYXllcnNdOwogICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IG51bUxheWVy
czsgKytpKSB7Ci0gICAgICAgIENBU2hhcGVMYXllciAqbGF5ZXIgPSBbW0NBU2hhcGVMYXllciBh
bGxvY10gaW5pdF07Ci0gICAgICAgIFtfbGF5ZXJzIGFkZE9iamVjdDpsYXllcl07Ci0gICAgICAg
IFtwYXJlbnQgYWRkU3VibGF5ZXI6bGF5ZXJdOwotICAgICAgICBbbGF5ZXIgcmVsZWFzZV07Cisg
ICAgICAgIGF1dG8gbGF5ZXIgPSBhZG9wdE5TKFtbQ0FTaGFwZUxheWVyIGFsbG9jXSBpbml0XSk7
CisgICAgICAgIFtfbGF5ZXJzIGFkZE9iamVjdDpsYXllci5nZXQoKV07CisgICAgICAgIFtwYXJl
bnQgYWRkU3VibGF5ZXI6bGF5ZXIuZ2V0KCldOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQppbmRleCA5NGUwYzkyZTFkMjNk
NzVlZjEyZTc3NTlhOTljMzRjODFmNWJjZDA0Li42NGRkNzJlYmFiOThlZWIxYTJmMDZiMjRhNmNm
OWVlNWMxNDFiYjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkZyYW1lVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkZyYW1lVmlldy5tbQpAQCAtMTg5LDIzICsxODksMjAgQEAgLShOU1ZpZXcgPFdlYkRvY3VtZW50
Vmlldz4gKilfbWFrZURvY3VtZW50Vmlld0ZvckRhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilk
YXQKICAgICBpZiAoIU1JTUVUeXBlKQogICAgICAgICBNSU1FVHlwZSA9IEAidGV4dC9odG1sIjsK
ICAgICBDbGFzcyB2aWV3Q2xhc3MgPSBbc2VsZiBfdmlld0NsYXNzRm9yTUlNRVR5cGU6TUlNRVR5
cGVdOwotICAgIE5TVmlldyA8V2ViRG9jdW1lbnRWaWV3PiAqZG9jdW1lbnRWaWV3OworICAgIFJl
dGFpblB0cjxOU1ZpZXcgPFdlYkRvY3VtZW50Vmlldz4+IGRvY3VtZW50VmlldzsKICAgICBpZiAo
dmlld0NsYXNzKSB7CiAgICAgICAgIC8vIElmIHRoZSBkYXRhU291cmNlJ3MgcmVwcmVzZW50YXRp
b24gaGFzIGFscmVhZHkgYmVlbiBjcmVhdGVkLCBhbmQgaXQgaXMgYWxzbyB0aGUKICAgICAgICAg
Ly8gc2FtZSBjbGFzcyBhcyB0aGUgZGVzaXJlZCBkb2N1bWVudFZpZXcsIHRoZW4gdXNlIGl0IGFz
IHRoZSBkb2N1bWVudFZpZXcgaW5zdGVhZAogICAgICAgICAvLyBvZiBjcmVhdGluZyBhbm90aGVy
IG9uZSAoUmFkYXIgNDM0MDc4NykuCiAgICAgICAgIGlkIDxXZWJEb2N1bWVudFJlcHJlc2VudGF0
aW9uPiBkYXRhU291cmNlUmVwcmVzZW50YXRpb24gPSBbZGF0YVNvdXJjZSByZXByZXNlbnRhdGlv
bl07CiAgICAgICAgIGlmIChkYXRhU291cmNlUmVwcmVzZW50YXRpb24gJiYgW2RhdGFTb3VyY2VS
ZXByZXNlbnRhdGlvbiBjbGFzc10gPT0gdmlld0NsYXNzKQotICAgICAgICAgICAgZG9jdW1lbnRW
aWV3ID0gKE5TVmlldyA8V2ViRG9jdW1lbnRWaWV3PiAqKVtkYXRhU291cmNlUmVwcmVzZW50YXRp
b24gcmV0YWluXTsKKyAgICAgICAgICAgIGRvY3VtZW50VmlldyA9IChOU1ZpZXcgPFdlYkRvY3Vt
ZW50Vmlldz4gKilkYXRhU291cmNlUmVwcmVzZW50YXRpb247CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGRvY3VtZW50VmlldyA9IFsoTlNWaWV3IDxXZWJEb2N1bWVudFZpZXc+ICopW3ZpZXdD
bGFzcyBhbGxvY10gaW5pdF07Ci0gICAgfSBlbHNlCi0gICAgICAgIGRvY3VtZW50VmlldyA9IG5p
bDsKLSAgICAKLSAgICBbc2VsZiBfc2V0RG9jdW1lbnRWaWV3OmRvY3VtZW50Vmlld107Ci0gICAg
W2RvY3VtZW50VmlldyByZWxlYXNlXTsKKyAgICAgICAgICAgIGRvY3VtZW50VmlldyA9IGFkb3B0
TlMoWyhOU1ZpZXcgPFdlYkRvY3VtZW50Vmlldz4gKilbdmlld0NsYXNzIGFsbG9jXSBpbml0XSk7
CisgICAgfQogICAgIAotICAgIHJldHVybiBkb2N1bWVudFZpZXc7CisgICAgW3NlbGYgX3NldERv
Y3VtZW50Vmlldzpkb2N1bWVudFZpZXcuZ2V0KCldOworICAgIHJldHVybiBkb2N1bWVudFZpZXcu
YXV0b3JlbGVhc2UoKTsKIH0KIAogLSAodm9pZClfc2V0V2ViRnJhbWU6KFdlYkZyYW1lICopd2Vi
RnJhbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA0
OGU5MjBkZTA5ODE3NjIwNTY2NDdlMDFjZjU1OTdmZWMwMmZjZWYzLi4xM2UxZjhiZTliNTlhYTZh
M2VjODBiZDQxMjJiYTQ2NzY0Yjg3NGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCkBAIC0xNDM4LDkgKzE0MzgsOSBAQCAtICh2b2lkKV9jb21tb25Jbml0
aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6KE5TU3RyaW5nICopZnJhbWVOYW1lIGdyb3VwTmFtZToo
TlNTdAogICAgIF9wcml2YXRlLT5tYWluRnJhbWVEb2N1bWVudFJlYWR5ID0gTk87CiAgICAgX3By
aXZhdGUtPmRyYXdzQmFja2dyb3VuZCA9IFlFUzsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LSAgICBfcHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yID0gW1tOU0NvbG9yIGNvbG9yV2l0aERldmlj
ZVdoaXRlOjEgYWxwaGE6MV0gcmV0YWluXTsKKyAgICBfcHJpdmF0ZS0+YmFja2dyb3VuZENvbG9y
ID0gYWRvcHROUyhbW05TQ29sb3IgY29sb3JXaXRoRGV2aWNlV2hpdGU6MSBhbHBoYToxXSByZXRh
aW5dKTsKICNlbHNlCi0gICAgX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvciA9IENHQ29sb3JSZXRh
aW4oV2ViQ29yZTo6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6d2hpdGUpKTsKKyAgICBf
cHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yID0gV2ViQ29yZTo6Y2FjaGVkQ0dDb2xvcihXZWJDb3Jl
OjpDb2xvcjo6d2hpdGUpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0xNDU1LDgg
KzE0NTUsOCBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6KE5T
U3RyaW5nICopZnJhbWVOYW1lIGdyb3VwTmFtZTooTlNTdAogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICBpZiAoQ2xhc3MgZ2VzdHVyZUNsYXNzID0gTlNDbGFzc0Zyb21TdHJpbmcoQCJOU0ltbWVkaWF0
ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyIikpIHsKICAgICAgICAgUmV0YWluUHRyPE5TSW1tZWRp
YXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXI+IHJlY29nbml6ZXIgPSBhZG9wdE5TKFsoTlNJbW1l
ZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplciAqKVtnZXN0dXJlQ2xhc3MgYWxsb2NdIGluaXRd
KTsKLSAgICAgICAgX3ByaXZhdGUtPmltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgPSBbW1dlYklt
bWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoV2ViVmlldzpzZWxmIHJlY29n
bml6ZXI6cmVjb2duaXplci5nZXQoKV07Ci0gICAgICAgIFtyZWNvZ25pemVyIHNldERlbGVnYXRl
Ol9wcml2YXRlLT5pbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyXTsKKyAgICAgICAgX3ByaXZhdGUt
PmltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV2ViSW1tZWRpYXRlQWN0aW9u
Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OnNlbGYgcmVjb2duaXplcjpyZWNvZ25p
emVyLmdldCgpXSk7CisgICAgICAgIFtyZWNvZ25pemVyIHNldERlbGVnYXRlOl9wcml2YXRlLT5p
bW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLmdldCgpXTsKICAgICAgICAgW3JlY29nbml6ZXIgc2V0
RGVsYXlzUHJpbWFyeU1vdXNlQnV0dG9uRXZlbnRzOk5PXTsKICAgICB9CiAjZW5kaWYKQEAgLTE1
OTgsNyArMTU5OCw3IEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFt
ZTooTlNTdHJpbmcgKilmcmFtZU5hbWUgZ3JvdXBOYW1lOihOU1N0CiAgICAgW3NlbGYgX3VwZGF0
ZVNjcmVlblNjYWxlRnJvbVdpbmRvd107CiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZh
dWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcihfd2FrV2luZG93
U2NyZWVuU2NhbGVDaGFuZ2VkOikgbmFtZTpXQUtXaW5kb3dTY3JlZW5TY2FsZURpZENoYW5nZU5v
dGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1
bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF93YWtXaW5kb3dW
aXNpYmlsaXR5Q2hhbmdlZDopIG5hbWU6V0FLV2luZG93VmlzaWJpbGl0eURpZENoYW5nZU5vdGlm
aWNhdGlvbiBvYmplY3Q6bmlsXTsKLSAgICBfcHJpdmF0ZS0+X2ZpeGVkUG9zaXRpb25Db250ZW50
ID0gW1tXZWJGaXhlZFBvc2l0aW9uQ29udGVudCBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OnNlbGZd
OworICAgIF9wcml2YXRlLT5fZml4ZWRQb3NpdGlvbkNvbnRlbnQgPSBhZG9wdE5TKFtbV2ViRml4
ZWRQb3NpdGlvbkNvbnRlbnQgYWxsb2NdIGluaXRXaXRoV2ViVmlldzpzZWxmXSk7CiAjaWYgRU5B
QkxFKE9SSUVOVEFUSU9OX0VWRU5UUykKICAgICBfcHJpdmF0ZS0+ZGV2aWNlT3JpZW50YXRpb24g
PSBbW3NlbGYgX1VJS2l0RGVsZWdhdGVGb3J3YXJkZXJdIGRldmljZU9yaWVudGF0aW9uXTsKICNl
bmRpZgpAQCAtMTc3OSw3ICsxNzc5LDcgQEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdp
dGhTdHlsZTooTlNTdHJpbmcgKilzdHlsZSBmcmFtZTooQ0dSZWN0KWZyYW1lIHByZWYKICAgICBf
cHJpdmF0ZS0+cHJlZmVyZW5jZXMgPSBbcHJlZmVyZW5jZXMgcmV0YWluXTsKICAgICBfcHJpdmF0
ZS0+bWFpbkZyYW1lRG9jdW1lbnRSZWFkeSA9IE5POwogICAgIF9wcml2YXRlLT5kcmF3c0JhY2tn
cm91bmQgPSBZRVM7Ci0gICAgX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvciA9IENHQ29sb3JSZXRh
aW4oV2ViQ29yZTo6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6d2hpdGUpKTsKKyAgICBf
cHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yID0gV2ViQ29yZTo6Y2FjaGVkQ0dDb2xvcihXZWJDb3Jl
OjpDb2xvcjo6d2hpdGUpOwogCiAgICAgYXV0byBmcmFtZVZpZXcgPSBhZG9wdE5TKFtbV2ViRnJh
bWVWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOiBDR1JlY3RNYWtlKDAsMCxmcmFtZS5zaXplLndp
ZHRoLGZyYW1lLnNpemUuaGVpZ2h0KV0pOwogICAgIFtmcmFtZVZpZXcgc2V0QXV0b3Jlc2l6aW5n
TWFzazpOU1ZpZXdXaWR0aFNpemFibGUgfCBOU1ZpZXdIZWlnaHRTaXphYmxlXTsKQEAgLTIzNjQs
NyArMjM2NCw2IEBAIC0gKHZvaWQpX2Nsb3NlUGx1Z2luRGF0YWJhc2VzCiAgICAgaWYgKF9wcml2
YXRlLT5wbHVnaW5EYXRhYmFzZSkgewogICAgICAgICBbX3ByaXZhdGUtPnBsdWdpbkRhdGFiYXNl
IGRlc3Ryb3lBbGxQbHVnaW5JbnN0YW5jZVZpZXdzXTsKICAgICAgICAgW19wcml2YXRlLT5wbHVn
aW5EYXRhYmFzZSBjbG9zZV07Ci0gICAgICAgIFtfcHJpdmF0ZS0+cGx1Z2luRGF0YWJhc2UgcmVs
ZWFzZV07CiAgICAgICAgIF9wcml2YXRlLT5wbHVnaW5EYXRhYmFzZSA9IG5pbDsKICAgICB9CiAj
ZW5kaWYKQEAgLTI1MDMsMTAgKzI1MDIsOCBAQCAtICh2b2lkKV9jbG9zZQogCiAgICAgW1dlYlBy
ZWZlcmVuY2VzIF9yZW1vdmVSZWZlcmVuY2VGb3JJZGVudGlmaWVyOltzZWxmIHByZWZlcmVuY2Vz
SWRlbnRpZmllcl1dOwogCi0gICAgV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzID0gX3ByaXZh
dGUtPnByZWZlcmVuY2VzOwotICAgIF9wcml2YXRlLT5wcmVmZXJlbmNlcyA9IG5pbDsKKyAgICBh
dXRvIHByZWZlcmVuY2VzID0gYWRvcHROUyhzdGQ6OmV4Y2hhbmdlKF9wcml2YXRlLT5wcmVmZXJl
bmNlcywgbmlsKSk7CiAgICAgW3ByZWZlcmVuY2VzIGRpZFJlbW92ZUZyb21XZWJWaWV3XTsKLSAg
ICBbcHJlZmVyZW5jZXMgcmVsZWFzZV07CiAKICAgICBbc2VsZiBfY2xvc2VQbHVnaW5EYXRhYmFz
ZXNdOwogCkBAIC0yNjQwLDggKzI2MzcsOCBAQCArIChCT09MKV9pc0ljb25Mb2FkaW5nRW5hYmxl
ZAogLSAoV2ViSW5zcGVjdG9yICopaW5zcGVjdG9yCiB7CiAgICAgaWYgKCFfcHJpdmF0ZS0+aW5z
cGVjdG9yKQotICAgICAgICBfcHJpdmF0ZS0+aW5zcGVjdG9yID0gW1tXZWJJbnNwZWN0b3IgYWxs
b2NdIGluaXRXaXRoSW5zcGVjdGVkV2ViVmlldzpzZWxmXTsKLSAgICByZXR1cm4gX3ByaXZhdGUt
Pmluc3BlY3RvcjsKKyAgICAgICAgX3ByaXZhdGUtPmluc3BlY3RvciA9IGFkb3B0TlMoW1tXZWJJ
bnNwZWN0b3IgYWxsb2NdIGluaXRXaXRoSW5zcGVjdGVkV2ViVmlldzpzZWxmXSk7CisgICAgcmV0
dXJuIF9wcml2YXRlLT5pbnNwZWN0b3IuZ2V0KCk7CiB9CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lO
U1BFQ1RPUikKQEAgLTI2ODcsMTMgKzI2ODQsMTIgQEAgLSAodm9pZClzZXRTaG93aW5nSW5zcGVj
dG9ySW5kaWNhdGlvbjooQk9PTClzaG93aW5nCiAKICAgICBpZiAoc2hvd2luZykgewogICAgICAg
ICBpZiAoIV9wcml2YXRlLT5pbmRpY2F0ZUxheWVyKSB7Ci0gICAgICAgICAgICBfcHJpdmF0ZS0+
aW5kaWNhdGVMYXllciA9IFtbV2ViSW5kaWNhdGVMYXllciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3
OnNlbGZdOworICAgICAgICAgICAgX3ByaXZhdGUtPmluZGljYXRlTGF5ZXIgPSBhZG9wdE5TKFtb
V2ViSW5kaWNhdGVMYXllciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OnNlbGZdKTsKICAgICAgICAg
ICAgIFtfcHJpdmF0ZS0+aW5kaWNhdGVMYXllciBzZXROZWVkc0xheW91dF07Ci0gICAgICAgICAg
ICBbW1tzZWxmIHdpbmRvd10gaG9zdExheWVyXSBhZGRTdWJsYXllcjpfcHJpdmF0ZS0+aW5kaWNh
dGVMYXllcl07CisgICAgICAgICAgICBbW1tzZWxmIHdpbmRvd10gaG9zdExheWVyXSBhZGRTdWJs
YXllcjpfcHJpdmF0ZS0+aW5kaWNhdGVMYXllci5nZXQoKV07CiAgICAgICAgIH0KICAgICB9IGVs
c2UgewogICAgICAgICBbX3ByaXZhdGUtPmluZGljYXRlTGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5
ZXJdOwotICAgICAgICBbX3ByaXZhdGUtPmluZGljYXRlTGF5ZXIgcmVsZWFzZV07CiAgICAgICAg
IF9wcml2YXRlLT5pbmRpY2F0ZUxheWVyID0gbmlsOwogICAgIH0KICNlbHNlCkBAIC0yNzk2LDcg
KzI3OTIsNiBAQCAtICh2b2lkKV9zZXRGb3JtRGVsZWdhdGU6IChpZDxXZWJGb3JtRGVsZWdhdGU+
KWRlbGVnYXRlCiAgICAgX3ByaXZhdGUtPmZvcm1EZWxlZ2F0ZSA9IGRlbGVnYXRlOwogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgW19wcml2YXRlLT5mb3JtRGVsZWdhdGVGb3J3YXJkZXIg
Y2xlYXJUYXJnZXRdOwotICAgIFtfcHJpdmF0ZS0+Zm9ybURlbGVnYXRlRm9yd2FyZGVyIHJlbGVh
c2VdOwogICAgIF9wcml2YXRlLT5mb3JtRGVsZWdhdGVGb3J3YXJkZXIgPSBuaWw7CiAjZW5kaWYK
IH0KQEAgLTI4MTMsOCArMjgwOCw4IEBAIC0gKGlkKV9mb3JtRGVsZWdhdGVGb3J3YXJkZXIKICAg
ICAgICAgcmV0dXJuIG5pbDsKIAogICAgIGlmICghX3ByaXZhdGUtPmZvcm1EZWxlZ2F0ZUZvcndh
cmRlcikKLSAgICAgICAgX3ByaXZhdGUtPmZvcm1EZWxlZ2F0ZUZvcndhcmRlciA9IFtbX1dlYlNh
ZmVGb3J3YXJkZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OltzZWxmIF9mb3JtRGVsZWdhdGVdIGRl
ZmF1bHRUYXJnZXQ6W1dlYkRlZmF1bHRGb3JtRGVsZWdhdGUgc2hhcmVkRm9ybURlbGVnYXRlXV07
Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5mb3JtRGVsZWdhdGVGb3J3YXJkZXI7CisgICAgICAgIF9w
cml2YXRlLT5mb3JtRGVsZWdhdGVGb3J3YXJkZXIgPSBhZG9wdE5TKFtbX1dlYlNhZmVGb3J3YXJk
ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OltzZWxmIF9mb3JtRGVsZWdhdGVdIGRlZmF1bHRUYXJn
ZXQ6W1dlYkRlZmF1bHRGb3JtRGVsZWdhdGUgc2hhcmVkRm9ybURlbGVnYXRlXV0pOworICAgIHJl
dHVybiBfcHJpdmF0ZS0+Zm9ybURlbGVnYXRlRm9yd2FyZGVyLmdldCgpOwogfQogCiAtIChpZClf
Zm9ybURlbGVnYXRlRm9yU2VsZWN0b3I6KFNFTClzZWxlY3RvcgpAQCAtMjk4Niw4ICsyOTgxLDgg
QEAgLSAoaWQpX1VJS2l0RGVsZWdhdGVGb3J3YXJkZXIKICAgICAgICAgcmV0dXJuIG5pbDsKIAog
ICAgIGlmICghX3ByaXZhdGUtPlVJS2l0RGVsZWdhdGVGb3J3YXJkZXIpCi0gICAgICAgIF9wcml2
YXRlLT5VSUtpdERlbGVnYXRlRm9yd2FyZGVyID0gW1tfV2ViU2FmZUZvcndhcmRlciBhbGxvY10g
aW5pdFdpdGhUYXJnZXQ6X3ByaXZhdGUtPlVJS2l0RGVsZWdhdGUgZGVmYXVsdFRhcmdldDpbV2Vi
RGVmYXVsdFVJS2l0RGVsZWdhdGUgc2hhcmVkVUlLaXREZWxlZ2F0ZV1dOwotICAgIHJldHVybiBf
cHJpdmF0ZS0+VUlLaXREZWxlZ2F0ZUZvcndhcmRlcjsKKyAgICAgICAgX3ByaXZhdGUtPlVJS2l0
RGVsZWdhdGVGb3J3YXJkZXIgPSBhZG9wdE5TKFtbX1dlYlNhZmVGb3J3YXJkZXIgYWxsb2NdIGlu
aXRXaXRoVGFyZ2V0Ol9wcml2YXRlLT5VSUtpdERlbGVnYXRlIGRlZmF1bHRUYXJnZXQ6W1dlYkRl
ZmF1bHRVSUtpdERlbGVnYXRlIHNoYXJlZFVJS2l0RGVsZWdhdGVdXSk7CisgICAgcmV0dXJuIF9w
cml2YXRlLT5VSUtpdERlbGVnYXRlRm9yd2FyZGVyLmdldCgpOwogfQogI2VuZGlmCiAKQEAgLTMx
NTAsOCArMzE0NSw4IEBAIC0gKGlkKV9wb2xpY3lEZWxlZ2F0ZUZvcndhcmRlcgogICAgICAgICBy
ZXR1cm4gbmlsOwogI2VuZGlmCiAgICAgaWYgKCFfcHJpdmF0ZS0+cG9saWN5RGVsZWdhdGVGb3J3
YXJkZXIpCi0gICAgICAgIF9wcml2YXRlLT5wb2xpY3lEZWxlZ2F0ZUZvcndhcmRlciA9IFtbX1dl
YlNhZmVGb3J3YXJkZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0Ol9wcml2YXRlLT5wb2xpY3lEZWxl
Z2F0ZSBkZWZhdWx0VGFyZ2V0OltXZWJEZWZhdWx0UG9saWN5RGVsZWdhdGUgc2hhcmVkUG9saWN5
RGVsZWdhdGVdXTsKLSAgICByZXR1cm4gX3ByaXZhdGUtPnBvbGljeURlbGVnYXRlRm9yd2FyZGVy
OworICAgICAgICBfcHJpdmF0ZS0+cG9saWN5RGVsZWdhdGVGb3J3YXJkZXIgPSBhZG9wdE5TKFtb
X1dlYlNhZmVGb3J3YXJkZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0Ol9wcml2YXRlLT5wb2xpY3lE
ZWxlZ2F0ZSBkZWZhdWx0VGFyZ2V0OltXZWJEZWZhdWx0UG9saWN5RGVsZWdhdGUgc2hhcmVkUG9s
aWN5RGVsZWdhdGVdXSk7CisgICAgcmV0dXJuIF9wcml2YXRlLT5wb2xpY3lEZWxlZ2F0ZUZvcndh
cmRlci5nZXQoKTsKIH0KIAogLSAoaWQpX1VJRGVsZWdhdGVGb3J3YXJkZXIKQEAgLTMxNjEsOCAr
MzE1Niw4IEBAIC0gKGlkKV9VSURlbGVnYXRlRm9yd2FyZGVyCiAgICAgICAgIHJldHVybiBuaWw7
CiAjZW5kaWYKICAgICBpZiAoIV9wcml2YXRlLT5VSURlbGVnYXRlRm9yd2FyZGVyKQotICAgICAg
ICBfcHJpdmF0ZS0+VUlEZWxlZ2F0ZUZvcndhcmRlciA9IFtbX1dlYlNhZmVGb3J3YXJkZXIgYWxs
b2NdIGluaXRXaXRoVGFyZ2V0Ol9wcml2YXRlLT5VSURlbGVnYXRlIGRlZmF1bHRUYXJnZXQ6W1dl
YkRlZmF1bHRVSURlbGVnYXRlIHNoYXJlZFVJRGVsZWdhdGVdXTsKLSAgICByZXR1cm4gX3ByaXZh
dGUtPlVJRGVsZWdhdGVGb3J3YXJkZXI7CisgICAgICAgIF9wcml2YXRlLT5VSURlbGVnYXRlRm9y
d2FyZGVyID0gYWRvcHROUyhbW19XZWJTYWZlRm9yd2FyZGVyIGFsbG9jXSBpbml0V2l0aFRhcmdl
dDpfcHJpdmF0ZS0+VUlEZWxlZ2F0ZSBkZWZhdWx0VGFyZ2V0OltXZWJEZWZhdWx0VUlEZWxlZ2F0
ZSBzaGFyZWRVSURlbGVnYXRlXV0pOworICAgIHJldHVybiBfcHJpdmF0ZS0+VUlEZWxlZ2F0ZUZv
cndhcmRlci5nZXQoKTsKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0zMTkyLDgg
KzMxODcsOCBAQCAtIChpZClfZWRpdGluZ0RlbGVnYXRlRm9yd2FyZGVyCiAgICAgICAgIHJldHVy
biBuaWw7CiAKICAgICBpZiAoIV9wcml2YXRlLT5lZGl0aW5nRGVsZWdhdGVGb3J3YXJkZXIpCi0g
ICAgICAgIF9wcml2YXRlLT5lZGl0aW5nRGVsZWdhdGVGb3J3YXJkZXIgPSBbW19XZWJTYWZlRm9y
d2FyZGVyIGFsbG9jXSBpbml0V2l0aFRhcmdldDpfcHJpdmF0ZS0+ZWRpdGluZ0RlbGVnYXRlIGRl
ZmF1bHRUYXJnZXQ6W1dlYkRlZmF1bHRFZGl0aW5nRGVsZWdhdGUgc2hhcmVkRWRpdGluZ0RlbGVn
YXRlXV07Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5lZGl0aW5nRGVsZWdhdGVGb3J3YXJkZXI7Cisg
ICAgICAgIF9wcml2YXRlLT5lZGl0aW5nRGVsZWdhdGVGb3J3YXJkZXIgPSBhZG9wdE5TKFtbX1dl
YlNhZmVGb3J3YXJkZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0Ol9wcml2YXRlLT5lZGl0aW5nRGVs
ZWdhdGUgZGVmYXVsdFRhcmdldDpbV2ViRGVmYXVsdEVkaXRpbmdEZWxlZ2F0ZSBzaGFyZWRFZGl0
aW5nRGVsZWdhdGVdXSk7CisgICAgcmV0dXJuIF9wcml2YXRlLT5lZGl0aW5nRGVsZWdhdGVGb3J3
YXJkZXIuZ2V0KCk7CiB9CiAKICsgKHZvaWQpX3VucmVnaXN0ZXJWaWV3Q2xhc3NBbmRSZXByZXNl
bnRhdGlvbkNsYXNzRm9yTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUKQEAgLTM1NDMsNyAr
MzUzOCw2IEBAIC0gKHZvaWQpX3NldFVJS2l0RGVsZWdhdGU6KGlkKWRlbGVnYXRlCiB7CiAgICAg
X3ByaXZhdGUtPlVJS2l0RGVsZWdhdGUgPSBkZWxlZ2F0ZTsKICAgICBbX3ByaXZhdGUtPlVJS2l0
RGVsZWdhdGVGb3J3YXJkZXIgY2xlYXJUYXJnZXRdOwotICAgIFtfcHJpdmF0ZS0+VUlLaXREZWxl
Z2F0ZUZvcndhcmRlciByZWxlYXNlXTsKICAgICBfcHJpdmF0ZS0+VUlLaXREZWxlZ2F0ZUZvcndh
cmRlciA9IG5pbDsKIH0KIApAQCAtMzU3NCwxMyArMzU2OCwxMyBAQCAtICh2b2lkKXNldENhcmV0
Q2hhbmdlTGlzdGVuZXI6KGlkIDxXZWJDYXJldENoYW5nZUxpc3RlbmVyPilsaXN0ZW5lcgogCiAt
IChOU1NldCAqKWNhcmV0Q2hhbmdlTGlzdGVuZXJzCiB7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5f
Y2FyZXRDaGFuZ2VMaXN0ZW5lcnM7CisgICAgcmV0dXJuIF9wcml2YXRlLT5fY2FyZXRDaGFuZ2VM
aXN0ZW5lcnMuZ2V0KCk7CiB9CiAKIC0gKHZvaWQpYWRkQ2FyZXRDaGFuZ2VMaXN0ZW5lcjooaWQg
PFdlYkNhcmV0Q2hhbmdlTGlzdGVuZXI+KWxpc3RlbmVyCiB7CiAgICAgaWYgKF9wcml2YXRlLT5f
Y2FyZXRDaGFuZ2VMaXN0ZW5lcnMgPT0gbmlsKSB7Ci0gICAgICAgIF9wcml2YXRlLT5fY2FyZXRD
aGFuZ2VMaXN0ZW5lcnMgPSBbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF07CisgICAgICAgIF9w
cml2YXRlLT5fY2FyZXRDaGFuZ2VMaXN0ZW5lcnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlU2V0IGFs
bG9jXSBpbml0XSk7CiAgICAgfQogCiAgICAgW19wcml2YXRlLT5fY2FyZXRDaGFuZ2VMaXN0ZW5l
cnMgYWRkT2JqZWN0Omxpc3RlbmVyXTsKQEAgLTM3MTMsNyArMzcwNyw3IEBAIC0gKHZvaWQpX3Nl
dENvb2tpZUVuYWJsZWQ6KEJPT0wpZW5hYmxlCiAtICh2b2lkKV9zZXRBZGRpdGlvbmFsV2ViUGx1
Z0luUGF0aHM6KE5TQXJyYXkgKiluZXdQYXRocwogewogICAgIGlmICghX3ByaXZhdGUtPnBsdWdp
bkRhdGFiYXNlKQotICAgICAgICBfcHJpdmF0ZS0+cGx1Z2luRGF0YWJhc2UgPSBbW1dlYlBsdWdp
bkRhdGFiYXNlIGFsbG9jXSBpbml0XTsKKyAgICAgICAgX3ByaXZhdGUtPnBsdWdpbkRhdGFiYXNl
ID0gYWRvcHROUyhbW1dlYlBsdWdpbkRhdGFiYXNlIGFsbG9jXSBpbml0XSk7CiAKICAgICBbX3By
aXZhdGUtPnBsdWdpbkRhdGFiYXNlIHNldFBsdWdJblBhdGhzOm5ld1BhdGhzXTsKICAgICBbX3By
aXZhdGUtPnBsdWdpbkRhdGFiYXNlIHJlZnJlc2hdOwpAQCAtMzg0NiwzMyArMzg0MCwyOSBAQCAt
ICh2b2lkKXNldEJhY2tncm91bmRDb2xvcjooTlNDb2xvciAqKWJhY2tncm91bmRDb2xvcgogICAg
IGlmIChbX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvciBpc0VxdWFsOmJhY2tncm91bmRDb2xvcl0p
CiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gb2xkID0gYWRvcHROUyhfcHJpdmF0ZS0+YmFj
a2dyb3VuZENvbG9yKTsKLSAgICBfcHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yID0gW2JhY2tncm91
bmRDb2xvciByZXRhaW5dOworICAgIF9wcml2YXRlLT5iYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3Jv
dW5kQ29sb3I7CiAKICAgICBbW3NlbGYgbWFpbkZyYW1lXSBfdXBkYXRlQmFja2dyb3VuZEFuZFVw
ZGF0ZXNXaGlsZU9mZnNjcmVlbl07CiB9CiAKIC0gKE5TQ29sb3IgKiliYWNrZ3JvdW5kQ29sb3IK
IHsKLSAgICByZXR1cm4gX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvcjsKKyAgICByZXR1cm4gX3By
aXZhdGUtPmJhY2tncm91bmRDb2xvci5nZXQoKTsKIH0KICNlbHNlCiAtICh2b2lkKXNldEJhY2tn
cm91bmRDb2xvcjooQ0dDb2xvclJlZiliYWNrZ3JvdW5kQ29sb3IKIHsKLSAgIGlmICghYmFja2dy
b3VuZENvbG9yIHx8IENGRXF1YWwoX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvciwgYmFja2dyb3Vu
ZENvbG9yKSkKKyAgICBpZiAoIWJhY2tncm91bmRDb2xvciB8fCBDRkVxdWFsKF9wcml2YXRlLT5i
YWNrZ3JvdW5kQ29sb3IuZ2V0KCksIGJhY2tncm91bmRDb2xvcikpCiAgICAgICAgIHJldHVybjsK
IAotICAgIENGVHlwZVJlZiBvbGQgPSBfcHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yOwotICAgIENG
UmV0YWluKGJhY2tncm91bmRDb2xvcik7CiAgICAgX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvciA9
IGJhY2tncm91bmRDb2xvcjsKLSAgICBDRlJlbGVhc2Uob2xkKTsKIAogICAgIFtbc2VsZiBtYWlu
RnJhbWVdIF91cGRhdGVCYWNrZ3JvdW5kQW5kVXBkYXRlc1doaWxlT2Zmc2NyZWVuXTsKIH0KIAog
LSAoQ0dDb2xvclJlZiliYWNrZ3JvdW5kQ29sb3IKIHsKLSAgICByZXR1cm4gX3ByaXZhdGUtPmJh
Y2tncm91bmRDb2xvcjsKKyAgICByZXR1cm4gX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvci5nZXQo
KTsKIH0KICNlbmRpZgogCkBAIC00NzY2LDcgKzQ3NTYsNyBAQCAtICh2b2lkKV9kaWRTY3JvbGxE
b2N1bWVudEluRnJhbWVWaWV3OihXZWJGcmFtZVZpZXcgKilmcmFtZVZpZXcKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogLSAoV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQqKV9maXhlZFBvc2l0aW9u
Q29udGVudAogewotICAgIHJldHVybiBfcHJpdmF0ZSA/IF9wcml2YXRlLT5fZml4ZWRQb3NpdGlv
bkNvbnRlbnQgOiBuaWw7CisgICAgcmV0dXJuIF9wcml2YXRlID8gX3ByaXZhdGUtPl9maXhlZFBv
c2l0aW9uQ29udGVudC5nZXQoKSA6IG5pbDsKIH0KIAogLSAodm9pZClfZG9jdW1lbnRTY2FsZUNo
YW5nZWQKQEAgLTU4MzIsNyArNTgyMiw2IEBAIC0gKHZvaWQpc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0
ZQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW19wcml2YXRlLT5VSURlbGVnYXRlRm9y
d2FyZGVyIGNsZWFyVGFyZ2V0XTsKICNlbmRpZgotICAgIFtfcHJpdmF0ZS0+VUlEZWxlZ2F0ZUZv
cndhcmRlciByZWxlYXNlXTsKICAgICBfcHJpdmF0ZS0+VUlEZWxlZ2F0ZUZvcndhcmRlciA9IG5p
bDsKIH0KIApAQCAtNTg0OCw4ICs1ODM3LDggQEAgLSAoaWQpX3Jlc291cmNlTG9hZERlbGVnYXRl
Rm9yd2FyZGVyCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBpZiAoIV9wcml2YXRlLT5yZXNv
dXJjZVByb2dyZXNzRGVsZWdhdGVGb3J3YXJkZXIpCi0gICAgICAgIF9wcml2YXRlLT5yZXNvdXJj
ZVByb2dyZXNzRGVsZWdhdGVGb3J3YXJkZXIgPSBbW19XZWJTYWZlRm9yd2FyZGVyIGFsbG9jXSBp
bml0V2l0aFRhcmdldDpbc2VsZiByZXNvdXJjZUxvYWREZWxlZ2F0ZV0gZGVmYXVsdFRhcmdldDpb
V2ViRGVmYXVsdFJlc291cmNlTG9hZERlbGVnYXRlIHNoYXJlZFJlc291cmNlTG9hZERlbGVnYXRl
XV07Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5yZXNvdXJjZVByb2dyZXNzRGVsZWdhdGVGb3J3YXJk
ZXI7CisgICAgICAgIF9wcml2YXRlLT5yZXNvdXJjZVByb2dyZXNzRGVsZWdhdGVGb3J3YXJkZXIg
PSBhZG9wdE5TKFtbX1dlYlNhZmVGb3J3YXJkZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OltzZWxm
IHJlc291cmNlTG9hZERlbGVnYXRlXSBkZWZhdWx0VGFyZ2V0OltXZWJEZWZhdWx0UmVzb3VyY2VM
b2FkRGVsZWdhdGUgc2hhcmVkUmVzb3VyY2VMb2FkRGVsZWdhdGVdXSk7CisgICAgcmV0dXJuIF9w
cml2YXRlLT5yZXNvdXJjZVByb2dyZXNzRGVsZWdhdGVGb3J3YXJkZXIuZ2V0KCk7CiB9CiAjZW5k
aWYKIApAQCAtNTg1Nyw3ICs1ODQ2LDYgQEAgLSAodm9pZClzZXRSZXNvdXJjZUxvYWREZWxlZ2F0
ZTogZGVsZWdhdGUKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtfcHJpdmF0ZS0+
cmVzb3VyY2VQcm9ncmVzc0RlbGVnYXRlRm9yd2FyZGVyIGNsZWFyVGFyZ2V0XTsKLSAgICBbX3By
aXZhdGUtPnJlc291cmNlUHJvZ3Jlc3NEZWxlZ2F0ZUZvcndhcmRlciByZWxlYXNlXTsKICAgICBf
cHJpdmF0ZS0+cmVzb3VyY2VQcm9ncmVzc0RlbGVnYXRlRm9yd2FyZGVyID0gbmlsOwogI2VuZGlm
CiAgICAgX3ByaXZhdGUtPnJlc291cmNlUHJvZ3Jlc3NEZWxlZ2F0ZSA9IGRlbGVnYXRlOwpAQCAt
NTg4Niw3ICs1ODc0LDYgQEAgLSAodm9pZClzZXRQb2xpY3lEZWxlZ2F0ZTpkZWxlZ2F0ZQogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW19wcml2YXRlLT5wb2xpY3lEZWxlZ2F0ZUZvcndh
cmRlciBjbGVhclRhcmdldF07CiAjZW5kaWYKLSAgICBbX3ByaXZhdGUtPnBvbGljeURlbGVnYXRl
Rm9yd2FyZGVyIHJlbGVhc2VdOwogICAgIF9wcml2YXRlLT5wb2xpY3lEZWxlZ2F0ZUZvcndhcmRl
ciA9IG5pbDsKIH0KIApAQCAtNTkwMiw4ICs1ODg5LDggQEAgLSAoaWQpX2ZyYW1lTG9hZERlbGVn
YXRlRm9yd2FyZGVyCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBpZiAoIV9wcml2YXRlLT5m
cmFtZUxvYWREZWxlZ2F0ZUZvcndhcmRlcikKLSAgICAgICAgX3ByaXZhdGUtPmZyYW1lTG9hZERl
bGVnYXRlRm9yd2FyZGVyID0gW1tfV2ViU2FmZUZvcndhcmRlciBhbGxvY10gaW5pdFdpdGhUYXJn
ZXQ6W3NlbGYgZnJhbWVMb2FkRGVsZWdhdGVdIGRlZmF1bHRUYXJnZXQ6W1dlYkRlZmF1bHRGcmFt
ZUxvYWREZWxlZ2F0ZSBzaGFyZWRGcmFtZUxvYWREZWxlZ2F0ZV1dOwotICAgIHJldHVybiBfcHJp
dmF0ZS0+ZnJhbWVMb2FkRGVsZWdhdGVGb3J3YXJkZXI7CisgICAgICAgIF9wcml2YXRlLT5mcmFt
ZUxvYWREZWxlZ2F0ZUZvcndhcmRlciA9IGFkb3B0TlMoW1tfV2ViU2FmZUZvcndhcmRlciBhbGxv
Y10gaW5pdFdpdGhUYXJnZXQ6W3NlbGYgZnJhbWVMb2FkRGVsZWdhdGVdIGRlZmF1bHRUYXJnZXQ6
W1dlYkRlZmF1bHRGcmFtZUxvYWREZWxlZ2F0ZSBzaGFyZWRGcmFtZUxvYWREZWxlZ2F0ZV1dKTsK
KyAgICByZXR1cm4gX3ByaXZhdGUtPmZyYW1lTG9hZERlbGVnYXRlRm9yd2FyZGVyLmdldCgpOwog
fQogI2VuZGlmCiAKQEAgLTU5MjAsNyArNTkwNyw2IEBAIC0gKHZvaWQpc2V0RnJhbWVMb2FkRGVs
ZWdhdGU6ZGVsZWdhdGUKICAgICB9CiAjZWxzZQogICAgIFtfcHJpdmF0ZS0+ZnJhbWVMb2FkRGVs
ZWdhdGVGb3J3YXJkZXIgY2xlYXJUYXJnZXRdOwotICAgIFtfcHJpdmF0ZS0+ZnJhbWVMb2FkRGVs
ZWdhdGVGb3J3YXJkZXIgcmVsZWFzZV07CiAgICAgX3ByaXZhdGUtPmZyYW1lTG9hZERlbGVnYXRl
Rm9yd2FyZGVyID0gbmlsOwogI2VuZGlmCiAKQEAgLTYxMzksOSArNjEyNSw3IEBAIC0gKElCQWN0
aW9uKV9yZXNldFpvb206KGlkKXNlbmRlciBpc1RleHRPbmx5OihCT09MKWlzVGV4dE9ubHkKIAog
LSAodm9pZClzZXRBcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQ6KE5TU3RyaW5nICopYXBwbGlj
YXRpb25OYW1lCiB7Ci0gICAgTlNTdHJpbmcgKm5hbWUgPSBbYXBwbGljYXRpb25OYW1lIGNvcHld
OwotICAgIFtfcHJpdmF0ZS0+YXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50IHJlbGVhc2VdOwot
ICAgIF9wcml2YXRlLT5hcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSBuYW1lOworICAgIF9w
cml2YXRlLT5hcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSBhZG9wdE5TKFthcHBsaWNhdGlv
bk5hbWUgY29weV0pOwogICAgIGlmICghX3ByaXZhdGUtPnVzZXJBZ2VudE92ZXJyaWRkZW4pCiAg
ICAgICAgIFtzZWxmIF9pbnZhbGlkYXRlVXNlckFnZW50Q2FjaGVdOwogfQpAQCAtNjE1OCw3ICs2
MTQyLDggQEAgLSAodm9pZClfaW52YWxpZGF0ZVVzZXJBZ2VudENhY2hlCiAKIC0gKE5TU3RyaW5n
ICopYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50CiB7Ci0gICAgcmV0dXJuIFtbX3ByaXZhdGUt
PmFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICBh
dXRvIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudENvcHkgPSBfcHJpdmF0ZS0+YXBwbGljYXRp
b25OYW1lRm9yVXNlckFnZW50OworICAgIHJldHVybiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdl
bnRDb3B5LmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKHZvaWQpc2V0Q3VzdG9tVXNlckFnZW50OihO
U1N0cmluZyAqKXVzZXJBZ2VudFN0cmluZwpAQCAtNjE3OCwxNCArNjE2MywxMyBAQCAtIChOU1N0
cmluZyAqKWN1c3RvbVVzZXJBZ2VudAogLSAodm9pZClzZXRNZWRpYVN0eWxlOihOU1N0cmluZyAq
KW1lZGlhU3R5bGUKIHsKICAgICBpZiAoX3ByaXZhdGUtPm1lZGlhU3R5bGUgIT0gbWVkaWFTdHls
ZSkgewotICAgICAgICBbX3ByaXZhdGUtPm1lZGlhU3R5bGUgcmVsZWFzZV07Ci0gICAgICAgIF9w
cml2YXRlLT5tZWRpYVN0eWxlID0gW21lZGlhU3R5bGUgY29weV07CisgICAgICAgIF9wcml2YXRl
LT5tZWRpYVN0eWxlID0gYWRvcHROUyhbbWVkaWFTdHlsZSBjb3B5XSk7CiAgICAgfQogfQogCiAt
IChOU1N0cmluZyAqKW1lZGlhU3R5bGUKIHsKLSAgICByZXR1cm4gX3ByaXZhdGUtPm1lZGlhU3R5
bGU7CisgICAgcmV0dXJuIF9wcml2YXRlLT5tZWRpYVN0eWxlLmdldCgpOwogfQogCiAtIChCT09M
KXN1cHBvcnRzVGV4dEVuY29kaW5nCkBAIC02MjU4LDcgKzYyNDIsNyBAQCAtIChXZWJTY3JpcHRP
YmplY3QgKil3aW5kb3dTY3JpcHRPYmplY3QKIC0gKFN0cmluZylfdXNlckFnZW50U3RyaW5nCiB7
CiAgICAgaWYgKF9wcml2YXRlLT51c2VyQWdlbnQuaXNOdWxsKCkpCi0gICAgICAgIF9wcml2YXRl
LT51c2VyQWdlbnQgPSBbW3NlbGYgY2xhc3NdIF9zdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNh
dGlvbk5hbWU6X3ByaXZhdGUtPmFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudF07CisgICAgICAg
IF9wcml2YXRlLT51c2VyQWdlbnQgPSBbW3NlbGYgY2xhc3NdIF9zdGFuZGFyZFVzZXJBZ2VudFdp
dGhBcHBsaWNhdGlvbk5hbWU6X3ByaXZhdGUtPmFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudC5n
ZXQoKV07CiAKICAgICByZXR1cm4gX3ByaXZhdGUtPnVzZXJBZ2VudDsKIH0KQEAgLTYyODEsMTIg
KzYyNjUsMTEgQEAgLSAodm9pZClzZXRIb3N0V2luZG93OihOU1dpbmRvdyAqKWhvc3RXaW5kb3cK
ICAgICBmb3IgKGF1dG8qIGZyYW1lID0gY29yZUZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+
dHJlZSgpLnRyYXZlcnNlTmV4dChjb3JlRnJhbWUpKQogICAgICAgICBbW1traXQoZnJhbWUpIGZy
YW1lVmlld10gZG9jdW1lbnRWaWV3XSB2aWV3V2lsbE1vdmVUb0hvc3RXaW5kb3c6aG9zdFdpbmRv
d107CiAgICAgaWYgKF9wcml2YXRlLT5ob3N0V2luZG93ICYmIFtzZWxmIHdpbmRvd10gIT0gX3By
aXZhdGUtPmhvc3RXaW5kb3cpCi0gICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVs
dENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBuYW1lOk5TV2luZG93V2lsbENsb3NlTm90aWZp
Y2F0aW9uIG9iamVjdDpfcHJpdmF0ZS0+aG9zdFdpbmRvd107CisgICAgICAgIFtbTlNOb3RpZmlj
YXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBuYW1lOk5TV2lu
ZG93V2lsbENsb3NlTm90aWZpY2F0aW9uIG9iamVjdDpfcHJpdmF0ZS0+aG9zdFdpbmRvdy5nZXQo
KV07CiAgICAgaWYgKGhvc3RXaW5kb3cpCiAgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIg
ZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX3dpbmRv
d1dpbGxDbG9zZTopIG5hbWU6TlNXaW5kb3dXaWxsQ2xvc2VOb3RpZmljYXRpb24gb2JqZWN0Omhv
c3RXaW5kb3ddOwogI2VuZGlmCi0gICAgW19wcml2YXRlLT5ob3N0V2luZG93IHJlbGVhc2VdOwot
ICAgIF9wcml2YXRlLT5ob3N0V2luZG93ID0gW2hvc3RXaW5kb3cgcmV0YWluXTsKKyAgICBfcHJp
dmF0ZS0+aG9zdFdpbmRvdyA9IGhvc3RXaW5kb3c7CiAgICAgZm9yIChhdXRvKiBmcmFtZSA9IGNv
cmVGcmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoY29yZUZy
YW1lKSkKICAgICAgICAgW1tba2l0KGZyYW1lKSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld10gdmll
d0RpZE1vdmVUb0hvc3RXaW5kb3ddOwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNjMw
MSw3ICs2Mjg0LDcgQEAgLSAoTlNXaW5kb3cgKilob3N0V2luZG93CiAgICAgaWYgKCFfcHJpdmF0
ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBfcHJpdmF0ZS0+aG9zdFdpbmRv
dzsKKyAgICByZXR1cm4gX3ByaXZhdGUtPmhvc3RXaW5kb3cuZ2V0KCk7CiB9CiAKIC0gKE5TVmll
dyA8V2ViRG9jdW1lbnRWaWV3PiAqKWRvY3VtZW50Vmlld0F0V2luZG93UG9pbnQ6KE5TUG9pbnQp
cG9pbnQKQEAgLTY3ODgsMTMgKzY3NzEsMTIgQEAgLSAoQk9PTClzaG91bGRVcGRhdGVXaGlsZU9m
ZnNjcmVlbgogCiAtICh2b2lkKXNldEN1cnJlbnROb2RlSGlnaGxpZ2h0OihXZWJOb2RlSGlnaGxp
Z2h0ICopbm9kZUhpZ2hsaWdodAogewotICAgIGF1dG8gb2xkID0gYWRvcHROUyhfcHJpdmF0ZS0+
Y3VycmVudE5vZGVIaWdobGlnaHQpOwotICAgIF9wcml2YXRlLT5jdXJyZW50Tm9kZUhpZ2hsaWdo
dCA9IFtub2RlSGlnaGxpZ2h0IHJldGFpbl07CisgICAgX3ByaXZhdGUtPmN1cnJlbnROb2RlSGln
aGxpZ2h0ID0gbm9kZUhpZ2hsaWdodDsKIH0KIAogLSAoV2ViTm9kZUhpZ2hsaWdodCAqKWN1cnJl
bnROb2RlSGlnaGxpZ2h0CiB7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5jdXJyZW50Tm9kZUhpZ2hs
aWdodDsKKyAgICByZXR1cm4gX3ByaXZhdGUtPmN1cnJlbnROb2RlSGlnaGxpZ2h0LmdldCgpOwog
fQogCiAtIChOU1ZpZXcgKilwcmV2aW91c1ZhbGlkS2V5VmlldwpAQCAtNzcxOCwxNCArNzcwMCwx
NCBAQCAtICh2b2lkKXJlc3VtZUFsbE1lZGlhUGxheWJhY2sKICNpZiBQTEFURk9STShNQUMpCiAt
IChCT09MKV9hbGxvd3NMaW5rUHJldmlldwogewotICAgIGlmIChXZWJJbW1lZGlhdGVBY3Rpb25D
b250cm9sbGVyICppbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyID0gX3ByaXZhdGUtPmltbWVkaWF0
ZUFjdGlvbkNvbnRyb2xsZXIpCisgICAgaWYgKFdlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIg
KmltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgPSBfcHJpdmF0ZS0+aW1tZWRpYXRlQWN0aW9uQ29u
dHJvbGxlci5nZXQoKSkKICAgICAgICAgcmV0dXJuIGltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIu
ZW5hYmxlZDsKICAgICByZXR1cm4gTk87CiB9CiAKIC0gKHZvaWQpX3NldEFsbG93c0xpbmtQcmV2
aWV3OihCT09MKWFsbG93c0xpbmtQcmV2aWV3CiB7Ci0gICAgaWYgKFdlYkltbWVkaWF0ZUFjdGlv
bkNvbnRyb2xsZXIgKmltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgPSBfcHJpdmF0ZS0+aW1tZWRp
YXRlQWN0aW9uQ29udHJvbGxlcikKKyAgICBpZiAoV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxl
ciAqaW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciA9IF9wcml2YXRlLT5pbW1lZGlhdGVBY3Rpb25D
b250cm9sbGVyLmdldCgpKQogICAgICAgICBpbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLmVuYWJs
ZWQgPSBhbGxvd3NMaW5rUHJldmlldzsKIH0KICNlbmRpZgpAQCAtODA4MSw3ICs4MDYzLDYgQEAg
LSAodm9pZClzZXRFZGl0aW5nRGVsZWdhdGU6KGlkKWRlbGVnYXRlCiAgICAgW2RlZmF1bHRDZW50
ZXIgcmVtb3ZlT2JzZXJ2ZXI6X3ByaXZhdGUtPmVkaXRpbmdEZWxlZ2F0ZSBuYW1lOldlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24gb2JqZWN0OnNlbGZdOwogCiAgICAgX3ByaXZh
dGUtPmVkaXRpbmdEZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgIFtfcHJpdmF0ZS0+ZWRpdGluZ0Rl
bGVnYXRlRm9yd2FyZGVyIHJlbGVhc2VdOwogICAgIF9wcml2YXRlLT5lZGl0aW5nRGVsZWdhdGVG
b3J3YXJkZXIgPSBuaWw7CiAKICAgICAvLyBhZGQgbm90aWZpY2F0aW9ucyBmb3IgbmV3IGRlbGVn
YXRlCkBAIC05MTAyLDcgKzkwODMsNyBAQCAtIChOU1JlY3QpX2NvbnZlcnRSZWN0RnJvbVJvb3RW
aWV3OihOU1JlY3QpcmVjdAogI2lmIFBMQVRGT1JNKE1BQykKIC0gKFdlYkltbWVkaWF0ZUFjdGlv
bkNvbnRyb2xsZXIgKilfaW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlcgogewotICAgIHJldHVybiBf
cHJpdmF0ZS0+aW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlcjsKKyAgICByZXR1cm4gX3ByaXZhdGUt
PmltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIuZ2V0KCk7CiB9CiAKIC0gKGlkKV9hbmltYXRpb25D
b250cm9sbGVyRm9yRGljdGlvbmFyeUxvb2t1cFBvcHVwSW5mbzooY29uc3QgV2ViQ29yZTo6RGlj
dGlvbmFyeVBvcHVwSW5mbyYpZGljdGlvbmFyeVBvcHVwSW5mbwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCmluZGV4IGRmZTJjMzAwZDc2NjNiYzU4ZjBj
ZjhjNmI2N2JlODU3MDA0Y2QwMjUuLjQwYjY3ZDFlODMwYzdmYjg1Yzk0OWViN2E4YjY0ZTAyZDA3
YjgzMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
d0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRh
LmgKQEAgLTE2MSwyOCArMTYxLDI4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYlZpZXdHcm91
cD4gZ3JvdXA7CiAKICAgICBpZCBVSURlbGVnYXRlOwotICAgIGlkIFVJRGVsZWdhdGVGb3J3YXJk
ZXI7CisgICAgUmV0YWluUHRyPGlkPiBVSURlbGVnYXRlRm9yd2FyZGVyOwogICAgIGlkIHJlc291
cmNlUHJvZ3Jlc3NEZWxlZ2F0ZTsKICAgICBpZCBkb3dubG9hZERlbGVnYXRlOwogICAgIGlkIHBv
bGljeURlbGVnYXRlOwotICAgIGlkIHBvbGljeURlbGVnYXRlRm9yd2FyZGVyOworICAgIFJldGFp
blB0cjxpZD4gcG9saWN5RGVsZWdhdGVGb3J3YXJkZXI7CiAgICAgaWQgZnJhbWVMb2FkRGVsZWdh
dGU7Ci0gICAgaWQgZnJhbWVMb2FkRGVsZWdhdGVGb3J3YXJkZXI7CisgICAgUmV0YWluUHRyPGlk
PiBmcmFtZUxvYWREZWxlZ2F0ZUZvcndhcmRlcjsKICAgICBpZCA8V2ViRm9ybURlbGVnYXRlPiBm
b3JtRGVsZWdhdGU7CiAgICAgaWQgZWRpdGluZ0RlbGVnYXRlOwotICAgIGlkIGVkaXRpbmdEZWxl
Z2F0ZUZvcndhcmRlcjsKKyAgICBSZXRhaW5QdHI8aWQ+IGVkaXRpbmdEZWxlZ2F0ZUZvcndhcmRl
cjsKICAgICBpZCBzY3JpcHREZWJ1Z0RlbGVnYXRlOwogICAgIGlkIGhpc3RvcnlEZWxlZ2F0ZTsK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlkIHJlc291cmNlUHJvZ3Jlc3NEZWxlZ2F0
ZUZvcndhcmRlcjsKLSAgICBpZCBmb3JtRGVsZWdhdGVGb3J3YXJkZXI7CisgICAgUmV0YWluUHRy
PGlkPiByZXNvdXJjZVByb2dyZXNzRGVsZWdhdGVGb3J3YXJkZXI7CisgICAgUmV0YWluUHRyPGlk
PiBmb3JtRGVsZWdhdGVGb3J3YXJkZXI7CiAjZW5kaWYKIAotICAgIFdlYkluc3BlY3RvciAqaW5z
cGVjdG9yOwotICAgIFdlYk5vZGVIaWdobGlnaHQgKmN1cnJlbnROb2RlSGlnaGxpZ2h0OworICAg
IFJldGFpblB0cjxXZWJJbnNwZWN0b3I+IGluc3BlY3RvcjsKKyAgICBSZXRhaW5QdHI8V2ViTm9k
ZUhpZ2hsaWdodD4gY3VycmVudE5vZGVIaWdobGlnaHQ7CiAKICNpZiBQTEFURk9STShNQUMpCi0g
ICAgV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciAqaW1tZWRpYXRlQWN0aW9uQ29udHJvbGxl
cjsKKyAgICBSZXRhaW5QdHI8V2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlcj4gaW1tZWRpYXRl
QWN0aW9uQ29udHJvbGxlcjsKIAogI2lmIEhBVkUoVE9VQ0hfQkFSKQogICAgIFJldGFpblB0cjxO
U1RvdWNoQmFyPiBfY3VycmVudFRvdWNoQmFyOwpAQCAtMjIyLDcgKzIyMiw3IEBAIHByaXZhdGU6
CiAgICAgZmxvYXQgem9vbU11bHRpcGxpZXI7CiAgICAgQk9PTCB6b29tc1RleHRPbmx5OwogCi0g
ICAgTlNTdHJpbmcgKmFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudDsKKyAgICBSZXRhaW5QdHI8
TlNTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudDsKICAgICBXVEY6OlN0cmluZyB1
c2VyQWdlbnQ7CiAgICAgQk9PTCB1c2VyQWdlbnRPdmVycmlkZGVuOwogICAgIApAQCAtMjMxLDcg
KzIzMSw3IEBAIHByaXZhdGU6CiAgICAgTlNVUkwgKnVzZXJTdHlsZVNoZWV0TG9jYXRpb247CiAj
ZW5kaWYKIAotICAgIE5TV2luZG93ICpob3N0V2luZG93OworICAgIFJldGFpblB0cjxOU1dpbmRv
dz4gaG9zdFdpbmRvdzsKIAogICAgIGludCBwcm9ncmFtbWF0aWNGb2N1c0NvdW50OwogICAgIApA
QCAtMjU2LDEyICsyNTYsMTIgQEAgcHJpdmF0ZToKICAgICBCT09MIHVzZXNQYWdlQ2FjaGU7CiAK
ICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBOU0NvbG9yICpiYWNrZ3JvdW5kQ29sb3I7
CisgICAgUmV0YWluUHRyPE5TQ29sb3I+IGJhY2tncm91bmRDb2xvcjsKICNlbHNlCi0gICAgQ0dD
b2xvclJlZiBiYWNrZ3JvdW5kQ29sb3I7CisgICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IGJhY2tn
cm91bmRDb2xvcjsKICNlbmRpZgogCi0gICAgTlNTdHJpbmcgKm1lZGlhU3R5bGU7CisgICAgUmV0
YWluUHRyPE5TU3RyaW5nPiBtZWRpYVN0eWxlOwogICAgIAogICAgIEJPT0wgaGFzU3BlbGxDaGVj
a2VyRG9jdW1lbnRUYWc7CiAgICAgTlNJbnRlZ2VyIHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnOwpA
QCAtMjcwLDEyICsyNzAsMTIgQEAgcHJpdmF0ZToKICAgICBCT09MIGlzU3RvcHBpbmc7CiAKICAg
ICBpZCBVSUtpdERlbGVnYXRlOwotICAgIGlkIFVJS2l0RGVsZWdhdGVGb3J3YXJkZXI7CisgICAg
UmV0YWluUHRyPGlkPiBVSUtpdERlbGVnYXRlRm9yd2FyZGVyOwogCiAgICAgaWQgV2ViTWFpbERl
bGVnYXRlOwogCiAgICAgQk9PTCBhbGxvd3NNZXNzYWdpbmc7Ci0gICAgTlNNdXRhYmxlU2V0ICpf
Y2FyZXRDaGFuZ2VMaXN0ZW5lcnM7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZVNldD4gX2NhcmV0
Q2hhbmdlTGlzdGVuZXJzOwogICAgIGlkIDxXZWJDYXJldENoYW5nZUxpc3RlbmVyPiBfY2FyZXRD
aGFuZ2VMaXN0ZW5lcjsKIAogICAgIENHU2l6ZSBmaXhlZExheW91dFNpemU7CkBAIC0yOTYsNyAr
Mjk2LDcgQEAgcHJpdmF0ZToKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFdl
YktpdCBoYXMgYm90aCBhIGdsb2JhbCBwbHVnLWluIGRhdGFiYXNlIGFuZCBhIHNlcGFyYXRlLCBw
ZXIgV2ViVmlldyBwbHVnLWluIGRhdGFiYXNlLiBEYXNoYm9hcmQgdXNlcyB0aGUgcGVyIFdlYlZp
ZXcgZGF0YWJhc2UuCi0gICAgV2ViUGx1Z2luRGF0YWJhc2UgKnBsdWdpbkRhdGFiYXNlOworICAg
IFJldGFpblB0cjxXZWJQbHVnaW5EYXRhYmFzZT4gcGx1Z2luRGF0YWJhc2U7CiAjZW5kaWYKICAg
ICAKICAgICBIYXNoTWFwPHVuc2lnbmVkIGxvbmcsIFJldGFpblB0cjxpZD4+IGlkZW50aWZpZXJN
YXA7CkBAIC0zMzUsNyArMzM1LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgV2ViSW5kaWNhdGVMYXllciAq
aW5kaWNhdGVMYXllcjsKKyAgICBSZXRhaW5QdHI8V2ViSW5kaWNhdGVMYXllcj4gaW5kaWNhdGVM
YXllcjsKICNlbmRpZgogI2VuZGlmCiAKQEAgLTM1Miw3ICszNTIsNyBAQCBwcml2YXRlOgogCiAg
ICAgZmxvYXQgY3VzdG9tRGV2aWNlU2NhbGVGYWN0b3I7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSAgICBXZWJGaXhlZFBvc2l0aW9uQ29udGVudCogX2ZpeGVkUG9zaXRpb25Db250ZW50Owor
ICAgIFJldGFpblB0cjxXZWJGaXhlZFBvc2l0aW9uQ29udGVudD4gX2ZpeGVkUG9zaXRpb25Db250
ZW50OwogI2VuZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyPiBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCmluZGV4IDg2N2JlYTM2
MDY4ZjUzMzY1ZTc1YmE2NDZhN2MzOTk4OTE3MmIxZDIuLjQ5YmRjNjI3M2QwMGYxOTJkM2I0NDZm
MDVmODgxOWU5NWRmN2ViNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlld0RhdGEubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3RGF0YS5tbQpAQCAtMjMyLDM3ICsyMzIsNiBAQCAtICh2b2lkKWRlYWxsb2MKICAg
ICBBU1NFUlQoIWZ1bGxzY3JlZW5Db250cm9sbGVyKTsKICNlbmRpZgogCi0gICAgW2FwcGxpY2F0
aW9uTmFtZUZvclVzZXJBZ2VudCByZWxlYXNlXTsKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LSAgICBbYmFja2dyb3VuZENvbG9yIHJlbGVhc2VdOwotI2Vsc2UKLSAgICBDR0NvbG9yUmVsZWFz
ZShiYWNrZ3JvdW5kQ29sb3IpOwotI2VuZGlmCi0gICAgW2luc3BlY3RvciByZWxlYXNlXTsKLSAg
ICBbY3VycmVudE5vZGVIaWdobGlnaHQgcmVsZWFzZV07Ci0jaWYgUExBVEZPUk0oTUFDKQotICAg
IFtpbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIHJlbGVhc2VdOwotI2VuZGlmCi0gICAgW2hvc3RX
aW5kb3cgcmVsZWFzZV07Ci0gICAgW3BvbGljeURlbGVnYXRlRm9yd2FyZGVyIHJlbGVhc2VdOwot
ICAgIFtVSURlbGVnYXRlRm9yd2FyZGVyIHJlbGVhc2VdOwotICAgIFtmcmFtZUxvYWREZWxlZ2F0
ZUZvcndhcmRlciByZWxlYXNlXTsKLSAgICBbZWRpdGluZ0RlbGVnYXRlRm9yd2FyZGVyIHJlbGVh
c2VdOwotICAgIFttZWRpYVN0eWxlIHJlbGVhc2VdOwotCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBbaW5kaWNhdGVMYXllciByZWxl
YXNlXTsKLSNlbmRpZgotI2VuZGlmCi0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFtV
SUtpdERlbGVnYXRlRm9yd2FyZGVyIHJlbGVhc2VdOwotICAgIFtmb3JtRGVsZWdhdGVGb3J3YXJk
ZXIgcmVsZWFzZV07Ci0gICAgW19jYXJldENoYW5nZUxpc3RlbmVycyByZWxlYXNlXTsKLSAgICBb
X2ZpeGVkUG9zaXRpb25Db250ZW50IHJlbGVhc2VdOwotI2VuZGlmCi0KICAgICBbc3VwZXIgZGVh
bGxvY107CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCBhNDMxMzMxNTBmMTBhNWQ4ZGNmYTMxY2EzMmMxOTkyZGZmY2NkNDRjLi5jNWZkZDhj
YTRkODNmYzdkOGNiMzUwMGE0ZmE0OWZiMTMzYjliNzdlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIwMjEtMDItMTUg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgZXhwbGlj
aXQgdXNhZ2Ugb2YgW29iakMgcmVsZWFzZV0gaW4gV2ViS2l0IGV2ZW4gbW9yZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxOTE0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKGRlc3Ryb3lXZWJWaWV3QW5kT2Zmc2Ny
ZWVuV2luZG93KToKKyAgICAgICAgKHJlbGVhc2VBbmRaZXJvKToKKyAgICAgICAgKHJ1blRlc3Qp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQu
bW06CisgICAgICAgICgrW0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZCByZWxlYXNlTG9jYWxQYXN0
ZWJvYXJkc10pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250
cm9sbGVyLm1tOgorICAgICAgICAoK1tFdmVudFNlbmRpbmdDb250cm9sbGVyIGNsZWFyU2F2ZWRF
dmVudHNdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvV2Vi
Q29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OldlYkNvcmVOU1VS
TFNlc3Npb25UZXN0OjpTZXRVcCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpXZWJDb3JlTlNV
UkxTZXNzaW9uVGVzdDo6VGVhckRvd24pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9G
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FzeW5jRnVuY3Rp
b24ubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tOgorICAgICAgICAoVEVTVCk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2
YWN5Lm1tOgorICAgICAgICAoc2V0VXBDb29raWVUZXN0V2l0aFdlYnNpdGVEYXRhU3RvcmUpOgor
ICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9OYXZpZ2F0aW9uLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9WaWRlb0NvbnRyb2xzTWFuYWdlci5tbToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tIVFRQQ29va2llU3RvcmUubW06CisgICAgICAgIChydW5UZXN0V2l0aFdlYnNpdGVE
YXRhU3RvcmUpOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvVXNlckNvbnRlbnRUZXN0Lm1tOgorICAgICAgICAoVEVT
VF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvV0tCcm93c2lu
Z0NvbnRleHRHcm91cFRlc3QubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvV0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGVUZXN0
Lm1tOgorICAgICAgICAoVEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lv
cy9XS1Njcm9sbFZpZXdEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NhbmRpZGF0ZVRlc3RzLm1tOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9tYWMvRE9NTm9kZUZyb21KU09iamVjdC5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1N1YnJlc291cmNlRXJy
b3JDcmFzaC5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvbWFjL1R5cGluZ1N0eWxlQ3Jhc2gubW06CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XZWJT
Y3JpcHRPYmplY3REZXNjcmlwdGlvbi5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlZpZXdDYW5QYXN0ZVVSTC5t
bToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvbWFjL1dlYlZpZXdDYW5QYXN0ZVplcm9QbmcubW06CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XZWJWaWV3
RGlkQ3JlYXRlSmF2YVNjcmlwdENvbnRleHQubW06CisgICAgICAgICgtW0RpZENyZWF0ZUphdmFT
Y3JpcHRDb250ZXh0RnJhbWVMb2FkRGVsZWdhdGUgd2ViVmlldzpkaWRDcmVhdGVKYXZhU2NyaXB0
Q29udGV4dDpmb3JGcmFtZTpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQ
cm90b2NvbC5tbToKKyAgICAgICAgKCtbVGVzdFByb3RvY29sIHJlZ2lzdGVyV2l0aFNjaGVtZTpd
KToKKyAgICAgICAgKCtbVGVzdFByb3RvY29sIHVucmVnaXN0ZXJdKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL21hYy9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OnBsYXRmb3JtSW5pdGlhbGl6
ZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29h
Lm1tOgorICAgICAgICAoV1RSOjppbml0aWFsaXplV2ViVmlld0NvbmZpZ3VyYXRpb24pOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lPUy5tbToKKyAgICAg
ICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjphZGRDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZC5tbToKKyAg
ICAgICAgKCtbV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQgcmVsZWFzZUxvY2FsUGFzdGVib2Fy
ZHNdKToKKwogMjAyMS0wMi0xNSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgUHJlcGFyZSBmb3IgYWRkaW5nIHJlbGF0aXZlIGNvbG9yIHN1cHBvcnQKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCAzNWFiZjFiZTVlZmZlNDZh
NDkzMDE5NDc1N2VhZTYxNDdmNDFlODlhLi5jM2U1ZjJiMDc5ZjUwOTMxNjAyZTRiMTUzMjY5NjQ1
ZDBhZmQzYjlkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRl
clRyZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1t
CkBAIC05OSw2ICs5OSw3IEBACiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHd0
Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5oPgorI2ltcG9ydCA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1RocmVhZGluZy5oPgpAQCAtMjM4
LDcgKzIzOSwxMSBAQCBzdGF0aWMgQk9PTCBwcmludFNlcGFyYXRvcnM7CiBzdGF0aWMgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBwZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbjsKIHN0YXRp
YyBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gYWxsb3dlZEhvc3RzOwogCi1zdGF0aWMgV2ViSGlzdG9y
eUl0ZW0gKnByZXZUZXN0QkZJdGVtOyAvLyBjdXJyZW50IGIvZiBpdGVtIGF0IHRoZSBlbmQgb2Yg
dGhlIHByZXZpb3VzIHRlc3QKK3N0YXRpYyBSZXRhaW5QdHI8V2ViSGlzdG9yeUl0ZW0+JiBwcmV2
VGVzdEJGSXRlbSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxXZWJI
aXN0b3J5SXRlbT4+IF9wcmV2VGVzdEJGSXRlbTsgLy8gY3VycmVudCBiL2YgaXRlbSBhdCB0aGUg
ZW5kIG9mIHRoZSBwcmV2aW91cyB0ZXN0LgorICAgIHJldHVybiBfcHJldlRlc3RCRkl0ZW07Cit9
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogY29uc3QgQ0dSZWN0IGxheW91dFRlc3RWaWV3
cG9ydFJlY3QgPSB7IHswLCAwfSwge3N0YXRpY19jYXN0PENHRmxvYXQ+KFRlc3RSdW5uZXI6OnZp
ZXdXaWR0aCksIHN0YXRpY19jYXN0PENHRmxvYXQ+KFRlc3RSdW5uZXI6OnZpZXdIZWlnaHQpfSB9
OwpAQCAtNzc0LDYgKzc3OSw3IEBAIFdlYlZpZXcgKmNyZWF0ZVdlYlZpZXdBbmRPZmZzY3JlZW5X
aW5kb3coKQogc3RhdGljIHZvaWQgZGVzdHJveVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kb3coV2Vi
VmlldyAqd2ViVmlldykKIHsKICAgICBBU1NFUlQod2ViVmlldyA9PSBbbWFpbkZyYW1lIHdlYlZp
ZXddKTsKKyAgICBhdXRvIGFkb3B0ZWRXZWJWaWV3ID0gYWRvcHROUyh3ZWJWaWV3KTsKICNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU1dpbmRvdyAqd2luZG93ID0gW3dlYlZpZXcgd2lu
ZG93XTsKICNlbmRpZgpAQCAtNzkyLDggKzc5OCw2IEBAIHN0YXRpYyB2b2lkIGRlc3Ryb3lXZWJW
aWV3QW5kT2Zmc2NyZWVuV2luZG93KFdlYlZpZXcgKndlYlZpZXcpCiAgICAgYXV0byB1aVdpbmRv
dyA9IGFkb3B0TlMoW2dXZWJCcm93c2VyVmlldyB3aW5kb3ddKTsKICAgICBbdWlXaW5kb3cgcmVt
b3ZlRnJvbVN1cGVydmlld107CiAjZW5kaWYKLQotICAgIFt3ZWJWaWV3IHJlbGVhc2VdOwogfQog
CiBzdGF0aWMgTlNTdHJpbmcgKmxpYnJhcnlQYXRoRm9yRHVtcFJlbmRlclRyZWUoKQpAQCAtOTg1
LDEwICs5ODksMTAgQEAgc3RhdGljIHZvaWQgYWxsb2NhdGVHbG9iYWxDb250cm9sbGVycygpCiAj
ZW5kaWYKIH0KIAotLy8gT2JqQysrIGRvZW5zJ3Qgc2VlbSB0byBsZXQgbWUgcGFzcyBOU09iamVj
dComIHNhZGx5LgorLy8gT2JqQysrIGRvZXNuJ3Qgc2VlbSB0byBsZXQgbWUgcGFzcyBOU09iamVj
dComIHNhZGx5Lgogc3RhdGljIGlubGluZSB2b2lkIHJlbGVhc2VBbmRaZXJvKE5TT2JqZWN0Kiog
b2JqZWN0KQogewotICAgIFsqb2JqZWN0IHJlbGVhc2VdOworICAgIGF1dG8gb2xkT2JqZWN0ID0g
YWRvcHROUygqb2JqZWN0KTsKICAgICAqb2JqZWN0ID0gbmlsOwogfQogCkBAIC0xNDgwLDE3ICsx
NDg0LDE3IEBAIHN0YXRpYyB2b2lkIGR1bXBCYWNrRm9yd2FyZExpc3RGb3JXZWJWaWV3KFdlYlZp
ZXcgKnZpZXcpCiAgICAgZm9yIChpbnQgaSA9IFtiZkxpc3QgZm9yd2FyZExpc3RDb3VudF07IGkg
PiAwOyBpLS0pIHsKICAgICAgICAgV2ViSGlzdG9yeUl0ZW0gKml0ZW0gPSBbYmZMaXN0IGl0ZW1B
dEluZGV4OmldOwogICAgICAgICAvLyBzb21ldGhpbmcgaXMgd3JvbmcgaWYgdGhlIGl0ZW0gZnJv
bSB0aGUgbGFzdCB0ZXN0IGlzIGluIHRoZSBmb3J3YXJkIHBhcnQgb2YgdGhlIGIvZiBsaXN0Ci0g
ICAgICAgIGFzc2VydChpdGVtICE9IHByZXZUZXN0QkZJdGVtKTsKKyAgICAgICAgYXNzZXJ0KGl0
ZW0gIT0gcHJldlRlc3RCRkl0ZW0oKSk7CiAgICAgICAgIFtpdGVtc1RvUHJpbnQgYWRkT2JqZWN0
Oml0ZW1dOwogICAgIH0KIAotICAgIGFzc2VydChbYmZMaXN0IGN1cnJlbnRJdGVtXSAhPSBwcmV2
VGVzdEJGSXRlbSk7CisgICAgYXNzZXJ0KFtiZkxpc3QgY3VycmVudEl0ZW1dICE9IHByZXZUZXN0
QkZJdGVtKCkpOwogICAgIFtpdGVtc1RvUHJpbnQgYWRkT2JqZWN0OltiZkxpc3QgY3VycmVudEl0
ZW1dXTsKICAgICBpbnQgY3VycmVudEl0ZW1JbmRleCA9IFtpdGVtc1RvUHJpbnQgY291bnRdIC0g
MTsKIAogICAgIGZvciAoaW50IGkgPSAtMTsgaSA+PSAtW2JmTGlzdCBiYWNrTGlzdENvdW50XTsg
aS0tKSB7CiAgICAgICAgIFdlYkhpc3RvcnlJdGVtICppdGVtID0gW2JmTGlzdCBpdGVtQXRJbmRl
eDppXTsKLSAgICAgICAgaWYgKGl0ZW0gPT0gcHJldlRlc3RCRkl0ZW0pCisgICAgICAgIGlmIChp
dGVtID09IHByZXZUZXN0QkZJdGVtKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgW2l0
ZW1zVG9QcmludCBhZGRPYmplY3Q6aXRlbV07CiAgICAgfQpAQCAtMTk2Myw4ICsxOTY3LDcgQEAg
c3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdGQ6OnN0cmluZyYgaW5wdXRMaW5lKQogICAgIGxh
c3RNb3VzZVBvc2l0aW9uID0gTlNaZXJvUG9pbnQ7CiAgICAgbGFzdENsaWNrUG9zaXRpb24gPSBO
U1plcm9Qb2ludDsKIAotICAgIFtwcmV2VGVzdEJGSXRlbSByZWxlYXNlXTsKLSAgICBwcmV2VGVz
dEJGSXRlbSA9IFtbW1ttYWluRnJhbWUgd2ViVmlld10gYmFja0ZvcndhcmRMaXN0XSBjdXJyZW50
SXRlbV0gcmV0YWluXTsKKyAgICBwcmV2VGVzdEJGSXRlbSgpID0gW1tbbWFpbkZyYW1lIHdlYlZp
ZXddIGJhY2tGb3J3YXJkTGlzdF0gY3VycmVudEl0ZW1dOwogCiAgICAgYXV0byYgd29ya1F1ZXVl
ID0gRFJUOjpXb3JrUXVldWU6OnNpbmdsZXRvbigpOwogICAgIHdvcmtRdWV1ZS5jbGVhcigpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVi
b2FyZC5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9h
cmQubW0KaW5kZXggNDE2Mjg4OTM1MzM1ZjYzODg2ZDRiMGE1ODM4NGY1ODVmZWZkN2I1OS4uZTk0
NGI0MTdkYmY1N2ZmNmQ5NzgyYTk4YjQ1NDBkOTkzM2YwYmQ5NSAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbQorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm1tCkBAIC03Nyw4
ICs3Nyw3IEBAICsgKE5TUGFzdGVib2FyZCAqKV9wYXN0ZWJvYXJkV2l0aE5hbWU6KE5TU3RyaW5n
ICopbmFtZQogCiArICh2b2lkKXJlbGVhc2VMb2NhbFBhc3RlYm9hcmRzCiB7Ci0gICAgW2xvY2Fs
UGFzdGVib2FyZHMgcmVsZWFzZV07Ci0gICAgbG9jYWxQYXN0ZWJvYXJkcyA9IG5pbDsKKyAgICBh
dXRvIG9sZFBhc3RlYm9hZHMgPSBhZG9wdE5TKHN0ZDo6ZXhjaGFuZ2UobG9jYWxQYXN0ZWJvYXJk
cywgbmlsKSk7CiB9CiAKIC8vIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgSlMgc28gdGhhdCBpdCBk
b2Vzbid0IGhhdmUgdG8gdHJ5IGFuZCBjcmVhdGUgYSBOU0FycmF5IG9uIHRoZSBvYmpjIHNpZGUg
aW5zdGVhZApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGlu
Z0NvbnRyb2xsZXIubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5tbQppbmRleCA3ZWQ5YThkZWI1OTI3ODk0NzNmYTEyOWEzYmMyZWJjOGNhM2I3YzRl
Li5jNmIxOGU3MzAzYmVhMmNmMTM2NWU3NTNkZTNjYTdhMzJiZjdhMmNlIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQpAQCAtOTYz
LDggKzk2Myw3IEBAICsgKHZvaWQpcmVwbGF5U2F2ZWRFdmVudHMKIAogKyAodm9pZCljbGVhclNh
dmVkRXZlbnRzCiB7Ci0gICAgW3NhdmVkTW91c2VFdmVudHMgcmVsZWFzZV07Ci0gICAgc2F2ZWRN
b3VzZUV2ZW50cyA9IG5pbDsKKyAgICBhdXRvIG9sZEV2ZW50cyA9IGFkb3B0TlMoc3RkOjpleGNo
YW5nZShzYXZlZE1vdXNlRXZlbnRzLCBuaWwpKTsKIH0KIAogLSAodm9pZClrZXlEb3duOihOU1N0
cmluZyAqKWNoYXJhY3RlciB3aXRoTW9kaWZpZXJzOihXZWJTY3JpcHRPYmplY3QgKiltb2RpZmll
cnMgd2l0aExvY2F0aW9uOih1bnNpZ25lZCBsb25nKWxvY2F0aW9uCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9XZWJDb3JlTlNVUkxT
ZXNzaW9uLm1tCmluZGV4IGExODA5ZTc2ZThlMzFkOTMyMDFkN2RjZTY0YWE1ZWZlOTI4MDIwNmQu
LjcxYTdmZjRmMzZlY2FkOTNkYzk2N2ZiYzIzMTNjYTJjYjNiOTJmZjEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9u
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9XZWJDb3Jl
TlNVUkxTZXNzaW9uLm1tCkBAIC00Miw2ICs0Miw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNv
cmVOU1VSTFNlc3Npb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIuaD4KICNp
bXBvcnQgPFdlYktpdC9XZWJWaWV3Lmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1w
b3J0IDx3dGYvU2NoZWR1bGVQYWlyLmg+CiAKIHN0YXRpYyBib29sIGRpZExvYWRNYWluUmVzb3Vy
Y2U7CkBAIC0xMDUsOSArMTA2LDkgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBjbGFz
cyBXZWJDb3JlTlNVUkxTZXNzaW9uVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIHB1Ymxp
YzoKLSAgICBXZWJWaWV3ICp2aWV3IHsgbmlsIH07CisgICAgUmV0YWluUHRyPFdlYlZpZXc+IHZp
ZXc7CiAgICAgRnJhbWUqIGZyYW1lIHsgbnVsbHB0ciB9OwotICAgIFRlc3ROU1VSTFNlc3Npb25E
YXRhRGVsZWdhdGUgKmRlbGVnYXRlIHsgbmlsIH07CisgICAgUmV0YWluUHRyPFRlc3ROU1VSTFNl
c3Npb25EYXRhRGVsZWdhdGU+IGRlbGVnYXRlOwogICAgIFJlZlB0cjxNZWRpYVJlc291cmNlTG9h
ZGVyPiBsb2FkZXI7CiAgICAgUmVmUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IG1lZGlhRWxlbWVudDsK
IApAQCAtMTE2LDE0ICsxMTcsMTQgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgICAgIEpTQzo6aW5pdGlhbGl6ZSgpOwogI2VuZGlmCi0gICAgICAgIHZpZXcgPSBbW1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdF07Ci0gICAgICAgIHZpZXcuZnJh
bWVMb2FkRGVsZWdhdGUgPSBbW1tUZXN0TlNVUkxTZXNzaW9uTG9hZGVyRGVsZWdhdGUgYWxsb2Nd
IGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgdmlldyA9IGFkb3B0TlMoW1tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdKTsKKyAgICAgICAgW3ZpZXcgc2V0RnJhbWVM
b2FkRGVsZWdhdGU6W1tbVGVzdE5TVVJMU2Vzc2lvbkxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0
XSBhdXRvcmVsZWFzZV1dOwogCiAgICAgICAgIGRpZExvYWRNYWluUmVzb3VyY2UgPSBmYWxzZTsK
LSAgICAgICAgdmlldy5tYWluRnJhbWVVUkwgPSBkb2N1bWVudFVSTC5hYnNvbHV0ZVN0cmluZzsK
KyAgICAgICAgW3ZpZXcgc2V0TWFpbkZyYW1lVVJMOmRvY3VtZW50VVJMLmFic29sdXRlU3RyaW5n
XTsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRMb2FkTWFpblJlc291cmNl
KTsKIAotICAgICAgICBkZWxlZ2F0ZSA9IFtbVGVzdE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZSBh
bGxvY10gaW5pdF07CisgICAgICAgIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3ROU1VSTFNlc3Np
b25EYXRhRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICAgICAgZnJhbWUgPSBbdmlldyBfbWFp
bkNvcmVGcmFtZV07CiAgICAgICAgIG1lZGlhRWxlbWVudCA9IEhUTUxWaWRlb0VsZW1lbnQ6OmNy
ZWF0ZSgqZnJhbWUtPmRvY3VtZW50KCkpOwogICAgICAgICBsb2FkZXIgPSBhZG9wdFJlZihuZXcg
TWVkaWFSZXNvdXJjZUxvYWRlcigqZnJhbWUtPmRvY3VtZW50KCksICptZWRpYUVsZW1lbnQuZ2V0
KCksIGVtcHR5U3RyaW5nKCksIEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OlZpZGVvKSk7CkBA
IC0xMzEsMTUgKzEzMiwxMyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24o
KQogICAgIHsKLSAgICAgICAgW3ZpZXcgcmVsZWFzZV07Ci0gICAgICAgIFtkZWxlZ2F0ZSByZWxl
YXNlXTsKICAgICAgICAgbG9hZGVyID0gbnVsbHB0cjsKICAgICB9CiB9OwogCiBURVNUX0YoV2Vi
Q29yZU5TVVJMU2Vzc2lvblRlc3QsIEJhc2ljT3BlcmF0aW9uKQogewotICAgIFdlYkNvcmVOU1VS
TFNlc3Npb24qIHNlc3Npb24gPSBbW1dlYkNvcmVOU1VSTFNlc3Npb24gYWxsb2NdIGluaXRXaXRo
UmVzb3VyY2VMb2FkZXI6KmxvYWRlciBkZWxlZ2F0ZTpkZWxlZ2F0ZSBkZWxlZ2F0ZVF1ZXVlOltO
U09wZXJhdGlvblF1ZXVlIG1haW5RdWV1ZV1dOworICAgIGF1dG8gc2Vzc2lvbiA9IGFkb3B0TlMo
W1tXZWJDb3JlTlNVUkxTZXNzaW9uIGFsbG9jXSBpbml0V2l0aFJlc291cmNlTG9hZGVyOipsb2Fk
ZXIgZGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCkgZGVsZWdhdGVRdWV1ZTpbTlNPcGVyYXRpb25RdWV1
ZSBtYWluUXVldWVdXSk7CiAgICAgZGlkUmVjaWV2ZVJlc3BvbnNlID0gZmFsc2U7CiAgICAgZGlk
UmVjaWV2ZURhdGEgPSBmYWxzZTsKICAgICBkaWRDb21wbGV0ZSA9IGZhbHNlOwpAQCAtMTU4LDE3
ICsxNTcsMTQgQEAgVEVTVF9GKFdlYkNvcmVOU1VSTFNlc3Npb25UZXN0LCBCYXNpY09wZXJhdGlv
bikKICAgICBbc2Vzc2lvbiBmaW5pc2hUYXNrc0FuZEludmFsaWRhdGVdOwogCiAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkaWRJbnZhbGlkYXRlKTsKLQotICAgIFtzZXNzaW9uIHJlbGVh
c2VdOwogfQogCiBURVNUX0YoV2ViQ29yZU5TVVJMU2Vzc2lvblRlc3QsIEludmFsaWRhdGVFbXB0
eSkKIHsKLSAgICBXZWJDb3JlTlNVUkxTZXNzaW9uKiBzZXNzaW9uID0gW1tXZWJDb3JlTlNVUkxT
ZXNzaW9uIGFsbG9jXSBpbml0V2l0aFJlc291cmNlTG9hZGVyOipsb2FkZXIgZGVsZWdhdGU6ZGVs
ZWdhdGUgZGVsZWdhdGVRdWV1ZTpbTlNPcGVyYXRpb25RdWV1ZSBtYWluUXVldWVdXTsKKyAgICBh
dXRvIHNlc3Npb24gPSBhZG9wdE5TKFtbV2ViQ29yZU5TVVJMU2Vzc2lvbiBhbGxvY10gaW5pdFdp
dGhSZXNvdXJjZUxvYWRlcjoqbG9hZGVyIGRlbGVnYXRlOmRlbGVnYXRlLmdldCgpIGRlbGVnYXRl
UXVldWU6W05TT3BlcmF0aW9uUXVldWUgbWFpblF1ZXVlXV0pOwogICAgIGRpZEludmFsaWRhdGUg
PSBmYWxzZTsKICAgICBbc2Vzc2lvbiBmaW5pc2hUYXNrc0FuZEludmFsaWRhdGVdOwogICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkSW52YWxpZGF0ZSk7Ci0gICAgW3Nlc3Npb24gcmVs
ZWFzZV07CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQXN5bmNGdW5jdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQXN5bmNGdW5jdGlvbi5tbQppbmRleCBhNDkyNzU3ODNkOGFkYjAxYTIxYTQ0ZGM1
N2E0MTY0ZjAwMTMwNGUxLi5kNjQ1YTg2MTBmNmU0ZWY5ZjRjNGIxYmUzNmY4MWU5ZDI2ZDk2ZGQw
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FzeW5j
RnVuY3Rpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9B
c3luY0Z1bmN0aW9uLm1tCkBAIC0xMzgsMTMgKzEzOCwxMiBAQCBURVNUKEFzeW5jRnVuY3Rpb24s
IFJvdW5kVHJpcCkKICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CiAgICAgRVhQRUNUX1RSVUUoW3Zh
bHVlIGlzRXF1YWw6cmVzdWx0XSk7CiAKLSAgICBOU011dGFibGVBcnJheSAqbXV0YWJsZUFycmF5
ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07CisgICAgYXV0byBtdXRhYmxlQXJyYXkg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBbbXV0YWJsZUFy
cmF5IGFkZE9iamVjdDp2YWx1ZV07Ci0gICAgYXJndW1lbnRzID0gQHsgQCJhIiA6IG11dGFibGVB
cnJheSB9OworICAgIGFyZ3VtZW50cyA9IEB7IEAiYSIgOiBtdXRhYmxlQXJyYXkuZ2V0KCkgfTsK
ICAgICByZXN1bHQgPSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0
dXJuIGEiIHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGVycm9yOiZlcnJvcl07CiAgICAgRVhQRUNU
X05VTEwoZXJyb3IpOwogICAgIEVYUEVDVF9UUlVFKFttdXRhYmxlQXJyYXkgaXNFcXVhbDpyZXN1
bHRdKTsKLSAgICBbbXV0YWJsZUFycmF5IHJlbGVhc2VdOwogCiAgICAgdmFsdWUgPSBAWyBAImZv
byIsIFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZVJlZmVyZW5jZURhdGU6MF0gXTsK
ICAgICBhcmd1bWVudHMgPSBAeyBAImEiIDogdmFsdWUgfTsKQEAgLTE1OCwxMyArMTU3LDEyIEBA
IFRFU1QoQXN5bmNGdW5jdGlvbiwgUm91bmRUcmlwKQogICAgIEVYUEVDVF9OVUxMKGVycm9yKTsK
ICAgICBFWFBFQ1RfVFJVRShbdmFsdWUgaXNFcXVhbDpyZXN1bHRdKTsKIAotICAgIE5TTXV0YWJs
ZURpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICptdXRhYmxlRGljdGlvbmFyeSA9IFtbTlNNdXRh
YmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07Ci0gICAgbXV0YWJsZURpY3Rpb25hcnlbQCJmb28i
XSA9IHZhbHVlOwotICAgIGFyZ3VtZW50cyA9IEB7IEAiYSIgOiBtdXRhYmxlRGljdGlvbmFyeSB9
OworICAgIGF1dG8gbXV0YWJsZURpY3Rpb25hcnkgPSBhZG9wdE5TKChOU011dGFibGVEaWN0aW9u
YXJ5PE5TU3RyaW5nICosIGlkPiAqKVtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0p
OworICAgIG11dGFibGVEaWN0aW9uYXJ5LmdldCgpW0AiZm9vIl0gPSB2YWx1ZTsKKyAgICBhcmd1
bWVudHMgPSBAeyBAImEiIDogbXV0YWJsZURpY3Rpb25hcnkuZ2V0KCkgfTsKICAgICByZXN1bHQg
PSBbd2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOkAicmV0dXJuIGEiIHdpdGhB
cmd1bWVudHM6YXJndW1lbnRzIGVycm9yOiZlcnJvcl07CiAgICAgRVhQRUNUX05VTEwoZXJyb3Ip
OwogICAgIEVYUEVDVF9UUlVFKFttdXRhYmxlRGljdGlvbmFyeSBpc0VxdWFsOnJlc3VsdF0pOwot
ICAgIFttdXRhYmxlRGljdGlvbmFyeSByZWxlYXNlXTsKIAogICAgIHZhbHVlID0gQHsgQCJhIiA6
IEAiZm9vIiwgQCJiIiA6IFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZVJlZmVyZW5j
ZURhdGU6MF0gfTsKICAgICBhcmd1bWVudHMgPSBAeyBAImEiIDogdmFsdWUgfTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCmluZGV4IDUw
MWQzYTQ1ZGEyZTU5ZWI2YTA1ZDFjYTc1NmZiYWVkMDNkMTQ5Y2IuLmEyMTdhZWY0YWY4YjA1NzNk
MGUyMGNhZTJhNjY1NGY1MmJlYjAxZTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQpAQCAtMTMzLDE0ICsxMzMsMTQgQEAgQGVuZAog
VEVTVChfV0tEb3dubG9hZCwgRG93bmxvYWREZWxlZ2F0ZSkKIHsKICAgICBSZXRhaW5QdHI8V0tQ
cm9jZXNzUG9vbD4gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10g
aW5pdF0pOwotICAgIERvd25sb2FkRGVsZWdhdGUgKmRvd25sb2FkRGVsZWdhdGUgPSBbW0Rvd25s
b2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdOwotICAgIFtwcm9jZXNzUG9vbCBfc2V0RG93bmxvYWRE
ZWxlZ2F0ZTpkb3dubG9hZERlbGVnYXRlXTsKKyAgICBhdXRvIGRvd25sb2FkRGVsZWdhdGUgPSBh
ZG9wdE5TKFtbRG93bmxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFtwcm9jZXNzUG9v
bCBfc2V0RG93bmxvYWREZWxlZ2F0ZTpkb3dubG9hZERlbGVnYXRlLmdldCgpXTsKIAogICAgIEBh
dXRvcmVsZWFzZXBvb2wgewotICAgICAgICBFWFBFQ1RfRVEoZG93bmxvYWREZWxlZ2F0ZSwgW3By
b2Nlc3NQb29sIF9kb3dubG9hZERlbGVnYXRlXSk7CisgICAgICAgIEVYUEVDVF9FUShkb3dubG9h
ZERlbGVnYXRlLmdldCgpLCBbcHJvY2Vzc1Bvb2wgX2Rvd25sb2FkRGVsZWdhdGVdKTsKICAgICB9
CiAKLSAgICBbZG93bmxvYWREZWxlZ2F0ZSByZWxlYXNlXTsKKyAgICBkb3dubG9hZERlbGVnYXRl
ID0gbmlsOwogICAgIEVYUEVDVF9OVUxMKFtwcm9jZXNzUG9vbCBfZG93bmxvYWREZWxlZ2F0ZV0p
OwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0luQXBwQnJvd3NlclByaXZhY3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KaW5kZXggZWIxYzZiODVhODkyNmRhNzg2YjNl
ZGU3NzhiZWZlOTNhNmZkYzFlNC4uN2M4NzgyNmZlZTZmNGU0NDE5NzA3YmU3NWQyMDZkY2U4NWE2
NGU3NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
bkFwcEJyb3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAtNTM5LDE4ICs1MzksMTcgQEAgc3Rh
dGljIHZvaWQgc2V0VXBDb29raWVUZXN0V2l0aFdlYnNpdGVEYXRhU3RvcmUoV0tXZWJzaXRlRGF0
YVN0b3JlKiBkYXRhU3RvcmUpCiAgICAgb2JzZXJ2ZXJDYWxsYmFja3MgPSAwOwogICAgIGdsb2Jh
bENvb2tpZVN0b3JlID0gZGF0YVN0b3JlLmh0dHBDb29raWVTdG9yZTsKIAotICAgIE5TQXJyYXk8
TlNIVFRQQ29va2llICo+ICpjb29raWVzID0gbmlsOworICAgIFJldGFpblB0cjxOU0FycmF5PE5T
SFRUUENvb2tpZSAqPj4gY29va2llczsKICAgICBnb3RGbGFnID0gZmFsc2U7Ci0gICAgW2dsb2Jh
bENvb2tpZVN0b3JlIGdldEFsbENvb2tpZXM6W2Nvb2tpZXNQdHIgPSAmY29va2llc10oTlNBcnJh
eTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2llcykgewotICAgICAgICAqY29va2llc1B0ciA9IFtu
c0Nvb2tpZXMgcmV0YWluXTsKKyAgICBbZ2xvYmFsQ29va2llU3RvcmUgZ2V0QWxsQ29va2llczpb
Jl0oTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2llcykgeworICAgICAgICBjb29raWVz
ID0gbnNDb29raWVzOwogICAgICAgICBnb3RGbGFnID0gdHJ1ZTsKICAgICB9XTsKIAogICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290RmxhZyk7CiAKICAgICAvLyBNYWtlIHN1cmUgdGhl
IGNvb2tpZSBzdG9yZSBzdGFydHMgb3V0IGVtcHR5LgotICAgIEFTU0VSVF9FUShjb29raWVzLmNv
dW50LCAwdSk7Ci0gICAgW2Nvb2tpZXMgcmVsZWFzZV07CisgICAgQVNTRVJUX0VRKFtjb29raWVz
IGNvdW50XSwgMHUpOwogCiAgICAgZ290RmxhZyA9IGZhbHNlOwogfQpAQCAtNjA0LDIwICs2MDMs
MTkgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBTZXRDb29raWVGb3JOb25BcHBCb3VuZERv
bWFpbkZhaWxzKQogICAgIGdvdEZsYWcgPSBmYWxzZTsKIAogICAgIC8vIENoZWNrIHRoZSBjb29r
aWUgc3RvcmUgdG8gbWFrZSBzdXJlIG9ubHkgb25lIGNvb2tpZSB3YXMgc2V0LgotICAgIE5TQXJy
YXk8TlNIVFRQQ29va2llICo+ICpjb29raWVzID0gbmlsOwotICAgIFtnbG9iYWxDb29raWVTdG9y
ZSBnZXRBbGxDb29raWVzOltjb29raWVzUHRyID0gJmNvb2tpZXNdKE5TQXJyYXk8TlNIVFRQQ29v
a2llICo+ICpuc0Nvb2tpZXMpIHsKLSAgICAgICAgKmNvb2tpZXNQdHIgPSBbbnNDb29raWVzIHJl
dGFpbl07CisgICAgUmV0YWluUHRyPE5TQXJyYXk8TlNIVFRQQ29va2llICo+PiBjb29raWVzOwor
ICAgIFtnbG9iYWxDb29raWVTdG9yZSBnZXRBbGxDb29raWVzOlsmXShOU0FycmF5PE5TSFRUUENv
b2tpZSAqPiAqbnNDb29raWVzKSB7CisgICAgICAgIGNvb2tpZXMgPSBuc0Nvb2tpZXM7CiAgICAg
ICAgIGdvdEZsYWcgPSB0cnVlOwogICAgIH1dOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZnb3RGbGFnKTsKIAotICAgIEFTU0VSVF9FUShjb29raWVzLmNvdW50LCAxdSk7Ci0gICAg
RVhQRUNUX1dLX1NUUkVRKGNvb2tpZXNbMF0uZG9tYWluLCBAInd3dy53ZWJraXQub3JnIik7Cisg
ICAgQVNTRVJUX0VRKFtjb29raWVzIGNvdW50XSwgMXUpOworICAgIEVYUEVDVF9XS19TVFJFUShj
b29raWVzLmdldCgpWzBdLmRvbWFpbiwgQCJ3d3cud2Via2l0Lm9yZyIpOwogICAgIHdoaWxlIChv
YnNlcnZlckNhbGxiYWNrcyAhPSAxdSkKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3Bp
blJ1bkxvb3AoKTsKIAotICAgIFtjb29raWVzIHJlbGVhc2VdOwogICAgIGdvdEZsYWcgPSBmYWxz
ZTsKICAgICBbZ2xvYmFsQ29va2llU3RvcmUgZGVsZXRlQ29va2llOmFwcEJvdW5kQ29va2llLmdl
dCgpIGNvbXBsZXRpb25IYW5kbGVyOltdKCkgewogICAgICAgICBnb3RGbGFnID0gdHJ1ZTsKQEAg
LTY3MCwzMiArNjY4LDMwIEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgR2V0Q29va2llRm9y
Tm9uQXBwQm91bmREb21haW5GYWlscykKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdv
dEZsYWcpOwogCiAgICAgZ290RmxhZyA9IGZhbHNlOwotICAgIE5TQXJyYXk8TlNIVFRQQ29va2ll
ICo+ICpjb29raWVzID0gbmlsOwotICAgIFtnbG9iYWxDb29raWVTdG9yZSBnZXRBbGxDb29raWVz
Oltjb29raWVzUHRyID0gJmNvb2tpZXNdKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tp
ZXMpIHsKLSAgICAgICAgKmNvb2tpZXNQdHIgPSBbbnNDb29raWVzIHJldGFpbl07CisgICAgUmV0
YWluUHRyPE5TQXJyYXk8TlNIVFRQQ29va2llICo+PiBjb29raWVzOworICAgIFtnbG9iYWxDb29r
aWVTdG9yZSBnZXRBbGxDb29raWVzOlsmXShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29r
aWVzKSB7CisgICAgICAgIGNvb2tpZXMgPSBuc0Nvb2tpZXM7CiAgICAgICAgIGdvdEZsYWcgPSB0
cnVlOwogICAgIH1dOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RGbGFnKTsK
IAogICAgIC8vIENvbmZpcm0gYm90aCBjb29raWVzIGFyZSBpbiB0aGUgc3RvcmUuCi0gICAgQVNT
RVJUX0VRKGNvb2tpZXMuY291bnQsIDJ1KTsKKyAgICBBU1NFUlRfRVEoW2Nvb2tpZXMgY291bnRd
LCAydSk7CiAKICAgICAvLyBOb3cgZW5hYmxlIHByb3RlY3Rpb25zIGFuZCBlbnN1cmUgd2UgY2Fu
IG9ubHkgcmV0cmlldmUgdGhlIGFwcC1ib3VuZCBjb29raWVzLgogICAgIGluaXRpYWxpemVJbkFw
cEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CiAKICAgICBjb29raWVzID0gbmlsOwogICAg
IGdvdEZsYWcgPSBmYWxzZTsKLSAgICBbZ2xvYmFsQ29va2llU3RvcmUgZ2V0QWxsQ29va2llczpb
Y29va2llc1B0ciA9ICZjb29raWVzXShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVz
KSB7Ci0gICAgICAgICpjb29raWVzUHRyID0gW25zQ29va2llcyByZXRhaW5dOworICAgIFtnbG9i
YWxDb29raWVTdG9yZSBnZXRBbGxDb29raWVzOlsmXShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAq
bnNDb29raWVzKSB7CisgICAgICAgIGNvb2tpZXMgPSBuc0Nvb2tpZXM7CiAgICAgICAgIGdvdEZs
YWcgPSB0cnVlOwogICAgIH1dOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RG
bGFnKTsKIAotICAgIEFTU0VSVF9FUShjb29raWVzLmNvdW50LCAxdSk7Ci0KLSAgICBbY29va2ll
cyByZWxlYXNlXTsKKyAgICBBU1NFUlRfRVEoW2Nvb2tpZXMgY291bnRdLCAxdSk7CiAKICAgICBn
b3RGbGFnID0gZmFsc2U7CiAgICAgW2dsb2JhbENvb2tpZVN0b3JlIGRlbGV0ZUNvb2tpZTpub25B
cHBCb3VuZENvb2tpZS5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpbXSgpIHsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTmF2aWdhdGlvbi5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTmF2aWdhdGlvbi5tbQppbmRleCAw
Mjk3ZDgyMTBhZThiM2VlMjBlNTc1OWI1MTI4MDZjMDM3ZGYxNzQwLi41ZTc0ODIxZmE1YTRjZDIx
NTYyMzkwMzY2OWRmY2I1YmQ5ZTY2ZDI1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL05hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9OYXZpZ2F0aW9uLm1tCkBAIC03NSwxNCArNzUsMTQgQEAgVEVT
VChXS05hdmlnYXRpb24sIE5hdmlnYXRpb25EZWxlZ2F0ZSkKIHsKICAgICBSZXRhaW5QdHI8V0tX
ZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwogCi0gICAgTmF2aWdhdGlvbkRlbGVnYXRl
ICpkZWxlZ2F0ZSA9IFtbTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XTsKLSAgICBbd2Vi
VmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGVdOworICAgIGF1dG8gZGVsZWdhdGUg
PSBhZG9wdE5TKFtbTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZp
ZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIEBhdXRvcmVs
ZWFzZXBvb2wgewogICAgICAgICBFWFBFQ1RfRVEoZGVsZWdhdGUsIFt3ZWJWaWV3IG5hdmlnYXRp
b25EZWxlZ2F0ZV0pOwogICAgIH0KIAotICAgIFtkZWxlZ2F0ZSByZWxlYXNlXTsKKyAgICBkZWxl
Z2F0ZSA9IG5pbDsKICAgICBFWFBFQ1RfTlVMTChbd2ViVmlldyBuYXZpZ2F0aW9uRGVsZWdhdGVd
KTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9WaWRlb0NvbnRyb2xzTWFuYWdlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvVmlkZW9Db250cm9sc01hbmFnZXIubW0KaW5kZXggODVmZWM5OGZjODRjYmRhODlk
MWZkODI3OTFiNGMzMDMxNDMyYWNiZS4uNzQ2M2E4YTdiZTU0ZTU1NTFlZWIzMTc5OTI1YzdhYWI3
YjIzOWQ4OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9WaWRlb0NvbnRyb2xzTWFuYWdlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1ZpZGVvQ29udHJvbHNNYW5hZ2VyLm1tCkBAIC0zNjQsNyArMzY0LDYgQEAg
VEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJUZWFyc0Rvd25N
ZWRpYUNvbnRyb2xzT25EZWFsbG9jKQogICAgICAgICBpZiAoW3dlYlZpZXcgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihfaW50ZXJhY3RXaXRoTWVkaWFDb250cm9sc0ZvclRlc3RpbmcpXSkK
ICAgICAgICAgICAgIFt3ZWJWaWV3IF9pbnRlcmFjdFdpdGhNZWRpYUNvbnRyb2xzRm9yVGVzdGlu
Z107CiAKLSAgICAgICAgW3dlYlZpZXcgcmVsZWFzZV07CiAgICAgICAgIGZpbmlzaGVkVGVzdCA9
IHRydWU7CiAgICAgfV07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCmluZGV4IDMzNzYwOTJhMTk1YjUx
MmRhNjdjNDk2ZTQ1MjE3YjkxNGZlMmE1NzkuLjBmODA3YjhmYTAyNWQyMTZjM2Q1MmU5YjFiZDI3
OTk5MGI0NDEzMjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQpAQCAtODUsMTYgKzg1LDE1IEBAIHN0
YXRpYyB2b2lkIHJ1blRlc3RXaXRoV2Vic2l0ZURhdGFTdG9yZShXS1dlYnNpdGVEYXRhU3RvcmUq
IGRhdGFTdG9yZSkKICAgICBbZ2xvYmFsQ29va2llU3RvcmUgYWRkT2JzZXJ2ZXI6b2JzZXJ2ZXIx
LmdldCgpXTsKICAgICBbZ2xvYmFsQ29va2llU3RvcmUgYWRkT2JzZXJ2ZXI6b2JzZXJ2ZXIyLmdl
dCgpXTsKIAotICAgIE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpjb29raWVzID0gbmlsOwotICAg
IFtnbG9iYWxDb29raWVTdG9yZSBnZXRBbGxDb29raWVzOltjb29raWVzUHRyID0gJmNvb2tpZXNd
KE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tpZXMpIHsKLSAgICAgICAgKmNvb2tpZXNQ
dHIgPSBbbnNDb29raWVzIHJldGFpbl07CisgICAgUmV0YWluUHRyPE5TQXJyYXk8TlNIVFRQQ29v
a2llICo+PiBjb29raWVzOworICAgIFtnbG9iYWxDb29raWVTdG9yZSBnZXRBbGxDb29raWVzOlsm
XShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzKSB7CisgICAgICAgIGNvb2tpZXMg
PSBuc0Nvb2tpZXM7CiAgICAgICAgIGdvdEZsYWcgPSB0cnVlOwogICAgIH1dOwogCiAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RGbGFnKTsKIAotICAgIEFTU0VSVF9FUShjb29raWVz
LmNvdW50LCAwdSk7Ci0gICAgW2Nvb2tpZXMgcmVsZWFzZV07CisgICAgQVNTRVJUX0VRKFtjb29r
aWVzIGNvdW50XSwgMHUpOwogCiAgICAgZ290RmxhZyA9IGZhbHNlOwogCkBAIC0xMzAsMTkgKzEy
OSwxOSBAQCBzdGF0aWMgdm9pZCBydW5UZXN0V2l0aFdlYnNpdGVEYXRhU3RvcmUoV0tXZWJzaXRl
RGF0YVN0b3JlKiBkYXRhU3RvcmUpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RG
bGFnKTsKICAgICBnb3RGbGFnID0gZmFsc2U7CiAKLSAgICBbZ2xvYmFsQ29va2llU3RvcmUgZ2V0
QWxsQ29va2llczpbY29va2llc1B0ciA9ICZjb29raWVzXShOU0FycmF5PE5TSFRUUENvb2tpZSAq
PiAqbnNDb29raWVzKSB7Ci0gICAgICAgICpjb29raWVzUHRyID0gW25zQ29va2llcyByZXRhaW5d
OworICAgIFtnbG9iYWxDb29raWVTdG9yZSBnZXRBbGxDb29raWVzOlsmXShOU0FycmF5PE5TSFRU
UENvb2tpZSAqPiAqbnNDb29raWVzKSB7CisgICAgICAgIGNvb2tpZXMgPSBuc0Nvb2tpZXM7CiAg
ICAgICAgIGdvdEZsYWcgPSB0cnVlOwogICAgIH1dOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZnb3RGbGFnKTsKICAgICBnb3RGbGFnID0gZmFsc2U7CiAKLSAgICBBU1NFUlRfRVEo
Y29va2llcy5jb3VudCwgMnUpOworICAgIEFTU0VSVF9FUShbY29va2llcyBjb3VudF0sIDJ1KTsK
ICAgICB3aGlsZSAob2JzZXJ2ZXJDYWxsYmFja3MgIT0gNHUpCiAgICAgICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnNwaW5SdW5Mb29wKCk7CiAKLSAgICBmb3IgKE5TSFRUUENvb2tpZSAqY29va2ll
IDogY29va2llcykgeworICAgIGZvciAoTlNIVFRQQ29va2llICpjb29raWUgOiBjb29raWVzLmdl
dCgpKSB7CiAgICAgICAgIGlmIChbY29va2llLm5hbWUgaXNFcXVhbDpAIkNvb2tpZU5hbWUiXSkg
ewogICAgICAgICAgICAgQVNTRVJUX1RSVUUoW2Nvb2tpZTEuZ2V0KCkucGF0aCBpc0VxdWFsVG9T
dHJpbmc6Y29va2llLnBhdGhdKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKFtjb29raWUxLmdl
dCgpLnZhbHVlIGlzRXF1YWxUb1N0cmluZzpjb29raWUudmFsdWVdKTsKQEAgLTE1OCw3ICsxNTcs
NiBAQCBzdGF0aWMgdm9pZCBydW5UZXN0V2l0aFdlYnNpdGVEYXRhU3RvcmUoV0tXZWJzaXRlRGF0
YVN0b3JlKiBkYXRhU3RvcmUpCiAgICAgICAgICAgICBBU1NFUlRfRkFMU0UoY29va2llLnNlc3Np
b25Pbmx5KTsKICAgICAgICAgfQogICAgIH0KLSAgICBbY29va2llcyByZWxlYXNlXTsKIAogICAg
IFtnbG9iYWxDb29raWVTdG9yZSBkZWxldGVDb29raWU6Y29va2llMi5nZXQoKSBjb21wbGV0aW9u
SGFuZGxlcjpbXSgpewogICAgICAgICBnb3RGbGFnID0gdHJ1ZTsKQEAgLTE2NywyNiArMTY1LDI1
IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3RXaXRoV2Vic2l0ZURhdGFTdG9yZShXS1dlYnNpdGVEYXRh
U3RvcmUqIGRhdGFTdG9yZSkKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdEZsYWcp
OwogICAgIGdvdEZsYWcgPSBmYWxzZTsKIAotICAgIFtnbG9iYWxDb29raWVTdG9yZSBnZXRBbGxD
b29raWVzOltjb29raWVzUHRyID0gJmNvb2tpZXNdKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpu
c0Nvb2tpZXMpIHsKLSAgICAgICAgKmNvb2tpZXNQdHIgPSBbbnNDb29raWVzIHJldGFpbl07Cisg
ICAgW2dsb2JhbENvb2tpZVN0b3JlIGdldEFsbENvb2tpZXM6WyZdKE5TQXJyYXk8TlNIVFRQQ29v
a2llICo+ICpuc0Nvb2tpZXMpIHsKKyAgICAgICAgY29va2llcyA9IG5zQ29va2llczsKICAgICAg
ICAgZ290RmxhZyA9IHRydWU7CiAgICAgfV07CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmdvdEZsYWcpOwogICAgIGdvdEZsYWcgPSBmYWxzZTsKIAotICAgIEFTU0VSVF9FUShjb29r
aWVzLmNvdW50LCAxdSk7CisgICAgQVNTRVJUX0VRKFtjb29raWVzIGNvdW50XSwgMXUpOwogICAg
IHdoaWxlIChvYnNlcnZlckNhbGxiYWNrcyAhPSA2dSkKICAgICAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6c3BpblJ1bkxvb3AoKTsKIAotICAgIGZvciAoTlNIVFRQQ29va2llICpjb29raWUgOiBj
b29raWVzKSB7CisgICAgZm9yIChOU0hUVFBDb29raWUgKmNvb2tpZSA6IGNvb2tpZXMuZ2V0KCkp
IHsKICAgICAgICAgQVNTRVJUX1RSVUUoW2Nvb2tpZTEuZ2V0KCkucGF0aCBpc0VxdWFsVG9TdHJp
bmc6Y29va2llLnBhdGhdKTsKICAgICAgICAgQVNTRVJUX1RSVUUoW2Nvb2tpZTEuZ2V0KCkudmFs
dWUgaXNFcXVhbFRvU3RyaW5nOmNvb2tpZS52YWx1ZV0pOwogICAgICAgICBBU1NFUlRfVFJVRShb
Y29va2llMS5nZXQoKS5kb21haW4gaXNFcXVhbFRvU3RyaW5nOmNvb2tpZS5kb21haW5dKTsKICAg
ICAgICAgQVNTRVJUX1RSVUUoY29va2llLnNlY3VyZSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKGNv
b2tpZS5zZXNzaW9uT25seSk7CiAgICAgfQotICAgIFtjb29raWVzIHJlbGVhc2VdOwogCiAgICAg
W2dsb2JhbENvb2tpZVN0b3JlIHJlbW92ZU9ic2VydmVyOm9ic2VydmVyMS5nZXQoKV07CiAgICAg
W2dsb2JhbENvb2tpZVN0b3JlIHJlbW92ZU9ic2VydmVyOm9ic2VydmVyMi5nZXQoKV07CkBAIC0y
NTEsMTUgKzI0OCwxNCBAQCBURVNUKFdLSFRUUENvb2tpZVN0b3JlLCBIdHRwT25seSkKIAogICAg
IGdsb2JhbENvb2tpZVN0b3JlID0gZGF0YVN0b3JlLmh0dHBDb29raWVTdG9yZTsKIAotICAgIE5T
QXJyYXk8TlNIVFRQQ29va2llICo+ICpjb29raWVzID0gbmlsOwotICAgIFtnbG9iYWxDb29raWVT
dG9yZSBnZXRBbGxDb29raWVzOltjb29raWVzUHRyID0gJmNvb2tpZXNdKE5TQXJyYXk8TlNIVFRQ
Q29va2llICo+ICpuc0Nvb2tpZXMpIHsKLSAgICAgICAgKmNvb2tpZXNQdHIgPSBbbnNDb29raWVz
IHJldGFpbl07CisgICAgUmV0YWluUHRyPE5TQXJyYXk8TlNIVFRQQ29va2llICo+PiBjb29raWVz
OworICAgIFtnbG9iYWxDb29raWVTdG9yZSBnZXRBbGxDb29raWVzOlsmXShOU0FycmF5PE5TSFRU
UENvb2tpZSAqPiAqbnNDb29raWVzKSB7CisgICAgICAgIGNvb2tpZXMgPSBuc0Nvb2tpZXM7CiAg
ICAgICAgIGdvdEZsYWcgPSB0cnVlOwogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZ290RmxhZyk7CiAgICAgZ290RmxhZyA9IGZhbHNlOwotICAgIEFTU0VSVF9FUShjb29r
aWVzLmNvdW50LCAwdSk7Ci0gICAgW2Nvb2tpZXMgcmVsZWFzZV07CisgICAgQVNTRVJUX0VRKFtj
b29raWVzIGNvdW50XSwgMHUpOwogCiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqY29va2llUHJv
cGVydGllcyA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07CiAgICAgW2Nvb2tp
ZVByb3BlcnRpZXMgc2V0T2JqZWN0OkAiY29va2llTmFtZSIgZm9yS2V5Ok5TSFRUUENvb2tpZU5h
bWVdOwpAQCAtMjkwLDE1ICsyODYsMTQgQEAgVEVTVChXS0hUVFBDb29raWVTdG9yZSwgSHR0cE9u
bHkpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RGbGFnKTsKICAgICBnb3RGbGFn
ID0gZmFsc2U7CiAKLSAgICBbZ2xvYmFsQ29va2llU3RvcmUgZ2V0QWxsQ29va2llczpbY29va2ll
c1B0ciA9ICZjb29raWVzXShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzKSB7Ci0g
ICAgICAgICpjb29raWVzUHRyID0gW25zQ29va2llcyByZXRhaW5dOworICAgIFtnbG9iYWxDb29r
aWVTdG9yZSBnZXRBbGxDb29raWVzOlsmXShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29r
aWVzKSB7CisgICAgICAgIGNvb2tpZXMgPSBuc0Nvb2tpZXM7CiAgICAgICAgIGdvdEZsYWcgPSB0
cnVlOwogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290RmxhZyk7CiAg
ICAgZ290RmxhZyA9IGZhbHNlOwotICAgIEFTU0VSVF9FUShjb29raWVzLmNvdW50LCAxdSk7Cisg
ICAgQVNTRVJUX0VRKFtjb29raWVzIGNvdW50XSwgMXUpOwogICAgIEVYUEVDVF9UUlVFKFtbW2Nv
b2tpZXMgb2JqZWN0QXRJbmRleDowXSB2YWx1ZV0gaXNFcXVhbDpAImNvb2tpZVZhbHVlMiJdKTsK
LSAgICBbY29va2llcyByZWxlYXNlXTsKIAogICAgIC8vIFNldHRpbmcgbm90SHR0cE9ubHlDb29r
aWUgc2hvdWxkIGZhaWwgYmVjYXVzZSB3ZSBjYW5ub3Qgb3ZlcndyaXRlIEhUVFBPbmx5IHByb3Bl
cnR5IHVzaW5nIHB1YmxpYyBBUEkuCiAgICAgW2dsb2JhbENvb2tpZVN0b3JlIHNldENvb2tpZTpu
b3RIdHRwT25seUNvb2tpZS5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpbXSgpIHsKQEAgLTMwNywx
NSArMzAyLDE0IEBAIFRFU1QoV0tIVFRQQ29va2llU3RvcmUsIEh0dHBPbmx5KQogICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290RmxhZyk7CiAgICAgZ290RmxhZyA9IGZhbHNlOwogCi0g
ICAgW2dsb2JhbENvb2tpZVN0b3JlIGdldEFsbENvb2tpZXM6W2Nvb2tpZXNQdHIgPSAmY29va2ll
c10oTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2llcykgewotICAgICAgICAqY29va2ll
c1B0ciA9IFtuc0Nvb2tpZXMgcmV0YWluXTsKKyAgICBbZ2xvYmFsQ29va2llU3RvcmUgZ2V0QWxs
Q29va2llczpbJl0oTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2llcykgeworICAgICAg
ICBjb29raWVzID0gbnNDb29raWVzOwogICAgICAgICBnb3RGbGFnID0gdHJ1ZTsKICAgICB9XTsK
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdEZsYWcpOwogICAgIGdvdEZsYWcgPSBm
YWxzZTsKLSAgICBBU1NFUlRfRVEoY29va2llcy5jb3VudCwgMXUpOworICAgIEFTU0VSVF9FUShb
Y29va2llcyBjb3VudF0sIDF1KTsKICAgICBFWFBFQ1RfVFJVRShbW2Nvb2tpZXMgb2JqZWN0QXRJ
bmRleDowXSBpc0hUVFBPbmx5XSk7Ci0gICAgW2Nvb2tpZXMgcmVsZWFzZV07CiAKICAgICAvLyBE
ZWxldGluZyBub3RIdHRwT25seUNvb2tpZSBzaG91bGQgZmFpbCBiZWNhdXNlIHRoZSBjb29raWUg
c3RvcmVkIGlzIEhUVFBPbmx5LgogICAgIFtnbG9iYWxDb29raWVTdG9yZSBkZWxldGVDb29raWU6
bm90SHR0cE9ubHlDb29raWUuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6W10oKSB7CkBAIC0zMjQs
MTQgKzMxOCwxMyBAQCBURVNUKFdLSFRUUENvb2tpZVN0b3JlLCBIdHRwT25seSkKICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdEZsYWcpOwogICAgIGdvdEZsYWcgPSBmYWxzZTsKIAot
ICAgIFtnbG9iYWxDb29raWVTdG9yZSBnZXRBbGxDb29raWVzOltjb29raWVzUHRyID0gJmNvb2tp
ZXNdKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tpZXMpIHsKLSAgICAgICAgKmNvb2tp
ZXNQdHIgPSBbbnNDb29raWVzIHJldGFpbl07CisgICAgW2dsb2JhbENvb2tpZVN0b3JlIGdldEFs
bENvb2tpZXM6WyZdKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tpZXMpIHsKKyAgICAg
ICAgY29va2llcyA9IG5zQ29va2llczsKICAgICAgICAgZ290RmxhZyA9IHRydWU7CiAgICAgfV07
CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RGbGFnKTsKICAgICBnb3RGbGFnID0g
ZmFsc2U7Ci0gICAgQVNTRVJUX0VRKGNvb2tpZXMuY291bnQsIDF1KTsKLSAgICBbY29va2llcyBy
ZWxlYXNlXTsKKyAgICBBU1NFUlRfRVEoW2Nvb2tpZXMgY291bnRdLCAxdSk7CiAKICAgICAvLyBE
ZWxldGluZyBodHRwT25seUNvb2tpZSBzaG91bGQgc3VjY2VlZC4gCiAgICAgW2dsb2JhbENvb2tp
ZVN0b3JlIGRlbGV0ZUNvb2tpZTpodHRwT25seUNvb2tpZS5nZXQoKSBjb21wbGV0aW9uSGFuZGxl
cjpbXSgpIHsKQEAgLTM0MCwxNCArMzMzLDEzIEBAIFRFU1QoV0tIVFRQQ29va2llU3RvcmUsIEh0
dHBPbmx5KQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290RmxhZyk7CiAgICAgZ290
RmxhZyA9IGZhbHNlOwogCi0gICAgW2dsb2JhbENvb2tpZVN0b3JlIGdldEFsbENvb2tpZXM6W2Nv
b2tpZXNQdHIgPSAmY29va2llc10oTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2llcykg
ewotICAgICAgICAqY29va2llc1B0ciA9IFtuc0Nvb2tpZXMgcmV0YWluXTsKKyAgICBbZ2xvYmFs
Q29va2llU3RvcmUgZ2V0QWxsQ29va2llczpbJl0oTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKm5z
Q29va2llcykgeworICAgICAgICBjb29raWVzID0gbnNDb29raWVzOwogICAgICAgICBnb3RGbGFn
ID0gdHJ1ZTsKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdEZsYWcp
OwogICAgIGdvdEZsYWcgPSBmYWxzZTsKLSAgICBBU1NFUlRfRVEoY29va2llcy5jb3VudCwgMHUp
OwotICAgIFtjb29raWVzIHJlbGVhc2VdOworICAgIEFTU0VSVF9FUShbY29va2llcyBjb3VudF0s
IDB1KTsKIH0KIAogLy8gRklYTUU6IFdvdWxkIGJlIGdvb2QgdG8gZW5hYmxlIHRoaXMgdGVzdCBm
b3Igd2F0Y2hPUyBhbmQgdHZPUy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCmluZGV4IDI3YzY1
YWU3MjQzMTc4MTFiYjhiMWM4NmIwMWRkOTczMDcxMzcwOGQuLmQ3NWU1YjI0MDYwMmZlOGRkMWEw
MmI1Y2NkOGE5NDIwMzg3ZWQwZDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQpAQCAtNzcz
LDggKzc3Myw3IEBAIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgVGhyZWFkcykKICAgICBbcG9vbCBk
cmFpbl07CiAKICAgICBUaHJlYWQ6OmNyZWF0ZSgiQiIsIFtdIHsKLSAgICAgICAgW3RoZVRhc2sg
cmVsZWFzZV07Ci0gICAgICAgIHRoZVRhc2sgPSBuaWw7CisgICAgICAgIGF1dG8gb2xkVGFzayA9
IGFkb3B0TlMoc3RkOjpleGNoYW5nZSh0aGVUYXNrLCBuaWwpKTsKICAgICB9KS0+d2FpdEZvckNv
bXBsZXRpb24oKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRPYmpDL1VzZXJDb250ZW50VGVzdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0T2JqQy9Vc2VyQ29udGVudFRlc3QubW0KaW5kZXggOGUxNzdhZmJiZTU5Y2VmZTkwZjhk
MTA5MTQ3ODdlNjM3Yjk4MzllNi4uMmQwYjE3M2ZkYTU2ZDdiOGE4NTBiMzc4YzdiOGVjOTJjOGYx
ZTRjMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRPYmpDL1Vz
ZXJDb250ZW50VGVzdC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9i
akMvVXNlckNvbnRlbnRUZXN0Lm1tCkBAIC0zNSw2ICszNSw3IEBACiAjaW1wb3J0IDxKYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgogCiBzdGF0aWMgYm9vbCB0ZXN0RmluaXNoZWQgPSBmYWxzZTsKIHN0
YXRpYyBOU1N0cmluZyAqaHRtbFN0cmluZyA9IEAiPGJvZHkgc3R5bGU9J2JhY2tncm91bmQtY29s
b3I6IHJlZCc+IjsKQEAgLTQ3LDI1ICs0OCwyMSBAQCBzdGF0aWMgY29uc3QgY2hhciogdXNlclNj
cmlwdFRlc3RQcm9wZXJ0eSA9ICJ3aW5kb3cuX3VzZXJTY3JpcHRJbnN0YWxsZWQiOwogbmFtZXNw
YWNlIHsKICAgICBjbGFzcyBXZWJLaXQyVXNlckNvbnRlbnRUZXN0IDogcHVibGljIDo6dGVzdGlu
Zzo6VGVzdCB7CiAgICAgcHVibGljOgotICAgICAgICBXS1Byb2Nlc3NHcm91cCAqcHJvY2Vzc0dy
b3VwOwotICAgICAgICBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwICpicm93c2luZ0NvbnRleHRHcm91
cDsKKyAgICAgICAgUmV0YWluUHRyPFdLUHJvY2Vzc0dyb3VwPiBwcm9jZXNzR3JvdXA7CisgICAg
ICAgIFJldGFpblB0cjxXS0Jyb3dzaW5nQ29udGV4dEdyb3VwPiBicm93c2luZ0NvbnRleHRHcm91
cDsKIAotICAgICAgICBXZWJLaXQyVXNlckNvbnRlbnRUZXN0KCkKLSAgICAgICAgICAgIDogcHJv
Y2Vzc0dyb3VwKG5pbCkKLSAgICAgICAgICAgICwgYnJvd3NpbmdDb250ZXh0R3JvdXAobmlsKQot
ICAgICAgICB7Ci0gICAgICAgIH0KKyAgICAgICAgV2ViS2l0MlVzZXJDb250ZW50VGVzdCgpID0g
ZGVmYXVsdDsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHByb2Nlc3NHcm91cCA9IFtbV0tQcm9jZXNzR3JvdXAgYWxsb2NdIGlu
aXRdOwotICAgICAgICAgICAgYnJvd3NpbmdDb250ZXh0R3JvdXAgPSBbW1dLQnJvd3NpbmdDb250
ZXh0R3JvdXAgYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpAIlVzZXJDb250ZW50SWRlbnRpZmll
ciJdOworICAgICAgICAgICAgcHJvY2Vzc0dyb3VwID0gYWRvcHROUyhbW1dLUHJvY2Vzc0dyb3Vw
IGFsbG9jXSBpbml0XSk7CisgICAgICAgICAgICBicm93c2luZ0NvbnRleHRHcm91cCA9IGFkb3B0
TlMoW1tXS0Jyb3dzaW5nQ29udGV4dEdyb3VwIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6QCJV
c2VyQ29udGVudElkZW50aWZpZXIiXSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBUZWFyRG93bigpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFticm93c2luZ0Nv
bnRleHRHcm91cCByZWxlYXNlXTsKLSAgICAgICAgICAgIFtwcm9jZXNzR3JvdXAgcmVsZWFzZV07
CisgICAgICAgICAgICBicm93c2luZ0NvbnRleHRHcm91cCA9IG51bGxwdHI7CisgICAgICAgICAg
ICBwcm9jZXNzR3JvdXAgPSBudWxscHRyOwogICAgICAgICB9CiAgICAgfTsKIH0gLy8gbmFtZXNw
YWNlCkBAIC0xMjMsNyArMTIwLDcgQEAgVEVTVF9GKFdlYktpdDJVc2VyQ29udGVudFRlc3QsIEFk
ZFVzZXJTdHlsZVNoZWV0QmVmb3JlQ3JlYXRpbmdWaWV3KQogICAgIHRlc3RGaW5pc2hlZCA9IGZh
bHNlOwogICAgIFticm93c2luZ0NvbnRleHRHcm91cCBhZGRVc2VyU3R5bGVTaGVldDp1c2VyU3R5
bGVTaGVldCBiYXNlVVJMOm5pbCBpbmNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5nczpuaWwgZXhjbHVk
ZU1hdGNoUGF0dGVyblN0cmluZ3M6bmlsIG1haW5GcmFtZU9ubHk6WUVTXTsKICAgICAKLSAgICBX
S1ZpZXcgKndrVmlldyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAgYnJvd3NpbmdDb250ZXh0
R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXBdOworICAgIFdLVmlldyAqd2tWaWV3ID0gW1tXS1Zp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vz
c0dyb3VwOnByb2Nlc3NHcm91cC5nZXQoKSBicm93c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0Nv
bnRleHRHcm91cC5nZXQoKV07CiAgICAgV0tTdHJpbmdSZWYgYmFja2dyb3VuZENvbG9yUXVlcnkg
PSBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhiYWNrZ3JvdW5kQ29sb3JTY3JpcHQpOwog
ICAgIHdrVmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbVGVz
dEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25M
b2FkOl4oV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpzZW5kZXIpIHsKICAgICAgICAgcnVu
SmF2YVNjcmlwdEluTWFpbkZyYW1lKHdrVmlldy5wYWdlUmVmLCBiYWNrZ3JvdW5kQ29sb3JRdWVy
eSwgXihXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIFdL
RXJyb3JSZWYgZXJyb3IpIHsKQEAgLTE0Miw3ICsxMzksNyBAQCBURVNUX0YoV2ViS2l0MlVzZXJD
b250ZW50VGVzdCwgQWRkVXNlclN0eWxlU2hlZXRBZnRlckNyZWF0aW5nVmlldykKIHsKICAgICB0
ZXN0RmluaXNoZWQgPSBmYWxzZTsKICAgICAKLSAgICBXS1ZpZXcgKndrVmlldyA9IFtbV0tWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHByb2Nlc3NH
cm91cDpwcm9jZXNzR3JvdXAgYnJvd3NpbmdDb250ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0R3Jv
dXBdOworICAgIFdLVmlldyAqd2tWaWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nlc3NHcm91cC5nZXQo
KSBicm93c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91cC5nZXQoKV07CiAgICAg
V0tTdHJpbmdSZWYgYmFja2dyb3VuZENvbG9yUXVlcnkgPSBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZyhiYWNrZ3JvdW5kQ29sb3JTY3JpcHQpOwogICAgIHdrVmlldy5icm93c2luZ0NvbnRl
eHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxl
Z2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRD
b250cm9sbGVyICpzZW5kZXIpIHsKICAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHdr
Vmlldy5wYWdlUmVmLCBiYWNrZ3JvdW5kQ29sb3JRdWVyeSwgXihXS1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZVJlZiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIFdLRXJyb3JSZWYgZXJyb3IpIHsKQEAgLTE2
NCw3ICsxNjEsNyBAQCBURVNUX0YoV2ViS2l0MlVzZXJDb250ZW50VGVzdCwgUmVtb3ZlQWxsVXNl
clN0eWxlU2hlZXRzKQogICAgIHRlc3RGaW5pc2hlZCA9IGZhbHNlOwogICAgIFticm93c2luZ0Nv
bnRleHRHcm91cCBhZGRVc2VyU3R5bGVTaGVldDp1c2VyU3R5bGVTaGVldCBiYXNlVVJMOm5pbCBp
bmNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5nczpuaWwgZXhjbHVkZU1hdGNoUGF0dGVyblN0cmluZ3M6
bmlsIG1haW5GcmFtZU9ubHk6WUVTXTsKICAgICAKLSAgICBXS1ZpZXcgKndrVmlldyA9IFtbV0tW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHByb2Nl
c3NHcm91cDpwcm9jZXNzR3JvdXAgYnJvd3NpbmdDb250ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0
R3JvdXBdOworICAgIFdLVmlldyAqd2tWaWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nlc3NHcm91cC5n
ZXQoKSBicm93c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91cC5nZXQoKV07CiAg
ICAgV0tTdHJpbmdSZWYgYmFja2dyb3VuZENvbG9yUXVlcnkgPSBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZyhiYWNrZ3JvdW5kQ29sb3JTY3JpcHQpOwogICAgIHdrVmlldy5icm93c2luZ0Nv
bnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWRE
ZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRl
eHRDb250cm9sbGVyICpzZW5kZXIpIHsKICAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
KHdrVmlldy5wYWdlUmVmLCBiYWNrZ3JvdW5kQ29sb3JRdWVyeSwgXihXS1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZVJlZiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIFdLRXJyb3JSZWYgZXJyb3IpIHsKQEAg
LTE4Niw3ICsxODMsNyBAQCBURVNUX0YoV2ViS2l0MlVzZXJDb250ZW50VGVzdCwgQWRkVXNlclNj
cmlwdEJlZm9yZUNyZWF0aW5nVmlldykKICAgICB0ZXN0RmluaXNoZWQgPSBmYWxzZTsKICAgICBb
YnJvd3NpbmdDb250ZXh0R3JvdXAgYWRkVXNlclNjcmlwdDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAIiVzID0gdHJ1ZTsiLCB1c2VyU2NyaXB0VGVzdFByb3BlcnR5XSBiYXNlVVJMOm5pbCBp
bmNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5nczpuaWwgZXhjbHVkZU1hdGNoUGF0dGVyblN0cmluZ3M6
bmlsIGluamVjdGlvblRpbWU6a1dLSW5qZWN0QXREb2N1bWVudFN0YXJ0IG1haW5GcmFtZU9ubHk6
WUVTXTsKICAgICAKLSAgICBXS1ZpZXcgKndrVmlldyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3Jv
dXAgYnJvd3NpbmdDb250ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXBdOworICAgIFdLVmll
dyAqd2tWaWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nlc3NHcm91cC5nZXQoKSBicm93c2luZ0NvbnRl
eHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91cC5nZXQoKV07CiAgICAgV0tTdHJpbmdSZWYgdXNl
clNjcmlwdFRlc3RQcm9wZXJ0eVN0cmluZyA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KHVzZXJTY3JpcHRUZXN0UHJvcGVydHkpOwogICAgIHdrVmlldy5icm93c2luZ0NvbnRleHRDb250
cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZSBh
bGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRDb250cm9s
bGVyICpzZW5kZXIpIHsKICAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHdrVmlldy5w
YWdlUmVmLCB1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nLCBeKFdLU2VyaWFsaXplZFNjcmlw
dFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBlcnJvcikgewpAQCAt
MjA1LDcgKzIwMiw3IEBAIFRFU1RfRihXZWJLaXQyVXNlckNvbnRlbnRUZXN0LCBBZGRVc2VyU2Ny
aXB0QWZ0ZXJDcmVhdGluZ1ZpZXcpCiB7CiAgICAgdGVzdEZpbmlzaGVkID0gZmFsc2U7CiAgICAg
Ci0gICAgV0tWaWV3ICp3a1ZpZXcgPSBbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwIGJyb3dzaW5n
Q29udGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3VwXTsKKyAgICBXS1ZpZXcgKndrVmlldyA9
IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAuZ2V0KCkgYnJvd3NpbmdDb250ZXh0R3JvdXA6YnJv
d3NpbmdDb250ZXh0R3JvdXAuZ2V0KCldOwogICAgIFdLU3RyaW5nUmVmIHVzZXJTY3JpcHRUZXN0
UHJvcGVydHlTdHJpbmcgPSBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyh1c2VyU2NyaXB0
VGVzdFByb3BlcnR5KTsKICAgICB3a1ZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2Fk
RGVsZWdhdGUgPSBbW1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRX
aXRoQmxvY2tUb1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqc2VuZGVy
KSB7CiAgICAgICAgIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh3a1ZpZXcucGFnZVJlZiwgdXNl
clNjcmlwdFRlc3RQcm9wZXJ0eVN0cmluZywgXihXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBz
ZXJpYWxpemVkU2NyaXB0VmFsdWUsIFdLRXJyb3JSZWYgZXJyb3IpIHsKQEAgLTIyNyw3ICsyMjQs
NyBAQCBURVNUX0YoV2ViS2l0MlVzZXJDb250ZW50VGVzdCwgUmVtb3ZlQWxsVXNlclNjcmlwdHMp
CiAgICAgdGVzdEZpbmlzaGVkID0gZmFsc2U7CiAgICAgW2Jyb3dzaW5nQ29udGV4dEdyb3VwIGFk
ZFVzZXJTY3JpcHQ6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlcyA9IHRydWU7IiwgdXNl
clNjcmlwdFRlc3RQcm9wZXJ0eV0gYmFzZVVSTDpuaWwgaW5jbHVkZU1hdGNoUGF0dGVyblN0cmlu
Z3M6bmlsIGV4Y2x1ZGVNYXRjaFBhdHRlcm5TdHJpbmdzOm5pbCBpbmplY3Rpb25UaW1lOmtXS0lu
amVjdEF0RG9jdW1lbnRTdGFydCBtYWluRnJhbWVPbmx5OllFU107CiAgICAgCi0gICAgV0tWaWV3
ICp3a1ZpZXcgPSBbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwIGJyb3dzaW5nQ29udGV4dEdyb3Vw
OmJyb3dzaW5nQ29udGV4dEdyb3VwXTsKKyAgICBXS1ZpZXcgKndrVmlldyA9IFtbV0tWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91
cDpwcm9jZXNzR3JvdXAuZ2V0KCkgYnJvd3NpbmdDb250ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0
R3JvdXAuZ2V0KCldOwogICAgIFdLU3RyaW5nUmVmIHVzZXJTY3JpcHRUZXN0UHJvcGVydHlTdHJp
bmcgPSBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyh1c2VyU2NyaXB0VGVzdFByb3BlcnR5
KTsKICAgICB3a1ZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBb
W1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tUb1J1
bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7CiAgICAgICAg
IHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh3a1ZpZXcucGFnZVJlZiwgdXNlclNjcmlwdFRlc3RQ
cm9wZXJ0eVN0cmluZywgXihXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxpemVkU2Ny
aXB0VmFsdWUsIFdLRXJyb3JSZWYgZXJyb3IpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwVGVzdC5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9XS0Jyb3dzaW5nQ29udGV4dEdyb3Vw
VGVzdC5tbQppbmRleCAyNzc1ODkzYTU1MGRkMzk4NTQ3YWNjNjA2NWNmNGMwNDVjZmE4Nzc0Li42
NWZhOWZmYWI5MDA5YmZiNGMxZTgwZTA2YWZiOTQwMjE3ODJhMzg1IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvV0tCcm93c2luZ0NvbnRleHRHcm91cFRl
c3QubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRPYmpDL1dLQnJvd3Np
bmdDb250ZXh0R3JvdXBUZXN0Lm1tCkBAIC0yNywzMyArMjcsMzAgQEAKICNpbXBvcnQgIlRlc3Qu
aCIKIAogI2ltcG9ydCA8V2ViS2l0L1dLQnJvd3NpbmdDb250ZXh0R3JvdXAuaD4KKyNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKIAogVEVTVChXS0Jyb3dzaW5n
Q29udGV4dEdyb3VwVGVzdCwgR2V0U2V0SmF2YVNjcmlwdEVuYWJsZWQpCiB7Ci0gICAgV0tCcm93
c2luZ0NvbnRleHRHcm91cCAqYnJvd3NpbmdDb250ZXh0R3JvdXAgPSBbW1dLQnJvd3NpbmdDb250
ZXh0R3JvdXAgYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpAIlRlc3RJZGVudGlmaWVyIl07Cisg
ICAgYXV0byBicm93c2luZ0NvbnRleHRHcm91cCA9IGFkb3B0TlMoW1tXS0Jyb3dzaW5nQ29udGV4
dEdyb3VwIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6QCJUZXN0SWRlbnRpZmllciJdKTsKICAg
ICAKLSAgICBBU1NFUlRfVFJVRShicm93c2luZ0NvbnRleHRHcm91cC5hbGxvd3NKYXZhU2NyaXB0
KTsKKyAgICBBU1NFUlRfVFJVRShbYnJvd3NpbmdDb250ZXh0R3JvdXAgYWxsb3dzSmF2YVNjcmlw
dF0pOwogCi0gICAgYnJvd3NpbmdDb250ZXh0R3JvdXAuYWxsb3dzSmF2YVNjcmlwdCA9IE5POwor
ICAgIFticm93c2luZ0NvbnRleHRHcm91cCBzZXRBbGxvd3NKYXZhU2NyaXB0Ok5PXTsKIAotICAg
IEFTU0VSVF9GQUxTRShicm93c2luZ0NvbnRleHRHcm91cC5hbGxvd3NKYXZhU2NyaXB0KTsKLQot
ICAgIFticm93c2luZ0NvbnRleHRHcm91cCByZWxlYXNlXTsKKyAgICBBU1NFUlRfRkFMU0UoW2Jy
b3dzaW5nQ29udGV4dEdyb3VwIGFsbG93c0phdmFTY3JpcHRdKTsKIH0KIAogVEVTVChXS0Jyb3dz
aW5nQ29udGV4dEdyb3VwVGVzdCwgR2V0U2V0UGx1Z2luc0VuYWJsZWQpCiB7Ci0gICAgV0tCcm93
c2luZ0NvbnRleHRHcm91cCAqYnJvd3NpbmdDb250ZXh0R3JvdXAgPSBbW1dLQnJvd3NpbmdDb250
ZXh0R3JvdXAgYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpAIlRlc3RJZGVudGlmaWVyIl07Cisg
ICAgYXV0byBicm93c2luZ0NvbnRleHRHcm91cCA9IGFkb3B0TlMoW1tXS0Jyb3dzaW5nQ29udGV4
dEdyb3VwIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6QCJUZXN0SWRlbnRpZmllciJdKTsKICAg
ICAKLSAgICBBU1NFUlRfVFJVRShicm93c2luZ0NvbnRleHRHcm91cC5hbGxvd3NQbHVnSW5zKTsK
LQotICAgIGJyb3dzaW5nQ29udGV4dEdyb3VwLmFsbG93c1BsdWdJbnMgPSBOTzsKKyAgICBBU1NF
UlRfVFJVRShbYnJvd3NpbmdDb250ZXh0R3JvdXAgYWxsb3dzUGx1Z0luc10pOwogCi0gICAgQVNT
RVJUX0ZBTFNFKGJyb3dzaW5nQ29udGV4dEdyb3VwLmFsbG93c1BsdWdJbnMpOworICAgIFticm93
c2luZ0NvbnRleHRHcm91cCBzZXRBbGxvd3NQbHVnSW5zOk5PXTsKIAotICAgIFticm93c2luZ0Nv
bnRleHRHcm91cCByZWxlYXNlXTsKKyAgICBBU1NFUlRfRkFMU0UoW2Jyb3dzaW5nQ29udGV4dEdy
b3VwIGFsbG93c1BsdWdJbnNdKTsKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9XS0Jyb3dzaW5nQ29u
dGV4dExvYWREZWxlZ2F0ZVRlc3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dE9iakMvV0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGVUZXN0Lm1tCmluZGV4IDQyODExNTVm
YjgxNTM0ZThiZGIzYTY3YTEyODEyZWM5MTY1N2RlY2YuLmVmMmRlMjUwMTU3YTUxZGFkYWU1ZDFk
OGFlMTUwNzhiNzY1MWQ3OTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0T2JqQy9XS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZVRlc3QubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRPYmpDL1dLQnJvd3NpbmdDb250ZXh0TG9hZERl
bGVnYXRlVGVzdC5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vz
c0dyb3VwLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KICNpbXBvcnQgPFdlYktp
dC9XS1ZpZXcuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogI2ltcG9ydCAiUGxhdGZv
cm1VdGlsaXRpZXMuaCIKIApAQCAtNDEsMjkgKzQyLDI0IEBAIG5hbWVzcGFjZSB7CiAKIGNsYXNz
IFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRl
c3QgeyAKIHB1YmxpYzoKLSAgICBXS1Byb2Nlc3NHcm91cCAqcHJvY2Vzc0dyb3VwOwotICAgIFdL
QnJvd3NpbmdDb250ZXh0R3JvdXAgKmJyb3dzaW5nQ29udGV4dEdyb3VwOwotICAgIFdLVmlldyAq
dmlldzsKLQotICAgIFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlVGVzdCgpCi0gICAgICAg
IDogcHJvY2Vzc0dyb3VwKG5pbCkKLSAgICAgICAgLCBicm93c2luZ0NvbnRleHRHcm91cChuaWwp
Ci0gICAgICAgICwgdmlldyhuaWwpCi0gICAgewotICAgIH0KKyAgICBSZXRhaW5QdHI8V0tQcm9j
ZXNzR3JvdXA+IHByb2Nlc3NHcm91cDsKKyAgICBSZXRhaW5QdHI8V0tCcm93c2luZ0NvbnRleHRH
cm91cD4gYnJvd3NpbmdDb250ZXh0R3JvdXA7CisgICAgUmV0YWluUHRyPFdLVmlldz4gdmlldzsK
KworICAgIFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlVGVzdCgpID0gZGVmYXVsdDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCiAgICAgewotICAgICAgICBwcm9jZXNzR3JvdXAgPSBb
W1dLUHJvY2Vzc0dyb3VwIGFsbG9jXSBpbml0XTsKLSAgICAgICAgYnJvd3NpbmdDb250ZXh0R3Jv
dXAgPSBbW1dLQnJvd3NpbmdDb250ZXh0R3JvdXAgYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpA
IlRlc3RJZGVudGlmaWVyIl07Ci0gICAgICAgIHZpZXcgPSBbW1dLVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dy
b3VwIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3VwXTsKKyAgICAgICAg
cHJvY2Vzc0dyb3VwID0gYWRvcHROUyhbW1dLUHJvY2Vzc0dyb3VwIGFsbG9jXSBpbml0XSk7Cisg
ICAgICAgIGJyb3dzaW5nQ29udGV4dEdyb3VwID0gYWRvcHROUyhbW1dLQnJvd3NpbmdDb250ZXh0
R3JvdXAgYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpAIlRlc3RJZGVudGlmaWVyIl0pOworICAg
ICAgICB2aWV3ID0gYWRvcHROUyhbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgpIGJyb3dz
aW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3VwLmdldCgpXSk7CiAgICAgfQogCiAg
ICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkKICAgICB7Ci0gICAgICAgIFt2aWV3IHJlbGVhc2Vd
OwotICAgICAgICBbYnJvd3NpbmdDb250ZXh0R3JvdXAgcmVsZWFzZV07Ci0gICAgICAgIFtwcm9j
ZXNzR3JvdXAgcmVsZWFzZV07CisgICAgICAgIHZpZXcgPSBudWxscHRyOworICAgICAgICBicm93
c2luZ0NvbnRleHRHcm91cCA9IG51bGxwdHI7CisgICAgICAgIHByb2Nlc3NHcm91cCA9IG51bGxw
dHI7CiAgICAgfQogfTsKIApAQCAtMTA3LDE5ICsxMDMsMTggQEAgVEVTVF9GKFdLQnJvd3NpbmdD
b250ZXh0TG9hZERlbGVnYXRlVGVzdCwgU2ltcGxlTG9hZCkKICAgICBib29sIHNpbXBsZUxvYWRE
b25lID0gZmFsc2U7CiAKICAgICAvLyBBZGQgdGhlIGxvYWQgZGVsZWdhdGUuCi0gICAgU2ltcGxl
TG9hZERlbGVnYXRlICpsb2FkRGVsZWdhdGUgPSBbW1NpbXBsZUxvYWREZWxlZ2F0ZSBhbGxvY10g
aW5pdFdpdGhGbGFnOiZzaW1wbGVMb2FkRG9uZV07Ci0gICAgdmlldy5icm93c2luZ0NvbnRleHRD
b250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IGxvYWREZWxlZ2F0ZTsKKyAgICBhdXRvIGxvYWREZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tTaW1wbGVMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRmxhZzom
c2ltcGxlTG9hZERvbmVdKTsKKyAgICB2aWV3LmdldCgpLmJyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXIubG9hZERlbGVnYXRlID0gbG9hZERlbGVnYXRlLmdldCgpOwogCiAgICAgLy8gTG9hZCB0aGUg
ZmlsZS4KICAgICBOU1VSTCAqbnNVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJl
c291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVz
dFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKLSAgICBbdmlldy5icm93c2luZ0NvbnRleHRDb250cm9s
bGVyIGxvYWRGaWxlVVJMOm5zVVJMIHJlc3RyaWN0VG9GaWxlc1dpdGhpbjpuaWxdOworICAgIFt2
aWV3LmdldCgpLmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgbG9hZEZpbGVVUkw6bnNVUkwgcmVz
dHJpY3RUb0ZpbGVzV2l0aGluOm5pbF07CiAKICAgICAvLyBXYWl0IGZvciB0aGUgbG9hZCB0byBm
aW5pc2guCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZzaW1wbGVMb2FkRG9uZSk7CiAK
ICAgICAvLyBUZWFyIGRvd24gdGhlIGRlbGVnYXRlLgotICAgIHZpZXcuYnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBuaWw7Ci0gICAgW2xvYWREZWxlZ2F0ZSByZWxlYXNl
XTsKKyAgICB2aWV3LmdldCgpLmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRl
ID0gbmlsOwogfQogCiBURVNUX0YoV0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGVUZXN0LCBT
aW1wbGVMb2FkT2ZIVE1MU3RyaW5nKQpAQCAtMTI3LDE4ICsxMjIsMTcgQEAgVEVTVF9GKFdLQnJv
d3NpbmdDb250ZXh0TG9hZERlbGVnYXRlVGVzdCwgU2ltcGxlTG9hZE9mSFRNTFN0cmluZykKICAg
ICBib29sIHNpbXBsZUxvYWREb25lID0gZmFsc2U7CiAKICAgICAvLyBBZGQgdGhlIGxvYWQgZGVs
ZWdhdGUuCi0gICAgU2ltcGxlTG9hZERlbGVnYXRlICpsb2FkRGVsZWdhdGUgPSBbW1NpbXBsZUxv
YWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhGbGFnOiZzaW1wbGVMb2FkRG9uZV07Ci0gICAgdmll
dy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IGxvYWREZWxlZ2F0ZTsK
KyAgICBhdXRvIGxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tTaW1wbGVMb2FkRGVsZWdhdGUgYWxs
b2NdIGluaXRXaXRoRmxhZzomc2ltcGxlTG9hZERvbmVdKTsKKyAgICB2aWV3LmdldCgpLmJyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gbG9hZERlbGVnYXRlLmdldCgpOwog
CiAgICAgLy8gTG9hZCB0aGUgSFRNTCBzdHJpbmcuCi0gICAgW3ZpZXcuYnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlciBsb2FkSFRNTFN0cmluZzpAIjxodG1sPjxib2R5PlNpbXBsZSBIVE1MIFN0cmlu
ZzwvYm9keT48L2h0bWw+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiYWJvdXQ6Ymxh
bmsiXV07CisgICAgW3ZpZXcuZ2V0KCkuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2FkSFRN
TFN0cmluZzpAIjxodG1sPjxib2R5PlNpbXBsZSBIVE1MIFN0cmluZzwvYm9keT48L2h0bWw+IiBi
YXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiYWJvdXQ6YmxhbmsiXV07CiAKICAgICAvLyBX
YWl0IGZvciB0aGUgbG9hZCB0byBmaW5pc2guCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZzaW1wbGVMb2FkRG9uZSk7CiAKICAgICAvLyBUZWFyIGRvd24gdGhlIGRlbGVnYXRlLgotICAg
IHZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBuaWw7Ci0gICAg
W2xvYWREZWxlZ2F0ZSByZWxlYXNlXTsKKyAgICB2aWV3LmdldCgpLmJyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIubG9hZERlbGVnYXRlID0gbmlsOwogfQogCiBURVNUX0YoV0tCcm93c2luZ0NvbnRl
eHRMb2FkRGVsZWdhdGVUZXN0LCBTaW1wbGVMb2FkT2ZIVE1MU3RyaW5nX05pbEJhc2VVUkwpCkBA
IC0xNDYsMTggKzE0MCwxNyBAQCBURVNUX0YoV0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGVU
ZXN0LCBTaW1wbGVMb2FkT2ZIVE1MU3RyaW5nX05pbEJhc2VVUkwpCiAgICAgYm9vbCBzaW1wbGVM
b2FkRG9uZSA9IGZhbHNlOwogCiAgICAgLy8gQWRkIHRoZSBsb2FkIGRlbGVnYXRlLgotICAgIFNp
bXBsZUxvYWREZWxlZ2F0ZSAqbG9hZERlbGVnYXRlID0gW1tTaW1wbGVMb2FkRGVsZWdhdGUgYWxs
b2NdIGluaXRXaXRoRmxhZzomc2ltcGxlTG9hZERvbmVdOwotICAgIHZpZXcuYnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBsb2FkRGVsZWdhdGU7CisgICAgYXV0byBsb2Fk
RGVsZWdhdGUgPSBhZG9wdE5TKFtbU2ltcGxlTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEZs
YWc6JnNpbXBsZUxvYWREb25lXSk7CisgICAgdmlldy5nZXQoKS5icm93c2luZ0NvbnRleHRDb250
cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IGxvYWREZWxlZ2F0ZS5nZXQoKTsKIAogICAgIC8vIExvYWQg
dGhlIEhUTUwgc3RyaW5nLCBwYXNzIG5pbCBhcyB0aGUgYmFzZVVSTC4KLSAgICBbdmlldy5icm93
c2luZ0NvbnRleHRDb250cm9sbGVyIGxvYWRIVE1MU3RyaW5nOkAiPGh0bWw+PGJvZHk+U2ltcGxl
IEhUTUwgU3RyaW5nPC9ib2R5PjwvaHRtbD4iIGJhc2VVUkw6bmlsXTsKKyAgICBbdmlldy5nZXQo
KS5icm93c2luZ0NvbnRleHRDb250cm9sbGVyIGxvYWRIVE1MU3RyaW5nOkAiPGh0bWw+PGJvZHk+
U2ltcGxlIEhUTUwgU3RyaW5nPC9ib2R5PjwvaHRtbD4iIGJhc2VVUkw6bmlsXTsKIAogICAgIC8v
IFdhaXQgZm9yIHRoZSBsb2FkIHRvIGZpbmlzaC4KICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJnNpbXBsZUxvYWREb25lKTsKIAogICAgIC8vIFRlYXIgZG93biB0aGUgZGVsZWdhdGUuCi0g
ICAgdmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IG5pbDsKLSAg
ICBbbG9hZERlbGVnYXRlIHJlbGVhc2VdOworICAgIHZpZXcuZ2V0KCkuYnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBuaWw7CiB9CiAKIFRFU1RfRihXS0Jyb3dzaW5nQ29u
dGV4dExvYWREZWxlZ2F0ZVRlc3QsIFNpbXBsZUxvYWRPZkhUTUxTdHJpbmdfTmlsSFRNTFN0cmlu
Z0FuZEJhc2VVUkwpCkBAIC0xNjUsMTggKzE1OCwxNyBAQCBURVNUX0YoV0tCcm93c2luZ0NvbnRl
eHRMb2FkRGVsZWdhdGVUZXN0LCBTaW1wbGVMb2FkT2ZIVE1MU3RyaW5nX05pbEhUTUxTdHJpbmdB
bgogICAgIGJvb2wgc2ltcGxlTG9hZERvbmUgPSBmYWxzZTsKIAogICAgIC8vIEFkZCB0aGUgbG9h
ZCBkZWxlZ2F0ZS4KLSAgICBTaW1wbGVMb2FkRGVsZWdhdGUgKmxvYWREZWxlZ2F0ZSA9IFtbU2lt
cGxlTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEZsYWc6JnNpbXBsZUxvYWREb25lXTsKLSAg
ICB2aWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gbG9hZERlbGVn
YXRlOworICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYWRvcHROUyhbW1NpbXBsZUxvYWREZWxlZ2F0
ZSBhbGxvY10gaW5pdFdpdGhGbGFnOiZzaW1wbGVMb2FkRG9uZV0pOworICAgIHZpZXcuZ2V0KCku
YnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBsb2FkRGVsZWdhdGUuZ2V0
KCk7CiAKICAgICAvLyBMb2FkIHRoZSBIVE1MIHN0cmluZyAoYXMgbmlsKS4KLSAgICBbdmlldy5i
cm93c2luZ0NvbnRleHRDb250cm9sbGVyIGxvYWRIVE1MU3RyaW5nOm5pbCBiYXNlVVJMOm5pbF07
CisgICAgW3ZpZXcuZ2V0KCkuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2FkSFRNTFN0cmlu
ZzpuaWwgYmFzZVVSTDpuaWxdOwogCiAgICAgLy8gV2FpdCBmb3IgdGhlIGxvYWQgdG8gZmluaXNo
LgogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmc2ltcGxlTG9hZERvbmUpOwogCiAgICAg
Ly8gVGVhciBkb3duIHRoZSBkZWxlZ2F0ZS4KLSAgICB2aWV3LmJyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXIubG9hZERlbGVnYXRlID0gbmlsOwotICAgIFtsb2FkRGVsZWdhdGUgcmVsZWFzZV07Cisg
ICAgdmlldy5nZXQoKS5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IG5p
bDsKIH0KIAogQGludGVyZmFjZSBTaW1wbGVMb2FkRmFpbERlbGVnYXRlIDogTlNPYmplY3QgPFdL
QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlPgpAQCAtMjE1LDE5ICsyMDcsMTggQEAgVEVTVF9G
KFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlVGVzdCwgU2ltcGxlTG9hZEZhaWwpCiAgICAg
Ym9vbCBzaW1wbGVMb2FkRmFpbERvbmUgPSBmYWxzZTsKIAogICAgIC8vIEFkZCB0aGUgbG9hZCBk
ZWxlZ2F0ZS4KLSAgICBTaW1wbGVMb2FkRmFpbERlbGVnYXRlICpsb2FkRGVsZWdhdGUgPSBbW1Np
bXBsZUxvYWRGYWlsRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRmxhZzomc2ltcGxlTG9hZEZhaWxE
b25lXTsKLSAgICB2aWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0g
bG9hZERlbGVnYXRlOworICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYWRvcHROUyhbW1NpbXBsZUxv
YWRGYWlsRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRmxhZzomc2ltcGxlTG9hZEZhaWxEb25lXSk7
CisgICAgdmlldy5nZXQoKS5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9
IGxvYWREZWxlZ2F0ZS5nZXQoKTsKIAogICAgIC8vIExvYWQgYSBub24tZXhpc3RlbnQgZmlsZS4K
ICAgICBOU1VSTCAqbnNVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpAImZpbGU6Ly8vZG9lcy1u
b3QtZXhpc3QuaHRtbCJdOwotICAgIFt2aWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgbG9h
ZEZpbGVVUkw6bnNVUkwgcmVzdHJpY3RUb0ZpbGVzV2l0aGluOm5pbF07CisgICAgW3ZpZXcuZ2V0
KCkuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2FkRmlsZVVSTDpuc1VSTCByZXN0cmljdFRv
RmlsZXNXaXRoaW46bmlsXTsKIAogICAgIC8vIFdhaXQgZm9yIHRoZSBsb2FkIHRvIGZhaWwuCiAg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZzaW1wbGVMb2FkRmFpbERvbmUpOwogCiAgICAg
Ly8gVGVhciBkb3duIHRoZSBkZWxlZ2F0ZS4KLSAgICB2aWV3LmJyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXIubG9hZERlbGVnYXRlID0gbmlsOwotICAgIFtsb2FkRGVsZWdhdGUgcmVsZWFzZV07Cisg
ICAgdmlldy5nZXQoKS5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IG5p
bDsKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvaW9zL1dLU2Nyb2xsVmlld0RlbGVnYXRlLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9pb3MvV0tTY3JvbGxWaWV3RGVsZWdhdGUubW0KaW5kZXggNTQ3NDNkYWUx
MzZkNzA3ZTlmYjY1MDU4Mzc0YmVhOGQ0Zjk3Yjk1Yi4uZDIyOGMyM2QxZGUzYWU0ZDAxNDY2ODU2
MWU4MTgyNjRmNjZlNmFlZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9p
b3MvV0tTY3JvbGxWaWV3RGVsZWdhdGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9pb3MvV0tTY3JvbGxWaWV3RGVsZWdhdGUubW0KQEAgLTU1LDEyICs1NSwxMiBAQCBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CiBURVNUKFdLV2ViVmlldywgV0tTY3JvbGxWaWV3RGVsZWdhdGVD
cmFzaCkKIHsKICAgICBXS1dlYlZpZXcgKndlYlZpZXcgPSBbW1dLV2ViVmlldyBhbGxvY10gaW5p
dF07Ci0gICAgVGVzdERlbGVnYXRlRm9yU2Nyb2xsVmlldyAqZGVsZWdhdGVGb3JTY3JvbGxWaWV3
ID0gW1tUZXN0RGVsZWdhdGVGb3JTY3JvbGxWaWV3IGFsbG9jXSBpbml0XTsKKyAgICBhdXRvIGRl
bGVnYXRlRm9yU2Nyb2xsVmlldyA9IGFkb3B0TlMoW1tUZXN0RGVsZWdhdGVGb3JTY3JvbGxWaWV3
IGFsbG9jXSBpbml0XSk7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIHdlYlZpZXcu
c2Nyb2xsVmlldy5kZWxlZ2F0ZSA9IGRlbGVnYXRlRm9yU2Nyb2xsVmlldzsKKyAgICAgICAgd2Vi
Vmlldy5zY3JvbGxWaWV3LmRlbGVnYXRlID0gZGVsZWdhdGVGb3JTY3JvbGxWaWV3LmdldCgpOwog
ICAgIH0KICAgICBkZWxlZ2F0ZUlzRGVhbGxvY2F0ZWQgPSBmYWxzZTsKLSAgICBbZGVsZWdhdGVG
b3JTY3JvbGxWaWV3IHJlbGVhc2VdOworICAgIGRlbGVnYXRlRm9yU2Nyb2xsVmlldyA9IG5pbDsK
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRlbGVnYXRlSXNEZWFsbG9jYXRlZCk7CiAK
ICAgICBFWFBFQ1RfTlVMTCh3ZWJWaWV3LnNjcm9sbFZpZXcuZGVsZWdhdGUpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ2FuZGlkYXRlVGVzdHMubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9DYW5kaWRhdGVUZXN0cy5tbQppbmRleCA3YzVlMDZh
MjQ2MTc5YmVmOGU4Mzk3YTdlMmMxZjUyMjA2ZWU2MjgxLi5hYmZjY2EyMTEwMWUwZjEwN2NmYWZj
ZTg3ZmU1NDllNzQxYTIwNWNlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9DYW5kaWRhdGVUZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9DYW5kaWRhdGVUZXN0cy5tbQpAQCAtODksNyArODksNyBAQCBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CiAKIFRFU1QoQ2FuZGlkYXRlVGVzdHMsIERJU0FCTEVEX0RvTm90TGVha1ZpZXdUaGF0
TG9hZHNFZGl0YWJsZUFyZWEpCiB7Ci0gICAgRG9Ob3RMZWFrV2ViVmlldyAqd2ViVmlldyA9IFtb
RG9Ob3RMZWFrV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEw
MCwgMTAwKV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW0RvTm90TGVha1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCldKTsKICAgICBE
b05vdExlYWtGcmFtZUxvYWREZWxlZ2F0ZSAqZGVsZWdhdGUgPSBbW0RvTm90TGVha0ZyYW1lTG9h
ZERlbGVnYXRlIGFsbG9jXSBpbml0XTsKICAgICBbd2ViVmlldyBzZXRGcmFtZUxvYWREZWxlZ2F0
ZTpkZWxlZ2F0ZV07CiAgICAgCkBAIC05OSwxMyArOTksMTMgQEAgVEVTVChDYW5kaWRhdGVUZXN0
cywgRElTQUJMRURfRG9Ob3RMZWFrVmlld1RoYXRMb2Fkc0VkaXRhYmxlQXJlYSkKICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEZpbmlzaExvYWQpOwogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZGlkQ2FsbFNob3dDYW5kaWRhdGVzKTsKIAotICAgIFt3ZWJWaWV3IHJlbGVh
c2VdOworICAgIHdlYlZpZXcgPSBuaWw7CiAgICAgRVhQRUNUX1RSVUUod2ViVmlld1dhc0RlYWxs
b2NhdGVkKTsKIH0KIAogVEVTVChDYW5kaWRhdGVUZXN0cywgRElTQUJMRURfUmVxdWVzdENhbmRp
ZGF0ZXNGb3JUZXh0SW5wdXQpCiB7Ci0gICAgV2ViVmlldyAqd2ViVmlldyA9IFtbV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKV07CisgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCAxMDAsIDEwMCldKTsKICAgICBbd2ViVmlldyBmb3JjZVJlcXVlc3RDYW5kaWRh
dGVzRm9yVGVzdGluZ107CiAgICAgQ2FuZGlkYXRlUmVxdWVzdEZyYW1lTG9hZERlbGVnYXRlICpk
ZWxlZ2F0ZSA9IFtbQ2FuZGlkYXRlUmVxdWVzdEZyYW1lTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0
XTsKICAgICBbd2ViVmlldyBzZXRGcmFtZUxvYWREZWxlZ2F0ZTpkZWxlZ2F0ZV07CkBAIC0xMjAs
NyArMTIwLDcgQEAgVEVTVChDYW5kaWRhdGVUZXN0cywgRElTQUJMRURfUmVxdWVzdENhbmRpZGF0
ZXNGb3JUZXh0SW5wdXQpCiAgICAgaWYgKFt3ZWJWaWV3IHNob3VsZFJlcXVlc3RDYW5kaWRhdGVz
XSkKICAgICAgICAgY2FuZGlkYXRlc1dlcmVSZXF1ZXN0ZWQgPSB0cnVlOwogCi0gICAgW3dlYlZp
ZXcgcmVsZWFzZV07CisgICAgd2ViVmlldyA9IG5pbDsKICAgICBFWFBFQ1RfVFJVRShjYW5kaWRh
dGVzV2VyZVJlcXVlc3RlZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvbWFjL0RPTU5vZGVGcm9tSlNPYmplY3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL21hYy9ET01Ob2RlRnJvbUpTT2JqZWN0Lm1tCmluZGV4IDJiMTE5Yjg3ZjQ5YTQ5YzMyZDcy
ZmVjZThkNzIzYmYzODUyZWE1NTkuLmFhNjk4OTQ0N2U4MDhmODIxYmMzZDEyODJjNjA2NmI2ZTU1
M2FhMWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0RPTU5vZGVG
cm9tSlNPYmplY3QubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRE9NTm9k
ZUZyb21KU09iamVjdC5tbQpAQCAtMzAsMTIgKzMwLDEzIEBACiAjaW1wb3J0IDxXZWJLaXQvV2Vi
RnJhbWVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViU2NyaXB0V29ybGQuaD4KICNpbXBv
cnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1QoV2ViS2l0TGVnYWN5LCBET01Ob2RlRnJvbUpTT2Jq
ZWN0KQogewotICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNaZXJvUmVjdCBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdOworICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1Jl
Y3QgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7CiAKICAgICBbd2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpAImRvY3VtZW50LmJvZHkubWFpbldvcmxk
UHJvcGVydHkgPSB0cnVlIl07CiAKQEAgLTU0LDggKzU1LDYgQEAgVEVTVChXZWJLaXRMZWdhY3ks
IERPTU5vZGVGcm9tSlNPYmplY3QpCiAKICAgICAvLyBWZXJpZnkgdGhhdCB0aGUgT2JqZWN0aXZl
LUMgd3JhcHBlciBpcyBmb3IgdGhlIG1haW4gd29ybGQgSlMgd3JhcHBlci4KICAgICBFWFBFQ1Rf
VFJVRShbW29iamNCb2R5IHZhbHVlRm9yS2V5OkAibWFpbldvcmxkUHJvcGVydHkiXSBib29sVmFs
dWVdKTsKLQotICAgIFt3ZWJWaWV3IHJlbGVhc2VdOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9TdWJy
ZXNvdXJjZUVycm9yQ3Jhc2gubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9TdWJy
ZXNvdXJjZUVycm9yQ3Jhc2gubW0KaW5kZXggNDdjMTE2ZDcwZGMwOTNkZmMyYTBhNTc0ZjBjNWUx
OTUzZDIzNzNhMy4uNzEzNGM3NmRhMGMwYjJlZjYwZTRmZGM2Y2ZmYTdlMmIwNzU1MmM3NiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvU3VicmVzb3VyY2VFcnJvckNy
YXNoLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1N1YnJlc291cmNlRXJy
b3JDcmFzaC5tbQpAQCAtMjUsMTMgKzI1LDE1IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogCisj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAog
VEVTVChXZWJLaXRMZWdhY3ksIFN1YnJlc291cmNlRXJyb3JDcmFzaCkKIHsKLSAgICBXZWJWaWV3
ICp3ZWJWaWV3ID0gW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgZnJh
bWVOYW1lOkAiIiBncm91cE5hbWU6QCIiXTsKLSAgICBbd2ViVmlldy5tYWluRnJhbWUgbG9hZEhU
TUxTdHJpbmc6QCI8bGluayByZWw9c3R5bGVzaGVldCBocmVmPSd4LWVycm9yOmVycm9yJz4iIGJh
c2VVUkw6bmlsXTsKLSAgICBbd2ViVmlldyByZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGZyYW1lTmFt
ZTpAIiIgZ3JvdXBOYW1lOkAiIl0pOworICAgIFtbd2ViVmlldyBtYWluRnJhbWVdIGxvYWRIVE1M
U3RyaW5nOkAiPGxpbmsgcmVsPXN0eWxlc2hlZXQgaHJlZj0neC1lcnJvcjplcnJvcic+IiBiYXNl
VVJMOm5pbF07CisgICAgd2ViVmlldyA9IG5pbDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvVHlwaW5n
U3R5bGVDcmFzaC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1R5cGluZ1N0eWxl
Q3Jhc2gubW0KaW5kZXggNDkyODI4OWZlZTg5ZjYwZTViOGI4MWJiMmRmZGFmMzJmNjZhNmVlNi4u
M2UwZjU1ZjliZDFkMTNlZWZmZDg4MmRiYmIwNzM2OWYwODZlY2Q0NiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvVHlwaW5nU3R5bGVDcmFzaC5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9UeXBpbmdTdHlsZUNyYXNoLm1tCkBAIC0yNSwxMyAr
MjUsMTUgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAKKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KKwogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUKFdlYktpdExlZ2FjeSwgVHlw
aW5nU3R5bGVDcmFzaCkKIHsKLSAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW1tXZWJWaWV3IGFsbG9j
XSBpbml0XTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5p
dF0pOwogICAgICh2b2lkKVt3ZWJWaWV3IHR5cGluZ1N0eWxlXTsKLSAgICBbd2ViVmlldyByZWxl
YXNlXTsKKyAgICB3ZWJWaWV3ID0gbmlsOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XZWJTY3JpcHRP
YmplY3REZXNjcmlwdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlNj
cmlwdE9iamVjdERlc2NyaXB0aW9uLm1tCmluZGV4IDI2ZDc3NDE5ZjQ1OTJjMzEwMDhjMDI0ZWQx
N2E4NTllNGNlNWVhMTEuLjVhYTgxMzhiMGFjNjY2Zjc4ZTgzYzA5MGZkMTI3MTM5N2IxOGMyNTcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlNjcmlwdE9iamVj
dERlc2NyaXB0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlNj
cmlwdE9iamVjdERlc2NyaXB0aW9uLm1tCkBAIC02Miw3ICs2Miw3IEBAIFRFU1QoV2ViS2l0TGVn
YWN5LCBXZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbikKIHsKICAgICBSZXRhaW5QdHI8V2ViVmll
dz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOwogICAg
IFJldGFpblB0cjxXZWJTY3JpcHREZXNjcmlwdGlvblRlc3Q+IHRlc3RDb250cm9sbGVyID0gYWRv
cHROUyhbV2ViU2NyaXB0RGVzY3JpcHRpb25UZXN0IG5ld10pOwotICAgIE5TT2JqZWN0ICpvYmpl
Y3QgPSBbW05TT2JqZWN0IGFsbG9jXSBpbml0XTsKKyAgICBhdXRvIG9iamVjdCA9IGFkb3B0TlMo
W1tOU09iamVjdCBhbGxvY10gaW5pdF0pOwogCiAgICAgd2ViVmlldy5nZXQoKS5mcmFtZUxvYWRE
ZWxlZ2F0ZSA9IHRlc3RDb250cm9sbGVyLmdldCgpOwogICAgIFtbd2ViVmlldy5nZXQoKSBtYWlu
RnJhbWVdIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRs
ZSBtYWluQnVuZGxlXQpAQCAtNzIsMTQgKzcyLDEzIEBAIFRFU1QoV2ViS2l0TGVnYWN5LCBXZWJT
Y3JpcHRPYmplY3REZXNjcmlwdGlvbikKICAgICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7CiAgICAg
ZmFpbGVkT2JqQ0Rlc2NyaXB0aW9uID0gZmFsc2U7CiAKLSAgICBzdGQ6OnRocmVhZCB0aHJlYWQx
KG5zT2JqZWN0RGVzY3JpcHRpb25UZXN0LCBvYmplY3QpOworICAgIHN0ZDo6dGhyZWFkIHRocmVh
ZDEobnNPYmplY3REZXNjcmlwdGlvblRlc3QsIG9iamVjdC5nZXQoKSk7CiAKLSAgICBDRkJvb2xl
YW5SZWYgcmVzdWx0ID0gKENGQm9vbGVhblJlZikoW1t3ZWJWaWV3LmdldCgpIHdpbmRvd1Njcmlw
dE9iamVjdF0gY2FsbFdlYlNjcmlwdE1ldGhvZDpAImZvbyIgd2l0aEFyZ3VtZW50czpAWyBvYmpl
Y3QgXV0pOworICAgIENGQm9vbGVhblJlZiByZXN1bHQgPSAoQ0ZCb29sZWFuUmVmKShbW3dlYlZp
ZXcuZ2V0KCkgd2luZG93U2NyaXB0T2JqZWN0XSBjYWxsV2ViU2NyaXB0TWV0aG9kOkAiZm9vIiB3
aXRoQXJndW1lbnRzOkBbIG9iamVjdC5nZXQoKSBdXSk7CiAgICAgRVhQRUNUX0VRKENGQm9vbGVh
bkdldFZhbHVlKHJlc3VsdCksIHRydWUpOwogCiAgICAgdGhyZWFkMS5qb2luKCk7CiAgICAgRVhQ
RUNUX0VRKGZhaWxlZE9iakNEZXNjcmlwdGlvbiwgZmFsc2UpOwotICAgIFtvYmplY3QgcmVsZWFz
ZV07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlZpZXdDYW5QYXN0ZVVSTC5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlZpZXdDYW5QYXN0ZVVSTC5tbQppbmRleCA0YjI5ZTc5
ZGI3ZDg3NjNlMGJhZDFlNmIzYmEyMjlhZWY3MWIzYmUyLi5jMTdhNjI4NTcxZDI4OTE1ZmUyYjll
ZjUxMTg3MjA2MzViMGI4M2EzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9XZWJWaWV3Q2FuUGFzdGVVUkwubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9tYWMvV2ViVmlld0NhblBhc3RlVVJMLm1tCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKIAogVEVTVChXZWJLaXRMZWdhY3ksIFdlYlZpZXdDYW5QYXN0ZVVSTCkK
IHsKLSAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TWmVyb1JlY3QgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXTsKKyAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGZy
YW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOwogICAgIFt3ZWJWaWV3IHNldEVkaXRhYmxlOllF
U107CiAKICAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gZGVjbGFyZVR5cGVz
OkBbTlNVUkxQYm9hcmRUeXBlXSBvd25lcjpuaWxdOwpAQCAtNDcsOCArNDcsNiBAQCBURVNUKFdl
YktpdExlZ2FjeSwgV2ViVmlld0NhblBhc3RlVVJMKQogICAgIE5TU3RyaW5nICp0ZXh0ID0gW2Fu
Y2hvciBocmVmXTsKICAgICAKICAgICBFWFBFQ1RfRVEoU3RyaW5nKCJodHRwOi8vd3d3LndlYmtp
dC5vcmcvIiksIFN0cmluZyh0ZXh0KSk7Ci0gICAgCi0gICAgW3dlYlZpZXcgcmVsZWFzZV07CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlZpZXdDYW5QYXN0ZVplcm9QbmcubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL21hYy9XZWJWaWV3Q2FuUGFzdGVaZXJvUG5nLm1tCmluZGV4IGZhMmUy
YWE5NjdhYmEyMzFhNzcwNzBkMmMxNzBhMThlYjFiZGY4YTIuLmZjYTFhZWQ1Y2UyZWUxOWQxNjJm
NzYzYmE3NmE4MDlhNTRlNmM4MjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvbWFjL1dlYlZpZXdDYW5QYXN0ZVplcm9QbmcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9tYWMvV2ViVmlld0NhblBhc3RlWmVyb1BuZy5tbQpAQCAtMzQsMTUgKzM0LDEzIEBA
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVChXZWJLaXRMZWdhY3ksIFdlYlZpZXdD
YW5QYXN0ZVplcm9QbmcpCiB7Ci0gICAgV2ViVmlldyAqd2ViVmlldyA9IFtbV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF07
CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNaZXJvUmVjdCBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKICAgICBbd2ViVmll
dyBzZXRFZGl0YWJsZTpZRVNdOwogICAgIAogICAgIC8vcGFzdGluZyBhIDB4MCBpbWFnZSBhcyBw
ZGYgYm9hcmQgdHlwZS4gUmVmZXJyaW5nIHRvIDxyZGFyOi8vcHJvYmxlbS8xMTE0MTkyMD4KICAg
ICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gZGVjbGFyZVR5cGVzOkBbTlNQREZQ
Ym9hcmRUeXBlXSBvd25lcjpuaWxdOwogICAgIFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZv
clJlc291cmNlOkAiMCIgd2l0aEV4dGVuc2lvbjpAInBuZyIgc3ViZGlyZWN0b3J5OkAiVGVzdFdl
YktpdEFQSS5yZXNvdXJjZXMiXSB3cml0ZVRvUGFzdGVib2FyZDpbTlNQYXN0ZWJvYXJkIGdlbmVy
YWxQYXN0ZWJvYXJkXV07CiAgICAgW3dlYlZpZXcgcGFzdGU6bmlsXTsKLSAgICAKLSAgICBbd2Vi
VmlldyByZWxlYXNlXTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2ViVmlld0RpZENyZWF0ZUphdmFT
Y3JpcHRDb250ZXh0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2ViVmlld0Rp
ZENyZWF0ZUphdmFTY3JpcHRDb250ZXh0Lm1tCmluZGV4IGEwZjM0ODEzNGFlNDU0ODFlNGI2ZWVm
OGViYmI5ZTg2YWVjMmY2MTkuLjQxMWFmZDdjNTUwNWZkN2YwY2ZmOGQ2MTNkMDVlOWUxOGM0MDZh
OTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlZpZXdEaWRD
cmVhdGVKYXZhU2NyaXB0Q29udGV4dC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9XZWJWaWV3RGlkQ3JlYXRlSmF2YVNjcmlwdENvbnRleHQubW0KQEAgLTgwLDEwICs4MCw5
IEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRGaW5pc2hMb2FkRm9yRnJh
bWU6KFdlYkZyYW1lICopZnJhbWUKIAogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmll
dyBkaWRDcmVhdGVKYXZhU2NyaXB0Q29udGV4dDooSlNDb250ZXh0ICopY29udGV4dCBmb3JGcmFt
ZTooV2ViRnJhbWUgKilmcmFtZQogewotICAgIE15Q29uc29sZSAqbXlDb25zb2xlID0gW1tNeUNv
bnNvbGUgYWxsb2NdIGluaXRdOwotICAgIGNvbnRleHRbQCJteUNvbnNvbGUiXSA9IG15Q29uc29s
ZTsKKyAgICBhdXRvIG15Q29uc29sZSA9IGFkb3B0TlMoW1tNeUNvbnNvbGUgYWxsb2NdIGluaXRd
KTsKKyAgICBjb250ZXh0W0AibXlDb25zb2xlIl0gPSBteUNvbnNvbGUuZ2V0KCk7CiAgICAgY29u
dGV4dC5leGNlcHRpb25IYW5kbGVyID0gbmlsOwotICAgIFtteUNvbnNvbGUgcmVsZWFzZV07CiAK
ICAgICBjb250ZXh0W0Aid2luZG93Q2FsbGJhY2siXSA9IF4oSlNWYWx1ZSAqdGhpc09iamVjdCl7
CiAgICAgICAgIGRpZENhbGxXaW5kb3dDYWxsYmFjayA9IHRydWU7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQcm90b2NvbC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdFByb3RvY29sLm1tCmluZGV4IGUzY2E0YWY3NDNjOTc5MzRjNzNjZTE4M2Zl
MzcyNjQ3NzZmZjI2ZjcuLmFmZDZkZGM5YjdlOTIyZmI2N2NhYjc5YjYwYzkwNzUwMDkxZGE4MzIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFByb3RvY29sLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFByb3RvY29sLm1tCkBAIC0yNywxOSAr
MjcsMjQgQEAKICNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgogCiAjaW1wb3J0IDxXZWJLaXQvV0tC
cm93c2luZ0NvbnRleHRDb250cm9sbGVyLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CiAjZW5k
aWYKIAotc3RhdGljIE5TU3RyaW5nICp0ZXN0U2NoZW1lOworc3RhdGljIFJldGFpblB0cjxOU1N0
cmluZz4mIHRlc3RTY2hlbWUoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5Q
dHI8TlNTdHJpbmc+PiBfdGVzdFNjaGVtZTsKKyAgICByZXR1cm4gX3Rlc3RTY2hlbWU7Cit9CiAK
IEBpbXBsZW1lbnRhdGlvbiBUZXN0UHJvdG9jb2wKIAogKyAoQk9PTCljYW5Jbml0V2l0aFJlcXVl
c3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKIHsKLSAgICByZXR1cm4gW3JlcXVlc3QuVVJMLnNj
aGVtZSBjYXNlSW5zZW5zaXRpdmVDb21wYXJlOnRlc3RTY2hlbWVdID09IE5TT3JkZXJlZFNhbWU7
CisgICAgcmV0dXJuIFtyZXF1ZXN0LlVSTC5zY2hlbWUgY2FzZUluc2Vuc2l0aXZlQ29tcGFyZTp0
ZXN0U2NoZW1lKCkuZ2V0KCldID09IE5TT3JkZXJlZFNhbWU7CiB9CiAKICsgKE5TVVJMUmVxdWVz
dCAqKWNhbm9uaWNhbFJlcXVlc3RGb3JSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CkBA
IC01NCwyMiArNTksMjEgQEAgKyAoQk9PTClyZXF1ZXN0SXNDYWNoZUVxdWl2YWxlbnQ6KE5TVVJM
UmVxdWVzdCAqKWEgdG9SZXF1ZXN0OihOU1VSTFJlcXVlc3QgKiliCiAKICsgKE5TU3RyaW5nICop
c2NoZW1lCiB7Ci0gICAgcmV0dXJuIHRlc3RTY2hlbWU7CisgICAgcmV0dXJuIHRlc3RTY2hlbWUo
KS5nZXQoKTsKIH0KIAogKyAodm9pZClyZWdpc3RlcldpdGhTY2hlbWU6KE5TU3RyaW5nICopc2No
ZW1lCiB7Ci0gICAgdGVzdFNjaGVtZSA9IFtzY2hlbWUgcmV0YWluXTsKKyAgICB0ZXN0U2NoZW1l
KCkgPSBzY2hlbWU7CiAgICAgW05TVVJMUHJvdG9jb2wgcmVnaXN0ZXJDbGFzczpbc2VsZiBjbGFz
c11dOwotICAgIFtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgcmVnaXN0ZXJTY2hlbWVGb3JD
dXN0b21Qcm90b2NvbDp0ZXN0U2NoZW1lXTsKKyAgICBbV0tCcm93c2luZ0NvbnRleHRDb250cm9s
bGVyIHJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2w6c2NoZW1lXTsKIH0KIAogKyAodm9p
ZCl1bnJlZ2lzdGVyCiB7Ci0gICAgW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciB1bnJlZ2lz
dGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2w6dGVzdFNjaGVtZV07CisgICAgW1dLQnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlciB1bnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2w6dGVzdFNj
aGVtZSgpLmdldCgpXTsKICAgICBbTlNVUkxQcm90b2NvbCB1bnJlZ2lzdGVyQ2xhc3M6W3NlbGYg
Y2xhc3NdXTsKLSAgICBbdGVzdFNjaGVtZSByZWxlYXNlXTsKLSAgICB0ZXN0U2NoZW1lID0gbmls
OworICAgIHRlc3RTY2hlbWUoKSA9IG5pbDsKIH0KIAogc3RhdGljIE5TRGljdGlvbmFyeTxOU1N0
cmluZyAqLCBOU1N0cmluZyAqPiAqYWRkaXRpb25hbFJlc3BvbnNlSGVhZGVyczsKQEAgLTg3LDcg
KzkxLDcgQEAgKyAodm9pZClzZXRBZGRpdGlvbmFsUmVzcG9uc2VIZWFkZXJzOihOU0RpY3Rpb25h
cnk8TlNTdHJpbmcgKiwgTlNTdHJpbmcgKj4gKilhZGQKIAogc3RhdGljIE5TVVJMICpjcmVhdGVS
ZWRpcmVjdFVSTChOU1N0cmluZyAqcXVlcnkpCiB7Ci0gICAgcmV0dXJuIFtOU1VSTCBVUkxXaXRo
U3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUA6Ly8lQCIsIHRlc3RTY2hlbWUs
IHF1ZXJ5XV07CisgICAgcmV0dXJuIFtOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiJUA6Ly8lQCIsIHRlc3RTY2hlbWUoKS5nZXQoKSwgcXVlcnldXTsKIH0K
IAogc3RhdGljIE5TU3RyaW5nICpjb250ZW50VHlwZUZvckZpbGVFeHRlbnNpb24oTlNTdHJpbmcg
KmZpbGVFeHRlbnNpb24pCkBAIC0xMDAsNyArMTA0LDcgQEAgc3RhdGljIE5TU3RyaW5nICpjb250
ZW50VHlwZUZvckZpbGVFeHRlbnNpb24oTlNTdHJpbmcgKmZpbGVFeHRlbnNpb24pCiAtICh2b2lk
KXN0YXJ0TG9hZGluZwogewogICAgIE5TVVJMICpyZXF1ZXN0VVJMID0gc2VsZi5yZXF1ZXN0LlVS
TDsKLSAgICBFWFBFQ1RfVFJVRShbcmVxdWVzdFVSTC5zY2hlbWUgaXNFcXVhbFRvU3RyaW5nOnRl
c3RTY2hlbWVdKTsKKyAgICBFWFBFQ1RfVFJVRShbcmVxdWVzdFVSTC5zY2hlbWUgaXNFcXVhbFRv
U3RyaW5nOnRlc3RTY2hlbWUoKS5nZXQoKV0pOwogCiAgICAgaWYgKFtyZXF1ZXN0VVJMLmhvc3Qg
aXNFcXVhbFRvU3RyaW5nOkAiMzA3LXJlZGlyZWN0Il0pIHsKICAgICAgICAgUmV0YWluUHRyPE5T
SFRUUFVSTFJlc3BvbnNlPiByZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBh
bGxvY10gaW5pdFdpdGhVUkw6cmVxdWVzdFVSTCBzdGF0dXNDb2RlOjMwNyBIVFRQVmVyc2lvbjpA
IkhUVFAvMS4xIiBoZWFkZXJGaWVsZHM6QHtAIkNvbnRlbnQtVHlwZSIgOiBAInRleHQvaHRtbCJ9
XSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9JbmplY3RlZEJ1bmRsZUNv
bnRyb2xsZXJNYWMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9JbmplY3RlZEJ1bmRsZUNv
bnRyb2xsZXJNYWMubW0KaW5kZXggNDAxMTQwNTBiMWQ2NGY0NTg4ZTZlY2M2MmI5OTNmZGFjNDE1
MTdiMi4uNDQzZWMyMDhkNTk1MDUxZjJhMjVkMjA0ZWFlNDU2MDU4MmVjZmJhNCAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyTWFjLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL0luamVjdGVkQnVuZGxlQ29udHJvbGxlck1h
Yy5tbQpAQCAtMjcsMTUgKzI3LDE2IEBACiAjaW1wb3J0ICJJbmplY3RlZEJ1bmRsZUNvbnRyb2xs
ZXIuaCIKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogdm9pZCBJbmplY3Rl
ZEJ1bmRsZUNvbnRyb2xsZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiB7CiAgICAgLy8gU2V0IHVw
IHVzZXIgZGVmYXVsdHMuCi0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqYXJndW1lbnREb21haW4g
PSBbW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gdm9sYXRpbGVEb21haW5G
b3JOYW1lOk5TQXJndW1lbnREb21haW5dIG11dGFibGVDb3B5XTsKKyAgICBhdXRvIGFyZ3VtZW50
RG9tYWluID0gYWRvcHROUyhbW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10g
dm9sYXRpbGVEb21haW5Gb3JOYW1lOk5TQXJndW1lbnREb21haW5dIG11dGFibGVDb3B5XSk7CiAg
ICAgaWYgKCFhcmd1bWVudERvbWFpbikKLSAgICAgICAgYXJndW1lbnREb21haW4gPSBbW05TTXV0
YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOworICAgICAgICBhcmd1bWVudERvbWFpbiA9IGFk
b3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAKICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIHNldCB0aGVzZSBpbiB0aGUgVUkgcHJvY2VzcyBhbmQgcHJvcGFnYXRlIHRo
ZW0gdG8gdGhlCiAgICAgLy8gV2ViIENvbnRlbnQgcHJvY2VzcyBhdCBwcm9jZXNzIGxhdW5jaCB0
aW1lLCBiZWNhdXNlIG1vc3QgdGVzdHMgZG8gbm90CkBAIC00Nyw5ICs0OCw3IEBAIHZvaWQgSW5q
ZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIH07CiAKICAg
ICBbYXJndW1lbnREb21haW4gYWRkRW50cmllc0Zyb21EaWN0aW9uYXJ5OmRpY3RdOwotICAgIFtb
TlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldFZvbGF0aWxlRG9tYWluOmFy
Z3VtZW50RG9tYWluIGZvck5hbWU6TlNBcmd1bWVudERvbWFpbl07Ci0KLSAgICBbYXJndW1lbnRE
b21haW4gcmVsZWFzZV07CisgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0
c10gc2V0Vm9sYXRpbGVEb21haW46YXJndW1lbnREb21haW4uZ2V0KCkgZm9yTmFtZTpOU0FyZ3Vt
ZW50RG9tYWluXTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCmluZGV4
IGQ2OTRjMWM5MmMzZGVhMzU5YTdiMTU4NmE2NWRjZWNlZjc0MjMyYmIuLjY1YjE4ZDM3OTRiZDIw
M2Q2ZThmNTgyZjY5ZmZmMTY5MDcwY2M0MTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTY0LDcgKzY0LDcgQEAgc3Rh
dGljIFRlc3RXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUgKmdsb2JhbFdlYnNpdGVEYXRhU3RvcmVE
ZWxlZ2F0ZUNsaWVudDsKIAogdm9pZCBpbml0aWFsaXplV2ViVmlld0NvbmZpZ3VyYXRpb24oY29u
c3QgY2hhciogbGlicmFyeVBhdGgsIFdLU3RyaW5nUmVmIGluamVjdGVkQnVuZGxlUGF0aCwgV0tD
b250ZXh0UmVmIGNvbnRleHQsIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29udGV4dENvbmZp
Z3VyYXRpb24pCiB7Ci0gICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uIHJlbGVhc2VdOwor
ICAgIGF1dG8gb2xkR2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKGdsb2JhbFdl
YlZpZXdDb25maWd1cmF0aW9uKTsKICAgICBnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbiA9IFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF07CiAKICAgICBnbG9iYWxXZWJWaWV3
Q29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbCA9IChfX2JyaWRnZSBXS1Byb2Nlc3NQb29sICopY29u
dGV4dDsKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBpbml0aWFsaXplV2ViVmlld0NvbmZpZ3VyYXRp
b24oY29uc3QgY2hhciogbGlicmFyeVBhdGgsIFdLU3RyaW5nUmVmIGluamVjdGUKICAgICBnbG9i
YWxXZWJWaWV3Q29uZmlndXJhdGlvbi5fYWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyA9IFlF
UzsKICAgICBnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi5fYXBwbGVQYXlFbmFibGVkID0gWUVT
OwogCi0gICAgW2dsb2JhbFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNsaWVudCByZWxlYXNlXTsK
KyAgICBhdXRvIG9sZEdsb2JhbFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNsaWVudCA9IGFkb3B0
TlMoZ2xvYmFsV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlQ2xpZW50KTsKICAgICBnbG9iYWxXZWJz
aXRlRGF0YVN0b3JlRGVsZWdhdGVDbGllbnQgPSBbW1Rlc3RXZWJzaXRlRGF0YVN0b3JlRGVsZWdh
dGUgYWxsb2NdIGluaXRdOwogICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRl
RGF0YVN0b3JlIHNldF9kZWxlZ2F0ZTpnbG9iYWxXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGVDbGll
bnRdOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9QbGF0Zm9ybVdl
YlZpZXdJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9QbGF0Zm9ybVdlYlZpZXdJ
T1MubW0KaW5kZXggZTgwNmQ2NzNhMGNhYWM5MDVkOGZjZTU5ZjQzOWRjYzEyOTk1ODE3Ny4uODYx
YzMxYjhlZWFmMjVlZDA0YzQ4ZWFlY2FkZmRiNzBjMjJlZDM0ZSAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3SU9TLm1tCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lPUy5tbQpAQCAtMzAxLDEwICszMDEs
OSBAQCB2b2lkIFBsYXRmb3JtV2ViVmlldzo6ZGlkSW5pdGlhbGl6ZUNsaWVudHMoKQogCiB2b2lk
IFBsYXRmb3JtV2ViVmlldzo6YWRkQ2hyb21lSW5wdXRGaWVsZCgpCiB7Ci0gICAgVUlUZXh0Rmll
bGQqIHRleHRGaWVsZCA9IFtbVUlUZXh0RmllbGQgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
TWFrZSgwLCAwLCAxMDAsIDIwKV07Ci0gICAgdGV4dEZpZWxkLnRhZyA9IDE7Ci0gICAgW21fd2lu
ZG93IGFkZFN1YnZpZXc6dGV4dEZpZWxkXTsKLSAgICBbdGV4dEZpZWxkIHJlbGVhc2VdOworICAg
IGF1dG8gdGV4dEZpZWxkID0gYWRvcHROUyhbW1VJVGV4dEZpZWxkIGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdE1ha2UoMCwgMCwgMTAwLCAyMCldKTsKKyAgICBbdGV4dEZpZWxkIHNldFRhZzox
XTsKKyAgICBbbV93aW5kb3cgYWRkU3Vidmlldzp0ZXh0RmllbGQuZ2V0KCldOwogfQogCiB2b2lk
IFBsYXRmb3JtV2ViVmlldzo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZC5tbSBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1t
CmluZGV4IGIzYWQyMzdjYWQ5NWIzNjEwNzNmOGM5MzZiNmI4ZTRjZDNkYjY5OTkuLjEzMTk5ZDI0
ZjU0OTViOGMyMjIwNmY4MzBlY2UyNzNmODNmZGVmOTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tCkBAIC03
Miw4ICs3Miw3IEBAIC0gKHZvaWQpX3VwZGF0ZVR5cGVDYWNoZUlmTmVlZGVkCiAKICsgKHZvaWQp
cmVsZWFzZUxvY2FsUGFzdGVib2FyZHMKIHsKLSAgICBbbG9jYWxQYXN0ZWJvYXJkcyByZWxlYXNl
XTsKLSAgICBsb2NhbFBhc3RlYm9hcmRzID0gbmlsOworICAgIGF1dG8gb2xkTG9jYWxQYXN0ZUJv
YXJkcyA9IGFkb3B0TlMoc3RkOjpleGNoYW5nZShsb2NhbFBhc3RlYm9hcmRzLCBuaWwpKTsKIH0K
IAogLy8gQ29udmVuaWVuY2UgbWV0aG9kIGZvciBKUyBzbyB0aGF0IGl0IGRvZXNuJ3QgaGF2ZSB0
byB0cnkgYW5kIGNyZWF0ZSBhIE5TQXJyYXkgb24gdGhlIG9iamMgc2lkZSBpbnN0ZWFkCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>