<?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>154127</bug_id>
          
          <creation_ts>2016-02-11 13:46:10 -0800</creation_ts>
          <short_desc>Soft spaces are often tracked in the wrong spot</short_desc>
          <delta_ts>2016-02-11 16:24:39 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Beth Dakin">bdakin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>enrica</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1163850</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2016-02-11 13:46:10 -0800</bug_when>
    <thetext>Soft spaces are often tracked in the wrong spot

rdar://problem/24493140</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163874</commentid>
    <comment_count>1</comment_count>
      <attachid>271086</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2016-02-11 14:18:07 -0800</bug_when>
    <thetext>Created attachment 271086
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163875</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-11 14:19:31 -0800</bug_when>
    <thetext>Attachment 271086 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:564:  The parameter name &quot;editingRangeIsRelativeTo&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/mac/WebView/WebHTMLView.mm:7107:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WebKit2/WebProcess/WebPage/WebPage.h:1139:  The parameter name &quot;editingRangeIsRelativeTo&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/mac/WebView/WebFrame.mm:822:  The parameter name &quot;INT_MAX&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 4 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>1163880</commentid>
    <comment_count>3</comment_count>
      <attachid>271088</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2016-02-11 14:27:02 -0800</bug_when>
    <thetext>Created attachment 271088
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163881</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-11 14:28:10 -0800</bug_when>
    <thetext>Attachment 271088 did not pass style-queue:


ERROR: Source/WebKit/mac/WebView/WebFrame.mm:822:  The parameter name &quot;INT_MAX&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 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>1163908</commentid>
    <comment_count>5</comment_count>
      <attachid>271088</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-02-11 15:29:26 -0800</bug_when>
    <thetext>Comment on attachment 271088
Patch

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

Please do the refactor we discussed so we don&apos;t have the duplicated code.  Also, please file a follow up bug to add the test infrastructure for testing this.

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:5819
&gt; +    process().send(Messages::WebPage::InsertTextAsync(text, replacementRange, registerUndoGroup, (uint32_t)editingRangeIsRelativeTo), m_pageID);

static_cast please.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4334
&gt; +        RefPtr&lt;Range&gt; replacementRange = rangeFromEditingRange(frame, replacementEditingRange, (EditingRangeIsRelativeTo)editingRangeIsRelativeTo);

static_cast</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163910</commentid>
    <comment_count>6</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2016-02-11 15:39:45 -0800</bug_when>
    <thetext>Thanks Sam! http://trac.webkit.org/changeset/196452</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163916</commentid>
    <comment_count>7</comment_count>
      <attachid>271088</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-02-11 16:10:48 -0800</bug_when>
    <thetext>Comment on attachment 271088
Patch

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

&gt; Source/WebKit2/Shared/EditingRange.h:35
&gt; +    Document,

Is it Document, or editable root?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163919</commentid>
    <comment_count>8</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2016-02-11 16:13:10 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 271088 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=271088&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/Shared/EditingRange.h:35
&gt; &gt; +    Document,
&gt; 
&gt; Is it Document, or editable root?

Good point. Editable root is really more accurate. I will update the name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163927</commentid>
    <comment_count>9</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2016-02-11 16:24:39 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; Comment on attachment 271088 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=271088&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/Shared/EditingRange.h:35
&gt; &gt; &gt; +    Document,
&gt; &gt; 
&gt; &gt; Is it Document, or editable root?
&gt; 
&gt; Good point. Editable root is really more accurate. I will update the name.

I filed https://bugs.webkit.org/show_bug.cgi?id=154138 and posted a patch to re-name.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271086</attachid>
            <date>2016-02-11 14:18:07 -0800</date>
            <delta_ts>2016-02-11 14:27:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>27611</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NjQzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE2LTAyLTExICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBTb2Z0IHNwYWNlcyBhcmUgb2Z0ZW4g
