<?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>75054</bug_id>
          
          <creation_ts>2011-12-21 16:42:19 -0800</creation_ts>
          <short_desc>Minimize callsites and duplication of before/after advice for attribute mutations</short_desc>
          <delta_ts>2011-12-23 01:12:50 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Klein">adamk</reporter>
          <assigned_to name="Adam Klein">adamk</assigned_to>
          <cc>darin</cc>
    
    <cc>pfeldman</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>525833</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-12-21 16:42:19 -0800</bug_when>
    <thetext>Minimize callsites and duplication of before/after advice for attribute mutations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525844</commentid>
    <comment_count>1</comment_count>
      <attachid>120243</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-12-21 16:53:04 -0800</bug_when>
    <thetext>Created attachment 120243
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525848</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-21 17:01:17 -0800</bug_when>
    <thetext>Attachment 120243 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
First, rewinding head to replay your work on top of it...
Applying: Inform the scrolling coordinator when scrollbar layers come and go
Using index info to reconstruct a base tree...
&lt;stdin&gt;:474806: trailing whitespace.
        [Chromium] DatabaseTrackerChromium: iterating DatabaseSet races with Database disposal on worker thread 
&lt;stdin&gt;:474827: trailing whitespace.
        Nothing to test, just removing redundant code. Correct behavior tested by 
&lt;stdin&gt;:475346: trailing whitespace.
    
warning: 3 lines add whitespace errors.
Falling back to patching base and 3-way merge...
warning: too many files (created: 167522 deleted: 3), skipping inexact rename detection
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging LayoutTests/platform/chromium/test_expectations.txt
CONFLICT (content): Merge conflict in LayoutTests/platform/chromium/test_expectations.txt
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Auto-merging Source/WebCore/page/ScrollingCoordinator.h
CONFLICT (content): Merge conflict in Source/WebCore/page/ScrollingCoordinator.h
Auto-merging Source/WebCore/page/mac/ScrollingCoordinatorMac.mm
CONFLICT (content): Merge conflict in Source/WebCore/page/mac/ScrollingCoordinatorMac.mm
Auto-merging Source/WebCore/platform/ScrollView.cpp
Auto-merging Source/WebCore/rendering/RenderLayerCompositor.cpp
CONFLICT (content): Merge conflict in Source/WebCore/rendering/RenderLayerCompositor.cpp
Auto-merging Source/WebKit2/ChangeLog
CONFLICT (content): Merge conflict in Source/WebKit2/ChangeLog
Auto-merging Tools/ChangeLog
CONFLICT (content): Merge conflict in Tools/ChangeLog
Auto-merging Tools/Scripts/build-webkit
Auto-merging Tools/Scripts/webkitdirs.pm
CONFLICT (content): Merge conflict in Tools/Scripts/webkitdirs.pm
Failed to merge in the changes.
Patch failed at 0001 Inform the scrolling coordinator when scrollbar layers come and go

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 158.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525864</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-12-21 17:19:18 -0800</bug_when>
    <thetext>fwiw, patch failures are due to r103473 which is being rolled out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525896</commentid>
    <comment_count>4</comment_count>
      <attachid>120251</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-12-21 18:01:36 -0800</bug_when>
    <thetext>Created attachment 120251
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525903</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-21 18:13:22 -0800</bug_when>
    <thetext>Attachment 120251 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
First, rewinding head to replay your work on top of it...
Applying: Inform the scrolling coordinator when scrollbar layers come and go
Using index info to reconstruct a base tree...
&lt;stdin&gt;:474806: trailing whitespace.
        [Chromium] DatabaseTrackerChromium: iterating DatabaseSet races with Database disposal on worker thread 
&lt;stdin&gt;:474827: trailing whitespace.
        Nothing to test, just removing redundant code. Correct behavior tested by 
&lt;stdin&gt;:475346: trailing whitespace.
    
warning: 3 lines add whitespace errors.
Falling back to patching base and 3-way merge...
warning: too many files (created: 167534 deleted: 3), skipping inexact rename detection
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging LayoutTests/platform/chromium/test_expectations.txt
CONFLICT (content): Merge conflict in LayoutTests/platform/chromium/test_expectations.txt
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Auto-merging Source/WebCore/page/ScrollingCoordinator.h
CONFLICT (content): Merge conflict in Source/WebCore/page/ScrollingCoordinator.h
Auto-merging Source/WebCore/page/mac/ScrollingCoordinatorMac.mm
CONFLICT (content): Merge conflict in Source/WebCore/page/mac/ScrollingCoordinatorMac.mm
Auto-merging Source/WebCore/platform/ScrollView.cpp
Auto-merging Source/WebCore/rendering/RenderLayerCompositor.cpp
CONFLICT (content): Merge conflict in Source/WebCore/rendering/RenderLayerCompositor.cpp
Auto-merging Source/WebKit2/ChangeLog
CONFLICT (content): Merge conflict in Source/WebKit2/ChangeLog
Auto-merging Tools/ChangeLog
CONFLICT (content): Merge conflict in Tools/ChangeLog
Auto-merging Tools/Scripts/build-webkit
Auto-merging Tools/Scripts/webkitdirs.pm
CONFLICT (content): Merge conflict in Tools/Scripts/webkitdirs.pm
Failed to merge in the changes.
Patch failed at 0001 Inform the scrolling coordinator when scrollbar layers come and go

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 158.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525950</commentid>
    <comment_count>6</comment_count>
      <attachid>120251</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-21 20:35:35 -0800</bug_when>
    <thetext>Comment on attachment 120251
Patch

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

Looks sane enough to me.

&gt; Source/WebCore/ChangeLog:11
&gt; +        covered. This includes the incrementing of Document::domTreeVersion()

incrementation?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526325</commentid>
    <comment_count>7</comment_count>
      <attachid>120334</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-12-22 09:39:41 -0800</bug_when>
    <thetext>Created attachment 120334
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526326</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-22 09:41:05 -0800</bug_when>
    <thetext>Attachment 120334 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
Index mismatch: e2cbe978fd74a95efeede79908d082d70edf7254 != 61426a582f9075041358d45255f438344a0219d4
rereading 3ff8cc11dd87e8ac3a4acaee763d8549687e5da1
	M	Tools/TestWebKitAPI/TestsController.cpp
	M	Tools/ChangeLog
103546 = 4e5cbb711dbbaa35b7a064791c6a6e3e2556787c already exists! Why are we refetching it?
 at /usr/lib/git-core/git-svn line 5210

Died at Tools/Scripts/update-webkit line 158.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526769</commentid>
    <comment_count>9</comment_count>
      <attachid>120334</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-23 01:12:45 -0800</bug_when>
    <thetext>Comment on attachment 120334
Patch for landing

Clearing flags on attachment: 120334

Committed r103611: &lt;http://trac.webkit.org/changeset/103611&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526770</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-23 01:12:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120243</attachid>
            <date>2011-12-21 16:53:04 -0800</date>
            <delta_ts>2011-12-21 18:01:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75054-20111221165303.patch</filename>
            <type>text/plain</type>
            <size>24609</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNDUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGFlY2E1OGUzNzM5NTFh
