<?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>151300</bug_id>
          
          <creation_ts>2015-11-15 21:42:31 -0800</creation_ts>
          <short_desc>REGRESSION(r8780): Backwards delete by word incorrectly appends deleted text to kill ring, should be prepend</short_desc>
          <delta_ts>2015-11-19 11:30:04 -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>HTML Editing</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>151157</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>joepeck</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1142157</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-15 21:42:31 -0800</bug_when>
    <thetext>SUMMARY:

Backward text deletions should prepend the deleted text to the kill ring, but instead it appends. Yanking the kill sequence results in the wrong yank text since it was added in the wrong order.

STEPS TO REPRODUCE:

 * Add the text &apos;123 456&apos; to a contenteditable or form element.
 * Move caret to | position: &apos;123 456|&apos;
 * Backwards delete-by-word twice (on Mac Safari, Option-Delete)
 * Yank (on Mac Safari, Ctrl-Y)

EXPECTED:

* yanked text should be the original text, &apos;123 456&apos;

ACTUAL:

* yanked text is actually &apos;456123 &apos;

NOTES:

This seems to be a really really old bug, which was discovered while removing an apparently unused argument in https://bugs.webkit.org/show_bug.cgi?id=151157.
When deleting backwards / leftwards, the killed text should be prepended instead of appended to the kill ring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142159</commentid>
    <comment_count>1</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-15 22:27:34 -0800</bug_when>
    <thetext>I am not even kidding about the title change, Darin regressed this almost 11 years ago:

http://trac.webkit.org/changeset/8780


The relevant mistake can be seen here, where the code no longer computes &apos;prepend&apos; based on the selection direction, nor does it change to disambiguate inside _deleteRange using the passed-in deletion type enum.

https://github.com/WebKit/webkit/commit/05b622f#diff-2929972b50734b9742ad9676920551a0L4153

Sorry Darin! This should not be too difficult to fix, though the code has moved about 30 times in 11 years. Might take a while to find the exact place to do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142163</commentid>
    <comment_count>2</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-15 22:47:34 -0800</bug_when>
    <thetext>For posterity, this is how I was able to find the regression:

-----

How I figured out the addToKillRing regression:

* unused parameter &apos;append&apos;, where did it come from?
* Initially searched commit logs for addToKillRing, too much unrelated refactoring.

* Used `git blame`, too many unrelated refactorings. Went to Google to find something that can search changes to a specific line rather than just the last line.

* found out about git pickaxe `git log -S &quot;text&quot;` which searches for increment or decrement to count of &quot;text&quot; occurences in a file because of a diff. This led me to a commit where addToKillRing was moved to a different directory in a massive reorg.

$ git log -p --oneline -S &quot;addToKillRing&quot; Source/WebCore/editing/ | grep -C5 addToKillRing