dHJhY2tlZCBpbiB0aGUgd3Jvbmcgc3BvdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU0MTI3CisgICAgICAgIC1hbmQgY29ycmVzcG9uZGluZy0KKyAg
ICAgICAgcmRhcjovL3Byb2JsZW0vMjQ0OTMxNDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZWJLaXQxIG5lZWRzIHRoaXMuCisgICAgICAgICogZWRp
dGluZy9FZGl0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aXNIYW5kbGluZ0FjY2Vw
dGVkQ2FuZGlkYXRlKToKKwogMjAxNi0wMi0xMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVuYW1lIEVsZW1lbnQ6OnN0eWxlKCkgdG8gRWxlbWVudDo6Y3Nz
b21TdHlsZSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJKHJldmlzaW9uIDE5NjQyNCkK
KysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1
Nyw3ICs0NTcsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RyaW5n
Rm9yQ2FuZGlkYXRlUmVxdWVzdCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFu
ZGxlQWNjZXB0ZWRDYW5kaWRhdGUoVGV4dENoZWNraW5nUmVzdWx0KTsKLSAgICBib29sIGlzSGFu
ZGxpbmdBY2NlcHRlZENhbmRpZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNIYW5kbGluZ0FjY2Vw
dGVkQ2FuZGlkYXRlOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0hhbmRsaW5nQWNjZXB0
ZWRDYW5kaWRhdGUoKSBjb25zdCB7IHJldHVybiBtX2lzSGFuZGxpbmdBY2NlcHRlZENhbmRpZGF0
ZTsgfQogCiBwcml2YXRlOgogICAgIGNsYXNzIFdlYkNvbnRlbnRSZWFkZXI7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxOTY0MzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw4MSBAQAorMjAxNi0wMi0xMSAgQmV0aCBEYWtpbiAgPGJkYWtp
bkBhcHBsZS5jb20+CisKKyAgICAgICAgU29mdCBzcGFjZXMgYXJlIG9mdGVuIHRyYWNrZWQgaW4g
dGhlIHdyb25nIHNwb3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1NDEyNworICAgICAgICAtYW5kIGNvcnJlc3BvbmRpbmctCisgICAgICAgIHJkYXI6
Ly9wcm9ibGVtLzI0NDkzMTQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgU29mdCBzcGFjZXMgYXJlIGluIHRoZSB3cm9uZyBzcGFjZSBub3cgZm9yIHR3
byByZWFzb25zLiBGaXJzdCBvZiBhbGwsIHRoZSAKKyAgICAgICAgTlNSYW5nZSB3ZSBnZXQgZnJv
bSB0aGUgYWNjZXB0ZWQgY2FuZGlkYXRlIGlzIHJlbGF0aXZlIHRvIHRoZSBwYXJhZ3JhcGggCisg
ICAgICAgIHN0YXJ0LCBzbyB3aXRob3V0IHRoaXMgcGF0Y2gsIHNvZnQgc3BhY2VzIGFyZSBvbmx5
IGV2ZXIgcmlnaHQgZm9yIHRoZSBmaXJzdCAKKyAgICAgICAgcGFyYWdyYXBoLiBTZWNvbmRseSwg
aWYgZm9jdXMgY2hhbmdlcyBmb3IgYW55IHJlYXNvbiBvdGhlciB0aGFuIHRleHQgCisgICAgICAg
IGluc2VydGlvbiwgc29mdCBzcGFjZXMgYXJlIGFsc28gd3JvbmcgYmVjYXVzZSB0aGV5IG5lZWQg
dG8gYmUgcmUtc2V0LgorCisgICAgICAgIE5ldyBlbnVtIGNhbiBiZSB1c2VkIHRvIGluZGljYXRl
IHdoYXQgYW4gRWRpdGluZ1JhbmdlIGlzIHJlbGF0aXZlIHRvLgorICAgICAgICAqIFNoYXJlZC9F
ZGl0aW5nUmFuZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6RWRpdGluZ1JhbmdlOjpFZGl0aW5nUmFu
Z2UpOgorCisgICAgICAgIGRpZEhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlIGlzIGEgbmV3IG1lc3Nh
Z2UgdGhhdCBnZXRzIHNlbnQgZnJvbSB0aGUgCisgICAgICAgIFdlYlByb2Nlc3MuIFRoaXMgbGV0
cyB1cyB0cmFjayBhIGJvb2wgbV9pc0hhbmRsaW5nQWNjZXB0ZWRDYW5kaWRhdGUuCisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpkaWRIYW5kbGVBY2NlcHRlZENhbmRpZGF0ZSk6CisKKyAgICAgICAgUmUtc2V0IHRo
ZSBtX3NvZnRTcGFjZVJhbmdlIG9uIHNlbGVjdGlvbiBjaGFuZ2VzIHNvIGxvbmcgYXMgCisgICAg
ICAgIG1faXNIYW5kbGluZ0FjY2VwdGVkQ2FuZGlkYXRlIGlzIGZhbHNlLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OnNlbGVjdGlvbkRpZENoYW5nZSk6CisKKyAgICAgICAgU2V0IG1faXNIYW5kbGluZ0FjY2Vw
dGVkQ2FuZGlkYXRlIHRvIHRydWUuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpoYW5k
bGVBY2NlcHRlZENhbmRpZGF0ZSk6CisKKyAgICAgICAgU2V0IG1faXNIYW5kbGluZ0FjY2VwdGVk
Q2FuZGlkYXRlIHRvIGZhbHNlLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZGlkSGFu
ZGxlQWNjZXB0ZWRDYW5kaWRhdGUpOgorCisgICAgICAgIGluc2VydFRleHRBc3luYyB0YWtlcyBh
IG5ldyBwYXJhbWV0ZXIgaW5kaWNhdGluZyB3aGF0IHRoZSByZXBsYWNlbWVudFJhbmdlIGlzIAor
ICAgICAgICByZWxhdGl2ZSB0by4gSWYgbmVlZFRvUmVtb3ZlU29mdFNwYWNlIGlzIHRydWUsIHRo
ZW4gdGhlIHJlcGxhY2VtZW50UmFuZ2UgaXMgCisgICAgICAgIHJlbGF0aXZlIHRvIHRoZSBwYXJh
Z3JhcGguCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjppbnNlcnRUZXh0KToKKworICAg
ICAgICBQaXBlIGRpZEhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlIHRocm91Z2ggdG8gV2ViVmlld0lt
cGwuCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKworICAgICAgICBpbnNlcnRU
ZXh0QXN5bmMgdGFrZXMgYW4gRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
Omluc2VydFRleHRBc3luYyk6CisKKyAgICAgICAgUGlwZSBkaWRIYW5kbGVBY2NlcHRlZENhbmRp
ZGF0ZSB0aHJvdWdoIHRvIFdlYlZpZXdJbXBsLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZEhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisKKyAgICAgICAgTmV3IG1lc3NhZ2UgbGV0cyB0aGUgV2ViUHJvY2VzcyB0
ZWxsIHRoZSBVSVByb2Nlc3Mgd2hlbiB0aGUgY2FuZGlkYXRlIGhhcyAKKyAgICAgICAgYmVlbiBh
Y2NlcHRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgor
CisgICAgICAgIFBpcGUgZGlkSGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUgdGhyb3VnaCB0byBXZWJW
aWV3SW1wbC4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OmRpZEhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKToKKworICAgICAgICBp
bnNlcnRUZXh0QXN5bmMgdGFrZXMgYW4gRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvLiBQYXNzIHRo
YXQgdGhyb3VnaCB0byAKKyAgICAgICAgcmFuZ2VGcm9tRWRpdGluZ1JhbmdlIHRvIGdldCB0aGUg
Y29ycmVjdCByYW5nZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydFRleHRBc3luYyk6CisKKyAgICAgICAg
VXNlIHRoZSBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gdG8gZmluZCB0aGUgcmlnaHQgV2ViQ29y
ZTo6UmFuZ2UuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJhbmdlRnJvbUVkaXRpbmdSYW5n
ZSk6CisKKyAgICAgICAgVGFrZSBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gaW4gYSBmZXcgcGxh
Y2VzLiAKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorCisgICAgICAg
IEluc2VydFRleHRBc3luYyB0YWtlcyBhIEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUby4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKworICAgICAgICBT
ZW5kIGRpZEhhbmRsZUFjY3BldGVkQ2FuZGlkYXRlIHRvIHRoZSBVSVByb2Nlc3MKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKToKKwogMjAxNi0wMi0xMSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVzZSBCbG9i
UmVzb3VyY2VIYW5kbGUgd2hlbiBsb2FkaW5nIGJsb2IgdXJscywgZXZlbiB3aGVuIHVzaW5nIE5l
dHdvcmtTZXNzaW9uCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRWRpdGluZ1JhbmdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRpbmdSYW5nZS5oCShyZXZp
c2lvbiAxOTY0MjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRWRpdGluZ1JhbmdlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDExIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitl
bnVtIGNsYXNzIEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbyA6IHVpbnQ4X3QgeworICAgIERvY3Vt
ZW50LAorICAgIFBhcmFncmFwaCwKK307CisKIHN0cnVjdCBFZGl0aW5nUmFuZ2UgewogICAgIEVk
aXRpbmdSYW5nZSgpCiAgICAgICAgIDogbG9jYXRpb24obm90Rm91bmQpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHJldmlzaW9uIDE5NjQyNCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0NSw2ICsz
NDUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1JbW1lZGlhdGVBY3Rp
b25IaXRUZXN0KGNvbnN0IFdlYkhpdFRlc3RSZXN1bHREYXRhJiwgYm9vbCBjb250ZW50UHJldmVu
dHNEZWZhdWx0LCBBUEk6Ok9iamVjdCopID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCogaW1tZWRp
YXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlckZvckhpdFRlc3RSZXN1bHQoUmVmUHRyPEFQSTo6
SGl0VGVzdFJlc3VsdD4sIHVpbnQ2NF90LCBSZWZQdHI8QVBJOjpPYmplY3Q+KSA9IDA7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkSGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoKSA9IDA7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1Mp
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNp
b24gMTk2NDI0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU4MTEsMTIgKzU4MTEsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmFkZE1JTUVUeXBlV2l0aEN1c3RvbQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjppbnNlcnRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0
aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXApCit2b2lk
IFdlYlBhZ2VQcm94eTo6aW5zZXJ0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3Qg
RWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwLCBF
ZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvKQogewogICAg
IGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0VGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2Us
IHJlZ2lzdGVyVW5kb0dyb3VwKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpJbnNlcnRUZXh0QXN5bmModGV4dCwgcmVwbGFjZW1lbnRSYW5nZSwgcmVn
aXN0ZXJVbmRvR3JvdXAsICh1aW50MzJfdCllZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8pLCBtX3Bh
Z2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRNYXJrZWRSYW5nZUFzeW5jKHN0ZDo6
ZnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJh
Y2tGdW5jdGlvbikKQEAgLTYwNjQsNiArNjA2NCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFu
ZGxlQWNjZXB0ZWRDYW5kaWRhCiB7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpIYW5kbGVBY2NlcHRlZENhbmRpZGF0ZShhY2NlcHRlZENhbmRpZGF0ZSksIG1fcGFnZUlE
KTsKIH0KKwordm9pZCBXZWJQYWdlUHJveHk6OmRpZEhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKCkK
K3sKKyAgICBtX3BhZ2VDbGllbnQuZGlkSGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoKTsKK30KICNl
bmRpZgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdl
ZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBuZXdTaXplKQpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMTk2NDI0KQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NjEsNyArNTYx
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXll
cihMYXllck9yVmlldyopOwogICAgIExheWVyT3JWaWV3KiBhY2NlbGVyYXRlZENvbXBvc2l0aW5n
Um9vdExheWVyKCkgY29uc3Q7CiAKLSAgICB2b2lkIGluc2VydFRleHRBc3luYyhjb25zdCBTdHJp
bmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgYm9vbCByZWdp
c3RlclVuZG9Hcm91cCA9IGZhbHNlKTsKKyAgICB2b2lkIGluc2VydFRleHRBc3luYyhjb25zdCBT
dHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgYm9vbCBy
ZWdpc3RlclVuZG9Hcm91cCA9IGZhbHNlLCBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gZWRpdGlu
Z1JhbmdlSXNSZWxhdGl2ZVRvID0gRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvOjpEb2N1bWVudCk7
CiAgICAgdm9pZCBnZXRNYXJrZWRSYW5nZUFzeW5jKHN0ZDo6ZnVuY3Rpb248dm9pZCAoRWRpdGlu
Z1JhbmdlLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwogICAgIHZvaWQgZ2V0U2VsZWN0ZWRSYW5n
ZUFzeW5jKHN0ZDo6ZnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4pOwogICAgIHZvaWQgY2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50Jiwgc3RkOjpmdW5jdGlvbjx2b2lkICh1aW50NjRfdCwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+KTsKQEAgLTEwNDIsNiArMTA0Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluc3Rh
bGxWaWV3U3RhdGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxlcih2b2lkKF5jb21wbGV0aW9uSGFuZGxl
cikoKSk7CiAKICAgICB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKFdlYkNvcmU6OlRleHRD
aGVja2luZ1Jlc3VsdCk7CisgICAgdm9pZCBkaWRIYW5kbGVBY2NlcHRlZENhbmRpZGF0ZSgpOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShFRkwpICYmIEhBVkUoQUNDRVNTSUJJTElUWSkgJiYgZGVm
aW5lZChIQVZFX0VDT1JFX1gpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE5NjQyNCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkK
QEAgLTQ1MSw0ICs0NTEsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2VuZGlmCiAK
ICAgICBEaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQorCisjaWYgUExBVEZPUk0oTUFDKQorICAg
IERpZEhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKCkKKyNlbmRpZgogfQpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgJKHJldmlzaW9uIDE5NjQyNCkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMjMsNiArMzIzLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2FuY2VsSW1tZWRp
YXRlQWN0aW9uQW5pbWF0aW9uKCk7CiAgICAgdm9pZCBjb21wbGV0ZUltbWVkaWF0ZUFjdGlvbkFu
aW1hdGlvbigpOwogICAgIHZvaWQgZGlkQ2hhbmdlQ29udGVudFNpemUoQ0dTaXplKTsKKyAgICB2
b2lkIGRpZEhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKCk7CiAKICAgICB2b2lkIHNldElnbm9yZXNO
b25XaGVlbEV2ZW50cyhib29sKTsKICAgICBib29sIGlnbm9yZXNOb25XaGVlbEV2ZW50cygpIGNv
bnN0IHsgcmV0dXJuIG1faWdub3Jlc05vbldoZWVsRXZlbnRzOyB9CkBAIC02MzgsNiArNjM5LDcg
QEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9sYXN0U3RyaW5nRm9yQ2FuZGlkYXRlUmVxdWVzdDsK
ICNlbmRpZgogICAgIE5TUmFuZ2UgbV9zb2Z0U3BhY2VSYW5nZSB7IE5TTm90Rm91bmQsIDAgfTsK
KyAgICBib29sIG1faXNIYW5kbGluZ0FjY2VwdGVkQ2FuZGlkYXRlIHsgZmFsc2UgfTsKIH07CiAg
ICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHJldmlzaW9uIDE5NjQyNCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTc0Nyw2ICsxNzQ3LDggQEAgdm9pZCBXZWJWaWV3SW1wbDo6Y2VudGVyU2VsZWN0aW9uSW5WaXNp
Ygogdm9pZCBXZWJWaWV3SW1wbDo6c2VsZWN0aW9uRGlkQ2hhbmdlKCkKIHsKICAgICB1cGRhdGVG
b250UGFuZWxJZk5lZWRlZCgpOworICAgIGlmICghbV9pc0hhbmRsaW5nQWNjZXB0ZWRDYW5kaWRh
dGUpCisgICAgICAgIG1fc29mdFNwYWNlUmFuZ2UgPSBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAw
KTsKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAogICAgIHVw
ZGF0ZVdlYlZpZXdJbXBsQWRkaXRpb25zKCk7CiAgICAgaWYgKCFtX3BhZ2UtPmVkaXRvclN0YXRl
KCkuaXNNaXNzaW5nUG9zdExheW91dERhdGEpCkBAIC0yMjEwLDYgKzIyMTIsNyBAQCB2b2lkIFdl
YlZpZXdJbXBsOjpoYW5kbGVBY2NlcHRlZENhbmRpZGF0CiAgICAgaWYgKG1fbGFzdFN0cmluZ0Zv
ckNhbmRpZGF0ZVJlcXVlc3QgIT0gcG9zdExheW91dERhdGEuc3RyaW5nRm9yQ2FuZGlkYXRlUmVx
dWVzdCkKICAgICAgICAgcmV0dXJuOwogCisgICAgbV9pc0hhbmRsaW5nQWNjZXB0ZWRDYW5kaWRh
dGUgPSB0cnVlOwogICAgIE5TUmFuZ2UgcmFuZ2UgPSBbYWNjZXB0ZWRDYW5kaWRhdGUgcmFuZ2Vd
OwogICAgIGlmIChhY2NlcHRlZENhbmRpZGF0ZS5yZXBsYWNlbWVudFN0cmluZyAmJiBbYWNjZXB0
ZWRDYW5kaWRhdGUucmVwbGFjZW1lbnRTdHJpbmcgbGVuZ3RoXSA+IDApIHsKICAgICAgICAgTlNS
YW5nZSByZXBsYWNlZFJhbmdlID0gTlNNYWtlUmFuZ2UocmFuZ2UubG9jYXRpb24sIFthY2NlcHRl
ZENhbmRpZGF0ZS5yZXBsYWNlbWVudFN0cmluZyBsZW5ndGhdKTsKQEAgLTIzNjMsNiArMjM2Niwx
MSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkaWRDaGFuZ2VDb250ZW50U2l6ZShDCiAgICAgW21fdmll
dyBfd2ViX2RpZENoYW5nZUNvbnRlbnRTaXplOk5TU2l6ZUZyb21DR1NpemUobmV3U2l6ZSldOwog
fQogCit2b2lkIFdlYlZpZXdJbXBsOjpkaWRIYW5kbGVBY2NlcHRlZENhbmRpZGF0ZSgpCit7Cisg
ICAgbV9pc0hhbmRsaW5nQWNjZXB0ZWRDYW5kaWRhdGUgPSBmYWxzZTsKK30KKwogdm9pZCBXZWJW
aWV3SW1wbDo6c2V0SWdub3Jlc05vbldoZWVsRXZlbnRzKGJvb2wgaWdub3Jlc05vbldoZWVsRXZl
bnRzKQogewogICAgIGlmIChtX2lnbm9yZXNOb25XaGVlbEV2ZW50cyA9PSBpZ25vcmVzTm9uV2hl
ZWxFdmVudHMpCkBAIC0zNTQ4LDcgKzM1NTYsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjppbnNlcnRU
ZXh0KGlkIHN0cmluZywgCiAgICAgaWYgKCFkaWN0YXRpb25BbHRlcm5hdGl2ZXMuaXNFbXB0eSgp
KQogICAgICAgICBtX3BhZ2UtPmluc2VydERpY3RhdGVkVGV4dEFzeW5jKGV2ZW50VGV4dCwgcmVw
bGFjZW1lbnRSYW5nZSwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzLCByZWdpc3RlclVuZG9Hcm91cCk7
CiAgICAgZWxzZQotICAgICAgICBtX3BhZ2UtPmluc2VydFRleHRBc3luYyhldmVudFRleHQsIHJl
cGxhY2VtZW50UmFuZ2UsIHJlZ2lzdGVyVW5kb0dyb3VwKTsKKyAgICAgICAgbV9wYWdlLT5pbnNl
cnRUZXh0QXN5bmMoZXZlbnRUZXh0LCByZXBsYWNlbWVudFJhbmdlLCByZWdpc3RlclVuZG9Hcm91
cCwgbmVlZFRvUmVtb3ZlU29mdFNwYWNlID8gRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvOjpQYXJh
Z3JhcGggOiBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OkRvY3VtZW50KTsKIH0KIAogdm9pZCBX
ZWJWaWV3SW1wbDo6c2VsZWN0ZWRSYW5nZVdpdGhDb21wbGV0aW9uSGFuZGxlcih2b2lkKF5jb21w
bGV0aW9uSGFuZGxlclB0cikoTlNSYW5nZSBzZWxlY3RlZFJhbmdlKSkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgJKHJldmlzaW9uIDE5NjQy
NCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaAkod29y
a2luZyBjb3B5KQpAQCAtMjA5LDYgKzIwOSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IGRpZFBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0KGNvbnN0IFdlYkhpdFRlc3RSZXN1bHRE
YXRhJiwgYm9vbCBjb250ZW50UHJldmVudHNEZWZhdWx0LCBBUEk6Ok9iamVjdCopIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCogaW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlckZv
ckhpdFRlc3RSZXN1bHQoUmVmUHRyPEFQSTo6SGl0VGVzdFJlc3VsdD4sIHVpbnQ2NF90LCBSZWZQ
dHI8QVBJOjpPYmplY3Q+KSBvdmVycmlkZTsKIAorICAgIHZpcnR1YWwgdm9pZCBkaWRIYW5kbGVB
Y2NlcHRlZENhbmRpZGF0ZSgpIG92ZXJyaWRlOworCiAgICAgdmlydHVhbCB2b2lkIHNob3dQbGF0
Zm9ybUNvbnRleHRNZW51KE5TTWVudSAqLCBXZWJDb3JlOjpJbnRQb2ludCkgb3ZlcnJpZGU7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQmFja2dyb3VuZENvbG9yKCkgb3ZlcnJpZGU7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0J
KHJldmlzaW9uIDE5NjQyNCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGwubW0JKHdvcmtpbmcgY29weSkKQEAgLTc4MCw2ICs3ODAsMTEgQEAgdm9pZCogUGFn
ZUNsaWVudEltcGw6OmltbWVkaWF0ZUFjdGlvbkFuaQogICAgIHJldHVybiBtX2ltcGwtPmltbWVk
aWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXJGb3JIaXRUZXN0UmVzdWx0KGhpdFRlc3RSZXN1
bHQuZ2V0KCksIHR5cGUsIHVzZXJEYXRhLmdldCgpKTsKIH0KIAordm9pZCBQYWdlQ2xpZW50SW1w
bDo6ZGlkSGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoKQoreworICAgIG1faW1wbC0+ZGlkSGFuZGxl
QWNjZXB0ZWRDYW5kaWRhdGUoKTsKK30KKwogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2hvd1BsYXRm
b3JtQ29udGV4dE1lbnUoTlNNZW51ICptZW51LCBJbnRQb2ludCBsb2NhdGlvbikKIHsKICAgICBb
bWVudSBwb3BVcE1lbnVQb3NpdGlvbmluZ0l0ZW06bmlsIGF0TG9jYXRpb246bG9jYXRpb24gaW5W
aWV3Om1fdmlld107CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxOTY0MjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDYgQEAK
ICNpbmNsdWRlICJEcmFnQ29udHJvbGxlckFjdGlvbi5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVh
LmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFNZXNzYWdlcy5oIgotI2luY2x1ZGUgIkVkaXRpbmdS
YW5nZS5oIgogI2luY2x1ZGUgIkVkaXRvclN0YXRlLmgiCiAjaW5jbHVkZSAiRXZlbnREaXNwYXRj
aGVyLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKQEAgLTQzMjcsMTIgKzQzMjYsMTIg
QEAgYm9vbCBXZWJQYWdlOjpzaG91bGRVc2VDdXN0b21Db250ZW50UHJvdgogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAKLXZvaWQgV2ViUGFnZTo6aW5zZXJ0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYg
dGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudEVkaXRpbmdSYW5nZSwgYm9vbCBy
ZWdpc3RlclVuZG9Hcm91cCkKK3ZvaWQgV2ViUGFnZTo6aW5zZXJ0VGV4dEFzeW5jKGNvbnN0IFN0
cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudEVkaXRpbmdSYW5nZSwg
Ym9vbCByZWdpc3RlclVuZG9Hcm91cCwgdWludDMyX3QgZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRv
KQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNl
ZE9yTWFpbkZyYW1lKCk7CiAKICAgICBpZiAocmVwbGFjZW1lbnRFZGl0aW5nUmFuZ2UubG9jYXRp
b24gIT0gbm90Rm91bmQpIHsKLSAgICAgICAgUmVmUHRyPFJhbmdlPiByZXBsYWNlbWVudFJhbmdl
ID0gcmFuZ2VGcm9tRWRpdGluZ1JhbmdlKGZyYW1lLCByZXBsYWNlbWVudEVkaXRpbmdSYW5nZSk7
CisgICAgICAgIFJlZlB0cjxSYW5nZT4gcmVwbGFjZW1lbnRSYW5nZSA9IHJhbmdlRnJvbUVkaXRp
bmdSYW5nZShmcmFtZSwgcmVwbGFjZW1lbnRFZGl0aW5nUmFuZ2UsIChFZGl0aW5nUmFuZ2VJc1Jl
bGF0aXZlVG8pZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvKTsKICAgICAgICAgaWYgKHJlcGxhY2Vt
ZW50UmFuZ2UpCiAgICAgICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlz
aWJsZVNlbGVjdGlvbigqcmVwbGFjZW1lbnRSYW5nZSwgU0VMX0RFRkFVTFRfQUZGSU5JVFkpKTsK
ICAgICB9CkBAIC01MDI2LDcgKzUwMjUsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldEJ5dGVjb2RlUHJv
ZmlsZSh1aW50NjRfCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdHJpbmdDYWxs
YmFjayhyZXN1bHQsIGNhbGxiYWNrSUQpKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJDb3JlOjpSYW5n
ZT4gV2ViUGFnZTo6cmFuZ2VGcm9tRWRpdGluZ1JhbmdlKFdlYkNvcmU6OkZyYW1lJiBmcmFtZSwg
Y29uc3QgRWRpdGluZ1JhbmdlJiByYW5nZSkKK1Bhc3NSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IFdl
YlBhZ2U6OnJhbmdlRnJvbUVkaXRpbmdSYW5nZShXZWJDb3JlOjpGcmFtZSYgZnJhbWUsIGNvbnN0
IEVkaXRpbmdSYW5nZSYgcmFuZ2UsIEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbyBlZGl0aW5nUmFu
Z2VJc1JlbGF0aXZlVG8pCiB7CiAgICAgQVNTRVJUKHJhbmdlLmxvY2F0aW9uICE9IG5vdEZvdW5k
KTsKIApAQCAtNTAzOSwxMyArNTAzOCwzMCBAQCBQYXNzUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBX
ZWJQYWdlOjpyYW5nCiAgICAgZWxzZQogICAgICAgICBsZW5ndGggPSBJTlRfTUFYIC0gcmFuZ2Uu
bG9jYXRpb247CiAKLSAgICAvLyBPdXIgY3JpdGljYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHdlIGFy
ZSBvbmx5IGNhbGxlZCBieSBpbnB1dCBtZXRob2RzIHRoYXQKLSAgICAvLyBjb25jZW50cmF0ZSBv
biBhIGdpdmVuIGFyZWEgY29udGFpbmluZyB0aGUgc2VsZWN0aW9uLgotICAgIC8vIFdlIGhhdmUg
dG8gZG8gdGhpcyBiZWNhdXNlIG9mIHRleHQgZmllbGRzIGFuZCB0ZXh0YXJlYXMuIFRoZSBET00g
Zm9yIHRob3NlIGlzIG5vdAotICAgIC8vIGRpcmVjdGx5IGluIHRoZSBkb2N1bWVudCBET00sIHNv
IHNlcmlhbGl6YXRpb24gaXMgcHJvYmxlbWF0aWMuIE91ciBzb2x1dGlvbiBpcwotICAgIC8vIHRv
IHVzZSB0aGUgcm9vdCBlZGl0YWJsZSBlbGVtZW50IG9mIHRoZSBzZWxlY3Rpb24gc3RhcnQgYXMg
dGhlIHBvc2l0aW9uYWwgYmFzZS4KLSAgICAvLyBUaGF0IGZpdHMgd2l0aCBBcHBLaXQncyBpZGVh
IG9mIGFuIGlucHV0IGNvbnRleHQuCi0gICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9t
TG9jYXRpb25BbmRMZW5ndGgoZnJhbWUuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudE9y
RG9jdW1lbnRFbGVtZW50KCksIHN0YXRpY19jYXN0PGludD4ocmFuZ2UubG9jYXRpb24pLCBsZW5n
dGgpOworICAgIGlmIChlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gPT0gRWRpdGluZ1JhbmdlSXNS
ZWxhdGl2ZVRvOjpEb2N1bWVudCkgeworICAgICAgICAvLyBPdXIgY3JpdGljYWwgYXNzdW1wdGlv
biBpcyB0aGF0IHRoaXMgY29kZSBwYXRoIGlzIGNhbGxlZCBieSBpbnB1dCBtZXRob2RzIHRoYXQK
KyAgICAgICAgLy8gY29uY2VudHJhdGUgb24gYSBnaXZlbiBhcmVhIGNvbnRhaW5pbmcgdGhlIHNl
bGVjdGlvbi4KKyAgICAgICAgLy8gV2UgaGF2ZSB0byBkbyB0aGlzIGJlY2F1c2Ugb2YgdGV4dCBm
aWVsZHMgYW5kIHRleHRhcmVhcy4gVGhlIERPTSBmb3IgdGhvc2UgaXMgbm90CisgICAgICAgIC8v
IGRpcmVjdGx5IGluIHRoZSBkb2N1bWVudCBET00sIHNvIHNlcmlhbGl6YXRpb24gaXMgcHJvYmxl
bWF0aWMuIE91ciBzb2x1dGlvbiBpcworICAgICAgICAvLyB0byB1c2UgdGhlIHJvb3QgZWRpdGFi
bGUgZWxlbWVudCBvZiB0aGUgc2VsZWN0aW9uIHN0YXJ0IGFzIHRoZSBwb3NpdGlvbmFsIGJhc2Uu
CisgICAgICAgIC8vIFRoYXQgZml0cyB3aXRoIEFwcEtpdCdzIGlkZWEgb2YgYW4gaW5wdXQgY29u
dGV4dC4KKyAgICAgICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRM
ZW5ndGgoZnJhbWUuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVt
ZW50KCksIHN0YXRpY19jYXN0PGludD4ocmFuZ2UubG9jYXRpb24pLCBsZW5ndGgpOworICAgIH0K
KworICAgIEFTU0VSVChlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gPT0gRWRpdGluZ1JhbmdlSXNS
ZWxhdGl2ZVRvOjpQYXJhZ3JhcGgpOworCisgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2Vs
ZWN0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CisgICAgUmVmUHRyPFJhbmdl
PiBzZWxlY3RlZFJhbmdlID0gc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAgaWYg
KCFzZWxlY3RlZFJhbmdlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxSYW5nZT4g
cGFyYWdyYXBoUmFuZ2UgPSBtYWtlUmFuZ2Uoc3RhcnRPZlBhcmFncmFwaChzZWxlY3Rpb24udmlz
aWJsZVN0YXJ0KCkpLCBzZWxlY3Rpb24udmlzaWJsZUVuZCgpKTsKKyAgICBpZiAoIXBhcmFncmFw
aFJhbmdlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIENvbnRhaW5lck5vZGUmIHJvb3ROb2Rl
ID0gcGFyYWdyYXBoUmFuZ2UuZ2V0KCktPnN0YXJ0Q29udGFpbmVyKCkudHJlZVNjb3BlKCkucm9v
dE5vZGUoKTsKKyAgICBpbnQgcGFyYWdyYXBoU3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFu
Z2VMZW5ndGgoUmFuZ2U6OmNyZWF0ZShyb290Tm9kZS5kb2N1bWVudCgpLCAmcm9vdE5vZGUsIDAs
ICZwYXJhZ3JhcGhSYW5nZS0+c3RhcnRDb250YWluZXIoKSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0
T2Zmc2V0KCkpLnB0cigpKTsKKyAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2Nh
dGlvbkFuZExlbmd0aCgmcm9vdE5vZGUsIHBhcmFncmFwaFN0YXJ0SW5kZXggKyBzdGF0aWNfY2Fz
dDxpbnQ+KHJhbmdlLmxvY2F0aW9uKSwgbGVuZ3RoKTsKIH0KICAgICAKIHZvaWQgV2ViUGFnZTo6
ZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0Rm9yRnJhbWUoRnJhbWUqIGZyYW1lKQpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAxOTY0MjQp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQVBJSW5qZWN0ZWRCdW5kbGVQYWdl
VUlDbGllbnQuaCIKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJEb3dubG9hZC5o
IgorI2luY2x1ZGUgIkVkaXRpbmdSYW5nZS5oIgogI2luY2x1ZGUgIkZpbmRDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCIKICNpbmNs
dWRlICJJbWFnZU9wdGlvbnMuaCIKQEAgLTY0Niw3ICs2NDcsNyBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgdm9pZCBzZW5kQ29tcGxleFRleHRJbnB1dFRvUGx1Z2luKHVpbnQ2NF90IHBsdWdpbkNvbXBs
ZXhUZXh0SW5wdXRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHRleHRJbnB1dCk7CiAKLSAgICB2
b2lkIGluc2VydFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5n
ZSYgcmVwbGFjZW1lbnRSYW5nZSwgYm9vbCByZWdpc3RlclVuZG9Hcm91cCA9IGZhbHNlKTsKKyAg
ICB2b2lkIGluc2VydFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdS
YW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgYm9vbCByZWdpc3RlclVuZG9Hcm91cCA9IGZhbHNlLCB1
aW50MzJfdCBlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gPSAodWludDMyX3QpRWRpdGluZ1Jhbmdl
SXNSZWxhdGl2ZVRvOjpEb2N1bWVudCk7CiAgICAgdm9pZCBnZXRNYXJrZWRSYW5nZUFzeW5jKHVp
bnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgZ2V0U2VsZWN0ZWRSYW5nZUFzeW5jKHVpbnQ2
NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgY2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CkBAIC0xMTM1LDcg
KzExMzYsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBQbHVnaW5WaWV3KiBmb2N1c2VkUGx1Z2lu
Vmlld0ZvckZyYW1lKFdlYkNvcmU6OkZyYW1lJik7CiAgICAgc3RhdGljIFBsdWdpblZpZXcqIHBs
dWdpblZpZXdGb3JGcmFtZShXZWJDb3JlOjpGcmFtZSopOwogCi0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6UmFuZ2U+IHJhbmdlRnJvbUVkaXRpbmdSYW5nZShXZWJDb3JlOjpGcmFtZSYs
IGNvbnN0IEVkaXRpbmdSYW5nZSYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvcmU6OlJh
bmdlPiByYW5nZUZyb21FZGl0aW5nUmFuZ2UoV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBFZGl0aW5n
UmFuZ2UmLCBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRv
ID0gRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvOjpEb2N1bWVudCk7CiAKICAgICB2b2lkIHJlcG9y
dFVzZWRGZWF0dXJlcygpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTk2NDI0KQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTM1Nyw3ICszNTcsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2Fj
eVJlY2VpdmVyIHsKICAgICBTaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZlbnQoV2ViS2l0OjpX
ZWJNb3VzZUV2ZW50IGV2ZW50KSAtPiAoYm9vbCByZXN1bHQpCiAgICAgQWNjZXB0c0ZpcnN0TW91
c2UoaW50IGV2ZW50TnVtYmVyLCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQgZXZlbnQpIC0+IChib29s
IHJlc3VsdCkKIAotICAgIEluc2VydFRleHRBc3luYyhTdHJpbmcgdGV4dCwgc3RydWN0IFdlYktp
dDo6RWRpdGluZ1JhbmdlIHJlcGxhY2VtZW50UmFuZ2UsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXAp
CisgICAgSW5zZXJ0VGV4dEFzeW5jKFN0cmluZyB0ZXh0LCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5n
UmFuZ2UgcmVwbGFjZW1lbnRSYW5nZSwgYm9vbCByZWdpc3RlclVuZG9Hcm91cCwgdWludDMyX3Qg
ZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvKQogICAgIEdldE1hcmtlZFJhbmdlQXN5bmModWludDY0
X3QgY2FsbGJhY2tJRCkKICAgICBHZXRTZWxlY3RlZFJhbmdlQXN5bmModWludDY0X3QgY2FsbGJh
Y2tJRCkKICAgICBDaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMoV2ViQ29yZTo6SW50UG9pbnQg
cG9pbnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkocmV2aXNpb24gMTk2NDI0
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsNiArMTU1LDcgQEAgdm9pZCBXZWJQYWdlOjpoYW5kbGVB
Y2NlcHRlZENhbmRpZGF0ZShXZQogICAgICAgICByZXR1cm47CiAKICAgICBmcmFtZS0+ZWRpdG9y
KCkuaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoYWNjZXB0ZWRDYW5kaWRhdGUpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkSGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoKSk7CiB9
CiAKIE5TT2JqZWN0ICpXZWJQYWdlOjphY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yTWFpbkZyYW1lUGx1
Z2luKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NjQzNikKKysrIFNvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE2
LTAyLTExICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBTb2Z0IHNw
YWNlcyBhcmUgb2Z0ZW4gdHJhY2tlZCBpbiB0aGUgd3Jvbmcgc3BvdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0MTI3CisgICAgICAgIC1hbmQgY29y
cmVzcG9uZGluZy0KKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjQ0OTMxNDAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTb2Z0IHNwYWNlcyBhcmUgaW4g
dGhlIHdyb25nIHNwYWNlIG5vdyBmb3IgdHdvIHJlYXNvbnMuIEZpcnN0IG9mIGFsbCwgdGhlIAor
ICAgICAgICBOU1JhbmdlIHdlIGdldCBmcm9tIHRoZSBhY2NlcHRlZCBjYW5kaWRhdGUgaXMgcmVs
YXRpdmUgdG8gdGhlIHBhcmFncmFwaCAKKyAgICAgICAgc3RhcnQsIHNvIHdpdGhvdXQgdGhpcyBw
YXRjaCwgc29mdCBzcGFjZXMgYXJlIG9ubHkgZXZlciByaWdodCBmb3IgdGhlIGZpcnN0IAorICAg
ICAgICBwYXJhZ3JhcGguIFNlY29uZGx5LCBpZiBmb2N1cyBjaGFuZ2VzIGZvciBhbnkgcmVhc29u
IG90aGVyIHRoYW4gdGV4dCAKKyAgICAgICAgaW5zZXJ0aW9uLCBzb2Z0IHNwYWNlcyBhcmUgYWxz
byB3cm9uZyBiZWNhdXNlIHRoZXkgbmVlZCB0byBiZSByZS1zZXQuCisKKyAgICAgICAgTmV3IHZl
cnNpb24gb2YgX2NvbnZlcnRUb0RPTVJhbmdlIHRha2VzIGEgTlNSYW5nZUlzUmVsYXRpdmVUbyBz
byB0aGF0IGl0IGNhbiAKKyAgICAgICAgaGFuZGxlIHJhbmdlcyByZWxhdGl2ZSB0byBib3RoIHRo
ZSBkb2N1bWVudCBhbmQgdGhlIHBhcmFncmFwaC4gCisgICAgICAgICogV2ViVmlldy9XZWJGcmFt
ZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2NvbnZlcnRUb0RPTVJhbmdlOnJhbmdlSXNSZWxh
dGl2ZVRvOl0pOgorICAgICAgICAoLVtXZWJGcmFtZSBfY29udmVydE5TUmFuZ2VUb0RPTVJhbmdl
Ol0pOgorCisgICAgICAgIE5ldyBlbnVtIE5TUmFuZ2VJc1JlbGF0aXZlVG8uCisgICAgICAgICog
V2ViVmlldy9XZWJGcmFtZUludGVybmFsLmg6CisKKyAgICAgICAgUmUtc2V0IHRoZSBzb2Z0U3Bh
Y2VSYW5nZSBvbiBzZWxlY3Rpb24gY2hhbmdlcyBzbyBsb25nIGFzIHRoZSBXZWJDb3JlOjpFZGl0
b3IgCisgICAgICAgIGlzIG5vdCBjdXJyZW50bHkgaGFuZGxpbmcgYW4gYWNjZXB0ZWQgY2FuZGlk
YXRlLgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgICgtW1dlYkhU
TUxWaWV3IF9zZWxlY3Rpb25DaGFuZ2VkXSk6CisKKyAgICAgICAgSWYgbmVlZFRvUmVtb3ZlU29m
dFNwYWNlIGlzIHRydWUsIHRoZW4gdGhlIHJlcGxhY2VtZW50UmFuZ2UgaXMgCisgICAgICAgIHJl
bGF0aXZlIHRvIHRoZSBwYXJhZ3JhcGguCisgICAgICAgICgtW1dlYkhUTUxWaWV3IGluc2VydFRl
eHQ6XSk6CisKIDIwMTYtMDItMTAgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYkZyYW1lIF9zdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpm
b3JjZVVzZXJHZXN0dXJlOiBzaG91bGQgYXNzZXJ0IHRoYXQgaXQgaXMgYmVpbmcgY2FsbGVkIGZy
b20gdGhlICJtYWluIiB0aHJlYWQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJh
bWUubW0JKHJldmlzaW9uIDE5NjQyNCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTgxMCw2ICs4MTAsMzIgQEAgLSAoUGFzc1JlZlB0
cjxSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdlOgogICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGVsZW1lbnQsIG5zcmFuZ2UubG9jYXRpb24sIG5zcmFu
Z2UubGVuZ3RoKTsKIH0KIAorLSAoUGFzc1JlZlB0cjxSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdl
OihOU1JhbmdlKW5zcmFuZ2UgcmFuZ2VJc1JlbGF0aXZlVG86KE5TUmFuZ2VJc1JlbGF0aXZlVG8p
cmFuZ2VJc1JlbGF0aXZlVG8KK3sKKyAgICBpZiAocmFuZ2VJc1JlbGF0aXZlVG8gPT0gTlNSYW5n
ZUlzUmVsYXRpdmVUbzo6RG9jdW1lbnQpCisgICAgICAgIHJldHVybiBbc2VsZiBfY29udmVydFRv
RE9NUmFuZ2U6bnNyYW5nZV07CisKKyAgICBBU1NFUlQocmFuZ2VJc1JlbGF0aXZlVG8gPT0gTlNS
YW5nZUlzUmVsYXRpdmVUbzo6UGFyYWdyYXBoKTsKKworICAgIGlmIChuc3JhbmdlLmxvY2F0aW9u
ID4gSU5UX01BWCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKG5zcmFuZ2UubGVuZ3RoID4g
SU5UX01BWCB8fCBuc3JhbmdlLmxvY2F0aW9uICsgbnNyYW5nZS5sZW5ndGggPiBJTlRfTUFYKQor
ICAgICAgICBuc3JhbmdlLmxlbmd0aCA9IElOVF9NQVggLSBuc3JhbmdlLmxvY2F0aW9uOworCisg
ICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uID0gX3ByaXZhdGUtPmNvcmVGcmFt
ZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CisgICAgUmVmUHRyPFJhbmdlPiBzZWxlY3RlZFJh
bmdlID0gc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAgaWYgKCFzZWxlY3RlZFJh
bmdlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxSYW5nZT4gcGFyYWdyYXBoUmFu
Z2UgPSBtYWtlUmFuZ2Uoc3RhcnRPZlBhcmFncmFwaChzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkp
LCBzZWxlY3Rpb24udmlzaWJsZUVuZCgpKTsKKyAgICBpZiAoIXBhcmFncmFwaFJhbmdlKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlID0gcGFyYWdyYXBo
UmFuZ2UuZ2V0KCktPnN0YXJ0Q29udGFpbmVyKCkudHJlZVNjb3BlKCkucm9vdE5vZGUoKTsKKyAg
ICBpbnQgcGFyYWdyYXBoU3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoUmFu
Z2U6OmNyZWF0ZShyb290Tm9kZS5kb2N1bWVudCgpLCAmcm9vdE5vZGUsIDAsICZwYXJhZ3JhcGhS
YW5nZS0+c3RhcnRDb250YWluZXIoKSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpLnB0
cigpKTsKKyAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aCgmcm9vdE5vZGUsIHBhcmFncmFwaFN0YXJ0SW5kZXggKyBzdGF0aWNfY2FzdDxpbnQ+KG5zcmFu
Z2UubG9jYXRpb24pLCBuc3JhbmdlLmxlbmd0aCk7Cit9CisKIC0gKERPTVJhbmdlICopX2NvbnZl
cnROU1JhbmdlVG9ET01SYW5nZTooTlNSYW5nZSluc3JhbmdlCiB7CiAgICAgcmV0dXJuIGtpdChb
c2VsZiBfY29udmVydFRvRE9NUmFuZ2U6bnNyYW5nZV0uZ2V0KCkpOwpJbmRleDogU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZUludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZUludGVybmFsLmgJKHJldmlzaW9uIDE5NjQyNCkK
KysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVJbnRlcm5hbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC02Myw2ICs2MywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHR5cGVkZWYg
V2ViQ29yZTo6SGlzdG9yeUl0ZW0gV2ViQ29yZUhpc3RvcnlJdGVtOwogCitlbnVtIGNsYXNzIE5T
UmFuZ2VJc1JlbGF0aXZlVG8gOiB1aW50OF90IHsKKyAgICBEb2N1bWVudCwKKyAgICBQYXJhZ3Jh
cGgsCit9OworCiBXZWJDb3JlOjpGcmFtZSogY29yZShXZWJGcmFtZSAqKTsKIFdlYkZyYW1lICpr
aXQoV2ViQ29yZTo6RnJhbWUgKik7CiAKQEAgLTE2MCw2ICsxNjUsNyBAQCBAaW50ZXJmYWNlIFdl
YkZyYW1lIChXZWJJbnRlcm5hbCkKICNlbmRpZgogLSAoTlNSYW5nZSlfY29udmVydFRvTlNSYW5n
ZTooV2ViQ29yZTo6UmFuZ2UqKXJhbmdlOwogLSAoUGFzc1JlZlB0cjxXZWJDb3JlOjpSYW5nZT4p
X2NvbnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKW5zcmFuZ2U7CistIChQYXNzUmVmUHRyPFdlYkNv
cmU6OlJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2UpbnNyYW5nZSByYW5nZUlzUmVs
YXRpdmVUbzooTlNSYW5nZUlzUmVsYXRpdmVUbylyYW5nZUlzUmVsYXRpdmVUbzsKIAogLSAoRE9N
RG9jdW1lbnRGcmFnbWVudCAqKV9kb2N1bWVudEZyYWdtZW50V2l0aE1hcmt1cFN0cmluZzooTlNT
dHJpbmcgKiltYXJrdXBTdHJpbmcgYmFzZVVSTFN0cmluZzooTlNTdHJpbmcgKiliYXNlVVJMU3Ry
aW5nOwogLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9kb2N1bWVudEZyYWdtZW50V2l0aE5vZGVz
QXNQYXJhZ3JhcGhzOihOU0FycmF5ICopbm9kZXM7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0JKHJldmlzaW9uIDE5NjQyNCkKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTYwOTcsNiArNjA5
NywxMCBAQCAtICh2b2lkKV9zZWxlY3Rpb25DaGFuZ2VkCiAgICAgW3NlbGYgX3VwZGF0ZVNlbGVj
dGlvbkZvcklucHV0TWFuYWdlcl07CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBbc2VsZiBfdXBk
YXRlRm9udFBhbmVsXTsKKyAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2Zy
YW1lXSkpIHsKKyAgICAgICAgaWYgKCFjb3JlRnJhbWUtPmVkaXRvcigpLmlzSGFuZGxpbmdBY2Nl
cHRlZENhbmRpZGF0ZSgpKQorICAgICAgICAgICAgX3ByaXZhdGUtPnNvZnRTcGFjZVJhbmdlID0g
TlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7CisgICAgfQogI2VuZGlmCiB9CiAKQEAgLTcwOTgs
MTYgKzcxMDIsMjMgQEAgLSAodm9pZClpbnNlcnRUZXh0OihpZClzdHJpbmcKICAgICBpZiAoIWNv
cmVGcmFtZSB8fCAhY29yZUZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIEJPT0wgbmVlZFRvUmVtb3ZlU29mdFNwYWNlID0gTk87CiAjaWYgUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAotICAgIGlm
IChfcHJpdmF0ZS0+c29mdFNwYWNlUmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCAmJiAocmVw
bGFjZW1lbnRSYW5nZS5sb2NhdGlvbiA9PSBOU01heFJhbmdlKF9wcml2YXRlLT5zb2Z0U3BhY2VS
YW5nZSkgfHwgcmVwbGFjZW1lbnRSYW5nZS5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKSAmJiByZXBs
YWNlbWVudFJhbmdlLmxlbmd0aCA9PSAwICYmIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxD
aGVja2VyXSBkZWxldGVzQXV0b3NwYWNlQmVmb3JlU3RyaW5nOnRleHQgbGFuZ3VhZ2U6bmlsXSkK
KyAgICBpZiAoX3ByaXZhdGUtPnNvZnRTcGFjZVJhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQg
JiYgKHJlcGxhY2VtZW50UmFuZ2UubG9jYXRpb24gPT0gTlNNYXhSYW5nZShfcHJpdmF0ZS0+c29m
dFNwYWNlUmFuZ2UpIHx8IHJlcGxhY2VtZW50UmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkg
JiYgcmVwbGFjZW1lbnRSYW5nZS5sZW5ndGggPT0gMCAmJiBbW05TU3BlbGxDaGVja2VyIHNoYXJl
ZFNwZWxsQ2hlY2tlcl0gZGVsZXRlc0F1dG9zcGFjZUJlZm9yZVN0cmluZzp0ZXh0IGxhbmd1YWdl
Om5pbF0pIHsKICAgICAgICAgcmVwbGFjZW1lbnRSYW5nZSA9IF9wcml2YXRlLT5zb2Z0U3BhY2VS
YW5nZTsKKyAgICAgICAgbmVlZFRvUmVtb3ZlU29mdFNwYWNlID0gWUVTOworICAgIH0KICNlbmRp
ZgogI2lmICFQTEFURk9STShJT1MpCiAgICAgX3ByaXZhdGUtPnNvZnRTcGFjZVJhbmdlID0gTlNN
YWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7CiAjZW5kaWYKIAotICAgIGlmIChyZXBsYWNlbWVudFJh
bmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpCi0gICAgICAgIFtbc2VsZiBfZnJhbWVdIF9zZWxl
Y3ROU1JhbmdlOnJlcGxhY2VtZW50UmFuZ2VdOworICAgIGlmIChyZXBsYWNlbWVudFJhbmdlLmxv
Y2F0aW9uICE9IE5TTm90Rm91bmQpIHsKKyAgICAgICAgTlNSYW5nZUlzUmVsYXRpdmVUbyByYW5n
ZUlzUmVsYXRpdmVUbyA9IG5lZWRUb1JlbW92ZVNvZnRTcGFjZSA/IE5TUmFuZ2VJc1JlbGF0aXZl
VG86OlBhcmFncmFwaCA6IE5TUmFuZ2VJc1JlbGF0aXZlVG86OkRvY3VtZW50OworICAgICAgICBS
ZWZQdHI8UmFuZ2U+IGRvbVJhbmdlID0gW1tzZWxmIF9mcmFtZV0gX2NvbnZlcnRUb0RPTVJhbmdl
OnJlcGxhY2VtZW50UmFuZ2UgcmFuZ2VJc1JlbGF0aXZlVG86cmFuZ2VJc1JlbGF0aXZlVG9dOwor
ICAgICAgICBpZiAoZG9tUmFuZ2UpCisgICAgICAgICAgICBjb3JlRnJhbWUtPnNlbGVjdGlvbigp
LnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKCpkb21SYW5nZSwgU0VMX0RFRkFVTFRfQUZG
SU5JVFkpKTsKKyAgICB9CiAKICAgICBib29sIGV2ZW50SGFuZGxlZCA9IGZhbHNlOwogICAgIFN0
cmluZyBldmVudFRleHQgPSB0ZXh0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271088</attachid>
            <date>2016-02-11 14:27:02 -0800</date>
            <delta_ts>2016-02-11 15:29:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-2.txt</filename>
            <type>text/plain</type>
            <size>27557</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NjQzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE2LTAyLTExICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBTb2Z0IHNwYWNlcyBhcmUgb2Z0ZW4g