MGEyYmM3YzIyNjM3MjMyMzBlMGE1N2ExOS4uMmFhYWNhODNlNDZkMjc5NjkwYTYzMzJlOTlmNjM0
YTg4ZDQyMDMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDExLTEyLTIxICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1pbmltaXplIGNhbGxzaXRl
cyBhbmQgZHVwbGljYXRpb24gb2YgYmVmb3JlL2FmdGVyIGFkdmljZSBmb3IgYXR0cmlidXRlIG11
dGF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzUwNTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBy
MTAzNDUyIGhlbHBmdWxseSBtYWRlIGJlZm9yZSBhbmQgYWZ0ZXIgYWR2aWNlIHJlZ2FyZGluZyBh
dHRyaWJ1dGUKKyAgICAgICAgY2hhbmdlcyBzeW1tZXRyaWNhbC4gVGhpcyBjaGFuZ2UgZmluaXNo
ZXMgdGhhdCB3b3JrLCBieSBwdWxsaW5nCisgICAgICAgIHRvZ2V0aGVyIGFsbCB0aGUgYmVmb3Jl
L2FmdGVyIHdvcmssIG5vdCBqdXN0IHRoZSBjcnVtYnMgcHJldmlvdXNseQorICAgICAgICBjb3Zl
cmVkLiBUaGlzIGluY2x1ZGVzIHRoZSBpbmNyZW1lbnRpbmcgb2YgRG9jdW1lbnQ6OmRvbVRyZWVW
ZXJzaW9uKCkKKyAgICAgICAgd2hlbiBhbiBhdHRyaWJ1dGUgaXMgYWJvdXQgdG8gYmUgY2hhbmdl
ZCwgdGhlIEluc3BlY3RvciBpbnN0cnVtZW50YXRpb24sCisgICAgICAgIGFuZCBNdXRhdGlvbkV2
ZW50IGRpc3BhdGNoLiBUaGlzIGlzIGluIGFkZGl0aW9uIHRvIHRoZSBwcmV2aW91cyBjb2RlLAor
ICAgICAgICB3aGljaCBoYW5kbGVkIGVucXVldWVpbmcgTXV0YXRpb25SZWNvcmRzIGZvciBNdXRh
dGlvbk9ic2VydmVycyBhbmQKKyAgICAgICAgdXBkYXRpbmcgdGhlIERvY3VtZW50J3MgbGlzdCBv
ZiBJRHMuCisKKyAgICAgICAgVGhlIG9ubHkgY2hhbmdlIGluIGJlaGF2aW9yIHNob3VsZCBiZSBp
biBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24sCisgICAgICAgIHdoaWNoIGNhdXNlcyBET00gYnJl
YWtwb2ludHMgdG8gb2NjdXIgZm9yIG1vcmUgY2FzZXMgb2YgQXR0cmlidXRlCisgICAgICAgIG11
dGF0aW9uLiBUaGlzIHNlZW1zIGxpa2UgbW9yZSBjb3JyZWN0IGJlaGF2aW9yLCBhbmQgYSB0ZXN0
IGhhcworICAgICAgICBiZWVuIGluY2x1ZGVkIHRvIGV4ZXJjaXNlIGl0LgorCisgICAgICAgIEhv
cGVmdWxseSB0aGUgbGFzdCBBdHRyaWJ1dGUtcmVsYXRlZCByZWZhY3RvciBmb3IgYXdoaWxlLgor
CisgICAgICAgICogZG9tL0F0dHIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXR0cjo6c2V0VmFs
dWUpOiBVcGRhdGUgdG8gY2FsbCBkaWRNb2RpZnlBdHRyaWJ1dGUgaW5zdGVhZAorICAgICAgICBv
ZiBhdHRyaWJ1dGVDaGFuZ2VkLgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZSk6IEdvdCByaWQgb2YKKyAgICAgICAg
cmVtb3ZlQXR0cmlidXRlSW50ZXJuYWwgYXMgbW9zdCBvZiB0aGF0IGxvZ2ljIG1vdmVkIGJhY2sg
aW50bworICAgICAgICBOYW1lZE5vZGVNYXA6OnJlbW92ZUF0dHJpYnV0ZS4KKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVybmFsKTogUmVvcmdhbml6ZWQgdG8gcmVh
ZCBiZXR0ZXIKKyAgICAgICAgbm93IHRoYXQgb25seSBzb21lIGNhc2VzIHJlc3VsdCBpbiBjYWxs
cyB0byB3aWxsL2RpZE1vZGlmeUF0dHJpYnV0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OndpbGxNb2RpZnlBdHRyaWJ1dGUpOiBVbi1pbmxpbmVkIGFuZCBhZGRlZAorICAgICAgICBpbmNE
T01UcmVlVmVyc2lvbiBhbmQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uIGNhbGxzLgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6ZGlkTW9kaWZ5QXR0cmlidXRlKTogTmV3IG1ldGhvZCB3aGlj
aCBlbmNhcHN1bGF0ZXMKKyAgICAgICAgY2FsbGluZyBhdHRyaWJ1dGVDaGFuZ2VkLCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24sIGFuZCBNdXRhdGlvbkV2ZW50cy4KKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OmRpZFJlbW92ZUF0dHJpYnV0ZSk6IE5ldyBtZXRob2Qgd2hpY2ggZW5jYXBzdWxh
dGVzCisgICAgICAgIGNhbGxpbmcgYXR0cmlidXRlQ2hhbmdlZCwgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLCBhbmQgTXV0YXRpb25FdmVudHMuCisgICAgICAgIFNlcGFyYXRlIGZyb20gZGlkTW9k
aWZ5QXR0cmlidXRlIGJlY2F1c2UgaXQgaGFzIHNwZWNpYWwgaGFuZGxpbmcgb2YKKyAgICAgICAg
dGhlIHJlbW92ZWQgQXR0cmlidXRlJ3MgdmFsdWUuCisgICAgICAgICogZG9tL0VsZW1lbnQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OndpbGxSZW1vdmVBdHRyaWJ1dGUpOiBOZXcgbWV0
aG9kIHdoaWNoIGRlbGVnYXRlcyB0bworICAgICAgICB3aWxsTW9kaWZ5QXR0cmlidXRlIGFzIGFw
cHJvcHJpYXRlLgorICAgICAgICAqIGRvbS9OYW1lZE5vZGVNYXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TmFtZWROb2RlTWFwOjpzZXROYW1lZEl0ZW0pOiBTaW1wbGlmaWVkLgorICAgICAgICAo
V2ViQ29yZTo6TmFtZWROb2RlTWFwOjpyZW1vdmVOYW1lZEl0ZW0pOiBTaW1wbGlmaWVkLgorICAg
ICAgICAoV2ViQ29yZTo6TmFtZWROb2RlTWFwOjphZGRBdHRyaWJ1dGUpOiBBZGRlZCBjYWxscyB0
byB3aWxsL2RpZE1vZGlmeUF0dHJpYnV0ZS4KKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTm9kZU1h
cDo6cmVtb3ZlQXR0cmlidXRlKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpOYW1lZE5vZGVN
YXA6OnJlcGxhY2VBdHRyaWJ1dGUpOiBkaXR0by4KKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9T
VkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyLmg6IFJldmVydGVkIGNoYW5nZXMKKyAgICAg
ICAgbWFkZSBpbiByMTAzNDUyIG5vdyB0aGF0IGFkZEF0dHJpYnV0ZS9yZW1vdmVBdHRyaWJ1dGUg
b25jZSBhZ2FpbgorICAgICAgICBjYWxsIGF0dHJpYnV0ZUNoYW5nZWQgYXBwcm9wcmlhdGVseS4K
KwogMjAxMS0xMi0yMCAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBNYWtlIGNhbGxzIHRvIHdpbGxNb2RpZnlBdHRyaWJ1dGUgYW5kIGF0dHJpYnV0ZUNoYW5nZWQg
c3ltbWV0cmljYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAppbmRleCAyZTExZmYwMmFkMjZkYzMxOWRiMmQ5NzNi
NWI1NDVmMGMzNjQ2NzQ5Li42OTMwZmExZGMwNjA1MDY4Y2U1NTRmYzEyNTAzZTJmYjc3NWVhZDVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0F0dHIuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBBdHRyOjpzZXRWYWx1
ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJikKICAgICBzZXRWYWx1
ZSh2YWx1ZSk7CiAKICAgICBpZiAobV9lbGVtZW50KQotICAgICAgICBtX2VsZW1lbnQtPmF0dHJp
YnV0ZUNoYW5nZWQobV9hdHRyaWJ1dGUuZ2V0KCkpOworICAgICAgICBtX2VsZW1lbnQtPmRpZE1v
ZGlmeUF0dHJpYnV0ZShtX2F0dHJpYnV0ZS5nZXQoKSk7CiB9CiAKIHZvaWQgQXR0cjo6c2V0Tm9k
ZVZhbHVlKGNvbnN0IFN0cmluZyYgdiwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKaW5kZXggMjUwNTMxZmEyNDVhZDEwNDZmYjc1YmYxMmNjY2ZiZTZiNTA5ZjI3YS4uMThl
YmY4MDMyOTgwZTExZjhlNzI2YmNlOTc4ODVmNTc2ZTBiMDRhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcApAQCAtMTc4LDUwICsxNzgsMTIgQEAgdm9pZCBFbGVtZW50Ojpjb3B5Tm9uQXR0cmlidXRl
UHJvcGVydGllcyhjb25zdCBFbGVtZW50KikKIHsKIH0KIAotI2lmIEVOQUJMRShNVVRBVElPTl9P
QlNFUlZFUlMpCi12b2lkIEVsZW1lbnQ6OmVucXVldWVBdHRyaWJ1dGVzTXV0YXRpb25SZWNvcmRJ
ZlJlcXVlc3RlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG9sZFZhbHVlKQotewotICAgIGlmIChpc1N5bmNocm9uaXppbmdTdHlsZUF0dHJp
YnV0ZSgpKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKE93blB0cjxNdXRhdGlvbk9ic2VydmVy
SW50ZXJlc3RHcm91cD4gbXV0YXRpb25SZWNpcGllbnRzID0gTXV0YXRpb25PYnNlcnZlckludGVy
ZXN0R3JvdXA6OmNyZWF0ZUZvckF0dHJpYnV0ZXNNdXRhdGlvbih0aGlzLCBhdHRyaWJ1dGVOYW1l
KSkKLSAgICAgICAgbXV0YXRpb25SZWNpcGllbnRzLT5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoTXV0
YXRpb25SZWNvcmQ6OmNyZWF0ZUF0dHJpYnV0ZXModGhpcywgYXR0cmlidXRlTmFtZSwgb2xkVmFs
dWUpKTsKLX0KLSNlbmRpZgotCiB2b2lkIEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lKQogewogICAgIGlmICghbV9hdHRyaWJ1dGVNYXApCiAgICAgICAg
IHJldHVybjsKIAotICAgIHJlbW92ZUF0dHJpYnV0ZUludGVybmFsKG1fYXR0cmlidXRlTWFwLT5n
ZXRBdHRyaWJ1dGVJdGVtSW5kZXgobmFtZSkpOwotfQotCi1pbmxpbmUgdm9pZCBFbGVtZW50Ojpy
ZW1vdmVBdHRyaWJ1dGVJbnRlcm5hbChzaXplX3QgaW5kZXgpCi17Ci0gICAgQVNTRVJUKG1fYXR0
cmlidXRlTWFwKTsKLSAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybjsK
LQotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1vZGlmeURPTUF0dHIoZG9jdW1l
bnQoKSwgdGhpcyk7Ci0KLSAgICBSZWZQdHI8QXR0cmlidXRlPiBhdHRyaWJ1dGUgPSBtX2F0dHJp
YnV0ZU1hcC0+YXR0cmlidXRlSXRlbShpbmRleCk7Ci0KLSAgICBpZiAoIWF0dHJpYnV0ZS0+aXNO
dWxsKCkpCi0gICAgICAgIHdpbGxNb2RpZnlBdHRyaWJ1dGUoYXR0cmlidXRlLT5uYW1lKCksIGF0
dHJpYnV0ZS0+dmFsdWUoKSwgbnVsbEF0b20pOwotCi0gICAgbV9hdHRyaWJ1dGVNYXAtPnJlbW92
ZUF0dHJpYnV0ZShpbmRleCk7Ci0KLSAgICBpZiAoIWF0dHJpYnV0ZS0+aXNOdWxsKCkpIHsKLSAg
ICAgICAgQXRvbWljU3RyaW5nIHNhdmVkVmFsdWUgPSBhdHRyaWJ1dGUtPnZhbHVlKCk7Ci0gICAg
ICAgIGF0dHJpYnV0ZS0+c2V0VmFsdWUobnVsbEF0b20pOwotICAgICAgICBhdHRyaWJ1dGVDaGFu
Z2VkKGF0dHJpYnV0ZS5nZXQoKSk7Ci0gICAgICAgIGF0dHJpYnV0ZS0+c2V0VmFsdWUoc2F2ZWRW
YWx1ZSk7Ci0gICAgfQotCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVE
T01BdHRyKGRvY3VtZW50KCksIHRoaXMsIGF0dHJpYnV0ZS0+bmFtZSgpLmxvY2FsTmFtZSgpKTsK
LQotICAgIGlmICghaXNTeW5jaHJvbml6aW5nU3R5bGVBdHRyaWJ1dGUoKSkKLSAgICAgICAgZGlz
cGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCgpOworICAgIG1fYXR0cmlidXRlTWFwLT5yZW1vdmVB
dHRyaWJ1dGUobmFtZSk7CiB9CiAKIHZvaWQgRWxlbWVudDo6c2V0Qm9vbGVhbkF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBib29sIHZhbHVlKQpAQCAtNjYzLDM2ICs2MjUsMjYg
QEAgdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIAogaW5saW5lIHZvaWQgRWxlbWVudDo6c2V0QXR0
cmlidXRlSW50ZXJuYWwoc2l6ZV90IGluZGV4LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogeworICAgIEF0dHJpYnV0ZSogb2xkID0gaW5kZXgg
IT0gbm90Rm91bmQgPyBtX2F0dHJpYnV0ZU1hcC0+YXR0cmlidXRlSXRlbShpbmRleCkgOiAwOwog
ICAgIGlmICh2YWx1ZS5pc051bGwoKSkgewotICAgICAgICByZW1vdmVBdHRyaWJ1dGVJbnRlcm5h
bChpbmRleCk7CisgICAgICAgIGlmIChvbGQpCisgICAgICAgICAgICBtX2F0dHJpYnV0ZU1hcC0+
cmVtb3ZlQXR0cmlidXRlKGluZGV4KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEF0
dHJpYnV0ZSogb2xkID0gaW5kZXggIT0gbm90Rm91bmQgPyBtX2F0dHJpYnV0ZU1hcC0+YXR0cmli
dXRlSXRlbShpbmRleCkgOiAwOwotCi0gICAgaWYgKCFpc1N5bmNocm9uaXppbmdTdHlsZUF0dHJp
YnV0ZSgpKQotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxNb2RpZnlET01B
dHRyKGRvY3VtZW50KCksIHRoaXMpOwotCi0gICAgZG9jdW1lbnQoKS0+aW5jRE9NVHJlZVZlcnNp
b24oKTsKKyAgICBpZiAoIW9sZCkgeworICAgICAgICBtX2F0dHJpYnV0ZU1hcC0+YWRkQXR0cmli
dXRlKGNyZWF0ZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkpOworICAgICAgICByZXR1cm47CisgICAg
fQogCiAgICAgd2lsbE1vZGlmeUF0dHJpYnV0ZShuYW1lLCBvbGQgPyBvbGQtPnZhbHVlKCkgOiBu
dWxsQXRvbSwgdmFsdWUpOwogCi0gICAgaWYgKCFvbGQpIHsKLSAgICAgICAgUmVmUHRyPEF0dHJp
YnV0ZT4gYXR0cmlidXRlID0gY3JlYXRlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKLSAgICAgICAg
bV9hdHRyaWJ1dGVNYXAtPmFkZEF0dHJpYnV0ZShhdHRyaWJ1dGUpOwotICAgICAgICBhdHRyaWJ1
dGVDaGFuZ2VkKGF0dHJpYnV0ZS5nZXQoKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKEF0
dHIqIGF0dHJOb2RlID0gb2xkLT5hdHRyKCkpCi0gICAgICAgICAgICBhdHRyTm9kZS0+c2V0VmFs
dWUodmFsdWUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBvbGQtPnNldFZhbHVlKHZhbHVl
KTsKLSAgICAgICAgYXR0cmlidXRlQ2hhbmdlZChvbGQpOwotICAgIH0KKyAgICBpZiAoQXR0ciog
YXR0ck5vZGUgPSBvbGQtPmF0dHIoKSkKKyAgICAgICAgYXR0ck5vZGUtPnNldFZhbHVlKHZhbHVl
KTsKKyAgICBlbHNlCisgICAgICAgIG9sZC0+c2V0VmFsdWUodmFsdWUpOwogCi0gICAgaWYgKCFp
c1N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSgpKSB7Ci0gICAgICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkTW9kaWZ5RE9NQXR0cihkb2N1bWVudCgpLCB0aGlzLCBuYW1lLmxvY2Fs
TmFtZSgpLCB2YWx1ZSk7Ci0gICAgICAgIGRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZlbnQoKTsK
LSAgICB9CisgICAgZGlkTW9kaWZ5QXR0cmlidXRlKG9sZCk7CiB9CiAKIFBhc3NSZWZQdHI8QXR0
cmlidXRlPiBFbGVtZW50OjpjcmVhdGVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKQEAgLTE0OTQsNyArMTQ0NiwxMSBAQCB2b2lk
IEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIFN0cmluZyBsb2NhbE5hbWUgPSBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNl
KHRoaXMpID8gbmFtZS5sb3dlcigpIDogbmFtZTsKLSAgICByZW1vdmVBdHRyaWJ1dGVJbnRlcm5h
bChtX2F0dHJpYnV0ZU1hcC0+Z2V0QXR0cmlidXRlSXRlbUluZGV4KGxvY2FsTmFtZSwgZmFsc2Up
KTsKKyAgICBzaXplX3QgaW5kZXggPSBtX2F0dHJpYnV0ZU1hcC0+Z2V0QXR0cmlidXRlSXRlbUlu
ZGV4KGxvY2FsTmFtZSwgZmFsc2UpOworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9hdHRyaWJ1dGVNYXAtPnJlbW92ZUF0dHJpYnV0ZShpbmRleCk7
CiB9CiAKIHZvaWQgRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlTlMoY29uc3QgU3RyaW5nJiBuYW1l
c3BhY2VVUkksIGNvbnN0IFN0cmluZyYgbG9jYWxOYW1lKQpAQCAtMTk5Miw0ICsxOTQ4LDUxIEBA
IGJvb2wgRWxlbWVudDo6ZmFzdEF0dHJpYnV0ZUxvb2t1cEFsbG93ZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSkgY29uc3QKIH0KICNlbmRpZgogCit2b2lkIEVsZW1lbnQ6OndpbGxNb2RpZnlB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBv
bGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKK3sKKyAgICBkb2N1bWVudCgp
LT5pbmNET01UcmVlVmVyc2lvbigpOworCisgICAgaWYgKGlzSWRBdHRyaWJ1dGVOYW1lKG5hbWUp
KQorICAgICAgICB1cGRhdGVJZChvbGRWYWx1ZSwgbmV3VmFsdWUpOworCisjaWYgRU5BQkxFKE1V
VEFUSU9OX09CU0VSVkVSUykKKyAgICBpZiAoIWlzU3luY2hyb25pemluZ1N0eWxlQXR0cmlidXRl
KCkpIHsKKyAgICAgICAgaWYgKE93blB0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4g
cmVjaXBpZW50cyA9IE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVGb3JBdHRy
aWJ1dGVzTXV0YXRpb24odGhpcywgbmFtZSkpCisgICAgICAgICAgICByZWNpcGllbnRzLT5lbnF1
ZXVlTXV0YXRpb25SZWNvcmQoTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUF0dHJpYnV0ZXModGhpcywg
bmFtZSwgb2xkVmFsdWUpKTsKKyAgICB9CisjZW5kaWYKKworI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CisgICAgaWYgKCFpc1N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSgpKQorICAgICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxNb2RpZnlET01BdHRyKGRvY3VtZW50KCksIHRoaXMp
OworI2VuZGlmCit9CisKK3ZvaWQgRWxlbWVudDo6ZGlkTW9kaWZ5QXR0cmlidXRlKEF0dHJpYnV0
ZSogYXR0cikKK3sKKyAgICBhdHRyaWJ1dGVDaGFuZ2VkKGF0dHIpOworCisgICAgaWYgKCFpc1N5
bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSgpKSB7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkTW9kaWZ5RE9NQXR0cihkb2N1bWVudCgpLCB0aGlzLCBhdHRyLT5uYW1lKCku
bG9jYWxOYW1lKCksIGF0dHItPnZhbHVlKCkpOworICAgICAgICBkaXNwYXRjaFN1YnRyZWVNb2Rp
ZmllZEV2ZW50KCk7CisgICAgfQorfQorCit2b2lkIEVsZW1lbnQ6OmRpZFJlbW92ZUF0dHJpYnV0
ZShBdHRyaWJ1dGUqIGF0dHIpCit7CisgICAgaWYgKGF0dHItPmlzTnVsbCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBBdG9taWNTdHJpbmcgc2F2ZWRWYWx1ZSA9IGF0dHItPnZhbHVlKCk7Cisg
ICAgYXR0ci0+c2V0VmFsdWUobnVsbEF0b20pOworICAgIGF0dHJpYnV0ZUNoYW5nZWQoYXR0cik7
CisgICAgYXR0ci0+c2V0VmFsdWUoc2F2ZWRWYWx1ZSk7CisKKyAgICBpZiAoIWlzU3luY2hyb25p
emluZ1N0eWxlQXR0cmlidXRlKCkpIHsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRSZW1vdmVET01BdHRyKGRvY3VtZW50KCksIHRoaXMsIGF0dHItPm5hbWUoKS5sb2NhbE5h
bWUoKSk7CisgICAgICAgIGRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZlbnQoKTsKKyAgICB9Cit9
CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggYTYzNWYw
NmViYTBlZGQwZmIxZTNmMThkNDFhMWEwNzA4M2Q2YTQyNC4uMjk4MTQzMzZiNWNkMTEwNDJhZDdm
ZjE4YzNjMWE3OGIyMTYxMjZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0yNjUsNyArMjY1LDEx
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0OwogCiAgICAgdm9p
ZCB1cGRhdGVJZChjb25zdCBBdG9taWNTdHJpbmcmIG9sZElkLCBjb25zdCBBdG9taWNTdHJpbmcm
IG5ld0lkKTsKKwogICAgIHZvaWQgd2lsbE1vZGlmeUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBu
ZXdWYWx1ZSk7CisgICAgdm9pZCB3aWxsUmVtb3ZlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKTsKKyAgICB2b2lkIGRpZE1vZGlmeUF0dHJp
YnV0ZShBdHRyaWJ1dGUqKTsKKyAgICB2b2lkIGRpZFJlbW92ZUF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsKIAogICAgIExheW91dFNpemUgbWluaW11bVNpemVGb3JSZXNpemluZygpIGNvbnN0OwogICAg
IHZvaWQgc2V0TWluaW11bVNpemVGb3JSZXNpemluZyhjb25zdCBMYXlvdXRTaXplJik7CkBAIC0z
OTYsNyArNDAwLDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dl
ZChOb2RlVHlwZSkgY29uc3Q7CiAKICAgICB2b2lkIHNldEF0dHJpYnV0ZUludGVybmFsKHNpemVf
dCBpbmRleCwgY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUp
OwotICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlSW50ZXJuYWwoc2l6ZV90IGluZGV4KTsKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8QXR0cmlidXRlPiBjcmVhdGVBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOwogICAgIAogI2lmbmRlZiBOREVC
VUcKQEAgLTQzMywxMCArNDM2LDYgQEAgcHJpdmF0ZToKIAogICAgIFNwZWxsY2hlY2tBdHRyaWJ1
dGVTdGF0ZSBzcGVsbGNoZWNrQXR0cmlidXRlU3RhdGUoKSBjb25zdDsKIAotI2lmIEVOQUJMRShN
VVRBVElPTl9PQlNFUlZFUlMpCi0gICAgdm9pZCBlbnF1ZXVlQXR0cmlidXRlc011dGF0aW9uUmVj
b3JkSWZSZXF1ZXN0ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYg
b2xkVmFsdWUpOwotI2VuZGlmCi0KIHByaXZhdGU6CiAgICAgbXV0YWJsZSBSZWZQdHI8TmFtZWRO
b2RlTWFwPiBtX2F0dHJpYnV0ZU1hcDsKIH07CkBAIC01MTgsMTYgKzUxNywxMCBAQCBpbmxpbmUg
dm9pZCBFbGVtZW50Ojp1cGRhdGVJZChjb25zdCBBdG9taWNTdHJpbmcmIG9sZElkLCBjb25zdCBB
dG9taWNTdHJpbmcmIG5ldwogICAgICAgICBzY29wZS0+YWRkRWxlbWVudEJ5SWQobmV3SWQsIHRo
aXMpOwogfQogCi1pbmxpbmUgdm9pZCBFbGVtZW50Ojp3aWxsTW9kaWZ5QXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0
IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCitpbmxpbmUgdm9pZCBFbGVtZW50Ojp3aWxsUmVtb3Zl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWUpCiB7Ci0gICAgaWYgKGlzSWRBdHRyaWJ1dGVOYW1lKG5hbWUpKQotICAgICAgICB1cGRh
dGVJZChvbGRWYWx1ZSwgbmV3VmFsdWUpOwotCi0gICAgLy8gRklYTUU6IFNob3VsZCBwcm9iYWJs
eSBjYWxsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1vZGlmeURPTUF0dHIgaGVyZS4K
LQotI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCi0gICAgZW5xdWV1ZUF0dHJpYnV0ZXNN
dXRhdGlvblJlY29yZElmUmVxdWVzdGVkKG5hbWUsIG9sZFZhbHVlKTsKLSNlbmRpZgorICAgIGlm
ICghdmFsdWUuaXNOdWxsKCkpCisgICAgICAgIHdpbGxNb2RpZnlBdHRyaWJ1dGUobmFtZSwgdmFs
dWUsIG51bGxBdG9tKTsKIH0KIAogaW5saW5lIGJvb2wgRWxlbWVudDo6ZmFzdEhhc0F0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL05hbWVkTm9kZU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2Rl
TWFwLmNwcAppbmRleCA4M2Q1ZjAzYjg0YzUyNTk2N2IwYjcwNDliODI3ODkyOTUwZDJmY2FhLi5m
ZDYzZDdhYjNhZDUyNGE2ZTZiOTc3OWU4ZGI5NTFhMzUwYmE3MmMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TmFtZWROb2RlTWFwLmNwcApAQCAtMTIwLDggKzEyMCw2IEBAIFBhc3NSZWZQdHI8Tm9kZT4gTmFt
ZWROb2RlTWFwOjpzZXROYW1lZEl0ZW0oTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIG1fZWxlbWVudC0+d2lsbE1vZGlmeUF0dHJp
YnV0ZShhdHRyaWJ1dGUtPm5hbWUoKSwgb2xkQXR0cmlidXRlID8gb2xkQXR0cmlidXRlLT52YWx1
ZSgpIDogbnVsbEF0b20sIGF0dHJpYnV0ZS0+dmFsdWUoKSk7Ci0KICAgICBSZWZQdHI8QXR0cj4g
b2xkQXR0cjsKICAgICBpZiAob2xkQXR0cmlidXRlKSB7CiAgICAgICAgIG9sZEF0dHIgPSBvbGRB
dHRyaWJ1dGUtPmNyZWF0ZUF0dHJJZk5lZWRlZChtX2VsZW1lbnQpOwpAQCAtMTI5LDExICsxMjcs
NiBAQCBQYXNzUmVmUHRyPE5vZGU+IE5hbWVkTm9kZU1hcDo6c2V0TmFtZWRJdGVtKE5vZGUqIG5v
ZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIH0gZWxzZQogICAgICAgICBhZGRBdHRyaWJ1dGUo
YXR0cmlidXRlKTsKIAotICAgIG1fZWxlbWVudC0+YXR0cmlidXRlQ2hhbmdlZChhdHRyaWJ1dGUp
OwotCi0gICAgaWYgKGF0dHJpYnV0ZS0+bmFtZSgpICE9IHN0eWxlQXR0cikKLSAgICAgICAgbV9l
bGVtZW50LT5kaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2ZW50KCk7Ci0KICAgICByZXR1cm4gb2xk
QXR0ci5yZWxlYXNlKCk7CiB9CiAKQEAgLTE1MiwyNCArMTQ1LDEwIEBAIFBhc3NSZWZQdHI8Tm9k
ZT4gTmFtZWROb2RlTWFwOjpyZW1vdmVOYW1lZEl0ZW0oY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgRXhjZXB0CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIFJlZlB0cjxBdHRyaWJ1
dGU+IGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZUl0ZW0oaW5kZXgpOwotICAgIFJlZlB0cjxBdHRyPiBh
dHRyID0gYXR0cmlidXRlLT5jcmVhdGVBdHRySWZOZWVkZWQobV9lbGVtZW50KTsKLQotICAgIGlm
ICghYXR0cmlidXRlLT5pc051bGwoKSkKLSAgICAgICAgbV9lbGVtZW50LT53aWxsTW9kaWZ5QXR0
cmlidXRlKGF0dHJpYnV0ZS0+bmFtZSgpLCBhdHRyaWJ1dGUtPnZhbHVlKCksIG51bGxBdG9tKTsK
KyAgICBSZWZQdHI8QXR0cj4gYXR0ciA9IG1fYXR0cmlidXRlc1tpbmRleF0tPmNyZWF0ZUF0dHJJ
Zk5lZWRlZChtX2VsZW1lbnQpOwogCiAgICAgcmVtb3ZlQXR0cmlidXRlKGluZGV4KTsKIAotICAg
IGlmICghYXR0cmlidXRlLT5pc051bGwoKSkgewotICAgICAgICBBdG9taWNTdHJpbmcgc2F2ZWRW
YWx1ZSA9IGF0dHJpYnV0ZS0+dmFsdWUoKTsKLSAgICAgICAgYXR0cmlidXRlLT5zZXRWYWx1ZShu
dWxsQXRvbSk7Ci0gICAgICAgIG1fZWxlbWVudC0+YXR0cmlidXRlQ2hhbmdlZChhdHRyaWJ1dGUu
Z2V0KCkpOwotICAgICAgICBhdHRyaWJ1dGUtPnNldFZhbHVlKHNhdmVkVmFsdWUpOwotICAgIH0K
LQotICAgIGlmIChhdHRyaWJ1dGUtPm5hbWUoKSAhPSBzdHlsZUF0dHIpCi0gICAgICAgIG1fZWxl
bWVudC0+ZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCgpOwotCiAgICAgcmV0dXJuIGF0dHIu
cmVsZWFzZSgpOwogfQogCkBAIC0yNTQsMzIgKzIzMyw1NiBAQCB2b2lkIE5hbWVkTm9kZU1hcDo6
c2V0QXR0cmlidXRlcyhjb25zdCBOYW1lZE5vZGVNYXAmIG90aGVyKQogICAgICAgICBtX2VsZW1l
bnQtPmF0dHJpYnV0ZUNoYW5nZWQobV9hdHRyaWJ1dGVzW2ldLmdldCgpLCB0cnVlKTsKIH0KIAot
dm9pZCBOYW1lZE5vZGVNYXA6OmFkZEF0dHJpYnV0ZShQYXNzUmVmUHRyPEF0dHJpYnV0ZT4gYXR0
cmlidXRlKQordm9pZCBOYW1lZE5vZGVNYXA6OmFkZEF0dHJpYnV0ZShQYXNzUmVmUHRyPEF0dHJp
YnV0ZT4gcHJwQXR0cmlidXRlKQogeworICAgIFJlZlB0cjxBdHRyaWJ1dGU+IGF0dHJpYnV0ZSA9
IHBycEF0dHJpYnV0ZTsKKworICAgIGlmIChtX2VsZW1lbnQpCisgICAgICAgIG1fZWxlbWVudC0+
d2lsbE1vZGlmeUF0dHJpYnV0ZShhdHRyaWJ1dGUtPm5hbWUoKSwgbnVsbEF0b20sIGF0dHJpYnV0
ZS0+dmFsdWUoKSk7CisKICAgICBtX2F0dHJpYnV0ZXMuYXBwZW5kKGF0dHJpYnV0ZSk7Ci0gICAg
aWYgKEF0dHIqIGF0dHIgPSBtX2F0dHJpYnV0ZXMubGFzdCgpLT5hdHRyKCkpCisgICAgaWYgKEF0
dHIqIGF0dHIgPSBhdHRyaWJ1dGUtPmF0dHIoKSkKICAgICAgICAgYXR0ci0+bV9lbGVtZW50ID0g
bV9lbGVtZW50OworCisgICAgaWYgKG1fZWxlbWVudCkKKyAgICAgICAgbV9lbGVtZW50LT5kaWRN
b2RpZnlBdHRyaWJ1dGUoYXR0cmlidXRlLmdldCgpKTsKIH0KIAogdm9pZCBOYW1lZE5vZGVNYXA6
OnJlbW92ZUF0dHJpYnV0ZShzaXplX3QgaW5kZXgpCiB7CiAgICAgQVNTRVJUKGluZGV4IDwgbGVu
Z3RoKCkpOwogCi0gICAgaWYgKEF0dHIqIGF0dHIgPSBtX2F0dHJpYnV0ZXNbaW5kZXhdLT5hdHRy
KCkpCi0gICAgICAgIGF0dHItPm1fZWxlbWVudCA9IDA7CisgICAgUmVmUHRyPEF0dHJpYnV0ZT4g
YXR0cmlidXRlID0gbV9hdHRyaWJ1dGVzW2luZGV4XTsKIAorICAgIGlmIChtX2VsZW1lbnQpCisg
ICAgICAgIG1fZWxlbWVudC0+d2lsbFJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGUtPm5hbWUoKSwg
YXR0cmlidXRlLT52YWx1ZSgpKTsKKworICAgIGlmIChBdHRyKiBhdHRyID0gYXR0cmlidXRlLT5h
dHRyKCkpCisgICAgICAgIGF0dHItPm1fZWxlbWVudCA9IDA7CiAgICAgbV9hdHRyaWJ1dGVzLnJl
bW92ZShpbmRleCk7CisKKyAgICBpZiAobV9lbGVtZW50KQorICAgICAgICBtX2VsZW1lbnQtPmRp
ZFJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGUuZ2V0KCkpOwogfQogCi12b2lkIE5hbWVkTm9kZU1h
cDo6cmVwbGFjZUF0dHJpYnV0ZShzaXplX3QgaW5kZXgsIFBhc3NSZWZQdHI8QXR0cmlidXRlPiBh
dHRyaWJ1dGUpCit2b2lkIE5hbWVkTm9kZU1hcDo6cmVwbGFjZUF0dHJpYnV0ZShzaXplX3QgaW5k
ZXgsIFBhc3NSZWZQdHI8QXR0cmlidXRlPiBwcnBBdHRyaWJ1dGUpCiB7CiAgICAgQVNTRVJUKGlu
ZGV4IDwgbGVuZ3RoKCkpOwogCi0gICAgaWYgKEF0dHIqIGF0dHIgPSBtX2F0dHJpYnV0ZXNbaW5k
ZXhdLT5hdHRyKCkpCisgICAgUmVmUHRyPEF0dHJpYnV0ZT4gYXR0cmlidXRlID0gcHJwQXR0cmli
dXRlOworICAgIEF0dHJpYnV0ZSogb2xkID0gbV9hdHRyaWJ1dGVzW2luZGV4XS5nZXQoKTsKKwor
ICAgIGlmIChtX2VsZW1lbnQpCisgICAgICAgIG1fZWxlbWVudC0+d2lsbE1vZGlmeUF0dHJpYnV0
ZShhdHRyaWJ1dGUtPm5hbWUoKSwgb2xkLT52YWx1ZSgpLCBhdHRyaWJ1dGUtPnZhbHVlKCkpOwor
CisgICAgaWYgKEF0dHIqIGF0dHIgPSBvbGQtPmF0dHIoKSkKICAgICAgICAgYXR0ci0+bV9lbGVt
ZW50ID0gMDsKICAgICBtX2F0dHJpYnV0ZXNbaW5kZXhdID0gYXR0cmlidXRlOwotICAgIGlmIChB
dHRyKiBhdHRyID0gbV9hdHRyaWJ1dGVzW2luZGV4XS0+YXR0cigpKQorICAgIGlmIChBdHRyKiBh
dHRyID0gYXR0cmlidXRlLT5hdHRyKCkpCiAgICAgICAgIGF0dHItPm1fZWxlbWVudCA9IG1fZWxl
bWVudDsKKworICAgIGlmIChtX2VsZW1lbnQpCisgICAgICAgIG1fZWxlbWVudC0+ZGlkTW9kaWZ5
QXR0cmlidXRlKGF0dHJpYnV0ZS5nZXQoKSk7CiB9CiAKIHZvaWQgTmFtZWROb2RlTWFwOjpzZXRD
bGFzcyhjb25zdCBTdHJpbmcmIGNsYXNzU3RyKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIu
aAppbmRleCAwZTdkMGMzYTNiZTk3ODkzOWE2NTBmNDUyMGNkZDIyNTdhZTZjMjY3Li5jYjc4OWYz
ZjE4MWUxNmM2YTgzNGVjOTk1NzZkYmFlZjM5ODdiMTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNo
cm9uaXplci5oCkBAIC0zNCwxNiArMzQsMTggQEAgc3RydWN0IFNWR0FuaW1hdGVkUHJvcGVydHlT
eW5jaHJvbml6ZXI8dHJ1ZT4gewogICAgIHN0YXRpYyB2b2lkIHN5bmNocm9uaXplKFNWR0VsZW1l
bnQqIG93bmVyRWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgdmFsdWUpCiAgICAgewogICAgICAgICAvLyBJZiB0aGUgYXR0cmlidXRlIGFs
cmVhZHkgZXhpc3RzIG9uIHRoZSBlbGVtZW50LCB3ZSBjaGFuZ2UgdGhlCi0gICAgICAgIC8vIEF0
dHJpYnV0ZSBkaXJlY3RseSByYXRoZXIgdGhhbiBnb2luZyB0aHJvdWdoIEVsZW1lbnQ6OnNldEF0
dHJpYnV0ZSB0bwotICAgICAgICAvLyBhdm9pZCBhIGNhbGwgdG8gRWxlbWVudDo6YXR0cmlidXRl
Q2hhbmdlZCB0aGF0IGNvdWxkIGNhdXNlIHRoZQotICAgICAgICAvLyBTVkdFbGVtZW50IHRvIGVy
cm9uZW91c2x5IHJlc2V0IGl0cyBwcm9wZXJ0aWVzLgorICAgICAgICAvLyBBdHRyaWJ1dGUgZGly
ZWN0bHkgdG8gYXZvaWQgYSBjYWxsIHRvIEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQKKyAgICAg
ICAgLy8gdGhhdCBjb3VsZCBjYXVzZSB0aGUgU1ZHRWxlbWVudCB0byBlcnJvbmVvdXNseSByZXNl
dCBpdHMgcHJvcGVydGllcy4KICAgICAgICAgLy8gc3ZnL2RvbS9TVkdTdHJpbmdMaXN0LWJhc2lj
cy54aHRtbCBleGVyY2lzZXMgdGhpcyBiZWhhdmlvci4KICAgICAgICAgTmFtZWROb2RlTWFwKiBu
YW1lZEF0dHJNYXAgPSBvd25lckVsZW1lbnQtPmF0dHJpYnV0ZXMoZmFsc2UpOwogICAgICAgICBB
dHRyaWJ1dGUqIG9sZCA9IG5hbWVkQXR0ck1hcC0+Z2V0QXR0cmlidXRlSXRlbShhdHRyTmFtZSk7
Ci0gICAgICAgIGlmIChvbGQpCisgICAgICAgIGlmIChvbGQgJiYgdmFsdWUuaXNOdWxsKCkpCisg
ICAgICAgICAgICBuYW1lZEF0dHJNYXAtPnJlbW92ZUF0dHJpYnV0ZShvbGQtPm5hbWUoKSk7Cisg
ICAgICAgIGVsc2UgaWYgKCFvbGQgJiYgIXZhbHVlLmlzTnVsbCgpKQorICAgICAgICAgICAgbmFt
ZWRBdHRyTWFwLT5hZGRBdHRyaWJ1dGUob3duZXJFbGVtZW50LT5jcmVhdGVBdHRyaWJ1dGUoYXR0
ck5hbWUsIHZhbHVlKSk7CisgICAgICAgIGVsc2UgaWYgKG9sZCAmJiAhdmFsdWUuaXNOdWxsKCkp
CiAgICAgICAgICAgICBvbGQtPnNldFZhbHVlKHZhbHVlKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgb3duZXJFbGVtZW50LT5zZXRBdHRyaWJ1dGUoYXR0ck5hbWUsIHZhbHVlKTsKKwogICAg
IH0KIH07CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBiMmIxYjBhM2VlNGRhNmYyYzUyNjE0YWZjNTZmOGIxOTY1YTljOGFl
Li4yNjlmYWZlM2VlMmE3ZDE0MDIyYTNmZGE0MjEwNzMwYTM3ZWVlNDk2IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTEtMTItMjEgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgTWluaW1pemUgY2FsbHNpdGVzIGFuZCBkdXBsaWNhdGlvbiBvZiBiZWZvcmUvYWZ0
ZXIgYWR2aWNlIGZvciBhdHRyaWJ1dGUgbXV0YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTA1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2RvbS1icmVha3Bv
aW50cy5odG1sOiBBZGQgdGVzdHMgZm9yIGJyZWFrcG9pbnRzCisgICAgICAgIGR1ZSB0byBtdXRh
dGlvbiBvZiBBdHRyIG5vZGVzL05hbWVkTm9kZUxpc3RzLgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL2luc3BlY3Rvci9kZWJ1Z2dlci9kb20tYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0Ogor
CiAyMDExLTEyLTIxICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgW2Nocm9taXVtXSBNYXJrIG1vcmUgTWFjIGNvbXBvc2l0aW5nIHRlc3RzIGFzIGZsYWt5CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZG9tLWJyZWFrcG9pbnRz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZG9tLWJyZWFrcG9pbnRzLmh0
bWwKaW5kZXggNGVmN2FhNjI4M2E1OWZhNjAzYTg2ZTYzZTdhYjBkZjlkZDYzN2M1YS4uZTQxOGEy
YTBjM2M3NjhkZjY1ZGFjYTQwNWE0MzUyMDA0ZDE1ZmFlYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RvbS1icmVha3BvaW50cy5odG1sCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kb20tYnJlYWtwb2ludHMuaHRtbApAQCAtMTgsNiArMTgs
MjAgQEAgZnVuY3Rpb24gbW9kaWZ5QXR0cmlidXRlKGVsZW1lbnRJZCwgbmFtZSwgdmFsdWUpCiAg
ICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCitmdW5jdGlvbiBtb2Rp
ZnlBdHRyTm9kZShlbGVtZW50SWQsIG5hbWUsIHZhbHVlKQoreworICAgIHZhciBlbGVtZW50ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTsKKyAgICBlbGVtZW50LmF0dHJpYnV0
ZXNbbmFtZV0udmFsdWUgPSB2YWx1ZTsKK30KKworZnVuY3Rpb24gc2V0QXR0ck5vZGUoZWxlbWVu
dElkLCBuYW1lLCB2YWx1ZSkKK3sKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKGVsZW1lbnRJZCk7CisgICAgdmFyIGF0dHIgPSBkb2N1bWVudC5jcmVhdGVBdHRyaWJ1
dGUobmFtZSk7CisgICAgYXR0ci52YWx1ZSA9IHZhbHVlOworICAgIGVsZW1lbnQuYXR0cmlidXRl
cy5zZXROYW1lZEl0ZW0oYXR0cik7Cit9CisKIGZ1bmN0aW9uIG1vZGlmeVN0eWxlQXR0cmlidXRl
KGVsZW1lbnRJZCwgbmFtZSwgdmFsdWUpCiB7CiAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChlbGVtZW50SWQpOwpAQCAtODAsMTAgKzk0LDQyIEBAIGZ1bmN0aW9uIHRl
c3QoKQogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlRlc3QgdGhhdCAnQXR0
cmlidXRlIE1vZGlmaWVkJyBicmVha3BvaW50IGlzIGhpdCB3aGVuIG1vZGlmeWluZyBhdHRyaWJ1
dGUuIik7CiAgICAgICAgICAgICBwYW5lLl9zZXRCcmVha3BvaW50KHJvb3RFbGVtZW50LCBwYW5l
Ll9icmVha3BvaW50VHlwZXMuQXR0cmlidXRlTW9kaWZpZWQsIHRydWUpOwogICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlNldCAnQXR0cmlidXRlIE1vZGlmaWVkJyBET00gYnJl
YWtwb2ludCBvbiByb290RWxlbWVudC4iKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZh
bHVhdGVJblBhZ2VXaXRoVGltZW91dCgibW9kaWZ5QXR0cmlidXRlKCdyb290RWxlbWVudCcsICdj
bGFzc05hbWUnLCAnZm9vJykiKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJNb2RpZnkgcm9vdEVsZW1lbnQgY2xhc3NOYW1lLiIpOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5ldmFsdWF0ZUluUGFnZVdpdGhUaW1lb3V0KCJtb2RpZnlBdHRyaWJ1dGUoJ3Jvb3RFbGVt
ZW50JywgJ2RhdGEtdGVzdCcsICdmb28nKSIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIk1vZGlmeSByb290RWxlbWVudCBkYXRhLXRlc3QgYXR0cmlidXRlLiIpOwogICAg
ICAgICAgICAgd2FpdFVudGlsUGF1c2VkQW5kRHVtcFN0YWNrKHN0ZXAyKTsKLSAgICAKKworICAg
ICAgICAgICAgZnVuY3Rpb24gc3RlcDIoY2FsbEZyYW1lcykKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBwYW5lLl9yZW1vdmVCcmVha3BvaW50KHJvb3RFbGVtZW50LCBwYW5lLl9icmVh
a3BvaW50VHlwZXMuQXR0cmlidXRlTW9kaWZpZWQpOworICAgICAgICAgICAgICAgIG5leHQoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0TW9kaWZ5
QXR0ck5vZGUobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoIlRlc3QgdGhhdCAnQXR0cmlidXRlIE1vZGlmaWVkJyBicmVha3BvaW50IGlzIGhpdCB3
aGVuIG1vZGlmeWluZyBBdHRyIG5vZGUuIik7CisgICAgICAgICAgICBwYW5lLl9zZXRCcmVha3Bv
aW50KHJvb3RFbGVtZW50LCBwYW5lLl9icmVha3BvaW50VHlwZXMuQXR0cmlidXRlTW9kaWZpZWQs
IHRydWUpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlNldCAnQXR0cmli
dXRlIE1vZGlmaWVkJyBET00gYnJlYWtwb2ludCBvbiByb290RWxlbWVudC4iKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2VXaXRoVGltZW91dCgibW9kaWZ5QXR0ck5v
ZGUoJ3Jvb3RFbGVtZW50JywgJ2RhdGEtdGVzdCcsICdiYXInKSIpOworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoIk1vZGlmeSByb290RWxlbWVudCBkYXRhLXRlc3QgYXR0cmli
dXRlLiIpOworICAgICAgICAgICAgd2FpdFVudGlsUGF1c2VkQW5kRHVtcFN0YWNrKHN0ZXAyKTsK
KworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDIoY2FsbEZyYW1lcykKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBwYW5lLl9yZW1vdmVCcmVha3BvaW50KHJvb3RFbGVtZW50LCBwYW5l
Ll9icmVha3BvaW50VHlwZXMuQXR0cmlidXRlTW9kaWZpZWQpOworICAgICAgICAgICAgICAgIG5l
eHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0
U2V0QXR0ck5vZGUobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIlRlc3QgdGhhdCAnQXR0cmlidXRlIE1vZGlmaWVkJyBicmVha3BvaW50IGlzIGhp
dCB3aGVuIGFkZGluZyBhIG5ldyBBdHRyIG5vZGUuIik7CisgICAgICAgICAgICBwYW5lLl9zZXRC
cmVha3BvaW50KHJvb3RFbGVtZW50LCBwYW5lLl9icmVha3BvaW50VHlwZXMuQXR0cmlidXRlTW9k
aWZpZWQsIHRydWUpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlNldCAn
QXR0cmlidXRlIE1vZGlmaWVkJyBET00gYnJlYWtwb2ludCBvbiByb290RWxlbWVudC4iKTsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2VXaXRoVGltZW91dCgic2V0QXR0
ck5vZGUoJ3Jvb3RFbGVtZW50JywgJ2RhdGEtZm9vJywgJ2JhcicpIik7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiTW9kaWZ5IHJvb3RFbGVtZW50IGRhdGEtZm9vIGF0dHJp
YnV0ZS4iKTsKKyAgICAgICAgICAgIHdhaXRVbnRpbFBhdXNlZEFuZER1bXBTdGFjayhzdGVwMik7
CisKICAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKGNhbGxGcmFtZXMpCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgcGFuZS5fcmVtb3ZlQnJlYWtwb2ludChyb290RWxlbWVudCwgcGFu
ZS5fYnJlYWtwb2ludFR5cGVzLkF0dHJpYnV0ZU1vZGlmaWVkKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9kZWJ1Z2dlci9kb20tYnJlYWtwb2lu
dHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9y
L2RlYnVnZ2VyL2RvbS1icmVha3BvaW50cy1leHBlY3RlZC50eHQKaW5kZXggMTgyODMzNzk1MmNk
NTcwMmQ3MTY0NjNkODAxOWQxM2FkZDdiYmMxMC4uN2MyYzdmOTZlZGMzYTUyOGU0NWVkNGU1ZDU1
MzY4OGQ2OGIwMmY4NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
aW5zcGVjdG9yL2RlYnVnZ2VyL2RvbS1icmVha3BvaW50cy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL2RlYnVnZ2VyL2RvbS1icmVha3Bv
aW50cy1leHBlY3RlZC50eHQKQEAgLTI4LDcgKzI4LDcgQEAgVGVzdCB0aGF0ICdTdWJ0cmVlIE1v
ZGlmaWVkJyBicmVha3BvaW50IGlzIGhpdCB3aGVuIHJlbW92aW5nIGEgY2hpbGQuCiBSZW1vdmUg
Z3JhbmRjaGlsZEVsZW1lbnQuCiBTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KIENhbGwgc3RhY2s6
Ci0gICAgMCkgcmVtb3ZlRWxlbWVudCAoZG9tLWJyZWFrcG9pbnRzLmh0bWw6MzApCisgICAgMCkg
cmVtb3ZlRWxlbWVudCAoZG9tLWJyZWFrcG9pbnRzLmh0bWw6NDQpCiAgICAgMSkgICg6MSkKIFBh
dXNlZCBvbiBhICJTdWJ0cmVlIE1vZGlmaWVkIiBicmVha3BvaW50IHNldCBvbiBkaXYjcm9vdEVs
ZW1lbnQsIGJlY2F1c2UgaXRzIGRlc2NlbmRhbnQgZGl2I2dyYW5kY2hpbGRFbGVtZW50IHdhcyBy
ZW1vdmVkLgogU2NyaXB0IGV4ZWN1dGlvbiByZXN1bWVkLgpAQCAtMzYsNyArMzYsNyBAQCBTY3Jp
cHQgZXhlY3V0aW9uIHJlc3VtZWQuCiBSdW5uaW5nOiB0ZXN0TW9kaWZ5QXR0cmlidXRlCiBUZXN0
IHRoYXQgJ0F0dHJpYnV0ZSBNb2RpZmllZCcgYnJlYWtwb2ludCBpcyBoaXQgd2hlbiBtb2RpZnlp
bmcgYXR0cmlidXRlLgogU2V0ICdBdHRyaWJ1dGUgTW9kaWZpZWQnIERPTSBicmVha3BvaW50IG9u
IHJvb3RFbGVtZW50LgotTW9kaWZ5IHJvb3RFbGVtZW50IGNsYXNzTmFtZS4KK01vZGlmeSByb290
RWxlbWVudCBkYXRhLXRlc3QgYXR0cmlidXRlLgogU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCiBD
YWxsIHN0YWNrOgogICAgIDApIG1vZGlmeUF0dHJpYnV0ZSAoZG9tLWJyZWFrcG9pbnRzLmh0bWw6
MTgpCkBAIC00NCwxMyArNDQsMzUgQEAgQ2FsbCBzdGFjazoKIFBhdXNlZCBvbiBhICJBdHRyaWJ1
dGUgTW9kaWZpZWQiIGJyZWFrcG9pbnQgc2V0IG9uIGRpdiNyb290RWxlbWVudC4KIFNjcmlwdCBl
eGVjdXRpb24gcmVzdW1lZC4KIAorUnVubmluZzogdGVzdE1vZGlmeUF0dHJOb2RlCitUZXN0IHRo
YXQgJ0F0dHJpYnV0ZSBNb2RpZmllZCcgYnJlYWtwb2ludCBpcyBoaXQgd2hlbiBtb2RpZnlpbmcg
QXR0ciBub2RlLgorU2V0ICdBdHRyaWJ1dGUgTW9kaWZpZWQnIERPTSBicmVha3BvaW50IG9uIHJv
b3RFbGVtZW50LgorTW9kaWZ5IHJvb3RFbGVtZW50IGRhdGEtdGVzdCBhdHRyaWJ1dGUuCitTY3Jp
cHQgZXhlY3V0aW9uIHBhdXNlZC4KK0NhbGwgc3RhY2s6CisgICAgMCkgbW9kaWZ5QXR0ck5vZGUg
KGRvbS1icmVha3BvaW50cy5odG1sOjI0KQorICAgIDEpICAoOjEpCitQYXVzZWQgb24gYSAiQXR0
cmlidXRlIE1vZGlmaWVkIiBicmVha3BvaW50IHNldCBvbiBkaXYjcm9vdEVsZW1lbnQuCitTY3Jp
cHQgZXhlY3V0aW9uIHJlc3VtZWQuCisKK1J1bm5pbmc6IHRlc3RTZXRBdHRyTm9kZQorVGVzdCB0
aGF0ICdBdHRyaWJ1dGUgTW9kaWZpZWQnIGJyZWFrcG9pbnQgaXMgaGl0IHdoZW4gYWRkaW5nIGEg
bmV3IEF0dHIgbm9kZS4KK1NldCAnQXR0cmlidXRlIE1vZGlmaWVkJyBET00gYnJlYWtwb2ludCBv
biByb290RWxlbWVudC4KK01vZGlmeSByb290RWxlbWVudCBkYXRhLWZvbyBhdHRyaWJ1dGUuCitT
Y3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KK0NhbGwgc3RhY2s6CisgICAgMCkgc2V0QXR0ck5vZGUg
KGRvbS1icmVha3BvaW50cy5odG1sOjMyKQorICAgIDEpICAoOjEpCitQYXVzZWQgb24gYSAiQXR0
cmlidXRlIE1vZGlmaWVkIiBicmVha3BvaW50IHNldCBvbiBkaXYjcm9vdEVsZW1lbnQuCitTY3Jp
cHQgZXhlY3V0aW9uIHJlc3VtZWQuCisKIFJ1bm5pbmc6IHRlc3RNb2RpZnlTdHlsZUF0dHJpYnV0
ZQogVGVzdCB0aGF0ICdBdHRyaWJ1dGUgTW9kaWZpZWQnIGJyZWFrcG9pbnQgaXMgaGl0IHdoZW4g
bW9kaWZ5aW5nIHN0eWxlIGF0dHJpYnV0ZS4KIFNldCAnQXR0cmlidXRlIE1vZGlmaWVkJyBET00g
YnJlYWtwb2ludCBvbiByb290RWxlbWVudC4KIE1vZGlmeSByb290RWxlbWVudCBzdHlsZS5jb2xv
ciBhdHRyaWJ1dGUuCiBTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KIENhbGwgc3RhY2s6Ci0gICAg
MCkgbW9kaWZ5U3R5bGVBdHRyaWJ1dGUgKGRvbS1icmVha3BvaW50cy5odG1sOjI0KQorICAgIDAp
IG1vZGlmeVN0eWxlQXR0cmlidXRlIChkb20tYnJlYWtwb2ludHMuaHRtbDozOCkKICAgICAxKSAg
KDoxKQogUGF1c2VkIG9uIGEgIkF0dHJpYnV0ZSBNb2RpZmllZCIgYnJlYWtwb2ludCBzZXQgb24g
ZGl2I3Jvb3RFbGVtZW50LgogU2NyaXB0IGV4ZWN1dGlvbiByZXN1bWVkLgpAQCAtNjEsNyArODMs
NyBAQCBTZXQgJ05vZGUgUmVtb3ZlZCcgRE9NIGJyZWFrcG9pbnQgb24gZWxlbWVudFRvUmVtb3Zl
LgogUmVtb3ZlIGVsZW1lbnRUb1JlbW92ZS4KIFNjcmlwdCBleGVjdXRpb24gcGF1c2VkLgogQ2Fs
bCBzdGFjazoKLSAgICAwKSByZW1vdmVFbGVtZW50IChkb20tYnJlYWtwb2ludHMuaHRtbDozMCkK
KyAgICAwKSByZW1vdmVFbGVtZW50IChkb20tYnJlYWtwb2ludHMuaHRtbDo0NCkKICAgICAxKSAg
KDoxKQogUGF1c2VkIG9uIGEgIk5vZGUgUmVtb3ZlZCIgYnJlYWtwb2ludCBzZXQgb24gZGl2I2Vs
ZW1lbnRUb1JlbW92ZS4KIFNjcmlwdCBleGVjdXRpb24gcmVzdW1lZC4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120251</attachid>
            <date>2011-12-21 18:01:36 -0800</date>
            <delta_ts>2011-12-22 09:39:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75054-20111221180135.patch</filename>
            <type>text/plain</type>
            <size>24568</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk1YzNmMzJkNjM3ODNl
