<?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>150058</bug_id>
          
          <creation_ts>2015-10-12 15:53:36 -0700</creation_ts>
          <short_desc>Add SPI for reloading without content blockers</short_desc>
          <delta_ts>2015-10-14 13:04:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1132544</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-10-12 15:53:36 -0700</bug_when>
    <thetext>Add SPI for reloading without content blockers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132551</commentid>
    <comment_count>1</comment_count>
      <attachid>262934</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-10-12 15:59:50 -0700</bug_when>
    <thetext>Created attachment 262934
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132553</commentid>
    <comment_count>2</comment_count>
      <attachid>262936</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-10-12 16:02:45 -0700</bug_when>
    <thetext>Created attachment 262936
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132947</commentid>
    <comment_count>3</comment_count>
      <attachid>263032</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-10-13 16:02:54 -0700</bug_when>
    <thetext>Created attachment 263032
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132949</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-13 16:04:44 -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>1133044</commentid>
    <comment_count>5</comment_count>
      <attachid>263032</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-13 22:59:28 -0700</bug_when>
    <thetext>Comment on attachment 263032
Patch

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

&gt; Source/WebKit2/UIProcess/WebFrameProxy.cpp:251
&gt; -            page-&gt;reload(false);
&gt; +            page-&gt;reload(false, true);

I think this would be easier to read now if we use flags instead of booleans.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133160</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-10-14 10:20:22 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 263032 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=263032&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebFrameProxy.cpp:251
&gt; &gt; -            page-&gt;reload(false);
&gt; &gt; +            page-&gt;reload(false, true);
&gt; 
&gt; I think this would be easier to read now if we use flags instead of booleans.

Agreed. Perhaps it would be nicer for reload to take a ReloadOptions object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133191</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-10-14 11:24:54 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Comment on attachment 263032 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=263032&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/WebFrameProxy.cpp:251
&gt; &gt; &gt; -            page-&gt;reload(false);
&gt; &gt; &gt; +            page-&gt;reload(false, true);
&gt; &gt; 
&gt; &gt; I think this would be easier to read now if we use flags instead of booleans.
&gt; 
&gt; Agreed. Perhaps it would be nicer for reload to take a ReloadOptions object.
I agree, but these are passed as parameters all over WebKit2 with IPC and WebCore.  This is the only place that is hard to read.  I think something like this would make it easier to read without requiring a newly defined type:
const bool reloadFromOrigin = false;
const bool contentBlockersEnabled = true;
page-&gt;reload(reloadFromOrigin, contentBlockersEnabled);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133196</commentid>
    <comment_count>8</comment_count>
      <attachid>263092</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-10-14 11:39:46 -0700</bug_when>
    <thetext>Created attachment 263092
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133198</commentid>
    <comment_count>9</comment_count>
      <attachid>263092</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-10-14 11:41:22 -0700</bug_when>
    <thetext>Comment on attachment 263092
Patch

I named all the booleans at the call sites.  That achieves the readability without mucking up the code too much.  If we feel that there are too many parameters, we can wrap the bools in a struct or flags, but I think that&apos;s too invasive for this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133231</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-10-14 13:04:14 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/191063</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262934</attachid>
            <date>2015-10-12 15:59:50 -0700</date>
            <delta_ts>2015-10-12 16:02:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150058-20151012155924.patch</filename>
            <type>text/plain</type>
            <size>28372</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDY0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDE1LTEwLTEyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBm
b3IgcmVsb2FkaW5nIHdpdGhvdXQgY29udGVudCBibG9ja2VycworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMDU4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnJlbG9hZFdpdGhPdmVycmlkZUVuY29kaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZWxvYWQpOgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6dXNlckNvbnRlbnRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6OnVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6c2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCk6IERlbGV0ZWQuCisg
ICAgICAgICogcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpV
c2VySW5wdXRCcmlkZ2U6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJJbnB1
dEJyaWRnZTo6cmVsb2FkRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6VXNlcklucHV0QnJpZGdl
OjpzdG9wTG9hZGluZ0ZyYW1lKToKKyAgICAgICAgKiByZXBsYXkvVXNlcklucHV0QnJpZGdlLmg6
CisgICAgICAgIFBhc3MgYSBib29sIGZyb20gdGhlIHJlbG9hZFdpdGhvdXRDb250ZW50QmxvY2tl
cnMgY2FsbCB0byB0aGUgRG9jdW1lbnRMb2FkZXIsIAorICAgICAgICB3aGljaCBzdG9yZXMgdGhl
IHN0YXRlIG9mIHdoZXRoZXIgdGhlIGNvbnRlbnQgYmxvY2tlcnMgYXJlIGVuYWJsZWQgb3Igbm90
LgorICAgICAgICBSZW1vdmUgdGhlIHN0YXRlIGZyb20gdGhlIFBhZ2UgYW5kIGNvcHlpbmcgdGhl
IHN0YXRlIGZyb20gdGhlIFBhZ2UgdG8gdGhlIERvY3VtZW50TG9hZGVyCisgICAgICAgIGJlY2F1
c2UgdGhhdCBjYXVzZWQgaXNzdWVzIHdpdGggdGhlIGNvbnRlbnQgYmxvY2tlcnMgYmVpbmcgcmUt
ZW5hYmxlZCBhdCB0aGUgd3JvbmcgdGltZS4KKwogMjAxNS0xMC0wNiAgUGVyIEFybmUgVm9sbGFu
ICA8cGVhdm9Ab3V0bG9vay5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBHU3RyZWFtZXIgY29t
cGlsZSBlcnJvcnMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJl
dmlzaW9uIDE5MDY0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1NjQsNyArMTU2NCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJl
bG9hZFdpdGhPdmVycmlkZUVuY28KICAgICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKGxvYWRlci5w
dHIoKSwgRnJhbWVMb2FkVHlwZTo6UmVsb2FkLCAwLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRV
Ukw6Olllcyk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZChib29sIGVuZFRvRW5kUmVs
b2FkKQordm9pZCBGcmFtZUxvYWRlcjo6cmVsb2FkKGJvb2wgZW5kVG9FbmRSZWxvYWQsIGJvb2wg
Y29udGVudEJsb2NrZXJzRW5hYmxlZCkKIHsKICAgICBpZiAoIW1fZG9jdW1lbnRMb2FkZXIpCiAg
ICAgICAgIHJldHVybjsKQEAgLTE1ODUsNiArMTU4NSw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJl
bG9hZChib29sIGVuZFRvRW5kUmUKICAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9IG1f
Y2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKGluaXRpYWxSZXF1ZXN0LCBkZWZhdWx0U3Vic3Rp
dHV0ZURhdGFGb3JVUkwoaW5pdGlhbFJlcXVlc3QudXJsKCkpKTsKICAgICBhcHBseVNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKGxvYWRlciwgbV9kb2N1bWVu
dExvYWRlci0+c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCkpOwogCisg
ICAgbG9hZGVyLT5zZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKGNvbnRlbnRCbG9ja2Vy
c0VuYWJsZWQpOworICAgIAogICAgIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCA9IGxvYWRlci0+
cmVxdWVzdCgpOwogCiAgICAgLy8gRklYTUU6IFdlIGRvbid0IGhhdmUgYSBtZWNoYW5pc20gdG8g
cmV2YWxpZGF0ZSB0aGUgbWFpbiByZXNvdXJjZSB3aXRob3V0IHJlbG9hZGluZyBhdCB0aGUgbW9t
ZW50LgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHJldmlzaW9uIDE5MDY0
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjMsNyArMTIzLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXJs
U2VsZWN0ZWQoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50KiwgTG9ja0hp
c3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3QsIFNob3VsZFNlbmRSZWZlcnJlciwgU2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSk7CiAgICAgdm9pZCBzdWJtaXRGb3JtKFBhc3NSZWZQdHI8Rm9y
bVN1Ym1pc3Npb24+KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVsb2FkKGJvb2wgZW5k
VG9FbmRSZWxvYWQgPSBmYWxzZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWxvYWQoYm9v
bCBlbmRUb0VuZFJlbG9hZCA9IGZhbHNlLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSB0
cnVlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbG9hZFdpdGhPdmVycmlkZUVuY29kaW5n
KGNvbnN0IFN0cmluZyYgb3ZlcnJpZGVFbmNvZGluZyk7CiAKICAgICB2b2lkIG9wZW4oQ2FjaGVk
RnJhbWVCYXNlJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gMTkwNjQ0KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyOCw5ICs0MjgsNiBA
QCBwdWJsaWM6CiAgICAgVXNlckNvbnRlbnRDb250cm9sbGVyKiB1c2VyQ29udGVudENvbnRyb2xs
ZXIoKSB7IHJldHVybiBtX3VzZXJDb250ZW50Q29udHJvbGxlci5nZXQoKTsgfQogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0VXNlckNvbnRlbnRDb250cm9sbGVyKFVzZXJDb250ZW50Q29udHJv
bGxlciopOwogCi0gICAgYm9vbCB1c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV91c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkOyB9Ci0gICAgdm9pZCBzZXRV
c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3VzZXJDb250ZW50
RXh0ZW5zaW9uc0VuYWJsZWQgPSBlbmFibGVkOyB9Ci0KICAgICBWaXNpdGVkTGlua1N0b3JlJiB2
aXNpdGVkTGlua1N0b3JlKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaXNpdGVkTGlu
a1N0b3JlKFJlZjxWaXNpdGVkTGlua1N0b3JlPiYmKTsKIApAQCAtNjM2LDcgKzYzMyw2IEBAIHBy
aXZhdGU6CiAKICAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgbV9tZWRpYVN0YXRl
IHsgTWVkaWFQcm9kdWNlcjo6SXNOb3RQbGF5aW5nIH07CiAgICAgCi0gICAgYm9vbCBtX3VzZXJD
b250ZW50RXh0ZW5zaW9uc0VuYWJsZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX2FsbG93c01lZGlh
RG9jdW1lbnRJbmxpbmVQbGF5YmFjayB7IGZhbHNlIH07CiB9OwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmNwcAkocmV2aXNpb24gMTkwNjQ0KQorKysgU291
cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI0Miw5ICsyNDIsOSBAQCB2b2lkIFVzZXJJbnB1dEJyaWRnZTo6bG9hZFJlcXVlc3QoY29uc3Qg
CiAgICAgbV9wYWdlLm1haW5GcmFtZSgpLmxvYWRlcigpLmxvYWQocmVxdWVzdCk7CiB9CiAKLXZv
aWQgVXNlcklucHV0QnJpZGdlOjpyZWxvYWRGcmFtZShGcmFtZSogZnJhbWUsIGJvb2wgZW5kVG9F
bmRSZWxvYWQsIElucHV0U291cmNlKQordm9pZCBVc2VySW5wdXRCcmlkZ2U6OnJlbG9hZEZyYW1l
KEZyYW1lKiBmcmFtZSwgYm9vbCBlbmRUb0VuZFJlbG9hZCwgYm9vbCBjb250ZW50QmxvY2tlcnNF
bmFibGVkLCBJbnB1dFNvdXJjZSkKIHsKLSAgICBmcmFtZS0+bG9hZGVyKCkucmVsb2FkKGVuZFRv
RW5kUmVsb2FkKTsKKyAgICBmcmFtZS0+bG9hZGVyKCkucmVsb2FkKGVuZFRvRW5kUmVsb2FkLCBj
b250ZW50QmxvY2tlcnNFbmFibGVkKTsKIH0KIAogdm9pZCBVc2VySW5wdXRCcmlkZ2U6OnN0b3BM
b2FkaW5nRnJhbWUoRnJhbWUqIGZyYW1lLCBJbnB1dFNvdXJjZSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmgJKHJldmlzaW9uIDE5MDY0NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtODksNyAr
ODksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBOYXZpZ2F0aW9uIEFQSXMuCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBsb2FkUmVxdWVzdChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgSW5wdXRTb3Vy
Y2Ugc291cmNlID0gSW5wdXRTb3VyY2U6OlVzZXIpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cmVsb2FkRnJhbWUoRnJhbWUqLCBib29sIGVuZFRvRW5kUmVsb2FkLCBJbnB1dFNvdXJjZSBzb3Vy
Y2UgPSBJbnB1dFNvdXJjZTo6VXNlcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWxvYWRG
cmFtZShGcmFtZSosIGJvb2wgZW5kVG9FbmRSZWxvYWQsIGJvb2wgY29udGVudEJsb2NrZXJzRW5h
YmxlZCwgSW5wdXRTb3VyY2UgPSBJbnB1dFNvdXJjZTo6VXNlcik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzdG9wTG9hZGluZ0ZyYW1lKEZyYW1lKiwgSW5wdXRTb3VyY2Ugc291cmNlID0gSW5w
dXRTb3VyY2U6OlVzZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgdHJ5Q2xvc2VQYWdlKElu
cHV0U291cmNlIHNvdXJjZSA9IElucHV0U291cmNlOjpVc2VyKTsKIApJbmRleDogU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwko
cmV2aXNpb24gMTkwNjQ0KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsNTggQEAKKzIwMTUtMTAtMTIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJIGZvciByZWxvYWRpbmcgd2l0
aG91dCBjb250ZW50IGJsb2NrZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTAwNTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAg
KiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlUmVsb2FkKToKKyAgICAgICAgKFdL
UGFnZVJlbG9hZFdpdGhvdXRDb250ZW50QmxvY2tlcnMpOgorICAgICAgICAoV0tQYWdlUmVsb2Fk
RnJvbU9yaWdpbik6CisgICAgICAgIChXS1BhZ2VUcnlDbG9zZSk6CisgICAgICAgIChXS1BhZ2VT
ZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKToKKyAgICAgICAgKFdLUGFnZVN1cHBvcnRz
VGV4dEVuY29kaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW06
CisgICAgICAgICgtW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciByZWxvYWRdKToKKyAgICAg
ICAgKC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIHJlbG9hZEZyb21PcmlnaW5dKToKKyAg
ICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIGFwcGxpY2F0aW9uTmFtZUZvclVz
ZXJBZ2VudF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgcmVsb2FkXSk6CisgICAgICAgICgtW1dLV2ViVmlldyByZWxv
YWRGcm9tT3JpZ2luXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0VXNlckNvbnRlbnRFeHRl
bnNpb25zRW5hYmxlZDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF91c2VyQ29udGVudEV4dGVu
c2lvbnNFbmFibGVkXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZp
ZXJdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9raWxsV2ViQ29udGVudFByb2Nlc3NdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9yZWxvYWRXaXRob3V0Q29udGVudEJsb2NrZXJzXSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBfa2lsbFdlYkNvbnRlbnRQcm9jZXNzQW5kUmVzZXRTdGF0ZV0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVQcm94eTo6ZGlkSGFuZGxlQ29udGVudEZpbHRlclVuYmxvY2tOYXZpZ2F0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzdG9wTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVs
b2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFNob3VsZFNjYWxlVmlld1RvRml0
RG9jdW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFVzZXJDb250ZW50
RXh0ZW5zaW9uc0VuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1c2VyQ29udGVudEV4dGVu
c2lvbnNFbmFibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3Zl
RXZlbnRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0RGVmZXJzTG9hZGluZyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlbG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmdvRm9yd2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZURvY3VtZW50
TG9hZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0U2hvdWxkU2NhbGVWaWV3VG9G
aXREb2N1bWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmltYWdlT3JNZWRpYURvY3Vt
ZW50U2l6ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRVc2VyQ29udGVu
dEV4dGVuc2lvbnNFbmFibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluOgorCiAyMDE1LTEwLTA2ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5j
b20+CiAKICAgICAgICAgVHJ5IHRvIGZpeCB0aGUgMzItYml0IGJ1aWxkLgpJbmRleDogU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAko
cmV2aXNpb24gMTkwNjQ0KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw2IEBAIHZvaWQgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKEkKICNlbmRpZgogICAgIGVuY29kZXIgPDwg
YXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IHNob3VsZFNj
YWxlVmlld1RvRml0RG9jdW1lbnQ7Ci0gICAgZW5jb2RlciA8PCB1c2VyQ29udGVudEV4dGVuc2lv
bnNFbmFibGVkOwogfQogCiBib29sIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJ
UEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYg
cGFyYW1ldGVycykKQEAgLTE4OSw5ICsxODgsNiBAQCBib29sIFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnM6OmRlY29kZShJCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3Vs
ZFNjYWxlVmlld1RvRml0RG9jdW1lbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxl
ZCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmgJKHJldmlzaW9uIDE5MDY0NCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw3ICsxMzAsNiBAQCBzdHJ1
Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAjZW5kaWYKICAgICBib29sIGFwcGxlTWFp
bFBhZ2luYXRpb25RdWlya0VuYWJsZWQ7CiAgICAgYm9vbCBzaG91bGRTY2FsZVZpZXdUb0ZpdERv
Y3VtZW50OwotICAgIGJvb2wgdXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZy
YW1lUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJG
cmFtZVByb3h5LmNwcAkocmV2aXNpb24gMTkwNjQ0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkZyYW1lUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDgsNyArMjQ4LDcgQEAg
Ym9vbCBXZWJGcmFtZVByb3h5OjpkaWRIYW5kbGVDb250ZW50RmlsdAogICAgIEFTU0VSVChwYWdl
KTsKICAgICBtX2NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5yZXF1ZXN0VW5ibG9ja0FzeW5j
KFtwYWdlXShib29sIHVuYmxvY2tlZCkgewogICAgICAgICBpZiAodW5ibG9ja2VkKQotICAgICAg
ICAgICAgcGFnZS0+cmVsb2FkKGZhbHNlKTsKKyAgICAgICAgICAgIHBhZ2UtPnJlbG9hZChmYWxz
ZSwgdHJ1ZSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMTkwNjQ0KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwNDcsNyArMTA0Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdG9wTG9hZGluZygpCiAgICAg
bV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0YXJ0KCk7CiB9CiAKLVJlZlB0cjxB
UEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6cmVsb2FkKGJvb2wgcmVsb2FkRnJvbU9yaWdp
bikKK1JlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6cmVsb2FkKGJvb2wgcmVs
b2FkRnJvbU9yaWdpbiwgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkKQogewogICAgIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogCkBAIC0xMDY3LDcg
KzEwNjcsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlCiAgICAg
CiAgICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZVJlbG9hZE5h
dmlnYXRpb24oKTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVs
b2FkKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCByZWxvYWRGcm9tT3JpZ2luLCBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6UmVsb2FkKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCByZWxvYWRGcm9t
T3JpZ2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwg
bV9wYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLT5zdGFydCgp
OwogCiAgICAgcmV0dXJuIFdURjo6bW92ZShuYXZpZ2F0aW9uKTsKQEAgLTUxNjYsNyArNTE2Niw2
IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjoKICAgICBwYXJhbWV0
ZXJzLmFwcGxlTWFpbFBhZ2luYXRpb25RdWlya0VuYWJsZWQgPSBmYWxzZTsKICNlbmRpZgogICAg
IHBhcmFtZXRlcnMuc2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudCA9IG1fc2hvdWxkU2NhbGVW
aWV3VG9GaXREb2N1bWVudDsKLSAgICBwYXJhbWV0ZXJzLnVzZXJDb250ZW50RXh0ZW5zaW9uc0Vu
YWJsZWQgPSBtX3VzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQ7CiAKICAgICByZXR1cm4gcGFy
YW1ldGVyczsKIH0KQEAgLTYwOTcsMTcgKzYwOTYsNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
U2hvdWxkU2NhbGVWaWV3VG9GCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRTaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KHNob3VsZFNjYWxlVmlld1RvRml0RG9j
dW1lbnQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VyQ29udGVu
dEV4dGVuc2lvbnNFbmFibGVkKGJvb2wgdXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCkKLXsK
LSAgICBpZiAobV91c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkID09IHVzZXJDb250ZW50RXh0
ZW5zaW9uc0VuYWJsZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fdXNlckNvbnRlbnRFeHRl
bnNpb25zRW5hYmxlZCA9IHVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQ7Ci0KLSAgICBpZiAo
IWlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKHVzZXJDb250ZW50
RXh0ZW5zaW9uc0VuYWJsZWQpLCBtX3BhZ2VJRCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24g
MTkwNjQ0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNjIsNyArMzYyLDcgQEAgcHVibGljOgogICAgIHZvaWQgbmF2aWdhdGVU
b1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmwsIFdlYkNvcmU6Oklu
dFBvaW50IGRvY3VtZW50UG9pbnQsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblBvaW50KTsKIAog
ICAgIHZvaWQgc3RvcExvYWRpbmcoKTsKLSAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiByZWxv
YWQoYm9vbCByZWxvYWRGcm9tT3JpZ2luKTsKKyAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBy
ZWxvYWQoYm9vbCByZWxvYWRGcm9tT3JpZ2luLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQp
OwogCiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gZ29Gb3J3YXJkKCk7CiAgICAgUmVmUHRy
PEFQSTo6TmF2aWdhdGlvbj4gZ29CYWNrKCk7CkBAIC02NTAsOSArNjUwLDYgQEAgcHVibGljOgog
ICAgIHZvaWQgc2NhbGVWaWV3KGRvdWJsZSBzY2FsZSk7CiAgICAgdm9pZCBzZXRTaG91bGRTY2Fs
ZVZpZXdUb0ZpdERvY3VtZW50KGJvb2wpOwogICAgIAotICAgIGJvb2wgdXNlckNvbnRlbnRFeHRl
bnNpb25zRW5hYmxlZCgpIHsgcmV0dXJuIG1fdXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZDsg
fQotICAgIHZvaWQgc2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZChib29sKTsKLQogICAg
IGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRJbnRyaW5zaWNE
ZXZpY2VTY2FsZUZhY3RvcihmbG9hdCk7CiAgICAgdm9pZCBzZXRDdXN0b21EZXZpY2VTY2FsZUZh
Y3RvcihmbG9hdCk7CkBAIC0xNzY4LDggKzE3NjUsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9y
ZXF1aXJlc1RhcmdldE1vbml0b3JpbmcgeyBmYWxzZSB9OwogI2VuZGlmCiAKLSAgICBib29sIG1f
dXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCB7IHRydWUgfTsKLQogI2lmIFBMQVRGT1JNKElP
UykKICAgICBib29sIG1faGFzRGVmZXJyZWRTdGFydEFzc2lzdGluZ05vZGUgeyBmYWxzZSB9Owog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxOb2RlQXNzaXN0YW5jZUFyZ3VtZW50cz4gbV9kZWZlcnJlZE5v
ZGVBc3Npc3RhbmNlQXJndW1lbnRzOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHAJKHJldmlzaW9uIDE5MDY0NCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjcsMTIgKzIyNywxNyBA
QCB2b2lkIFdLUGFnZVN0b3BMb2FkaW5nKFdLUGFnZVJlZiBwYWdlUmVmCiAKIHZvaWQgV0tQYWdl
UmVsb2FkKFdLUGFnZVJlZiBwYWdlUmVmKQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+cmVsb2Fk
KGZhbHNlKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnJlbG9hZChmYWxzZSwgdHJ1ZSk7Cit9CisK
K3ZvaWQgV0tQYWdlUmVsb2FkV2l0aG91dENvbnRlbnRCbG9ja2VycyhXS1BhZ2VSZWYgcGFnZVJl
ZikKK3sKKyAgICB0b0ltcGwocGFnZVJlZiktPnJlbG9hZChmYWxzZSwgZmFsc2UpOwogfQogCiB2
b2lkIFdLUGFnZVJlbG9hZEZyb21PcmlnaW4oV0tQYWdlUmVmIHBhZ2VSZWYpCiB7Ci0gICAgdG9J
bXBsKHBhZ2VSZWYpLT5yZWxvYWQodHJ1ZSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5yZWxvYWQo
dHJ1ZSwgdHJ1ZSk7CiB9CiAKIGJvb2wgV0tQYWdlVHJ5Q2xvc2UoV0tQYWdlUmVmIHBhZ2VSZWYp
CkBAIC0zNjIsNyArMzY3LDcgQEAgdm9pZCBXS1BhZ2VTZXRDdXN0b21Vc2VyQWdlbnQoV0tQYWdl
UmVmIAogCiB2b2lkIFdLUGFnZVNldFVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQoV0tQYWdl
UmVmIHBhZ2VSZWYsIGJvb2wgZW5hYmxlZCkKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPnNldFVz
ZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQoZW5hYmxlZCk7CisgICAgLy8gRklYTUU6IFJlbW92
ZSB0aGlzIGZ1bmN0aW9uIG9uY2UgaXQgaXMgbm8gbG9uZ2VyIHVzZWQuCiB9CiAKIGJvb2wgV0tQ
YWdlU3VwcG9ydHNUZXh0RW5jb2RpbmcoV0tQYWdlUmVmIHBhZ2VSZWYpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCShyZXZpc2lvbiAxOTA2NDQpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgz
LDYgKzgzLDcgQEAgV0tfRVhQT1JUIHZvaWQgV0tQYWdlTG9hZFdlYkFyY2hpdmVEYXRhVwogCiBX
S19FWFBPUlQgdm9pZCBXS1BhZ2VTdG9wTG9hZGluZyhXS1BhZ2VSZWYgcGFnZSk7CiBXS19FWFBP
UlQgdm9pZCBXS1BhZ2VSZWxvYWQoV0tQYWdlUmVmIHBhZ2UpOworV0tfRVhQT1JUIHZvaWQgV0tQ
YWdlUmVsb2FkV2l0aG91dENvbnRlbnRCbG9ja2VycyhXS1BhZ2VSZWYgcGFnZSk7CiBXS19FWFBP
UlQgdm9pZCBXS1BhZ2VSZWxvYWRGcm9tT3JpZ2luKFdLUGFnZVJlZiBwYWdlKTsKIAogV0tfRVhQ
T1JUIGJvb2wgV0tQYWdlVHJ5Q2xvc2UoV0tQYWdlUmVmIHBhZ2UpOwpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXIubW0JKHJldmlzaW9uIDE5MDY0NCkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTMsMTIgKzE5MywxMiBAQCAtICh2b2lkKXN0b3BMb2FkaW5nCiAK
IC0gKHZvaWQpcmVsb2FkCiB7Ci0gICAgX3BhZ2UtPnJlbG9hZChmYWxzZSk7CisgICAgX3BhZ2Ut
PnJlbG9hZChmYWxzZSwgdHJ1ZSk7CiB9CiAKIC0gKHZvaWQpcmVsb2FkRnJvbU9yaWdpbgogewot
ICAgIF9wYWdlLT5yZWxvYWQodHJ1ZSk7CisgICAgX3BhZ2UtPnJlbG9hZCh0cnVlLCB0cnVlKTsK
IH0KIAogLSAoTlNTdHJpbmcgKilhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZp
c2lvbiAxOTA2NDQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTY3LDcgKzU2Nyw3IEBAIC0gKFdLTmF2aWdhdGlv
biAqKWdvRm9yd2FyZAogCiAtIChXS05hdmlnYXRpb24gKilyZWxvYWQKIHsKLSAgICBhdXRvIG5h
dmlnYXRpb24gPSBfcGFnZS0+cmVsb2FkKGZhbHNlKTsKKyAgICBhdXRvIG5hdmlnYXRpb24gPSBf
cGFnZS0+cmVsb2FkKGZhbHNlLCB0cnVlKTsKICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAg
IHJldHVybiBuaWw7CiAKQEAgLTU3Niw3ICs1NzYsNyBAQCAtIChXS05hdmlnYXRpb24gKilyZWxv
YWQKIAogLSAoV0tOYXZpZ2F0aW9uICopcmVsb2FkRnJvbU9yaWdpbgogewotICAgIGF1dG8gbmF2
aWdhdGlvbiA9IF9wYWdlLT5yZWxvYWQodHJ1ZSk7CisgICAgYXV0byBuYXZpZ2F0aW9uID0gX3Bh
Z2UtPnJlbG9hZCh0cnVlLCB0cnVlKTsKICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJl
dHVybiBuaWw7CiAKQEAgLTIwMzAsMTIgKzIwMzAsMTMgQEAgLSAodm9pZClfc2V0Q3VzdG9tVXNl
ckFnZW50OihOU1N0cmluZyAqKQogCiAtICh2b2lkKV9zZXRVc2VyQ29udGVudEV4dGVuc2lvbnNF
bmFibGVkOihCT09MKXVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQKIHsKLSAgICBfcGFnZS0+
c2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCh1c2VyQ29udGVudEV4dGVuc2lvbnNFbmFi
bGVkKTsKKyAgICAvLyBUaGlzIGlzIGtlcHQgZm9yIGJpbmFyeSBjb21wYXRpYmlsaXR5IHdpdGgg
aU9TIDkuCiB9CiAKIC0gKEJPT0wpX3VzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQKIHsKLSAg
ICByZXR1cm4gX3BhZ2UtPnVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQoKTsKKyAgICAvLyBU
aGlzIGlzIGtlcHQgZm9yIGJpbmFyeSBjb21wYXRpYmlsaXR5IHdpdGggaU9TIDkuCisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIC0gKHBpZF90KV93ZWJQcm9jZXNzSWRlbnRpZmllcgpAQCAtMjA1MSw2
ICsyMDUyLDE1IEBAIC0gKHZvaWQpX2tpbGxXZWJDb250ZW50UHJvY2VzcwogICAgIF9wYWdlLT5w
cm9jZXNzKCkudGVybWluYXRlKCk7CiB9CiAKKy0gKFdLTmF2aWdhdGlvbiAqKV9yZWxvYWRXaXRo
b3V0Q29udGVudEJsb2NrZXJzCit7CisgICAgYXV0byBuYXZpZ2F0aW9uID0gX3BhZ2UtPnJlbG9h
ZChmYWxzZSwgZmFsc2UpOworICAgIGlmICghbmF2aWdhdGlvbikKKyAgICAgICAgcmV0dXJuIG5p
bDsKKyAgICAKKyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ucmVsZWFzZSgpLmxlYWtS
ZWYoKSkgYXV0b3JlbGVhc2VdOworfQorCiAtICh2b2lkKV9raWxsV2ViQ29udGVudFByb2Nlc3NB
bmRSZXNldFN0YXRlCiB7CiAgICAgX3BhZ2UtPnRlcm1pbmF0ZVByb2Nlc3MoKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCShyZXZpc2lvbiAxOTA2NDQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDYgKzE3NCw4
IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1BhZ2luYXRpb24KIAogI2VuZGlmCiAK
Ky0gKFdLTmF2aWdhdGlvbiAqKV9yZWxvYWRXaXRob3V0Q29udGVudEJsb2NrZXJzIFdLX0FWQUlM
QUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEJBKTsKKwogLSAodm9pZClfa2lsbFdlYkNvbnRlbnRQ
cm9jZXNzQW5kUmVzZXRTdGF0ZTsKIAogLSAodm9pZClfZ2V0TWFpblJlc291cmNlRGF0YVdpdGhD
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEYXRhICosIE5TRXJyb3IgKikpY29tcGxldGlv
bkhhbmRsZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCShyZXZpc2lvbiAxOTA2NDQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyMCw4ICs1MjAsNiBAQCBX
ZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgCiAgICAgaWYgKHBhcmFtZXRl
cnMudmlld1NjYWxlRmFjdG9yICE9IDEpCiAgICAgICAgIHNjYWxlVmlldyhwYXJhbWV0ZXJzLnZp
ZXdTY2FsZUZhY3Rvcik7CiAKLSAgICBtX3BhZ2UtPnNldFVzZXJDb250ZW50RXh0ZW5zaW9uc0Vu
YWJsZWQocGFyYW1ldGVycy51c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKTsKLQogI2lmIFBM
QVRGT1JNKElPUykKICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0Q29udGVudERpc3Bvc2l0aW9u
QXR0YWNobWVudFNhbmRib3hFbmFibGVkKHRydWUpOwogI2VuZGlmCkBAIC0xMTY0LDcgKzExNjIs
NyBAQCB2b2lkIFdlYlBhZ2U6OnNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlCiAgICAgbV9wYWdl
LT5zZXREZWZlcnNMb2FkaW5nKGRlZmVyc0xvYWRpbmcpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJl
bG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgcmVsb2FkRnJvbU9yaWdpbiwgY29uc3Qg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQordm9pZCBX
ZWJQYWdlOjpyZWxvYWQodWludDY0X3QgbmF2aWdhdGlvbklELCBib29sIHJlbG9hZEZyb21Pcmln
aW4sIGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogewogICAgIFNlbmRTdG9wUmVzcG9uc2l2
ZW5lc3NUaW1lciBzdG9wcGVyKHRoaXMpOwogCkBAIC0xMTcyLDcgKzExNzAsNyBAQCB2b2lkIFdl
YlBhZ2U6OnJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uCiAgICAgbV9wZW5kaW5nTmF2aWdhdGlv
bklEID0gbmF2aWdhdGlvbklEOwogCiAgICAgbV9zYW5kYm94RXh0ZW5zaW9uVHJhY2tlci5iZWdp
bkxvYWQobV9tYWluRnJhbWUuZ2V0KCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwotICAgIGNv
cmVQYWdlKCktPnVzZXJJbnB1dEJyaWRnZSgpLnJlbG9hZEZyYW1lKG1fbWFpbkZyYW1lLT5jb3Jl
RnJhbWUoKSwgcmVsb2FkRnJvbU9yaWdpbik7CisgICAgY29yZVBhZ2UoKS0+dXNlcklucHV0QnJp
ZGdlKCkucmVsb2FkRnJhbWUobV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLCByZWxvYWRGcm9tT3Jp
Z2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVkKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpnb0Zvcndh
cmQodWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCBiYWNrRm9yd2FyZEl0ZW1JRCkKQEAg
LTQ5MDIsOCArNDkwMCw2IEBAIFJlZjxEb2N1bWVudExvYWRlcj4gV2ViUGFnZTo6Y3JlYXRlRG9j
dW0KICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXROYXZpZ2F0aW9uSUQobV9wZW5kaW5n
TmF2aWdhdGlvbklEKTsKICAgICAgICAgICAgIG1fcGVuZGluZ05hdmlnYXRpb25JRCA9IDA7CiAg
ICAgICAgIH0KLSAgICAgICAgaWYgKGZyYW1lLnBhZ2UoKSkKLSAgICAgICAgICAgIGRvY3VtZW50
TG9hZGVyLT5zZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKGZyYW1lLnBhZ2UoKS0+dXNl
ckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCgpKTsKICAgICB9CiAKICAgICByZXR1cm4gV1RGOjpt
b3ZlKGRvY3VtZW50TG9hZGVyKTsKQEAgLTUwMDQsMTQgKzUwMDAsNiBAQCB2b2lkIFdlYlBhZ2U6
OnNldFNob3VsZFNjYWxlVmlld1RvRml0RG9jCiAgICAgbV9kcmF3aW5nQXJlYS0+c2V0U2hvdWxk
U2NhbGVWaWV3VG9GaXREb2N1bWVudChzaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KTsKIH0K
IAotdm9pZCBXZWJQYWdlOjpzZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKGJvb2wgdXNl
ckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCkKLXsKLSAgICBpZiAoIW1fcGFnZSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgbV9wYWdlLT5zZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKHVz
ZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQpOwotfQotCiB2b2lkIFdlYlBhZ2U6OmltYWdlT3JN
ZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKIHsKICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5n
ZWQobmV3U2l6ZSkpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCShyZXZpc2lvbiAxOTA2NDQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05ODIsNyArOTgyLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGxvYWRQbGFpblRleHRTdHJpbmcoY29uc3QgU3RyaW5nJiwgY29uc3Qg
VXNlckRhdGEmKTsKICAgICB2b2lkIGxvYWRXZWJBcmNoaXZlRGF0YShjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgbmF2aWdhdGVUb1BERkxpbmtX
aXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmwsIFdlYkNvcmU6OkludFBvaW50IGRv
Y3VtZW50UG9pbnQsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblBvaW50KTsKLSAgICB2b2lkIHJl
bG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgcmVsb2FkRnJvbU9yaWdpbiwgY29uc3Qg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CisgICAgdm9pZCByZWxvYWQodWludDY0X3QgbmF2
aWdhdGlvbklELCBib29sIHJlbG9hZEZyb21PcmlnaW4sIGJvb2wgY29udGVudEJsb2NrZXJzRW5h
YmxlZCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CiAgICAgdm9pZCBnb0Zvcndh
cmQodWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCk7CiAgICAgdm9pZCBnb0JhY2sodWlu
dDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCk7CiAgICAgdm9pZCBnb1RvQmFja0ZvcndhcmRJ
dGVtKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3QpOwpAQCAtMTE2MCw3ICsxMTYwLDYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCk7CiAKICAg
ICB2b2lkIHNldFNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQoYm9vbCk7Ci0gICAgdm9pZCBz
ZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKGJvb2wpOwogCiAgICAgdm9pZCBwYWdlU3Rv
cHBlZFNjcm9sbGluZygpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTkwNjQ0KQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTEzMiw3ICsxMzIsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2Fj
eVJlY2VpdmVyIHsKICAgICBMb2FkV2ViQXJjaGl2ZURhdGEoSVBDOjpEYXRhUmVmZXJlbmNlIHdl
YkFyY2hpdmVEYXRhLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIE5hdmlnYXRlVG9Q
REZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKFN0cmluZyB1cmwsIFdlYkNvcmU6OkludFBvaW50IGRv
Y3VtZW50UG9pbnQsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblBvaW50KQogCi0gICAgUmVsb2Fk
KHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgYm9vbCByZWxvYWRGcm9tT3JpZ2luLCBXZWJLaXQ6OlNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQorICAgIFJlbG9h
ZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgcmVsb2FkRnJvbU9yaWdpbiwgYm9vbCBjb250
ZW50QmxvY2tlcnNFbmFibGVkLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKQogICAgIFN0b3BMb2FkaW5nKCkKIAogICAgIFN0b3BMb2FkaW5n
RnJhbWUodWludDY0X3QgZnJhbWVJRCkKQEAgLTQyOCw3ICs0MjgsNiBAQCBtZXNzYWdlcyAtPiBX
ZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKIAogICAgIENsZWFyV2hlZWxFdmVudFRlc3RUcmlnZ2Vy
KCkKICAgICBTZXRTaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KGJvb2wgc2hvdWxkU2NhbGVW
aWV3VG9GaXREb2N1bWVudCkKLSAgICBTZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKGJv
b2wgdXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCkKIAogI2lmIEVOQUJMRShWSURFTykgJiYg
VVNFKEdTVFJFQU1FUikKICAgICBEaWRFbmRSZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdp
bnModWludDMyX3QgcmVzdWx0KQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwODk5KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMTAtMTIgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJIGZvciByZWxv
YWRpbmcgd2l0aG91dCBjb250ZW50IGJsb2NrZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTAwNTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRy
b2xsZXJDb2NvYS5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNvY29hUmVzZXRT
dGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMv
VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0
Zm9ybUNvbmZpZ3VyZVZpZXdGb3JUZXN0KToKKwogMjAxNS0xMC0xMiAgTWFyaW8gU2FuY2hleiBQ
cmFkYSAgPG1hcmlvQGVuZGxlc3NtLmNvbT4KIAogICAgICAgICBbR1RLXSBVcGRhdGUgamhidWls
ZCdzIHZlcnNpb24gb2YgaGFyZmJ1enoKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29j
b2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0
UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0JKHJldmlzaW9uIDE5MDY0NCkKKysr
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQkod29y
a2luZyBjb3B5KQpAQCAtMTIwLDEwICsxMjAsOCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjb2Nv
YVJlc2V0U3RhdGVUb0NvCiAgICAgcGxhdGZvcm1SdW5VbnRpbChkb25lUmVtb3ZpbmcsIDApOwog
ICAgIFtbX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZSBkZWZhdWx0U3RvcmVdIF9yZW1vdmVB
bGxDb250ZW50RXh0ZW5zaW9uc107CiAKLSAgICBpZiAoUGxhdGZvcm1XZWJWaWV3KiB3ZWJWaWV3
ID0gbWFpbldlYlZpZXcoKSkgeworICAgIGlmIChQbGF0Zm9ybVdlYlZpZXcqIHdlYlZpZXcgPSBt
YWluV2ViVmlldygpKQogICAgICAgICBbd2ViVmlldy0+cGxhdGZvcm1WaWV3KCkuY29uZmlndXJh
dGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgX3JlbW92ZUFsbFVzZXJDb250ZW50RmlsdGVyc107
Ci0gICAgICAgIHdlYlZpZXctPnBsYXRmb3JtVmlldygpLl91c2VyQ29udGVudEV4dGVuc2lvbnNF
bmFibGVkID0gdHJ1ZTsKLSAgICB9CiAjZW5kaWYKIH0KIApJbmRleDogVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW0JKHJldmlzaW9uIDE5MDY0NCkK
KysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjMsMTEgKzEyMyw2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRm
b3JtQ29uZmlndXJlVmkKICAgICAgICAgZG9uZUNvbXBpbGluZyA9IHRydWU7CiAgICAgfV07CiAg
ICAgcGxhdGZvcm1SdW5VbnRpbChkb25lQ29tcGlsaW5nLCAwKTsKLQotICAgIC8vIFRoaXMgaXMg
Zm9yIGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvZGlzYWJsZS1ibG9ja2VyLmh0bWwKLSAg
ICBpZiAoIXRlc3QudXJsQ29udGFpbnMoImRpc2FibGUtYmxvY2tlciIpKQotICAgICAgICByZXR1
cm47Ci0gICAgbWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkuX3VzZXJDb250ZW50RXh0ZW5z
aW9uc0VuYWJsZWQgPSBmYWxzZTsKICNlbmRpZgogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTA2
NDQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NSBAQAorMjAxNS0xMC0xMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgorCisgICAgICAgIEFkZCBTUEkgZm9yIHJlbG9hZGluZyB3aXRob3V0IGNvbnRlbnQgYmxv
Y2tlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MDA1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
aHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9kaXNhYmxlLWJsb2NrZXItZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvZGlzYWJs
ZS1ibG9ja2VyLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jb250ZW50ZXh0
ZW5zaW9ucy9kaXNhYmxlLWJsb2NrZXIuaHRtbC5qc29uOiBSZW1vdmVkLgorICAgICAgICBfdXNl
ckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCBpcyBnb2luZyB0byBiZSByZW1vdmVkLCBhbmQgaXRz
IGZ1bmN0aW9uYWxpdHkgaXMgd2hhdCB0aGlzIHRlc3QgdGVzdGVkLgorCiAyMDE1LTEwLTA2ICBT
aW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIE1hcmsgY29t
cG9zaXRpbmcvZ2VvbWV0cnkvbGltaXQtbGF5ZXItYm91bmRzLW9wYWNpdHktdHJhbnNpdGlvbi5o
dG1sIGFzIGZhaWxpbmcKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvY29udGVudGV4dGVu
c2lvbnMvZGlzYWJsZS1ibG9ja2VyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL2Rpc2FibGUtYmxvY2tlci1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDE5MDY0NCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY29udGVu
dGV4dGVuc2lvbnMvZGlzYWJsZS1ibG9ja2VyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMSw5ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxMjogc3RhdHVzOiAwLCByZWFk
eVN0YXRlOjEsIHJlc3BvbnNlVGV4dDogCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMTI6IHN0YXR1
czogMjAwLCByZWFkeVN0YXRlOjIsIHJlc3BvbnNlVGV4dDogCi1DT05TT0xFIE1FU1NBR0U6IGxp
bmUgMTI6IHN0YXR1czogMjAwLCByZWFkeVN0YXRlOjMsIHJlc3BvbnNlVGV4dDogCi1DT05TT0xF
IE1FU1NBR0U6IGxpbmUgMTI6IHN0YXR1czogMjAwLCByZWFkeVN0YXRlOjQsIHJlc3BvbnNlVGV4
dDogVGhpcyBwYWdlIHNob3VsZCBsb2FkLgotPHNjcmlwdD4KLSAgICBjb25zb2xlLmxvZygiVGhp
cyBwYWdlIHNob3VsZCBsb2FkLiIpOwotPC9zY3JpcHQ+Ci0KLVRoaXMgcGFnZSBzaG91bGQgbG9h
ZCBzdWNjZXNzZnVsbHkuIFRoZSBjb250ZW50IGJsb2NrZXIgaXMgZGlzYWJsZWQgaW4gV2ViS2l0
VGVzdFJ1bm5lciBiZWZvcmUgbG9hZGluZyB0aGUgcGFnZS4KSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvZGlzYWJsZS1ibG9ja2VyLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9kaXNhYmxlLWJs
b2NrZXIuaHRtbAkocmV2aXNpb24gMTkwNjQ0KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9j
b250ZW50ZXh0ZW5zaW9ucy9kaXNhYmxlLWJsb2NrZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MSwyNSArMCwwIEBACi08aGVhZD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
LSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKLX0KLQotZnVuY3Rpb24gc2VuZFJlcXVlc3QoKQotewotICAgIHZhciB4aHIgPSBuZXcg
WE1MSHR0cFJlcXVlc3QoKTsKLSAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24o
KSB7Ci0gICAgICAgIGNvbnNvbGUubG9nKCJzdGF0dXM6ICIgKyB4aHIuc3RhdHVzICsgIiwgcmVh
ZHlTdGF0ZToiICsgeGhyLnJlYWR5U3RhdGUgKyAiLCByZXNwb25zZVRleHQ6ICIgKyB4aHIucmVz
cG9uc2VUZXh0KTsKLSAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRlID09IDQpIHsKLSAgICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAg
IHhoci5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL3Nob3VsZC1sb2FkLmh0bWwiLCB0cnVlKTsKLQl4
aHIuc2VuZCgpOwotfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InNlbmRSZXF1
ZXN0KCkiPgotVGhpcyBwYWdlIHNob3VsZCBsb2FkIHN1Y2Nlc3NmdWxseS4gIFRoZSBjb250ZW50
IGJsb2NrZXIgaXMgZGlzYWJsZWQgaW4gV2ViS2l0VGVzdFJ1bm5lciBiZWZvcmUgbG9hZGluZyB0
aGUgcGFnZS4KLTwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvY29udGVudGV4
dGVuc2lvbnMvZGlzYWJsZS1ibG9ja2VyLmh0bWwuanNvbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL2Rpc2FibGUtYmxvY2tlci5odG1sLmpz
b24JKHJldmlzaW9uIDE5MDY0NCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY29udGVudGV4
dGVuc2lvbnMvZGlzYWJsZS1ibG9ja2VyLmh0bWwuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMSwx
MCArMCwwIEBACi1bCi0gICAgewotICAgICAgICAiYWN0aW9uIjogewotICAgICAgICAgICAgInR5
cGUiOiAiYmxvY2siCi0gICAgICAgIH0sCi0gICAgICAgICJ0cmlnZ2VyIjogewotICAgICAgICAg
ICAgInVybC1maWx0ZXIiOiAiLioiCi0gICAgICAgIH0KLSAgICB9Ci1dCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262936</attachid>
            <date>2015-10-12 16:02:45 -0700</date>
            <delta_ts>2015-10-13 16:02:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150058-20151012160219.patch</filename>
            <type>text/plain</type>
            <size>28504</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDY0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE1LTEwLTEyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBm
b3IgcmVsb2FkaW5nIHdpdGhvdXQgY29udGVudCBibG9ja2VycworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMDU4CisgICAgICAgIHJkYXI6Ly9wcm9i
bGVtLzIyNzQyMjIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OnJlbG9hZFdpdGhPdmVycmlkZUVuY29kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpyZWxvYWQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAg
ICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXNlckNvbnRlbnRD
b250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVzZXJDb250ZW50RXh0ZW5zaW9u
c0VuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0VXNlckNvbnRl
bnRFeHRlbnNpb25zRW5hYmxlZCk6IERlbGV0ZWQuCisgICAgICAgICogcmVwbGF5L1VzZXJJbnB1
dEJyaWRnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVc2VySW5wdXRCcmlkZ2U6OmxvYWRSZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJJbnB1dEJyaWRnZTo6cmVsb2FkRnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6VXNlcklucHV0QnJpZGdlOjpzdG9wTG9hZGluZ0ZyYW1lKToKKyAg
ICAgICAgKiByZXBsYXkvVXNlcklucHV0QnJpZGdlLmg6CisgICAgICAgIFBhc3MgYSBib29sIGZy
b20gdGhlIHJlbG9hZFdpdGhvdXRDb250ZW50QmxvY2tlcnMgY2FsbCB0byB0aGUgRG9jdW1lbnRM
b2FkZXIsIAorICAgICAgICB3aGljaCBzdG9yZXMgdGhlIHN0YXRlIG9mIHdoZXRoZXIgdGhlIGNv
bnRlbnQgYmxvY2tlcnMgYXJlIGVuYWJsZWQgb3Igbm90LgorICAgICAgICBSZW1vdmUgdGhlIHN0
YXRlIGZyb20gdGhlIFBhZ2UgYW5kIGNvcHlpbmcgdGhlIHN0YXRlIGZyb20gdGhlIFBhZ2UgdG8g
dGhlIERvY3VtZW50TG9hZGVyCisgICAgICAgIGJlY2F1c2UgdGhhdCBjYXVzZWQgaXNzdWVzIHdp
dGggdGhlIGNvbnRlbnQgYmxvY2tlcnMgYmVpbmcgcmUtZW5hYmxlZCBhdCB0aGUgd3JvbmcgdGlt
ZS4KKwogMjAxNS0xMC0wNiAgUGVyIEFybmUgVm9sbGFuICA8cGVhdm9Ab3V0bG9vay5jb20+CiAK
ICAgICAgICAgW1dpbkNhaXJvXSBHU3RyZWFtZXIgY29tcGlsZSBlcnJvcnMuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDE5MDY0NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NjQs
NyArMTU2NCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZFdpdGhPdmVycmlkZUVuY28KICAg
ICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKGxvYWRlci5wdHIoKSwgRnJhbWVMb2FkVHlwZTo6UmVs
b2FkLCAwLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6Olllcyk7CiB9CiAKLXZvaWQgRnJh
bWVMb2FkZXI6OnJlbG9hZChib29sIGVuZFRvRW5kUmVsb2FkKQordm9pZCBGcmFtZUxvYWRlcjo6
cmVsb2FkKGJvb2wgZW5kVG9FbmRSZWxvYWQsIGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCkK
IHsKICAgICBpZiAoIW1fZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTE1ODUs
NiArMTU4NSw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZChib29sIGVuZFRvRW5kUmUKICAg
ICBSZWY8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9IG1fY2xpZW50LmNyZWF0ZURvY3VtZW50TG9h
ZGVyKGluaXRpYWxSZXF1ZXN0LCBkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwoaW5pdGlhbFJl
cXVlc3QudXJsKCkpKTsKICAgICBhcHBseVNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb05l
d0RvY3VtZW50TG9hZGVyKGxvYWRlciwgbV9kb2N1bWVudExvYWRlci0+c2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCkpOwogCisgICAgbG9hZGVyLT5zZXRVc2VyQ29udGVu
dEV4dGVuc2lvbnNFbmFibGVkKGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworICAgIAogICAgIFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCA9IGxvYWRlci0+cmVxdWVzdCgpOwogCiAgICAgLy8gRklY
TUU6IFdlIGRvbid0IGhhdmUgYSBtZWNoYW5pc20gdG8gcmV2YWxpZGF0ZSB0aGUgbWFpbiByZXNv
dXJjZSB3aXRob3V0IHJlbG9hZGluZyBhdCB0aGUgbW9tZW50LgpJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmgJKHJldmlzaW9uIDE5MDY0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNyArMTIzLDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXJsU2VsZWN0ZWQoY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50KiwgTG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExp
c3QsIFNob3VsZFNlbmRSZWZlcnJlciwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiAg
ICAgdm9pZCBzdWJtaXRGb3JtKFBhc3NSZWZQdHI8Rm9ybVN1Ym1pc3Npb24+KTsKIAotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVsb2FkKGJvb2wgZW5kVG9FbmRSZWxvYWQgPSBmYWxzZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWxvYWQoYm9vbCBlbmRUb0VuZFJlbG9hZCA9IGZhbHNl
LCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSB0cnVlKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlbG9hZFdpdGhPdmVycmlkZUVuY29kaW5nKGNvbnN0IFN0cmluZyYgb3ZlcnJpZGVF
bmNvZGluZyk7CiAKICAgICB2b2lkIG9wZW4oQ2FjaGVkRnJhbWVCYXNlJik7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAkocmV2aXNpb24gMTkwNjQ0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQyOCw5ICs0MjgsNiBAQCBwdWJsaWM6CiAgICAgVXNlckNvbnRl
bnRDb250cm9sbGVyKiB1c2VyQ29udGVudENvbnRyb2xsZXIoKSB7IHJldHVybiBtX3VzZXJDb250
ZW50Q29udHJvbGxlci5nZXQoKTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VXNlckNv
bnRlbnRDb250cm9sbGVyKFVzZXJDb250ZW50Q29udHJvbGxlciopOwogCi0gICAgYm9vbCB1c2Vy
Q29udGVudEV4dGVuc2lvbnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV91c2VyQ29udGVudEV4
dGVuc2lvbnNFbmFibGVkOyB9Ci0gICAgdm9pZCBzZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFi
bGVkKGJvb2wgZW5hYmxlZCkgeyBtX3VzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQgPSBlbmFi
bGVkOyB9Ci0KICAgICBWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlKCk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaXNpdGVkTGlua1N0b3JlKFJlZjxWaXNpdGVkTGlua1N0
b3JlPiYmKTsKIApAQCAtNjM2LDcgKzYzMyw2IEBAIHByaXZhdGU6CiAKICAgICBNZWRpYVByb2R1
Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgbV9tZWRpYVN0YXRlIHsgTWVkaWFQcm9kdWNlcjo6SXNOb3RQ
bGF5aW5nIH07CiAgICAgCi0gICAgYm9vbCBtX3VzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQg
eyB0cnVlIH07CiAgICAgYm9vbCBtX2FsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjayB7
IGZhbHNlIH07CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJp
ZGdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJp
ZGdlLmNwcAkocmV2aXNpb24gMTkwNjQ0KQorKysgU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJ
bnB1dEJyaWRnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Miw5ICsyNDIsOSBAQCB2b2lkIFVz
ZXJJbnB1dEJyaWRnZTo6bG9hZFJlcXVlc3QoY29uc3QgCiAgICAgbV9wYWdlLm1haW5GcmFtZSgp
LmxvYWRlcigpLmxvYWQocmVxdWVzdCk7CiB9CiAKLXZvaWQgVXNlcklucHV0QnJpZGdlOjpyZWxv
YWRGcmFtZShGcmFtZSogZnJhbWUsIGJvb2wgZW5kVG9FbmRSZWxvYWQsIElucHV0U291cmNlKQor
dm9pZCBVc2VySW5wdXRCcmlkZ2U6OnJlbG9hZEZyYW1lKEZyYW1lKiBmcmFtZSwgYm9vbCBlbmRU
b0VuZFJlbG9hZCwgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBJbnB1dFNvdXJjZSkKIHsK
LSAgICBmcmFtZS0+bG9hZGVyKCkucmVsb2FkKGVuZFRvRW5kUmVsb2FkKTsKKyAgICBmcmFtZS0+
bG9hZGVyKCkucmVsb2FkKGVuZFRvRW5kUmVsb2FkLCBjb250ZW50QmxvY2tlcnNFbmFibGVkKTsK
IH0KIAogdm9pZCBVc2VySW5wdXRCcmlkZ2U6OnN0b3BMb2FkaW5nRnJhbWUoRnJhbWUqIGZyYW1l
LCBJbnB1dFNvdXJjZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlk
Z2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdl
LmgJKHJldmlzaW9uIDE5MDY0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRC
cmlkZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAKICAgICAv
LyBOYXZpZ2F0aW9uIEFQSXMuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkUmVxdWVzdChj
b25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgSW5wdXRTb3VyY2Ugc291cmNlID0gSW5wdXRTb3VyY2U6
OlVzZXIpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVsb2FkRnJhbWUoRnJhbWUqLCBib29s
IGVuZFRvRW5kUmVsb2FkLCBJbnB1dFNvdXJjZSBzb3VyY2UgPSBJbnB1dFNvdXJjZTo6VXNlcik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWxvYWRGcmFtZShGcmFtZSosIGJvb2wgZW5kVG9F
bmRSZWxvYWQsIGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCwgSW5wdXRTb3VyY2UgPSBJbnB1
dFNvdXJjZTo6VXNlcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wTG9hZGluZ0ZyYW1l
KEZyYW1lKiwgSW5wdXRTb3VyY2Ugc291cmNlID0gSW5wdXRTb3VyY2U6OlVzZXIpOwogICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgdHJ5Q2xvc2VQYWdlKElucHV0U291cmNlIHNvdXJjZSA9IElucHV0
U291cmNlOjpVc2VyKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwNjQ0KQorKysgU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTkgQEAKKzIw
MTUtMTAtMTIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBBZGQgU1BJIGZvciByZWxvYWRpbmcgd2l0aG91dCBjb250ZW50IGJsb2NrZXJzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTAwNTgKKyAg
ICAgICAgcmRhcjovL3Byb2JsZW0vMjI3NDIyMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2Rl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToK
KyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlUmVsb2FkKToKKyAg
ICAgICAgKFdLUGFnZVJlbG9hZFdpdGhvdXRDb250ZW50QmxvY2tlcnMpOgorICAgICAgICAoV0tQ
YWdlUmVsb2FkRnJvbU9yaWdpbik6CisgICAgICAgIChXS1BhZ2VUcnlDbG9zZSk6CisgICAgICAg
IChXS1BhZ2VTZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKToKKyAgICAgICAgKFdLUGFn
ZVN1cHBvcnRzVGV4dEVuY29kaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXIubW06CisgICAgICAgICgtW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciByZWxvYWRd
KToKKyAgICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIHJlbG9hZEZyb21Pcmln
aW5dKToKKyAgICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIGFwcGxpY2F0aW9u
TmFtZUZvclVzZXJBZ2VudF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgcmVsb2FkXSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyByZWxvYWRGcm9tT3JpZ2luXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0VXNlckNv
bnRlbnRFeHRlbnNpb25zRW5hYmxlZDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF91c2VyQ29u
dGVudEV4dGVuc2lvbnNFbmFibGVkXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfd2ViUHJvY2Vz
c0lkZW50aWZpZXJdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9raWxsV2ViQ29udGVudFByb2Nl
c3NdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZWxvYWRXaXRob3V0Q29udGVudEJsb2NrZXJz
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfa2lsbFdlYkNvbnRlbnRQcm9jZXNzQW5kUmVzZXRT
dGF0ZV0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWVQcm94eTo6ZGlkSGFuZGxlQ29udGVudEZpbHRlclVuYmxvY2tOYXZpZ2F0aW9u
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpzdG9wTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVsb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBh
cmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFNob3VsZFNjYWxl
Vmlld1RvRml0RG9jdW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFVz
ZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1c2VyQ29u
dGVudEV4dGVuc2lvbnNFbmFibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fc2hvdWxkRGlzcGF0Y2hGYWtl
TW91c2VNb3ZlRXZlbnRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0RGVmZXJzTG9h
ZGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlbG9hZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmdvRm9yd2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0
ZURvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0U2hvdWxkU2Nh
bGVWaWV3VG9GaXREb2N1bWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmltYWdlT3JN
ZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRV
c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluOgorCiAyMDE1LTEwLTA2ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CiAKICAgICAgICAgVHJ5IHRvIGZpeCB0aGUgMzItYml0IGJ1aWxkLgpJbmRl
eDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAkocmV2aXNpb24gMTkwNjQ0KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw2IEBA
IHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKEkKICNlbmRpZgogICAgIGVu
Y29kZXIgPDwgYXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5hYmxlZDsKICAgICBlbmNvZGVyIDw8
IHNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQ7Ci0gICAgZW5jb2RlciA8PCB1c2VyQ29udGVu
dEV4dGVuc2lvbnNFbmFibGVkOwogfQogCiBib29sIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6
OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyYgcGFyYW1ldGVycykKQEAgLTE4OSw5ICsxODgsNiBAQCBib29sIFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnM6OmRlY29kZShJCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLnNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXNlckNvbnRlbnRFeHRlbnNp
b25zRW5hYmxlZCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIHJldHVybiB0cnVlOwog
fQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgJKHJldmlzaW9uIDE5MDY0NCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw3ICsxMzAs
NiBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAjZW5kaWYKICAgICBib29s
IGFwcGxlTWFpbFBhZ2luYXRpb25RdWlya0VuYWJsZWQ7CiAgICAgYm9vbCBzaG91bGRTY2FsZVZp
ZXdUb0ZpdERvY3VtZW50OwotICAgIGJvb2wgdXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkZyYW1lUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJGcmFtZVByb3h5LmNwcAkocmV2aXNpb24gMTkwNjQ0KQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDgsNyAr
MjQ4LDcgQEAgYm9vbCBXZWJGcmFtZVByb3h5OjpkaWRIYW5kbGVDb250ZW50RmlsdAogICAgIEFT
U0VSVChwYWdlKTsKICAgICBtX2NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5yZXF1ZXN0VW5i
bG9ja0FzeW5jKFtwYWdlXShib29sIHVuYmxvY2tlZCkgewogICAgICAgICBpZiAodW5ibG9ja2Vk
KQotICAgICAgICAgICAgcGFnZS0+cmVsb2FkKGZhbHNlKTsKKyAgICAgICAgICAgIHBhZ2UtPnJl
bG9hZChmYWxzZSwgdHJ1ZSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMTkwNjQ0
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwNDcsNyArMTA0Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdG9wTG9hZGlu
ZygpCiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0YXJ0KCk7CiB9CiAK
LVJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6cmVsb2FkKGJvb2wgcmVsb2Fk
RnJvbU9yaWdpbikKK1JlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6cmVsb2Fk
KGJvb2wgcmVsb2FkRnJvbU9yaWdpbiwgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkKQogewog
ICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogCkBA
IC0xMDY3LDcgKzEwNjcsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6
OnJlCiAgICAgCiAgICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0
ZVJlbG9hZE5hdmlnYXRpb24oKTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6UmVsb2FkKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCByZWxvYWRGcm9tT3JpZ2lu
LCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6UmVsb2FkKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBy
ZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlKSwgbV9wYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigp
LT5zdGFydCgpOwogCiAgICAgcmV0dXJuIFdURjo6bW92ZShuYXZpZ2F0aW9uKTsKQEAgLTUxNjYs
NyArNTE2Niw2IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjoKICAg
ICBwYXJhbWV0ZXJzLmFwcGxlTWFpbFBhZ2luYXRpb25RdWlya0VuYWJsZWQgPSBmYWxzZTsKICNl
bmRpZgogICAgIHBhcmFtZXRlcnMuc2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudCA9IG1fc2hv
dWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudDsKLSAgICBwYXJhbWV0ZXJzLnVzZXJDb250ZW50RXh0
ZW5zaW9uc0VuYWJsZWQgPSBtX3VzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQ7CiAKICAgICBy
ZXR1cm4gcGFyYW1ldGVyczsKIH0KQEAgLTYwOTcsMTcgKzYwOTYsNCBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0U2hvdWxkU2NhbGVWaWV3VG9GCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRTaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KHNob3VsZFNjYWxlVmll
d1RvRml0RG9jdW1lbnQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZXRV
c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKGJvb2wgdXNlckNvbnRlbnRFeHRlbnNpb25zRW5h
YmxlZCkKLXsKLSAgICBpZiAobV91c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkID09IHVzZXJD
b250ZW50RXh0ZW5zaW9uc0VuYWJsZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fdXNlckNv
bnRlbnRFeHRlbnNpb25zRW5hYmxlZCA9IHVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQ7Ci0K
LSAgICBpZiAoIWlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKHVz
ZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQpLCBtX3BhZ2VJRCk7Ci19Ci0KIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAko
cmV2aXNpb24gMTkwNjQ0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjIsNyArMzYyLDcgQEAgcHVibGljOgogICAgIHZvaWQg
bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmwsIFdl
YkNvcmU6OkludFBvaW50IGRvY3VtZW50UG9pbnQsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblBv
aW50KTsKIAogICAgIHZvaWQgc3RvcExvYWRpbmcoKTsKLSAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiByZWxvYWQoYm9vbCByZWxvYWRGcm9tT3JpZ2luKTsKKyAgICBSZWZQdHI8QVBJOjpOYXZp
Z2F0aW9uPiByZWxvYWQoYm9vbCByZWxvYWRGcm9tT3JpZ2luLCBib29sIGNvbnRlbnRCbG9ja2Vy
c0VuYWJsZWQpOwogCiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gZ29Gb3J3YXJkKCk7CiAg
ICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gZ29CYWNrKCk7CkBAIC02NTAsOSArNjUwLDYgQEAg
cHVibGljOgogICAgIHZvaWQgc2NhbGVWaWV3KGRvdWJsZSBzY2FsZSk7CiAgICAgdm9pZCBzZXRT
aG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KGJvb2wpOwogICAgIAotICAgIGJvb2wgdXNlckNv
bnRlbnRFeHRlbnNpb25zRW5hYmxlZCgpIHsgcmV0dXJuIG1fdXNlckNvbnRlbnRFeHRlbnNpb25z
RW5hYmxlZDsgfQotICAgIHZvaWQgc2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZChib29s
KTsKLQogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRJ
bnRyaW5zaWNEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCk7CiAgICAgdm9pZCBzZXRDdXN0b21EZXZp
Y2VTY2FsZUZhY3RvcihmbG9hdCk7CkBAIC0xNzY4LDggKzE3NjUsNiBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9yZXF1aXJlc1RhcmdldE1vbml0b3JpbmcgeyBmYWxzZSB9OwogI2VuZGlmCiAKLSAg
ICBib29sIG1fdXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCB7IHRydWUgfTsKLQogI2lmIFBM
QVRGT1JNKElPUykKICAgICBib29sIG1faGFzRGVmZXJyZWRTdGFydEFzc2lzdGluZ05vZGUgeyBm
YWxzZSB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOb2RlQXNzaXN0YW5jZUFyZ3VtZW50cz4gbV9k
ZWZlcnJlZE5vZGVBc3Npc3RhbmNlQXJndW1lbnRzOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHJldmlzaW9uIDE5MDY0NCkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjcsMTIg
KzIyNywxNyBAQCB2b2lkIFdLUGFnZVN0b3BMb2FkaW5nKFdLUGFnZVJlZiBwYWdlUmVmCiAKIHZv
aWQgV0tQYWdlUmVsb2FkKFdLUGFnZVJlZiBwYWdlUmVmKQogewotICAgIHRvSW1wbChwYWdlUmVm
KS0+cmVsb2FkKGZhbHNlKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnJlbG9hZChmYWxzZSwgdHJ1
ZSk7Cit9CisKK3ZvaWQgV0tQYWdlUmVsb2FkV2l0aG91dENvbnRlbnRCbG9ja2VycyhXS1BhZ2VS
ZWYgcGFnZVJlZikKK3sKKyAgICB0b0ltcGwocGFnZVJlZiktPnJlbG9hZChmYWxzZSwgZmFsc2Up
OwogfQogCiB2b2lkIFdLUGFnZVJlbG9hZEZyb21PcmlnaW4oV0tQYWdlUmVmIHBhZ2VSZWYpCiB7
Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5yZWxvYWQodHJ1ZSk7CisgICAgdG9JbXBsKHBhZ2VSZWYp
LT5yZWxvYWQodHJ1ZSwgdHJ1ZSk7CiB9CiAKIGJvb2wgV0tQYWdlVHJ5Q2xvc2UoV0tQYWdlUmVm
IHBhZ2VSZWYpCkBAIC0zNjIsNyArMzY3LDcgQEAgdm9pZCBXS1BhZ2VTZXRDdXN0b21Vc2VyQWdl
bnQoV0tQYWdlUmVmIAogCiB2b2lkIFdLUGFnZVNldFVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJs
ZWQoV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgZW5hYmxlZCkKIHsKLSAgICB0b0ltcGwocGFnZVJl
ZiktPnNldFVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQoZW5hYmxlZCk7CisgICAgLy8gRklY
TUU6IFJlbW92ZSB0aGlzIGZ1bmN0aW9uIG9uY2UgaXQgaXMgbm8gbG9uZ2VyIHVzZWQuCiB9CiAK
IGJvb2wgV0tQYWdlU3VwcG9ydHNUZXh0RW5jb2RpbmcoV0tQYWdlUmVmIHBhZ2VSZWYpCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCShyZXZpc2lvbiAxOTA2NDQp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTgzLDYgKzgzLDcgQEAgV0tfRVhQT1JUIHZvaWQgV0tQYWdlTG9hZFdlYkFyY2hpdmVE
YXRhVwogCiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VTdG9wTG9hZGluZyhXS1BhZ2VSZWYgcGFnZSk7
CiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VSZWxvYWQoV0tQYWdlUmVmIHBhZ2UpOworV0tfRVhQT1JU
IHZvaWQgV0tQYWdlUmVsb2FkV2l0aG91dENvbnRlbnRCbG9ja2VycyhXS1BhZ2VSZWYgcGFnZSk7
CiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VSZWxvYWRGcm9tT3JpZ2luKFdLUGFnZVJlZiBwYWdlKTsK
IAogV0tfRVhQT1JUIGJvb2wgV0tQYWdlVHJ5Q2xvc2UoV0tQYWdlUmVmIHBhZ2UpOwpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0JKHJldmlzaW9uIDE5MDY0NCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9s
bGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsMTIgKzE5MywxMiBAQCAtICh2b2lkKXN0b3BM
b2FkaW5nCiAKIC0gKHZvaWQpcmVsb2FkCiB7Ci0gICAgX3BhZ2UtPnJlbG9hZChmYWxzZSk7Cisg
ICAgX3BhZ2UtPnJlbG9hZChmYWxzZSwgdHJ1ZSk7CiB9CiAKIC0gKHZvaWQpcmVsb2FkRnJvbU9y
aWdpbgogewotICAgIF9wYWdlLT5yZWxvYWQodHJ1ZSk7CisgICAgX3BhZ2UtPnJlbG9hZCh0cnVl
LCB0cnVlKTsKIH0KIAogLSAoTlNTdHJpbmcgKilhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCShyZXZpc2lvbiAxOTA2NDQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTY3LDcgKzU2Nyw3IEBAIC0gKFdL
TmF2aWdhdGlvbiAqKWdvRm9yd2FyZAogCiAtIChXS05hdmlnYXRpb24gKilyZWxvYWQKIHsKLSAg
ICBhdXRvIG5hdmlnYXRpb24gPSBfcGFnZS0+cmVsb2FkKGZhbHNlKTsKKyAgICBhdXRvIG5hdmln
YXRpb24gPSBfcGFnZS0+cmVsb2FkKGZhbHNlLCB0cnVlKTsKICAgICBpZiAoIW5hdmlnYXRpb24p
CiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTU3Niw3ICs1NzYsNyBAQCAtIChXS05hdmlnYXRp
b24gKilyZWxvYWQKIAogLSAoV0tOYXZpZ2F0aW9uICopcmVsb2FkRnJvbU9yaWdpbgogewotICAg
IGF1dG8gbmF2aWdhdGlvbiA9IF9wYWdlLT5yZWxvYWQodHJ1ZSk7CisgICAgYXV0byBuYXZpZ2F0
aW9uID0gX3BhZ2UtPnJlbG9hZCh0cnVlLCB0cnVlKTsKICAgICBpZiAoIW5hdmlnYXRpb24pCiAg
ICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTIwMzAsMTIgKzIwMzAsMTMgQEAgLSAodm9pZClfc2V0
Q3VzdG9tVXNlckFnZW50OihOU1N0cmluZyAqKQogCiAtICh2b2lkKV9zZXRVc2VyQ29udGVudEV4
dGVuc2lvbnNFbmFibGVkOihCT09MKXVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQKIHsKLSAg
ICBfcGFnZS0+c2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCh1c2VyQ29udGVudEV4dGVu
c2lvbnNFbmFibGVkKTsKKyAgICAvLyBUaGlzIGlzIGtlcHQgZm9yIGJpbmFyeSBjb21wYXRpYmls
aXR5IHdpdGggaU9TIDkuCiB9CiAKIC0gKEJPT0wpX3VzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJs
ZWQKIHsKLSAgICByZXR1cm4gX3BhZ2UtPnVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQoKTsK
KyAgICAvLyBUaGlzIGlzIGtlcHQgZm9yIGJpbmFyeSBjb21wYXRpYmlsaXR5IHdpdGggaU9TIDku
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIC0gKHBpZF90KV93ZWJQcm9jZXNzSWRlbnRpZmllcgpA
QCAtMjA1MSw2ICsyMDUyLDE1IEBAIC0gKHZvaWQpX2tpbGxXZWJDb250ZW50UHJvY2VzcwogICAg
IF9wYWdlLT5wcm9jZXNzKCkudGVybWluYXRlKCk7CiB9CiAKKy0gKFdLTmF2aWdhdGlvbiAqKV9y
ZWxvYWRXaXRob3V0Q29udGVudEJsb2NrZXJzCit7CisgICAgYXV0byBuYXZpZ2F0aW9uID0gX3Bh
Z2UtPnJlbG9hZChmYWxzZSwgZmFsc2UpOworICAgIGlmICghbmF2aWdhdGlvbikKKyAgICAgICAg
cmV0dXJuIG5pbDsKKyAgICAKKyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ucmVsZWFz
ZSgpLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworfQorCiAtICh2b2lkKV9raWxsV2ViQ29udGVu
dFByb2Nlc3NBbmRSZXNldFN0YXRlCiB7CiAgICAgX3BhZ2UtPnRlcm1pbmF0ZVByb2Nlc3MoKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3UHJpdmF0ZS5oCShyZXZpc2lvbiAxOTA2NDQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc0
LDYgKzE3NCw4IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1BhZ2luYXRpb24KIAog
I2VuZGlmCiAKKy0gKFdLTmF2aWdhdGlvbiAqKV9yZWxvYWRXaXRob3V0Q29udGVudEJsb2NrZXJz
IFdLX0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEJBKTsKKwogLSAodm9pZClfa2lsbFdl
YkNvbnRlbnRQcm9jZXNzQW5kUmVzZXRTdGF0ZTsKIAogLSAodm9pZClfZ2V0TWFpblJlc291cmNl
RGF0YVdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEYXRhICosIE5TRXJyb3IgKikp
Y29tcGxldGlvbkhhbmRsZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxOTA2NDQpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyMCw4ICs1
MjAsNiBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgCiAgICAgaWYg
KHBhcmFtZXRlcnMudmlld1NjYWxlRmFjdG9yICE9IDEpCiAgICAgICAgIHNjYWxlVmlldyhwYXJh
bWV0ZXJzLnZpZXdTY2FsZUZhY3Rvcik7CiAKLSAgICBtX3BhZ2UtPnNldFVzZXJDb250ZW50RXh0
ZW5zaW9uc0VuYWJsZWQocGFyYW1ldGVycy51c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKTsK
LQogI2lmIFBMQVRGT1JNKElPUykKICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0Q29udGVudERp
c3Bvc2l0aW9uQXR0YWNobWVudFNhbmRib3hFbmFibGVkKHRydWUpOwogI2VuZGlmCkBAIC0xMTY0
LDcgKzExNjIsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlCiAg
ICAgbV9wYWdlLT5zZXREZWZlcnNMb2FkaW5nKGRlZmVyc0xvYWRpbmcpOwogfQogCi12b2lkIFdl
YlBhZ2U6OnJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgcmVsb2FkRnJvbU9yaWdp
biwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
KQordm9pZCBXZWJQYWdlOjpyZWxvYWQodWludDY0X3QgbmF2aWdhdGlvbklELCBib29sIHJlbG9h
ZEZyb21PcmlnaW4sIGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCwgY29uc3QgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogewogICAgIFNlbmRTdG9w
UmVzcG9uc2l2ZW5lc3NUaW1lciBzdG9wcGVyKHRoaXMpOwogCkBAIC0xMTcyLDcgKzExNzAsNyBA
QCB2b2lkIFdlYlBhZ2U6OnJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uCiAgICAgbV9wZW5kaW5n
TmF2aWdhdGlvbklEID0gbmF2aWdhdGlvbklEOwogCiAgICAgbV9zYW5kYm94RXh0ZW5zaW9uVHJh
Y2tlci5iZWdpbkxvYWQobV9tYWluRnJhbWUuZ2V0KCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUp
OwotICAgIGNvcmVQYWdlKCktPnVzZXJJbnB1dEJyaWRnZSgpLnJlbG9hZEZyYW1lKG1fbWFpbkZy
YW1lLT5jb3JlRnJhbWUoKSwgcmVsb2FkRnJvbU9yaWdpbik7CisgICAgY29yZVBhZ2UoKS0+dXNl
cklucHV0QnJpZGdlKCkucmVsb2FkRnJhbWUobV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLCByZWxv
YWRGcm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVkKTsKIH0KIAogdm9pZCBXZWJQYWdl
Ojpnb0ZvcndhcmQodWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCBiYWNrRm9yd2FyZEl0
ZW1JRCkKQEAgLTQ5MDIsOCArNDkwMCw2IEBAIFJlZjxEb2N1bWVudExvYWRlcj4gV2ViUGFnZTo6
Y3JlYXRlRG9jdW0KICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXROYXZpZ2F0aW9uSUQo
bV9wZW5kaW5nTmF2aWdhdGlvbklEKTsKICAgICAgICAgICAgIG1fcGVuZGluZ05hdmlnYXRpb25J
RCA9IDA7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGZyYW1lLnBhZ2UoKSkKLSAgICAgICAgICAg
IGRvY3VtZW50TG9hZGVyLT5zZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKGZyYW1lLnBh
Z2UoKS0+dXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCgpKTsKICAgICB9CiAKICAgICByZXR1
cm4gV1RGOjptb3ZlKGRvY3VtZW50TG9hZGVyKTsKQEAgLTUwMDQsMTQgKzUwMDAsNiBAQCB2b2lk
IFdlYlBhZ2U6OnNldFNob3VsZFNjYWxlVmlld1RvRml0RG9jCiAgICAgbV9kcmF3aW5nQXJlYS0+
c2V0U2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudChzaG91bGRTY2FsZVZpZXdUb0ZpdERvY3Vt
ZW50KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVk
KGJvb2wgdXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCkKLXsKLSAgICBpZiAoIW1fcGFnZSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wYWdlLT5zZXRVc2VyQ29udGVudEV4dGVuc2lvbnNF
bmFibGVkKHVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQpOwotfQotCiB2b2lkIFdlYlBhZ2U6
OmltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkK
IHsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkltYWdlT3JNZWRpYURvY3VtZW50
U2l6ZUNoYW5nZWQobmV3U2l6ZSkpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAxOTA2NDQpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05ODIsNyArOTgy
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxvYWRQbGFpblRleHRTdHJpbmcoY29uc3QgU3RyaW5n
JiwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGxvYWRXZWJBcmNoaXZlRGF0YShjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgbmF2aWdhdGVU
b1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmwsIFdlYkNvcmU6Oklu
dFBvaW50IGRvY3VtZW50UG9pbnQsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblBvaW50KTsKLSAg
ICB2b2lkIHJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgcmVsb2FkRnJvbU9yaWdp
biwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CisgICAgdm9pZCByZWxvYWQodWlu
dDY0X3QgbmF2aWdhdGlvbklELCBib29sIHJlbG9hZEZyb21PcmlnaW4sIGJvb2wgY29udGVudEJs
b2NrZXJzRW5hYmxlZCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CiAgICAgdm9p
ZCBnb0ZvcndhcmQodWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCk7CiAgICAgdm9pZCBn
b0JhY2sodWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCk7CiAgICAgdm9pZCBnb1RvQmFj
a0ZvcndhcmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3QpOwpAQCAtMTE2MCw3
ICsxMTYwLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyV2hlZWxFdmVudFRlc3RUcmlnZ2Vy
KCk7CiAKICAgICB2b2lkIHNldFNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQoYm9vbCk7Ci0g
ICAgdm9pZCBzZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKGJvb2wpOwogCiAgICAgdm9p
ZCBwYWdlU3RvcHBlZFNjcm9sbGluZygpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTkw
NjQ0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEzMiw3ICsxMzIsNyBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBMb2FkV2ViQXJjaGl2ZURhdGEoSVBDOjpEYXRhUmVm
ZXJlbmNlIHdlYkFyY2hpdmVEYXRhLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIE5h
dmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKFN0cmluZyB1cmwsIFdlYkNvcmU6Oklu
dFBvaW50IGRvY3VtZW50UG9pbnQsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblBvaW50KQogCi0g
ICAgUmVsb2FkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgYm9vbCByZWxvYWRGcm9tT3JpZ2luLCBX
ZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQor
ICAgIFJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgcmVsb2FkRnJvbU9yaWdpbiwg
Ym9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogICAgIFN0b3BMb2FkaW5nKCkKIAogICAgIFN0
b3BMb2FkaW5nRnJhbWUodWludDY0X3QgZnJhbWVJRCkKQEAgLTQyOCw3ICs0MjgsNiBAQCBtZXNz
YWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKIAogICAgIENsZWFyV2hlZWxFdmVudFRl
c3RUcmlnZ2VyKCkKICAgICBTZXRTaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KGJvb2wgc2hv
dWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudCkKLSAgICBTZXRVc2VyQ29udGVudEV4dGVuc2lvbnNF
bmFibGVkKGJvb2wgdXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCkKIAogI2lmIEVOQUJMRShW
SURFTykgJiYgVVNFKEdTVFJFQU1FUikKICAgICBEaWRFbmRSZXF1ZXN0SW5zdGFsbE1pc3NpbmdN
ZWRpYVBsdWdpbnModWludDMyX3QgcmVzdWx0KQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwODk5KQorKysgVG9vbHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUtMTAtMTIgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJ
IGZvciByZWxvYWRpbmcgd2l0aG91dCBjb250ZW50IGJsb2NrZXJzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTAwNTgKKyAgICAgICAgcmRhcjovL3By
b2JsZW0vMjI3NDIyMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbToK
KyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNvY29hUmVzZXRTdGF0ZVRvQ29uc2lzdGVu
dFZhbHVlcyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJN
YWMubW06CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNvbmZpZ3VyZVZp
ZXdGb3JUZXN0KToKKwogMjAxNS0xMC0xMiAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1hcmlvQGVu
ZGxlc3NtLmNvbT4KIAogICAgICAgICBbR1RLXSBVcGRhdGUgamhidWlsZCdzIHZlcnNpb24gb2Yg
aGFyZmJ1enoKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xs
ZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rl
c3RDb250cm9sbGVyQ29jb2EubW0JKHJldmlzaW9uIDE5MDY0NCkKKysrIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTIwLDEwICsxMjAsOCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjb2NvYVJlc2V0U3RhdGVUb0Nv
CiAgICAgcGxhdGZvcm1SdW5VbnRpbChkb25lUmVtb3ZpbmcsIDApOwogICAgIFtbX1dLVXNlckNv
bnRlbnRFeHRlbnNpb25TdG9yZSBkZWZhdWx0U3RvcmVdIF9yZW1vdmVBbGxDb250ZW50RXh0ZW5z
aW9uc107CiAKLSAgICBpZiAoUGxhdGZvcm1XZWJWaWV3KiB3ZWJWaWV3ID0gbWFpbldlYlZpZXco
KSkgeworICAgIGlmIChQbGF0Zm9ybVdlYlZpZXcqIHdlYlZpZXcgPSBtYWluV2ViVmlldygpKQog
ICAgICAgICBbd2ViVmlldy0+cGxhdGZvcm1WaWV3KCkuY29uZmlndXJhdGlvbi51c2VyQ29udGVu
dENvbnRyb2xsZXIgX3JlbW92ZUFsbFVzZXJDb250ZW50RmlsdGVyc107Ci0gICAgICAgIHdlYlZp
ZXctPnBsYXRmb3JtVmlldygpLl91c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkID0gdHJ1ZTsK
LSAgICB9CiAjZW5kaWYKIH0KIApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVz
dENvbnRyb2xsZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9t
YWMvVGVzdENvbnRyb2xsZXJNYWMubW0JKHJldmlzaW9uIDE5MDY0NCkKKysrIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjMsMTEgKzEyMyw2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ29uZmlndXJlVmkK
ICAgICAgICAgZG9uZUNvbXBpbGluZyA9IHRydWU7CiAgICAgfV07CiAgICAgcGxhdGZvcm1SdW5V
bnRpbChkb25lQ29tcGlsaW5nLCAwKTsKLQotICAgIC8vIFRoaXMgaXMgZm9yIGh0dHAvdGVzdHMv
Y29udGVudGV4dGVuc2lvbnMvZGlzYWJsZS1ibG9ja2VyLmh0bWwKLSAgICBpZiAoIXRlc3QudXJs
Q29udGFpbnMoImRpc2FibGUtYmxvY2tlciIpKQotICAgICAgICByZXR1cm47Ci0gICAgbWFpbldl
YlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkuX3VzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQgPSBm
YWxzZTsKICNlbmRpZgogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTA2NDQpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxNS0xMC0x
MiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IEFkZCBTUEkgZm9yIHJlbG9hZGluZyB3aXRob3V0IGNvbnRlbnQgYmxvY2tlcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDA1OAorICAgICAgICBy
ZGFyOi8vcHJvYmxlbS8yMjc0MjIyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9kaXNhYmxlLWJs
b2NrZXItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY29udGVu
dGV4dGVuc2lvbnMvZGlzYWJsZS1ibG9ja2VyLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9kaXNhYmxlLWJsb2NrZXIuaHRtbC5qc29uOiBSZW1v
dmVkLgorICAgICAgICBfdXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCBpcyBnb2luZyB0byBi
ZSByZW1vdmVkLCBhbmQgaXRzIGZ1bmN0aW9uYWxpdHkgaXMgd2hhdCB0aGlzIHRlc3QgdGVzdGVk
LgorCiAyMDE1LTEwLTA2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIE1hcmsgY29tcG9zaXRpbmcvZ2VvbWV0cnkvbGltaXQtbGF5ZXItYm91bmRzLW9w
YWNpdHktdHJhbnNpdGlvbi5odG1sIGFzIGZhaWxpbmcKSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvY29udGVudGV4dGVuc2lvbnMvZGlzYWJsZS1ibG9ja2VyLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL2Rpc2Fi
bGUtYmxvY2tlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE5MDY0NCkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvZGlzYWJsZS1ibG9ja2VyLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAx
Mjogc3RhdHVzOiAwLCByZWFkeVN0YXRlOjEsIHJlc3BvbnNlVGV4dDogCi1DT05TT0xFIE1FU1NB
R0U6IGxpbmUgMTI6IHN0YXR1czogMjAwLCByZWFkeVN0YXRlOjIsIHJlc3BvbnNlVGV4dDogCi1D
T05TT0xFIE1FU1NBR0U6IGxpbmUgMTI6IHN0YXR1czogMjAwLCByZWFkeVN0YXRlOjMsIHJlc3Bv
bnNlVGV4dDogCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMTI6IHN0YXR1czogMjAwLCByZWFkeVN0
YXRlOjQsIHJlc3BvbnNlVGV4dDogVGhpcyBwYWdlIHNob3VsZCBsb2FkLgotPHNjcmlwdD4KLSAg
ICBjb25zb2xlLmxvZygiVGhpcyBwYWdlIHNob3VsZCBsb2FkLiIpOwotPC9zY3JpcHQ+Ci0KLVRo
aXMgcGFnZSBzaG91bGQgbG9hZCBzdWNjZXNzZnVsbHkuIFRoZSBjb250ZW50IGJsb2NrZXIgaXMg
ZGlzYWJsZWQgaW4gV2ViS2l0VGVzdFJ1bm5lciBiZWZvcmUgbG9hZGluZyB0aGUgcGFnZS4KSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvZGlzYWJsZS1ibG9j
a2VyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0
ZW5zaW9ucy9kaXNhYmxlLWJsb2NrZXIuaHRtbAkocmV2aXNpb24gMTkwNjQ0KQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9kaXNhYmxlLWJsb2NrZXIuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMSwyNSArMCwwIEBACi08aGVhZD4KLTxzY3JpcHQ+Ci1pZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLX0KLQotZnVuY3Rpb24gc2VuZFJlcXVlc3QoKQotewot
ICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAgICB4aHIub25yZWFkeXN0YXRl
Y2hhbmdlID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGNvbnNvbGUubG9nKCJzdGF0dXM6ICIgKyB4
aHIuc3RhdHVzICsgIiwgcmVhZHlTdGF0ZToiICsgeGhyLnJlYWR5U3RhdGUgKyAiLCByZXNwb25z
ZVRleHQ6ICIgKyB4aHIucmVzcG9uc2VUZXh0KTsKLSAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRl
ID09IDQpIHsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICB9
Ci0gICAgfQotICAgIAotICAgIHhoci5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL3Nob3VsZC1sb2Fk
Lmh0bWwiLCB0cnVlKTsKLQl4aHIuc2VuZCgpOwotfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9k
eSBvbmxvYWQ9InNlbmRSZXF1ZXN0KCkiPgotVGhpcyBwYWdlIHNob3VsZCBsb2FkIHN1Y2Nlc3Nm
dWxseS4gIFRoZSBjb250ZW50IGJsb2NrZXIgaXMgZGlzYWJsZWQgaW4gV2ViS2l0VGVzdFJ1bm5l
ciBiZWZvcmUgbG9hZGluZyB0aGUgcGFnZS4KLTwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvZGlzYWJsZS1ibG9ja2VyLmh0bWwuanNvbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL2Rpc2Fi
bGUtYmxvY2tlci5odG1sLmpzb24JKHJldmlzaW9uIDE5MDY0NCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvZGlzYWJsZS1ibG9ja2VyLmh0bWwuanNvbgkod29y
a2luZyBjb3B5KQpAQCAtMSwxMCArMCwwIEBACi1bCi0gICAgewotICAgICAgICAiYWN0aW9uIjog
ewotICAgICAgICAgICAgInR5cGUiOiAiYmxvY2siCi0gICAgICAgIH0sCi0gICAgICAgICJ0cmln
Z2VyIjogewotICAgICAgICAgICAgInVybC1maWx0ZXIiOiAiLioiCi0gICAgICAgIH0KLSAgICB9
Ci1dCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263032</attachid>
            <date>2015-10-13 16:02:54 -0700</date>
            <delta_ts>2015-10-14 11:39:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150058-20151013160217.patch</filename>
            <type>text/plain</type>
            <size>29496</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MTAxMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE1LTEwLTEzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBm
b3IgcmVsb2FkaW5nIHdpdGhvdXQgY29udGVudCBibG9ja2VycworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMDU4CisgICAgICAgIHJkYXI6Ly9wcm9i
bGVtLzIyNzQyMjIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OnJlbG9hZFdpdGhPdmVycmlkZUVuY29kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpyZWxvYWQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAg
ICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXNlckNvbnRlbnRD
b250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVzZXJDb250ZW50RXh0ZW5zaW9u
c0VuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0VXNlckNvbnRl
bnRFeHRlbnNpb25zRW5hYmxlZCk6IERlbGV0ZWQuCisgICAgICAgICogcmVwbGF5L1VzZXJJbnB1
dEJyaWRnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVc2VySW5wdXRCcmlkZ2U6OmxvYWRSZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJJbnB1dEJyaWRnZTo6cmVsb2FkRnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6VXNlcklucHV0QnJpZGdlOjpzdG9wTG9hZGluZ0ZyYW1lKToKKyAg
ICAgICAgKiByZXBsYXkvVXNlcklucHV0QnJpZGdlLmg6CisgICAgICAgIFBhc3MgYSBib29sIGZy
b20gdGhlIHJlbG9hZFdpdGhvdXRDb250ZW50QmxvY2tlcnMgY2FsbCB0byB0aGUgRG9jdW1lbnRM
b2FkZXIsIAorICAgICAgICB3aGljaCBzdG9yZXMgdGhlIHN0YXRlIG9mIHdoZXRoZXIgdGhlIGNv
bnRlbnQgYmxvY2tlcnMgYXJlIGVuYWJsZWQgb3Igbm90LgorICAgICAgICBSZW1vdmUgdGhlIHN0
YXRlIGZyb20gdGhlIFBhZ2UgYW5kIGNvcHlpbmcgdGhlIHN0YXRlIGZyb20gdGhlIFBhZ2UgdG8g
dGhlIERvY3VtZW50TG9hZGVyCisgICAgICAgIGJlY2F1c2UgdGhhdCBjYXVzZWQgaXNzdWVzIHdp
dGggdGhlIGNvbnRlbnQgYmxvY2tlcnMgYmVpbmcgcmUtZW5hYmxlZCBhdCB0aGUgd3JvbmcgdGlt
ZS4KKwogMjAxNS0xMC0xMyAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIEFub255bW91cyB0YWJsZSBvYmplY3RzOiBpbmxpbmUgcGFyZW50IGJveCByZXF1aXJlcyBp
bmxpbmUtdGFibGUgY2hpbGQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAJKHJldmlzaW9uIDE5MTAxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NjQsNyArMTU2NCw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OnJlbG9hZFdpdGhPdmVycmlkZUVuY28KICAgICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKGxv
YWRlci5wdHIoKSwgRnJhbWVMb2FkVHlwZTo6UmVsb2FkLCAwLCBBbGxvd05hdmlnYXRpb25Ub0lu
dmFsaWRVUkw6Olllcyk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZChib29sIGVuZFRv
RW5kUmVsb2FkKQordm9pZCBGcmFtZUxvYWRlcjo6cmVsb2FkKGJvb2wgZW5kVG9FbmRSZWxvYWQs
IGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCkKIHsKICAgICBpZiAoIW1fZG9jdW1lbnRMb2Fk
ZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTE1ODUsNiArMTU4NSw4IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OnJlbG9hZChib29sIGVuZFRvRW5kUmUKICAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IGxvYWRl
ciA9IG1fY2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKGluaXRpYWxSZXF1ZXN0LCBkZWZhdWx0
U3Vic3RpdHV0ZURhdGFGb3JVUkwoaW5pdGlhbFJlcXVlc3QudXJsKCkpKTsKICAgICBhcHBseVNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKGxvYWRlciwgbV9k
b2N1bWVudExvYWRlci0+c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCkp
OwogCisgICAgbG9hZGVyLT5zZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKGNvbnRlbnRC
bG9ja2Vyc0VuYWJsZWQpOworICAgIAogICAgIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCA9IGxv
YWRlci0+cmVxdWVzdCgpOwogCiAgICAgLy8gRklYTUU6IFdlIGRvbid0IGhhdmUgYSBtZWNoYW5p
c20gdG8gcmV2YWxpZGF0ZSB0aGUgbWFpbiByZXNvdXJjZSB3aXRob3V0IHJlbG9hZGluZyBhdCB0
aGUgbW9tZW50LgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHJldmlzaW9u
IDE5MTAxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjMsNyArMTIzLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgdXJsU2VsZWN0ZWQoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50Kiwg
TG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3QsIFNob3VsZFNlbmRSZWZlcnJlciwgU2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiAgICAgdm9pZCBzdWJtaXRGb3JtKFBhc3NSZWZQ
dHI8Rm9ybVN1Ym1pc3Npb24+KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVsb2FkKGJv
b2wgZW5kVG9FbmRSZWxvYWQgPSBmYWxzZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWxv
YWQoYm9vbCBlbmRUb0VuZFJlbG9hZCA9IGZhbHNlLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJs
ZWQgPSB0cnVlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbG9hZFdpdGhPdmVycmlkZUVu
Y29kaW5nKGNvbnN0IFN0cmluZyYgb3ZlcnJpZGVFbmNvZGluZyk7CiAKICAgICB2b2lkIG9wZW4o
Q2FjaGVkRnJhbWVCYXNlJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gMTkxMDExKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyOCw5ICs0
MjgsNiBAQCBwdWJsaWM6CiAgICAgVXNlckNvbnRlbnRDb250cm9sbGVyKiB1c2VyQ29udGVudENv
bnRyb2xsZXIoKSB7IHJldHVybiBtX3VzZXJDb250ZW50Q29udHJvbGxlci5nZXQoKTsgfQogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VXNlckNvbnRlbnRDb250cm9sbGVyKFVzZXJDb250ZW50
Q29udHJvbGxlciopOwogCi0gICAgYm9vbCB1c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV91c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkOyB9Ci0gICAgdm9p
ZCBzZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3VzZXJD
b250ZW50RXh0ZW5zaW9uc0VuYWJsZWQgPSBlbmFibGVkOyB9Ci0KICAgICBWaXNpdGVkTGlua1N0
b3JlJiB2aXNpdGVkTGlua1N0b3JlKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaXNp
dGVkTGlua1N0b3JlKFJlZjxWaXNpdGVkTGlua1N0b3JlPiYmKTsKIApAQCAtNjM2LDcgKzYzMyw2
IEBAIHByaXZhdGU6CiAKICAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgbV9tZWRp
YVN0YXRlIHsgTWVkaWFQcm9kdWNlcjo6SXNOb3RQbGF5aW5nIH07CiAgICAgCi0gICAgYm9vbCBt
X3VzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX2FsbG93
c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjayB7IGZhbHNlIH07CiB9OwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmNwcAkocmV2aXNpb24gMTkxMDExKQor
KysgU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI0Miw5ICsyNDIsOSBAQCB2b2lkIFVzZXJJbnB1dEJyaWRnZTo6bG9hZFJlcXVlc3Qo
Y29uc3QgCiAgICAgbV9wYWdlLm1haW5GcmFtZSgpLmxvYWRlcigpLmxvYWQocmVxdWVzdCk7CiB9
CiAKLXZvaWQgVXNlcklucHV0QnJpZGdlOjpyZWxvYWRGcmFtZShGcmFtZSogZnJhbWUsIGJvb2wg
ZW5kVG9FbmRSZWxvYWQsIElucHV0U291cmNlKQordm9pZCBVc2VySW5wdXRCcmlkZ2U6OnJlbG9h
ZEZyYW1lKEZyYW1lKiBmcmFtZSwgYm9vbCBlbmRUb0VuZFJlbG9hZCwgYm9vbCBjb250ZW50Qmxv
Y2tlcnNFbmFibGVkLCBJbnB1dFNvdXJjZSkKIHsKLSAgICBmcmFtZS0+bG9hZGVyKCkucmVsb2Fk
KGVuZFRvRW5kUmVsb2FkKTsKKyAgICBmcmFtZS0+bG9hZGVyKCkucmVsb2FkKGVuZFRvRW5kUmVs
b2FkLCBjb250ZW50QmxvY2tlcnNFbmFibGVkKTsKIH0KIAogdm9pZCBVc2VySW5wdXRCcmlkZ2U6
OnN0b3BMb2FkaW5nRnJhbWUoRnJhbWUqIGZyYW1lLCBJbnB1dFNvdXJjZSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmgJKHJldmlzaW9uIDE5MTAxMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuaAkod29ya2luZyBjb3B5KQpAQCAt
ODksNyArODksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBOYXZpZ2F0aW9uIEFQSXMuCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBsb2FkUmVxdWVzdChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgSW5w
dXRTb3VyY2Ugc291cmNlID0gSW5wdXRTb3VyY2U6OlVzZXIpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVsb2FkRnJhbWUoRnJhbWUqLCBib29sIGVuZFRvRW5kUmVsb2FkLCBJbnB1dFNvdXJj
ZSBzb3VyY2UgPSBJbnB1dFNvdXJjZTo6VXNlcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZWxvYWRGcmFtZShGcmFtZSosIGJvb2wgZW5kVG9FbmRSZWxvYWQsIGJvb2wgY29udGVudEJsb2Nr
ZXJzRW5hYmxlZCwgSW5wdXRTb3VyY2UgPSBJbnB1dFNvdXJjZTo6VXNlcik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzdG9wTG9hZGluZ0ZyYW1lKEZyYW1lKiwgSW5wdXRTb3VyY2Ugc291cmNl
ID0gSW5wdXRTb3VyY2U6OlVzZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgdHJ5Q2xvc2VQ
YWdlKElucHV0U291cmNlIHNvdXJjZSA9IElucHV0U291cmNlOjpVc2VyKTsKIApJbmRleDogU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTkxMDExKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTUtMTAtMTMgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJIGZvciByZWxvYWRp
bmcgd2l0aG91dCBjb250ZW50IGJsb2NrZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTAwNTgKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjI3NDIy
MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNo
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
OgorICAgICAgICAoV0tQYWdlUmVsb2FkKToKKyAgICAgICAgKFdLUGFnZVJlbG9hZFdpdGhvdXRD
b250ZW50QmxvY2tlcnMpOgorICAgICAgICAoV0tQYWdlUmVsb2FkRnJvbU9yaWdpbik6CisgICAg
ICAgIChXS1BhZ2VUcnlDbG9zZSk6CisgICAgICAgIChXS1BhZ2VTZXRVc2VyQ29udGVudEV4dGVu
c2lvbnNFbmFibGVkKToKKyAgICAgICAgKFdLUGFnZVN1cHBvcnRzVGV4dEVuY29kaW5nKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlciByZWxvYWRdKToKKyAgICAgICAgKC1bV0tCcm93c2luZ0Nv
bnRleHRDb250cm9sbGVyIHJlbG9hZEZyb21PcmlnaW5dKToKKyAgICAgICAgKC1bV0tCcm93c2lu
Z0NvbnRleHRDb250cm9sbGVyIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudF0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgcmVsb2FkXSk6CisgICAgICAgICgtW1dLV2ViVmlldyByZWxvYWRGcm9tT3JpZ2luXSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfc2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZDpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF91c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkXSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9raWxsV2ViQ29udGVudFByb2Nlc3NdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9yZWxvYWRXaXRob3V0Q29udGVudEJsb2NrZXJzXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBf
a2lsbFdlYkNvbnRlbnRQcm9jZXNzQW5kUmVzZXRTdGF0ZV0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3JlbG9hZCk6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcmVsb2FkX2J5cGFzc19jYWNoZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZVByb3h5OjpkaWRIYW5kbGVDb250ZW50RmlsdGVyVW5ibG9ja05hdmlnYXRpb24pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWxv
YWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0U2hvdWxkU2NhbGVWaWV3VG9GaXRE
b2N1bWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0VXNlckNvbnRlbnRF
eHRlbnNpb25zRW5hYmxlZCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVzZXJDb250ZW50RXh0ZW5z
aW9uc0VuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9zaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVF
dmVudHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXREZWZlcnNMb2FkaW5nKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVsb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6Z29Gb3J3YXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlRG9jdW1lbnRM
b2FkZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRTaG91bGRTY2FsZVZpZXdUb0Zp
dERvY3VtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW1hZ2VPck1lZGlhRG9jdW1l
bnRTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldFVzZXJDb250ZW50
RXh0ZW5zaW9uc0VuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW46CisKIDIwMTUtMTAtMTMgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNv
bT4KIAogICAgICAgICBGaXggMzItYml0IGJ1aWxkLgpJbmRleDogU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMTkx
MDExKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw2IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVyczo6ZW5jb2RlKEkKICNlbmRpZgogICAgIGVuY29kZXIgPDwgYXBwbGVNYWlsUGFn
aW5hdGlvblF1aXJrRW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IHNob3VsZFNjYWxlVmlld1RvRml0
RG9jdW1lbnQ7Ci0gICAgZW5jb2RlciA8PCB1c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkOwog
fQogCiBib29sIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkFyZ3VtZW50
RGVjb2RlciYgZGVjb2RlciwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykK
QEAgLTE4OSw5ICsxODgsNiBAQCBib29sIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29k
ZShJCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZFNjYWxlVmlld1Rv
Rml0RG9jdW1lbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMudXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9u
IDE5MTAxMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw3ICsxMzAsNiBAQCBzdHJ1Y3QgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyB7CiAjZW5kaWYKICAgICBib29sIGFwcGxlTWFpbFBhZ2luYXRpb25R
dWlya0VuYWJsZWQ7CiAgICAgYm9vbCBzaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50OwotICAg
IGJvb2wgdXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNw
cAkocmV2aXNpb24gMTkxMDExKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1l
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDgsNyArMjQ4LDcgQEAgYm9vbCBXZWJGcmFt
ZVByb3h5OjpkaWRIYW5kbGVDb250ZW50RmlsdAogICAgIEFTU0VSVChwYWdlKTsKICAgICBtX2Nv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5yZXF1ZXN0VW5ibG9ja0FzeW5jKFtwYWdlXShib29s
IHVuYmxvY2tlZCkgewogICAgICAgICBpZiAodW5ibG9ja2VkKQotICAgICAgICAgICAgcGFnZS0+
cmVsb2FkKGZhbHNlKTsKKyAgICAgICAgICAgIHBhZ2UtPnJlbG9hZChmYWxzZSwgdHJ1ZSk7CiAg
ICAgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMTkxMDExKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNDgsNyArMTA0
OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdG9wTG9hZGluZygpCiAgICAgbV9wcm9jZXNzLT5y
ZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0YXJ0KCk7CiB9CiAKLVJlZlB0cjxBUEk6Ok5hdmlnYXRp
b24+IFdlYlBhZ2VQcm94eTo6cmVsb2FkKGJvb2wgcmVsb2FkRnJvbU9yaWdpbikKK1JlZlB0cjxB
UEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6cmVsb2FkKGJvb2wgcmVsb2FkRnJvbU9yaWdp
biwgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkKQogewogICAgIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogCkBAIC0xMDY4LDcgKzEwNjgsNyBAQCBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlCiAgICAgCiAgICAgYXV0byBu
YXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZVJlbG9hZE5hdmlnYXRpb24oKTsK
IAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVsb2FkKG5hdmlnYXRp
b24tPm5hdmlnYXRpb25JRCgpLCByZWxvYWRGcm9tT3JpZ2luLCBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
UmVsb2FkKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCByZWxvYWRGcm9tT3JpZ2luLCBjb250
ZW50QmxvY2tlcnNFbmFibGVkLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgbV9wYWdlSUQpOwog
ICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLT5zdGFydCgpOwogCiAgICAgcmV0
dXJuIFdURjo6bW92ZShuYXZpZ2F0aW9uKTsKQEAgLTUxNjcsNyArNTE2Nyw2IEBAIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjoKICAgICBwYXJhbWV0ZXJzLmFwcGxlTWFp
bFBhZ2luYXRpb25RdWlya0VuYWJsZWQgPSBmYWxzZTsKICNlbmRpZgogICAgIHBhcmFtZXRlcnMu
c2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudCA9IG1fc2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1
bWVudDsKLSAgICBwYXJhbWV0ZXJzLnVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQgPSBtX3Vz
ZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQ7CiAKICAgICByZXR1cm4gcGFyYW1ldGVyczsKIH0K
QEAgLTYxMDMsMTcgKzYxMDIsNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2hvdWxkU2NhbGVW
aWV3VG9GCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTaG91bGRT
Y2FsZVZpZXdUb0ZpdERvY3VtZW50KHNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQpLCBtX3Bh
Z2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VyQ29udGVudEV4dGVuc2lvbnNF
bmFibGVkKGJvb2wgdXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCkKLXsKLSAgICBpZiAobV91
c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkID09IHVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJs
ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fdXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxl
ZCA9IHVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQ7Ci0KLSAgICBpZiAoIWlzVmFsaWQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKHVzZXJDb250ZW50RXh0ZW5zaW9uc0Vu
YWJsZWQpLCBtX3BhZ2VJRCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMTkxMDExKQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNjIsNyArMzYyLDcgQEAgcHVibGljOgogICAgIHZvaWQgbmF2aWdhdGVUb1BERkxpbmtXaXRo
U2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmwsIFdlYkNvcmU6OkludFBvaW50IGRvY3Vt
ZW50UG9pbnQsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblBvaW50KTsKIAogICAgIHZvaWQgc3Rv
cExvYWRpbmcoKTsKLSAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiByZWxvYWQoYm9vbCByZWxv
YWRGcm9tT3JpZ2luKTsKKyAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiByZWxvYWQoYm9vbCBy
ZWxvYWRGcm9tT3JpZ2luLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOwogCiAgICAgUmVm
UHRyPEFQSTo6TmF2aWdhdGlvbj4gZ29Gb3J3YXJkKCk7CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdh
dGlvbj4gZ29CYWNrKCk7CkBAIC02NTAsOSArNjUwLDYgQEAgcHVibGljOgogICAgIHZvaWQgc2Nh
bGVWaWV3KGRvdWJsZSBzY2FsZSk7CiAgICAgdm9pZCBzZXRTaG91bGRTY2FsZVZpZXdUb0ZpdERv
Y3VtZW50KGJvb2wpOwogICAgIAotICAgIGJvb2wgdXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxl
ZCgpIHsgcmV0dXJuIG1fdXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZDsgfQotICAgIHZvaWQg
c2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZChib29sKTsKLQogICAgIGZsb2F0IGRldmlj
ZVNjYWxlRmFjdG9yKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRJbnRyaW5zaWNEZXZpY2VTY2FsZUZh
Y3RvcihmbG9hdCk7CiAgICAgdm9pZCBzZXRDdXN0b21EZXZpY2VTY2FsZUZhY3RvcihmbG9hdCk7
CkBAIC0xNzcwLDggKzE3NjcsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9yZXF1aXJlc1Rhcmdl
dE1vbml0b3JpbmcgeyBmYWxzZSB9OwogI2VuZGlmCiAKLSAgICBib29sIG1fdXNlckNvbnRlbnRF
eHRlbnNpb25zRW5hYmxlZCB7IHRydWUgfTsKLQogI2lmIFBMQVRGT1JNKElPUykKICAgICBib29s
IG1faGFzRGVmZXJyZWRTdGFydEFzc2lzdGluZ05vZGUgeyBmYWxzZSB9OwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxOb2RlQXNzaXN0YW5jZUFyZ3VtZW50cz4gbV9kZWZlcnJlZE5vZGVBc3Npc3RhbmNl
QXJndW1lbnRzOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHAJKHJldmlzaW9uIDE5MTAxMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsMTIgKzIyOCwxNyBAQCB2b2lkIFdLUGFn
ZVN0b3BMb2FkaW5nKFdLUGFnZVJlZiBwYWdlUmVmCiAKIHZvaWQgV0tQYWdlUmVsb2FkKFdLUGFn
ZVJlZiBwYWdlUmVmKQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+cmVsb2FkKGZhbHNlKTsKKyAg
ICB0b0ltcGwocGFnZVJlZiktPnJlbG9hZChmYWxzZSwgdHJ1ZSk7Cit9CisKK3ZvaWQgV0tQYWdl
UmVsb2FkV2l0aG91dENvbnRlbnRCbG9ja2VycyhXS1BhZ2VSZWYgcGFnZVJlZikKK3sKKyAgICB0
b0ltcGwocGFnZVJlZiktPnJlbG9hZChmYWxzZSwgZmFsc2UpOwogfQogCiB2b2lkIFdLUGFnZVJl
bG9hZEZyb21PcmlnaW4oV0tQYWdlUmVmIHBhZ2VSZWYpCiB7Ci0gICAgdG9JbXBsKHBhZ2VSZWYp
LT5yZWxvYWQodHJ1ZSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5yZWxvYWQodHJ1ZSwgdHJ1ZSk7
CiB9CiAKIGJvb2wgV0tQYWdlVHJ5Q2xvc2UoV0tQYWdlUmVmIHBhZ2VSZWYpCkBAIC0zNjMsNyAr
MzY4LDcgQEAgdm9pZCBXS1BhZ2VTZXRDdXN0b21Vc2VyQWdlbnQoV0tQYWdlUmVmIAogCiB2b2lk
IFdLUGFnZVNldFVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQoV0tQYWdlUmVmIHBhZ2VSZWYs
IGJvb2wgZW5hYmxlZCkKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPnNldFVzZXJDb250ZW50RXh0
ZW5zaW9uc0VuYWJsZWQoZW5hYmxlZCk7CisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGZ1bmN0
aW9uIG9uY2UgaXQgaXMgbm8gbG9uZ2VyIHVzZWQuCiB9CiAKIGJvb2wgV0tQYWdlU3VwcG9ydHNU
ZXh0RW5jb2RpbmcoV0tQYWdlUmVmIHBhZ2VSZWYpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5oCShyZXZpc2lvbiAxOTEwMTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDcgQEAg
V0tfRVhQT1JUIHZvaWQgV0tQYWdlTG9hZFdlYkFyY2hpdmVEYXRhVwogCiBXS19FWFBPUlQgdm9p
ZCBXS1BhZ2VTdG9wTG9hZGluZyhXS1BhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQgdm9pZCBXS1Bh
Z2VSZWxvYWQoV0tQYWdlUmVmIHBhZ2UpOworV0tfRVhQT1JUIHZvaWQgV0tQYWdlUmVsb2FkV2l0
aG91dENvbnRlbnRCbG9ja2VycyhXS1BhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQgdm9pZCBXS1Bh
Z2VSZWxvYWRGcm9tT3JpZ2luKFdLUGFnZVJlZiBwYWdlKTsKIAogV0tfRVhQT1JUIGJvb2wgV0tQ
YWdlVHJ5Q2xvc2UoV0tQYWdlUmVmIHBhZ2UpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIubW0JKHJldmlzaW9uIDE5MTAxMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xODcsMTIgKzE4NywxMiBAQCAtICh2b2lkKXN0b3BMb2FkaW5nCiAKIC0gKHZvaWQpcmVs
b2FkCiB7Ci0gICAgX3BhZ2UtPnJlbG9hZChmYWxzZSk7CisgICAgX3BhZ2UtPnJlbG9hZChmYWxz
ZSwgdHJ1ZSk7CiB9CiAKIC0gKHZvaWQpcmVsb2FkRnJvbU9yaWdpbgogewotICAgIF9wYWdlLT5y
ZWxvYWQodHJ1ZSk7CisgICAgX3BhZ2UtPnJlbG9hZCh0cnVlLCB0cnVlKTsKIH0KIAogLSAoTlNT
dHJpbmcgKilhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAxOTEwMTEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29y
a2luZyBjb3B5KQpAQCAtNTYzLDcgKzU2Myw3IEBAIC0gKFdLTmF2aWdhdGlvbiAqKWdvRm9yd2Fy
ZAogCiAtIChXS05hdmlnYXRpb24gKilyZWxvYWQKIHsKLSAgICBhdXRvIG5hdmlnYXRpb24gPSBf
cGFnZS0+cmVsb2FkKGZhbHNlKTsKKyAgICBhdXRvIG5hdmlnYXRpb24gPSBfcGFnZS0+cmVsb2Fk
KGZhbHNlLCB0cnVlKTsKICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7
CiAKQEAgLTU3Miw3ICs1NzIsNyBAQCAtIChXS05hdmlnYXRpb24gKilyZWxvYWQKIAogLSAoV0tO
YXZpZ2F0aW9uICopcmVsb2FkRnJvbU9yaWdpbgogewotICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9w
YWdlLT5yZWxvYWQodHJ1ZSk7CisgICAgYXV0byBuYXZpZ2F0aW9uID0gX3BhZ2UtPnJlbG9hZCh0
cnVlLCB0cnVlKTsKICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAK
QEAgLTIwMjYsMTIgKzIwMjYsMTMgQEAgLSAodm9pZClfc2V0Q3VzdG9tVXNlckFnZW50OihOU1N0
cmluZyAqKQogCiAtICh2b2lkKV9zZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkOihCT09M
KXVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQKIHsKLSAgICBfcGFnZS0+c2V0VXNlckNvbnRl
bnRFeHRlbnNpb25zRW5hYmxlZCh1c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKTsKKyAgICAv
LyBUaGlzIGlzIGtlcHQgZm9yIGJpbmFyeSBjb21wYXRpYmlsaXR5IHdpdGggaU9TIDkuCiB9CiAK
IC0gKEJPT0wpX3VzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQKIHsKLSAgICByZXR1cm4gX3Bh
Z2UtPnVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQoKTsKKyAgICAvLyBUaGlzIGlzIGtlcHQg
Zm9yIGJpbmFyeSBjb21wYXRpYmlsaXR5IHdpdGggaU9TIDkuCisgICAgcmV0dXJuIHRydWU7CiB9
CiAKIC0gKHBpZF90KV93ZWJQcm9jZXNzSWRlbnRpZmllcgpAQCAtMjA0Nyw2ICsyMDQ4LDE1IEBA
IC0gKHZvaWQpX2tpbGxXZWJDb250ZW50UHJvY2VzcwogICAgIF9wYWdlLT5wcm9jZXNzKCkudGVy
bWluYXRlKCk7CiB9CiAKKy0gKFdLTmF2aWdhdGlvbiAqKV9yZWxvYWRXaXRob3V0Q29udGVudEJs
b2NrZXJzCit7CisgICAgYXV0byBuYXZpZ2F0aW9uID0gX3BhZ2UtPnJlbG9hZChmYWxzZSwgZmFs
c2UpOworICAgIGlmICghbmF2aWdhdGlvbikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAg
ICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ucmVsZWFzZSgpLmxlYWtSZWYoKSkgYXV0b3Jl
bGVhc2VdOworfQorCiAtICh2b2lkKV9raWxsV2ViQ29udGVudFByb2Nlc3NBbmRSZXNldFN0YXRl
CiB7CiAgICAgX3BhZ2UtPnRlcm1pbmF0ZVByb2Nlc3MoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCShyZXZp
c2lvbiAxOTEwMTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTg3LDYgKzE4Nyw4IEBAIHR5cGVkZWYg
TlNfRU5VTShOU0ludGVnZXIsIF9XS0ltbWVkaWF0ZUEKIC0gKGlkKV9pbW1lZGlhdGVBY3Rpb25B
bmltYXRpb25Db250cm9sbGVyRm9ySGl0VGVzdFJlc3VsdDooX1dLSGl0VGVzdFJlc3VsdCAqKWhp
dFRlc3RSZXN1bHQgd2l0aFR5cGU6KF9XS0ltbWVkaWF0ZUFjdGlvblR5cGUpdHlwZSB1c2VyRGF0
YTooaWQ8TlNTZWN1cmVDb2Rpbmc+KXVzZXJEYXRhOwogI2VuZGlmCiAKKy0gKFdLTmF2aWdhdGlv
biAqKV9yZWxvYWRXaXRob3V0Q29udGVudEJsb2NrZXJzIFdLX0FWQUlMQUJMRShXS19NQUNfVEJB
LCBXS19JT1NfVEJBKTsKKwogLSAodm9pZClfa2lsbFdlYkNvbnRlbnRQcm9jZXNzQW5kUmVzZXRT
dGF0ZTsKIAogLSAodm9pZClfZ2V0TWFpblJlc291cmNlRGF0YVdpdGhDb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoTlNEYXRhICosIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXI7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
LmNwcAkocmV2aXNpb24gMTkxMDExKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NzQsNyArMjQ3NCw3IEBA
IHZvaWQgd2Via2l0X3dlYl92aWV3X3JlbG9hZChXZWJLaXRXZWJWaWUKIHsKICAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CiAKLSAgICBnZXRQYWdlKHdl
YlZpZXcpLT5yZWxvYWQoZmFsc2UpOworICAgIGdldFBhZ2Uod2ViVmlldyktPnJlbG9hZChmYWxz
ZSwgdHJ1ZSk7CiB9CiAKIC8qKgpAQCAtMjQ4OCw3ICsyNDg4LDcgQEAgdm9pZCB3ZWJraXRfd2Vi
X3ZpZXdfcmVsb2FkX2J5cGFzc19jYWNoZQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKIAotICAgIGdldFBhZ2Uod2ViVmlldyktPnJlbG9hZCh0
cnVlKTsKKyAgICBnZXRQYWdlKHdlYlZpZXcpLT5yZWxvYWQodHJ1ZSwgdHJ1ZSk7CiB9CiAKIC8q
KgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAkocmV2aXNpb24gMTkxMDExKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjAsOCArNTIwLDYgQEAgV2ViUGFnZTo6
V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IAogICAgIGlmIChwYXJhbWV0ZXJzLnZpZXdT
Y2FsZUZhY3RvciAhPSAxKQogICAgICAgICBzY2FsZVZpZXcocGFyYW1ldGVycy52aWV3U2NhbGVG
YWN0b3IpOwogCi0gICAgbV9wYWdlLT5zZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKHBh
cmFtZXRlcnMudXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCk7Ci0KICNpZiBQTEFURk9STShJ
T1MpCiAgICAgbV9wYWdlLT5zZXR0aW5ncygpLnNldENvbnRlbnREaXNwb3NpdGlvbkF0dGFjaG1l
bnRTYW5kYm94RW5hYmxlZCh0cnVlKTsKICNlbmRpZgpAQCAtMTE2NCw3ICsxMTYyLDcgQEAgdm9p
ZCBXZWJQYWdlOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVmZQogICAgIG1fcGFnZS0+c2V0RGVm
ZXJzTG9hZGluZyhkZWZlcnNMb2FkaW5nKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpyZWxvYWQodWlu
dDY0X3QgbmF2aWdhdGlvbklELCBib29sIHJlbG9hZEZyb21PcmlnaW4sIGNvbnN0IFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKK3ZvaWQgV2ViUGFnZTo6
cmVsb2FkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgYm9vbCByZWxvYWRGcm9tT3JpZ2luLCBib29s
IGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKIHsKICAgICBTZW5kU3RvcFJlc3BvbnNpdmVuZXNzVGlt
ZXIgc3RvcHBlcih0aGlzKTsKIApAQCAtMTE3Miw3ICsxMTcwLDcgQEAgdm9pZCBXZWJQYWdlOjpy
ZWxvYWQodWludDY0X3QgbmF2aWdhdGlvbgogICAgIG1fcGVuZGluZ05hdmlnYXRpb25JRCA9IG5h
dmlnYXRpb25JRDsKIAogICAgIG1fc2FuZGJveEV4dGVuc2lvblRyYWNrZXIuYmVnaW5Mb2FkKG1f
bWFpbkZyYW1lLmdldCgpLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKLSAgICBjb3JlUGFnZSgp
LT51c2VySW5wdXRCcmlkZ2UoKS5yZWxvYWRGcmFtZShtX21haW5GcmFtZS0+Y29yZUZyYW1lKCks
IHJlbG9hZEZyb21PcmlnaW4pOworICAgIGNvcmVQYWdlKCktPnVzZXJJbnB1dEJyaWRnZSgpLnJl
bG9hZEZyYW1lKG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKSwgcmVsb2FkRnJvbU9yaWdpbiwgY29u
dGVudEJsb2NrZXJzRW5hYmxlZCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Z29Gb3J3YXJkKHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3QgYmFja0ZvcndhcmRJdGVtSUQpCkBAIC00OTAzLDgg
KzQ5MDEsNiBAQCBSZWY8RG9jdW1lbnRMb2FkZXI+IFdlYlBhZ2U6OmNyZWF0ZURvY3VtCiAgICAg
ICAgICAgICBkb2N1bWVudExvYWRlci0+c2V0TmF2aWdhdGlvbklEKG1fcGVuZGluZ05hdmlnYXRp
b25JRCk7CiAgICAgICAgICAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQgPSAwOwogICAgICAgICB9
Ci0gICAgICAgIGlmIChmcmFtZS5wYWdlKCkpCi0gICAgICAgICAgICBkb2N1bWVudExvYWRlci0+
c2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZChmcmFtZS5wYWdlKCktPnVzZXJDb250ZW50
RXh0ZW5zaW9uc0VuYWJsZWQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIFdURjo6bW92ZShkb2N1
bWVudExvYWRlcik7CkBAIC01MDA1LDE0ICs1MDAxLDYgQEAgdm9pZCBXZWJQYWdlOjpzZXRTaG91
bGRTY2FsZVZpZXdUb0ZpdERvYwogICAgIG1fZHJhd2luZ0FyZWEtPnNldFNob3VsZFNjYWxlVmll
d1RvRml0RG9jdW1lbnQoc2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudCk7CiB9CiAKLXZvaWQg
V2ViUGFnZTo6c2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZChib29sIHVzZXJDb250ZW50
RXh0ZW5zaW9uc0VuYWJsZWQpCi17Ci0gICAgaWYgKCFtX3BhZ2UpCi0gICAgICAgIHJldHVybjsK
LQotICAgIG1fcGFnZS0+c2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCh1c2VyQ29udGVu
dEV4dGVuc2lvbnNFbmFibGVkKTsKLX0KLQogdm9pZCBXZWJQYWdlOjppbWFnZU9yTWVkaWFEb2N1
bWVudFNpemVDaGFuZ2VkKGNvbnN0IEludFNpemUmIG5ld1NpemUpCiB7CiAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpJbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkKG5ld1Np
emUpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAkocmV2aXNpb24gMTkxMDExKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTgyLDcgKzk4Miw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBsb2FkUGxhaW5UZXh0U3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IFVzZXJEYXRh
Jik7CiAgICAgdm9pZCBsb2FkV2ViQXJjaGl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIG5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVs
YXRlZENsaWNrKGNvbnN0IFN0cmluZyYgdXJsLCBXZWJDb3JlOjpJbnRQb2ludCBkb2N1bWVudFBv
aW50LCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Qb2ludCk7Ci0gICAgdm9pZCByZWxvYWQodWlu
dDY0X3QgbmF2aWdhdGlvbklELCBib29sIHJlbG9hZEZyb21PcmlnaW4sIGNvbnN0IFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYpOworICAgIHZvaWQgcmVsb2FkKHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgYm9vbCByZWxvYWRGcm9tT3JpZ2luLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIGNv
bnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogICAgIHZvaWQgZ29Gb3J3YXJkKHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3QpOwogICAgIHZvaWQgZ29CYWNrKHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgdWludDY0X3QpOwogICAgIHZvaWQgZ29Ub0JhY2tGb3J3YXJkSXRlbSh1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQ2NF90KTsKQEAgLTExNjAsNyArMTE2MCw2IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBjbGVhcldoZWVsRXZlbnRUZXN0VHJpZ2dlcigpOwogCiAgICAgdm9pZCBz
ZXRTaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KGJvb2wpOwotICAgIHZvaWQgc2V0VXNlckNv
bnRlbnRFeHRlbnNpb25zRW5hYmxlZChib29sKTsKIAogICAgIHZvaWQgcGFnZVN0b3BwZWRTY3Jv
bGxpbmcoKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE5MTAxMSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzIsNyArMTMyLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZl
ciB7CiAgICAgTG9hZFdlYkFyY2hpdmVEYXRhKElQQzo6RGF0YVJlZmVyZW5jZSB3ZWJBcmNoaXZl
RGF0YSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBOYXZpZ2F0ZVRvUERGTGlua1dp
dGhTaW11bGF0ZWRDbGljayhTdHJpbmcgdXJsLCBXZWJDb3JlOjpJbnRQb2ludCBkb2N1bWVudFBv
aW50LCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Qb2ludCkKIAotICAgIFJlbG9hZCh1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIGJvb2wgcmVsb2FkRnJvbU9yaWdpbiwgV2ViS2l0OjpTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKKyAgICBSZWxvYWQodWludDY0
X3QgbmF2aWdhdGlvbklELCBib29sIHJlbG9hZEZyb21PcmlnaW4sIGJvb2wgY29udGVudEJsb2Nr
ZXJzRW5hYmxlZCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZSkKICAgICBTdG9wTG9hZGluZygpCiAKICAgICBTdG9wTG9hZGluZ0ZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQpCkBAIC00MjgsNyArNDI4LDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBM
ZWdhY3lSZWNlaXZlciB7CiAKICAgICBDbGVhcldoZWVsRXZlbnRUZXN0VHJpZ2dlcigpCiAgICAg
U2V0U2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudChib29sIHNob3VsZFNjYWxlVmlld1RvRml0
RG9jdW1lbnQpCi0gICAgU2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZChib29sIHVzZXJD
b250ZW50RXh0ZW5zaW9uc0VuYWJsZWQpCiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RS
RUFNRVIpCiAgICAgRGlkRW5kUmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKHVpbnQz
Ml90IHJlc3VsdCkKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE5MTAxMSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE1LTEwLTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBmb3IgcmVsb2FkaW5nIHdp
dGhvdXQgY29udGVudCBibG9ja2VycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTUwMDU4CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzIyNzQyMjIyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW06CisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjpjb2NvYVJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Db25maWd1cmVWaWV3Rm9yVGVzdCk6CisKIDIw
MTUtMTAtMTMgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAg
TWFjIERlYnVnIGFuZCAzMi1iaXQgcXVldWVzIHNob3VsZCBiZSBzZXBhcmF0ZQpJbmRleDogVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5t
bQkocmV2aXNpb24gMTkxMDExKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0
Q29udHJvbGxlckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsMTAgKzEyMCw4IEBAIHZv
aWQgVGVzdENvbnRyb2xsZXI6OmNvY29hUmVzZXRTdGF0ZVRvQ28KICAgICBwbGF0Zm9ybVJ1blVu
dGlsKGRvbmVSZW1vdmluZywgMCk7CiAgICAgW1tfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3Jl
IGRlZmF1bHRTdG9yZV0gX3JlbW92ZUFsbENvbnRlbnRFeHRlbnNpb25zXTsKIAotICAgIGlmIChQ
bGF0Zm9ybVdlYlZpZXcqIHdlYlZpZXcgPSBtYWluV2ViVmlldygpKSB7CisgICAgaWYgKFBsYXRm
b3JtV2ViVmlldyogd2ViVmlldyA9IG1haW5XZWJWaWV3KCkpCiAgICAgICAgIFt3ZWJWaWV3LT5w
bGF0Zm9ybVZpZXcoKS5jb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlciBfcmVtb3Zl
QWxsVXNlckNvbnRlbnRGaWx0ZXJzXTsKLSAgICAgICAgd2ViVmlldy0+cGxhdGZvcm1WaWV3KCku
X3VzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQgPSB0cnVlOwotICAgIH0KICNlbmRpZgogfQog
CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1h
Yy5tbQkocmV2aXNpb24gMTkxMDExKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVz
dENvbnRyb2xsZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyMywxMSArMTIzLDYgQEAgdm9p
ZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Db25maWd1cmVWaQogICAgICAgICBkb25lQ29tcGls
aW5nID0gdHJ1ZTsKICAgICB9XTsKICAgICBwbGF0Zm9ybVJ1blVudGlsKGRvbmVDb21waWxpbmcs
IDApOwotCi0gICAgLy8gVGhpcyBpcyBmb3IgaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9k
aXNhYmxlLWJsb2NrZXIuaHRtbAotICAgIGlmICghdGVzdC51cmxDb250YWlucygiZGlzYWJsZS1i
bG9ja2VyIikpCi0gICAgICAgIHJldHVybjsKLSAgICBtYWluV2ViVmlldygpLT5wbGF0Zm9ybVZp
ZXcoKS5fdXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCA9IGZhbHNlOwogI2VuZGlmCiB9CiAK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE5MTAxMSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE1LTEwLTEzICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBmb3IgcmVsb2Fk
aW5nIHdpdGhvdXQgY29udGVudCBibG9ja2VycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMDU4CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzIyNzQy
MjIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBo
dHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL2Rpc2FibGUtYmxvY2tlci1leHBlY3RlZC50eHQ6
IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9kaXNhYmxl
LWJsb2NrZXIuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2NvbnRlbnRleHRl
bnNpb25zL2Rpc2FibGUtYmxvY2tlci5odG1sLmpzb246IFJlbW92ZWQuCisgICAgICAgIF91c2Vy
Q29udGVudEV4dGVuc2lvbnNFbmFibGVkIGlzIGdvaW5nIHRvIGJlIHJlbW92ZWQsIGFuZCBpdHMg
ZnVuY3Rpb25hbGl0eSBpcyB3aGF0IHRoaXMgdGVzdCB0ZXN0ZWQuCisKIDIwMTUtMTAtMTMgIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBBbm9ueW1vdXMgdGFibGUg
b2JqZWN0czogaW5saW5lIHBhcmVudCBib3ggcmVxdWlyZXMgaW5saW5lLXRhYmxlIGNoaWxkLgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9kaXNhYmxlLWJs
b2NrZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
Y29udGVudGV4dGVuc2lvbnMvZGlzYWJsZS1ibG9ja2VyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MTkxMDExKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9kaXNh
YmxlLWJsb2NrZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDkgKzAsMCBAQAot
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDEyOiBzdGF0dXM6IDAsIHJlYWR5U3RhdGU6MSwgcmVzcG9u
c2VUZXh0OiAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxMjogc3RhdHVzOiAyMDAsIHJlYWR5U3Rh
dGU6MiwgcmVzcG9uc2VUZXh0OiAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxMjogc3RhdHVzOiAy
MDAsIHJlYWR5U3RhdGU6MywgcmVzcG9uc2VUZXh0OiAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAx
Mjogc3RhdHVzOiAyMDAsIHJlYWR5U3RhdGU6NCwgcmVzcG9uc2VUZXh0OiBUaGlzIHBhZ2Ugc2hv
dWxkIGxvYWQuCi08c2NyaXB0PgotICAgIGNvbnNvbGUubG9nKCJUaGlzIHBhZ2Ugc2hvdWxkIGxv
YWQuIik7Ci08L3NjcmlwdD4KLQotVGhpcyBwYWdlIHNob3VsZCBsb2FkIHN1Y2Nlc3NmdWxseS4g
VGhlIGNvbnRlbnQgYmxvY2tlciBpcyBkaXNhYmxlZCBpbiBXZWJLaXRUZXN0UnVubmVyIGJlZm9y
ZSBsb2FkaW5nIHRoZSBwYWdlLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50
ZXh0ZW5zaW9ucy9kaXNhYmxlLWJsb2NrZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL2Rpc2FibGUtYmxvY2tlci5odG1sCShyZXZp
c2lvbiAxOTEwMTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25z
L2Rpc2FibGUtYmxvY2tlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI1ICswLDAgQEAKLTxo
ZWFkPgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi1mdW5j
dGlvbiBzZW5kUmVxdWVzdCgpCi17Ci0gICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgp
OwotICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgY29u
c29sZS5sb2coInN0YXR1czogIiArIHhoci5zdGF0dXMgKyAiLCByZWFkeVN0YXRlOiIgKyB4aHIu
cmVhZHlTdGF0ZSArICIsIHJlc3BvbnNlVGV4dDogIiArIHhoci5yZXNwb25zZVRleHQpOwotICAg
ICAgICBpZiAoeGhyLnJlYWR5U3RhdGUgPT0gNCkgewotICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgeGhyLm9wZW4oIkdFVCIs
ICJyZXNvdXJjZXMvc2hvdWxkLWxvYWQuaHRtbCIsIHRydWUpOwotCXhoci5zZW5kKCk7Ci19Ci08
L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0ic2VuZFJlcXVlc3QoKSI+Ci1UaGlzIHBh
Z2Ugc2hvdWxkIGxvYWQgc3VjY2Vzc2Z1bGx5LiAgVGhlIGNvbnRlbnQgYmxvY2tlciBpcyBkaXNh
YmxlZCBpbiBXZWJLaXRUZXN0UnVubmVyIGJlZm9yZSBsb2FkaW5nIHRoZSBwYWdlLgotPC9ib2R5
PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9kaXNhYmxl
LWJsb2NrZXIuaHRtbC5qc29uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
Y29udGVudGV4dGVuc2lvbnMvZGlzYWJsZS1ibG9ja2VyLmh0bWwuanNvbgkocmV2aXNpb24gMTkx
MDExKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9kaXNhYmxl
LWJsb2NrZXIuaHRtbC5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICswLDAgQEAKLVsKLSAg
ICB7Ci0gICAgICAgICJhY3Rpb24iOiB7Ci0gICAgICAgICAgICAidHlwZSI6ICJibG9jayIKLSAg
ICAgICAgfSwKLSAgICAgICAgInRyaWdnZXIiOiB7Ci0gICAgICAgICAgICAidXJsLWZpbHRlciI6
ICIuKiIKLSAgICAgICAgfQotICAgIH0KLV0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263092</attachid>
            <date>2015-10-14 11:39:46 -0700</date>
            <delta_ts>2015-10-14 13:03:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150058-20151014113916.patch</filename>
            <type>text/plain</type>
            <size>30953</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MTA0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE1LTEwLTE0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBm
b3IgcmVsb2FkaW5nIHdpdGhvdXQgY29udGVudCBibG9ja2VycworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMDU4CisgICAgICAgIHJkYXI6Ly9wcm9i
bGVtLzIyNzQyMjIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KKworICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6cmVsb2FkV2l0aE92ZXJyaWRlRW5jb2RpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OnJlbG9hZCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAg
ICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1c2VyQ29udGVudENvbnRy
b2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXNlckNvbnRlbnRFeHRlbnNpb25zRW5h
YmxlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRVc2VyQ29udGVudEV4
dGVuc2lvbnNFbmFibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiByZXBsYXkvVXNlcklucHV0QnJp
ZGdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJJbnB1dEJyaWRnZTo6bG9hZFJlcXVlc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VXNlcklucHV0QnJpZGdlOjpyZWxvYWRGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpVc2VySW5wdXRCcmlkZ2U6OnN0b3BMb2FkaW5nRnJhbWUpOgorICAgICAg
ICAqIHJlcGxheS9Vc2VySW5wdXRCcmlkZ2UuaDoKKyAgICAgICAgUGFzcyBhIGJvb2wgZnJvbSB0
aGUgcmVsb2FkV2l0aG91dENvbnRlbnRCbG9ja2VycyBjYWxsIHRvIHRoZSBEb2N1bWVudExvYWRl
ciwgCisgICAgICAgIHdoaWNoIHN0b3JlcyB0aGUgc3RhdGUgb2Ygd2hldGhlciB0aGUgY29udGVu
dCBibG9ja2VycyBhcmUgZW5hYmxlZCBvciBub3QuCisgICAgICAgIFJlbW92ZSB0aGUgc3RhdGUg
ZnJvbSB0aGUgUGFnZSBhbmQgY29weWluZyB0aGUgc3RhdGUgZnJvbSB0aGUgUGFnZSB0byB0aGUg
RG9jdW1lbnRMb2FkZXIKKyAgICAgICAgYmVjYXVzZSB0aGF0IGNhdXNlZCBpc3N1ZXMgd2l0aCB0
aGUgY29udGVudCBibG9ja2VycyBiZWluZyByZS1lbmFibGVkIGF0IHRoZSB3cm9uZyB0aW1lLgor
CiAyMDE1LTEwLTE0ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIENoYW5nZSBHcmFwaGljc0NvbnRleHQgaW1hZ2UtZHJhd2luZyBmdW5jdGlvbnMgdG8g
dGFrZSByZWZlcmVuY2VzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJ
KHJldmlzaW9uIDE5MTA0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NjQsNyArMTU2NCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OnJlbG9hZFdpdGhPdmVycmlkZUVuY28KICAgICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKGxvYWRl
ci5wdHIoKSwgRnJhbWVMb2FkVHlwZTo6UmVsb2FkLCAwLCBBbGxvd05hdmlnYXRpb25Ub0ludmFs
aWRVUkw6Olllcyk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZChib29sIGVuZFRvRW5k
UmVsb2FkKQordm9pZCBGcmFtZUxvYWRlcjo6cmVsb2FkKGJvb2wgZW5kVG9FbmRSZWxvYWQsIGJv
b2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCkKIHsKICAgICBpZiAoIW1fZG9jdW1lbnRMb2FkZXIp
CiAgICAgICAgIHJldHVybjsKQEAgLTE1ODUsNiArMTU4NSw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OnJlbG9hZChib29sIGVuZFRvRW5kUmUKICAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9
IG1fY2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKGluaXRpYWxSZXF1ZXN0LCBkZWZhdWx0U3Vi
c3RpdHV0ZURhdGFGb3JVUkwoaW5pdGlhbFJlcXVlc3QudXJsKCkpKTsKICAgICBhcHBseVNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKGxvYWRlciwgbV9kb2N1
bWVudExvYWRlci0+c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCkpOwog
CisgICAgbG9hZGVyLT5zZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKGNvbnRlbnRCbG9j
a2Vyc0VuYWJsZWQpOworICAgIAogICAgIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCA9IGxvYWRl
ci0+cmVxdWVzdCgpOwogCiAgICAgLy8gRklYTUU6IFdlIGRvbid0IGhhdmUgYSBtZWNoYW5pc20g
dG8gcmV2YWxpZGF0ZSB0aGUgbWFpbiByZXNvdXJjZSB3aXRob3V0IHJlbG9hZGluZyBhdCB0aGUg
bW9tZW50LgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHJldmlzaW9uIDE5
MTA0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjMsNyArMTIzLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
dXJsU2VsZWN0ZWQoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50KiwgTG9j
a0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3QsIFNob3VsZFNlbmRSZWZlcnJlciwgU2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiAgICAgdm9pZCBzdWJtaXRGb3JtKFBhc3NSZWZQdHI8
Rm9ybVN1Ym1pc3Npb24+KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVsb2FkKGJvb2wg
ZW5kVG9FbmRSZWxvYWQgPSBmYWxzZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWxvYWQo
Ym9vbCBlbmRUb0VuZFJlbG9hZCA9IGZhbHNlLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQg
PSB0cnVlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbG9hZFdpdGhPdmVycmlkZUVuY29k
aW5nKGNvbnN0IFN0cmluZyYgb3ZlcnJpZGVFbmNvZGluZyk7CiAKICAgICB2b2lkIG9wZW4oQ2Fj
aGVkRnJhbWVCYXNlJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gMTkxMDQ5KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyOCw5ICs0Mjgs
NiBAQCBwdWJsaWM6CiAgICAgVXNlckNvbnRlbnRDb250cm9sbGVyKiB1c2VyQ29udGVudENvbnRy
b2xsZXIoKSB7IHJldHVybiBtX3VzZXJDb250ZW50Q29udHJvbGxlci5nZXQoKTsgfQogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0VXNlckNvbnRlbnRDb250cm9sbGVyKFVzZXJDb250ZW50Q29u
dHJvbGxlciopOwogCi0gICAgYm9vbCB1c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV91c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkOyB9Ci0gICAgdm9pZCBz
ZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3VzZXJDb250
ZW50RXh0ZW5zaW9uc0VuYWJsZWQgPSBlbmFibGVkOyB9Ci0KICAgICBWaXNpdGVkTGlua1N0b3Jl
JiB2aXNpdGVkTGlua1N0b3JlKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaXNpdGVk
TGlua1N0b3JlKFJlZjxWaXNpdGVkTGlua1N0b3JlPiYmKTsKIApAQCAtNjM2LDcgKzYzMyw2IEBA
IHByaXZhdGU6CiAKICAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgbV9tZWRpYVN0
YXRlIHsgTWVkaWFQcm9kdWNlcjo6SXNOb3RQbGF5aW5nIH07CiAgICAgCi0gICAgYm9vbCBtX3Vz
ZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX2FsbG93c01l
ZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjayB7IGZhbHNlIH07CiB9OwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmNwcAkocmV2aXNpb24gMTkxMDQ5KQorKysg
U291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI0Miw5ICsyNDIsOSBAQCB2b2lkIFVzZXJJbnB1dEJyaWRnZTo6bG9hZFJlcXVlc3QoY29u
c3QgCiAgICAgbV9wYWdlLm1haW5GcmFtZSgpLmxvYWRlcigpLmxvYWQocmVxdWVzdCk7CiB9CiAK
LXZvaWQgVXNlcklucHV0QnJpZGdlOjpyZWxvYWRGcmFtZShGcmFtZSogZnJhbWUsIGJvb2wgZW5k
VG9FbmRSZWxvYWQsIElucHV0U291cmNlKQordm9pZCBVc2VySW5wdXRCcmlkZ2U6OnJlbG9hZEZy
YW1lKEZyYW1lKiBmcmFtZSwgYm9vbCBlbmRUb0VuZFJlbG9hZCwgYm9vbCBjb250ZW50QmxvY2tl
cnNFbmFibGVkLCBJbnB1dFNvdXJjZSkKIHsKLSAgICBmcmFtZS0+bG9hZGVyKCkucmVsb2FkKGVu
ZFRvRW5kUmVsb2FkKTsKKyAgICBmcmFtZS0+bG9hZGVyKCkucmVsb2FkKGVuZFRvRW5kUmVsb2Fk
LCBjb250ZW50QmxvY2tlcnNFbmFibGVkKTsKIH0KIAogdm9pZCBVc2VySW5wdXRCcmlkZ2U6OnN0
b3BMb2FkaW5nRnJhbWUoRnJhbWUqIGZyYW1lLCBJbnB1dFNvdXJjZSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmgJKHJldmlzaW9uIDE5MTA0OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtODks
NyArODksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBOYXZpZ2F0aW9uIEFQSXMuCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBsb2FkUmVxdWVzdChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgSW5wdXRT
b3VyY2Ugc291cmNlID0gSW5wdXRTb3VyY2U6OlVzZXIpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVsb2FkRnJhbWUoRnJhbWUqLCBib29sIGVuZFRvRW5kUmVsb2FkLCBJbnB1dFNvdXJjZSBz
b3VyY2UgPSBJbnB1dFNvdXJjZTo6VXNlcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWxv
YWRGcmFtZShGcmFtZSosIGJvb2wgZW5kVG9FbmRSZWxvYWQsIGJvb2wgY29udGVudEJsb2NrZXJz
RW5hYmxlZCwgSW5wdXRTb3VyY2UgPSBJbnB1dFNvdXJjZTo6VXNlcik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzdG9wTG9hZGluZ0ZyYW1lKEZyYW1lKiwgSW5wdXRTb3VyY2Ugc291cmNlID0g
SW5wdXRTb3VyY2U6OlVzZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgdHJ5Q2xvc2VQYWdl
KElucHV0U291cmNlIHNvdXJjZSA9IElucHV0U291cmNlOjpVc2VyKTsKIApJbmRleDogU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTkxMDQ5KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTUtMTAtMTQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJIGZvciByZWxvYWRpbmcg
d2l0aG91dCBjb250ZW50IGJsb2NrZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTAwNTgKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjI3NDIyMjIK
KworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgICogU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAg
ICAgIChXS1BhZ2VSZWxvYWQpOgorICAgICAgICAoV0tQYWdlUmVsb2FkV2l0aG91dENvbnRlbnRC
bG9ja2Vycyk6CisgICAgICAgIChXS1BhZ2VSZWxvYWRGcm9tT3JpZ2luKToKKyAgICAgICAgKFdL
UGFnZVRyeUNsb3NlKToKKyAgICAgICAgKFdLUGFnZVNldFVzZXJDb250ZW50RXh0ZW5zaW9uc0Vu
YWJsZWQpOgorICAgICAgICAoV0tQYWdlU3VwcG9ydHNUZXh0RW5jb2RpbmcpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tCcm93c2luZ0Nv
bnRleHRDb250cm9sbGVyIHJlbG9hZF0pOgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIgcmVsb2FkRnJvbU9yaWdpbl0pOgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIgYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50XSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyByZWxv
YWRdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHJlbG9hZEZyb21PcmlnaW5dKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9zZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkOl0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX3VzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWRdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX2tpbGxXZWJDb250ZW50UHJvY2Vzc10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3JlbG9h
ZFdpdGhvdXRDb250ZW50QmxvY2tlcnNdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9raWxsV2Vi
Q29udGVudFByb2Nlc3NBbmRSZXNldFN0YXRlXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcmVsb2FkKToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfdmlld19yZWxvYWRfYnlwYXNzX2NhY2hlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViRnJhbWVQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lUHJveHk6
OmRpZEhhbmRsZUNvbnRlbnRGaWx0ZXJVbmJsb2NrTmF2aWdhdGlvbik6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
c3RvcExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlbG9hZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRTaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRVc2VyQ29udGVudEV4dGVuc2lv
bnNFbmFibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXNlckNvbnRlbnRFeHRlbnNpb25zRW5h
YmxlZCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjptX3Nob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldERlZmVyc0xvYWRpbmcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpyZWxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnb0Zv
cndhcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjcmVhdGVEb2N1bWVudExvYWRlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldFNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1l
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbWFnZU9yTWVkaWFEb2N1bWVudFNpemVD
aGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0VXNlckNvbnRlbnRFeHRlbnNp
b25zRW5hYmxlZCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoK
KwogMjAxNS0xMC0xNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBDaGFuZ2UgR3JhcGhpY3NDb250ZXh0IGltYWdlLWRyYXdpbmcgZnVuY3Rpb25zIHRv
IHRha2UgcmVmZXJlbmNlcwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMTkxMDQ5KQorKysgU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04NCw3ICs4NCw2IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5j
b2RlKEkKICNlbmRpZgogICAgIGVuY29kZXIgPDwgYXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5h
YmxlZDsKICAgICBlbmNvZGVyIDw8IHNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQ7Ci0gICAg
ZW5jb2RlciA8PCB1c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkOwogfQogCiBib29sIFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2Rl
ciwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKQEAgLTE4OSw5ICsxODgs
NiBAQCBib29sIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMudXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDE5MTA0OSkKKysrIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMCw3ICsxMzAsNiBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyB7CiAjZW5kaWYKICAgICBib29sIGFwcGxlTWFpbFBhZ2luYXRpb25RdWlya0VuYWJsZWQ7CiAg
ICAgYm9vbCBzaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50OwotICAgIGJvb2wgdXNlckNvbnRl
bnRFeHRlbnNpb25zRW5hYmxlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAkocmV2aXNpb24gMTkx
MDQ5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDcsOCArMjQ3LDExIEBAIGJvb2wgV2ViRnJhbWVQcm94eTo6ZGlkSGFu
ZGxlQ29udGVudEZpbHQKICAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBwYWdlIHsgbV9wYWdlIH07
CiAgICAgQVNTRVJUKHBhZ2UpOwogICAgIG1fY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLnJl
cXVlc3RVbmJsb2NrQXN5bmMoW3BhZ2VdKGJvb2wgdW5ibG9ja2VkKSB7Ci0gICAgICAgIGlmICh1
bmJsb2NrZWQpCi0gICAgICAgICAgICBwYWdlLT5yZWxvYWQoZmFsc2UpOworICAgICAgICBpZiAo
dW5ibG9ja2VkKSB7CisgICAgICAgICAgICBjb25zdCBib29sIHJlbG9hZEZyb21PcmlnaW4gPSBm
YWxzZTsKKyAgICAgICAgICAgIGNvbnN0IGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCA9IHRy
dWU7CisgICAgICAgICAgICBwYWdlLT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwgY29udGVudEJs
b2NrZXJzRW5hYmxlZCk7CisgICAgICAgIH0KICAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lv
biAxOTEwNDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTA0OCw3ICsxMDQ4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN0
b3BMb2FkaW5nKCkKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3RhcnQo
KTsKIH0KIAotUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZWxvYWQoYm9v
bCByZWxvYWRGcm9tT3JpZ2luKQorUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5
OjpyZWxvYWQoYm9vbCByZWxvYWRGcm9tT3JpZ2luLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJs
ZWQpCiB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5k
bGU7CiAKQEAgLTEwNjgsNyArMTA2OCw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBh
Z2VQcm94eTo6cmUKICAgICAKICAgICBhdXRvIG5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0
ZS0+Y3JlYXRlUmVsb2FkTmF2aWdhdGlvbigpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpSZWxvYWQobmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIHJlbG9hZEZy
b21PcmlnaW4sIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWxvYWQobmF2aWdhdGlvbi0+bmF2aWdhdGlv
bklEKCksIHJlbG9hZEZyb21PcmlnaW4sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIHNhbmRib3hF
eHRlbnNpb25IYW5kbGUpLCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVz
c1RpbWVyKCktPnN0YXJ0KCk7CiAKICAgICByZXR1cm4gV1RGOjptb3ZlKG5hdmlnYXRpb24pOwpA
QCAtNTE2Nyw3ICs1MTY3LDYgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJv
eHk6OgogICAgIHBhcmFtZXRlcnMuYXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5hYmxlZCA9IGZh
bHNlOwogI2VuZGlmCiAgICAgcGFyYW1ldGVycy5zaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50
ID0gbV9zaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50OwotICAgIHBhcmFtZXRlcnMudXNlckNv
bnRlbnRFeHRlbnNpb25zRW5hYmxlZCA9IG1fdXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZDsK
IAogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQpAQCAtNjEwMywxNyArNjEwMiw0IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRTaG91bGRTY2FsZVZpZXdUb0YKICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldFNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQoc2hvdWxk
U2NhbGVWaWV3VG9GaXREb2N1bWVudCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJv
eHk6OnNldFVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQoYm9vbCB1c2VyQ29udGVudEV4dGVu
c2lvbnNFbmFibGVkKQotewotICAgIGlmIChtX3VzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQg
PT0gdXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
bV91c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkID0gdXNlckNvbnRlbnRFeHRlbnNpb25zRW5h
YmxlZDsKLQotICAgIGlmICghaXNWYWxpZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZXJDb250ZW50RXh0ZW5zaW9uc0Vu
YWJsZWQodXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCksIG1fcGFnZUlEKTsKLX0KLQogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCShyZXZpc2lvbiAxOTEwNDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2Miw3ICszNjIsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcm
IHVybCwgV2ViQ29yZTo6SW50UG9pbnQgZG9jdW1lbnRQb2ludCwgV2ViQ29yZTo6SW50UG9pbnQg
c2NyZWVuUG9pbnQpOwogCiAgICAgdm9pZCBzdG9wTG9hZGluZygpOwotICAgIFJlZlB0cjxBUEk6
Ok5hdmlnYXRpb24+IHJlbG9hZChib29sIHJlbG9hZEZyb21PcmlnaW4pOworICAgIFJlZlB0cjxB
UEk6Ok5hdmlnYXRpb24+IHJlbG9hZChib29sIHJlbG9hZEZyb21PcmlnaW4sIGJvb2wgY29udGVu
dEJsb2NrZXJzRW5hYmxlZCk7CiAKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBnb0Zvcndh
cmQoKTsKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBnb0JhY2soKTsKQEAgLTY1MCw5ICs2
NTAsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY2FsZVZpZXcoZG91YmxlIHNjYWxlKTsKICAgICB2
b2lkIHNldFNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQoYm9vbCk7CiAgICAgCi0gICAgYm9v
bCB1c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKCkgeyByZXR1cm4gbV91c2VyQ29udGVudEV4
dGVuc2lvbnNFbmFibGVkOyB9Ci0gICAgdm9pZCBzZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFi
bGVkKGJvb2wpOwotCiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdDsKICAgICB2
b2lkIHNldEludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKGZsb2F0KTsKICAgICB2b2lkIHNldEN1
c3RvbURldmljZVNjYWxlRmFjdG9yKGZsb2F0KTsKQEAgLTE3NzAsOCArMTc2Nyw2IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX3JlcXVpcmVzVGFyZ2V0TW9uaXRvcmluZyB7IGZhbHNlIH07CiAjZW5k
aWYKIAotICAgIGJvb2wgbV91c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkIHsgdHJ1ZSB9Owot
CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGJvb2wgbV9oYXNEZWZlcnJlZFN0YXJ0QXNzaXN0aW5n
Tm9kZSB7IGZhbHNlIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5vZGVBc3Npc3RhbmNlQXJndW1l
bnRzPiBtX2RlZmVycmVkTm9kZUFzc2lzdGFuY2VBcmd1bWVudHM7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24gMTkxMDQ5KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIyOCwxMiArMjI4LDIzIEBAIHZvaWQgV0tQYWdlU3RvcExvYWRpbmcoV0tQYWdlUmVmIHBhZ2VS
ZWYKIAogdm9pZCBXS1BhZ2VSZWxvYWQoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7Ci0gICAgdG9JbXBs
KHBhZ2VSZWYpLT5yZWxvYWQoZmFsc2UpOworICAgIGNvbnN0IGJvb2wgcmVsb2FkRnJvbU9yaWdp
biA9IGZhbHNlOworICAgIGNvbnN0IGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCA9IHRydWU7
CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwgY29udGVudEJs
b2NrZXJzRW5hYmxlZCk7Cit9CisKK3ZvaWQgV0tQYWdlUmVsb2FkV2l0aG91dENvbnRlbnRCbG9j
a2VycyhXS1BhZ2VSZWYgcGFnZVJlZikKK3sKKyAgICBjb25zdCBib29sIHJlbG9hZEZyb21Pcmln
aW4gPSBmYWxzZTsKKyAgICBjb25zdCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSBmYWxz
ZTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnJlbG9hZChyZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50
QmxvY2tlcnNFbmFibGVkKTsKIH0KIAogdm9pZCBXS1BhZ2VSZWxvYWRGcm9tT3JpZ2luKFdLUGFn
ZVJlZiBwYWdlUmVmKQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+cmVsb2FkKHRydWUpOworICAg
IGNvbnN0IGJvb2wgcmVsb2FkRnJvbU9yaWdpbiA9IHRydWU7CisgICAgY29uc3QgYm9vbCBjb250
ZW50QmxvY2tlcnNFbmFibGVkID0gdHJ1ZTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnJlbG9hZChy
ZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVkKTsKIH0KIAogYm9vbCBXS1Bh
Z2VUcnlDbG9zZShXS1BhZ2VSZWYgcGFnZVJlZikKQEAgLTM2Myw3ICszNzQsNyBAQCB2b2lkIFdL
UGFnZVNldEN1c3RvbVVzZXJBZ2VudChXS1BhZ2VSZWYgCiAKIHZvaWQgV0tQYWdlU2V0VXNlckNv
bnRlbnRFeHRlbnNpb25zRW5hYmxlZChXS1BhZ2VSZWYgcGFnZVJlZiwgYm9vbCBlbmFibGVkKQog
ewotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZChl
bmFibGVkKTsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgZnVuY3Rpb24gb25jZSBpdCBpcyBu
byBsb25nZXIgdXNlZC4KIH0KIAogYm9vbCBXS1BhZ2VTdXBwb3J0c1RleHRFbmNvZGluZyhXS1Bh
Z2VSZWYgcGFnZVJlZikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmgJKHJldmlzaW9uIDE5MTA0OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsNyBAQCBXS19FWFBPUlQgdm9pZCBX
S1BhZ2VMb2FkV2ViQXJjaGl2ZURhdGFXCiAKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVN0b3BMb2Fk
aW5nKFdLUGFnZVJlZiBwYWdlKTsKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVJlbG9hZChXS1BhZ2VS
ZWYgcGFnZSk7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VSZWxvYWRXaXRob3V0Q29udGVudEJsb2Nr
ZXJzKFdLUGFnZVJlZiBwYWdlKTsKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVJlbG9hZEZyb21Pcmln
aW4oV0tQYWdlUmVmIHBhZ2UpOwogCiBXS19FWFBPUlQgYm9vbCBXS1BhZ2VUcnlDbG9zZShXS1Bh
Z2VSZWYgcGFnZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
QnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQkocmV2
aXNpb24gMTkxMDQ5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4NywxMiArMTg3
LDE2IEBAIC0gKHZvaWQpc3RvcExvYWRpbmcKIAogLSAodm9pZClyZWxvYWQKIHsKLSAgICBfcGFn
ZS0+cmVsb2FkKGZhbHNlKTsKKyAgICBjb25zdCBib29sIHJlbG9hZEZyb21PcmlnaW4gPSBmYWxz
ZTsKKyAgICBjb25zdCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSB0cnVlOworICAgIF9w
YWdlLT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwgY29udGVudEJsb2NrZXJzRW5hYmxlZCk7CiB9
CiAKIC0gKHZvaWQpcmVsb2FkRnJvbU9yaWdpbgogewotICAgIF9wYWdlLT5yZWxvYWQodHJ1ZSk7
CisgICAgY29uc3QgYm9vbCByZWxvYWRGcm9tT3JpZ2luID0gdHJ1ZTsKKyAgICBjb25zdCBib29s
IGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSB0cnVlOworICAgIF9wYWdlLT5yZWxvYWQocmVsb2Fk
RnJvbU9yaWdpbiwgY29udGVudEJsb2NrZXJzRW5hYmxlZCk7CiB9CiAKIC0gKE5TU3RyaW5nICop
YXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMTkxMDQ5KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTU2Myw3ICs1NjMsOSBAQCAtIChXS05hdmlnYXRpb24gKilnb0ZvcndhcmQKIAogLSAo
V0tOYXZpZ2F0aW9uICopcmVsb2FkCiB7Ci0gICAgYXV0byBuYXZpZ2F0aW9uID0gX3BhZ2UtPnJl
bG9hZChmYWxzZSk7CisgICAgY29uc3QgYm9vbCByZWxvYWRGcm9tT3JpZ2luID0gZmFsc2U7Cisg
ICAgY29uc3QgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkID0gdHJ1ZTsKKyAgICBhdXRvIG5h
dmlnYXRpb24gPSBfcGFnZS0+cmVsb2FkKHJlbG9hZEZyb21PcmlnaW4sIGNvbnRlbnRCbG9ja2Vy
c0VuYWJsZWQpOwogICAgIGlmICghbmF2aWdhdGlvbikKICAgICAgICAgcmV0dXJuIG5pbDsKIApA
QCAtNTcyLDcgKzU3NCw5IEBAIC0gKFdLTmF2aWdhdGlvbiAqKXJlbG9hZAogCiAtIChXS05hdmln
YXRpb24gKilyZWxvYWRGcm9tT3JpZ2luCiB7Ci0gICAgYXV0byBuYXZpZ2F0aW9uID0gX3BhZ2Ut
PnJlbG9hZCh0cnVlKTsKKyAgICBjb25zdCBib29sIHJlbG9hZEZyb21PcmlnaW4gPSB0cnVlOwor
ICAgIGNvbnN0IGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCA9IHRydWU7CisgICAgYXV0byBu
YXZpZ2F0aW9uID0gX3BhZ2UtPnJlbG9hZChyZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50QmxvY2tl
cnNFbmFibGVkKTsKICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAK
QEAgLTIwMjYsMTIgKzIwMzAsMTMgQEAgLSAodm9pZClfc2V0Q3VzdG9tVXNlckFnZW50OihOU1N0
cmluZyAqKQogCiAtICh2b2lkKV9zZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkOihCT09M
KXVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQKIHsKLSAgICBfcGFnZS0+c2V0VXNlckNvbnRl
bnRFeHRlbnNpb25zRW5hYmxlZCh1c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKTsKKyAgICAv
LyBUaGlzIGlzIGtlcHQgZm9yIGJpbmFyeSBjb21wYXRpYmlsaXR5IHdpdGggaU9TIDkuCiB9CiAK
IC0gKEJPT0wpX3VzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQKIHsKLSAgICByZXR1cm4gX3Bh
Z2UtPnVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQoKTsKKyAgICAvLyBUaGlzIGlzIGtlcHQg
Zm9yIGJpbmFyeSBjb21wYXRpYmlsaXR5IHdpdGggaU9TIDkuCisgICAgcmV0dXJuIHRydWU7CiB9
CiAKIC0gKHBpZF90KV93ZWJQcm9jZXNzSWRlbnRpZmllcgpAQCAtMjA0Nyw2ICsyMDUyLDE3IEBA
IC0gKHZvaWQpX2tpbGxXZWJDb250ZW50UHJvY2VzcwogICAgIF9wYWdlLT5wcm9jZXNzKCkudGVy
bWluYXRlKCk7CiB9CiAKKy0gKFdLTmF2aWdhdGlvbiAqKV9yZWxvYWRXaXRob3V0Q29udGVudEJs
b2NrZXJzCit7CisgICAgY29uc3QgYm9vbCByZWxvYWRGcm9tT3JpZ2luID0gZmFsc2U7CisgICAg
Y29uc3QgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkID0gZmFsc2U7CisgICAgYXV0byBuYXZp
Z2F0aW9uID0gX3BhZ2UtPnJlbG9hZChyZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNF
bmFibGVkKTsKKyAgICBpZiAoIW5hdmlnYXRpb24pCisgICAgICAgIHJldHVybiBuaWw7CisgICAg
CisgICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1
dG9yZWxlYXNlXTsKK30KKwogLSAodm9pZClfa2lsbFdlYkNvbnRlbnRQcm9jZXNzQW5kUmVzZXRT
dGF0ZQogewogICAgIF9wYWdlLT50ZXJtaW5hdGVQcm9jZXNzKCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAko
cmV2aXNpb24gMTkxMDQ5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4Nyw2ICsxODcsOCBAQCB0eXBl
ZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tJbW1lZGlhdGVBCiAtIChpZClfaW1tZWRpYXRlQWN0
aW9uQW5pbWF0aW9uQ29udHJvbGxlckZvckhpdFRlc3RSZXN1bHQ6KF9XS0hpdFRlc3RSZXN1bHQg
KiloaXRUZXN0UmVzdWx0IHdpdGhUeXBlOihfV0tJbW1lZGlhdGVBY3Rpb25UeXBlKXR5cGUgdXNl
ckRhdGE6KGlkPE5TU2VjdXJlQ29kaW5nPil1c2VyRGF0YTsKICNlbmRpZgogCistIChXS05hdmln
YXRpb24gKilfcmVsb2FkV2l0aG91dENvbnRlbnRCbG9ja2VycyBXS19BVkFJTEFCTEUoV0tfTUFD
X1RCQSwgV0tfSU9TX1RCQSk7CisKIC0gKHZvaWQpX2tpbGxXZWJDb250ZW50UHJvY2Vzc0FuZFJl
c2V0U3RhdGU7CiAKIC0gKHZvaWQpX2dldE1haW5SZXNvdXJjZURhdGFXaXRoQ29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKE5TRGF0YSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyOwpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlldy5jcHAJKHJldmlzaW9uIDE5MTA0OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDc0LDcgKzI0NzQs
OSBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19yZWxvYWQoV2ViS2l0V2ViVmllCiB7CiAgICAgZ19y
ZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwogCi0gICAgZ2V0UGFn
ZSh3ZWJWaWV3KS0+cmVsb2FkKGZhbHNlKTsKKyAgICBjb25zdCBib29sIHJlbG9hZEZyb21Pcmln
aW4gPSBmYWxzZTsKKyAgICBjb25zdCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSB0cnVl
OworICAgIGdldFBhZ2Uod2ViVmlldyktPnJlbG9hZChyZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50
QmxvY2tlcnNFbmFibGVkKTsKIH0KIAogLyoqCkBAIC0yNDg4LDcgKzI0OTAsOSBAQCB2b2lkIHdl
YmtpdF93ZWJfdmlld19yZWxvYWRfYnlwYXNzX2NhY2hlCiB7CiAgICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwogCi0gICAgZ2V0UGFnZSh3ZWJWaWV3KS0+
cmVsb2FkKHRydWUpOworICAgIGNvbnN0IGJvb2wgcmVsb2FkRnJvbU9yaWdpbiA9IHRydWU7Cisg
ICAgY29uc3QgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkID0gdHJ1ZTsKKyAgICBnZXRQYWdl
KHdlYlZpZXcpLT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwgY29udGVudEJsb2NrZXJzRW5hYmxl
ZCk7CiB9CiAKIC8qKgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTkxMDQ5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjAsOCArNTIwLDYg
QEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IAogICAgIGlmIChwYXJh
bWV0ZXJzLnZpZXdTY2FsZUZhY3RvciAhPSAxKQogICAgICAgICBzY2FsZVZpZXcocGFyYW1ldGVy
cy52aWV3U2NhbGVGYWN0b3IpOwogCi0gICAgbV9wYWdlLT5zZXRVc2VyQ29udGVudEV4dGVuc2lv
bnNFbmFibGVkKHBhcmFtZXRlcnMudXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCk7Ci0KICNp
ZiBQTEFURk9STShJT1MpCiAgICAgbV9wYWdlLT5zZXR0aW5ncygpLnNldENvbnRlbnREaXNwb3Np
dGlvbkF0dGFjaG1lbnRTYW5kYm94RW5hYmxlZCh0cnVlKTsKICNlbmRpZgpAQCAtMTE2NCw3ICsx
MTYyLDcgQEAgdm9pZCBXZWJQYWdlOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVmZQogICAgIG1f
cGFnZS0+c2V0RGVmZXJzTG9hZGluZyhkZWZlcnNMb2FkaW5nKTsKIH0KIAotdm9pZCBXZWJQYWdl
OjpyZWxvYWQodWludDY0X3QgbmF2aWdhdGlvbklELCBib29sIHJlbG9hZEZyb21PcmlnaW4sIGNv
bnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKK3Zv
aWQgV2ViUGFnZTo6cmVsb2FkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgYm9vbCByZWxvYWRGcm9t
T3JpZ2luLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIGNvbnN0IFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKIHsKICAgICBTZW5kU3RvcFJlc3Bv
bnNpdmVuZXNzVGltZXIgc3RvcHBlcih0aGlzKTsKIApAQCAtMTE3Miw3ICsxMTcwLDcgQEAgdm9p
ZCBXZWJQYWdlOjpyZWxvYWQodWludDY0X3QgbmF2aWdhdGlvbgogICAgIG1fcGVuZGluZ05hdmln
YXRpb25JRCA9IG5hdmlnYXRpb25JRDsKIAogICAgIG1fc2FuZGJveEV4dGVuc2lvblRyYWNrZXIu
YmVnaW5Mb2FkKG1fbWFpbkZyYW1lLmdldCgpLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKLSAg
ICBjb3JlUGFnZSgpLT51c2VySW5wdXRCcmlkZ2UoKS5yZWxvYWRGcmFtZShtX21haW5GcmFtZS0+
Y29yZUZyYW1lKCksIHJlbG9hZEZyb21PcmlnaW4pOworICAgIGNvcmVQYWdlKCktPnVzZXJJbnB1
dEJyaWRnZSgpLnJlbG9hZEZyYW1lKG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKSwgcmVsb2FkRnJv
bU9yaWdpbiwgY29udGVudEJsb2NrZXJzRW5hYmxlZCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Z29G
b3J3YXJkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3QgYmFja0ZvcndhcmRJdGVtSUQp
CkBAIC00OTAzLDggKzQ5MDEsNiBAQCBSZWY8RG9jdW1lbnRMb2FkZXI+IFdlYlBhZ2U6OmNyZWF0
ZURvY3VtCiAgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+c2V0TmF2aWdhdGlvbklEKG1fcGVu
ZGluZ05hdmlnYXRpb25JRCk7CiAgICAgICAgICAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQgPSAw
OwogICAgICAgICB9Ci0gICAgICAgIGlmIChmcmFtZS5wYWdlKCkpCi0gICAgICAgICAgICBkb2N1
bWVudExvYWRlci0+c2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZChmcmFtZS5wYWdlKCkt
PnVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIFdU
Rjo6bW92ZShkb2N1bWVudExvYWRlcik7CkBAIC01MDA1LDE0ICs1MDAxLDYgQEAgdm9pZCBXZWJQ
YWdlOjpzZXRTaG91bGRTY2FsZVZpZXdUb0ZpdERvYwogICAgIG1fZHJhd2luZ0FyZWEtPnNldFNo
b3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQoc2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudCk7
CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZChib29s
IHVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQpCi17Ci0gICAgaWYgKCFtX3BhZ2UpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIG1fcGFnZS0+c2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxl
ZCh1c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKTsKLX0KLQogdm9pZCBXZWJQYWdlOjppbWFn
ZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkKGNvbnN0IEludFNpemUmIG5ld1NpemUpCiB7CiAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpJbWFnZU9yTWVkaWFEb2N1bWVudFNpemVD
aGFuZ2VkKG5ld1NpemUpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMTkxMDQ5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTgyLDcgKzk4Miw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBsb2FkUGxhaW5UZXh0U3RyaW5nKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBsb2FkV2ViQXJjaGl2ZURhdGEoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIG5hdmlnYXRlVG9QREZM
aW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYgdXJsLCBXZWJDb3JlOjpJbnRQb2lu
dCBkb2N1bWVudFBvaW50LCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Qb2ludCk7Ci0gICAgdm9p
ZCByZWxvYWQodWludDY0X3QgbmF2aWdhdGlvbklELCBib29sIHJlbG9hZEZyb21PcmlnaW4sIGNv
bnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOworICAgIHZvaWQgcmVsb2FkKHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgYm9vbCByZWxvYWRGcm9tT3JpZ2luLCBib29sIGNvbnRlbnRCbG9ja2Vy
c0VuYWJsZWQsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogICAgIHZvaWQgZ29G
b3J3YXJkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3QpOwogICAgIHZvaWQgZ29CYWNr
KHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3QpOwogICAgIHZvaWQgZ29Ub0JhY2tGb3J3
YXJkSXRlbSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQ2NF90KTsKQEAgLTExNjAsNyArMTE2
MCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhcldoZWVsRXZlbnRUZXN0VHJpZ2dlcigpOwog
CiAgICAgdm9pZCBzZXRTaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KGJvb2wpOwotICAgIHZv
aWQgc2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZChib29sKTsKIAogICAgIHZvaWQgcGFn
ZVN0b3BwZWRTY3JvbGxpbmcoKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE5MTA0OSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNyArMTMyLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBM
ZWdhY3lSZWNlaXZlciB7CiAgICAgTG9hZFdlYkFyY2hpdmVEYXRhKElQQzo6RGF0YVJlZmVyZW5j
ZSB3ZWJBcmNoaXZlRGF0YSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBOYXZpZ2F0
ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhTdHJpbmcgdXJsLCBXZWJDb3JlOjpJbnRQb2lu
dCBkb2N1bWVudFBvaW50LCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Qb2ludCkKIAotICAgIFJl
bG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgcmVsb2FkRnJvbU9yaWdpbiwgV2ViS2l0
OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKKyAgICBS
ZWxvYWQodWludDY0X3QgbmF2aWdhdGlvbklELCBib29sIHJlbG9hZEZyb21PcmlnaW4sIGJvb2wg
Y29udGVudEJsb2NrZXJzRW5hYmxlZCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKICAgICBTdG9wTG9hZGluZygpCiAKICAgICBTdG9wTG9h
ZGluZ0ZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCkBAIC00MjgsNyArNDI4LDYgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBDbGVhcldoZWVsRXZlbnRUZXN0VHJp
Z2dlcigpCiAgICAgU2V0U2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudChib29sIHNob3VsZFNj
YWxlVmlld1RvRml0RG9jdW1lbnQpCi0gICAgU2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxl
ZChib29sIHVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQpCiAKICNpZiBFTkFCTEUoVklERU8p
ICYmIFVTRShHU1RSRUFNRVIpCiAgICAgRGlkRW5kUmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQ
bHVnaW5zKHVpbnQzMl90IHJlc3VsdCkKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MTA0OSkKKysrIFRvb2xzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE1LTEwLTE0ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBmb3Ig
cmVsb2FkaW5nIHdpdGhvdXQgY29udGVudCBibG9ja2VycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMDU4CisgICAgICAgIHJkYXI6Ly9wcm9ibGVt
LzIyNzQyMjIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KKworICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbToKKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OmNvY29hUmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW06Cisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNvbmZpZ3VyZVZpZXdGb3JUZXN0
KToKKwogMjAxNS0xMC0xNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgog
CiAgICAgICAgIENoYW5nZSB0aGUgYnVuZGxlIGFwcCBjYWNoZSBBUElzIHRvIHRha2UgYSBwYWdl
CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2Eu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJv
bGxlckNvY29hLm1tCShyZXZpc2lvbiAxOTEwNDkpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVy
L2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyMCwxMCAr
MTIwLDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y29jb2FSZXNldFN0YXRlVG9DbwogICAgIHBs
YXRmb3JtUnVuVW50aWwoZG9uZVJlbW92aW5nLCAwKTsKICAgICBbW19XS1VzZXJDb250ZW50RXh0
ZW5zaW9uU3RvcmUgZGVmYXVsdFN0b3JlXSBfcmVtb3ZlQWxsQ29udGVudEV4dGVuc2lvbnNdOwog
Ci0gICAgaWYgKFBsYXRmb3JtV2ViVmlldyogd2ViVmlldyA9IG1haW5XZWJWaWV3KCkpIHsKKyAg
ICBpZiAoUGxhdGZvcm1XZWJWaWV3KiB3ZWJWaWV3ID0gbWFpbldlYlZpZXcoKSkKICAgICAgICAg
W3dlYlZpZXctPnBsYXRmb3JtVmlldygpLmNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9s
bGVyIF9yZW1vdmVBbGxVc2VyQ29udGVudEZpbHRlcnNdOwotICAgICAgICB3ZWJWaWV3LT5wbGF0
Zm9ybVZpZXcoKS5fdXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCA9IHRydWU7Ci0gICAgfQog
I2VuZGlmCiB9CiAKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9s
bGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RD
b250cm9sbGVyTWFjLm1tCShyZXZpc2lvbiAxOTEwNDkpCisrKyBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTIzLDExICsx
MjMsNiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNvbmZpZ3VyZVZpCiAgICAgICAg
IGRvbmVDb21waWxpbmcgPSB0cnVlOwogICAgIH1dOwogICAgIHBsYXRmb3JtUnVuVW50aWwoZG9u
ZUNvbXBpbGluZywgMCk7Ci0KLSAgICAvLyBUaGlzIGlzIGZvciBodHRwL3Rlc3RzL2NvbnRlbnRl
eHRlbnNpb25zL2Rpc2FibGUtYmxvY2tlci5odG1sCi0gICAgaWYgKCF0ZXN0LnVybENvbnRhaW5z
KCJkaXNhYmxlLWJsb2NrZXIiKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1haW5XZWJWaWV3KCkt
PnBsYXRmb3JtVmlldygpLl91c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkID0gZmFsc2U7CiAj
ZW5kaWYKIH0KIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTkxMDQ5KQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUtMTAtMTQgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJ
IGZvciByZWxvYWRpbmcgd2l0aG91dCBjb250ZW50IGJsb2NrZXJzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTAwNTgKKyAgICAgICAgcmRhcjovL3By
b2JsZW0vMjI3NDIyMjIKKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAg
ICAgICogaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9kaXNhYmxlLWJsb2NrZXItZXhwZWN0
ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMv
ZGlzYWJsZS1ibG9ja2VyLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jb250
ZW50ZXh0ZW5zaW9ucy9kaXNhYmxlLWJsb2NrZXIuaHRtbC5qc29uOiBSZW1vdmVkLgorICAgICAg
ICBfdXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCBpcyBnb2luZyB0byBiZSByZW1vdmVkLCBh
bmQgaXRzIGZ1bmN0aW9uYWxpdHkgaXMgd2hhdCB0aGlzIHRlc3QgdGVzdGVkLgorCiAyMDE1LTEw
LTE0ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAg
ICAgUkVHUkVTU0lPTihyNTMzMTgpOiBiYWNrZ3JvdW5kLXJlcGVhdDogc3BhY2Ugd2l0aCBncmFk
aWVudHMgZG9lc24ndCByZW5kZXIgY29ycmVjdGx5CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2NvbnRlbnRleHRlbnNpb25zL2Rpc2FibGUtYmxvY2tlci1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9kaXNhYmxl
LWJsb2NrZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxOTEwNDkpCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL2Rpc2FibGUtYmxvY2tlci1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTEsOSArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMTI6
IHN0YXR1czogMCwgcmVhZHlTdGF0ZToxLCByZXNwb25zZVRleHQ6IAotQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDEyOiBzdGF0dXM6IDIwMCwgcmVhZHlTdGF0ZToyLCByZXNwb25zZVRleHQ6IAotQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDEyOiBzdGF0dXM6IDIwMCwgcmVhZHlTdGF0ZTozLCByZXNwb25z
ZVRleHQ6IAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEyOiBzdGF0dXM6IDIwMCwgcmVhZHlTdGF0
ZTo0LCByZXNwb25zZVRleHQ6IFRoaXMgcGFnZSBzaG91bGQgbG9hZC4KLTxzY3JpcHQ+Ci0gICAg
Y29uc29sZS5sb2coIlRoaXMgcGFnZSBzaG91bGQgbG9hZC4iKTsKLTwvc2NyaXB0PgotCi1UaGlz
IHBhZ2Ugc2hvdWxkIGxvYWQgc3VjY2Vzc2Z1bGx5LiBUaGUgY29udGVudCBibG9ja2VyIGlzIGRp
c2FibGVkIGluIFdlYktpdFRlc3RSdW5uZXIgYmVmb3JlIGxvYWRpbmcgdGhlIHBhZ2UuCkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL2Rpc2FibGUtYmxvY2tl
ci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY29udGVudGV4dGVu
c2lvbnMvZGlzYWJsZS1ibG9ja2VyLmh0bWwJKHJldmlzaW9uIDE5MTA0OSkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvZGlzYWJsZS1ibG9ja2VyLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEsMjUgKzAsMCBAQAotPGhlYWQ+Ci08c2NyaXB0PgotaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIHNlbmRSZXF1ZXN0KCkKLXsKLSAg
ICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0gICAgeGhyLm9ucmVhZHlzdGF0ZWNo
YW5nZSA9IGZ1bmN0aW9uKCkgewotICAgICAgICBjb25zb2xlLmxvZygic3RhdHVzOiAiICsgeGhy
LnN0YXR1cyArICIsIHJlYWR5U3RhdGU6IiArIHhoci5yZWFkeVN0YXRlICsgIiwgcmVzcG9uc2VU
ZXh0OiAiICsgeGhyLnJlc3BvbnNlVGV4dCk7Ci0gICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9
PSA0KSB7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgfQot
ICAgIH0KLSAgICAKLSAgICB4aHIub3BlbigiR0VUIiwgInJlc291cmNlcy9zaG91bGQtbG9hZC5o
dG1sIiwgdHJ1ZSk7Ci0JeGhyLnNlbmQoKTsKLX0KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkg
b25sb2FkPSJzZW5kUmVxdWVzdCgpIj4KLVRoaXMgcGFnZSBzaG91bGQgbG9hZCBzdWNjZXNzZnVs
bHkuICBUaGUgY29udGVudCBibG9ja2VyIGlzIGRpc2FibGVkIGluIFdlYktpdFRlc3RSdW5uZXIg
YmVmb3JlIGxvYWRpbmcgdGhlIHBhZ2UuCi08L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL2Rpc2FibGUtYmxvY2tlci5odG1sLmpzb24KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9kaXNhYmxl
LWJsb2NrZXIuaHRtbC5qc29uCShyZXZpc2lvbiAxOTEwNDkpCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL2Rpc2FibGUtYmxvY2tlci5odG1sLmpzb24JKHdvcmtp
bmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAotWwotICAgIHsKLSAgICAgICAgImFjdGlvbiI6IHsK
LSAgICAgICAgICAgICJ0eXBlIjogImJsb2NrIgotICAgICAgICB9LAotICAgICAgICAidHJpZ2dl
ciI6IHsKLSAgICAgICAgICAgICJ1cmwtZmlsdGVyIjogIi4qIgotICAgICAgICB9Ci0gICAgfQot
XQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>