dHJhY2tlZCBpbiB0aGUgd3Jvbmcgc3BvdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU0MTI3CisgICAgICAgIC1hbmQgY29ycmVzcG9uZGluZy0KKyAg
ICAgICAgcmRhcjovL3Byb2JsZW0vMjQ0OTMxNDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZWJLaXQxIG5lZWRzIHRoaXMuCisgICAgICAgICogZWRp
dGluZy9FZGl0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aXNIYW5kbGluZ0FjY2Vw
dGVkQ2FuZGlkYXRlKToKKwogMjAxNi0wMi0xMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVuYW1lIEVsZW1lbnQ6OnN0eWxlKCkgdG8gRWxlbWVudDo6Y3Nz
b21TdHlsZSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJKHJldmlzaW9uIDE5NjQyNCkK
KysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1
Nyw3ICs0NTcsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RyaW5n
Rm9yQ2FuZGlkYXRlUmVxdWVzdCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFu
ZGxlQWNjZXB0ZWRDYW5kaWRhdGUoVGV4dENoZWNraW5nUmVzdWx0KTsKLSAgICBib29sIGlzSGFu
ZGxpbmdBY2NlcHRlZENhbmRpZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNIYW5kbGluZ0FjY2Vw
dGVkQ2FuZGlkYXRlOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0hhbmRsaW5nQWNjZXB0
ZWRDYW5kaWRhdGUoKSBjb25zdCB7IHJldHVybiBtX2lzSGFuZGxpbmdBY2NlcHRlZENhbmRpZGF0
ZTsgfQogCiBwcml2YXRlOgogICAgIGNsYXNzIFdlYkNvbnRlbnRSZWFkZXI7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxOTY0MzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw4MSBAQAorMjAxNi0wMi0xMSAgQmV0aCBEYWtpbiAgPGJkYWtp
bkBhcHBsZS5jb20+CisKKyAgICAgICAgU29mdCBzcGFjZXMgYXJlIG9mdGVuIHRyYWNrZWQgaW4g
dGhlIHdyb25nIHNwb3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1NDEyNworICAgICAgICAtYW5kIGNvcnJlc3BvbmRpbmctCisgICAgICAgIHJkYXI6
Ly9wcm9ibGVtLzI0NDkzMTQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgU29mdCBzcGFjZXMgYXJlIGluIHRoZSB3cm9uZyBzcGFjZSBub3cgZm9yIHR3
byByZWFzb25zLiBGaXJzdCBvZiBhbGwsIHRoZSAKKyAgICAgICAgTlNSYW5nZSB3ZSBnZXQgZnJv
bSB0aGUgYWNjZXB0ZWQgY2FuZGlkYXRlIGlzIHJlbGF0aXZlIHRvIHRoZSBwYXJhZ3JhcGggCisg
ICAgICAgIHN0YXJ0LCBzbyB3aXRob3V0IHRoaXMgcGF0Y2gsIHNvZnQgc3BhY2VzIGFyZSBvbmx5
IGV2ZXIgcmlnaHQgZm9yIHRoZSBmaXJzdCAKKyAgICAgICAgcGFyYWdyYXBoLiBTZWNvbmRseSwg
aWYgZm9jdXMgY2hhbmdlcyBmb3IgYW55IHJlYXNvbiBvdGhlciB0aGFuIHRleHQgCisgICAgICAg
IGluc2VydGlvbiwgc29mdCBzcGFjZXMgYXJlIGFsc28gd3JvbmcgYmVjYXVzZSB0aGV5IG5lZWQg
dG8gYmUgcmUtc2V0LgorCisgICAgICAgIE5ldyBlbnVtIGNhbiBiZSB1c2VkIHRvIGluZGljYXRl
IHdoYXQgYW4gRWRpdGluZ1JhbmdlIGlzIHJlbGF0aXZlIHRvLgorICAgICAgICAqIFNoYXJlZC9F
ZGl0aW5nUmFuZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6RWRpdGluZ1JhbmdlOjpFZGl0aW5nUmFu
Z2UpOgorCisgICAgICAgIGRpZEhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlIGlzIGEgbmV3IG1lc3Nh
Z2UgdGhhdCBnZXRzIHNlbnQgZnJvbSB0aGUgCisgICAgICAgIFdlYlByb2Nlc3MuIFRoaXMgbGV0
cyB1cyB0cmFjayBhIGJvb2wgbV9pc0hhbmRsaW5nQWNjZXB0ZWRDYW5kaWRhdGUuCisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpkaWRIYW5kbGVBY2NlcHRlZENhbmRpZGF0ZSk6CisKKyAgICAgICAgUmUtc2V0IHRo
ZSBtX3NvZnRTcGFjZVJhbmdlIG9uIHNlbGVjdGlvbiBjaGFuZ2VzIHNvIGxvbmcgYXMgCisgICAg
ICAgIG1faXNIYW5kbGluZ0FjY2VwdGVkQ2FuZGlkYXRlIGlzIGZhbHNlLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OnNlbGVjdGlvbkRpZENoYW5nZSk6CisKKyAgICAgICAgU2V0IG1faXNIYW5kbGluZ0FjY2Vw
dGVkQ2FuZGlkYXRlIHRvIHRydWUuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpoYW5k
bGVBY2NlcHRlZENhbmRpZGF0ZSk6CisKKyAgICAgICAgU2V0IG1faXNIYW5kbGluZ0FjY2VwdGVk
Q2FuZGlkYXRlIHRvIGZhbHNlLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZGlkSGFu
ZGxlQWNjZXB0ZWRDYW5kaWRhdGUpOgorCisgICAgICAgIGluc2VydFRleHRBc3luYyB0YWtlcyBh
IG5ldyBwYXJhbWV0ZXIgaW5kaWNhdGluZyB3aGF0IHRoZSByZXBsYWNlbWVudFJhbmdlIGlzIAor
ICAgICAgICByZWxhdGl2ZSB0by4gSWYgbmVlZFRvUmVtb3ZlU29mdFNwYWNlIGlzIHRydWUsIHRo
ZW4gdGhlIHJlcGxhY2VtZW50UmFuZ2UgaXMgCisgICAgICAgIHJlbGF0aXZlIHRvIHRoZSBwYXJh
Z3JhcGguCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjppbnNlcnRUZXh0KToKKworICAg
ICAgICBQaXBlIGRpZEhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlIHRocm91Z2ggdG8gV2ViVmlld0lt
cGwuCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKworICAgICAgICBpbnNlcnRU
ZXh0QXN5bmMgdGFrZXMgYW4gRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
Omluc2VydFRleHRBc3luYyk6CisKKyAgICAgICAgUGlwZSBkaWRIYW5kbGVBY2NlcHRlZENhbmRp
ZGF0ZSB0aHJvdWdoIHRvIFdlYlZpZXdJbXBsLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZEhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisKKyAgICAgICAgTmV3IG1lc3NhZ2UgbGV0cyB0aGUgV2ViUHJvY2VzcyB0
ZWxsIHRoZSBVSVByb2Nlc3Mgd2hlbiB0aGUgY2FuZGlkYXRlIGhhcyAKKyAgICAgICAgYmVlbiBh
Y2NlcHRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgor
CisgICAgICAgIFBpcGUgZGlkSGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUgdGhyb3VnaCB0byBXZWJW
aWV3SW1wbC4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OmRpZEhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKToKKworICAgICAgICBp
bnNlcnRUZXh0QXN5bmMgdGFrZXMgYW4gRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvLiBQYXNzIHRo
YXQgdGhyb3VnaCB0byAKKyAgICAgICAgcmFuZ2VGcm9tRWRpdGluZ1JhbmdlIHRvIGdldCB0aGUg
Y29ycmVjdCByYW5nZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydFRleHRBc3luYyk6CisKKyAgICAgICAg
VXNlIHRoZSBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gdG8gZmluZCB0aGUgcmlnaHQgV2ViQ29y
ZTo6UmFuZ2UuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJhbmdlRnJvbUVkaXRpbmdSYW5n
ZSk6CisKKyAgICAgICAgVGFrZSBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gaW4gYSBmZXcgcGxh
Y2VzLiAKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorCisgICAgICAg
IEluc2VydFRleHRBc3luYyB0YWtlcyBhIEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUby4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKworICAgICAgICBT
ZW5kIGRpZEhhbmRsZUFjY3BldGVkQ2FuZGlkYXRlIHRvIHRoZSBVSVByb2Nlc3MKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKToKKwogMjAxNi0wMi0xMSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVzZSBCbG9i
UmVzb3VyY2VIYW5kbGUgd2hlbiBsb2FkaW5nIGJsb2IgdXJscywgZXZlbiB3aGVuIHVzaW5nIE5l
dHdvcmtTZXNzaW9uCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRWRpdGluZ1JhbmdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRpbmdSYW5nZS5oCShyZXZp
c2lvbiAxOTY0MjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRWRpdGluZ1JhbmdlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDExIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitl
bnVtIGNsYXNzIEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbyA6IHVpbnQ4X3QgeworICAgIERvY3Vt
ZW50LAorICAgIFBhcmFncmFwaCwKK307CisKIHN0cnVjdCBFZGl0aW5nUmFuZ2UgewogICAgIEVk
aXRpbmdSYW5nZSgpCiAgICAgICAgIDogbG9jYXRpb24obm90Rm91bmQpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHJldmlzaW9uIDE5NjQyNCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0NSw2ICsz
NDUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1JbW1lZGlhdGVBY3Rp
b25IaXRUZXN0KGNvbnN0IFdlYkhpdFRlc3RSZXN1bHREYXRhJiwgYm9vbCBjb250ZW50UHJldmVu
dHNEZWZhdWx0LCBBUEk6Ok9iamVjdCopID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCogaW1tZWRp
YXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlckZvckhpdFRlc3RSZXN1bHQoUmVmUHRyPEFQSTo6
SGl0VGVzdFJlc3VsdD4sIHVpbnQ2NF90LCBSZWZQdHI8QVBJOjpPYmplY3Q+KSA9IDA7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkSGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoKSA9IDA7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1Mp
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNp
b24gMTk2NDI0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU4MTEsMTIgKzU4MTEsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmFkZE1JTUVUeXBlV2l0aEN1c3RvbQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjppbnNlcnRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0
aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXApCit2b2lk
IFdlYlBhZ2VQcm94eTo6aW5zZXJ0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3Qg
RWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwLCBF
ZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvKQogewogICAg
IGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0VGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2Us
IHJlZ2lzdGVyVW5kb0dyb3VwKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpJbnNlcnRUZXh0QXN5bmModGV4dCwgcmVwbGFjZW1lbnRSYW5nZSwgcmVn
aXN0ZXJVbmRvR3JvdXAsICh1aW50MzJfdCllZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8pLCBtX3Bh
Z2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRNYXJrZWRSYW5nZUFzeW5jKHN0ZDo6
ZnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJh
Y2tGdW5jdGlvbikKQEAgLTYwNjQsNiArNjA2NCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFu
ZGxlQWNjZXB0ZWRDYW5kaWRhCiB7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpIYW5kbGVBY2NlcHRlZENhbmRpZGF0ZShhY2NlcHRlZENhbmRpZGF0ZSksIG1fcGFnZUlE
KTsKIH0KKwordm9pZCBXZWJQYWdlUHJveHk6OmRpZEhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKCkK
K3sKKyAgICBtX3BhZ2VDbGllbnQuZGlkSGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoKTsKK30KICNl
bmRpZgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdl
ZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBuZXdTaXplKQpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMTk2NDI0KQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NjEsNyArNTYx
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXll
cihMYXllck9yVmlldyopOwogICAgIExheWVyT3JWaWV3KiBhY2NlbGVyYXRlZENvbXBvc2l0aW5n
Um9vdExheWVyKCkgY29uc3Q7CiAKLSAgICB2b2lkIGluc2VydFRleHRBc3luYyhjb25zdCBTdHJp
bmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgYm9vbCByZWdp
c3RlclVuZG9Hcm91cCA9IGZhbHNlKTsKKyAgICB2b2lkIGluc2VydFRleHRBc3luYyhjb25zdCBT
dHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgYm9vbCBy
ZWdpc3RlclVuZG9Hcm91cCA9IGZhbHNlLCBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gPSBFZGl0
aW5nUmFuZ2VJc1JlbGF0aXZlVG86OkRvY3VtZW50KTsKICAgICB2b2lkIGdldE1hcmtlZFJhbmdl
QXN5bmMoc3RkOjpmdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPik7CiAgICAgdm9pZCBnZXRTZWxlY3RlZFJhbmdlQXN5bmMoc3RkOjpmdW5jdGlvbjx2b2lk
IChFZGl0aW5nUmFuZ2UsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7CiAgICAgdm9pZCBjaGFyYWN0
ZXJJbmRleEZvclBvaW50QXN5bmMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQgKHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwpAQCAtMTA0Miw2ICsx
MDQyLDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5zdGFsbFZpZXdTdGF0ZUNoYW5nZUNvbXBsZXRp
b25IYW5kbGVyKHZvaWQoXmNvbXBsZXRpb25IYW5kbGVyKSgpKTsKIAogICAgIHZvaWQgaGFuZGxl
QWNjZXB0ZWRDYW5kaWRhdGUoV2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0KTsKKyAgICB2b2lk
IGRpZEhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKCk7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEVG
TCkgJiYgSEFWRShBQ0NFU1NJQklMSVRZKSAmJiBkZWZpbmVkKEhBVkVfRUNPUkVfWCkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgkocmV2aXNpb24gMTk2NDI0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNDUxLDQgKzQ1MSw4IEBAIG1lc3Nh
Z2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjZW5kaWYKIAogICAgIERpZFJlc3RvcmVTY3JvbGxQb3Np
dGlvbigpCisKKyNpZiBQTEFURk9STShNQUMpCisgICAgRGlkSGFuZGxlQWNjZXB0ZWRDYW5kaWRh
dGUoKQorI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwuaAkocmV2aXNpb24gMTk2NDI0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyMyw2ICszMjMsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjYW5jZWxJbW1lZGlhdGVBY3Rpb25BbmltYXRpb24oKTsKICAg
ICB2b2lkIGNvbXBsZXRlSW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uKCk7CiAgICAgdm9pZCBkaWRD
aGFuZ2VDb250ZW50U2l6ZShDR1NpemUpOworICAgIHZvaWQgZGlkSGFuZGxlQWNjZXB0ZWRDYW5k
aWRhdGUoKTsKIAogICAgIHZvaWQgc2V0SWdub3Jlc05vbldoZWVsRXZlbnRzKGJvb2wpOwogICAg
IGJvb2wgaWdub3Jlc05vbldoZWVsRXZlbnRzKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVzTm9u
V2hlZWxFdmVudHM7IH0KQEAgLTYzOCw2ICs2MzksNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBt
X2xhc3RTdHJpbmdGb3JDYW5kaWRhdGVSZXF1ZXN0OwogI2VuZGlmCiAgICAgTlNSYW5nZSBtX3Nv
ZnRTcGFjZVJhbmdlIHsgTlNOb3RGb3VuZCwgMCB9OworICAgIGJvb2wgbV9pc0hhbmRsaW5nQWNj
ZXB0ZWRDYW5kaWRhdGUgeyBmYWxzZSB9OwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bQkocmV2aXNpb24gMTk2NDI0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNzQ3LDYgKzE3NDcsOCBAQCB2b2lkIFdl
YlZpZXdJbXBsOjpjZW50ZXJTZWxlY3Rpb25JblZpc2liCiB2b2lkIFdlYlZpZXdJbXBsOjpzZWxl
Y3Rpb25EaWRDaGFuZ2UoKQogewogICAgIHVwZGF0ZUZvbnRQYW5lbElmTmVlZGVkKCk7CisgICAg
aWYgKCFtX2lzSGFuZGxpbmdBY2NlcHRlZENhbmRpZGF0ZSkKKyAgICAgICAgbV9zb2Z0U3BhY2VS
YW5nZSA9IE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOwogI2lmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwCiAgICAgdXBkYXRlV2ViVmlld0ltcGxBZGRpdGlvbnMo
KTsKICAgICBpZiAoIW1fcGFnZS0+ZWRpdG9yU3RhdGUoKS5pc01pc3NpbmdQb3N0TGF5b3V0RGF0
YSkKQEAgLTIyMTAsNiArMjIxMiw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmhhbmRsZUFjY2VwdGVk
Q2FuZGlkYXQKICAgICBpZiAobV9sYXN0U3RyaW5nRm9yQ2FuZGlkYXRlUmVxdWVzdCAhPSBwb3N0
TGF5b3V0RGF0YS5zdHJpbmdGb3JDYW5kaWRhdGVSZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAK
KyAgICBtX2lzSGFuZGxpbmdBY2NlcHRlZENhbmRpZGF0ZSA9IHRydWU7CiAgICAgTlNSYW5nZSBy
YW5nZSA9IFthY2NlcHRlZENhbmRpZGF0ZSByYW5nZV07CiAgICAgaWYgKGFjY2VwdGVkQ2FuZGlk
YXRlLnJlcGxhY2VtZW50U3RyaW5nICYmIFthY2NlcHRlZENhbmRpZGF0ZS5yZXBsYWNlbWVudFN0
cmluZyBsZW5ndGhdID4gMCkgewogICAgICAgICBOU1JhbmdlIHJlcGxhY2VkUmFuZ2UgPSBOU01h
a2VSYW5nZShyYW5nZS5sb2NhdGlvbiwgW2FjY2VwdGVkQ2FuZGlkYXRlLnJlcGxhY2VtZW50U3Ry
aW5nIGxlbmd0aF0pOwpAQCAtMjM2Myw2ICsyMzY2LDExIEBAIHZvaWQgV2ViVmlld0ltcGw6OmRp
ZENoYW5nZUNvbnRlbnRTaXplKEMKICAgICBbbV92aWV3IF93ZWJfZGlkQ2hhbmdlQ29udGVudFNp
emU6TlNTaXplRnJvbUNHU2l6ZShuZXdTaXplKV07CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OmRp
ZEhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKCkKK3sKKyAgICBtX2lzSGFuZGxpbmdBY2NlcHRlZENh
bmRpZGF0ZSA9IGZhbHNlOworfQorCiB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJZ25vcmVzTm9uV2hl
ZWxFdmVudHMoYm9vbCBpZ25vcmVzTm9uV2hlZWxFdmVudHMpCiB7CiAgICAgaWYgKG1faWdub3Jl
c05vbldoZWVsRXZlbnRzID09IGlnbm9yZXNOb25XaGVlbEV2ZW50cykKQEAgLTM1NDgsNyArMzU1
Niw3IEBAIHZvaWQgV2ViVmlld0ltcGw6Omluc2VydFRleHQoaWQgc3RyaW5nLCAKICAgICBpZiAo
IWRpY3RhdGlvbkFsdGVybmF0aXZlcy5pc0VtcHR5KCkpCiAgICAgICAgIG1fcGFnZS0+aW5zZXJ0
RGljdGF0ZWRUZXh0QXN5bmMoZXZlbnRUZXh0LCByZXBsYWNlbWVudFJhbmdlLCBkaWN0YXRpb25B
bHRlcm5hdGl2ZXMsIHJlZ2lzdGVyVW5kb0dyb3VwKTsKICAgICBlbHNlCi0gICAgICAgIG1fcGFn
ZS0+aW5zZXJ0VGV4dEFzeW5jKGV2ZW50VGV4dCwgcmVwbGFjZW1lbnRSYW5nZSwgcmVnaXN0ZXJV
bmRvR3JvdXApOworICAgICAgICBtX3BhZ2UtPmluc2VydFRleHRBc3luYyhldmVudFRleHQsIHJl
cGxhY2VtZW50UmFuZ2UsIHJlZ2lzdGVyVW5kb0dyb3VwLCBuZWVkVG9SZW1vdmVTb2Z0U3BhY2Ug
PyBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OlBhcmFncmFwaCA6IEVkaXRpbmdSYW5nZUlzUmVs
YXRpdmVUbzo6RG9jdW1lbnQpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjpzZWxlY3RlZFJhbmdl
V2l0aENvbXBsZXRpb25IYW5kbGVyKHZvaWQoXmNvbXBsZXRpb25IYW5kbGVyUHRyKShOU1Jhbmdl
IHNlbGVjdGVkUmFuZ2UpKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
UGFnZUNsaWVudEltcGwuaAkocmV2aXNpb24gMTk2NDI0KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDksNiArMjA5
LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybUltbWVkaWF0ZUFjdGlv
bkhpdFRlc3QoY29uc3QgV2ViSGl0VGVzdFJlc3VsdERhdGEmLCBib29sIGNvbnRlbnRQcmV2ZW50
c0RlZmF1bHQsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkKiBpbW1l
ZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyRm9ySGl0VGVzdFJlc3VsdChSZWZQdHI8QVBJ
OjpIaXRUZXN0UmVzdWx0PiwgdWludDY0X3QsIFJlZlB0cjxBUEk6Ok9iamVjdD4pIG92ZXJyaWRl
OwogCisgICAgdmlydHVhbCB2b2lkIGRpZEhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKCkgb3ZlcnJp
ZGU7CisKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXRmb3JtQ29udGV4dE1lbnUoTlNNZW51ICos
IFdlYkNvcmU6OkludFBvaW50KSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFu
Z2VCYWNrZ3JvdW5kQ29sb3IoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQkocmV2aXNpb24gMTk2NDI0KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQkod29ya2luZyBjb3B5
KQpAQCAtNzgwLDYgKzc4MCwxMSBAQCB2b2lkKiBQYWdlQ2xpZW50SW1wbDo6aW1tZWRpYXRlQWN0
aW9uQW5pCiAgICAgcmV0dXJuIG1faW1wbC0+aW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJv
bGxlckZvckhpdFRlc3RSZXN1bHQoaGl0VGVzdFJlc3VsdC5nZXQoKSwgdHlwZSwgdXNlckRhdGEu
Z2V0KCkpOwogfQogCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRIYW5kbGVBY2NlcHRlZENhbmRp
ZGF0ZSgpCit7CisgICAgbV9pbXBsLT5kaWRIYW5kbGVBY2NlcHRlZENhbmRpZGF0ZSgpOworfQor
CiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzaG93UGxhdGZvcm1Db250ZXh0TWVudShOU01lbnUgKm1l
bnUsIEludFBvaW50IGxvY2F0aW9uKQogewogICAgIFttZW51IHBvcFVwTWVudVBvc2l0aW9uaW5n
SXRlbTpuaWwgYXRMb2NhdGlvbjpsb2NhdGlvbiBpblZpZXc6bV92aWV3XTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDE5
NjQyNCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkRyYWdDb250cm9sbGVy
QWN0aW9uLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWEuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJl
YU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiRWRpdGluZ1JhbmdlLmgiCiAjaW5jbHVkZSAiRWRpdG9y
U3RhdGUuaCIKICNpbmNsdWRlICJFdmVudERpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJJbmplY3Rl
ZEJ1bmRsZS5oIgpAQCAtNDMyNywxMiArNDMyNiwxMiBAQCBib29sIFdlYlBhZ2U6OnNob3VsZFVz
ZUN1c3RvbUNvbnRlbnRQcm92CiAKICNpZiBQTEFURk9STShDT0NPQSkKIAotdm9pZCBXZWJQYWdl
OjppbnNlcnRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2Um
IHJlcGxhY2VtZW50RWRpdGluZ1JhbmdlLCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwKQordm9pZCBX
ZWJQYWdlOjppbnNlcnRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5n
UmFuZ2UmIHJlcGxhY2VtZW50RWRpdGluZ1JhbmdlLCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwLCB1
aW50MzJfdCBlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8pCiB7CiAgICAgRnJhbWUmIGZyYW1lID0g
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKIAogICAgIGlm
IChyZXBsYWNlbWVudEVkaXRpbmdSYW5nZS5sb2NhdGlvbiAhPSBub3RGb3VuZCkgewotICAgICAg
ICBSZWZQdHI8UmFuZ2U+IHJlcGxhY2VtZW50UmFuZ2UgPSByYW5nZUZyb21FZGl0aW5nUmFuZ2Uo
ZnJhbWUsIHJlcGxhY2VtZW50RWRpdGluZ1JhbmdlKTsKKyAgICAgICAgUmVmUHRyPFJhbmdlPiBy
ZXBsYWNlbWVudFJhbmdlID0gcmFuZ2VGcm9tRWRpdGluZ1JhbmdlKGZyYW1lLCByZXBsYWNlbWVu
dEVkaXRpbmdSYW5nZSwgKEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbyllZGl0aW5nUmFuZ2VJc1Jl
bGF0aXZlVG8pOwogICAgICAgICBpZiAocmVwbGFjZW1lbnRSYW5nZSkKICAgICAgICAgICAgIGZy
YW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKCpyZXBsYWNlbWVu
dFJhbmdlLCBTRUxfREVGQVVMVF9BRkZJTklUWSkpOwogICAgIH0KQEAgLTUwMjYsNyArNTAyNSw3
IEBAIHZvaWQgV2ViUGFnZTo6Z2V0Qnl0ZWNvZGVQcm9maWxlKHVpbnQ2NF8KICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0cmluZ0NhbGxiYWNrKHJlc3VsdCwgY2FsbGJhY2tJRCkp
OwogfQogCi1QYXNzUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBXZWJQYWdlOjpyYW5nZUZyb21FZGl0
aW5nUmFuZ2UoV2ViQ29yZTo6RnJhbWUmIGZyYW1lLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdl
KQorUGFzc1JlZlB0cjxXZWJDb3JlOjpSYW5nZT4gV2ViUGFnZTo6cmFuZ2VGcm9tRWRpdGluZ1Jh
bmdlKFdlYkNvcmU6OkZyYW1lJiBmcmFtZSwgY29uc3QgRWRpdGluZ1JhbmdlJiByYW5nZSwgRWRp
dGluZ1JhbmdlSXNSZWxhdGl2ZVRvIGVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbykKIHsKICAgICBB
U1NFUlQocmFuZ2UubG9jYXRpb24gIT0gbm90Rm91bmQpOwogCkBAIC01MDM5LDEzICs1MDM4LDMw
IEBAIFBhc3NSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IFdlYlBhZ2U6OnJhbmcKICAgICBlbHNlCiAg
ICAgICAgIGxlbmd0aCA9IElOVF9NQVggLSByYW5nZS5sb2NhdGlvbjsKIAotICAgIC8vIE91ciBj
cml0aWNhbCBhc3N1bXB0aW9uIGlzIHRoYXQgd2UgYXJlIG9ubHkgY2FsbGVkIGJ5IGlucHV0IG1l
dGhvZHMgdGhhdAotICAgIC8vIGNvbmNlbnRyYXRlIG9uIGEgZ2l2ZW4gYXJlYSBjb250YWluaW5n
IHRoZSBzZWxlY3Rpb24uCi0gICAgLy8gV2UgaGF2ZSB0byBkbyB0aGlzIGJlY2F1c2Ugb2YgdGV4
dCBmaWVsZHMgYW5kIHRleHRhcmVhcy4gVGhlIERPTSBmb3IgdGhvc2UgaXMgbm90Ci0gICAgLy8g
ZGlyZWN0bHkgaW4gdGhlIGRvY3VtZW50IERPTSwgc28gc2VyaWFsaXphdGlvbiBpcyBwcm9ibGVt
YXRpYy4gT3VyIHNvbHV0aW9uIGlzCi0gICAgLy8gdG8gdXNlIHRoZSByb290IGVkaXRhYmxlIGVs
ZW1lbnQgb2YgdGhlIHNlbGVjdGlvbiBzdGFydCBhcyB0aGUgcG9zaXRpb25hbCBiYXNlLgotICAg
IC8vIFRoYXQgZml0cyB3aXRoIEFwcEtpdCdzIGlkZWEgb2YgYW4gaW5wdXQgY29udGV4dC4KLSAg
ICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChmcmFtZS5z
ZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKSwgc3RhdGlj
X2Nhc3Q8aW50PihyYW5nZS5sb2NhdGlvbiksIGxlbmd0aCk7CisgICAgaWYgKGVkaXRpbmdSYW5n
ZUlzUmVsYXRpdmVUbyA9PSBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OkRvY3VtZW50KSB7Cisg
ICAgICAgIC8vIE91ciBjcml0aWNhbCBhc3N1bXB0aW9uIGlzIHRoYXQgdGhpcyBjb2RlIHBhdGgg
aXMgY2FsbGVkIGJ5IGlucHV0IG1ldGhvZHMgdGhhdAorICAgICAgICAvLyBjb25jZW50cmF0ZSBv
biBhIGdpdmVuIGFyZWEgY29udGFpbmluZyB0aGUgc2VsZWN0aW9uLgorICAgICAgICAvLyBXZSBo
YXZlIHRvIGRvIHRoaXMgYmVjYXVzZSBvZiB0ZXh0IGZpZWxkcyBhbmQgdGV4dGFyZWFzLiBUaGUg
RE9NIGZvciB0aG9zZSBpcyBub3QKKyAgICAgICAgLy8gZGlyZWN0bHkgaW4gdGhlIGRvY3VtZW50
IERPTSwgc28gc2VyaWFsaXphdGlvbiBpcyBwcm9ibGVtYXRpYy4gT3VyIHNvbHV0aW9uIGlzCisg
ICAgICAgIC8vIHRvIHVzZSB0aGUgcm9vdCBlZGl0YWJsZSBlbGVtZW50IG9mIHRoZSBzZWxlY3Rp
b24gc3RhcnQgYXMgdGhlIHBvc2l0aW9uYWwgYmFzZS4KKyAgICAgICAgLy8gVGhhdCBmaXRzIHdp
dGggQXBwS2l0J3MgaWRlYSBvZiBhbiBpbnB1dCBjb250ZXh0LgorICAgICAgICByZXR1cm4gVGV4
dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChmcmFtZS5zZWxlY3Rpb24oKS5y
b290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKSwgc3RhdGljX2Nhc3Q8aW50Pihy
YW5nZS5sb2NhdGlvbiksIGxlbmd0aCk7CisgICAgfQorCisgICAgQVNTRVJUKGVkaXRpbmdSYW5n
ZUlzUmVsYXRpdmVUbyA9PSBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OlBhcmFncmFwaCk7CisK
KyAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSBmcmFtZS5zZWxlY3Rpb24o
KS5zZWxlY3Rpb24oKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGVkUmFuZ2UgPSBzZWxlY3Rp
b24udG9Ob3JtYWxpemVkUmFuZ2UoKTsKKyAgICBpZiAoIXNlbGVjdGVkUmFuZ2UpCisgICAgICAg
IHJldHVybiAwOworCisgICAgUmVmUHRyPFJhbmdlPiBwYXJhZ3JhcGhSYW5nZSA9IG1ha2VSYW5n
ZShzdGFydE9mUGFyYWdyYXBoKHNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSksIHNlbGVjdGlvbi52
aXNpYmxlRW5kKCkpOworICAgIGlmICghcGFyYWdyYXBoUmFuZ2UpCisgICAgICAgIHJldHVybiAw
OworCisgICAgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUgPSBwYXJhZ3JhcGhSYW5nZS5nZXQoKS0+
c3RhcnRDb250YWluZXIoKS50cmVlU2NvcGUoKS5yb290Tm9kZSgpOworICAgIGludCBwYXJhZ3Jh
cGhTdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChSYW5nZTo6Y3JlYXRlKHJv
b3ROb2RlLmRvY3VtZW50KCksICZyb290Tm9kZSwgMCwgJnBhcmFncmFwaFJhbmdlLT5zdGFydENv
bnRhaW5lcigpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRPZmZzZXQoKSkucHRyKCkpOworICAgIHJl
dHVybiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKCZyb290Tm9kZSwg
cGFyYWdyYXBoU3RhcnRJbmRleCArIHN0YXRpY19jYXN0PGludD4ocmFuZ2UubG9jYXRpb24pLCBs
ZW5ndGgpOwogfQogICAgIAogdm9pZCBXZWJQYWdlOjpkaWRDaGFuZ2VTY3JvbGxPZmZzZXRGb3JG
cmFtZShGcmFtZSogZnJhbWUpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDE5NjQyNCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlICJBUElJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oIgogI2luY2x1ZGUgIkFQ
SU9iamVjdC5oIgogI2luY2x1ZGUgIkRvd25sb2FkLmgiCisjaW5jbHVkZSAiRWRpdGluZ1Jhbmdl
LmgiCiAjaW5jbHVkZSAiRmluZENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgogI2luY2x1ZGUgIkltYWdlT3B0aW9ucy5oIgpAQCAt
NjQ2LDcgKzY0Nyw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHNlbmRDb21wbGV4VGV4dElu
cHV0VG9QbHVnaW4odWludDY0X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgdGV4dElucHV0KTsKIAotICAgIHZvaWQgaW5zZXJ0VGV4dEFzeW5jKGNvbnN0
IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBib29s
IHJlZ2lzdGVyVW5kb0dyb3VwID0gZmFsc2UpOworICAgIHZvaWQgaW5zZXJ0VGV4dEFzeW5jKGNv
bnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBi
b29sIHJlZ2lzdGVyVW5kb0dyb3VwID0gZmFsc2UsIHVpbnQzMl90IGVkaXRpbmdSYW5nZUlzUmVs
YXRpdmVUbyA9ICh1aW50MzJfdClFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OkRvY3VtZW50KTsK
ICAgICB2b2lkIGdldE1hcmtlZFJhbmdlQXN5bmModWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAg
dm9pZCBnZXRTZWxlY3RlZFJhbmdlQXN5bmModWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9p
ZCBjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1
aW50NjRfdCBjYWxsYmFja0lEKTsKQEAgLTExMzUsNyArMTEzNiw3IEBAIHByaXZhdGU6CiAgICAg
c3RhdGljIFBsdWdpblZpZXcqIGZvY3VzZWRQbHVnaW5WaWV3Rm9yRnJhbWUoV2ViQ29yZTo6RnJh
bWUmKTsKICAgICBzdGF0aWMgUGx1Z2luVmlldyogcGx1Z2luVmlld0ZvckZyYW1lKFdlYkNvcmU6
OkZyYW1lKik7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb3JlOjpSYW5nZT4gcmFuZ2VG
cm9tRWRpdGluZ1JhbmdlKFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgRWRpdGluZ1JhbmdlJik7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IHJhbmdlRnJvbUVkaXRpbmdSYW5n
ZShXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IEVkaXRpbmdSYW5nZSYsIEVkaXRpbmdSYW5nZUlzUmVs
YXRpdmVUbyA9IEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbzo6RG9jdW1lbnQpOwogCiAgICAgdm9p
ZCByZXBvcnRVc2VkRmVhdHVyZXMoKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE5NjQy
NCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNTcsNyArMzU3LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0V2ZW50KFdl
YktpdDo6V2ViTW91c2VFdmVudCBldmVudCkgLT4gKGJvb2wgcmVzdWx0KQogICAgIEFjY2VwdHNG
aXJzdE1vdXNlKGludCBldmVudE51bWJlciwgV2ViS2l0OjpXZWJNb3VzZUV2ZW50IGV2ZW50KSAt
PiAoYm9vbCByZXN1bHQpCiAKLSAgICBJbnNlcnRUZXh0QXN5bmMoU3RyaW5nIHRleHQsIHN0cnVj
dCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSByZXBsYWNlbWVudFJhbmdlLCBib29sIHJlZ2lzdGVyVW5k
b0dyb3VwKQorICAgIEluc2VydFRleHRBc3luYyhTdHJpbmcgdGV4dCwgc3RydWN0IFdlYktpdDo6
RWRpdGluZ1JhbmdlIHJlcGxhY2VtZW50UmFuZ2UsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXAsIHVp
bnQzMl90IGVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbykKICAgICBHZXRNYXJrZWRSYW5nZUFzeW5j
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgR2V0U2VsZWN0ZWRSYW5nZUFzeW5jKHVpbnQ2NF90
IGNhbGxiYWNrSUQpCiAgICAgQ2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKFdlYkNvcmU6Oklu
dFBvaW50IHBvaW50LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHJldmlzaW9u
IDE5NjQyNCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTU1LDYgKzE1NSw3IEBAIHZvaWQgV2ViUGFnZTo6
aGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoV2UKICAgICAgICAgcmV0dXJuOwogCiAgICAgZnJhbWUt
PmVkaXRvcigpLmhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKGFjY2VwdGVkQ2FuZGlkYXRlKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRl
KCkpOwogfQogCiBOU09iamVjdCAqV2ViUGFnZTo6YWNjZXNzaWJpbGl0eU9iamVjdEZvck1haW5G
cmFtZVBsdWdpbigpCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTY0MzYpCisrKyBT
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNiBA
QAorMjAxNi0wMi0xMSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
U29mdCBzcGFjZXMgYXJlIG9mdGVuIHRyYWNrZWQgaW4gdGhlIHdyb25nIHNwb3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDEyNworICAgICAgICAt
YW5kIGNvcnJlc3BvbmRpbmctCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzI0NDkzMTQwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU29mdCBzcGFjZXMg
YXJlIGluIHRoZSB3cm9uZyBzcGFjZSBub3cgZm9yIHR3byByZWFzb25zLiBGaXJzdCBvZiBhbGws
IHRoZSAKKyAgICAgICAgTlNSYW5nZSB3ZSBnZXQgZnJvbSB0aGUgYWNjZXB0ZWQgY2FuZGlkYXRl
IGlzIHJlbGF0aXZlIHRvIHRoZSBwYXJhZ3JhcGggCisgICAgICAgIHN0YXJ0LCBzbyB3aXRob3V0
IHRoaXMgcGF0Y2gsIHNvZnQgc3BhY2VzIGFyZSBvbmx5IGV2ZXIgcmlnaHQgZm9yIHRoZSBmaXJz
dCAKKyAgICAgICAgcGFyYWdyYXBoLiBTZWNvbmRseSwgaWYgZm9jdXMgY2hhbmdlcyBmb3IgYW55
IHJlYXNvbiBvdGhlciB0aGFuIHRleHQgCisgICAgICAgIGluc2VydGlvbiwgc29mdCBzcGFjZXMg
YXJlIGFsc28gd3JvbmcgYmVjYXVzZSB0aGV5IG5lZWQgdG8gYmUgcmUtc2V0LgorCisgICAgICAg
IE5ldyB2ZXJzaW9uIG9mIF9jb252ZXJ0VG9ET01SYW5nZSB0YWtlcyBhIE5TUmFuZ2VJc1JlbGF0
aXZlVG8gc28gdGhhdCBpdCBjYW4gCisgICAgICAgIGhhbmRsZSByYW5nZXMgcmVsYXRpdmUgdG8g
Ym90aCB0aGUgZG9jdW1lbnQgYW5kIHRoZSBwYXJhZ3JhcGguIAorICAgICAgICAqIFdlYlZpZXcv
V2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9jb252ZXJ0VG9ET01SYW5nZTpyYW5n
ZUlzUmVsYXRpdmVUbzpdKToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2NvbnZlcnROU1JhbmdlVG9E
T01SYW5nZTpdKToKKworICAgICAgICBOZXcgZW51bSBOU1JhbmdlSXNSZWxhdGl2ZVRvLgorICAg
ICAgICAqIFdlYlZpZXcvV2ViRnJhbWVJbnRlcm5hbC5oOgorCisgICAgICAgIFJlLXNldCB0aGUg
c29mdFNwYWNlUmFuZ2Ugb24gc2VsZWN0aW9uIGNoYW5nZXMgc28gbG9uZyBhcyB0aGUgV2ViQ29y
ZTo6RWRpdG9yIAorICAgICAgICBpcyBub3QgY3VycmVudGx5IGhhbmRsaW5nIGFuIGFjY2VwdGVk
IGNhbmRpZGF0ZS4KKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAo
LVtXZWJIVE1MVmlldyBfc2VsZWN0aW9uQ2hhbmdlZF0pOgorCisgICAgICAgIElmIG5lZWRUb1Jl
bW92ZVNvZnRTcGFjZSBpcyB0cnVlLCB0aGVuIHRoZSByZXBsYWNlbWVudFJhbmdlIGlzIAorICAg
ICAgICByZWxhdGl2ZSB0byB0aGUgcGFyYWdyYXBoLgorICAgICAgICAoLVtXZWJIVE1MVmlldyBp
bnNlcnRUZXh0Ol0pOgorCiAyMDE2LTAyLTEwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KIAogICAgICAgICBXZWJGcmFtZSBfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21T
dHJpbmc6Zm9yY2VVc2VyR2VzdHVyZTogc2hvdWxkIGFzc2VydCB0aGF0IGl0IGlzIGJlaW5nIGNh
bGxlZCBmcm9tIHRoZSAibWFpbiIgdGhyZWFkLgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkZyYW1lLm1tCShyZXZpc2lvbiAxOTY0MjQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkZyYW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04MTAsNiArODEwLDMyIEBAIC0gKFBh
c3NSZWZQdHI8UmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZToKICAgICByZXR1cm4gVGV4dEl0ZXJh
dG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChlbGVtZW50LCBuc3JhbmdlLmxvY2F0aW9u
LCBuc3JhbmdlLmxlbmd0aCk7CiB9CiAKKy0gKFBhc3NSZWZQdHI8UmFuZ2U+KV9jb252ZXJ0VG9E
T01SYW5nZTooTlNSYW5nZSluc3JhbmdlIHJhbmdlSXNSZWxhdGl2ZVRvOihOU1JhbmdlSXNSZWxh
dGl2ZVRvKXJhbmdlSXNSZWxhdGl2ZVRvCit7CisgICAgaWYgKHJhbmdlSXNSZWxhdGl2ZVRvID09
IE5TUmFuZ2VJc1JlbGF0aXZlVG86OkRvY3VtZW50KQorICAgICAgICByZXR1cm4gW3NlbGYgX2Nv
bnZlcnRUb0RPTVJhbmdlOm5zcmFuZ2VdOworCisgICAgQVNTRVJUKHJhbmdlSXNSZWxhdGl2ZVRv
ID09IE5TUmFuZ2VJc1JlbGF0aXZlVG86OlBhcmFncmFwaCk7CisKKyAgICBpZiAobnNyYW5nZS5s
b2NhdGlvbiA+IElOVF9NQVgpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChuc3JhbmdlLmxl
bmd0aCA+IElOVF9NQVggfHwgbnNyYW5nZS5sb2NhdGlvbiArIG5zcmFuZ2UubGVuZ3RoID4gSU5U
X01BWCkKKyAgICAgICAgbnNyYW5nZS5sZW5ndGggPSBJTlRfTUFYIC0gbnNyYW5nZS5sb2NhdGlv
bjsKKworICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IF9wcml2YXRlLT5j
b3JlRnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOworICAgIFJlZlB0cjxSYW5nZT4gc2Vs
ZWN0ZWRSYW5nZSA9IHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpOworICAgIGlmICghc2Vs
ZWN0ZWRSYW5nZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8UmFuZ2U+IHBhcmFn
cmFwaFJhbmdlID0gbWFrZVJhbmdlKHN0YXJ0T2ZQYXJhZ3JhcGgoc2VsZWN0aW9uLnZpc2libGVT
dGFydCgpKSwgc2VsZWN0aW9uLnZpc2libGVFbmQoKSk7CisgICAgaWYgKCFwYXJhZ3JhcGhSYW5n
ZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBDb250YWluZXJOb2RlJiByb290Tm9kZSA9IHBh
cmFncmFwaFJhbmdlLmdldCgpLT5zdGFydENvbnRhaW5lcigpLnRyZWVTY29wZSgpLnJvb3ROb2Rl
KCk7CisgICAgaW50IHBhcmFncmFwaFN0YXJ0SW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVu
Z3RoKFJhbmdlOjpjcmVhdGUocm9vdE5vZGUuZG9jdW1lbnQoKSwgJnJvb3ROb2RlLCAwLCAmcGFy
YWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHBhcmFncmFwaFJhbmdlLT5zdGFydE9mZnNl
dCgpKS5wdHIoKSk7CisgICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgoJnJvb3ROb2RlLCBwYXJhZ3JhcGhTdGFydEluZGV4ICsgc3RhdGljX2Nhc3Q8aW50
Pihuc3JhbmdlLmxvY2F0aW9uKSwgbnNyYW5nZS5sZW5ndGgpOworfQorCiAtIChET01SYW5nZSAq
KV9jb252ZXJ0TlNSYW5nZVRvRE9NUmFuZ2U6KE5TUmFuZ2UpbnNyYW5nZQogewogICAgIHJldHVy
biBraXQoW3NlbGYgX2NvbnZlcnRUb0RPTVJhbmdlOm5zcmFuZ2VdLmdldCgpKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVJbnRlcm5hbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVJbnRlcm5hbC5oCShyZXZpc2lvbiAx
OTY0MjQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwuaAko
d29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0
eXBlZGVmIFdlYkNvcmU6Okhpc3RvcnlJdGVtIFdlYkNvcmVIaXN0b3J5SXRlbTsKIAorZW51bSBj
bGFzcyBOU1JhbmdlSXNSZWxhdGl2ZVRvIDogdWludDhfdCB7CisgICAgRG9jdW1lbnQsCisgICAg
UGFyYWdyYXBoLAorfTsKKwogV2ViQ29yZTo6RnJhbWUqIGNvcmUoV2ViRnJhbWUgKik7CiBXZWJG
cmFtZSAqa2l0KFdlYkNvcmU6OkZyYW1lICopOwogCkBAIC0xNjAsNiArMTY1LDcgQEAgQGludGVy
ZmFjZSBXZWJGcmFtZSAoV2ViSW50ZXJuYWwpCiAjZW5kaWYKIC0gKE5TUmFuZ2UpX2NvbnZlcnRU
b05TUmFuZ2U6KFdlYkNvcmU6OlJhbmdlKilyYW5nZTsKIC0gKFBhc3NSZWZQdHI8V2ViQ29yZTo6
UmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSluc3JhbmdlOworLSAoUGFzc1JlZlB0
cjxXZWJDb3JlOjpSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKW5zcmFuZ2UgcmFu
Z2VJc1JlbGF0aXZlVG86KE5TUmFuZ2VJc1JlbGF0aXZlVG8pcmFuZ2VJc1JlbGF0aXZlVG87CiAK
IC0gKERPTURvY3VtZW50RnJhZ21lbnQgKilfZG9jdW1lbnRGcmFnbWVudFdpdGhNYXJrdXBTdHJp
bmc6KE5TU3RyaW5nICopbWFya3VwU3RyaW5nIGJhc2VVUkxTdHJpbmc6KE5TU3RyaW5nICopYmFz
ZVVSTFN0cmluZzsKIC0gKERPTURvY3VtZW50RnJhZ21lbnQgKilfZG9jdW1lbnRGcmFnbWVudFdp
dGhOb2Rlc0FzUGFyYWdyYXBoczooTlNBcnJheSAqKW5vZGVzOwpJbmRleDogU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCShyZXZpc2lvbiAxOTY0MjQpCisrKyBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MDk3
LDYgKzYwOTcsMTAgQEAgLSAodm9pZClfc2VsZWN0aW9uQ2hhbmdlZAogICAgIFtzZWxmIF91cGRh
dGVTZWxlY3Rpb25Gb3JJbnB1dE1hbmFnZXJdOwogI2lmICFQTEFURk9STShJT1MpCiAgICAgW3Nl
bGYgX3VwZGF0ZUZvbnRQYW5lbF07CisgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtz
ZWxmIF9mcmFtZV0pKSB7CisgICAgICAgIGlmICghY29yZUZyYW1lLT5lZGl0b3IoKS5pc0hhbmRs
aW5nQWNjZXB0ZWRDYW5kaWRhdGUoKSkKKyAgICAgICAgICAgIF9wcml2YXRlLT5zb2Z0U3BhY2VS
YW5nZSA9IE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOworICAgIH0KICNlbmRpZgogfQogCkBA
IC03MDk4LDE2ICs3MTAyLDIzIEBAIC0gKHZvaWQpaW5zZXJ0VGV4dDooaWQpc3RyaW5nCiAgICAg
aWYgKCFjb3JlRnJhbWUgfHwgIWNvcmVGcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAg
ICByZXR1cm47CiAKKyAgICBCT09MIG5lZWRUb1JlbW92ZVNvZnRTcGFjZSA9IE5POwogI2lmIFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDAK
LSAgICBpZiAoX3ByaXZhdGUtPnNvZnRTcGFjZVJhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQg
JiYgKHJlcGxhY2VtZW50UmFuZ2UubG9jYXRpb24gPT0gTlNNYXhSYW5nZShfcHJpdmF0ZS0+c29m
dFNwYWNlUmFuZ2UpIHx8IHJlcGxhY2VtZW50UmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkg
JiYgcmVwbGFjZW1lbnRSYW5nZS5sZW5ndGggPT0gMCAmJiBbW05TU3BlbGxDaGVja2VyIHNoYXJl
ZFNwZWxsQ2hlY2tlcl0gZGVsZXRlc0F1dG9zcGFjZUJlZm9yZVN0cmluZzp0ZXh0IGxhbmd1YWdl
Om5pbF0pCisgICAgaWYgKF9wcml2YXRlLT5zb2Z0U3BhY2VSYW5nZS5sb2NhdGlvbiAhPSBOU05v
dEZvdW5kICYmIChyZXBsYWNlbWVudFJhbmdlLmxvY2F0aW9uID09IE5TTWF4UmFuZ2UoX3ByaXZh
dGUtPnNvZnRTcGFjZVJhbmdlKSB8fCByZXBsYWNlbWVudFJhbmdlLmxvY2F0aW9uID09IE5TTm90
Rm91bmQpICYmICFyZXBsYWNlbWVudFJhbmdlLmxlbmd0aCAmJiBbW05TU3BlbGxDaGVja2VyIHNo
YXJlZFNwZWxsQ2hlY2tlcl0gZGVsZXRlc0F1dG9zcGFjZUJlZm9yZVN0cmluZzp0ZXh0IGxhbmd1
YWdlOm5pbF0pIHsKICAgICAgICAgcmVwbGFjZW1lbnRSYW5nZSA9IF9wcml2YXRlLT5zb2Z0U3Bh
Y2VSYW5nZTsKKyAgICAgICAgbmVlZFRvUmVtb3ZlU29mdFNwYWNlID0gWUVTOworICAgIH0KICNl
bmRpZgogI2lmICFQTEFURk9STShJT1MpCiAgICAgX3ByaXZhdGUtPnNvZnRTcGFjZVJhbmdlID0g
TlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7CiAjZW5kaWYKIAotICAgIGlmIChyZXBsYWNlbWVu
dFJhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpCi0gICAgICAgIFtbc2VsZiBfZnJhbWVdIF9z
ZWxlY3ROU1JhbmdlOnJlcGxhY2VtZW50UmFuZ2VdOworICAgIGlmIChyZXBsYWNlbWVudFJhbmdl
LmxvY2F0aW9uICE9IE5TTm90Rm91bmQpIHsKKyAgICAgICAgTlNSYW5nZUlzUmVsYXRpdmVUbyBy
YW5nZUlzUmVsYXRpdmVUbyA9IG5lZWRUb1JlbW92ZVNvZnRTcGFjZSA/IE5TUmFuZ2VJc1JlbGF0
aXZlVG86OlBhcmFncmFwaCA6IE5TUmFuZ2VJc1JlbGF0aXZlVG86OkRvY3VtZW50OworICAgICAg
ICBSZWZQdHI8UmFuZ2U+IGRvbVJhbmdlID0gW1tzZWxmIF9mcmFtZV0gX2NvbnZlcnRUb0RPTVJh
bmdlOnJlcGxhY2VtZW50UmFuZ2UgcmFuZ2VJc1JlbGF0aXZlVG86cmFuZ2VJc1JlbGF0aXZlVG9d
OworICAgICAgICBpZiAoZG9tUmFuZ2UpCisgICAgICAgICAgICBjb3JlRnJhbWUtPnNlbGVjdGlv
bigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKCpkb21SYW5nZSwgU0VMX0RFRkFVTFRf
QUZGSU5JVFkpKTsKKyAgICB9CiAKICAgICBib29sIGV2ZW50SGFuZGxlZCA9IGZhbHNlOwogICAg
IFN0cmluZyBldmVudFRleHQgPSB0ZXh0Owo=
</data>
<flag name="review"
          id="295931"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>