<?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>119025</bug_id>
          
          <creation_ts>2013-07-23 16:52:09 -0700</creation_ts>
          <short_desc>Rename WebColorChooserProxy</short_desc>
          <delta_ts>2013-07-24 18:07:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>61276</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Ruth Fong">ruthiecftg</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abecsi</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jonlee</cc>
    
    <cc>luiz</cc>
    
    <cc>menard</cc>
    
    <cc>mrobinson</cc>
    
    <cc>noam</cc>
    
    <cc>rakuco</cc>
    
    <cc>ruthiecftg</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>911170</commentid>
    <comment_count>0</comment_count>
    <who name="Ruth Fong">ruthiecftg</who>
    <bug_when>2013-07-23 16:52:09 -0700</bug_when>
    <thetext>WebColorChooserProxy, which represents the color picker UI for an &lt;input type=&apos;color&apos;&gt; element, suggests a one-to-one relationship with the WebColorChooser object. 

In bug 61276, the architecture will change so that only one  WebColorChooserProxy object exists for a given WebPageProxy, while there can be multiple WebColorChooser objects living in the WebProcess.

WebColorChooserProxy should be renamed to something like WebColorPickerUI that reflects its representation of the color picker UI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911171</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-07-23 16:53:07 -0700</bug_when>
    <thetext>&lt;rdar://problem/14528039&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911410</commentid>
    <comment_count>2</comment_count>
      <attachid>207410</attachid>
    <who name="Ruth Fong">ruthiecftg</who>
    <bug_when>2013-07-24 14:08:22 -0700</bug_when>
    <thetext>Created attachment 207410
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911413</commentid>
    <comment_count>3</comment_count>
      <attachid>207410</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-07-24 14:12:56 -0700</bug_when>
    <thetext>Comment on attachment 207410
Patch

Attachment 207410 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1200027</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911414</commentid>
    <comment_count>4</comment_count>
      <attachid>207410</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-07-24 14:15:04 -0700</bug_when>
    <thetext>Comment on attachment 207410
Patch

Attachment 207410 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1205034</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911415</commentid>
    <comment_count>5</comment_count>
      <attachid>207410</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-07-24 14:16:18 -0700</bug_when>
    <thetext>Comment on attachment 207410
Patch

Should change it in all the build systems.

`grep -r WebColorChooserProxy.cpp &lt;path/to/WebKit2&gt;` should find everywhere you need to replace it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911416</commentid>
    <comment_count>6</comment_count>
      <attachid>207410</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-07-24 14:17:11 -0700</bug_when>
    <thetext>Comment on attachment 207410
Patch

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

&gt; Source/WebKit2/UIProcess/PageClient.h:190
&gt; +    virtual PassRefPtr&lt;WebColorPickerUI&gt; createColorChooserProxy(WebPageProxy*, const WebCore::Color&amp; initialColor, const WebCore::IntRect&amp;) = 0;

This method is poorly named now, isn&apos;t it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911421</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-07-24 14:25:06 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 207410 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=207410&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/PageClient.h:190
&gt; &gt; +    virtual PassRefPtr&lt;WebColorPickerUI&gt; createColorChooserProxy(WebPageProxy*, const WebCore::Color&amp; initialColor, const WebCore::IntRect&amp;) = 0;
&gt; 
&gt; This method is poorly named now, isn&apos;t it?


And is there any advantage to calling the new object WebColorPickerUI instead of WebColorPicker, considering that the abstract concept of a WebColorPicker encapsulates more than just its UI?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911423</commentid>
    <comment_count>8</comment_count>
      <attachid>207410</attachid>
    <who name="Ruth Fong">ruthiecftg</who>
    <bug_when>2013-07-24 14:42:05 -0700</bug_when>
    <thetext>Comment on attachment 207410
Patch

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/PageClient.h:190
&gt;&gt;&gt; +    virtual PassRefPtr&lt;WebColorPickerUI&gt; createColorChooserProxy(WebPageProxy*, const WebCore::Color&amp; initialColor, const WebCore::IntRect&amp;) = 0;
&gt;&gt; 
&gt;&gt; This method is poorly named now, isn&apos;t it?
&gt; 
&gt; And is there any advantage to calling the new object WebColorPickerUI instead of WebColorPicker, considering that the abstract concept of a WebColorPicker encapsulates more than just its UI?

I think that the WebColorPicker(UI) object does represent UI representation of the color picker, whereas the WebColorChooser is the abstract representation for the &lt;input type=&apos;color&apos;&gt; object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911428</commentid>
    <comment_count>9</comment_count>
      <attachid>207412</attachid>
    <who name="Ruth Fong">ruthiecftg</who>
    <bug_when>2013-07-24 14:52:56 -0700</bug_when>
    <thetext>Created attachment 207412
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911439</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-24 14:56:06 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911452</commentid>
    <comment_count>11</comment_count>
      <attachid>207417</attachid>
    <who name="Ruth Fong">ruthiecftg</who>
    <bug_when>2013-07-24 16:07:03 -0700</bug_when>
    <thetext>Created attachment 207417
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911462</commentid>
    <comment_count>12</comment_count>
      <attachid>207417</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-07-24 16:55:55 -0700</bug_when>
    <thetext>Comment on attachment 207417
Patch

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

&gt; Source/WebKit2/ChangeLog:10
&gt; +        Rename WebColorChooserProxy to WebColorPicker since the name WebColorChoooserProxy
&gt; +        implies a one-to-one relationship with WebColorChooser, which will not be true when
&gt; +        the patch for bug 61276 lands.

Nitpick - It&apos;s not even true *now*

Yes, the WebProcess has 1 WebColorChooser, and the UIProcess has 1 WebColorChooserProxy...  but they aren&apos;t actually connected.

The Object/ObjectProxy naming scheme is for a pair of objects that represent the identical object/concept on both sides of the IPC connection, so tightly intertwined that they message each other directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911466</commentid>
    <comment_count>13</comment_count>
      <attachid>207422</attachid>
    <who name="Ruth Fong">ruthiecftg</who>
    <bug_when>2013-07-24 17:02:10 -0700</bug_when>
    <thetext>Created attachment 207422
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911469</commentid>
    <comment_count>14</comment_count>
      <attachid>207422</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-24 17:03:46 -0700</bug_when>
    <thetext>Comment on attachment 207422
Patch

Rejecting attachment 207422 from commit-queue.

ruthiecftg@gmail.com does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911477</commentid>
    <comment_count>15</comment_count>
      <attachid>207422</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-24 18:07:17 -0700</bug_when>
    <thetext>Comment on attachment 207422
Patch

Clearing flags on attachment: 207422

Committed r153108: &lt;http://trac.webkit.org/changeset/153108&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911478</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-24 18:07:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207410</attachid>
            <date>2013-07-24 14:08:22 -0700</date>
            <delta_ts>2013-07-24 14:52:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-119025-20130724140821.patch</filename>
            <type>text/plain</type>
            <size>29335</size>
            <attacher name="Ruth Fong">ruthiecftg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MzEwMCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDEzLTA3LTI0ICBSdXRoIEZv
bmcgIDxydXRoX2ZvbmdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBXZWJDb2xvckNob29z
ZXJQcm94eQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTQ1MjgwMzk+IGFuZCBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE5MDI1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIFdlYkNvbG9yQ2hvb3NlclByb3h5
IHRvIFdlYkNvbG9yUGlja2VyVUkgc2luY2UgdGhlIG5hbWUgV2ViQ29sb3JDaG9vb3NlclByb3h5
CisgICAgICAgIGltcGxpZXMgYSBvbmUtdG8tb25lIHJlbGF0aW9uc2hpcCB3aXRoIFdlYkNvbG9y
Q2hvb3Nlciwgd2hpY2ggd2lsbCBub3QgYmUgdHJ1ZSB3aGVuCisgICAgICAgIHRoZSBwYXRjaCBm
b3IgYnVnIDYxMjc2IGxhbmRzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNs
aWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5t
bToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yQ2hvb3NlclBy
b3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJDb2xvckNob29zZXJQcm94eS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkNvbG9yQ2hvb3NlclByb3h5Lmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L1dlYkNvbG9yUGlja2VyVUkuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29sb3JDaG9vc2VyUHJveHkuY3BwLgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvclBp
Y2tlclVJOjpXZWJDb2xvclBpY2tlclVJKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JQaWNr
ZXJVSTo6fldlYkNvbG9yUGlja2VyVUkpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvclBpY2tl
clVJOjplbmRDaG9vc2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JQaWNrZXJVSTo6c2V0
U2VsZWN0ZWRDb2xvcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyVUkuaDog
Q29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yQ2hvb3NlclByb3h5
LmguCisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yUGlja2VyVUk6OmNyZWF0ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNob3dDb2xvckNo
b29zZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldENvbG9yQ2hvb3NlckNv
bG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjplbmRDb2xvckNob29zZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEVuZENvbG9yQ2hvb3Nlcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZCk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOiBSZW5hbWVkIG1fY29sb3JDaG9v
c2VyIHRvIG1fY29sb3JQaWNrZXJVSS4KKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisKIDIwMTMtMDctMjQgIEplc3NpZSBCZXJsaW4gIDxqYmVybGluQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW1vdmUgV0tQYWdlR2V0UGx1Z0luSW5mb3JtYXRpb24gLSBpdCBp
cyBub3QgdXNlZCBhbnltb3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmgJKHJldmlzaW9uIDE1MzA5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNkZWZpbmUgUGFnZUNsaWVu
dF9oCiAKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKLSNpbmNsdWRlICJXZWJDb2xvckNo
b29zZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYkNvbG9yUGlja2VyVUkuaCIKICNpbmNsdWRlICJX
ZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eS5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg+CkBAIC02NSw3ICs2NSw3IEBAIGNsYXNz
IFdlYkNvbnRleHRNZW51UHJveHk7CiBjbGFzcyBXZWJFZGl0Q29tbWFuZFByb3h5OwogY2xhc3Mg
V2ViUG9wdXBNZW51UHJveHk7CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi1jbGFzcyBX
ZWJDb2xvckNob29zZXJQcm94eTsKK2NsYXNzIFdlYkNvbG9yUGlja2VyVUk7CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKE1BQykKQEAgLTE4Nyw3ICsxODcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHko
V2ViUGFnZVByb3h5KikgPSAwOwogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5PiBjcmVhdGVDb2xvckNob29z
ZXJQcm94eShXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9y
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
ZWJDb2xvclBpY2tlclVJPiBjcmVhdGVDb2xvckNob29zZXJQcm94eShXZWJQYWdlUHJveHkqLCBj
b25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JikgPSAwOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RmluZEluZGljYXRvcihQYXNz
UmVmUHRyPEZpbmRJbmRpY2F0b3I+LCBib29sIGZhZGVPdXQsIGJvb2wgYW5pbWF0ZSkgPSAwOwpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yQ2hvb3NlclByb3h5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JDaG9vc2VyUHJv
eHkuY3BwCShyZXZpc2lvbiAxNTMwOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29sb3JDaG9vc2VyUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYwICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJDb2xv
ckNob29zZXJQcm94eS5oIgotCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi1XZWJDb2xvckNob29zZXJQcm94eTo6V2ViQ29sb3JDaG9vc2VyUHJv
eHkoQ2xpZW50KiBjbGllbnQpCi0gICAgOiBtX2NsaWVudChjbGllbnQpCi17Ci19Ci0KLVdlYkNv
bG9yQ2hvb3NlclByb3h5Ojp+V2ViQ29sb3JDaG9vc2VyUHJveHkoKQotewotfQotCi12b2lkIFdl
YkNvbG9yQ2hvb3NlclByb3h5OjplbmRDaG9vc2VyKCkKLXsKLSAgICBpZiAoIW1fY2xpZW50KQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NsaWVudC0+ZGlkRW5kQ29sb3JDaG9vc2VyKCk7Ci19
Ci0KLXZvaWQgV2ViQ29sb3JDaG9vc2VyUHJveHk6OnNldFNlbGVjdGVkQ29sb3IoY29uc3QgV2Vi
Q29yZTo6Q29sb3ImIGNvbG9yKQotewotICAgIGlmICghbV9jbGllbnQpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIG1fY2xpZW50LT5kaWRDaG9vc2VDb2xvcihjb2xvcik7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JDaG9vc2VyUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JDaG9vc2VyUHJveHkuaAko
cmV2aXNpb24gMTUzMDk3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yQ2hv
b3NlclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBXZWJDb2xvckNob29zZXJQcm94eV9oCi0jZGVmaW5lIFdlYkNvbG9y
Q2hvb3NlclByb3h5X2gKLQotI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotCi0jaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLWNsYXNzIENvbG9yOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xh
c3MgV2ViUGFnZVByb3h5OwotCi1jbGFzcyBXZWJDb2xvckNob29zZXJQcm94eSA6IHB1YmxpYyBS
ZWZDb3VudGVkPFdlYkNvbG9yQ2hvb3NlclByb3h5PiB7Ci1wdWJsaWM6Ci0gICAgY2xhc3MgQ2xp
ZW50IHsKLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwgfkNsaWVudCgpIHsgfQotCi0g
ICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hvb3NlQ29sb3IoY29uc3QgV2Vi
Q29yZTo6Q29sb3ImKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRDb2xvckNob29z
ZXIoKSA9IDA7Ci0gICAgfTsKLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvbG9yQ2hvb3Nl
clByb3h5PiBjcmVhdGUoQ2xpZW50KiBjbGllbnQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFdlYkNvbG9yQ2hvb3NlclByb3h5KGNsaWVudCkpOwotICAgIH0KLQotICAgIHZp
cnR1YWwgfldlYkNvbG9yQ2hvb3NlclByb3h5KCk7Ci0KLSAgICB2b2lkIGludmFsaWRhdGUoKSB7
IG1fY2xpZW50ID0gMDsgfQotCi0gICAgdmlydHVhbCB2b2lkIGVuZENob29zZXIoKTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOwotCi1w
cm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgV2ViQ29sb3JDaG9vc2VyUHJveHkoQ2xpZW50Kik7Ci0K
LSAgICBDbGllbnQqIG1fY2xpZW50OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLQotI2VuZGlmIC8vIFdlYkNvbG9yQ2hv
b3NlclByb3h5X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tl
clVJLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQ
aWNrZXJVSS5jcHAJKHJldmlzaW9uIDE1MzA5NykJKGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbG9yQ2hvb3NlclByb3h5LmNwcDoxNTMwOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJVSS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYkNvbG9yQ2hvb3NlclByb3h5LmgiCisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNvbG9yQ2hvb3NlclByb3h5OjpXZWJDb2xvckNo
b29zZXJQcm94eShDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKK3sKK30K
KworV2ViQ29sb3JDaG9vc2VyUHJveHk6On5XZWJDb2xvckNob29zZXJQcm94eSgpCit7Cit9CisK
K3ZvaWQgV2ViQ29sb3JDaG9vc2VyUHJveHk6OmVuZENob29zZXIoKQoreworICAgIGlmICghbV9j
bGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2xpZW50LT5kaWRFbmRDb2xvckNob29z
ZXIoKTsKK30KKwordm9pZCBXZWJDb2xvckNob29zZXJQcm94eTo6c2V0U2VsZWN0ZWRDb2xvcihj
b25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9jbGllbnQtPmRpZENob29zZUNvbG9yKGNvbG9yKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfVFlQRV9DT0xP
UikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tlclVJLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJVSS5j
cHAJKHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBp
Y2tlclVJLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsMjIgKzI0LDIyIEBACiAgKi8KIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlclByb3h5LmgiCisjaW5j
bHVkZSAiV2ViQ29sb3JQaWNrZXJVSS5oIgogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1Ip
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJDb2xvckNob29zZXJQcm94eTo6V2ViQ29sb3JD
aG9vc2VyUHJveHkoQ2xpZW50KiBjbGllbnQpCitXZWJDb2xvclBpY2tlclVJOjpXZWJDb2xvclBp
Y2tlclVJKENsaWVudCogY2xpZW50KQogICAgIDogbV9jbGllbnQoY2xpZW50KQogewogfQogCi1X
ZWJDb2xvckNob29zZXJQcm94eTo6fldlYkNvbG9yQ2hvb3NlclByb3h5KCkKK1dlYkNvbG9yUGlj
a2VyVUk6On5XZWJDb2xvclBpY2tlclVJKCkKIHsKIH0KIAotdm9pZCBXZWJDb2xvckNob29zZXJQ
cm94eTo6ZW5kQ2hvb3NlcigpCit2b2lkIFdlYkNvbG9yUGlja2VyVUk6OmVuZENob29zZXIoKQog
ewogICAgIGlmICghbV9jbGllbnQpCiAgICAgICAgIHJldHVybjsKQEAgLTQ3LDcgKzQ3LDcgQEAg
dm9pZCBXZWJDb2xvckNob29zZXJQcm94eTo6ZW5kQ2hvb3NlcigpCiAgICAgbV9jbGllbnQtPmRp
ZEVuZENvbG9yQ2hvb3NlcigpOwogfQogCi12b2lkIFdlYkNvbG9yQ2hvb3NlclByb3h5OjpzZXRT
ZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKK3ZvaWQgV2ViQ29sb3JQ
aWNrZXJVSTo6c2V0U2VsZWN0ZWRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCiB7
CiAgICAgaWYgKCFtX2NsaWVudCkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyVUkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJVSS5oCShyZXZpc2lvbiAxNTMwOTcpCShmcm9t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvckNob29zZXJQcm94eS5oOjE1MzA5NykK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tlclVJLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBD
b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJD
b2xvckNob29zZXJQcm94eV9oCisjZGVmaW5lIFdlYkNvbG9yQ2hvb3NlclByb3h5X2gKKworI2lm
IEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENv
bG9yOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworCitj
bGFzcyBXZWJDb2xvckNob29zZXJQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvbG9yQ2hv
b3NlclByb3h5PiB7CitwdWJsaWM6CisgICAgY2xhc3MgQ2xpZW50IHsKKyAgICBwcm90ZWN0ZWQ6
CisgICAgICAgIHZpcnR1YWwgfkNsaWVudCgpIHsgfQorCisgICAgcHVibGljOgorICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2hvb3NlQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKSA9IDA7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRDb2xvckNob29zZXIoKSA9IDA7CisgICAgfTsKKwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5PiBjcmVhdGUoQ2xpZW50
KiBjbGllbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvbG9yQ2hv
b3NlclByb3h5KGNsaWVudCkpOworICAgIH0KKworICAgIHZpcnR1YWwgfldlYkNvbG9yQ2hvb3Nl
clByb3h5KCk7CisKKyAgICB2b2lkIGludmFsaWRhdGUoKSB7IG1fY2xpZW50ID0gMDsgfQorCisg
ICAgdmlydHVhbCB2b2lkIGVuZENob29zZXIoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0
ZWRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOworCitwcm90ZWN0ZWQ6CisgICAgZXhwbGlj
aXQgV2ViQ29sb3JDaG9vc2VyUHJveHkoQ2xpZW50Kik7CisKKyAgICBDbGllbnQqIG1fY2xpZW50
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRf
VFlQRV9DT0xPUikKKworI2VuZGlmIC8vIFdlYkNvbG9yQ2hvb3NlclByb3h5X2gKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tlclVJLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyVUkuaAkod29ya2luZyBjb3B5
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyVUkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMsOCArMjMsOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZm5kZWYgV2ViQ29sb3JDaG9vc2VyUHJveHlfaAotI2RlZmluZSBXZWJD
b2xvckNob29zZXJQcm94eV9oCisjaWZuZGVmIFdlYkNvbG9yUGlja2VyVUlfaAorI2RlZmluZSBX
ZWJDb2xvclBpY2tlclVJX2gKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogCkBAIC0z
OSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlUHJveHk7CiAK
LWNsYXNzIFdlYkNvbG9yQ2hvb3NlclByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViQ29sb3JD
aG9vc2VyUHJveHk+IHsKK2NsYXNzIFdlYkNvbG9yUGlja2VyVUkgOiBwdWJsaWMgUmVmQ291bnRl
ZDxXZWJDb2xvclBpY2tlclVJPiB7CiBwdWJsaWM6CiAgICAgY2xhc3MgQ2xpZW50IHsKICAgICBw
cm90ZWN0ZWQ6CkBAIC01MCwxMiArNTAsMTIgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkRW5kQ29sb3JDaG9vc2VyKCkgPSAwOwogICAgIH07CiAKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxXZWJDb2xvckNob29zZXJQcm94eT4gY3JlYXRlKENsaWVudCogY2xpZW50KQorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFdlYkNvbG9yUGlja2VyVUk+IGNyZWF0ZShDbGllbnQqIGNsaWVudCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29sb3JDaG9vc2VyUHJveHko
Y2xpZW50KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29sb3JQaWNrZXJVSShj
bGllbnQpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5XZWJDb2xvckNob29zZXJQcm94eSgpOwor
ICAgIHZpcnR1YWwgfldlYkNvbG9yUGlja2VyVUkoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgp
IHsgbV9jbGllbnQgPSAwOyB9CiAKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CiAKIHByb3Rl
Y3RlZDoKLSAgICBleHBsaWNpdCBXZWJDb2xvckNob29zZXJQcm94eShDbGllbnQqKTsKKyAgICBl
eHBsaWNpdCBXZWJDb2xvclBpY2tlclVJKENsaWVudCopOwogCiAgICAgQ2xpZW50KiBtX2NsaWVu
dDsKIH07CkBAIC03Miw0ICs3Miw0IEBAIHByb3RlY3RlZDoKIAogI2VuZGlmIC8vIEVOQUJMRShJ
TlBVVF9UWVBFX0NPTE9SKQogCi0jZW5kaWYgLy8gV2ViQ29sb3JDaG9vc2VyUHJveHlfaAorI2Vu
ZGlmIC8vIFdlYkNvbG9yUGlja2VyVUlfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDE1MzA5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NzYsOSArNTc2LDkg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKICAgICB9CiAKICNpZiBFTkFCTEUoSU5QVVRf
VFlQRV9DT0xPUikKLSAgICBpZiAobV9jb2xvckNob29zZXIpIHsKLSAgICAgICAgbV9jb2xvckNo
b29zZXItPmludmFsaWRhdGUoKTsKLSAgICAgICAgbV9jb2xvckNob29zZXIgPSBudWxscHRyOwor
ICAgIGlmIChtX2NvbG9yUGlja2VyVUkpIHsKKyAgICAgICAgbV9jb2xvclBpY2tlclVJLT5pbnZh
bGlkYXRlKCk7CisgICAgICAgIG1fY29sb3JQaWNrZXJVSSA9IG51bGxwdHI7CiAgICAgfQogCiAg
ICAgaWYgKG1fY29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lcikgewpAQCAtMjkyMCw3ICsyOTIwLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6Om5lZWRUb3VjaEV2ZW50cyhib29sIAogI2lmIEVOQUJMRShJ
TlBVVF9UWVBFX0NPTE9SKQogdm9pZCBXZWJQYWdlUHJveHk6OnNob3dDb2xvckNob29zZXIoY29u
c3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvciwgY29uc3QgSW50UmVjdCYgZWxlbWVudFJl
Y3QpCiB7Ci0gICAgQVNTRVJUKCFtX2NvbG9yQ2hvb3Nlcik7CisgICAgQVNTRVJUKCFtX2NvbG9y
UGlja2VyVUkpOwogCiAgICAgaWYgKG1fY29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lcikgewogICAg
ICAgICBtX2NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXItPmludmFsaWRhdGUoKTsKQEAgLTI5Mjgs
MjggKzI5MjgsMjggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNob3dDb2xvckNob29zZXIoY29ucwog
ICAgIH0KIAogICAgIG1fY29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lciA9IFdlYkNvbG9yUGlja2Vy
UmVzdWx0TGlzdGVuZXJQcm94eTo6Y3JlYXRlKHRoaXMpOwotICAgIG1fY29sb3JDaG9vc2VyID0g
V2ViQ29sb3JDaG9vc2VyUHJveHk6OmNyZWF0ZSh0aGlzKTsKKyAgICBtX2NvbG9yUGlja2VyVUkg
PSBXZWJDb2xvclBpY2tlclVJOjpjcmVhdGUodGhpcyk7CiAKICAgICBpZiAobV91aUNsaWVudC5z
aG93Q29sb3JQaWNrZXIodGhpcywgaW5pdGlhbENvbG9yLnNlcmlhbGl6ZWQoKSwgbV9jb2xvclBp
Y2tlclJlc3VsdExpc3RlbmVyLmdldCgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb2xv
ckNob29zZXIgPSBtX3BhZ2VDbGllbnQtPmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KHRoaXMsIGlu
aXRpYWxDb2xvciwgZWxlbWVudFJlY3QpOwotICAgIGlmICghbV9jb2xvckNob29zZXIpCisgICAg
bV9jb2xvclBpY2tlclVJID0gbV9wYWdlQ2xpZW50LT5jcmVhdGVDb2xvckNob29zZXJQcm94eSh0
aGlzLCBpbml0aWFsQ29sb3IsIGVsZW1lbnRSZWN0KTsKKyAgICBpZiAoIW1fY29sb3JQaWNrZXJV
SSkKICAgICAgICAgZGlkRW5kQ29sb3JDaG9vc2VyKCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRDb2xvckNob29zZXJDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCiB7Ci0g
ICAgQVNTRVJUKG1fY29sb3JDaG9vc2VyKTsKKyAgICBBU1NFUlQobV9jb2xvclBpY2tlclVJKTsK
IAotICAgIG1fY29sb3JDaG9vc2VyLT5zZXRTZWxlY3RlZENvbG9yKGNvbG9yKTsKKyAgICBtX2Nv
bG9yUGlja2VyVUktPnNldFNlbGVjdGVkQ29sb3IoY29sb3IpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZW5kQ29sb3JDaG9vc2VyKCkKIHsKLSAgICBBU1NFUlQobV9jb2xvckNob29zZXIpOwor
ICAgIEFTU0VSVChtX2NvbG9yUGlja2VyVUkpOwogCi0gICAgbV9jb2xvckNob29zZXItPmVuZENo
b29zZXIoKTsKKyAgICBtX2NvbG9yUGlja2VyVUktPmVuZENob29zZXIoKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZENob29zZUNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikK
QEAgLTI5NjUsOSArMjk2NSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRFbmRDb2xvckNob29z
ZXIoKQogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9j
b2xvckNob29zZXIpIHsKLSAgICAgICAgbV9jb2xvckNob29zZXItPmludmFsaWRhdGUoKTsKLSAg
ICAgICAgbV9jb2xvckNob29zZXIgPSBudWxscHRyOworICAgIGlmIChtX2NvbG9yUGlja2VyVUkp
IHsKKyAgICAgICAgbV9jb2xvclBpY2tlclVJLT5pbnZhbGlkYXRlKCk7CisgICAgICAgIG1fY29s
b3JQaWNrZXJVSSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEaWRFbmRDb2xvckNob29zZXIoKSwgbV9wYWdlSUQpOwpAQCAtMzgzNiw5
ICszODM2LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2NlcwogICAg
IH0KIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAgIGlmIChtX2NvbG9yQ2hvb3Nl
cikgewotICAgICAgICBtX2NvbG9yQ2hvb3Nlci0+aW52YWxpZGF0ZSgpOwotICAgICAgICBtX2Nv
bG9yQ2hvb3NlciA9IG51bGxwdHI7CisgICAgaWYgKG1fY29sb3JQaWNrZXJVSSkgeworICAgICAg
ICBtX2NvbG9yUGlja2VyVUktPmludmFsaWRhdGUoKTsKKyAgICAgICAgbV9jb2xvclBpY2tlclVJ
ID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAobV9jb2xvclBpY2tlclJlc3VsdExpc3RlbmVy
KSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lv
biAxNTMwOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAu
aCIKICNpbmNsdWRlICJXS0Jhc2UuaCIKICNpbmNsdWRlICJXS1BhZ2VQcml2YXRlLmgiCi0jaW5j
bHVkZSAiV2ViQ29sb3JDaG9vc2VyUHJveHkuaCIKKyNpbmNsdWRlICJXZWJDb2xvclBpY2tlclVJ
LmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oIgogI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkZpbmRDbGllbnQuaCIKQEAgLTIzMiw3
ICsyMzIsNyBAQCBwcml2YXRlOgogY2xhc3MgV2ViUGFnZVByb3h5CiAgICAgOiBwdWJsaWMgVHlw
ZWRBUElPYmplY3Q8QVBJT2JqZWN0OjpUeXBlUGFnZT4KICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9D
T0xPUikKLSAgICAsIHB1YmxpYyBXZWJDb2xvckNob29zZXJQcm94eTo6Q2xpZW50CisgICAgLCBw
dWJsaWMgV2ViQ29sb3JQaWNrZXJVSTo6Q2xpZW50CiAjZW5kaWYKICAgICAsIHB1YmxpYyBXZWJQ
b3B1cE1lbnVQcm94eTo6Q2xpZW50CiAgICAgLCBwdWJsaWMgQ29yZUlQQzo6TWVzc2FnZVJlY2Vp
dmVyIHsKQEAgLTExOTksNyArMTE5OSw3IEBAIHByaXZhdGU6CiAgICAgRGVxdWU8UXVldWVkVG91
Y2hFdmVudHM+IG1fdG91Y2hFdmVudFF1ZXVlOwogI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1RZ
UEVfQ09MT1IpCi0gICAgUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5PiBtX2NvbG9yQ2hvb3Nl
cjsKKyAgICBSZWZQdHI8V2ViQ29sb3JQaWNrZXJVST4gbV9jb2xvclBpY2tlclVJOwogICAgIFJl
ZlB0cjxXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHk+IG1fY29sb3JQaWNrZXJSZXN1
bHRMaXN0ZW5lcjsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9QYWdlQ2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgJKHJldmlzaW9uIDE1MzA5NykKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
ZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSop
OwogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdlYkNvbG9yQ2hvb3NlclByb3h5PiBjcmVhdGVDb2xvckNob29zZXJQcm94eShXZWJQYWdlUHJv
eHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0Jik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbG9yUGlja2VyVUk+IGNyZWF0
ZUNvbG9yQ2hvb3NlclByb3h5KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBp
bml0aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKICNlbmRpZgogCiAgICAgdm9p
ZCBzZXRGaW5kSW5kaWNhdG9yKFBhc3NSZWZQdHI8RmluZEluZGljYXRvcj4sIGJvb2wgZmFkZU91
dCwgYm9vbCBhbmltYXRlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1BhZ2VDbGllbnRJbXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCShyZXZpc2lvbiAxNTMwOTcpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzkzLDcgKzM5Myw3IEBAIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gUGFn
ZUNsaWUKIH0KIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotUGFzc1JlZlB0cjxXZWJD
b2xvckNob29zZXJQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5
KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKQorUGFzc1JlZlB0cjxXZWJDb2xvclBpY2tlclVJPiBQYWdlQ2xpZW50SW1wbDo6Y3Jl
YXRlQ29sb3JDaG9vc2VyUHJveHkoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3Im
LCAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAg
ICByZXR1cm4gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1MzA5NykKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDA2LDcg
KzQwNiw3IEBACiAJCTM3RjkwREUzMTM3NjU2MEUwMDUxQ0Y2OCAvKiBIVFRQQ29va2llQWNjZXB0
UG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NjM4OTU0RjEzM0JFRjM4MDA4OTQxRDUgLyogSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oICovOyB9
OwogCQkzRjg3QjlCRDE1ODk0MDEyMDA5MEZGNjIgLyogV2ViQ29sb3JDaG9vc2VyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNGODdCOUJBMTU4OTNG
NjMwMDkwRkY2MiAvKiBXZWJDb2xvckNob29zZXIuY3BwICovOyB9OwogCQkzRjg3QjlCRTE1ODk0
MDE5MDA5MEZGNjIgLyogV2ViQ29sb3JDaG9vc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzRjg3QjlCQjE1ODkzRjYzMDA5MEZGNjIgLyogV2ViQ29s
b3JDaG9vc2VyLmggKi87IH07Ci0JCTNGODdCOUMwMTU4OTQwRDgwMDkwRkY2MiAvKiBXZWJDb2xv
ckNob29zZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gM0Y4N0I5QkYxNTg5NDBEODAwOTBGRjYyIC8qIFdlYkNvbG9yQ2hvb3NlclByb3h5Lmgg
Ki87IH07CisJCTNGODdCOUMwMTU4OTQwRDgwMDkwRkY2MiAvKiBXZWJDb2xvclBpY2tlclVJLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzRjg3QjlCRjE1
ODk0MEQ4MDA5MEZGNjIgLyogV2ViQ29sb3JQaWNrZXJVSS5oICovOyB9OwogCQk0RjYwMTQzMjE1
NUM1QUEyMDAxRkJERTAgLyogQmxvY2tpbmdSZXNwb25zZU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY2MDE0MzAxNTVDNUEzMjAwMUZCREUwIC8q
IEJsb2NraW5nUmVzcG9uc2VNYXAuaCAqLzsgfTsKIAkJNTEwMjFFOUMxMkIxNjc4ODAwNUMwMzND
IC8qIFdlYkNvbnRleHRNZW51Q2xpZW50TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMjFFOUIxMkIxNjc4ODAwNUMwMzNDIC8qIFdlYkNvbnRl
eHRNZW51Q2xpZW50TWFjLm1tICovOyB9OwogCQk1MTBBRkZCOTE2NTQyMDQ4MDAxQkEwNUUgLyog
V2ViUmVzb3VyY2VMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTEwQUZGQjcxNjU0MjA0ODAwMUJBMDVFIC8qIFdlYlJlc291cmNlTG9hZGVy
LmNwcCAqLzsgfTsKQEAgLTExOTYsNyArMTE5Niw3IEBACiAJCUVEQ0E3MUI3MTI4RERBOEMwMDIw
MUIyNiAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMjJGMTAwMTI4OUZDRDkwMDg1RTc0RiAvKiBXS0J1bmRs
ZVBhZ2VPdmVybGF5LmNwcCAqLzsgfTsKIAkJRjAzNjk3ODUxNUY0QkU2QjAwQzNBODBFIC8qIFdL
Q29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGMDM2OTc4MzE1RjRCRTZCMDBDM0E4MEUgLyogV0tDb2xvclBp
Y2tlclJlc3VsdExpc3RlbmVyLmNwcCAqLzsgfTsKIAkJRjAzNjk3ODYxNUY0QkU2QjAwQzNBODBF
IC8qIFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjAzNjk3ODQxNUY0QkU2QjAwQzNBODBFIC8qIFdLQ29s
b3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5oICovOyB9OwotCQlGMDM2OTc4ODE1RjRCRjA1MDBDM0E4
MEUgLyogV2ViQ29sb3JDaG9vc2VyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjAzNjk3ODcxNUY0QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9y
Q2hvb3NlclByb3h5LmNwcCAqLzsgfTsKKwkJRjAzNjk3ODgxNUY0QkYwNTAwQzNBODBFIC8qIFdl
YkNvbG9yUGlja2VyVUkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjAzNjk3ODcxNUY0QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2VyVUkuY3Bw
ICovOyB9OwogCQlGMDM2OTc4QjE1RjRCRjEzMDBDM0E4MEUgLyogV2ViQ29sb3JQaWNrZXJSZXN1
bHRMaXN0ZW5lclByb3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEYwMzY5Nzg5MTVGNEJGMTMwMEMzQTgwRSAvKiBXZWJDb2xvclBpY2tlclJlc3Vs
dExpc3RlbmVyUHJveHkuY3BwICovOyB9OwogCQlGNjExM0UyNTEyNkNFMTgyMDA1N0QwQTcgLyog
V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNjExM0UyNDEyNkNFMTgyMDA1N0QwQTcgLyogV2ViVXNlckNvbnRl
bnRVUkxQYXR0ZXJuLmggKi87IH07CiAJCUY2MTEzRTI4MTI2Q0UxOUIwMDU3RDBBNyAvKiBXS1Vz
ZXJDb250ZW50VVJMUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNjExM0UyNjEyNkNFMTlCMDA1N0QwQTcgLyogV0tVc2VyQ29udGVudFVS
TFBhdHRlcm4uY3BwICovOyB9OwpAQCAtMTg3MSw3ICsxODcxLDcgQEAKIAkJMzdGNjIzQjcxMkE1
N0I2MjAwRTNGREY2IC8qIFdLRmluZE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tGaW5kT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
Rjg3QjlCQTE1ODkzRjYzMDA5MEZGNjIgLyogV2ViQ29sb3JDaG9vc2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbG9yQ2hvb3Nlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTNGODdCOUJCMTU4OTNGNjMwMDkwRkY2MiAvKiBXZWJDb2xv
ckNob29zZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29sb3JDaG9v
c2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTNGODdCOUJGMTU4OTQwRDgwMDkw
RkY2MiAvKiBXZWJDb2xvckNob29zZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJDb2xvckNob29zZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzRjg3QjlCRjE1ODk0MEQ4MDA5MEZGNjIgLyogV2ViQ29sb3JQaWNrZXJVSS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb2xvclBpY2tlclVJLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGNjAxNDMwMTU1QzVBMzIwMDFGQkRFMCAvKiBCbG9ja2lu
Z1Jlc3BvbnNlTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJsb2NraW5n
UmVzcG9uc2VNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwMDMxRjYxMzc5
Q0FDQjAwQzhERkU0IC8qIFNlY0l0ZW1TaGltLmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgaW5jbHVk
ZUluSW5kZXggPSAwOyBwYXRoID0gU2VjSXRlbVNoaW0uZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CiAJCTUxMDIxRTlCMTJCMTY3ODgwMDVDMDMzQyAvKiBXZWJDb250
ZXh0TWVudUNsaWVudE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdlYkNvbnRleHRNZW51Q2xpZW50TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjcyNCw3ICsyNzI0LDcgQEAKIAkJRTFFRTUzRTYxMUY4Q0ZGQjAwQ0NCRUU0IC8qIElu
amVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGMDM2OTc4MzE1RjRCRTZCMDBDM0E4MEUgLyogV0tDb2xv
clBpY2tlclJlc3VsdExpc3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUYwMzY5Nzg0MTVGNEJFNkIwMEMzQTgwRSAvKiBXS0NvbG9yUGlja2VyUmVz
dWx0TGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tDb2xvclBp
Y2tlclJlc3VsdExpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUYwMzY5
Nzg3MTVGNEJGMDUwMEMzQTgwRSAvKiBXZWJDb2xvckNob29zZXJQcm94eS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb2xvckNob29zZXJQcm94eS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUYwMzY5Nzg3MTVGNEJGMDUwMEMzQTgwRSAvKiBX
ZWJDb2xvclBpY2tlclVJLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkNvbG9yUGlja2VyVUkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGMDM2
OTc4OTE1RjRCRjEzMDBDM0E4MEUgLyogV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbG9yUGlja2Vy
UmVzdWx0TGlzdGVuZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYw
MzY5NzhBMTVGNEJGMTMwMEMzQTgwRSAvKiBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJv
eHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29sb3JQaWNrZXJSZXN1
bHRMaXN0ZW5lclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2MTEzRTI0
MTI2Q0UxODIwMDU3RDBBNyAvKiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MDQ2LDggKzQwNDYsOCBAQAogCQkJCTUxMkUzNUYw
MTMwQjYzOEMwMEFCRDE5QSAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclByb3h5Lm1lc3Nh
Z2VzLmluICovLAogCQkJCUJDNzJCQTFCMTFFNjQ5MDcwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2Fy
ZExpc3QuY3BwICovLAogCQkJCUJDNzJCQTFDMTFFNjQ5MDcwMDFFQjRFQSAvKiBXZWJCYWNrRm9y
d2FyZExpc3QuaCAqLywKLQkJCQlGMDM2OTc4NzE1RjRCRjA1MDBDM0E4MEUgLyogV2ViQ29sb3JD
aG9vc2VyUHJveHkuY3BwICovLAotCQkJCTNGODdCOUJGMTU4OTQwRDgwMDkwRkY2MiAvKiBXZWJD
b2xvckNob29zZXJQcm94eS5oICovLAorCQkJCUYwMzY5Nzg3MTVGNEJGMDUwMEMzQTgwRSAvKiBX
ZWJDb2xvclBpY2tlclVJLmNwcCAqLywKKwkJCQkzRjg3QjlCRjE1ODk0MEQ4MDA5MEZGNjIgLyog
V2ViQ29sb3JQaWNrZXJVSS5oICovLAogCQkJCUYwMzY5Nzg5MTVGNEJGMTMwMEMzQTgwRSAvKiBX
ZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuY3BwICovLAogCQkJCUYwMzY5NzhBMTVG
NEJGMTMwMEMzQTgwRSAvKiBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuaCAqLywK
IAkJCQlCQzRBNjJBNTE0NzQ0RUM2MDA2QzY4MUEgLyogV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAgKi8sCkBAIC01NTQyLDcgKzU1NDIsNyBAQAogCQkJCUJDRjUwNzI4MTI0MzI5QUEwMDU5
NTVBRSAvKiBXZWJDZXJ0aWZpY2F0ZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDMyRDc1
MTBGNDM3OEQwMDU4QzE1QSAvKiBXZWJDaHJvbWVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTNGODdCOUJFMTU4OTQwMTkwMDkwRkY2MiAvKiBXZWJDb2xvckNob29zZXIuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTNGODdCOUMwMTU4OTQwRDgwMDkwRkY2MiAvKiBXZWJDb2xvckNob29zZXJQcm94
eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJM0Y4N0I5QzAxNTg5NDBEODAwOTBGRjYyIC8qIFdlYkNv
bG9yUGlja2VyVUkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNEE2MjkwMTQ3MzEyQkUwMDZDNjgx
QSAvKiBXZWJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzRBNjI5MjE0NzMxMkJF
MDA2QzY4MUEgLyogV2ViQ29ubmVjdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEx
RkVDMUQxNjI3QjQ1NzAwNzAwRjZEIC8qIFdlYkNvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8sCkBAIC02ODE0LDcgKzY4MTQsNyBAQAogCQkJCUJDNzJCOUZBMTFFNjQ3NkIwMDFFQjRF
QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzEx
MUE1QTExMkY0RkJCMDAzMzdCQUIgLyogV2ViQ2hyb21lQ2xpZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTNGODdCOUJEMTU4OTQwMTIwMDkwRkY2MiAvKiBXZWJDb2xvckNob29zZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJRjAzNjk3ODgxNUY0QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yQ2hv
b3NlclByb3h5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUYwMzY5Nzg4MTVGNEJGMDUwMEMzQTgw
RSAvKiBXZWJDb2xvclBpY2tlclVJLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUYwMzY5NzhCMTVG
NEJGMTMwMEMzQTgwRSAvKiBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkM0QTYyOEYxNDczMTJCRTAwNkM2ODFBIC8qIFdlYkNvbm5lY3Rp
b24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0QTYyOTExNDczMTJCRTAwNkM2ODFBIC8qIFdl
YkNvbm5lY3Rpb25DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207412</attachid>
            <date>2013-07-24 14:52:56 -0700</date>
            <delta_ts>2013-07-24 16:06:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-119025-20130724145255.patch</filename>
            <type>text/plain</type>
            <size>56109</size>
            <attacher name="Ruth Fong">ruthiecftg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MzEwMikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcyIEBACisyMDEzLTA3LTI0ICBSdXRoIEZv
