<?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>143502</bug_id>
          
          <creation_ts>2015-04-07 16:49:45 -0700</creation_ts>
          <short_desc>Expose the &quot;Share&quot; menu for links, images, and media</short_desc>
          <delta_ts>2015-11-17 02:50:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>japhet</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>ossy</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1083483</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-04-07 16:49:45 -0700</bug_when>
    <thetext>Expose the &quot;Share&quot; menu for links, images, and media

In radar rdar://problem/20435340</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083484</commentid>
    <comment_count>1</comment_count>
      <attachid>250315</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-04-07 16:50:56 -0700</bug_when>
    <thetext>Created attachment 250315
Not ready for review, EWS run - v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083486</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-07 16:52:18 -0700</bug_when>
    <thetext>Attachment 250315 did not pass style-queue:


ERROR: Source/WebKit/win/WebCoreSupport/WebContextMenuClient.h:48:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083634</commentid>
    <comment_count>3</comment_count>
      <attachid>250356</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-04-08 09:36:29 -0700</bug_when>
    <thetext>Created attachment 250356
Not ready for review, EWS run - v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083648</commentid>
    <comment_count>4</comment_count>
      <attachid>250358</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-04-08 10:28:13 -0700</bug_when>
    <thetext>Created attachment 250358
Still an evolving WIP, still want EWS on the other platforms - v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083650</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-08 10:30:20 -0700</bug_when>
    <thetext>Attachment 250358 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/WebPage/WebPage.h:1089:  The parameter name &quot;result&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ContextMenuItem.cpp:79:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 2 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083682</commentid>
    <comment_count>6</comment_count>
      <attachid>250367</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-04-08 12:05:32 -0700</bug_when>
    <thetext>Created attachment 250367
For EWS, v4

As work continues, check on all the other builds again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083694</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-08 12:37:40 -0700</bug_when>
    <thetext>Attachment 250367 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4876:  Declaration has space between type name and * in Element *URLElement  [whitespace/declaration] [3]
ERROR: Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4882:  Declaration has space between type name and * in NSDictionary *options  [whitespace/declaration] [3]
ERROR: Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4917:  Declaration has space between type name and * in DDActionContext *actionContext  [whitespace/declaration] [3]
Total errors found: 3 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083712</commentid>
    <comment_count>8</comment_count>
      <attachid>250379</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-04-08 13:06:22 -0700</bug_when>
    <thetext>Created attachment 250379
For EWS, v5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083736</commentid>
    <comment_count>9</comment_count>
      <attachid>250386</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-04-08 14:21:21 -0700</bug_when>
    <thetext>Created attachment 250386
Patch for review, v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083738</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-08 14:23:33 -0700</bug_when>
    <thetext>Attachment 250386 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083741</commentid>
    <comment_count>11</comment_count>
      <attachid>250386</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-04-08 14:30:19 -0700</bug_when>
    <thetext>Comment on attachment 250386
Patch for review, v1

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

&gt; Source/WebCore/platform/mac/ContextMenuItemMac.mm:207
&gt; +        [items.get() addObject:(NSURL *)absoluteLinkURL];

none of these .get()s in message sends are required or desirable

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.h:873
&gt; +    void populateWebHitTestResult(const WebCore::HitTestResult&amp;, bool includeImage, WebHitTestResult::Data&amp;);

I think it&apos;s pretty clear we&apos;re going to want to extend this and thus that the bool should be a bitflag instead, but I guess that can be later.

Also, should this not just be a new WebHitTestResult::Data constructor with more arguments?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083743</commentid>
    <comment_count>12</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-04-08 14:40:09 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Comment on attachment 250386 [details]
&gt; Patch for review, v1
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=250386&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/mac/ContextMenuItemMac.mm:207
&gt; &gt; +        [items.get() addObject:(NSURL *)absoluteLinkURL];
&gt; 
&gt; none of these .get()s in message sends are required or desirable

Duh!

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.h:873
&gt; &gt; +    void populateWebHitTestResult(const WebCore::HitTestResult&amp;, bool includeImage, WebHitTestResult::Data&amp;);
&gt; 
&gt; I think it&apos;s pretty clear we&apos;re going to want to extend this and thus that
&gt; the bool should be a bitflag instead, but I guess that can be later.

Agreed - I think the next flag added going forward will take us in that direction.
 
&gt; Also, should this not just be a new WebHitTestResult::Data constructor with
&gt; more arguments?

Ugh...  Yah, I guess so. I feel like leaving so much of it out in WebPageMac is terrible, but I suppose it&apos;s not too different from the status quo.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083746</commentid>
    <comment_count>13</comment_count>
      <attachid>250388</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-04-08 14:56:48 -0700</bug_when>
    <thetext>Created attachment 250388
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083763</commentid>
    <comment_count>14</comment_count>
      <attachid>250388</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-08 16:12:35 -0700</bug_when>
    <thetext>Comment on attachment 250388
Patch for landing

Clearing flags on attachment: 250388

Committed r182573: &lt;http://trac.webkit.org/changeset/182573&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250315</attachid>
            <date>2015-04-07 16:50:56 -0700</date>
            <delta_ts>2015-04-08 09:36:29 -0700</delta_ts>
            <desc>Not ready for review, EWS run - v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>18620</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCA5Y2E0M2QwLi5jZThjMjQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC01NTcsNiArNTU3LDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBzcGVhayhjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgc3RvcFNwZWFraW5nKCkgb3ZlcnJpZGUgeyB9CiAKKyAgICB2aXJ0
dWFsIENvbnRleHRNZW51SXRlbSBzaGFyZU1lbnVJdGVtKGNvbnN0IEhpdFRlc3RSZXN1bHQmKSBv
dmVycmlkZSB7IHJldHVybiBDb250ZXh0TWVudUl0ZW0oKTsgfQorCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhTcG90bGlnaHQoKSBvdmVycmlkZSB7IH0K
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNsaWVudC5oCmluZGV4IDQxYzlk
MjguLjU0YTIwMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q2xpZW50LmgKQEAg
LTU4LDkgKzU4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lk
IHNwZWFrKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHN0b3BTcGVh
a2luZygpID0gMDsKIAorICAgICAgICB2aXJ0dWFsIENvbnRleHRNZW51SXRlbSBzaGFyZU1lbnVJ
dGVtKGNvbnN0IEhpdFRlc3RSZXN1bHQmKSA9IDA7CisKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICAgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhTcG90bGlnaHQoKSA9IDA7Ci0gICAgICAgIHZp
cnR1YWwgQ29udGV4dE1lbnVJdGVtIHNoYXJlU2VsZWN0ZWRUZXh0TWVudUl0ZW0oY29uc3QgU3Ry
aW5nJiBzZWxlY3RlZFRleHQpIHsgcmV0dXJuIENvbnRleHRNZW51SXRlbTo6c2hhcmVTZWxlY3Rl
ZFRleHRNZW51SXRlbShzZWxlY3RlZFRleHQpOyB9CiAjZW5kaWYKIAogI2lmIFVTRShBQ0NFU1NJ
QklMSVRZX0NPTlRFWFRfTUVOVVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51
Q29udHJvbGxlci5jcHAKaW5kZXggZDUxMWJlYS4uZDQ0MWZhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtNzMxLDE5ICs3MzEsNiBAQCB2
b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y3JlYXRlQW5kQXBwZW5kVHJhbnNmb3JtYXRpb25z
U3ViTWVudShDb250ZXh0TWVudUl0ZQogCiAjZW5kaWYKIAotc3RhdGljIGJvb2wgc2VsZWN0aW9u
Q29udGFpbnNQb3NzaWJsZVdvcmQoRnJhbWUqIGZyYW1lKQotewotICAgIC8vIEN1cnJlbnQgYWxn
b3JpdGhtOiBsb29rIGZvciBhIGNoYXJhY3RlciB0aGF0J3Mgbm90IGp1c3QgYSBzZXBhcmF0b3Iu
Ci0gICAgZm9yIChUZXh0SXRlcmF0b3IgaXQoZnJhbWUtPnNlbGVjdGlvbigpLnRvTm9ybWFsaXpl
ZFJhbmdlKCkuZ2V0KCkpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7Ci0gICAgICAgIGlu
dCBsZW5ndGggPSBpdC50ZXh0KCkubGVuZ3RoKCk7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghKFVfR0VUX0dDX01BU0soaXQudGV4
dCgpW2ldKSAmIFVfR0NfWl9NQVNLKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KICNpZiBQTEFURk9STShDT0NP
QSkKICNkZWZpbmUgU1VQUE9SVFNfVE9HR0xFX1ZJREVPX0ZVTExTQ1JFRU4gMQogI2Vsc2UKQEAg
LTgyNiw2ICs4MTMsOCBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQog
ICAgIENvbnRleHRNZW51SXRlbSBTZWxlY3RBbGxJdGVtKEFjdGlvblR5cGUsIENvbnRleHRNZW51
SXRlbVRhZ1NlbGVjdEFsbCwgY29udGV4dE1lbnVJdGVtVGFnU2VsZWN0QWxsKCkpOwogI2VuZGlm
CiAKKyAgICBDb250ZXh0TWVudUl0ZW0gU2hhcmVNZW51SXRlbSA9IG1fY2xpZW50LnNoYXJlTWVu
dUl0ZW0obV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKSk7CisKICAgICBOb2RlKiBub2RlID0gbV9j
b250ZXh0LmhpdFRlc3RSZXN1bHQoKS5pbm5lck5vblNoYXJlZE5vZGUoKTsKICAgICBpZiAoIW5v
ZGUpCiAgICAgICAgIHJldHVybjsKQEAgLTg0NCw2ICs4MzMsOSBAQCB2b2lkIENvbnRleHRNZW51
Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogI2VuZGlmCiAKICAgICBpZiAoIW1fY29udGV4dC5oaXRU
ZXN0UmVzdWx0KCkuaXNDb250ZW50RWRpdGFibGUoKSkgeworICAgICAgICBTdHJpbmcgc2VsZWN0
ZWRTdHJpbmcgPSBtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLnNlbGVjdGVkVGV4dCgpOworICAg
ICAgICBtX2NvbnRleHQuc2V0U2VsZWN0ZWRUZXh0KHNlbGVjdGVkU3RyaW5nKTsKKwogICAgICAg
ICBGcmFtZUxvYWRlciYgbG9hZGVyID0gZnJhbWUtPmxvYWRlcigpOwogICAgICAgICBVUkwgbGlu
a1VSTCA9IG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuYWJzb2x1dGVMaW5rVVJMKCk7CiAgICAg
ICAgIGlmICghbGlua1VSTC5pc0VtcHR5KCkpIHsKQEAgLTg5MiwxMCArODg0LDggQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKIAogICAgICAgICBpZiAoaW1hZ2VVUkwu
aXNFbXB0eSgpICYmIGxpbmtVUkwuaXNFbXB0eSgpICYmIG1lZGlhVVJMLmlzRW1wdHkoKSkgewog
ICAgICAgICAgICAgaWYgKG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuaXNTZWxlY3RlZCgpKSB7
Ci0gICAgICAgICAgICAgICAgU3RyaW5nIHNlbGVjdGVkU3RyaW5nOwotICAgICAgICAgICAgICAg
IGlmIChzZWxlY3Rpb25Db250YWluc1Bvc3NpYmxlV29yZChmcmFtZSkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIXNlbGVjdGVkU3RyaW5nLmlzRW1wdHkoKSkgewogI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFN0cmluZyA9IGZyYW1lLT5kaXNwbGF5U3Ry
aW5nTW9kaWZpZWRCeUVuY29kaW5nKGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBMb29rVXBJbkRpY3Rpb25hcnlJdGVt
KEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSwgY29udGV4
dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5KHNlbGVjdGVkU3RyaW5nKSk7CiAKICAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kSXRlbShMb29rVXBJbkRpY3Rpb25hcnlJdGVtLCBtX2NvbnRl
eHRNZW51LmdldCgpKTsKQEAgLTkxMSwxMiArOTAxLDkgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRy
b2xsZXI6OnBvcHVsYXRlKCkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgICAgICAgICBh
cHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogCi0gICAg
ICAgICAgICAgICAgaWYgKCFzZWxlY3RlZFN0cmluZy5pc0VtcHR5KCkgJiYgQ29udGV4dE1lbnVJ
dGVtOjpzdXBwb3J0c1NoYXJlTWVudSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIENvbnRleHRN
ZW51SXRlbSBTaGFyZUl0ZW0obV9jbGllbnQuc2hhcmVTZWxlY3RlZFRleHRNZW51SXRlbShzZWxl
Y3RlZFN0cmluZykpOwotICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKFNoYXJlSXRlbSwg
bV9jb250ZXh0TWVudS5nZXQoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFTaGFyZU1lbnVJdGVt
LmlzTnVsbCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oU2hhcmVNZW51SXRl
bSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0o
KnNlcGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQoKSk7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgbV9jb250ZXh0LnNldFNlbGVjdGVkVGV4dChzZWxlY3RlZFN0cmluZyk7CiAgICAgICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIFNwZWVjaE1lbnVJ
dGVtKFN1Ym1lbnVUeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdTcGVlY2hNZW51LCBjb250ZXh0TWVu
dUl0ZW1UYWdTcGVlY2hNZW51KCkpOwpAQCAtOTUwLDcgKzkzNywxNSBAQCB2b2lkIENvbnRleHRN
ZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogCiAgICAgICAgICAgICAgICAgaWYgKGZyYW1lLT5w
YWdlKCkgJiYgIWZyYW1lLT5pc01haW5GcmFtZSgpKQogICAgICAgICAgICAgICAgICAgICBhcHBl
bmRJdGVtKE9wZW5GcmFtZUl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOworCisgICAgICAgICAg
ICAgICAgaWYgKCFTaGFyZU1lbnVJdGVtLmlzTnVsbCgpKSB7CisgICAgICAgICAgICAgICAgICAg
IGFwcGVuZEl0ZW0oKnNlcGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oU2hhcmVNZW51SXRlbSwgbV9jb250ZXh0TWVudS5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ug
aWYgKCFTaGFyZU1lbnVJdGVtLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBhcHBlbmRJdGVtKCpz
ZXBhcmF0b3JJdGVtKCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOworICAgICAgICAgICAgYXBwZW5k
SXRlbShTaGFyZU1lbnVJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKICAgICAgICAgfQogICAg
IH0gZWxzZSB7IC8vIE1ha2UgYW4gZWRpdGluZyBjb250ZXh0IG1lbnUKICAgICAgICAgYm9vbCBp
blBhc3N3b3JkRmllbGQgPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNJblBhc3N3
b3JkRmllbGQoKTsKQEAgLTEwMjgsMTAgKzEwMjMsMTAgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRy
b2xsZXI6OnBvcHVsYXRlKCkKICAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNlcGFyYXRvckl0ZW0o
KSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobV9jb250
ZXh0LmhpdFRlc3RSZXN1bHQoKS5pc1NlbGVjdGVkKCkgJiYgIWluUGFzc3dvcmRGaWVsZCAmJiBz
ZWxlY3Rpb25Db250YWluc1Bvc3NpYmxlV29yZChmcmFtZSkpIHsKKyAgICAgICAgU3RyaW5nIHNl
bGVjdGVkVGV4dCA9IG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuc2VsZWN0ZWRUZXh0KCk7Cisg
ICAgICAgIGlmIChtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmlzU2VsZWN0ZWQoKSAmJiAhaW5Q
YXNzd29yZEZpZWxkICYmICFzZWxlY3RlZFRleHQuaXNFbXB0eSgpKSB7CiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgICAgICAgICBTdHJpbmcgc2VsZWN0ZWRTdHJpbmcgPSBmcmFtZS0+ZGlzcGxh
eVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkp
OwotICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIExvb2tVcEluRGljdGlvbmFyeUl0ZW0oQWN0
aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5LCBjb250ZXh0TWVu
dUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkoc2VsZWN0ZWRTdHJpbmcpKTsKKyAgICAgICAgICAg
IENvbnRleHRNZW51SXRlbSBMb29rVXBJbkRpY3Rpb25hcnlJdGVtKEFjdGlvblR5cGUsIENvbnRl
eHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSwgY29udGV4dE1lbnVJdGVtVGFnTG9va1Vw
SW5EaWN0aW9uYXJ5KHNlbGVjdGVkVGV4dCkpOwogCiAgICAgICAgICAgICBhcHBlbmRJdGVtKExv
b2tVcEluRGljdGlvbmFyeUl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogI2VuZGlmCkBAIC0x
MTExLDYgKzExMDYsMTEgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkK
ICAgICAgICAgICAgIH0KICNlbmRpZgogICAgICAgICB9CisKKyAgICAgICAgaWYgKCFTaGFyZU1l
bnVJdGVtLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBhcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVt
KCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOworICAgICAgICAgICAgYXBwZW5kSXRlbShTaGFyZU1l
bnVJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaAppbmRleCAwOTA1MzRjLi43Mjc0
YTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaApAQCAtNDUs
NiArNDUsOCBAQCB0eXBlZGVmIHN0cnVjdCBfR3RrQWN0aW9uIEd0a0FjdGlvbjsKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIENvbnRleHRNZW51OworICAgIGNsYXNzIEltYWdlOwor
ICAgIGNsYXNzIFVSTDsKIAogICAgIC8vIFRoaXMgZW51bSBuZWVkcyB0byBiZSBpbiBzeW5jIHdp
dGggdGhlIFdlYk1lbnVJdGVtVGFnIGVudW0gaW4gV2ViVUlEZWxlZ2F0ZS5oIGFuZCB0aGUKICAg
ICAvLyBleHRyYSB2YWx1ZXMgaW4gV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaApAQCAtMjA2LDggKzIw
OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNldFN1Yk1lbnUoQ29u
dGV4dE1lbnUqKTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c1NoYXJlTWVudSgpOwot
ICAgICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ29udGV4dE1lbnVJdGVtIHNoYXJlU2VsZWN0
ZWRUZXh0TWVudUl0ZW0oY29uc3QgU3RyaW5nJik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBDb250ZXh0TWVudUl0ZW0gc2hhcmVNZW51SXRlbShjb25zdCBVUkwmIGFic29sdXRlTGlu
a1VSTCwgY29uc3QgVVJMJiBkb3dubG9hZGFibGVNZWRpYVVSTCwgSW1hZ2UqLCBjb25zdCBTdHJp
bmcmIHNlbGVjdGVkVGV4dCk7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgICAgIEd0a0FjdGlv
biogZ3RrQWN0aW9uKCkgY29uc3Q7CkBAIC0yMzAsNyArMjMxLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250ZXh0TWVudUl0ZW0oUGxh
dGZvcm1NZW51SXRlbURlc2NyaXB0aW9uKTsKICAgICAgICAgZXhwbGljaXQgQ29udGV4dE1lbnVJ
dGVtKENvbnRleHRNZW51KiBzdWJNZW51KTsKICAgICAgICAgQ29udGV4dE1lbnVJdGVtKENvbnRl
eHRNZW51QWN0aW9uLCBjb25zdCBTdHJpbmcmLCBib29sIGVuYWJsZWQsIGJvb2wgY2hlY2tlZCwg
VmVjdG9yPENvbnRleHRNZW51SXRlbT4mIHN1Ym1lbnVJdGVtcyk7Ci0gICAgICAgIENvbnRleHRN
ZW51SXRlbSgpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBDb250ZXh0TWVudUl0ZW0oKTsKIAog
ICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX3BsYXRmb3JtRGVzY3JpcHRp
b247IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NvbnRleHRN
ZW51SXRlbU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Db250ZXh0TWVudUl0
ZW1NYWMubW0KaW5kZXggMWZkZTg3OS4uYmRhZGEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL0NvbnRleHRNZW51SXRlbU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvQ29udGV4dE1lbnVJdGVtTWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDcgKzI5LDEzIEBACiAj
aWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAKICNpbmNsdWRlICJDb250ZXh0TWVudS5oIgorI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIaXRUZXN0
UmVzdWx0LmgiCisjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJOU01lbnVTUEkuaCIKKyNp
bmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMTkwLDE1ICsxOTYsMzQgQEAgYm9vbCBDb250ZXh0TWVudUl0ZW06OmNoZWNrZWQoKSBj
b25zdAogICAgIHJldHVybiBbbV9wbGF0Zm9ybURlc2NyaXB0aW9uLmdldCgpIHN0YXRlXSA9PSBO
U09uU3RhdGU7CiB9CiAKLWJvb2wgQ29udGV4dE1lbnVJdGVtOjpzdXBwb3J0c1NoYXJlTWVudSgp
CitDb250ZXh0TWVudUl0ZW0gQ29udGV4dE1lbnVJdGVtOjpzaGFyZU1lbnVJdGVtKGNvbnN0IFVS
TCYgYWJzb2x1dGVMaW5rVVJMLCBjb25zdCBVUkwmIGRvd25sb2FkYWJsZU1lZGlhVVJMLCBJbWFn
ZSogaW1hZ2UsIGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0KQogewotICAgIHN0YXRpYyBib29s
IHN1cHBvcnRzU2hhcmVNZW51ID0gW1tOU01lbnVJdGVtIGNsYXNzXSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKHN0YW5kYXJkU2hhcmVNZW51SXRlbVdpdGhJdGVtczopXTsKLSAgICByZXR1
cm4gc3VwcG9ydHNTaGFyZU1lbnU7Ci19CisgICAgaWYgKCFbW05TTWVudUl0ZW0gY2xhc3NdIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc3RhbmRhcmRTaGFyZU1lbnVJdGVtV2l0aEl0ZW1z
OildKQorICAgICAgICByZXR1cm4gQ29udGV4dE1lbnVJdGVtKCk7CiAKLUNvbnRleHRNZW51SXRl
bSBDb250ZXh0TWVudUl0ZW06OnNoYXJlU2VsZWN0ZWRUZXh0TWVudUl0ZW0oY29uc3QgU3RyaW5n
JiBzZWxlY3RlZFRleHQpCi17Ci0gICAgQ29udGV4dE1lbnVJdGVtIGl0ZW0oW05TTWVudUl0ZW0g
c3RhbmRhcmRTaGFyZU1lbnVJdGVtV2l0aEl0ZW1zOkBbIChOU1N0cmluZyAqKXNlbGVjdGVkVGV4
dCBdXSk7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBpdGVtcyA9IGFkb3B0TlMoW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworCisgICAgaWYgKCFhYnNvbHV0ZUxpbmtVUkwu
aXNFbXB0eSgpKQorICAgICAgICBbaXRlbXMuZ2V0KCkgYWRkT2JqZWN0OihOU1VSTCAqKWFic29s
dXRlTGlua1VSTF07CisKKyAgICBpZiAoIWRvd25sb2FkYWJsZU1lZGlhVVJMLmlzRW1wdHkoKSkK
KyAgICAgICAgW2l0ZW1zLmdldCgpIGFkZE9iamVjdDooTlNVUkwgKilkb3dubG9hZGFibGVNZWRp
YVVSTF07CisKKyAgICBpZiAoaW1hZ2UpIHsKKyAgICAgICAgTlNJbWFnZSAqbnNJbWFnZSA9IGlt
YWdlLT5nZXROU0ltYWdlKCk7CisgICAgICAgIGlmIChuc0ltYWdlKQorICAgICAgICAgICAgW2l0
ZW1zLmdldCgpIGFkZE9iamVjdDpuc0ltYWdlXTsKKyAgICB9CisKKyAgICBpZiAoIXNlbGVjdGVk
VGV4dC5pc0VtcHR5KCkpCisgICAgICAgIFtpdGVtcy5nZXQoKSBhZGRPYmplY3Q6KE5TU3RyaW5n
ICopc2VsZWN0ZWRUZXh0XTsKKworICAgIGlmICghW2l0ZW1zLmdldCgpIGNvdW50XSkKKyAgICAg
ICAgcmV0dXJuIENvbnRleHRNZW51SXRlbSgpOworCisgICAgTlNMb2coQCJDcmVhdGluZyBzaGFy
ZSBtZW51IHdpdGggaXRlbXM6XG4lQCIsIGl0ZW1zLmdldCgpKTsKKworICAgIENvbnRleHRNZW51
SXRlbSBpdGVtKFtOU01lbnVJdGVtIHN0YW5kYXJkU2hhcmVNZW51SXRlbVdpdGhJdGVtczppdGVt
cy5nZXQoKV0pOwogICAgIGl0ZW0uc2V0QWN0aW9uKENvbnRleHRNZW51SXRlbVRhZ1NoYXJlTWVu
dSk7CiAgICAgcmV0dXJuIGl0ZW07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVz
dFJlc3VsdC5jcHAKaW5kZXggYTQ4MGVmZi4uYThkYTE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIlNW
R05hbWVzLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5o
IgorI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNh
dG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVVuaXRzLmgiCiAjaW5jbHVkZSAiWExpbmtOYW1lcy5o
IgpAQCAtMTg5LDYgKzE5MCwyNiBAQCBib29sIEhpdFRlc3RSZXN1bHQ6OmlzU2VsZWN0ZWQoKSBj
b25zdAogICAgIHJldHVybiBmcmFtZS0+c2VsZWN0aW9uKCkuY29udGFpbnMobV9oaXRUZXN0TG9j
YXRpb24ucG9pbnQoKSk7CiB9CiAKK1N0cmluZyBIaXRUZXN0UmVzdWx0OjpzZWxlY3RlZFRleHQo
KSBjb25zdAoreworICAgIGlmICghbV9pbm5lck5vblNoYXJlZE5vZGUpCisgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOworCisgICAgRnJhbWUqIGZyYW1lID0gbV9pbm5lck5vblNoYXJlZE5v
ZGUtPmRvY3VtZW50KCkuZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKKworICAgIC8vIExvb2sgZm9yIGEgY2hhcmFjdGVyIHRoYXQncyBub3Qg
anVzdCBhIHNlcGFyYXRvci4KKyAgICBmb3IgKFRleHRJdGVyYXRvciBpdChmcmFtZS0+c2VsZWN0
aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNl
KCkpIHsKKyAgICAgICAgaW50IGxlbmd0aCA9IGl0LnRleHQoKS5sZW5ndGgoKTsKKyAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKCEoVV9H
RVRfR0NfTUFTSyhpdC50ZXh0KClbaV0pICYgVV9HQ19aX01BU0spKQorICAgICAgICAgICAgICAg
IHJldHVybiBmcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhmcmFtZS0+ZWRp
dG9yKCkuc2VsZWN0ZWRUZXh0KCkpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBlbXB0
eVN0cmluZygpOworfQorCiBTdHJpbmcgSGl0VGVzdFJlc3VsdDo6c3BlbGxpbmdUb29sVGlwKFRl
eHREaXJlY3Rpb24mIGRpcikgY29uc3QKIHsKICAgICBkaXIgPSBMVFI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAppbmRleCAxNDk0YzExLi5hYjFhZWM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKQEAgLTk0LDYgKzk0LDcgQEAgcHVi
bGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgRnJhbWUqIHRhcmdldEZyYW1lKCkgY29uc3Q7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1NlbGVjdGVkKCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIHNlbGVjdGVkVGV4dCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyBzcGVsbGluZ1Rvb2xUaXAoVGV4dERpcmVjdGlvbiYpIGNvbnN0OwogICAgIFN0cmluZyBy
ZXBsYWNlZFN0cmluZygpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0aXRsZShU
ZXh0RGlyZWN0aW9uJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAppbmRleCAyNjVhODNhLi4xOTRlMjA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50LmgKQEAgLTU3LDYgKzU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBpc1NwZWFraW5nKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0
IFdURjo6U3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BTcGVha2luZygp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtIHNoYXJlTWVu
dUl0ZW0oY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBzZWFyY2hXaXRoU3BvdGxpZ2h0KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHNob3dDb250ZXh0TWVudSgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCmluZGV4IDZkODYw
NjEuLjcwZTI5NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCkBAIC0zNjYsNiArMzY2LDI2IEBAIHZvaWQg
V2ViQ29udGV4dE1lbnVDbGllbnQ6OnN0b3BTcGVha2luZygpCiAgICAgW05TQXBwIHN0b3BTcGVh
a2luZzpuaWxdOwogfQogCitDb250ZXh0TWVudUl0ZW0gV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNo
YXJlTWVudUl0ZW0oY29uc3QgSGl0VGVzdFJlc3VsdCYgaGl0VGVzdFJlc3VsdCkKK3sKKyAgICBp
ZiAoIVtbTlNNZW51SXRlbSBjbGFzc10gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzdGFu
ZGFyZFNoYXJlTWVudUl0ZW1XaXRoSXRlbXM6KV0pCisgICAgICAgIHJldHVybiBDb250ZXh0TWVu
dUl0ZW0oKTsKKworICAgIE5vZGUqIG5vZGUgPSBoaXRUZXN0UmVzdWx0LmlubmVyTm9uU2hhcmVk
Tm9kZSgpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIENvbnRleHRNZW51SXRlbSgp
OworCisgICAgRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOworICAgIGlm
ICghZnJhbWUpCisgICAgICAgIHJldHVybiBDb250ZXh0TWVudUl0ZW0oKTsKKworICAgIFVSTCBk
b3dubG9hZGFibGVNZWRpYVVSTDsKKyAgICBpZiAoIWhpdFRlc3RSZXN1bHQuYWJzb2x1dGVNZWRp
YVVSTCgpLmlzRW1wdHkoKSAmJiBoaXRUZXN0UmVzdWx0LmlzRG93bmxvYWRhYmxlTWVkaWEoKSkK
KyAgICAgICAgZG93bmxvYWRhYmxlTWVkaWFVUkwgPSBoaXRUZXN0UmVzdWx0LmFic29sdXRlTWVk
aWFVUkwoKTsKKworICAgIHJldHVybiBDb250ZXh0TWVudUl0ZW06OnNoYXJlTWVudUl0ZW0oaGl0
VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKSwgZG93bmxvYWRhYmxlTWVkaWFVUkwsIGhpdFRl
c3RSZXN1bHQuaW1hZ2UoKSwgaGl0VGVzdFJlc3VsdC5zZWxlY3RlZFRleHQoKSk7Cit9CisKIGJv
b2wgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmNsaWVudEZsb2F0UmVjdEZvck5vZGUoTm9kZSYgbm9k
ZSwgRmxvYXRSZWN0JiByZWN0KSBjb25zdAogewogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIg
PSBub2RlLnJlbmRlcmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKaW5kZXggNzk0NDM2Ni4uMjdjMGEy
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50LmNwcApAQCAtMTQ0LDMgKzE0NCw5IEBAIGJvb2wgV2ViQ29udGV4
dE1lbnVDbGllbnQ6OmlzU3BlYWtpbmcoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0
dXJuIGZhbHNlOwogfQorCitib29sIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzaGFyZU1lbnVJdGVt
KGNvbnN0IEhpdFRlc3RSZXN1bHQmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIENvbnRleHRNZW51SXRlbSgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKaW5kZXggMjUxNzM2YS4uYmUx
MWM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5oCkBAIC00NSw2ICs0NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgc3RvcFNwZWFraW5nKCk7CiAgICAgdmlydHVhbCBib29sIGlzU3BlYWtpbmcoKTsK
IAorCXZpcnR1YWwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtIHNoYXJlTWVudUl0ZW0oY29uc3Qg
V2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYpOworCiBwcml2YXRlOgogICAgIFdlYlZpZXcqIG1fd2Vi
VmlldzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4
IDI3NTUxYWEuLjA2ZjBlOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCkBAIC0xMDAsNiArMTAwLDcgQEAKICNpbmNsdWRlICJXZWJQcm90ZWN0aW9uU3BhY2Uu
aCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIgogI2luY2x1ZGUg
IldlYnNpdGVEYXRhU3RvcmUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0JpdG1hcEltYWdlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9EcmFnQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJh
Z0RhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgpAQCAtNDA0Miw4ICs0MDQz
LDIzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnRlcm5hbFNob3dDb250ZXh0TWVudShjb25zdCBJ
bnRQb2ludCYgbWVudUxvY2F0aW9uLCBjb25zdCBDCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQogCi0gICAgICAgIC8vIEN1cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQgdGhlIHNoYXJl
IG1lbnUgZm9yIHRleHQgc2VsZWN0aW9uLCBzbyBjcmVhdGUgdGhlIGFwcHJvcHJpYXRlIG1lbnUg
aXRlbSBmb3IgdGhhdCB0ZXh0IHNlbGVjdGlvbiBub3cuCi0gICAgICAgIENvbnRleHRNZW51SXRl
bSBjb3JlSXRlbSA9IENvbnRleHRNZW51SXRlbTo6c2hhcmVTZWxlY3RlZFRleHRNZW51SXRlbShj
b250ZXh0TWVudUNvbnRleHREYXRhLnNlbGVjdGVkVGV4dCgpKTsKKyAgICAgICAgLy8gQ3JlYXRl
IHRoZSByZWFsIFNoYXJlIG1lbnUgaXRlbQorICAgICAgICBVUkwgYWJzb2x1dGVMaW5rVVJMOwor
ICAgICAgICBpZiAoIWNvbnRleHRNZW51Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEo
KS5hYnNvbHV0ZUxpbmtVUkwuaXNFbXB0eSgpKQorICAgICAgICAgICAgYWJzb2x1dGVMaW5rVVJM
ID0gVVJMKFBhcnNlZFVSTFN0cmluZywgY29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0
UmVzdWx0RGF0YSgpLmFic29sdXRlTGlua1VSTCk7CisKKyAgICAgICAgVVJMIGRvd25sb2FkYWJs
ZU1lZGlhVVJMOworICAgICAgICBpZiAoIWNvbnRleHRNZW51Q29udGV4dERhdGEud2ViSGl0VGVz
dFJlc3VsdERhdGEoKS5hYnNvbHV0ZU1lZGlhVVJMLmlzRW1wdHkoKSAmJiBjb250ZXh0TWVudUNv
bnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCkuaXNEb3dubG9hZGFibGVNZWRpYSkKKyAg
ICAgICAgICAgIGRvd25sb2FkYWJsZU1lZGlhVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgY29u
dGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29sdXRlTWVkaWFV
UkwpOworCisgICAgICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7CisgICAgICAgIGlmIChjb250ZXh0
TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCkuaW1hZ2VTaGFyZWRNZW1vcnkg
JiYgY29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmltYWdlU2l6
ZSkgeworICAgICAgICAgICAgaW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CisgICAgICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgodW5zaWduZWQgY2hhciopY29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0
RGF0YSgpLmltYWdlU2hhcmVkTWVtb3J5LT5kYXRhKCksIGNvbnRleHRNZW51Q29udGV4dERhdGEu
d2ViSGl0VGVzdFJlc3VsdERhdGEoKS5pbWFnZVNpemUpOworICAgICAgICAgICAgaW1hZ2UtPnNl
dERhdGEoaW1hZ2VEYXRhLnJlbGVhc2UoKSwgdHJ1ZSk7CisgICAgICAgIH0KKworICAgICAgICBD
b250ZXh0TWVudUl0ZW0gY29yZUl0ZW0gPSBDb250ZXh0TWVudUl0ZW06OnNoYXJlTWVudUl0ZW0o
YWJzb2x1dGVMaW5rVVJMLCBkb3dubG9hZGFibGVNZWRpYVVSTCwgaW1hZ2UuZ2V0KCksIGNvbnRl
eHRNZW51Q29udGV4dERhdGEuc2VsZWN0ZWRUZXh0KCkpOwogICAgICAgICBwcm9wb3NlZEFQSUl0
ZW1zLmFwcGVuZChXZWJDb250ZXh0TWVudUl0ZW06OmNyZWF0ZShjb3JlSXRlbSkpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCmluZGV4IGNlYmNkMTEuLjgwNmVjYWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHJpdmF0ZToK
ICAgICAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoV2l0aFNw
b3RsaWdodCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
IHNoYXJlU2VsZWN0ZWRUZXh0TWVudUl0ZW0oY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0gc2hhcmVNZW51SXRlbShjb25zdCBXZWJD
b3JlOjpIaXRUZXN0UmVzdWx0Jikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogI2lmIFVTRShBQ0NFU1NJ
QklMSVRZX0NPTlRFWFRfTUVOVVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkNvbnRleHRNZW51Q2xp
ZW50TWFjLm1tCmluZGV4IDEwYzQ0MDAuLjQxYjUwNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkNvbnRleHRNZW51Q2xpZW50TWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkNvbnRleHRNZW51Q2xpZW50TWFjLm1tCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgV2ViQ29udGV4
dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhTcG90bGlnaHQoKQogICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpTZWFyY2hXaXRoU3BvdGxpZ2h0KHNlbGVjdGVkU3RyaW5nKSk7
CiB9CiAKLUNvbnRleHRNZW51SXRlbSBXZWJDb250ZXh0TWVudUNsaWVudDo6c2hhcmVTZWxlY3Rl
ZFRleHRNZW51SXRlbShjb25zdCBTdHJpbmcmIHNlbGVjdGVkVGV4dCkKK0NvbnRleHRNZW51SXRl
bSBXZWJDb250ZXh0TWVudUNsaWVudDo6c2hhcmVNZW51SXRlbShjb25zdCBIaXRUZXN0UmVzdWx0
JikKIHsKICAgICByZXR1cm4gQ29udGV4dE1lbnVJdGVtKFN1Ym1lbnVUeXBlLCBDb250ZXh0TWVu
dUl0ZW1UYWdTaGFyZU1lbnUsIGVtcHR5U3RyaW5nKCkpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250356</attachid>
            <date>2015-04-08 09:36:29 -0700</date>
            <delta_ts>2015-04-08 10:28:13 -0700</delta_ts>
            <desc>Not ready for review, EWS run - v2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>20540</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCA5Y2E0M2QwLi5jZThjMjQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC01NTcsNiArNTU3LDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBzcGVhayhjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgc3RvcFNwZWFraW5nKCkgb3ZlcnJpZGUgeyB9CiAKKyAgICB2aXJ0
dWFsIENvbnRleHRNZW51SXRlbSBzaGFyZU1lbnVJdGVtKGNvbnN0IEhpdFRlc3RSZXN1bHQmKSBv
dmVycmlkZSB7IHJldHVybiBDb250ZXh0TWVudUl0ZW0oKTsgfQorCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhTcG90bGlnaHQoKSBvdmVycmlkZSB7IH0K
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNsaWVudC5oCmluZGV4IDQxYzlk
MjguLjU0YTIwMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q2xpZW50LmgKQEAg
LTU4LDkgKzU4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lk
IHNwZWFrKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHN0b3BTcGVh
a2luZygpID0gMDsKIAorICAgICAgICB2aXJ0dWFsIENvbnRleHRNZW51SXRlbSBzaGFyZU1lbnVJ
dGVtKGNvbnN0IEhpdFRlc3RSZXN1bHQmKSA9IDA7CisKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICAgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhTcG90bGlnaHQoKSA9IDA7Ci0gICAgICAgIHZp
cnR1YWwgQ29udGV4dE1lbnVJdGVtIHNoYXJlU2VsZWN0ZWRUZXh0TWVudUl0ZW0oY29uc3QgU3Ry
aW5nJiBzZWxlY3RlZFRleHQpIHsgcmV0dXJuIENvbnRleHRNZW51SXRlbTo6c2hhcmVTZWxlY3Rl
ZFRleHRNZW51SXRlbShzZWxlY3RlZFRleHQpOyB9CiAjZW5kaWYKIAogI2lmIFVTRShBQ0NFU1NJ
QklMSVRZX0NPTlRFWFRfTUVOVVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51
Q29udHJvbGxlci5jcHAKaW5kZXggZDUxMWJlYS4uZDQ0MWZhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtNzMxLDE5ICs3MzEsNiBAQCB2
b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y3JlYXRlQW5kQXBwZW5kVHJhbnNmb3JtYXRpb25z
U3ViTWVudShDb250ZXh0TWVudUl0ZQogCiAjZW5kaWYKIAotc3RhdGljIGJvb2wgc2VsZWN0aW9u
Q29udGFpbnNQb3NzaWJsZVdvcmQoRnJhbWUqIGZyYW1lKQotewotICAgIC8vIEN1cnJlbnQgYWxn
b3JpdGhtOiBsb29rIGZvciBhIGNoYXJhY3RlciB0aGF0J3Mgbm90IGp1c3QgYSBzZXBhcmF0b3Iu
Ci0gICAgZm9yIChUZXh0SXRlcmF0b3IgaXQoZnJhbWUtPnNlbGVjdGlvbigpLnRvTm9ybWFsaXpl
ZFJhbmdlKCkuZ2V0KCkpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7Ci0gICAgICAgIGlu
dCBsZW5ndGggPSBpdC50ZXh0KCkubGVuZ3RoKCk7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghKFVfR0VUX0dDX01BU0soaXQudGV4
dCgpW2ldKSAmIFVfR0NfWl9NQVNLKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KICNpZiBQTEFURk9STShDT0NP
QSkKICNkZWZpbmUgU1VQUE9SVFNfVE9HR0xFX1ZJREVPX0ZVTExTQ1JFRU4gMQogI2Vsc2UKQEAg
LTgyNiw2ICs4MTMsOCBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQog
ICAgIENvbnRleHRNZW51SXRlbSBTZWxlY3RBbGxJdGVtKEFjdGlvblR5cGUsIENvbnRleHRNZW51
SXRlbVRhZ1NlbGVjdEFsbCwgY29udGV4dE1lbnVJdGVtVGFnU2VsZWN0QWxsKCkpOwogI2VuZGlm
CiAKKyAgICBDb250ZXh0TWVudUl0ZW0gU2hhcmVNZW51SXRlbSA9IG1fY2xpZW50LnNoYXJlTWVu
dUl0ZW0obV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKSk7CisKICAgICBOb2RlKiBub2RlID0gbV9j
b250ZXh0LmhpdFRlc3RSZXN1bHQoKS5pbm5lck5vblNoYXJlZE5vZGUoKTsKICAgICBpZiAoIW5v
ZGUpCiAgICAgICAgIHJldHVybjsKQEAgLTg0NCw2ICs4MzMsOSBAQCB2b2lkIENvbnRleHRNZW51
Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogI2VuZGlmCiAKICAgICBpZiAoIW1fY29udGV4dC5oaXRU
ZXN0UmVzdWx0KCkuaXNDb250ZW50RWRpdGFibGUoKSkgeworICAgICAgICBTdHJpbmcgc2VsZWN0
ZWRTdHJpbmcgPSBtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLnNlbGVjdGVkVGV4dCgpOworICAg
ICAgICBtX2NvbnRleHQuc2V0U2VsZWN0ZWRUZXh0KHNlbGVjdGVkU3RyaW5nKTsKKwogICAgICAg
ICBGcmFtZUxvYWRlciYgbG9hZGVyID0gZnJhbWUtPmxvYWRlcigpOwogICAgICAgICBVUkwgbGlu
a1VSTCA9IG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuYWJzb2x1dGVMaW5rVVJMKCk7CiAgICAg
ICAgIGlmICghbGlua1VSTC5pc0VtcHR5KCkpIHsKQEAgLTg5MiwxMCArODg0LDggQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKIAogICAgICAgICBpZiAoaW1hZ2VVUkwu
aXNFbXB0eSgpICYmIGxpbmtVUkwuaXNFbXB0eSgpICYmIG1lZGlhVVJMLmlzRW1wdHkoKSkgewog
ICAgICAgICAgICAgaWYgKG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuaXNTZWxlY3RlZCgpKSB7
Ci0gICAgICAgICAgICAgICAgU3RyaW5nIHNlbGVjdGVkU3RyaW5nOwotICAgICAgICAgICAgICAg
IGlmIChzZWxlY3Rpb25Db250YWluc1Bvc3NpYmxlV29yZChmcmFtZSkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIXNlbGVjdGVkU3RyaW5nLmlzRW1wdHkoKSkgewogI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFN0cmluZyA9IGZyYW1lLT5kaXNwbGF5U3Ry
aW5nTW9kaWZpZWRCeUVuY29kaW5nKGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBMb29rVXBJbkRpY3Rpb25hcnlJdGVt
KEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSwgY29udGV4
dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5KHNlbGVjdGVkU3RyaW5nKSk7CiAKICAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kSXRlbShMb29rVXBJbkRpY3Rpb25hcnlJdGVtLCBtX2NvbnRl
eHRNZW51LmdldCgpKTsKQEAgLTkxMSwxMiArOTAxLDkgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRy
b2xsZXI6OnBvcHVsYXRlKCkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgICAgICAgICBh
cHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogCi0gICAg
ICAgICAgICAgICAgaWYgKCFzZWxlY3RlZFN0cmluZy5pc0VtcHR5KCkgJiYgQ29udGV4dE1lbnVJ
dGVtOjpzdXBwb3J0c1NoYXJlTWVudSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIENvbnRleHRN
ZW51SXRlbSBTaGFyZUl0ZW0obV9jbGllbnQuc2hhcmVTZWxlY3RlZFRleHRNZW51SXRlbShzZWxl
Y3RlZFN0cmluZykpOwotICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKFNoYXJlSXRlbSwg
bV9jb250ZXh0TWVudS5nZXQoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFTaGFyZU1lbnVJdGVt
LmlzTnVsbCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oU2hhcmVNZW51SXRl
bSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0o
KnNlcGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQoKSk7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgbV9jb250ZXh0LnNldFNlbGVjdGVkVGV4dChzZWxlY3RlZFN0cmluZyk7CiAgICAgICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIFNwZWVjaE1lbnVJ
dGVtKFN1Ym1lbnVUeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdTcGVlY2hNZW51LCBjb250ZXh0TWVu
dUl0ZW1UYWdTcGVlY2hNZW51KCkpOwpAQCAtOTUwLDcgKzkzNywxNSBAQCB2b2lkIENvbnRleHRN
ZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogCiAgICAgICAgICAgICAgICAgaWYgKGZyYW1lLT5w
YWdlKCkgJiYgIWZyYW1lLT5pc01haW5GcmFtZSgpKQogICAgICAgICAgICAgICAgICAgICBhcHBl
bmRJdGVtKE9wZW5GcmFtZUl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOworCisgICAgICAgICAg
ICAgICAgaWYgKCFTaGFyZU1lbnVJdGVtLmlzTnVsbCgpKSB7CisgICAgICAgICAgICAgICAgICAg
IGFwcGVuZEl0ZW0oKnNlcGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oU2hhcmVNZW51SXRlbSwgbV9jb250ZXh0TWVudS5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ug
aWYgKCFTaGFyZU1lbnVJdGVtLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBhcHBlbmRJdGVtKCpz
ZXBhcmF0b3JJdGVtKCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOworICAgICAgICAgICAgYXBwZW5k
SXRlbShTaGFyZU1lbnVJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKICAgICAgICAgfQogICAg
IH0gZWxzZSB7IC8vIE1ha2UgYW4gZWRpdGluZyBjb250ZXh0IG1lbnUKICAgICAgICAgYm9vbCBp
blBhc3N3b3JkRmllbGQgPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNJblBhc3N3
b3JkRmllbGQoKTsKQEAgLTEwMjgsMTAgKzEwMjMsMTAgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRy
b2xsZXI6OnBvcHVsYXRlKCkKICAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNlcGFyYXRvckl0ZW0o
KSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobV9jb250
ZXh0LmhpdFRlc3RSZXN1bHQoKS5pc1NlbGVjdGVkKCkgJiYgIWluUGFzc3dvcmRGaWVsZCAmJiBz
ZWxlY3Rpb25Db250YWluc1Bvc3NpYmxlV29yZChmcmFtZSkpIHsKKyAgICAgICAgU3RyaW5nIHNl
bGVjdGVkVGV4dCA9IG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuc2VsZWN0ZWRUZXh0KCk7Cisg
ICAgICAgIGlmIChtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmlzU2VsZWN0ZWQoKSAmJiAhaW5Q
YXNzd29yZEZpZWxkICYmICFzZWxlY3RlZFRleHQuaXNFbXB0eSgpKSB7CiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgICAgICAgICBTdHJpbmcgc2VsZWN0ZWRTdHJpbmcgPSBmcmFtZS0+ZGlzcGxh
eVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkp
OwotICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIExvb2tVcEluRGljdGlvbmFyeUl0ZW0oQWN0
aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5LCBjb250ZXh0TWVu
dUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkoc2VsZWN0ZWRTdHJpbmcpKTsKKyAgICAgICAgICAg
IENvbnRleHRNZW51SXRlbSBMb29rVXBJbkRpY3Rpb25hcnlJdGVtKEFjdGlvblR5cGUsIENvbnRl
eHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSwgY29udGV4dE1lbnVJdGVtVGFnTG9va1Vw
SW5EaWN0aW9uYXJ5KHNlbGVjdGVkVGV4dCkpOwogCiAgICAgICAgICAgICBhcHBlbmRJdGVtKExv
b2tVcEluRGljdGlvbmFyeUl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogI2VuZGlmCkBAIC0x
MTExLDYgKzExMDYsMTEgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkK
ICAgICAgICAgICAgIH0KICNlbmRpZgogICAgICAgICB9CisKKyAgICAgICAgaWYgKCFTaGFyZU1l
bnVJdGVtLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBhcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVt
KCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOworICAgICAgICAgICAgYXBwZW5kSXRlbShTaGFyZU1l
bnVJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5jcHAKaW5kZXggMjFkZGUwZC4u
OGI1NTQxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJ
dGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uY3Bw
CkBAIC0xMTcsMTIgKzExNyw3IEBAIGJvb2wgQ29udGV4dE1lbnVJdGVtOjplbmFibGVkKCkgY29u
c3QKICAgICByZXR1cm4gbV9lbmFibGVkOwogfQogCi1ib29sIENvbnRleHRNZW51SXRlbTo6c3Vw
cG9ydHNTaGFyZU1lbnUoKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotQ29udGV4dE1lbnVJ
dGVtIENvbnRleHRNZW51SXRlbTo6c2hhcmVTZWxlY3RlZFRleHRNZW51SXRlbShjb25zdCBTdHJp
bmcmKQorQ29udGV4dE1lbnVJdGVtIENvbnRleHRNZW51SXRlbTo6c2hhcmVNZW51SXRlbShjY29u
c3QgVVJMJiwgY29uc3QgVVJMJiwgSW1hZ2UqLCBjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVy
biBDb250ZXh0TWVudUl0ZW0oU3VibWVudVR5cGUsIENvbnRleHRNZW51SXRlbVRhZ1NoYXJlTWVu
dSwgZW1wdHlTdHJpbmcoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Db250ZXh0TWVudUl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51
SXRlbS5oCmluZGV4IDA5MDUzNGMuLmYxYjNhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0NvbnRleHRNZW51SXRlbS5oCkBAIC00NSw2ICs0NSw4IEBAIHR5cGVkZWYgc3RydWN0IF9HdGtB
Y3Rpb24gR3RrQWN0aW9uOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgQ29udGV4
dE1lbnU7CisgICAgY2xhc3MgSW1hZ2U7CisgICAgY2xhc3MgVVJMOwogCiAgICAgLy8gVGhpcyBl
bnVtIG5lZWRzIHRvIGJlIGluIHN5bmMgd2l0aCB0aGUgV2ViTWVudUl0ZW1UYWcgZW51bSBpbiBX
ZWJVSURlbGVnYXRlLmggYW5kIHRoZQogICAgIC8vIGV4dHJhIHZhbHVlcyBpbiBXZWJVSURlbGVn
YXRlUHJpdmF0ZS5oCkBAIC0yMDYsOCArMjA4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgICAgIHZvaWQgc2V0U3ViTWVudShDb250ZXh0TWVudSopOwogCi0gICAgICAgIHN0YXRpYyBi
b29sIHN1cHBvcnRzU2hhcmVNZW51KCk7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBD
b250ZXh0TWVudUl0ZW0gc2hhcmVTZWxlY3RlZFRleHRNZW51SXRlbShjb25zdCBTdHJpbmcmKTsK
KyAgICAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENvbnRleHRNZW51SXRlbSBzaGFyZU1lbnVJ
dGVtKGNvbnN0IFVSTCYgYWJzb2x1dGVMaW5rVVJMLCBjb25zdCBVUkwmIGRvd25sb2FkYWJsZU1l
ZGlhVVJMLCBJbWFnZSosIGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0KTsKIAogI2lmIFBMQVRG
T1JNKEdUSykKICAgICAgICAgR3RrQWN0aW9uKiBndGtBY3Rpb24oKSBjb25zdDsKQEAgLTIxNiw2
ICsyMTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgVVNFKENST1NTX1BMQVRGT1JNX0NP
TlRFWFRfTUVOVVMpCiAgICAgICAgIENvbnRleHRNZW51SXRlbShDb250ZXh0TWVudUFjdGlvbiwg
Y29uc3QgU3RyaW5nJiwgYm9vbCBlbmFibGVkLCBib29sIGNoZWNrZWQsIGNvbnN0IFZlY3RvcjxD
b250ZXh0TWVudUl0ZW0+JiBzdWJNZW51SXRlbXMpOwogICAgICAgICBleHBsaWNpdCBDb250ZXh0
TWVudUl0ZW0oY29uc3QgUGxhdGZvcm1Db250ZXh0TWVudUl0ZW0mKTsKKyAgICAgICAgQ29udGV4
dE1lbnVJdGVtKCk7CiAKICAgICAgICAgLy8gT24gV2luZG93cywgdGhlIHRpdGxlIChkd1R5cGVE
YXRhIG9mIHRoZSBNRU5VSVRFTUlORk8pIGlzIG5vdCBzZXQgaW4gdGhpcyBmdW5jdGlvbi4gQ2Fs
bGVycyBjYW4gc2V0IHRoZSB0aXRsZSB0aGVtc2VsdmVzLAogICAgICAgICAvLyBhbmQgaGFuZGxl
IHRoZSBsaWZldGltZSBvZiB0aGUgdGl0bGUsIGlmIHRoZXkgbmVlZCBpdC4KQEAgLTIzMCw3ICsy
MzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IENvbnRleHRNZW51SXRlbShQbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb24pOwogICAgICAg
ICBleHBsaWNpdCBDb250ZXh0TWVudUl0ZW0oQ29udGV4dE1lbnUqIHN1Yk1lbnUpOwogICAgICAg
ICBDb250ZXh0TWVudUl0ZW0oQ29udGV4dE1lbnVBY3Rpb24sIGNvbnN0IFN0cmluZyYsIGJvb2wg
ZW5hYmxlZCwgYm9vbCBjaGVja2VkLCBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiYgc3VibWVudUl0
ZW1zKTsKLSAgICAgICAgQ29udGV4dE1lbnVJdGVtKCk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JU
IENvbnRleHRNZW51SXRlbSgpOwogCiAgICAgICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1
cm4gIW1fcGxhdGZvcm1EZXNjcmlwdGlvbjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVJdGVtR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9Db250ZXh0TWVudUl0ZW1HdGsuY3BwCmluZGV4IDVhYjE0MzcuLjZjYjZjMzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Db250ZXh0TWVudUl0ZW1H
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Db250ZXh0TWVudUl0ZW1H
dGsuY3BwCkBAIC0yODgsMTIgKzI4OCw3IEBAIEd0a0FjdGlvbiogQ29udGV4dE1lbnVJdGVtOjpn
dGtBY3Rpb24oKSBjb25zdAogICAgIHJldHVybiBndGtfYWN0aXZhdGFibGVfZ2V0X3JlbGF0ZWRf
YWN0aW9uKEdUS19BQ1RJVkFUQUJMRShtX3BsYXRmb3JtRGVzY3JpcHRpb24pKTsKIH0KIAotYm9v
bCBDb250ZXh0TWVudUl0ZW06OnN1cHBvcnRzU2hhcmVNZW51KCkKLXsKLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KLUNvbnRleHRNZW51SXRlbSBDb250ZXh0TWVudUl0ZW06OnNoYXJlU2VsZWN0ZWRU
ZXh0TWVudUl0ZW0oY29uc3QgU3RyaW5nJikKK0NvbnRleHRNZW51SXRlbSBDb250ZXh0TWVudUl0
ZW06OnNoYXJlTWVudUl0ZW0oY2NvbnN0IFVSTCYsIGNvbnN0IFVSTCYsIEltYWdlKiwgY29uc3Qg
U3RyaW5nJikKIHsKICAgICByZXR1cm4gQ29udGV4dE1lbnVJdGVtKFN1Ym1lbnVUeXBlLCBDb250
ZXh0TWVudUl0ZW1UYWdTaGFyZU1lbnUsIGVtcHR5U3RyaW5nKCkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NvbnRleHRNZW51SXRlbU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Db250ZXh0TWVudUl0ZW1NYWMubW0KaW5kZXggMWZkZTg3
OS4uYmRhZGEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NvbnRl
eHRNZW51SXRlbU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ29udGV4
dE1lbnVJdGVtTWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2
LCAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDcgKzI5LDEzIEBACiAjaWYgRU5BQkxFKENPTlRFWFRfTUVO
VVMpCiAKICNpbmNsdWRlICJDb250ZXh0TWVudS5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisj
aW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVkZSAi
SW1hZ2UuaCIKICNpbmNsdWRlICJOU01lbnVTUEkuaCIKKyNpbmNsdWRlICJOb2RlLmgiCisjaW5j
bHVkZSAiVVJMLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTkwLDE1ICsxOTYsMzQg
QEAgYm9vbCBDb250ZXh0TWVudUl0ZW06OmNoZWNrZWQoKSBjb25zdAogICAgIHJldHVybiBbbV9w
bGF0Zm9ybURlc2NyaXB0aW9uLmdldCgpIHN0YXRlXSA9PSBOU09uU3RhdGU7CiB9CiAKLWJvb2wg
Q29udGV4dE1lbnVJdGVtOjpzdXBwb3J0c1NoYXJlTWVudSgpCitDb250ZXh0TWVudUl0ZW0gQ29u
dGV4dE1lbnVJdGVtOjpzaGFyZU1lbnVJdGVtKGNvbnN0IFVSTCYgYWJzb2x1dGVMaW5rVVJMLCBj
b25zdCBVUkwmIGRvd25sb2FkYWJsZU1lZGlhVVJMLCBJbWFnZSogaW1hZ2UsIGNvbnN0IFN0cmlu
ZyYgc2VsZWN0ZWRUZXh0KQogewotICAgIHN0YXRpYyBib29sIHN1cHBvcnRzU2hhcmVNZW51ID0g
W1tOU01lbnVJdGVtIGNsYXNzXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHN0YW5kYXJk
U2hhcmVNZW51SXRlbVdpdGhJdGVtczopXTsKLSAgICByZXR1cm4gc3VwcG9ydHNTaGFyZU1lbnU7
Ci19CisgICAgaWYgKCFbW05TTWVudUl0ZW0gY2xhc3NdIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3Ioc3RhbmRhcmRTaGFyZU1lbnVJdGVtV2l0aEl0ZW1zOildKQorICAgICAgICByZXR1cm4g
Q29udGV4dE1lbnVJdGVtKCk7CiAKLUNvbnRleHRNZW51SXRlbSBDb250ZXh0TWVudUl0ZW06OnNo
YXJlU2VsZWN0ZWRUZXh0TWVudUl0ZW0oY29uc3QgU3RyaW5nJiBzZWxlY3RlZFRleHQpCi17Ci0g
ICAgQ29udGV4dE1lbnVJdGVtIGl0ZW0oW05TTWVudUl0ZW0gc3RhbmRhcmRTaGFyZU1lbnVJdGVt
V2l0aEl0ZW1zOkBbIChOU1N0cmluZyAqKXNlbGVjdGVkVGV4dCBdXSk7CisgICAgUmV0YWluUHRy
PE5TTXV0YWJsZUFycmF5PiBpdGVtcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdF0pOworCisgICAgaWYgKCFhYnNvbHV0ZUxpbmtVUkwuaXNFbXB0eSgpKQorICAgICAgICBb
aXRlbXMuZ2V0KCkgYWRkT2JqZWN0OihOU1VSTCAqKWFic29sdXRlTGlua1VSTF07CisKKyAgICBp
ZiAoIWRvd25sb2FkYWJsZU1lZGlhVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgW2l0ZW1zLmdldCgp
IGFkZE9iamVjdDooTlNVUkwgKilkb3dubG9hZGFibGVNZWRpYVVSTF07CisKKyAgICBpZiAoaW1h
Z2UpIHsKKyAgICAgICAgTlNJbWFnZSAqbnNJbWFnZSA9IGltYWdlLT5nZXROU0ltYWdlKCk7Cisg
ICAgICAgIGlmIChuc0ltYWdlKQorICAgICAgICAgICAgW2l0ZW1zLmdldCgpIGFkZE9iamVjdDpu
c0ltYWdlXTsKKyAgICB9CisKKyAgICBpZiAoIXNlbGVjdGVkVGV4dC5pc0VtcHR5KCkpCisgICAg
ICAgIFtpdGVtcy5nZXQoKSBhZGRPYmplY3Q6KE5TU3RyaW5nICopc2VsZWN0ZWRUZXh0XTsKKwor
ICAgIGlmICghW2l0ZW1zLmdldCgpIGNvdW50XSkKKyAgICAgICAgcmV0dXJuIENvbnRleHRNZW51
SXRlbSgpOworCisgICAgTlNMb2coQCJDcmVhdGluZyBzaGFyZSBtZW51IHdpdGggaXRlbXM6XG4l
QCIsIGl0ZW1zLmdldCgpKTsKKworICAgIENvbnRleHRNZW51SXRlbSBpdGVtKFtOU01lbnVJdGVt
IHN0YW5kYXJkU2hhcmVNZW51SXRlbVdpdGhJdGVtczppdGVtcy5nZXQoKV0pOwogICAgIGl0ZW0u
c2V0QWN0aW9uKENvbnRleHRNZW51SXRlbVRhZ1NoYXJlTWVudSk7CiAgICAgcmV0dXJuIGl0ZW07
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggYTQ4
MGVmZi4uYThkYTE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRl
c3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0
LmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAi
U2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgorI2luY2x1ZGUgIlRleHRJdGVy
YXRvci5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiVmlz
aWJsZVVuaXRzLmgiCiAjaW5jbHVkZSAiWExpbmtOYW1lcy5oIgpAQCAtMTg5LDYgKzE5MCwyNiBA
QCBib29sIEhpdFRlc3RSZXN1bHQ6OmlzU2VsZWN0ZWQoKSBjb25zdAogICAgIHJldHVybiBmcmFt
ZS0+c2VsZWN0aW9uKCkuY29udGFpbnMobV9oaXRUZXN0TG9jYXRpb24ucG9pbnQoKSk7CiB9CiAK
K1N0cmluZyBIaXRUZXN0UmVzdWx0OjpzZWxlY3RlZFRleHQoKSBjb25zdAoreworICAgIGlmICgh
bV9pbm5lck5vblNoYXJlZE5vZGUpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisg
ICAgRnJhbWUqIGZyYW1lID0gbV9pbm5lck5vblNoYXJlZE5vZGUtPmRvY3VtZW50KCkuZnJhbWUo
KTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAg
IC8vIExvb2sgZm9yIGEgY2hhcmFjdGVyIHRoYXQncyBub3QganVzdCBhIHNlcGFyYXRvci4KKyAg
ICBmb3IgKFRleHRJdGVyYXRvciBpdChmcmFtZS0+c2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFu
Z2UoKS5nZXQoKSk7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKKyAgICAgICAgaW50IGxl
bmd0aCA9IGl0LnRleHQoKS5sZW5ndGgoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKCEoVV9HRVRfR0NfTUFTSyhpdC50ZXh0KClb
aV0pICYgVV9HQ19aX01BU0spKQorICAgICAgICAgICAgICAgIHJldHVybiBmcmFtZS0+ZGlzcGxh
eVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkp
OworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBlbXB0eVN0cmluZygpOworfQorCiBTdHJp
bmcgSGl0VGVzdFJlc3VsdDo6c3BlbGxpbmdUb29sVGlwKFRleHREaXJlY3Rpb24mIGRpcikgY29u
c3QKIHsKICAgICBkaXIgPSBMVFI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSGl0VGVzdFJlc3VsdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1
bHQuaAppbmRleCAxNDk0YzExLi5hYjFhZWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9I
aXRUZXN0UmVzdWx0LmgKQEAgLTk0LDYgKzk0LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9F
WFBPUlQgRnJhbWUqIHRhcmdldEZyYW1lKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBpc1NlbGVjdGVkKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlbGVjdGVk
VGV4dCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzcGVsbGluZ1Rvb2xUaXAo
VGV4dERpcmVjdGlvbiYpIGNvbnN0OwogICAgIFN0cmluZyByZXBsYWNlZFN0cmluZygpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0aXRsZShUZXh0RGlyZWN0aW9uJikgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQuaAppbmRleCAyNjVhODNhLi4xOTRlMjA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKQEAg
LTU3LDYgKzU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1NwZWFraW5nKCkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFdURjo6U3RyaW5nJikgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BTcGVha2luZygpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtIHNoYXJlTWVudUl0ZW0oY29uc3QgV2ViQ29yZTo6
SGl0VGVzdFJlc3VsdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoU3Bv
dGxpZ2h0KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudSgpIG92
ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCmluZGV4IDZkODYwNjEuLjcwZTI5NDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50Lm1tCkBAIC0zNjYsNiArMzY2LDI2IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6
OnN0b3BTcGVha2luZygpCiAgICAgW05TQXBwIHN0b3BTcGVha2luZzpuaWxdOwogfQogCitDb250
ZXh0TWVudUl0ZW0gV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNoYXJlTWVudUl0ZW0oY29uc3QgSGl0
VGVzdFJlc3VsdCYgaGl0VGVzdFJlc3VsdCkKK3sKKyAgICBpZiAoIVtbTlNNZW51SXRlbSBjbGFz
c10gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzdGFuZGFyZFNoYXJlTWVudUl0ZW1XaXRo
SXRlbXM6KV0pCisgICAgICAgIHJldHVybiBDb250ZXh0TWVudUl0ZW0oKTsKKworICAgIE5vZGUq
IG5vZGUgPSBoaXRUZXN0UmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpOworICAgIGlmICghbm9k
ZSkKKyAgICAgICAgcmV0dXJuIENvbnRleHRNZW51SXRlbSgpOworCisgICAgRnJhbWUqIGZyYW1l
ID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJl
dHVybiBDb250ZXh0TWVudUl0ZW0oKTsKKworICAgIFVSTCBkb3dubG9hZGFibGVNZWRpYVVSTDsK
KyAgICBpZiAoIWhpdFRlc3RSZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpLmlzRW1wdHkoKSAmJiBo
aXRUZXN0UmVzdWx0LmlzRG93bmxvYWRhYmxlTWVkaWEoKSkKKyAgICAgICAgZG93bmxvYWRhYmxl
TWVkaWFVUkwgPSBoaXRUZXN0UmVzdWx0LmFic29sdXRlTWVkaWFVUkwoKTsKKworICAgIHJldHVy
biBDb250ZXh0TWVudUl0ZW06OnNoYXJlTWVudUl0ZW0oaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxp
bmtVUkwoKSwgZG93bmxvYWRhYmxlTWVkaWFVUkwsIGhpdFRlc3RSZXN1bHQuaW1hZ2UoKSwgaGl0
VGVzdFJlc3VsdC5zZWxlY3RlZFRleHQoKSk7Cit9CisKIGJvb2wgV2ViQ29udGV4dE1lbnVDbGll
bnQ6OmNsaWVudEZsb2F0UmVjdEZvck5vZGUoTm9kZSYgbm9kZSwgRmxvYXRSZWN0JiByZWN0KSBj
b25zdAogewogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLnJlbmRlcmVyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVu
dUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5jcHAKaW5kZXggNzk0NDM2Ni4uMjdjMGEyMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNw
cApAQCAtMTQ0LDMgKzE0NCw5IEBAIGJvb2wgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmlzU3BlYWtp
bmcoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQorCitib29s
IFdlYkNvbnRleHRNZW51Q2xpZW50OjpzaGFyZU1lbnVJdGVtKGNvbnN0IEhpdFRlc3RSZXN1bHQm
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIENvbnRleHRNZW51SXRlbSgp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50LmgKaW5kZXggMjUxNzM2YS4uNTlhODhkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5o
CkBAIC00NSw2ICs0NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3RvcFNwZWFraW5n
KCk7CiAgICAgdmlydHVhbCBib29sIGlzU3BlYWtpbmcoKTsKIAorICAgIHZpcnR1YWwgV2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtIHNoYXJlTWVudUl0ZW0oY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJl
c3VsdCYpOworCiBwcml2YXRlOgogICAgIFdlYlZpZXcqIG1fd2ViVmlldzsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDI3NTUxYWEuLjA2ZjBlOTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMDAsNiAr
MTAwLDcgQEAKICNpbmNsdWRlICJXZWJQcm90ZWN0aW9uU3BhY2UuaCIKICNpbmNsdWRlICJXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL0JpdG1hcEltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9E
cmFnQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgpAQCAtNDA0Miw4ICs0MDQzLDIzIEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjppbnRlcm5hbFNob3dDb250ZXh0TWVudShjb25zdCBJbnRQb2ludCYgbWVudUxvY2F0
aW9uLCBjb25zdCBDCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAg
IC8vIEN1cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQgdGhlIHNoYXJlIG1lbnUgZm9yIHRleHQgc2Vs
ZWN0aW9uLCBzbyBjcmVhdGUgdGhlIGFwcHJvcHJpYXRlIG1lbnUgaXRlbSBmb3IgdGhhdCB0ZXh0
IHNlbGVjdGlvbiBub3cuCi0gICAgICAgIENvbnRleHRNZW51SXRlbSBjb3JlSXRlbSA9IENvbnRl
eHRNZW51SXRlbTo6c2hhcmVTZWxlY3RlZFRleHRNZW51SXRlbShjb250ZXh0TWVudUNvbnRleHRE
YXRhLnNlbGVjdGVkVGV4dCgpKTsKKyAgICAgICAgLy8gQ3JlYXRlIHRoZSByZWFsIFNoYXJlIG1l
bnUgaXRlbQorICAgICAgICBVUkwgYWJzb2x1dGVMaW5rVVJMOworICAgICAgICBpZiAoIWNvbnRl
eHRNZW51Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5hYnNvbHV0ZUxpbmtVUkwu
aXNFbXB0eSgpKQorICAgICAgICAgICAgYWJzb2x1dGVMaW5rVVJMID0gVVJMKFBhcnNlZFVSTFN0
cmluZywgY29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29s
dXRlTGlua1VSTCk7CisKKyAgICAgICAgVVJMIGRvd25sb2FkYWJsZU1lZGlhVVJMOworICAgICAg
ICBpZiAoIWNvbnRleHRNZW51Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5hYnNv
bHV0ZU1lZGlhVVJMLmlzRW1wdHkoKSAmJiBjb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRl
c3RSZXN1bHREYXRhKCkuaXNEb3dubG9hZGFibGVNZWRpYSkKKyAgICAgICAgICAgIGRvd25sb2Fk
YWJsZU1lZGlhVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgY29udGV4dE1lbnVDb250ZXh0RGF0
YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29sdXRlTWVkaWFVUkwpOworCisgICAgICAgIFJl
ZlB0cjxJbWFnZT4gaW1hZ2U7CisgICAgICAgIGlmIChjb250ZXh0TWVudUNvbnRleHREYXRhLndl
YkhpdFRlc3RSZXN1bHREYXRhKCkuaW1hZ2VTaGFyZWRNZW1vcnkgJiYgY29udGV4dE1lbnVDb250
ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmltYWdlU2l6ZSkgeworICAgICAgICAgICAg
aW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CisgICAgICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBpbWFnZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgodW5zaWduZWQgY2hhciop
Y29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmltYWdlU2hhcmVk
TWVtb3J5LT5kYXRhKCksIGNvbnRleHRNZW51Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERh
dGEoKS5pbWFnZVNpemUpOworICAgICAgICAgICAgaW1hZ2UtPnNldERhdGEoaW1hZ2VEYXRhLnJl
bGVhc2UoKSwgdHJ1ZSk7CisgICAgICAgIH0KKworICAgICAgICBDb250ZXh0TWVudUl0ZW0gY29y
ZUl0ZW0gPSBDb250ZXh0TWVudUl0ZW06OnNoYXJlTWVudUl0ZW0oYWJzb2x1dGVMaW5rVVJMLCBk
b3dubG9hZGFibGVNZWRpYVVSTCwgaW1hZ2UuZ2V0KCksIGNvbnRleHRNZW51Q29udGV4dERhdGEu
c2VsZWN0ZWRUZXh0KCkpOwogICAgICAgICBwcm9wb3NlZEFQSUl0ZW1zLmFwcGVuZChXZWJDb250
ZXh0TWVudUl0ZW06OmNyZWF0ZShjb3JlSXRlbSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVu
dC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5oCmluZGV4IGNlYmNkMTEuLjgwNmVjYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHJpdmF0ZToKICAgICAKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoV2l0aFNwb3RsaWdodCgpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtIHNoYXJlU2VsZWN0ZWRUZXh0
TWVudUl0ZW0oY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpD
b250ZXh0TWVudUl0ZW0gc2hhcmVNZW51SXRlbShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0
Jikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogI2lmIFVTRShBQ0NFU1NJQklMSVRZX0NPTlRFWFRfTUVO
VVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkNvbnRleHRNZW51Q2xpZW50TWFjLm1tCmluZGV4IDEw
YzQ0MDAuLjQxYjUwNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkNvbnRleHRNZW51Q2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkNvbnRleHRNZW51Q2xpZW50
TWFjLm1tCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJj
aFdpdGhTcG90bGlnaHQoKQogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpTZWFyY2hXaXRoU3BvdGxpZ2h0KHNlbGVjdGVkU3RyaW5nKSk7CiB9CiAKLUNvbnRleHRNZW51
SXRlbSBXZWJDb250ZXh0TWVudUNsaWVudDo6c2hhcmVTZWxlY3RlZFRleHRNZW51SXRlbShjb25z
dCBTdHJpbmcmIHNlbGVjdGVkVGV4dCkKK0NvbnRleHRNZW51SXRlbSBXZWJDb250ZXh0TWVudUNs
aWVudDo6c2hhcmVNZW51SXRlbShjb25zdCBIaXRUZXN0UmVzdWx0JikKIHsKICAgICByZXR1cm4g
Q29udGV4dE1lbnVJdGVtKFN1Ym1lbnVUeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdTaGFyZU1lbnUs
IGVtcHR5U3RyaW5nKCkpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250358</attachid>
            <date>2015-04-08 10:28:13 -0700</date>
            <delta_ts>2015-04-08 12:05:32 -0700</delta_ts>
            <desc>Still an evolving WIP, still want EWS on the other platforms - v3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>24468</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCA5Y2E0M2QwLi5jZThjMjQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC01NTcsNiArNTU3LDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBzcGVhayhjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgc3RvcFNwZWFraW5nKCkgb3ZlcnJpZGUgeyB9CiAKKyAgICB2aXJ0
dWFsIENvbnRleHRNZW51SXRlbSBzaGFyZU1lbnVJdGVtKGNvbnN0IEhpdFRlc3RSZXN1bHQmKSBv
dmVycmlkZSB7IHJldHVybiBDb250ZXh0TWVudUl0ZW0oKTsgfQorCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhTcG90bGlnaHQoKSBvdmVycmlkZSB7IH0K
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNsaWVudC5oCmluZGV4IDQxYzlk
MjguLjU0YTIwMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q2xpZW50LmgKQEAg
LTU4LDkgKzU4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lk
IHNwZWFrKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHN0b3BTcGVh
a2luZygpID0gMDsKIAorICAgICAgICB2aXJ0dWFsIENvbnRleHRNZW51SXRlbSBzaGFyZU1lbnVJ
dGVtKGNvbnN0IEhpdFRlc3RSZXN1bHQmKSA9IDA7CisKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICAgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhTcG90bGlnaHQoKSA9IDA7Ci0gICAgICAgIHZp
cnR1YWwgQ29udGV4dE1lbnVJdGVtIHNoYXJlU2VsZWN0ZWRUZXh0TWVudUl0ZW0oY29uc3QgU3Ry
aW5nJiBzZWxlY3RlZFRleHQpIHsgcmV0dXJuIENvbnRleHRNZW51SXRlbTo6c2hhcmVTZWxlY3Rl
ZFRleHRNZW51SXRlbShzZWxlY3RlZFRleHQpOyB9CiAjZW5kaWYKIAogI2lmIFVTRShBQ0NFU1NJ
QklMSVRZX0NPTlRFWFRfTUVOVVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51
Q29udHJvbGxlci5jcHAKaW5kZXggZDUxMWJlYS4uZDQ0MWZhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtNzMxLDE5ICs3MzEsNiBAQCB2
b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y3JlYXRlQW5kQXBwZW5kVHJhbnNmb3JtYXRpb25z
U3ViTWVudShDb250ZXh0TWVudUl0ZQogCiAjZW5kaWYKIAotc3RhdGljIGJvb2wgc2VsZWN0aW9u
Q29udGFpbnNQb3NzaWJsZVdvcmQoRnJhbWUqIGZyYW1lKQotewotICAgIC8vIEN1cnJlbnQgYWxn
b3JpdGhtOiBsb29rIGZvciBhIGNoYXJhY3RlciB0aGF0J3Mgbm90IGp1c3QgYSBzZXBhcmF0b3Iu
Ci0gICAgZm9yIChUZXh0SXRlcmF0b3IgaXQoZnJhbWUtPnNlbGVjdGlvbigpLnRvTm9ybWFsaXpl
ZFJhbmdlKCkuZ2V0KCkpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7Ci0gICAgICAgIGlu
dCBsZW5ndGggPSBpdC50ZXh0KCkubGVuZ3RoKCk7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghKFVfR0VUX0dDX01BU0soaXQudGV4
dCgpW2ldKSAmIFVfR0NfWl9NQVNLKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KICNpZiBQTEFURk9STShDT0NP
QSkKICNkZWZpbmUgU1VQUE9SVFNfVE9HR0xFX1ZJREVPX0ZVTExTQ1JFRU4gMQogI2Vsc2UKQEAg
LTgyNiw2ICs4MTMsOCBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQog
ICAgIENvbnRleHRNZW51SXRlbSBTZWxlY3RBbGxJdGVtKEFjdGlvblR5cGUsIENvbnRleHRNZW51
SXRlbVRhZ1NlbGVjdEFsbCwgY29udGV4dE1lbnVJdGVtVGFnU2VsZWN0QWxsKCkpOwogI2VuZGlm
CiAKKyAgICBDb250ZXh0TWVudUl0ZW0gU2hhcmVNZW51SXRlbSA9IG1fY2xpZW50LnNoYXJlTWVu
dUl0ZW0obV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKSk7CisKICAgICBOb2RlKiBub2RlID0gbV9j
b250ZXh0LmhpdFRlc3RSZXN1bHQoKS5pbm5lck5vblNoYXJlZE5vZGUoKTsKICAgICBpZiAoIW5v
ZGUpCiAgICAgICAgIHJldHVybjsKQEAgLTg0NCw2ICs4MzMsOSBAQCB2b2lkIENvbnRleHRNZW51
Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogI2VuZGlmCiAKICAgICBpZiAoIW1fY29udGV4dC5oaXRU
ZXN0UmVzdWx0KCkuaXNDb250ZW50RWRpdGFibGUoKSkgeworICAgICAgICBTdHJpbmcgc2VsZWN0
ZWRTdHJpbmcgPSBtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLnNlbGVjdGVkVGV4dCgpOworICAg
ICAgICBtX2NvbnRleHQuc2V0U2VsZWN0ZWRUZXh0KHNlbGVjdGVkU3RyaW5nKTsKKwogICAgICAg
ICBGcmFtZUxvYWRlciYgbG9hZGVyID0gZnJhbWUtPmxvYWRlcigpOwogICAgICAgICBVUkwgbGlu
a1VSTCA9IG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuYWJzb2x1dGVMaW5rVVJMKCk7CiAgICAg
ICAgIGlmICghbGlua1VSTC5pc0VtcHR5KCkpIHsKQEAgLTg5MiwxMCArODg0LDggQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKIAogICAgICAgICBpZiAoaW1hZ2VVUkwu
aXNFbXB0eSgpICYmIGxpbmtVUkwuaXNFbXB0eSgpICYmIG1lZGlhVVJMLmlzRW1wdHkoKSkgewog
ICAgICAgICAgICAgaWYgKG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuaXNTZWxlY3RlZCgpKSB7
Ci0gICAgICAgICAgICAgICAgU3RyaW5nIHNlbGVjdGVkU3RyaW5nOwotICAgICAgICAgICAgICAg
IGlmIChzZWxlY3Rpb25Db250YWluc1Bvc3NpYmxlV29yZChmcmFtZSkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIXNlbGVjdGVkU3RyaW5nLmlzRW1wdHkoKSkgewogI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFN0cmluZyA9IGZyYW1lLT5kaXNwbGF5U3Ry
aW5nTW9kaWZpZWRCeUVuY29kaW5nKGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBMb29rVXBJbkRpY3Rpb25hcnlJdGVt
KEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSwgY29udGV4
dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5KHNlbGVjdGVkU3RyaW5nKSk7CiAKICAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kSXRlbShMb29rVXBJbkRpY3Rpb25hcnlJdGVtLCBtX2NvbnRl
eHRNZW51LmdldCgpKTsKQEAgLTkxMSwxMiArOTAxLDkgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRy
b2xsZXI6OnBvcHVsYXRlKCkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgICAgICAgICBh
cHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogCi0gICAg
ICAgICAgICAgICAgaWYgKCFzZWxlY3RlZFN0cmluZy5pc0VtcHR5KCkgJiYgQ29udGV4dE1lbnVJ
dGVtOjpzdXBwb3J0c1NoYXJlTWVudSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIENvbnRleHRN
ZW51SXRlbSBTaGFyZUl0ZW0obV9jbGllbnQuc2hhcmVTZWxlY3RlZFRleHRNZW51SXRlbShzZWxl
Y3RlZFN0cmluZykpOwotICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKFNoYXJlSXRlbSwg
bV9jb250ZXh0TWVudS5nZXQoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFTaGFyZU1lbnVJdGVt
LmlzTnVsbCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oU2hhcmVNZW51SXRl
bSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0o
KnNlcGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQoKSk7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgbV9jb250ZXh0LnNldFNlbGVjdGVkVGV4dChzZWxlY3RlZFN0cmluZyk7CiAgICAgICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIFNwZWVjaE1lbnVJ
dGVtKFN1Ym1lbnVUeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdTcGVlY2hNZW51LCBjb250ZXh0TWVu
dUl0ZW1UYWdTcGVlY2hNZW51KCkpOwpAQCAtOTUwLDcgKzkzNywxNSBAQCB2b2lkIENvbnRleHRN
ZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogCiAgICAgICAgICAgICAgICAgaWYgKGZyYW1lLT5w
YWdlKCkgJiYgIWZyYW1lLT5pc01haW5GcmFtZSgpKQogICAgICAgICAgICAgICAgICAgICBhcHBl
bmRJdGVtKE9wZW5GcmFtZUl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOworCisgICAgICAgICAg
ICAgICAgaWYgKCFTaGFyZU1lbnVJdGVtLmlzTnVsbCgpKSB7CisgICAgICAgICAgICAgICAgICAg
IGFwcGVuZEl0ZW0oKnNlcGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oU2hhcmVNZW51SXRlbSwgbV9jb250ZXh0TWVudS5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ug
aWYgKCFTaGFyZU1lbnVJdGVtLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBhcHBlbmRJdGVtKCpz
ZXBhcmF0b3JJdGVtKCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOworICAgICAgICAgICAgYXBwZW5k
SXRlbShTaGFyZU1lbnVJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKICAgICAgICAgfQogICAg
IH0gZWxzZSB7IC8vIE1ha2UgYW4gZWRpdGluZyBjb250ZXh0IG1lbnUKICAgICAgICAgYm9vbCBp
blBhc3N3b3JkRmllbGQgPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNJblBhc3N3
b3JkRmllbGQoKTsKQEAgLTEwMjgsMTAgKzEwMjMsMTAgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRy
b2xsZXI6OnBvcHVsYXRlKCkKICAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNlcGFyYXRvckl0ZW0o
KSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobV9jb250
ZXh0LmhpdFRlc3RSZXN1bHQoKS5pc1NlbGVjdGVkKCkgJiYgIWluUGFzc3dvcmRGaWVsZCAmJiBz
ZWxlY3Rpb25Db250YWluc1Bvc3NpYmxlV29yZChmcmFtZSkpIHsKKyAgICAgICAgU3RyaW5nIHNl
bGVjdGVkVGV4dCA9IG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuc2VsZWN0ZWRUZXh0KCk7Cisg
ICAgICAgIGlmIChtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmlzU2VsZWN0ZWQoKSAmJiAhaW5Q
YXNzd29yZEZpZWxkICYmICFzZWxlY3RlZFRleHQuaXNFbXB0eSgpKSB7CiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgICAgICAgICBTdHJpbmcgc2VsZWN0ZWRTdHJpbmcgPSBmcmFtZS0+ZGlzcGxh
eVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkp
OwotICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIExvb2tVcEluRGljdGlvbmFyeUl0ZW0oQWN0
aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5LCBjb250ZXh0TWVu
dUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkoc2VsZWN0ZWRTdHJpbmcpKTsKKyAgICAgICAgICAg
IENvbnRleHRNZW51SXRlbSBMb29rVXBJbkRpY3Rpb25hcnlJdGVtKEFjdGlvblR5cGUsIENvbnRl
eHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSwgY29udGV4dE1lbnVJdGVtVGFnTG9va1Vw
SW5EaWN0aW9uYXJ5KHNlbGVjdGVkVGV4dCkpOwogCiAgICAgICAgICAgICBhcHBlbmRJdGVtKExv
b2tVcEluRGljdGlvbmFyeUl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogI2VuZGlmCkBAIC0x
MTExLDYgKzExMDYsMTEgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkK
ICAgICAgICAgICAgIH0KICNlbmRpZgogICAgICAgICB9CisKKyAgICAgICAgaWYgKCFTaGFyZU1l
bnVJdGVtLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBhcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVt
KCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOworICAgICAgICAgICAgYXBwZW5kSXRlbShTaGFyZU1l
bnVJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5jcHAKaW5kZXggMjFkZGUwZC4u
MjBmMDM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJ
dGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uY3Bw
CkBAIC02MiwxMCArNjIsMjMgQEAgQ29udGV4dE1lbnVJdGVtOjpDb250ZXh0TWVudUl0ZW0oQ29u
dGV4dE1lbnVBY3Rpb24gYWN0aW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLAogewogfQogCitDb250
ZXh0TWVudUl0ZW06OkNvbnRleHRNZW51SXRlbSgpCisgICAgOiBtX3R5cGUoU2VwYXJhdG9yVHlw
ZSkKKyAgICAsIG1fYWN0aW9uKENvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9uKQorICAgICwgbV9l
bmFibGVkKGZhbHNlKQorICAgICwgbV9jaGVja2VkKGZhbHNlKQoreworfQorCiBDb250ZXh0TWVu
dUl0ZW06On5Db250ZXh0TWVudUl0ZW0oKQogewogfQogCitib29sIENvbnRleHRNZW51SXRlbTo6
aXNOdWxsKCkgY29uc3QKK3sKKwlyZXR1cm4gbV9hY3Rpb24gPT0gQ29udGV4dE1lbnVJdGVtVGFn
Tm9BY3Rpb24gJiYgbV90aXRsZS5pc051bGwoKSAmJiBtX3N1Yk1lbnVJdGVtcy5pc0VtcHR5KCk7
Cit9CisKIHZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRTdWJNZW51KENvbnRleHRNZW51KiBzdWJN
ZW51KQogewogICAgIGlmIChzdWJNZW51KSB7CkBAIC0xMTcsMTIgKzEzMCw3IEBAIGJvb2wgQ29u
dGV4dE1lbnVJdGVtOjplbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gbV9lbmFibGVkOwogfQog
Ci1ib29sIENvbnRleHRNZW51SXRlbTo6c3VwcG9ydHNTaGFyZU1lbnUoKQotewotICAgIHJldHVy
biBmYWxzZTsKLX0KLQotQ29udGV4dE1lbnVJdGVtIENvbnRleHRNZW51SXRlbTo6c2hhcmVTZWxl
Y3RlZFRleHRNZW51SXRlbShjb25zdCBTdHJpbmcmKQorQ29udGV4dE1lbnVJdGVtIENvbnRleHRN
ZW51SXRlbTo6c2hhcmVNZW51SXRlbShjb25zdCBVUkwmLCBjb25zdCBVUkwmLCBJbWFnZSosIGNv
bnN0IFN0cmluZyYpCiB7CiAgICAgcmV0dXJuIENvbnRleHRNZW51SXRlbShTdWJtZW51VHlwZSwg
Q29udGV4dE1lbnVJdGVtVGFnU2hhcmVNZW51LCBlbXB0eVN0cmluZygpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKaW5kZXggMDkwNTM0Yy4uZDkwY2JkMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKQEAgLTQ1LDYgKzQ1
LDggQEAgdHlwZWRlZiBzdHJ1Y3QgX0d0a0FjdGlvbiBHdGtBY3Rpb247CiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICBjbGFzcyBDb250ZXh0TWVudTsKKyAgICBjbGFzcyBJbWFnZTsKKyAgICBj
bGFzcyBVUkw7CiAKICAgICAvLyBUaGlzIGVudW0gbmVlZHMgdG8gYmUgaW4gc3luYyB3aXRoIHRo
ZSBXZWJNZW51SXRlbVRhZyBlbnVtIGluIFdlYlVJRGVsZWdhdGUuaCBhbmQgdGhlCiAgICAgLy8g
ZXh0cmEgdmFsdWVzIGluIFdlYlVJRGVsZWdhdGVQcml2YXRlLmgKQEAgLTIwNiw4ICsyMDgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzZXRTdWJNZW51KENvbnRleHRN
ZW51Kik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNTaGFyZU1lbnUoKTsKLSAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENvbnRleHRNZW51SXRlbSBzaGFyZVNlbGVjdGVkVGV4
dE1lbnVJdGVtKGNvbnN0IFN0cmluZyYpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
Q29udGV4dE1lbnVJdGVtIHNoYXJlTWVudUl0ZW0oY29uc3QgVVJMJiBhYnNvbHV0ZUxpbmtVUkws
IGNvbnN0IFVSTCYgZG93bmxvYWRhYmxlTWVkaWFVUkwsIEltYWdlKiwgY29uc3QgU3RyaW5nJiBz
ZWxlY3RlZFRleHQpOwogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICBHdGtBY3Rpb24qIGd0
a0FjdGlvbigpIGNvbnN0OwpAQCAtMjE2LDYgKzIxNyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICNpZiBVU0UoQ1JPU1NfUExBVEZPUk1fQ09OVEVYVF9NRU5VUykKICAgICAgICAgQ29udGV4dE1l
bnVJdGVtKENvbnRleHRNZW51QWN0aW9uLCBjb25zdCBTdHJpbmcmLCBib29sIGVuYWJsZWQsIGJv
b2wgY2hlY2tlZCwgY29uc3QgVmVjdG9yPENvbnRleHRNZW51SXRlbT4mIHN1Yk1lbnVJdGVtcyk7
CiAgICAgICAgIGV4cGxpY2l0IENvbnRleHRNZW51SXRlbShjb25zdCBQbGF0Zm9ybUNvbnRleHRN
ZW51SXRlbSYpOworICAgICAgICBDb250ZXh0TWVudUl0ZW0oKTsKKworICAgICAgICBib29sIGlz
TnVsbCgpIGNvbnN0OwogCiAgICAgICAgIC8vIE9uIFdpbmRvd3MsIHRoZSB0aXRsZSAoZHdUeXBl
RGF0YSBvZiB0aGUgTUVOVUlURU1JTkZPKSBpcyBub3Qgc2V0IGluIHRoaXMgZnVuY3Rpb24uIENh
bGxlcnMgY2FuIHNldCB0aGUgdGl0bGUgdGhlbXNlbHZlcywKICAgICAgICAgLy8gYW5kIGhhbmRs
ZSB0aGUgbGlmZXRpbWUgb2YgdGhlIHRpdGxlLCBpZiB0aGV5IG5lZWQgaXQuCkBAIC0yMzAsNyAr
MjM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBDb250ZXh0TWVudUl0ZW0oUGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9uKTsKICAgICAg
ICAgZXhwbGljaXQgQ29udGV4dE1lbnVJdGVtKENvbnRleHRNZW51KiBzdWJNZW51KTsKICAgICAg
ICAgQ29udGV4dE1lbnVJdGVtKENvbnRleHRNZW51QWN0aW9uLCBjb25zdCBTdHJpbmcmLCBib29s
IGVuYWJsZWQsIGJvb2wgY2hlY2tlZCwgVmVjdG9yPENvbnRleHRNZW51SXRlbT4mIHN1Ym1lbnVJ
dGVtcyk7Ci0gICAgICAgIENvbnRleHRNZW51SXRlbSgpOworICAgICAgICBXRUJDT1JFX0VYUE9S
VCBDb250ZXh0TWVudUl0ZW0oKTsKIAogICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0
dXJuICFtX3BsYXRmb3JtRGVzY3JpcHRpb247IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51SXRlbUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVJdGVtR3RrLmNwcAppbmRleCA1YWIxNDM3Li5mNzBmZjIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVJdGVt
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVJdGVt
R3RrLmNwcApAQCAtMjg4LDEyICsyODgsNyBAQCBHdGtBY3Rpb24qIENvbnRleHRNZW51SXRlbTo6
Z3RrQWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gZ3RrX2FjdGl2YXRhYmxlX2dldF9yZWxhdGVk
X2FjdGlvbihHVEtfQUNUSVZBVEFCTEUobV9wbGF0Zm9ybURlc2NyaXB0aW9uKSk7CiB9CiAKLWJv
b2wgQ29udGV4dE1lbnVJdGVtOjpzdXBwb3J0c1NoYXJlTWVudSgpCi17Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi1Db250ZXh0TWVudUl0ZW0gQ29udGV4dE1lbnVJdGVtOjpzaGFyZVNlbGVjdGVk
VGV4dE1lbnVJdGVtKGNvbnN0IFN0cmluZyYpCitDb250ZXh0TWVudUl0ZW0gQ29udGV4dE1lbnVJ
dGVtOjpzaGFyZU1lbnVJdGVtKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYsIEltYWdlKiwgY29uc3Qg
U3RyaW5nJikKIHsKICAgICByZXR1cm4gQ29udGV4dE1lbnVJdGVtKFN1Ym1lbnVUeXBlLCBDb250
ZXh0TWVudUl0ZW1UYWdTaGFyZU1lbnUsIGVtcHR5U3RyaW5nKCkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NvbnRleHRNZW51SXRlbU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Db250ZXh0TWVudUl0ZW1NYWMubW0KaW5kZXggMWZkZTg3
OS4uYmJlYzIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NvbnRl
eHRNZW51SXRlbU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ29udGV4
dE1lbnVJdGVtTWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2
LCAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDcgKzI5LDEzIEBACiAjaWYgRU5BQkxFKENPTlRFWFRfTUVO
VVMpCiAKICNpbmNsdWRlICJDb250ZXh0TWVudS5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisj
aW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVkZSAi
SW1hZ2UuaCIKICNpbmNsdWRlICJOU01lbnVTUEkuaCIKKyNpbmNsdWRlICJOb2RlLmgiCisjaW5j
bHVkZSAiVVJMLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTkwLDE1ICsxOTYsMzUg
QEAgYm9vbCBDb250ZXh0TWVudUl0ZW06OmNoZWNrZWQoKSBjb25zdAogICAgIHJldHVybiBbbV9w
bGF0Zm9ybURlc2NyaXB0aW9uLmdldCgpIHN0YXRlXSA9PSBOU09uU3RhdGU7CiB9CiAKLWJvb2wg
Q29udGV4dE1lbnVJdGVtOjpzdXBwb3J0c1NoYXJlTWVudSgpCitDb250ZXh0TWVudUl0ZW0gQ29u
dGV4dE1lbnVJdGVtOjpzaGFyZU1lbnVJdGVtKGNvbnN0IFVSTCYgYWJzb2x1dGVMaW5rVVJMLCBj
b25zdCBVUkwmIGRvd25sb2FkYWJsZU1lZGlhVVJMLCBJbWFnZSogaW1hZ2UsIGNvbnN0IFN0cmlu
ZyYgc2VsZWN0ZWRUZXh0KQogewotICAgIHN0YXRpYyBib29sIHN1cHBvcnRzU2hhcmVNZW51ID0g
W1tOU01lbnVJdGVtIGNsYXNzXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHN0YW5kYXJk
U2hhcmVNZW51SXRlbVdpdGhJdGVtczopXTsKLSAgICByZXR1cm4gc3VwcG9ydHNTaGFyZU1lbnU7
Ci19CisgICAgaWYgKCFbW05TTWVudUl0ZW0gY2xhc3NdIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3Ioc3RhbmRhcmRTaGFyZU1lbnVJdGVtV2l0aEl0ZW1zOildKQorICAgICAgICByZXR1cm4g
Q29udGV4dE1lbnVJdGVtKCk7CiAKLUNvbnRleHRNZW51SXRlbSBDb250ZXh0TWVudUl0ZW06OnNo
YXJlU2VsZWN0ZWRUZXh0TWVudUl0ZW0oY29uc3QgU3RyaW5nJiBzZWxlY3RlZFRleHQpCi17Ci0g
ICAgQ29udGV4dE1lbnVJdGVtIGl0ZW0oW05TTWVudUl0ZW0gc3RhbmRhcmRTaGFyZU1lbnVJdGVt
V2l0aEl0ZW1zOkBbIChOU1N0cmluZyAqKXNlbGVjdGVkVGV4dCBdXSk7CisgICAgUmV0YWluUHRy
PE5TTXV0YWJsZUFycmF5PiBpdGVtcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdF0pOworCisgICAgaWYgKCFhYnNvbHV0ZUxpbmtVUkwuaXNFbXB0eSgpKQorICAgICAgICBb
aXRlbXMuZ2V0KCkgYWRkT2JqZWN0OihOU1VSTCAqKWFic29sdXRlTGlua1VSTF07CisKKyAgICBp
ZiAoIWRvd25sb2FkYWJsZU1lZGlhVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgW2l0ZW1zLmdldCgp
IGFkZE9iamVjdDooTlNVUkwgKilkb3dubG9hZGFibGVNZWRpYVVSTF07CisKKyAgICBpZiAoaW1h
Z2UpIHsKKyAgICAgICAgTlNJbWFnZSAqbnNJbWFnZSA9IGltYWdlLT5nZXROU0ltYWdlKCk7Cisg
ICAgICAgIGlmIChuc0ltYWdlKQorICAgICAgICAgICAgW2l0ZW1zLmdldCgpIGFkZE9iamVjdDpu
c0ltYWdlXTsKKyAgICB9CisKKyAgICBpZiAoIXNlbGVjdGVkVGV4dC5pc0VtcHR5KCkpCisgICAg
ICAgIFtpdGVtcy5nZXQoKSBhZGRPYmplY3Q6KE5TU3RyaW5nICopc2VsZWN0ZWRUZXh0XTsKKwor
CisgICAgTlNMb2coQCJDcmVhdGluZyBzaGFyZSBtZW51IHdpdGggaXRlbXM6XG4lQCIsIGl0ZW1z
LmdldCgpKTsKKworICAgIGlmICghW2l0ZW1zLmdldCgpIGNvdW50XSkKKyAgICAgICAgcmV0dXJu
IENvbnRleHRNZW51SXRlbSgpOworCisgICAgQ29udGV4dE1lbnVJdGVtIGl0ZW0oW05TTWVudUl0
ZW0gc3RhbmRhcmRTaGFyZU1lbnVJdGVtV2l0aEl0ZW1zOml0ZW1zLmdldCgpXSk7CiAgICAgaXRl
bS5zZXRBY3Rpb24oQ29udGV4dE1lbnVJdGVtVGFnU2hhcmVNZW51KTsKICAgICByZXR1cm4gaXRl
bTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCBh
NDgwZWZmLi5hOGRhMTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0
VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1
bHQuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRl
ICJTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCisjaW5jbHVkZSAiVGV4dEl0
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJW
aXNpYmxlVW5pdHMuaCIKICNpbmNsdWRlICJYTGlua05hbWVzLmgiCkBAIC0xODksNiArMTkwLDI2
IEBAIGJvb2wgSGl0VGVzdFJlc3VsdDo6aXNTZWxlY3RlZCgpIGNvbnN0CiAgICAgcmV0dXJuIGZy
YW1lLT5zZWxlY3Rpb24oKS5jb250YWlucyhtX2hpdFRlc3RMb2NhdGlvbi5wb2ludCgpKTsKIH0K
IAorU3RyaW5nIEhpdFRlc3RSZXN1bHQ6OnNlbGVjdGVkVGV4dCgpIGNvbnN0Cit7CisgICAgaWYg
KCFtX2lubmVyTm9uU2hhcmVkTm9kZSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisK
KyAgICBGcmFtZSogZnJhbWUgPSBtX2lubmVyTm9uU2hhcmVkTm9kZS0+ZG9jdW1lbnQoKS5mcmFt
ZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisg
ICAgLy8gTG9vayBmb3IgYSBjaGFyYWN0ZXIgdGhhdCdzIG5vdCBqdXN0IGEgc2VwYXJhdG9yLgor
ICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KGZyYW1lLT5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRS
YW5nZSgpLmdldCgpKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgeworICAgICAgICBpbnQg
bGVuZ3RoID0gaXQudGV4dCgpLmxlbmd0aCgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAoIShVX0dFVF9HQ19NQVNLKGl0LnRleHQo
KVtpXSkgJiBVX0dDX1pfTUFTSykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5kaXNw
bGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQo
KSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Cit9CisKIFN0
cmluZyBIaXRUZXN0UmVzdWx0OjpzcGVsbGluZ1Rvb2xUaXAoVGV4dERpcmVjdGlvbiYgZGlyKSBj
b25zdAogewogICAgIGRpciA9IExUUjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9IaXRUZXN0UmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJl
c3VsdC5oCmluZGV4IDE0OTRjMTEuLmFiMWFlYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0hpdFRlc3RSZXN1bHQuaApAQCAtOTQsNiArOTQsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBGcmFtZSogdGFyZ2V0RnJhbWUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGlzU2VsZWN0ZWQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc2VsZWN0
ZWRUZXh0KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNwZWxsaW5nVG9vbFRp
cChUZXh0RGlyZWN0aW9uJikgY29uc3Q7CiAgICAgU3RyaW5nIHJlcGxhY2VkU3RyaW5nKCkgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRpdGxlKFRleHREaXJlY3Rpb24mKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250
ZXh0TWVudUNsaWVudC5oCmluZGV4IDI2NWE4M2EuLjE5NGUyMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApA
QCAtNTcsNiArNTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzU3BlYWtpbmcoKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoY29uc3QgV1RGOjpTdHJpbmcmKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcFNwZWFraW5nKCkgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0gc2hhcmVNZW51SXRlbShjb25zdCBXZWJDb3Jl
OjpIaXRUZXN0UmVzdWx0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhT
cG90bGlnaHQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KCkg
b3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KaW5kZXggNmQ4NjA2MS4uNzBlMjk0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGll
bnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1l
bnVDbGllbnQubW0KQEAgLTM2Niw2ICszNjYsMjYgQEAgdm9pZCBXZWJDb250ZXh0TWVudUNsaWVu
dDo6c3RvcFNwZWFraW5nKCkKICAgICBbTlNBcHAgc3RvcFNwZWFraW5nOm5pbF07CiB9CiAKK0Nv
bnRleHRNZW51SXRlbSBXZWJDb250ZXh0TWVudUNsaWVudDo6c2hhcmVNZW51SXRlbShjb25zdCBI
aXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVzdWx0KQoreworICAgIGlmICghW1tOU01lbnVJdGVtIGNs
YXNzXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHN0YW5kYXJkU2hhcmVNZW51SXRlbVdp
dGhJdGVtczopXSkKKyAgICAgICAgcmV0dXJuIENvbnRleHRNZW51SXRlbSgpOworCisgICAgTm9k
ZSogbm9kZSA9IGhpdFRlc3RSZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCk7CisgICAgaWYgKCFu
b2RlKQorICAgICAgICByZXR1cm4gQ29udGV4dE1lbnVJdGVtKCk7CisKKyAgICBGcmFtZSogZnJh
bWUgPSBub2RlLT5kb2N1bWVudCgpLmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAg
cmV0dXJuIENvbnRleHRNZW51SXRlbSgpOworCisgICAgVVJMIGRvd25sb2FkYWJsZU1lZGlhVVJM
OworICAgIGlmICghaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZU1lZGlhVVJMKCkuaXNFbXB0eSgpICYm
IGhpdFRlc3RSZXN1bHQuaXNEb3dubG9hZGFibGVNZWRpYSgpKQorICAgICAgICBkb3dubG9hZGFi
bGVNZWRpYVVSTCA9IGhpdFRlc3RSZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpOworCisgICAgcmV0
dXJuIENvbnRleHRNZW51SXRlbTo6c2hhcmVNZW51SXRlbShoaXRUZXN0UmVzdWx0LmFic29sdXRl
TGlua1VSTCgpLCBkb3dubG9hZGFibGVNZWRpYVVSTCwgaGl0VGVzdFJlc3VsdC5pbWFnZSgpLCBo
aXRUZXN0UmVzdWx0LnNlbGVjdGVkVGV4dCgpKTsKK30KKwogYm9vbCBXZWJDb250ZXh0TWVudUNs
aWVudDo6Y2xpZW50RmxvYXRSZWN0Rm9yTm9kZShOb2RlJiBub2RlLCBGbG9hdFJlY3QmIHJlY3Qp
IGNvbnN0CiB7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUucmVuZGVyZXIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50LmNwcAppbmRleCA3OTQ0MzY2Li4yN2MwYTIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQu
Y3BwCkBAIC0xNDQsMyArMTQ0LDkgQEAgYm9vbCBXZWJDb250ZXh0TWVudUNsaWVudDo6aXNTcGVh
a2luZygpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CisKK2Jv
b2wgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNoYXJlTWVudUl0ZW0oY29uc3QgSGl0VGVzdFJlc3Vs
dCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gQ29udGV4dE1lbnVJdGVt
KCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJD
b250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
Q29udGV4dE1lbnVDbGllbnQuaAppbmRleCAyNTE3MzZhLi41OWE4OGRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
LmgKQEAgLTQ1LDYgKzQ1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdG9wU3BlYWtp
bmcoKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTcGVha2luZygpOwogCisgICAgdmlydHVhbCBXZWJD
b3JlOjpDb250ZXh0TWVudUl0ZW0gc2hhcmVNZW51SXRlbShjb25zdCBXZWJDb3JlOjpIaXRUZXN0
UmVzdWx0Jik7CisKIHByaXZhdGU6CiAgICAgV2ViVmlldyogbV93ZWJWaWV3OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMjc1NTFhYS4uMDZmMGU5
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEwMCw2
ICsxMDAsNyBAQAogI2luY2x1ZGUgIldlYlByb3RlY3Rpb25TcGFjZS5oIgogI2luY2x1ZGUgIldl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9y
ZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0RyYWdDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CkBAIC00MDQyLDggKzQwNDMsMjMgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmludGVybmFsU2hvd0NvbnRleHRNZW51KGNvbnN0IEludFBvaW50JiBtZW51TG9j
YXRpb24sIGNvbnN0IEMKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAg
ICAgLy8gQ3VycmVudGx5IHdlIG9ubHkgc3VwcG9ydCB0aGUgc2hhcmUgbWVudSBmb3IgdGV4dCBz
ZWxlY3Rpb24sIHNvIGNyZWF0ZSB0aGUgYXBwcm9wcmlhdGUgbWVudSBpdGVtIGZvciB0aGF0IHRl
eHQgc2VsZWN0aW9uIG5vdy4KLSAgICAgICAgQ29udGV4dE1lbnVJdGVtIGNvcmVJdGVtID0gQ29u
dGV4dE1lbnVJdGVtOjpzaGFyZVNlbGVjdGVkVGV4dE1lbnVJdGVtKGNvbnRleHRNZW51Q29udGV4
dERhdGEuc2VsZWN0ZWRUZXh0KCkpOworICAgICAgICAvLyBDcmVhdGUgdGhlIHJlYWwgU2hhcmUg
bWVudSBpdGVtCisgICAgICAgIFVSTCBhYnNvbHV0ZUxpbmtVUkw7CisgICAgICAgIGlmICghY29u
dGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29sdXRlTGlua1VS
TC5pc0VtcHR5KCkpCisgICAgICAgICAgICBhYnNvbHV0ZUxpbmtVUkwgPSBVUkwoUGFyc2VkVVJM
U3RyaW5nLCBjb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCkuYWJz
b2x1dGVMaW5rVVJMKTsKKworICAgICAgICBVUkwgZG93bmxvYWRhYmxlTWVkaWFVUkw7CisgICAg
ICAgIGlmICghY29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFi
c29sdXRlTWVkaWFVUkwuaXNFbXB0eSgpICYmIGNvbnRleHRNZW51Q29udGV4dERhdGEud2ViSGl0
VGVzdFJlc3VsdERhdGEoKS5pc0Rvd25sb2FkYWJsZU1lZGlhKQorICAgICAgICAgICAgZG93bmxv
YWRhYmxlTWVkaWFVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBjb250ZXh0TWVudUNvbnRleHRE
YXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCkuYWJzb2x1dGVNZWRpYVVSTCk7CisKKyAgICAgICAg
UmVmUHRyPEltYWdlPiBpbWFnZTsKKyAgICAgICAgaWYgKGNvbnRleHRNZW51Q29udGV4dERhdGEu
d2ViSGl0VGVzdFJlc3VsdERhdGEoKS5pbWFnZVNoYXJlZE1lbW9yeSAmJiBjb250ZXh0TWVudUNv
bnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCkuaW1hZ2VTaXplKSB7CisgICAgICAgICAg
ICBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGltYWdlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCh1bnNpZ25lZCBjaGFy
Kiljb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCkuaW1hZ2VTaGFy
ZWRNZW1vcnktPmRhdGEoKSwgY29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0
RGF0YSgpLmltYWdlU2l6ZSk7CisgICAgICAgICAgICBpbWFnZS0+c2V0RGF0YShpbWFnZURhdGEu
cmVsZWFzZSgpLCB0cnVlKTsKKyAgICAgICAgfQorCisgICAgICAgIENvbnRleHRNZW51SXRlbSBj
b3JlSXRlbSA9IENvbnRleHRNZW51SXRlbTo6c2hhcmVNZW51SXRlbShhYnNvbHV0ZUxpbmtVUkws
IGRvd25sb2FkYWJsZU1lZGlhVVJMLCBpbWFnZS5nZXQoKSwgY29udGV4dE1lbnVDb250ZXh0RGF0
YS5zZWxlY3RlZFRleHQoKSk7CiAgICAgICAgIHByb3Bvc2VkQVBJSXRlbXMuYXBwZW5kKFdlYkNv
bnRleHRNZW51SXRlbTo6Y3JlYXRlKGNvcmVJdGVtKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA2MTE0MzA4
Li4zNDAwYjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KQEAgLTI0NywxMSArMjQ3LDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVBy
b3h5IHsKICAgICBTaG93UG9wdXBNZW51KFdlYkNvcmU6OkludFJlY3QgcmVjdCwgdWludDY0X3Qg
dGV4dERpcmVjdGlvbiwgVmVjdG9yPFdlYktpdDo6V2ViUG9wdXBJdGVtPiBpdGVtcywgaW50MzJf
dCBzZWxlY3RlZEluZGV4LCBzdHJ1Y3QgV2ViS2l0OjpQbGF0Zm9ybVBvcHVwTWVudURhdGEgZGF0
YSkKICAgICBIaWRlUG9wdXBNZW51KCkKIAotI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAg
ICMgQ29udGV4dE1lbnUgbWVzc2FnZXMKLSAgICBTaG93Q29udGV4dE1lbnUoV2ViQ29yZTo6SW50
UG9pbnQgbWVudUxvY2F0aW9uLCBXZWJLaXQ6OkNvbnRleHRNZW51Q29udGV4dERhdGEgY29udGV4
dE1lbnVDb250ZXh0RGF0YSwgVmVjdG9yPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4g
aXRlbXMsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCi0jZW5kaWYKLQogICAgICMgQXV0aGVu
dGljYXRpb24gbWVzc2FnZXMKICAgICBDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlSW5GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UgcHJv
dGVjdGlvblNwYWNlKSAtPiAoYm9vbCBjYW5BdXRoZW50aWNhdGUpCiAgICAgRGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQpCkBAIC00MjYs
NiArNDIxLDEwIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIERpZFBlcmZvcm1BY3Rpb25NZW51SGl0VGVzdChzdHJ1Y3QgV2ViS2l0OjpXZWJIaXRU
ZXN0UmVzdWx0OjpEYXRhIHJlc3VsdCwgYm9vbCBmb3JJbW1lZGlhdGVBY3Rpb24sIGJvb2wgY29u
dGVudFByZXZlbnRzRGVmYXVsdCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICNlbmRpZgor
I2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorICAgIFNob3dDb250ZXh0TWVudShXZWJDb3JlOjpJ
bnRQb2ludCBtZW51TG9jYXRpb24sIFdlYktpdDo6Q29udGV4dE1lbnVDb250ZXh0RGF0YSBjb250
ZXh0TWVudUNvbnRleHREYXRhLCBWZWN0b3I8V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRh
PiBpdGVtcywgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyNlbmRpZgorCiAgICAgSGFuZGxl
TWVzc2FnZShTdHJpbmcgbWVzc2FnZU5hbWUsIFdlYktpdDo6VXNlckRhdGEgbWVzc2FnZUJvZHkp
IFdhbnRzQ29ubmVjdGlvbgogICAgIEhhbmRsZVN5bmNocm9ub3VzTWVzc2FnZShTdHJpbmcgbWVz
c2FnZU5hbWUsIFdlYktpdDo6VXNlckRhdGEgbWVzc2FnZUJvZHkpIC0+IChXZWJLaXQ6OlVzZXJE
YXRhIHJldHVybkRhdGEpIFdhbnRzQ29ubmVjdGlvbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xp
ZW50LmgKaW5kZXggY2ViY2QxMS4uODA2ZWNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGll
bnQuaApAQCAtNjAsNyArNjAsNyBAQCBwcml2YXRlOgogICAgIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoU3BvdGxpZ2h0KCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0gc2hhcmVTZWxlY3RlZFRleHRNZW51SXRl
bShjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkNvbnRleHRN
ZW51SXRlbSBzaGFyZU1lbnVJdGVtKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmKSBvdmVy
cmlkZTsKICNlbmRpZgogCiAjaWYgVVNFKEFDQ0VTU0lCSUxJVFlfQ09OVEVYVF9NRU5VUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkNvbnRleHRNZW51Q2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW0KaW5kZXggMTBjNDQwMC4u
NDFiNTA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW0K
QEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2VhcmNoV2l0aFNw
b3RsaWdodCgpCiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNlYXJj
aFdpdGhTcG90bGlnaHQoc2VsZWN0ZWRTdHJpbmcpKTsKIH0KIAotQ29udGV4dE1lbnVJdGVtIFdl
YkNvbnRleHRNZW51Q2xpZW50OjpzaGFyZVNlbGVjdGVkVGV4dE1lbnVJdGVtKGNvbnN0IFN0cmlu
ZyYgc2VsZWN0ZWRUZXh0KQorQ29udGV4dE1lbnVJdGVtIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpz
aGFyZU1lbnVJdGVtKGNvbnN0IEhpdFRlc3RSZXN1bHQmKQogewogICAgIHJldHVybiBDb250ZXh0
TWVudUl0ZW0oU3VibWVudVR5cGUsIENvbnRleHRNZW51SXRlbVRhZ1NoYXJlTWVudSwgZW1wdHlT
dHJpbmcoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAppbmRleCBjM2E2Mzg1Li44MzQyOTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJTaGFyZWFibGVC
aXRtYXAuaCIKICNpbmNsdWRlICJVc2VyRGF0YS5oIgogI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlci5oIgorI2luY2x1ZGUgIldlYkhpdFRlc3RSZXN1bHQuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0RpY3RhdGlvbkFsdGVybmF0aXZlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9EcmFnRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yLmg+CkBAIC0xMDg1LDYgKzEw
ODYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVwb3J0VXNlZEZlYXR1cmVzKCk7CiAKICNpZiBQ
TEFURk9STShNQUMpCisgICAgdm9pZCBwZXJmb3JtRnVsbEhpdFRlc3QoY29uc3QgV2ViQ29yZTo6
SGl0VGVzdFJlc3VsdCYsIFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGEmIHJlc3VsdCk7CiAgICAgdm9p
ZCBwZXJmb3JtQWN0aW9uTWVudUhpdFRlc3RBdExvY2F0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQs
IGJvb2wgZm9ySW1tZWRpYXRlQWN0aW9uKTsKICAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlJhbmdl
PiBsb29rdXBUZXh0QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50LCBOU0RpY3Rpb25hcnkg
KipvcHRpb25zKTsKICAgICB2b2lkIHNlbGVjdExhc3RBY3Rpb25NZW51UmFuZ2UoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpp
bmRleCAwOGJiNjJmLi4wZDA3ZDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0xMDExLDYgKzEwMTEsMTEgQEAgc3Rh
dGljIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uIHRleHRJbmRpY2F0b3JUcmFu
c2l0aW9uRm9yQWN0aW9uTWVudSgKICAgICByZXR1cm4gZm9ySW1tZWRpYXRlQWN0aW9uID8gVGV4
dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246OkZhZGVJbiA6IFRleHRJbmRpY2F0b3JQ
cmVzZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2U7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6cGVyZm9y
bUZ1bGxIaXRUZXN0KGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIGhpdFRlc3QsIFdlYkhp
dFRlc3RSZXN1bHQ6OkRhdGEmIHJlc3VsdCkKK3sKKworfQorCiB2b2lkIFdlYlBhZ2U6OnBlcmZv
cm1BY3Rpb25NZW51SGl0VGVzdEF0TG9jYXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBsb2NhdGlv
bkluVmlld0Nvb29yZGluYXRlcywgYm9vbCBmb3JJbW1lZGlhdGVBY3Rpb24pCiB7CiAgICAgbGF5
b3V0SWZOZWVkZWQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250367</attachid>
            <date>2015-04-08 12:05:32 -0700</date>
            <delta_ts>2015-04-08 13:06:22 -0700</delta_ts>
            <desc>For EWS, v4</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>37094</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCA5Y2E0M2QwLi5jZThjMjQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC01NTcsNiArNTU3LDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBzcGVhayhjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgc3RvcFNwZWFraW5nKCkgb3ZlcnJpZGUgeyB9CiAKKyAgICB2aXJ0
dWFsIENvbnRleHRNZW51SXRlbSBzaGFyZU1lbnVJdGVtKGNvbnN0IEhpdFRlc3RSZXN1bHQmKSBv
dmVycmlkZSB7IHJldHVybiBDb250ZXh0TWVudUl0ZW0oKTsgfQorCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhTcG90bGlnaHQoKSBvdmVycmlkZSB7IH0K
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNsaWVudC5oCmluZGV4IDQxYzlk
MjguLjU0YTIwMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q2xpZW50LmgKQEAg
LTU4LDkgKzU4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lk
IHNwZWFrKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHN0b3BTcGVh
a2luZygpID0gMDsKIAorICAgICAgICB2aXJ0dWFsIENvbnRleHRNZW51SXRlbSBzaGFyZU1lbnVJ
dGVtKGNvbnN0IEhpdFRlc3RSZXN1bHQmKSA9IDA7CisKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICAgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhTcG90bGlnaHQoKSA9IDA7Ci0gICAgICAgIHZp
cnR1YWwgQ29udGV4dE1lbnVJdGVtIHNoYXJlU2VsZWN0ZWRUZXh0TWVudUl0ZW0oY29uc3QgU3Ry
aW5nJiBzZWxlY3RlZFRleHQpIHsgcmV0dXJuIENvbnRleHRNZW51SXRlbTo6c2hhcmVTZWxlY3Rl
ZFRleHRNZW51SXRlbShzZWxlY3RlZFRleHQpOyB9CiAjZW5kaWYKIAogI2lmIFVTRShBQ0NFU1NJ
QklMSVRZX0NPTlRFWFRfTUVOVVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51
Q29udHJvbGxlci5jcHAKaW5kZXggZDUxMWJlYS4uZDQ0MWZhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtNzMxLDE5ICs3MzEsNiBAQCB2
b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y3JlYXRlQW5kQXBwZW5kVHJhbnNmb3JtYXRpb25z
U3ViTWVudShDb250ZXh0TWVudUl0ZQogCiAjZW5kaWYKIAotc3RhdGljIGJvb2wgc2VsZWN0aW9u
Q29udGFpbnNQb3NzaWJsZVdvcmQoRnJhbWUqIGZyYW1lKQotewotICAgIC8vIEN1cnJlbnQgYWxn
b3JpdGhtOiBsb29rIGZvciBhIGNoYXJhY3RlciB0aGF0J3Mgbm90IGp1c3QgYSBzZXBhcmF0b3Iu
Ci0gICAgZm9yIChUZXh0SXRlcmF0b3IgaXQoZnJhbWUtPnNlbGVjdGlvbigpLnRvTm9ybWFsaXpl
ZFJhbmdlKCkuZ2V0KCkpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7Ci0gICAgICAgIGlu
dCBsZW5ndGggPSBpdC50ZXh0KCkubGVuZ3RoKCk7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghKFVfR0VUX0dDX01BU0soaXQudGV4
dCgpW2ldKSAmIFVfR0NfWl9NQVNLKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KICNpZiBQTEFURk9STShDT0NP
QSkKICNkZWZpbmUgU1VQUE9SVFNfVE9HR0xFX1ZJREVPX0ZVTExTQ1JFRU4gMQogI2Vsc2UKQEAg
LTgyNiw2ICs4MTMsOCBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQog
ICAgIENvbnRleHRNZW51SXRlbSBTZWxlY3RBbGxJdGVtKEFjdGlvblR5cGUsIENvbnRleHRNZW51
SXRlbVRhZ1NlbGVjdEFsbCwgY29udGV4dE1lbnVJdGVtVGFnU2VsZWN0QWxsKCkpOwogI2VuZGlm
CiAKKyAgICBDb250ZXh0TWVudUl0ZW0gU2hhcmVNZW51SXRlbSA9IG1fY2xpZW50LnNoYXJlTWVu
dUl0ZW0obV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKSk7CisKICAgICBOb2RlKiBub2RlID0gbV9j
b250ZXh0LmhpdFRlc3RSZXN1bHQoKS5pbm5lck5vblNoYXJlZE5vZGUoKTsKICAgICBpZiAoIW5v
ZGUpCiAgICAgICAgIHJldHVybjsKQEAgLTg0NCw2ICs4MzMsOSBAQCB2b2lkIENvbnRleHRNZW51
Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogI2VuZGlmCiAKICAgICBpZiAoIW1fY29udGV4dC5oaXRU
ZXN0UmVzdWx0KCkuaXNDb250ZW50RWRpdGFibGUoKSkgeworICAgICAgICBTdHJpbmcgc2VsZWN0
ZWRTdHJpbmcgPSBtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLnNlbGVjdGVkVGV4dCgpOworICAg
ICAgICBtX2NvbnRleHQuc2V0U2VsZWN0ZWRUZXh0KHNlbGVjdGVkU3RyaW5nKTsKKwogICAgICAg
ICBGcmFtZUxvYWRlciYgbG9hZGVyID0gZnJhbWUtPmxvYWRlcigpOwogICAgICAgICBVUkwgbGlu
a1VSTCA9IG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuYWJzb2x1dGVMaW5rVVJMKCk7CiAgICAg
ICAgIGlmICghbGlua1VSTC5pc0VtcHR5KCkpIHsKQEAgLTg5MiwxMCArODg0LDggQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKIAogICAgICAgICBpZiAoaW1hZ2VVUkwu
aXNFbXB0eSgpICYmIGxpbmtVUkwuaXNFbXB0eSgpICYmIG1lZGlhVVJMLmlzRW1wdHkoKSkgewog
ICAgICAgICAgICAgaWYgKG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuaXNTZWxlY3RlZCgpKSB7
Ci0gICAgICAgICAgICAgICAgU3RyaW5nIHNlbGVjdGVkU3RyaW5nOwotICAgICAgICAgICAgICAg
IGlmIChzZWxlY3Rpb25Db250YWluc1Bvc3NpYmxlV29yZChmcmFtZSkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIXNlbGVjdGVkU3RyaW5nLmlzRW1wdHkoKSkgewogI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFN0cmluZyA9IGZyYW1lLT5kaXNwbGF5U3Ry
aW5nTW9kaWZpZWRCeUVuY29kaW5nKGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBMb29rVXBJbkRpY3Rpb25hcnlJdGVt
KEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSwgY29udGV4
dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5KHNlbGVjdGVkU3RyaW5nKSk7CiAKICAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kSXRlbShMb29rVXBJbkRpY3Rpb25hcnlJdGVtLCBtX2NvbnRl
eHRNZW51LmdldCgpKTsKQEAgLTkxMSwxMiArOTAxLDkgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRy
b2xsZXI6OnBvcHVsYXRlKCkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgICAgICAgICBh
cHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogCi0gICAg
ICAgICAgICAgICAgaWYgKCFzZWxlY3RlZFN0cmluZy5pc0VtcHR5KCkgJiYgQ29udGV4dE1lbnVJ
dGVtOjpzdXBwb3J0c1NoYXJlTWVudSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIENvbnRleHRN
ZW51SXRlbSBTaGFyZUl0ZW0obV9jbGllbnQuc2hhcmVTZWxlY3RlZFRleHRNZW51SXRlbShzZWxl
Y3RlZFN0cmluZykpOwotICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKFNoYXJlSXRlbSwg
bV9jb250ZXh0TWVudS5nZXQoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFTaGFyZU1lbnVJdGVt
LmlzTnVsbCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oU2hhcmVNZW51SXRl
bSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0o
KnNlcGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQoKSk7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgbV9jb250ZXh0LnNldFNlbGVjdGVkVGV4dChzZWxlY3RlZFN0cmluZyk7CiAgICAgICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIFNwZWVjaE1lbnVJ
dGVtKFN1Ym1lbnVUeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdTcGVlY2hNZW51LCBjb250ZXh0TWVu
dUl0ZW1UYWdTcGVlY2hNZW51KCkpOwpAQCAtOTUwLDcgKzkzNywxNSBAQCB2b2lkIENvbnRleHRN
ZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogCiAgICAgICAgICAgICAgICAgaWYgKGZyYW1lLT5w
YWdlKCkgJiYgIWZyYW1lLT5pc01haW5GcmFtZSgpKQogICAgICAgICAgICAgICAgICAgICBhcHBl
bmRJdGVtKE9wZW5GcmFtZUl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOworCisgICAgICAgICAg
ICAgICAgaWYgKCFTaGFyZU1lbnVJdGVtLmlzTnVsbCgpKSB7CisgICAgICAgICAgICAgICAgICAg
IGFwcGVuZEl0ZW0oKnNlcGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oU2hhcmVNZW51SXRlbSwgbV9jb250ZXh0TWVudS5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ug
aWYgKCFTaGFyZU1lbnVJdGVtLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBhcHBlbmRJdGVtKCpz
ZXBhcmF0b3JJdGVtKCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOworICAgICAgICAgICAgYXBwZW5k
SXRlbShTaGFyZU1lbnVJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKICAgICAgICAgfQogICAg
IH0gZWxzZSB7IC8vIE1ha2UgYW4gZWRpdGluZyBjb250ZXh0IG1lbnUKICAgICAgICAgYm9vbCBp
blBhc3N3b3JkRmllbGQgPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNJblBhc3N3
b3JkRmllbGQoKTsKQEAgLTEwMjgsMTAgKzEwMjMsMTAgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRy
b2xsZXI6OnBvcHVsYXRlKCkKICAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNlcGFyYXRvckl0ZW0o
KSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobV9jb250
ZXh0LmhpdFRlc3RSZXN1bHQoKS5pc1NlbGVjdGVkKCkgJiYgIWluUGFzc3dvcmRGaWVsZCAmJiBz
ZWxlY3Rpb25Db250YWluc1Bvc3NpYmxlV29yZChmcmFtZSkpIHsKKyAgICAgICAgU3RyaW5nIHNl
bGVjdGVkVGV4dCA9IG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuc2VsZWN0ZWRUZXh0KCk7Cisg
ICAgICAgIGlmIChtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmlzU2VsZWN0ZWQoKSAmJiAhaW5Q
YXNzd29yZEZpZWxkICYmICFzZWxlY3RlZFRleHQuaXNFbXB0eSgpKSB7CiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgICAgICAgICBTdHJpbmcgc2VsZWN0ZWRTdHJpbmcgPSBmcmFtZS0+ZGlzcGxh
eVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkp
OwotICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIExvb2tVcEluRGljdGlvbmFyeUl0ZW0oQWN0
aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5LCBjb250ZXh0TWVu
dUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkoc2VsZWN0ZWRTdHJpbmcpKTsKKyAgICAgICAgICAg
IENvbnRleHRNZW51SXRlbSBMb29rVXBJbkRpY3Rpb25hcnlJdGVtKEFjdGlvblR5cGUsIENvbnRl
eHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSwgY29udGV4dE1lbnVJdGVtVGFnTG9va1Vw
SW5EaWN0aW9uYXJ5KHNlbGVjdGVkVGV4dCkpOwogCiAgICAgICAgICAgICBhcHBlbmRJdGVtKExv
b2tVcEluRGljdGlvbmFyeUl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogI2VuZGlmCkBAIC0x
MTExLDYgKzExMDYsMTEgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkK
ICAgICAgICAgICAgIH0KICNlbmRpZgogICAgICAgICB9CisKKyAgICAgICAgaWYgKCFTaGFyZU1l
bnVJdGVtLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBhcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVt
KCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOworICAgICAgICAgICAgYXBwZW5kSXRlbShTaGFyZU1l
bnVJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5jcHAKaW5kZXggMjFkZGUwZC4u
OTJlM2MwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJ
dGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uY3Bw
CkBAIC02MiwxMCArNjIsMjMgQEAgQ29udGV4dE1lbnVJdGVtOjpDb250ZXh0TWVudUl0ZW0oQ29u
dGV4dE1lbnVBY3Rpb24gYWN0aW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLAogewogfQogCitDb250
ZXh0TWVudUl0ZW06OkNvbnRleHRNZW51SXRlbSgpCisgICAgOiBtX3R5cGUoU2VwYXJhdG9yVHlw
ZSkKKyAgICAsIG1fYWN0aW9uKENvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9uKQorICAgICwgbV9l
bmFibGVkKGZhbHNlKQorICAgICwgbV9jaGVja2VkKGZhbHNlKQoreworfQorCiBDb250ZXh0TWVu
dUl0ZW06On5Db250ZXh0TWVudUl0ZW0oKQogewogfQogCitib29sIENvbnRleHRNZW51SXRlbTo6
aXNOdWxsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9hY3Rpb24gPT0gQ29udGV4dE1lbnVJdGVt
VGFnTm9BY3Rpb24gJiYgbV90aXRsZS5pc051bGwoKSAmJiBtX3N1Yk1lbnVJdGVtcy5pc0VtcHR5
KCk7Cit9CisKIHZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRTdWJNZW51KENvbnRleHRNZW51KiBz
dWJNZW51KQogewogICAgIGlmIChzdWJNZW51KSB7CkBAIC0xMTcsMTIgKzEzMCw3IEBAIGJvb2wg
Q29udGV4dE1lbnVJdGVtOjplbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gbV9lbmFibGVkOwog
fQogCi1ib29sIENvbnRleHRNZW51SXRlbTo6c3VwcG9ydHNTaGFyZU1lbnUoKQotewotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotQ29udGV4dE1lbnVJdGVtIENvbnRleHRNZW51SXRlbTo6c2hhcmVT
ZWxlY3RlZFRleHRNZW51SXRlbShjb25zdCBTdHJpbmcmKQorQ29udGV4dE1lbnVJdGVtIENvbnRl
eHRNZW51SXRlbTo6c2hhcmVNZW51SXRlbShjb25zdCBVUkwmLCBjb25zdCBVUkwmLCBJbWFnZSos
IGNvbnN0IFN0cmluZyYpCiB7CiAgICAgcmV0dXJuIENvbnRleHRNZW51SXRlbShTdWJtZW51VHlw
ZSwgQ29udGV4dE1lbnVJdGVtVGFnU2hhcmVNZW51LCBlbXB0eVN0cmluZygpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKaW5kZXggMDkwNTM0Yy4uZDkwY2Jk
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKQEAgLTQ1LDYg
KzQ1LDggQEAgdHlwZWRlZiBzdHJ1Y3QgX0d0a0FjdGlvbiBHdGtBY3Rpb247CiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICBjbGFzcyBDb250ZXh0TWVudTsKKyAgICBjbGFzcyBJbWFnZTsKKyAg
ICBjbGFzcyBVUkw7CiAKICAgICAvLyBUaGlzIGVudW0gbmVlZHMgdG8gYmUgaW4gc3luYyB3aXRo
IHRoZSBXZWJNZW51SXRlbVRhZyBlbnVtIGluIFdlYlVJRGVsZWdhdGUuaCBhbmQgdGhlCiAgICAg
Ly8gZXh0cmEgdmFsdWVzIGluIFdlYlVJRGVsZWdhdGVQcml2YXRlLmgKQEAgLTIwNiw4ICsyMDgs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzZXRTdWJNZW51KENvbnRl
eHRNZW51Kik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNTaGFyZU1lbnUoKTsKLSAg
ICAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENvbnRleHRNZW51SXRlbSBzaGFyZVNlbGVjdGVk
VGV4dE1lbnVJdGVtKGNvbnN0IFN0cmluZyYpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgQ29udGV4dE1lbnVJdGVtIHNoYXJlTWVudUl0ZW0oY29uc3QgVVJMJiBhYnNvbHV0ZUxpbmtV
UkwsIGNvbnN0IFVSTCYgZG93bmxvYWRhYmxlTWVkaWFVUkwsIEltYWdlKiwgY29uc3QgU3RyaW5n
JiBzZWxlY3RlZFRleHQpOwogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICBHdGtBY3Rpb24q
IGd0a0FjdGlvbigpIGNvbnN0OwpAQCAtMjE2LDYgKzIxNyw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICNpZiBVU0UoQ1JPU1NfUExBVEZPUk1fQ09OVEVYVF9NRU5VUykKICAgICAgICAgQ29udGV4
dE1lbnVJdGVtKENvbnRleHRNZW51QWN0aW9uLCBjb25zdCBTdHJpbmcmLCBib29sIGVuYWJsZWQs
IGJvb2wgY2hlY2tlZCwgY29uc3QgVmVjdG9yPENvbnRleHRNZW51SXRlbT4mIHN1Yk1lbnVJdGVt
cyk7CiAgICAgICAgIGV4cGxpY2l0IENvbnRleHRNZW51SXRlbShjb25zdCBQbGF0Zm9ybUNvbnRl
eHRNZW51SXRlbSYpOworICAgICAgICBDb250ZXh0TWVudUl0ZW0oKTsKKworICAgICAgICBib29s
IGlzTnVsbCgpIGNvbnN0OwogCiAgICAgICAgIC8vIE9uIFdpbmRvd3MsIHRoZSB0aXRsZSAoZHdU
eXBlRGF0YSBvZiB0aGUgTUVOVUlURU1JTkZPKSBpcyBub3Qgc2V0IGluIHRoaXMgZnVuY3Rpb24u
IENhbGxlcnMgY2FuIHNldCB0aGUgdGl0bGUgdGhlbXNlbHZlcywKICAgICAgICAgLy8gYW5kIGhh
bmRsZSB0aGUgbGlmZXRpbWUgb2YgdGhlIHRpdGxlLCBpZiB0aGV5IG5lZWQgaXQuCkBAIC0yMzAs
NyArMjM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBDb250ZXh0TWVudUl0ZW0oUGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9uKTsKICAg
ICAgICAgZXhwbGljaXQgQ29udGV4dE1lbnVJdGVtKENvbnRleHRNZW51KiBzdWJNZW51KTsKICAg
ICAgICAgQ29udGV4dE1lbnVJdGVtKENvbnRleHRNZW51QWN0aW9uLCBjb25zdCBTdHJpbmcmLCBi
b29sIGVuYWJsZWQsIGJvb2wgY2hlY2tlZCwgVmVjdG9yPENvbnRleHRNZW51SXRlbT4mIHN1Ym1l
bnVJdGVtcyk7Ci0gICAgICAgIENvbnRleHRNZW51SXRlbSgpOworICAgICAgICBXRUJDT1JFX0VY
UE9SVCBDb250ZXh0TWVudUl0ZW0oKTsKIAogICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsg
cmV0dXJuICFtX3BsYXRmb3JtRGVzY3JpcHRpb247IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51SXRlbUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVJdGVtR3RrLmNwcAppbmRleCA1YWIxNDM3Li5mNzBm
ZjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVJ
dGVtR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVJ
dGVtR3RrLmNwcApAQCAtMjg4LDEyICsyODgsNyBAQCBHdGtBY3Rpb24qIENvbnRleHRNZW51SXRl
bTo6Z3RrQWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gZ3RrX2FjdGl2YXRhYmxlX2dldF9yZWxh
dGVkX2FjdGlvbihHVEtfQUNUSVZBVEFCTEUobV9wbGF0Zm9ybURlc2NyaXB0aW9uKSk7CiB9CiAK
LWJvb2wgQ29udGV4dE1lbnVJdGVtOjpzdXBwb3J0c1NoYXJlTWVudSgpCi17Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi1Db250ZXh0TWVudUl0ZW0gQ29udGV4dE1lbnVJdGVtOjpzaGFyZVNlbGVj
dGVkVGV4dE1lbnVJdGVtKGNvbnN0IFN0cmluZyYpCitDb250ZXh0TWVudUl0ZW0gQ29udGV4dE1l
bnVJdGVtOjpzaGFyZU1lbnVJdGVtKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYsIEltYWdlKiwgY29u
c3QgU3RyaW5nJikKIHsKICAgICByZXR1cm4gQ29udGV4dE1lbnVJdGVtKFN1Ym1lbnVUeXBlLCBD
b250ZXh0TWVudUl0ZW1UYWdTaGFyZU1lbnUsIGVtcHR5U3RyaW5nKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NvbnRleHRNZW51SXRlbU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Db250ZXh0TWVudUl0ZW1NYWMubW0KaW5kZXggMWZk
ZTg3OS4uYmJlYzIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Nv
bnRleHRNZW51SXRlbU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ29u
dGV4dE1lbnVJdGVtTWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA2LCAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDcgKzI5LDEzIEBACiAjaWYgRU5BQkxFKENPTlRFWFRf
TUVOVVMpCiAKICNpbmNsdWRlICJDb250ZXh0TWVudS5oIgorI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVk
ZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJOU01lbnVTUEkuaCIKKyNpbmNsdWRlICJOb2RlLmgiCisj
aW5jbHVkZSAiVVJMLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTkwLDE1ICsxOTYs
MzUgQEAgYm9vbCBDb250ZXh0TWVudUl0ZW06OmNoZWNrZWQoKSBjb25zdAogICAgIHJldHVybiBb
bV9wbGF0Zm9ybURlc2NyaXB0aW9uLmdldCgpIHN0YXRlXSA9PSBOU09uU3RhdGU7CiB9CiAKLWJv
b2wgQ29udGV4dE1lbnVJdGVtOjpzdXBwb3J0c1NoYXJlTWVudSgpCitDb250ZXh0TWVudUl0ZW0g
Q29udGV4dE1lbnVJdGVtOjpzaGFyZU1lbnVJdGVtKGNvbnN0IFVSTCYgYWJzb2x1dGVMaW5rVVJM
LCBjb25zdCBVUkwmIGRvd25sb2FkYWJsZU1lZGlhVVJMLCBJbWFnZSogaW1hZ2UsIGNvbnN0IFN0
cmluZyYgc2VsZWN0ZWRUZXh0KQogewotICAgIHN0YXRpYyBib29sIHN1cHBvcnRzU2hhcmVNZW51
ID0gW1tOU01lbnVJdGVtIGNsYXNzXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHN0YW5k
YXJkU2hhcmVNZW51SXRlbVdpdGhJdGVtczopXTsKLSAgICByZXR1cm4gc3VwcG9ydHNTaGFyZU1l
bnU7Ci19CisgICAgaWYgKCFbW05TTWVudUl0ZW0gY2xhc3NdIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3Ioc3RhbmRhcmRTaGFyZU1lbnVJdGVtV2l0aEl0ZW1zOildKQorICAgICAgICByZXR1
cm4gQ29udGV4dE1lbnVJdGVtKCk7CiAKLUNvbnRleHRNZW51SXRlbSBDb250ZXh0TWVudUl0ZW06
OnNoYXJlU2VsZWN0ZWRUZXh0TWVudUl0ZW0oY29uc3QgU3RyaW5nJiBzZWxlY3RlZFRleHQpCi17
Ci0gICAgQ29udGV4dE1lbnVJdGVtIGl0ZW0oW05TTWVudUl0ZW0gc3RhbmRhcmRTaGFyZU1lbnVJ
dGVtV2l0aEl0ZW1zOkBbIChOU1N0cmluZyAqKXNlbGVjdGVkVGV4dCBdXSk7CisgICAgUmV0YWlu
UHRyPE5TTXV0YWJsZUFycmF5PiBpdGVtcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdF0pOworCisgICAgaWYgKCFhYnNvbHV0ZUxpbmtVUkwuaXNFbXB0eSgpKQorICAgICAg
ICBbaXRlbXMuZ2V0KCkgYWRkT2JqZWN0OihOU1VSTCAqKWFic29sdXRlTGlua1VSTF07CisKKyAg
ICBpZiAoIWRvd25sb2FkYWJsZU1lZGlhVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgW2l0ZW1zLmdl
dCgpIGFkZE9iamVjdDooTlNVUkwgKilkb3dubG9hZGFibGVNZWRpYVVSTF07CisKKyAgICBpZiAo
aW1hZ2UpIHsKKyAgICAgICAgTlNJbWFnZSAqbnNJbWFnZSA9IGltYWdlLT5nZXROU0ltYWdlKCk7
CisgICAgICAgIGlmIChuc0ltYWdlKQorICAgICAgICAgICAgW2l0ZW1zLmdldCgpIGFkZE9iamVj
dDpuc0ltYWdlXTsKKyAgICB9CisKKyAgICBpZiAoIXNlbGVjdGVkVGV4dC5pc0VtcHR5KCkpCisg
ICAgICAgIFtpdGVtcy5nZXQoKSBhZGRPYmplY3Q6KE5TU3RyaW5nICopc2VsZWN0ZWRUZXh0XTsK
KworCisgICAgTlNMb2coQCJDcmVhdGluZyBzaGFyZSBtZW51IHdpdGggaXRlbXM6XG4lQCIsIGl0
ZW1zLmdldCgpKTsKKworICAgIGlmICghW2l0ZW1zLmdldCgpIGNvdW50XSkKKyAgICAgICAgcmV0
dXJuIENvbnRleHRNZW51SXRlbSgpOworCisgICAgQ29udGV4dE1lbnVJdGVtIGl0ZW0oW05TTWVu
dUl0ZW0gc3RhbmRhcmRTaGFyZU1lbnVJdGVtV2l0aEl0ZW1zOml0ZW1zLmdldCgpXSk7CiAgICAg
aXRlbS5zZXRBY3Rpb24oQ29udGV4dE1lbnVJdGVtVGFnU2hhcmVNZW51KTsKICAgICByZXR1cm4g
aXRlbTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRl
eCBhNDgwZWZmLi5hOGRhMTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RS
ZXN1bHQuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNs
dWRlICJTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCisjaW5jbHVkZSAiVGV4
dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRl
ICJWaXNpYmxlVW5pdHMuaCIKICNpbmNsdWRlICJYTGlua05hbWVzLmgiCkBAIC0xODksNiArMTkw
LDI2IEBAIGJvb2wgSGl0VGVzdFJlc3VsdDo6aXNTZWxlY3RlZCgpIGNvbnN0CiAgICAgcmV0dXJu
IGZyYW1lLT5zZWxlY3Rpb24oKS5jb250YWlucyhtX2hpdFRlc3RMb2NhdGlvbi5wb2ludCgpKTsK
IH0KIAorU3RyaW5nIEhpdFRlc3RSZXN1bHQ6OnNlbGVjdGVkVGV4dCgpIGNvbnN0Cit7CisgICAg
aWYgKCFtX2lubmVyTm9uU2hhcmVkTm9kZSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CisKKyAgICBGcmFtZSogZnJhbWUgPSBtX2lubmVyTm9uU2hhcmVkTm9kZS0+ZG9jdW1lbnQoKS5m
cmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwor
CisgICAgLy8gTG9vayBmb3IgYSBjaGFyYWN0ZXIgdGhhdCdzIG5vdCBqdXN0IGEgc2VwYXJhdG9y
LgorICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KGZyYW1lLT5zZWxlY3Rpb24oKS50b05vcm1hbGl6
ZWRSYW5nZSgpLmdldCgpKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgeworICAgICAgICBp
bnQgbGVuZ3RoID0gaXQudGV4dCgpLmxlbmd0aCgpOworICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAoIShVX0dFVF9HQ19NQVNLKGl0LnRl
eHQoKVtpXSkgJiBVX0dDX1pfTUFTSykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5k
aXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRl
eHQoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Cit9CisK
IFN0cmluZyBIaXRUZXN0UmVzdWx0OjpzcGVsbGluZ1Rvb2xUaXAoVGV4dERpcmVjdGlvbiYgZGly
KSBjb25zdAogewogICAgIGRpciA9IExUUjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9IaXRUZXN0UmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVz
dFJlc3VsdC5oCmluZGV4IDE0OTRjMTEuLmFiMWFlYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0hpdFRlc3RSZXN1bHQuaApAQCAtOTQsNiArOTQsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBGcmFtZSogdGFyZ2V0RnJhbWUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGlzU2VsZWN0ZWQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc2Vs
ZWN0ZWRUZXh0KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNwZWxsaW5nVG9v
bFRpcChUZXh0RGlyZWN0aW9uJikgY29uc3Q7CiAgICAgU3RyaW5nIHJlcGxhY2VkU3RyaW5nKCkg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRpdGxlKFRleHREaXJlY3Rpb24mKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
b250ZXh0TWVudUNsaWVudC5oCmluZGV4IDI2NWE4M2EuLjE5NGUyMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQu
aApAQCAtNTcsNiArNTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzU3BlYWtpbmco
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoY29uc3QgV1RGOjpTdHJpbmcmKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcFNwZWFraW5nKCkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0gc2hhcmVNZW51SXRlbShjb25zdCBXZWJD
b3JlOjpIaXRUZXN0UmVzdWx0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdp
dGhTcG90bGlnaHQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51
KCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KaW5kZXggNmQ4NjA2MS4uNzBlMjk0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQubW0KQEAgLTM2Niw2ICszNjYsMjYgQEAgdm9pZCBXZWJDb250ZXh0TWVudUNs
aWVudDo6c3RvcFNwZWFraW5nKCkKICAgICBbTlNBcHAgc3RvcFNwZWFraW5nOm5pbF07CiB9CiAK
K0NvbnRleHRNZW51SXRlbSBXZWJDb250ZXh0TWVudUNsaWVudDo6c2hhcmVNZW51SXRlbShjb25z
dCBIaXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVzdWx0KQoreworICAgIGlmICghW1tOU01lbnVJdGVt
IGNsYXNzXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHN0YW5kYXJkU2hhcmVNZW51SXRl
bVdpdGhJdGVtczopXSkKKyAgICAgICAgcmV0dXJuIENvbnRleHRNZW51SXRlbSgpOworCisgICAg
Tm9kZSogbm9kZSA9IGhpdFRlc3RSZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCk7CisgICAgaWYg
KCFub2RlKQorICAgICAgICByZXR1cm4gQ29udGV4dE1lbnVJdGVtKCk7CisKKyAgICBGcmFtZSog
ZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAg
ICAgcmV0dXJuIENvbnRleHRNZW51SXRlbSgpOworCisgICAgVVJMIGRvd25sb2FkYWJsZU1lZGlh
VVJMOworICAgIGlmICghaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZU1lZGlhVVJMKCkuaXNFbXB0eSgp
ICYmIGhpdFRlc3RSZXN1bHQuaXNEb3dubG9hZGFibGVNZWRpYSgpKQorICAgICAgICBkb3dubG9h
ZGFibGVNZWRpYVVSTCA9IGhpdFRlc3RSZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpOworCisgICAg
cmV0dXJuIENvbnRleHRNZW51SXRlbTo6c2hhcmVNZW51SXRlbShoaXRUZXN0UmVzdWx0LmFic29s
dXRlTGlua1VSTCgpLCBkb3dubG9hZGFibGVNZWRpYVVSTCwgaGl0VGVzdFJlc3VsdC5pbWFnZSgp
LCBoaXRUZXN0UmVzdWx0LnNlbGVjdGVkVGV4dCgpKTsKK30KKwogYm9vbCBXZWJDb250ZXh0TWVu
dUNsaWVudDo6Y2xpZW50RmxvYXRSZWN0Rm9yTm9kZShOb2RlJiBub2RlLCBGbG9hdFJlY3QmIHJl
Y3QpIGNvbnN0CiB7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUucmVuZGVyZXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50LmNwcAppbmRleCA3OTQ0MzY2Li4wNDhjZDBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGll
bnQuY3BwCkBAIC0xNDQsMyArMTQ0LDkgQEAgYm9vbCBXZWJDb250ZXh0TWVudUNsaWVudDo6aXNT
cGVha2luZygpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CisK
K3ZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNoYXJlTWVudUl0ZW0oY29uc3QgSGl0VGVzdFJl
c3VsdCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gQ29udGV4dE1lbnVJ
dGVtKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViQ29udGV4dE1lbnVDbGllbnQuaAppbmRleCAyNTE3MzZhLi41OWE4OGRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xp
ZW50LmgKQEAgLTQ1LDYgKzQ1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdG9wU3Bl
YWtpbmcoKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTcGVha2luZygpOwogCisgICAgdmlydHVhbCBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0gc2hhcmVNZW51SXRlbShjb25zdCBXZWJDb3JlOjpIaXRU
ZXN0UmVzdWx0Jik7CisKIHByaXZhdGU6CiAgICAgV2ViVmlldyogbV93ZWJWaWV3OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMjc1NTFhYS4uMDZm
MGU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEw
MCw2ICsxMDAsNyBAQAogI2luY2x1ZGUgIldlYlByb3RlY3Rpb25TcGFjZS5oIgogI2luY2x1ZGUg
IldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFT
dG9yZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0RyYWdDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CkBAIC00MDQyLDggKzQwNDMsMjMgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmludGVybmFsU2hvd0NvbnRleHRNZW51KGNvbnN0IEludFBvaW50JiBtZW51
TG9jYXRpb24sIGNvbnN0IEMKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAg
ICAgICAgLy8gQ3VycmVudGx5IHdlIG9ubHkgc3VwcG9ydCB0aGUgc2hhcmUgbWVudSBmb3IgdGV4
dCBzZWxlY3Rpb24sIHNvIGNyZWF0ZSB0aGUgYXBwcm9wcmlhdGUgbWVudSBpdGVtIGZvciB0aGF0
IHRleHQgc2VsZWN0aW9uIG5vdy4KLSAgICAgICAgQ29udGV4dE1lbnVJdGVtIGNvcmVJdGVtID0g
Q29udGV4dE1lbnVJdGVtOjpzaGFyZVNlbGVjdGVkVGV4dE1lbnVJdGVtKGNvbnRleHRNZW51Q29u
dGV4dERhdGEuc2VsZWN0ZWRUZXh0KCkpOworICAgICAgICAvLyBDcmVhdGUgdGhlIHJlYWwgU2hh
cmUgbWVudSBpdGVtCisgICAgICAgIFVSTCBhYnNvbHV0ZUxpbmtVUkw7CisgICAgICAgIGlmICgh
Y29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29sdXRlTGlu
a1VSTC5pc0VtcHR5KCkpCisgICAgICAgICAgICBhYnNvbHV0ZUxpbmtVUkwgPSBVUkwoUGFyc2Vk
VVJMU3RyaW5nLCBjb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCku
YWJzb2x1dGVMaW5rVVJMKTsKKworICAgICAgICBVUkwgZG93bmxvYWRhYmxlTWVkaWFVUkw7Cisg
ICAgICAgIGlmICghY29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgp
LmFic29sdXRlTWVkaWFVUkwuaXNFbXB0eSgpICYmIGNvbnRleHRNZW51Q29udGV4dERhdGEud2Vi
SGl0VGVzdFJlc3VsdERhdGEoKS5pc0Rvd25sb2FkYWJsZU1lZGlhKQorICAgICAgICAgICAgZG93
bmxvYWRhYmxlTWVkaWFVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBjb250ZXh0TWVudUNvbnRl
eHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCkuYWJzb2x1dGVNZWRpYVVSTCk7CisKKyAgICAg
ICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKKyAgICAgICAgaWYgKGNvbnRleHRNZW51Q29udGV4dERh
dGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5pbWFnZVNoYXJlZE1lbW9yeSAmJiBjb250ZXh0TWVu
dUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCkuaW1hZ2VTaXplKSB7CisgICAgICAg
ICAgICBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGltYWdlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCh1bnNpZ25lZCBj
aGFyKiljb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCkuaW1hZ2VT
aGFyZWRNZW1vcnktPmRhdGEoKSwgY29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVz
dWx0RGF0YSgpLmltYWdlU2l6ZSk7CisgICAgICAgICAgICBpbWFnZS0+c2V0RGF0YShpbWFnZURh
dGEucmVsZWFzZSgpLCB0cnVlKTsKKyAgICAgICAgfQorCisgICAgICAgIENvbnRleHRNZW51SXRl
bSBjb3JlSXRlbSA9IENvbnRleHRNZW51SXRlbTo6c2hhcmVNZW51SXRlbShhYnNvbHV0ZUxpbmtV
UkwsIGRvd25sb2FkYWJsZU1lZGlhVVJMLCBpbWFnZS5nZXQoKSwgY29udGV4dE1lbnVDb250ZXh0
RGF0YS5zZWxlY3RlZFRleHQoKSk7CiAgICAgICAgIHByb3Bvc2VkQVBJSXRlbXMuYXBwZW5kKFdl
YkNvbnRleHRNZW51SXRlbTo6Y3JlYXRlKGNvcmVJdGVtKSk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA2MTE0
MzA4Li4zNDAwYjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4KQEAgLTI0NywxMSArMjQ3LDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKICAgICBTaG93UG9wdXBNZW51KFdlYkNvcmU6OkludFJlY3QgcmVjdCwgdWludDY0
X3QgdGV4dERpcmVjdGlvbiwgVmVjdG9yPFdlYktpdDo6V2ViUG9wdXBJdGVtPiBpdGVtcywgaW50
MzJfdCBzZWxlY3RlZEluZGV4LCBzdHJ1Y3QgV2ViS2l0OjpQbGF0Zm9ybVBvcHVwTWVudURhdGEg
ZGF0YSkKICAgICBIaWRlUG9wdXBNZW51KCkKIAotI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQot
ICAgICMgQ29udGV4dE1lbnUgbWVzc2FnZXMKLSAgICBTaG93Q29udGV4dE1lbnUoV2ViQ29yZTo6
SW50UG9pbnQgbWVudUxvY2F0aW9uLCBXZWJLaXQ6OkNvbnRleHRNZW51Q29udGV4dERhdGEgY29u
dGV4dE1lbnVDb250ZXh0RGF0YSwgVmVjdG9yPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0
YT4gaXRlbXMsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCi0jZW5kaWYKLQogICAgICMgQXV0
aGVudGljYXRpb24gbWVzc2FnZXMKICAgICBDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlv
blNwYWNlSW5GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2Ug
cHJvdGVjdGlvblNwYWNlKSAtPiAoYm9vbCBjYW5BdXRoZW50aWNhdGUpCiAgICAgRGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQpCkBAIC00
MjYsNiArNDIxLDEwIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjaWYgUExBVEZPUk0o
TUFDKQogICAgIERpZFBlcmZvcm1BY3Rpb25NZW51SGl0VGVzdChzdHJ1Y3QgV2ViS2l0OjpXZWJI
aXRUZXN0UmVzdWx0OjpEYXRhIHJlc3VsdCwgYm9vbCBmb3JJbW1lZGlhdGVBY3Rpb24sIGJvb2wg
Y29udGVudFByZXZlbnRzRGVmYXVsdCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICNlbmRp
ZgorI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorICAgIFNob3dDb250ZXh0TWVudShXZWJDb3Jl
OjpJbnRQb2ludCBtZW51TG9jYXRpb24sIFdlYktpdDo6Q29udGV4dE1lbnVDb250ZXh0RGF0YSBj
b250ZXh0TWVudUNvbnRleHREYXRhLCBWZWN0b3I8V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1E
YXRhPiBpdGVtcywgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyNlbmRpZgorCiAgICAgSGFu
ZGxlTWVzc2FnZShTdHJpbmcgbWVzc2FnZU5hbWUsIFdlYktpdDo6VXNlckRhdGEgbWVzc2FnZUJv
ZHkpIFdhbnRzQ29ubmVjdGlvbgogICAgIEhhbmRsZVN5bmNocm9ub3VzTWVzc2FnZShTdHJpbmcg
bWVzc2FnZU5hbWUsIFdlYktpdDo6VXNlckRhdGEgbWVzc2FnZUJvZHkpIC0+IChXZWJLaXQ6OlVz
ZXJEYXRhIHJldHVybkRhdGEpIFdhbnRzQ29ubmVjdGlvbgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1l
bnVDbGllbnQuY3BwCmluZGV4IDQwYTYwZDguLmIwYTVkYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQuY3BwCkBAIC03NCw2ICs3NCwxMSBAQCB2b2lkIFdlYkNvbnRleHRNZW51Q2xp
ZW50Ojpkb3dubG9hZFVSTChjb25zdCBVUkwmKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
fQogCitDb250ZXh0TWVudUl0ZW0gV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNoYXJlTWVudUl0ZW0o
Y29uc3QgSGl0VGVzdFJlc3VsdCYpCit7CisgICAgcmV0dXJuIENvbnRleHRNZW51SXRlbShTdWJt
ZW51VHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnU2hhcmVNZW51LCBlbXB0eVN0cmluZygpKTsKK30K
KwogI2lmICFQTEFURk9STShDT0NPQSkKIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJj
aFdpdGhHb29nbGUoY29uc3QgRnJhbWUqIGZyYW1lKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNs
aWVudC5oCmluZGV4IGNlYmNkMTEuLjVjZjk4MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xp
ZW50LmgKQEAgLTU3LDEwICs1NywxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1Nw
ZWFraW5nKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wU3BlYWtpbmcoKSBvdmVycmlkZTsKLSAg
ICAKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbSBzaGFyZU1lbnVJdGVtKGNv
bnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmKSBvdmVycmlkZTsKKwogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoU3BvdGxpZ2h0KCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0gc2hhcmVTZWxlY3RlZFRleHRNZW51
SXRlbShjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICNlbmRpZgogCiAjaWYgVVNFKEFDQ0VTU0lC
SUxJVFlfQ09OVEVYVF9NRU5VUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkNvbnRleHRNZW51Q2xpZW50TWFjLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQ29udGV4dE1lbnVDbGll
bnRNYWMubW0KaW5kZXggMTBjNDQwMC4uOGM1MmY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQ29udGV4dE1lbnVDbGllbnRNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
Q29udGV4dE1lbnVDbGllbnRNYWMubW0KQEAgLTk0LDExICs5NCw2IEBAIHZvaWQgV2ViQ29udGV4
dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhTcG90bGlnaHQoKQogICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpTZWFyY2hXaXRoU3BvdGxpZ2h0KHNlbGVjdGVkU3RyaW5nKSk7
CiB9CiAKLUNvbnRleHRNZW51SXRlbSBXZWJDb250ZXh0TWVudUNsaWVudDo6c2hhcmVTZWxlY3Rl
ZFRleHRNZW51SXRlbShjb25zdCBTdHJpbmcmIHNlbGVjdGVkVGV4dCkKLXsKLSAgICByZXR1cm4g
Q29udGV4dE1lbnVJdGVtKFN1Ym1lbnVUeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdTaGFyZU1lbnUs
IGVtcHR5U3RyaW5nKCkpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8v
IEVOQUJMRShDT05URVhUX01FTlVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCmluZGV4IDcyZTQyOWIuLjcwMDdjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTEwNyw2ICsxMDcsNyBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvQXJjaGl2ZVJlc291cmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9D
aHJvbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Q29udHJvbGxlci5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvRGF0YURldGVjdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YVRy
YW5zZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0RvY3VtZW50RnJhZ21lbnQuaD4KQEAgLTEzNSw2ICsxMzYsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvTW91c2VFdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGFnZUNvbmZpZ3VyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Bh
Z2VPdmVybGF5Q29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZVRocm90dGxlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QbHVnaW5Eb2N1bWVudC5oPgpAQCAtNDg1Nyw0ICs0ODU5LDk3IEBAIHZvaWQgV2Vi
UGFnZTo6cG9zdFN5bmNocm9ub3VzTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBB
UEk6Ok9iamVjdCogbWVzCiAgICAgICAgIHJldHVybkRhdGEgPSB3ZWJQcm9jZXNzLnRyYW5zZm9y
bUhhbmRsZXNUb09iamVjdHMocmV0dXJuVXNlckRhdGEub2JqZWN0KCkpOwogfQogCisKK3N0YXRp
YyBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbiB0ZXh0SW5kaWNhdG9yVHJhbnNp
dGlvbkZvckFjdGlvbk1lbnUoUmFuZ2UqIHNlbGVjdGlvblJhbmdlLCBSYW5nZSYgaW5kaWNhdG9y
UmFuZ2UsIGJvb2wgZm9ySW1tZWRpYXRlQWN0aW9uLCBib29sIGZvckRhdGFEZXRlY3RvcnMpCit7
CisgICAgaWYgKGFyZVJhbmdlc0VxdWFsKCZpbmRpY2F0b3JSYW5nZSwgc2VsZWN0aW9uUmFuZ2Up
IHx8IChmb3JEYXRhRGV0ZWN0b3JzICYmICFmb3JJbW1lZGlhdGVBY3Rpb24pKQorICAgICAgICBy
ZXR1cm4gZm9ySW1tZWRpYXRlQWN0aW9uID8gVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5z
aXRpb246OkNyb3NzZmFkZSA6IFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpC
b3VuY2VBbmRDcm9zc2ZhZGU7CisgICAgcmV0dXJuIGZvckltbWVkaWF0ZUFjdGlvbiA/IFRleHRJ
bmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpGYWRlSW4gOiBUZXh0SW5kaWNhdG9yUHJl
c2VudGF0aW9uVHJhbnNpdGlvbjo6Qm91bmNlOworfQorCit2b2lkIFdlYlBhZ2U6OnBvcHVsYXRl
V2ViSGl0VGVzdChjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVzdWx0LCBG
bG9hdFBvaW50IGxvY2F0aW9uSW5WaWV3Q29vb3JkaW5hdGVzLCBib29sIGZvckltbWVkaWF0ZUFj
dGlvbiwgYm9vbCBpbmNsdWRlSW1hZ2UsIFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGEmIHJlc3VsdCkK
K3sKKyAgICByZXN1bHQgPSBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhKGhpdFRlc3RSZXN1bHQpOwor
CisgICAgcmVzdWx0LmhpdFRlc3RMb2NhdGlvbkluVmlld0Nvb29yZGluYXRlcyA9IGxvY2F0aW9u
SW5WaWV3Q29vb3JkaW5hdGVzOworCisgICAgUmVmUHRyPFJhbmdlPiBzZWxlY3Rpb25SYW5nZSA9
IGNvcmVQYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLnNlbGVj
dGlvbigpLnNlbGVjdGlvbigpLmZpcnN0UmFuZ2UoKTsKKworICAgIFVSTCBhYnNvbHV0ZUxpbmtV
UkwgPSBoaXRUZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCgpOworICAgIEVsZW1lbnQgKlVSTEVs
ZW1lbnQgPSBoaXRUZXN0UmVzdWx0LlVSTEVsZW1lbnQoKTsKKyAgICBpZiAoIWFic29sdXRlTGlu
a1VSTC5pc0VtcHR5KCkgJiYgVVJMRWxlbWVudCkgeworICAgICAgICBSZWZQdHI8UmFuZ2U+IGxp
bmtSYW5nZSA9IHJhbmdlT2ZDb250ZW50cygqVVJMRWxlbWVudCk7CisgICAgICAgIHJlc3VsdC5s
aW5rVGV4dEluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZSgqbGlua1Jh
bmdlLCB0ZXh0SW5kaWNhdG9yVHJhbnNpdGlvbkZvckFjdGlvbk1lbnUoc2VsZWN0aW9uUmFuZ2Uu
Z2V0KCksICpsaW5rUmFuZ2UsIGZvckltbWVkaWF0ZUFjdGlvbiwgZmFsc2UpKTsKKyAgICB9CisK
KyAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBuaWw7CisgICAgUmVmUHRyPFJhbmdlPiBsb29r
dXBSYW5nZSA9IGxvb2t1cFRleHRBdExvY2F0aW9uKGxvY2F0aW9uSW5WaWV3Q29vb3JkaW5hdGVz
LCAmb3B0aW9ucyk7CisgICAgcmVzdWx0Lmxvb2t1cFRleHQgPSBsb29rdXBSYW5nZSA/IGxvb2t1
cFJhbmdlLT50ZXh0KCkgOiBTdHJpbmcoKTsKKworICAgIGlmIChsb29rdXBSYW5nZSkgeworICAg
ICAgICBpZiAoTm9kZSogbm9kZSA9IGhpdFRlc3RSZXN1bHQuaW5uZXJOb2RlKCkpIHsKKyAgICAg
ICAgICAgIGlmIChGcmFtZSogaGl0VGVzdFJlc3VsdEZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5m
cmFtZSgpKQorICAgICAgICAgICAgICAgIHJlc3VsdC5kaWN0aW9uYXJ5UG9wdXBJbmZvID0gZGlj
dGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKGhpdFRlc3RSZXN1bHRGcmFtZSwgKmxvb2t1cFJhbmdl
LmdldCgpLCAmb3B0aW9ucywgdGV4dEluZGljYXRvclRyYW5zaXRpb25Gb3JBY3Rpb25NZW51KHNl
bGVjdGlvblJhbmdlLmdldCgpLCAqbG9va3VwUmFuZ2UsIGZvckltbWVkaWF0ZUFjdGlvbiwgZmFs
c2UpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1fbGFzdEFjdGlvbk1lbnVSYW5nZUZvclNl
bGVjdGlvbiA9IGxvb2t1cFJhbmdlOworICAgIG1fbGFzdEFjdGlvbk1lbnVIaXRUZXN0UmVzdWx0
ID0gaGl0VGVzdFJlc3VsdDsKKworICAgIGlmIChpbmNsdWRlSW1hZ2UpIHsKKyAgICAgICAgaWYg
KEltYWdlKiBpbWFnZSA9IGhpdFRlc3RSZXN1bHQuaW1hZ2UoKSkgeworICAgICAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKTsKKyAgICAgICAgICAgIFN0
cmluZyBpbWFnZUV4dGVuc2lvbiA9IGltYWdlLT5maWxlbmFtZUV4dGVuc2lvbigpOworICAgICAg
ICAgICAgaWYgKCFpbWFnZUV4dGVuc2lvbi5pc0VtcHR5KCkgJiYgYnVmZmVyKSB7CisgICAgICAg
ICAgICAgICAgcmVzdWx0LmltYWdlU2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjpjcmVhdGUo
YnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1lbWNweShyZXN1bHQuaW1hZ2VTaGFy
ZWRNZW1vcnktPmRhdGEoKSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAg
ICAgICAgICAgICByZXN1bHQuaW1hZ2VFeHRlbnNpb24gPSBpbWFnZUV4dGVuc2lvbjsKKyAgICAg
ICAgICAgICAgICByZXN1bHQuaW1hZ2VTaXplID0gYnVmZmVyLT5zaXplKCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBib29sIHBhZ2VPdmVybGF5RGlkT3ZlcnJpZGVE
YXRhRGV0ZWN0b3JzID0gZmFsc2U7CisgICAgZm9yIChjb25zdCBhdXRvJiBvdmVybGF5IDogY29y
ZVBhZ2UoKS0+bWFpbkZyYW1lKCkucGFnZU92ZXJsYXlDb250cm9sbGVyKCkucGFnZU92ZXJsYXlz
KCkpIHsKKyAgICAgICAgV2ViUGFnZU92ZXJsYXkqIHdlYk92ZXJsYXkgPSBXZWJQYWdlT3Zlcmxh
eTo6ZnJvbUNvcmVPdmVybGF5KCpvdmVybGF5KTsKKyAgICAgICAgaWYgKCF3ZWJPdmVybGF5KQor
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgSW50UG9pbnQgbG9jYXRpb25JbkNvbnRl
bnRDb29yZGluYXRlcyA9IGNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKS0+cm9vdFZpZXdU
b0NvbnRlbnRzKHJvdW5kZWRJbnRQb2ludChsb2NhdGlvbkluVmlld0Nvb29yZGluYXRlcykpOwor
ICAgICAgICBSZWZQdHI8UmFuZ2U+IG1haW5SZXN1bHRSYW5nZTsKKyAgICAgICAgRERBY3Rpb25D
b250ZXh0ICphY3Rpb25Db250ZXh0ID0gd2ViT3ZlcmxheS0+YWN0aW9uQ29udGV4dEZvclJlc3Vs
dEF0UG9pbnQobG9jYXRpb25JbkNvbnRlbnRDb29yZGluYXRlcywgbWFpblJlc3VsdFJhbmdlKTsK
KyAgICAgICAgaWYgKCFhY3Rpb25Db250ZXh0IHx8ICFtYWluUmVzdWx0UmFuZ2UpCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICBwYWdlT3ZlcmxheURpZE92ZXJyaWRlRGF0YURldGVj
dG9ycyA9IHRydWU7CisgICAgICAgIHJlc3VsdC5kZXRlY3RlZERhdGFBY3Rpb25Db250ZXh0ID0g
YWN0aW9uQ29udGV4dDsKKworICAgICAgICBWZWN0b3I8RmxvYXRRdWFkPiBxdWFkczsKKyAgICAg
ICAgbWFpblJlc3VsdFJhbmdlLT50ZXh0UXVhZHMocXVhZHMpOworICAgICAgICBGbG9hdFJlY3Qg
ZGV0ZWN0ZWREYXRhQm91bmRpbmdCb3g7CisgICAgICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0g
bWFpblJlc3VsdFJhbmdlLT5vd25lckRvY3VtZW50KCkudmlldygpOworICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIHF1YWQgOiBxdWFkcykKKyAgICAgICAgICAgIGRldGVjdGVkRGF0YUJvdW5kaW5n
Qm94LnVuaXRlKGZyYW1lVmlldy0+Y29udGVudHNUb1dpbmRvdyhxdWFkLmVuY2xvc2luZ0JvdW5k
aW5nQm94KCkpKTsKKworICAgICAgICByZXN1bHQuZGV0ZWN0ZWREYXRhQm91bmRpbmdCb3ggPSBk
ZXRlY3RlZERhdGFCb3VuZGluZ0JveDsKKyAgICAgICAgcmVzdWx0LmRldGVjdGVkRGF0YVRleHRJ
bmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UoKm1haW5SZXN1bHRSYW5n
ZSwgdGV4dEluZGljYXRvclRyYW5zaXRpb25Gb3JBY3Rpb25NZW51KHNlbGVjdGlvblJhbmdlLmdl
dCgpLCAqbWFpblJlc3VsdFJhbmdlLCBmb3JJbW1lZGlhdGVBY3Rpb24sIHRydWUpKTsKKyAgICAg
ICAgcmVzdWx0LmRldGVjdGVkRGF0YU9yaWdpbmF0aW5nUGFnZU92ZXJsYXkgPSBvdmVybGF5LT5w
YWdlT3ZlcmxheUlEKCk7CisgICAgICAgIG1fbGFzdEFjdGlvbk1lbnVSYW5nZUZvclNlbGVjdGlv
biA9IG1haW5SZXN1bHRSYW5nZTsKKworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvLyBG
SVhNRTogQXZvaWQgc2Nhbm5pbmcgaWYgd2Ugd2lsbCBqdXN0IHRocm93IGF3YXkgdGhlIHJlc3Vs
dCAoZS5nLiB3ZSdyZSBvdmVyIGEgbGluaykuCisgICAgaWYgKCFwYWdlT3ZlcmxheURpZE92ZXJy
aWRlRGF0YURldGVjdG9ycyAmJiBoaXRUZXN0UmVzdWx0LmlubmVyTm9kZSgpICYmIGhpdFRlc3RS
ZXN1bHQuaW5uZXJOb2RlKCktPmlzVGV4dE5vZGUoKSkgeworICAgICAgICBGbG9hdFJlY3QgZGV0
ZWN0ZWREYXRhQm91bmRpbmdCb3g7CisgICAgICAgIFJlZlB0cjxSYW5nZT4gZGV0ZWN0ZWREYXRh
UmFuZ2U7CisgICAgICAgIHJlc3VsdC5kZXRlY3RlZERhdGFBY3Rpb25Db250ZXh0ID0gRGF0YURl
dGVjdGlvbjo6ZGV0ZWN0SXRlbUFyb3VuZEhpdFRlc3RSZXN1bHQoaGl0VGVzdFJlc3VsdCwgZGV0
ZWN0ZWREYXRhQm91bmRpbmdCb3gsIGRldGVjdGVkRGF0YVJhbmdlKTsKKyAgICAgICAgaWYgKHJl
c3VsdC5kZXRlY3RlZERhdGFBY3Rpb25Db250ZXh0ICYmIGRldGVjdGVkRGF0YVJhbmdlKSB7Cisg
ICAgICAgICAgICByZXN1bHQuZGV0ZWN0ZWREYXRhQm91bmRpbmdCb3ggPSBkZXRlY3RlZERhdGFC
b3VuZGluZ0JveDsKKyAgICAgICAgICAgIHJlc3VsdC5kZXRlY3RlZERhdGFUZXh0SW5kaWNhdG9y
ID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKCpkZXRlY3RlZERhdGFSYW5nZSwgdGV4
dEluZGljYXRvclRyYW5zaXRpb25Gb3JBY3Rpb25NZW51KHNlbGVjdGlvblJhbmdlLmdldCgpLCAq
ZGV0ZWN0ZWREYXRhUmFuZ2UsIGZvckltbWVkaWF0ZUFjdGlvbiwgdHJ1ZSkpOworICAgICAgICAg
ICAgbV9sYXN0QWN0aW9uTWVudVJhbmdlRm9yU2VsZWN0aW9uID0gZGV0ZWN0ZWREYXRhUmFuZ2U7
CisgICAgICAgIH0KKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYzNhNjM4NS4uZjE3YzIy
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC00
OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiVXNl
ckRhdGEuaCIKICNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCIK
KyNpbmNsdWRlICJXZWJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EaWN0YXRp
b25BbHRlcm5hdGl2ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0VkaXRvci5oPgpAQCAtMTA4NCw2ICsxMDg1LDggQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgcmVwb3J0VXNlZEZlYXR1cmVzKCk7CiAKKyAgICB2b2lkIHBvcHVsYXRlV2ViSGl0VGVz
dChjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiwgV2ViQ29yZTo6RmxvYXRQb2ludCBsb2Nh
dGlvbkluVmlld0Nvb29yZGluYXRlcywgYm9vbCBmb3JJbW1lZGlhdGVBY3Rpb24sIGJvb2wgaW5j
bHVkZUltYWdlLCBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhJik7CisKICNpZiBQTEFURk9STShNQUMp
CiAgICAgdm9pZCBwZXJmb3JtQWN0aW9uTWVudUhpdFRlc3RBdExvY2F0aW9uKFdlYkNvcmU6OkZs
b2F0UG9pbnQsIGJvb2wgZm9ySW1tZWRpYXRlQWN0aW9uKTsKICAgICBQYXNzUmVmUHRyPFdlYkNv
cmU6OlJhbmdlPiBsb29rdXBUZXh0QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50LCBOU0Rp
Y3Rpb25hcnkgKipvcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCAwOGJiNjJmLi4xNzZiOWY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
CkBAIC01Niw3ICs1Niw2IEBACiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9CYWNrRm9y
d2FyZENvbnRyb2xsZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRGF0YURldGVjdGlvbi5oPgogI2lt
cG9ydCA8V2ViQ29yZS9EYXRhRGV0ZWN0b3JzU1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RpY3Rp
b25hcnlMb29rdXAuaD4KICNpbXBvcnQgPFdlYkNvcmUvRXZlbnRIYW5kbGVyLmg+CkBAIC0xMDA0
LDEzICsxMDAzLDYgQEAgU3RyaW5nIFdlYlBhZ2U6OnBsYXRmb3JtVXNlckFnZW50KGNvbnN0IFVS
TCYpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1zdGF0aWMgVGV4dEluZGljYXRv
clByZXNlbnRhdGlvblRyYW5zaXRpb24gdGV4dEluZGljYXRvclRyYW5zaXRpb25Gb3JBY3Rpb25N
ZW51KFJhbmdlKiBzZWxlY3Rpb25SYW5nZSwgUmFuZ2UmIGluZGljYXRvclJhbmdlLCBib29sIGZv
ckltbWVkaWF0ZUFjdGlvbiwgYm9vbCBmb3JEYXRhRGV0ZWN0b3JzKQotewotICAgIGlmIChhcmVS
YW5nZXNFcXVhbCgmaW5kaWNhdG9yUmFuZ2UsIHNlbGVjdGlvblJhbmdlKSB8fCAoZm9yRGF0YURl
dGVjdG9ycyAmJiAhZm9ySW1tZWRpYXRlQWN0aW9uKSkKLSAgICAgICAgcmV0dXJuIGZvckltbWVk
aWF0ZUFjdGlvbiA/IFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpDcm9zc2Zh
ZGUgOiBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Qm91bmNlQW5kQ3Jvc3Nm
YWRlOwotICAgIHJldHVybiBmb3JJbW1lZGlhdGVBY3Rpb24gPyBUZXh0SW5kaWNhdG9yUHJlc2Vu
dGF0aW9uVHJhbnNpdGlvbjo6RmFkZUluIDogVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5z
aXRpb246OkJvdW5jZTsKLX0KLQogdm9pZCBXZWJQYWdlOjpwZXJmb3JtQWN0aW9uTWVudUhpdFRl
c3RBdExvY2F0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgbG9jYXRpb25JblZpZXdDb29vcmRpbmF0
ZXMsIGJvb2wgZm9ySW1tZWRpYXRlQWN0aW9uKQogewogICAgIGxheW91dElmTmVlZGVkKCk7CkBA
IC0xMDMzLDg1ICsxMDI1LDEwIEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybUFjdGlvbk1lbnVIaXRU
ZXN0QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IGxvY2F0aW9uSW5WCiAgICAgICAgICAg
ICBtX2xhc3RBY3Rpb25NZW51SGl0VGVzdFByZXZlbnRzRGVmYXVsdCA9IGVsZW1lbnQtPmRpc3Bh
dGNoTW91c2VGb3JjZVdpbGxCZWdpbigpOwogICAgIH0KIAotICAgIFdlYkhpdFRlc3RSZXN1bHQ6
OkRhdGEgYWN0aW9uTWVudVJlc3VsdChoaXRUZXN0UmVzdWx0KTsKLSAgICBhY3Rpb25NZW51UmVz
dWx0LmhpdFRlc3RMb2NhdGlvbkluVmlld0Nvb29yZGluYXRlcyA9IGxvY2F0aW9uSW5WaWV3Q29v
b3JkaW5hdGVzOwotCi0gICAgUmVmUHRyPFJhbmdlPiBzZWxlY3Rpb25SYW5nZSA9IGNvcmVQYWdl
KCktPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpLmZpcnN0UmFuZ2UoKTsKLQotICAgIFVSTCBhYnNvbHV0ZUxpbmtVUkwgPSBoaXRU
ZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCgpOwotICAgIEVsZW1lbnQgKlVSTEVsZW1lbnQgPSBo
aXRUZXN0UmVzdWx0LlVSTEVsZW1lbnQoKTsKLSAgICBpZiAoIWFic29sdXRlTGlua1VSTC5pc0Vt
cHR5KCkgJiYgVVJMRWxlbWVudCkgewotICAgICAgICBSZWZQdHI8UmFuZ2U+IGxpbmtSYW5nZSA9
IHJhbmdlT2ZDb250ZW50cygqVVJMRWxlbWVudCk7Ci0gICAgICAgIGFjdGlvbk1lbnVSZXN1bHQu
bGlua1RleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UoKmxpbmtS
YW5nZSwgdGV4dEluZGljYXRvclRyYW5zaXRpb25Gb3JBY3Rpb25NZW51KHNlbGVjdGlvblJhbmdl
LmdldCgpLCAqbGlua1JhbmdlLCBmb3JJbW1lZGlhdGVBY3Rpb24sIGZhbHNlKSk7Ci0gICAgfQot
Ci0gICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zID0gbmlsOwotICAgIFJlZlB0cjxSYW5nZT4gbG9v
a3VwUmFuZ2UgPSBsb29rdXBUZXh0QXRMb2NhdGlvbihsb2NhdGlvbkluVmlld0Nvb29yZGluYXRl
cywgJm9wdGlvbnMpOwotICAgIGFjdGlvbk1lbnVSZXN1bHQubG9va3VwVGV4dCA9IGxvb2t1cFJh
bmdlID8gbG9va3VwUmFuZ2UtPnRleHQoKSA6IFN0cmluZygpOwotCi0gICAgaWYgKGxvb2t1cFJh
bmdlKSB7Ci0gICAgICAgIGlmIChOb2RlKiBub2RlID0gaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUo
KSkgewotICAgICAgICAgICAgaWYgKEZyYW1lKiBoaXRUZXN0UmVzdWx0RnJhbWUgPSBub2RlLT5k
b2N1bWVudCgpLmZyYW1lKCkpCi0gICAgICAgICAgICAgICAgYWN0aW9uTWVudVJlc3VsdC5kaWN0
aW9uYXJ5UG9wdXBJbmZvID0gZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKGhpdFRlc3RSZXN1
bHRGcmFtZSwgKmxvb2t1cFJhbmdlLmdldCgpLCAmb3B0aW9ucywgdGV4dEluZGljYXRvclRyYW5z
aXRpb25Gb3JBY3Rpb25NZW51KHNlbGVjdGlvblJhbmdlLmdldCgpLCAqbG9va3VwUmFuZ2UsIGZv
ckltbWVkaWF0ZUFjdGlvbiwgZmFsc2UpKTsKLSAgICAgICAgfQotICAgIH0KKyAgICAvLyBGSVhN
RTogRXZlcnl0aGluZyBwYXN0IGhlcmUgdG8gYmUgcmVjb25jaWxlZCB3aXRoIHBlcmZvcm1XZWJI
aXRUZXN0CisgICAgV2ViSGl0VGVzdFJlc3VsdDo6RGF0YSBhY3Rpb25NZW51UmVzdWx0OworICAg
IHBvcHVsYXRlV2ViSGl0VGVzdChoaXRUZXN0UmVzdWx0LCBsb2NhdGlvbkluVmlld0Nvb29yZGlu
YXRlcywgZm9ySW1tZWRpYXRlQWN0aW9uLCAhZm9ySW1tZWRpYXRlQWN0aW9uLCBhY3Rpb25NZW51
UmVzdWx0KTsKIAotICAgIG1fbGFzdEFjdGlvbk1lbnVSYW5nZUZvclNlbGVjdGlvbiA9IGxvb2t1
cFJhbmdlOwotICAgIG1fbGFzdEFjdGlvbk1lbnVIaXRUZXN0UmVzdWx0ID0gaGl0VGVzdFJlc3Vs
dDsKLQotICAgIGlmICghZm9ySW1tZWRpYXRlQWN0aW9uKSB7Ci0gICAgICAgIGlmIChJbWFnZSog
aW1hZ2UgPSBoaXRUZXN0UmVzdWx0LmltYWdlKCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCk7Ci0gICAgICAgICAgICBTdHJpbmcgaW1h
Z2VFeHRlbnNpb24gPSBpbWFnZS0+ZmlsZW5hbWVFeHRlbnNpb24oKTsKLSAgICAgICAgICAgIGlm
ICghaW1hZ2VFeHRlbnNpb24uaXNFbXB0eSgpICYmIGJ1ZmZlcikgewotICAgICAgICAgICAgICAg
IGFjdGlvbk1lbnVSZXN1bHQuaW1hZ2VTaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmNyZWF0
ZShidWZmZXItPnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgbWVtY3B5KGFjdGlvbk1lbnVSZXN1
bHQuaW1hZ2VTaGFyZWRNZW1vcnktPmRhdGEoKSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKTsKLSAgICAgICAgICAgICAgICBhY3Rpb25NZW51UmVzdWx0LmltYWdlRXh0ZW5zaW9uID0g
aW1hZ2VFeHRlbnNpb247Ci0gICAgICAgICAgICAgICAgYWN0aW9uTWVudVJlc3VsdC5pbWFnZVNp
emUgPSBidWZmZXItPnNpemUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQot
ICAgIGJvb2wgcGFnZU92ZXJsYXlEaWRPdmVycmlkZURhdGFEZXRlY3RvcnMgPSBmYWxzZTsKLSAg
ICBmb3IgKGNvbnN0IGF1dG8mIG92ZXJsYXkgOiBtYWluRnJhbWUucGFnZU92ZXJsYXlDb250cm9s
bGVyKCkucGFnZU92ZXJsYXlzKCkpIHsKLSAgICAgICAgV2ViUGFnZU92ZXJsYXkqIHdlYk92ZXJs
YXkgPSBXZWJQYWdlT3ZlcmxheTo6ZnJvbUNvcmVPdmVybGF5KCpvdmVybGF5KTsKLSAgICAgICAg
aWYgKCF3ZWJPdmVybGF5KQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgUmVmUHRy
PFJhbmdlPiBtYWluUmVzdWx0UmFuZ2U7Ci0gICAgICAgIEREQWN0aW9uQ29udGV4dCAqYWN0aW9u
Q29udGV4dCA9IHdlYk92ZXJsYXktPmFjdGlvbkNvbnRleHRGb3JSZXN1bHRBdFBvaW50KGxvY2F0
aW9uSW5Db250ZW50Q29vcmRpbmF0ZXMsIG1haW5SZXN1bHRSYW5nZSk7Ci0gICAgICAgIGlmICgh
YWN0aW9uQ29udGV4dCB8fCAhbWFpblJlc3VsdFJhbmdlKQotICAgICAgICAgICAgY29udGludWU7
Ci0KLSAgICAgICAgcGFnZU92ZXJsYXlEaWRPdmVycmlkZURhdGFEZXRlY3RvcnMgPSB0cnVlOwot
ICAgICAgICBhY3Rpb25NZW51UmVzdWx0LmRldGVjdGVkRGF0YUFjdGlvbkNvbnRleHQgPSBhY3Rp
b25Db250ZXh0OwotCi0gICAgICAgIFZlY3RvcjxGbG9hdFF1YWQ+IHF1YWRzOwotICAgICAgICBt
YWluUmVzdWx0UmFuZ2UtPnRleHRRdWFkcyhxdWFkcyk7Ci0gICAgICAgIEZsb2F0UmVjdCBkZXRl
Y3RlZERhdGFCb3VuZGluZ0JveDsKLSAgICAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtYWlu
UmVzdWx0UmFuZ2UtPm93bmVyRG9jdW1lbnQoKS52aWV3KCk7Ci0gICAgICAgIGZvciAoY29uc3Qg
YXV0byYgcXVhZCA6IHF1YWRzKQotICAgICAgICAgICAgZGV0ZWN0ZWREYXRhQm91bmRpbmdCb3gu
dW5pdGUoZnJhbWVWaWV3LT5jb250ZW50c1RvV2luZG93KHF1YWQuZW5jbG9zaW5nQm91bmRpbmdC
b3goKSkpOwotCi0gICAgICAgIGFjdGlvbk1lbnVSZXN1bHQuZGV0ZWN0ZWREYXRhQm91bmRpbmdC
b3ggPSBkZXRlY3RlZERhdGFCb3VuZGluZ0JveDsKLSAgICAgICAgYWN0aW9uTWVudVJlc3VsdC5k
ZXRlY3RlZERhdGFUZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdl
KCptYWluUmVzdWx0UmFuZ2UsIHRleHRJbmRpY2F0b3JUcmFuc2l0aW9uRm9yQWN0aW9uTWVudShz
ZWxlY3Rpb25SYW5nZS5nZXQoKSwgKm1haW5SZXN1bHRSYW5nZSwgZm9ySW1tZWRpYXRlQWN0aW9u
LCB0cnVlKSk7Ci0gICAgICAgIGFjdGlvbk1lbnVSZXN1bHQuZGV0ZWN0ZWREYXRhT3JpZ2luYXRp
bmdQYWdlT3ZlcmxheSA9IG92ZXJsYXktPnBhZ2VPdmVybGF5SUQoKTsKLSAgICAgICAgbV9sYXN0
QWN0aW9uTWVudVJhbmdlRm9yU2VsZWN0aW9uID0gbWFpblJlc3VsdFJhbmdlOwotCi0gICAgICAg
IGJyZWFrOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBBdm9pZCBzY2FubmluZyBpZiB3ZSB3aWxs
IGp1c3QgdGhyb3cgYXdheSB0aGUgcmVzdWx0IChlLmcuIHdlJ3JlIG92ZXIgYSBsaW5rKS4KLSAg
ICBpZiAoIXBhZ2VPdmVybGF5RGlkT3ZlcnJpZGVEYXRhRGV0ZWN0b3JzICYmIGhpdFRlc3RSZXN1
bHQuaW5uZXJOb2RlKCkgJiYgaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKS0+aXNUZXh0Tm9kZSgp
KSB7Ci0gICAgICAgIEZsb2F0UmVjdCBkZXRlY3RlZERhdGFCb3VuZGluZ0JveDsKLSAgICAgICAg
UmVmUHRyPFJhbmdlPiBkZXRlY3RlZERhdGFSYW5nZTsKLSAgICAgICAgYWN0aW9uTWVudVJlc3Vs
dC5kZXRlY3RlZERhdGFBY3Rpb25Db250ZXh0ID0gRGF0YURldGVjdGlvbjo6ZGV0ZWN0SXRlbUFy
b3VuZEhpdFRlc3RSZXN1bHQoaGl0VGVzdFJlc3VsdCwgZGV0ZWN0ZWREYXRhQm91bmRpbmdCb3gs
IGRldGVjdGVkRGF0YVJhbmdlKTsKLSAgICAgICAgaWYgKGFjdGlvbk1lbnVSZXN1bHQuZGV0ZWN0
ZWREYXRhQWN0aW9uQ29udGV4dCAmJiBkZXRlY3RlZERhdGFSYW5nZSkgewotICAgICAgICAgICAg
YWN0aW9uTWVudVJlc3VsdC5kZXRlY3RlZERhdGFCb3VuZGluZ0JveCA9IGRldGVjdGVkRGF0YUJv
dW5kaW5nQm94OwotICAgICAgICAgICAgYWN0aW9uTWVudVJlc3VsdC5kZXRlY3RlZERhdGFUZXh0
SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKCpkZXRlY3RlZERhdGFS
YW5nZSwgdGV4dEluZGljYXRvclRyYW5zaXRpb25Gb3JBY3Rpb25NZW51KHNlbGVjdGlvblJhbmdl
LmdldCgpLCAqZGV0ZWN0ZWREYXRhUmFuZ2UsIGZvckltbWVkaWF0ZUFjdGlvbiwgdHJ1ZSkpOwot
ICAgICAgICAgICAgbV9sYXN0QWN0aW9uTWVudVJhbmdlRm9yU2VsZWN0aW9uID0gZGV0ZWN0ZWRE
YXRhUmFuZ2U7Ci0gICAgICAgIH0KLSAgICB9CiAKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVz
ZXJEYXRhOwogICAgIGluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQoKS5wcmVwYXJlRm9y
QWN0aW9uTWVudSgqdGhpcywgaGl0VGVzdFJlc3VsdCwgdXNlckRhdGEpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250379</attachid>
            <date>2015-04-08 13:06:22 -0700</date>
            <delta_ts>2015-04-08 14:21:21 -0700</delta_ts>
            <desc>For EWS, v5</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>27655</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCA5Y2E0M2QwLi5jZThjMjQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC01NTcsNiArNTU3LDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBzcGVhayhjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgc3RvcFNwZWFraW5nKCkgb3ZlcnJpZGUgeyB9CiAKKyAgICB2aXJ0
dWFsIENvbnRleHRNZW51SXRlbSBzaGFyZU1lbnVJdGVtKGNvbnN0IEhpdFRlc3RSZXN1bHQmKSBv
dmVycmlkZSB7IHJldHVybiBDb250ZXh0TWVudUl0ZW0oKTsgfQorCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhTcG90bGlnaHQoKSBvdmVycmlkZSB7IH0K
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNsaWVudC5oCmluZGV4IDQxYzlk
MjguLjU0YTIwMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q2xpZW50LmgKQEAg
LTU4LDkgKzU4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lk
IHNwZWFrKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHN0b3BTcGVh
a2luZygpID0gMDsKIAorICAgICAgICB2aXJ0dWFsIENvbnRleHRNZW51SXRlbSBzaGFyZU1lbnVJ
dGVtKGNvbnN0IEhpdFRlc3RSZXN1bHQmKSA9IDA7CisKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICAgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhTcG90bGlnaHQoKSA9IDA7Ci0gICAgICAgIHZp
cnR1YWwgQ29udGV4dE1lbnVJdGVtIHNoYXJlU2VsZWN0ZWRUZXh0TWVudUl0ZW0oY29uc3QgU3Ry
aW5nJiBzZWxlY3RlZFRleHQpIHsgcmV0dXJuIENvbnRleHRNZW51SXRlbTo6c2hhcmVTZWxlY3Rl
ZFRleHRNZW51SXRlbShzZWxlY3RlZFRleHQpOyB9CiAjZW5kaWYKIAogI2lmIFVTRShBQ0NFU1NJ
QklMSVRZX0NPTlRFWFRfTUVOVVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51
Q29udHJvbGxlci5jcHAKaW5kZXggZDUxMWJlYS4uZDQ0MWZhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtNzMxLDE5ICs3MzEsNiBAQCB2
b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y3JlYXRlQW5kQXBwZW5kVHJhbnNmb3JtYXRpb25z
U3ViTWVudShDb250ZXh0TWVudUl0ZQogCiAjZW5kaWYKIAotc3RhdGljIGJvb2wgc2VsZWN0aW9u
Q29udGFpbnNQb3NzaWJsZVdvcmQoRnJhbWUqIGZyYW1lKQotewotICAgIC8vIEN1cnJlbnQgYWxn
b3JpdGhtOiBsb29rIGZvciBhIGNoYXJhY3RlciB0aGF0J3Mgbm90IGp1c3QgYSBzZXBhcmF0b3Iu
Ci0gICAgZm9yIChUZXh0SXRlcmF0b3IgaXQoZnJhbWUtPnNlbGVjdGlvbigpLnRvTm9ybWFsaXpl
ZFJhbmdlKCkuZ2V0KCkpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7Ci0gICAgICAgIGlu
dCBsZW5ndGggPSBpdC50ZXh0KCkubGVuZ3RoKCk7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghKFVfR0VUX0dDX01BU0soaXQudGV4
dCgpW2ldKSAmIFVfR0NfWl9NQVNLKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KICNpZiBQTEFURk9STShDT0NP
QSkKICNkZWZpbmUgU1VQUE9SVFNfVE9HR0xFX1ZJREVPX0ZVTExTQ1JFRU4gMQogI2Vsc2UKQEAg
LTgyNiw2ICs4MTMsOCBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQog
ICAgIENvbnRleHRNZW51SXRlbSBTZWxlY3RBbGxJdGVtKEFjdGlvblR5cGUsIENvbnRleHRNZW51
SXRlbVRhZ1NlbGVjdEFsbCwgY29udGV4dE1lbnVJdGVtVGFnU2VsZWN0QWxsKCkpOwogI2VuZGlm
CiAKKyAgICBDb250ZXh0TWVudUl0ZW0gU2hhcmVNZW51SXRlbSA9IG1fY2xpZW50LnNoYXJlTWVu
dUl0ZW0obV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKSk7CisKICAgICBOb2RlKiBub2RlID0gbV9j
b250ZXh0LmhpdFRlc3RSZXN1bHQoKS5pbm5lck5vblNoYXJlZE5vZGUoKTsKICAgICBpZiAoIW5v
ZGUpCiAgICAgICAgIHJldHVybjsKQEAgLTg0NCw2ICs4MzMsOSBAQCB2b2lkIENvbnRleHRNZW51
Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogI2VuZGlmCiAKICAgICBpZiAoIW1fY29udGV4dC5oaXRU
ZXN0UmVzdWx0KCkuaXNDb250ZW50RWRpdGFibGUoKSkgeworICAgICAgICBTdHJpbmcgc2VsZWN0
ZWRTdHJpbmcgPSBtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLnNlbGVjdGVkVGV4dCgpOworICAg
ICAgICBtX2NvbnRleHQuc2V0U2VsZWN0ZWRUZXh0KHNlbGVjdGVkU3RyaW5nKTsKKwogICAgICAg
ICBGcmFtZUxvYWRlciYgbG9hZGVyID0gZnJhbWUtPmxvYWRlcigpOwogICAgICAgICBVUkwgbGlu
a1VSTCA9IG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuYWJzb2x1dGVMaW5rVVJMKCk7CiAgICAg
ICAgIGlmICghbGlua1VSTC5pc0VtcHR5KCkpIHsKQEAgLTg5MiwxMCArODg0LDggQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKIAogICAgICAgICBpZiAoaW1hZ2VVUkwu
aXNFbXB0eSgpICYmIGxpbmtVUkwuaXNFbXB0eSgpICYmIG1lZGlhVVJMLmlzRW1wdHkoKSkgewog
ICAgICAgICAgICAgaWYgKG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuaXNTZWxlY3RlZCgpKSB7
Ci0gICAgICAgICAgICAgICAgU3RyaW5nIHNlbGVjdGVkU3RyaW5nOwotICAgICAgICAgICAgICAg
IGlmIChzZWxlY3Rpb25Db250YWluc1Bvc3NpYmxlV29yZChmcmFtZSkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIXNlbGVjdGVkU3RyaW5nLmlzRW1wdHkoKSkgewogI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFN0cmluZyA9IGZyYW1lLT5kaXNwbGF5U3Ry
aW5nTW9kaWZpZWRCeUVuY29kaW5nKGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBMb29rVXBJbkRpY3Rpb25hcnlJdGVt
KEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSwgY29udGV4
dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5KHNlbGVjdGVkU3RyaW5nKSk7CiAKICAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kSXRlbShMb29rVXBJbkRpY3Rpb25hcnlJdGVtLCBtX2NvbnRl
eHRNZW51LmdldCgpKTsKQEAgLTkxMSwxMiArOTAxLDkgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRy
b2xsZXI6OnBvcHVsYXRlKCkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgICAgICAgICBh
cHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogCi0gICAg
ICAgICAgICAgICAgaWYgKCFzZWxlY3RlZFN0cmluZy5pc0VtcHR5KCkgJiYgQ29udGV4dE1lbnVJ
dGVtOjpzdXBwb3J0c1NoYXJlTWVudSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIENvbnRleHRN
ZW51SXRlbSBTaGFyZUl0ZW0obV9jbGllbnQuc2hhcmVTZWxlY3RlZFRleHRNZW51SXRlbShzZWxl
Y3RlZFN0cmluZykpOwotICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKFNoYXJlSXRlbSwg
bV9jb250ZXh0TWVudS5nZXQoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFTaGFyZU1lbnVJdGVt
LmlzTnVsbCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oU2hhcmVNZW51SXRl
bSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0o
KnNlcGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQoKSk7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgbV9jb250ZXh0LnNldFNlbGVjdGVkVGV4dChzZWxlY3RlZFN0cmluZyk7CiAgICAgICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIFNwZWVjaE1lbnVJ
dGVtKFN1Ym1lbnVUeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdTcGVlY2hNZW51LCBjb250ZXh0TWVu
dUl0ZW1UYWdTcGVlY2hNZW51KCkpOwpAQCAtOTUwLDcgKzkzNywxNSBAQCB2b2lkIENvbnRleHRN
ZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogCiAgICAgICAgICAgICAgICAgaWYgKGZyYW1lLT5w
YWdlKCkgJiYgIWZyYW1lLT5pc01haW5GcmFtZSgpKQogICAgICAgICAgICAgICAgICAgICBhcHBl
bmRJdGVtKE9wZW5GcmFtZUl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOworCisgICAgICAgICAg
ICAgICAgaWYgKCFTaGFyZU1lbnVJdGVtLmlzTnVsbCgpKSB7CisgICAgICAgICAgICAgICAgICAg
IGFwcGVuZEl0ZW0oKnNlcGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oU2hhcmVNZW51SXRlbSwgbV9jb250ZXh0TWVudS5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ug
aWYgKCFTaGFyZU1lbnVJdGVtLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBhcHBlbmRJdGVtKCpz
ZXBhcmF0b3JJdGVtKCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOworICAgICAgICAgICAgYXBwZW5k
SXRlbShTaGFyZU1lbnVJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKICAgICAgICAgfQogICAg
IH0gZWxzZSB7IC8vIE1ha2UgYW4gZWRpdGluZyBjb250ZXh0IG1lbnUKICAgICAgICAgYm9vbCBp
blBhc3N3b3JkRmllbGQgPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNJblBhc3N3
b3JkRmllbGQoKTsKQEAgLTEwMjgsMTAgKzEwMjMsMTAgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRy
b2xsZXI6OnBvcHVsYXRlKCkKICAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNlcGFyYXRvckl0ZW0o
KSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobV9jb250
ZXh0LmhpdFRlc3RSZXN1bHQoKS5pc1NlbGVjdGVkKCkgJiYgIWluUGFzc3dvcmRGaWVsZCAmJiBz
ZWxlY3Rpb25Db250YWluc1Bvc3NpYmxlV29yZChmcmFtZSkpIHsKKyAgICAgICAgU3RyaW5nIHNl
bGVjdGVkVGV4dCA9IG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuc2VsZWN0ZWRUZXh0KCk7Cisg
ICAgICAgIGlmIChtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmlzU2VsZWN0ZWQoKSAmJiAhaW5Q
YXNzd29yZEZpZWxkICYmICFzZWxlY3RlZFRleHQuaXNFbXB0eSgpKSB7CiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgICAgICAgICBTdHJpbmcgc2VsZWN0ZWRTdHJpbmcgPSBmcmFtZS0+ZGlzcGxh
eVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkp
OwotICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIExvb2tVcEluRGljdGlvbmFyeUl0ZW0oQWN0
aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5LCBjb250ZXh0TWVu
dUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkoc2VsZWN0ZWRTdHJpbmcpKTsKKyAgICAgICAgICAg
IENvbnRleHRNZW51SXRlbSBMb29rVXBJbkRpY3Rpb25hcnlJdGVtKEFjdGlvblR5cGUsIENvbnRl
eHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSwgY29udGV4dE1lbnVJdGVtVGFnTG9va1Vw
SW5EaWN0aW9uYXJ5KHNlbGVjdGVkVGV4dCkpOwogCiAgICAgICAgICAgICBhcHBlbmRJdGVtKExv
b2tVcEluRGljdGlvbmFyeUl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogI2VuZGlmCkBAIC0x
MTExLDYgKzExMDYsMTEgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkK
ICAgICAgICAgICAgIH0KICNlbmRpZgogICAgICAgICB9CisKKyAgICAgICAgaWYgKCFTaGFyZU1l
bnVJdGVtLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBhcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVt
KCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOworICAgICAgICAgICAgYXBwZW5kSXRlbShTaGFyZU1l
bnVJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5jcHAKaW5kZXggMjFkZGUwZC4u
OTJlM2MwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJ
dGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uY3Bw
CkBAIC02MiwxMCArNjIsMjMgQEAgQ29udGV4dE1lbnVJdGVtOjpDb250ZXh0TWVudUl0ZW0oQ29u
dGV4dE1lbnVBY3Rpb24gYWN0aW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLAogewogfQogCitDb250
ZXh0TWVudUl0ZW06OkNvbnRleHRNZW51SXRlbSgpCisgICAgOiBtX3R5cGUoU2VwYXJhdG9yVHlw
ZSkKKyAgICAsIG1fYWN0aW9uKENvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9uKQorICAgICwgbV9l
bmFibGVkKGZhbHNlKQorICAgICwgbV9jaGVja2VkKGZhbHNlKQoreworfQorCiBDb250ZXh0TWVu
dUl0ZW06On5Db250ZXh0TWVudUl0ZW0oKQogewogfQogCitib29sIENvbnRleHRNZW51SXRlbTo6
aXNOdWxsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9hY3Rpb24gPT0gQ29udGV4dE1lbnVJdGVt
VGFnTm9BY3Rpb24gJiYgbV90aXRsZS5pc051bGwoKSAmJiBtX3N1Yk1lbnVJdGVtcy5pc0VtcHR5
KCk7Cit9CisKIHZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRTdWJNZW51KENvbnRleHRNZW51KiBz
dWJNZW51KQogewogICAgIGlmIChzdWJNZW51KSB7CkBAIC0xMTcsMTIgKzEzMCw3IEBAIGJvb2wg
Q29udGV4dE1lbnVJdGVtOjplbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gbV9lbmFibGVkOwog
fQogCi1ib29sIENvbnRleHRNZW51SXRlbTo6c3VwcG9ydHNTaGFyZU1lbnUoKQotewotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotQ29udGV4dE1lbnVJdGVtIENvbnRleHRNZW51SXRlbTo6c2hhcmVT
ZWxlY3RlZFRleHRNZW51SXRlbShjb25zdCBTdHJpbmcmKQorQ29udGV4dE1lbnVJdGVtIENvbnRl
eHRNZW51SXRlbTo6c2hhcmVNZW51SXRlbShjb25zdCBVUkwmLCBjb25zdCBVUkwmLCBJbWFnZSos
IGNvbnN0IFN0cmluZyYpCiB7CiAgICAgcmV0dXJuIENvbnRleHRNZW51SXRlbShTdWJtZW51VHlw
ZSwgQ29udGV4dE1lbnVJdGVtVGFnU2hhcmVNZW51LCBlbXB0eVN0cmluZygpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKaW5kZXggMDkwNTM0Yy4uZDkwY2Jk
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKQEAgLTQ1LDYg
KzQ1LDggQEAgdHlwZWRlZiBzdHJ1Y3QgX0d0a0FjdGlvbiBHdGtBY3Rpb247CiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICBjbGFzcyBDb250ZXh0TWVudTsKKyAgICBjbGFzcyBJbWFnZTsKKyAg
ICBjbGFzcyBVUkw7CiAKICAgICAvLyBUaGlzIGVudW0gbmVlZHMgdG8gYmUgaW4gc3luYyB3aXRo
IHRoZSBXZWJNZW51SXRlbVRhZyBlbnVtIGluIFdlYlVJRGVsZWdhdGUuaCBhbmQgdGhlCiAgICAg
Ly8gZXh0cmEgdmFsdWVzIGluIFdlYlVJRGVsZWdhdGVQcml2YXRlLmgKQEAgLTIwNiw4ICsyMDgs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzZXRTdWJNZW51KENvbnRl
eHRNZW51Kik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNTaGFyZU1lbnUoKTsKLSAg
ICAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENvbnRleHRNZW51SXRlbSBzaGFyZVNlbGVjdGVk
VGV4dE1lbnVJdGVtKGNvbnN0IFN0cmluZyYpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgQ29udGV4dE1lbnVJdGVtIHNoYXJlTWVudUl0ZW0oY29uc3QgVVJMJiBhYnNvbHV0ZUxpbmtV
UkwsIGNvbnN0IFVSTCYgZG93bmxvYWRhYmxlTWVkaWFVUkwsIEltYWdlKiwgY29uc3QgU3RyaW5n
JiBzZWxlY3RlZFRleHQpOwogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICBHdGtBY3Rpb24q
IGd0a0FjdGlvbigpIGNvbnN0OwpAQCAtMjE2LDYgKzIxNyw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICNpZiBVU0UoQ1JPU1NfUExBVEZPUk1fQ09OVEVYVF9NRU5VUykKICAgICAgICAgQ29udGV4
dE1lbnVJdGVtKENvbnRleHRNZW51QWN0aW9uLCBjb25zdCBTdHJpbmcmLCBib29sIGVuYWJsZWQs
IGJvb2wgY2hlY2tlZCwgY29uc3QgVmVjdG9yPENvbnRleHRNZW51SXRlbT4mIHN1Yk1lbnVJdGVt
cyk7CiAgICAgICAgIGV4cGxpY2l0IENvbnRleHRNZW51SXRlbShjb25zdCBQbGF0Zm9ybUNvbnRl
eHRNZW51SXRlbSYpOworICAgICAgICBDb250ZXh0TWVudUl0ZW0oKTsKKworICAgICAgICBib29s
IGlzTnVsbCgpIGNvbnN0OwogCiAgICAgICAgIC8vIE9uIFdpbmRvd3MsIHRoZSB0aXRsZSAoZHdU
eXBlRGF0YSBvZiB0aGUgTUVOVUlURU1JTkZPKSBpcyBub3Qgc2V0IGluIHRoaXMgZnVuY3Rpb24u
IENhbGxlcnMgY2FuIHNldCB0aGUgdGl0bGUgdGhlbXNlbHZlcywKICAgICAgICAgLy8gYW5kIGhh
bmRsZSB0aGUgbGlmZXRpbWUgb2YgdGhlIHRpdGxlLCBpZiB0aGV5IG5lZWQgaXQuCkBAIC0yMzAs
NyArMjM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBDb250ZXh0TWVudUl0ZW0oUGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9uKTsKICAg
ICAgICAgZXhwbGljaXQgQ29udGV4dE1lbnVJdGVtKENvbnRleHRNZW51KiBzdWJNZW51KTsKICAg
ICAgICAgQ29udGV4dE1lbnVJdGVtKENvbnRleHRNZW51QWN0aW9uLCBjb25zdCBTdHJpbmcmLCBi
b29sIGVuYWJsZWQsIGJvb2wgY2hlY2tlZCwgVmVjdG9yPENvbnRleHRNZW51SXRlbT4mIHN1Ym1l
bnVJdGVtcyk7Ci0gICAgICAgIENvbnRleHRNZW51SXRlbSgpOworICAgICAgICBXRUJDT1JFX0VY
UE9SVCBDb250ZXh0TWVudUl0ZW0oKTsKIAogICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsg
cmV0dXJuICFtX3BsYXRmb3JtRGVzY3JpcHRpb247IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51SXRlbUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVJdGVtR3RrLmNwcAppbmRleCA1YWIxNDM3Li5mNzBm
ZjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVJ
dGVtR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVJ
dGVtR3RrLmNwcApAQCAtMjg4LDEyICsyODgsNyBAQCBHdGtBY3Rpb24qIENvbnRleHRNZW51SXRl
bTo6Z3RrQWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gZ3RrX2FjdGl2YXRhYmxlX2dldF9yZWxh
dGVkX2FjdGlvbihHVEtfQUNUSVZBVEFCTEUobV9wbGF0Zm9ybURlc2NyaXB0aW9uKSk7CiB9CiAK
LWJvb2wgQ29udGV4dE1lbnVJdGVtOjpzdXBwb3J0c1NoYXJlTWVudSgpCi17Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi1Db250ZXh0TWVudUl0ZW0gQ29udGV4dE1lbnVJdGVtOjpzaGFyZVNlbGVj
dGVkVGV4dE1lbnVJdGVtKGNvbnN0IFN0cmluZyYpCitDb250ZXh0TWVudUl0ZW0gQ29udGV4dE1l
bnVJdGVtOjpzaGFyZU1lbnVJdGVtKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYsIEltYWdlKiwgY29u
c3QgU3RyaW5nJikKIHsKICAgICByZXR1cm4gQ29udGV4dE1lbnVJdGVtKFN1Ym1lbnVUeXBlLCBD
b250ZXh0TWVudUl0ZW1UYWdTaGFyZU1lbnUsIGVtcHR5U3RyaW5nKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NvbnRleHRNZW51SXRlbU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Db250ZXh0TWVudUl0ZW1NYWMubW0KaW5kZXggMWZk
ZTg3OS4uYmJlYzIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Nv
bnRleHRNZW51SXRlbU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ29u
dGV4dE1lbnVJdGVtTWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA2LCAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDcgKzI5LDEzIEBACiAjaWYgRU5BQkxFKENPTlRFWFRf
TUVOVVMpCiAKICNpbmNsdWRlICJDb250ZXh0TWVudS5oIgorI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVk
ZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJOU01lbnVTUEkuaCIKKyNpbmNsdWRlICJOb2RlLmgiCisj
aW5jbHVkZSAiVVJMLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTkwLDE1ICsxOTYs
MzUgQEAgYm9vbCBDb250ZXh0TWVudUl0ZW06OmNoZWNrZWQoKSBjb25zdAogICAgIHJldHVybiBb
bV9wbGF0Zm9ybURlc2NyaXB0aW9uLmdldCgpIHN0YXRlXSA9PSBOU09uU3RhdGU7CiB9CiAKLWJv
b2wgQ29udGV4dE1lbnVJdGVtOjpzdXBwb3J0c1NoYXJlTWVudSgpCitDb250ZXh0TWVudUl0ZW0g
Q29udGV4dE1lbnVJdGVtOjpzaGFyZU1lbnVJdGVtKGNvbnN0IFVSTCYgYWJzb2x1dGVMaW5rVVJM
LCBjb25zdCBVUkwmIGRvd25sb2FkYWJsZU1lZGlhVVJMLCBJbWFnZSogaW1hZ2UsIGNvbnN0IFN0
cmluZyYgc2VsZWN0ZWRUZXh0KQogewotICAgIHN0YXRpYyBib29sIHN1cHBvcnRzU2hhcmVNZW51
ID0gW1tOU01lbnVJdGVtIGNsYXNzXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHN0YW5k
YXJkU2hhcmVNZW51SXRlbVdpdGhJdGVtczopXTsKLSAgICByZXR1cm4gc3VwcG9ydHNTaGFyZU1l
bnU7Ci19CisgICAgaWYgKCFbW05TTWVudUl0ZW0gY2xhc3NdIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3Ioc3RhbmRhcmRTaGFyZU1lbnVJdGVtV2l0aEl0ZW1zOildKQorICAgICAgICByZXR1
cm4gQ29udGV4dE1lbnVJdGVtKCk7CiAKLUNvbnRleHRNZW51SXRlbSBDb250ZXh0TWVudUl0ZW06
OnNoYXJlU2VsZWN0ZWRUZXh0TWVudUl0ZW0oY29uc3QgU3RyaW5nJiBzZWxlY3RlZFRleHQpCi17
Ci0gICAgQ29udGV4dE1lbnVJdGVtIGl0ZW0oW05TTWVudUl0ZW0gc3RhbmRhcmRTaGFyZU1lbnVJ
dGVtV2l0aEl0ZW1zOkBbIChOU1N0cmluZyAqKXNlbGVjdGVkVGV4dCBdXSk7CisgICAgUmV0YWlu
UHRyPE5TTXV0YWJsZUFycmF5PiBpdGVtcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdF0pOworCisgICAgaWYgKCFhYnNvbHV0ZUxpbmtVUkwuaXNFbXB0eSgpKQorICAgICAg
ICBbaXRlbXMuZ2V0KCkgYWRkT2JqZWN0OihOU1VSTCAqKWFic29sdXRlTGlua1VSTF07CisKKyAg
ICBpZiAoIWRvd25sb2FkYWJsZU1lZGlhVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgW2l0ZW1zLmdl
dCgpIGFkZE9iamVjdDooTlNVUkwgKilkb3dubG9hZGFibGVNZWRpYVVSTF07CisKKyAgICBpZiAo
aW1hZ2UpIHsKKyAgICAgICAgTlNJbWFnZSAqbnNJbWFnZSA9IGltYWdlLT5nZXROU0ltYWdlKCk7
CisgICAgICAgIGlmIChuc0ltYWdlKQorICAgICAgICAgICAgW2l0ZW1zLmdldCgpIGFkZE9iamVj
dDpuc0ltYWdlXTsKKyAgICB9CisKKyAgICBpZiAoIXNlbGVjdGVkVGV4dC5pc0VtcHR5KCkpCisg
ICAgICAgIFtpdGVtcy5nZXQoKSBhZGRPYmplY3Q6KE5TU3RyaW5nICopc2VsZWN0ZWRUZXh0XTsK
KworCisgICAgTlNMb2coQCJDcmVhdGluZyBzaGFyZSBtZW51IHdpdGggaXRlbXM6XG4lQCIsIGl0
ZW1zLmdldCgpKTsKKworICAgIGlmICghW2l0ZW1zLmdldCgpIGNvdW50XSkKKyAgICAgICAgcmV0
dXJuIENvbnRleHRNZW51SXRlbSgpOworCisgICAgQ29udGV4dE1lbnVJdGVtIGl0ZW0oW05TTWVu
dUl0ZW0gc3RhbmRhcmRTaGFyZU1lbnVJdGVtV2l0aEl0ZW1zOml0ZW1zLmdldCgpXSk7CiAgICAg
aXRlbS5zZXRBY3Rpb24oQ29udGV4dE1lbnVJdGVtVGFnU2hhcmVNZW51KTsKICAgICByZXR1cm4g
aXRlbTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRl
eCBhNDgwZWZmLi5hOGRhMTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RS
ZXN1bHQuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNs
dWRlICJTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCisjaW5jbHVkZSAiVGV4
dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRl
ICJWaXNpYmxlVW5pdHMuaCIKICNpbmNsdWRlICJYTGlua05hbWVzLmgiCkBAIC0xODksNiArMTkw
LDI2IEBAIGJvb2wgSGl0VGVzdFJlc3VsdDo6aXNTZWxlY3RlZCgpIGNvbnN0CiAgICAgcmV0dXJu
IGZyYW1lLT5zZWxlY3Rpb24oKS5jb250YWlucyhtX2hpdFRlc3RMb2NhdGlvbi5wb2ludCgpKTsK
IH0KIAorU3RyaW5nIEhpdFRlc3RSZXN1bHQ6OnNlbGVjdGVkVGV4dCgpIGNvbnN0Cit7CisgICAg
aWYgKCFtX2lubmVyTm9uU2hhcmVkTm9kZSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CisKKyAgICBGcmFtZSogZnJhbWUgPSBtX2lubmVyTm9uU2hhcmVkTm9kZS0+ZG9jdW1lbnQoKS5m
cmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwor
CisgICAgLy8gTG9vayBmb3IgYSBjaGFyYWN0ZXIgdGhhdCdzIG5vdCBqdXN0IGEgc2VwYXJhdG9y
LgorICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KGZyYW1lLT5zZWxlY3Rpb24oKS50b05vcm1hbGl6
ZWRSYW5nZSgpLmdldCgpKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgeworICAgICAgICBp
bnQgbGVuZ3RoID0gaXQudGV4dCgpLmxlbmd0aCgpOworICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAoIShVX0dFVF9HQ19NQVNLKGl0LnRl
eHQoKVtpXSkgJiBVX0dDX1pfTUFTSykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5k
aXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRl
eHQoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Cit9CisK
IFN0cmluZyBIaXRUZXN0UmVzdWx0OjpzcGVsbGluZ1Rvb2xUaXAoVGV4dERpcmVjdGlvbiYgZGly
KSBjb25zdAogewogICAgIGRpciA9IExUUjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9IaXRUZXN0UmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVz
dFJlc3VsdC5oCmluZGV4IDE0OTRjMTEuLmFiMWFlYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0hpdFRlc3RSZXN1bHQuaApAQCAtOTQsNiArOTQsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBGcmFtZSogdGFyZ2V0RnJhbWUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGlzU2VsZWN0ZWQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc2Vs
ZWN0ZWRUZXh0KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNwZWxsaW5nVG9v
bFRpcChUZXh0RGlyZWN0aW9uJikgY29uc3Q7CiAgICAgU3RyaW5nIHJlcGxhY2VkU3RyaW5nKCkg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRpdGxlKFRleHREaXJlY3Rpb24mKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
b250ZXh0TWVudUNsaWVudC5oCmluZGV4IDI2NWE4M2EuLjE5NGUyMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQu
aApAQCAtNTcsNiArNTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzU3BlYWtpbmco
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoY29uc3QgV1RGOjpTdHJpbmcmKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcFNwZWFraW5nKCkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0gc2hhcmVNZW51SXRlbShjb25zdCBXZWJD
b3JlOjpIaXRUZXN0UmVzdWx0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdp
dGhTcG90bGlnaHQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51
KCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KaW5kZXggNmQ4NjA2MS4uNzBlMjk0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQubW0KQEAgLTM2Niw2ICszNjYsMjYgQEAgdm9pZCBXZWJDb250ZXh0TWVudUNs
aWVudDo6c3RvcFNwZWFraW5nKCkKICAgICBbTlNBcHAgc3RvcFNwZWFraW5nOm5pbF07CiB9CiAK
K0NvbnRleHRNZW51SXRlbSBXZWJDb250ZXh0TWVudUNsaWVudDo6c2hhcmVNZW51SXRlbShjb25z
dCBIaXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVzdWx0KQoreworICAgIGlmICghW1tOU01lbnVJdGVt
IGNsYXNzXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHN0YW5kYXJkU2hhcmVNZW51SXRl
bVdpdGhJdGVtczopXSkKKyAgICAgICAgcmV0dXJuIENvbnRleHRNZW51SXRlbSgpOworCisgICAg
Tm9kZSogbm9kZSA9IGhpdFRlc3RSZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCk7CisgICAgaWYg
KCFub2RlKQorICAgICAgICByZXR1cm4gQ29udGV4dE1lbnVJdGVtKCk7CisKKyAgICBGcmFtZSog
ZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAg
ICAgcmV0dXJuIENvbnRleHRNZW51SXRlbSgpOworCisgICAgVVJMIGRvd25sb2FkYWJsZU1lZGlh
VVJMOworICAgIGlmICghaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZU1lZGlhVVJMKCkuaXNFbXB0eSgp
ICYmIGhpdFRlc3RSZXN1bHQuaXNEb3dubG9hZGFibGVNZWRpYSgpKQorICAgICAgICBkb3dubG9h
ZGFibGVNZWRpYVVSTCA9IGhpdFRlc3RSZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpOworCisgICAg
cmV0dXJuIENvbnRleHRNZW51SXRlbTo6c2hhcmVNZW51SXRlbShoaXRUZXN0UmVzdWx0LmFic29s
dXRlTGlua1VSTCgpLCBkb3dubG9hZGFibGVNZWRpYVVSTCwgaGl0VGVzdFJlc3VsdC5pbWFnZSgp
LCBoaXRUZXN0UmVzdWx0LnNlbGVjdGVkVGV4dCgpKTsKK30KKwogYm9vbCBXZWJDb250ZXh0TWVu
dUNsaWVudDo6Y2xpZW50RmxvYXRSZWN0Rm9yTm9kZShOb2RlJiBub2RlLCBGbG9hdFJlY3QmIHJl
Y3QpIGNvbnN0CiB7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUucmVuZGVyZXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50LmNwcAppbmRleCA3OTQ0MzY2Li4wNDhjZDBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGll
bnQuY3BwCkBAIC0xNDQsMyArMTQ0LDkgQEAgYm9vbCBXZWJDb250ZXh0TWVudUNsaWVudDo6aXNT
cGVha2luZygpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CisK
K3ZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNoYXJlTWVudUl0ZW0oY29uc3QgSGl0VGVzdFJl
c3VsdCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gQ29udGV4dE1lbnVJ
dGVtKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViQ29udGV4dE1lbnVDbGllbnQuaAppbmRleCAyNTE3MzZhLi41OWE4OGRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xp
ZW50LmgKQEAgLTQ1LDYgKzQ1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdG9wU3Bl
YWtpbmcoKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTcGVha2luZygpOwogCisgICAgdmlydHVhbCBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0gc2hhcmVNZW51SXRlbShjb25zdCBXZWJDb3JlOjpIaXRU
ZXN0UmVzdWx0Jik7CisKIHByaXZhdGU6CiAgICAgV2ViVmlldyogbV93ZWJWaWV3OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMjc1NTFhYS4uMDZm
MGU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEw
MCw2ICsxMDAsNyBAQAogI2luY2x1ZGUgIldlYlByb3RlY3Rpb25TcGFjZS5oIgogI2luY2x1ZGUg
IldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFT
dG9yZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0RyYWdDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CkBAIC00MDQyLDggKzQwNDMsMjMgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmludGVybmFsU2hvd0NvbnRleHRNZW51KGNvbnN0IEludFBvaW50JiBtZW51
TG9jYXRpb24sIGNvbnN0IEMKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAg
ICAgICAgLy8gQ3VycmVudGx5IHdlIG9ubHkgc3VwcG9ydCB0aGUgc2hhcmUgbWVudSBmb3IgdGV4
dCBzZWxlY3Rpb24sIHNvIGNyZWF0ZSB0aGUgYXBwcm9wcmlhdGUgbWVudSBpdGVtIGZvciB0aGF0
IHRleHQgc2VsZWN0aW9uIG5vdy4KLSAgICAgICAgQ29udGV4dE1lbnVJdGVtIGNvcmVJdGVtID0g
Q29udGV4dE1lbnVJdGVtOjpzaGFyZVNlbGVjdGVkVGV4dE1lbnVJdGVtKGNvbnRleHRNZW51Q29u
dGV4dERhdGEuc2VsZWN0ZWRUZXh0KCkpOworICAgICAgICAvLyBDcmVhdGUgdGhlIHJlYWwgU2hh
cmUgbWVudSBpdGVtCisgICAgICAgIFVSTCBhYnNvbHV0ZUxpbmtVUkw7CisgICAgICAgIGlmICgh
Y29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29sdXRlTGlu
a1VSTC5pc0VtcHR5KCkpCisgICAgICAgICAgICBhYnNvbHV0ZUxpbmtVUkwgPSBVUkwoUGFyc2Vk
VVJMU3RyaW5nLCBjb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCku
YWJzb2x1dGVMaW5rVVJMKTsKKworICAgICAgICBVUkwgZG93bmxvYWRhYmxlTWVkaWFVUkw7Cisg
ICAgICAgIGlmICghY29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgp
LmFic29sdXRlTWVkaWFVUkwuaXNFbXB0eSgpICYmIGNvbnRleHRNZW51Q29udGV4dERhdGEud2Vi
SGl0VGVzdFJlc3VsdERhdGEoKS5pc0Rvd25sb2FkYWJsZU1lZGlhKQorICAgICAgICAgICAgZG93
bmxvYWRhYmxlTWVkaWFVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBjb250ZXh0TWVudUNvbnRl
eHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCkuYWJzb2x1dGVNZWRpYVVSTCk7CisKKyAgICAg
ICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKKyAgICAgICAgaWYgKGNvbnRleHRNZW51Q29udGV4dERh
dGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5pbWFnZVNoYXJlZE1lbW9yeSAmJiBjb250ZXh0TWVu
dUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCkuaW1hZ2VTaXplKSB7CisgICAgICAg
ICAgICBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGltYWdlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCh1bnNpZ25lZCBj
aGFyKiljb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCkuaW1hZ2VT
aGFyZWRNZW1vcnktPmRhdGEoKSwgY29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVz
dWx0RGF0YSgpLmltYWdlU2l6ZSk7CisgICAgICAgICAgICBpbWFnZS0+c2V0RGF0YShpbWFnZURh
dGEucmVsZWFzZSgpLCB0cnVlKTsKKyAgICAgICAgfQorCisgICAgICAgIENvbnRleHRNZW51SXRl
bSBjb3JlSXRlbSA9IENvbnRleHRNZW51SXRlbTo6c2hhcmVNZW51SXRlbShhYnNvbHV0ZUxpbmtV
UkwsIGRvd25sb2FkYWJsZU1lZGlhVVJMLCBpbWFnZS5nZXQoKSwgY29udGV4dE1lbnVDb250ZXh0
RGF0YS5zZWxlY3RlZFRleHQoKSk7CiAgICAgICAgIHByb3Bvc2VkQVBJSXRlbXMuYXBwZW5kKFdl
YkNvbnRleHRNZW51SXRlbTo6Y3JlYXRlKGNvcmVJdGVtKSk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA2MTE0
MzA4Li4zNDAwYjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4KQEAgLTI0NywxMSArMjQ3LDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKICAgICBTaG93UG9wdXBNZW51KFdlYkNvcmU6OkludFJlY3QgcmVjdCwgdWludDY0
X3QgdGV4dERpcmVjdGlvbiwgVmVjdG9yPFdlYktpdDo6V2ViUG9wdXBJdGVtPiBpdGVtcywgaW50
MzJfdCBzZWxlY3RlZEluZGV4LCBzdHJ1Y3QgV2ViS2l0OjpQbGF0Zm9ybVBvcHVwTWVudURhdGEg
ZGF0YSkKICAgICBIaWRlUG9wdXBNZW51KCkKIAotI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQot
ICAgICMgQ29udGV4dE1lbnUgbWVzc2FnZXMKLSAgICBTaG93Q29udGV4dE1lbnUoV2ViQ29yZTo6
SW50UG9pbnQgbWVudUxvY2F0aW9uLCBXZWJLaXQ6OkNvbnRleHRNZW51Q29udGV4dERhdGEgY29u
dGV4dE1lbnVDb250ZXh0RGF0YSwgVmVjdG9yPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0
YT4gaXRlbXMsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCi0jZW5kaWYKLQogICAgICMgQXV0
aGVudGljYXRpb24gbWVzc2FnZXMKICAgICBDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlv
blNwYWNlSW5GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2Ug
cHJvdGVjdGlvblNwYWNlKSAtPiAoYm9vbCBjYW5BdXRoZW50aWNhdGUpCiAgICAgRGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQpCkBAIC00
MjYsNiArNDIxLDEwIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjaWYgUExBVEZPUk0o
TUFDKQogICAgIERpZFBlcmZvcm1BY3Rpb25NZW51SGl0VGVzdChzdHJ1Y3QgV2ViS2l0OjpXZWJI
aXRUZXN0UmVzdWx0OjpEYXRhIHJlc3VsdCwgYm9vbCBmb3JJbW1lZGlhdGVBY3Rpb24sIGJvb2wg
Y29udGVudFByZXZlbnRzRGVmYXVsdCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICNlbmRp
ZgorI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorICAgIFNob3dDb250ZXh0TWVudShXZWJDb3Jl
OjpJbnRQb2ludCBtZW51TG9jYXRpb24sIFdlYktpdDo6Q29udGV4dE1lbnVDb250ZXh0RGF0YSBj
b250ZXh0TWVudUNvbnRleHREYXRhLCBWZWN0b3I8V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1E
YXRhPiBpdGVtcywgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyNlbmRpZgorCiAgICAgSGFu
ZGxlTWVzc2FnZShTdHJpbmcgbWVzc2FnZU5hbWUsIFdlYktpdDo6VXNlckRhdGEgbWVzc2FnZUJv
ZHkpIFdhbnRzQ29ubmVjdGlvbgogICAgIEhhbmRsZVN5bmNocm9ub3VzTWVzc2FnZShTdHJpbmcg
bWVzc2FnZU5hbWUsIFdlYktpdDo6VXNlckRhdGEgbWVzc2FnZUJvZHkpIC0+IChXZWJLaXQ6OlVz
ZXJEYXRhIHJldHVybkRhdGEpIFdhbnRzQ29ubmVjdGlvbgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1l
bnVDbGllbnQuY3BwCmluZGV4IDQwYTYwZDguLmIwYTVkYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQuY3BwCkBAIC03NCw2ICs3NCwxMSBAQCB2b2lkIFdlYkNvbnRleHRNZW51Q2xp
ZW50Ojpkb3dubG9hZFVSTChjb25zdCBVUkwmKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
fQogCitDb250ZXh0TWVudUl0ZW0gV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNoYXJlTWVudUl0ZW0o
Y29uc3QgSGl0VGVzdFJlc3VsdCYpCit7CisgICAgcmV0dXJuIENvbnRleHRNZW51SXRlbShTdWJt
ZW51VHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnU2hhcmVNZW51LCBlbXB0eVN0cmluZygpKTsKK30K
KwogI2lmICFQTEFURk9STShDT0NPQSkKIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJj
aFdpdGhHb29nbGUoY29uc3QgRnJhbWUqIGZyYW1lKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNs
aWVudC5oCmluZGV4IGNlYmNkMTEuLjVjZjk4MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xp
ZW50LmgKQEAgLTU3LDEwICs1NywxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1Nw
ZWFraW5nKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wU3BlYWtpbmcoKSBvdmVycmlkZTsKLSAg
ICAKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbSBzaGFyZU1lbnVJdGVtKGNv
bnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmKSBvdmVycmlkZTsKKwogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoU3BvdGxpZ2h0KCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0gc2hhcmVTZWxlY3RlZFRleHRNZW51
SXRlbShjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICNlbmRpZgogCiAjaWYgVVNFKEFDQ0VTU0lC
SUxJVFlfQ09OVEVYVF9NRU5VUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkNvbnRleHRNZW51Q2xpZW50TWFjLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQ29udGV4dE1lbnVDbGll
bnRNYWMubW0KaW5kZXggMTBjNDQwMC4uOGM1MmY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQ29udGV4dE1lbnVDbGllbnRNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
Q29udGV4dE1lbnVDbGllbnRNYWMubW0KQEAgLTk0LDExICs5NCw2IEBAIHZvaWQgV2ViQ29udGV4
dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhTcG90bGlnaHQoKQogICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpTZWFyY2hXaXRoU3BvdGxpZ2h0KHNlbGVjdGVkU3RyaW5nKSk7
CiB9CiAKLUNvbnRleHRNZW51SXRlbSBXZWJDb250ZXh0TWVudUNsaWVudDo6c2hhcmVTZWxlY3Rl
ZFRleHRNZW51SXRlbShjb25zdCBTdHJpbmcmIHNlbGVjdGVkVGV4dCkKLXsKLSAgICByZXR1cm4g
Q29udGV4dE1lbnVJdGVtKFN1Ym1lbnVUeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdTaGFyZU1lbnUs
IGVtcHR5U3RyaW5nKCkpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8v
IEVOQUJMRShDT05URVhUX01FTlVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCmluZGV4IDcyZTQyOWIuLjJkYjg5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQ4NTcsNCArNDg1NywyMiBA
QCB2b2lkIFdlYlBhZ2U6OnBvc3RTeW5jaHJvbm91c01lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNz
YWdlTmFtZSwgQVBJOjpPYmplY3QqIG1lcwogICAgICAgICByZXR1cm5EYXRhID0gd2ViUHJvY2Vz
cy50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHJldHVyblVzZXJEYXRhLm9iamVjdCgpKTsKIH0K
IAordm9pZCBXZWJQYWdlOjpwb3B1bGF0ZVdlYkhpdFRlc3QoY29uc3QgV2ViQ29yZTo6SGl0VGVz
dFJlc3VsdCYgaGl0VGVzdFJlc3VsdCwgYm9vbCBpbmNsdWRlSW1hZ2UsIFdlYkhpdFRlc3RSZXN1
bHQ6OkRhdGEmIHJlc3VsdCkKK3sKKyAgICByZXN1bHQgPSBXZWJIaXRUZXN0UmVzdWx0OjpEYXRh
KGhpdFRlc3RSZXN1bHQpOworCisgICAgaWYgKGluY2x1ZGVJbWFnZSkgeworICAgICAgICBpZiAo
SW1hZ2UqIGltYWdlID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7CisgICAgICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpOworICAgICAgICAgICAgU3Ry
aW5nIGltYWdlRXh0ZW5zaW9uID0gaW1hZ2UtPmZpbGVuYW1lRXh0ZW5zaW9uKCk7CisgICAgICAg
ICAgICBpZiAoIWltYWdlRXh0ZW5zaW9uLmlzRW1wdHkoKSAmJiBidWZmZXIpIHsKKyAgICAgICAg
ICAgICAgICByZXN1bHQuaW1hZ2VTaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmNyZWF0ZShi
dWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbWVtY3B5KHJlc3VsdC5pbWFnZVNoYXJl
ZE1lbW9yeS0+ZGF0YSgpLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAg
ICAgICAgICAgIHJlc3VsdC5pbWFnZUV4dGVuc2lvbiA9IGltYWdlRXh0ZW5zaW9uOworICAgICAg
ICAgICAgICAgIHJlc3VsdC5pbWFnZVNpemUgPSBidWZmZXItPnNpemUoKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBjM2E2Mzg1Li44YjQx
YmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAg
LTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJV
c2VyRGF0YS5oIgogI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5o
IgorI2luY2x1ZGUgIldlYkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RpY3Rh
dGlvbkFsdGVybmF0aXZlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRWRpdG9yLmg+CkBAIC0xMDg0LDYgKzEwODUsOCBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCByZXBvcnRVc2VkRmVhdHVyZXMoKTsKIAorICAgIHZvaWQgcG9wdWxhdGVXZWJIaXRU
ZXN0KGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmLCBib29sIGluY2x1ZGVJbWFnZSwgV2Vi
SGl0VGVzdFJlc3VsdDo6RGF0YSYpOworCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgcGVy
Zm9ybUFjdGlvbk1lbnVIaXRUZXN0QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50LCBib29s
IGZvckltbWVkaWF0ZUFjdGlvbik7CiAgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpSYW5nZT4gbG9v
a3VwVGV4dEF0TG9jYXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCwgTlNEaWN0aW9uYXJ5ICoqb3B0
aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW0KaW5kZXggMDhiYjYyZi4uMDg0ZjBiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtMTAzMyw3ICsx
MDMzLDkgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtQWN0aW9uTWVudUhpdFRlc3RBdExvY2F0aW9u
KFdlYkNvcmU6OkZsb2F0UG9pbnQgbG9jYXRpb25JblYKICAgICAgICAgICAgIG1fbGFzdEFjdGlv
bk1lbnVIaXRUZXN0UHJldmVudHNEZWZhdWx0ID0gZWxlbWVudC0+ZGlzcGF0Y2hNb3VzZUZvcmNl
V2lsbEJlZ2luKCk7CiAgICAgfQogCi0gICAgV2ViSGl0VGVzdFJlc3VsdDo6RGF0YSBhY3Rpb25N
ZW51UmVzdWx0KGhpdFRlc3RSZXN1bHQpOworICAgIFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGEgYWN0
aW9uTWVudVJlc3VsdDsKKyAgICBwb3B1bGF0ZVdlYkhpdFRlc3QobV9sYXN0QWN0aW9uTWVudUhp
dFRlc3RSZXN1bHQsICFmb3JJbW1lZGlhdGVBY3Rpb24sIGFjdGlvbk1lbnVSZXN1bHQpOworCiAg
ICAgYWN0aW9uTWVudVJlc3VsdC5oaXRUZXN0TG9jYXRpb25JblZpZXdDb29vcmRpbmF0ZXMgPSBs
b2NhdGlvbkluVmlld0Nvb29yZGluYXRlczsKIAogICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0aW9u
UmFuZ2UgPSBjb3JlUGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUo
KS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5maXJzdFJhbmdlKCk7CkBAIC0xMDU5LDE5ICsxMDYx
LDYgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtQWN0aW9uTWVudUhpdFRlc3RBdExvY2F0aW9uKFdl
YkNvcmU6OkZsb2F0UG9pbnQgbG9jYXRpb25JblYKICAgICBtX2xhc3RBY3Rpb25NZW51UmFuZ2VG
b3JTZWxlY3Rpb24gPSBsb29rdXBSYW5nZTsKICAgICBtX2xhc3RBY3Rpb25NZW51SGl0VGVzdFJl
c3VsdCA9IGhpdFRlc3RSZXN1bHQ7CiAKLSAgICBpZiAoIWZvckltbWVkaWF0ZUFjdGlvbikgewot
ICAgICAgICBpZiAoSW1hZ2UqIGltYWdlID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7Ci0gICAg
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpOwotICAg
ICAgICAgICAgU3RyaW5nIGltYWdlRXh0ZW5zaW9uID0gaW1hZ2UtPmZpbGVuYW1lRXh0ZW5zaW9u
KCk7Ci0gICAgICAgICAgICBpZiAoIWltYWdlRXh0ZW5zaW9uLmlzRW1wdHkoKSAmJiBidWZmZXIp
IHsKLSAgICAgICAgICAgICAgICBhY3Rpb25NZW51UmVzdWx0LmltYWdlU2hhcmVkTWVtb3J5ID0g
U2hhcmVkTWVtb3J5OjpjcmVhdGUoYnVmZmVyLT5zaXplKCkpOwotICAgICAgICAgICAgICAgIG1l
bWNweShhY3Rpb25NZW51UmVzdWx0LmltYWdlU2hhcmVkTWVtb3J5LT5kYXRhKCksIGJ1ZmZlci0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgYWN0aW9uTWVudVJlc3Vs
dC5pbWFnZUV4dGVuc2lvbiA9IGltYWdlRXh0ZW5zaW9uOwotICAgICAgICAgICAgICAgIGFjdGlv
bk1lbnVSZXN1bHQuaW1hZ2VTaXplID0gYnVmZmVyLT5zaXplKCk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9Ci0KICAgICBib29sIHBhZ2VPdmVybGF5RGlkT3ZlcnJpZGVEYXRhRGV0
ZWN0b3JzID0gZmFsc2U7CiAgICAgZm9yIChjb25zdCBhdXRvJiBvdmVybGF5IDogbWFpbkZyYW1l
LnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLnBhZ2VPdmVybGF5cygpKSB7CiAgICAgICAgIFdlYlBh
Z2VPdmVybGF5KiB3ZWJPdmVybGF5ID0gV2ViUGFnZU92ZXJsYXk6OmZyb21Db3JlT3ZlcmxheSgq
b3ZlcmxheSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250386</attachid>
            <date>2015-04-08 14:21:21 -0700</date>
            <delta_ts>2015-04-08 14:30:19 -0700</delta_ts>
            <desc>Patch for review, v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>34622</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1Y2UzOGVmLi45MDBiYmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUg
QEAKKzIwMTUtMDQtMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIEV4cG9zZSB0aGUgIlNoYXJlIiBtZW51IGZvciBsaW5rcywgaW1hZ2VzLCBhbmQgbWVkaWEu
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMDQzNTM0MD4gYW5kIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM1MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAq
IGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q2xpZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudDo6c2hhcmVTZWxlY3RlZFRl
eHRNZW51SXRlbSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVs
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNlbGVjdGlvbkNvbnRhaW5zUG9zc2libGVXb3JkKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpwYWdlKToKKworICAgICAgICAqIHBs
YXRmb3JtL0NvbnRleHRNZW51SXRlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVu
dUl0ZW06OkNvbnRleHRNZW51SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW06OmlzTnVsbCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW06OnNoYXJlTWVu
dUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtOjpzdXBwb3J0c1NoYXJl
TWVudSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW06OnNoYXJl
U2VsZWN0ZWRUZXh0TWVudUl0ZW0pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL0NvbnRl
eHRNZW51SXRlbS5oOgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51SXRlbUd0
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW06OnNoYXJlTWVudUl0ZW0p
OiBSZXR1cm4gYSBudWxsIGl0ZW0uCisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW06
OnN1cHBvcnRzU2hhcmVNZW51KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRN
ZW51SXRlbTo6c2hhcmVTZWxlY3RlZFRleHRNZW51SXRlbSk6IERlbGV0ZWQuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvQ29udGV4dE1lbnVJdGVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtOjpzaGFyZU1lbnVJdGVtKTogQ3JlYXRlIGEgZnVsbC1mZWF0dXJlZCBT
aGFyZSBtZW51IGl0ZW0gaW5zdGVhZCBvZiBqdXN0IGZvciBzZWxlY3RlZCB0ZXh0LgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtOjpzdXBwb3J0c1NoYXJlTWVudSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW06OnNoYXJlU2VsZWN0ZWRUZXh0TWVu
dUl0ZW0pOiBEZWxldGVkLgorCisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6c2VsZWN0ZWRUZXh0KTogSW5zdGVh
ZCBvZiBjYWxjdWxhdGluZyBzZWxlY3RlZCB0ZXh0IG91dHNpZGUgdGhlIEhpdFRlc3RSZXN1bHQs
IGxldCB0aGUKKyAgICAgICAgICBIaXRUZXN0UmVzdWx0IGRvIHdoYXQgaXQgZG9lcyBiZXN0OiBD
YWxjdWxhdGUgdGhpbmdzIQorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0Lmg6CisK
IDIwMTUtMDQtMDggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtHVEtdIENyYXNoIGluIERPTU9iamVjdENhY2hlIHdoZW4gYSB3cmFwcGVkIG9i
amVjdCBvd25lZCBieSB0aGUgY2FjaGUgaXMgdW5yZWZmZWQgYnkgdGhlIHVzZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCA5Y2E0M2QwLi5jZThjMjQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC01NTcsNiArNTU3LDggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBzcGVhayhjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgc3RvcFNwZWFraW5nKCkgb3ZlcnJpZGUgeyB9CiAKKyAgICB2aXJ0dWFsIENvbnRl
eHRNZW51SXRlbSBzaGFyZU1lbnVJdGVtKGNvbnN0IEhpdFRlc3RSZXN1bHQmKSBvdmVycmlkZSB7
IHJldHVybiBDb250ZXh0TWVudUl0ZW0oKTsgfQorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
dmlydHVhbCB2b2lkIHNlYXJjaFdpdGhTcG90bGlnaHQoKSBvdmVycmlkZSB7IH0KICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNsaWVudC5oCmluZGV4IDQxYzlkMjguLjU0YTIw
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q2xpZW50LmgKQEAgLTU4LDkgKzU4
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHNwZWFrKGNv
bnN0IFN0cmluZyYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHN0b3BTcGVha2luZygpID0g
MDsKIAorICAgICAgICB2aXJ0dWFsIENvbnRleHRNZW51SXRlbSBzaGFyZU1lbnVJdGVtKGNvbnN0
IEhpdFRlc3RSZXN1bHQmKSA9IDA7CisKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgdmly
dHVhbCB2b2lkIHNlYXJjaFdpdGhTcG90bGlnaHQoKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgQ29u
dGV4dE1lbnVJdGVtIHNoYXJlU2VsZWN0ZWRUZXh0TWVudUl0ZW0oY29uc3QgU3RyaW5nJiBzZWxl
Y3RlZFRleHQpIHsgcmV0dXJuIENvbnRleHRNZW51SXRlbTo6c2hhcmVTZWxlY3RlZFRleHRNZW51
SXRlbShzZWxlY3RlZFRleHQpOyB9CiAjZW5kaWYKIAogI2lmIFVTRShBQ0NFU1NJQklMSVRZX0NP
TlRFWFRfTUVOVVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxl
ci5jcHAKaW5kZXggZDUxMWJlYS4uZDQ0MWZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtNzMxLDE5ICs3MzEsNiBAQCB2b2lkIENvbnRl
eHRNZW51Q29udHJvbGxlcjo6Y3JlYXRlQW5kQXBwZW5kVHJhbnNmb3JtYXRpb25zU3ViTWVudShD
b250ZXh0TWVudUl0ZQogCiAjZW5kaWYKIAotc3RhdGljIGJvb2wgc2VsZWN0aW9uQ29udGFpbnNQ
b3NzaWJsZVdvcmQoRnJhbWUqIGZyYW1lKQotewotICAgIC8vIEN1cnJlbnQgYWxnb3JpdGhtOiBs
b29rIGZvciBhIGNoYXJhY3RlciB0aGF0J3Mgbm90IGp1c3QgYSBzZXBhcmF0b3IuCi0gICAgZm9y
IChUZXh0SXRlcmF0b3IgaXQoZnJhbWUtPnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCku
Z2V0KCkpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7Ci0gICAgICAgIGludCBsZW5ndGgg
PSBpdC50ZXh0KCkubGVuZ3RoKCk7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgICAgIGlmICghKFVfR0VUX0dDX01BU0soaXQudGV4dCgpW2ldKSAm
IFVfR0NfWl9NQVNLKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQot
ICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KICNpZiBQTEFURk9STShDT0NPQSkKICNkZWZp
bmUgU1VQUE9SVFNfVE9HR0xFX1ZJREVPX0ZVTExTQ1JFRU4gMQogI2Vsc2UKQEAgLTgyNiw2ICs4
MTMsOCBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogICAgIENvbnRl
eHRNZW51SXRlbSBTZWxlY3RBbGxJdGVtKEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbVRhZ1Nl
bGVjdEFsbCwgY29udGV4dE1lbnVJdGVtVGFnU2VsZWN0QWxsKCkpOwogI2VuZGlmCiAKKyAgICBD
b250ZXh0TWVudUl0ZW0gU2hhcmVNZW51SXRlbSA9IG1fY2xpZW50LnNoYXJlTWVudUl0ZW0obV9j
b250ZXh0LmhpdFRlc3RSZXN1bHQoKSk7CisKICAgICBOb2RlKiBub2RlID0gbV9jb250ZXh0Lmhp
dFRlc3RSZXN1bHQoKS5pbm5lck5vblNoYXJlZE5vZGUoKTsKICAgICBpZiAoIW5vZGUpCiAgICAg
ICAgIHJldHVybjsKQEAgLTg0NCw2ICs4MzMsOSBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxl
cjo6cG9wdWxhdGUoKQogI2VuZGlmCiAKICAgICBpZiAoIW1fY29udGV4dC5oaXRUZXN0UmVzdWx0
KCkuaXNDb250ZW50RWRpdGFibGUoKSkgeworICAgICAgICBTdHJpbmcgc2VsZWN0ZWRTdHJpbmcg
PSBtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLnNlbGVjdGVkVGV4dCgpOworICAgICAgICBtX2Nv
bnRleHQuc2V0U2VsZWN0ZWRUZXh0KHNlbGVjdGVkU3RyaW5nKTsKKwogICAgICAgICBGcmFtZUxv
YWRlciYgbG9hZGVyID0gZnJhbWUtPmxvYWRlcigpOwogICAgICAgICBVUkwgbGlua1VSTCA9IG1f
Y29udGV4dC5oaXRUZXN0UmVzdWx0KCkuYWJzb2x1dGVMaW5rVVJMKCk7CiAgICAgICAgIGlmICgh
bGlua1VSTC5pc0VtcHR5KCkpIHsKQEAgLTg5MiwxMCArODg0LDggQEAgdm9pZCBDb250ZXh0TWVu
dUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKIAogICAgICAgICBpZiAoaW1hZ2VVUkwuaXNFbXB0eSgp
ICYmIGxpbmtVUkwuaXNFbXB0eSgpICYmIG1lZGlhVVJMLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgaWYgKG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuaXNTZWxlY3RlZCgpKSB7Ci0gICAgICAg
ICAgICAgICAgU3RyaW5nIHNlbGVjdGVkU3RyaW5nOwotICAgICAgICAgICAgICAgIGlmIChzZWxl
Y3Rpb25Db250YWluc1Bvc3NpYmxlV29yZChmcmFtZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAo
IXNlbGVjdGVkU3RyaW5nLmlzRW1wdHkoKSkgewogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAg
ICAgICAgICAgICAgICBzZWxlY3RlZFN0cmluZyA9IGZyYW1lLT5kaXNwbGF5U3RyaW5nTW9kaWZp
ZWRCeUVuY29kaW5nKGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKSk7CiAgICAgICAgICAg
ICAgICAgICAgIENvbnRleHRNZW51SXRlbSBMb29rVXBJbkRpY3Rpb25hcnlJdGVtKEFjdGlvblR5
cGUsIENvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSwgY29udGV4dE1lbnVJdGVt
VGFnTG9va1VwSW5EaWN0aW9uYXJ5KHNlbGVjdGVkU3RyaW5nKSk7CiAKICAgICAgICAgICAgICAg
ICAgICAgYXBwZW5kSXRlbShMb29rVXBJbkRpY3Rpb25hcnlJdGVtLCBtX2NvbnRleHRNZW51Lmdl
dCgpKTsKQEAgLTkxMSwxMiArOTAxLDkgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBv
cHVsYXRlKCkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgICAgICAgICBhcHBlbmRJdGVt
KCpzZXBhcmF0b3JJdGVtKCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogCi0gICAgICAgICAgICAg
ICAgaWYgKCFzZWxlY3RlZFN0cmluZy5pc0VtcHR5KCkgJiYgQ29udGV4dE1lbnVJdGVtOjpzdXBw
b3J0c1NoYXJlTWVudSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBT
aGFyZUl0ZW0obV9jbGllbnQuc2hhcmVTZWxlY3RlZFRleHRNZW51SXRlbShzZWxlY3RlZFN0cmlu
ZykpOwotICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKFNoYXJlSXRlbSwgbV9jb250ZXh0
TWVudS5nZXQoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFTaGFyZU1lbnVJdGVtLmlzTnVsbCgp
KSB7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oU2hhcmVNZW51SXRlbSwgbV9jb250
ZXh0TWVudS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNlcGFyYXRv
ckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQoKSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgbV9j
b250ZXh0LnNldFNlbGVjdGVkVGV4dChzZWxlY3RlZFN0cmluZyk7CiAgICAgICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIFNwZWVjaE1lbnVJdGVtKFN1Ym1l
bnVUeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdTcGVlY2hNZW51LCBjb250ZXh0TWVudUl0ZW1UYWdT
cGVlY2hNZW51KCkpOwpAQCAtOTUwLDcgKzkzNywxNSBAQCB2b2lkIENvbnRleHRNZW51Q29udHJv
bGxlcjo6cG9wdWxhdGUoKQogCiAgICAgICAgICAgICAgICAgaWYgKGZyYW1lLT5wYWdlKCkgJiYg
IWZyYW1lLT5pc01haW5GcmFtZSgpKQogICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKE9w
ZW5GcmFtZUl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgaWYg
KCFTaGFyZU1lbnVJdGVtLmlzTnVsbCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0
ZW0oKnNlcGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CisgICAgICAgICAgICAg
ICAgICAgIGFwcGVuZEl0ZW0oU2hhcmVNZW51SXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7Cisg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKCFTaGFy
ZU1lbnVJdGVtLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBhcHBlbmRJdGVtKCpzZXBhcmF0b3JJ
dGVtKCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOworICAgICAgICAgICAgYXBwZW5kSXRlbShTaGFy
ZU1lbnVJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7
IC8vIE1ha2UgYW4gZWRpdGluZyBjb250ZXh0IG1lbnUKICAgICAgICAgYm9vbCBpblBhc3N3b3Jk
RmllbGQgPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNJblBhc3N3b3JkRmllbGQo
KTsKQEAgLTEwMjgsMTAgKzEwMjMsMTAgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBv
cHVsYXRlKCkKICAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNlcGFyYXRvckl0ZW0oKSwgbV9jb250
ZXh0TWVudS5nZXQoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobV9jb250ZXh0LmhpdFRl
c3RSZXN1bHQoKS5pc1NlbGVjdGVkKCkgJiYgIWluUGFzc3dvcmRGaWVsZCAmJiBzZWxlY3Rpb25D
b250YWluc1Bvc3NpYmxlV29yZChmcmFtZSkpIHsKKyAgICAgICAgU3RyaW5nIHNlbGVjdGVkVGV4
dCA9IG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuc2VsZWN0ZWRUZXh0KCk7CisgICAgICAgIGlm
IChtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmlzU2VsZWN0ZWQoKSAmJiAhaW5QYXNzd29yZEZp
ZWxkICYmICFzZWxlY3RlZFRleHQuaXNFbXB0eSgpKSB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgICAgICAgICBTdHJpbmcgc2VsZWN0ZWRTdHJpbmcgPSBmcmFtZS0+ZGlzcGxheVN0cmluZ01v
ZGlmaWVkQnlFbmNvZGluZyhmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkpOwotICAgICAg
ICAgICAgQ29udGV4dE1lbnVJdGVtIExvb2tVcEluRGljdGlvbmFyeUl0ZW0oQWN0aW9uVHlwZSwg
Q29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5LCBjb250ZXh0TWVudUl0ZW1UYWdM
b29rVXBJbkRpY3Rpb25hcnkoc2VsZWN0ZWRTdHJpbmcpKTsKKyAgICAgICAgICAgIENvbnRleHRN
ZW51SXRlbSBMb29rVXBJbkRpY3Rpb25hcnlJdGVtKEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRl
bVRhZ0xvb2tVcEluRGljdGlvbmFyeSwgY29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9u
YXJ5KHNlbGVjdGVkVGV4dCkpOwogCiAgICAgICAgICAgICBhcHBlbmRJdGVtKExvb2tVcEluRGlj
dGlvbmFyeUl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogI2VuZGlmCkBAIC0xMTExLDYgKzEx
MDYsMTEgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKICAgICAgICAg
ICAgIH0KICNlbmRpZgogICAgICAgICB9CisKKyAgICAgICAgaWYgKCFTaGFyZU1lbnVJdGVtLmlz
TnVsbCgpKSB7CisgICAgICAgICAgICBhcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCksIG1fY29u
dGV4dE1lbnUuZ2V0KCkpOworICAgICAgICAgICAgYXBwZW5kSXRlbShTaGFyZU1lbnVJdGVtLCBt
X2NvbnRleHRNZW51LmdldCgpKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmgKaW5kZXggODE3YWEwYy4uMzU3MzlkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5oCkBAIC00OCw2
ICs0OCw4IEBAIHB1YmxpYzoKICAgICBDb250ZXh0TWVudUNvbnRyb2xsZXIoUGFnZSYsIENvbnRl
eHRNZW51Q2xpZW50Jik7CiAgICAgfkNvbnRleHRNZW51Q29udHJvbGxlcigpOwogCisgICAgUGFn
ZSYgcGFnZSgpIHsgcmV0dXJuIG1fcGFnZTsgfQorCiAgICAgQ29udGV4dE1lbnUqIGNvbnRleHRN
ZW51KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0TWVudS5nZXQoKTsgfQogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgY2xlYXJDb250ZXh0TWVudSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ29udGV4dE1lbnVJdGVtLmNwcAppbmRleCAyMWRkZTBkLi5jMWI5ZTU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5jcHAKQEAgLTYyLDEwICs2MiwyNCBA
QCBDb250ZXh0TWVudUl0ZW06OkNvbnRleHRNZW51SXRlbShDb250ZXh0TWVudUFjdGlvbiBhY3Rp
b24sIGNvbnN0IFN0cmluZyYgdGl0bGUsCiB7CiB9CiAKK0NvbnRleHRNZW51SXRlbTo6Q29udGV4
dE1lbnVJdGVtKCkKKyAgICA6IG1fdHlwZShTZXBhcmF0b3JUeXBlKQorICAgICwgbV9hY3Rpb24o
Q29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb24pCisgICAgLCBtX2VuYWJsZWQoZmFsc2UpCisgICAg
LCBtX2NoZWNrZWQoZmFsc2UpCit7Cit9CisKIENvbnRleHRNZW51SXRlbTo6fkNvbnRleHRNZW51
SXRlbSgpCiB7CiB9CiAKK2Jvb2wgQ29udGV4dE1lbnVJdGVtOjppc051bGwoKSBjb25zdAorewor
ICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgYml0IG9mIGEgaGFjay4gQ3Jvc3MtcGxhdGZvcm0gQ29u
dGV4dE1lbnVJdGVtIHVzZXJzIG5lZWQgYSBjb25jcmV0ZSB3YXkgdG8gdHJhY2sgImlzTnVsbCIu
CisgICAgcmV0dXJuIG1fYWN0aW9uID09IENvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9uICYmIG1f
dGl0bGUuaXNOdWxsKCkgJiYgbV9zdWJNZW51SXRlbXMuaXNFbXB0eSgpOworfQorCiB2b2lkIENv
bnRleHRNZW51SXRlbTo6c2V0U3ViTWVudShDb250ZXh0TWVudSogc3ViTWVudSkKIHsKICAgICBp
ZiAoc3ViTWVudSkgewpAQCAtMTE3LDEyICsxMzEsNyBAQCBib29sIENvbnRleHRNZW51SXRlbTo6
ZW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZW5hYmxlZDsKIH0KIAotYm9vbCBDb250ZXh0
TWVudUl0ZW06OnN1cHBvcnRzU2hhcmVNZW51KCkKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LUNvbnRleHRNZW51SXRlbSBDb250ZXh0TWVudUl0ZW06OnNoYXJlU2VsZWN0ZWRUZXh0TWVudUl0
ZW0oY29uc3QgU3RyaW5nJikKK0NvbnRleHRNZW51SXRlbSBDb250ZXh0TWVudUl0ZW06OnNoYXJl
TWVudUl0ZW0oY29uc3QgVVJMJiwgY29uc3QgVVJMJiwgSW1hZ2UqLCBjb25zdCBTdHJpbmcmKQog
ewogICAgIHJldHVybiBDb250ZXh0TWVudUl0ZW0oU3VibWVudVR5cGUsIENvbnRleHRNZW51SXRl
bVRhZ1NoYXJlTWVudSwgZW1wdHlTdHJpbmcoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0NvbnRleHRNZW51SXRlbS5oCmluZGV4IDA5MDUzNGMuLmQ5MGNiZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oCkBAIC00NSw2ICs0NSw4IEBAIHR5cGVkZWYg
c3RydWN0IF9HdGtBY3Rpb24gR3RrQWN0aW9uOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
Y2xhc3MgQ29udGV4dE1lbnU7CisgICAgY2xhc3MgSW1hZ2U7CisgICAgY2xhc3MgVVJMOwogCiAg
ICAgLy8gVGhpcyBlbnVtIG5lZWRzIHRvIGJlIGluIHN5bmMgd2l0aCB0aGUgV2ViTWVudUl0ZW1U
YWcgZW51bSBpbiBXZWJVSURlbGVnYXRlLmggYW5kIHRoZQogICAgIC8vIGV4dHJhIHZhbHVlcyBp
biBXZWJVSURlbGVnYXRlUHJpdmF0ZS5oCkBAIC0yMDYsOCArMjA4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgICAgIHZvaWQgc2V0U3ViTWVudShDb250ZXh0TWVudSopOwogCi0gICAg
ICAgIHN0YXRpYyBib29sIHN1cHBvcnRzU2hhcmVNZW51KCk7Ci0gICAgICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBDb250ZXh0TWVudUl0ZW0gc2hhcmVTZWxlY3RlZFRleHRNZW51SXRlbShjb25z
dCBTdHJpbmcmKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENvbnRleHRNZW51SXRl
bSBzaGFyZU1lbnVJdGVtKGNvbnN0IFVSTCYgYWJzb2x1dGVMaW5rVVJMLCBjb25zdCBVUkwmIGRv
d25sb2FkYWJsZU1lZGlhVVJMLCBJbWFnZSosIGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0KTsK
IAogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgR3RrQWN0aW9uKiBndGtBY3Rpb24oKSBjb25z
dDsKQEAgLTIxNiw2ICsyMTcsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgVVNFKENST1NT
X1BMQVRGT1JNX0NPTlRFWFRfTUVOVVMpCiAgICAgICAgIENvbnRleHRNZW51SXRlbShDb250ZXh0
TWVudUFjdGlvbiwgY29uc3QgU3RyaW5nJiwgYm9vbCBlbmFibGVkLCBib29sIGNoZWNrZWQsIGNv
bnN0IFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+JiBzdWJNZW51SXRlbXMpOwogICAgICAgICBleHBs
aWNpdCBDb250ZXh0TWVudUl0ZW0oY29uc3QgUGxhdGZvcm1Db250ZXh0TWVudUl0ZW0mKTsKKyAg
ICAgICAgQ29udGV4dE1lbnVJdGVtKCk7CisKKyAgICAgICAgYm9vbCBpc051bGwoKSBjb25zdDsK
IAogICAgICAgICAvLyBPbiBXaW5kb3dzLCB0aGUgdGl0bGUgKGR3VHlwZURhdGEgb2YgdGhlIE1F
TlVJVEVNSU5GTykgaXMgbm90IHNldCBpbiB0aGlzIGZ1bmN0aW9uLiBDYWxsZXJzIGNhbiBzZXQg
dGhlIHRpdGxlIHRoZW1zZWx2ZXMsCiAgICAgICAgIC8vIGFuZCBoYW5kbGUgdGhlIGxpZmV0aW1l
IG9mIHRoZSB0aXRsZSwgaWYgdGhleSBuZWVkIGl0LgpAQCAtMjMwLDcgKzIzNCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGV4dE1l
bnVJdGVtKFBsYXRmb3JtTWVudUl0ZW1EZXNjcmlwdGlvbik7CiAgICAgICAgIGV4cGxpY2l0IENv
bnRleHRNZW51SXRlbShDb250ZXh0TWVudSogc3ViTWVudSk7CiAgICAgICAgIENvbnRleHRNZW51
SXRlbShDb250ZXh0TWVudUFjdGlvbiwgY29uc3QgU3RyaW5nJiwgYm9vbCBlbmFibGVkLCBib29s
IGNoZWNrZWQsIFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+JiBzdWJtZW51SXRlbXMpOwotICAgICAg
ICBDb250ZXh0TWVudUl0ZW0oKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgQ29udGV4dE1lbnVJ
dGVtKCk7CiAKICAgICAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9wbGF0Zm9y
bURlc2NyaXB0aW9uOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9Db250ZXh0TWVudUl0ZW1HdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Nv
bnRleHRNZW51SXRlbUd0ay5jcHAKaW5kZXggNWFiMTQzNy4uZjcwZmYyMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51SXRlbUd0ay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51SXRlbUd0ay5jcHAKQEAgLTI4
OCwxMiArMjg4LDcgQEAgR3RrQWN0aW9uKiBDb250ZXh0TWVudUl0ZW06Omd0a0FjdGlvbigpIGNv
bnN0CiAgICAgcmV0dXJuIGd0a19hY3RpdmF0YWJsZV9nZXRfcmVsYXRlZF9hY3Rpb24oR1RLX0FD
VElWQVRBQkxFKG1fcGxhdGZvcm1EZXNjcmlwdGlvbikpOwogfQogCi1ib29sIENvbnRleHRNZW51
SXRlbTo6c3VwcG9ydHNTaGFyZU1lbnUoKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotQ29u
dGV4dE1lbnVJdGVtIENvbnRleHRNZW51SXRlbTo6c2hhcmVTZWxlY3RlZFRleHRNZW51SXRlbShj
b25zdCBTdHJpbmcmKQorQ29udGV4dE1lbnVJdGVtIENvbnRleHRNZW51SXRlbTo6c2hhcmVNZW51
SXRlbShjb25zdCBVUkwmLCBjb25zdCBVUkwmLCBJbWFnZSosIGNvbnN0IFN0cmluZyYpCiB7CiAg
ICAgcmV0dXJuIENvbnRleHRNZW51SXRlbShTdWJtZW51VHlwZSwgQ29udGV4dE1lbnVJdGVtVGFn
U2hhcmVNZW51LCBlbXB0eVN0cmluZygpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9Db250ZXh0TWVudUl0ZW1NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvQ29udGV4dE1lbnVJdGVtTWFjLm1tCmluZGV4IDFmZGU4NzkuLjRlYzAxYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Db250ZXh0TWVudUl0ZW1NYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NvbnRleHRNZW51SXRlbU1hYy5t
bQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAxNSBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yOSw3ICsyOSwxMyBAQAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogCiAjaW5jbHVk
ZSAiQ29udGV4dE1lbnUuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZyYW1l
LmgiCisjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5j
bHVkZSAiTlNNZW51U1BJLmgiCisjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIlVSTC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE5MCwxNSArMTk2LDMyIEBAIGJvb2wgQ29udGV4
dE1lbnVJdGVtOjpjaGVja2VkKCkgY29uc3QKICAgICByZXR1cm4gW21fcGxhdGZvcm1EZXNjcmlw
dGlvbi5nZXQoKSBzdGF0ZV0gPT0gTlNPblN0YXRlOwogfQogCi1ib29sIENvbnRleHRNZW51SXRl
bTo6c3VwcG9ydHNTaGFyZU1lbnUoKQorQ29udGV4dE1lbnVJdGVtIENvbnRleHRNZW51SXRlbTo6
c2hhcmVNZW51SXRlbShjb25zdCBVUkwmIGFic29sdXRlTGlua1VSTCwgY29uc3QgVVJMJiBkb3du
bG9hZGFibGVNZWRpYVVSTCwgSW1hZ2UqIGltYWdlLCBjb25zdCBTdHJpbmcmIHNlbGVjdGVkVGV4
dCkKIHsKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c1NoYXJlTWVudSA9IFtbTlNNZW51SXRlbSBj
bGFzc10gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzdGFuZGFyZFNoYXJlTWVudUl0ZW1X
aXRoSXRlbXM6KV07Ci0gICAgcmV0dXJuIHN1cHBvcnRzU2hhcmVNZW51OwotfQorICAgIGlmICgh
W1tOU01lbnVJdGVtIGNsYXNzXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHN0YW5kYXJk
U2hhcmVNZW51SXRlbVdpdGhJdGVtczopXSkKKyAgICAgICAgcmV0dXJuIENvbnRleHRNZW51SXRl
bSgpOwogCi1Db250ZXh0TWVudUl0ZW0gQ29udGV4dE1lbnVJdGVtOjpzaGFyZVNlbGVjdGVkVGV4
dE1lbnVJdGVtKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0KQotewotICAgIENvbnRleHRNZW51
SXRlbSBpdGVtKFtOU01lbnVJdGVtIHN0YW5kYXJkU2hhcmVNZW51SXRlbVdpdGhJdGVtczpAWyAo
TlNTdHJpbmcgKilzZWxlY3RlZFRleHQgXV0pOworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJh
eT4gaXRlbXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKworICAg
IGlmICghYWJzb2x1dGVMaW5rVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgW2l0ZW1zLmdldCgpIGFk
ZE9iamVjdDooTlNVUkwgKilhYnNvbHV0ZUxpbmtVUkxdOworCisgICAgaWYgKCFkb3dubG9hZGFi
bGVNZWRpYVVSTC5pc0VtcHR5KCkpCisgICAgICAgIFtpdGVtcy5nZXQoKSBhZGRPYmplY3Q6KE5T
VVJMICopZG93bmxvYWRhYmxlTWVkaWFVUkxdOworCisgICAgaWYgKGltYWdlKSB7CisgICAgICAg
IE5TSW1hZ2UgKm5zSW1hZ2UgPSBpbWFnZS0+Z2V0TlNJbWFnZSgpOworICAgICAgICBpZiAobnNJ
bWFnZSkKKyAgICAgICAgICAgIFtpdGVtcy5nZXQoKSBhZGRPYmplY3Q6bnNJbWFnZV07CisgICAg
fQorCisgICAgaWYgKCFzZWxlY3RlZFRleHQuaXNFbXB0eSgpKQorICAgICAgICBbaXRlbXMuZ2V0
KCkgYWRkT2JqZWN0OihOU1N0cmluZyAqKXNlbGVjdGVkVGV4dF07CisKKyAgICBpZiAoIVtpdGVt
cy5nZXQoKSBjb3VudF0pCisgICAgICAgIHJldHVybiBDb250ZXh0TWVudUl0ZW0oKTsKKworICAg
IENvbnRleHRNZW51SXRlbSBpdGVtKFtOU01lbnVJdGVtIHN0YW5kYXJkU2hhcmVNZW51SXRlbVdp
dGhJdGVtczppdGVtcy5nZXQoKV0pOwogICAgIGl0ZW0uc2V0QWN0aW9uKENvbnRleHRNZW51SXRl
bVRhZ1NoYXJlTWVudSk7CiAgICAgcmV0dXJuIGl0ZW07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggYTQ4MGVmZi4uYThkYTE4MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtNTEsNiArNTEsNyBAQAog
I2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAi
U2hhZG93Um9vdC5oIgorI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlVzZXJH
ZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVVuaXRzLmgiCiAjaW5jbHVkZSAi
WExpbmtOYW1lcy5oIgpAQCAtMTg5LDYgKzE5MCwyNiBAQCBib29sIEhpdFRlc3RSZXN1bHQ6Omlz
U2VsZWN0ZWQoKSBjb25zdAogICAgIHJldHVybiBmcmFtZS0+c2VsZWN0aW9uKCkuY29udGFpbnMo
bV9oaXRUZXN0TG9jYXRpb24ucG9pbnQoKSk7CiB9CiAKK1N0cmluZyBIaXRUZXN0UmVzdWx0Ojpz
ZWxlY3RlZFRleHQoKSBjb25zdAoreworICAgIGlmICghbV9pbm5lck5vblNoYXJlZE5vZGUpCisg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisgICAgRnJhbWUqIGZyYW1lID0gbV9pbm5l
ck5vblNoYXJlZE5vZGUtPmRvY3VtZW50KCkuZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIC8vIExvb2sgZm9yIGEgY2hhcmFjdGVy
IHRoYXQncyBub3QganVzdCBhIHNlcGFyYXRvci4KKyAgICBmb3IgKFRleHRJdGVyYXRvciBpdChm
cmFtZS0+c2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7ICFpdC5hdEVuZCgp
OyBpdC5hZHZhbmNlKCkpIHsKKyAgICAgICAgaW50IGxlbmd0aCA9IGl0LnRleHQoKS5sZW5ndGgo
KTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAg
ICAgaWYgKCEoVV9HRVRfR0NfTUFTSyhpdC50ZXh0KClbaV0pICYgVV9HQ19aX01BU0spKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGlu
ZyhmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkpOworICAgICAgICB9CisgICAgfQorICAg
IHJldHVybiBlbXB0eVN0cmluZygpOworfQorCiBTdHJpbmcgSGl0VGVzdFJlc3VsdDo6c3BlbGxp
bmdUb29sVGlwKFRleHREaXJlY3Rpb24mIGRpcikgY29uc3QKIHsKICAgICBkaXIgPSBMVFI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAppbmRleCAxNDk0YzExLi5hYjFh
ZWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKQEAgLTk0LDYg
Kzk0LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgRnJhbWUqIHRhcmdldEZyYW1l
KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1NlbGVjdGVkKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlbGVjdGVkVGV4dCgpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBzcGVsbGluZ1Rvb2xUaXAoVGV4dERpcmVjdGlvbiYpIGNvbnN0Owog
ICAgIFN0cmluZyByZXBsYWNlZFN0cmluZygpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyB0aXRsZShUZXh0RGlyZWN0aW9uJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMTFm
YWRlYi4uZWMxYTZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE1LTA0
LTA4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBFeHBvc2Ug
dGhlICJTaGFyZSIgbWVudSBmb3IgbGlua3MsIGltYWdlcywgYW5kIG1lZGlhLgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMjA0MzUzNDA+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQzNTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tOgorICAgICAgICAo
V2ViQ29udGV4dE1lbnVDbGllbnQ6OnNoYXJlTWVudUl0ZW0pOiAKKwogMjAxNS0wNC0wNyAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEdldCByaWQgb2Yg
dXNlcyBvZiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c2luZ2xldG9uKCkgZnJvbSBXZWJLaXRM
ZWdhY3kKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
b250ZXh0TWVudUNsaWVudC5oCmluZGV4IDI2NWE4M2EuLjE5NGUyMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQu
aApAQCAtNTcsNiArNTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzU3BlYWtpbmco
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoY29uc3QgV1RGOjpTdHJpbmcmKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcFNwZWFraW5nKCkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0gc2hhcmVNZW51SXRlbShjb25zdCBXZWJD
b3JlOjpIaXRUZXN0UmVzdWx0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdp
dGhTcG90bGlnaHQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51
KCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KaW5kZXggNmQ4NjA2MS4uNzBlMjk0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQubW0KQEAgLTM2Niw2ICszNjYsMjYgQEAgdm9pZCBXZWJDb250ZXh0TWVudUNs
aWVudDo6c3RvcFNwZWFraW5nKCkKICAgICBbTlNBcHAgc3RvcFNwZWFraW5nOm5pbF07CiB9CiAK
K0NvbnRleHRNZW51SXRlbSBXZWJDb250ZXh0TWVudUNsaWVudDo6c2hhcmVNZW51SXRlbShjb25z
dCBIaXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVzdWx0KQoreworICAgIGlmICghW1tOU01lbnVJdGVt
IGNsYXNzXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHN0YW5kYXJkU2hhcmVNZW51SXRl
bVdpdGhJdGVtczopXSkKKyAgICAgICAgcmV0dXJuIENvbnRleHRNZW51SXRlbSgpOworCisgICAg
Tm9kZSogbm9kZSA9IGhpdFRlc3RSZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCk7CisgICAgaWYg
KCFub2RlKQorICAgICAgICByZXR1cm4gQ29udGV4dE1lbnVJdGVtKCk7CisKKyAgICBGcmFtZSog
ZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAg
ICAgcmV0dXJuIENvbnRleHRNZW51SXRlbSgpOworCisgICAgVVJMIGRvd25sb2FkYWJsZU1lZGlh
VVJMOworICAgIGlmICghaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZU1lZGlhVVJMKCkuaXNFbXB0eSgp
ICYmIGhpdFRlc3RSZXN1bHQuaXNEb3dubG9hZGFibGVNZWRpYSgpKQorICAgICAgICBkb3dubG9h
ZGFibGVNZWRpYVVSTCA9IGhpdFRlc3RSZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpOworCisgICAg
cmV0dXJuIENvbnRleHRNZW51SXRlbTo6c2hhcmVNZW51SXRlbShoaXRUZXN0UmVzdWx0LmFic29s
dXRlTGlua1VSTCgpLCBkb3dubG9hZGFibGVNZWRpYVVSTCwgaGl0VGVzdFJlc3VsdC5pbWFnZSgp
LCBoaXRUZXN0UmVzdWx0LnNlbGVjdGVkVGV4dCgpKTsKK30KKwogYm9vbCBXZWJDb250ZXh0TWVu
dUNsaWVudDo6Y2xpZW50RmxvYXRSZWN0Rm9yTm9kZShOb2RlJiBub2RlLCBGbG9hdFJlY3QmIHJl
Y3QpIGNvbnN0CiB7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUucmVuZGVyZXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZwppbmRleCBhOGEyNTY1Li4zZWRmOGU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMDQtMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgorCisgICAgICAgIEV4cG9zZSB0aGUgIlNoYXJlIiBtZW51IGZvciBsaW5rcywgaW1h
Z2VzLCBhbmQgbWVkaWEuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMDQzNTM0MD4gYW5kIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM1MDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvbnRleHRNZW51Q2xpZW50Ojpz
aGFyZU1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNs
aWVudC5oOgorCiAyMDE1LTA0LTAxICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIEZpeCBXaW5kb3dzIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCmluZGV4
IDc5NDQzNjYuLmIyNjFiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKQEAgLTE0NCwzICsxNDQsOSBA
QCBib29sIFdlYkNvbnRleHRNZW51Q2xpZW50Ojppc1NwZWFraW5nKCkKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KKworQ29udGV4dE1lbnVJdGVtIFdlYkNvbnRl
eHRNZW51Q2xpZW50OjpzaGFyZU1lbnVJdGVtKGNvbnN0IEhpdFRlc3RSZXN1bHQmKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIENvbnRleHRNZW51SXRlbSgpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50LmgKaW5kZXggMjUxNzM2YS4uNTlhODhkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCkBAIC00NSw2
ICs0NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3RvcFNwZWFraW5nKCk7CiAgICAg
dmlydHVhbCBib29sIGlzU3BlYWtpbmcoKTsKIAorICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtIHNoYXJlTWVudUl0ZW0oY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYpOwor
CiBwcml2YXRlOgogICAgIFdlYlZpZXcqIG1fd2ViVmlldzsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODU2
ODU2NS4uNGExNzk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE1LTA0LTA4ICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBFeHBvc2UgdGhlICJT
aGFyZSIgbWVudSBmb3IgbGlua3MsIGltYWdlcywgYW5kIG1lZGlhLgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMjA0MzUzNDA+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQzNTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBTaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkNvbnRleHRNZW51Q29udGV4dERhdGE6OkNvbnRleHRNZW51Q29udGV4dERhdGEpOiBQb3B1
bGF0ZSB0aGUgV2ViSGl0VGVzdFJlc3VsdDo6RGF0YSB3aXRoCisgICAgICAgICAgV2ViUGFnZTo6
cG9wdWxhdGVXZWJIaXRUZXN0UmVzdWx0KCkgdG8gZ2V0IG1vcmUgZ29vZGllcyAoc3VjaCBhcyBh
IHNoYXJlYWJsZSBpbWFnZSkuCisgICAgICAgICogU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERh
dGEuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmludGVybmFsU2hvd0NvbnRleHRNZW51KToKKworICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudUNsaWVudDo6c2hhcmVNZW51SXRlbSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkNvbnRleHRNZW51
Q2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudUNsaWVudDo6c2hh
cmVTZWxlY3RlZFRleHRNZW51SXRlbSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0
TWVudTo6c2hvdyk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBvcHVsYXRlV2ViSGl0VGVzdFJlc3VsdCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKworICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6cGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0QXRMb2NhdGlvbik6IE9mZiBsb2FkIHNvbWUgb2Yg
dGhlIFdlYkhpdFRlc3RSZXN1bHQgcG9wdWxhdGlvbgorICAgICAgICAgIHRvICJwb3B1bGF0ZVdl
YkhpdFRlc3RSZXN1bHQoKSIuCisKIDIwMTUtMDQtMDcgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hv
cnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRoZSBidWlsZC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcAppbmRleCBhODg5YWIwLi40
OGUxZGNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvbnRleHRNZW51Q29u
dGV4dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db250ZXh0TWVudUNvbnRl
eHREYXRhLmNwcApAQCAtMzAsNyArMzAsOCBAQAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQog
CiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9D
b250ZXh0TWVudUNvbnRleHQuaD4KKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNz
Q29udGV4dC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTQ0LDE1ICs0NSwxNiBA
QCBDb250ZXh0TWVudUNvbnRleHREYXRhOjpDb250ZXh0TWVudUNvbnRleHREYXRhKCkKIHsKIH0K
IAotQ29udGV4dE1lbnVDb250ZXh0RGF0YTo6Q29udGV4dE1lbnVDb250ZXh0RGF0YShjb25zdCBD
b250ZXh0TWVudUNvbnRleHQmIGNvbnRleHQpCi0gICAgOiBtX3dlYkhpdFRlc3RSZXN1bHREYXRh
KFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGEoY29udGV4dC5oaXRUZXN0UmVzdWx0KCkpKQotICAgICwg
bV9zZWxlY3RlZFRleHQoY29udGV4dC5zZWxlY3RlZFRleHQoKSkKK0NvbnRleHRNZW51Q29udGV4
dERhdGE6OkNvbnRleHRNZW51Q29udGV4dERhdGEoQ29udGV4dE1lbnVDb250cm9sbGVyJiBjb250
cm9sbGVyKQorICAgIDogbV9zZWxlY3RlZFRleHQoY29udHJvbGxlci5jb250ZXh0KCkuc2VsZWN0
ZWRUZXh0KCkpCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCiAgICAgLCBtX3NlbGVjdGlv
bklzRWRpdGFibGUoZmFsc2UpCiAjZW5kaWYKIHsKKyAgICBXZWJQYWdlOjpmcm9tQ29yZVBhZ2Uo
JmNvbnRyb2xsZXIucGFnZSgpKS0+cG9wdWxhdGVXZWJIaXRUZXN0UmVzdWx0KGNvbnRyb2xsZXIu
Y29udGV4dCgpLmhpdFRlc3RSZXN1bHQoKSwgdHJ1ZSwgbV93ZWJIaXRUZXN0UmVzdWx0RGF0YSk7
CisKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKLSAgICBJbWFnZSogaW1hZ2UgPSBjb250
ZXh0LmNvbnRyb2xsZWRJbWFnZSgpOworICAgIEltYWdlKiBpbWFnZSA9IGNvbnRyb2xsZXIuY29u
dGV4dCgpLmNvbnRyb2xsZWRJbWFnZSgpOwogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4
dERhdGEuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmgK
aW5kZXggZTY2MTc5YS4uODVlOTlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0NvbnRleHRNZW51Q29udGV4dERhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29u
dGV4dE1lbnVDb250ZXh0RGF0YS5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIEFyZ3VtZW50RW5j
b2RlcjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgQ29udGV4dE1lbnVDb250ZXh0
OworY2xhc3MgQ29udGV4dE1lbnVDb250cm9sbGVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBDb250ZXh0TWVudUNv
bnRleHREYXRhIHsKIHB1YmxpYzoKICAgICBDb250ZXh0TWVudUNvbnRleHREYXRhKCk7Ci0gICAg
Q29udGV4dE1lbnVDb250ZXh0RGF0YShjb25zdCBXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRleHQm
KTsKKyAgICBDb250ZXh0TWVudUNvbnRleHREYXRhKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJv
bGxlciYpOwogICAgIAogICAgIGNvbnN0IFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGEmIHdlYkhpdFRl
c3RSZXN1bHREYXRhKCkgY29uc3QgeyByZXR1cm4gbV93ZWJIaXRUZXN0UmVzdWx0RGF0YTsgfQog
ICAgIGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rl
ZFRleHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
Mjc1NTFhYS4uMDZmMGU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTEwMCw2ICsxMDAsNyBAQAogI2luY2x1ZGUgIldlYlByb3RlY3Rpb25TcGFjZS5o
IgogI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgiCiAjaW5jbHVkZSAi
V2Vic2l0ZURhdGFTdG9yZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW1hZ2UuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0RyYWdDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFn
RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CkBAIC00MDQyLDggKzQwNDMs
MjMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmludGVybmFsU2hvd0NvbnRleHRNZW51KGNvbnN0IElu
dFBvaW50JiBtZW51TG9jYXRpb24sIGNvbnN0IEMKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9CiAKLSAgICAgICAgLy8gQ3VycmVudGx5IHdlIG9ubHkgc3VwcG9ydCB0aGUgc2hhcmUg
bWVudSBmb3IgdGV4dCBzZWxlY3Rpb24sIHNvIGNyZWF0ZSB0aGUgYXBwcm9wcmlhdGUgbWVudSBp
dGVtIGZvciB0aGF0IHRleHQgc2VsZWN0aW9uIG5vdy4KLSAgICAgICAgQ29udGV4dE1lbnVJdGVt
IGNvcmVJdGVtID0gQ29udGV4dE1lbnVJdGVtOjpzaGFyZVNlbGVjdGVkVGV4dE1lbnVJdGVtKGNv
bnRleHRNZW51Q29udGV4dERhdGEuc2VsZWN0ZWRUZXh0KCkpOworICAgICAgICAvLyBDcmVhdGUg
dGhlIHJlYWwgU2hhcmUgbWVudSBpdGVtCisgICAgICAgIFVSTCBhYnNvbHV0ZUxpbmtVUkw7Cisg
ICAgICAgIGlmICghY29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgp
LmFic29sdXRlTGlua1VSTC5pc0VtcHR5KCkpCisgICAgICAgICAgICBhYnNvbHV0ZUxpbmtVUkwg
PSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBjb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RS
ZXN1bHREYXRhKCkuYWJzb2x1dGVMaW5rVVJMKTsKKworICAgICAgICBVUkwgZG93bmxvYWRhYmxl
TWVkaWFVUkw7CisgICAgICAgIGlmICghY29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0
UmVzdWx0RGF0YSgpLmFic29sdXRlTWVkaWFVUkwuaXNFbXB0eSgpICYmIGNvbnRleHRNZW51Q29u
dGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5pc0Rvd25sb2FkYWJsZU1lZGlhKQorICAg
ICAgICAgICAgZG93bmxvYWRhYmxlTWVkaWFVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBjb250
ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCkuYWJzb2x1dGVNZWRpYVVS
TCk7CisKKyAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKKyAgICAgICAgaWYgKGNvbnRleHRN
ZW51Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5pbWFnZVNoYXJlZE1lbW9yeSAm
JiBjb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCkuaW1hZ2VTaXpl
KSB7CisgICAgICAgICAgICBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKKyAgICAgICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCh1bnNpZ25lZCBjaGFyKiljb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHRE
YXRhKCkuaW1hZ2VTaGFyZWRNZW1vcnktPmRhdGEoKSwgY29udGV4dE1lbnVDb250ZXh0RGF0YS53
ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmltYWdlU2l6ZSk7CisgICAgICAgICAgICBpbWFnZS0+c2V0
RGF0YShpbWFnZURhdGEucmVsZWFzZSgpLCB0cnVlKTsKKyAgICAgICAgfQorCisgICAgICAgIENv
bnRleHRNZW51SXRlbSBjb3JlSXRlbSA9IENvbnRleHRNZW51SXRlbTo6c2hhcmVNZW51SXRlbShh
YnNvbHV0ZUxpbmtVUkwsIGRvd25sb2FkYWJsZU1lZGlhVVJMLCBpbWFnZS5nZXQoKSwgY29udGV4
dE1lbnVDb250ZXh0RGF0YS5zZWxlY3RlZFRleHQoKSk7CiAgICAgICAgIHByb3Bvc2VkQVBJSXRl
bXMuYXBwZW5kKFdlYkNvbnRleHRNZW51SXRlbTo6Y3JlYXRlKGNvcmVJdGVtKSk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCmluZGV4IDQwYTYwZDguLmIwYTVkYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q29udGV4dE1lbnVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCkBAIC03NCw2ICs3NCwxMSBAQCB2
b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpkb3dubG9hZFVSTChjb25zdCBVUkwmKQogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCitDb250ZXh0TWVudUl0ZW0gV2ViQ29udGV4dE1lbnVD
bGllbnQ6OnNoYXJlTWVudUl0ZW0oY29uc3QgSGl0VGVzdFJlc3VsdCYpCit7CisgICAgcmV0dXJu
IENvbnRleHRNZW51SXRlbShTdWJtZW51VHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnU2hhcmVNZW51
LCBlbXB0eVN0cmluZygpKTsKK30KKwogI2lmICFQTEFURk9STShDT0NPQSkKIHZvaWQgV2ViQ29u
dGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqIGZyYW1lKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
b250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCmluZGV4IGNlYmNkMTEuLjVjZjk4MTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTU3LDEwICs1NywxMCBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgYm9vbCBpc1NwZWFraW5nKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHNwZWFrKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wU3Bl
YWtpbmcoKSBvdmVycmlkZTsKLSAgICAKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbSBzaGFyZU1lbnVJdGVtKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmKSBvdmVycmlk
ZTsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoU3Bv
dGxpZ2h0KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0g
c2hhcmVTZWxlY3RlZFRleHRNZW51SXRlbShjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICNlbmRp
ZgogCiAjaWYgVVNFKEFDQ0VTU0lCSUxJVFlfQ09OVEVYVF9NRU5VUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkNvbnRleHRNZW51
Q2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW0KaW5kZXggMTBjNDQwMC4uOGM1MmY0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
Q29udGV4dE1lbnVDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW0KQEAgLTk0LDExICs5
NCw2IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhTcG90bGlnaHQoKQog
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZWFyY2hXaXRoU3BvdGxp
Z2h0KHNlbGVjdGVkU3RyaW5nKSk7CiB9CiAKLUNvbnRleHRNZW51SXRlbSBXZWJDb250ZXh0TWVu
dUNsaWVudDo6c2hhcmVTZWxlY3RlZFRleHRNZW51SXRlbShjb25zdCBTdHJpbmcmIHNlbGVjdGVk
VGV4dCkKLXsKLSAgICByZXR1cm4gQ29udGV4dE1lbnVJdGVtKFN1Ym1lbnVUeXBlLCBDb250ZXh0
TWVudUl0ZW1UYWdTaGFyZU1lbnUsIGVtcHR5U3RyaW5nKCkpOwotfQotCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHAKaW5kZXgg
ZTA5NzJiNS4uNTJkYjNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgV2ViQ29u
dGV4dE1lbnU6OnNob3coKQogICAgIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiBtZW51
SXRlbXM7CiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKICAgICBtZW51SXRlbXNX
aXRoVXNlckRhdGEobWVudUl0ZW1zLCB1c2VyRGF0YSk7Ci0gICAgQ29udGV4dE1lbnVDb250ZXh0
RGF0YSBjb250ZXh0TWVudUNvbnRleHREYXRhKGNvbnRyb2xsZXIuY29udGV4dCgpKTsKKyAgICBD
b250ZXh0TWVudUNvbnRleHREYXRhIGNvbnRleHRNZW51Q29udGV4dERhdGEoY29udHJvbGxlcik7
CiAKICAgICAvLyBNYXJrIHRoZSBXZWJQYWdlIGhhcyBoYXZpbmcgYSBzaG93biBjb250ZXh0IG1l
bnUgdGhlbiBub3RpZnkgdGhlIFVJUHJvY2Vzcy4KICAgICBtX3BhZ2UtPmNvbnRleHRNZW51U2hv
d2luZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CmluZGV4IDcyZTQyOWIuLjI1ZTE2MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQ4NTcsNCArNDg1NywyMiBAQCB2b2lkIFdlYlBhZ2U6
OnBvc3RTeW5jaHJvbm91c01lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpP
YmplY3QqIG1lcwogICAgICAgICByZXR1cm5EYXRhID0gd2ViUHJvY2Vzcy50cmFuc2Zvcm1IYW5k
bGVzVG9PYmplY3RzKHJldHVyblVzZXJEYXRhLm9iamVjdCgpKTsKIH0KIAordm9pZCBXZWJQYWdl
Ojpwb3B1bGF0ZVdlYkhpdFRlc3RSZXN1bHQoY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYg
aGl0VGVzdFJlc3VsdCwgYm9vbCBpbmNsdWRlSW1hZ2UsIFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGEm
IHJlc3VsdCkKK3sKKyAgICByZXN1bHQgPSBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhKGhpdFRlc3RS
ZXN1bHQpOworCisgICAgaWYgKGluY2x1ZGVJbWFnZSkgeworICAgICAgICBpZiAoSW1hZ2UqIGlt
YWdlID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7CisgICAgICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpOworICAgICAgICAgICAgU3RyaW5nIGltYWdl
RXh0ZW5zaW9uID0gaW1hZ2UtPmZpbGVuYW1lRXh0ZW5zaW9uKCk7CisgICAgICAgICAgICBpZiAo
IWltYWdlRXh0ZW5zaW9uLmlzRW1wdHkoKSAmJiBidWZmZXIpIHsKKyAgICAgICAgICAgICAgICBy
ZXN1bHQuaW1hZ2VTaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmNyZWF0ZShidWZmZXItPnNp
emUoKSk7CisgICAgICAgICAgICAgICAgbWVtY3B5KHJlc3VsdC5pbWFnZVNoYXJlZE1lbW9yeS0+
ZGF0YSgpLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgICAg
IHJlc3VsdC5pbWFnZUV4dGVuc2lvbiA9IGltYWdlRXh0ZW5zaW9uOworICAgICAgICAgICAgICAg
IHJlc3VsdC5pbWFnZVNpemUgPSBidWZmZXItPnNpemUoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBjM2E2Mzg1Li40ZWQ5YjkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQ4LDYgKzQ4
LDcgQEAKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJVc2VyRGF0YS5o
IgogI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgorI2luY2x1
ZGUgIldlYkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RpY3RhdGlvbkFsdGVy
bmF0aXZlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRWRpdG9yLmg+CkBAIC04NjksNiArODcwLDggQEAgcHVibGljOgogICAgIHZvaWQgcG9zdE1l
c3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpPYmplY3QqIG1lc3NhZ2VCb2R5
KTsKICAgICB2b2lkIHBvc3RTeW5jaHJvbm91c01lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdl
TmFtZSwgQVBJOjpPYmplY3QqIG1lc3NhZ2VCb2R5LCBSZWZQdHI8QVBJOjpPYmplY3Q+JiByZXR1
cm5EYXRhKTsKIAorICAgIHZvaWQgcG9wdWxhdGVXZWJIaXRUZXN0UmVzdWx0KGNvbnN0IFdlYkNv
cmU6OkhpdFRlc3RSZXN1bHQmLCBib29sIGluY2x1ZGVJbWFnZSwgV2ViSGl0VGVzdFJlc3VsdDo6
RGF0YSYpOworCiBwcml2YXRlOgogICAgIFdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCAwOGJiNjJmLi41YmNlNDg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQ
YWdlTWFjLm1tCkBAIC0xMDMzLDcgKzEwMzMsOSBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1BY3Rp
b25NZW51SGl0VGVzdEF0TG9jYXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBsb2NhdGlvbkluVgog
ICAgICAgICAgICAgbV9sYXN0QWN0aW9uTWVudUhpdFRlc3RQcmV2ZW50c0RlZmF1bHQgPSBlbGVt
ZW50LT5kaXNwYXRjaE1vdXNlRm9yY2VXaWxsQmVnaW4oKTsKICAgICB9CiAKLSAgICBXZWJIaXRU
ZXN0UmVzdWx0OjpEYXRhIGFjdGlvbk1lbnVSZXN1bHQoaGl0VGVzdFJlc3VsdCk7CisgICAgV2Vi
SGl0VGVzdFJlc3VsdDo6RGF0YSBhY3Rpb25NZW51UmVzdWx0OworICAgIHBvcHVsYXRlV2ViSGl0
VGVzdFJlc3VsdChoaXRUZXN0UmVzdWx0LCAhZm9ySW1tZWRpYXRlQWN0aW9uLCBhY3Rpb25NZW51
UmVzdWx0KTsKKwogICAgIGFjdGlvbk1lbnVSZXN1bHQuaGl0VGVzdExvY2F0aW9uSW5WaWV3Q29v
b3JkaW5hdGVzID0gbG9jYXRpb25JblZpZXdDb29vcmRpbmF0ZXM7CiAKICAgICBSZWZQdHI8UmFu
Z2U+IHNlbGVjdGlvblJhbmdlID0gY29yZVBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNl
ZE9yTWFpbkZyYW1lKCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuZmlyc3RSYW5nZSgpOwpAQCAt
MTA1OSwxOSArMTA2MSw2IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0
QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IGxvY2F0aW9uSW5WCiAgICAgbV9sYXN0QWN0
aW9uTWVudVJhbmdlRm9yU2VsZWN0aW9uID0gbG9va3VwUmFuZ2U7CiAgICAgbV9sYXN0QWN0aW9u
TWVudUhpdFRlc3RSZXN1bHQgPSBoaXRUZXN0UmVzdWx0OwogCi0gICAgaWYgKCFmb3JJbW1lZGlh
dGVBY3Rpb24pIHsKLSAgICAgICAgaWYgKEltYWdlKiBpbWFnZSA9IGhpdFRlc3RSZXN1bHQuaW1h
Z2UoKSkgewotICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2Ut
PmRhdGEoKTsKLSAgICAgICAgICAgIFN0cmluZyBpbWFnZUV4dGVuc2lvbiA9IGltYWdlLT5maWxl
bmFtZUV4dGVuc2lvbigpOwotICAgICAgICAgICAgaWYgKCFpbWFnZUV4dGVuc2lvbi5pc0VtcHR5
KCkgJiYgYnVmZmVyKSB7Ci0gICAgICAgICAgICAgICAgYWN0aW9uTWVudVJlc3VsdC5pbWFnZVNo
YXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6Y3JlYXRlKGJ1ZmZlci0+c2l6ZSgpKTsKLSAgICAg
ICAgICAgICAgICBtZW1jcHkoYWN0aW9uTWVudVJlc3VsdC5pbWFnZVNoYXJlZE1lbW9yeS0+ZGF0
YSgpLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwotICAgICAgICAgICAgICAgIGFj
dGlvbk1lbnVSZXN1bHQuaW1hZ2VFeHRlbnNpb24gPSBpbWFnZUV4dGVuc2lvbjsKLSAgICAgICAg
ICAgICAgICBhY3Rpb25NZW51UmVzdWx0LmltYWdlU2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCiAgICAgYm9vbCBwYWdlT3ZlcmxheURpZE92
ZXJyaWRlRGF0YURldGVjdG9ycyA9IGZhbHNlOwogICAgIGZvciAoY29uc3QgYXV0byYgb3Zlcmxh
eSA6IG1haW5GcmFtZS5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5wYWdlT3ZlcmxheXMoKSkgewog
ICAgICAgICBXZWJQYWdlT3ZlcmxheSogd2ViT3ZlcmxheSA9IFdlYlBhZ2VPdmVybGF5Ojpmcm9t
Q29yZU92ZXJsYXkoKm92ZXJsYXkpOwo=
</data>
<flag name="review"
          id="275170"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250388</attachid>
            <date>2015-04-08 14:56:48 -0700</date>
            <delta_ts>2015-04-08 16:12:35 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>32146</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1Y2UzOGVmLi5iMmQ3ZTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMg
QEAKKzIwMTUtMDQtMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIEV4cG9zZSB0aGUgIlNoYXJlIiBtZW51IGZvciBsaW5rcywgaW1hZ2VzLCBhbmQgbWVkaWEu
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMDQzNTM0MD4gYW5kIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM1MDIKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0g
SG9ydG9uLgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAqIHBh
Z2UvQ29udGV4dE1lbnVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q2xp
ZW50OjpzaGFyZVNlbGVjdGVkVGV4dE1lbnVJdGVtKTogRGVsZXRlZC4KKworICAgICAgICAqIHBh
Z2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRN
ZW51Q29udHJvbGxlcjo6cG9wdWxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6c2VsZWN0aW9uQ29u
dGFpbnNQb3NzaWJsZVdvcmQpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVD
b250cm9sbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBh
Z2UpOgorCisgICAgICAgICogcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbTo6Q29udGV4dE1lbnVJdGVtKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbTo6aXNOdWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbTo6c2hhcmVNZW51SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVu
dUl0ZW06OnN1cHBvcnRzU2hhcmVNZW51KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRleHRNZW51SXRlbTo6c2hhcmVTZWxlY3RlZFRleHRNZW51SXRlbSk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
dGsvQ29udGV4dE1lbnVJdGVtR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbTo6c2hhcmVNZW51SXRlbSk6IFJldHVybiBhIG51bGwgaXRlbS4KKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRleHRNZW51SXRlbTo6c3VwcG9ydHNTaGFyZU1lbnUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtOjpzaGFyZVNlbGVjdGVkVGV4dE1lbnVJdGVtKTog
RGVsZXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9Db250ZXh0TWVudUl0ZW1NYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW06OnNoYXJlTWVudUl0ZW0pOiBDcmVh
dGUgYSBmdWxsLWZlYXR1cmVkIFNoYXJlIG1lbnUgaXRlbSBpbnN0ZWFkIG9mIGp1c3QgZm9yIHNl
bGVjdGVkIHRleHQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW06OnN1cHBvcnRz
U2hhcmVNZW51KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbTo6
c2hhcmVTZWxlY3RlZFRleHRNZW51SXRlbSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiByZW5kZXJp
bmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojpz
ZWxlY3RlZFRleHQpOiBJbnN0ZWFkIG9mIGNhbGN1bGF0aW5nIHNlbGVjdGVkIHRleHQgb3V0c2lk
ZSB0aGUgSGl0VGVzdFJlc3VsdCwgbGV0IHRoZQorICAgICAgICAgIEhpdFRlc3RSZXN1bHQgZG8g
d2hhdCBpdCBkb2VzIGJlc3Q6IENhbGN1bGF0ZSB0aGluZ3MhCisgICAgICAgICogcmVuZGVyaW5n
L0hpdFRlc3RSZXN1bHQuaDoKKwogMjAxNS0wNC0wOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQ3Jhc2ggaW4gRE9NT2JqZWN0Q2Fj
aGUgd2hlbiBhIHdyYXBwZWQgb2JqZWN0IG93bmVkIGJ5IHRoZSBjYWNoZSBpcyB1bnJlZmZlZCBi
eSB0aGUgdXNlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IDljYTQzZDAu
LmNlOGMyNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTU1Nyw2ICs1
NTcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzdG9wU3BlYWtpbmcoKSBvdmVycmlkZSB7IH0K
IAorICAgIHZpcnR1YWwgQ29udGV4dE1lbnVJdGVtIHNoYXJlTWVudUl0ZW0oY29uc3QgSGl0VGVz
dFJlc3VsdCYpIG92ZXJyaWRlIHsgcmV0dXJuIENvbnRleHRNZW51SXRlbSgpOyB9CisKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoV2l0aFNwb3RsaWdodCgpIG92
ZXJyaWRlIHsgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRl
eHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q2xpZW50LmgK
aW5kZXggNDFjOWQyOC4uNTRhMjAwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZXh0TWVudUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVD
bGllbnQuaApAQCAtNTgsOSArNTgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
aXJ0dWFsIHZvaWQgc3BlYWsoY29uc3QgU3RyaW5nJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgc3RvcFNwZWFraW5nKCkgPSAwOwogCisgICAgICAgIHZpcnR1YWwgQ29udGV4dE1lbnVJdGVt
IHNoYXJlTWVudUl0ZW0oY29uc3QgSGl0VGVzdFJlc3VsdCYpID0gMDsKKwogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgICAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoV2l0aFNwb3RsaWdodCgpID0gMDsK
LSAgICAgICAgdmlydHVhbCBDb250ZXh0TWVudUl0ZW0gc2hhcmVTZWxlY3RlZFRleHRNZW51SXRl
bShjb25zdCBTdHJpbmcmIHNlbGVjdGVkVGV4dCkgeyByZXR1cm4gQ29udGV4dE1lbnVJdGVtOjpz
aGFyZVNlbGVjdGVkVGV4dE1lbnVJdGVtKHNlbGVjdGVkVGV4dCk7IH0KICNlbmRpZgogCiAjaWYg
VVNFKEFDQ0VTU0lCSUxJVFlfQ09OVEVYVF9NRU5VUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCBkNTExYmVhLi5kNDQxZmFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC03MzEsMTkg
KzczMSw2IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjcmVhdGVBbmRBcHBlbmRUcmFu
c2Zvcm1hdGlvbnNTdWJNZW51KENvbnRleHRNZW51SXRlCiAKICNlbmRpZgogCi1zdGF0aWMgYm9v
bCBzZWxlY3Rpb25Db250YWluc1Bvc3NpYmxlV29yZChGcmFtZSogZnJhbWUpCi17Ci0gICAgLy8g
Q3VycmVudCBhbGdvcml0aG06IGxvb2sgZm9yIGEgY2hhcmFjdGVyIHRoYXQncyBub3QganVzdCBh
IHNlcGFyYXRvci4KLSAgICBmb3IgKFRleHRJdGVyYXRvciBpdChmcmFtZS0+c2VsZWN0aW9uKCku
dG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsK
LSAgICAgICAgaW50IGxlbmd0aCA9IGl0LnRleHQoKS5sZW5ndGgoKTsKLSAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgaWYgKCEoVV9HRVRfR0Nf
TUFTSyhpdC50ZXh0KClbaV0pICYgVV9HQ19aX01BU0spKQotICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQogI2lmIFBM
QVRGT1JNKENPQ09BKQogI2RlZmluZSBTVVBQT1JUU19UT0dHTEVfVklERU9fRlVMTFNDUkVFTiAx
CiAjZWxzZQpAQCAtODI2LDYgKzgxMyw4IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpw
b3B1bGF0ZSgpCiAgICAgQ29udGV4dE1lbnVJdGVtIFNlbGVjdEFsbEl0ZW0oQWN0aW9uVHlwZSwg
Q29udGV4dE1lbnVJdGVtVGFnU2VsZWN0QWxsLCBjb250ZXh0TWVudUl0ZW1UYWdTZWxlY3RBbGwo
KSk7CiAjZW5kaWYKIAorICAgIENvbnRleHRNZW51SXRlbSBTaGFyZU1lbnVJdGVtID0gbV9jbGll
bnQuc2hhcmVNZW51SXRlbShtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpKTsKKwogICAgIE5vZGUq
IG5vZGUgPSBtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmlubmVyTm9uU2hhcmVkTm9kZSgpOwog
ICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuOwpAQCAtODQ0LDYgKzgzMyw5IEBAIHZvaWQg
Q29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAjZW5kaWYKIAogICAgIGlmICghbV9j
b250ZXh0LmhpdFRlc3RSZXN1bHQoKS5pc0NvbnRlbnRFZGl0YWJsZSgpKSB7CisgICAgICAgIFN0
cmluZyBzZWxlY3RlZFN0cmluZyA9IG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuc2VsZWN0ZWRU
ZXh0KCk7CisgICAgICAgIG1fY29udGV4dC5zZXRTZWxlY3RlZFRleHQoc2VsZWN0ZWRTdHJpbmcp
OworCiAgICAgICAgIEZyYW1lTG9hZGVyJiBsb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCk7CiAgICAg
ICAgIFVSTCBsaW5rVVJMID0gbV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUxpbmtV
UkwoKTsKICAgICAgICAgaWYgKCFsaW5rVVJMLmlzRW1wdHkoKSkgewpAQCAtODkyLDEwICs4ODQs
OCBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogCiAgICAgICAgIGlm
IChpbWFnZVVSTC5pc0VtcHR5KCkgJiYgbGlua1VSTC5pc0VtcHR5KCkgJiYgbWVkaWFVUkwuaXNF
bXB0eSgpKSB7CiAgICAgICAgICAgICBpZiAobV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5pc1Nl
bGVjdGVkKCkpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgc2VsZWN0ZWRTdHJpbmc7Ci0gICAg
ICAgICAgICAgICAgaWYgKHNlbGVjdGlvbkNvbnRhaW5zUG9zc2libGVXb3JkKGZyYW1lKSkgewor
ICAgICAgICAgICAgICAgIGlmICghc2VsZWN0ZWRTdHJpbmcuaXNFbXB0eSgpKSB7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCi0gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkU3RyaW5nID0gZnJhbWUt
PmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVk
VGV4dCgpKTsKICAgICAgICAgICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIExvb2tVcEluRGlj
dGlvbmFyeUl0ZW0oQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9u
YXJ5LCBjb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkoc2VsZWN0ZWRTdHJpbmcp
KTsKIAogICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKExvb2tVcEluRGljdGlvbmFyeUl0
ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwpAQCAtOTExLDEyICs5MDEsOSBAQCB2b2lkIENvbnRl
eHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAg
ICAgICAgICAgIGFwcGVuZEl0ZW0oKnNlcGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQo
KSk7CiAKLSAgICAgICAgICAgICAgICBpZiAoIXNlbGVjdGVkU3RyaW5nLmlzRW1wdHkoKSAmJiBD
b250ZXh0TWVudUl0ZW06OnN1cHBvcnRzU2hhcmVNZW51KCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgQ29udGV4dE1lbnVJdGVtIFNoYXJlSXRlbShtX2NsaWVudC5zaGFyZVNlbGVjdGVkVGV4dE1l
bnVJdGVtKHNlbGVjdGVkU3RyaW5nKSk7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0o
U2hhcmVJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKKyAgICAgICAgICAgICAgICBpZiAoIVNo
YXJlTWVudUl0ZW0uaXNOdWxsKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShT
aGFyZU1lbnVJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKICAgICAgICAgICAgICAgICAgICAg
YXBwZW5kSXRlbSgqc2VwYXJhdG9ySXRlbSgpLCBtX2NvbnRleHRNZW51LmdldCgpKTsKLQotICAg
ICAgICAgICAgICAgICAgICBtX2NvbnRleHQuc2V0U2VsZWN0ZWRUZXh0KHNlbGVjdGVkU3RyaW5n
KTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBDb250ZXh0TWVudUl0ZW0g
U3BlZWNoTWVudUl0ZW0oU3VibWVudVR5cGUsIENvbnRleHRNZW51SXRlbVRhZ1NwZWVjaE1lbnUs
IGNvbnRleHRNZW51SXRlbVRhZ1NwZWVjaE1lbnUoKSk7CkBAIC05NTAsNyArOTM3LDE1IEBAIHZv
aWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAKICAgICAgICAgICAgICAgICBp
ZiAoZnJhbWUtPnBhZ2UoKSAmJiAhZnJhbWUtPmlzTWFpbkZyYW1lKCkpCiAgICAgICAgICAgICAg
ICAgICAgIGFwcGVuZEl0ZW0oT3BlbkZyYW1lSXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CisK
KyAgICAgICAgICAgICAgICBpZiAoIVNoYXJlTWVudUl0ZW0uaXNOdWxsKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgYXBwZW5kSXRlbSgqc2VwYXJhdG9ySXRlbSgpLCBtX2NvbnRleHRNZW51Lmdl
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShTaGFyZU1lbnVJdGVtLCBtX2Nv
bnRleHRNZW51LmdldCgpKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisgICAg
ICAgIH0gZWxzZSBpZiAoIVNoYXJlTWVudUl0ZW0uaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIGFw
cGVuZEl0ZW0oKnNlcGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CisgICAgICAg
ICAgICBhcHBlbmRJdGVtKFNoYXJlTWVudUl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogICAg
ICAgICB9CiAgICAgfSBlbHNlIHsgLy8gTWFrZSBhbiBlZGl0aW5nIGNvbnRleHQgbWVudQogICAg
ICAgICBib29sIGluUGFzc3dvcmRGaWVsZCA9IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KS5pc0luUGFzc3dvcmRGaWVsZCgpOwpAQCAtMTAyOCwxMCArMTAyMywxMCBAQCB2b2lkIENvbnRl
eHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogICAgICAgICAgICAgYXBwZW5kSXRlbSgqc2Vw
YXJhdG9ySXRlbSgpLCBtX2NvbnRleHRNZW51LmdldCgpKTsKICAgICAgICAgfQogCi0gICAgICAg
IGlmIChtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmlzU2VsZWN0ZWQoKSAmJiAhaW5QYXNzd29y
ZEZpZWxkICYmIHNlbGVjdGlvbkNvbnRhaW5zUG9zc2libGVXb3JkKGZyYW1lKSkgeworICAgICAg
ICBTdHJpbmcgc2VsZWN0ZWRUZXh0ID0gbV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5zZWxlY3Rl
ZFRleHQoKTsKKyAgICAgICAgaWYgKG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuaXNTZWxlY3Rl
ZCgpICYmICFpblBhc3N3b3JkRmllbGQgJiYgIXNlbGVjdGVkVGV4dC5pc0VtcHR5KCkpIHsKICNp
ZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgICAgIFN0cmluZyBzZWxlY3RlZFN0cmluZyA9IGZy
YW1lLT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGZyYW1lLT5lZGl0b3IoKS5zZWxl
Y3RlZFRleHQoKSk7Ci0gICAgICAgICAgICBDb250ZXh0TWVudUl0ZW0gTG9va1VwSW5EaWN0aW9u
YXJ5SXRlbShBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnks
IGNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeShzZWxlY3RlZFN0cmluZykpOwor
ICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIExvb2tVcEluRGljdGlvbmFyeUl0ZW0oQWN0aW9u
VHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5LCBjb250ZXh0TWVudUl0
ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkoc2VsZWN0ZWRUZXh0KSk7CiAKICAgICAgICAgICAgIGFw
cGVuZEl0ZW0oTG9va1VwSW5EaWN0aW9uYXJ5SXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CiAj
ZW5kaWYKQEAgLTExMTEsNiArMTEwNiwxMSBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6
cG9wdWxhdGUoKQogICAgICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIH0KKworICAgICAgICBp
ZiAoIVNoYXJlTWVudUl0ZW0uaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNl
cGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CisgICAgICAgICAgICBhcHBlbmRJ
dGVtKFNoYXJlTWVudUl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOworICAgICAgICB9CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJv
bGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaAppbmRl
eCA4MTdhYTBjLi4zNTczOWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRl
eHRNZW51Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVD
b250cm9sbGVyLmgKQEAgLTQ4LDYgKzQ4LDggQEAgcHVibGljOgogICAgIENvbnRleHRNZW51Q29u
dHJvbGxlcihQYWdlJiwgQ29udGV4dE1lbnVDbGllbnQmKTsKICAgICB+Q29udGV4dE1lbnVDb250
cm9sbGVyKCk7CiAKKyAgICBQYWdlJiBwYWdlKCkgeyByZXR1cm4gbV9wYWdlOyB9CisKICAgICBD
b250ZXh0TWVudSogY29udGV4dE1lbnUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRNZW51Lmdl
dCgpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckNvbnRleHRNZW51KCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uY3BwCmluZGV4IDIxZGRlMGQu
LmMxYjllNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51
SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmNw
cApAQCAtNjIsMTAgKzYyLDI0IEBAIENvbnRleHRNZW51SXRlbTo6Q29udGV4dE1lbnVJdGVtKENv
bnRleHRNZW51QWN0aW9uIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwKIHsKIH0KIAorQ29u
dGV4dE1lbnVJdGVtOjpDb250ZXh0TWVudUl0ZW0oKQorICAgIDogbV90eXBlKFNlcGFyYXRvclR5
cGUpCisgICAgLCBtX2FjdGlvbihDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbikKKyAgICAsIG1f
ZW5hYmxlZChmYWxzZSkKKyAgICAsIG1fY2hlY2tlZChmYWxzZSkKK3sKK30KKwogQ29udGV4dE1l
bnVJdGVtOjp+Q29udGV4dE1lbnVJdGVtKCkKIHsKIH0KIAorYm9vbCBDb250ZXh0TWVudUl0ZW06
OmlzTnVsbCgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFRoaXMgaXMgYSBiaXQgb2YgYSBoYWNr
LiBDcm9zcy1wbGF0Zm9ybSBDb250ZXh0TWVudUl0ZW0gdXNlcnMgbmVlZCBhIGNvbmNyZXRlIHdh
eSB0byB0cmFjayAiaXNOdWxsIi4KKyAgICByZXR1cm4gbV9hY3Rpb24gPT0gQ29udGV4dE1lbnVJ
dGVtVGFnTm9BY3Rpb24gJiYgbV90aXRsZS5pc051bGwoKSAmJiBtX3N1Yk1lbnVJdGVtcy5pc0Vt
cHR5KCk7Cit9CisKIHZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRTdWJNZW51KENvbnRleHRNZW51
KiBzdWJNZW51KQogewogICAgIGlmIChzdWJNZW51KSB7CkBAIC0xMTcsMTIgKzEzMSw3IEBAIGJv
b2wgQ29udGV4dE1lbnVJdGVtOjplbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gbV9lbmFibGVk
OwogfQogCi1ib29sIENvbnRleHRNZW51SXRlbTo6c3VwcG9ydHNTaGFyZU1lbnUoKQotewotICAg
IHJldHVybiBmYWxzZTsKLX0KLQotQ29udGV4dE1lbnVJdGVtIENvbnRleHRNZW51SXRlbTo6c2hh
cmVTZWxlY3RlZFRleHRNZW51SXRlbShjb25zdCBTdHJpbmcmKQorQ29udGV4dE1lbnVJdGVtIENv
bnRleHRNZW51SXRlbTo6c2hhcmVNZW51SXRlbShjb25zdCBVUkwmLCBjb25zdCBVUkwmLCBJbWFn
ZSosIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgcmV0dXJuIENvbnRleHRNZW51SXRlbShTdWJtZW51
VHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnU2hhcmVNZW51LCBlbXB0eVN0cmluZygpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKaW5kZXggMDkwNTM0Yy4uZDkw
Y2JkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKQEAgLTQ1
LDYgKzQ1LDggQEAgdHlwZWRlZiBzdHJ1Y3QgX0d0a0FjdGlvbiBHdGtBY3Rpb247CiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBDb250ZXh0TWVudTsKKyAgICBjbGFzcyBJbWFnZTsK
KyAgICBjbGFzcyBVUkw7CiAKICAgICAvLyBUaGlzIGVudW0gbmVlZHMgdG8gYmUgaW4gc3luYyB3
aXRoIHRoZSBXZWJNZW51SXRlbVRhZyBlbnVtIGluIFdlYlVJRGVsZWdhdGUuaCBhbmQgdGhlCiAg
ICAgLy8gZXh0cmEgdmFsdWVzIGluIFdlYlVJRGVsZWdhdGVQcml2YXRlLmgKQEAgLTIwNiw4ICsy
MDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzZXRTdWJNZW51KENv
bnRleHRNZW51Kik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNTaGFyZU1lbnUoKTsK
LSAgICAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENvbnRleHRNZW51SXRlbSBzaGFyZVNlbGVj
dGVkVGV4dE1lbnVJdGVtKGNvbnN0IFN0cmluZyYpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgQ29udGV4dE1lbnVJdGVtIHNoYXJlTWVudUl0ZW0oY29uc3QgVVJMJiBhYnNvbHV0ZUxp
bmtVUkwsIGNvbnN0IFVSTCYgZG93bmxvYWRhYmxlTWVkaWFVUkwsIEltYWdlKiwgY29uc3QgU3Ry
aW5nJiBzZWxlY3RlZFRleHQpOwogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICBHdGtBY3Rp
b24qIGd0a0FjdGlvbigpIGNvbnN0OwpAQCAtMjE2LDYgKzIxNyw5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICNpZiBVU0UoQ1JPU1NfUExBVEZPUk1fQ09OVEVYVF9NRU5VUykKICAgICAgICAgQ29u
dGV4dE1lbnVJdGVtKENvbnRleHRNZW51QWN0aW9uLCBjb25zdCBTdHJpbmcmLCBib29sIGVuYWJs
ZWQsIGJvb2wgY2hlY2tlZCwgY29uc3QgVmVjdG9yPENvbnRleHRNZW51SXRlbT4mIHN1Yk1lbnVJ
dGVtcyk7CiAgICAgICAgIGV4cGxpY2l0IENvbnRleHRNZW51SXRlbShjb25zdCBQbGF0Zm9ybUNv
bnRleHRNZW51SXRlbSYpOworICAgICAgICBDb250ZXh0TWVudUl0ZW0oKTsKKworICAgICAgICBi
b29sIGlzTnVsbCgpIGNvbnN0OwogCiAgICAgICAgIC8vIE9uIFdpbmRvd3MsIHRoZSB0aXRsZSAo
ZHdUeXBlRGF0YSBvZiB0aGUgTUVOVUlURU1JTkZPKSBpcyBub3Qgc2V0IGluIHRoaXMgZnVuY3Rp
b24uIENhbGxlcnMgY2FuIHNldCB0aGUgdGl0bGUgdGhlbXNlbHZlcywKICAgICAgICAgLy8gYW5k
IGhhbmRsZSB0aGUgbGlmZXRpbWUgb2YgdGhlIHRpdGxlLCBpZiB0aGV5IG5lZWQgaXQuCkBAIC0y
MzAsNyArMjM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBDb250ZXh0TWVudUl0ZW0oUGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9uKTsK
ICAgICAgICAgZXhwbGljaXQgQ29udGV4dE1lbnVJdGVtKENvbnRleHRNZW51KiBzdWJNZW51KTsK
ICAgICAgICAgQ29udGV4dE1lbnVJdGVtKENvbnRleHRNZW51QWN0aW9uLCBjb25zdCBTdHJpbmcm
LCBib29sIGVuYWJsZWQsIGJvb2wgY2hlY2tlZCwgVmVjdG9yPENvbnRleHRNZW51SXRlbT4mIHN1
Ym1lbnVJdGVtcyk7Ci0gICAgICAgIENvbnRleHRNZW51SXRlbSgpOworICAgICAgICBXRUJDT1JF
X0VYUE9SVCBDb250ZXh0TWVudUl0ZW0oKTsKIAogICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0
IHsgcmV0dXJuICFtX3BsYXRmb3JtRGVzY3JpcHRpb247IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51SXRlbUd0ay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVJdGVtR3RrLmNwcAppbmRleCA1YWIxNDM3Li5m
NzBmZjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1l
bnVJdGVtR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1l
bnVJdGVtR3RrLmNwcApAQCAtMjg4LDEyICsyODgsNyBAQCBHdGtBY3Rpb24qIENvbnRleHRNZW51
SXRlbTo6Z3RrQWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gZ3RrX2FjdGl2YXRhYmxlX2dldF9y
ZWxhdGVkX2FjdGlvbihHVEtfQUNUSVZBVEFCTEUobV9wbGF0Zm9ybURlc2NyaXB0aW9uKSk7CiB9
CiAKLWJvb2wgQ29udGV4dE1lbnVJdGVtOjpzdXBwb3J0c1NoYXJlTWVudSgpCi17Ci0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi1Db250ZXh0TWVudUl0ZW0gQ29udGV4dE1lbnVJdGVtOjpzaGFyZVNl
bGVjdGVkVGV4dE1lbnVJdGVtKGNvbnN0IFN0cmluZyYpCitDb250ZXh0TWVudUl0ZW0gQ29udGV4
dE1lbnVJdGVtOjpzaGFyZU1lbnVJdGVtKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYsIEltYWdlKiwg
Y29uc3QgU3RyaW5nJikKIHsKICAgICByZXR1cm4gQ29udGV4dE1lbnVJdGVtKFN1Ym1lbnVUeXBl
LCBDb250ZXh0TWVudUl0ZW1UYWdTaGFyZU1lbnUsIGVtcHR5U3RyaW5nKCkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NvbnRleHRNZW51SXRlbU1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Db250ZXh0TWVudUl0ZW1NYWMubW0KaW5kZXgg
MWZkZTg3OS4uYTJiOGRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0NvbnRleHRNZW51SXRlbU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
Q29udGV4dE1lbnVJdGVtTWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA2LCAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDcgKzI5LDEzIEBACiAjaWYgRU5BQkxFKENPTlRF
WFRfTUVOVVMpCiAKICNpbmNsdWRlICJDb250ZXh0TWVudS5oIgorI2luY2x1ZGUgIkRvY3VtZW50
LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCisjaW5j
bHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJOU01lbnVTUEkuaCIKKyNpbmNsdWRlICJOb2RlLmgi
CisjaW5jbHVkZSAiVVJMLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTkwLDE1ICsx
OTYsMzIgQEAgYm9vbCBDb250ZXh0TWVudUl0ZW06OmNoZWNrZWQoKSBjb25zdAogICAgIHJldHVy
biBbbV9wbGF0Zm9ybURlc2NyaXB0aW9uLmdldCgpIHN0YXRlXSA9PSBOU09uU3RhdGU7CiB9CiAK
LWJvb2wgQ29udGV4dE1lbnVJdGVtOjpzdXBwb3J0c1NoYXJlTWVudSgpCitDb250ZXh0TWVudUl0
ZW0gQ29udGV4dE1lbnVJdGVtOjpzaGFyZU1lbnVJdGVtKGNvbnN0IFVSTCYgYWJzb2x1dGVMaW5r
VVJMLCBjb25zdCBVUkwmIGRvd25sb2FkYWJsZU1lZGlhVVJMLCBJbWFnZSogaW1hZ2UsIGNvbnN0
IFN0cmluZyYgc2VsZWN0ZWRUZXh0KQogewotICAgIHN0YXRpYyBib29sIHN1cHBvcnRzU2hhcmVN
ZW51ID0gW1tOU01lbnVJdGVtIGNsYXNzXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHN0
YW5kYXJkU2hhcmVNZW51SXRlbVdpdGhJdGVtczopXTsKLSAgICByZXR1cm4gc3VwcG9ydHNTaGFy
ZU1lbnU7Ci19CisgICAgaWYgKCFbW05TTWVudUl0ZW0gY2xhc3NdIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3Ioc3RhbmRhcmRTaGFyZU1lbnVJdGVtV2l0aEl0ZW1zOildKQorICAgICAgICBy
ZXR1cm4gQ29udGV4dE1lbnVJdGVtKCk7CiAKLUNvbnRleHRNZW51SXRlbSBDb250ZXh0TWVudUl0
ZW06OnNoYXJlU2VsZWN0ZWRUZXh0TWVudUl0ZW0oY29uc3QgU3RyaW5nJiBzZWxlY3RlZFRleHQp
Ci17Ci0gICAgQ29udGV4dE1lbnVJdGVtIGl0ZW0oW05TTWVudUl0ZW0gc3RhbmRhcmRTaGFyZU1l
bnVJdGVtV2l0aEl0ZW1zOkBbIChOU1N0cmluZyAqKXNlbGVjdGVkVGV4dCBdXSk7CisgICAgUmV0
YWluUHRyPE5TTXV0YWJsZUFycmF5PiBpdGVtcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdF0pOworCisgICAgaWYgKCFhYnNvbHV0ZUxpbmtVUkwuaXNFbXB0eSgpKQorICAg
ICAgICBbaXRlbXMgYWRkT2JqZWN0OihOU1VSTCAqKWFic29sdXRlTGlua1VSTF07CisKKyAgICBp
ZiAoIWRvd25sb2FkYWJsZU1lZGlhVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgW2l0ZW1zIGFkZE9i
amVjdDooTlNVUkwgKilkb3dubG9hZGFibGVNZWRpYVVSTF07CisKKyAgICBpZiAoaW1hZ2UpIHsK
KyAgICAgICAgTlNJbWFnZSAqbnNJbWFnZSA9IGltYWdlLT5nZXROU0ltYWdlKCk7CisgICAgICAg
IGlmIChuc0ltYWdlKQorICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDpuc0ltYWdlXTsKKyAg
ICB9CisKKyAgICBpZiAoIXNlbGVjdGVkVGV4dC5pc0VtcHR5KCkpCisgICAgICAgIFtpdGVtcyBh
ZGRPYmplY3Q6KE5TU3RyaW5nICopc2VsZWN0ZWRUZXh0XTsKKworICAgIGlmICghW2l0ZW1zIGNv
dW50XSkKKyAgICAgICAgcmV0dXJuIENvbnRleHRNZW51SXRlbSgpOworCisgICAgQ29udGV4dE1l
bnVJdGVtIGl0ZW0oW05TTWVudUl0ZW0gc3RhbmRhcmRTaGFyZU1lbnVJdGVtV2l0aEl0ZW1zOml0
ZW1zLmdldCgpXSk7CiAgICAgaXRlbS5zZXRBY3Rpb24oQ29udGV4dE1lbnVJdGVtVGFnU2hhcmVN
ZW51KTsKICAgICByZXR1cm4gaXRlbTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRU
ZXN0UmVzdWx0LmNwcAppbmRleCBhNDgwZWZmLi5hOGRhMTgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAi
U1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJTaGFkb3dSb290
LmgiCisjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRp
Y2F0b3IuaCIKICNpbmNsdWRlICJWaXNpYmxlVW5pdHMuaCIKICNpbmNsdWRlICJYTGlua05hbWVz
LmgiCkBAIC0xODksNiArMTkwLDI2IEBAIGJvb2wgSGl0VGVzdFJlc3VsdDo6aXNTZWxlY3RlZCgp
IGNvbnN0CiAgICAgcmV0dXJuIGZyYW1lLT5zZWxlY3Rpb24oKS5jb250YWlucyhtX2hpdFRlc3RM
b2NhdGlvbi5wb2ludCgpKTsKIH0KIAorU3RyaW5nIEhpdFRlc3RSZXN1bHQ6OnNlbGVjdGVkVGV4
dCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2lubmVyTm9uU2hhcmVkTm9kZSkKKyAgICAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICBGcmFtZSogZnJhbWUgPSBtX2lubmVyTm9uU2hhcmVk
Tm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOworCisgICAgLy8gTG9vayBmb3IgYSBjaGFyYWN0ZXIgdGhhdCdzIG5v
dCBqdXN0IGEgc2VwYXJhdG9yLgorICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KGZyYW1lLT5zZWxl
Y3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFu
Y2UoKSkgeworICAgICAgICBpbnQgbGVuZ3RoID0gaXQudGV4dCgpLmxlbmd0aCgpOworICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAoIShV
X0dFVF9HQ19NQVNLKGl0LnRleHQoKVtpXSkgJiBVX0dDX1pfTUFTSykpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZyYW1lLT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGZyYW1lLT5l
ZGl0b3IoKS5zZWxlY3RlZFRleHQoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7Cit9CisKIFN0cmluZyBIaXRUZXN0UmVzdWx0OjpzcGVsbGluZ1Rvb2xUaXAo
VGV4dERpcmVjdGlvbiYgZGlyKSBjb25zdAogewogICAgIGRpciA9IExUUjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCmluZGV4IDE0OTRjMTEuLmFiMWFlYzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaApAQCAtOTQsNiArOTQsNyBAQCBw
dWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBGcmFtZSogdGFyZ2V0RnJhbWUoKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzU2VsZWN0ZWQoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgc2VsZWN0ZWRUZXh0KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIHNwZWxsaW5nVG9vbFRpcChUZXh0RGlyZWN0aW9uJikgY29uc3Q7CiAgICAgU3RyaW5n
IHJlcGxhY2VkU3RyaW5nKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRpdGxl
KFRleHREaXJlY3Rpb24mKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAxMWZhZGViLi4wMDkx
OTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMDQtMDggIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEV4cG9zZSB0aGUgIlNoYXJl
IiBtZW51IGZvciBsaW5rcywgaW1hZ2VzLCBhbmQgbWVkaWEuCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8yMDQzNTM0MD4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDM1MDIKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNvbnRleHRNZW51
Q2xpZW50OjpzaGFyZU1lbnVJdGVtKTogCisKIDIwMTUtMDQtMDcgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBHZXQgcmlkIG9mIHVzZXMgb2YgQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OnNpbmdsZXRvbigpIGZyb20gV2ViS2l0TGVnYWN5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGll
bnQuaAppbmRleCAyNjVhODNhLi4xOTRlMjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTU3LDYgKzU3
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1NwZWFraW5nKCkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFdURjo6U3RyaW5nJikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHN0b3BTcGVha2luZygpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgV2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtIHNoYXJlTWVudUl0ZW0oY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJl
c3VsdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoU3BvdGxpZ2h0KCkg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudSgpIG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50Lm1tCmluZGV4IDZkODYwNjEuLjcwZTI5NDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1t
CkBAIC0zNjYsNiArMzY2LDI2IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnN0b3BTcGVh
a2luZygpCiAgICAgW05TQXBwIHN0b3BTcGVha2luZzpuaWxdOwogfQogCitDb250ZXh0TWVudUl0
ZW0gV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNoYXJlTWVudUl0ZW0oY29uc3QgSGl0VGVzdFJlc3Vs
dCYgaGl0VGVzdFJlc3VsdCkKK3sKKyAgICBpZiAoIVtbTlNNZW51SXRlbSBjbGFzc10gcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzdGFuZGFyZFNoYXJlTWVudUl0ZW1XaXRoSXRlbXM6KV0p
CisgICAgICAgIHJldHVybiBDb250ZXh0TWVudUl0ZW0oKTsKKworICAgIE5vZGUqIG5vZGUgPSBo
aXRUZXN0UmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpOworICAgIGlmICghbm9kZSkKKyAgICAg
ICAgcmV0dXJuIENvbnRleHRNZW51SXRlbSgpOworCisgICAgRnJhbWUqIGZyYW1lID0gbm9kZS0+
ZG9jdW1lbnQoKS5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBDb250
ZXh0TWVudUl0ZW0oKTsKKworICAgIFVSTCBkb3dubG9hZGFibGVNZWRpYVVSTDsKKyAgICBpZiAo
IWhpdFRlc3RSZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpLmlzRW1wdHkoKSAmJiBoaXRUZXN0UmVz
dWx0LmlzRG93bmxvYWRhYmxlTWVkaWEoKSkKKyAgICAgICAgZG93bmxvYWRhYmxlTWVkaWFVUkwg
PSBoaXRUZXN0UmVzdWx0LmFic29sdXRlTWVkaWFVUkwoKTsKKworICAgIHJldHVybiBDb250ZXh0
TWVudUl0ZW06OnNoYXJlTWVudUl0ZW0oaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKSwg
ZG93bmxvYWRhYmxlTWVkaWFVUkwsIGhpdFRlc3RSZXN1bHQuaW1hZ2UoKSwgaGl0VGVzdFJlc3Vs
dC5zZWxlY3RlZFRleHQoKSk7Cit9CisKIGJvb2wgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmNsaWVu
dEZsb2F0UmVjdEZvck5vZGUoTm9kZSYgbm9kZSwgRmxvYXRSZWN0JiByZWN0KSBjb25zdAogewog
ICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLnJlbmRlcmVyKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cKaW5kZXggYThhMjU2NS4uMWVlOTExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDE1LTA0LTA4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAg
ICAgICBFeHBvc2UgdGhlICJTaGFyZSIgbWVudSBmb3IgbGlua3MsIGltYWdlcywgYW5kIG1lZGlh
LgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjA0MzUzNDA+IGFuZCBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzNTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGlt
IEhvcnRvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvbnRleHRNZW51Q2xpZW50OjpzaGFyZU1lbnVJdGVtKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oOgorCiAyMDE1LTA0
LTAxICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZp
eCBXaW5kb3dzIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCmluZGV4IDc5NDQzNjYuLmIyNjFiOTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJD
b250ZXh0TWVudUNsaWVudC5jcHAKQEAgLTE0NCwzICsxNDQsOSBAQCBib29sIFdlYkNvbnRleHRN
ZW51Q2xpZW50Ojppc1NwZWFraW5nKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVy
biBmYWxzZTsKIH0KKworQ29udGV4dE1lbnVJdGVtIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzaGFy
ZU1lbnVJdGVtKGNvbnN0IEhpdFRlc3RSZXN1bHQmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIENvbnRleHRNZW51SXRlbSgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKaW5kZXggMjUx
NzM2YS4uNTlhODhkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCkBAIC00NSw2ICs0NSw4IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc3RvcFNwZWFraW5nKCk7CiAgICAgdmlydHVhbCBib29sIGlzU3Bl
YWtpbmcoKTsKIAorICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtIHNoYXJlTWVu
dUl0ZW0oY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYpOworCiBwcml2YXRlOgogICAgIFdl
YlZpZXcqIG1fd2ViVmlldzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODU2ODU2NS4uNzI0YTQ1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE1LTA0LTA4ICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBFeHBvc2UgdGhlICJTaGFyZSIgbWVudSBmb3IgbGlu
a3MsIGltYWdlcywgYW5kIG1lZGlhLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjA0MzUzNDA+
IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzNTAyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICAqIFNoYXJlZC9Db250ZXh0
TWVudUNvbnRleHREYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dE1lbnVDb250ZXh0
RGF0YTo6Q29udGV4dE1lbnVDb250ZXh0RGF0YSk6CisKKyAgICAgICAgKiBTaGFyZWQvV2ViSGl0
VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHQ6OkRhdGE6
OkRhdGEpOgorICAgICAgICAqIFNoYXJlZC9XZWJIaXRUZXN0UmVzdWx0Lmg6CisKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjppbnRlcm5hbFNob3dDb250ZXh0TWVudSk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29udGV4dE1lbnVDbGllbnQ6OnNoYXJlTWVudUl0ZW0pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaDoKKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkNvbnRleHRNZW51Q2xpZW50TWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudUNsaWVudDo6c2hhcmVTZWxlY3RlZFRleHRN
ZW51SXRlbSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1BY3Rpb25NZW51
SGl0VGVzdEF0TG9jYXRpb24pOgorCiAyMDE1LTA0LTA3ICBUaW0gSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgYnVpbGQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAKaW5kZXggYTg4OWFiMC4u
MjJmODY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvbnRleHRNZW51Q29u
dGV4dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db250ZXh0TWVudUNvbnRl
eHREYXRhLmNwcApAQCAtNDUsNyArNDUsNyBAQCBDb250ZXh0TWVudUNvbnRleHREYXRhOjpDb250
ZXh0TWVudUNvbnRleHREYXRhKCkKIH0KIAogQ29udGV4dE1lbnVDb250ZXh0RGF0YTo6Q29udGV4
dE1lbnVDb250ZXh0RGF0YShjb25zdCBDb250ZXh0TWVudUNvbnRleHQmIGNvbnRleHQpCi0gICAg
OiBtX3dlYkhpdFRlc3RSZXN1bHREYXRhKFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGEoY29udGV4dC5o
aXRUZXN0UmVzdWx0KCkpKQorICAgIDogbV93ZWJIaXRUZXN0UmVzdWx0RGF0YShjb250ZXh0Lmhp
dFRlc3RSZXN1bHQoKSwgdHJ1ZSkKICAgICAsIG1fc2VsZWN0ZWRUZXh0KGNvbnRleHQuc2VsZWN0
ZWRUZXh0KCkpCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCiAgICAgLCBtX3NlbGVjdGlv
bklzRWRpdGFibGUoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
SGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSGl0VGVzdFJlc3Vs
dC5jcHAKaW5kZXggNWZhNGY2ZS4uOTFlMGY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYkhpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJIaXRUZXN0UmVzdWx0LmNwcApAQCAtNjIsNiArNjIsMzggQEAgV2ViSGl0VGVzdFJlc3VsdDo6
RGF0YTo6RGF0YShjb25zdCBIaXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVzdWx0KQogewogfQogCitX
ZWJIaXRUZXN0UmVzdWx0OjpEYXRhOjpEYXRhKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQm
IGhpdFRlc3RSZXN1bHQsIGJvb2wgaW5jbHVkZUltYWdlKQorICAgIDogYWJzb2x1dGVJbWFnZVVS
TChoaXRUZXN0UmVzdWx0LmFic29sdXRlSW1hZ2VVUkwoKS5zdHJpbmcoKSkKKyAgICAsIGFic29s
dXRlUERGVVJMKGhpdFRlc3RSZXN1bHQuYWJzb2x1dGVQREZVUkwoKS5zdHJpbmcoKSkKKyAgICAs
IGFic29sdXRlTGlua1VSTChoaXRUZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCgpLnN0cmluZygp
KQorICAgICwgYWJzb2x1dGVNZWRpYVVSTChoaXRUZXN0UmVzdWx0LmFic29sdXRlTWVkaWFVUkwo
KS5zdHJpbmcoKSkKKyAgICAsIGxpbmtMYWJlbChoaXRUZXN0UmVzdWx0LnRleHRDb250ZW50KCkp
CisgICAgLCBsaW5rVGl0bGUoaGl0VGVzdFJlc3VsdC50aXRsZURpc3BsYXlTdHJpbmcoKSkKKyAg
ICAsIGlzQ29udGVudEVkaXRhYmxlKGhpdFRlc3RSZXN1bHQuaXNDb250ZW50RWRpdGFibGUoKSkK
KyAgICAsIGVsZW1lbnRCb3VuZGluZ0JveChlbGVtZW50Qm91bmRpbmdCb3hJbldpbmRvd0Nvb3Jk
aW5hdGVzKGhpdFRlc3RSZXN1bHQpKQorICAgICwgaXNTY3JvbGxiYXIoaGl0VGVzdFJlc3VsdC5z
Y3JvbGxiYXIoKSkKKyAgICAsIGlzU2VsZWN0ZWQoaGl0VGVzdFJlc3VsdC5pc1NlbGVjdGVkKCkp
CisgICAgLCBpc1RleHROb2RlKGhpdFRlc3RSZXN1bHQuaW5uZXJOb2RlKCkgJiYgaGl0VGVzdFJl
c3VsdC5pbm5lck5vZGUoKS0+aXNUZXh0Tm9kZSgpKQorICAgICwgaXNPdmVyVGV4dEluc2lkZUZv
cm1Db250cm9sRWxlbWVudChoaXRUZXN0UmVzdWx0LmlzT3ZlclRleHRJbnNpZGVGb3JtQ29udHJv
bEVsZW1lbnQoKSkKKyAgICAsIGFsbG93c0NvcHkoaGl0VGVzdFJlc3VsdC5hbGxvd3NDb3B5KCkp
CisgICAgLCBpc0Rvd25sb2FkYWJsZU1lZGlhKGhpdFRlc3RSZXN1bHQuaXNEb3dubG9hZGFibGVN
ZWRpYSgpKQorICAgICwgaW1hZ2VTaXplKDApCit7CisgICAgaWYgKCFpbmNsdWRlSW1hZ2UpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChJbWFnZSogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0Lmlt
YWdlKCkpIHsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRh
dGEoKTsKKyAgICAgICAgU3RyaW5nIGltYWdlRXh0ZW5zaW9uID0gaW1hZ2UtPmZpbGVuYW1lRXh0
ZW5zaW9uKCk7CisgICAgICAgIGlmICghaW1hZ2VFeHRlbnNpb24uaXNFbXB0eSgpICYmIGJ1ZmZl
cikgeworICAgICAgICAgICAgaW1hZ2VTaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmNyZWF0
ZShidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICBtZW1jcHkoaW1hZ2VTaGFyZWRNZW1vcnkt
PmRhdGEoKSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGlt
YWdlRXh0ZW5zaW9uID0gaW1hZ2VFeHRlbnNpb247CisgICAgICAgICAgICBpbWFnZVNpemUgPSBi
dWZmZXItPnNpemUoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogV2ViSGl0VGVzdFJlc3VsdDo6
RGF0YTo6fkRhdGEoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkhpdFRlc3RSZXN1bHQuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0
LmgKaW5kZXggZDg1N2UzYy4uMDQ0NTU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkhpdFRlc3RSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSGl0
VGVzdFJlc3VsdC5oCkBAIC04NCw2ICs4NCw3IEBAIHB1YmxpYzoKIAogICAgICAgICBEYXRhKCk7
CiAgICAgICAgIGV4cGxpY2l0IERhdGEoY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYpOwor
ICAgICAgICBEYXRhKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmLCBib29sIGluY2x1ZGVJ
bWFnZSk7CiAgICAgICAgIH5EYXRhKCk7CiAKICAgICAgICAgdm9pZCBlbmNvZGUoSVBDOjpBcmd1
bWVudEVuY29kZXImKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggMjc1NTFhYS4uMDZmMGU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEwMCw2ICsxMDAsNyBAQAogI2luY2x1ZGUgIldlYlByb3Rl
Y3Rpb25TcGFjZS5oIgogI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lmgi
CiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFw
SW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9EcmFnRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CkBAIC00
MDQyLDggKzQwNDMsMjMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmludGVybmFsU2hvd0NvbnRleHRN
ZW51KGNvbnN0IEludFBvaW50JiBtZW51TG9jYXRpb24sIGNvbnN0IEMKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gQ3VycmVudGx5IHdlIG9ubHkgc3VwcG9y
dCB0aGUgc2hhcmUgbWVudSBmb3IgdGV4dCBzZWxlY3Rpb24sIHNvIGNyZWF0ZSB0aGUgYXBwcm9w
cmlhdGUgbWVudSBpdGVtIGZvciB0aGF0IHRleHQgc2VsZWN0aW9uIG5vdy4KLSAgICAgICAgQ29u
dGV4dE1lbnVJdGVtIGNvcmVJdGVtID0gQ29udGV4dE1lbnVJdGVtOjpzaGFyZVNlbGVjdGVkVGV4
dE1lbnVJdGVtKGNvbnRleHRNZW51Q29udGV4dERhdGEuc2VsZWN0ZWRUZXh0KCkpOworICAgICAg
ICAvLyBDcmVhdGUgdGhlIHJlYWwgU2hhcmUgbWVudSBpdGVtCisgICAgICAgIFVSTCBhYnNvbHV0
ZUxpbmtVUkw7CisgICAgICAgIGlmICghY29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0
UmVzdWx0RGF0YSgpLmFic29sdXRlTGlua1VSTC5pc0VtcHR5KCkpCisgICAgICAgICAgICBhYnNv
bHV0ZUxpbmtVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBjb250ZXh0TWVudUNvbnRleHREYXRh
LndlYkhpdFRlc3RSZXN1bHREYXRhKCkuYWJzb2x1dGVMaW5rVVJMKTsKKworICAgICAgICBVUkwg
ZG93bmxvYWRhYmxlTWVkaWFVUkw7CisgICAgICAgIGlmICghY29udGV4dE1lbnVDb250ZXh0RGF0
YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29sdXRlTWVkaWFVUkwuaXNFbXB0eSgpICYmIGNv
bnRleHRNZW51Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5pc0Rvd25sb2FkYWJs
ZU1lZGlhKQorICAgICAgICAgICAgZG93bmxvYWRhYmxlTWVkaWFVUkwgPSBVUkwoUGFyc2VkVVJM
U3RyaW5nLCBjb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCkuYWJz
b2x1dGVNZWRpYVVSTCk7CisKKyAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKKyAgICAgICAg
aWYgKGNvbnRleHRNZW51Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5pbWFnZVNo
YXJlZE1lbW9yeSAmJiBjb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRh
KCkuaW1hZ2VTaXplKSB7CisgICAgICAgICAgICBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUo
KTsKKyAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCh1bnNpZ25lZCBjaGFyKiljb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhp
dFRlc3RSZXN1bHREYXRhKCkuaW1hZ2VTaGFyZWRNZW1vcnktPmRhdGEoKSwgY29udGV4dE1lbnVD
b250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmltYWdlU2l6ZSk7CisgICAgICAgICAg
ICBpbWFnZS0+c2V0RGF0YShpbWFnZURhdGEucmVsZWFzZSgpLCB0cnVlKTsKKyAgICAgICAgfQor
CisgICAgICAgIENvbnRleHRNZW51SXRlbSBjb3JlSXRlbSA9IENvbnRleHRNZW51SXRlbTo6c2hh
cmVNZW51SXRlbShhYnNvbHV0ZUxpbmtVUkwsIGRvd25sb2FkYWJsZU1lZGlhVVJMLCBpbWFnZS5n
ZXQoKSwgY29udGV4dE1lbnVDb250ZXh0RGF0YS5zZWxlY3RlZFRleHQoKSk7CiAgICAgICAgIHBy
b3Bvc2VkQVBJSXRlbXMuYXBwZW5kKFdlYkNvbnRleHRNZW51SXRlbTo6Y3JlYXRlKGNvcmVJdGVt
KSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCmluZGV4IDQwYTYw
ZDguLmIwYTVkYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCkBAIC03NCw2
ICs3NCwxMSBAQCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpkb3dubG9hZFVSTChjb25zdCBV
UkwmKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCitDb250ZXh0TWVudUl0ZW0gV2Vi
Q29udGV4dE1lbnVDbGllbnQ6OnNoYXJlTWVudUl0ZW0oY29uc3QgSGl0VGVzdFJlc3VsdCYpCit7
CisgICAgcmV0dXJuIENvbnRleHRNZW51SXRlbShTdWJtZW51VHlwZSwgQ29udGV4dE1lbnVJdGVt
VGFnU2hhcmVNZW51LCBlbXB0eVN0cmluZygpKTsKK30KKwogI2lmICFQTEFURk9STShDT0NPQSkK
IHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUq
IGZyYW1lKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCmluZGV4IGNlYmNkMTEuLjVj
Zjk4MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTU3LDEwICs1NywxMCBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1NwZWFraW5nKCkgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBzdG9wU3BlYWtpbmcoKSBvdmVycmlkZTsKLSAgICAKKyAgICB2aXJ0dWFsIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbSBzaGFyZU1lbnVJdGVtKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1
bHQmKSBvdmVycmlkZTsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCBz
ZWFyY2hXaXRoU3BvdGxpZ2h0KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpDb250
ZXh0TWVudUl0ZW0gc2hhcmVTZWxlY3RlZFRleHRNZW51SXRlbShjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKICNlbmRpZgogCiAjaWYgVVNFKEFDQ0VTU0lCSUxJVFlfQ09OVEVYVF9NRU5VUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkNvbnRleHRNZW51Q2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW0KaW5kZXggMTBjNDQwMC4u
OGM1MmY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW0K
QEAgLTk0LDExICs5NCw2IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhT
cG90bGlnaHQoKQogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZWFy
Y2hXaXRoU3BvdGxpZ2h0KHNlbGVjdGVkU3RyaW5nKSk7CiB9CiAKLUNvbnRleHRNZW51SXRlbSBX
ZWJDb250ZXh0TWVudUNsaWVudDo6c2hhcmVTZWxlY3RlZFRleHRNZW51SXRlbShjb25zdCBTdHJp
bmcmIHNlbGVjdGVkVGV4dCkKLXsKLSAgICByZXR1cm4gQ29udGV4dE1lbnVJdGVtKFN1Ym1lbnVU
eXBlLCBDb250ZXh0TWVudUl0ZW1UYWdTaGFyZU1lbnUsIGVtcHR5U3RyaW5nKCkpOwotfQotCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tCmluZGV4IDA4YmI2MmYuLmEyZWJhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTEwMzMsNyArMTAzMyw3IEBA
IHZvaWQgV2ViUGFnZTo6cGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0QXRMb2NhdGlvbihXZWJDb3Jl
OjpGbG9hdFBvaW50IGxvY2F0aW9uSW5WCiAgICAgICAgICAgICBtX2xhc3RBY3Rpb25NZW51SGl0
VGVzdFByZXZlbnRzRGVmYXVsdCA9IGVsZW1lbnQtPmRpc3BhdGNoTW91c2VGb3JjZVdpbGxCZWdp
bigpOwogICAgIH0KIAotICAgIFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGEgYWN0aW9uTWVudVJlc3Vs
dChoaXRUZXN0UmVzdWx0KTsKKyAgICBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhIGFjdGlvbk1lbnVS
ZXN1bHQoaGl0VGVzdFJlc3VsdCwgIWZvckltbWVkaWF0ZUFjdGlvbik7CiAgICAgYWN0aW9uTWVu
dVJlc3VsdC5oaXRUZXN0TG9jYXRpb25JblZpZXdDb29vcmRpbmF0ZXMgPSBsb2NhdGlvbkluVmll
d0Nvb29yZGluYXRlczsKIAogICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0aW9uUmFuZ2UgPSBjb3Jl
UGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5zZWxlY3Rpb24o
KS5zZWxlY3Rpb24oKS5maXJzdFJhbmdlKCk7CkBAIC0xMDU5LDE5ICsxMDU5LDYgQEAgdm9pZCBX
ZWJQYWdlOjpwZXJmb3JtQWN0aW9uTWVudUhpdFRlc3RBdExvY2F0aW9uKFdlYkNvcmU6OkZsb2F0
UG9pbnQgbG9jYXRpb25JblYKICAgICBtX2xhc3RBY3Rpb25NZW51UmFuZ2VGb3JTZWxlY3Rpb24g
PSBsb29rdXBSYW5nZTsKICAgICBtX2xhc3RBY3Rpb25NZW51SGl0VGVzdFJlc3VsdCA9IGhpdFRl
c3RSZXN1bHQ7CiAKLSAgICBpZiAoIWZvckltbWVkaWF0ZUFjdGlvbikgewotICAgICAgICBpZiAo
SW1hZ2UqIGltYWdlID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7Ci0gICAgICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpOwotICAgICAgICAgICAgU3Ry
aW5nIGltYWdlRXh0ZW5zaW9uID0gaW1hZ2UtPmZpbGVuYW1lRXh0ZW5zaW9uKCk7Ci0gICAgICAg
ICAgICBpZiAoIWltYWdlRXh0ZW5zaW9uLmlzRW1wdHkoKSAmJiBidWZmZXIpIHsKLSAgICAgICAg
ICAgICAgICBhY3Rpb25NZW51UmVzdWx0LmltYWdlU2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5
OjpjcmVhdGUoYnVmZmVyLT5zaXplKCkpOwotICAgICAgICAgICAgICAgIG1lbWNweShhY3Rpb25N
ZW51UmVzdWx0LmltYWdlU2hhcmVkTWVtb3J5LT5kYXRhKCksIGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgYWN0aW9uTWVudVJlc3VsdC5pbWFnZUV4dGVu
c2lvbiA9IGltYWdlRXh0ZW5zaW9uOwotICAgICAgICAgICAgICAgIGFjdGlvbk1lbnVSZXN1bHQu
aW1hZ2VTaXplID0gYnVmZmVyLT5zaXplKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci0KICAgICBib29sIHBhZ2VPdmVybGF5RGlkT3ZlcnJpZGVEYXRhRGV0ZWN0b3JzID0gZmFs
c2U7CiAgICAgZm9yIChjb25zdCBhdXRvJiBvdmVybGF5IDogbWFpbkZyYW1lLnBhZ2VPdmVybGF5
Q29udHJvbGxlcigpLnBhZ2VPdmVybGF5cygpKSB7CiAgICAgICAgIFdlYlBhZ2VPdmVybGF5KiB3
ZWJPdmVybGF5ID0gV2ViUGFnZU92ZXJsYXk6OmZyb21Db3JlT3ZlcmxheSgqb3ZlcmxheSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>