ZjRjN2JlMThjNTQwNGNiNTZmZmNhZThjOS4uYTAzM2U1MjFjYTkzYTIwMzUzNDIyMWUxMjFlZDNi
ODVmZjRiY2I4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDExLTEyLTIxICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1pbmltaXplIGNhbGxzaXRl
cyBhbmQgZHVwbGljYXRpb24gb2YgYmVmb3JlL2FmdGVyIGFkdmljZSBmb3IgYXR0cmlidXRlIG11
dGF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzUwNTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBy
MTAzNDUyIGhlbHBmdWxseSBtYWRlIGJlZm9yZSBhbmQgYWZ0ZXIgYWR2aWNlIHJlZ2FyZGluZyBh
dHRyaWJ1dGUKKyAgICAgICAgY2hhbmdlcyBzeW1tZXRyaWNhbC4gVGhpcyBjaGFuZ2UgZmluaXNo
ZXMgdGhhdCB3b3JrLCBieSBwdWxsaW5nCisgICAgICAgIHRvZ2V0aGVyIGFsbCB0aGUgYmVmb3Jl
L2FmdGVyIHdvcmssIG5vdCBqdXN0IHRoZSBjcnVtYnMgcHJldmlvdXNseQorICAgICAgICBjb3Zl
cmVkLiBUaGlzIGluY2x1ZGVzIHRoZSBpbmNyZW1lbnRpbmcgb2YgRG9jdW1lbnQ6OmRvbVRyZWVW
ZXJzaW9uKCkKKyAgICAgICAgd2hlbiBhbiBhdHRyaWJ1dGUgaXMgYWJvdXQgdG8gYmUgY2hhbmdl
ZCwgdGhlIEluc3BlY3RvciBpbnN0cnVtZW50YXRpb24sCisgICAgICAgIGFuZCBNdXRhdGlvbkV2
ZW50IGRpc3BhdGNoLiBUaGlzIGlzIGluIGFkZGl0aW9uIHRvIHRoZSBwcmV2aW91cyBjb2RlLAor
ICAgICAgICB3aGljaCBoYW5kbGVkIGVucXVldWVpbmcgTXV0YXRpb25SZWNvcmRzIGZvciBNdXRh
dGlvbk9ic2VydmVycyBhbmQKKyAgICAgICAgdXBkYXRpbmcgdGhlIERvY3VtZW50J3MgbGlzdCBv
ZiBJRHMuCisKKyAgICAgICAgVGhlIG9ubHkgY2hhbmdlIGluIGJlaGF2aW9yIHNob3VsZCBiZSBp
biBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24sCisgICAgICAgIHdoaWNoIGNhdXNlcyBET00gYnJl
YWtwb2ludHMgdG8gb2NjdXIgZm9yIG1vcmUgY2FzZXMgb2YgQXR0cmlidXRlCisgICAgICAgIG11
dGF0aW9uLiBUaGlzIHNlZW1zIGxpa2UgbW9yZSBjb3JyZWN0IGJlaGF2aW9yLCBhbmQgYSB0ZXN0
IGhhcworICAgICAgICBiZWVuIGluY2x1ZGVkIHRvIGV4ZXJjaXNlIGl0LgorCisgICAgICAgIEhv
cGVmdWxseSB0aGUgbGFzdCBBdHRyaWJ1dGUtcmVsYXRlZCByZWZhY3RvciBmb3IgYXdoaWxlLgor
CisgICAgICAgICogZG9tL0F0dHIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXR0cjo6c2V0VmFs
dWUpOiBVcGRhdGUgdG8gY2FsbCBkaWRNb2RpZnlBdHRyaWJ1dGUgaW5zdGVhZAorICAgICAgICBv
ZiBhdHRyaWJ1dGVDaGFuZ2VkLgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZSk6IEdvdCByaWQgb2YKKyAgICAgICAg
cmVtb3ZlQXR0cmlidXRlSW50ZXJuYWwgYXMgbW9zdCBvZiB0aGF0IGxvZ2ljIG1vdmVkIGJhY2sg
aW50bworICAgICAgICBOYW1lZE5vZGVNYXA6OnJlbW92ZUF0dHJpYnV0ZS4KKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVybmFsKTogUmVvcmdhbml6ZWQgdG8gcmVh
ZCBiZXR0ZXIKKyAgICAgICAgbm93IHRoYXQgb25seSBzb21lIGNhc2VzIHJlc3VsdCBpbiBjYWxs
cyB0byB3aWxsL2RpZE1vZGlmeUF0dHJpYnV0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OndpbGxNb2RpZnlBdHRyaWJ1dGUpOiBVbi1pbmxpbmVkIGFuZCBhZGRlZAorICAgICAgICBpbmNE
T01UcmVlVmVyc2lvbiBhbmQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uIGNhbGxzLgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6ZGlkTW9kaWZ5QXR0cmlidXRlKTogTmV3IG1ldGhvZCB3aGlj
aCBlbmNhcHN1bGF0ZXMKKyAgICAgICAgY2FsbGluZyBhdHRyaWJ1dGVDaGFuZ2VkLCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24sIGFuZCBNdXRhdGlvbkV2ZW50cy4KKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OmRpZFJlbW92ZUF0dHJpYnV0ZSk6IE5ldyBtZXRob2Qgd2hpY2ggZW5jYXBzdWxh
dGVzCisgICAgICAgIGNhbGxpbmcgYXR0cmlidXRlQ2hhbmdlZCwgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLCBhbmQgTXV0YXRpb25FdmVudHMuCisgICAgICAgIFNlcGFyYXRlIGZyb20gZGlkTW9k
aWZ5QXR0cmlidXRlIGJlY2F1c2UgaXQgaGFzIHNwZWNpYWwgaGFuZGxpbmcgb2YKKyAgICAgICAg
dGhlIHJlbW92ZWQgQXR0cmlidXRlJ3MgdmFsdWUuCisgICAgICAgICogZG9tL0VsZW1lbnQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OndpbGxSZW1vdmVBdHRyaWJ1dGUpOiBOZXcgbWV0
aG9kIHdoaWNoIGRlbGVnYXRlcyB0bworICAgICAgICB3aWxsTW9kaWZ5QXR0cmlidXRlIGFzIGFw
cHJvcHJpYXRlLgorICAgICAgICAqIGRvbS9OYW1lZE5vZGVNYXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TmFtZWROb2RlTWFwOjpzZXROYW1lZEl0ZW0pOiBTaW1wbGlmaWVkLgorICAgICAgICAo
V2ViQ29yZTo6TmFtZWROb2RlTWFwOjpyZW1vdmVOYW1lZEl0ZW0pOiBTaW1wbGlmaWVkLgorICAg
ICAgICAoV2ViQ29yZTo6TmFtZWROb2RlTWFwOjphZGRBdHRyaWJ1dGUpOiBBZGRlZCBjYWxscyB0
byB3aWxsL2RpZE1vZGlmeUF0dHJpYnV0ZS4KKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTm9kZU1h
cDo6cmVtb3ZlQXR0cmlidXRlKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpOYW1lZE5vZGVN
YXA6OnJlcGxhY2VBdHRyaWJ1dGUpOiBkaXR0by4KKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9T
VkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyLmg6IFJldmVydGVkIGNoYW5nZXMKKyAgICAg
ICAgbWFkZSBpbiByMTAzNDUyIG5vdyB0aGF0IGFkZEF0dHJpYnV0ZS9yZW1vdmVBdHRyaWJ1dGUg
b25jZSBhZ2FpbgorICAgICAgICBjYWxsIGF0dHJpYnV0ZUNoYW5nZWQgYXBwcm9wcmlhdGVseS4K
KwogMjAxMS0xMi0yMSAgQW5kcmVhcyBLbGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEwMzQ3My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9BdHRyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAppbmRleCAy
ZTExZmYwMmFkMjZkYzMxOWRiMmQ5NzNiNWI1NDVmMGMzNjQ2NzQ5Li42OTMwZmExZGMwNjA1MDY4
Y2U1NTRmYzEyNTAzZTJmYjc3NWVhZDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
QXR0ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCkBAIC0xNDAsNyArMTQw
LDcgQEAgdm9pZCBBdHRyOjpzZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBFeGNl
cHRpb25Db2RlJikKICAgICBzZXRWYWx1ZSh2YWx1ZSk7CiAKICAgICBpZiAobV9lbGVtZW50KQot
ICAgICAgICBtX2VsZW1lbnQtPmF0dHJpYnV0ZUNoYW5nZWQobV9hdHRyaWJ1dGUuZ2V0KCkpOwor
ICAgICAgICBtX2VsZW1lbnQtPmRpZE1vZGlmeUF0dHJpYnV0ZShtX2F0dHJpYnV0ZS5nZXQoKSk7
CiB9CiAKIHZvaWQgQXR0cjo6c2V0Tm9kZVZhbHVlKGNvbnN0IFN0cmluZyYgdiwgRXhjZXB0aW9u
Q29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggMjUwNTMxZmEyNDVhZDEwNDZmYjc1
YmYxMmNjY2ZiZTZiNTA5ZjI3YS4uMThlYmY4MDMyOTgwZTExZjhlNzI2YmNlOTc4ODVmNTc2ZTBi
MDRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTc4LDUwICsxNzgsMTIgQEAgdm9pZCBF
bGVtZW50Ojpjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGllcyhjb25zdCBFbGVtZW50KikKIHsKIH0K
IAotI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCi12b2lkIEVsZW1lbnQ6OmVucXVldWVB
dHRyaWJ1dGVzTXV0YXRpb25SZWNvcmRJZlJlcXVlc3RlZChjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlKQotewotICAgIGlmIChp
c1N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSgpKQotICAgICAgICByZXR1cm47Ci0gICAgaWYg
KE93blB0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gbXV0YXRpb25SZWNpcGllbnRz
ID0gTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyZWF0ZUZvckF0dHJpYnV0ZXNNdXRh
dGlvbih0aGlzLCBhdHRyaWJ1dGVOYW1lKSkKLSAgICAgICAgbXV0YXRpb25SZWNpcGllbnRzLT5l
bnF1ZXVlTXV0YXRpb25SZWNvcmQoTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUF0dHJpYnV0ZXModGhp
cywgYXR0cmlidXRlTmFtZSwgb2xkVmFsdWUpKTsKLX0KLSNlbmRpZgotCiB2b2lkIEVsZW1lbnQ6
OnJlbW92ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQogewogICAgIGlmICgh
bV9hdHRyaWJ1dGVNYXApCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlbW92ZUF0dHJpYnV0ZUlu
dGVybmFsKG1fYXR0cmlidXRlTWFwLT5nZXRBdHRyaWJ1dGVJdGVtSW5kZXgobmFtZSkpOwotfQot
Ci1pbmxpbmUgdm9pZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVJbnRlcm5hbChzaXplX3QgaW5k
ZXgpCi17Ci0gICAgQVNTRVJUKG1fYXR0cmlidXRlTWFwKTsKLSAgICBpZiAoaW5kZXggPT0gbm90
Rm91bmQpCi0gICAgICAgIHJldHVybjsKLQotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbE1vZGlmeURPTUF0dHIoZG9jdW1lbnQoKSwgdGhpcyk7Ci0KLSAgICBSZWZQdHI8QXR0cmli
dXRlPiBhdHRyaWJ1dGUgPSBtX2F0dHJpYnV0ZU1hcC0+YXR0cmlidXRlSXRlbShpbmRleCk7Ci0K
LSAgICBpZiAoIWF0dHJpYnV0ZS0+aXNOdWxsKCkpCi0gICAgICAgIHdpbGxNb2RpZnlBdHRyaWJ1
dGUoYXR0cmlidXRlLT5uYW1lKCksIGF0dHJpYnV0ZS0+dmFsdWUoKSwgbnVsbEF0b20pOwotCi0g
ICAgbV9hdHRyaWJ1dGVNYXAtPnJlbW92ZUF0dHJpYnV0ZShpbmRleCk7Ci0KLSAgICBpZiAoIWF0
dHJpYnV0ZS0+aXNOdWxsKCkpIHsKLSAgICAgICAgQXRvbWljU3RyaW5nIHNhdmVkVmFsdWUgPSBh
dHRyaWJ1dGUtPnZhbHVlKCk7Ci0gICAgICAgIGF0dHJpYnV0ZS0+c2V0VmFsdWUobnVsbEF0b20p
OwotICAgICAgICBhdHRyaWJ1dGVDaGFuZ2VkKGF0dHJpYnV0ZS5nZXQoKSk7Ci0gICAgICAgIGF0
dHJpYnV0ZS0+c2V0VmFsdWUoc2F2ZWRWYWx1ZSk7Ci0gICAgfQotCi0gICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVET01BdHRyKGRvY3VtZW50KCksIHRoaXMsIGF0dHJpYnV0
ZS0+bmFtZSgpLmxvY2FsTmFtZSgpKTsKLQotICAgIGlmICghaXNTeW5jaHJvbml6aW5nU3R5bGVB
dHRyaWJ1dGUoKSkKLSAgICAgICAgZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCgpOworICAg
IG1fYXR0cmlidXRlTWFwLT5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7CiB9CiAKIHZvaWQgRWxlbWVu
dDo6c2V0Qm9vbGVhbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBib29sIHZh
bHVlKQpAQCAtNjYzLDM2ICs2MjUsMjYgQEAgdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIAogaW5s
aW5lIHZvaWQgRWxlbWVudDo6c2V0QXR0cmlidXRlSW50ZXJuYWwoc2l6ZV90IGluZGV4LCBjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogeworICAg
IEF0dHJpYnV0ZSogb2xkID0gaW5kZXggIT0gbm90Rm91bmQgPyBtX2F0dHJpYnV0ZU1hcC0+YXR0
cmlidXRlSXRlbShpbmRleCkgOiAwOwogICAgIGlmICh2YWx1ZS5pc051bGwoKSkgewotICAgICAg
ICByZW1vdmVBdHRyaWJ1dGVJbnRlcm5hbChpbmRleCk7CisgICAgICAgIGlmIChvbGQpCisgICAg
ICAgICAgICBtX2F0dHJpYnV0ZU1hcC0+cmVtb3ZlQXR0cmlidXRlKGluZGV4KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIEF0dHJpYnV0ZSogb2xkID0gaW5kZXggIT0gbm90Rm91bmQg
PyBtX2F0dHJpYnV0ZU1hcC0+YXR0cmlidXRlSXRlbShpbmRleCkgOiAwOwotCi0gICAgaWYgKCFp
c1N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSgpKQotICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxNb2RpZnlET01BdHRyKGRvY3VtZW50KCksIHRoaXMpOwotCi0gICAgZG9j
dW1lbnQoKS0+aW5jRE9NVHJlZVZlcnNpb24oKTsKKyAgICBpZiAoIW9sZCkgeworICAgICAgICBt
X2F0dHJpYnV0ZU1hcC0+YWRkQXR0cmlidXRlKGNyZWF0ZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkp
OworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgd2lsbE1vZGlmeUF0dHJpYnV0ZShuYW1l
LCBvbGQgPyBvbGQtPnZhbHVlKCkgOiBudWxsQXRvbSwgdmFsdWUpOwogCi0gICAgaWYgKCFvbGQp
IHsKLSAgICAgICAgUmVmUHRyPEF0dHJpYnV0ZT4gYXR0cmlidXRlID0gY3JlYXRlQXR0cmlidXRl
KG5hbWUsIHZhbHVlKTsKLSAgICAgICAgbV9hdHRyaWJ1dGVNYXAtPmFkZEF0dHJpYnV0ZShhdHRy
aWJ1dGUpOwotICAgICAgICBhdHRyaWJ1dGVDaGFuZ2VkKGF0dHJpYnV0ZS5nZXQoKSk7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgaWYgKEF0dHIqIGF0dHJOb2RlID0gb2xkLT5hdHRyKCkpCi0gICAg
ICAgICAgICBhdHRyTm9kZS0+c2V0VmFsdWUodmFsdWUpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBvbGQtPnNldFZhbHVlKHZhbHVlKTsKLSAgICAgICAgYXR0cmlidXRlQ2hhbmdlZChvbGQp
OwotICAgIH0KKyAgICBpZiAoQXR0ciogYXR0ck5vZGUgPSBvbGQtPmF0dHIoKSkKKyAgICAgICAg
YXR0ck5vZGUtPnNldFZhbHVlKHZhbHVlKTsKKyAgICBlbHNlCisgICAgICAgIG9sZC0+c2V0VmFs
dWUodmFsdWUpOwogCi0gICAgaWYgKCFpc1N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSgpKSB7
Ci0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTW9kaWZ5RE9NQXR0cihkb2N1
bWVudCgpLCB0aGlzLCBuYW1lLmxvY2FsTmFtZSgpLCB2YWx1ZSk7Ci0gICAgICAgIGRpc3BhdGNo
U3VidHJlZU1vZGlmaWVkRXZlbnQoKTsKLSAgICB9CisgICAgZGlkTW9kaWZ5QXR0cmlidXRlKG9s
ZCk7CiB9CiAKIFBhc3NSZWZQdHI8QXR0cmlidXRlPiBFbGVtZW50OjpjcmVhdGVBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKQEAg
LTE0OTQsNyArMTQ0NiwxMSBAQCB2b2lkIEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZShjb25zdCBT
dHJpbmcmIG5hbWUpCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyBsb2NhbE5hbWUgPSBz
aG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKHRoaXMpID8gbmFtZS5sb3dlcigpIDogbmFtZTsKLSAg
ICByZW1vdmVBdHRyaWJ1dGVJbnRlcm5hbChtX2F0dHJpYnV0ZU1hcC0+Z2V0QXR0cmlidXRlSXRl
bUluZGV4KGxvY2FsTmFtZSwgZmFsc2UpKTsKKyAgICBzaXplX3QgaW5kZXggPSBtX2F0dHJpYnV0
ZU1hcC0+Z2V0QXR0cmlidXRlSXRlbUluZGV4KGxvY2FsTmFtZSwgZmFsc2UpOworICAgIGlmIChp
bmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9hdHRyaWJ1dGVNYXAt
PnJlbW92ZUF0dHJpYnV0ZShpbmRleCk7CiB9CiAKIHZvaWQgRWxlbWVudDo6cmVtb3ZlQXR0cmli
dXRlTlMoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgbG9jYWxOYW1l
KQpAQCAtMTk5Miw0ICsxOTQ4LDUxIEBAIGJvb2wgRWxlbWVudDo6ZmFzdEF0dHJpYnV0ZUxvb2t1
cEFsbG93ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIH0KICNlbmRpZgogCit2
b2lkIEVsZW1lbnQ6OndpbGxNb2RpZnlBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdW
YWx1ZSkKK3sKKyAgICBkb2N1bWVudCgpLT5pbmNET01UcmVlVmVyc2lvbigpOworCisgICAgaWYg
KGlzSWRBdHRyaWJ1dGVOYW1lKG5hbWUpKQorICAgICAgICB1cGRhdGVJZChvbGRWYWx1ZSwgbmV3
VmFsdWUpOworCisjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKKyAgICBpZiAoIWlzU3lu
Y2hyb25pemluZ1N0eWxlQXR0cmlidXRlKCkpIHsKKyAgICAgICAgaWYgKE93blB0cjxNdXRhdGlv
bk9ic2VydmVySW50ZXJlc3RHcm91cD4gcmVjaXBpZW50cyA9IE11dGF0aW9uT2JzZXJ2ZXJJbnRl
cmVzdEdyb3VwOjpjcmVhdGVGb3JBdHRyaWJ1dGVzTXV0YXRpb24odGhpcywgbmFtZSkpCisgICAg
ICAgICAgICByZWNpcGllbnRzLT5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoTXV0YXRpb25SZWNvcmQ6
OmNyZWF0ZUF0dHJpYnV0ZXModGhpcywgbmFtZSwgb2xkVmFsdWUpKTsKKyAgICB9CisjZW5kaWYK
KworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKCFpc1N5bmNocm9uaXppbmdTdHlsZUF0
dHJpYnV0ZSgpKQorICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxNb2RpZnlE
T01BdHRyKGRvY3VtZW50KCksIHRoaXMpOworI2VuZGlmCit9CisKK3ZvaWQgRWxlbWVudDo6ZGlk
TW9kaWZ5QXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKK3sKKyAgICBhdHRyaWJ1dGVDaGFuZ2Vk
KGF0dHIpOworCisgICAgaWYgKCFpc1N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSgpKSB7Cisg
ICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTW9kaWZ5RE9NQXR0cihkb2N1bWVu
dCgpLCB0aGlzLCBhdHRyLT5uYW1lKCkubG9jYWxOYW1lKCksIGF0dHItPnZhbHVlKCkpOworICAg
ICAgICBkaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2ZW50KCk7CisgICAgfQorfQorCit2b2lkIEVs
ZW1lbnQ6OmRpZFJlbW92ZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCit7CisgICAgaWYgKGF0
dHItPmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBBdG9taWNTdHJpbmcgc2F2ZWRW
YWx1ZSA9IGF0dHItPnZhbHVlKCk7CisgICAgYXR0ci0+c2V0VmFsdWUobnVsbEF0b20pOworICAg
IGF0dHJpYnV0ZUNoYW5nZWQoYXR0cik7CisgICAgYXR0ci0+c2V0VmFsdWUoc2F2ZWRWYWx1ZSk7
CisKKyAgICBpZiAoIWlzU3luY2hyb25pemluZ1N0eWxlQXR0cmlidXRlKCkpIHsKKyAgICAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVET01BdHRyKGRvY3VtZW50KCksIHRo
aXMsIGF0dHItPm5hbWUoKS5sb2NhbE5hbWUoKSk7CisgICAgICAgIGRpc3BhdGNoU3VidHJlZU1v
ZGlmaWVkRXZlbnQoKTsKKyAgICB9Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKaW5kZXggYTYzNWYwNmViYTBlZGQwZmIxZTNmMThkNDFhMWEwNzA4M2Q2YTQy
NC4uMjk4MTQzMzZiNWNkMTEwNDJhZDdmZjE4YzNjMWE3OGIyMTYxMjZjNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oCkBAIC0yNjUsNyArMjY1LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB0
aXRsZSgpIGNvbnN0OwogCiAgICAgdm9pZCB1cGRhdGVJZChjb25zdCBBdG9taWNTdHJpbmcmIG9s
ZElkLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld0lkKTsKKwogICAgIHZvaWQgd2lsbE1vZGlmeUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSk7CisgICAgdm9pZCB3aWxsUmVtb3ZlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKTsK
KyAgICB2b2lkIGRpZE1vZGlmeUF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKKyAgICB2b2lkIGRpZFJl
bW92ZUF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKIAogICAgIExheW91dFNpemUgbWluaW11bVNpemVG
b3JSZXNpemluZygpIGNvbnN0OwogICAgIHZvaWQgc2V0TWluaW11bVNpemVGb3JSZXNpemluZyhj
b25zdCBMYXlvdXRTaXplJik7CkBAIC0zOTYsNyArNDAwLDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Q7CiAKICAgICB2b2lkIHNl
dEF0dHJpYnV0ZUludGVybmFsKHNpemVfdCBpbmRleCwgY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOwotICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlSW50ZXJu
YWwoc2l6ZV90IGluZGV4KTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8QXR0cmlidXRlPiBjcmVh
dGVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFs
dWUpOwogICAgIAogI2lmbmRlZiBOREVCVUcKQEAgLTQzMywxMCArNDM2LDYgQEAgcHJpdmF0ZToK
IAogICAgIFNwZWxsY2hlY2tBdHRyaWJ1dGVTdGF0ZSBzcGVsbGNoZWNrQXR0cmlidXRlU3RhdGUo
KSBjb25zdDsKIAotI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCi0gICAgdm9pZCBlbnF1
ZXVlQXR0cmlidXRlc011dGF0aW9uUmVjb3JkSWZSZXF1ZXN0ZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUpOwotI2VuZGlmCi0KIHByaXZhdGU6CiAg
ICAgbXV0YWJsZSBSZWZQdHI8TmFtZWROb2RlTWFwPiBtX2F0dHJpYnV0ZU1hcDsKIH07CkBAIC01
MTgsMTYgKzUxNywxMCBAQCBpbmxpbmUgdm9pZCBFbGVtZW50Ojp1cGRhdGVJZChjb25zdCBBdG9t
aWNTdHJpbmcmIG9sZElkLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ldwogICAgICAgICBzY29wZS0+
YWRkRWxlbWVudEJ5SWQobmV3SWQsIHRoaXMpOwogfQogCi1pbmxpbmUgdm9pZCBFbGVtZW50Ojp3
aWxsTW9kaWZ5QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCitpbmxpbmUg
dm9pZCBFbGVtZW50Ojp3aWxsUmVtb3ZlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYgKGlzSWRBdHRyaWJ1dGVO
YW1lKG5hbWUpKQotICAgICAgICB1cGRhdGVJZChvbGRWYWx1ZSwgbmV3VmFsdWUpOwotCi0gICAg
Ly8gRklYTUU6IFNob3VsZCBwcm9iYWJseSBjYWxsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbE1vZGlmeURPTUF0dHIgaGVyZS4KLQotI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMp
Ci0gICAgZW5xdWV1ZUF0dHJpYnV0ZXNNdXRhdGlvblJlY29yZElmUmVxdWVzdGVkKG5hbWUsIG9s
ZFZhbHVlKTsKLSNlbmRpZgorICAgIGlmICghdmFsdWUuaXNOdWxsKCkpCisgICAgICAgIHdpbGxN
b2RpZnlBdHRyaWJ1dGUobmFtZSwgdmFsdWUsIG51bGxBdG9tKTsKIH0KIAogaW5saW5lIGJvb2wg
RWxlbWVudDo6ZmFzdEhhc0F0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmNwcAppbmRleCA4M2Q1ZjAzYjg0YzUyNTk2N2Iw
YjcwNDliODI3ODkyOTUwZDJmY2FhLi5mZDYzZDdhYjNhZDUyNGE2ZTZiOTc3OWU4ZGI5NTFhMzUw
YmE3MmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmNwcApAQCAtMTIwLDggKzEyMCw2
IEBAIFBhc3NSZWZQdHI8Tm9kZT4gTmFtZWROb2RlTWFwOjpzZXROYW1lZEl0ZW0oTm9kZSogbm9k
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIG1f
ZWxlbWVudC0+d2lsbE1vZGlmeUF0dHJpYnV0ZShhdHRyaWJ1dGUtPm5hbWUoKSwgb2xkQXR0cmli
dXRlID8gb2xkQXR0cmlidXRlLT52YWx1ZSgpIDogbnVsbEF0b20sIGF0dHJpYnV0ZS0+dmFsdWUo
KSk7Ci0KICAgICBSZWZQdHI8QXR0cj4gb2xkQXR0cjsKICAgICBpZiAob2xkQXR0cmlidXRlKSB7
CiAgICAgICAgIG9sZEF0dHIgPSBvbGRBdHRyaWJ1dGUtPmNyZWF0ZUF0dHJJZk5lZWRlZChtX2Vs
ZW1lbnQpOwpAQCAtMTI5LDExICsxMjcsNiBAQCBQYXNzUmVmUHRyPE5vZGU+IE5hbWVkTm9kZU1h
cDo6c2V0TmFtZWRJdGVtKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIH0gZWxz
ZQogICAgICAgICBhZGRBdHRyaWJ1dGUoYXR0cmlidXRlKTsKIAotICAgIG1fZWxlbWVudC0+YXR0
cmlidXRlQ2hhbmdlZChhdHRyaWJ1dGUpOwotCi0gICAgaWYgKGF0dHJpYnV0ZS0+bmFtZSgpICE9
IHN0eWxlQXR0cikKLSAgICAgICAgbV9lbGVtZW50LT5kaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2
ZW50KCk7Ci0KICAgICByZXR1cm4gb2xkQXR0ci5yZWxlYXNlKCk7CiB9CiAKQEAgLTE1MiwyNCAr
MTQ1LDEwIEBAIFBhc3NSZWZQdHI8Tm9kZT4gTmFtZWROb2RlTWFwOjpyZW1vdmVOYW1lZEl0ZW0o
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgRXhjZXB0CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KIAotICAgIFJlZlB0cjxBdHRyaWJ1dGU+IGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZUl0ZW0oaW5k
ZXgpOwotICAgIFJlZlB0cjxBdHRyPiBhdHRyID0gYXR0cmlidXRlLT5jcmVhdGVBdHRySWZOZWVk
ZWQobV9lbGVtZW50KTsKLQotICAgIGlmICghYXR0cmlidXRlLT5pc051bGwoKSkKLSAgICAgICAg
bV9lbGVtZW50LT53aWxsTW9kaWZ5QXR0cmlidXRlKGF0dHJpYnV0ZS0+bmFtZSgpLCBhdHRyaWJ1
dGUtPnZhbHVlKCksIG51bGxBdG9tKTsKKyAgICBSZWZQdHI8QXR0cj4gYXR0ciA9IG1fYXR0cmli
dXRlc1tpbmRleF0tPmNyZWF0ZUF0dHJJZk5lZWRlZChtX2VsZW1lbnQpOwogCiAgICAgcmVtb3Zl
QXR0cmlidXRlKGluZGV4KTsKIAotICAgIGlmICghYXR0cmlidXRlLT5pc051bGwoKSkgewotICAg
ICAgICBBdG9taWNTdHJpbmcgc2F2ZWRWYWx1ZSA9IGF0dHJpYnV0ZS0+dmFsdWUoKTsKLSAgICAg
ICAgYXR0cmlidXRlLT5zZXRWYWx1ZShudWxsQXRvbSk7Ci0gICAgICAgIG1fZWxlbWVudC0+YXR0
cmlidXRlQ2hhbmdlZChhdHRyaWJ1dGUuZ2V0KCkpOwotICAgICAgICBhdHRyaWJ1dGUtPnNldFZh
bHVlKHNhdmVkVmFsdWUpOwotICAgIH0KLQotICAgIGlmIChhdHRyaWJ1dGUtPm5hbWUoKSAhPSBz
dHlsZUF0dHIpCi0gICAgICAgIG1fZWxlbWVudC0+ZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVu
dCgpOwotCiAgICAgcmV0dXJuIGF0dHIucmVsZWFzZSgpOwogfQogCkBAIC0yNTQsMzIgKzIzMyw1
NiBAQCB2b2lkIE5hbWVkTm9kZU1hcDo6c2V0QXR0cmlidXRlcyhjb25zdCBOYW1lZE5vZGVNYXAm
IG90aGVyKQogICAgICAgICBtX2VsZW1lbnQtPmF0dHJpYnV0ZUNoYW5nZWQobV9hdHRyaWJ1dGVz
W2ldLmdldCgpLCB0cnVlKTsKIH0KIAotdm9pZCBOYW1lZE5vZGVNYXA6OmFkZEF0dHJpYnV0ZShQ
YXNzUmVmUHRyPEF0dHJpYnV0ZT4gYXR0cmlidXRlKQordm9pZCBOYW1lZE5vZGVNYXA6OmFkZEF0
dHJpYnV0ZShQYXNzUmVmUHRyPEF0dHJpYnV0ZT4gcHJwQXR0cmlidXRlKQogeworICAgIFJlZlB0
cjxBdHRyaWJ1dGU+IGF0dHJpYnV0ZSA9IHBycEF0dHJpYnV0ZTsKKworICAgIGlmIChtX2VsZW1l
bnQpCisgICAgICAgIG1fZWxlbWVudC0+d2lsbE1vZGlmeUF0dHJpYnV0ZShhdHRyaWJ1dGUtPm5h
bWUoKSwgbnVsbEF0b20sIGF0dHJpYnV0ZS0+dmFsdWUoKSk7CisKICAgICBtX2F0dHJpYnV0ZXMu
YXBwZW5kKGF0dHJpYnV0ZSk7Ci0gICAgaWYgKEF0dHIqIGF0dHIgPSBtX2F0dHJpYnV0ZXMubGFz
dCgpLT5hdHRyKCkpCisgICAgaWYgKEF0dHIqIGF0dHIgPSBhdHRyaWJ1dGUtPmF0dHIoKSkKICAg
ICAgICAgYXR0ci0+bV9lbGVtZW50ID0gbV9lbGVtZW50OworCisgICAgaWYgKG1fZWxlbWVudCkK
KyAgICAgICAgbV9lbGVtZW50LT5kaWRNb2RpZnlBdHRyaWJ1dGUoYXR0cmlidXRlLmdldCgpKTsK
IH0KIAogdm9pZCBOYW1lZE5vZGVNYXA6OnJlbW92ZUF0dHJpYnV0ZShzaXplX3QgaW5kZXgpCiB7
CiAgICAgQVNTRVJUKGluZGV4IDwgbGVuZ3RoKCkpOwogCi0gICAgaWYgKEF0dHIqIGF0dHIgPSBt
X2F0dHJpYnV0ZXNbaW5kZXhdLT5hdHRyKCkpCi0gICAgICAgIGF0dHItPm1fZWxlbWVudCA9IDA7
CisgICAgUmVmUHRyPEF0dHJpYnV0ZT4gYXR0cmlidXRlID0gbV9hdHRyaWJ1dGVzW2luZGV4XTsK
IAorICAgIGlmIChtX2VsZW1lbnQpCisgICAgICAgIG1fZWxlbWVudC0+d2lsbFJlbW92ZUF0dHJp
YnV0ZShhdHRyaWJ1dGUtPm5hbWUoKSwgYXR0cmlidXRlLT52YWx1ZSgpKTsKKworICAgIGlmIChB
dHRyKiBhdHRyID0gYXR0cmlidXRlLT5hdHRyKCkpCisgICAgICAgIGF0dHItPm1fZWxlbWVudCA9
IDA7CiAgICAgbV9hdHRyaWJ1dGVzLnJlbW92ZShpbmRleCk7CisKKyAgICBpZiAobV9lbGVtZW50
KQorICAgICAgICBtX2VsZW1lbnQtPmRpZFJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGUuZ2V0KCkp
OwogfQogCi12b2lkIE5hbWVkTm9kZU1hcDo6cmVwbGFjZUF0dHJpYnV0ZShzaXplX3QgaW5kZXgs
IFBhc3NSZWZQdHI8QXR0cmlidXRlPiBhdHRyaWJ1dGUpCit2b2lkIE5hbWVkTm9kZU1hcDo6cmVw
bGFjZUF0dHJpYnV0ZShzaXplX3QgaW5kZXgsIFBhc3NSZWZQdHI8QXR0cmlidXRlPiBwcnBBdHRy
aWJ1dGUpCiB7CiAgICAgQVNTRVJUKGluZGV4IDwgbGVuZ3RoKCkpOwogCi0gICAgaWYgKEF0dHIq
IGF0dHIgPSBtX2F0dHJpYnV0ZXNbaW5kZXhdLT5hdHRyKCkpCisgICAgUmVmUHRyPEF0dHJpYnV0
ZT4gYXR0cmlidXRlID0gcHJwQXR0cmlidXRlOworICAgIEF0dHJpYnV0ZSogb2xkID0gbV9hdHRy
aWJ1dGVzW2luZGV4XS5nZXQoKTsKKworICAgIGlmIChtX2VsZW1lbnQpCisgICAgICAgIG1fZWxl
bWVudC0+d2lsbE1vZGlmeUF0dHJpYnV0ZShhdHRyaWJ1dGUtPm5hbWUoKSwgb2xkLT52YWx1ZSgp
LCBhdHRyaWJ1dGUtPnZhbHVlKCkpOworCisgICAgaWYgKEF0dHIqIGF0dHIgPSBvbGQtPmF0dHIo
KSkKICAgICAgICAgYXR0ci0+bV9lbGVtZW50ID0gMDsKICAgICBtX2F0dHJpYnV0ZXNbaW5kZXhd
ID0gYXR0cmlidXRlOwotICAgIGlmIChBdHRyKiBhdHRyID0gbV9hdHRyaWJ1dGVzW2luZGV4XS0+
YXR0cigpKQorICAgIGlmIChBdHRyKiBhdHRyID0gYXR0cmlidXRlLT5hdHRyKCkpCiAgICAgICAg
IGF0dHItPm1fZWxlbWVudCA9IG1fZWxlbWVudDsKKworICAgIGlmIChtX2VsZW1lbnQpCisgICAg
ICAgIG1fZWxlbWVudC0+ZGlkTW9kaWZ5QXR0cmlidXRlKGF0dHJpYnV0ZS5nZXQoKSk7CiB9CiAK
IHZvaWQgTmFtZWROb2RlTWFwOjpzZXRDbGFzcyhjb25zdCBTdHJpbmcmIGNsYXNzU3RyKSAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVy
dHlTeW5jaHJvbml6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGVkUHJvcGVydHlTeW5jaHJvbml6ZXIuaAppbmRleCAwZTdkMGMzYTNiZTk3ODkzOWE2NTBmNDUy
MGNkZDIyNTdhZTZjMjY3Li5jYjc4OWYzZjE4MWUxNmM2YTgzNGVjOTk1NzZkYmFlZjM5ODdiMTU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBy
b3BlcnR5U3luY2hyb25pemVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oCkBAIC0zNCwxNiArMzQsMTggQEAgc3Ry
dWN0IFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI8dHJ1ZT4gewogICAgIHN0YXRpYyB2
b2lkIHN5bmNocm9uaXplKFNWR0VsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiAgICAgewogICAgICAg
ICAvLyBJZiB0aGUgYXR0cmlidXRlIGFscmVhZHkgZXhpc3RzIG9uIHRoZSBlbGVtZW50LCB3ZSBj
aGFuZ2UgdGhlCi0gICAgICAgIC8vIEF0dHJpYnV0ZSBkaXJlY3RseSByYXRoZXIgdGhhbiBnb2lu
ZyB0aHJvdWdoIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZSB0bwotICAgICAgICAvLyBhdm9pZCBhIGNh
bGwgdG8gRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCB0aGF0IGNvdWxkIGNhdXNlIHRoZQotICAg
ICAgICAvLyBTVkdFbGVtZW50IHRvIGVycm9uZW91c2x5IHJlc2V0IGl0cyBwcm9wZXJ0aWVzLgor
ICAgICAgICAvLyBBdHRyaWJ1dGUgZGlyZWN0bHkgdG8gYXZvaWQgYSBjYWxsIHRvIEVsZW1lbnQ6
OmF0dHJpYnV0ZUNoYW5nZWQKKyAgICAgICAgLy8gdGhhdCBjb3VsZCBjYXVzZSB0aGUgU1ZHRWxl
bWVudCB0byBlcnJvbmVvdXNseSByZXNldCBpdHMgcHJvcGVydGllcy4KICAgICAgICAgLy8gc3Zn
L2RvbS9TVkdTdHJpbmdMaXN0LWJhc2ljcy54aHRtbCBleGVyY2lzZXMgdGhpcyBiZWhhdmlvci4K
ICAgICAgICAgTmFtZWROb2RlTWFwKiBuYW1lZEF0dHJNYXAgPSBvd25lckVsZW1lbnQtPmF0dHJp
YnV0ZXMoZmFsc2UpOwogICAgICAgICBBdHRyaWJ1dGUqIG9sZCA9IG5hbWVkQXR0ck1hcC0+Z2V0
QXR0cmlidXRlSXRlbShhdHRyTmFtZSk7Ci0gICAgICAgIGlmIChvbGQpCisgICAgICAgIGlmIChv
bGQgJiYgdmFsdWUuaXNOdWxsKCkpCisgICAgICAgICAgICBuYW1lZEF0dHJNYXAtPnJlbW92ZUF0
dHJpYnV0ZShvbGQtPm5hbWUoKSk7CisgICAgICAgIGVsc2UgaWYgKCFvbGQgJiYgIXZhbHVlLmlz
TnVsbCgpKQorICAgICAgICAgICAgbmFtZWRBdHRyTWFwLT5hZGRBdHRyaWJ1dGUob3duZXJFbGVt
ZW50LT5jcmVhdGVBdHRyaWJ1dGUoYXR0ck5hbWUsIHZhbHVlKSk7CisgICAgICAgIGVsc2UgaWYg
KG9sZCAmJiAhdmFsdWUuaXNOdWxsKCkpCiAgICAgICAgICAgICBvbGQtPnNldFZhbHVlKHZhbHVl
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgb3duZXJFbGVtZW50LT5zZXRBdHRyaWJ1dGUo
YXR0ck5hbWUsIHZhbHVlKTsKKwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyNWI0MmE4NGQxMzcyNWNh
Y2JhMTcxYmYwNWE5N2MyZDNiYmYzZDczLi44MGFkNzEwZWE3MTNjZGY5YTYwY2Q1ZDZiNzBlMzU5
OGQwNjVhZDQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMTItMjEgIEFkYW0gS2xlaW4g
IDxhZGFta0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWluaW1pemUgY2FsbHNpdGVzIGFuZCBk
dXBsaWNhdGlvbiBvZiBiZWZvcmUvYWZ0ZXIgYWR2aWNlIGZvciBhdHRyaWJ1dGUgbXV0YXRpb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTA1NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVj
dG9yL2RlYnVnZ2VyL2RvbS1icmVha3BvaW50cy5odG1sOiBBZGQgdGVzdHMgZm9yIGJyZWFrcG9p
bnRzCisgICAgICAgIGR1ZSB0byBtdXRhdGlvbiBvZiBBdHRyIG5vZGVzL05hbWVkTm9kZUxpc3Rz
LgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9kZWJ1Z2dlci9kb20tYnJl
YWtwb2ludHMtZXhwZWN0ZWQudHh0OgorCiAyMDExLTEyLTIxICBTaGFkaSBLaGFsZWsgIDxzaGFk
aUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVmlkZW8gZm9ybWF0IHl1djQyMnAgZG9lc24ndCBz
aG93IHByb3Blcmx5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L2RvbS1icmVha3BvaW50cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2Rv
bS1icmVha3BvaW50cy5odG1sCmluZGV4IDRlZjdhYTYyODNhNTlmYTYwM2E4NmU2M2U3YWIwZGY5
ZGQ2MzdjNWEuLmU0MThhMmEwYzNjNzY4ZGY2NWRhY2E0MDVhNDM1MjAwNGQxNWZhZWEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kb20tYnJlYWtwb2ludHMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZG9tLWJyZWFrcG9pbnRzLmh0
bWwKQEAgLTE4LDYgKzE4LDIwIEBAIGZ1bmN0aW9uIG1vZGlmeUF0dHJpYnV0ZShlbGVtZW50SWQs
IG5hbWUsIHZhbHVlKQogICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0K
IAorZnVuY3Rpb24gbW9kaWZ5QXR0ck5vZGUoZWxlbWVudElkLCBuYW1lLCB2YWx1ZSkKK3sKKyAg
ICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7CisgICAg
ZWxlbWVudC5hdHRyaWJ1dGVzW25hbWVdLnZhbHVlID0gdmFsdWU7Cit9CisKK2Z1bmN0aW9uIHNl
dEF0dHJOb2RlKGVsZW1lbnRJZCwgbmFtZSwgdmFsdWUpCit7CisgICAgdmFyIGVsZW1lbnQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpOworICAgIHZhciBhdHRyID0gZG9jdW1l
bnQuY3JlYXRlQXR0cmlidXRlKG5hbWUpOworICAgIGF0dHIudmFsdWUgPSB2YWx1ZTsKKyAgICBl
bGVtZW50LmF0dHJpYnV0ZXMuc2V0TmFtZWRJdGVtKGF0dHIpOworfQorCiBmdW5jdGlvbiBtb2Rp
ZnlTdHlsZUF0dHJpYnV0ZShlbGVtZW50SWQsIG5hbWUsIHZhbHVlKQogewogICAgIHZhciBlbGVt
ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTsKQEAgLTgwLDEwICs5NCw0
MiBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJUZXN0IHRoYXQgJ0F0dHJpYnV0ZSBNb2RpZmllZCcgYnJlYWtwb2ludCBpcyBoaXQgd2hlbiBt
b2RpZnlpbmcgYXR0cmlidXRlLiIpOwogICAgICAgICAgICAgcGFuZS5fc2V0QnJlYWtwb2ludChy
b290RWxlbWVudCwgcGFuZS5fYnJlYWtwb2ludFR5cGVzLkF0dHJpYnV0ZU1vZGlmaWVkLCB0cnVl
KTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJTZXQgJ0F0dHJpYnV0ZSBN
b2RpZmllZCcgRE9NIGJyZWFrcG9pbnQgb24gcm9vdEVsZW1lbnQuIik7Ci0gICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlV2l0aFRpbWVvdXQoIm1vZGlmeUF0dHJpYnV0ZSgn
cm9vdEVsZW1lbnQnLCAnY2xhc3NOYW1lJywgJ2ZvbycpIik7Ci0gICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdCgiTW9kaWZ5IHJvb3RFbGVtZW50IGNsYXNzTmFtZS4iKTsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2VXaXRoVGltZW91dCgibW9kaWZ5QXR0
cmlidXRlKCdyb290RWxlbWVudCcsICdkYXRhLXRlc3QnLCAnZm9vJykiKTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJNb2RpZnkgcm9vdEVsZW1lbnQgZGF0YS10ZXN0IGF0
dHJpYnV0ZS4iKTsKICAgICAgICAgICAgIHdhaXRVbnRpbFBhdXNlZEFuZER1bXBTdGFjayhzdGVw
Mik7Ci0gICAgCisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKGNhbGxGcmFtZXMpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgcGFuZS5fcmVtb3ZlQnJlYWtwb2ludChyb290RWxl
bWVudCwgcGFuZS5fYnJlYWtwb2ludFR5cGVzLkF0dHJpYnV0ZU1vZGlmaWVkKTsKKyAgICAgICAg
ICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgZnVu
Y3Rpb24gdGVzdE1vZGlmeUF0dHJOb2RlKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCJUZXN0IHRoYXQgJ0F0dHJpYnV0ZSBNb2RpZmllZCcgYnJl
YWtwb2ludCBpcyBoaXQgd2hlbiBtb2RpZnlpbmcgQXR0ciBub2RlLiIpOworICAgICAgICAgICAg
cGFuZS5fc2V0QnJlYWtwb2ludChyb290RWxlbWVudCwgcGFuZS5fYnJlYWtwb2ludFR5cGVzLkF0
dHJpYnV0ZU1vZGlmaWVkLCB0cnVlKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCJTZXQgJ0F0dHJpYnV0ZSBNb2RpZmllZCcgRE9NIGJyZWFrcG9pbnQgb24gcm9vdEVsZW1l
bnQuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlV2l0aFRpbWVv
dXQoIm1vZGlmeUF0dHJOb2RlKCdyb290RWxlbWVudCcsICdkYXRhLXRlc3QnLCAnYmFyJykiKTsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJNb2RpZnkgcm9vdEVsZW1lbnQg
ZGF0YS10ZXN0IGF0dHJpYnV0ZS4iKTsKKyAgICAgICAgICAgIHdhaXRVbnRpbFBhdXNlZEFuZER1
bXBTdGFjayhzdGVwMik7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKGNhbGxGcmFtZXMp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcGFuZS5fcmVtb3ZlQnJlYWtwb2ludChy
b290RWxlbWVudCwgcGFuZS5fYnJlYWtwb2ludFR5cGVzLkF0dHJpYnV0ZU1vZGlmaWVkKTsKKyAg
ICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAg
ICAgZnVuY3Rpb24gdGVzdFNldEF0dHJOb2RlKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJUZXN0IHRoYXQgJ0F0dHJpYnV0ZSBNb2RpZmllZCcg
YnJlYWtwb2ludCBpcyBoaXQgd2hlbiBhZGRpbmcgYSBuZXcgQXR0ciBub2RlLiIpOworICAgICAg
ICAgICAgcGFuZS5fc2V0QnJlYWtwb2ludChyb290RWxlbWVudCwgcGFuZS5fYnJlYWtwb2ludFR5
cGVzLkF0dHJpYnV0ZU1vZGlmaWVkLCB0cnVlKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCJTZXQgJ0F0dHJpYnV0ZSBNb2RpZmllZCcgRE9NIGJyZWFrcG9pbnQgb24gcm9v
dEVsZW1lbnQuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlV2l0
aFRpbWVvdXQoInNldEF0dHJOb2RlKCdyb290RWxlbWVudCcsICdkYXRhLWZvbycsICdiYXInKSIp
OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIk1vZGlmeSByb290RWxlbWVu
dCBkYXRhLWZvbyBhdHRyaWJ1dGUuIik7CisgICAgICAgICAgICB3YWl0VW50aWxQYXVzZWRBbmRE
dW1wU3RhY2soc3RlcDIpOworCiAgICAgICAgICAgICBmdW5jdGlvbiBzdGVwMihjYWxsRnJhbWVz
KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHBhbmUuX3JlbW92ZUJyZWFrcG9pbnQo
cm9vdEVsZW1lbnQsIHBhbmUuX2JyZWFrcG9pbnRUeXBlcy5BdHRyaWJ1dGVNb2RpZmllZCk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvZGVidWdn
ZXIvZG9tLWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2luc3BlY3Rvci9kZWJ1Z2dlci9kb20tYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDE4MjgzMzc5NTJjZDU3MDJkNzE2NDYzZDgwMTlkMTNhZGQ3YmJjMTAuLjdjMmM3Zjk2ZWRj
M2E1MjhlNDVlZDRlNWQ1NTM2ODhkNjhiMDJmODQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9kZWJ1Z2dlci9kb20tYnJlYWtwb2ludHMtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9kZWJ1
Z2dlci9kb20tYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0CkBAIC0yOCw3ICsyOCw3IEBAIFRlc3Qg
dGhhdCAnU3VidHJlZSBNb2RpZmllZCcgYnJlYWtwb2ludCBpcyBoaXQgd2hlbiByZW1vdmluZyBh
IGNoaWxkLgogUmVtb3ZlIGdyYW5kY2hpbGRFbGVtZW50LgogU2NyaXB0IGV4ZWN1dGlvbiBwYXVz
ZWQuCiBDYWxsIHN0YWNrOgotICAgIDApIHJlbW92ZUVsZW1lbnQgKGRvbS1icmVha3BvaW50cy5o
dG1sOjMwKQorICAgIDApIHJlbW92ZUVsZW1lbnQgKGRvbS1icmVha3BvaW50cy5odG1sOjQ0KQog
ICAgIDEpICAoOjEpCiBQYXVzZWQgb24gYSAiU3VidHJlZSBNb2RpZmllZCIgYnJlYWtwb2ludCBz
ZXQgb24gZGl2I3Jvb3RFbGVtZW50LCBiZWNhdXNlIGl0cyBkZXNjZW5kYW50IGRpdiNncmFuZGNo
aWxkRWxlbWVudCB3YXMgcmVtb3ZlZC4KIFNjcmlwdCBleGVjdXRpb24gcmVzdW1lZC4KQEAgLTM2
LDcgKzM2LDcgQEAgU2NyaXB0IGV4ZWN1dGlvbiByZXN1bWVkLgogUnVubmluZzogdGVzdE1vZGlm
eUF0dHJpYnV0ZQogVGVzdCB0aGF0ICdBdHRyaWJ1dGUgTW9kaWZpZWQnIGJyZWFrcG9pbnQgaXMg
aGl0IHdoZW4gbW9kaWZ5aW5nIGF0dHJpYnV0ZS4KIFNldCAnQXR0cmlidXRlIE1vZGlmaWVkJyBE
T00gYnJlYWtwb2ludCBvbiByb290RWxlbWVudC4KLU1vZGlmeSByb290RWxlbWVudCBjbGFzc05h
bWUuCitNb2RpZnkgcm9vdEVsZW1lbnQgZGF0YS10ZXN0IGF0dHJpYnV0ZS4KIFNjcmlwdCBleGVj
dXRpb24gcGF1c2VkLgogQ2FsbCBzdGFjazoKICAgICAwKSBtb2RpZnlBdHRyaWJ1dGUgKGRvbS1i
cmVha3BvaW50cy5odG1sOjE4KQpAQCAtNDQsMTMgKzQ0LDM1IEBAIENhbGwgc3RhY2s6CiBQYXVz
ZWQgb24gYSAiQXR0cmlidXRlIE1vZGlmaWVkIiBicmVha3BvaW50IHNldCBvbiBkaXYjcm9vdEVs
ZW1lbnQuCiBTY3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQuCiAKK1J1bm5pbmc6IHRlc3RNb2RpZnlB
dHRyTm9kZQorVGVzdCB0aGF0ICdBdHRyaWJ1dGUgTW9kaWZpZWQnIGJyZWFrcG9pbnQgaXMgaGl0
IHdoZW4gbW9kaWZ5aW5nIEF0dHIgbm9kZS4KK1NldCAnQXR0cmlidXRlIE1vZGlmaWVkJyBET00g
YnJlYWtwb2ludCBvbiByb290RWxlbWVudC4KK01vZGlmeSByb290RWxlbWVudCBkYXRhLXRlc3Qg
YXR0cmlidXRlLgorU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCitDYWxsIHN0YWNrOgorICAgIDAp
IG1vZGlmeUF0dHJOb2RlIChkb20tYnJlYWtwb2ludHMuaHRtbDoyNCkKKyAgICAxKSAgKDoxKQor
UGF1c2VkIG9uIGEgIkF0dHJpYnV0ZSBNb2RpZmllZCIgYnJlYWtwb2ludCBzZXQgb24gZGl2I3Jv
b3RFbGVtZW50LgorU2NyaXB0IGV4ZWN1dGlvbiByZXN1bWVkLgorCitSdW5uaW5nOiB0ZXN0U2V0
QXR0ck5vZGUKK1Rlc3QgdGhhdCAnQXR0cmlidXRlIE1vZGlmaWVkJyBicmVha3BvaW50IGlzIGhp
dCB3aGVuIGFkZGluZyBhIG5ldyBBdHRyIG5vZGUuCitTZXQgJ0F0dHJpYnV0ZSBNb2RpZmllZCcg
RE9NIGJyZWFrcG9pbnQgb24gcm9vdEVsZW1lbnQuCitNb2RpZnkgcm9vdEVsZW1lbnQgZGF0YS1m
b28gYXR0cmlidXRlLgorU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCitDYWxsIHN0YWNrOgorICAg
IDApIHNldEF0dHJOb2RlIChkb20tYnJlYWtwb2ludHMuaHRtbDozMikKKyAgICAxKSAgKDoxKQor
UGF1c2VkIG9uIGEgIkF0dHJpYnV0ZSBNb2RpZmllZCIgYnJlYWtwb2ludCBzZXQgb24gZGl2I3Jv
b3RFbGVtZW50LgorU2NyaXB0IGV4ZWN1dGlvbiByZXN1bWVkLgorCiBSdW5uaW5nOiB0ZXN0TW9k
aWZ5U3R5bGVBdHRyaWJ1dGUKIFRlc3QgdGhhdCAnQXR0cmlidXRlIE1vZGlmaWVkJyBicmVha3Bv
aW50IGlzIGhpdCB3aGVuIG1vZGlmeWluZyBzdHlsZSBhdHRyaWJ1dGUuCiBTZXQgJ0F0dHJpYnV0
ZSBNb2RpZmllZCcgRE9NIGJyZWFrcG9pbnQgb24gcm9vdEVsZW1lbnQuCiBNb2RpZnkgcm9vdEVs
ZW1lbnQgc3R5bGUuY29sb3IgYXR0cmlidXRlLgogU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCiBD
YWxsIHN0YWNrOgotICAgIDApIG1vZGlmeVN0eWxlQXR0cmlidXRlIChkb20tYnJlYWtwb2ludHMu
aHRtbDoyNCkKKyAgICAwKSBtb2RpZnlTdHlsZUF0dHJpYnV0ZSAoZG9tLWJyZWFrcG9pbnRzLmh0
bWw6MzgpCiAgICAgMSkgICg6MSkKIFBhdXNlZCBvbiBhICJBdHRyaWJ1dGUgTW9kaWZpZWQiIGJy
ZWFrcG9pbnQgc2V0IG9uIGRpdiNyb290RWxlbWVudC4KIFNjcmlwdCBleGVjdXRpb24gcmVzdW1l
ZC4KQEAgLTYxLDcgKzgzLDcgQEAgU2V0ICdOb2RlIFJlbW92ZWQnIERPTSBicmVha3BvaW50IG9u
IGVsZW1lbnRUb1JlbW92ZS4KIFJlbW92ZSBlbGVtZW50VG9SZW1vdmUuCiBTY3JpcHQgZXhlY3V0
aW9uIHBhdXNlZC4KIENhbGwgc3RhY2s6Ci0gICAgMCkgcmVtb3ZlRWxlbWVudCAoZG9tLWJyZWFr
cG9pbnRzLmh0bWw6MzApCisgICAgMCkgcmVtb3ZlRWxlbWVudCAoZG9tLWJyZWFrcG9pbnRzLmh0
bWw6NDQpCiAgICAgMSkgICg6MSkKIFBhdXNlZCBvbiBhICJOb2RlIFJlbW92ZWQiIGJyZWFrcG9p
bnQgc2V0IG9uIGRpdiNlbGVtZW50VG9SZW1vdmUuCiBTY3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQu
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120334</attachid>
            <date>2011-12-22 09:39:41 -0800</date>
            <delta_ts>2011-12-23 01:12:45 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-75054-20111222093939.patch</filename>
            <type>text/plain</type>
            <size>24553</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk1YzNmMzJkNjM3ODNl