bmcgIDxydXRoX2ZvbmdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBXZWJDb2xvckNob29z
ZXJQcm94eQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTQ1MjgwMzk+IGFuZCBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE5MDI1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIFdlYkNvbG9yQ2hvb3NlclByb3h5
IHRvIFdlYkNvbG9yUGlja2VyVUkgc2luY2UgdGhlIG5hbWUgV2ViQ29sb3JDaG9vb3NlclByb3h5
CisgICAgICAgIGltcGxpZXMgYSBvbmUtdG8tb25lIHJlbGF0aW9uc2hpcCB3aXRoIFdlYkNvbG9y
Q2hvb3Nlciwgd2hpY2ggd2lsbCBub3QgYmUgdHJ1ZSB3aGVuCisgICAgICAgIHRoZSBwYXRjaCBm
b3IgYnVnIDYxMjc2IGxhbmRzLgorCisgICAgICAgIFJlbmFtZSBjcmVhdGVDb2xvckNob29zZXJQ
cm94eSBtZXRob2QgdG8gY3JlYXRlQ29sb3JQaWNrZXJVSSBpbiBXZWJQYWdlUHJveHkgYW5kIAor
ICAgICAgICBwbGF0Zm9ybS1lcXVpdmFsZW50IHZlcnNpb25zIG9mIGl0LgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAg
KiBUYXJnZXQucHJpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OldlYkNvbG9yUGlja2VyVUkp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVu
dEltcGw6OmNyZWF0ZUNvbG9yUGlja2VyVUkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQv
cmF3L3FyYXd3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFSYXdXZWJWaWV3UHJpdmF0ZTo6Y3JlYXRl
Q29sb3JQaWNrZXJVSSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZp
ZXdfcF9wLmg6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmll
dy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmNyZWF0ZUNvbG9yUGlja2VyVUkpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb2xv
ckNob29zZXJQcm94eS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbG9y
Q2hvb3NlclByb3h5Lmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbG9yUGlj
a2VyVUkuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JD
aG9vc2VyUHJveHkuY3BwLgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvclBpY2tlclVJOjpXZWJD
b2xvclBpY2tlclVJKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JQaWNrZXJVSTo6fldlYkNv
bG9yUGlja2VyVUkpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvclBpY2tlclVJOjplbmRDaG9v
c2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JQaWNrZXJVSTo6c2V0U2VsZWN0ZWRDb2xv
cik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyVUkuaDogQ29waWVkIGZyb20g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yQ2hvb3NlclByb3h5LmguCisgICAgICAg
IChXZWJLaXQ6OldlYkNvbG9yUGlja2VyVUk6OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNob3dDb2xvckNob29zZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldENvbG9yQ2hvb3NlckNvbG9yKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjplbmRDb2xvckNob29zZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpZEVuZENvbG9yQ2hvb3Nlcik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZCk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOiBSZW5hbWVkIG1fY29sb3JDaG9vc2VyIHRvIG1fY29s
b3JQaWNrZXJVSS4KKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UXRQYWdlQ2xpZW50OjpjcmVhdGVDb2xvclBpY2tlclVJKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL3F0
L1dlYkNvbG9yQ2hvb3NlclByb3h5UXQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9xdC9XZWJDb2xvckNob29zZXJQcm94eVF0Lmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL3F0L1dlYkNvbG9yUGlja2VyVUlRdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpD
b2xvckNob29zZXJDb250ZXh0T2JqZWN0OjpDb2xvckNob29zZXJDb250ZXh0T2JqZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6Q29sb3JDaG9vc2VyQ29udGV4dE9iamVjdDo6Y3VycmVudENvbG9yKToK
KyAgICAgICAgKFdlYktpdDo6Q29sb3JDaG9vc2VyQ29udGV4dE9iamVjdDo6ZWxlbWVudFJlY3Qp
OgorICAgICAgICAoV2ViS2l0OjpDb2xvckNob29zZXJDb250ZXh0T2JqZWN0OjphY2NlcHQpOgor
ICAgICAgICAoV2ViS2l0OjpDb2xvckNob29zZXJDb250ZXh0T2JqZWN0OjpyZWplY3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb2xvclBpY2tlclVJUXQ6OldlYkNvbG9yUGlja2VyVUlRdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbG9yUGlja2VyVUlRdDo6fldlYkNvbG9yUGlja2VyVUlRdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yUGlja2VyVUlRdDo6Y3JlYXRlSXRlbSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbG9yUGlja2VyVUlRdDo6Y3JlYXRlQ29udGV4dCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbG9yUGlja2VyVUlRdDo6c2V0U2VsZWN0ZWRDb2xvcik6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbG9yUGlja2VyVUlRdDo6bm90aWZ5Q29sb3JTZWxlY3RlZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbG9yUGlja2VyVUlRdDo6ZW5kQ2hvb3Nlcik6CisgICAgICAgICog
VUlQcm9jZXNzL3F0L1dlYkNvbG9yUGlja2VyVUlRdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViQ29sb3JQaWNrZXJVSVF0OjpjcmVhdGUpOgorICAgICAgICAqIFdlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxMy0wNy0yNCAgSmVzc2llIEJlcmxpbiAgPGpiZXJs
aW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBXS1BhZ2VHZXRQbHVnSW5JbmZvcm1hdGlv
biAtIGl0IGlzIG5vdCB1c2VkIGFueW1vcmUKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlz
dHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CShyZXZp
c2lvbiAxNTMwOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMjY1LDcgKzI2NSw3IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nl
c3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAogICAgIFVJUHJvY2Vzcy9XZWJCYXR0ZXJ5TWFuYWdl
clByb3h5LmNwcAogICAgIFVJUHJvY2Vzcy9XZWJCYXR0ZXJ5UHJvdmlkZXIuY3BwCi0gICAgVUlQ
cm9jZXNzL1dlYkNvbG9yQ2hvb3NlclByb3h5LmNwcAorICAgIFVJUHJvY2Vzcy9XZWJDb2xvclBp
Y2tlclVJLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJv
eHkuY3BwCiAgICAgVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCiAgICAg
VUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmls
ZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHJldmlzaW9uIDE1MzA5NykKKysrIFNvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHdvcmtpbmcgY29weSkKQEAgLTg4NSw4ICs4ODUsOCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYXR0ZXJ5TWFuYWdlclByb3h5LmggXAog
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYXR0ZXJ5UHJvdmlkZXIuY3BwIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmF0dGVyeVByb3ZpZGVyLmggXAotCVNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb2xvckNob29zZXJQcm94eS5jcHAgXAotCVNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb2xvckNob29zZXJQcm94eS5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29sb3JQaWNrZXJVSS5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb2xvclBpY2tlclVJLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBp
Y2tlclJlc3VsdExpc3RlbmVyUHJveHkuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBcCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkJ
KHJldmlzaW9uIDE1MzA5NykKKysrIFNvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkJKHdvcmtpbmcg
Y29weSkKQEAgLTI0Miw3ICsyNDIsNyBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3MvV2Vi
QmFja0ZvcndhcmRMaXN0LmggXAogICAgIFVJUHJvY2Vzcy9XZWJCYXR0ZXJ5TWFuYWdlclByb3h5
LmggXAogICAgIFVJUHJvY2Vzcy9XZWJCYXR0ZXJ5UHJvdmlkZXIuaCBcCi0gICAgVUlQcm9jZXNz
L1dlYkNvbG9yQ2hvb3NlclByb3h5LmggXAorICAgIFVJUHJvY2Vzcy9XZWJDb2xvclBpY2tlclVJ
LmggXAogICAgIFVJUHJvY2Vzcy9XZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuaCBc
CiAgICAgVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBcCiAgICAgVUlQcm9j
ZXNzL1dlYkNvbnRleHQuaCBcCkBAIC02MDAsNyArNjAwLDcgQEAgU09VUkNFUyArPSBcCiAgICAg
VUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAgXAogICAgIFVJUHJvY2Vzcy9XZWJCYXR0
ZXJ5TWFuYWdlclByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL1dlYkJhdHRlcnlQcm92aWRlci5j
cHAgXAotICAgIFVJUHJvY2Vzcy9XZWJDb2xvckNob29zZXJQcm94eS5jcHAgXAorICAgIFVJUHJv
Y2Vzcy9XZWJDb2xvclBpY2tlclVJLmNwcCBcCiAgICAgVUlQcm9jZXNzL1dlYkNvbG9yUGlja2Vy
UmVzdWx0TGlzdGVuZXJQcm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcCBcCiAgICAgVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIFwKQEAgLTg0Nyw5
ICs4NDcsOSBAQCBoYXZlPyhRVFFVSUNLKSB7CiAKICAgICBlbmFibGU/KElOUFVUX1RZUEVfQ09M
T1IpIHsKICAgICAgICAgSEVBREVSUyArPSBcCi0gICAgICAgICAgICBVSVByb2Nlc3MvcXQvV2Vi
Q29sb3JDaG9vc2VyUHJveHlRdC5oCisgICAgICAgICAgICBVSVByb2Nlc3MvcXQvV2ViQ29sb3JQ
aWNrZXJVSVF0LmgKICAgICAgICAgU09VUkNFUyArPSBcCi0gICAgICAgICAgICBVSVByb2Nlc3Mv
cXQvV2ViQ29sb3JDaG9vc2VyUHJveHlRdC5jcHAKKyAgICAgICAgICAgIFVJUHJvY2Vzcy9xdC9X
ZWJDb2xvclBpY2tlclVJUXQuY3BwCiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QYWdlQ2xpZW50LmgJKHJldmlzaW9uIDE1MzA5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNk
ZWZpbmUgUGFnZUNsaWVudF9oCiAKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKLSNpbmNs
dWRlICJXZWJDb2xvckNob29zZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYkNvbG9yUGlja2VyVUku
aCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94
eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg+CkBAIC02NSw3
ICs2NSw3IEBAIGNsYXNzIFdlYkNvbnRleHRNZW51UHJveHk7CiBjbGFzcyBXZWJFZGl0Q29tbWFu
ZFByb3h5OwogY2xhc3MgV2ViUG9wdXBNZW51UHJveHk7CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVf
Q09MT1IpCi1jbGFzcyBXZWJDb2xvckNob29zZXJQcm94eTsKK2NsYXNzIFdlYkNvbG9yUGlja2Vy
VUk7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTE4Nyw3ICsxODcsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNv
bnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KikgPSAwOwogCiAjaWYgRU5BQkxFKElOUFVUX1RZ
UEVfQ09MT1IpCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5PiBj
cmVhdGVDb2xvckNob29zZXJQcm94eShXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xv
ciYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgPSAwOworICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxXZWJDb2xvclBpY2tlclVJPiBjcmVhdGVDb2xvclBpY2tlclVJKFdlYlBh
Z2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmKSA9IDA7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRGaW5kSW5k
aWNhdG9yKFBhc3NSZWZQdHI8RmluZEluZGljYXRvcj4sIGJvb2wgZmFkZU91dCwgYm9vbCBhbmlt
YXRlKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JDaG9vc2Vy
UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xv
ckNob29zZXJQcm94eS5jcHAJKHJldmlzaW9uIDE1MzA5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb2xvckNob29zZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNjAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIldlYkNvbG9yQ2hvb3NlclByb3h5LmgiCi0KLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xP
UikKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYkNvbG9yQ2hvb3NlclByb3h5OjpXZWJDb2xv
ckNob29zZXJQcm94eShDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fY2xpZW50KGNsaWVudCkKLXsK
LX0KLQotV2ViQ29sb3JDaG9vc2VyUHJveHk6On5XZWJDb2xvckNob29zZXJQcm94eSgpCi17Ci19
Ci0KLXZvaWQgV2ViQ29sb3JDaG9vc2VyUHJveHk6OmVuZENob29zZXIoKQotewotICAgIGlmICgh
bV9jbGllbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY2xpZW50LT5kaWRFbmRDb2xvckNo
b29zZXIoKTsKLX0KLQotdm9pZCBXZWJDb2xvckNob29zZXJQcm94eTo6c2V0U2VsZWN0ZWRDb2xv
cihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCi17Ci0gICAgaWYgKCFtX2NsaWVudCkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgbV9jbGllbnQtPmRpZENob29zZUNvbG9yKGNvbG9yKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfVFlQRV9D
T0xPUikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvckNob29zZXJQcm94
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvckNob29z
ZXJQcm94eS5oCShyZXZpc2lvbiAxNTMwOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29sb3JDaG9vc2VyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3NSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkNvbG9yQ2hvb3NlclByb3h5X2gKLSNkZWZp
bmUgV2ViQ29sb3JDaG9vc2VyUHJveHlfaAotCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1Ip
Ci0KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgQ29sb3I7Ci19Ci0KLW5hbWVzcGFjZSBXZWJL
aXQgewotCi1jbGFzcyBXZWJQYWdlUHJveHk7Ci0KLWNsYXNzIFdlYkNvbG9yQ2hvb3NlclByb3h5
IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViQ29sb3JDaG9vc2VyUHJveHk+IHsKLXB1YmxpYzoKLSAg
ICBjbGFzcyBDbGllbnQgewotICAgIHByb3RlY3RlZDoKLSAgICAgICAgdmlydHVhbCB+Q2xpZW50
KCkgeyB9Ci0KLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VDb2xv
cihjb25zdCBXZWJDb3JlOjpDb2xvciYpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZEVu
ZENvbG9yQ2hvb3NlcigpID0gMDsKLSAgICB9OwotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2Vi
Q29sb3JDaG9vc2VyUHJveHk+IGNyZWF0ZShDbGllbnQqIGNsaWVudCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29sb3JDaG9vc2VyUHJveHkoY2xpZW50KSk7Ci0gICAg
fQotCi0gICAgdmlydHVhbCB+V2ViQ29sb3JDaG9vc2VyUHJveHkoKTsKLQotICAgIHZvaWQgaW52
YWxpZGF0ZSgpIHsgbV9jbGllbnQgPSAwOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZW5kQ2hvb3Nl
cigpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNv
bG9yJik7Ci0KLXByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBXZWJDb2xvckNob29zZXJQcm94eShD
bGllbnQqKTsKLQotICAgIENsaWVudCogbV9jbGllbnQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotCi0jZW5kaWYgLy8g
V2ViQ29sb3JDaG9vc2VyUHJveHlfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbG9yUGlja2VyVUkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb2xvclBpY2tlclVJLmNwcAkocmV2aXNpb24gMTUzMDk3KQkoZnJvbSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JDaG9vc2VyUHJveHkuY3BwOjE1MzA5NykKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tlclVJLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ry
b25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyUHJveHkuaCIKKworI2lmIEVOQUJMRShJTlBVVF9U
WVBFX0NPTE9SKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQ29sb3JDaG9vc2VyUHJveHk6
OldlYkNvbG9yQ2hvb3NlclByb3h5KENsaWVudCogY2xpZW50KQorICAgIDogbV9jbGllbnQoY2xp
ZW50KQoreworfQorCitXZWJDb2xvckNob29zZXJQcm94eTo6fldlYkNvbG9yQ2hvb3NlclByb3h5
KCkKK3sKK30KKwordm9pZCBXZWJDb2xvckNob29zZXJQcm94eTo6ZW5kQ2hvb3NlcigpCit7Cisg
ICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQtPmRpZEVu
ZENvbG9yQ2hvb3NlcigpOworfQorCit2b2lkIFdlYkNvbG9yQ2hvb3NlclByb3h5OjpzZXRTZWxl
Y3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKK3sKKyAgICBpZiAoIW1fY2xp
ZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC0+ZGlkQ2hvb3NlQ29sb3IoY29s
b3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yUGlj
a2VyVUkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xv
clBpY2tlclVJLmNwcAkod29ya2luZyBjb3B5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbG9yUGlja2VyVUkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwyMiArMjQsMjIgQEAK
ICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyUHJv
eHkuaCIKKyNpbmNsdWRlICJXZWJDb2xvclBpY2tlclVJLmgiCiAKICNpZiBFTkFCTEUoSU5QVVRf
VFlQRV9DT0xPUikKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYkNvbG9yQ2hvb3NlclByb3h5
OjpXZWJDb2xvckNob29zZXJQcm94eShDbGllbnQqIGNsaWVudCkKK1dlYkNvbG9yUGlja2VyVUk6
OldlYkNvbG9yUGlja2VyVUkoQ2xpZW50KiBjbGllbnQpCiAgICAgOiBtX2NsaWVudChjbGllbnQp
CiB7CiB9CiAKLVdlYkNvbG9yQ2hvb3NlclByb3h5Ojp+V2ViQ29sb3JDaG9vc2VyUHJveHkoKQor
V2ViQ29sb3JQaWNrZXJVSTo6fldlYkNvbG9yUGlja2VyVUkoKQogewogfQogCi12b2lkIFdlYkNv
bG9yQ2hvb3NlclByb3h5OjplbmRDaG9vc2VyKCkKK3ZvaWQgV2ViQ29sb3JQaWNrZXJVSTo6ZW5k
Q2hvb3NlcigpCiB7CiAgICAgaWYgKCFtX2NsaWVudCkKICAgICAgICAgcmV0dXJuOwpAQCAtNDcs
NyArNDcsNyBAQCB2b2lkIFdlYkNvbG9yQ2hvb3NlclByb3h5OjplbmRDaG9vc2VyKCkKICAgICBt
X2NsaWVudC0+ZGlkRW5kQ29sb3JDaG9vc2VyKCk7CiB9CiAKLXZvaWQgV2ViQ29sb3JDaG9vc2Vy
UHJveHk6OnNldFNlbGVjdGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQordm9p
ZCBXZWJDb2xvclBpY2tlclVJOjpzZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9y
JiBjb2xvcikKIHsKICAgICBpZiAoIW1fY2xpZW50KQogICAgICAgICByZXR1cm47CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJVSS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tlclVJLmgJKHJldmlzaW9uIDE1
MzA5NykJKGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yQ2hvb3NlclByb3h5
Lmg6MTUzMDk3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyVUku
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdlYkNvbG9yQ2hvb3NlclByb3h5X2gKKyNkZWZpbmUgV2ViQ29sb3JDaG9vc2VyUHJv
eHlfaAorCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisKKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgQ29sb3I7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdl
UHJveHk7CisKK2NsYXNzIFdlYkNvbG9yQ2hvb3NlclByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8
V2ViQ29sb3JDaG9vc2VyUHJveHk+IHsKK3B1YmxpYzoKKyAgICBjbGFzcyBDbGllbnQgeworICAg
IHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkgeyB9CisKKyAgICBwdWJsaWM6
CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xv
ciYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZEVuZENvbG9yQ2hvb3NlcigpID0gMDsK
KyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJveHk+IGNy
ZWF0ZShDbGllbnQqIGNsaWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
V2ViQ29sb3JDaG9vc2VyUHJveHkoY2xpZW50KSk7CisgICAgfQorCisgICAgdmlydHVhbCB+V2Vi
Q29sb3JDaG9vc2VyUHJveHkoKTsKKworICAgIHZvaWQgaW52YWxpZGF0ZSgpIHsgbV9jbGllbnQg
PSAwOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZW5kQ2hvb3NlcigpOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CisKK3Byb3RlY3RlZDoK
KyAgICBleHBsaWNpdCBXZWJDb2xvckNob29zZXJQcm94eShDbGllbnQqKTsKKworICAgIENsaWVu
dCogbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQorCisjZW5kaWYgLy8gV2ViQ29sb3JDaG9vc2VyUHJveHlf
aApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyVUkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJVSS5oCSh3
b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJV
SS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJDb2xvckNob29zZXJQcm94eV9oCi0j
ZGVmaW5lIFdlYkNvbG9yQ2hvb3NlclByb3h5X2gKKyNpZm5kZWYgV2ViQ29sb3JQaWNrZXJVSV9o
CisjZGVmaW5lIFdlYkNvbG9yUGlja2VyVUlfaAogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09M
T1IpCiAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBh
Z2VQcm94eTsKIAotY2xhc3MgV2ViQ29sb3JDaG9vc2VyUHJveHkgOiBwdWJsaWMgUmVmQ291bnRl
ZDxXZWJDb2xvckNob29zZXJQcm94eT4geworY2xhc3MgV2ViQ29sb3JQaWNrZXJVSSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFdlYkNvbG9yUGlja2VyVUk+IHsKIHB1YmxpYzoKICAgICBjbGFzcyBDbGll
bnQgewogICAgIHByb3RlY3RlZDoKQEAgLTUwLDEyICs1MCwxMiBAQCBwdWJsaWM6CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRFbmRDb2xvckNob29zZXIoKSA9IDA7CiAgICAgfTsKIAotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5PiBjcmVhdGUoQ2xpZW50KiBjbGll
bnQpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29sb3JQaWNrZXJVST4gY3JlYXRlKENsaWVu
dCogY2xpZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb2xvckNo
b29zZXJQcm94eShjbGllbnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb2xv
clBpY2tlclVJKGNsaWVudCkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgfldlYkNvbG9yQ2hvb3Nl
clByb3h5KCk7CisgICAgdmlydHVhbCB+V2ViQ29sb3JQaWNrZXJVSSgpOwogCiAgICAgdm9pZCBp
bnZhbGlkYXRlKCkgeyBtX2NsaWVudCA9IDA7IH0KIApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3Im
KTsKIAogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IFdlYkNvbG9yQ2hvb3NlclByb3h5KENsaWVu
dCopOworICAgIGV4cGxpY2l0IFdlYkNvbG9yUGlja2VyVUkoQ2xpZW50Kik7CiAKICAgICBDbGll
bnQqIG1fY2xpZW50OwogfTsKQEAgLTcyLDQgKzcyLDQgQEAgcHJvdGVjdGVkOgogCiAjZW5kaWYg
Ly8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAKLSNlbmRpZiAvLyBXZWJDb2xvckNob29zZXJQ
cm94eV9oCisjZW5kaWYgLy8gV2ViQ29sb3JQaWNrZXJVSV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMTUzMDk3KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3
Niw5ICs1NzYsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2UoKQogICAgIH0KIAogI2lmIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAgIGlmIChtX2NvbG9yQ2hvb3NlcikgewotICAgICAg
ICBtX2NvbG9yQ2hvb3Nlci0+aW52YWxpZGF0ZSgpOwotICAgICAgICBtX2NvbG9yQ2hvb3NlciA9
IG51bGxwdHI7CisgICAgaWYgKG1fY29sb3JQaWNrZXJVSSkgeworICAgICAgICBtX2NvbG9yUGlj
a2VyVUktPmludmFsaWRhdGUoKTsKKyAgICAgICAgbV9jb2xvclBpY2tlclVJID0gbnVsbHB0cjsK
ICAgICB9CiAKICAgICBpZiAobV9jb2xvclBpY2tlclJlc3VsdExpc3RlbmVyKSB7CkBAIC0yOTIw
LDcgKzI5MjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bmVlZFRvdWNoRXZlbnRzKGJvb2wgCiAj
aWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd0NvbG9y
Q2hvb3Nlcihjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBJbnRSZWN0
JiBlbGVtZW50UmVjdCkKIHsKLSAgICBBU1NFUlQoIW1fY29sb3JDaG9vc2VyKTsKKyAgICBBU1NF
UlQoIW1fY29sb3JQaWNrZXJVSSk7CiAKICAgICBpZiAobV9jb2xvclBpY2tlclJlc3VsdExpc3Rl
bmVyKSB7CiAgICAgICAgIG1fY29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0ZSgp
OwpAQCAtMjkyOCwyOCArMjkyOCwyOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd0NvbG9yQ2hv
b3Nlcihjb25zCiAgICAgfQogCiAgICAgbV9jb2xvclBpY2tlclJlc3VsdExpc3RlbmVyID0gV2Vi
Q29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5OjpjcmVhdGUodGhpcyk7Ci0gICAgbV9jb2xv
ckNob29zZXIgPSBXZWJDb2xvckNob29zZXJQcm94eTo6Y3JlYXRlKHRoaXMpOworICAgIG1fY29s
b3JQaWNrZXJVSSA9IFdlYkNvbG9yUGlja2VyVUk6OmNyZWF0ZSh0aGlzKTsKIAogICAgIGlmICht
X3VpQ2xpZW50LnNob3dDb2xvclBpY2tlcih0aGlzLCBpbml0aWFsQ29sb3Iuc2VyaWFsaXplZCgp
LCBtX2NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXIuZ2V0KCkpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX2NvbG9yQ2hvb3NlciA9IG1fcGFnZUNsaWVudC0+Y3JlYXRlQ29sb3JDaG9vc2VyUHJv
eHkodGhpcywgaW5pdGlhbENvbG9yLCBlbGVtZW50UmVjdCk7Ci0gICAgaWYgKCFtX2NvbG9yQ2hv
b3NlcikKKyAgICBtX2NvbG9yUGlja2VyVUkgPSBtX3BhZ2VDbGllbnQtPmNyZWF0ZUNvbG9yUGlj
a2VyVUkodGhpcywgaW5pdGlhbENvbG9yLCBlbGVtZW50UmVjdCk7CisgICAgaWYgKCFtX2NvbG9y
UGlja2VyVUkpCiAgICAgICAgIGRpZEVuZENvbG9yQ2hvb3NlcigpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0Q29sb3JDaG9vc2VyQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9y
KQogewotICAgIEFTU0VSVChtX2NvbG9yQ2hvb3Nlcik7CisgICAgQVNTRVJUKG1fY29sb3JQaWNr
ZXJVSSk7CiAKLSAgICBtX2NvbG9yQ2hvb3Nlci0+c2V0U2VsZWN0ZWRDb2xvcihjb2xvcik7Cisg
ICAgbV9jb2xvclBpY2tlclVJLT5zZXRTZWxlY3RlZENvbG9yKGNvbG9yKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmVuZENvbG9yQ2hvb3NlcigpCiB7Ci0gICAgQVNTRVJUKG1fY29sb3JDaG9v
c2VyKTsKKyAgICBBU1NFUlQobV9jb2xvclBpY2tlclVJKTsKIAotICAgIG1fY29sb3JDaG9vc2Vy
LT5lbmRDaG9vc2VyKCk7CisgICAgbV9jb2xvclBpY2tlclVJLT5lbmRDaG9vc2VyKCk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYg
Y29sb3IpCkBAIC0yOTY1LDkgKzI5NjUsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRW5kQ29s
b3JDaG9vc2VyKCkKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKG1fY29sb3JDaG9vc2VyKSB7Ci0gICAgICAgIG1fY29sb3JDaG9vc2VyLT5pbnZhbGlkYXRl
KCk7Ci0gICAgICAgIG1fY29sb3JDaG9vc2VyID0gbnVsbHB0cjsKKyAgICBpZiAobV9jb2xvclBp
Y2tlclVJKSB7CisgICAgICAgIG1fY29sb3JQaWNrZXJVSS0+aW52YWxpZGF0ZSgpOworICAgICAg
ICBtX2NvbG9yUGlja2VyVUkgPSBudWxscHRyOwogICAgIH0KIAogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkRW5kQ29sb3JDaG9vc2VyKCksIG1fcGFnZUlEKTsKQEAg
LTM4MzYsOSArMzgzNiw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9j
ZXMKICAgICB9CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICBpZiAobV9jb2xv
ckNob29zZXIpIHsKLSAgICAgICAgbV9jb2xvckNob29zZXItPmludmFsaWRhdGUoKTsKLSAgICAg
ICAgbV9jb2xvckNob29zZXIgPSBudWxscHRyOworICAgIGlmIChtX2NvbG9yUGlja2VyVUkpIHsK
KyAgICAgICAgbV9jb2xvclBpY2tlclVJLT5pbnZhbGlkYXRlKCk7CisgICAgICAgIG1fY29sb3JQ
aWNrZXJVSSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKG1fY29sb3JQaWNrZXJSZXN1bHRM
aXN0ZW5lcikgewpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAko
cmV2aXNpb24gMTUzMDk3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBACiAjaW5jbHVkZSAiU2hhcmVhYmxl
Qml0bWFwLmgiCiAjaW5jbHVkZSAiV0tCYXNlLmgiCiAjaW5jbHVkZSAiV0tQYWdlUHJpdmF0ZS5o
IgotI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlclByb3h5LmgiCisjaW5jbHVkZSAiV2ViQ29sb3JQ
aWNrZXJVSS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbURhdGEuaCIKICNpbmNsdWRl
ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJGaW5kQ2xpZW50LmgiCkBA
IC0yMzIsNyArMjMyLDcgQEAgcHJpdmF0ZToKIGNsYXNzIFdlYlBhZ2VQcm94eQogICAgIDogcHVi
bGljIFR5cGVkQVBJT2JqZWN0PEFQSU9iamVjdDo6VHlwZVBhZ2U+CiAjaWYgRU5BQkxFKElOUFVU
X1RZUEVfQ09MT1IpCi0gICAgLCBwdWJsaWMgV2ViQ29sb3JDaG9vc2VyUHJveHk6OkNsaWVudAor
ICAgICwgcHVibGljIFdlYkNvbG9yUGlja2VyVUk6OkNsaWVudAogI2VuZGlmCiAgICAgLCBwdWJs
aWMgV2ViUG9wdXBNZW51UHJveHk6OkNsaWVudAogICAgICwgcHVibGljIENvcmVJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciB7CkBAIC0xMTk5LDcgKzExOTksNyBAQCBwcml2YXRlOgogICAgIERlcXVlPFF1
ZXVlZFRvdWNoRXZlbnRzPiBtX3RvdWNoRXZlbnRRdWV1ZTsKICNlbmRpZgogI2lmIEVOQUJMRShJ
TlBVVF9UWVBFX0NPTE9SKQotICAgIFJlZlB0cjxXZWJDb2xvckNob29zZXJQcm94eT4gbV9jb2xv
ckNob29zZXI7CisgICAgUmVmUHRyPFdlYkNvbG9yUGlja2VyVUk+IG1fY29sb3JQaWNrZXJVSTsK
ICAgICBSZWZQdHI8V2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5PiBtX2NvbG9yUGlj
a2VyUmVzdWx0TGlzdGVuZXI7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gMTUzMDk3
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMzEsNyArMjMxLDcgQEAgUGFzc1JlZlB0cjxXZWJDb250ZXh0
TWVudVByb3h5PiBQYWdlQ2xpZQogfQogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi1Q
YXNzUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29s
b3JDaG9vc2VyUHJveHkoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JikKK1Bhc3NSZWZQdHI8V2ViQ29sb3JQaWNrZXJVST4gUGFnZUNs
aWVudEltcGw6OmNyZWF0ZUNvbG9yUGlja2VyVUkoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29y
ZTo6Q29sb3ImLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogICAgIHJldHVybiAwOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvUGFnZUNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCShyZXZpc2lvbiAxNTMwOTcpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC04NCw3ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYlBv
cHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKTsKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQ
cm94eShXZWJQYWdlUHJveHkqKTsKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJveHk+IGNyZWF0ZUNvbG9yQ2hvb3Nl
clByb3h5KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbnRpYWxDb2xvciwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb2xv
clBpY2tlclVJPiBjcmVhdGVDb2xvclBpY2tlclVJKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNv
cmU6OkNvbG9yJiBpbnRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwogI2VuZGlm
CiAgICAgdmlydHVhbCB2b2lkIHNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNh
dG9yPiwgYm9vbCBmYWRlT3V0LCBib29sIGFuaW1hdGUpOwogICAgIHZpcnR1YWwgdm9pZCBmbGFz
aEJhY2tpbmdTdG9yZVVwZGF0ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiB1cGRh
dGVSZWN0cyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xp
ZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1BhZ2VDbGllbnRJbXBsLmgJKHJldmlzaW9uIDE1MzA5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3
ICsxMDEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVu
dVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopOwogCiAjaWYgRU5B
QkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbG9yQ2hv
b3NlclByb3h5PiBjcmVhdGVDb2xvckNob29zZXJQcm94eShXZWJQYWdlUHJveHkqLCBjb25zdCBX
ZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7Cisg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbG9yUGlja2VyVUk+IGNyZWF0ZUNvbG9yUGlja2Vy
VUkoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvciwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpOwogI2VuZGlmCiAKICAgICB2b2lkIHNldEZpbmRJbmRpY2F0
b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNhdG9yPiwgYm9vbCBmYWRlT3V0LCBib29sIGFuaW1hdGUp
OwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNs
aWVudEltcGwubW0JKHJldmlzaW9uIDE1MzA5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOTMsNyArMzkz
LDcgQEAgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZQogfQogCiAjaWYg
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi1QYXNzUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5
PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JDaG9vc2VyUHJveHkoV2ViUGFnZVByb3h5Kiwg
Y29uc3QgV2ViQ29yZTo6Q29sb3ImLCAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpCitQYXNzUmVm
UHRyPFdlYkNvbG9yUGlja2VyVUk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xvclBpY2tlclVJ
KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIDA7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlldy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXcu
Y3BwCShyZXZpc2lvbiAxNTMwOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3Jhdy9xcmF3d2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MCwxMCArMTkwLDEwIEBA
IFBhc3NSZWZQdHI8V2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5PiAKIH0KIAogI2lmIEVOQUJM
RShJTlBVVF9UWVBFX0NPTE9SKQotUGFzc1JlZlB0cjxXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclBy
b3h5PiBRUmF3V2ViVmlld1ByaXZhdGU6OmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KFdlYktpdDo6
V2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGludGlhbENvbG9yLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JikKK1Bhc3NSZWZQdHI8V2ViS2l0OjpXZWJDb2xvclBpY2tlclVJPiBR
UmF3V2ViVmlld1ByaXZhdGU6OmNyZWF0ZUNvbG9yUGlja2VyVUkoV2ViS2l0OjpXZWJQYWdlUHJv
eHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW50aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIFBhc3NSZWZQdHI8
V2ViS2l0OjpXZWJDb2xvckNob29zZXJQcm94eT4oKTsKKyAgICByZXR1cm4gUGFzc1JlZlB0cjxX
ZWJLaXQ6OldlYkNvbG9yUGlja2VyVUk+KCk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXdfcF9wLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXdfcF9wLmgJ
KHJldmlzaW9uIDE1MzA5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3
L3FyYXd3ZWJ2aWV3X3BfcC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5PiBj
cmVhdGVDb250ZXh0TWVudVByb3h5KFdlYktpdDo6V2ViUGFnZVByb3h5KiB3ZWJQYWdlUHJveHkp
OwogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHk+IGNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KFdl
YktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGludGlhbENvbG9yLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYktpdDo6
V2ViQ29sb3JQaWNrZXJVST4gY3JlYXRlQ29sb3JQaWNrZXJVSShXZWJLaXQ6OldlYlBhZ2VQcm94
eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbnRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYpOwogI2VuZGlmCiAKICAgICBRUmF3V2ViVmlld1ByaXZhdGUoV2ViS2l0OjpXZWJDb250
ZXh0KiwgV2ViS2l0OjpXZWJQYWdlR3JvdXAqLCBRUmF3V2ViVmlld0NsaWVudCopOwpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvV2ViVmlldy5jcHAJKHJldmlzaW9uIDE1MzA5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MTIsNyArNDEyLDcgQEAgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBXZWJWaWV3Ogog
fQogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi1QYXNzUmVmUHRyPFdlYkNvbG9yQ2hv
b3NlclByb3h5PiBXZWJWaWV3OjpjcmVhdGVDb2xvckNob29zZXJQcm94eShXZWJQYWdlUHJveHkq
LCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKQorUGFzc1Jl
ZlB0cjxXZWJDb2xvclBpY2tlclVJPiBXZWJWaWV3OjpjcmVhdGVDb2xvclBpY2tlclVJKFdlYlBh
Z2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3
LmgJKHJldmlzaW9uIDE1MzA5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL1dlYlZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDcgKzE3NCw3IEBA
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNy
ZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdl
YlBhZ2VQcm94eSopIE9WRVJSSURFOwogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb2xvckNob29zZXJQcm94eT4gY3JlYXRlQ29sb3JDaG9v
c2VyUHJveHkoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xv
ciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxXZWJDb2xvclBpY2tlclVJPiBjcmVhdGVDb2xvclBpY2tlclVJKFdlYlBhZ2VQcm94eSos
IGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmKSBPVkVSUklERTsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIHNldEZpbmRJbmRpY2F0
b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNhdG9yPiwgYm9vbCwgYm9vbCkgT1ZFUlJJREU7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50LmNwcAkocmV2aXNp
b24gMTUzMDk3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFnZUNsaWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJRdFdlYlBhZ2VF
dmVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpZiBFTkFCTEUo
SU5QVVRfVFlQRV9DT0xPUikKLSNpbmNsdWRlICJXZWJDb2xvckNob29zZXJQcm94eVF0LmgiCisj
aW5jbHVkZSAiV2ViQ29sb3JQaWNrZXJVSVF0LmgiCiAjZW5kaWYKICNpbmNsdWRlICJXZWJDb250
ZXh0TWVudVByb3h5UXQuaCIKICNpbmNsdWRlICJXZWJFZGl0Q29tbWFuZFByb3h5LmgiCkBAIC0y
MjEsOSArMjIxLDkgQEAgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBRdFBhZ2VDbAog
fQogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi1QYXNzUmVmUHRyPFdlYkNvbG9yQ2hv
b3NlclByb3h5PiBRdFBhZ2VDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KFdlYlBhZ2VQ
cm94eSogd2ViUGFnZVByb3h5LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCkKK1Bhc3NSZWZQdHI8V2ViQ29sb3JQ
aWNrZXJVST4gUXRQYWdlQ2xpZW50OjpjcmVhdGVDb2xvclBpY2tlclVJKFdlYlBhZ2VQcm94eSog
d2ViUGFnZVByb3h5LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCkKIHsKLSAgICByZXR1cm4gV2ViQ29sb3JDaG9v
c2VyUHJveHlRdDo6Y3JlYXRlKHdlYlBhZ2VQcm94eSwgbV93ZWJWaWV3LCBpbml0aWFsQ29sb3Is
IGVsZW1lbnRSZWN0KTsKKyAgICByZXR1cm4gV2ViQ29sb3JQaWNrZXJVSVF0OjpjcmVhdGUod2Vi
UGFnZVByb3h5LCBtX3dlYlZpZXcsIGluaXRpYWxDb2xvciwgZWxlbWVudFJlY3QpOwogfQogI2Vu
ZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50LmgJ
KHJldmlzaW9uIDE1MzA5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhZ2VD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShX
ZWJQYWdlUHJveHkqKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94
eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKTsKICNpZiBFTkFCTEUoSU5Q
VVRfVFlQRV9DT0xPUikKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJv
eHk+IGNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6
OkNvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKKyAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2ViQ29sb3JQaWNrZXJVST4gY3JlYXRlQ29sb3JQaWNrZXJVSShXZWJQ
YWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0Jik7CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgc2V0RmluZEluZGljYXRv
cihQYXNzUmVmUHRyPEZpbmRJbmRpY2F0b3I+LCBib29sIGZhZGVPdXQsIGJvb2wgYW5pbWF0ZSkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGZsYXNoQmFja2luZ1N0b3JlVXBkYXRlcyhjb25zdCBWZWN0
b3I8V2ViQ29yZTo6SW50UmVjdD4mIHVwZGF0ZVJlY3RzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9XZWJDb2xvckNob29zZXJQcm94eVF0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViQ29sb3JDaG9vc2VyUHJveHlRdC5jcHAJKHJl
dmlzaW9uIDE1MzA5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb2xvckNo
b29zZXJQcm94eVF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxNTIgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykKLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0g
KgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
LSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCi0gKgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJDb2xv
ckNob29zZXJQcm94eVF0LmgiCi0KLSNpbmNsdWRlICJxcXVpY2t3ZWJ2aWV3X3AuaCIKLSNpbmNs
dWRlICJxcXVpY2t3ZWJ2aWV3X3BfcC5oIgotI2luY2x1ZGUgPFF0UW1sL1FRbWxDb250ZXh0Pgot
I2luY2x1ZGUgPFF0UW1sL1FRbWxFbmdpbmU+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgQ29sb3JDaG9vc2VyQ29udGV4dE9iamVjdCA6
IHB1YmxpYyBRT2JqZWN0IHsKLSAgICBRX09CSkVDVAotICAgIFFfUFJPUEVSVFkoUUNvbG9yIGN1
cnJlbnRDb2xvciBSRUFEIGN1cnJlbnRDb2xvciBDT05TVEFOVCBGSU5BTCkKLSAgICBRX1BST1BF
UlRZKFFSZWN0RiBlbGVtZW50UmVjdCBSRUFEIGVsZW1lbnRSZWN0IENPTlNUQU5UIEZJTkFMKQot
Ci1wdWJsaWM6Ci0gICAgQ29sb3JDaG9vc2VyQ29udGV4dE9iamVjdChjb25zdCBRQ29sb3ImIGNv
bG9yLCBjb25zdCBRUmVjdEYmIHJlY3QpCi0gICAgICAgIDogbV9jdXJyZW50Q29sb3IoY29sb3Ip
Ci0gICAgICAgICwgbV9yZWN0KHJlY3QpCi0gICAgewotICAgIH0KLQotICAgIFFDb2xvciBjdXJy
ZW50Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRDb2xvcjsgfQotICAgIFFSZWN0RiBl
bGVtZW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQotCi0gICAgUV9JTlZPS0FCTEUg
dm9pZCBhY2NlcHQoY29uc3QgUUNvbG9yJiBjb2xvcikgeyBlbWl0IGFjY2VwdGVkKGNvbG9yKTsg
fQotICAgIFFfSU5WT0tBQkxFIHZvaWQgcmVqZWN0KCkgeyBlbWl0IHJlamVjdGVkKCk7IH0KLQot
UV9TSUdOQUxTOgotICAgIHZvaWQgYWNjZXB0ZWQoY29uc3QgUUNvbG9yJik7Ci0gICAgdm9pZCBy
ZWplY3RlZCgpOwotCi1wcml2YXRlOgotICAgIFFDb2xvciBtX2N1cnJlbnRDb2xvcjsKLSAgICBR
UmVjdEYgbV9yZWN0OwotfTsKLQotV2ViQ29sb3JDaG9vc2VyUHJveHlRdDo6V2ViQ29sb3JDaG9v
c2VyUHJveHlRdChXZWJDb2xvckNob29zZXJQcm94eTo6Q2xpZW50KiBjbGllbnQsIFFRdWlja1dl
YlZpZXcqIHdlYlZpZXcsIGNvbnN0IENvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IEludFJlY3Qm
IGVsZW1lbnRSZWN0KQotICAgIDogV2ViQ29sb3JDaG9vc2VyUHJveHkoY2xpZW50KQotICAgICwg
bV93ZWJWaWV3KHdlYlZpZXcpCi17Ci0gICAgY29uc3QgUVJlY3RGIG1hcHBlZFJlY3Q9IG1fd2Vi
Vmlldy0+bWFwUmVjdEZyb21XZWJDb250ZW50KFFSZWN0KGVsZW1lbnRSZWN0KSk7Ci0gICAgQ29s
b3JDaG9vc2VyQ29udGV4dE9iamVjdCogY29udGV4dE9iamVjdCA9IG5ldyBDb2xvckNob29zZXJD
b250ZXh0T2JqZWN0KGluaXRpYWxDb2xvciwgbWFwcGVkUmVjdCk7Ci0gICAgY3JlYXRlSXRlbShj
b250ZXh0T2JqZWN0KTsKLX0KLQotV2ViQ29sb3JDaG9vc2VyUHJveHlRdDo6fldlYkNvbG9yQ2hv
b3NlclByb3h5UXQoKQotewotfQotCi12b2lkIFdlYkNvbG9yQ2hvb3NlclByb3h5UXQ6OmNyZWF0
ZUl0ZW0oUU9iamVjdCogY29udGV4dE9iamVjdCkKLXsKLSAgICBRUW1sQ29tcG9uZW50KiBjb21w
b25lbnQgPSBtX3dlYlZpZXctPmV4cGVyaW1lbnRhbCgpLT5jb2xvckNob29zZXIoKTsKLSAgICBp
ZiAoIWNvbXBvbmVudCkgewotICAgICAgICBkZWxldGUgY29udGV4dE9iamVjdDsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGNyZWF0ZUNvbnRleHQoY29tcG9uZW50LCBjb250ZXh0T2Jq
ZWN0KTsKLSAgICBRT2JqZWN0KiBvYmplY3QgPSBjb21wb25lbnQtPmJlZ2luQ3JlYXRlKG1fY29u
dGV4dC5nZXQoKSk7Ci0gICAgaWYgKCFvYmplY3QpIHsKLSAgICAgICAgbV9jb250ZXh0LmNsZWFy
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX2NvbG9yQ2hvb3NlciA9IGFkb3B0
UHRyKHFvYmplY3RfY2FzdDxRUXVpY2tJdGVtKj4ob2JqZWN0KSk7Ci0gICAgaWYgKCFtX2NvbG9y
Q2hvb3NlcikgewotICAgICAgICBtX2NvbnRleHQuY2xlYXIoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIC8vIE5lZWRzIHRvIGJlIGVucXVldWUgYmVjYXVzZSBpdCBtaWdodCB0cmln
Z2VyIGRlbGV0aW9uLgotICAgIGNvbm5lY3QoY29udGV4dE9iamVjdCwgU0lHTkFMKGFjY2VwdGVk
KFFDb2xvcikpLCBTTE9UKG5vdGlmeUNvbG9yU2VsZWN0ZWQoUUNvbG9yKSksIFF0OjpRdWV1ZWRD
b25uZWN0aW9uKTsKLSAgICBjb25uZWN0KGNvbnRleHRPYmplY3QsIFNJR05BTChyZWplY3RlZCgp
KSwgU0xPVChlbmRDaG9vc2VyKCkpLCBRdDo6UXVldWVkQ29ubmVjdGlvbik7Ci0KLSAgICBRUXVp
Y2tXZWJWaWV3UHJpdmF0ZTo6Z2V0KG1fd2ViVmlldyktPmFkZEF0dGFjaGVkUHJvcGVydHlUbyht
X2NvbG9yQ2hvb3Nlci5nZXQoKSk7Ci0gICAgbV9jb2xvckNob29zZXItPnNldFBhcmVudEl0ZW0o
bV93ZWJWaWV3KTsKLQotICAgIGNvbXBvbmVudC0+Y29tcGxldGVDcmVhdGUoKTsKLX0KLQotdm9p
ZCBXZWJDb2xvckNob29zZXJQcm94eVF0OjpjcmVhdGVDb250ZXh0KFFRbWxDb21wb25lbnQqIGNv
bXBvbmVudCwgUU9iamVjdCogY29udGV4dE9iamVjdCkKLXsKLSAgICBRUW1sQ29udGV4dCogYmFz
ZUNvbnRleHQgPSBjb21wb25lbnQtPmNyZWF0aW9uQ29udGV4dCgpOwotICAgIGlmICghYmFzZUNv
bnRleHQpCi0gICAgICAgIGJhc2VDb250ZXh0ID0gUVFtbEVuZ2luZTo6Y29udGV4dEZvck9iamVj
dChtX3dlYlZpZXcpOwotICAgIG1fY29udGV4dCA9IGFkb3B0UHRyKG5ldyBRUW1sQ29udGV4dChi
YXNlQ29udGV4dCkpOwotCi0gICAgY29udGV4dE9iamVjdC0+c2V0UGFyZW50KG1fY29udGV4dC5n
ZXQoKSk7Ci0gICAgbV9jb250ZXh0LT5zZXRDb250ZXh0UHJvcGVydHkoUUxhdGluMVN0cmluZygi
bW9kZWwiKSwgY29udGV4dE9iamVjdCk7Ci0gICAgbV9jb250ZXh0LT5zZXRDb250ZXh0T2JqZWN0
KGNvbnRleHRPYmplY3QpOwotfQotCi12b2lkIFdlYkNvbG9yQ2hvb3NlclByb3h5UXQ6OnNldFNl
bGVjdGVkQ29sb3IoY29uc3QgQ29sb3ImKQotewotICAgIC8vIFRoaXMgaXMgc3VwcG9zZSB0byBi
ZSB1c2VkIHRvIHJlYWN0IHRvIERPTSBjaGFuZ2VzLiBXaGVuCi0gICAgLy8gYSB1c2VyIHNjcmlw
dCBjaGFuZ2VzIHRoZSBpbnB1dCB2YWx1ZSwgdGhlIG1ldGhvZCBnaXZlcyB0aGUKLSAgICAvLyBv
cHRpb24gdG8gdXBkYXRlIHRoZSBjb2xvciBjaG9vc2VyIFVJIGlmIHdlIHdlcmUgc2hvd2luZyB0
aGUKLSAgICAvLyBjdXJyZW50IHZhbHVlLiBTaW5jZSB3ZSBkb24ndCwgaXQgaXMgaXJyZWxldmFu
dCByaWdodCBub3cuCi0gICAgLy8gQW5kIHllcywgdGhlIG5hbWUgc291bmRzIG1pc2xlYWRpbmcg
YnV0IGNvbWVzIGZyb20gV2ViQ29yZS4KLX0KLQotdm9pZCBXZWJDb2xvckNob29zZXJQcm94eVF0
Ojpub3RpZnlDb2xvclNlbGVjdGVkKGNvbnN0IFFDb2xvciYgY29sb3IpCi17Ci0gICAgaWYgKCFt
X2NsaWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gQWxwaGEgaXMgYWx3YXlzIGlnbm9y
ZWQgYnkgdGhlIGNvbG9yIGlucHV0Ci0gICAgQ29sb3IgY29yZUNvbG9yID0gbWFrZVJHQihjb2xv
ci5yZWQoKSwgY29sb3IuZ3JlZW4oKSwgY29sb3IuYmx1ZSgpKTsKLSAgICBtX2NsaWVudC0+ZGlk
Q2hvb3NlQ29sb3IoY29yZUNvbG9yKTsKLQotICAgIGVuZENob29zZXIoKTsKLX0KLQotdm9pZCBX
ZWJDb2xvckNob29zZXJQcm94eVF0OjplbmRDaG9vc2VyKCkKLXsKLSAgICBtX2NvbG9yQ2hvb3Nl
ci5jbGVhcigpOwotICAgIG1fY29udGV4dC5jbGVhcigpOwotCi0gICAgaWYgKCFtX2NsaWVudCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jbGllbnQtPmRpZEVuZENvbG9yQ2hvb3NlcigpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlclBy
b3h5UXQubW9jIgotI2luY2x1ZGUgIm1vY19XZWJDb2xvckNob29zZXJQcm94eVF0LmNwcCIKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb2xvckNob29zZXJQcm94eVF0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbG9yQ2hvb3Nl
clByb3h5UXQuaAkocmV2aXNpb24gMTUzMDk3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1dlYkNvbG9yQ2hvb3NlclByb3h5UXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3NSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAq
Ci0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KLSAqCi0gKi8KLQotI2lmbmRlZiBXZWJDb2xvckNob29zZXJQcm94eVF0X2gKLSNkZWZp
bmUgV2ViQ29sb3JDaG9vc2VyUHJveHlRdF9oCi0KLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5j
bHVkZSAiV2ViQ29sb3JDaG9vc2VyUHJveHkuaCIKLSNpbmNsdWRlIDxRdENvcmUvUU9iamVjdD4K
LSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0KLVFUX0JFR0lOX05BTUVTUEFDRQotY2xhc3MgUVFt
bENvbXBvbmVudDsKLWNsYXNzIFFRbWxDb250ZXh0OwotY2xhc3MgUVF1aWNrSXRlbTsKLVFUX0VO
RF9OQU1FU1BBQ0UKLQotY2xhc3MgUVF1aWNrV2ViVmlldzsKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotY2xhc3MgQ29sb3I7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJDb2xv
ckNob29zZXJQcm94eVF0IDogcHVibGljIFFPYmplY3QsIHB1YmxpYyBXZWJDb2xvckNob29zZXJQ
cm94eSB7Ci0gICAgUV9PQkpFQ1QKLQotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdl
YkNvbG9yQ2hvb3NlclByb3h5PiBjcmVhdGUoV2ViQ29sb3JDaG9vc2VyUHJveHk6OkNsaWVudCog
Y2xpZW50LCBRUXVpY2tXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5p
dGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29sb3JDaG9vc2VyUHJveHlRdChjbGllbnQs
IHdlYlZpZXcsIGluaXRpYWxDb2xvciwgZWxlbWVudFJlY3QpKTsKLSAgICB9Ci0gICAgfldlYkNv
bG9yQ2hvb3NlclByb3h5UXQoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZENvbG9y
KGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7Ci0KLXB1YmxpYyBRX1NMT1RTOgotICAgIHZpcnR1YWwg
dm9pZCBlbmRDaG9vc2VyKCk7Ci0KLXByaXZhdGUgUV9TTE9UUzoKLSAgICB2b2lkIG5vdGlmeUNv
bG9yU2VsZWN0ZWQoY29uc3QgUUNvbG9yJik7Ci0KLXByaXZhdGU6Ci0gICAgV2ViQ29sb3JDaG9v
c2VyUHJveHlRdChXZWJDb2xvckNob29zZXJQcm94eTo6Q2xpZW50KiwgUVF1aWNrV2ViVmlldyos
IGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwotCi0gICAg
dm9pZCBjcmVhdGVJdGVtKFFPYmplY3QqKTsKLSAgICB2b2lkIGNyZWF0ZUNvbnRleHQoUVFtbENv
bXBvbmVudCosIFFPYmplY3QqKTsKLQotICAgIE93blB0cjxRUW1sQ29udGV4dD4gbV9jb250ZXh0
OwotICAgIE93blB0cjxRUXVpY2tJdGVtPiBtX2NvbG9yQ2hvb3NlcjsKLQotICAgIFFRdWlja1dl
YlZpZXcqIG1fd2ViVmlldzsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYg
Ly8gV2ViQ29sb3JDaG9vc2VyUHJveHlRdF9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvV2ViQ29sb3JQaWNrZXJVSVF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvV2ViQ29sb3JQaWNrZXJVSVF0LmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb2xvclBpY2tlclVJUXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVs
IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEy
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkNvbG9yUGlja2VyVUlRdC5oIgorCisjaW5jbHVk
ZSAicXF1aWNrd2Vidmlld19wLmgiCisjaW5jbHVkZSAicXF1aWNrd2Vidmlld19wX3AuaCIKKyNp
bmNsdWRlIDxRdFFtbC9RUW1sQ29udGV4dD4KKyNpbmNsdWRlIDxRdFFtbC9RUW1sRW5naW5lPgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IENvbG9yQ2hvb3NlckNvbnRleHRPYmplY3QgOiBwdWJsaWMgUU9iamVjdCB7CisgICAgUV9PQkpF
Q1QKKyAgICBRX1BST1BFUlRZKFFDb2xvciBjdXJyZW50Q29sb3IgUkVBRCBjdXJyZW50Q29sb3Ig
Q09OU1RBTlQgRklOQUwpCisgICAgUV9QUk9QRVJUWShRUmVjdEYgZWxlbWVudFJlY3QgUkVBRCBl
bGVtZW50UmVjdCBDT05TVEFOVCBGSU5BTCkKKworcHVibGljOgorICAgIENvbG9yQ2hvb3NlckNv
bnRleHRPYmplY3QoY29uc3QgUUNvbG9yJiBjb2xvciwgY29uc3QgUVJlY3RGJiByZWN0KQorICAg
ICAgICA6IG1fY3VycmVudENvbG9yKGNvbG9yKQorICAgICAgICAsIG1fcmVjdChyZWN0KQorICAg
IHsKKyAgICB9CisKKyAgICBRQ29sb3IgY3VycmVudENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9j
dXJyZW50Q29sb3I7IH0KKyAgICBRUmVjdEYgZWxlbWVudFJlY3QoKSBjb25zdCB7IHJldHVybiBt
X3JlY3Q7IH0KKworICAgIFFfSU5WT0tBQkxFIHZvaWQgYWNjZXB0KGNvbnN0IFFDb2xvciYgY29s
b3IpIHsgZW1pdCBhY2NlcHRlZChjb2xvcik7IH0KKyAgICBRX0lOVk9LQUJMRSB2b2lkIHJlamVj
dCgpIHsgZW1pdCByZWplY3RlZCgpOyB9CisKK1FfU0lHTkFMUzoKKyAgICB2b2lkIGFjY2VwdGVk
KGNvbnN0IFFDb2xvciYpOworICAgIHZvaWQgcmVqZWN0ZWQoKTsKKworcHJpdmF0ZToKKyAgICBR
Q29sb3IgbV9jdXJyZW50Q29sb3I7CisgICAgUVJlY3RGIG1fcmVjdDsKK307CisKK1dlYkNvbG9y
UGlja2VyVUlRdDo6V2ViQ29sb3JQaWNrZXJVSVF0KFdlYkNvbG9yUGlja2VyVUk6OkNsaWVudCog
Y2xpZW50LCBRUXVpY2tXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBDb2xvciYgaW5pdGlhbENvbG9y
LCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCkKKyAgICA6IFdlYkNvbG9yUGlja2VyVUkoY2xp
ZW50KQorICAgICwgbV93ZWJWaWV3KHdlYlZpZXcpCit7CisgICAgY29uc3QgUVJlY3RGIG1hcHBl
ZFJlY3Q9IG1fd2ViVmlldy0+bWFwUmVjdEZyb21XZWJDb250ZW50KFFSZWN0KGVsZW1lbnRSZWN0
KSk7CisgICAgQ29sb3JDaG9vc2VyQ29udGV4dE9iamVjdCogY29udGV4dE9iamVjdCA9IG5ldyBD
b2xvckNob29zZXJDb250ZXh0T2JqZWN0KGluaXRpYWxDb2xvciwgbWFwcGVkUmVjdCk7CisgICAg
Y3JlYXRlSXRlbShjb250ZXh0T2JqZWN0KTsKK30KKworV2ViQ29sb3JQaWNrZXJVSVF0Ojp+V2Vi
Q29sb3JQaWNrZXJVSVF0KCkKK3sKK30KKwordm9pZCBXZWJDb2xvclBpY2tlclVJUXQ6OmNyZWF0
ZUl0ZW0oUU9iamVjdCogY29udGV4dE9iamVjdCkKK3sKKyAgICBRUW1sQ29tcG9uZW50KiBjb21w
b25lbnQgPSBtX3dlYlZpZXctPmV4cGVyaW1lbnRhbCgpLT5jb2xvckNob29zZXIoKTsKKyAgICBp
ZiAoIWNvbXBvbmVudCkgeworICAgICAgICBkZWxldGUgY29udGV4dE9iamVjdDsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGNyZWF0ZUNvbnRleHQoY29tcG9uZW50LCBjb250ZXh0T2Jq
ZWN0KTsKKyAgICBRT2JqZWN0KiBvYmplY3QgPSBjb21wb25lbnQtPmJlZ2luQ3JlYXRlKG1fY29u
dGV4dC5nZXQoKSk7CisgICAgaWYgKCFvYmplY3QpIHsKKyAgICAgICAgbV9jb250ZXh0LmNsZWFy
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2NvbG9yQ2hvb3NlciA9IGFkb3B0
UHRyKHFvYmplY3RfY2FzdDxRUXVpY2tJdGVtKj4ob2JqZWN0KSk7CisgICAgaWYgKCFtX2NvbG9y
Q2hvb3NlcikgeworICAgICAgICBtX2NvbnRleHQuY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIC8vIE5lZWRzIHRvIGJlIGVucXVldWUgYmVjYXVzZSBpdCBtaWdodCB0cmln
Z2VyIGRlbGV0aW9uLgorICAgIGNvbm5lY3QoY29udGV4dE9iamVjdCwgU0lHTkFMKGFjY2VwdGVk
KFFDb2xvcikpLCBTTE9UKG5vdGlmeUNvbG9yU2VsZWN0ZWQoUUNvbG9yKSksIFF0OjpRdWV1ZWRD
b25uZWN0aW9uKTsKKyAgICBjb25uZWN0KGNvbnRleHRPYmplY3QsIFNJR05BTChyZWplY3RlZCgp
KSwgU0xPVChlbmRDaG9vc2VyKCkpLCBRdDo6UXVldWVkQ29ubmVjdGlvbik7CisKKyAgICBRUXVp
Y2tXZWJWaWV3UHJpdmF0ZTo6Z2V0KG1fd2ViVmlldyktPmFkZEF0dGFjaGVkUHJvcGVydHlUbyht
X2NvbG9yQ2hvb3Nlci5nZXQoKSk7CisgICAgbV9jb2xvckNob29zZXItPnNldFBhcmVudEl0ZW0o
bV93ZWJWaWV3KTsKKworICAgIGNvbXBvbmVudC0+Y29tcGxldGVDcmVhdGUoKTsKK30KKwordm9p
ZCBXZWJDb2xvclBpY2tlclVJUXQ6OmNyZWF0ZUNvbnRleHQoUVFtbENvbXBvbmVudCogY29tcG9u
ZW50LCBRT2JqZWN0KiBjb250ZXh0T2JqZWN0KQoreworICAgIFFRbWxDb250ZXh0KiBiYXNlQ29u
dGV4dCA9IGNvbXBvbmVudC0+Y3JlYXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFiYXNlQ29udGV4
dCkKKyAgICAgICAgYmFzZUNvbnRleHQgPSBRUW1sRW5naW5lOjpjb250ZXh0Rm9yT2JqZWN0KG1f
d2ViVmlldyk7CisgICAgbV9jb250ZXh0ID0gYWRvcHRQdHIobmV3IFFRbWxDb250ZXh0KGJhc2VD
b250ZXh0KSk7CisKKyAgICBjb250ZXh0T2JqZWN0LT5zZXRQYXJlbnQobV9jb250ZXh0LmdldCgp
KTsKKyAgICBtX2NvbnRleHQtPnNldENvbnRleHRQcm9wZXJ0eShRTGF0aW4xU3RyaW5nKCJtb2Rl
bCIpLCBjb250ZXh0T2JqZWN0KTsKKyAgICBtX2NvbnRleHQtPnNldENvbnRleHRPYmplY3QoY29u
dGV4dE9iamVjdCk7Cit9CisKK3ZvaWQgV2ViQ29sb3JQaWNrZXJVSVF0OjpzZXRTZWxlY3RlZENv
bG9yKGNvbnN0IENvbG9yJikKK3sKKyAgICAvLyBUaGlzIGlzIHN1cHBvc2UgdG8gYmUgdXNlZCB0
byByZWFjdCB0byBET00gY2hhbmdlcy4gV2hlbgorICAgIC8vIGEgdXNlciBzY3JpcHQgY2hhbmdl
cyB0aGUgaW5wdXQgdmFsdWUsIHRoZSBtZXRob2QgZ2l2ZXMgdGhlCisgICAgLy8gb3B0aW9uIHRv
IHVwZGF0ZSB0aGUgY29sb3IgY2hvb3NlciBVSSBpZiB3ZSB3ZXJlIHNob3dpbmcgdGhlCisgICAg
Ly8gY3VycmVudCB2YWx1ZS4gU2luY2Ugd2UgZG9uJ3QsIGl0IGlzIGlycmVsZXZhbnQgcmlnaHQg
bm93LgorICAgIC8vIEFuZCB5ZXMsIHRoZSBuYW1lIHNvdW5kcyBtaXNsZWFkaW5nIGJ1dCBjb21l
cyBmcm9tIFdlYkNvcmUuCit9CisKK3ZvaWQgV2ViQ29sb3JQaWNrZXJVSVF0Ojpub3RpZnlDb2xv
clNlbGVjdGVkKGNvbnN0IFFDb2xvciYgY29sb3IpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gQWxwaGEgaXMgYWx3YXlzIGlnbm9yZWQgYnkgdGhlIGNv
bG9yIGlucHV0CisgICAgQ29sb3IgY29yZUNvbG9yID0gbWFrZVJHQihjb2xvci5yZWQoKSwgY29s
b3IuZ3JlZW4oKSwgY29sb3IuYmx1ZSgpKTsKKyAgICBtX2NsaWVudC0+ZGlkQ2hvb3NlQ29sb3Io
Y29yZUNvbG9yKTsKKworICAgIGVuZENob29zZXIoKTsKK30KKwordm9pZCBXZWJDb2xvclBpY2tl
clVJUXQ6OmVuZENob29zZXIoKQoreworICAgIG1fY29sb3JDaG9vc2VyLmNsZWFyKCk7CisgICAg
bV9jb250ZXh0LmNsZWFyKCk7CisKKyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2NsaWVudC0+ZGlkRW5kQ29sb3JDaG9vc2VyKCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjaW5jbHVkZSAiV2ViQ29sb3JQaWNrZXJVSVF0Lm1vYyIKKyNpbmNsdWRl
ICJtb2NfV2ViQ29sb3JQaWNrZXJVSVF0LmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9XZWJDb2xvclBpY2tlclVJUXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvV2ViQ29sb3JQaWNrZXJVSVF0LmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViQ29sb3JQaWNrZXJVSVF0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jw
b3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgV2ViQ29sb3JQaWNrZXJV
SVF0X2gKKyNkZWZpbmUgV2ViQ29sb3JQaWNrZXJVSVF0X2gKKworI2luY2x1ZGUgIkludFJlY3Qu
aCIKKyNpbmNsdWRlICJXZWJDb2xvclBpY2tlclVJLmgiCisjaW5jbHVkZSA8UXRDb3JlL1FPYmpl
Y3Q+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCitRVF9CRUdJTl9OQU1FU1BBQ0UKK2NsYXNz
IFFRbWxDb21wb25lbnQ7CitjbGFzcyBRUW1sQ29udGV4dDsKK2NsYXNzIFFRdWlja0l0ZW07CitR
VF9FTkRfTkFNRVNQQUNFCisKK2NsYXNzIFFRdWlja1dlYlZpZXc7CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIENvbG9yOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
Q29sb3JQaWNrZXJVSVF0IDogcHVibGljIFFPYmplY3QsIHB1YmxpYyBXZWJDb2xvclBpY2tlclVJ
IHsKKyAgICBRX09CSkVDVAorCitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29s
b3JQaWNrZXJVST4gY3JlYXRlKFdlYkNvbG9yUGlja2VyVUk6OkNsaWVudCogY2xpZW50LCBRUXVp
Y2tXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgV2ViQ29sb3JQaWNrZXJVSVF0KGNsaWVudCwgd2ViVmlldywgaW5pdGlh
bENvbG9yLCBlbGVtZW50UmVjdCkpOworICAgIH0KKyAgICB+V2ViQ29sb3JQaWNrZXJVSVF0KCk7
CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xv
ciYpOworCitwdWJsaWMgUV9TTE9UUzoKKyAgICB2aXJ0dWFsIHZvaWQgZW5kQ2hvb3NlcigpOwor
Citwcml2YXRlIFFfU0xPVFM6CisgICAgdm9pZCBub3RpZnlDb2xvclNlbGVjdGVkKGNvbnN0IFFD
b2xvciYpOworCitwcml2YXRlOgorICAgIFdlYkNvbG9yUGlja2VyVUlRdChXZWJDb2xvclBpY2tl
clVJOjpDbGllbnQqLCBRUXVpY2tXZWJWaWV3KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0Jik7CisKKyAgICB2b2lkIGNyZWF0ZUl0ZW0oUU9iamVjdCopOwor
ICAgIHZvaWQgY3JlYXRlQ29udGV4dChRUW1sQ29tcG9uZW50KiwgUU9iamVjdCopOworCisgICAg
T3duUHRyPFFRbWxDb250ZXh0PiBtX2NvbnRleHQ7CisgICAgT3duUHRyPFFRdWlja0l0ZW0+IG1f
Y29sb3JDaG9vc2VyOworCisgICAgUVF1aWNrV2ViVmlldyogbV93ZWJWaWV3OworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJDb2xvclBpY2tlclVJUXRfaApJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMTUzMDk3KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MDYsNyArNDA2LDcgQEAKIAkJMzdG
OTBERTMxMzc2NTYwRTAwNTFDRjY4IC8qIEhUVFBDb29raWVBY2NlcHRQb2xpY3kuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2Mzg5NTRGMTMzQkVGMzgw
MDg5NDFENSAvKiBIVFRQQ29va2llQWNjZXB0UG9saWN5LmggKi87IH07CiAJCTNGODdCOUJEMTU4
OTQwMTIwMDkwRkY2MiAvKiBXZWJDb2xvckNob29zZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0Y4N0I5QkExNTg5M0Y2MzAwOTBGRjYyIC8qIFdl
YkNvbG9yQ2hvb3Nlci5jcHAgKi87IH07CiAJCTNGODdCOUJFMTU4OTQwMTkwMDkwRkY2MiAvKiBX
ZWJDb2xvckNob29zZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDNGODdCOUJCMTU4OTNGNjMwMDkwRkY2MiAvKiBXZWJDb2xvckNob29zZXIuaCAqLzsg
fTsKLQkJM0Y4N0I5QzAxNTg5NDBEODAwOTBGRjYyIC8qIFdlYkNvbG9yQ2hvb3NlclByb3h5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzRjg3QjlCRjE1
ODk0MEQ4MDA5MEZGNjIgLyogV2ViQ29sb3JDaG9vc2VyUHJveHkuaCAqLzsgfTsKKwkJM0Y4N0I5
QzAxNTg5NDBEODAwOTBGRjYyIC8qIFdlYkNvbG9yUGlja2VyVUkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNGODdCOUJGMTU4OTQwRDgwMDkwRkY2MiAv
KiBXZWJDb2xvclBpY2tlclVJLmggKi87IH07CiAJCTRGNjAxNDMyMTU1QzVBQTIwMDFGQkRFMCAv
KiBCbG9ja2luZ1Jlc3BvbnNlTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0RjYwMTQzMDE1NUM1QTMyMDAxRkJERTAgLyogQmxvY2tpbmdSZXNwb25z
ZU1hcC5oICovOyB9OwogCQk1MTAyMUU5QzEyQjE2Nzg4MDA1QzAzM0MgLyogV2ViQ29udGV4dE1l
bnVDbGllbnRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTAyMUU5QjEyQjE2Nzg4MDA1QzAzM0MgLyogV2ViQ29udGV4dE1lbnVDbGllbnRNYWMu
bW0gKi87IH07CiAJCTUxMEFGRkI5MTY1NDIwNDgwMDFCQTA1RSAvKiBXZWJSZXNvdXJjZUxvYWRl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBB
RkZCNzE2NTQyMDQ4MDAxQkEwNUUgLyogV2ViUmVzb3VyY2VMb2FkZXIuY3BwICovOyB9OwpAQCAt
MTE5Niw3ICsxMTk2LDcgQEAKIAkJRURDQTcxQjcxMjhEREE4QzAwMjAxQjI2IC8qIFdLQnVuZGxl
UGFnZU92ZXJsYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUEyMkYxMDAxMjg5RkNEOTAwODVFNzRGIC8qIFdLQnVuZGxlUGFnZU92ZXJsYXkuY3Bw
ICovOyB9OwogCQlGMDM2OTc4NTE1RjRCRTZCMDBDM0E4MEUgLyogV0tDb2xvclBpY2tlclJlc3Vs
dExpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEYwMzY5NzgzMTVGNEJFNkIwMEMzQTgwRSAvKiBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVu
ZXIuY3BwICovOyB9OwogCQlGMDM2OTc4NjE1RjRCRTZCMDBDM0E4MEUgLyogV0tDb2xvclBpY2tl
clJlc3VsdExpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGMDM2OTc4NDE1RjRCRTZCMDBDM0E4MEUgLyogV0tDb2xvclBpY2tlclJlc3VsdExp
c3RlbmVyLmggKi87IH07Ci0JCUYwMzY5Nzg4MTVGNEJGMDUwMEMzQTgwRSAvKiBXZWJDb2xvckNo
b29zZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGMDM2OTc4NzE1RjRCRjA1MDBDM0E4MEUgLyogV2ViQ29sb3JDaG9vc2VyUHJveHkuY3Bw
ICovOyB9OworCQlGMDM2OTc4ODE1RjRCRjA1MDBDM0E4MEUgLyogV2ViQ29sb3JQaWNrZXJVSS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMDM2OTc4
NzE1RjRCRjA1MDBDM0E4MEUgLyogV2ViQ29sb3JQaWNrZXJVSS5jcHAgKi87IH07CiAJCUYwMzY5
NzhCMTVGNEJGMTMwMEMzQTgwRSAvKiBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHku
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjAzNjk3
ODkxNUY0QkYxMzAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5j
cHAgKi87IH07CiAJCUY2MTEzRTI1MTI2Q0UxODIwMDU3RDBBNyAvKiBXZWJVc2VyQ29udGVudFVS
TFBhdHRlcm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY2MTEzRTI0MTI2Q0UxODIwMDU3RDBBNyAvKiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAq
LzsgfTsKIAkJRjYxMTNFMjgxMjZDRTE5QjAwNTdEMEE3IC8qIFdLVXNlckNvbnRlbnRVUkxQYXR0
ZXJuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2
MTEzRTI2MTI2Q0UxOUIwMDU3RDBBNyAvKiBXS1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgKi87
IH07CkBAIC0xODcxLDcgKzE4NzEsNyBAQAogCQkzN0Y2MjNCNzEyQTU3QjYyMDBFM0ZERjYgLyog
V0tGaW5kT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0ZpbmRP
cHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTNGODdCOUJBMTU4OTNGNjMw
MDkwRkY2MiAvKiBXZWJDb2xvckNob29zZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViQ29sb3JDaG9vc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJM0Y4N0I5QkIxNTg5M0Y2MzAwOTBGRjYyIC8qIFdlYkNvbG9yQ2hvb3Nlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb2xvckNob29zZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJM0Y4N0I5QkYxNTg5NDBEODAwOTBGRjYyIC8qIFdlYkNvbG9y
Q2hvb3NlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbG9y
Q2hvb3NlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTNGODdCOUJGMTU4
OTQwRDgwMDkwRkY2MiAvKiBXZWJDb2xvclBpY2tlclVJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkNvbG9yUGlja2VyVUkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNEY2MDE0MzAxNTVDNUEzMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9uc2VNYXAuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmxvY2tpbmdSZXNwb25zZU1hcC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTAwMzFGNjEzNzlDQUNCMDBDOERGRTQgLyog
U2VjSXRlbVNoaW0uZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRG
aWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBh
dGggPSBTZWNJdGVtU2hpbS5keWxpYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKIAkJNTEwMjFFOUIxMkIxNjc4ODAwNUMwMzNDIC8qIFdlYkNvbnRleHRNZW51Q2xpZW50TWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29udGV4dE1l
bnVDbGllbnRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzI0LDcgKzI3
MjQsNyBAQAogCQlFMUVFNTNFNjExRjhDRkZCMDBDQ0JFRTQgLyogSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElu
amVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUYwMzY5NzgzMTVGNEJFNkIwMEMzQTgwRSAvKiBXS0NvbG9yUGlja2VyUmVzdWx0TGlz
dGVuZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tDb2xvclBp
Y2tlclJlc3VsdExpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjAz
Njk3ODQxNUY0QkU2QjAwQzNBODBFIC8qIFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVu
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjAzNjk3ODcxNUY0QkYwNTAwQzNB
ODBFIC8qIFdlYkNvbG9yQ2hvb3NlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYkNvbG9yQ2hvb3NlclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRjAzNjk3ODcxNUY0QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2VyVUku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29sb3JQaWNrZXJV
SS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYwMzY5Nzg5MTVGNEJGMTMwMEMz
QTgwRSAvKiBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclBy
b3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjAzNjk3OEExNUY0QkYxMzAw
QzNBODBFIC8qIFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjYxMTNFMjQxMjZDRTE4MjAwNTdEMEE3
IC8qIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTQwNDYsOCArNDA0Niw4IEBACiAJCQkJNTEyRTM1RjAxMzBCNjM4QzAwQUJEMTlB
IC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJ
QkM3MkJBMUIxMUU2NDkwNzAwMUVCNEVBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdC5jcHAgKi8sCiAJ
CQkJQkM3MkJBMUMxMUU2NDkwNzAwMUVCNEVBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdC5oICovLAot
CQkJCUYwMzY5Nzg3MTVGNEJGMDUwMEMzQTgwRSAvKiBXZWJDb2xvckNob29zZXJQcm94eS5jcHAg
Ki8sCi0JCQkJM0Y4N0I5QkYxNTg5NDBEODAwOTBGRjYyIC8qIFdlYkNvbG9yQ2hvb3NlclByb3h5
LmggKi8sCisJCQkJRjAzNjk3ODcxNUY0QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2VyVUku
Y3BwICovLAorCQkJCTNGODdCOUJGMTU4OTQwRDgwMDkwRkY2MiAvKiBXZWJDb2xvclBpY2tlclVJ
LmggKi8sCiAJCQkJRjAzNjk3ODkxNUY0QkYxMzAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2VyUmVz
dWx0TGlzdGVuZXJQcm94eS5jcHAgKi8sCiAJCQkJRjAzNjk3OEExNUY0QkYxMzAwQzNBODBFIC8q
IFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5oICovLAogCQkJCUJDNEE2MkE1MTQ3
NDRFQzYwMDZDNjgxQSAvKiBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCAqLywKQEAgLTU1
NDIsNyArNTU0Miw3IEBACiAJCQkJQkNGNTA3MjgxMjQzMjlBQTAwNTk1NUFFIC8qIFdlYkNlcnRp
ZmljYXRlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMzJENzUxMEY0Mzc4RDAwNThDMTVB
IC8qIFdlYkNocm9tZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJM0Y4N0I5QkUxNTg5NDAx
OTAwOTBGRjYyIC8qIFdlYkNvbG9yQ2hvb3Nlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJM0Y4N0I5
QzAxNTg5NDBEODAwOTBGRjYyIC8qIFdlYkNvbG9yQ2hvb3NlclByb3h5LmggaW4gSGVhZGVycyAq
LywKKwkJCQkzRjg3QjlDMDE1ODk0MEQ4MDA5MEZGNjIgLyogV2ViQ29sb3JQaWNrZXJVSS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkM0QTYyOTAxNDczMTJCRTAwNkM2ODFBIC8qIFdlYkNvbm5lY3Rp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNEE2MjkyMTQ3MzEyQkUwMDZDNjgxQSAvKiBXZWJD
b25uZWN0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTFGRUMxRDE2MjdCNDU3MDA3
MDBGNkQgLyogV2ViQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKQEAgLTY4MTQs
NyArNjgxNCw3IEBACiAJCQkJQkM3MkI5RkExMUU2NDc2QjAwMUVCNEVBIC8qIFdlYkJhY2tGb3J3
YXJkTGlzdFByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMTExQTVBMTEyRjRGQkIwMDMz
N0JBQiAvKiBXZWJDaHJvbWVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJM0Y4N0I5QkQx
NTg5NDAxMjAwOTBGRjYyIC8qIFdlYkNvbG9yQ2hvb3Nlci5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQlGMDM2OTc4ODE1RjRCRjA1MDBDM0E4MEUgLyogV2ViQ29sb3JDaG9vc2VyUHJveHkuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJRjAzNjk3ODgxNUY0QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yUGlj
a2VyVUkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjAzNjk3OEIxNUY0QkYxMzAwQzNBODBFIC8q
IFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQzRBNjI4RjE0NzMxMkJFMDA2QzY4MUEgLyogV2ViQ29ubmVjdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQzRBNjI5MTE0NzMxMkJFMDA2QzY4MUEgLyogV2ViQ29ubmVjdGlvbkNsaWVu
dC5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207417</attachid>
            <date>2013-07-24 16:07:03 -0700</date>
            <delta_ts>2013-07-24 17:02:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-119025-20130724160702.patch</filename>
            <type>text/plain</type>
            <size>55788</size>
            <attacher name="Ruth Fong">ruthiecftg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MzEwNikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcyIEBACisyMDEzLTA3LTI0ICBSdXRoIEZv