* found out about git pickaxe variant `git log -G &quot;regex&quot; which searches for any match to regex in diffs. This would let me find changes to the line that both include addToKillRing.

$ git log -p --oneline -G &quot;addToKillRing\\(&quot; WebCore | grep -C5 --null addToKillRing

* Looked for earliest result to see if it was regressed there. It was not.

* Earliest result is another refactor that changed call signature and name (from ObjC to C++). I continued searching for the ObjC function name.

$ git log -p --oneline -G &quot;_deleteRange:&quot; -- WebKit

* Narrow down just to the relevant arguments

$ git log --oneline -G &quot;killRing:YES prepend:&quot; -- WebKit

* Manually check the newest and oldest revision. The oldest (initial implementation) was correct.

* Start checking commits one-by-one from oldest to newest, found the regression after a few revisions. The trac revision is listed in the commit message after &apos;git-svn-id&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142261</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-11-16 10:40:46 -0800</bug_when>
    <thetext>&lt;rdar://problem/23558868&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142542</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-11-17 09:06:38 -0800</bug_when>
    <thetext>Really glad you found this! Shows how important it is to have test cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143243</commentid>
    <comment_count>5</comment_count>
      <attachid>265856</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-19 02:18:44 -0800</bug_when>
    <thetext>Created attachment 265856
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143291</commentid>
    <comment_count>6</comment_count>
      <attachid>265856</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-11-19 08:44:41 -0800</bug_when>
    <thetext>Comment on attachment 265856
Proposed Fix

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

&gt; Source/WebCore/editing/Editor.h:340
&gt; +    void addRangeToKillRing(Range*, KillRingInsertionMode);

Should take a Range&amp; instead of a Range* since it can never be null.

&gt; Source/WebCore/platform/mac/KillRingMac.mm:52
&gt; -    static bool initializedKillRing = false;
&gt; -    if (!initializedKillRing) {
&gt; -        initializedKillRing = true;
&gt; +    static std::once_flag onceFlag;
&gt; +    std::call_once(onceFlag, [] {
&gt;          _NSInitializeKillRing();
&gt; -    }
&gt; +    });

Why this change? The code is bigger and more complex. Do we need to support calling this function on threads other than the main thread? I don’t think we do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143316</commentid>
    <comment_count>7</comment_count>
      <attachid>265856</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-19 09:53:27 -0800</bug_when>
    <thetext>Comment on attachment 265856
Proposed Fix

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

&gt;&gt; Source/WebCore/platform/mac/KillRingMac.mm:52
&gt;&gt; +    });
&gt; 
&gt; Why this change? The code is bigger and more complex. Do we need to support calling this function on threads other than the main thread? I don’t think we do.

Ah, I forgot that the std lib version is only really better if multithreading is an issue. I&apos;ll revert it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143332</commentid>
    <comment_count>8</comment_count>
      <attachid>265872</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-19 10:28:59 -0800</bug_when>
    <thetext>Created attachment 265872
For Landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143338</commentid>
    <comment_count>9</comment_count>
      <attachid>265872</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-19 10:32:49 -0800</bug_when>
    <thetext>Comment on attachment 265872
For Landing

Rejecting attachment 265872 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 265872, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in LayoutTests/ChangeLog contains OOPS!.

Full output: http://webkit-queues.webkit.org/results/450660</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143356</commentid>
    <comment_count>10</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-19 11:30:04 -0800</bug_when>
    <thetext>Committed r192641: &lt;http://trac.webkit.org/changeset/192641&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265856</attachid>
            <date>2015-11-19 02:18:44 -0800</date>
            <delta_ts>2015-11-19 10:28:56 -0800</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-151300-20151119021832.patch</filename>
            <type>text/plain</type>
            <size>21913</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmJkNjkzZGVhN2E4ZGUy
MWYzOWY4ZmZjOGU3ZmM3MmI2MDVmZGM5ZC4uYWMyMThhMDJlZDg3OTUzOTRlNmFjZGQyMThmY2Iw
NDhjNGNkNGM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE1LTExLTE5ICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04ocjg3ODApOiBC
YWNrd2FyZHMgZGVsZXRlIGJ5IHdvcmQgaW5jb3JyZWN0bHkgYXBwZW5kcyBkZWxldGVkIHRleHQg
dG8ga2lsbCByaW5nLCBzaG91bGQgYmUgcHJlcGVuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxMzAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgT3ZlciAxMSB5ZWFycyBhZ28sIHNvbWVvbmUgd2FzIGlu
IGEgYmlnIGh1cnJ5IHRvIGZpeCBhIGJ1bmNoCisgICAgICAgIG9mIGVtYWNzIGtleWJpbmRpbmdz
IGJ1Z3MsIGFuZCBhY2NpZGVudGFsbHkgcmVncmVzc2VkIHRoZSBraWxsIHJpbmcKKyAgICAgICAg
YmVoYXZpb3IgZm9yIGJhY2t3YXJkcy1kZWxldGUtd29yZC4gSXQgc2hvdWxkIHByZXBlbmQgdG8g
dGhlIGJlZ2lubmluZy4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIHRoZSByZWdyZXNzaW9u
IGFuZCBjbGVhbnMgdXAgdGhlIGtpbGwgcmluZy1yZWxhdGVkCisgICAgICAgIGNvZGUgaW4gRWRp
dG9yIGFuZCBjb21tYW5kcy4gSXQgYWxzbyBhZGRzIHNvbWUgdGVzdHMgdG8gY292ZXIgdGhlCisg
ICAgICAgIHJlZ3Jlc3NlZCBjb2RlIGEgYml0IGJldHRlci4KKworICAgICAgICBUZXN0czogZWRp
dGluZy9wYXN0ZWJvYXJkL2VtYWNzLWtpbGxyaW5nLWFsdGVybmF0aW5nLWFwcGVuZC1wcmVwZW5k
Lmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvcGFzdGVib2FyZC9lbWFjcy1raWxscmluZy1i
YWNrd2FyZC1kZWxldGUtcHJlcGVuZC5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5j
cHA6CisKKyAgICAgICAgICAgIFVzZSBtb3JlIGV4cGxpY2l0IG5hbWVzIGZvciBpbnNlcnRpb24g
bW9kZSBwYXJhbWV0ZXJzIGFuZCBtZW1iZXIgdmFyaWFibGVzLgorCisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6OmRlbGV0ZVdpdGhEaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjpwZXJmb3JtRGVsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YWRkUmFuZ2VUb0tp
bGxSaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YWRkVGV4dFRvS2lsbFJpbmcpOgor
CisgICAgICAgICAgICBPbmx5IG9uZSBjYWxsIHNpdGUgZm9yIG5vdywgYnV0IGFub3RoZXIgd2ls
bCBiZSBhZGRlZCBpbiBhIGRlcGVuZGVudCBmaXguCisKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6YWRkVG9LaWxsUmluZyk6IERlbGV0ZWQuCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoK
KyAgICAgICAgKiBlZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VHlwaW5nQ29tbWFuZDo6VHlwaW5nQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdD
b21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1h
bmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0Nv
bW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9LaWxsUmluZ01hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Omlu
aXRpYWxpemVLaWxsUmluZ0lmTmVlZGVkKTogTW9kZXJuaXplLgorICAgICAgICAoV2ViQ29yZTo6
S2lsbFJpbmc6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpLaWxsUmluZzo6cHJlcGVuZCk6
CisKKyAgICAgICAgICAgIEl0IHR1cm5zIG91dCB0aGF0IHRoZSBuYXRpdmUgQVBJIGltcGxpY2l0
bHkgY2xlYXJzIHRoZSBraWxsIHNlcXVlbmNlIHdoZW4KKyAgICAgICAgICAgIGFsdGVybmF0aW5n
IGJldHdlZW4gcHJlcGVuZCBhbmQgYXBwZW5kIG9wZXJhdGlvbnMuIEl0cyBiZWhhdmlvciBkb2Vz
IG5vdCBtYXRjaAorICAgICAgICAgICAgd2hhdCBTdWJsaW1lIFRleHQgb3IgRW1hY3MgZG8gaW4g
dGhpcyBjYXNlLiBDbGVhciB0aGUgcHJldmlvdXMgb3BlcmF0aW9uIGZsYWcKKyAgICAgICAgICAg
IHRvIHByZXZlbnQgdGhpcyBiZWhhdmlvciBmcm9tIGhhcHBlbmluZy4KKwogMjAxNS0xMS0xOCAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kZXJuIElEQjpN
YWtlIGluLW1lbW9yeSBJbmRleCBjdXJzb3JzIHdvcmsuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAKaW5kZXggY2YxYmUyYWJlNjRmYTc0NmFlNmIxMDViNDY0MTc4MGI3NDUwZTUzYi4uZDgzYTZj
ZGQ0OWVmOWRjZjIzYmEwNjI2NmQzMGYzMTllYzVlMWZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcApAQCAtMzMwLDcgKzMzMCw3IEBAIGJvb2wgRWRpdG9yOjppc1NlbGVjdFRyYWlsaW5n
V2hpdGVzcGFjZUVuYWJsZWQoKQogICAgIHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+aXNT
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCk7CiB9CiAKLWJvb2wgRWRpdG9yOjpkZWxl
dGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24sIFRleHRHcmFudWxh
cml0eSBncmFudWxhcml0eSwgYm9vbCBraWxsUmluZywgYm9vbCBpc1R5cGluZ0FjdGlvbikKK2Jv
b2wgRWRpdG9yOjpkZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rp
b24sIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBzaG91bGRBZGRUb0tpbGxSaW5n
LCBib29sIGlzVHlwaW5nQWN0aW9uKQogewogICAgIGlmICghY2FuRWRpdCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0zNDAsOCArMzQwLDggQEAgYm9vbCBFZGl0b3I6OmRlbGV0ZVdpdGhE
aXJlY3Rpb24oU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiwgVGV4dEdyYW51bGFyaXR5IGcK
ICAgICAgICAgICAgIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQoZG9jdW1lbnQoKSwg
Y2FuU21hcnRDb3B5T3JEZWxldGUoKSA/IFR5cGluZ0NvbW1hbmQ6OlNtYXJ0RGVsZXRlIDogMCwg
Z3JhbnVsYXJpdHkpOwogICAgICAgICAgICAgcmV2ZWFsU2VsZWN0aW9uQWZ0ZXJFZGl0aW5nT3Bl
cmF0aW9uKCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoa2lsbFJpbmcpCi0g
ICAgICAgICAgICAgICAgYWRkVG9LaWxsUmluZyhzZWxlY3RlZFJhbmdlKCkuZ2V0KCksIGZhbHNl
KTsKKyAgICAgICAgICAgIGlmIChzaG91bGRBZGRUb0tpbGxSaW5nKQorICAgICAgICAgICAgICAg
IGFkZFJhbmdlVG9LaWxsUmluZyhzZWxlY3RlZFJhbmdlKCkuZ2V0KCksIEtpbGxSaW5nSW5zZXJ0
aW9uTW9kZTo6QXBwZW5kVGV4dCk7CiAgICAgICAgICAgICBkZWxldGVTZWxlY3Rpb25XaXRoU21h
cnREZWxldGUoY2FuU21hcnRDb3B5T3JEZWxldGUoKSk7CiAgICAgICAgICAgICAvLyBJbXBsaWNp
dGx5IGNhbGxzIHJldmVhbFNlbGVjdGlvbkFmdGVyRWRpdGluZ09wZXJhdGlvbigpLgogICAgICAg
ICB9CkBAIC0zNDksOCArMzQ5LDggQEAgYm9vbCBFZGl0b3I6OmRlbGV0ZVdpdGhEaXJlY3Rpb24o
U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiwgVGV4dEdyYW51bGFyaXR5IGcKICAgICAgICAg
VHlwaW5nQ29tbWFuZDo6T3B0aW9ucyBvcHRpb25zID0gMDsKICAgICAgICAgaWYgKGNhblNtYXJ0
Q29weU9yRGVsZXRlKCkpCiAgICAgICAgICAgICBvcHRpb25zIHw9IFR5cGluZ0NvbW1hbmQ6OlNt
YXJ0RGVsZXRlOwotICAgICAgICBpZiAoa2lsbFJpbmcpCi0gICAgICAgICAgICBvcHRpb25zIHw9
IFR5cGluZ0NvbW1hbmQ6OktpbGxSaW5nOworICAgICAgICBpZiAoc2hvdWxkQWRkVG9LaWxsUmlu
ZykKKyAgICAgICAgICAgIG9wdGlvbnMgfD0gVHlwaW5nQ29tbWFuZDo6QWRkc1RvS2lsbFJpbmc7
CiAgICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CiAgICAgICAgIGNhc2UgRGlyZWN0aW9uRm9y
d2FyZDoKICAgICAgICAgY2FzZSBEaXJlY3Rpb25SaWdodDoKQEAgLTM2Nyw3ICszNjcsNyBAQCBi
b29sIEVkaXRvcjo6ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0
aW9uLCBUZXh0R3JhbnVsYXJpdHkgZwogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdG8gbW92ZSB0
aGlzIGRvd24gaW50byBkZWxldGVLZXlQcmVzc2VkLgogICAgIC8vIGNsZWFyIHRoZSAic3RhcnQg
bmV3IGtpbGwgcmluZyBzZXF1ZW5jZSIgc2V0dGluZywgYmVjYXVzZSBpdCB3YXMgc2V0IHRvIHRy
dWUKICAgICAvLyB3aGVuIHRoZSBzZWxlY3Rpb24gd2FzIHVwZGF0ZWQgYnkgZGVsZXRpbmcgdGhl
IHJhbmdlCi0gICAgaWYgKGtpbGxSaW5nKQorICAgIGlmIChzaG91bGRBZGRUb0tpbGxSaW5nKQog
ICAgICAgICBzZXRTdGFydE5ld0tpbGxSaW5nU2VxdWVuY2UoZmFsc2UpOwogCiAgICAgcmV0dXJu
IHRydWU7CkBAIC0xMDk1LDcgKzEwOTUsNiBAQCB2b2lkIEVkaXRvcjo6cmVhcHBsaWVkRWRpdGlu
ZyhQYXNzUmVmUHRyPEVkaXRDb21tYW5kQ29tcG9zaXRpb24+IGNtZCkKIEVkaXRvcjo6RWRpdG9y
KEZyYW1lJiBmcmFtZSkKICAgICA6IG1fZnJhbWUoZnJhbWUpCiAgICAgLCBtX2lnbm9yZUNvbXBv
c2l0aW9uU2VsZWN0aW9uQ2hhbmdlKGZhbHNlKQotICAgICwgbV9zaG91bGRTdGFydE5ld0tpbGxS
aW5nU2VxdWVuY2UoZmFsc2UpCiAgICAgLy8gVGhpcyBpcyBvZmYgYnkgZGVmYXVsdCwgc2luY2Ug
bW9zdCBlZGl0b3JzIHdhbnQgdGhpcyBiZWhhdmlvciAodGhpcyBtYXRjaGVzIElFIGJ1dCBub3Qg
RkYpLgogICAgICwgbV9zaG91bGRTdHlsZVdpdGhDU1MoZmFsc2UpCiAgICAgLCBtX2tpbGxSaW5n
KHN0ZDo6bWFrZV91bmlxdWU8S2lsbFJpbmc+KCkpCkBAIC0xMzM0LDcgKzEzMzMsNyBAQCB2b2lk
IEVkaXRvcjo6cGVyZm9ybURlbGV0ZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBh
ZGRUb0tpbGxSaW5nKHNlbGVjdGVkUmFuZ2UoKS5nZXQoKSwgZmFsc2UpOworICAgIGFkZFJhbmdl
VG9LaWxsUmluZyhzZWxlY3RlZFJhbmdlKCkuZ2V0KCksIEtpbGxSaW5nSW5zZXJ0aW9uTW9kZTo6
QXBwZW5kVGV4dCk7CiAgICAgZGVsZXRlU2VsZWN0aW9uV2l0aFNtYXJ0RGVsZXRlKGNhblNtYXJ0
Q29weU9yRGVsZXRlKCkpOwogCiAgICAgLy8gY2xlYXIgdGhlICJzdGFydCBuZXcga2lsbCByaW5n
IHNlcXVlbmNlIiBzZXR0aW5nLCBiZWNhdXNlIGl0IHdhcyBzZXQgdG8gdHJ1ZQpAQCAtMjg0Nywx
NyArMjg0NiwyOSBAQCB2b2lkIEVkaXRvcjo6dHJhbnNwb3NlKCkKICAgICByZXBsYWNlU2VsZWN0
aW9uV2l0aFRleHQodHJhbnNwb3NlZCwgZmFsc2UsIGZhbHNlLCBFZGl0QWN0aW9uSW5zZXJ0KTsK
IH0KIAotdm9pZCBFZGl0b3I6OmFkZFRvS2lsbFJpbmcoUmFuZ2UqIHJhbmdlLCBib29sIHByZXBl
bmQpCit2b2lkIEVkaXRvcjo6YWRkUmFuZ2VUb0tpbGxSaW5nKFJhbmdlKiByYW5nZSwgS2lsbFJp
bmdJbnNlcnRpb25Nb2RlIG1vZGUpCit7CisgICAgYWRkVGV4dFRvS2lsbFJpbmcocGxhaW5UZXh0
KHJhbmdlKSwgbW9kZSk7Cit9CisKK3ZvaWQgRWRpdG9yOjphZGRUZXh0VG9LaWxsUmluZyhjb25z
dCBTdHJpbmcmIHRleHQsIEtpbGxSaW5nSW5zZXJ0aW9uTW9kZSBtb2RlKQogewogICAgIGlmICht
X3Nob3VsZFN0YXJ0TmV3S2lsbFJpbmdTZXF1ZW5jZSkKICAgICAgICAga2lsbFJpbmcoKS5zdGFy
dE5ld1NlcXVlbmNlKCk7CiAKLSAgICBTdHJpbmcgdGV4dCA9IHBsYWluVGV4dChyYW5nZSk7Ci0g
ICAgaWYgKHByZXBlbmQpCisgICAgbV9zaG91bGRTdGFydE5ld0tpbGxSaW5nU2VxdWVuY2UgPSBm
YWxzZTsKKworICAgIC8vIElmIHRoZSBraWxsIHdhcyBmcm9tIGEgYmFja3dhcmRzIG1vdGlvbiwg
cHJlcGVuZCB0byB0aGUga2lsbCByaW5nLgorICAgIC8vIFRoaXMgd2lsbCBlbnN1cmUgdGhhdCBh
bHRlcm5hdGluZyBmb3J3YXJkIGFuZCBiYWNrd2FyZCBraWxscyB3aWxsCisgICAgLy8gYnVpbGQg
dXAgdGhlIG9yaWdpbmFsIHN0cmluZyBpbiB0aGUga2lsbCByaW5nIHdpdGhvdXQgcGVybXV0aW5n
IGl0LgorICAgIHN3aXRjaCAobW9kZSkgeworICAgIGNhc2UgS2lsbFJpbmdJbnNlcnRpb25Nb2Rl
OjpQcmVwZW5kVGV4dDoKICAgICAgICAga2lsbFJpbmcoKS5wcmVwZW5kKHRleHQpOwotICAgIGVs
c2UKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLaWxsUmluZ0luc2VydGlvbk1vZGU6OkFwcGVu
ZFRleHQ6CiAgICAgICAgIGtpbGxSaW5nKCkuYXBwZW5kKHRleHQpOwotICAgIG1fc2hvdWxkU3Rh
cnROZXdLaWxsUmluZ1NlcXVlbmNlID0gZmFsc2U7CisgICAgICAgIGJyZWFrOworICAgIH0KIH0K
IAogdm9pZCBFZGl0b3I6OnN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlUaW1lcigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuaAppbmRleCA5ZTZkNzgwY2ZhY2U4MjAwOTIxZGM5ZDZhNGFjZTg0Y2I5MmJiMzQz
Li43NDAxYjkyYjk3NTUxMDc1M2VjYjI3YjFjMGIxZGJkMjRjMzZiODgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmgKQEAgLTMxNSw4ICszMTUsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRJZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZShib29sLCBSZXZlYWxT
ZWxlY3Rpb24gc2hvdWxkUmV2ZWFsRXhpc3RpbmdTZWxlY3Rpb24gPSBSZXZlYWxTZWxlY3Rpb246
Olllcyk7CiAgICAgYm9vbCBpZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSgpIGNvbnN0
IHsgcmV0dXJuIG1faWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2U7IH0KIAotICAgIHZv
aWQgc2V0U3RhcnROZXdLaWxsUmluZ1NlcXVlbmNlKGJvb2wpOwotCiAgICAgV0VCQ09SRV9FWFBP
UlQgUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2VGb3JQb2ludChjb25zdCBJbnRQb2ludCYgd2luZG93
UG9pbnQpOwogCiAgICAgdm9pZCBjbGVhcigpOwpAQCAtMzM4LDcgKzMzNiwxMCBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREaWN0YXRpb25QaHJhc2VzQXNDaGlsZE9mRWxl
bWVudChjb25zdCBWZWN0b3I8VmVjdG9yPFN0cmluZz4+JiBkaWN0YXRpb25QaHJhc2VzLCBSZXRh
aW5QdHI8aWQ+IG1ldGFkYXRhLCBFbGVtZW50Jik7CiAjZW5kaWYKICAgICAKLSAgICB2b2lkIGFk
ZFRvS2lsbFJpbmcoUmFuZ2UqLCBib29sIHByZXBlbmQpOworICAgIGVudW0gY2xhc3MgS2lsbFJp
bmdJbnNlcnRpb25Nb2RlIHsgUHJlcGVuZFRleHQsIEFwcGVuZFRleHQgfTsKKyAgICB2b2lkIGFk
ZFJhbmdlVG9LaWxsUmluZyhSYW5nZSosIEtpbGxSaW5nSW5zZXJ0aW9uTW9kZSk7CisgICAgdm9p
ZCBhZGRUZXh0VG9LaWxsUmluZyhjb25zdCBTdHJpbmcmLCBLaWxsUmluZ0luc2VydGlvbk1vZGUp
OworICAgIHZvaWQgc2V0U3RhcnROZXdLaWxsUmluZ1NlcXVlbmNlKGJvb2wpOwogCiAgICAgdm9p
ZCBzdGFydEFsdGVybmF0aXZlVGV4dFVJVGltZXIoKTsKICAgICAvLyBJZiB1c2VyIGNvbmZpcm1l
ZCBhIGNvcnJlY3Rpb24gaW4gdGhlIGNvcnJlY3Rpb24gcGFuZWwsIGNvcnJlY3Rpb24gaGFzIG5v
bi16ZXJvIGxlbmd0aCwgb3RoZXJ3aXNlIGl0IG1lYW5zIHRoYXQgdXNlciBoYXMgZGlzbWlzc2Vk
IHRoZSBwYW5lbC4KQEAgLTUwMSw3ICs1MDIsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1f
Y29tcG9zaXRpb25FbmQ7CiAgICAgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiBtX2N1c3Rv
bUNvbXBvc2l0aW9uVW5kZXJsaW5lczsKICAgICBib29sIG1faWdub3JlQ29tcG9zaXRpb25TZWxl
Y3Rpb25DaGFuZ2U7Ci0gICAgYm9vbCBtX3Nob3VsZFN0YXJ0TmV3S2lsbFJpbmdTZXF1ZW5jZTsK
KyAgICBib29sIG1fc2hvdWxkU3RhcnROZXdLaWxsUmluZ1NlcXVlbmNlIHtmYWxzZX07CiAgICAg
Ym9vbCBtX3Nob3VsZFN0eWxlV2l0aENTUzsKICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8S2ls
bFJpbmc+IG1fa2lsbFJpbmc7CiAgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFNwZWxsQ2hlY2tl
cj4gbV9zcGVsbENoZWNrZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5
cGluZ0NvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNw
cAppbmRleCBmMDc0NDQ4YTY5ZTJlYzAyZjAzYjFkOTRlYTI2MjI3MGZiODMwZDg3Li40YjkyNGRj
MDg0ZmI3N2Q0MmNkMWVlYzI2ZWFjZTkwNDQ2ZjQ0Y2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVHlwaW5nQ29tbWFuZC5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgVHlwaW5nQ29tbWFuZDo6VHlw
aW5nQ29tbWFuZChEb2N1bWVudCYgZG9jdW1lbnQsIEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBl
LCBjb24KICAgICAsIG1fc21hcnREZWxldGUob3B0aW9ucyAmIFNtYXJ0RGVsZXRlKQogICAgICwg
bV9ncmFudWxhcml0eShncmFudWxhcml0eSkKICAgICAsIG1fY29tcG9zaXRpb25UeXBlKGNvbXBv
c2l0aW9uVHlwZSkKLSAgICAsIG1fa2lsbFJpbmcob3B0aW9ucyAmIEtpbGxSaW5nKQorICAgICwg
bV9zaG91bGRBZGRUb0tpbGxSaW5nKG9wdGlvbnMgJiBBZGRzVG9LaWxsUmluZykKICAgICAsIG1f
b3BlbmVkQnlCYWNrd2FyZERlbGV0ZShmYWxzZSkKICAgICAsIG1fc2hvdWxkUmV0YWluQXV0b2Nv
cnJlY3Rpb25JbmRpY2F0b3Iob3B0aW9ucyAmIFJldGFpbkF1dG9jb3JyZWN0aW9uSW5kaWNhdG9y
KQogICAgICwgbV9zaG91bGRQcmV2ZW50U3BlbGxDaGVja2luZyhvcHRpb25zICYgUHJldmVudFNw
ZWxsQ2hlY2tpbmcpCkBAIC0xMTQsNyArMTE0LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpkZWxl
dGVLZXlQcmVzc2VkKERvY3VtZW50JiBkb2N1bWVudCwgT3B0aW9ucyBvcHRpb25zLCBUZXh0R3IK
ICAgICAgICAgaWYgKFJlZlB0cjxUeXBpbmdDb21tYW5kPiBsYXN0VHlwaW5nQ29tbWFuZCA9IGxh
c3RUeXBpbmdDb21tYW5kSWZTdGlsbE9wZW5Gb3JUeXBpbmcoZG9jdW1lbnQuZnJhbWUoKSkpIHsK
ICAgICAgICAgICAgIHVwZGF0ZVNlbGVjdGlvbklmRGlmZmVyZW50RnJvbUN1cnJlbnRTZWxlY3Rp
b24obGFzdFR5cGluZ0NvbW1hbmQuZ2V0KCksIGRvY3VtZW50LmZyYW1lKCkpOwogICAgICAgICAg
ICAgbGFzdFR5cGluZ0NvbW1hbmQtPnNldFNob3VsZFByZXZlbnRTcGVsbENoZWNraW5nKG9wdGlv
bnMgJiBQcmV2ZW50U3BlbGxDaGVja2luZyk7Ci0gICAgICAgICAgICBsYXN0VHlwaW5nQ29tbWFu
ZC0+ZGVsZXRlS2V5UHJlc3NlZChncmFudWxhcml0eSwgb3B0aW9ucyAmIEtpbGxSaW5nKTsKKyAg
ICAgICAgICAgIGxhc3RUeXBpbmdDb21tYW5kLT5kZWxldGVLZXlQcmVzc2VkKGdyYW51bGFyaXR5
LCBvcHRpb25zICYgQWRkc1RvS2lsbFJpbmcpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgfQpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6Zm9yd2Fy
ZERlbGV0ZUtleVByZXNzZWQoRG9jdW1lbnQmIGRvY3VtZW50LCBPcHRpb25zIG9wdGlvbnMsCiAg
ICAgICAgIGlmIChSZWZQdHI8VHlwaW5nQ29tbWFuZD4gbGFzdFR5cGluZ0NvbW1hbmQgPSBsYXN0
VHlwaW5nQ29tbWFuZElmU3RpbGxPcGVuRm9yVHlwaW5nKGZyYW1lKSkgewogICAgICAgICAgICAg
dXBkYXRlU2VsZWN0aW9uSWZEaWZmZXJlbnRGcm9tQ3VycmVudFNlbGVjdGlvbihsYXN0VHlwaW5n
Q29tbWFuZC5nZXQoKSwgZnJhbWUpOwogICAgICAgICAgICAgbGFzdFR5cGluZ0NvbW1hbmQtPnNl
dFNob3VsZFByZXZlbnRTcGVsbENoZWNraW5nKG9wdGlvbnMgJiBQcmV2ZW50U3BlbGxDaGVja2lu
Zyk7Ci0gICAgICAgICAgICBsYXN0VHlwaW5nQ29tbWFuZC0+Zm9yd2FyZERlbGV0ZUtleVByZXNz
ZWQoZ3JhbnVsYXJpdHksIG9wdGlvbnMgJiBLaWxsUmluZyk7CisgICAgICAgICAgICBsYXN0VHlw
aW5nQ29tbWFuZC0+Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQoZ3JhbnVsYXJpdHksIG9wdGlvbnMg
JiBBZGRzVG9LaWxsUmluZyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9
CkBAIC0yNjMsMTAgKzI2MywxMCBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRvQXBwbHkoKQogICAg
ICAgICBkZWxldGVTZWxlY3Rpb24obV9zbWFydERlbGV0ZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIERlbGV0ZUtleToKLSAgICAgICAgZGVsZXRlS2V5UHJlc3NlZChtX2dyYW51bGFyaXR5
LCBtX2tpbGxSaW5nKTsKKyAgICAgICAgZGVsZXRlS2V5UHJlc3NlZChtX2dyYW51bGFyaXR5LCBt
X3Nob3VsZEFkZFRvS2lsbFJpbmcpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGb3J3YXJk
RGVsZXRlS2V5OgotICAgICAgICBmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZChtX2dyYW51bGFyaXR5
LCBtX2tpbGxSaW5nKTsKKyAgICAgICAgZm9yd2FyZERlbGV0ZUtleVByZXNzZWQobV9ncmFudWxh
cml0eSwgbV9zaG91bGRBZGRUb0tpbGxSaW5nKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ug
SW5zZXJ0TGluZUJyZWFrOgogICAgICAgICBpbnNlcnRMaW5lQnJlYWsoKTsKQEAgLTQzMyw3ICs0
MzMsNyBAQCBib29sIFR5cGluZ0NvbW1hbmQ6Om1ha2VFZGl0YWJsZVJvb3RFbXB0eSgpCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChU
ZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wga2lsbFJpbmcpCit2b2lkIFR5cGluZ0Nv
bW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29s
IHNob3VsZEFkZFRvS2lsbFJpbmcpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gdGhpcy0+ZnJhbWUo
KTsKIApAQCAtNDU4LDcgKzQ1OCw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJl
c3NlZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wga2lsbFJpbmcpCiAgICAgICAg
IEZyYW1lU2VsZWN0aW9uIHNlbGVjdGlvbjsKICAgICAgICAgc2VsZWN0aW9uLnNldFNlbGVjdGlv
bihlbmRpbmdTZWxlY3Rpb24oKSk7CiAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxl
Y3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkJhY2t3YXJkLCBncmFudWxhcml0eSk7
Ci0gICAgICAgIGlmIChraWxsUmluZyAmJiBzZWxlY3Rpb24uaXNDYXJldCgpICYmIGdyYW51bGFy
aXR5ICE9IENoYXJhY3RlckdyYW51bGFyaXR5KQorICAgICAgICBpZiAoc2hvdWxkQWRkVG9LaWxs
UmluZyAmJiBzZWxlY3Rpb24uaXNDYXJldCgpICYmIGdyYW51bGFyaXR5ICE9IENoYXJhY3Rlckdy
YW51bGFyaXR5KQogICAgICAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6
QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5
KTsKIAogICAgICAgICBpZiAoZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkucHJldmlv
dXMoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpLmlzTnVsbCgpKSB7CkBAIC01MzAsOCArNTMw
LDggQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKFRleHRHcmFudWxhcml0
eSBncmFudWxhcml0eSwgYm9vbCBraWxsUmluZykKICAgICBpZiAoc2VsZWN0aW9uVG9EZWxldGUu
aXNDYXJldCgpIHx8ICFmcmFtZS5zZWxlY3Rpb24oKS5zaG91bGREZWxldGVTZWxlY3Rpb24oc2Vs
ZWN0aW9uVG9EZWxldGUpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgaWYgKGtpbGxSaW5n
KQotICAgICAgICBmcmFtZS5lZGl0b3IoKS5hZGRUb0tpbGxSaW5nKHNlbGVjdGlvblRvRGVsZXRl
LnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIGZhbHNlKTsKKyAgICBpZiAoc2hvdWxkQWRkVG9L
aWxsUmluZykKKyAgICAgICAgZnJhbWUuZWRpdG9yKCkuYWRkUmFuZ2VUb0tpbGxSaW5nKHNlbGVj
dGlvblRvRGVsZXRlLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIEVkaXRvcjo6S2lsbFJpbmdJ
bnNlcnRpb25Nb2RlOjpQcmVwZW5kVGV4dCk7CiAgICAgLy8gTWFrZSB1bmRvIHNlbGVjdCBldmVy
eXRoaW5nIHRoYXQgaGFzIGJlZW4gZGVsZXRlZCwgdW5sZXNzIGFuIHVuZG8gd2lsbCB1bmRvIG1v
cmUgdGhhbiBqdXN0IHRoaXMgZGVsZXRpb24uCiAgICAgLy8gRklYTUU6IFRoaXMgYmVoYXZlcyBs
aWtlIFRleHRFZGl0IGV4Y2VwdCBmb3IgdGhlIGNhc2Ugd2hlcmUgeW91IG9wZW4gd2l0aCB0ZXh0
IGluc2VydGlvbiBhbmQgdGhlbiBkZWxldGUKICAgICAvLyBtb3JlIHRleHQgdGhhbiB5b3UgaW5z
ZXJ0LiAgSW4gdGhhdCBjYXNlIGFsbCBvZiB0aGUgdGV4dCB0aGF0IHdhcyBhcm91bmQgb3JpZ2lu
YWxseSBzaG91bGQgYmUgc2VsZWN0ZWQuCkBAIC01NDIsNyArNTQyLDcgQEAgdm9pZCBUeXBpbmdD
b21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9v
bCBraWxsUmluZykKICAgICB0eXBpbmdBZGRlZFRvT3BlbkNvbW1hbmQoRGVsZXRlS2V5KTsKIH0K
IAotdm9pZCBUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZChUZXh0R3JhbnVs
YXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wga2lsbFJpbmcpCit2b2lkIFR5cGluZ0NvbW1hbmQ6OmZv
cndhcmREZWxldGVLZXlQcmVzc2VkKFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBz
aG91bGRBZGRUb0tpbGxSaW5nKQogewogICAgIEZyYW1lJiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7
CiAKQEAgLTU2NSw3ICs1NjUsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVL
ZXlQcmVzc2VkKFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBraQogICAgICAgICBG
cmFtZVNlbGVjdGlvbiBzZWxlY3Rpb247CiAgICAgICAgIHNlbGVjdGlvbi5zZXRTZWxlY3Rpb24o
ZW5kaW5nU2VsZWN0aW9uKCkpOwogICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0
aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25Gb3J3YXJkLCBncmFudWxhcml0eSk7Ci0g
ICAgICAgIGlmIChraWxsUmluZyAmJiBzZWxlY3Rpb24uaXNDYXJldCgpICYmIGdyYW51bGFyaXR5
ICE9IENoYXJhY3RlckdyYW51bGFyaXR5KQorICAgICAgICBpZiAoc2hvdWxkQWRkVG9LaWxsUmlu
ZyAmJiBzZWxlY3Rpb24uaXNDYXJldCgpICYmIGdyYW51bGFyaXR5ICE9IENoYXJhY3RlckdyYW51
bGFyaXR5KQogICAgICAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0
ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOwog
CiAgICAgICAgIFBvc2l0aW9uIGRvd25zdHJlYW1FbmQgPSBlbmRpbmdTZWxlY3Rpb24oKS5lbmQo
KS5kb3duc3RyZWFtKCk7CkBAIC02MjgsOCArNjI4LDggQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpm
b3J3YXJkRGVsZXRlS2V5UHJlc3NlZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wg
a2kKICAgICBpZiAoc2VsZWN0aW9uVG9EZWxldGUuaXNDYXJldCgpIHx8ICFmcmFtZS5zZWxlY3Rp
b24oKS5zaG91bGREZWxldGVTZWxlY3Rpb24oc2VsZWN0aW9uVG9EZWxldGUpKQogICAgICAgICBy
ZXR1cm47CiAgICAgICAgIAotICAgIGlmIChraWxsUmluZykKLSAgICAgICAgZnJhbWUuZWRpdG9y
KCkuYWRkVG9LaWxsUmluZyhzZWxlY3Rpb25Ub0RlbGV0ZS50b05vcm1hbGl6ZWRSYW5nZSgpLmdl
dCgpLCBmYWxzZSk7CisgICAgaWYgKHNob3VsZEFkZFRvS2lsbFJpbmcpCisgICAgICAgIGZyYW1l
LmVkaXRvcigpLmFkZFJhbmdlVG9LaWxsUmluZyhzZWxlY3Rpb25Ub0RlbGV0ZS50b05vcm1hbGl6
ZWRSYW5nZSgpLmdldCgpLCBFZGl0b3I6OktpbGxSaW5nSW5zZXJ0aW9uTW9kZTo6QXBwZW5kVGV4
dCk7CiAgICAgLy8gbWFrZSB1bmRvIHNlbGVjdCB3aGF0IHdhcyBkZWxldGVkCiAgICAgc2V0U3Rh
cnRpbmdTZWxlY3Rpb24oc2VsZWN0aW9uQWZ0ZXJVbmRvKTsKICAgICBDb21wb3NpdGVFZGl0Q29t
bWFuZDo6ZGVsZXRlU2VsZWN0aW9uKHNlbGVjdGlvblRvRGVsZXRlLCBtX3NtYXJ0RGVsZXRlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmgKaW5kZXggZWFiODI0MmE5ZmJiMWNl
OTZhMjUzN2IzMTFiZmRiOTQ0MTBiMGI3MS4uN2YzNDkyZmJlMTBlOTg2ZmFlZjllYjM2M2NlNmYy
NzYyNTNiNDkwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21t
YW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmgKQEAgLTUw
LDcgKzUwLDcgQEAgcHVibGljOgogCiAgICAgZW51bSBPcHRpb24gewogICAgICAgICBTZWxlY3RJ
bnNlcnRlZFRleHQgPSAxIDw8IDAsCi0gICAgICAgIEtpbGxSaW5nID0gMSA8PCAxLAorICAgICAg
ICBBZGRzVG9LaWxsUmluZyA9IDEgPDwgMSwKICAgICAgICAgUmV0YWluQXV0b2NvcnJlY3Rpb25J
bmRpY2F0b3IgPSAxIDw8IDIsCiAgICAgICAgIFByZXZlbnRTcGVsbENoZWNraW5nID0gMSA8PCAz
LAogICAgICAgICBTbWFydERlbGV0ZSA9IDEgPDwgNApAQCAtNzUsOCArNzUsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBpbnNlcnRMaW5lQnJlYWsoKTsKICAgICB2b2lkIGluc2VydFBhcmFncmFwaFNl
cGFyYXRvckluUXVvdGVkQ29udGVudCgpOwogICAgIHZvaWQgaW5zZXJ0UGFyYWdyYXBoU2VwYXJh
dG9yKCk7Ci0gICAgdm9pZCBkZWxldGVLZXlQcmVzc2VkKFRleHRHcmFudWxhcml0eSwgYm9vbCBr
aWxsUmluZyk7Ci0gICAgdm9pZCBmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZChUZXh0R3JhbnVsYXJp
dHksIGJvb2wga2lsbFJpbmcpOworICAgIHZvaWQgZGVsZXRlS2V5UHJlc3NlZChUZXh0R3JhbnVs
YXJpdHksIGJvb2wgc2hvdWxkQWRkVG9LaWxsUmluZyk7CisgICAgdm9pZCBmb3J3YXJkRGVsZXRl
S2V5UHJlc3NlZChUZXh0R3JhbnVsYXJpdHksIGJvb2wgc2hvdWxkQWRkVG9LaWxsUmluZyk7CiAg
ICAgdm9pZCBkZWxldGVTZWxlY3Rpb24oYm9vbCBzbWFydERlbGV0ZSk7CiAgICAgdm9pZCBzZXRD
b21wb3NpdGlvblR5cGUoVGV4dENvbXBvc2l0aW9uVHlwZSB0eXBlKSB7IG1fY29tcG9zaXRpb25U
eXBlID0gdHlwZTsgfQogCkBAIC0xMzEsNyArMTMxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
c21hcnREZWxldGU7CiAgICAgVGV4dEdyYW51bGFyaXR5IG1fZ3JhbnVsYXJpdHk7CiAgICAgVGV4
dENvbXBvc2l0aW9uVHlwZSBtX2NvbXBvc2l0aW9uVHlwZTsKLSAgICBib29sIG1fa2lsbFJpbmc7
CisgICAgYm9vbCBtX3Nob3VsZEFkZFRvS2lsbFJpbmc7CiAgICAgYm9vbCBtX3ByZXNlcnZlc1R5
cGluZ1N0eWxlOwogICAgIAogICAgIC8vIFVuZG9pbmcgYSBzZXJpZXMgb2YgYmFja3dhcmQgZGVs
ZXRlcyB3aWxsIHJlc3RvcmUgYSBzZWxlY3Rpb24gYXJvdW5kIGFsbCBvZiB0aGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LaWxsUmluZ01hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9LaWxsUmluZ01hYy5tbQppbmRleCAxMDE1MDcwOGEzOTgzMTRl
OTA2ZDg3N2ExYzkwOTZhZWI3ZjkyNTkzLi5lNDJjZjBhMWI3OGZmYmNjZjhmYWFhNmIzZGM4YTEz
YjQxNzgyY2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvS2lsbFJp
bmdNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0tpbGxSaW5nTWFjLm1t
CkBAIC0yNiw2ICsyNiw4IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIktpbGxSaW5n
LmgiCiAKKyNpbXBvcnQgPG11dGV4PgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGV4dGVybiAi
QyIgewpAQCAtMzgsMjcgKzQwLDMxIEBAIHZvaWQgX05TUHJlcGVuZFRvS2lsbFJpbmcoTlNTdHJp
bmcgKik7CiBOU1N0cmluZyAqX05TWWFua0Zyb21LaWxsUmluZygpOwogdm9pZCBfTlNOZXdLaWxs
UmluZ1NlcXVlbmNlKCk7CiB2b2lkIF9OU1NldEtpbGxSaW5nVG9ZYW5rZWRTdGF0ZSgpOwordm9p
ZCBfTlNSZXNldEtpbGxSaW5nT3BlcmF0aW9uRmxhZygpOwogCiB9CiAKIHN0YXRpYyB2b2lkIGlu
aXRpYWxpemVLaWxsUmluZ0lmTmVlZGVkKCkKIHsKLSAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXpl
ZEtpbGxSaW5nID0gZmFsc2U7Ci0gICAgaWYgKCFpbml0aWFsaXplZEtpbGxSaW5nKSB7Ci0gICAg
ICAgIGluaXRpYWxpemVkS2lsbFJpbmcgPSB0cnVlOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewogICAgICAgICBf
TlNJbml0aWFsaXplS2lsbFJpbmcoKTsKLSAgICB9CisgICAgfSk7CiB9CiAKIHZvaWQgS2lsbFJp
bmc6OmFwcGVuZChjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBpbml0aWFsaXplS2lsbFJp
bmdJZk5lZWRlZCgpOworICAgIC8vIE5lY2Vzc2FyeSB0byBwcmV2ZW50IGFuIGltcGxpY2l0IG5l
dyBzZXF1ZW5jZSBpZiB0aGUgcHJldmlvdXMgY29tbWFuZCB3YXMgTlNQcmVwZW5kVG9LaWxsUmlu
Zy4KKyAgICBfTlNSZXNldEtpbGxSaW5nT3BlcmF0aW9uRmxhZygpOwogICAgIF9OU0FwcGVuZFRv
S2lsbFJpbmcoc3RyaW5nKTsKIH0KIAogdm9pZCBLaWxsUmluZzo6cHJlcGVuZChjb25zdCBTdHJp
bmcmIHN0cmluZykKIHsKICAgICBpbml0aWFsaXplS2lsbFJpbmdJZk5lZWRlZCgpOworICAgIC8v
IE5lY2Vzc2FyeSB0byBwcmV2ZW50IGFuIGltcGxpY2l0IG5ldyBzZXF1ZW5jZSBpZiB0aGUgcHJl
dmlvdXMgY29tbWFuZCB3YXMgTlNBcHBlbmRUb0tpbGxSaW5nLgorICAgIF9OU1Jlc2V0S2lsbFJp
bmdPcGVyYXRpb25GbGFnKCk7CiAgICAgX05TUHJlcGVuZFRvS2lsbFJpbmcoc3RyaW5nKTsKIH0K
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDEwNTIzMzEyZTE1MWQ3Nzk3OTBlN2I2Mzc1YWRmMTllYzkwOTZiOTQuLjJiMjdm
OGM5ZGVhNTI0ZTYxODJmNDgyMjU1ODVlMGZjYmU0NzRhMTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAxNS0xMS0xOSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBS
RUdSRVNTSU9OKHI4NzgwKTogQmFja3dhcmRzIGRlbGV0ZSBieSB3b3JkIGluY29ycmVjdGx5IGFw
cGVuZHMgZGVsZXRlZCB0ZXh0IHRvIGtpbGwgcmluZywgc2hvdWxkIGJlIHByZXBlbmQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTMwMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZWRpdGluZy9wYXN0
ZWJvYXJkL2VtYWNzLWtpbGxyaW5nLWFsdGVybmF0aW5nLWFwcGVuZC1wcmVwZW5kLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2VtYWNzLWtpbGxyaW5n
LWFsdGVybmF0aW5nLWFwcGVuZC1wcmVwZW5kLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRp
bmcvcGFzdGVib2FyZC9lbWFjcy1raWxscmluZy1iYWNrd2FyZC1kZWxldGUtcHJlcGVuZC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9lbWFjcy1raWxs
cmluZy1iYWNrd2FyZC1kZWxldGUtcHJlcGVuZC5odG1sOiBBZGRlZC4KKwogMjAxNS0xMS0xOCAg
QnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBT
dG9yYWdlIHRhYiBzaG91bGRuJ3QgaGlkZSBjb29raWVzIGZvciAuZXhhbXBsZS5jb20gd2hlbiBp
bnNwZWN0ZWQgcGFnZSBpcyBmb28uYmFyLmV4YW1wbGUuY29tCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZW1hY3Mta2lsbHJpbmctYWx0ZXJuYXRpbmctYXBwZW5k
LXByZXBlbmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2Vt
YWNzLWtpbGxyaW5nLWFsdGVybmF0aW5nLWFwcGVuZC1wcmVwZW5kLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iNjBlYmU4MDM4MjJlYjE5ZjE5NGJjNzVmZDYzMDRiYTE4MDUwMjZjCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2VtYWNzLWtpbGxyaW5n
LWFsdGVybmF0aW5nLWFwcGVuZC1wcmVwZW5kLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAK
K1Rlc3QgZm9yIGJ1ZyAxNTEzMDA6IEJhY2t3YXJkcyBkZWxldGUgYnkgd29yZCBpbmNvcnJlY3Rs
eSBhcHBlbmRzIGRlbGV0ZWQgdGV4dCB0byBraWxsIHJpbmcsIHNob3VsZCBiZSBwcmVwZW5kLgor
CitvbmUgdHdvwqB0aHJlZQorRXhwZWN0ZWQgcmVzdWx0OiBvbmUgdHdvIHRocmVlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZW1hY3Mta2lsbHJpbmctYWx0ZXJu
YXRpbmctYXBwZW5kLXByZXBlbmQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC9lbWFjcy1raWxscmluZy1hbHRlcm5hdGluZy1hcHBlbmQtcHJlcGVuZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkMTU0ZTlmNTEyMjk3NGYzMzcyZjBiNmUzNDBjYTI1NThkMTc3MjQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZW1hY3Mta2lsbHJpbmctYWx0
ZXJuYXRpbmctYXBwZW5kLXByZXBlbmQuaHRtbApAQCAtMCwwICsxLDI1IEBACis8cD5UZXN0IGZv
ciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxMzAw
Ij5idWcgMTUxMzAwPC9hPjoKK0JhY2t3YXJkcyBkZWxldGUgYnkgd29yZCBpbmNvcnJlY3RseSBh
cHBlbmRzIGRlbGV0ZWQgdGV4dCB0byBraWxsIHJpbmcsIHNob3VsZCBiZSBwcmVwZW5kLjwvcD4K
KworPGRpdiBjb250ZW50ZWRpdGFibGUgaWQ9Y2U+CitvbmUgdHdvIHRocmVlCis8L2Rpdj4KKwor
PGRpdj4KK0V4cGVjdGVkIHJlc3VsdDoKK29uZSB0d28gdGhyZWUKKzwvZGl2PgorCis8c2NyaXB0
PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNlIikuZm9jdXMoKTsKKyAgICB0ZXN0UnVu
bmVyLmV4ZWNDb21tYW5kKCJNb3ZlV29yZEZvcndhcmQiKTsKKyAgICB0ZXN0UnVubmVyLmV4ZWND
b21tYW5kKCJNb3ZlV29yZEZvcndhcmQiKTsKKyAgICB0ZXN0UnVubmVyLmV4ZWNDb21tYW5kKCJE
ZWxldGVXb3JkQmFja3dhcmQiKTsKKyAgICB0ZXN0UnVubmVyLmV4ZWNDb21tYW5kKCJEZWxldGVX
b3JkQmFja3dhcmQiKTsKKyAgICB0ZXN0UnVubmVyLmV4ZWNDb21tYW5kKCJEZWxldGVXb3JkRm9y
d2FyZCIpOworICAgIHRlc3RSdW5uZXIuZXhlY0NvbW1hbmQoIllhbmsiKTsKK30gZWxzZQorICAg
IGRvY3VtZW50LndyaXRlKCJUaGlzIHRlc3Qgb25seSBydW5zIGluIGF1dG9tYXRpYyBtb2RlIik7
Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9l
bWFjcy1raWxscmluZy1iYWNrd2FyZC1kZWxldGUtcHJlcGVuZC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZW1hY3Mta2lsbHJpbmctYmFja3dhcmQtZGVsZXRl
LXByZXBlbmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5ZDI3OWVmOTMwZjMyYTUzNjY1ZTg5
ZjllNzVhNDc4NGIxOWM0OGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3Bhc3RlYm9hcmQvZW1hY3Mta2lsbHJpbmctYmFja3dhcmQtZGVsZXRlLXByZXBlbmQtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorVGVzdCBmb3IgYnVnIDE1MTMwMDogQmFja3dhcmRzIGRl
bGV0ZSBieSB3b3JkIGluY29ycmVjdGx5IGFwcGVuZHMgZGVsZXRlZCB0ZXh0IHRvIGtpbGwgcmlu
Zywgc2hvdWxkIGJlIHByZXBlbmQuCisKK1RoaXMgdGVzdCBjaGVja3MgdGhhdCBiYWNrd2FyZHMg
ZGVsZXRlLWJ5LXdvcmQgcHJlcGVuZHMgdG8gdGhlIGtpbGwgcmluZy4KKworb25lwqB0d2/CoHRo
cmVlCitFeHBlY3RlZCByZXN1bHQ6IG9uZSB0d28gdGhyZWUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2VkaXRpbmcvcGFzdGVib2FyZC9lbWFjcy1raWxscmluZy1iYWNrd2FyZC1kZWxldGUtcHJl
cGVuZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2VtYWNzLWtpbGxyaW5n
LWJhY2t3YXJkLWRlbGV0ZS1wcmVwZW5kLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTlmZGE3YmFmNDM1OWZk
MDE3OWNmOTIwNDk5Yjc2OGY3MDE2NzcyNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvcGFzdGVib2FyZC9lbWFjcy1raWxscmluZy1iYWNrd2FyZC1kZWxldGUtcHJlcGVu
ZC5odG1sCkBAIC0wLDAgKzEsMjUgQEAKKzxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTEzMDAiPmJ1ZyAxNTEzMDA8L2E+OgorQmFj
a3dhcmRzIGRlbGV0ZSBieSB3b3JkIGluY29ycmVjdGx5IGFwcGVuZHMgZGVsZXRlZCB0ZXh0IHRv
IGtpbGwgcmluZywgc2hvdWxkIGJlIHByZXBlbmQuPC9wPgorPHA+VGhpcyB0ZXN0IGNoZWNrcyB0
aGF0IGJhY2t3YXJkcyBkZWxldGUtYnktd29yZCBwcmVwZW5kcyB0byB0aGUga2lsbCByaW5nLjwv
cD4KKworPGRpdiBjb250ZW50ZWRpdGFibGUgaWQ9Y2U+CitvbmUgdHdvIHRocmVlCis8L2Rpdj4K
KworPGRpdj4KK0V4cGVjdGVkIHJlc3VsdDoKK29uZSB0d28gdGhyZWUKKzwvZGl2PgorCis8c2Ny
aXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNlIikuZm9jdXMoKTsKKyAgICB0ZXN0
UnVubmVyLmV4ZWNDb21tYW5kKCJNb3ZlVG9FbmRPZkxpbmUiKTsKKyAgICB0ZXN0UnVubmVyLmV4
ZWNDb21tYW5kKCJEZWxldGVXb3JkQmFja3dhcmQiKTsKKyAgICB0ZXN0UnVubmVyLmV4ZWNDb21t
YW5kKCJEZWxldGVXb3JkQmFja3dhcmQiKTsKKyAgICB0ZXN0UnVubmVyLmV4ZWNDb21tYW5kKCJE
ZWxldGVXb3JkQmFja3dhcmQiKTsKKyAgICB0ZXN0UnVubmVyLmV4ZWNDb21tYW5kKCJZYW5rIik7
Cit9IGVsc2UKKyAgICBkb2N1bWVudC53cml0ZSgiVGhpcyB0ZXN0IG9ubHkgcnVucyBpbiBhdXRv
bWF0aWMgbW9kZSIpOworPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265872</attachid>
            <date>2015-11-19 10:28:59 -0800</date>
            <delta_ts>2015-11-19 10:32:49 -0800</delta_ts>
            <desc>For Landing</desc>
            <filename>bug-151300-20151119102847.patch</filename>
            <type>text/plain</type>
            <size>21524</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmJkNjkzZGVhN2E4ZGUy
MWYzOWY4ZmZjOGU3ZmM3MmI2MDVmZGM5ZC4uYWE0YjkyMzVlYzE4ZGQ4Nzg0ZDYxZWJjNzA3OTcz
MGZiNjRjMDk1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE1LTExLTE5ICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04ocjg3ODApOiBC
YWNrd2FyZHMgZGVsZXRlIGJ5IHdvcmQgaW5jb3JyZWN0bHkgYXBwZW5kcyBkZWxldGVkIHRleHQg
dG8ga2lsbCByaW5nLCBzaG91bGQgYmUgcHJlcGVuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxMzAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgT3ZlciAxMSB5ZWFycyBhZ28sIHNvbWVvbmUgd2FzIGlu
IGEgYmlnIGh1cnJ5IHRvIGZpeCBhIGJ1bmNoCisgICAgICAgIG9mIGVtYWNzIGtleWJpbmRpbmdz
IGJ1Z3MsIGFuZCBhY2NpZGVudGFsbHkgcmVncmVzc2VkIHRoZSBraWxsIHJpbmcKKyAgICAgICAg
YmVoYXZpb3IgZm9yIGJhY2t3YXJkcy1kZWxldGUtd29yZC4gSXQgc2hvdWxkIHByZXBlbmQgdG8g
dGhlIGJlZ2lubmluZy4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIHRoZSByZWdyZXNzaW9u
IGFuZCBjbGVhbnMgdXAgdGhlIGtpbGwgcmluZy1yZWxhdGVkCisgICAgICAgIGNvZGUgaW4gRWRp
dG9yIGFuZCBjb21tYW5kcy4gSXQgYWxzbyBhZGRzIHNvbWUgdGVzdHMgdG8gY292ZXIgdGhlCisg
ICAgICAgIHJlZ3Jlc3NlZCBjb2RlIGEgYml0IGJldHRlci4KKworICAgICAgICBUZXN0czogZWRp
dGluZy9wYXN0ZWJvYXJkL2VtYWNzLWtpbGxyaW5nLWFsdGVybmF0aW5nLWFwcGVuZC1wcmVwZW5k
Lmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvcGFzdGVib2FyZC9lbWFjcy1raWxscmluZy1i
YWNrd2FyZC1kZWxldGUtcHJlcGVuZC5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5j
cHA6CisKKyAgICAgICAgICAgIFVzZSBtb3JlIGV4cGxpY2l0IG5hbWVzIGZvciBpbnNlcnRpb24g
bW9kZSBwYXJhbWV0ZXJzIGFuZCBtZW1iZXIgdmFyaWFibGVzLgorCisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6OmRlbGV0ZVdpdGhEaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjpwZXJmb3JtRGVsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YWRkUmFuZ2VUb0tp
bGxSaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YWRkVGV4dFRvS2lsbFJpbmcpOgor
CisgICAgICAgICAgICBPbmx5IG9uZSBjYWxsIHNpdGUgZm9yIG5vdywgYnV0IGFub3RoZXIgd2ls
bCBiZSBhZGRlZCBpbiBhIGRlcGVuZGVudCBmaXguCisKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6YWRkVG9LaWxsUmluZyk6IERlbGV0ZWQuCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoK
KyAgICAgICAgKiBlZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VHlwaW5nQ29tbWFuZDo6VHlwaW5nQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdD
b21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1h
bmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0Nv
bW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9LaWxsUmluZ01hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Oktp
bGxSaW5nOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6S2lsbFJpbmc6OnByZXBlbmQpOgor
CisgICAgICAgICAgICBJdCB0dXJucyBvdXQgdGhhdCB0aGUgbmF0aXZlIEFQSSBpbXBsaWNpdGx5
IGNsZWFycyB0aGUga2lsbCBzZXF1ZW5jZSB3aGVuCisgICAgICAgICAgICBhbHRlcm5hdGluZyBi
ZXR3ZWVuIHByZXBlbmQgYW5kIGFwcGVuZCBvcGVyYXRpb25zLiBJdHMgYmVoYXZpb3IgZG9lcyBu
b3QgbWF0Y2gKKyAgICAgICAgICAgIHdoYXQgU3VibGltZSBUZXh0IG9yIEVtYWNzIGRvIGluIHRo
aXMgY2FzZS4gQ2xlYXIgdGhlIHByZXZpb3VzIG9wZXJhdGlvbiBmbGFnCisgICAgICAgICAgICB0
byBwcmV2ZW50IHRoaXMgYmVoYXZpb3IgZnJvbSBoYXBwZW5pbmcuCisKIDIwMTUtMTEtMTggIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIE1vZGVybiBJREI6TWFr
ZSBpbi1tZW1vcnkgSW5kZXggY3Vyc29ycyB3b3JrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CmluZGV4IGNmMWJlMmFiZTY0ZmE3NDZhZTZiMTA1YjQ2NDE3ODBiNzQ1MGU1M2IuLmZmZTc1NjU5
MTY3MjQ1OTkzODAwNjFiNjAzNjUwNzIxOTY3ZmI5MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKQEAgLTMzMCw3ICszMzAsNyBAQCBib29sIEVkaXRvcjo6aXNTZWxlY3RUcmFpbGluZ1do
aXRlc3BhY2VFbmFibGVkKCkKICAgICByZXR1cm4gY2xpZW50KCkgJiYgY2xpZW50KCktPmlzU2Vs
ZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpOwogfQogCi1ib29sIEVkaXRvcjo6ZGVsZXRl
V2l0aERpcmVjdGlvbihTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uLCBUZXh0R3JhbnVsYXJp
dHkgZ3JhbnVsYXJpdHksIGJvb2wga2lsbFJpbmcsIGJvb2wgaXNUeXBpbmdBY3Rpb24pCitib29s
IEVkaXRvcjo6ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9u
LCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wgc2hvdWxkQWRkVG9LaWxsUmluZywg
Ym9vbCBpc1R5cGluZ0FjdGlvbikKIHsKICAgICBpZiAoIWNhbkVkaXQoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMzQwLDggKzM0MCw4IEBAIGJvb2wgRWRpdG9yOjpkZWxldGVXaXRoRGly
ZWN0aW9uKFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24sIFRleHRHcmFudWxhcml0eSBnCiAg
ICAgICAgICAgICBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKGRvY3VtZW50KCksIGNh
blNtYXJ0Q29weU9yRGVsZXRlKCkgPyBUeXBpbmdDb21tYW5kOjpTbWFydERlbGV0ZSA6IDAsIGdy
YW51bGFyaXR5KTsKICAgICAgICAgICAgIHJldmVhbFNlbGVjdGlvbkFmdGVyRWRpdGluZ09wZXJh
dGlvbigpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKGtpbGxSaW5nKQotICAg
ICAgICAgICAgICAgIGFkZFRvS2lsbFJpbmcoc2VsZWN0ZWRSYW5nZSgpLmdldCgpLCBmYWxzZSk7
CisgICAgICAgICAgICBpZiAoc2hvdWxkQWRkVG9LaWxsUmluZykKKyAgICAgICAgICAgICAgICBh
ZGRSYW5nZVRvS2lsbFJpbmcoKnNlbGVjdGVkUmFuZ2UoKS5nZXQoKSwgS2lsbFJpbmdJbnNlcnRp
b25Nb2RlOjpBcHBlbmRUZXh0KTsKICAgICAgICAgICAgIGRlbGV0ZVNlbGVjdGlvbldpdGhTbWFy
dERlbGV0ZShjYW5TbWFydENvcHlPckRlbGV0ZSgpKTsKICAgICAgICAgICAgIC8vIEltcGxpY2l0
bHkgY2FsbHMgcmV2ZWFsU2VsZWN0aW9uQWZ0ZXJFZGl0aW5nT3BlcmF0aW9uKCkuCiAgICAgICAg
IH0KQEAgLTM0OSw4ICszNDksOCBAQCBib29sIEVkaXRvcjo6ZGVsZXRlV2l0aERpcmVjdGlvbihT
ZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uLCBUZXh0R3JhbnVsYXJpdHkgZwogICAgICAgICBU
eXBpbmdDb21tYW5kOjpPcHRpb25zIG9wdGlvbnMgPSAwOwogICAgICAgICBpZiAoY2FuU21hcnRD
b3B5T3JEZWxldGUoKSkKICAgICAgICAgICAgIG9wdGlvbnMgfD0gVHlwaW5nQ29tbWFuZDo6U21h
cnREZWxldGU7Ci0gICAgICAgIGlmIChraWxsUmluZykKLSAgICAgICAgICAgIG9wdGlvbnMgfD0g
VHlwaW5nQ29tbWFuZDo6S2lsbFJpbmc7CisgICAgICAgIGlmIChzaG91bGRBZGRUb0tpbGxSaW5n
KQorICAgICAgICAgICAgb3B0aW9ucyB8PSBUeXBpbmdDb21tYW5kOjpBZGRzVG9LaWxsUmluZzsK
ICAgICAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKICAgICAgICAgY2FzZSBEaXJlY3Rpb25Gb3J3
YXJkOgogICAgICAgICBjYXNlIERpcmVjdGlvblJpZ2h0OgpAQCAtMzY3LDcgKzM2Nyw3IEBAIGJv
b2wgRWRpdG9yOjpkZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rp
b24sIFRleHRHcmFudWxhcml0eSBnCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0byBtb3ZlIHRo
aXMgZG93biBpbnRvIGRlbGV0ZUtleVByZXNzZWQuCiAgICAgLy8gY2xlYXIgdGhlICJzdGFydCBu
ZXcga2lsbCByaW5nIHNlcXVlbmNlIiBzZXR0aW5nLCBiZWNhdXNlIGl0IHdhcyBzZXQgdG8gdHJ1
ZQogICAgIC8vIHdoZW4gdGhlIHNlbGVjdGlvbiB3YXMgdXBkYXRlZCBieSBkZWxldGluZyB0aGUg
cmFuZ2UKLSAgICBpZiAoa2lsbFJpbmcpCisgICAgaWYgKHNob3VsZEFkZFRvS2lsbFJpbmcpCiAg
ICAgICAgIHNldFN0YXJ0TmV3S2lsbFJpbmdTZXF1ZW5jZShmYWxzZSk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTEwOTUsNyArMTA5NSw2IEBAIHZvaWQgRWRpdG9yOjpyZWFwcGxpZWRFZGl0aW5n
KFBhc3NSZWZQdHI8RWRpdENvbW1hbmRDb21wb3NpdGlvbj4gY21kKQogRWRpdG9yOjpFZGl0b3Io
RnJhbWUmIGZyYW1lKQogICAgIDogbV9mcmFtZShmcmFtZSkKICAgICAsIG1faWdub3JlQ29tcG9z
aXRpb25TZWxlY3Rpb25DaGFuZ2UoZmFsc2UpCi0gICAgLCBtX3Nob3VsZFN0YXJ0TmV3S2lsbFJp
bmdTZXF1ZW5jZShmYWxzZSkKICAgICAvLyBUaGlzIGlzIG9mZiBieSBkZWZhdWx0LCBzaW5jZSBt
b3N0IGVkaXRvcnMgd2FudCB0aGlzIGJlaGF2aW9yICh0aGlzIG1hdGNoZXMgSUUgYnV0IG5vdCBG
RikuCiAgICAgLCBtX3Nob3VsZFN0eWxlV2l0aENTUyhmYWxzZSkKICAgICAsIG1fa2lsbFJpbmco
c3RkOjptYWtlX3VuaXF1ZTxLaWxsUmluZz4oKSkKQEAgLTEzMzQsNyArMTMzMyw3IEBAIHZvaWQg
RWRpdG9yOjpwZXJmb3JtRGVsZXRlKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGFk
ZFRvS2lsbFJpbmcoc2VsZWN0ZWRSYW5nZSgpLmdldCgpLCBmYWxzZSk7CisgICAgYWRkUmFuZ2VU
b0tpbGxSaW5nKCpzZWxlY3RlZFJhbmdlKCkuZ2V0KCksIEtpbGxSaW5nSW5zZXJ0aW9uTW9kZTo6
QXBwZW5kVGV4dCk7CiAgICAgZGVsZXRlU2VsZWN0aW9uV2l0aFNtYXJ0RGVsZXRlKGNhblNtYXJ0
Q29weU9yRGVsZXRlKCkpOwogCiAgICAgLy8gY2xlYXIgdGhlICJzdGFydCBuZXcga2lsbCByaW5n
IHNlcXVlbmNlIiBzZXR0aW5nLCBiZWNhdXNlIGl0IHdhcyBzZXQgdG8gdHJ1ZQpAQCAtMjg0Nywx
NyArMjg0NiwyOSBAQCB2b2lkIEVkaXRvcjo6dHJhbnNwb3NlKCkKICAgICByZXBsYWNlU2VsZWN0
aW9uV2l0aFRleHQodHJhbnNwb3NlZCwgZmFsc2UsIGZhbHNlLCBFZGl0QWN0aW9uSW5zZXJ0KTsK
IH0KIAotdm9pZCBFZGl0b3I6OmFkZFRvS2lsbFJpbmcoUmFuZ2UqIHJhbmdlLCBib29sIHByZXBl
bmQpCit2b2lkIEVkaXRvcjo6YWRkUmFuZ2VUb0tpbGxSaW5nKGNvbnN0IFJhbmdlJiByYW5nZSwg
S2lsbFJpbmdJbnNlcnRpb25Nb2RlIG1vZGUpCit7CisgICAgYWRkVGV4dFRvS2lsbFJpbmcocGxh
aW5UZXh0KCZyYW5nZSksIG1vZGUpOworfQorCit2b2lkIEVkaXRvcjo6YWRkVGV4dFRvS2lsbFJp
bmcoY29uc3QgU3RyaW5nJiB0ZXh0LCBLaWxsUmluZ0luc2VydGlvbk1vZGUgbW9kZSkKIHsKICAg
ICBpZiAobV9zaG91bGRTdGFydE5ld0tpbGxSaW5nU2VxdWVuY2UpCiAgICAgICAgIGtpbGxSaW5n
KCkuc3RhcnROZXdTZXF1ZW5jZSgpOwogCi0gICAgU3RyaW5nIHRleHQgPSBwbGFpblRleHQocmFu
Z2UpOwotICAgIGlmIChwcmVwZW5kKQorICAgIG1fc2hvdWxkU3RhcnROZXdLaWxsUmluZ1NlcXVl
bmNlID0gZmFsc2U7CisKKyAgICAvLyBJZiB0aGUga2lsbCB3YXMgZnJvbSBhIGJhY2t3YXJkcyBt
b3Rpb24sIHByZXBlbmQgdG8gdGhlIGtpbGwgcmluZy4KKyAgICAvLyBUaGlzIHdpbGwgZW5zdXJl
IHRoYXQgYWx0ZXJuYXRpbmcgZm9yd2FyZCBhbmQgYmFja3dhcmQga2lsbHMgd2lsbAorICAgIC8v
IGJ1aWxkIHVwIHRoZSBvcmlnaW5hbCBzdHJpbmcgaW4gdGhlIGtpbGwgcmluZyB3aXRob3V0IHBl
cm11dGluZyBpdC4KKyAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICBjYXNlIEtpbGxSaW5nSW5zZXJ0
aW9uTW9kZTo6UHJlcGVuZFRleHQ6CiAgICAgICAgIGtpbGxSaW5nKCkucHJlcGVuZCh0ZXh0KTsK
LSAgICBlbHNlCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS2lsbFJpbmdJbnNlcnRpb25Nb2Rl
OjpBcHBlbmRUZXh0OgogICAgICAgICBraWxsUmluZygpLmFwcGVuZCh0ZXh0KTsKLSAgICBtX3No
b3VsZFN0YXJ0TmV3S2lsbFJpbmdTZXF1ZW5jZSA9IGZhbHNlOworICAgICAgICBicmVhazsKKyAg
ICB9CiB9CiAKIHZvaWQgRWRpdG9yOjpzdGFydEFsdGVybmF0aXZlVGV4dFVJVGltZXIoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggOWU2ZDc4MGNmYWNlODIwMDkyMWRjOWQ2YTRhY2U4NGNi
OTJiYjM0My4uYTY1Mjg3Yzc0MjAzNTk3ZTRiZmVmMjg3Y2EyZTAzMGRmZWE2NzU1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCkBAIC0zMTUsOCArMzE1LDYgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0SWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoYm9vbCwg
UmV2ZWFsU2VsZWN0aW9uIHNob3VsZFJldmVhbEV4aXN0aW5nU2VsZWN0aW9uID0gUmV2ZWFsU2Vs
ZWN0aW9uOjpZZXMpOwogICAgIGJvb2wgaWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2Uo
KSBjb25zdCB7IHJldHVybiBtX2lnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlOyB9CiAK
LSAgICB2b2lkIHNldFN0YXJ0TmV3S2lsbFJpbmdTZXF1ZW5jZShib29sKTsKLQogICAgIFdFQkNP
UkVfRVhQT1JUIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUG9pbnQoY29uc3QgSW50UG9pbnQm
IHdpbmRvd1BvaW50KTsKIAogICAgIHZvaWQgY2xlYXIoKTsKQEAgLTMzOCw3ICszMzYsMTAgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RGljdGF0aW9uUGhyYXNlc0FzQ2hp
bGRPZkVsZW1lbnQoY29uc3QgVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiYgZGljdGF0aW9uUGhyYXNl
cywgUmV0YWluUHRyPGlkPiBtZXRhZGF0YSwgRWxlbWVudCYpOwogI2VuZGlmCiAgICAgCi0gICAg
dm9pZCBhZGRUb0tpbGxSaW5nKFJhbmdlKiwgYm9vbCBwcmVwZW5kKTsKKyAgICBlbnVtIGNsYXNz
IEtpbGxSaW5nSW5zZXJ0aW9uTW9kZSB7IFByZXBlbmRUZXh0LCBBcHBlbmRUZXh0IH07CisgICAg
dm9pZCBhZGRSYW5nZVRvS2lsbFJpbmcoY29uc3QgUmFuZ2UmLCBLaWxsUmluZ0luc2VydGlvbk1v
ZGUpOworICAgIHZvaWQgYWRkVGV4dFRvS2lsbFJpbmcoY29uc3QgU3RyaW5nJiwgS2lsbFJpbmdJ
bnNlcnRpb25Nb2RlKTsKKyAgICB2b2lkIHNldFN0YXJ0TmV3S2lsbFJpbmdTZXF1ZW5jZShib29s
KTsKIAogICAgIHZvaWQgc3RhcnRBbHRlcm5hdGl2ZVRleHRVSVRpbWVyKCk7CiAgICAgLy8gSWYg
dXNlciBjb25maXJtZWQgYSBjb3JyZWN0aW9uIGluIHRoZSBjb3JyZWN0aW9uIHBhbmVsLCBjb3Jy
ZWN0aW9uIGhhcyBub24temVybyBsZW5ndGgsIG90aGVyd2lzZSBpdCBtZWFucyB0aGF0IHVzZXIg
aGFzIGRpc21pc3NlZCB0aGUgcGFuZWwuCkBAIC01MDEsNyArNTAyLDcgQEAgcHJpdmF0ZToKICAg
ICB1bnNpZ25lZCBtX2NvbXBvc2l0aW9uRW5kOwogICAgIFZlY3RvcjxDb21wb3NpdGlvblVuZGVy
bGluZT4gbV9jdXN0b21Db21wb3NpdGlvblVuZGVybGluZXM7CiAgICAgYm9vbCBtX2lnbm9yZUNv
bXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlOwotICAgIGJvb2wgbV9zaG91bGRTdGFydE5ld0tpbGxS
aW5nU2VxdWVuY2U7CisgICAgYm9vbCBtX3Nob3VsZFN0YXJ0TmV3S2lsbFJpbmdTZXF1ZW5jZSB7
ZmFsc2V9OwogICAgIGJvb2wgbV9zaG91bGRTdHlsZVdpdGhDU1M7CiAgICAgY29uc3Qgc3RkOjp1
bmlxdWVfcHRyPEtpbGxSaW5nPiBtX2tpbGxSaW5nOwogICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0
cjxTcGVsbENoZWNrZXI+IG1fc3BlbGxDaGVja2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlw
aW5nQ29tbWFuZC5jcHAKaW5kZXggZjA3NDQ0OGE2OWUyZWMwMmYwM2IxZDk0ZWEyNjIyNzBmYjgz
MGQ4Ny4uODAxYjUzZmRmOGE2NzdiY2NlYzJlZDgzOTM1ZjBmOTlmZTM1MmVjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCkBAIC04Myw3ICs4Myw3IEBAIFR5cGlu
Z0NvbW1hbmQ6OlR5cGluZ0NvbW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBFVHlwaW5nQ29tbWFu
ZCBjb21tYW5kVHlwZSwgY29uCiAgICAgLCBtX3NtYXJ0RGVsZXRlKG9wdGlvbnMgJiBTbWFydERl
bGV0ZSkKICAgICAsIG1fZ3JhbnVsYXJpdHkoZ3JhbnVsYXJpdHkpCiAgICAgLCBtX2NvbXBvc2l0
aW9uVHlwZShjb21wb3NpdGlvblR5cGUpCi0gICAgLCBtX2tpbGxSaW5nKG9wdGlvbnMgJiBLaWxs
UmluZykKKyAgICAsIG1fc2hvdWxkQWRkVG9LaWxsUmluZyhvcHRpb25zICYgQWRkc1RvS2lsbFJp
bmcpCiAgICAgLCBtX29wZW5lZEJ5QmFja3dhcmREZWxldGUoZmFsc2UpCiAgICAgLCBtX3Nob3Vs
ZFJldGFpbkF1dG9jb3JyZWN0aW9uSW5kaWNhdG9yKG9wdGlvbnMgJiBSZXRhaW5BdXRvY29ycmVj
dGlvbkluZGljYXRvcikKICAgICAsIG1fc2hvdWxkUHJldmVudFNwZWxsQ2hlY2tpbmcob3B0aW9u
cyAmIFByZXZlbnRTcGVsbENoZWNraW5nKQpAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgVHlwaW5n
Q29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChEb2N1bWVudCYgZG9jdW1lbnQsIE9wdGlvbnMgb3B0
aW9ucywgVGV4dEdyCiAgICAgICAgIGlmIChSZWZQdHI8VHlwaW5nQ29tbWFuZD4gbGFzdFR5cGlu
Z0NvbW1hbmQgPSBsYXN0VHlwaW5nQ29tbWFuZElmU3RpbGxPcGVuRm9yVHlwaW5nKGRvY3VtZW50
LmZyYW1lKCkpKSB7CiAgICAgICAgICAgICB1cGRhdGVTZWxlY3Rpb25JZkRpZmZlcmVudEZyb21D
dXJyZW50U2VsZWN0aW9uKGxhc3RUeXBpbmdDb21tYW5kLmdldCgpLCBkb2N1bWVudC5mcmFtZSgp
KTsKICAgICAgICAgICAgIGxhc3RUeXBpbmdDb21tYW5kLT5zZXRTaG91bGRQcmV2ZW50U3BlbGxD
aGVja2luZyhvcHRpb25zICYgUHJldmVudFNwZWxsQ2hlY2tpbmcpOwotICAgICAgICAgICAgbGFz
dFR5cGluZ0NvbW1hbmQtPmRlbGV0ZUtleVByZXNzZWQoZ3JhbnVsYXJpdHksIG9wdGlvbnMgJiBL
aWxsUmluZyk7CisgICAgICAgICAgICBsYXN0VHlwaW5nQ29tbWFuZC0+ZGVsZXRlS2V5UHJlc3Nl
ZChncmFudWxhcml0eSwgb3B0aW9ucyAmIEFkZHNUb0tpbGxSaW5nKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFR5cGluZ0Nv
bW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKERvY3VtZW50JiBkb2N1bWVudCwgT3B0aW9u
cyBvcHRpb25zLAogICAgICAgICBpZiAoUmVmUHRyPFR5cGluZ0NvbW1hbmQ+IGxhc3RUeXBpbmdD
b21tYW5kID0gbGFzdFR5cGluZ0NvbW1hbmRJZlN0aWxsT3BlbkZvclR5cGluZyhmcmFtZSkpIHsK
ICAgICAgICAgICAgIHVwZGF0ZVNlbGVjdGlvbklmRGlmZmVyZW50RnJvbUN1cnJlbnRTZWxlY3Rp
b24obGFzdFR5cGluZ0NvbW1hbmQuZ2V0KCksIGZyYW1lKTsKICAgICAgICAgICAgIGxhc3RUeXBp
bmdDb21tYW5kLT5zZXRTaG91bGRQcmV2ZW50U3BlbGxDaGVja2luZyhvcHRpb25zICYgUHJldmVu
dFNwZWxsQ2hlY2tpbmcpOwotICAgICAgICAgICAgbGFzdFR5cGluZ0NvbW1hbmQtPmZvcndhcmRE
ZWxldGVLZXlQcmVzc2VkKGdyYW51bGFyaXR5LCBvcHRpb25zICYgS2lsbFJpbmcpOworICAgICAg
ICAgICAgbGFzdFR5cGluZ0NvbW1hbmQtPmZvcndhcmREZWxldGVLZXlQcmVzc2VkKGdyYW51bGFy
aXR5LCBvcHRpb25zICYgQWRkc1RvS2lsbFJpbmcpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgfQpAQCAtMjYzLDEwICsyNjMsMTAgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpk
b0FwcGx5KCkKICAgICAgICAgZGVsZXRlU2VsZWN0aW9uKG1fc21hcnREZWxldGUpOwogICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBEZWxldGVLZXk6Ci0gICAgICAgIGRlbGV0ZUtleVByZXNzZWQo
bV9ncmFudWxhcml0eSwgbV9raWxsUmluZyk7CisgICAgICAgIGRlbGV0ZUtleVByZXNzZWQobV9n
cmFudWxhcml0eSwgbV9zaG91bGRBZGRUb0tpbGxSaW5nKTsKICAgICAgICAgcmV0dXJuOwogICAg
IGNhc2UgRm9yd2FyZERlbGV0ZUtleToKLSAgICAgICAgZm9yd2FyZERlbGV0ZUtleVByZXNzZWQo
bV9ncmFudWxhcml0eSwgbV9raWxsUmluZyk7CisgICAgICAgIGZvcndhcmREZWxldGVLZXlQcmVz
c2VkKG1fZ3JhbnVsYXJpdHksIG1fc2hvdWxkQWRkVG9LaWxsUmluZyk7CiAgICAgICAgIHJldHVy
bjsKICAgICBjYXNlIEluc2VydExpbmVCcmVhazoKICAgICAgICAgaW5zZXJ0TGluZUJyZWFrKCk7
CkBAIC00MzMsNyArNDMzLDcgQEAgYm9vbCBUeXBpbmdDb21tYW5kOjptYWtlRWRpdGFibGVSb290
RW1wdHkoKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFR5cGluZ0NvbW1hbmQ6OmRlbGV0
ZUtleVByZXNzZWQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGtpbGxSaW5nKQor
dm9pZCBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKFRleHRHcmFudWxhcml0eSBncmFu
dWxhcml0eSwgYm9vbCBzaG91bGRBZGRUb0tpbGxSaW5nKQogewogICAgIEZyYW1lJiBmcmFtZSA9
IHRoaXMtPmZyYW1lKCk7CiAKQEAgLTQ1OCw3ICs0NTgsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6
OmRlbGV0ZUtleVByZXNzZWQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGtpbGxS
aW5nKQogICAgICAgICBGcmFtZVNlbGVjdGlvbiBzZWxlY3Rpb247CiAgICAgICAgIHNlbGVjdGlv
bi5zZXRTZWxlY3Rpb24oZW5kaW5nU2VsZWN0aW9uKCkpOwogICAgICAgICBzZWxlY3Rpb24ubW9k
aWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwg
Z3JhbnVsYXJpdHkpOwotICAgICAgICBpZiAoa2lsbFJpbmcgJiYgc2VsZWN0aW9uLmlzQ2FyZXQo
KSAmJiBncmFudWxhcml0eSAhPSBDaGFyYWN0ZXJHcmFudWxhcml0eSkKKyAgICAgICAgaWYgKHNo
b3VsZEFkZFRvS2lsbFJpbmcgJiYgc2VsZWN0aW9uLmlzQ2FyZXQoKSAmJiBncmFudWxhcml0eSAh
PSBDaGFyYWN0ZXJHcmFudWxhcml0eSkKICAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoRnJh
bWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0
ZXJHcmFudWxhcml0eSk7CiAKICAgICAgICAgaWYgKGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVT
dGFydCgpLnByZXZpb3VzKENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KS5pc051bGwoKSkgewpA
QCAtNTMwLDggKzUzMCw4IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChU
ZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wga2lsbFJpbmcpCiAgICAgaWYgKHNlbGVj
dGlvblRvRGVsZXRlLmlzQ2FyZXQoKSB8fCAhZnJhbWUuc2VsZWN0aW9uKCkuc2hvdWxkRGVsZXRl
U2VsZWN0aW9uKHNlbGVjdGlvblRvRGVsZXRlKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAg
IGlmIChraWxsUmluZykKLSAgICAgICAgZnJhbWUuZWRpdG9yKCkuYWRkVG9LaWxsUmluZyhzZWxl
Y3Rpb25Ub0RlbGV0ZS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBmYWxzZSk7CisgICAgaWYg
KHNob3VsZEFkZFRvS2lsbFJpbmcpCisgICAgICAgIGZyYW1lLmVkaXRvcigpLmFkZFJhbmdlVG9L
aWxsUmluZygqc2VsZWN0aW9uVG9EZWxldGUudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgRWRp
dG9yOjpLaWxsUmluZ0luc2VydGlvbk1vZGU6OlByZXBlbmRUZXh0KTsKICAgICAvLyBNYWtlIHVu
ZG8gc2VsZWN0IGV2ZXJ5dGhpbmcgdGhhdCBoYXMgYmVlbiBkZWxldGVkLCB1bmxlc3MgYW4gdW5k
byB3aWxsIHVuZG8gbW9yZSB0aGFuIGp1c3QgdGhpcyBkZWxldGlvbi4KICAgICAvLyBGSVhNRTog
VGhpcyBiZWhhdmVzIGxpa2UgVGV4dEVkaXQgZXhjZXB0IGZvciB0aGUgY2FzZSB3aGVyZSB5b3Ug
b3BlbiB3aXRoIHRleHQgaW5zZXJ0aW9uIGFuZCB0aGVuIGRlbGV0ZQogICAgIC8vIG1vcmUgdGV4
dCB0aGFuIHlvdSBpbnNlcnQuICBJbiB0aGF0IGNhc2UgYWxsIG9mIHRoZSB0ZXh0IHRoYXQgd2Fz
IGFyb3VuZCBvcmlnaW5hbGx5IHNob3VsZCBiZSBzZWxlY3RlZC4KQEAgLTU0Miw3ICs1NDIsNyBA
QCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQoVGV4dEdyYW51bGFyaXR5IGdy
YW51bGFyaXR5LCBib29sIGtpbGxSaW5nKQogICAgIHR5cGluZ0FkZGVkVG9PcGVuQ29tbWFuZChE
ZWxldGVLZXkpOwogfQogCi12b2lkIFR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVz
c2VkKFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBraWxsUmluZykKK3ZvaWQgVHlw
aW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQoVGV4dEdyYW51bGFyaXR5IGdyYW51
bGFyaXR5LCBib29sIHNob3VsZEFkZFRvS2lsbFJpbmcpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0g
dGhpcy0+ZnJhbWUoKTsKIApAQCAtNTY1LDcgKzU2NSw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6
Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29s
IGtpCiAgICAgICAgIEZyYW1lU2VsZWN0aW9uIHNlbGVjdGlvbjsKICAgICAgICAgc2VsZWN0aW9u
LnNldFNlbGVjdGlvbihlbmRpbmdTZWxlY3Rpb24oKSk7CiAgICAgICAgIHNlbGVjdGlvbi5tb2Rp
ZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkZvcndhcmQsIGdy
YW51bGFyaXR5KTsKLSAgICAgICAgaWYgKGtpbGxSaW5nICYmIHNlbGVjdGlvbi5pc0NhcmV0KCkg
JiYgZ3JhbnVsYXJpdHkgIT0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpCisgICAgICAgIGlmIChzaG91
bGRBZGRUb0tpbGxSaW5nICYmIHNlbGVjdGlvbi5pc0NhcmV0KCkgJiYgZ3JhbnVsYXJpdHkgIT0g
Q2hhcmFjdGVyR3JhbnVsYXJpdHkpCiAgICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KEZyYW1l
U2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJH
cmFudWxhcml0eSk7CiAKICAgICAgICAgUG9zaXRpb24gZG93bnN0cmVhbUVuZCA9IGVuZGluZ1Nl
bGVjdGlvbigpLmVuZCgpLmRvd25zdHJlYW0oKTsKQEAgLTYyOCw4ICs2MjgsOCBAQCB2b2lkIFR5
cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKFRleHRHcmFudWxhcml0eSBncmFu
dWxhcml0eSwgYm9vbCBraQogICAgIGlmIChzZWxlY3Rpb25Ub0RlbGV0ZS5pc0NhcmV0KCkgfHwg
IWZyYW1lLnNlbGVjdGlvbigpLnNob3VsZERlbGV0ZVNlbGVjdGlvbihzZWxlY3Rpb25Ub0RlbGV0
ZSkpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgaWYgKGtpbGxSaW5nKQotICAgICAg
ICBmcmFtZS5lZGl0b3IoKS5hZGRUb0tpbGxSaW5nKHNlbGVjdGlvblRvRGVsZXRlLnRvTm9ybWFs
aXplZFJhbmdlKCkuZ2V0KCksIGZhbHNlKTsKKyAgICBpZiAoc2hvdWxkQWRkVG9LaWxsUmluZykK
KyAgICAgICAgZnJhbWUuZWRpdG9yKCkuYWRkUmFuZ2VUb0tpbGxSaW5nKCpzZWxlY3Rpb25Ub0Rl
bGV0ZS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBFZGl0b3I6OktpbGxSaW5nSW5zZXJ0aW9u
TW9kZTo6QXBwZW5kVGV4dCk7CiAgICAgLy8gbWFrZSB1bmRvIHNlbGVjdCB3aGF0IHdhcyBkZWxl
dGVkCiAgICAgc2V0U3RhcnRpbmdTZWxlY3Rpb24oc2VsZWN0aW9uQWZ0ZXJVbmRvKTsKICAgICBD
b21wb3NpdGVFZGl0Q29tbWFuZDo6ZGVsZXRlU2VsZWN0aW9uKHNlbGVjdGlvblRvRGVsZXRlLCBt
X3NtYXJ0RGVsZXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5n
Q29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmgKaW5kZXgg
ZWFiODI0MmE5ZmJiMWNlOTZhMjUzN2IzMTFiZmRiOTQ0MTBiMGI3MS4uN2YzNDkyZmJlMTBlOTg2
ZmFlZjllYjM2M2NlNmYyNzYyNTNiNDkwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UeXBpbmdDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdD
b21tYW5kLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogCiAgICAgZW51bSBPcHRpb24gewog
ICAgICAgICBTZWxlY3RJbnNlcnRlZFRleHQgPSAxIDw8IDAsCi0gICAgICAgIEtpbGxSaW5nID0g
MSA8PCAxLAorICAgICAgICBBZGRzVG9LaWxsUmluZyA9IDEgPDwgMSwKICAgICAgICAgUmV0YWlu
QXV0b2NvcnJlY3Rpb25JbmRpY2F0b3IgPSAxIDw8IDIsCiAgICAgICAgIFByZXZlbnRTcGVsbENo
ZWNraW5nID0gMSA8PCAzLAogICAgICAgICBTbWFydERlbGV0ZSA9IDEgPDwgNApAQCAtNzUsOCAr
NzUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnNlcnRMaW5lQnJlYWsoKTsKICAgICB2b2lkIGlu
c2VydFBhcmFncmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVudCgpOwogICAgIHZvaWQgaW5zZXJ0
UGFyYWdyYXBoU2VwYXJhdG9yKCk7Ci0gICAgdm9pZCBkZWxldGVLZXlQcmVzc2VkKFRleHRHcmFu
dWxhcml0eSwgYm9vbCBraWxsUmluZyk7Ci0gICAgdm9pZCBmb3J3YXJkRGVsZXRlS2V5UHJlc3Nl
ZChUZXh0R3JhbnVsYXJpdHksIGJvb2wga2lsbFJpbmcpOworICAgIHZvaWQgZGVsZXRlS2V5UHJl
c3NlZChUZXh0R3JhbnVsYXJpdHksIGJvb2wgc2hvdWxkQWRkVG9LaWxsUmluZyk7CisgICAgdm9p
ZCBmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZChUZXh0R3JhbnVsYXJpdHksIGJvb2wgc2hvdWxkQWRk
VG9LaWxsUmluZyk7CiAgICAgdm9pZCBkZWxldGVTZWxlY3Rpb24oYm9vbCBzbWFydERlbGV0ZSk7
CiAgICAgdm9pZCBzZXRDb21wb3NpdGlvblR5cGUoVGV4dENvbXBvc2l0aW9uVHlwZSB0eXBlKSB7
IG1fY29tcG9zaXRpb25UeXBlID0gdHlwZTsgfQogCkBAIC0xMzEsNyArMTMxLDcgQEAgcHJpdmF0
ZToKICAgICBib29sIG1fc21hcnREZWxldGU7CiAgICAgVGV4dEdyYW51bGFyaXR5IG1fZ3JhbnVs
YXJpdHk7CiAgICAgVGV4dENvbXBvc2l0aW9uVHlwZSBtX2NvbXBvc2l0aW9uVHlwZTsKLSAgICBi
b29sIG1fa2lsbFJpbmc7CisgICAgYm9vbCBtX3Nob3VsZEFkZFRvS2lsbFJpbmc7CiAgICAgYm9v
bCBtX3ByZXNlcnZlc1R5cGluZ1N0eWxlOwogICAgIAogICAgIC8vIFVuZG9pbmcgYSBzZXJpZXMg
b2YgYmFja3dhcmQgZGVsZXRlcyB3aWxsIHJlc3RvcmUgYSBzZWxlY3Rpb24gYXJvdW5kIGFsbCBv
ZiB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LaWxsUmluZ01h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LaWxsUmluZ01hYy5tbQppbmRleCAx
MDE1MDcwOGEzOTgzMTRlOTA2ZDg3N2ExYzkwOTZhZWI3ZjkyNTkzLi5hMTM1MzRjMzJiYWFkMGNi
ZTE3MjlmYWE4MWE2OWIxOTJjM2VmOTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvS2lsbFJpbmdNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0tpbGxSaW5nTWFjLm1tCkBAIC0zOCw2ICszOCw3IEBAIHZvaWQgX05TUHJlcGVuZFRvS2lsbFJp
bmcoTlNTdHJpbmcgKik7CiBOU1N0cmluZyAqX05TWWFua0Zyb21LaWxsUmluZygpOwogdm9pZCBf
TlNOZXdLaWxsUmluZ1NlcXVlbmNlKCk7CiB2b2lkIF9OU1NldEtpbGxSaW5nVG9ZYW5rZWRTdGF0
ZSgpOwordm9pZCBfTlNSZXNldEtpbGxSaW5nT3BlcmF0aW9uRmxhZygpOwogCiB9CiAKQEAgLTUz
LDEyICs1NCwxNiBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplS2lsbFJpbmdJZk5lZWRlZCgpCiB2
b2lkIEtpbGxSaW5nOjphcHBlbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgaW5pdGlh
bGl6ZUtpbGxSaW5nSWZOZWVkZWQoKTsKKyAgICAvLyBOZWNlc3NhcnkgdG8gcHJldmVudCBhbiBp
bXBsaWNpdCBuZXcgc2VxdWVuY2UgaWYgdGhlIHByZXZpb3VzIGNvbW1hbmQgd2FzIE5TUHJlcGVu
ZFRvS2lsbFJpbmcuCisgICAgX05TUmVzZXRLaWxsUmluZ09wZXJhdGlvbkZsYWcoKTsKICAgICBf
TlNBcHBlbmRUb0tpbGxSaW5nKHN0cmluZyk7CiB9CiAKIHZvaWQgS2lsbFJpbmc6OnByZXBlbmQo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgaW5pdGlhbGl6ZUtpbGxSaW5nSWZOZWVkZWQo
KTsKKyAgICAvLyBOZWNlc3NhcnkgdG8gcHJldmVudCBhbiBpbXBsaWNpdCBuZXcgc2VxdWVuY2Ug
aWYgdGhlIHByZXZpb3VzIGNvbW1hbmQgd2FzIE5TQXBwZW5kVG9LaWxsUmluZy4KKyAgICBfTlNS
ZXNldEtpbGxSaW5nT3BlcmF0aW9uRmxhZygpOwogICAgIF9OU1ByZXBlbmRUb0tpbGxSaW5nKHN0
cmluZyk7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCAxMDUyMzMxMmUxNTFkNzc5NzkwZTdiNjM3NWFkZjE5ZWM5MDk2
Yjk0Li4yYjI3ZjhjOWRlYTUyNGU2MTgyZjQ4MjI1NTg1ZTBmY2JlNDc0YTE1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTUtMTEtMTkgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgUkVHUkVTU0lPTihyODc4MCk6IEJhY2t3YXJkcyBkZWxldGUgYnkgd29yZCBpbmNv
cnJlY3RseSBhcHBlbmRzIGRlbGV0ZWQgdGV4dCB0byBraWxsIHJpbmcsIHNob3VsZCBiZSBwcmVw
ZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTEz
MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGVk
aXRpbmcvcGFzdGVib2FyZC9lbWFjcy1raWxscmluZy1hbHRlcm5hdGluZy1hcHBlbmQtcHJlcGVu
ZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9lbWFj
cy1raWxscmluZy1hbHRlcm5hdGluZy1hcHBlbmQtcHJlcGVuZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvZW1hY3Mta2lsbHJpbmctYmFja3dhcmQtZGVsZXRlLXBy
ZXBlbmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQv
ZW1hY3Mta2lsbHJpbmctYmFja3dhcmQtZGVsZXRlLXByZXBlbmQuaHRtbDogQWRkZWQuCisKIDIw
MTUtMTEtMTggIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogU3RvcmFnZSB0YWIgc2hvdWxkbid0IGhpZGUgY29va2llcyBmb3IgLmV4YW1wbGUu
Y29tIHdoZW4gaW5zcGVjdGVkIHBhZ2UgaXMgZm9vLmJhci5leGFtcGxlLmNvbQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2VtYWNzLWtpbGxyaW5nLWFsdGVybmF0
aW5nLWFwcGVuZC1wcmVwZW5kLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC9lbWFjcy1raWxscmluZy1hbHRlcm5hdGluZy1hcHBlbmQtcHJlcGVuZC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjYwZWJlODAzODIyZWIxOWYxOTRiYzc1ZmQ2MzA0YmExODA1MDI2
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9lbWFj
cy1raWxscmluZy1hbHRlcm5hdGluZy1hcHBlbmQtcHJlcGVuZC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw0IEBACitUZXN0IGZvciBidWcgMTUxMzAwOiBCYWNrd2FyZHMgZGVsZXRlIGJ5IHdvcmQg
aW5jb3JyZWN0bHkgYXBwZW5kcyBkZWxldGVkIHRleHQgdG8ga2lsbCByaW5nLCBzaG91bGQgYmUg
cHJlcGVuZC4KKworb25lIHR3b8KgdGhyZWUKK0V4cGVjdGVkIHJlc3VsdDogb25lIHR3byB0aHJl
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2VtYWNzLWtpbGxy
aW5nLWFsdGVybmF0aW5nLWFwcGVuZC1wcmVwZW5kLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3Bhc3RlYm9hcmQvZW1hY3Mta2lsbHJpbmctYWx0ZXJuYXRpbmctYXBwZW5kLXByZXBlbmQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZDE1NGU5ZjUxMjI5NzRmMzM3MmYwYjZlMzQwY2EyNTU4ZDE3NzI0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2VtYWNzLWtp
bGxyaW5nLWFsdGVybmF0aW5nLWFwcGVuZC1wcmVwZW5kLmh0bWwKQEAgLTAsMCArMSwyNSBAQAor
PHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MTMwMCI+YnVnIDE1MTMwMDwvYT46CitCYWNrd2FyZHMgZGVsZXRlIGJ5IHdvcmQgaW5j
b3JyZWN0bHkgYXBwZW5kcyBkZWxldGVkIHRleHQgdG8ga2lsbCByaW5nLCBzaG91bGQgYmUgcHJl
cGVuZC48L3A+CisKKzxkaXYgY29udGVudGVkaXRhYmxlIGlkPWNlPgorb25lIHR3byB0aHJlZQor
PC9kaXY+CisKKzxkaXY+CitFeHBlY3RlZCByZXN1bHQ6CitvbmUgdHdvIHRocmVlCis8L2Rpdj4K
KworPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjZSIpLmZvY3VzKCk7Cisg
ICAgdGVzdFJ1bm5lci5leGVjQ29tbWFuZCgiTW92ZVdvcmRGb3J3YXJkIik7CisgICAgdGVzdFJ1
bm5lci5leGVjQ29tbWFuZCgiTW92ZVdvcmRGb3J3YXJkIik7CisgICAgdGVzdFJ1bm5lci5leGVj
Q29tbWFuZCgiRGVsZXRlV29yZEJhY2t3YXJkIik7CisgICAgdGVzdFJ1bm5lci5leGVjQ29tbWFu
ZCgiRGVsZXRlV29yZEJhY2t3YXJkIik7CisgICAgdGVzdFJ1bm5lci5leGVjQ29tbWFuZCgiRGVs
ZXRlV29yZEZvcndhcmQiKTsKKyAgICB0ZXN0UnVubmVyLmV4ZWNDb21tYW5kKCJZYW5rIik7Cit9
IGVsc2UKKyAgICBkb2N1bWVudC53cml0ZSgiVGhpcyB0ZXN0IG9ubHkgcnVucyBpbiBhdXRvbWF0
aWMgbW9kZSIpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bh
c3RlYm9hcmQvZW1hY3Mta2lsbHJpbmctYmFja3dhcmQtZGVsZXRlLXByZXBlbmQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2VtYWNzLWtpbGxyaW5nLWJhY2t3
YXJkLWRlbGV0ZS1wcmVwZW5kLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OWQyNzllZjkzMGYz
MmE1MzY2NWU4OWY5ZTc1YTQ3ODRiMTljNDhiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9wYXN0ZWJvYXJkL2VtYWNzLWtpbGxyaW5nLWJhY2t3YXJkLWRlbGV0ZS1wcmVw
ZW5kLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK1Rlc3QgZm9yIGJ1ZyAxNTEzMDA6IEJh
Y2t3YXJkcyBkZWxldGUgYnkgd29yZCBpbmNvcnJlY3RseSBhcHBlbmRzIGRlbGV0ZWQgdGV4dCB0
byBraWxsIHJpbmcsIHNob3VsZCBiZSBwcmVwZW5kLgorCitUaGlzIHRlc3QgY2hlY2tzIHRoYXQg
YmFja3dhcmRzIGRlbGV0ZS1ieS13b3JkIHByZXBlbmRzIHRvIHRoZSBraWxsIHJpbmcuCisKK29u
ZcKgdHdvwqB0aHJlZQorRXhwZWN0ZWQgcmVzdWx0OiBvbmUgdHdvIHRocmVlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZW1hY3Mta2lsbHJpbmctYmFja3dhcmQt
ZGVsZXRlLXByZXBlbmQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9lbWFj
cy1raWxscmluZy1iYWNrd2FyZC1kZWxldGUtcHJlcGVuZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5ZmRh
N2JhZjQzNTlmZDAxNzljZjkyMDQ5OWI3NjhmNzAxNjc3MjUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZW1hY3Mta2lsbHJpbmctYmFja3dhcmQtZGVs
ZXRlLXByZXBlbmQuaHRtbApAQCAtMCwwICsxLDI1IEBACis8cD5UZXN0IGZvciA8YSBocmVmPSJo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxMzAwIj5idWcgMTUxMzAw
PC9hPjoKK0JhY2t3YXJkcyBkZWxldGUgYnkgd29yZCBpbmNvcnJlY3RseSBhcHBlbmRzIGRlbGV0
ZWQgdGV4dCB0byBraWxsIHJpbmcsIHNob3VsZCBiZSBwcmVwZW5kLjwvcD4KKzxwPlRoaXMgdGVz
dCBjaGVja3MgdGhhdCBiYWNrd2FyZHMgZGVsZXRlLWJ5LXdvcmQgcHJlcGVuZHMgdG8gdGhlIGtp
bGwgcmluZy48L3A+CisKKzxkaXYgY29udGVudGVkaXRhYmxlIGlkPWNlPgorb25lIHR3byB0aHJl
ZQorPC9kaXY+CisKKzxkaXY+CitFeHBlY3RlZCByZXN1bHQ6CitvbmUgdHdvIHRocmVlCis8L2Rp
dj4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjZSIpLmZvY3VzKCk7
CisgICAgdGVzdFJ1bm5lci5leGVjQ29tbWFuZCgiTW92ZVRvRW5kT2ZMaW5lIik7CisgICAgdGVz
dFJ1bm5lci5leGVjQ29tbWFuZCgiRGVsZXRlV29yZEJhY2t3YXJkIik7CisgICAgdGVzdFJ1bm5l
ci5leGVjQ29tbWFuZCgiRGVsZXRlV29yZEJhY2t3YXJkIik7CisgICAgdGVzdFJ1bm5lci5leGVj
Q29tbWFuZCgiRGVsZXRlV29yZEJhY2t3YXJkIik7CisgICAgdGVzdFJ1bm5lci5leGVjQ29tbWFu
ZCgiWWFuayIpOworfSBlbHNlCisgICAgZG9jdW1lbnQud3JpdGUoIlRoaXMgdGVzdCBvbmx5IHJ1
bnMgaW4gYXV0b21hdGljIG1vZGUiKTsKKzwvc2NyaXB0Pgo=
</data>
<flag name="commit-queue"
          id="290897"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>