ZjRjN2JlMThjNTQwNGNiNTZmZmNhZThjOS4uNmUzMDA3MjgwNjE3MmZkMGRkYzBiMDNjZWJhYzcz
MTU3MTZlYzI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDExLTEyLTIxICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1pbmltaXplIGNhbGxzaXRl
cyBhbmQgZHVwbGljYXRpb24gb2YgYmVmb3JlL2FmdGVyIGFkdmljZSBmb3IgYXR0cmlidXRlIG11
dGF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzUwNTQKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgcjEw
MzQ1MiBoZWxwZnVsbHkgbWFkZSBiZWZvcmUgYW5kIGFmdGVyIGFkdmljZSByZWdhcmRpbmcgYXR0
cmlidXRlCisgICAgICAgIGNoYW5nZXMgc3ltbWV0cmljYWwuIFRoaXMgY2hhbmdlIGZpbmlzaGVz
IHRoYXQgd29yaywgYnkgcHVsbGluZworICAgICAgICB0b2dldGhlciBhbGwgdGhlIGJlZm9yZS9h
ZnRlciB3b3JrLCBub3QganVzdCB0aGUgY3J1bWJzIHByZXZpb3VzbHkKKyAgICAgICAgY292ZXJl
ZC4gVGhpcyBpbmNsdWRlcyBpbmNyZW1lbnRpbmcgRG9jdW1lbnQ6OmRvbVRyZWVWZXJzaW9uKCkK
KyAgICAgICAgd2hlbiBhbiBhdHRyaWJ1dGUgaXMgYWJvdXQgdG8gYmUgY2hhbmdlZCwgSW5zcGVj
dG9yIGluc3RydW1lbnRhdGlvbiwKKyAgICAgICAgYW5kIE11dGF0aW9uRXZlbnQgZGlzcGF0Y2gu
IFRoaXMgaXMgaW4gYWRkaXRpb24gdG8gdGhlIHByZXZpb3VzIGNvZGUsCisgICAgICAgIHdoaWNo
IGhhbmRsZWQgZW5xdWV1ZWluZyBNdXRhdGlvblJlY29yZHMgZm9yIE11dGF0aW9uT2JzZXJ2ZXJz
IGFuZAorICAgICAgICB1cGRhdGluZyB0aGUgRG9jdW1lbnQncyBsaXN0IG9mIElEcy4KKworICAg
ICAgICBUaGUgb25seSBjaGFuZ2UgaW4gYmVoYXZpb3Igc2hvdWxkIGJlIGluIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbiwKKyAgICAgICAgd2hpY2ggY2F1c2VzIERPTSBicmVha3BvaW50cyB0byBv
Y2N1ciBmb3IgbW9yZSBjYXNlcyBvZiBBdHRyaWJ1dGUKKyAgICAgICAgbXV0YXRpb24uIFRoaXMg
c2VlbXMgbGlrZSBtb3JlIGNvcnJlY3QgYmVoYXZpb3IsIGFuZCBhIHRlc3QgaGFzCisgICAgICAg
IGJlZW4gaW5jbHVkZWQgdG8gZXhlcmNpc2UgaXQuCisKKyAgICAgICAgSG9wZWZ1bGx5IHRoZSBs
YXN0IEF0dHJpYnV0ZS1yZWxhdGVkIHJlZmFjdG9yIGZvciBhd2hpbGUuCisKKyAgICAgICAgKiBk
b20vQXR0ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdHRyOjpzZXRWYWx1ZSk6IFVwZGF0ZSB0
byBjYWxsIGRpZE1vZGlmeUF0dHJpYnV0ZSBpbnN0ZWFkCisgICAgICAgIG9mIGF0dHJpYnV0ZUNo
YW5nZWQuCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6cmVtb3ZlQXR0cmlidXRlKTogR290IHJpZCBvZgorICAgICAgICByZW1vdmVBdHRyaWJ1
dGVJbnRlcm5hbCBhcyBtb3N0IG9mIHRoYXQgbG9naWMgbW92ZWQgYmFjayBpbnRvCisgICAgICAg
IE5hbWVkTm9kZU1hcDo6cmVtb3ZlQXR0cmlidXRlLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6c2V0QXR0cmlidXRlSW50ZXJuYWwpOiBSZW9yZ2FuaXplZCB0byByZWFkIGJldHRlcgorICAg
ICAgICBub3cgdGhhdCBvbmx5IHNvbWUgY2FzZXMgcmVzdWx0IGluIGNhbGxzIHRvIHdpbGwvZGlk
TW9kaWZ5QXR0cmlidXRlLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6d2lsbE1vZGlmeUF0
dHJpYnV0ZSk6IFVuLWlubGluZWQgYW5kIGFkZGVkCisgICAgICAgIGluY0RPTVRyZWVWZXJzaW9u
IGFuZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gY2FsbHMuCisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpkaWRNb2RpZnlBdHRyaWJ1dGUpOiBOZXcgbWV0aG9kIHdoaWNoIGVuY2Fwc3VsYXRl
cworICAgICAgICBjYWxsaW5nIGF0dHJpYnV0ZUNoYW5nZWQsIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbiwgYW5kIE11dGF0aW9uRXZlbnRzLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGlk
UmVtb3ZlQXR0cmlidXRlKTogTmV3IG1ldGhvZCB3aGljaCBlbmNhcHN1bGF0ZXMKKyAgICAgICAg
Y2FsbGluZyBhdHRyaWJ1dGVDaGFuZ2VkLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24sIGFuZCBN
dXRhdGlvbkV2ZW50cy4KKyAgICAgICAgU2VwYXJhdGUgZnJvbSBkaWRNb2RpZnlBdHRyaWJ1dGUg
YmVjYXVzZSBpdCBoYXMgc3BlY2lhbCBoYW5kbGluZyBvZgorICAgICAgICB0aGUgcmVtb3ZlZCBB
dHRyaWJ1dGUncyB2YWx1ZS4KKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6d2lsbFJlbW92ZUF0dHJpYnV0ZSk6IE5ldyBtZXRob2Qgd2hpY2ggZGVs
ZWdhdGVzIHRvCisgICAgICAgIHdpbGxNb2RpZnlBdHRyaWJ1dGUgYXMgYXBwcm9wcmlhdGUuCisg
ICAgICAgICogZG9tL05hbWVkTm9kZU1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZE5v
ZGVNYXA6OnNldE5hbWVkSXRlbSk6IFNpbXBsaWZpZWQuCisgICAgICAgIChXZWJDb3JlOjpOYW1l
ZE5vZGVNYXA6OnJlbW92ZU5hbWVkSXRlbSk6IFNpbXBsaWZpZWQuCisgICAgICAgIChXZWJDb3Jl
OjpOYW1lZE5vZGVNYXA6OmFkZEF0dHJpYnV0ZSk6IEFkZGVkIGNhbGxzIHRvIHdpbGwvZGlkTW9k
aWZ5QXR0cmlidXRlLgorICAgICAgICAoV2ViQ29yZTo6TmFtZWROb2RlTWFwOjpyZW1vdmVBdHRy
aWJ1dGUpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTm9kZU1hcDo6cmVwbGFjZUF0
dHJpYnV0ZSk6IGRpdHRvLgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHlTeW5jaHJvbml6ZXIuaDogUmV2ZXJ0ZWQgY2hhbmdlcworICAgICAgICBtYWRlIGluIHIx
MDM0NTIgbm93IHRoYXQgYWRkQXR0cmlidXRlL3JlbW92ZUF0dHJpYnV0ZSBvbmNlIGFnYWluCisg
ICAgICAgIGNhbGwgYXR0cmlidXRlQ2hhbmdlZCBhcHByb3ByaWF0ZWx5LgorCiAyMDExLTEyLTIx
ICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTAzNDczLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0F0
dHIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCmluZGV4IDJlMTFmZjAyYWQyNmRj
MzE5ZGIyZDk3M2I1YjU0NWYwYzM2NDY3NDkuLjY5MzBmYTFkYzA2MDUwNjhjZTU1NGZjMTI1MDNl
MmZiNzc1ZWFkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIEF0
dHI6OnNldFZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmKQog
ICAgIHNldFZhbHVlKHZhbHVlKTsKIAogICAgIGlmIChtX2VsZW1lbnQpCi0gICAgICAgIG1fZWxl
bWVudC0+YXR0cmlidXRlQ2hhbmdlZChtX2F0dHJpYnV0ZS5nZXQoKSk7CisgICAgICAgIG1fZWxl
bWVudC0+ZGlkTW9kaWZ5QXR0cmlidXRlKG1fYXR0cmlidXRlLmdldCgpKTsKIH0KIAogdm9pZCBB
dHRyOjpzZXROb2RlVmFsdWUoY29uc3QgU3RyaW5nJiB2LCBFeGNlcHRpb25Db2RlJiBlYykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAppbmRleCAyNTA1MzFmYTI0NWFkMTA0NmZiNzViZjEyY2NjZmJlNmI1
MDlmMjdhLi4xOGViZjgwMzI5ODBlMTFmOGU3MjZiY2U5Nzg4NWY1NzZlMGIwNGEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCkBAIC0xNzgsNTAgKzE3OCwxMiBAQCB2b2lkIEVsZW1lbnQ6OmNvcHlO
b25BdHRyaWJ1dGVQcm9wZXJ0aWVzKGNvbnN0IEVsZW1lbnQqKQogewogfQogCi0jaWYgRU5BQkxF
KE1VVEFUSU9OX09CU0VSVkVSUykKLXZvaWQgRWxlbWVudDo6ZW5xdWV1ZUF0dHJpYnV0ZXNNdXRh
dGlvblJlY29yZElmUmVxdWVzdGVkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUpCi17Ci0gICAgaWYgKGlzU3luY2hyb25pemlu
Z1N0eWxlQXR0cmlidXRlKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoT3duUHRyPE11dGF0
aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwPiBtdXRhdGlvblJlY2lwaWVudHMgPSBNdXRhdGlvbk9i
c2VydmVySW50ZXJlc3RHcm91cDo6Y3JlYXRlRm9yQXR0cmlidXRlc011dGF0aW9uKHRoaXMsIGF0
dHJpYnV0ZU5hbWUpKQotICAgICAgICBtdXRhdGlvblJlY2lwaWVudHMtPmVucXVldWVNdXRhdGlv
blJlY29yZChNdXRhdGlvblJlY29yZDo6Y3JlYXRlQXR0cmlidXRlcyh0aGlzLCBhdHRyaWJ1dGVO
YW1lLCBvbGRWYWx1ZSkpOwotfQotI2VuZGlmCi0KIHZvaWQgRWxlbWVudDo6cmVtb3ZlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiB7CiAgICAgaWYgKCFtX2F0dHJpYnV0ZU1h
cCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVtb3ZlQXR0cmlidXRlSW50ZXJuYWwobV9hdHRy
aWJ1dGVNYXAtPmdldEF0dHJpYnV0ZUl0ZW1JbmRleChuYW1lKSk7Ci19Ci0KLWlubGluZSB2b2lk
IEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZUludGVybmFsKHNpemVfdCBpbmRleCkKLXsKLSAgICBB
U1NFUlQobV9hdHRyaWJ1dGVNYXApOwotICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTW9kaWZ5RE9N
QXR0cihkb2N1bWVudCgpLCB0aGlzKTsKLQotICAgIFJlZlB0cjxBdHRyaWJ1dGU+IGF0dHJpYnV0
ZSA9IG1fYXR0cmlidXRlTWFwLT5hdHRyaWJ1dGVJdGVtKGluZGV4KTsKLQotICAgIGlmICghYXR0
cmlidXRlLT5pc051bGwoKSkKLSAgICAgICAgd2lsbE1vZGlmeUF0dHJpYnV0ZShhdHRyaWJ1dGUt
Pm5hbWUoKSwgYXR0cmlidXRlLT52YWx1ZSgpLCBudWxsQXRvbSk7Ci0KLSAgICBtX2F0dHJpYnV0
ZU1hcC0+cmVtb3ZlQXR0cmlidXRlKGluZGV4KTsKLQotICAgIGlmICghYXR0cmlidXRlLT5pc051
bGwoKSkgewotICAgICAgICBBdG9taWNTdHJpbmcgc2F2ZWRWYWx1ZSA9IGF0dHJpYnV0ZS0+dmFs
dWUoKTsKLSAgICAgICAgYXR0cmlidXRlLT5zZXRWYWx1ZShudWxsQXRvbSk7Ci0gICAgICAgIGF0
dHJpYnV0ZUNoYW5nZWQoYXR0cmlidXRlLmdldCgpKTsKLSAgICAgICAgYXR0cmlidXRlLT5zZXRW
YWx1ZShzYXZlZFZhbHVlKTsKLSAgICB9Ci0KLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlbW92ZURPTUF0dHIoZG9jdW1lbnQoKSwgdGhpcywgYXR0cmlidXRlLT5uYW1lKCkubG9j
YWxOYW1lKCkpOwotCi0gICAgaWYgKCFpc1N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSgpKQot
ICAgICAgICBkaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2ZW50KCk7CisgICAgbV9hdHRyaWJ1dGVN
YXAtPnJlbW92ZUF0dHJpYnV0ZShuYW1lKTsKIH0KIAogdm9pZCBFbGVtZW50OjpzZXRCb29sZWFu
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGJvb2wgdmFsdWUpCkBAIC02NjMs
MzYgKzYyNSwyNiBAQCB2b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogCiBpbmxpbmUgdm9pZCBFbGVt
ZW50OjpzZXRBdHRyaWJ1dGVJbnRlcm5hbChzaXplX3QgaW5kZXgsIGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CisgICAgQXR0cmlidXRlKiBv
bGQgPSBpbmRleCAhPSBub3RGb3VuZCA/IG1fYXR0cmlidXRlTWFwLT5hdHRyaWJ1dGVJdGVtKGlu
ZGV4KSA6IDA7CiAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIHJlbW92ZUF0dHJp
YnV0ZUludGVybmFsKGluZGV4KTsKKyAgICAgICAgaWYgKG9sZCkKKyAgICAgICAgICAgIG1fYXR0
cmlidXRlTWFwLT5yZW1vdmVBdHRyaWJ1dGUoaW5kZXgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgQXR0cmlidXRlKiBvbGQgPSBpbmRleCAhPSBub3RGb3VuZCA/IG1fYXR0cmlidXRl
TWFwLT5hdHRyaWJ1dGVJdGVtKGluZGV4KSA6IDA7Ci0KLSAgICBpZiAoIWlzU3luY2hyb25pemlu
Z1N0eWxlQXR0cmlidXRlKCkpCi0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bE1vZGlmeURPTUF0dHIoZG9jdW1lbnQoKSwgdGhpcyk7Ci0KLSAgICBkb2N1bWVudCgpLT5pbmNE
T01UcmVlVmVyc2lvbigpOworICAgIGlmICghb2xkKSB7CisgICAgICAgIG1fYXR0cmlidXRlTWFw
LT5hZGRBdHRyaWJ1dGUoY3JlYXRlQXR0cmlidXRlKG5hbWUsIHZhbHVlKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAKICAgICB3aWxsTW9kaWZ5QXR0cmlidXRlKG5hbWUsIG9sZCA/IG9sZC0+
dmFsdWUoKSA6IG51bGxBdG9tLCB2YWx1ZSk7CiAKLSAgICBpZiAoIW9sZCkgewotICAgICAgICBS
ZWZQdHI8QXR0cmlidXRlPiBhdHRyaWJ1dGUgPSBjcmVhdGVBdHRyaWJ1dGUobmFtZSwgdmFsdWUp
OwotICAgICAgICBtX2F0dHJpYnV0ZU1hcC0+YWRkQXR0cmlidXRlKGF0dHJpYnV0ZSk7Ci0gICAg
ICAgIGF0dHJpYnV0ZUNoYW5nZWQoYXR0cmlidXRlLmdldCgpKTsKLSAgICB9IGVsc2UgewotICAg
ICAgICBpZiAoQXR0ciogYXR0ck5vZGUgPSBvbGQtPmF0dHIoKSkKLSAgICAgICAgICAgIGF0dHJO
b2RlLT5zZXRWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG9sZC0+c2V0
VmFsdWUodmFsdWUpOwotICAgICAgICBhdHRyaWJ1dGVDaGFuZ2VkKG9sZCk7Ci0gICAgfQorICAg
IGlmIChBdHRyKiBhdHRyTm9kZSA9IG9sZC0+YXR0cigpKQorICAgICAgICBhdHRyTm9kZS0+c2V0
VmFsdWUodmFsdWUpOworICAgIGVsc2UKKyAgICAgICAgb2xkLT5zZXRWYWx1ZSh2YWx1ZSk7CiAK
LSAgICBpZiAoIWlzU3luY2hyb25pemluZ1N0eWxlQXR0cmlidXRlKCkpIHsKLSAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNb2RpZnlET01BdHRyKGRvY3VtZW50KCksIHRoaXMs
IG5hbWUubG9jYWxOYW1lKCksIHZhbHVlKTsKLSAgICAgICAgZGlzcGF0Y2hTdWJ0cmVlTW9kaWZp
ZWRFdmVudCgpOwotICAgIH0KKyAgICBkaWRNb2RpZnlBdHRyaWJ1dGUob2xkKTsKIH0KIAogUGFz
c1JlZlB0cjxBdHRyaWJ1dGU+IEVsZW1lbnQ6OmNyZWF0ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQpAQCAtMTQ5NCw3ICsxNDQ2
LDExIEBAIHZvaWQgRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIGxvY2FsTmFtZSA9IHNob3VsZElnbm9yZUF0
dHJpYnV0ZUNhc2UodGhpcykgPyBuYW1lLmxvd2VyKCkgOiBuYW1lOwotICAgIHJlbW92ZUF0dHJp
YnV0ZUludGVybmFsKG1fYXR0cmlidXRlTWFwLT5nZXRBdHRyaWJ1dGVJdGVtSW5kZXgobG9jYWxO
YW1lLCBmYWxzZSkpOworICAgIHNpemVfdCBpbmRleCA9IG1fYXR0cmlidXRlTWFwLT5nZXRBdHRy
aWJ1dGVJdGVtSW5kZXgobG9jYWxOYW1lLCBmYWxzZSk7CisgICAgaWYgKGluZGV4ID09IG5vdEZv
dW5kKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2F0dHJpYnV0ZU1hcC0+cmVtb3ZlQXR0cmli
dXRlKGluZGV4KTsKIH0KIAogdm9pZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVOUyhjb25zdCBT
dHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBsb2NhbE5hbWUpCkBAIC0xOTkyLDQg
KzE5NDgsNTEgQEAgYm9vbCBFbGVtZW50OjpmYXN0QXR0cmlidXRlTG9va3VwQWxsb3dlZChjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogfQogI2VuZGlmCiAKK3ZvaWQgRWxlbWVudDo6
d2lsbE1vZGlmeUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQoreworICAg
IGRvY3VtZW50KCktPmluY0RPTVRyZWVWZXJzaW9uKCk7CisKKyAgICBpZiAoaXNJZEF0dHJpYnV0
ZU5hbWUobmFtZSkpCisgICAgICAgIHVwZGF0ZUlkKG9sZFZhbHVlLCBuZXdWYWx1ZSk7CisKKyNp
ZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQorICAgIGlmICghaXNTeW5jaHJvbml6aW5nU3R5
bGVBdHRyaWJ1dGUoKSkgeworICAgICAgICBpZiAoT3duUHRyPE11dGF0aW9uT2JzZXJ2ZXJJbnRl
cmVzdEdyb3VwPiByZWNpcGllbnRzID0gTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNy
ZWF0ZUZvckF0dHJpYnV0ZXNNdXRhdGlvbih0aGlzLCBuYW1lKSkKKyAgICAgICAgICAgIHJlY2lw
aWVudHMtPmVucXVldWVNdXRhdGlvblJlY29yZChNdXRhdGlvblJlY29yZDo6Y3JlYXRlQXR0cmli
dXRlcyh0aGlzLCBuYW1lLCBvbGRWYWx1ZSkpOworICAgIH0KKyNlbmRpZgorCisjaWYgRU5BQkxF
KElOU1BFQ1RPUikKKyAgICBpZiAoIWlzU3luY2hyb25pemluZ1N0eWxlQXR0cmlidXRlKCkpCisg
ICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1vZGlmeURPTUF0dHIoZG9jdW1l
bnQoKSwgdGhpcyk7CisjZW5kaWYKK30KKwordm9pZCBFbGVtZW50OjpkaWRNb2RpZnlBdHRyaWJ1
dGUoQXR0cmlidXRlKiBhdHRyKQoreworICAgIGF0dHJpYnV0ZUNoYW5nZWQoYXR0cik7CisKKyAg
ICBpZiAoIWlzU3luY2hyb25pemluZ1N0eWxlQXR0cmlidXRlKCkpIHsKKyAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNb2RpZnlET01BdHRyKGRvY3VtZW50KCksIHRoaXMsIGF0
dHItPm5hbWUoKS5sb2NhbE5hbWUoKSwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGRpc3BhdGNo
U3VidHJlZU1vZGlmaWVkRXZlbnQoKTsKKyAgICB9Cit9CisKK3ZvaWQgRWxlbWVudDo6ZGlkUmVt
b3ZlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKK3sKKyAgICBpZiAoYXR0ci0+aXNOdWxsKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIEF0b21pY1N0cmluZyBzYXZlZFZhbHVlID0gYXR0ci0+
dmFsdWUoKTsKKyAgICBhdHRyLT5zZXRWYWx1ZShudWxsQXRvbSk7CisgICAgYXR0cmlidXRlQ2hh
bmdlZChhdHRyKTsKKyAgICBhdHRyLT5zZXRWYWx1ZShzYXZlZFZhbHVlKTsKKworICAgIGlmICgh
aXNTeW5jaHJvbml6aW5nU3R5bGVBdHRyaWJ1dGUoKSkgeworICAgICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZFJlbW92ZURPTUF0dHIoZG9jdW1lbnQoKSwgdGhpcywgYXR0ci0+bmFt
ZSgpLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCgp
OworICAgIH0KK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApp
bmRleCBhNjM1ZjA2ZWJhMGVkZDBmYjFlM2YxOGQ0MWExYTA3MDgzZDZhNDI0Li4yOTgxNDMzNmI1
Y2QxMTA0MmFkN2ZmMThjM2MxYTc4YjIxNjEyNmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTI2
NSw3ICsyNjUsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHRpdGxlKCkgY29uc3Q7
CiAKICAgICB2b2lkIHVwZGF0ZUlkKGNvbnN0IEF0b21pY1N0cmluZyYgb2xkSWQsIGNvbnN0IEF0
b21pY1N0cmluZyYgbmV3SWQpOworCiAgICAgdm9pZCB3aWxsTW9kaWZ5QXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG5ld1ZhbHVlKTsKKyAgICB2b2lkIHdpbGxSZW1vdmVBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOworICAgIHZvaWQgZGlk
TW9kaWZ5QXR0cmlidXRlKEF0dHJpYnV0ZSopOworICAgIHZvaWQgZGlkUmVtb3ZlQXR0cmlidXRl
KEF0dHJpYnV0ZSopOwogCiAgICAgTGF5b3V0U2l6ZSBtaW5pbXVtU2l6ZUZvclJlc2l6aW5nKCkg
Y29uc3Q7CiAgICAgdm9pZCBzZXRNaW5pbXVtU2l6ZUZvclJlc2l6aW5nKGNvbnN0IExheW91dFNp
emUmKTsKQEAgLTM5Niw3ICs0MDAsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBjaGls
ZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdDsKIAogICAgIHZvaWQgc2V0QXR0cmlidXRlSW50
ZXJuYWwoc2l6ZV90IGluZGV4LCBjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSk7Ci0gICAgdm9pZCByZW1vdmVBdHRyaWJ1dGVJbnRlcm5hbChzaXplX3QgaW5k
ZXgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxBdHRyaWJ1dGU+IGNyZWF0ZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSk7CiAgICAgCiAj
aWZuZGVmIE5ERUJVRwpAQCAtNDMzLDEwICs0MzYsNiBAQCBwcml2YXRlOgogCiAgICAgU3BlbGxj
aGVja0F0dHJpYnV0ZVN0YXRlIHNwZWxsY2hlY2tBdHRyaWJ1dGVTdGF0ZSgpIGNvbnN0OwogCi0j
aWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKLSAgICB2b2lkIGVucXVldWVBdHRyaWJ1dGVz
TXV0YXRpb25SZWNvcmRJZlJlcXVlc3RlZChjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRv
bWljU3RyaW5nJiBvbGRWYWx1ZSk7Ci0jZW5kaWYKLQogcHJpdmF0ZToKICAgICBtdXRhYmxlIFJl
ZlB0cjxOYW1lZE5vZGVNYXA+IG1fYXR0cmlidXRlTWFwOwogfTsKQEAgLTUxOCwxNiArNTE3LDEw
IEBAIGlubGluZSB2b2lkIEVsZW1lbnQ6OnVwZGF0ZUlkKGNvbnN0IEF0b21pY1N0cmluZyYgb2xk
SWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3CiAgICAgICAgIHNjb3BlLT5hZGRFbGVtZW50QnlJ
ZChuZXdJZCwgdGhpcyk7CiB9CiAKLWlubGluZSB2b2lkIEVsZW1lbnQ6OndpbGxNb2RpZnlBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRW
YWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKK2lubGluZSB2b2lkIEVsZW1lbnQ6
OndpbGxSZW1vdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAoaXNJZEF0dHJpYnV0ZU5hbWUobmFtZSkpCi0g
ICAgICAgIHVwZGF0ZUlkKG9sZFZhbHVlLCBuZXdWYWx1ZSk7Ci0KLSAgICAvLyBGSVhNRTogU2hv
dWxkIHByb2JhYmx5IGNhbGwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTW9kaWZ5RE9N
QXR0ciBoZXJlLgotCi0jaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKLSAgICBlbnF1ZXVl
QXR0cmlidXRlc011dGF0aW9uUmVjb3JkSWZSZXF1ZXN0ZWQobmFtZSwgb2xkVmFsdWUpOwotI2Vu
ZGlmCisgICAgaWYgKCF2YWx1ZS5pc051bGwoKSkKKyAgICAgICAgd2lsbE1vZGlmeUF0dHJpYnV0
ZShuYW1lLCB2YWx1ZSwgbnVsbEF0b20pOwogfQogCiBpbmxpbmUgYm9vbCBFbGVtZW50OjpmYXN0
SGFzQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9OYW1lZE5vZGVNYXAuY3BwCmluZGV4IDgzZDVmMDNiODRjNTI1OTY3YjBiNzA0OWI4Mjc4OTI5
NTBkMmZjYWEuLmZkNjNkN2FiM2FkNTI0YTZlNmI5Nzc5ZThkYjk1MWEzNTBiYTcyYzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuY3BwCkBAIC0xMjAsOCArMTIwLDYgQEAgUGFzc1JlZlB0
cjxOb2RlPiBOYW1lZE5vZGVNYXA6OnNldE5hbWVkSXRlbShOb2RlKiBub2RlLCBFeGNlcHRpb25D
b2RlJiBlYykKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgbV9lbGVtZW50LT53aWxs
TW9kaWZ5QXR0cmlidXRlKGF0dHJpYnV0ZS0+bmFtZSgpLCBvbGRBdHRyaWJ1dGUgPyBvbGRBdHRy
aWJ1dGUtPnZhbHVlKCkgOiBudWxsQXRvbSwgYXR0cmlidXRlLT52YWx1ZSgpKTsKLQogICAgIFJl
ZlB0cjxBdHRyPiBvbGRBdHRyOwogICAgIGlmIChvbGRBdHRyaWJ1dGUpIHsKICAgICAgICAgb2xk
QXR0ciA9IG9sZEF0dHJpYnV0ZS0+Y3JlYXRlQXR0cklmTmVlZGVkKG1fZWxlbWVudCk7CkBAIC0x
MjksMTEgKzEyNyw2IEBAIFBhc3NSZWZQdHI8Tm9kZT4gTmFtZWROb2RlTWFwOjpzZXROYW1lZEl0
ZW0oTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgfSBlbHNlCiAgICAgICAgIGFk
ZEF0dHJpYnV0ZShhdHRyaWJ1dGUpOwogCi0gICAgbV9lbGVtZW50LT5hdHRyaWJ1dGVDaGFuZ2Vk
KGF0dHJpYnV0ZSk7Ci0KLSAgICBpZiAoYXR0cmlidXRlLT5uYW1lKCkgIT0gc3R5bGVBdHRyKQot
ICAgICAgICBtX2VsZW1lbnQtPmRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZlbnQoKTsKLQogICAg
IHJldHVybiBvbGRBdHRyLnJlbGVhc2UoKTsKIH0KIApAQCAtMTUyLDI0ICsxNDUsMTAgQEAgUGFz
c1JlZlB0cjxOb2RlPiBOYW1lZE5vZGVNYXA6OnJlbW92ZU5hbWVkSXRlbShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBFeGNlcHQKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgUmVm
UHRyPEF0dHJpYnV0ZT4gYXR0cmlidXRlID0gYXR0cmlidXRlSXRlbShpbmRleCk7Ci0gICAgUmVm
UHRyPEF0dHI+IGF0dHIgPSBhdHRyaWJ1dGUtPmNyZWF0ZUF0dHJJZk5lZWRlZChtX2VsZW1lbnQp
OwotCi0gICAgaWYgKCFhdHRyaWJ1dGUtPmlzTnVsbCgpKQotICAgICAgICBtX2VsZW1lbnQtPndp
bGxNb2RpZnlBdHRyaWJ1dGUoYXR0cmlidXRlLT5uYW1lKCksIGF0dHJpYnV0ZS0+dmFsdWUoKSwg
bnVsbEF0b20pOworICAgIFJlZlB0cjxBdHRyPiBhdHRyID0gbV9hdHRyaWJ1dGVzW2luZGV4XS0+
Y3JlYXRlQXR0cklmTmVlZGVkKG1fZWxlbWVudCk7CiAKICAgICByZW1vdmVBdHRyaWJ1dGUoaW5k
ZXgpOwogCi0gICAgaWYgKCFhdHRyaWJ1dGUtPmlzTnVsbCgpKSB7Ci0gICAgICAgIEF0b21pY1N0
cmluZyBzYXZlZFZhbHVlID0gYXR0cmlidXRlLT52YWx1ZSgpOwotICAgICAgICBhdHRyaWJ1dGUt
PnNldFZhbHVlKG51bGxBdG9tKTsKLSAgICAgICAgbV9lbGVtZW50LT5hdHRyaWJ1dGVDaGFuZ2Vk
KGF0dHJpYnV0ZS5nZXQoKSk7Ci0gICAgICAgIGF0dHJpYnV0ZS0+c2V0VmFsdWUoc2F2ZWRWYWx1
ZSk7Ci0gICAgfQotCi0gICAgaWYgKGF0dHJpYnV0ZS0+bmFtZSgpICE9IHN0eWxlQXR0cikKLSAg
ICAgICAgbV9lbGVtZW50LT5kaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2ZW50KCk7Ci0KICAgICBy
ZXR1cm4gYXR0ci5yZWxlYXNlKCk7CiB9CiAKQEAgLTI1NCwzMiArMjMzLDU2IEBAIHZvaWQgTmFt
ZWROb2RlTWFwOjpzZXRBdHRyaWJ1dGVzKGNvbnN0IE5hbWVkTm9kZU1hcCYgb3RoZXIpCiAgICAg
ICAgIG1fZWxlbWVudC0+YXR0cmlidXRlQ2hhbmdlZChtX2F0dHJpYnV0ZXNbaV0uZ2V0KCksIHRy
dWUpOwogfQogCi12b2lkIE5hbWVkTm9kZU1hcDo6YWRkQXR0cmlidXRlKFBhc3NSZWZQdHI8QXR0
cmlidXRlPiBhdHRyaWJ1dGUpCit2b2lkIE5hbWVkTm9kZU1hcDo6YWRkQXR0cmlidXRlKFBhc3NS
ZWZQdHI8QXR0cmlidXRlPiBwcnBBdHRyaWJ1dGUpCiB7CisgICAgUmVmUHRyPEF0dHJpYnV0ZT4g
YXR0cmlidXRlID0gcHJwQXR0cmlidXRlOworCisgICAgaWYgKG1fZWxlbWVudCkKKyAgICAgICAg
bV9lbGVtZW50LT53aWxsTW9kaWZ5QXR0cmlidXRlKGF0dHJpYnV0ZS0+bmFtZSgpLCBudWxsQXRv
bSwgYXR0cmlidXRlLT52YWx1ZSgpKTsKKwogICAgIG1fYXR0cmlidXRlcy5hcHBlbmQoYXR0cmli
dXRlKTsKLSAgICBpZiAoQXR0ciogYXR0ciA9IG1fYXR0cmlidXRlcy5sYXN0KCktPmF0dHIoKSkK
KyAgICBpZiAoQXR0ciogYXR0ciA9IGF0dHJpYnV0ZS0+YXR0cigpKQogICAgICAgICBhdHRyLT5t
X2VsZW1lbnQgPSBtX2VsZW1lbnQ7CisKKyAgICBpZiAobV9lbGVtZW50KQorICAgICAgICBtX2Vs
ZW1lbnQtPmRpZE1vZGlmeUF0dHJpYnV0ZShhdHRyaWJ1dGUuZ2V0KCkpOwogfQogCiB2b2lkIE5h
bWVkTm9kZU1hcDo6cmVtb3ZlQXR0cmlidXRlKHNpemVfdCBpbmRleCkKIHsKICAgICBBU1NFUlQo
aW5kZXggPCBsZW5ndGgoKSk7CiAKLSAgICBpZiAoQXR0ciogYXR0ciA9IG1fYXR0cmlidXRlc1tp
bmRleF0tPmF0dHIoKSkKLSAgICAgICAgYXR0ci0+bV9lbGVtZW50ID0gMDsKKyAgICBSZWZQdHI8
QXR0cmlidXRlPiBhdHRyaWJ1dGUgPSBtX2F0dHJpYnV0ZXNbaW5kZXhdOwogCisgICAgaWYgKG1f
ZWxlbWVudCkKKyAgICAgICAgbV9lbGVtZW50LT53aWxsUmVtb3ZlQXR0cmlidXRlKGF0dHJpYnV0
ZS0+bmFtZSgpLCBhdHRyaWJ1dGUtPnZhbHVlKCkpOworCisgICAgaWYgKEF0dHIqIGF0dHIgPSBh
dHRyaWJ1dGUtPmF0dHIoKSkKKyAgICAgICAgYXR0ci0+bV9lbGVtZW50ID0gMDsKICAgICBtX2F0
dHJpYnV0ZXMucmVtb3ZlKGluZGV4KTsKKworICAgIGlmIChtX2VsZW1lbnQpCisgICAgICAgIG1f
ZWxlbWVudC0+ZGlkUmVtb3ZlQXR0cmlidXRlKGF0dHJpYnV0ZS5nZXQoKSk7CiB9CiAKLXZvaWQg
TmFtZWROb2RlTWFwOjpyZXBsYWNlQXR0cmlidXRlKHNpemVfdCBpbmRleCwgUGFzc1JlZlB0cjxB
dHRyaWJ1dGU+IGF0dHJpYnV0ZSkKK3ZvaWQgTmFtZWROb2RlTWFwOjpyZXBsYWNlQXR0cmlidXRl
KHNpemVfdCBpbmRleCwgUGFzc1JlZlB0cjxBdHRyaWJ1dGU+IHBycEF0dHJpYnV0ZSkKIHsKICAg
ICBBU1NFUlQoaW5kZXggPCBsZW5ndGgoKSk7CiAKLSAgICBpZiAoQXR0ciogYXR0ciA9IG1fYXR0
cmlidXRlc1tpbmRleF0tPmF0dHIoKSkKKyAgICBSZWZQdHI8QXR0cmlidXRlPiBhdHRyaWJ1dGUg
PSBwcnBBdHRyaWJ1dGU7CisgICAgQXR0cmlidXRlKiBvbGQgPSBtX2F0dHJpYnV0ZXNbaW5kZXhd
LmdldCgpOworCisgICAgaWYgKG1fZWxlbWVudCkKKyAgICAgICAgbV9lbGVtZW50LT53aWxsTW9k
aWZ5QXR0cmlidXRlKGF0dHJpYnV0ZS0+bmFtZSgpLCBvbGQtPnZhbHVlKCksIGF0dHJpYnV0ZS0+
dmFsdWUoKSk7CisKKyAgICBpZiAoQXR0ciogYXR0ciA9IG9sZC0+YXR0cigpKQogICAgICAgICBh
dHRyLT5tX2VsZW1lbnQgPSAwOwogICAgIG1fYXR0cmlidXRlc1tpbmRleF0gPSBhdHRyaWJ1dGU7
Ci0gICAgaWYgKEF0dHIqIGF0dHIgPSBtX2F0dHJpYnV0ZXNbaW5kZXhdLT5hdHRyKCkpCisgICAg
aWYgKEF0dHIqIGF0dHIgPSBhdHRyaWJ1dGUtPmF0dHIoKSkKICAgICAgICAgYXR0ci0+bV9lbGVt
ZW50ID0gbV9lbGVtZW50OworCisgICAgaWYgKG1fZWxlbWVudCkKKyAgICAgICAgbV9lbGVtZW50
LT5kaWRNb2RpZnlBdHRyaWJ1dGUoYXR0cmlidXRlLmdldCgpKTsKIH0KIAogdm9pZCBOYW1lZE5v
ZGVNYXA6OnNldENsYXNzKGNvbnN0IFN0cmluZyYgY2xhc3NTdHIpIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXpl
ci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5
bmNocm9uaXplci5oCmluZGV4IDBlN2QwYzNhM2JlOTc4OTM5YTY1MGY0NTIwY2RkMjI1N2FlNmMy
NjcuLmNiNzg5ZjNmMTgxZTE2YzZhODM0ZWM5OTU3NmRiYWVmMzk4N2IxNTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJv
bml6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBy
b3BlcnR5U3luY2hyb25pemVyLmgKQEAgLTM0LDE2ICszNCwxOCBAQCBzdHJ1Y3QgU1ZHQW5pbWF0
ZWRQcm9wZXJ0eVN5bmNocm9uaXplcjx0cnVlPiB7CiAgICAgc3RhdGljIHZvaWQgc3luY2hyb25p
emUoU1ZHRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIElmIHRoZSBh
dHRyaWJ1dGUgYWxyZWFkeSBleGlzdHMgb24gdGhlIGVsZW1lbnQsIHdlIGNoYW5nZSB0aGUKLSAg
ICAgICAgLy8gQXR0cmlidXRlIGRpcmVjdGx5IHJhdGhlciB0aGFuIGdvaW5nIHRocm91Z2ggRWxl
bWVudDo6c2V0QXR0cmlidXRlIHRvCi0gICAgICAgIC8vIGF2b2lkIGEgY2FsbCB0byBFbGVtZW50
OjphdHRyaWJ1dGVDaGFuZ2VkIHRoYXQgY291bGQgY2F1c2UgdGhlCi0gICAgICAgIC8vIFNWR0Vs
ZW1lbnQgdG8gZXJyb25lb3VzbHkgcmVzZXQgaXRzIHByb3BlcnRpZXMuCisgICAgICAgIC8vIEF0
dHJpYnV0ZSBkaXJlY3RseSB0byBhdm9pZCBhIGNhbGwgdG8gRWxlbWVudDo6YXR0cmlidXRlQ2hh
bmdlZAorICAgICAgICAvLyB0aGF0IGNvdWxkIGNhdXNlIHRoZSBTVkdFbGVtZW50IHRvIGVycm9u
ZW91c2x5IHJlc2V0IGl0cyBwcm9wZXJ0aWVzLgogICAgICAgICAvLyBzdmcvZG9tL1NWR1N0cmlu
Z0xpc3QtYmFzaWNzLnhodG1sIGV4ZXJjaXNlcyB0aGlzIGJlaGF2aW9yLgogICAgICAgICBOYW1l
ZE5vZGVNYXAqIG5hbWVkQXR0ck1hcCA9IG93bmVyRWxlbWVudC0+YXR0cmlidXRlcyhmYWxzZSk7
CiAgICAgICAgIEF0dHJpYnV0ZSogb2xkID0gbmFtZWRBdHRyTWFwLT5nZXRBdHRyaWJ1dGVJdGVt
KGF0dHJOYW1lKTsKLSAgICAgICAgaWYgKG9sZCkKKyAgICAgICAgaWYgKG9sZCAmJiB2YWx1ZS5p
c051bGwoKSkKKyAgICAgICAgICAgIG5hbWVkQXR0ck1hcC0+cmVtb3ZlQXR0cmlidXRlKG9sZC0+
bmFtZSgpKTsKKyAgICAgICAgZWxzZSBpZiAoIW9sZCAmJiAhdmFsdWUuaXNOdWxsKCkpCisgICAg
ICAgICAgICBuYW1lZEF0dHJNYXAtPmFkZEF0dHJpYnV0ZShvd25lckVsZW1lbnQtPmNyZWF0ZUF0
dHJpYnV0ZShhdHRyTmFtZSwgdmFsdWUpKTsKKyAgICAgICAgZWxzZSBpZiAob2xkICYmICF2YWx1
ZS5pc051bGwoKSkKICAgICAgICAgICAgIG9sZC0+c2V0VmFsdWUodmFsdWUpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBvd25lckVsZW1lbnQtPnNldEF0dHJpYnV0ZShhdHRyTmFtZSwgdmFs
dWUpOworCiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDI1YjQyYTg0ZDEzNzI1Y2FjYmExNzFiZjA1YTk3
YzJkM2JiZjNkNzMuLjgyYWZhYjQ0NTVlODY0YzdiYjExMTRkYThiODZlNDFhYmM0NGQ0YTMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0xMi0yMSAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBNaW5pbWl6ZSBjYWxsc2l0ZXMgYW5kIGR1cGxpY2F0aW9uIG9m
IGJlZm9yZS9hZnRlciBhZHZpY2UgZm9yIGF0dHJpYnV0ZSBtdXRhdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1MDU0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2Rv
bS1icmVha3BvaW50cy5odG1sOiBBZGQgdGVzdHMgZm9yIGJyZWFrcG9pbnRzCisgICAgICAgIGR1
ZSB0byBtdXRhdGlvbiBvZiBBdHRyIG5vZGVzL05hbWVkTm9kZUxpc3RzLgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9kZWJ1Z2dlci9kb20tYnJlYWtwb2ludHMtZXhwZWN0
ZWQudHh0OgorCiAyMDExLTEyLTIxICBTaGFkaSBLaGFsZWsgIDxzaGFkaUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgVmlkZW8gZm9ybWF0IHl1djQyMnAgZG9lc24ndCBzaG93IHByb3Blcmx5Lgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RvbS1icmVha3BvaW50
cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RvbS1icmVha3BvaW50cy5o
dG1sCmluZGV4IDRlZjdhYTYyODNhNTlmYTYwM2E4NmU2M2U3YWIwZGY5ZGQ2MzdjNWEuLmU0MThh
MmEwYzNjNzY4ZGY2NWRhY2E0MDVhNDM1MjAwNGQxNWZhZWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kb20tYnJlYWtwb2ludHMuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZG9tLWJyZWFrcG9pbnRzLmh0bWwKQEAgLTE4LDYgKzE4
LDIwIEBAIGZ1bmN0aW9uIG1vZGlmeUF0dHJpYnV0ZShlbGVtZW50SWQsIG5hbWUsIHZhbHVlKQog
ICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAorZnVuY3Rpb24gbW9k
aWZ5QXR0ck5vZGUoZWxlbWVudElkLCBuYW1lLCB2YWx1ZSkKK3sKKyAgICB2YXIgZWxlbWVudCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7CisgICAgZWxlbWVudC5hdHRyaWJ1
dGVzW25hbWVdLnZhbHVlID0gdmFsdWU7Cit9CisKK2Z1bmN0aW9uIHNldEF0dHJOb2RlKGVsZW1l
bnRJZCwgbmFtZSwgdmFsdWUpCit7CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZChlbGVtZW50SWQpOworICAgIHZhciBhdHRyID0gZG9jdW1lbnQuY3JlYXRlQXR0cmli
dXRlKG5hbWUpOworICAgIGF0dHIudmFsdWUgPSB2YWx1ZTsKKyAgICBlbGVtZW50LmF0dHJpYnV0
ZXMuc2V0TmFtZWRJdGVtKGF0dHIpOworfQorCiBmdW5jdGlvbiBtb2RpZnlTdHlsZUF0dHJpYnV0
ZShlbGVtZW50SWQsIG5hbWUsIHZhbHVlKQogewogICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTsKQEAgLTgwLDEwICs5NCw0MiBAQCBmdW5jdGlvbiB0
ZXN0KCkKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJUZXN0IHRoYXQgJ0F0
dHJpYnV0ZSBNb2RpZmllZCcgYnJlYWtwb2ludCBpcyBoaXQgd2hlbiBtb2RpZnlpbmcgYXR0cmli
dXRlLiIpOwogICAgICAgICAgICAgcGFuZS5fc2V0QnJlYWtwb2ludChyb290RWxlbWVudCwgcGFu
ZS5fYnJlYWtwb2ludFR5cGVzLkF0dHJpYnV0ZU1vZGlmaWVkLCB0cnVlKTsKICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJTZXQgJ0F0dHJpYnV0ZSBNb2RpZmllZCcgRE9NIGJy
ZWFrcG9pbnQgb24gcm9vdEVsZW1lbnQuIik7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5QYWdlV2l0aFRpbWVvdXQoIm1vZGlmeUF0dHJpYnV0ZSgncm9vdEVsZW1lbnQnLCAn
Y2xhc3NOYW1lJywgJ2ZvbycpIik7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgiTW9kaWZ5IHJvb3RFbGVtZW50IGNsYXNzTmFtZS4iKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXZhbHVhdGVJblBhZ2VXaXRoVGltZW91dCgibW9kaWZ5QXR0cmlidXRlKCdyb290RWxl
bWVudCcsICdkYXRhLXRlc3QnLCAnZm9vJykiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCJNb2RpZnkgcm9vdEVsZW1lbnQgZGF0YS10ZXN0IGF0dHJpYnV0ZS4iKTsKICAg
ICAgICAgICAgIHdhaXRVbnRpbFBhdXNlZEFuZER1bXBTdGFjayhzdGVwMik7Ci0gICAgCisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKGNhbGxGcmFtZXMpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgcGFuZS5fcmVtb3ZlQnJlYWtwb2ludChyb290RWxlbWVudCwgcGFuZS5fYnJl
YWtwb2ludFR5cGVzLkF0dHJpYnV0ZU1vZGlmaWVkKTsKKyAgICAgICAgICAgICAgICBuZXh0KCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdE1vZGlm
eUF0dHJOb2RlKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJUZXN0IHRoYXQgJ0F0dHJpYnV0ZSBNb2RpZmllZCcgYnJlYWtwb2ludCBpcyBoaXQg
d2hlbiBtb2RpZnlpbmcgQXR0ciBub2RlLiIpOworICAgICAgICAgICAgcGFuZS5fc2V0QnJlYWtw
b2ludChyb290RWxlbWVudCwgcGFuZS5fYnJlYWtwb2ludFR5cGVzLkF0dHJpYnV0ZU1vZGlmaWVk
LCB0cnVlKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJTZXQgJ0F0dHJp
YnV0ZSBNb2RpZmllZCcgRE9NIGJyZWFrcG9pbnQgb24gcm9vdEVsZW1lbnQuIik7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlV2l0aFRpbWVvdXQoIm1vZGlmeUF0dHJO
b2RlKCdyb290RWxlbWVudCcsICdkYXRhLXRlc3QnLCAnYmFyJykiKTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCJNb2RpZnkgcm9vdEVsZW1lbnQgZGF0YS10ZXN0IGF0dHJp
YnV0ZS4iKTsKKyAgICAgICAgICAgIHdhaXRVbnRpbFBhdXNlZEFuZER1bXBTdGFjayhzdGVwMik7
CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKGNhbGxGcmFtZXMpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgcGFuZS5fcmVtb3ZlQnJlYWtwb2ludChyb290RWxlbWVudCwgcGFu
ZS5fYnJlYWtwb2ludFR5cGVzLkF0dHJpYnV0ZU1vZGlmaWVkKTsKKyAgICAgICAgICAgICAgICBu
ZXh0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVz
dFNldEF0dHJOb2RlKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCJUZXN0IHRoYXQgJ0F0dHJpYnV0ZSBNb2RpZmllZCcgYnJlYWtwb2ludCBpcyBo
aXQgd2hlbiBhZGRpbmcgYSBuZXcgQXR0ciBub2RlLiIpOworICAgICAgICAgICAgcGFuZS5fc2V0
QnJlYWtwb2ludChyb290RWxlbWVudCwgcGFuZS5fYnJlYWtwb2ludFR5cGVzLkF0dHJpYnV0ZU1v
ZGlmaWVkLCB0cnVlKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJTZXQg
J0F0dHJpYnV0ZSBNb2RpZmllZCcgRE9NIGJyZWFrcG9pbnQgb24gcm9vdEVsZW1lbnQuIik7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlV2l0aFRpbWVvdXQoInNldEF0
dHJOb2RlKCdyb290RWxlbWVudCcsICdkYXRhLWZvbycsICdiYXInKSIpOworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIk1vZGlmeSByb290RWxlbWVudCBkYXRhLWZvbyBhdHRy
aWJ1dGUuIik7CisgICAgICAgICAgICB3YWl0VW50aWxQYXVzZWRBbmREdW1wU3RhY2soc3RlcDIp
OworCiAgICAgICAgICAgICBmdW5jdGlvbiBzdGVwMihjYWxsRnJhbWVzKQogICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgIHBhbmUuX3JlbW92ZUJyZWFrcG9pbnQocm9vdEVsZW1lbnQsIHBh
bmUuX2JyZWFrcG9pbnRUeXBlcy5BdHRyaWJ1dGVNb2RpZmllZCk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvZGVidWdnZXIvZG9tLWJyZWFrcG9p
bnRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rv
ci9kZWJ1Z2dlci9kb20tYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0CmluZGV4IDE4MjgzMzc5NTJj
ZDU3MDJkNzE2NDYzZDgwMTlkMTNhZGQ3YmJjMTAuLjdjMmM3Zjk2ZWRjM2E1MjhlNDVlZDRlNWQ1
NTM2ODhkNjhiMDJmODQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2luc3BlY3Rvci9kZWJ1Z2dlci9kb20tYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9kZWJ1Z2dlci9kb20tYnJlYWtw
b2ludHMtZXhwZWN0ZWQudHh0CkBAIC0yOCw3ICsyOCw3IEBAIFRlc3QgdGhhdCAnU3VidHJlZSBN
b2RpZmllZCcgYnJlYWtwb2ludCBpcyBoaXQgd2hlbiByZW1vdmluZyBhIGNoaWxkLgogUmVtb3Zl
IGdyYW5kY2hpbGRFbGVtZW50LgogU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCiBDYWxsIHN0YWNr
OgotICAgIDApIHJlbW92ZUVsZW1lbnQgKGRvbS1icmVha3BvaW50cy5odG1sOjMwKQorICAgIDAp
IHJlbW92ZUVsZW1lbnQgKGRvbS1icmVha3BvaW50cy5odG1sOjQ0KQogICAgIDEpICAoOjEpCiBQ
YXVzZWQgb24gYSAiU3VidHJlZSBNb2RpZmllZCIgYnJlYWtwb2ludCBzZXQgb24gZGl2I3Jvb3RF
bGVtZW50LCBiZWNhdXNlIGl0cyBkZXNjZW5kYW50IGRpdiNncmFuZGNoaWxkRWxlbWVudCB3YXMg
cmVtb3ZlZC4KIFNjcmlwdCBleGVjdXRpb24gcmVzdW1lZC4KQEAgLTM2LDcgKzM2LDcgQEAgU2Ny
aXB0IGV4ZWN1dGlvbiByZXN1bWVkLgogUnVubmluZzogdGVzdE1vZGlmeUF0dHJpYnV0ZQogVGVz
dCB0aGF0ICdBdHRyaWJ1dGUgTW9kaWZpZWQnIGJyZWFrcG9pbnQgaXMgaGl0IHdoZW4gbW9kaWZ5
aW5nIGF0dHJpYnV0ZS4KIFNldCAnQXR0cmlidXRlIE1vZGlmaWVkJyBET00gYnJlYWtwb2ludCBv
biByb290RWxlbWVudC4KLU1vZGlmeSByb290RWxlbWVudCBjbGFzc05hbWUuCitNb2RpZnkgcm9v
dEVsZW1lbnQgZGF0YS10ZXN0IGF0dHJpYnV0ZS4KIFNjcmlwdCBleGVjdXRpb24gcGF1c2VkLgog
Q2FsbCBzdGFjazoKICAgICAwKSBtb2RpZnlBdHRyaWJ1dGUgKGRvbS1icmVha3BvaW50cy5odG1s
OjE4KQpAQCAtNDQsMTMgKzQ0LDM1IEBAIENhbGwgc3RhY2s6CiBQYXVzZWQgb24gYSAiQXR0cmli
dXRlIE1vZGlmaWVkIiBicmVha3BvaW50IHNldCBvbiBkaXYjcm9vdEVsZW1lbnQuCiBTY3JpcHQg
ZXhlY3V0aW9uIHJlc3VtZWQuCiAKK1J1bm5pbmc6IHRlc3RNb2RpZnlBdHRyTm9kZQorVGVzdCB0
aGF0ICdBdHRyaWJ1dGUgTW9kaWZpZWQnIGJyZWFrcG9pbnQgaXMgaGl0IHdoZW4gbW9kaWZ5aW5n
IEF0dHIgbm9kZS4KK1NldCAnQXR0cmlidXRlIE1vZGlmaWVkJyBET00gYnJlYWtwb2ludCBvbiBy
b290RWxlbWVudC4KK01vZGlmeSByb290RWxlbWVudCBkYXRhLXRlc3QgYXR0cmlidXRlLgorU2Ny
aXB0IGV4ZWN1dGlvbiBwYXVzZWQuCitDYWxsIHN0YWNrOgorICAgIDApIG1vZGlmeUF0dHJOb2Rl
IChkb20tYnJlYWtwb2ludHMuaHRtbDoyNCkKKyAgICAxKSAgKDoxKQorUGF1c2VkIG9uIGEgIkF0
dHJpYnV0ZSBNb2RpZmllZCIgYnJlYWtwb2ludCBzZXQgb24gZGl2I3Jvb3RFbGVtZW50LgorU2Ny
aXB0IGV4ZWN1dGlvbiByZXN1bWVkLgorCitSdW5uaW5nOiB0ZXN0U2V0QXR0ck5vZGUKK1Rlc3Qg
dGhhdCAnQXR0cmlidXRlIE1vZGlmaWVkJyBicmVha3BvaW50IGlzIGhpdCB3aGVuIGFkZGluZyBh
IG5ldyBBdHRyIG5vZGUuCitTZXQgJ0F0dHJpYnV0ZSBNb2RpZmllZCcgRE9NIGJyZWFrcG9pbnQg
b24gcm9vdEVsZW1lbnQuCitNb2RpZnkgcm9vdEVsZW1lbnQgZGF0YS1mb28gYXR0cmlidXRlLgor
U2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCitDYWxsIHN0YWNrOgorICAgIDApIHNldEF0dHJOb2Rl
IChkb20tYnJlYWtwb2ludHMuaHRtbDozMikKKyAgICAxKSAgKDoxKQorUGF1c2VkIG9uIGEgIkF0
dHJpYnV0ZSBNb2RpZmllZCIgYnJlYWtwb2ludCBzZXQgb24gZGl2I3Jvb3RFbGVtZW50LgorU2Ny
aXB0IGV4ZWN1dGlvbiByZXN1bWVkLgorCiBSdW5uaW5nOiB0ZXN0TW9kaWZ5U3R5bGVBdHRyaWJ1
dGUKIFRlc3QgdGhhdCAnQXR0cmlidXRlIE1vZGlmaWVkJyBicmVha3BvaW50IGlzIGhpdCB3aGVu
IG1vZGlmeWluZyBzdHlsZSBhdHRyaWJ1dGUuCiBTZXQgJ0F0dHJpYnV0ZSBNb2RpZmllZCcgRE9N
IGJyZWFrcG9pbnQgb24gcm9vdEVsZW1lbnQuCiBNb2RpZnkgcm9vdEVsZW1lbnQgc3R5bGUuY29s
b3IgYXR0cmlidXRlLgogU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCiBDYWxsIHN0YWNrOgotICAg
IDApIG1vZGlmeVN0eWxlQXR0cmlidXRlIChkb20tYnJlYWtwb2ludHMuaHRtbDoyNCkKKyAgICAw
KSBtb2RpZnlTdHlsZUF0dHJpYnV0ZSAoZG9tLWJyZWFrcG9pbnRzLmh0bWw6MzgpCiAgICAgMSkg
ICg6MSkKIFBhdXNlZCBvbiBhICJBdHRyaWJ1dGUgTW9kaWZpZWQiIGJyZWFrcG9pbnQgc2V0IG9u
IGRpdiNyb290RWxlbWVudC4KIFNjcmlwdCBleGVjdXRpb24gcmVzdW1lZC4KQEAgLTYxLDcgKzgz
LDcgQEAgU2V0ICdOb2RlIFJlbW92ZWQnIERPTSBicmVha3BvaW50IG9uIGVsZW1lbnRUb1JlbW92
ZS4KIFJlbW92ZSBlbGVtZW50VG9SZW1vdmUuCiBTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KIENh
bGwgc3RhY2s6Ci0gICAgMCkgcmVtb3ZlRWxlbWVudCAoZG9tLWJyZWFrcG9pbnRzLmh0bWw6MzAp
CisgICAgMCkgcmVtb3ZlRWxlbWVudCAoZG9tLWJyZWFrcG9pbnRzLmh0bWw6NDQpCiAgICAgMSkg
ICg6MSkKIFBhdXNlZCBvbiBhICJOb2RlIFJlbW92ZWQiIGJyZWFrcG9pbnQgc2V0IG9uIGRpdiNl
bGVtZW50VG9SZW1vdmUuCiBTY3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQuCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>