bmcgIDxydXRoX2ZvbmdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBXZWJDb2xvckNob29z
ZXJQcm94eQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTQ1MjgwMzk+IGFuZCBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE5MDI1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIFdlYkNvbG9yQ2hvb3NlclByb3h5
IHRvIFdlYkNvbG9yUGlja2VyIHNpbmNlIHRoZSBuYW1lIFdlYkNvbG9yQ2hvb29zZXJQcm94eQor
ICAgICAgICBpbXBsaWVzIGEgb25lLXRvLW9uZSByZWxhdGlvbnNoaXAgd2l0aCBXZWJDb2xvckNo
b29zZXIsIHdoaWNoIHdpbGwgbm90IGJlIHRydWUgd2hlbgorICAgICAgICB0aGUgcGF0Y2ggZm9y
IGJ1ZyA2MTI3NiBsYW5kcy4KKworICAgICAgICBSZW5hbWUgY3JlYXRlQ29sb3JDaG9vc2VyUHJv
eHkgbWV0aG9kIHRvIGNyZWF0ZUNvbG9yUGlja2VyIGluIFdlYlBhZ2VQcm94eSBhbmQgCisgICAg
ICAgIHBsYXRmb3JtLWVxdWl2YWxlbnQgdmVyc2lvbnMgb2YgaXQuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRh
cmdldC5wcmk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JQaWNrZXIpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OmNyZWF0ZUNvbG9yUGlja2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Jhdy9x
cmF3d2Vidmlldy5jcHA6CisgICAgICAgIChRUmF3V2ViVmlld1ByaXZhdGU6OmNyZWF0ZUNvbG9y
UGlja2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlld19wX3Au
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6Y3JlYXRlQ29sb3JQaWNrZXIpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb2xvckNob29zZXJQ
cm94eS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbG9yQ2hvb3NlclBy
b3h5Lmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyLmNwcDog
Q29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yQ2hvb3NlclByb3h5
LmNwcC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JQaWNrZXI6OldlYkNvbG9yUGlja2VyKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JQaWNrZXI6On5XZWJDb2xvclBpY2tlcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbG9yUGlja2VyOjplbmRDaG9vc2VyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29sb3JQaWNrZXI6OnNldFNlbGVjdGVkQ29sb3IpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJDb2xvclBpY2tlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29sb3JDaG9vc2VyUHJveHkuaC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JQaWNrZXI6
OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnNob3dDb2xvckNob29zZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnNldENvbG9yQ2hvb3NlckNvbG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpl
bmRDb2xvckNob29zZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEVuZENv
bG9yQ2hvb3Nlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFm
dGVyUHJvY2Vzc0V4aXRlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOiBS
ZW5hbWVkIG1fY29sb3JDaG9vc2VyIHRvIG1fY29sb3JQaWNrZXIuCisgICAgICAgICogVUlQcm9j
ZXNzL3F0L1F0UGFnZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlF0UGFnZUNsaWVudDo6
Y3JlYXRlQ29sb3JQaWNrZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvV2ViQ29sb3JDaG9vc2VyUHJveHlRdC5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL3F0L1dlYkNvbG9yQ2hvb3NlclByb3h5UXQuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvV2ViQ29sb3JQaWNrZXJRdC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpDb2xvckNob29zZXJDb250ZXh0T2JqZWN0OjpDb2xvckNo
b29zZXJDb250ZXh0T2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6Q29sb3JDaG9vc2VyQ29udGV4
dE9iamVjdDo6Y3VycmVudENvbG9yKToKKyAgICAgICAgKFdlYktpdDo6Q29sb3JDaG9vc2VyQ29u
dGV4dE9iamVjdDo6ZWxlbWVudFJlY3QpOgorICAgICAgICAoV2ViS2l0OjpDb2xvckNob29zZXJD
b250ZXh0T2JqZWN0OjphY2NlcHQpOgorICAgICAgICAoV2ViS2l0OjpDb2xvckNob29zZXJDb250
ZXh0T2JqZWN0OjpyZWplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvclBpY2tlclF0OjpX
ZWJDb2xvclBpY2tlclF0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JQaWNrZXJRdDo6fldl
YkNvbG9yUGlja2VyUXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvclBpY2tlclF0OjpjcmVh
dGVJdGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JQaWNrZXJRdDo6Y3JlYXRlQ29udGV4
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yUGlja2VyUXQ6OnNldFNlbGVjdGVkQ29sb3Ip
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvclBpY2tlclF0Ojpub3RpZnlDb2xvclNlbGVjdGVk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JQaWNrZXJRdDo6ZW5kQ2hvb3Nlcik6CisgICAg
ICAgICogVUlQcm9jZXNzL3F0L1dlYkNvbG9yUGlja2VyUXQuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbG9yUGlja2VyUXQ6OmNyZWF0ZSk6CisgICAgICAgICogV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDEzLTA3LTI0ICBLd2FuZyBZdWwgU2VvICA8c2t5
dWxAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgW1dLMl1bU291cF0gQWRkIGVudHJ5IHBvaW50
IGZvciBuZXR3b3JrIHByb2Nlc3MKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAx
NTMwOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMjY1LDcgKzI2NSw3IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvV2Vi
QmFja0ZvcndhcmRMaXN0LmNwcAogICAgIFVJUHJvY2Vzcy9XZWJCYXR0ZXJ5TWFuYWdlclByb3h5
LmNwcAogICAgIFVJUHJvY2Vzcy9XZWJCYXR0ZXJ5UHJvdmlkZXIuY3BwCi0gICAgVUlQcm9jZXNz
L1dlYkNvbG9yQ2hvb3NlclByb3h5LmNwcAorICAgIFVJUHJvY2Vzcy9XZWJDb2xvclBpY2tlci5j
cHAKICAgICBVSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5LmNwcAog
ICAgIFVJUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAogICAgIFVJUHJvY2Vz
cy9XZWJDb250ZXh0LmNwcApJbmRleDogU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5h
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZp
c2lvbiAxNTMwOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3Jr
aW5nIGNvcHkpCkBAIC04ODUsOCArODg1LDggQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmF0dGVyeU1hbmFnZXJQcm94eS5oIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmF0dGVyeVByb3ZpZGVyLmNwcCBcCiAJU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkJhdHRlcnlQcm92aWRlci5oIFwKLQlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29sb3JDaG9vc2VyUHJveHkuY3BwIFwKLQlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29sb3JDaG9vc2VyUHJveHkuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbG9yUGlja2VyLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yUGlj
a2VyLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tlclJlc3VsdExp
c3RlbmVyUHJveHkuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNr
ZXJSZXN1bHRMaXN0ZW5lclByb3h5LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9UYXJnZXQu
cHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkJKHJldmlzaW9uIDE1
MzA5NykKKysrIFNvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTI0
Miw3ICsyNDIsNyBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRM
aXN0LmggXAogICAgIFVJUHJvY2Vzcy9XZWJCYXR0ZXJ5TWFuYWdlclByb3h5LmggXAogICAgIFVJ
UHJvY2Vzcy9XZWJCYXR0ZXJ5UHJvdmlkZXIuaCBcCi0gICAgVUlQcm9jZXNzL1dlYkNvbG9yQ2hv
b3NlclByb3h5LmggXAorICAgIFVJUHJvY2Vzcy9XZWJDb2xvclBpY2tlci5oIFwKICAgICBVSVBy
b2Nlc3MvV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5LmggXAogICAgIFVJUHJvY2Vz
cy9XZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggXAogICAgIFVJUHJvY2Vzcy9XZWJDb250ZXh0
LmggXApAQCAtNjAwLDcgKzYwMCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFVJUHJvY2Vzcy9XZWJC
YWNrRm9yd2FyZExpc3QuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViQmF0dGVyeU1hbmFnZXJQcm94
eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9XZWJCYXR0ZXJ5UHJvdmlkZXIuY3BwIFwKLSAgICBVSVBy
b2Nlc3MvV2ViQ29sb3JDaG9vc2VyUHJveHkuY3BwIFwKKyAgICBVSVByb2Nlc3MvV2ViQ29sb3JQ
aWNrZXIuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclBy
b3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIFwK
ICAgICBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAgXApAQCAtODQ3LDkgKzg0Nyw5IEBAIGhhdmU/
KFFUUVVJQ0spIHsKIAogICAgIGVuYWJsZT8oSU5QVVRfVFlQRV9DT0xPUikgewogICAgICAgICBI
RUFERVJTICs9IFwKLSAgICAgICAgICAgIFVJUHJvY2Vzcy9xdC9XZWJDb2xvckNob29zZXJQcm94
eVF0LmgKKyAgICAgICAgICAgIFVJUHJvY2Vzcy9xdC9XZWJDb2xvclBpY2tlclF0LmgKICAgICAg
ICAgU09VUkNFUyArPSBcCi0gICAgICAgICAgICBVSVByb2Nlc3MvcXQvV2ViQ29sb3JDaG9vc2Vy
UHJveHlRdC5jcHAKKyAgICAgICAgICAgIFVJUHJvY2Vzcy9xdC9XZWJDb2xvclBpY2tlclF0LmNw
cAogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCShy
ZXZpc2lvbiAxNTMwOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAjZGVmaW5lIFBhZ2VDbGllbnRfaAog
CiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCi0jaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2Vy
UHJveHkuaCIKKyNpbmNsdWRlICJXZWJDb2xvclBpY2tlci5oIgogI2luY2x1ZGUgIldlYlBhZ2VQ
cm94eS5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaD4KQEAgLTY1LDcgKzY1LDcgQEAgY2xhc3MgV2ViQ29u
dGV4dE1lbnVQcm94eTsKIGNsYXNzIFdlYkVkaXRDb21tYW5kUHJveHk7CiBjbGFzcyBXZWJQb3B1
cE1lbnVQcm94eTsKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLWNsYXNzIFdlYkNvbG9y
Q2hvb3NlclByb3h5OworY2xhc3MgV2ViQ29sb3JQaWNrZXI7CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKE1BQykKQEAgLTE4Nyw3ICsxODcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVBy
b3h5KikgPSAwOwogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5PiBjcmVhdGVDb2xvckNob29zZXJQcm94eShX
ZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JikgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb2xvclBp
Y2tlcj4gY3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29s
b3ImIGluaXRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpID0gMDsKICNlbmRpZgog
CiAgICAgdmlydHVhbCB2b2lkIHNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNh
dG9yPiwgYm9vbCBmYWRlT3V0LCBib29sIGFuaW1hdGUpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb2xvckNob29zZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yQ2hvb3NlclByb3h5LmNwcAkocmV2aXNpb24g
MTUzMDk3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yQ2hvb3NlclByb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyUHJveHkuaCIK
LQotI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
V2ViQ29sb3JDaG9vc2VyUHJveHk6OldlYkNvbG9yQ2hvb3NlclByb3h5KENsaWVudCogY2xpZW50
KQotICAgIDogbV9jbGllbnQoY2xpZW50KQotewotfQotCi1XZWJDb2xvckNob29zZXJQcm94eTo6
fldlYkNvbG9yQ2hvb3NlclByb3h5KCkKLXsKLX0KLQotdm9pZCBXZWJDb2xvckNob29zZXJQcm94
eTo6ZW5kQ2hvb3NlcigpCi17Ci0gICAgaWYgKCFtX2NsaWVudCkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgbV9jbGllbnQtPmRpZEVuZENvbG9yQ2hvb3NlcigpOwotfQotCi12b2lkIFdlYkNvbG9y
Q2hvb3NlclByb3h5OjpzZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xv
cikKLXsKLSAgICBpZiAoIW1fY2xpZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NsaWVu
dC0+ZGlkQ2hvb3NlQ29sb3IoY29sb3IpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbG9yQ2hvb3NlclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yQ2hvb3NlclByb3h5LmgJKHJldmlzaW9uIDE1MzA5NykK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvckNob29zZXJQcm94eS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50
ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYg
V2ViQ29sb3JDaG9vc2VyUHJveHlfaAotI2RlZmluZSBXZWJDb2xvckNob29zZXJQcm94eV9oCi0K
LSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFz
cyBDb2xvcjsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlBhZ2VQcm94eTsK
LQotY2xhc3MgV2ViQ29sb3JDaG9vc2VyUHJveHkgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJDb2xv
ckNob29zZXJQcm94eT4gewotcHVibGljOgotICAgIGNsYXNzIENsaWVudCB7Ci0gICAgcHJvdGVj
dGVkOgotICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0KLQotICAgIHB1YmxpYzoKLSAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZENob29zZUNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgPSAw
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kQ29sb3JDaG9vc2VyKCkgPSAwOwotICAgIH07
Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb2xvckNob29zZXJQcm94eT4gY3JlYXRlKENs
aWVudCogY2xpZW50KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb2xv
ckNob29zZXJQcm94eShjbGllbnQpKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5XZWJDb2xvckNo
b29zZXJQcm94eSgpOwotCi0gICAgdm9pZCBpbnZhbGlkYXRlKCkgeyBtX2NsaWVudCA9IDA7IH0K
LQotICAgIHZpcnR1YWwgdm9pZCBlbmRDaG9vc2VyKCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNl
bGVjdGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKLQotcHJvdGVjdGVkOgotICAgIGV4
cGxpY2l0IFdlYkNvbG9yQ2hvb3NlclByb3h5KENsaWVudCopOwotCi0gICAgQ2xpZW50KiBtX2Ns
aWVudDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKElO
UFVUX1RZUEVfQ09MT1IpCi0KLSNlbmRpZiAvLyBXZWJDb2xvckNob29zZXJQcm94eV9oCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tlci5jcHAJKHJldmlzaW9u
IDE1MzA5NykJKGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yQ2hvb3NlclBy
b3h5LmNwcDoxNTMwOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNr
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJDb2xvckNob29zZXJQcm94eS5o
IgorCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitXZWJDb2xvckNob29zZXJQcm94eTo6V2ViQ29sb3JDaG9vc2VyUHJveHkoQ2xpZW50KiBjbGll
bnQpCisgICAgOiBtX2NsaWVudChjbGllbnQpCit7Cit9CisKK1dlYkNvbG9yQ2hvb3NlclByb3h5
Ojp+V2ViQ29sb3JDaG9vc2VyUHJveHkoKQoreworfQorCit2b2lkIFdlYkNvbG9yQ2hvb3NlclBy
b3h5OjplbmRDaG9vc2VyKCkKK3sKKyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2NsaWVudC0+ZGlkRW5kQ29sb3JDaG9vc2VyKCk7Cit9CisKK3ZvaWQgV2ViQ29s
b3JDaG9vc2VyUHJveHk6OnNldFNlbGVjdGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNv
bG9yKQoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2xp
ZW50LT5kaWRDaG9vc2VDb2xvcihjb2xvcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tlci5jcHAJKHdvcmtpbmcgY29weSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI0LDIyICsyNCwyMiBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJX
ZWJDb2xvckNob29zZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYkNvbG9yUGlja2VyLmgiCiAKICNp
ZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYkNv
bG9yQ2hvb3NlclByb3h5OjpXZWJDb2xvckNob29zZXJQcm94eShDbGllbnQqIGNsaWVudCkKK1dl
YkNvbG9yUGlja2VyOjpXZWJDb2xvclBpY2tlcihDbGllbnQqIGNsaWVudCkKICAgICA6IG1fY2xp
ZW50KGNsaWVudCkKIHsKIH0KIAotV2ViQ29sb3JDaG9vc2VyUHJveHk6On5XZWJDb2xvckNob29z
ZXJQcm94eSgpCitXZWJDb2xvclBpY2tlcjo6fldlYkNvbG9yUGlja2VyKCkKIHsKIH0KIAotdm9p
ZCBXZWJDb2xvckNob29zZXJQcm94eTo6ZW5kQ2hvb3NlcigpCit2b2lkIFdlYkNvbG9yUGlja2Vy
OjplbmRDaG9vc2VyKCkKIHsKICAgICBpZiAoIW1fY2xpZW50KQogICAgICAgICByZXR1cm47CkBA
IC00Nyw3ICs0Nyw3IEBAIHZvaWQgV2ViQ29sb3JDaG9vc2VyUHJveHk6OmVuZENob29zZXIoKQog
ICAgIG1fY2xpZW50LT5kaWRFbmRDb2xvckNob29zZXIoKTsKIH0KIAotdm9pZCBXZWJDb2xvckNo
b29zZXJQcm94eTo6c2V0U2VsZWN0ZWRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3Ip
Cit2b2lkIFdlYkNvbG9yUGlja2VyOjpzZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiBjb2xvcikKIHsKICAgICBpZiAoIW1fY2xpZW50KQogICAgICAgICByZXR1cm47CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXIuaAkocmV2aXNpb24gMTUz
MDk3KQkoZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JDaG9vc2VyUHJveHku
aDoxNTMwOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdlYkNvbG9yQ2hvb3NlclByb3h5X2gKKyNkZWZpbmUgV2ViQ29sb3JDaG9vc2VyUHJveHlf
aAorCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Y2xhc3MgQ29sb3I7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJv
eHk7CisKK2NsYXNzIFdlYkNvbG9yQ2hvb3NlclByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8V2Vi
Q29sb3JDaG9vc2VyUHJveHk+IHsKK3B1YmxpYzoKKyAgICBjbGFzcyBDbGllbnQgeworICAgIHBy
b3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkgeyB9CisKKyAgICBwdWJsaWM6Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYp
ID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZEVuZENvbG9yQ2hvb3NlcigpID0gMDsKKyAg
ICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJveHk+IGNyZWF0
ZShDbGllbnQqIGNsaWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
Q29sb3JDaG9vc2VyUHJveHkoY2xpZW50KSk7CisgICAgfQorCisgICAgdmlydHVhbCB+V2ViQ29s
b3JDaG9vc2VyUHJveHkoKTsKKworICAgIHZvaWQgaW52YWxpZGF0ZSgpIHsgbV9jbGllbnQgPSAw
OyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZW5kQ2hvb3NlcigpOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CisKK3Byb3RlY3RlZDoKKyAg
ICBleHBsaWNpdCBXZWJDb2xvckNob29zZXJQcm94eShDbGllbnQqKTsKKworICAgIENsaWVudCog
bV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJM
RShJTlBVVF9UWVBFX0NPTE9SKQorCisjZW5kaWYgLy8gV2ViQ29sb3JDaG9vc2VyUHJveHlfaApJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyLmgJKHdvcmtpbmcg
Y29weSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJDb2xvckNob29zZXJQcm94eV9oCi0jZGVmaW5lIFdl
YkNvbG9yQ2hvb3NlclByb3h5X2gKKyNpZm5kZWYgV2ViQ29sb3JQaWNrZXJfaAorI2RlZmluZSBX
ZWJDb2xvclBpY2tlcl9oCiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKIApAQCAtMzks
NyArMzksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViUGFnZVByb3h5OwogCi1j
bGFzcyBXZWJDb2xvckNob29zZXJQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvbG9yQ2hv
b3NlclByb3h5PiB7CitjbGFzcyBXZWJDb2xvclBpY2tlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdl
YkNvbG9yUGlja2VyPiB7CiBwdWJsaWM6CiAgICAgY2xhc3MgQ2xpZW50IHsKICAgICBwcm90ZWN0
ZWQ6CkBAIC01MCwxMiArNTAsMTIgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
RW5kQ29sb3JDaG9vc2VyKCkgPSAwOwogICAgIH07CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxX
ZWJDb2xvckNob29zZXJQcm94eT4gY3JlYXRlKENsaWVudCogY2xpZW50KQorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBjcmVhdGUoQ2xpZW50KiBjbGllbnQpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvbG9yQ2hvb3NlclByb3h5KGNsaWVudCkp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvbG9yUGlja2VyKGNsaWVudCkpOwog
ICAgIH0KIAotICAgIHZpcnR1YWwgfldlYkNvbG9yQ2hvb3NlclByb3h5KCk7CisgICAgdmlydHVh
bCB+V2ViQ29sb3JQaWNrZXIoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpIHsgbV9jbGllbnQg
PSAwOyB9CiAKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRT
ZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CiAKIHByb3RlY3RlZDoKLSAgICBl
eHBsaWNpdCBXZWJDb2xvckNob29zZXJQcm94eShDbGllbnQqKTsKKyAgICBleHBsaWNpdCBXZWJD
b2xvclBpY2tlcihDbGllbnQqKTsKIAogICAgIENsaWVudCogbV9jbGllbnQ7CiB9OwpAQCAtNzIs
NCArNzIsNCBAQCBwcm90ZWN0ZWQ6CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfVFlQRV9DT0xP
UikKIAotI2VuZGlmIC8vIFdlYkNvbG9yQ2hvb3NlclByb3h5X2gKKyNlbmRpZiAvLyBXZWJDb2xv
clBpY2tlcl9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAkocmV2aXNpb24gMTUzMDk3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3Niw5ICs1NzYsOSBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6Y2xvc2UoKQogICAgIH0KIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAg
IGlmIChtX2NvbG9yQ2hvb3NlcikgewotICAgICAgICBtX2NvbG9yQ2hvb3Nlci0+aW52YWxpZGF0
ZSgpOwotICAgICAgICBtX2NvbG9yQ2hvb3NlciA9IG51bGxwdHI7CisgICAgaWYgKG1fY29sb3JQ
aWNrZXIpIHsKKyAgICAgICAgbV9jb2xvclBpY2tlci0+aW52YWxpZGF0ZSgpOworICAgICAgICBt
X2NvbG9yUGlja2VyID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAobV9jb2xvclBpY2tlclJl
c3VsdExpc3RlbmVyKSB7CkBAIC0yOTIwLDcgKzI5MjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
bmVlZFRvdWNoRXZlbnRzKGJvb2wgCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2hvd0NvbG9yQ2hvb3Nlcihjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5p
dGlhbENvbG9yLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCkKIHsKLSAgICBBU1NFUlQoIW1f
Y29sb3JDaG9vc2VyKTsKKyAgICBBU1NFUlQoIW1fY29sb3JQaWNrZXIpOwogCiAgICAgaWYgKG1f
Y29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lcikgewogICAgICAgICBtX2NvbG9yUGlja2VyUmVzdWx0
TGlzdGVuZXItPmludmFsaWRhdGUoKTsKQEAgLTI5MjgsMjggKzI5MjgsMjggQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNob3dDb2xvckNob29zZXIoY29ucwogICAgIH0KIAogICAgIG1fY29sb3JQaWNr
ZXJSZXN1bHRMaXN0ZW5lciA9IFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eTo6Y3Jl
YXRlKHRoaXMpOwotICAgIG1fY29sb3JDaG9vc2VyID0gV2ViQ29sb3JDaG9vc2VyUHJveHk6OmNy
ZWF0ZSh0aGlzKTsKKyAgICBtX2NvbG9yUGlja2VyID0gV2ViQ29sb3JQaWNrZXI6OmNyZWF0ZSh0
aGlzKTsKIAogICAgIGlmIChtX3VpQ2xpZW50LnNob3dDb2xvclBpY2tlcih0aGlzLCBpbml0aWFs
Q29sb3Iuc2VyaWFsaXplZCgpLCBtX2NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXIuZ2V0KCkpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX2NvbG9yQ2hvb3NlciA9IG1fcGFnZUNsaWVudC0+Y3Jl
YXRlQ29sb3JDaG9vc2VyUHJveHkodGhpcywgaW5pdGlhbENvbG9yLCBlbGVtZW50UmVjdCk7Ci0g
ICAgaWYgKCFtX2NvbG9yQ2hvb3NlcikKKyAgICBtX2NvbG9yUGlja2VyID0gbV9wYWdlQ2xpZW50
LT5jcmVhdGVDb2xvclBpY2tlcih0aGlzLCBpbml0aWFsQ29sb3IsIGVsZW1lbnRSZWN0KTsKKyAg
ICBpZiAoIW1fY29sb3JQaWNrZXIpCiAgICAgICAgIGRpZEVuZENvbG9yQ2hvb3NlcigpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29sb3JDaG9vc2VyQ29sb3IoY29uc3QgV2ViQ29yZTo6
Q29sb3ImIGNvbG9yKQogewotICAgIEFTU0VSVChtX2NvbG9yQ2hvb3Nlcik7CisgICAgQVNTRVJU
KG1fY29sb3JQaWNrZXIpOwogCi0gICAgbV9jb2xvckNob29zZXItPnNldFNlbGVjdGVkQ29sb3Io
Y29sb3IpOworICAgIG1fY29sb3JQaWNrZXItPnNldFNlbGVjdGVkQ29sb3IoY29sb3IpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZW5kQ29sb3JDaG9vc2VyKCkKIHsKLSAgICBBU1NFUlQobV9j
b2xvckNob29zZXIpOworICAgIEFTU0VSVChtX2NvbG9yUGlja2VyKTsKIAotICAgIG1fY29sb3JD
aG9vc2VyLT5lbmRDaG9vc2VyKCk7CisgICAgbV9jb2xvclBpY2tlci0+ZW5kQ2hvb3NlcigpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29s
b3ImIGNvbG9yKQpAQCAtMjk2NSw5ICsyOTY1LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEVu
ZENvbG9yQ2hvb3NlcigpCiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChtX2NvbG9yQ2hvb3NlcikgewotICAgICAgICBtX2NvbG9yQ2hvb3Nlci0+aW52YWxp
ZGF0ZSgpOwotICAgICAgICBtX2NvbG9yQ2hvb3NlciA9IG51bGxwdHI7CisgICAgaWYgKG1fY29s
b3JQaWNrZXIpIHsKKyAgICAgICAgbV9jb2xvclBpY2tlci0+aW52YWxpZGF0ZSgpOworICAgICAg
ICBtX2NvbG9yUGlja2VyID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkRpZEVuZENvbG9yQ2hvb3NlcigpLCBtX3BhZ2VJRCk7CkBAIC0z
ODM2LDkgKzM4MzYsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vz
CiAgICAgfQogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgaWYgKG1fY29sb3JD
aG9vc2VyKSB7Ci0gICAgICAgIG1fY29sb3JDaG9vc2VyLT5pbnZhbGlkYXRlKCk7Ci0gICAgICAg
IG1fY29sb3JDaG9vc2VyID0gbnVsbHB0cjsKKyAgICBpZiAobV9jb2xvclBpY2tlcikgeworICAg
ICAgICBtX2NvbG9yUGlja2VyLT5pbnZhbGlkYXRlKCk7CisgICAgICAgIG1fY29sb3JQaWNrZXIg
PSBudWxscHRyOwogICAgIH0KIAogICAgIGlmIChtX2NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXIp
IHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9u
IDE1MzA5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5o
IgogI2luY2x1ZGUgIldLQmFzZS5oIgogI2luY2x1ZGUgIldLUGFnZVByaXZhdGUuaCIKLSNpbmNs
dWRlICJXZWJDb2xvckNob29zZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYkNvbG9yUGlja2VyLmgi
CiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oIgogI2luY2x1ZGUgIldlYkNvcmVB
cmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkZpbmRDbGllbnQuaCIKQEAgLTIzMiw3ICsy
MzIsNyBAQCBwcml2YXRlOgogY2xhc3MgV2ViUGFnZVByb3h5CiAgICAgOiBwdWJsaWMgVHlwZWRB
UElPYmplY3Q8QVBJT2JqZWN0OjpUeXBlUGFnZT4KICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xP
UikKLSAgICAsIHB1YmxpYyBXZWJDb2xvckNob29zZXJQcm94eTo6Q2xpZW50CisgICAgLCBwdWJs
aWMgV2ViQ29sb3JQaWNrZXI6OkNsaWVudAogI2VuZGlmCiAgICAgLCBwdWJsaWMgV2ViUG9wdXBN
ZW51UHJveHk6OkNsaWVudAogICAgICwgcHVibGljIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7
CkBAIC0xMTk5LDcgKzExOTksNyBAQCBwcml2YXRlOgogICAgIERlcXVlPFF1ZXVlZFRvdWNoRXZl
bnRzPiBtX3RvdWNoRXZlbnRRdWV1ZTsKICNlbmRpZgogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKQotICAgIFJlZlB0cjxXZWJDb2xvckNob29zZXJQcm94eT4gbV9jb2xvckNob29zZXI7Cisg
ICAgUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBtX2NvbG9yUGlja2VyOwogICAgIFJlZlB0cjxXZWJD
b2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHk+IG1fY29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5l
cjsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdl
Q2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCShyZXZpc2lvbiAxNTMwOTcpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIzMSw3ICsyMzEsNyBAQCBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VD
bGllCiB9CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLVBhc3NSZWZQdHI8V2ViQ29s
b3JDaG9vc2VyUHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xvckNob29zZXJQcm94eShX
ZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmKQorUGFzc1JlZlB0cjxXZWJDb2xvclBpY2tlcj4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNv
bG9yUGlja2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVu
dEltcGwuaAkocmV2aXNpb24gMTUzMDk3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvUGFnZUNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRl
UG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5Kik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdl
YkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5Kik7
CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdl
YkNvbG9yQ2hvb3NlclByb3h5PiBjcmVhdGVDb2xvckNob29zZXJQcm94eShXZWJQYWdlUHJveHkq
LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW50aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9y
UGlja2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbnRpYWxDb2xvciwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHNldEZp
bmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNhdG9yPiwgYm9vbCBmYWRlT3V0LCBib29s
IGFuaW1hdGUpOwogICAgIHZpcnR1YWwgdm9pZCBmbGFzaEJhY2tpbmdTdG9yZVVwZGF0ZXMoY29u
c3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiB1cGRhdGVSZWN0cyk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgJKHJldmlz
aW9uIDE1MzA5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGll
bnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVu
dVByb3h5KFdlYlBhZ2VQcm94eSopOwogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5PiBjcmVhdGVDb2xvckNo
b29zZXJQcm94eShXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENv
bG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdl
YkNvbG9yUGlja2VyPiBjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJD
b3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAjZW5k
aWYKIAogICAgIHZvaWQgc2V0RmluZEluZGljYXRvcihQYXNzUmVmUHRyPEZpbmRJbmRpY2F0b3I+
LCBib29sIGZhZGVPdXQsIGJvb2wgYW5pbWF0ZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQkocmV2aXNpb24gMTUzMDk3
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0J
KHdvcmtpbmcgY29weSkKQEAgLTM5Myw3ICszOTMsNyBAQCBQYXNzUmVmUHRyPFdlYkNvbnRleHRN
ZW51UHJveHk+IFBhZ2VDbGllCiB9CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLVBh
c3NSZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xv
ckNob29zZXJQcm94eShXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsICBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JikKK1Bhc3NSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IFBhZ2VDbGll
bnRJbXBsOjpjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpD
b2xvciYsICBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogICAgIHJldHVybiAwOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9y
YXcvcXJhd3dlYnZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3LmNwcAkocmV2aXNpb24gMTUzMDk3KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXcuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTAsMTAgKzE5MCwxMCBAQCBQYXNzUmVmUHRyPFdlYktpdDo6V2ViQ29udGV4dE1l
bnVQcm94eT4gCiB9CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLVBhc3NSZWZQdHI8
V2ViS2l0OjpXZWJDb2xvckNob29zZXJQcm94eT4gUVJhd1dlYlZpZXdQcml2YXRlOjpjcmVhdGVD
b2xvckNob29zZXJQcm94eShXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiBpbnRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpCitQYXNzUmVmUHRyPFdl
YktpdDo6V2ViQ29sb3JQaWNrZXI+IFFSYXdXZWJWaWV3UHJpdmF0ZTo6Y3JlYXRlQ29sb3JQaWNr
ZXIoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW50aWFsQ29s
b3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0g
ICAgcmV0dXJuIFBhc3NSZWZQdHI8V2ViS2l0OjpXZWJDb2xvckNob29zZXJQcm94eT4oKTsKKyAg
ICByZXR1cm4gUGFzc1JlZlB0cjxXZWJLaXQ6OldlYkNvbG9yUGlja2VyPigpOwogfQogI2VuZGlm
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3
X3BfcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3
L3FyYXd3ZWJ2aWV3X3BfcC5oCShyZXZpc2lvbiAxNTMwOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlld19wX3AuaAkod29ya2luZyBjb3B5KQpAQCAt
ODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYktpdDo6V2Vi
Q29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJLaXQ6OldlYlBhZ2VQ
cm94eSogd2ViUGFnZVByb3h5KTsKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5PiBjcmVhdGVD
b2xvckNob29zZXJQcm94eShXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiBpbnRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOworICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxXZWJLaXQ6OldlYkNvbG9yUGlja2VyPiBjcmVhdGVDb2xvclBpY2tlcihXZWJL
aXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbnRpYWxDb2xvciwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpOwogI2VuZGlmCiAKICAgICBRUmF3V2ViVmlld1ByaXZhdGUo
V2ViS2l0OjpXZWJDb250ZXh0KiwgV2ViS2l0OjpXZWJQYWdlR3JvdXAqLCBRUmF3V2ViVmlld0Ns
aWVudCopOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5jcHAJKHJldmlzaW9uIDE1MzA5NykKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MTIsNyArNDEyLDcgQEAgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVBy
b3h5PiBXZWJWaWV3OgogfQogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi1QYXNzUmVm
UHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5PiBXZWJWaWV3OjpjcmVhdGVDb2xvckNob29zZXJQcm94
eShXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKQorUGFzc1JlZlB0cjxXZWJDb2xvclBpY2tlcj4gV2ViVmlldzo6Y3JlYXRlQ29sb3JQ
aWNrZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiAwOwpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL1dlYlZpZXcuaAkocmV2aXNpb24gMTUzMDk3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzQs
NyArMTc0LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJQb3B1cE1l
bnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRN
ZW51UHJveHkoV2ViUGFnZVByb3h5KikgT1ZFUlJJREU7CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVf
Q09MT1IpCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5PiBjcmVh
dGVDb2xvckNob29zZXJQcm94eShXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYg
aW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdl
UHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JikgT1ZFUlJJREU7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRGaW5k
SW5kaWNhdG9yKFBhc3NSZWZQdHI8RmluZEluZGljYXRvcj4sIGJvb2wsIGJvb2wpIE9WRVJSSURF
OwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFnZUNsaWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFnZUNsaWVudC5jcHAJ
KHJldmlzaW9uIDE1MzA5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhZ2VD
bGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiUXRX
ZWJQYWdlRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaWYg
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0jaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyUHJveHlR
dC5oIgorI2luY2x1ZGUgIldlYkNvbG9yUGlja2VyUXQuaCIKICNlbmRpZgogI2luY2x1ZGUgIldl
YkNvbnRleHRNZW51UHJveHlRdC5oIgogI2luY2x1ZGUgIldlYkVkaXRDb21tYW5kUHJveHkuaCIK
QEAgLTIyMSw5ICsyMjEsOSBAQCBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFF0UGFn
ZUNsCiB9CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLVBhc3NSZWZQdHI8V2ViQ29s
b3JDaG9vc2VyUHJveHk+IFF0UGFnZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9vc2VyUHJveHkoV2Vi
UGFnZVByb3h5KiB3ZWJQYWdlUHJveHksIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29s
b3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0KQorUGFzc1JlZlB0cjxXZWJD
b2xvclBpY2tlcj4gUXRQYWdlQ2xpZW50OjpjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkq
IHdlYlBhZ2VQcm94eSwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvciwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QpCiB7Ci0gICAgcmV0dXJuIFdlYkNvbG9yQ2hv
b3NlclByb3h5UXQ6OmNyZWF0ZSh3ZWJQYWdlUHJveHksIG1fd2ViVmlldywgaW5pdGlhbENvbG9y
LCBlbGVtZW50UmVjdCk7CisgICAgcmV0dXJuIFdlYkNvbG9yUGlja2VyUXQ6OmNyZWF0ZSh3ZWJQ
YWdlUHJveHksIG1fd2ViVmlldywgaW5pdGlhbENvbG9yLCBlbGVtZW50UmVjdCk7CiB9CiAjZW5k
aWYKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFnZUNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQuaAko
cmV2aXNpb24gMTUzMDk3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFnZUNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdl
YlBhZ2VQcm94eSopOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5
PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopOwogI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb2xvckNob29zZXJQcm94
eT4gY3JlYXRlQ29sb3JDaG9vc2VyUHJveHkoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6
Q29sb3ImIGluaXRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOworICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxXZWJDb2xvclBpY2tlcj4gY3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVBy
b3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYpOwogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHNldEZpbmRJbmRpY2F0b3IoUGFz
c1JlZlB0cjxGaW5kSW5kaWNhdG9yPiwgYm9vbCBmYWRlT3V0LCBib29sIGFuaW1hdGUpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBmbGFzaEJhY2tpbmdTdG9yZVVwZGF0ZXMoY29uc3QgVmVjdG9yPFdl
YkNvcmU6OkludFJlY3Q+JiB1cGRhdGVSZWN0cyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvV2ViQ29sb3JDaG9vc2VyUHJveHlRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbG9yQ2hvb3NlclByb3h5UXQuY3BwCShyZXZpc2lv
biAxNTMwOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViQ29sb3JDaG9vc2Vy
UHJveHlRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTUyICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViQ29sb3JDaG9v
c2VyUHJveHlRdC5oIgotCi0jaW5jbHVkZSAicXF1aWNrd2Vidmlld19wLmgiCi0jaW5jbHVkZSAi
cXF1aWNrd2Vidmlld19wX3AuaCIKLSNpbmNsdWRlIDxRdFFtbC9RUW1sQ29udGV4dD4KLSNpbmNs
dWRlIDxRdFFtbC9RUW1sRW5naW5lPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIENvbG9yQ2hvb3NlckNvbnRleHRPYmplY3QgOiBwdWJs
aWMgUU9iamVjdCB7Ci0gICAgUV9PQkpFQ1QKLSAgICBRX1BST1BFUlRZKFFDb2xvciBjdXJyZW50
Q29sb3IgUkVBRCBjdXJyZW50Q29sb3IgQ09OU1RBTlQgRklOQUwpCi0gICAgUV9QUk9QRVJUWShR
UmVjdEYgZWxlbWVudFJlY3QgUkVBRCBlbGVtZW50UmVjdCBDT05TVEFOVCBGSU5BTCkKLQotcHVi
bGljOgotICAgIENvbG9yQ2hvb3NlckNvbnRleHRPYmplY3QoY29uc3QgUUNvbG9yJiBjb2xvciwg
Y29uc3QgUVJlY3RGJiByZWN0KQotICAgICAgICA6IG1fY3VycmVudENvbG9yKGNvbG9yKQotICAg
ICAgICAsIG1fcmVjdChyZWN0KQotICAgIHsKLSAgICB9Ci0KLSAgICBRQ29sb3IgY3VycmVudENv
bG9yKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50Q29sb3I7IH0KLSAgICBRUmVjdEYgZWxlbWVu
dFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KLQotICAgIFFfSU5WT0tBQkxFIHZvaWQg
YWNjZXB0KGNvbnN0IFFDb2xvciYgY29sb3IpIHsgZW1pdCBhY2NlcHRlZChjb2xvcik7IH0KLSAg
ICBRX0lOVk9LQUJMRSB2b2lkIHJlamVjdCgpIHsgZW1pdCByZWplY3RlZCgpOyB9Ci0KLVFfU0lH
TkFMUzoKLSAgICB2b2lkIGFjY2VwdGVkKGNvbnN0IFFDb2xvciYpOwotICAgIHZvaWQgcmVqZWN0
ZWQoKTsKLQotcHJpdmF0ZToKLSAgICBRQ29sb3IgbV9jdXJyZW50Q29sb3I7Ci0gICAgUVJlY3RG
IG1fcmVjdDsKLX07Ci0KLVdlYkNvbG9yQ2hvb3NlclByb3h5UXQ6OldlYkNvbG9yQ2hvb3NlclBy
b3h5UXQoV2ViQ29sb3JDaG9vc2VyUHJveHk6OkNsaWVudCogY2xpZW50LCBRUXVpY2tXZWJWaWV3
KiB3ZWJWaWV3LCBjb25zdCBDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBJbnRSZWN0JiBlbGVt
ZW50UmVjdCkKLSAgICA6IFdlYkNvbG9yQ2hvb3NlclByb3h5KGNsaWVudCkKLSAgICAsIG1fd2Vi
Vmlldyh3ZWJWaWV3KQotewotICAgIGNvbnN0IFFSZWN0RiBtYXBwZWRSZWN0PSBtX3dlYlZpZXct
Pm1hcFJlY3RGcm9tV2ViQ29udGVudChRUmVjdChlbGVtZW50UmVjdCkpOwotICAgIENvbG9yQ2hv
b3NlckNvbnRleHRPYmplY3QqIGNvbnRleHRPYmplY3QgPSBuZXcgQ29sb3JDaG9vc2VyQ29udGV4
dE9iamVjdChpbml0aWFsQ29sb3IsIG1hcHBlZFJlY3QpOwotICAgIGNyZWF0ZUl0ZW0oY29udGV4
dE9iamVjdCk7Ci19Ci0KLVdlYkNvbG9yQ2hvb3NlclByb3h5UXQ6On5XZWJDb2xvckNob29zZXJQ
cm94eVF0KCkKLXsKLX0KLQotdm9pZCBXZWJDb2xvckNob29zZXJQcm94eVF0OjpjcmVhdGVJdGVt
KFFPYmplY3QqIGNvbnRleHRPYmplY3QpCi17Ci0gICAgUVFtbENvbXBvbmVudCogY29tcG9uZW50
ID0gbV93ZWJWaWV3LT5leHBlcmltZW50YWwoKS0+Y29sb3JDaG9vc2VyKCk7Ci0gICAgaWYgKCFj
b21wb25lbnQpIHsKLSAgICAgICAgZGVsZXRlIGNvbnRleHRPYmplY3Q7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBjcmVhdGVDb250ZXh0KGNvbXBvbmVudCwgY29udGV4dE9iamVjdCk7
Ci0gICAgUU9iamVjdCogb2JqZWN0ID0gY29tcG9uZW50LT5iZWdpbkNyZWF0ZShtX2NvbnRleHQu
Z2V0KCkpOwotICAgIGlmICghb2JqZWN0KSB7Ci0gICAgICAgIG1fY29udGV4dC5jbGVhcigpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9jb2xvckNob29zZXIgPSBhZG9wdFB0cihx
b2JqZWN0X2Nhc3Q8UVF1aWNrSXRlbSo+KG9iamVjdCkpOwotICAgIGlmICghbV9jb2xvckNob29z
ZXIpIHsKLSAgICAgICAgbV9jb250ZXh0LmNsZWFyKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICAvLyBOZWVkcyB0byBiZSBlbnF1ZXVlIGJlY2F1c2UgaXQgbWlnaHQgdHJpZ2dlciBk
ZWxldGlvbi4KLSAgICBjb25uZWN0KGNvbnRleHRPYmplY3QsIFNJR05BTChhY2NlcHRlZChRQ29s
b3IpKSwgU0xPVChub3RpZnlDb2xvclNlbGVjdGVkKFFDb2xvcikpLCBRdDo6UXVldWVkQ29ubmVj
dGlvbik7Ci0gICAgY29ubmVjdChjb250ZXh0T2JqZWN0LCBTSUdOQUwocmVqZWN0ZWQoKSksIFNM
T1QoZW5kQ2hvb3NlcigpKSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOwotCi0gICAgUVF1aWNrV2Vi
Vmlld1ByaXZhdGU6OmdldChtX3dlYlZpZXcpLT5hZGRBdHRhY2hlZFByb3BlcnR5VG8obV9jb2xv
ckNob29zZXIuZ2V0KCkpOwotICAgIG1fY29sb3JDaG9vc2VyLT5zZXRQYXJlbnRJdGVtKG1fd2Vi
Vmlldyk7Ci0KLSAgICBjb21wb25lbnQtPmNvbXBsZXRlQ3JlYXRlKCk7Ci19Ci0KLXZvaWQgV2Vi
Q29sb3JDaG9vc2VyUHJveHlRdDo6Y3JlYXRlQ29udGV4dChRUW1sQ29tcG9uZW50KiBjb21wb25l
bnQsIFFPYmplY3QqIGNvbnRleHRPYmplY3QpCi17Ci0gICAgUVFtbENvbnRleHQqIGJhc2VDb250
ZXh0ID0gY29tcG9uZW50LT5jcmVhdGlvbkNvbnRleHQoKTsKLSAgICBpZiAoIWJhc2VDb250ZXh0
KQotICAgICAgICBiYXNlQ29udGV4dCA9IFFRbWxFbmdpbmU6OmNvbnRleHRGb3JPYmplY3QobV93
ZWJWaWV3KTsKLSAgICBtX2NvbnRleHQgPSBhZG9wdFB0cihuZXcgUVFtbENvbnRleHQoYmFzZUNv
bnRleHQpKTsKLQotICAgIGNvbnRleHRPYmplY3QtPnNldFBhcmVudChtX2NvbnRleHQuZ2V0KCkp
OwotICAgIG1fY29udGV4dC0+c2V0Q29udGV4dFByb3BlcnR5KFFMYXRpbjFTdHJpbmcoIm1vZGVs
IiksIGNvbnRleHRPYmplY3QpOwotICAgIG1fY29udGV4dC0+c2V0Q29udGV4dE9iamVjdChjb250
ZXh0T2JqZWN0KTsKLX0KLQotdm9pZCBXZWJDb2xvckNob29zZXJQcm94eVF0OjpzZXRTZWxlY3Rl
ZENvbG9yKGNvbnN0IENvbG9yJikKLXsKLSAgICAvLyBUaGlzIGlzIHN1cHBvc2UgdG8gYmUgdXNl
ZCB0byByZWFjdCB0byBET00gY2hhbmdlcy4gV2hlbgotICAgIC8vIGEgdXNlciBzY3JpcHQgY2hh
bmdlcyB0aGUgaW5wdXQgdmFsdWUsIHRoZSBtZXRob2QgZ2l2ZXMgdGhlCi0gICAgLy8gb3B0aW9u
IHRvIHVwZGF0ZSB0aGUgY29sb3IgY2hvb3NlciBVSSBpZiB3ZSB3ZXJlIHNob3dpbmcgdGhlCi0g
ICAgLy8gY3VycmVudCB2YWx1ZS4gU2luY2Ugd2UgZG9uJ3QsIGl0IGlzIGlycmVsZXZhbnQgcmln
aHQgbm93LgotICAgIC8vIEFuZCB5ZXMsIHRoZSBuYW1lIHNvdW5kcyBtaXNsZWFkaW5nIGJ1dCBj
b21lcyBmcm9tIFdlYkNvcmUuCi19Ci0KLXZvaWQgV2ViQ29sb3JDaG9vc2VyUHJveHlRdDo6bm90
aWZ5Q29sb3JTZWxlY3RlZChjb25zdCBRQ29sb3ImIGNvbG9yKQotewotICAgIGlmICghbV9jbGll
bnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEFscGhhIGlzIGFsd2F5cyBpZ25vcmVkIGJ5
IHRoZSBjb2xvciBpbnB1dAotICAgIENvbG9yIGNvcmVDb2xvciA9IG1ha2VSR0IoY29sb3IucmVk
KCksIGNvbG9yLmdyZWVuKCksIGNvbG9yLmJsdWUoKSk7Ci0gICAgbV9jbGllbnQtPmRpZENob29z
ZUNvbG9yKGNvcmVDb2xvcik7Ci0KLSAgICBlbmRDaG9vc2VyKCk7Ci19Ci0KLXZvaWQgV2ViQ29s
b3JDaG9vc2VyUHJveHlRdDo6ZW5kQ2hvb3NlcigpCi17Ci0gICAgbV9jb2xvckNob29zZXIuY2xl
YXIoKTsKLSAgICBtX2NvbnRleHQuY2xlYXIoKTsKLQotICAgIGlmICghbV9jbGllbnQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIG1fY2xpZW50LT5kaWRFbmRDb2xvckNob29zZXIoKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNpbmNsdWRlICJXZWJDb2xvckNob29zZXJQcm94eVF0
Lm1vYyIKLSNpbmNsdWRlICJtb2NfV2ViQ29sb3JDaG9vc2VyUHJveHlRdC5jcHAiCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViQ29sb3JDaG9vc2VyUHJveHlRdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb2xvckNob29zZXJQcm94
eVF0LmgJKHJldmlzaW9uIDE1MzA5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9X
ZWJDb2xvckNob29zZXJQcm94eVF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNzUgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
Ci0gKgotICovCi0KLSNpZm5kZWYgV2ViQ29sb3JDaG9vc2VyUHJveHlRdF9oCi0jZGVmaW5lIFdl
YkNvbG9yQ2hvb3NlclByb3h5UXRfaAotCi0jaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUg
IldlYkNvbG9yQ2hvb3NlclByb3h5LmgiCi0jaW5jbHVkZSA8UXRDb3JlL1FPYmplY3Q+Ci0jaW5j
bHVkZSA8d3RmL093blB0ci5oPgotCi1RVF9CRUdJTl9OQU1FU1BBQ0UKLWNsYXNzIFFRbWxDb21w
b25lbnQ7Ci1jbGFzcyBRUW1sQ29udGV4dDsKLWNsYXNzIFFRdWlja0l0ZW07Ci1RVF9FTkRfTkFN
RVNQQUNFCi0KLWNsYXNzIFFRdWlja1dlYlZpZXc7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNs
YXNzIENvbG9yOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViQ29sb3JDaG9v
c2VyUHJveHlRdCA6IHB1YmxpYyBRT2JqZWN0LCBwdWJsaWMgV2ViQ29sb3JDaG9vc2VyUHJveHkg
ewotICAgIFFfT0JKRUNUCi0KLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb2xv
ckNob29zZXJQcm94eT4gY3JlYXRlKFdlYkNvbG9yQ2hvb3NlclByb3h5OjpDbGllbnQqIGNsaWVu
dCwgUVF1aWNrV2ViVmlldyogd2ViVmlldywgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxD
b2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QpCi0gICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvbG9yQ2hvb3NlclByb3h5UXQoY2xpZW50LCB3ZWJW
aWV3LCBpbml0aWFsQ29sb3IsIGVsZW1lbnRSZWN0KSk7Ci0gICAgfQotICAgIH5XZWJDb2xvckNo
b29zZXJQcm94eVF0KCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRDb2xvcihjb25z
dCBXZWJDb3JlOjpDb2xvciYpOwotCi1wdWJsaWMgUV9TTE9UUzoKLSAgICB2aXJ0dWFsIHZvaWQg
ZW5kQ2hvb3NlcigpOwotCi1wcml2YXRlIFFfU0xPVFM6Ci0gICAgdm9pZCBub3RpZnlDb2xvclNl
bGVjdGVkKGNvbnN0IFFDb2xvciYpOwotCi1wcml2YXRlOgotICAgIFdlYkNvbG9yQ2hvb3NlclBy
b3h5UXQoV2ViQ29sb3JDaG9vc2VyUHJveHk6OkNsaWVudCosIFFRdWlja1dlYlZpZXcqLCBjb25z
dCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKLQotICAgIHZvaWQg
Y3JlYXRlSXRlbShRT2JqZWN0Kik7Ci0gICAgdm9pZCBjcmVhdGVDb250ZXh0KFFRbWxDb21wb25l
bnQqLCBRT2JqZWN0Kik7Ci0KLSAgICBPd25QdHI8UVFtbENvbnRleHQ+IG1fY29udGV4dDsKLSAg
ICBPd25QdHI8UVF1aWNrSXRlbT4gbV9jb2xvckNob29zZXI7Ci0KLSAgICBRUXVpY2tXZWJWaWV3
KiBtX3dlYlZpZXc7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdl
YkNvbG9yQ2hvb3NlclByb3h5UXRfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L1dlYkNvbG9yUGlja2VyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9XZWJDb2xvclBpY2tlclF0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9XZWJDb2xvclBpY2tlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlv
bi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXZWJDb2xvclBpY2tlclF0LmgiCisKKyNpbmNsdWRlICJxcXVpY2t3ZWJ2
aWV3X3AuaCIKKyNpbmNsdWRlICJxcXVpY2t3ZWJ2aWV3X3BfcC5oIgorI2luY2x1ZGUgPFF0UW1s
L1FRbWxDb250ZXh0PgorI2luY2x1ZGUgPFF0UW1sL1FRbWxFbmdpbmU+CisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQ29sb3JDaG9vc2Vy
Q29udGV4dE9iamVjdCA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAorICAgIFFfUFJP
UEVSVFkoUUNvbG9yIGN1cnJlbnRDb2xvciBSRUFEIGN1cnJlbnRDb2xvciBDT05TVEFOVCBGSU5B
TCkKKyAgICBRX1BST1BFUlRZKFFSZWN0RiBlbGVtZW50UmVjdCBSRUFEIGVsZW1lbnRSZWN0IENP
TlNUQU5UIEZJTkFMKQorCitwdWJsaWM6CisgICAgQ29sb3JDaG9vc2VyQ29udGV4dE9iamVjdChj
b25zdCBRQ29sb3ImIGNvbG9yLCBjb25zdCBRUmVjdEYmIHJlY3QpCisgICAgICAgIDogbV9jdXJy
ZW50Q29sb3IoY29sb3IpCisgICAgICAgICwgbV9yZWN0KHJlY3QpCisgICAgeworICAgIH0KKwor
ICAgIFFDb2xvciBjdXJyZW50Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRDb2xvcjsg
fQorICAgIFFSZWN0RiBlbGVtZW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQorCisg
ICAgUV9JTlZPS0FCTEUgdm9pZCBhY2NlcHQoY29uc3QgUUNvbG9yJiBjb2xvcikgeyBlbWl0IGFj
Y2VwdGVkKGNvbG9yKTsgfQorICAgIFFfSU5WT0tBQkxFIHZvaWQgcmVqZWN0KCkgeyBlbWl0IHJl
amVjdGVkKCk7IH0KKworUV9TSUdOQUxTOgorICAgIHZvaWQgYWNjZXB0ZWQoY29uc3QgUUNvbG9y
Jik7CisgICAgdm9pZCByZWplY3RlZCgpOworCitwcml2YXRlOgorICAgIFFDb2xvciBtX2N1cnJl
bnRDb2xvcjsKKyAgICBRUmVjdEYgbV9yZWN0OworfTsKKworV2ViQ29sb3JQaWNrZXJRdDo6V2Vi
Q29sb3JQaWNrZXJRdChXZWJDb2xvclBpY2tlcjo6Q2xpZW50KiBjbGllbnQsIFFRdWlja1dlYlZp
ZXcqIHdlYlZpZXcsIGNvbnN0IENvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IEludFJlY3QmIGVs
ZW1lbnRSZWN0KQorICAgIDogV2ViQ29sb3JQaWNrZXIoY2xpZW50KQorICAgICwgbV93ZWJWaWV3
KHdlYlZpZXcpCit7CisgICAgY29uc3QgUVJlY3RGIG1hcHBlZFJlY3Q9IG1fd2ViVmlldy0+bWFw
UmVjdEZyb21XZWJDb250ZW50KFFSZWN0KGVsZW1lbnRSZWN0KSk7CisgICAgQ29sb3JDaG9vc2Vy
Q29udGV4dE9iamVjdCogY29udGV4dE9iamVjdCA9IG5ldyBDb2xvckNob29zZXJDb250ZXh0T2Jq
ZWN0KGluaXRpYWxDb2xvciwgbWFwcGVkUmVjdCk7CisgICAgY3JlYXRlSXRlbShjb250ZXh0T2Jq
ZWN0KTsKK30KKworV2ViQ29sb3JQaWNrZXJRdDo6fldlYkNvbG9yUGlja2VyUXQoKQoreworfQor
Cit2b2lkIFdlYkNvbG9yUGlja2VyUXQ6OmNyZWF0ZUl0ZW0oUU9iamVjdCogY29udGV4dE9iamVj
dCkKK3sKKyAgICBRUW1sQ29tcG9uZW50KiBjb21wb25lbnQgPSBtX3dlYlZpZXctPmV4cGVyaW1l
bnRhbCgpLT5jb2xvckNob29zZXIoKTsKKyAgICBpZiAoIWNvbXBvbmVudCkgeworICAgICAgICBk
ZWxldGUgY29udGV4dE9iamVjdDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNyZWF0
ZUNvbnRleHQoY29tcG9uZW50LCBjb250ZXh0T2JqZWN0KTsKKyAgICBRT2JqZWN0KiBvYmplY3Qg
PSBjb21wb25lbnQtPmJlZ2luQ3JlYXRlKG1fY29udGV4dC5nZXQoKSk7CisgICAgaWYgKCFvYmpl
Y3QpIHsKKyAgICAgICAgbV9jb250ZXh0LmNsZWFyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBtX2NvbG9yQ2hvb3NlciA9IGFkb3B0UHRyKHFvYmplY3RfY2FzdDxRUXVpY2tJdGVt
Kj4ob2JqZWN0KSk7CisgICAgaWYgKCFtX2NvbG9yQ2hvb3NlcikgeworICAgICAgICBtX2NvbnRl
eHQuY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIE5lZWRzIHRvIGJl
IGVucXVldWUgYmVjYXVzZSBpdCBtaWdodCB0cmlnZ2VyIGRlbGV0aW9uLgorICAgIGNvbm5lY3Qo
Y29udGV4dE9iamVjdCwgU0lHTkFMKGFjY2VwdGVkKFFDb2xvcikpLCBTTE9UKG5vdGlmeUNvbG9y
U2VsZWN0ZWQoUUNvbG9yKSksIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKKyAgICBjb25uZWN0KGNv
bnRleHRPYmplY3QsIFNJR05BTChyZWplY3RlZCgpKSwgU0xPVChlbmRDaG9vc2VyKCkpLCBRdDo6
UXVldWVkQ29ubmVjdGlvbik7CisKKyAgICBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6Z2V0KG1fd2Vi
VmlldyktPmFkZEF0dGFjaGVkUHJvcGVydHlUbyhtX2NvbG9yQ2hvb3Nlci5nZXQoKSk7CisgICAg
bV9jb2xvckNob29zZXItPnNldFBhcmVudEl0ZW0obV93ZWJWaWV3KTsKKworICAgIGNvbXBvbmVu
dC0+Y29tcGxldGVDcmVhdGUoKTsKK30KKwordm9pZCBXZWJDb2xvclBpY2tlclF0OjpjcmVhdGVD
b250ZXh0KFFRbWxDb21wb25lbnQqIGNvbXBvbmVudCwgUU9iamVjdCogY29udGV4dE9iamVjdCkK
K3sKKyAgICBRUW1sQ29udGV4dCogYmFzZUNvbnRleHQgPSBjb21wb25lbnQtPmNyZWF0aW9uQ29u
dGV4dCgpOworICAgIGlmICghYmFzZUNvbnRleHQpCisgICAgICAgIGJhc2VDb250ZXh0ID0gUVFt
bEVuZ2luZTo6Y29udGV4dEZvck9iamVjdChtX3dlYlZpZXcpOworICAgIG1fY29udGV4dCA9IGFk
b3B0UHRyKG5ldyBRUW1sQ29udGV4dChiYXNlQ29udGV4dCkpOworCisgICAgY29udGV4dE9iamVj
dC0+c2V0UGFyZW50KG1fY29udGV4dC5nZXQoKSk7CisgICAgbV9jb250ZXh0LT5zZXRDb250ZXh0
UHJvcGVydHkoUUxhdGluMVN0cmluZygibW9kZWwiKSwgY29udGV4dE9iamVjdCk7CisgICAgbV9j
b250ZXh0LT5zZXRDb250ZXh0T2JqZWN0KGNvbnRleHRPYmplY3QpOworfQorCit2b2lkIFdlYkNv
bG9yUGlja2VyUXQ6OnNldFNlbGVjdGVkQ29sb3IoY29uc3QgQ29sb3ImKQoreworICAgIC8vIFRo
aXMgaXMgc3VwcG9zZSB0byBiZSB1c2VkIHRvIHJlYWN0IHRvIERPTSBjaGFuZ2VzLiBXaGVuCisg
ICAgLy8gYSB1c2VyIHNjcmlwdCBjaGFuZ2VzIHRoZSBpbnB1dCB2YWx1ZSwgdGhlIG1ldGhvZCBn
aXZlcyB0aGUKKyAgICAvLyBvcHRpb24gdG8gdXBkYXRlIHRoZSBjb2xvciBjaG9vc2VyIFVJIGlm
IHdlIHdlcmUgc2hvd2luZyB0aGUKKyAgICAvLyBjdXJyZW50IHZhbHVlLiBTaW5jZSB3ZSBkb24n
dCwgaXQgaXMgaXJyZWxldmFudCByaWdodCBub3cuCisgICAgLy8gQW5kIHllcywgdGhlIG5hbWUg
c291bmRzIG1pc2xlYWRpbmcgYnV0IGNvbWVzIGZyb20gV2ViQ29yZS4KK30KKwordm9pZCBXZWJD
b2xvclBpY2tlclF0Ojpub3RpZnlDb2xvclNlbGVjdGVkKGNvbnN0IFFDb2xvciYgY29sb3IpCit7
CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQWxwaGEgaXMg
YWx3YXlzIGlnbm9yZWQgYnkgdGhlIGNvbG9yIGlucHV0CisgICAgQ29sb3IgY29yZUNvbG9yID0g
bWFrZVJHQihjb2xvci5yZWQoKSwgY29sb3IuZ3JlZW4oKSwgY29sb3IuYmx1ZSgpKTsKKyAgICBt
X2NsaWVudC0+ZGlkQ2hvb3NlQ29sb3IoY29yZUNvbG9yKTsKKworICAgIGVuZENob29zZXIoKTsK
K30KKwordm9pZCBXZWJDb2xvclBpY2tlclF0OjplbmRDaG9vc2VyKCkKK3sKKyAgICBtX2NvbG9y
Q2hvb3Nlci5jbGVhcigpOworICAgIG1fY29udGV4dC5jbGVhcigpOworCisgICAgaWYgKCFtX2Ns
aWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQtPmRpZEVuZENvbG9yQ2hvb3Nl
cigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2luY2x1ZGUgIldlYkNvbG9yUGlj
a2VyUXQubW9jIgorI2luY2x1ZGUgIm1vY19XZWJDb2xvclBpY2tlclF0LmNwcCIKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb2xvclBpY2tlclF0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbG9yUGlja2VyUXQuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb2xvclBpY2tlclF0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgV2Vi
Q29sb3JQaWNrZXJRdF9oCisjZGVmaW5lIFdlYkNvbG9yUGlja2VyUXRfaAorCisjaW5jbHVkZSAi
SW50UmVjdC5oIgorI2luY2x1ZGUgIldlYkNvbG9yUGlja2VyLmgiCisjaW5jbHVkZSA8UXRDb3Jl
L1FPYmplY3Q+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCitRVF9CRUdJTl9OQU1FU1BBQ0UK
K2NsYXNzIFFRbWxDb21wb25lbnQ7CitjbGFzcyBRUW1sQ29udGV4dDsKK2NsYXNzIFFRdWlja0l0
ZW07CitRVF9FTkRfTkFNRVNQQUNFCisKK2NsYXNzIFFRdWlja1dlYlZpZXc7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIENvbG9yOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViQ29sb3JQaWNrZXJRdCA6IHB1YmxpYyBRT2JqZWN0LCBwdWJsaWMgV2ViQ29sb3JQaWNr
ZXIgeworICAgIFFfT0JKRUNUCisKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJD
b2xvclBpY2tlcj4gY3JlYXRlKFdlYkNvbG9yUGlja2VyOjpDbGllbnQqIGNsaWVudCwgUVF1aWNr
V2ViVmlldyogd2ViVmlldywgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvciwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFdlYkNvbG9yUGlja2VyUXQoY2xpZW50LCB3ZWJWaWV3LCBpbml0aWFsQ29s
b3IsIGVsZW1lbnRSZWN0KSk7CisgICAgfQorICAgIH5XZWJDb2xvclBpY2tlclF0KCk7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOwor
CitwdWJsaWMgUV9TTE9UUzoKKyAgICB2aXJ0dWFsIHZvaWQgZW5kQ2hvb3NlcigpOworCitwcml2
YXRlIFFfU0xPVFM6CisgICAgdm9pZCBub3RpZnlDb2xvclNlbGVjdGVkKGNvbnN0IFFDb2xvciYp
OworCitwcml2YXRlOgorICAgIFdlYkNvbG9yUGlja2VyUXQoV2ViQ29sb3JQaWNrZXI6OkNsaWVu
dCosIFFRdWlja1dlYlZpZXcqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmKTsKKworICAgIHZvaWQgY3JlYXRlSXRlbShRT2JqZWN0Kik7CisgICAgdm9pZCBj
cmVhdGVDb250ZXh0KFFRbWxDb21wb25lbnQqLCBRT2JqZWN0Kik7CisKKyAgICBPd25QdHI8UVFt
bENvbnRleHQ+IG1fY29udGV4dDsKKyAgICBPd25QdHI8UVF1aWNrSXRlbT4gbV9jb2xvckNob29z
ZXI7CisKKyAgICBRUXVpY2tXZWJWaWV3KiBtX3dlYlZpZXc7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkNvbG9yUGlja2VyUXRfaApJbmRleDogU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MTUzMDk3KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MDYsNyArNDA2LDcgQEAKIAkJMzdGOTBERTMxMzc2NTYw
RTAwNTFDRjY4IC8qIEhUVFBDb29raWVBY2NlcHRQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2Mzg5NTRGMTMzQkVGMzgwMDg5NDFENSAvKiBI
VFRQQ29va2llQWNjZXB0UG9saWN5LmggKi87IH07CiAJCTNGODdCOUJEMTU4OTQwMTIwMDkwRkY2
MiAvKiBXZWJDb2xvckNob29zZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gM0Y4N0I5QkExNTg5M0Y2MzAwOTBGRjYyIC8qIFdlYkNvbG9yQ2hvb3Nl
ci5jcHAgKi87IH07CiAJCTNGODdCOUJFMTU4OTQwMTkwMDkwRkY2MiAvKiBXZWJDb2xvckNob29z
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNGODdC
OUJCMTU4OTNGNjMwMDkwRkY2MiAvKiBXZWJDb2xvckNob29zZXIuaCAqLzsgfTsKLQkJM0Y4N0I5
QzAxNTg5NDBEODAwOTBGRjYyIC8qIFdlYkNvbG9yQ2hvb3NlclByb3h5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzRjg3QjlCRjE1ODk0MEQ4MDA5MEZG
NjIgLyogV2ViQ29sb3JDaG9vc2VyUHJveHkuaCAqLzsgfTsKKwkJM0Y4N0I5QzAxNTg5NDBEODAw
OTBGRjYyIC8qIFdlYkNvbG9yUGlja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzRjg3QjlCRjE1ODk0MEQ4MDA5MEZGNjIgLyogV2ViQ29sb3JQaWNr
ZXIuaCAqLzsgfTsKIAkJNEY2MDE0MzIxNTVDNUFBMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9u
c2VNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRG
NjAxNDMwMTU1QzVBMzIwMDFGQkRFMCAvKiBCbG9ja2luZ1Jlc3BvbnNlTWFwLmggKi87IH07CiAJ
CTUxMDIxRTlDMTJCMTY3ODgwMDVDMDMzQyAvKiBXZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDIxRTlCMTJC
MTY3ODgwMDVDMDMzQyAvKiBXZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbSAqLzsgfTsKIAkJNTEw
QUZGQjkxNjU0MjA0ODAwMUJBMDVFIC8qIFdlYlJlc291cmNlTG9hZGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEFGRkI3MTY1NDIwNDgwMDFC
QTA1RSAvKiBXZWJSZXNvdXJjZUxvYWRlci5jcHAgKi87IH07CkBAIC0xMTk2LDcgKzExOTYsNyBA
QAogCQlFRENBNzFCNzEyOEREQThDMDAyMDFCMjYgLyogV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTIyRjEwMDEy
ODlGQ0Q5MDA4NUU3NEYgLyogV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAgKi87IH07CiAJCUYwMzY5
Nzg1MTVGNEJFNkIwMEMzQTgwRSAvKiBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjAzNjk3ODMxNUY0
QkU2QjAwQzNBODBFIC8qIFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5jcHAgKi87IH07CiAJ
CUYwMzY5Nzg2MTVGNEJFNkIwMEMzQTgwRSAvKiBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYwMzY5Nzg0
MTVGNEJFNkIwMEMzQTgwRSAvKiBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXIuaCAqLzsgfTsK
LQkJRjAzNjk3ODgxNUY0QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yQ2hvb3NlclByb3h5LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYwMzY5Nzg3MTVG
NEJGMDUwMEMzQTgwRSAvKiBXZWJDb2xvckNob29zZXJQcm94eS5jcHAgKi87IH07CisJCUYwMzY5
Nzg4MTVGNEJGMDUwMEMzQTgwRSAvKiBXZWJDb2xvclBpY2tlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMDM2OTc4NzE1RjRCRjA1MDBDM0E4MEUg
LyogV2ViQ29sb3JQaWNrZXIuY3BwICovOyB9OwogCQlGMDM2OTc4QjE1RjRCRjEzMDBDM0E4MEUg
LyogV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYwMzY5Nzg5MTVGNEJGMTMwMEMzQTgwRSAv
KiBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuY3BwICovOyB9OwogCQlGNjExM0Uy
NTEyNkNFMTgyMDA1N0QwQTcgLyogV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjExM0UyNDEyNkNFMTgyMDA1
N0QwQTcgLyogV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggKi87IH07CiAJCUY2MTEzRTI4MTI2
Q0UxOUIwMDU3RDBBNyAvKiBXS1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjExM0UyNjEyNkNFMTlCMDA1N0Qw
QTcgLyogV0tVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwICovOyB9OwpAQCAtMTg3MSw3ICsxODcx
LDcgQEAKIAkJMzdGNjIzQjcxMkE1N0I2MjAwRTNGREY2IC8qIFdLRmluZE9wdGlvbnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tGaW5kT3B0aW9ucy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzRjg3QjlCQTE1ODkzRjYzMDA5MEZGNjIgLyogV2ViQ29sb3JD
aG9vc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbG9y
Q2hvb3Nlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTNGODdCOUJCMTU4OTNG
NjMwMDkwRkY2MiAvKiBXZWJDb2xvckNob29zZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViQ29sb3JDaG9vc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTNGODdCOUJGMTU4OTQwRDgwMDkwRkY2MiAvKiBXZWJDb2xvckNob29zZXJQcm94eS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb2xvckNob29zZXJQcm94eS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzRjg3QjlCRjE1ODk0MEQ4MDA5MEZGNjIgLyogV2Vi
Q29sb3JQaWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29sb3JQ
aWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEY2MDE0MzAxNTVDNUEzMjAw
MUZCREUwIC8qIEJsb2NraW5nUmVzcG9uc2VNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQmxvY2tpbmdSZXNwb25zZU1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MTAwMzFGNjEzNzlDQUNCMDBDOERGRTQgLyogU2VjSXRlbVNoaW0uZHlsaWIgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNo
LW8uZHlsaWIiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBTZWNJdGVtU2hpbS5keWxpYjsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNTEwMjFFOUIxMkIxNjc4ODAw
NUMwMzNDIC8qIFdlYkNvbnRleHRNZW51Q2xpZW50TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzI0LDcgKzI3MjQsNyBAQAogCQlFMUVFNTNFNjExRjhD
RkZCMDBDQ0JFRTQgLyogSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYwMzY5NzgzMTVGNEJFNkIw
MEMzQTgwRSAvKiBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjAzNjk3ODQxNUY0QkU2QjAwQzNBODBFIC8q
IFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRjAzNjk3ODcxNUY0QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yQ2hvb3NlclBy
b3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbG9yQ2hv
b3NlclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjAzNjk3ODcxNUY0
QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYkNvbG9yUGlja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRjAzNjk3ODkxNUY0QkYxMzAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2VyUmVzdWx0
TGlzdGVuZXJQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGMDM2OTc4QTE1RjRCRjEzMDBDM0E4MEUgLyogV2ViQ29sb3JQaWNrZXJSZXN1
bHRMaXN0ZW5lclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNv
bG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGNjExM0UyNDEyNkNFMTgyMDA1N0QwQTcgLyogV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJu
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlVzZXJDb250ZW50VVJMUGF0
dGVybi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDA0Niw4ICs0MDQ2LDggQEAK
IAkJCQk1MTJFMzVGMDEzMEI2MzhDMDBBQkQxOUEgLyogV2ViQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQlCQzcyQkExQjExRTY0OTA3MDAxRUI0RUEgLyog
V2ViQmFja0ZvcndhcmRMaXN0LmNwcCAqLywKIAkJCQlCQzcyQkExQzExRTY0OTA3MDAxRUI0RUEg
LyogV2ViQmFja0ZvcndhcmRMaXN0LmggKi8sCi0JCQkJRjAzNjk3ODcxNUY0QkYwNTAwQzNBODBF
IC8qIFdlYkNvbG9yQ2hvb3NlclByb3h5LmNwcCAqLywKLQkJCQkzRjg3QjlCRjE1ODk0MEQ4MDA5
MEZGNjIgLyogV2ViQ29sb3JDaG9vc2VyUHJveHkuaCAqLywKKwkJCQlGMDM2OTc4NzE1RjRCRjA1
MDBDM0E4MEUgLyogV2ViQ29sb3JQaWNrZXIuY3BwICovLAorCQkJCTNGODdCOUJGMTU4OTQwRDgw
MDkwRkY2MiAvKiBXZWJDb2xvclBpY2tlci5oICovLAogCQkJCUYwMzY5Nzg5MTVGNEJGMTMwMEMz
QTgwRSAvKiBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuY3BwICovLAogCQkJCUYw
MzY5NzhBMTVGNEJGMTMwMEMzQTgwRSAvKiBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJv
eHkuaCAqLywKIAkJCQlCQzRBNjJBNTE0NzQ0RUM2MDA2QzY4MUEgLyogV2ViQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAgKi8sCkBAIC01NTQyLDcgKzU1NDIsNyBAQAogCQkJCUJDRjUwNzI4MTI0
MzI5QUEwMDU5NTVBRSAvKiBXZWJDZXJ0aWZpY2F0ZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMDMyRDc1MTBGNDM3OEQwMDU4QzE1QSAvKiBXZWJDaHJvbWVDbGllbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTNGODdCOUJFMTU4OTQwMTkwMDkwRkY2MiAvKiBXZWJDb2xvckNob29zZXIuaCBp
biBIZWFkZXJzICovLAotCQkJCTNGODdCOUMwMTU4OTQwRDgwMDkwRkY2MiAvKiBXZWJDb2xvckNo
b29zZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJM0Y4N0I5QzAxNTg5NDBEODAwOTBGRjYy
IC8qIFdlYkNvbG9yUGlja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzRBNjI5MDE0NzMxMkJF
MDA2QzY4MUEgLyogV2ViQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0QTYyOTIx
NDczMTJCRTAwNkM2ODFBIC8qIFdlYkNvbm5lY3Rpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBMUZFQzFEMTYyN0I0NTcwMDcwMEY2RCAvKiBXZWJDb25uZWN0aW9uTWVzc2FnZXMuaCBp
biBIZWFkZXJzICovLApAQCAtNjgxNCw3ICs2ODE0LDcgQEAKIAkJCQlCQzcyQjlGQTExRTY0NzZC
MDAxRUI0RUEgLyogV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkMxMTFBNUExMTJGNEZCQjAwMzM3QkFCIC8qIFdlYkNocm9tZUNsaWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkzRjg3QjlCRDE1ODk0MDEyMDA5MEZGNjIgLyogV2ViQ29sb3JDaG9vc2Vy
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUYwMzY5Nzg4MTVGNEJGMDUwMEMzQTgwRSAvKiBXZWJD
b2xvckNob29zZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGMDM2OTc4ODE1RjRCRjA1
MDBDM0E4MEUgLyogV2ViQ29sb3JQaWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjAzNjk3
OEIxNUY0QkYxMzAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzRBNjI4RjE0NzMxMkJFMDA2QzY4MUEgLyogV2ViQ29u
bmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzRBNjI5MTE0NzMxMkJFMDA2QzY4MUEg
LyogV2ViQ29ubmVjdGlvbkNsaWVudC5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207422</attachid>
            <date>2013-07-24 17:02:10 -0700</date>
            <delta_ts>2013-07-24 18:07:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-119025-20130724170209.patch</filename>
            <type>text/plain</type>
            <size>55745</size>
            <attacher name="Ruth Fong">ruthiecftg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MzEwNikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcwIEBACisyMDEzLTA3LTI0ICBSdXRoIEZv
bmcgIDxydXRoX2ZvbmdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBXZWJDb2xvckNob29z
ZXJQcm94eQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTQ1MjgwMzk+IGFuZCBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE5MDI1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lZCBXZWJDb2xvckNob29zZXJQcm94
eSB0byBXZWJDb2xvclBpY2tlciBzaW5jZSB0aGUgbmFtZSBXZWJDb2xvckNob29vc2VyUHJveHkK
KyAgICAgICAgaW1wbGllcyB0aGF0IGl0IHJlcHJlc2VudHMgdGhlIHNhbWUgb2JqZWN0IGFzIFdl
YkNvbG9yQ2hvb3Nlciwgd2hpY2ggaXMgbm90IHRydWUuCisgICAgICAgIEFsc28sIHJlbmFtZWQg
Y3JlYXRlQ29sb3JDaG9vc2VyUHJveHkgdG8gY3JlYXRlQ29sb3JQaWNrZXIgaW4gV2ViUGFnZVBy
b3h5IGFuZCAKKyAgICAgICAgcGxhdGZvcm0tZXF1aXZhbGVudCB2ZXJzaW9ucyBvZiBpdC4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdl
Q2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVD
b2xvclBpY2tlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tOgorICAgICAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JQaWNrZXIpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFSYXdXZWJWaWV3UHJpdmF0
ZTo6Y3JlYXRlQ29sb3JQaWNrZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcmF3L3Fy
YXd3ZWJ2aWV3X3BfcC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L1dlYlZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpjcmVhdGVDb2xvclBpY2tl
cik6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkNvbG9yQ2hvb3NlclByb3h5LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
Q29sb3JDaG9vc2VyUHJveHkuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29s
b3JQaWNrZXIuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29s
b3JDaG9vc2VyUHJveHkuY3BwLgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvclBpY2tlcjo6V2Vi
Q29sb3JQaWNrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvclBpY2tlcjo6fldlYkNvbG9y
UGlja2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JQaWNrZXI6OmVuZENob29zZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb2xvclBpY2tlcjo6c2V0U2VsZWN0ZWRDb2xvcik6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb2xvckNob29zZXJQcm94eS5oLgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb2xvclBpY2tlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9zZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2hvd0NvbG9yQ2hvb3Nlcik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c2V0Q29sb3JDaG9vc2VyQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmVuZENvbG9yQ2hvb3Nlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGlkRW5kQ29sb3JDaG9vc2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhpdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6IFJlbmFtZWQgbV9jb2xvckNob29zZXIgdG8gbV9jb2xvclBpY2tlci4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UXRQYWdlQ2xpZW50OjpjcmVhdGVDb2xvclBpY2tlcik6CisgICAgICAgICogVUlQcm9jZXNzL3F0
L1F0UGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJDb2xvckNob29zZXJQ
cm94eVF0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvV2ViQ29sb3JDaG9v
c2VyUHJveHlRdC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJDb2xvclBp
Y2tlclF0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkNvbG9yQ2hvb3NlckNvbnRleHRP
YmplY3Q6OkNvbG9yQ2hvb3NlckNvbnRleHRPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpDb2xv
ckNob29zZXJDb250ZXh0T2JqZWN0OjpjdXJyZW50Q29sb3IpOgorICAgICAgICAoV2ViS2l0OjpD
b2xvckNob29zZXJDb250ZXh0T2JqZWN0OjplbGVtZW50UmVjdCk6CisgICAgICAgIChXZWJLaXQ6
OkNvbG9yQ2hvb3NlckNvbnRleHRPYmplY3Q6OmFjY2VwdCk6CisgICAgICAgIChXZWJLaXQ6OkNv
bG9yQ2hvb3NlckNvbnRleHRPYmplY3Q6OnJlamVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bG9yUGlja2VyUXQ6OldlYkNvbG9yUGlja2VyUXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xv
clBpY2tlclF0Ojp+V2ViQ29sb3JQaWNrZXJRdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9y
UGlja2VyUXQ6OmNyZWF0ZUl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvclBpY2tlclF0
OjpjcmVhdGVDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JQaWNrZXJRdDo6c2V0
U2VsZWN0ZWRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yUGlja2VyUXQ6Om5vdGlm
eUNvbG9yU2VsZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvclBpY2tlclF0OjplbmRD
aG9vc2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvV2ViQ29sb3JQaWNrZXJRdC5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JQaWNrZXJRdDo6Y3JlYXRlKToKKyAgICAgICAg
KiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTMtMDctMjQgIEt3YW5n
IFl1bCBTZW8gIDxza3l1bEBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBbV0syXVtTb3VwXSBB
ZGQgZW50cnkgcG9pbnQgZm9yIG5ldHdvcmsgcHJvY2VzcwpJbmRleDogU291cmNlL1dlYktpdDIv
Q01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50
eHQJKHJldmlzaW9uIDE1MzA5NykKKysrIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0yNjUsNyArMjY1LDcgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAg
IFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCiAgICAgVUlQcm9jZXNzL1dlYkJhdHRl
cnlNYW5hZ2VyUHJveHkuY3BwCiAgICAgVUlQcm9jZXNzL1dlYkJhdHRlcnlQcm92aWRlci5jcHAK
LSAgICBVSVByb2Nlc3MvV2ViQ29sb3JDaG9vc2VyUHJveHkuY3BwCisgICAgVUlQcm9jZXNzL1dl
YkNvbG9yUGlja2VyLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJDb2xvclBpY2tlclJlc3VsdExpc3Rl
bmVyUHJveHkuY3BwCiAgICAgVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CiAgICAgVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9HTlVt
YWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxl
Lmxpc3QuYW0JKHJldmlzaW9uIDE1MzA5NykKKysrIFNvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxl
Lmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTg4NSw4ICs4ODUsOCBAQCB3ZWJraXQyX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYXR0ZXJ5TWFuYWdlclByb3h5
LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYXR0ZXJ5UHJvdmlkZXIuY3BwIFwK
IAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmF0dGVyeVByb3ZpZGVyLmggXAotCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvckNob29zZXJQcm94eS5jcHAgXAotCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvckNob29zZXJQcm94eS5oIFwKKwlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXIuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29sb3JQaWNrZXIuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9y
UGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuaCBcCiAJU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIFwKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVGFyZ2V0LnBy
aQkocmV2aXNpb24gMTUzMDk3KQorKysgU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQkod29ya2lu
ZyBjb3B5KQpAQCAtMjQyLDcgKzI0Miw3IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9X
ZWJCYWNrRm9yd2FyZExpc3QuaCBcCiAgICAgVUlQcm9jZXNzL1dlYkJhdHRlcnlNYW5hZ2VyUHJv
eHkuaCBcCiAgICAgVUlQcm9jZXNzL1dlYkJhdHRlcnlQcm92aWRlci5oIFwKLSAgICBVSVByb2Nl
c3MvV2ViQ29sb3JDaG9vc2VyUHJveHkuaCBcCisgICAgVUlQcm9jZXNzL1dlYkNvbG9yUGlja2Vy
LmggXAogICAgIFVJUHJvY2Vzcy9XZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuaCBc
CiAgICAgVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBcCiAgICAgVUlQcm9j
ZXNzL1dlYkNvbnRleHQuaCBcCkBAIC02MDAsNyArNjAwLDcgQEAgU09VUkNFUyArPSBcCiAgICAg
VUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAgXAogICAgIFVJUHJvY2Vzcy9XZWJCYXR0
ZXJ5TWFuYWdlclByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL1dlYkJhdHRlcnlQcm92aWRlci5j
cHAgXAotICAgIFVJUHJvY2Vzcy9XZWJDb2xvckNob29zZXJQcm94eS5jcHAgXAorICAgIFVJUHJv
Y2Vzcy9XZWJDb2xvclBpY2tlci5jcHAgXAogICAgIFVJUHJvY2Vzcy9XZWJDb2xvclBpY2tlclJl
c3VsdExpc3RlbmVyUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAgXAogICAgIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcCBcCkBAIC04NDcsOSAr
ODQ3LDkgQEAgaGF2ZT8oUVRRVUlDSykgewogCiAgICAgZW5hYmxlPyhJTlBVVF9UWVBFX0NPTE9S
KSB7CiAgICAgICAgIEhFQURFUlMgKz0gXAotICAgICAgICAgICAgVUlQcm9jZXNzL3F0L1dlYkNv
bG9yQ2hvb3NlclByb3h5UXQuaAorICAgICAgICAgICAgVUlQcm9jZXNzL3F0L1dlYkNvbG9yUGlj
a2VyUXQuaAogICAgICAgICBTT1VSQ0VTICs9IFwKLSAgICAgICAgICAgIFVJUHJvY2Vzcy9xdC9X
ZWJDb2xvckNob29zZXJQcm94eVF0LmNwcAorICAgICAgICAgICAgVUlQcm9jZXNzL3F0L1dlYkNv
bG9yUGlja2VyUXQuY3BwCiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
YWdlQ2xpZW50LmgJKHJldmlzaW9uIDE1MzA5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNkZWZpbmUg
UGFnZUNsaWVudF9oCiAKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKLSNpbmNsdWRlICJX
ZWJDb2xvckNob29zZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYkNvbG9yUGlja2VyLmgiCiAjaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHkuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oPgpAQCAtNjUsNyArNjUsNyBA
QCBjbGFzcyBXZWJDb250ZXh0TWVudVByb3h5OwogY2xhc3MgV2ViRWRpdENvbW1hbmRQcm94eTsK
IGNsYXNzIFdlYlBvcHVwTWVudVByb3h5OwogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQot
Y2xhc3MgV2ViQ29sb3JDaG9vc2VyUHJveHk7CitjbGFzcyBXZWJDb2xvclBpY2tlcjsKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTg3LDcgKzE4Nyw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQ
cm94eShXZWJQYWdlUHJveHkqKSA9IDA7CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJveHk+IGNyZWF0ZUNvbG9y
Q2hvb3NlclByb3h5KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFs
Q29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdlYkNvbG9yUGlja2VyPiBjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqLCBjb25z
dCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikg
PSAwOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RmluZEluZGljYXRvcihQYXNzUmVm
UHRyPEZpbmRJbmRpY2F0b3I+LCBib29sIGZhZGVPdXQsIGJvb2wgYW5pbWF0ZSkgPSAwOwpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yQ2hvb3NlclByb3h5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JDaG9vc2VyUHJveHku
Y3BwCShyZXZpc2lvbiAxNTMwOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29s
b3JDaG9vc2VyUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYwICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJDb2xvckNo
b29zZXJQcm94eS5oIgotCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi1XZWJDb2xvckNob29zZXJQcm94eTo6V2ViQ29sb3JDaG9vc2VyUHJveHko
Q2xpZW50KiBjbGllbnQpCi0gICAgOiBtX2NsaWVudChjbGllbnQpCi17Ci19Ci0KLVdlYkNvbG9y
Q2hvb3NlclByb3h5Ojp+V2ViQ29sb3JDaG9vc2VyUHJveHkoKQotewotfQotCi12b2lkIFdlYkNv
bG9yQ2hvb3NlclByb3h5OjplbmRDaG9vc2VyKCkKLXsKLSAgICBpZiAoIW1fY2xpZW50KQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBtX2NsaWVudC0+ZGlkRW5kQ29sb3JDaG9vc2VyKCk7Ci19Ci0K
LXZvaWQgV2ViQ29sb3JDaG9vc2VyUHJveHk6OnNldFNlbGVjdGVkQ29sb3IoY29uc3QgV2ViQ29y
ZTo6Q29sb3ImIGNvbG9yKQotewotICAgIGlmICghbV9jbGllbnQpCi0gICAgICAgIHJldHVybjsK
LQotICAgIG1fY2xpZW50LT5kaWRDaG9vc2VDb2xvcihjb2xvcik7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JDaG9vc2VyUHJveHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JDaG9vc2VyUHJveHkuaAkocmV2
aXNpb24gMTUzMDk3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yQ2hvb3Nl
clByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2lmbmRlZiBXZWJDb2xvckNob29zZXJQcm94eV9oCi0jZGVmaW5lIFdlYkNvbG9yQ2hv
b3NlclByb3h5X2gKLQotI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotCi0jaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLWNsYXNzIENvbG9yOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3Mg
V2ViUGFnZVByb3h5OwotCi1jbGFzcyBXZWJDb2xvckNob29zZXJQcm94eSA6IHB1YmxpYyBSZWZD
b3VudGVkPFdlYkNvbG9yQ2hvb3NlclByb3h5PiB7Ci1wdWJsaWM6Ci0gICAgY2xhc3MgQ2xpZW50
IHsKLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwgfkNsaWVudCgpIHsgfQotCi0gICAg
cHVibGljOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hvb3NlQ29sb3IoY29uc3QgV2ViQ29y
ZTo6Q29sb3ImKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRDb2xvckNob29zZXIo
KSA9IDA7Ci0gICAgfTsKLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclBy
b3h5PiBjcmVhdGUoQ2xpZW50KiBjbGllbnQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFdlYkNvbG9yQ2hvb3NlclByb3h5KGNsaWVudCkpOwotICAgIH0KLQotICAgIHZpcnR1
YWwgfldlYkNvbG9yQ2hvb3NlclByb3h5KCk7Ci0KLSAgICB2b2lkIGludmFsaWRhdGUoKSB7IG1f
Y2xpZW50ID0gMDsgfQotCi0gICAgdmlydHVhbCB2b2lkIGVuZENob29zZXIoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0U2VsZWN0ZWRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOwotCi1wcm90
ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgV2ViQ29sb3JDaG9vc2VyUHJveHkoQ2xpZW50Kik7Ci0KLSAg
ICBDbGllbnQqIG1fY2xpZW50OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRp
ZiAvLyBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLQotI2VuZGlmIC8vIFdlYkNvbG9yQ2hvb3Nl
clByb3h5X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yUGlja2Vy
LmNwcAkocmV2aXNpb24gMTUzMDk3KQkoZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29sb3JDaG9vc2VyUHJveHkuY3BwOjE1MzA5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb2xvclBpY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkNvbG9y
Q2hvb3NlclByb3h5LmgiCisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK1dlYkNvbG9yQ2hvb3NlclByb3h5OjpXZWJDb2xvckNob29zZXJQcm94
eShDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKK3sKK30KKworV2ViQ29s
b3JDaG9vc2VyUHJveHk6On5XZWJDb2xvckNob29zZXJQcm94eSgpCit7Cit9CisKK3ZvaWQgV2Vi
Q29sb3JDaG9vc2VyUHJveHk6OmVuZENob29zZXIoKQoreworICAgIGlmICghbV9jbGllbnQpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fY2xpZW50LT5kaWRFbmRDb2xvckNob29zZXIoKTsKK30K
Kwordm9pZCBXZWJDb2xvckNob29zZXJQcm94eTo6c2V0U2VsZWN0ZWRDb2xvcihjb25zdCBXZWJD
b3JlOjpDb2xvciYgY29sb3IpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9jbGllbnQtPmRpZENob29zZUNvbG9yKGNvbG9yKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyLmNwcAkod29ya2luZyBj
b3B5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjQsMjIgKzI0LDIyIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlclByb3h5LmgiCisjaW5jbHVkZSAiV2ViQ29sb3JQ
aWNrZXIuaCIKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotV2ViQ29sb3JDaG9vc2VyUHJveHk6OldlYkNvbG9yQ2hvb3NlclByb3h5KENsaWVu
dCogY2xpZW50KQorV2ViQ29sb3JQaWNrZXI6OldlYkNvbG9yUGlja2VyKENsaWVudCogY2xpZW50
KQogICAgIDogbV9jbGllbnQoY2xpZW50KQogewogfQogCi1XZWJDb2xvckNob29zZXJQcm94eTo6
fldlYkNvbG9yQ2hvb3NlclByb3h5KCkKK1dlYkNvbG9yUGlja2VyOjp+V2ViQ29sb3JQaWNrZXIo
KQogewogfQogCi12b2lkIFdlYkNvbG9yQ2hvb3NlclByb3h5OjplbmRDaG9vc2VyKCkKK3ZvaWQg
V2ViQ29sb3JQaWNrZXI6OmVuZENob29zZXIoKQogewogICAgIGlmICghbV9jbGllbnQpCiAgICAg
ICAgIHJldHVybjsKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBXZWJDb2xvckNob29zZXJQcm94eTo6
ZW5kQ2hvb3NlcigpCiAgICAgbV9jbGllbnQtPmRpZEVuZENvbG9yQ2hvb3NlcigpOwogfQogCi12
b2lkIFdlYkNvbG9yQ2hvb3NlclByb3h5OjpzZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6
OkNvbG9yJiBjb2xvcikKK3ZvaWQgV2ViQ29sb3JQaWNrZXI6OnNldFNlbGVjdGVkQ29sb3IoY29u
c3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQogewogICAgIGlmICghbV9jbGllbnQpCiAgICAgICAg
IHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tlci5o
CShyZXZpc2lvbiAxNTMwOTcpCShmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xv
ckNob29zZXJQcm94eS5oOjE1MzA5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b2xvclBpY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgV2ViQ29sb3JDaG9vc2VyUHJveHlfaAorI2RlZmluZSBXZWJDb2xv
ckNob29zZXJQcm94eV9oCisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKworI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBDb2xvcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgV2ViQ29sb3JDaG9vc2VyUHJveHkgOiBwdWJsaWMg
UmVmQ291bnRlZDxXZWJDb2xvckNob29zZXJQcm94eT4geworcHVibGljOgorICAgIGNsYXNzIENs
aWVudCB7CisgICAgcHJvdGVjdGVkOgorICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0KKwor
ICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENob29zZUNvbG9yKGNvbnN0IFdl
YkNvcmU6OkNvbG9yJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kQ29sb3JDaG9v
c2VyKCkgPSAwOworICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb2xvckNob29z
ZXJQcm94eT4gY3JlYXRlKENsaWVudCogY2xpZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBXZWJDb2xvckNob29zZXJQcm94eShjbGllbnQpKTsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIH5XZWJDb2xvckNob29zZXJQcm94eSgpOworCisgICAgdm9pZCBpbnZhbGlkYXRlKCkg
eyBtX2NsaWVudCA9IDA7IH0KKworICAgIHZpcnR1YWwgdm9pZCBlbmRDaG9vc2VyKCk7CisgICAg
dmlydHVhbCB2b2lkIHNldFNlbGVjdGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKKwor
cHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IFdlYkNvbG9yQ2hvb3NlclByb3h5KENsaWVudCopOwor
CisgICAgQ2xpZW50KiBtX2NsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisKKyNlbmRpZiAvLyBXZWJDb2xvckNo
b29zZXJQcm94eV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNr
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNr
ZXIuaAkod29ya2luZyBjb3B5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9y
UGlja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDggQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkNvbG9yQ2hvb3NlclByb3h5
X2gKLSNkZWZpbmUgV2ViQ29sb3JDaG9vc2VyUHJveHlfaAorI2lmbmRlZiBXZWJDb2xvclBpY2tl
cl9oCisjZGVmaW5lIFdlYkNvbG9yUGlja2VyX2gKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKQogCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQ
YWdlUHJveHk7CiAKLWNsYXNzIFdlYkNvbG9yQ2hvb3NlclByb3h5IDogcHVibGljIFJlZkNvdW50
ZWQ8V2ViQ29sb3JDaG9vc2VyUHJveHk+IHsKK2NsYXNzIFdlYkNvbG9yUGlja2VyIDogcHVibGlj
IFJlZkNvdW50ZWQ8V2ViQ29sb3JQaWNrZXI+IHsKIHB1YmxpYzoKICAgICBjbGFzcyBDbGllbnQg
ewogICAgIHByb3RlY3RlZDoKQEAgLTUwLDEyICs1MCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRFbmRDb2xvckNob29zZXIoKSA9IDA7CiAgICAgfTsKIAotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5PiBjcmVhdGUoQ2xpZW50KiBjbGllbnQp
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZShDbGllbnQqIGNs
aWVudCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29sb3JDaG9vc2Vy
UHJveHkoY2xpZW50KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29sb3JQaWNr
ZXIoY2xpZW50KSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB+V2ViQ29sb3JDaG9vc2VyUHJveHko
KTsKKyAgICB2aXJ0dWFsIH5XZWJDb2xvclBpY2tlcigpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRl
KCkgeyBtX2NsaWVudCA9IDA7IH0KIApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHNldFNlbGVjdGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKIAogcHJv
dGVjdGVkOgotICAgIGV4cGxpY2l0IFdlYkNvbG9yQ2hvb3NlclByb3h5KENsaWVudCopOworICAg
IGV4cGxpY2l0IFdlYkNvbG9yUGlja2VyKENsaWVudCopOwogCiAgICAgQ2xpZW50KiBtX2NsaWVu
dDsKIH07CkBAIC03Miw0ICs3Miw0IEBAIHByb3RlY3RlZDoKIAogI2VuZGlmIC8vIEVOQUJMRShJ
TlBVVF9UWVBFX0NPTE9SKQogCi0jZW5kaWYgLy8gV2ViQ29sb3JDaG9vc2VyUHJveHlfaAorI2Vu
ZGlmIC8vIFdlYkNvbG9yUGlja2VyX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAxNTMwOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTc2LDkgKzU3Niw5IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCiAgICAgfQogCiAjaWYgRU5BQkxFKElOUFVUX1RZ
UEVfQ09MT1IpCi0gICAgaWYgKG1fY29sb3JDaG9vc2VyKSB7Ci0gICAgICAgIG1fY29sb3JDaG9v
c2VyLT5pbnZhbGlkYXRlKCk7Ci0gICAgICAgIG1fY29sb3JDaG9vc2VyID0gbnVsbHB0cjsKKyAg
ICBpZiAobV9jb2xvclBpY2tlcikgeworICAgICAgICBtX2NvbG9yUGlja2VyLT5pbnZhbGlkYXRl
KCk7CisgICAgICAgIG1fY29sb3JQaWNrZXIgPSBudWxscHRyOwogICAgIH0KIAogICAgIGlmICht
X2NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXIpIHsKQEAgLTI5MjAsNyArMjkyMCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpuZWVkVG91Y2hFdmVudHMoYm9vbCAKICNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikKIHZvaWQgV2ViUGFnZVByb3h5OjpzaG93Q29sb3JDaG9vc2VyKGNvbnN0IFdlYkNv
cmU6OkNvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IEludFJlY3QmIGVsZW1lbnRSZWN0KQogewot
ICAgIEFTU0VSVCghbV9jb2xvckNob29zZXIpOworICAgIEFTU0VSVCghbV9jb2xvclBpY2tlcik7
CiAKICAgICBpZiAobV9jb2xvclBpY2tlclJlc3VsdExpc3RlbmVyKSB7CiAgICAgICAgIG1fY29s
b3JQaWNrZXJSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0ZSgpOwpAQCAtMjkyOCwyOCArMjkyOCwy
OCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd0NvbG9yQ2hvb3Nlcihjb25zCiAgICAgfQogCiAg
ICAgbV9jb2xvclBpY2tlclJlc3VsdExpc3RlbmVyID0gV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0
ZW5lclByb3h5OjpjcmVhdGUodGhpcyk7Ci0gICAgbV9jb2xvckNob29zZXIgPSBXZWJDb2xvckNo
b29zZXJQcm94eTo6Y3JlYXRlKHRoaXMpOworICAgIG1fY29sb3JQaWNrZXIgPSBXZWJDb2xvclBp
Y2tlcjo6Y3JlYXRlKHRoaXMpOwogCiAgICAgaWYgKG1fdWlDbGllbnQuc2hvd0NvbG9yUGlja2Vy
KHRoaXMsIGluaXRpYWxDb2xvci5zZXJpYWxpemVkKCksIG1fY29sb3JQaWNrZXJSZXN1bHRMaXN0
ZW5lci5nZXQoKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29sb3JDaG9vc2VyID0gbV9w
YWdlQ2xpZW50LT5jcmVhdGVDb2xvckNob29zZXJQcm94eSh0aGlzLCBpbml0aWFsQ29sb3IsIGVs
ZW1lbnRSZWN0KTsKLSAgICBpZiAoIW1fY29sb3JDaG9vc2VyKQorICAgIG1fY29sb3JQaWNrZXIg
PSBtX3BhZ2VDbGllbnQtPmNyZWF0ZUNvbG9yUGlja2VyKHRoaXMsIGluaXRpYWxDb2xvciwgZWxl
bWVudFJlY3QpOworICAgIGlmICghbV9jb2xvclBpY2tlcikKICAgICAgICAgZGlkRW5kQ29sb3JD
aG9vc2VyKCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDb2xvckNob29zZXJDb2xvcihj
b25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCiB7Ci0gICAgQVNTRVJUKG1fY29sb3JDaG9vc2Vy
KTsKKyAgICBBU1NFUlQobV9jb2xvclBpY2tlcik7CiAKLSAgICBtX2NvbG9yQ2hvb3Nlci0+c2V0
U2VsZWN0ZWRDb2xvcihjb2xvcik7CisgICAgbV9jb2xvclBpY2tlci0+c2V0U2VsZWN0ZWRDb2xv
cihjb2xvcik7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjplbmRDb2xvckNob29zZXIoKQogewot
ICAgIEFTU0VSVChtX2NvbG9yQ2hvb3Nlcik7CisgICAgQVNTRVJUKG1fY29sb3JQaWNrZXIpOwog
Ci0gICAgbV9jb2xvckNob29zZXItPmVuZENob29zZXIoKTsKKyAgICBtX2NvbG9yUGlja2VyLT5l
bmRDaG9vc2VyKCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VDb2xvcihjb25z
dCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCkBAIC0yOTY1LDkgKzI5NjUsOSBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkRW5kQ29sb3JDaG9vc2VyKCkKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKG1fY29sb3JDaG9vc2VyKSB7Ci0gICAgICAgIG1fY29sb3JD
aG9vc2VyLT5pbnZhbGlkYXRlKCk7Ci0gICAgICAgIG1fY29sb3JDaG9vc2VyID0gbnVsbHB0cjsK
KyAgICBpZiAobV9jb2xvclBpY2tlcikgeworICAgICAgICBtX2NvbG9yUGlja2VyLT5pbnZhbGlk
YXRlKCk7CisgICAgICAgIG1fY29sb3JQaWNrZXIgPSBudWxscHRyOwogICAgIH0KIAogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkRW5kQ29sb3JDaG9vc2VyKCksIG1f
cGFnZUlEKTsKQEAgLTM4MzYsOSArMzgzNiw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0
YXRlQWZ0ZXJQcm9jZXMKICAgICB9CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSAg
ICBpZiAobV9jb2xvckNob29zZXIpIHsKLSAgICAgICAgbV9jb2xvckNob29zZXItPmludmFsaWRh
dGUoKTsKLSAgICAgICAgbV9jb2xvckNob29zZXIgPSBudWxscHRyOworICAgIGlmIChtX2NvbG9y
UGlja2VyKSB7CisgICAgICAgIG1fY29sb3JQaWNrZXItPmludmFsaWRhdGUoKTsKKyAgICAgICAg
bV9jb2xvclBpY2tlciA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKG1fY29sb3JQaWNrZXJS
ZXN1bHRMaXN0ZW5lcikgewpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAkocmV2aXNpb24gMTUzMDk3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBACiAjaW5jbHVkZSAiU2hh
cmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiV0tCYXNlLmgiCiAjaW5jbHVkZSAiV0tQYWdlUHJp
dmF0ZS5oIgotI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlclByb3h5LmgiCisjaW5jbHVkZSAiV2Vi
Q29sb3JQaWNrZXIuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgiCiAjaW5j
bHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRmluZENsaWVudC5o
IgpAQCAtMjMyLDcgKzIzMiw3IEBAIHByaXZhdGU6CiBjbGFzcyBXZWJQYWdlUHJveHkKICAgICA6
IHB1YmxpYyBUeXBlZEFQSU9iamVjdDxBUElPYmplY3Q6OlR5cGVQYWdlPgogI2lmIEVOQUJMRShJ
TlBVVF9UWVBFX0NPTE9SKQotICAgICwgcHVibGljIFdlYkNvbG9yQ2hvb3NlclByb3h5OjpDbGll
bnQKKyAgICAsIHB1YmxpYyBXZWJDb2xvclBpY2tlcjo6Q2xpZW50CiAjZW5kaWYKICAgICAsIHB1
YmxpYyBXZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50CiAgICAgLCBwdWJsaWMgQ29yZUlQQzo6TWVz
c2FnZVJlY2VpdmVyIHsKQEAgLTExOTksNyArMTE5OSw3IEBAIHByaXZhdGU6CiAgICAgRGVxdWU8
UXVldWVkVG91Y2hFdmVudHM+IG1fdG91Y2hFdmVudFF1ZXVlOwogI2VuZGlmCiAjaWYgRU5BQkxF
KElOUFVUX1RZUEVfQ09MT1IpCi0gICAgUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5PiBtX2Nv
bG9yQ2hvb3NlcjsKKyAgICBSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IG1fY29sb3JQaWNrZXI7CiAg
ICAgUmVmUHRyPFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eT4gbV9jb2xvclBpY2tl
clJlc3VsdExpc3RlbmVyOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDE1MzA5NykK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjMxLDcgKzIzMSw3IEBAIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1l
bnVQcm94eT4gUGFnZUNsaWUKIH0KIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotUGFz
c1JlZlB0cjxXZWJDb2xvckNob29zZXJQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9y
Q2hvb3NlclByb3h5KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYpCitQYXNzUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBQYWdlQ2xpZW50
SW1wbDo6Y3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29s
b3ImLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
ICAgIHJldHVybiAwOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFn
ZUNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9QYWdlQ2xpZW50SW1wbC5oCShyZXZpc2lvbiAxNTMwOTcpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC04
NCw3ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYlBvcHVwTWVu
dVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKTsKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShX
ZWJQYWdlUHJveHkqKTsKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJveHk+IGNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5
KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbnRpYWxDb2xvciwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb2xvclBpY2tl
cj4gY3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3Im
IGludGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAjZW5kaWYKICAgICB2aXJ0
dWFsIHZvaWQgc2V0RmluZEluZGljYXRvcihQYXNzUmVmUHRyPEZpbmRJbmRpY2F0b3I+LCBib29s
IGZhZGVPdXQsIGJvb2wgYW5pbWF0ZSk7CiAgICAgdmlydHVhbCB2b2lkIGZsYXNoQmFja2luZ1N0
b3JlVXBkYXRlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIHVwZGF0ZVJlY3RzKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVu
dEltcGwuaAkocmV2aXNpb24gMTUzMDk3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvUGFnZUNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNy
ZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5Kik7CiAKICNpZiBFTkFCTEUoSU5QVVRf
VFlQRV9DT0xPUikKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJveHk+
IGNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKKyAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94
eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKTsKICNlbmRpZgogCiAgICAgdm9pZCBzZXRGaW5kSW5kaWNhdG9yKFBhc3NSZWZQdHI8
RmluZEluZGljYXRvcj4sIGJvb2wgZmFkZU91dCwgYm9vbCBhbmltYXRlKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCShy
ZXZpc2lvbiAxNTMwOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdl
Q2xpZW50SW1wbC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzkzLDcgKzM5Myw3IEBAIFBhc3NSZWZQ
dHI8V2ViQ29udGV4dE1lbnVQcm94eT4gUGFnZUNsaWUKIH0KIAogI2lmIEVOQUJMRShJTlBVVF9U
WVBFX0NPTE9SKQotUGFzc1JlZlB0cjxXZWJDb2xvckNob29zZXJQcm94eT4gUGFnZUNsaWVudElt
cGw6OmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6
OkNvbG9yJiwgIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKQorUGFzc1JlZlB0cjxXZWJDb2xvclBp
Y2tlcj4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSosIGNv
bnN0IFdlYkNvcmU6OkNvbG9yJiwgIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKQogewogICAgIG5v
dEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXcuY3BwCShyZXZpc2lvbiAxNTMw
OTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlldy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MCwxMCArMTkwLDEwIEBAIFBhc3NSZWZQdHI8V2ViS2l0
OjpXZWJDb250ZXh0TWVudVByb3h5PiAKIH0KIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KQotUGFzc1JlZlB0cjxXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5PiBRUmF3V2ViVmlld1By
aXZhdGU6OmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29u
c3QgV2ViQ29yZTo6Q29sb3ImIGludGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikK
K1Bhc3NSZWZQdHI8V2ViS2l0OjpXZWJDb2xvclBpY2tlcj4gUVJhd1dlYlZpZXdQcml2YXRlOjpj
cmVhdGVDb2xvclBpY2tlcihXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiBpbnRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gUGFzc1JlZlB0cjxXZWJLaXQ6OldlYkNvbG9yQ2hvb3Nl
clByb3h5PigpOworICAgIHJldHVybiBQYXNzUmVmUHRyPFdlYktpdDo6V2ViQ29sb3JQaWNrZXI+
KCk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9y
YXcvcXJhd3dlYnZpZXdfcF9wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXdfcF9wLmgJKHJldmlzaW9uIDE1MzA5NykKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3X3BfcC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdl
YktpdDo6V2ViUGFnZVByb3h5KiB3ZWJQYWdlUHJveHkpOwogCiAjaWYgRU5BQkxFKElOUFVUX1RZ
UEVfQ09MT1IpCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYktpdDo6V2ViQ29sb3JDaG9vc2Vy
UHJveHk+IGNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29u
c3QgV2ViQ29yZTo6Q29sb3ImIGludGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7
CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYktpdDo6V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNv
bG9yUGlja2VyKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGlu
dGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAjZW5kaWYKIAogICAgIFFSYXdX
ZWJWaWV3UHJpdmF0ZShXZWJLaXQ6OldlYkNvbnRleHQqLCBXZWJLaXQ6OldlYlBhZ2VHcm91cCos
IFFSYXdXZWJWaWV3Q2xpZW50Kik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcAkocmV2aXNpb24gMTUz
MDk3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2Vi
Vmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxMiw3ICs0MTIsNyBAQCBQYXNzUmVmUHRyPFdl
YkNvbnRleHRNZW51UHJveHk+IFdlYlZpZXc6CiB9CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9D
T0xPUikKLVBhc3NSZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJveHk+IFdlYlZpZXc6OmNyZWF0ZUNv
bG9yQ2hvb3NlclByb3h5KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpCitQYXNzUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBXZWJWaWV3
OjpjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAg
cmV0dXJuIDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9XZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5oCShyZXZpc2lvbiAxNTMwOTcpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE3NCw3ICsxNzQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkq
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4g
Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBPVkVSUklERTsKICNpZiBFTkFC
TEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29sb3JDaG9v
c2VyUHJveHk+IGNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdl
YkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9y
UGlja2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3Is
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBPVkVSUklERTsKICNlbmRpZgogCiAgICAgdmlydHVh
bCB2b2lkIHNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNhdG9yPiwgYm9vbCwg
Ym9vbCkgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYWdl
Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQ
YWdlQ2xpZW50LmNwcAkocmV2aXNpb24gMTUzMDk3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0UGFnZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAK
ICNpbmNsdWRlICJRdFdlYlBhZ2VFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJTaGFyZWFibGVC
aXRtYXAuaCIKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSNpbmNsdWRlICJXZWJDb2xv
ckNob29zZXJQcm94eVF0LmgiCisjaW5jbHVkZSAiV2ViQ29sb3JQaWNrZXJRdC5oIgogI2VuZGlm
CiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eVF0LmgiCiAjaW5jbHVkZSAiV2ViRWRpdENv
bW1hbmRQcm94eS5oIgpAQCAtMjIxLDkgKzIyMSw5IEBAIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1l
bnVQcm94eT4gUXRQYWdlQ2wKIH0KIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotUGFz
c1JlZlB0cjxXZWJDb2xvckNob29zZXJQcm94eT4gUXRQYWdlQ2xpZW50OjpjcmVhdGVDb2xvckNo
b29zZXJQcm94eShXZWJQYWdlUHJveHkqIHdlYlBhZ2VQcm94eSwgY29uc3QgV2ViQ29yZTo6Q29s
b3ImIGluaXRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QpCitQ
YXNzUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBRdFBhZ2VDbGllbnQ6OmNyZWF0ZUNvbG9yUGlja2Vy
KFdlYlBhZ2VQcm94eSogd2ViUGFnZVByb3h5LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlh
bENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCkKIHsKLSAgICByZXR1
cm4gV2ViQ29sb3JDaG9vc2VyUHJveHlRdDo6Y3JlYXRlKHdlYlBhZ2VQcm94eSwgbV93ZWJWaWV3
LCBpbml0aWFsQ29sb3IsIGVsZW1lbnRSZWN0KTsKKyAgICByZXR1cm4gV2ViQ29sb3JQaWNrZXJR
dDo6Y3JlYXRlKHdlYlBhZ2VQcm94eSwgbV93ZWJWaWV3LCBpbml0aWFsQ29sb3IsIGVsZW1lbnRS
ZWN0KTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQ
YWdlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0
UGFnZUNsaWVudC5oCShyZXZpc2lvbiAxNTMwOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvUXRQYWdlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTkwLDcgKzkwLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9w
dXBNZW51UHJveHkoV2ViUGFnZVByb3h5Kik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNv
bnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5Kik7CiAj
aWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNv
bG9yQ2hvb3NlclByb3h5PiBjcmVhdGVDb2xvckNob29zZXJQcm94eShXZWJQYWdlUHJveHkqLCBj
b25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
Jik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBjcmVhdGVDb2xvclBp
Y2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgc2V0Rmlu
ZEluZGljYXRvcihQYXNzUmVmUHRyPEZpbmRJbmRpY2F0b3I+LCBib29sIGZhZGVPdXQsIGJvb2wg
YW5pbWF0ZSkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGZsYXNoQmFja2luZ1N0b3JlVXBkYXRlcyhj
b25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIHVwZGF0ZVJlY3RzKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb2xvckNob29zZXJQcm94eVF0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViQ29sb3JDaG9vc2VyUHJveHlR
dC5jcHAJKHJldmlzaW9uIDE1MzA5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9X
ZWJDb2xvckNob29zZXJQcm94eVF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxNTIgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJXZWJDb2xvckNob29zZXJQcm94eVF0LmgiCi0KLSNpbmNsdWRlICJxcXVpY2t3ZWJ2aWV3X3Au
aCIKLSNpbmNsdWRlICJxcXVpY2t3ZWJ2aWV3X3BfcC5oIgotI2luY2x1ZGUgPFF0UW1sL1FRbWxD
b250ZXh0PgotI2luY2x1ZGUgPFF0UW1sL1FRbWxFbmdpbmU+Ci0KLXVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgQ29sb3JDaG9vc2VyQ29udGV4
dE9iamVjdCA6IHB1YmxpYyBRT2JqZWN0IHsKLSAgICBRX09CSkVDVAotICAgIFFfUFJPUEVSVFko
UUNvbG9yIGN1cnJlbnRDb2xvciBSRUFEIGN1cnJlbnRDb2xvciBDT05TVEFOVCBGSU5BTCkKLSAg
ICBRX1BST1BFUlRZKFFSZWN0RiBlbGVtZW50UmVjdCBSRUFEIGVsZW1lbnRSZWN0IENPTlNUQU5U
IEZJTkFMKQotCi1wdWJsaWM6Ci0gICAgQ29sb3JDaG9vc2VyQ29udGV4dE9iamVjdChjb25zdCBR
Q29sb3ImIGNvbG9yLCBjb25zdCBRUmVjdEYmIHJlY3QpCi0gICAgICAgIDogbV9jdXJyZW50Q29s
b3IoY29sb3IpCi0gICAgICAgICwgbV9yZWN0KHJlY3QpCi0gICAgewotICAgIH0KLQotICAgIFFD
b2xvciBjdXJyZW50Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRDb2xvcjsgfQotICAg
IFFSZWN0RiBlbGVtZW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQotCi0gICAgUV9J
TlZPS0FCTEUgdm9pZCBhY2NlcHQoY29uc3QgUUNvbG9yJiBjb2xvcikgeyBlbWl0IGFjY2VwdGVk
KGNvbG9yKTsgfQotICAgIFFfSU5WT0tBQkxFIHZvaWQgcmVqZWN0KCkgeyBlbWl0IHJlamVjdGVk
KCk7IH0KLQotUV9TSUdOQUxTOgotICAgIHZvaWQgYWNjZXB0ZWQoY29uc3QgUUNvbG9yJik7Ci0g
ICAgdm9pZCByZWplY3RlZCgpOwotCi1wcml2YXRlOgotICAgIFFDb2xvciBtX2N1cnJlbnRDb2xv
cjsKLSAgICBRUmVjdEYgbV9yZWN0OwotfTsKLQotV2ViQ29sb3JDaG9vc2VyUHJveHlRdDo6V2Vi
Q29sb3JDaG9vc2VyUHJveHlRdChXZWJDb2xvckNob29zZXJQcm94eTo6Q2xpZW50KiBjbGllbnQs
IFFRdWlja1dlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IENvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0
IEludFJlY3QmIGVsZW1lbnRSZWN0KQotICAgIDogV2ViQ29sb3JDaG9vc2VyUHJveHkoY2xpZW50
KQotICAgICwgbV93ZWJWaWV3KHdlYlZpZXcpCi17Ci0gICAgY29uc3QgUVJlY3RGIG1hcHBlZFJl
Y3Q9IG1fd2ViVmlldy0+bWFwUmVjdEZyb21XZWJDb250ZW50KFFSZWN0KGVsZW1lbnRSZWN0KSk7
Ci0gICAgQ29sb3JDaG9vc2VyQ29udGV4dE9iamVjdCogY29udGV4dE9iamVjdCA9IG5ldyBDb2xv
ckNob29zZXJDb250ZXh0T2JqZWN0KGluaXRpYWxDb2xvciwgbWFwcGVkUmVjdCk7Ci0gICAgY3Jl
YXRlSXRlbShjb250ZXh0T2JqZWN0KTsKLX0KLQotV2ViQ29sb3JDaG9vc2VyUHJveHlRdDo6fldl
YkNvbG9yQ2hvb3NlclByb3h5UXQoKQotewotfQotCi12b2lkIFdlYkNvbG9yQ2hvb3NlclByb3h5
UXQ6OmNyZWF0ZUl0ZW0oUU9iamVjdCogY29udGV4dE9iamVjdCkKLXsKLSAgICBRUW1sQ29tcG9u
ZW50KiBjb21wb25lbnQgPSBtX3dlYlZpZXctPmV4cGVyaW1lbnRhbCgpLT5jb2xvckNob29zZXIo
KTsKLSAgICBpZiAoIWNvbXBvbmVudCkgewotICAgICAgICBkZWxldGUgY29udGV4dE9iamVjdDsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNyZWF0ZUNvbnRleHQoY29tcG9uZW50LCBj
b250ZXh0T2JqZWN0KTsKLSAgICBRT2JqZWN0KiBvYmplY3QgPSBjb21wb25lbnQtPmJlZ2luQ3Jl
YXRlKG1fY29udGV4dC5nZXQoKSk7Ci0gICAgaWYgKCFvYmplY3QpIHsKLSAgICAgICAgbV9jb250
ZXh0LmNsZWFyKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX2NvbG9yQ2hvb3Nl
ciA9IGFkb3B0UHRyKHFvYmplY3RfY2FzdDxRUXVpY2tJdGVtKj4ob2JqZWN0KSk7Ci0gICAgaWYg
KCFtX2NvbG9yQ2hvb3NlcikgewotICAgICAgICBtX2NvbnRleHQuY2xlYXIoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIC8vIE5lZWRzIHRvIGJlIGVucXVldWUgYmVjYXVzZSBpdCBt
aWdodCB0cmlnZ2VyIGRlbGV0aW9uLgotICAgIGNvbm5lY3QoY29udGV4dE9iamVjdCwgU0lHTkFM
KGFjY2VwdGVkKFFDb2xvcikpLCBTTE9UKG5vdGlmeUNvbG9yU2VsZWN0ZWQoUUNvbG9yKSksIFF0
OjpRdWV1ZWRDb25uZWN0aW9uKTsKLSAgICBjb25uZWN0KGNvbnRleHRPYmplY3QsIFNJR05BTChy
ZWplY3RlZCgpKSwgU0xPVChlbmRDaG9vc2VyKCkpLCBRdDo6UXVldWVkQ29ubmVjdGlvbik7Ci0K
LSAgICBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6Z2V0KG1fd2ViVmlldyktPmFkZEF0dGFjaGVkUHJv
cGVydHlUbyhtX2NvbG9yQ2hvb3Nlci5nZXQoKSk7Ci0gICAgbV9jb2xvckNob29zZXItPnNldFBh
cmVudEl0ZW0obV93ZWJWaWV3KTsKLQotICAgIGNvbXBvbmVudC0+Y29tcGxldGVDcmVhdGUoKTsK
LX0KLQotdm9pZCBXZWJDb2xvckNob29zZXJQcm94eVF0OjpjcmVhdGVDb250ZXh0KFFRbWxDb21w
b25lbnQqIGNvbXBvbmVudCwgUU9iamVjdCogY29udGV4dE9iamVjdCkKLXsKLSAgICBRUW1sQ29u
dGV4dCogYmFzZUNvbnRleHQgPSBjb21wb25lbnQtPmNyZWF0aW9uQ29udGV4dCgpOwotICAgIGlm
ICghYmFzZUNvbnRleHQpCi0gICAgICAgIGJhc2VDb250ZXh0ID0gUVFtbEVuZ2luZTo6Y29udGV4
dEZvck9iamVjdChtX3dlYlZpZXcpOwotICAgIG1fY29udGV4dCA9IGFkb3B0UHRyKG5ldyBRUW1s
Q29udGV4dChiYXNlQ29udGV4dCkpOwotCi0gICAgY29udGV4dE9iamVjdC0+c2V0UGFyZW50KG1f
Y29udGV4dC5nZXQoKSk7Ci0gICAgbV9jb250ZXh0LT5zZXRDb250ZXh0UHJvcGVydHkoUUxhdGlu
MVN0cmluZygibW9kZWwiKSwgY29udGV4dE9iamVjdCk7Ci0gICAgbV9jb250ZXh0LT5zZXRDb250
ZXh0T2JqZWN0KGNvbnRleHRPYmplY3QpOwotfQotCi12b2lkIFdlYkNvbG9yQ2hvb3NlclByb3h5
UXQ6OnNldFNlbGVjdGVkQ29sb3IoY29uc3QgQ29sb3ImKQotewotICAgIC8vIFRoaXMgaXMgc3Vw
cG9zZSB0byBiZSB1c2VkIHRvIHJlYWN0IHRvIERPTSBjaGFuZ2VzLiBXaGVuCi0gICAgLy8gYSB1
c2VyIHNjcmlwdCBjaGFuZ2VzIHRoZSBpbnB1dCB2YWx1ZSwgdGhlIG1ldGhvZCBnaXZlcyB0aGUK
LSAgICAvLyBvcHRpb24gdG8gdXBkYXRlIHRoZSBjb2xvciBjaG9vc2VyIFVJIGlmIHdlIHdlcmUg
c2hvd2luZyB0aGUKLSAgICAvLyBjdXJyZW50IHZhbHVlLiBTaW5jZSB3ZSBkb24ndCwgaXQgaXMg
aXJyZWxldmFudCByaWdodCBub3cuCi0gICAgLy8gQW5kIHllcywgdGhlIG5hbWUgc291bmRzIG1p
c2xlYWRpbmcgYnV0IGNvbWVzIGZyb20gV2ViQ29yZS4KLX0KLQotdm9pZCBXZWJDb2xvckNob29z
ZXJQcm94eVF0Ojpub3RpZnlDb2xvclNlbGVjdGVkKGNvbnN0IFFDb2xvciYgY29sb3IpCi17Ci0g
ICAgaWYgKCFtX2NsaWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gQWxwaGEgaXMgYWx3
YXlzIGlnbm9yZWQgYnkgdGhlIGNvbG9yIGlucHV0Ci0gICAgQ29sb3IgY29yZUNvbG9yID0gbWFr
ZVJHQihjb2xvci5yZWQoKSwgY29sb3IuZ3JlZW4oKSwgY29sb3IuYmx1ZSgpKTsKLSAgICBtX2Ns
aWVudC0+ZGlkQ2hvb3NlQ29sb3IoY29yZUNvbG9yKTsKLQotICAgIGVuZENob29zZXIoKTsKLX0K
LQotdm9pZCBXZWJDb2xvckNob29zZXJQcm94eVF0OjplbmRDaG9vc2VyKCkKLXsKLSAgICBtX2Nv
bG9yQ2hvb3Nlci5jbGVhcigpOwotICAgIG1fY29udGV4dC5jbGVhcigpOwotCi0gICAgaWYgKCFt
X2NsaWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jbGllbnQtPmRpZEVuZENvbG9yQ2hv
b3NlcigpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2luY2x1ZGUgIldlYkNvbG9y
Q2hvb3NlclByb3h5UXQubW9jIgotI2luY2x1ZGUgIm1vY19XZWJDb2xvckNob29zZXJQcm94eVF0
LmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb2xvckNob29zZXJQ
cm94eVF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNv
bG9yQ2hvb3NlclByb3h5UXQuaAkocmV2aXNpb24gMTUzMDk3KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1dlYkNvbG9yQ2hvb3NlclByb3h5UXQuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9u
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2lmbmRlZiBXZWJDb2xvckNob29zZXJQcm94eVF0
X2gKLSNkZWZpbmUgV2ViQ29sb3JDaG9vc2VyUHJveHlRdF9oCi0KLSNpbmNsdWRlICJJbnRSZWN0
LmgiCi0jaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyUHJveHkuaCIKLSNpbmNsdWRlIDxRdENvcmUv
UU9iamVjdD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0KLVFUX0JFR0lOX05BTUVTUEFDRQot
Y2xhc3MgUVFtbENvbXBvbmVudDsKLWNsYXNzIFFRbWxDb250ZXh0OwotY2xhc3MgUVF1aWNrSXRl
bTsKLVFUX0VORF9OQU1FU1BBQ0UKLQotY2xhc3MgUVF1aWNrV2ViVmlldzsKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotY2xhc3MgQ29sb3I7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFz
cyBXZWJDb2xvckNob29zZXJQcm94eVF0IDogcHVibGljIFFPYmplY3QsIHB1YmxpYyBXZWJDb2xv
ckNob29zZXJQcm94eSB7Ci0gICAgUV9PQkpFQ1QKLQotcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5PiBjcmVhdGUoV2ViQ29sb3JDaG9vc2VyUHJveHk6
OkNsaWVudCogY2xpZW50LCBRUXVpY2tXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBXZWJDb3JlOjpD
b2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29sb3JDaG9vc2VyUHJveHlR
dChjbGllbnQsIHdlYlZpZXcsIGluaXRpYWxDb2xvciwgZWxlbWVudFJlY3QpKTsKLSAgICB9Ci0g
ICAgfldlYkNvbG9yQ2hvb3NlclByb3h5UXQoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxl
Y3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7Ci0KLXB1YmxpYyBRX1NMT1RTOgotICAg
IHZpcnR1YWwgdm9pZCBlbmRDaG9vc2VyKCk7Ci0KLXByaXZhdGUgUV9TTE9UUzoKLSAgICB2b2lk
IG5vdGlmeUNvbG9yU2VsZWN0ZWQoY29uc3QgUUNvbG9yJik7Ci0KLXByaXZhdGU6Ci0gICAgV2Vi
Q29sb3JDaG9vc2VyUHJveHlRdChXZWJDb2xvckNob29zZXJQcm94eTo6Q2xpZW50KiwgUVF1aWNr
V2ViVmlldyosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
OwotCi0gICAgdm9pZCBjcmVhdGVJdGVtKFFPYmplY3QqKTsKLSAgICB2b2lkIGNyZWF0ZUNvbnRl
eHQoUVFtbENvbXBvbmVudCosIFFPYmplY3QqKTsKLQotICAgIE93blB0cjxRUW1sQ29udGV4dD4g
bV9jb250ZXh0OwotICAgIE93blB0cjxRUXVpY2tJdGVtPiBtX2NvbG9yQ2hvb3NlcjsKLQotICAg
IFFRdWlja1dlYlZpZXcqIG1fd2ViVmlldzsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci0jZW5kaWYgLy8gV2ViQ29sb3JDaG9vc2VyUHJveHlRdF9oCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvV2ViQ29sb3JQaWNrZXJRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbG9yUGlja2VyUXQuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbG9yUGlja2VyUXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElu
dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkNvbG9yUGlja2VyUXQuaCIKKworI2luY2x1
ZGUgInFxdWlja3dlYnZpZXdfcC5oIgorI2luY2x1ZGUgInFxdWlja3dlYnZpZXdfcF9wLmgiCisj
aW5jbHVkZSA8UXRRbWwvUVFtbENvbnRleHQ+CisjaW5jbHVkZSA8UXRRbWwvUVFtbEVuZ2luZT4K
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBDb2xvckNob29zZXJDb250ZXh0T2JqZWN0IDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JK
RUNUCisgICAgUV9QUk9QRVJUWShRQ29sb3IgY3VycmVudENvbG9yIFJFQUQgY3VycmVudENvbG9y
IENPTlNUQU5UIEZJTkFMKQorICAgIFFfUFJPUEVSVFkoUVJlY3RGIGVsZW1lbnRSZWN0IFJFQUQg
ZWxlbWVudFJlY3QgQ09OU1RBTlQgRklOQUwpCisKK3B1YmxpYzoKKyAgICBDb2xvckNob29zZXJD
b250ZXh0T2JqZWN0KGNvbnN0IFFDb2xvciYgY29sb3IsIGNvbnN0IFFSZWN0RiYgcmVjdCkKKyAg
ICAgICAgOiBtX2N1cnJlbnRDb2xvcihjb2xvcikKKyAgICAgICAgLCBtX3JlY3QocmVjdCkKKyAg
ICB7CisgICAgfQorCisgICAgUUNvbG9yIGN1cnJlbnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1f
Y3VycmVudENvbG9yOyB9CisgICAgUVJlY3RGIGVsZW1lbnRSZWN0KCkgY29uc3QgeyByZXR1cm4g
bV9yZWN0OyB9CisKKyAgICBRX0lOVk9LQUJMRSB2b2lkIGFjY2VwdChjb25zdCBRQ29sb3ImIGNv
bG9yKSB7IGVtaXQgYWNjZXB0ZWQoY29sb3IpOyB9CisgICAgUV9JTlZPS0FCTEUgdm9pZCByZWpl
Y3QoKSB7IGVtaXQgcmVqZWN0ZWQoKTsgfQorCitRX1NJR05BTFM6CisgICAgdm9pZCBhY2NlcHRl
ZChjb25zdCBRQ29sb3ImKTsKKyAgICB2b2lkIHJlamVjdGVkKCk7CisKK3ByaXZhdGU6CisgICAg
UUNvbG9yIG1fY3VycmVudENvbG9yOworICAgIFFSZWN0RiBtX3JlY3Q7Cit9OworCitXZWJDb2xv
clBpY2tlclF0OjpXZWJDb2xvclBpY2tlclF0KFdlYkNvbG9yUGlja2VyOjpDbGllbnQqIGNsaWVu
dCwgUVF1aWNrV2ViVmlldyogd2ViVmlldywgY29uc3QgQ29sb3ImIGluaXRpYWxDb2xvciwgY29u
c3QgSW50UmVjdCYgZWxlbWVudFJlY3QpCisgICAgOiBXZWJDb2xvclBpY2tlcihjbGllbnQpCisg
ICAgLCBtX3dlYlZpZXcod2ViVmlldykKK3sKKyAgICBjb25zdCBRUmVjdEYgbWFwcGVkUmVjdD0g
bV93ZWJWaWV3LT5tYXBSZWN0RnJvbVdlYkNvbnRlbnQoUVJlY3QoZWxlbWVudFJlY3QpKTsKKyAg
ICBDb2xvckNob29zZXJDb250ZXh0T2JqZWN0KiBjb250ZXh0T2JqZWN0ID0gbmV3IENvbG9yQ2hv
b3NlckNvbnRleHRPYmplY3QoaW5pdGlhbENvbG9yLCBtYXBwZWRSZWN0KTsKKyAgICBjcmVhdGVJ
dGVtKGNvbnRleHRPYmplY3QpOworfQorCitXZWJDb2xvclBpY2tlclF0Ojp+V2ViQ29sb3JQaWNr
ZXJRdCgpCit7Cit9CisKK3ZvaWQgV2ViQ29sb3JQaWNrZXJRdDo6Y3JlYXRlSXRlbShRT2JqZWN0
KiBjb250ZXh0T2JqZWN0KQoreworICAgIFFRbWxDb21wb25lbnQqIGNvbXBvbmVudCA9IG1fd2Vi
Vmlldy0+ZXhwZXJpbWVudGFsKCktPmNvbG9yQ2hvb3NlcigpOworICAgIGlmICghY29tcG9uZW50
KSB7CisgICAgICAgIGRlbGV0ZSBjb250ZXh0T2JqZWN0OworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgY3JlYXRlQ29udGV4dChjb21wb25lbnQsIGNvbnRleHRPYmplY3QpOworICAgIFFP
YmplY3QqIG9iamVjdCA9IGNvbXBvbmVudC0+YmVnaW5DcmVhdGUobV9jb250ZXh0LmdldCgpKTsK
KyAgICBpZiAoIW9iamVjdCkgeworICAgICAgICBtX2NvbnRleHQuY2xlYXIoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIG1fY29sb3JDaG9vc2VyID0gYWRvcHRQdHIocW9iamVjdF9j
YXN0PFFRdWlja0l0ZW0qPihvYmplY3QpKTsKKyAgICBpZiAoIW1fY29sb3JDaG9vc2VyKSB7Cisg
ICAgICAgIG1fY29udGV4dC5jbGVhcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Ly8gTmVlZHMgdG8gYmUgZW5xdWV1ZSBiZWNhdXNlIGl0IG1pZ2h0IHRyaWdnZXIgZGVsZXRpb24u
CisgICAgY29ubmVjdChjb250ZXh0T2JqZWN0LCBTSUdOQUwoYWNjZXB0ZWQoUUNvbG9yKSksIFNM
T1Qobm90aWZ5Q29sb3JTZWxlY3RlZChRQ29sb3IpKSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOwor
ICAgIGNvbm5lY3QoY29udGV4dE9iamVjdCwgU0lHTkFMKHJlamVjdGVkKCkpLCBTTE9UKGVuZENo
b29zZXIoKSksIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKKworICAgIFFRdWlja1dlYlZpZXdQcml2
YXRlOjpnZXQobV93ZWJWaWV3KS0+YWRkQXR0YWNoZWRQcm9wZXJ0eVRvKG1fY29sb3JDaG9vc2Vy
LmdldCgpKTsKKyAgICBtX2NvbG9yQ2hvb3Nlci0+c2V0UGFyZW50SXRlbShtX3dlYlZpZXcpOwor
CisgICAgY29tcG9uZW50LT5jb21wbGV0ZUNyZWF0ZSgpOworfQorCit2b2lkIFdlYkNvbG9yUGlj
a2VyUXQ6OmNyZWF0ZUNvbnRleHQoUVFtbENvbXBvbmVudCogY29tcG9uZW50LCBRT2JqZWN0KiBj
b250ZXh0T2JqZWN0KQoreworICAgIFFRbWxDb250ZXh0KiBiYXNlQ29udGV4dCA9IGNvbXBvbmVu
dC0+Y3JlYXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFiYXNlQ29udGV4dCkKKyAgICAgICAgYmFz
ZUNvbnRleHQgPSBRUW1sRW5naW5lOjpjb250ZXh0Rm9yT2JqZWN0KG1fd2ViVmlldyk7CisgICAg
bV9jb250ZXh0ID0gYWRvcHRQdHIobmV3IFFRbWxDb250ZXh0KGJhc2VDb250ZXh0KSk7CisKKyAg
ICBjb250ZXh0T2JqZWN0LT5zZXRQYXJlbnQobV9jb250ZXh0LmdldCgpKTsKKyAgICBtX2NvbnRl
eHQtPnNldENvbnRleHRQcm9wZXJ0eShRTGF0aW4xU3RyaW5nKCJtb2RlbCIpLCBjb250ZXh0T2Jq
ZWN0KTsKKyAgICBtX2NvbnRleHQtPnNldENvbnRleHRPYmplY3QoY29udGV4dE9iamVjdCk7Cit9
CisKK3ZvaWQgV2ViQ29sb3JQaWNrZXJRdDo6c2V0U2VsZWN0ZWRDb2xvcihjb25zdCBDb2xvciYp
Cit7CisgICAgLy8gVGhpcyBpcyBzdXBwb3NlIHRvIGJlIHVzZWQgdG8gcmVhY3QgdG8gRE9NIGNo
YW5nZXMuIFdoZW4KKyAgICAvLyBhIHVzZXIgc2NyaXB0IGNoYW5nZXMgdGhlIGlucHV0IHZhbHVl
LCB0aGUgbWV0aG9kIGdpdmVzIHRoZQorICAgIC8vIG9wdGlvbiB0byB1cGRhdGUgdGhlIGNvbG9y
IGNob29zZXIgVUkgaWYgd2Ugd2VyZSBzaG93aW5nIHRoZQorICAgIC8vIGN1cnJlbnQgdmFsdWUu
IFNpbmNlIHdlIGRvbid0LCBpdCBpcyBpcnJlbGV2YW50IHJpZ2h0IG5vdy4KKyAgICAvLyBBbmQg
eWVzLCB0aGUgbmFtZSBzb3VuZHMgbWlzbGVhZGluZyBidXQgY29tZXMgZnJvbSBXZWJDb3JlLgor
fQorCit2b2lkIFdlYkNvbG9yUGlja2VyUXQ6Om5vdGlmeUNvbG9yU2VsZWN0ZWQoY29uc3QgUUNv
bG9yJiBjb2xvcikKK3sKKyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyBBbHBoYSBpcyBhbHdheXMgaWdub3JlZCBieSB0aGUgY29sb3IgaW5wdXQKKyAgICBDb2xv
ciBjb3JlQ29sb3IgPSBtYWtlUkdCKGNvbG9yLnJlZCgpLCBjb2xvci5ncmVlbigpLCBjb2xvci5i
bHVlKCkpOworICAgIG1fY2xpZW50LT5kaWRDaG9vc2VDb2xvcihjb3JlQ29sb3IpOworCisgICAg
ZW5kQ2hvb3NlcigpOworfQorCit2b2lkIFdlYkNvbG9yUGlja2VyUXQ6OmVuZENob29zZXIoKQor
eworICAgIG1fY29sb3JDaG9vc2VyLmNsZWFyKCk7CisgICAgbV9jb250ZXh0LmNsZWFyKCk7CisK
KyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC0+ZGlk
RW5kQ29sb3JDaG9vc2VyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjaW5jbHVk
ZSAiV2ViQ29sb3JQaWNrZXJRdC5tb2MiCisjaW5jbHVkZSAibW9jX1dlYkNvbG9yUGlja2VyUXQu
Y3BwIgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbG9yUGlja2VyUXQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViQ29sb3JQaWNr
ZXJRdC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNv
bG9yUGlja2VyUXQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8K
KworI2lmbmRlZiBXZWJDb2xvclBpY2tlclF0X2gKKyNkZWZpbmUgV2ViQ29sb3JQaWNrZXJRdF9o
CisKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiV2ViQ29sb3JQaWNrZXIuaCIKKyNp
bmNsdWRlIDxRdENvcmUvUU9iamVjdD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK1FUX0JF
R0lOX05BTUVTUEFDRQorY2xhc3MgUVFtbENvbXBvbmVudDsKK2NsYXNzIFFRbWxDb250ZXh0Owor
Y2xhc3MgUVF1aWNrSXRlbTsKK1FUX0VORF9OQU1FU1BBQ0UKKworY2xhc3MgUVF1aWNrV2ViVmll
dzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29sb3I7Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBXZWJDb2xvclBpY2tlclF0IDogcHVibGljIFFPYmplY3QsIHB1Ymxp
YyBXZWJDb2xvclBpY2tlciB7CisgICAgUV9PQkpFQ1QKKworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBjcmVhdGUoV2ViQ29sb3JQaWNrZXI6OkNsaWVudCog
Y2xpZW50LCBRUXVpY2tXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5p
dGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29sb3JQaWNrZXJRdChjbGllbnQsIHdlYlZp
ZXcsIGluaXRpYWxDb2xvciwgZWxlbWVudFJlY3QpKTsKKyAgICB9CisgICAgfldlYkNvbG9yUGlj
a2VyUXQoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNv
cmU6OkNvbG9yJik7CisKK3B1YmxpYyBRX1NMT1RTOgorICAgIHZpcnR1YWwgdm9pZCBlbmRDaG9v
c2VyKCk7CisKK3ByaXZhdGUgUV9TTE9UUzoKKyAgICB2b2lkIG5vdGlmeUNvbG9yU2VsZWN0ZWQo
Y29uc3QgUUNvbG9yJik7CisKK3ByaXZhdGU6CisgICAgV2ViQ29sb3JQaWNrZXJRdChXZWJDb2xv
clBpY2tlcjo6Q2xpZW50KiwgUVF1aWNrV2ViVmlldyosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOworCisgICAgdm9pZCBjcmVhdGVJdGVtKFFPYmplY3Qq
KTsKKyAgICB2b2lkIGNyZWF0ZUNvbnRleHQoUVFtbENvbXBvbmVudCosIFFPYmplY3QqKTsKKwor
ICAgIE93blB0cjxRUW1sQ29udGV4dD4gbV9jb250ZXh0OworICAgIE93blB0cjxRUXVpY2tJdGVt
PiBtX2NvbG9yQ2hvb3NlcjsKKworICAgIFFRdWlja1dlYlZpZXcqIG1fd2ViVmlldzsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViQ29sb3JQaWNrZXJRdF9oCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAxNTMwOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQwNiw3ICs0MDYsNyBAQAogCQkz
N0Y5MERFMzEzNzY1NjBFMDA1MUNGNjggLyogSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjYzODk1NEYxMzNCRUYz
ODAwODk0MUQ1IC8qIEhUVFBDb29raWVBY2NlcHRQb2xpY3kuaCAqLzsgfTsKIAkJM0Y4N0I5QkQx
NTg5NDAxMjAwOTBGRjYyIC8qIFdlYkNvbG9yQ2hvb3Nlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzRjg3QjlCQTE1ODkzRjYzMDA5MEZGNjIgLyog
V2ViQ29sb3JDaG9vc2VyLmNwcCAqLzsgfTsKIAkJM0Y4N0I5QkUxNTg5NDAxOTAwOTBGRjYyIC8q
IFdlYkNvbG9yQ2hvb3Nlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gM0Y4N0I5QkIxNTg5M0Y2MzAwOTBGRjYyIC8qIFdlYkNvbG9yQ2hvb3Nlci5oICov
OyB9OwotCQkzRjg3QjlDMDE1ODk0MEQ4MDA5MEZGNjIgLyogV2ViQ29sb3JDaG9vc2VyUHJveHku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNGODdCOUJG
MTU4OTQwRDgwMDkwRkY2MiAvKiBXZWJDb2xvckNob29zZXJQcm94eS5oICovOyB9OworCQkzRjg3
QjlDMDE1ODk0MEQ4MDA5MEZGNjIgLyogV2ViQ29sb3JQaWNrZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNGODdCOUJGMTU4OTQwRDgwMDkwRkY2MiAv
KiBXZWJDb2xvclBpY2tlci5oICovOyB9OwogCQk0RjYwMTQzMjE1NUM1QUEyMDAxRkJERTAgLyog
QmxvY2tpbmdSZXNwb25zZU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEY2MDE0MzAxNTVDNUEzMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9uc2VN
YXAuaCAqLzsgfTsKIAkJNTEwMjFFOUMxMkIxNjc4ODAwNUMwMzNDIC8qIFdlYkNvbnRleHRNZW51
Q2xpZW50TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTEwMjFFOUIxMkIxNjc4ODAwNUMwMzNDIC8qIFdlYkNvbnRleHRNZW51Q2xpZW50TWFjLm1t
ICovOyB9OwogCQk1MTBBRkZCOTE2NTQyMDQ4MDAxQkEwNUUgLyogV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQUZG
QjcxNjU0MjA0ODAwMUJBMDVFIC8qIFdlYlJlc291cmNlTG9hZGVyLmNwcCAqLzsgfTsKQEAgLTEx
OTYsNyArMTE5Niw3IEBACiAJCUVEQ0E3MUI3MTI4RERBOEMwMDIwMUIyNiAvKiBXS0J1bmRsZVBh
Z2VPdmVybGF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBMjJGMTAwMTI4OUZDRDkwMDg1RTc0RiAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5LmNwcCAq
LzsgfTsKIAkJRjAzNjk3ODUxNUY0QkU2QjAwQzNBODBFIC8qIFdLQ29sb3JQaWNrZXJSZXN1bHRM
aXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGMDM2OTc4MzE1RjRCRTZCMDBDM0E4MEUgLyogV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVy
LmNwcCAqLzsgfTsKIAkJRjAzNjk3ODYxNUY0QkU2QjAwQzNBODBFIC8qIFdLQ29sb3JQaWNrZXJS
ZXN1bHRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjAzNjk3ODQxNUY0QkU2QjAwQzNBODBFIC8qIFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0
ZW5lci5oICovOyB9OwotCQlGMDM2OTc4ODE1RjRCRjA1MDBDM0E4MEUgLyogV2ViQ29sb3JDaG9v
c2VyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjAzNjk3ODcxNUY0QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yQ2hvb3NlclByb3h5LmNwcCAq
LzsgfTsKKwkJRjAzNjk3ODgxNUY0QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2VyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYwMzY5Nzg3MTVG
NEJGMDUwMEMzQTgwRSAvKiBXZWJDb2xvclBpY2tlci5jcHAgKi87IH07CiAJCUYwMzY5NzhCMTVG
NEJGMTMwMEMzQTgwRSAvKiBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjAzNjk3ODkxNUY0
QkYxMzAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAgKi87
IH07CiAJCUY2MTEzRTI1MTI2Q0UxODIwMDU3RDBBNyAvKiBXZWJVc2VyQ29udGVudFVSTFBhdHRl
cm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2MTEz
RTI0MTI2Q0UxODIwMDU3RDBBNyAvKiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLzsgfTsK
IAkJRjYxMTNFMjgxMjZDRTE5QjAwNTdEMEE3IC8qIFdLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2MTEzRTI2
MTI2Q0UxOUIwMDU3RDBBNyAvKiBXS1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgKi87IH07CkBA
IC0xODcxLDcgKzE4NzEsNyBAQAogCQkzN0Y2MjNCNzEyQTU3QjYyMDBFM0ZERjYgLyogV0tGaW5k
T3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0ZpbmRPcHRpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTNGODdCOUJBMTU4OTNGNjMwMDkwRkY2
MiAvKiBXZWJDb2xvckNob29zZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViQ29sb3JDaG9vc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
M0Y4N0I5QkIxNTg5M0Y2MzAwOTBGRjYyIC8qIFdlYkNvbG9yQ2hvb3Nlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb2xvckNob29zZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJM0Y4N0I5QkYxNTg5NDBEODAwOTBGRjYyIC8qIFdlYkNvbG9yQ2hvb3Nl
clByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbG9yQ2hvb3Nl
clByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTNGODdCOUJGMTU4OTQwRDgw
MDkwRkY2MiAvKiBXZWJDb2xvclBpY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJDb2xvclBpY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RjYw
MTQzMDE1NUM1QTMyMDAxRkJERTAgLyogQmxvY2tpbmdSZXNwb25zZU1hcC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9ja2luZ1Jlc3BvbnNlTWFwLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxMDAzMUY2MTM3OUNBQ0IwMEM4REZFNCAvKiBTZWNJdGVtU2hp
bS5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0g
ImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IFNlY0l0
ZW1TaGltLmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1MTAy
MUU5QjEyQjE2Nzg4MDA1QzAzM0MgLyogV2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb250ZXh0TWVudUNsaWVudE1h
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3MjQsNyArMjcyNCw3IEBACiAJ
CUUxRUU1M0U2MTFGOENGRkIwMENDQkVFNCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjAz
Njk3ODMxNUY0QkU2QjAwQzNBODBFIC8qIFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0NvbG9yUGlja2VyUmVzdWx0
TGlzdGVuZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGMDM2OTc4NDE1RjRC
RTZCMDBDM0E4MEUgLyogV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGMDM2OTc4NzE1RjRCRjA1MDBDM0E4MEUgLyogV2Vi
Q29sb3JDaG9vc2VyUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViQ29sb3JDaG9vc2VyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGMDM2OTc4NzE1RjRCRjA1MDBDM0E4MEUgLyogV2ViQ29sb3JQaWNrZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29sb3JQaWNrZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGMDM2OTc4OTE1RjRCRjEzMDBDM0E4MEUgLyogV2ViQ29s
b3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYwMzY5NzhBMTVGNEJGMTMwMEMzQTgwRSAvKiBXZWJD
b2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY2MTEzRTI0MTI2Q0UxODIwMDU3RDBBNyAvKiBXZWJVc2VyQ29u
dGVudFVSTFBhdHRlcm4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MDQ2
LDggKzQwNDYsOCBAQAogCQkJCTUxMkUzNUYwMTMwQjYzOEMwMEFCRDE5QSAvKiBXZWJBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJCUJDNzJCQTFCMTFFNjQ5
MDcwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3QuY3BwICovLAogCQkJCUJDNzJCQTFDMTFF
NjQ5MDcwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3QuaCAqLywKLQkJCQlGMDM2OTc4NzE1
RjRCRjA1MDBDM0E4MEUgLyogV2ViQ29sb3JDaG9vc2VyUHJveHkuY3BwICovLAotCQkJCTNGODdC
OUJGMTU4OTQwRDgwMDkwRkY2MiAvKiBXZWJDb2xvckNob29zZXJQcm94eS5oICovLAorCQkJCUYw
MzY5Nzg3MTVGNEJGMDUwMEMzQTgwRSAvKiBXZWJDb2xvclBpY2tlci5jcHAgKi8sCisJCQkJM0Y4
N0I5QkYxNTg5NDBEODAwOTBGRjYyIC8qIFdlYkNvbG9yUGlja2VyLmggKi8sCiAJCQkJRjAzNjk3
ODkxNUY0QkYxMzAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5j
cHAgKi8sCiAJCQkJRjAzNjk3OEExNUY0QkYxMzAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2VyUmVz
dWx0TGlzdGVuZXJQcm94eS5oICovLAogCQkJCUJDNEE2MkE1MTQ3NDRFQzYwMDZDNjgxQSAvKiBX
ZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCAqLywKQEAgLTU1NDIsNyArNTU0Miw3IEBACiAJ
CQkJQkNGNTA3MjgxMjQzMjlBQTAwNTk1NUFFIC8qIFdlYkNlcnRpZmljYXRlSW5mby5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkMwMzJENzUxMEY0Mzc4RDAwNThDMTVBIC8qIFdlYkNocm9tZUNsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJM0Y4N0I5QkUxNTg5NDAxOTAwOTBGRjYyIC8qIFdlYkNv
bG9yQ2hvb3Nlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJM0Y4N0I5QzAxNTg5NDBEODAwOTBGRjYy
IC8qIFdlYkNvbG9yQ2hvb3NlclByb3h5LmggaW4gSGVhZGVycyAqLywKKwkJCQkzRjg3QjlDMDE1
ODk0MEQ4MDA5MEZGNjIgLyogV2ViQ29sb3JQaWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
NEE2MjkwMTQ3MzEyQkUwMDZDNjgxQSAvKiBXZWJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzRBNjI5MjE0NzMxMkJFMDA2QzY4MUEgLyogV2ViQ29ubmVjdGlvbkNsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUExRkVDMUQxNjI3QjQ1NzAwNzAwRjZEIC8qIFdlYkNvbm5lY3Rp
b25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC02ODE0LDcgKzY4MTQsNyBAQAogCQkJCUJD
NzJCOUZBMTFFNjQ3NkIwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQzExMUE1QTExMkY0RkJCMDAzMzdCQUIgLyogV2ViQ2hyb21lQ2xp
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTNGODdCOUJEMTU4OTQwMTIwMDkwRkY2MiAvKiBX
ZWJDb2xvckNob29zZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRjAzNjk3ODgxNUY0QkYwNTAw
QzNBODBFIC8qIFdlYkNvbG9yQ2hvb3NlclByb3h5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUYw
MzY5Nzg4MTVGNEJGMDUwMEMzQTgwRSAvKiBXZWJDb2xvclBpY2tlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlGMDM2OTc4QjE1RjRCRjEzMDBDM0E4MEUgLyogV2ViQ29sb3JQaWNrZXJSZXN1bHRM
aXN0ZW5lclByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNEE2MjhGMTQ3MzEyQkUwMDZD
NjgxQSAvKiBXZWJDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNEE2MjkxMTQ3
MzEyQkUwMDZDNjgxQSAvKiBXZWJDb25uZWN0aW9uQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>