<?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>143943</bug_id>
          
          <creation_ts>2015-04-19 22:52:23 -0700</creation_ts>
          <short_desc>Remove OwnPtr and PassOwnPtr use from WebKit/cf, WebKit/mac, and WebKit2</short_desc>
          <delta_ts>2015-04-22 23:03:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>128007</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1086728</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-19 22:52:23 -0700</bug_when>
    <thetext>Remove OwnPtr and PassOwnPtr use from WebKit/cf, WebKit/mac, and WebKit2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086731</commentid>
    <comment_count>1</comment_count>
      <attachid>251144</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-19 23:03:18 -0700</bug_when>
    <thetext>Created attachment 251144
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086736</commentid>
    <comment_count>2</comment_count>
      <attachid>251146</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-19 23:27:05 -0700</bug_when>
    <thetext>Created attachment 251146
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086797</commentid>
    <comment_count>3</comment_count>
      <attachid>251162</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-20 09:45:45 -0700</bug_when>
    <thetext>Created attachment 251162
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086811</commentid>
    <comment_count>4</comment_count>
      <attachid>251162</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-20 10:14:13 -0700</bug_when>
    <thetext>Comment on attachment 251162
Patch

Need to fix iOS compilation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087056</commentid>
    <comment_count>5</comment_count>
      <attachid>251230</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-21 08:55:38 -0700</bug_when>
    <thetext>Created attachment 251230
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087057</commentid>
    <comment_count>6</comment_count>
      <attachid>251231</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-21 08:56:14 -0700</bug_when>
    <thetext>Created attachment 251231
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087388</commentid>
    <comment_count>7</comment_count>
      <attachid>251231</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-04-22 08:40:31 -0700</bug_when>
    <thetext>Comment on attachment 251231
Patch

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

iOS build needs fixing, Editor::insertDictationPhrases needs to be updated.

&gt; Source/WebCore/platform/network/ios/QuickLook.mm:191
&gt; +NSURLRequest *WebCore::registerQLPreviewConverterIfNeeded(NSURL *url, NSString *mimeType, NSData *data)

I think this should return a RetainPtr instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087398</commentid>
    <comment_count>8</comment_count>
      <attachid>251231</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-22 09:04:42 -0700</bug_when>
    <thetext>Comment on attachment 251231
Patch

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

&gt;&gt; Source/WebCore/platform/network/ios/QuickLook.mm:191
&gt;&gt; +NSURLRequest *WebCore::registerQLPreviewConverterIfNeeded(NSURL *url, NSString *mimeType, NSData *data)
&gt; 
&gt; I think this should return a RetainPtr instead.

I see your point. I thought it would just return an autoreleased object, but I guess there’s no guarantee that the result of [converter previewRequest] will still be valid once converter is released.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087722</commentid>
    <comment_count>9</comment_count>
      <attachid>251403</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-22 21:38:09 -0700</bug_when>
    <thetext>Created attachment 251403
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087733</commentid>
    <comment_count>10</comment_count>
      <attachid>251407</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-22 22:23:11 -0700</bug_when>
    <thetext>Created attachment 251407
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087736</commentid>
    <comment_count>11</comment_count>
      <attachid>251408</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-22 22:34:44 -0700</bug_when>
    <thetext>Created attachment 251408
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087741</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-22 23:03:22 -0700</bug_when>
    <thetext>Committed r183172: &lt;http://trac.webkit.org/changeset/183172&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251144</attachid>
            <date>2015-04-19 23:03:18 -0700</date>
            <delta_ts>2015-04-19 23:26:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143943-20150419230216.patch</filename>
            <type>text/plain</type>
            <size>29978</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzMDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDViMWUxMTU3NGE4YmYx
M2VlOWZkMDc3YTRkNWUyMTJmNzEwODdmZC4uNzY3NDViNTY4NzM5ZDI4ZjFjNmJhZTM2ZTEyODE3
NmI1NWEwZDlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE1LTA0LTE5ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgT3duUHRyIGFuZCBQ
YXNzT3duUHRyIHVzZSBmcm9tIFdlYktpdC9jZiwgV2ViS2l0L21hYywgYW5kIFdlYktpdDIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mzk0MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXREaWN0YXRpb25QaHJhc2Vz
QXNDaGlsZE9mRWxlbWVudCk6IENoYW5nZWQgdGhpcyBpT1Mtb25seQorICAgICAgICBmdW5jdGlv
biB0byB0YWtlIGEgVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiBhbmQgbm90IGludm9sdmUgUGFzc093
blB0ci4gQWxzbyBtYWRlCisgICAgICAgIGl0IHRha2UgYSByZWZlcmVuY2UgcmF0aGVyIHRoYW4g
YSBwb2ludGVyIHRvIHRoZSBlbGVtZW50IGFuZCBzaW1wbGlmeSB0aGUgY29kZQorICAgICAgICBh
IGJpdCB1c2luZyBtb2Rlcm4gZm9yIGxvb3BzIGFuZCBhdXRvLgorICAgICAgICAqIGVkaXRpbmcv
RWRpdG9yLmg6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tM
b29rLmg6IFJldHVybiBhbiBOU1VSTFJlcXVlc3QgKiBpbnN0ZWFkIG9mIGEKKyAgICAgICAgUGFz
c093blB0cjxSZXNvdXJjZVJlcXVlc3Q+IGZyb20gdGhpcyBpT1Mtc3BlY2lmaWMgZnVuY3Rpb24u
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tOgorICAgICAgICAo
V2ViQ29yZTo6cmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZCk6IERpdHRvLgorCiAy
MDE1LTA0LTE5ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBJbXByb3ZlIHRoZSBmZWF0dXJlLmpzb24gZmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2YvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cKaW5kZXggYTg0
ZjZkMTI1Yjg5ZjVlMGRiN2QxMjc0MGI2NjllZGI4MGY1ZTIzNS4uNmU5NDdlYmI1ZjRhNDQ4MWIw
YWIyZTg3YjM3MDk4MjI5OGU3M2NmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jZi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxNS0wNC0xOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVt
b3ZlIE93blB0ciBhbmQgUGFzc093blB0ciB1c2UgZnJvbSBXZWJLaXQvY2YsIFdlYktpdC9tYWMs
IGFuZCBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDM5NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcDogUmVtb3ZlZCB1
bm5lZWRlZCBpbmNsdWRlLgorCiAyMDE0LTA5LTI1ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIFdpbkNFIHBvcnQgZnJvbSB0cnVuawpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCmluZGV4IGExMzA1OTY5Yzk4MWZhNmJjNjJlMjk2MDZkODZiNDVhZTYwZjY4OWEu
LmVlNGMxMWJmOWI0NzFjM2YzODY1M2IyMjA2YmQ3ZjExM2EzYjRhOTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0OSBAQAorMjAxNS0wNC0xOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIE93blB0ciBhbmQgUGFzc093blB0ciB1c2UgZnJvbSBX
ZWJLaXQvY2YsIFdlYktpdC9tYWMsIGFuZCBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM5NDMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2Uu
aDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlLgorICAgICAgICAqIFBsdWdpbnMvV2ViQmFzZU5l
dHNjYXBlUGx1Z2luVmlldy5oOiBEaXR0by4KKworICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2Nh
cGVQbHVnaW5FdmVudEhhbmRsZXIuaDogVXNlIHVuaXF1ZV9wdHIgaW5zdGVhZCBvZgorICAgICAg
ICBQYXNzT3duUHRyIGZvciB0aGUgY3JlYXRlIGZ1bmN0aW9uLiBBbHNvIHR3ZWFrZWQgZm9ybWF0
dGluZyBhbmQgcmVtb3ZlZAorICAgICAgICB1bm5lZWRlZCBmb3J3YXJkIGRlY2xhcmF0aW9uIG9m
IENHUmVjdC4KKyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVy
Lm1tOgorICAgICAgICAoV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXI6OmNyZWF0ZSk6IENo
YW5nZWQgdG8gdXNlIHVuaXF1ZV9wdHIgYW5kCisgICAgICAgIG1ha2VfdW5pcXVlLgorCisgICAg
ICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcuaDogVXNlIHVuaXF1ZV9wdHIgaW5z
dGVhZCBvZiBPd25QdHIgZm9yCisgICAgICAgIHRoZSBfZXZlbnRIYW5kbGVyIGZpZWxkLgorICAg
ICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJO
ZXRzY2FwZVBsdWdpblZpZXcgZGVzdHJveVBsdWdpbl0pOiBDaGFuZ2VkIGNvZGUgdG8gd29yayB3
aXRoIHVuaXF1ZV9wdHIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFD
bGllbnQubW06IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZS4KKworICAgICAgICAqIFdlYlZpZXcv
V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW06IENoYW5nZWQgdG8gdXNlIG1ha2Vf
dW5pcXVlLgorICAgICAgICAqIFdlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1v
Y2tJbnRlcm5hbC5oOiBDaGFuZ2VkIHRvIHVzZSB1bmlxdWVfcHRyLgorCisgICAgICAgICogV2Vi
Vmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKHZlY3RvckZvckRpY3RhdGlvblBocmFzZXNBcnJh
eSk6IENoYW5nZWQgdG8gcmV0dXJuIFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4gYW5kCisgICAgICAg
IG5vdCBhIFBhc3NPd25QdHIuIEFsc28gcmV3cm90ZSB0byBiZSBtdWNoIHNpbXBsZXIsIGFsdGhv
dWdoIHRoZXJlIGlzIHN0aWxsIGEKKyAgICAgICAgcHJlLWV4aXN0aW5nIHByb2JsZW0gaGVyZSB3
aGVyZSB0aGlzIGNvdWxkIHB1dCBlbXB0eSB2ZWN0b3JzIGludG8gdGhlIHJlc3VsdCwKKyAgICAg
ICAgYW5kIEknbSBwcmV0dHkgc3VyZSB0aGUgY2xpZW50IG5ldmVyIGV4cGVjdHMgYW55IG9mIHRo
ZSBWZWN0b3I8U3RyaW5nPiB0byBiZSBlbXB0eS4KKyAgICAgICAgKC1bV2ViRnJhbWUgX2xvYWRE
YXRhOk1JTUVUeXBlOnRleHRFbmNvZGluZ05hbWU6YmFzZVVSTDp1bnJlYWNoYWJsZVVSTDpdKToK
KyAgICAgICAgUmV3cm90ZSBsb2dpYyB0byBpbnZvbHZlIFdlYkNvcmUgdHlwZXMgYSBiaXQgbGVz
czsgb2xkIGNvZGUgd2FzIHJvdW5kIHRyaXBwaW5nCisgICAgICAgIHRoaW5ncyB0aHJvdWdoIFdl
YkNvcmU6OlVSTCBmb3Igbm8gb2J2aW91cyByZWFzb24uCisKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkZyYW1lSW50ZXJuYWwuaDogQ2hhbmdlZCB2ZWN0b3JGb3JEaWN0YXRpb25QaHJhc2VzQXJyYXkg
dG8gcmV0dXJuCisgICAgICAgIGEgVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiBhbmQgbm90IGEgUGFz
c093blB0ci4KKworICAgICAgICAqIFdlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIuaDog
UmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3RGF0
YS5oOiBDaGFuZ2VkIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyIHRvIGJlIGEKKyAgICAg
ICAgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuCisgICAgICAgICogV2ViVmlldy9XZWJW
aWV3RGF0YS5tbToKKyAgICAgICAgKC1bV2ViVmlld1ByaXZhdGUgaW5pdF0pOiBVc2UgbWFrZV91
bmlxdWUgdG8gaW5pdGlhbGl6ZSBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci4KKwogMjAx
NS0wNC0xNyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVH
UkVTU0lPTjogU1ZHIGRvZXMgbm90IHN1cHBvcnQgbGluayBkcmFnZ2luZwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IDExMGEyMzMyYjhmMTRkNmMyZTE1ZWU5NjQyMzYxMWFmN2U5NTdhMmUuLjYyNWVmMWNkY2FhNzU0
ODZmNTBhY2RkNWNkYjkzNzM1ZWNkOGJmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxNS0wNC0xOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVt
b3ZlIE93blB0ciBhbmQgUGFzc093blB0ciB1c2UgZnJvbSBXZWJLaXQvY2YsIFdlYktpdC9tYWMs
IGFuZCBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDM5NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVk
ZS4KKwogMjAxNS0wNC0xOCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
IAogICAgICAgICBSRUdSRVNTSU9OIChyMTgxNjU2KTogQW5pbWF0ZWQgdGlsZWQgbGF5ZXJzIGFy
ZSBtaXNzaW5nIGNvbnRlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA3MTBhYTM5
N2VjZTVlMWU5Y2UwNWM5NzRiZTBmYzY2M2UyNWI4NTg4Li45ZGVhMzQzYzZjZjFmZTFmNmFjNzgz
MmI1OGIwNzg1MjFlOTMzOGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zODgs
NiArMzg4LDcgQEAgdm9pZCBFZGl0b3I6OmNsZWFyVGV4dCgpCiB9CiAKICNpZiBQTEFURk9STShJ
T1MpCisKIHZvaWQgRWRpdG9yOjppbnNlcnREaWN0YXRpb25QaHJhc2VzKFBhc3NPd25QdHI8VmVj
dG9yPFZlY3RvcjxTdHJpbmc+ID4gPiBkaWN0YXRpb25QaHJhc2VzLCBSZXRhaW5QdHI8aWQ+IG1l
dGFkYXRhKQogewogICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpKQpAQCAtMzk5
LDcgKzQwMCw3IEBAIHZvaWQgRWRpdG9yOjppbnNlcnREaWN0YXRpb25QaHJhc2VzKFBhc3NPd25Q
dHI8VmVjdG9yPFZlY3RvcjxTdHJpbmc+ID4gPiBkaWN0YXRpCiAgICAgYXBwbHlDb21tYW5kKERp
Y3RhdGlvbkNvbW1hbmRJT1M6OmNyZWF0ZShkb2N1bWVudCgpLCBkaWN0YXRpb25QaHJhc2VzLCBt
ZXRhZGF0YSkpOwogfQogCi12b2lkIEVkaXRvcjo6c2V0RGljdGF0aW9uUGhyYXNlc0FzQ2hpbGRP
ZkVsZW1lbnQoUGFzc093blB0cjxWZWN0b3I8VmVjdG9yPFN0cmluZz4gPiA+IGRpY3RhdGlvblBo
cmFzZXMsIFJldGFpblB0cjxpZD4gbWV0YWRhdGEsIEVsZW1lbnQqIGVsZW1lbnQpCit2b2lkIEVk
aXRvcjo6c2V0RGljdGF0aW9uUGhyYXNlc0FzQ2hpbGRPZkVsZW1lbnQoY29uc3QgVmVjdG9yPFZl
Y3RvcjxTdHJpbmc+PiYgZGljdGF0aW9uUGhyYXNlcywgUmV0YWluUHRyPGlkPiBtZXRhZGF0YSwg
RWxlbWVudCYgZWxlbWVudCkKIHsKICAgICAvLyBDbGVhciB0aGUgY29tcG9zaXRpb24uCiAgICAg
Y2xlYXIoKTsKQEAgLTQxMCw1NCArNDExLDQ5IEBAIHZvaWQgRWRpdG9yOjpzZXREaWN0YXRpb25Q
aHJhc2VzQXNDaGlsZE9mRWxlbWVudChQYXNzT3duUHRyPFZlY3RvcjxWZWN0b3I8U3RyaW5nCiAg
ICAgCiAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5jbGVhcigpOwogICAgIAotICAgIGVsZW1lbnQt
PnJlbW92ZUNoaWxkcmVuKCk7CisgICAgZWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAgIAot
ICAgIGlmIChkaWN0YXRpb25QaHJhc2VzLT5pc0VtcHR5KCkpIHsKKyAgICBpZiAoZGljdGF0aW9u
UGhyYXNlcy5pc0VtcHR5KCkpIHsKICAgICAgICAgY2xpZW50KCktPnJlc3BvbmRUb0NoYW5nZWRD
b250ZW50cygpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIEV4Y2VwdGlvbkNv
ZGUgZWM7ICAgIAogICAgIFJlZlB0cjxSYW5nZT4gY29udGV4dCA9IGRvY3VtZW50KCkuY3JlYXRl
UmFuZ2UoKTsKLSAgICBjb250ZXh0LT5zZWxlY3ROb2RlQ29udGVudHMoZWxlbWVudCwgZWMpOwot
ICAgIAorICAgIGNvbnRleHQtPnNlbGVjdE5vZGVDb250ZW50cygmZWxlbWVudCwgZWMpOworCiAg
ICAgU3RyaW5nQnVpbGRlciBkaWN0YXRpb25QaHJhc2VzQnVpbGRlcjsKLSAgICBzaXplX3QgZGlj
dGF0aW9uUGhyYXNlQ291bnQgPSBkaWN0YXRpb25QaHJhc2VzLT5zaXplKCk7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBkaWN0YXRpb25QaHJhc2VDb3VudDsgaSsrKSB7Ci0gICAgICAgIGNv
bnN0IFN0cmluZyYgZmlyc3RJbnRlcnByZXRhdGlvbiA9IGRpY3RhdGlvblBocmFzZXMtPmF0KGkp
WzBdOwotICAgICAgICBkaWN0YXRpb25QaHJhc2VzQnVpbGRlci5hcHBlbmQoZmlyc3RJbnRlcnBy
ZXRhdGlvbik7Ci0gICAgfQotICAgIFN0cmluZyBzZXJpYWxpemVkRGljdGF0aW9uUGhyYXNlcyA9
IGRpY3RhdGlvblBocmFzZXNCdWlsZGVyLnRvU3RyaW5nKCk7Ci0gICAgCi0gICAgZWxlbWVudC0+
YXBwZW5kQ2hpbGQoY3JlYXRlRnJhZ21lbnRGcm9tVGV4dCgqY29udGV4dC5nZXQoKSwgc2VyaWFs
aXplZERpY3RhdGlvblBocmFzZXMpLCBlYyk7Ci0gICAgCisgICAgZm9yIChhdXRvJiBpbnRlcnBy
ZXRhdGlvbnMgOiBkaWN0YXRpb25QaHJhc2VzKQorICAgICAgICBkaWN0YXRpb25QaHJhc2VzQnVp
bGRlci5hcHBlbmQoaW50ZXJwcmV0YXRpb25zWzBdKTsKKworICAgIGVsZW1lbnQuYXBwZW5kQ2hp
bGQoY3JlYXRlRnJhZ21lbnRGcm9tVGV4dCgqY29udGV4dCwgZGljdGF0aW9uUGhyYXNlc0J1aWxk
ZXIudG9TdHJpbmcoKSksIGVjKTsKKwogICAgIC8vIFdlIG5lZWQgYSBsYXlvdXQgaW4gb3JkZXIg
dG8gYWRkIG1hcmtlcnMgYmVsb3cuCiAgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXQoKTsKLSAg
ICAKLSAgICBpZiAoIWVsZW1lbnQtPmZpcnN0Q2hpbGQoKS0+aXNUZXh0Tm9kZSgpKSB7CisKKyAg
ICBpZiAoIWVsZW1lbnQuZmlyc3RDaGlsZCgpLT5pc1RleHROb2RlKCkpIHsKICAgICAgICAgLy8g
U2hvdWxkbid0IGhhcHBlbi4KLSAgICAgICAgQVNTRVJUKGVsZW1lbnQtPmZpcnN0Q2hpbGQoKS0+
aXNUZXh0Tm9kZSgpKTsKKyAgICAgICAgQVNTRVJUKGVsZW1lbnQuZmlyc3RDaGlsZCgpLT5pc1Rl
eHROb2RlKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgICAgICAKLSAgICBUZXh0KiB0
ZXh0Tm9kZSA9IHN0YXRpY19jYXN0PFRleHQqPihlbGVtZW50LT5maXJzdENoaWxkKCkpOwotICAg
IGludCBwcmV2aW91c0RpY3RhdGlvblBocmFzZVN0YXJ0ID0gMDsKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGRpY3RhdGlvblBocmFzZUNvdW50OyBpKyspIHsKLSAgICAgICAgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGludGVycHJldGF0aW9ucyA9IGRpY3RhdGlvblBocmFzZXMtPmF0KGkpOwor
CisgICAgVGV4dCYgdGV4dE5vZGUgPSBkb3duY2FzdDxUZXh0PigqZWxlbWVudC5maXJzdENoaWxk
KCkpOworICAgIGZvciAoYXV0byYgaW50ZXJwcmV0YXRpb25zIDogZGljdGF0aW9uUGhyYXNlcykg
ewogICAgICAgICBpbnQgZGljdGF0aW9uUGhyYXNlTGVuZ3RoID0gaW50ZXJwcmV0YXRpb25zWzBd
Lmxlbmd0aCgpOwogICAgICAgICBpbnQgZGljdGF0aW9uUGhyYXNlRW5kID0gcHJldmlvdXNEaWN0
YXRpb25QaHJhc2VTdGFydCArIGRpY3RhdGlvblBocmFzZUxlbmd0aDsKICAgICAgICAgaWYgKGlu
dGVycHJldGF0aW9ucy5zaXplKCkgPiAxKSB7Ci0gICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IGRp
Y3RhdGlvblBocmFzZVJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCB0ZXh0Tm9kZSwg
cHJldmlvdXNEaWN0YXRpb25QaHJhc2VTdGFydCwgdGV4dE5vZGUsIGRpY3RhdGlvblBocmFzZUVu
ZCk7Ci0gICAgICAgICAgICBkb2N1bWVudCgpLm1hcmtlcnMoKS5hZGREaWN0YXRpb25QaHJhc2VX
aXRoQWx0ZXJuYXRpdmVzTWFya2VyKGRpY3RhdGlvblBocmFzZVJhbmdlLmdldCgpLCBpbnRlcnBy
ZXRhdGlvbnMpOworICAgICAgICAgICAgYXV0byBkaWN0YXRpb25QaHJhc2VSYW5nZSA9IFJhbmdl
OjpjcmVhdGUoZG9jdW1lbnQoKSwgJnRleHROb2RlLCBwcmV2aW91c0RpY3RhdGlvblBocmFzZVN0
YXJ0LCAmdGV4dE5vZGUsIGRpY3RhdGlvblBocmFzZUVuZCk7CisgICAgICAgICAgICBkb2N1bWVu
dCgpLm1hcmtlcnMoKS5hZGREaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzTWFya2VyKGRp
Y3RhdGlvblBocmFzZVJhbmdlLnB0cigpLCBpbnRlcnByZXRhdGlvbnMpOwogICAgICAgICB9CiAg
ICAgICAgIHByZXZpb3VzRGljdGF0aW9uUGhyYXNlU3RhcnQgPSBkaWN0YXRpb25QaHJhc2VFbmQ7
CiAgICAgfQotICAgIAotICAgIFJlZlB0cjxSYW5nZT4gcmVzdWx0UmFuZ2UgPSBSYW5nZTo6Y3Jl
YXRlKGRvY3VtZW50KCksIHRleHROb2RlLCAwLCB0ZXh0Tm9kZSwgdGV4dE5vZGUtPmxlbmd0aCgp
KTsKLSAgICBkb2N1bWVudCgpLm1hcmtlcnMoKS5hZGREaWN0YXRpb25SZXN1bHRNYXJrZXIocmVz
dWx0UmFuZ2UuZ2V0KCksIG1ldGFkYXRhKTsKLSAgICAKKworICAgIGF1dG8gcmVzdWx0UmFuZ2Ug
PSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksICZ0ZXh0Tm9kZSwgMCwgJnRleHROb2RlLCB0ZXh0
Tm9kZS5sZW5ndGgoKSk7CisgICAgZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkRGljdGF0aW9uUmVz
dWx0TWFya2VyKHJlc3VsdFJhbmdlLnB0cigpLCBtZXRhZGF0YSk7CisKICAgICBjbGllbnQoKS0+
cmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCk7CiB9CisKICNlbmRpZgogCiB2b2lkIEVkaXRvcjo6
cGFzdGVBc1BsYWluVGV4dChjb25zdCBTdHJpbmcmIHBhc3RpbmdUZXh0LCBib29sIHNtYXJ0UmVw
bGFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDc5MmJjNDZhNjM2NTNkZGYxNTc5ZDg3
OThiOWVkOTgwMjlkNTgwNzguLmY5YzU0YThkMjhhYWVkYzY1MGQzMmI0Mzg4NWM1NzI1NmZlMjBh
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtMzMwLDcgKzMzMCw3IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRleHRBc0NoaWxkT2ZFbGVtZW50KGNvbnN0IFN0
cmluZyYsIEVsZW1lbnQqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRleHRBbGlnbm1l
bnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNlcnREaWN0YXRpb25QaHJhc2VzKFBhc3NPd25QdHI8VmVj
dG9yPFZlY3RvcjxTdHJpbmc+ID4gPiBkaWN0YXRpb25QaHJhc2VzLCBSZXRhaW5QdHI8aWQ+IG1l
dGFkYXRhKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERpY3RhdGlvblBocmFzZXNBc0No
aWxkT2ZFbGVtZW50KFBhc3NPd25QdHI8VmVjdG9yPFZlY3RvcjxTdHJpbmc+ID4gPiBkaWN0YXRp
b25QaHJhc2VzLCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhLCBFbGVtZW50KiBlbGVtZW50KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERpY3RhdGlvblBocmFzZXNBc0NoaWxkT2ZFbGVtZW50
KGNvbnN0IFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4mIGRpY3RhdGlvblBocmFzZXMsIFJldGFpblB0
cjxpZD4gbWV0YWRhdGEsIEVsZW1lbnQmKTsKICNlbmRpZgogICAgIAogICAgIHZvaWQgYWRkVG9L
aWxsUmluZyhSYW5nZSosIGJvb2wgcHJlcGVuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5oCmluZGV4IGY1NzYyZjBhMTViYzM1ZTY2Y2JhMDE1
NDkxYjc4MDE2ZjhjODViYzYuLmE5ZWY3Y2M0N2EwNmM4MDdmMTcxYTQwNTA5ZjljOGJjMTBmZDQ4
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNr
TG9vay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9v
ay5oCkBAIC00MSw2ICs0MSw3IEBAIE9CSkNfQ0xBU1MgTlNTZXQ7CiBPQkpDX0NMQVNTIE5TU3Ry
aW5nOwogT0JKQ19DTEFTUyBOU1VSTDsKIE9CSkNfQ0xBU1MgTlNVUkxDb25uZWN0aW9uOworT0JK
Q19DTEFTUyBOU1VSTFJlcXVlc3Q7CiBPQkpDX0NMQVNTIE5TVVJMUmVzcG9uc2U7CiBPQkpDX0NM
QVNTIFFMUHJldmlld0NvbnZlcnRlcjsKIApAQCAtNzIsNyArNzMsNyBAQCBXRUJDT1JFX0VYUE9S
VCBOU1N0cmluZyAqcWxQcmV2aWV3Q29udmVydGVyRmlsZU5hbWVGb3JVUkwoTlNVUkwgKik7CiBX
RUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqcWxQcmV2aWV3Q29udmVydGVyVVRJRm9yVVJMKE5TVVJM
ICopOwogV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVRTFByZXZpZXdDb252ZXJ0ZXJGb3JVUkwo
TlNVUkwgKik7CiAKLVdFQkNPUkVfRVhQT1JUIFBhc3NPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBy
ZWdpc3RlclFMUHJldmlld0NvbnZlcnRlcklmTmVlZGVkKE5TVVJMICosIE5TU3RyaW5nICptaW1l
VHlwZSwgTlNEYXRhICopOworV0VCQ09SRV9FWFBPUlQgTlNVUkxSZXF1ZXN0ICpyZWdpc3RlclFM
UHJldmlld0NvbnZlcnRlcklmTmVlZGVkKE5TVVJMICosIE5TU3RyaW5nICptaW1lVHlwZSwgTlNE
YXRhICopOwogCiBjb25zdCBVUkwgc2FmZVFMVVJMRm9yRG9jdW1lbnRVUkxBbmRSZXNvdXJjZVVS
TChjb25zdCBVUkwmIGRvY3VtZW50VVJMLCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29r
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCmlu
ZGV4IGVlOTA0OTFjYjlhNThhYjU0NDlkNWExOTljNWJiMzVjNTllNDM3ZTIuLmU0MDYxMWMxNTc4
MWYzN2RmN2IzYjA5MjE2ZDY2Y2JmNDQzODQ2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0KQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lk
IFdlYkNvcmU6OnJlbW92ZVFMUHJldmlld0NvbnZlcnRlckZvclVSTChOU1VSTCAqdXJsKQogICAg
IFtRTENvbnRlbnREaWN0aW9uYXJ5KCkgcmVtb3ZlT2JqZWN0Rm9yS2V5OnVybF07CiB9CiAKLVBh
c3NPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBXZWJDb3JlOjpyZWdpc3RlclFMUHJldmlld0NvbnZl
cnRlcklmTmVlZGVkKE5TVVJMICp1cmwsIE5TU3RyaW5nICptaW1lVHlwZSwgTlNEYXRhICpkYXRh
KQorTlNVUkxSZXF1ZXN0ICpXZWJDb3JlOjpyZWdpc3RlclFMUHJldmlld0NvbnZlcnRlcklmTmVl
ZGVkKE5TVVJMICp1cmwsIE5TU3RyaW5nICptaW1lVHlwZSwgTlNEYXRhICpkYXRhKQogewogICAg
IFJldGFpblB0cjxOU1N0cmluZz4gdXBkYXRlZE1JTUVUeXBlID0gYWRvcHROUyhXZWJDb3JlOjpR
TFR5cGVDb3B5QmVzdE1pbWVUeXBlRm9yVVJMQW5kTWltZVR5cGUodXJsLCBtaW1lVHlwZSkpOwog
CkBAIC0yMDIsMTAgKzIwMiwxMCBAQCBQYXNzT3duUHRyPFJlc291cmNlUmVxdWVzdD4gV2ViQ29y
ZTo6cmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZChOU1VSTCAqdQogICAgICAgICAv
LyB0aGUgVVJMIHRoYXQgdGhlIFdlYkRhdGFTb3VyY2Ugd2lsbCBzZWUgZHVyaW5nIC1kZWFsbG9j
LgogICAgICAgICBhZGRRTFByZXZpZXdDb252ZXJ0ZXJXaXRoRmlsZUZvclVSTChbcmVxdWVzdCBV
UkxdLCBjb252ZXJ0ZXIuZ2V0KCksIG5pbCk7CiAKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCkpOworICAgICAgICByZXR1cm4gcmVxdWVzdDsKICAg
ICB9CiAKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbmlsOwogfQogCiBjb25zdCBV
UkwgV2ViQ29yZTo6c2FmZVFMVVJMRm9yRG9jdW1lbnRVUkxBbmRSZXNvdXJjZVVSTChjb25zdCBV
UkwmIGRvY3VtZW50VVJMLCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNw
cAppbmRleCAwNGZlNzMzMjMyOWRmNDhkODlmYTJiMzUyMmFmYmNkZjdiN2IxMmU0Li4zYmFiMjU2
NmI1NzY2MjQ2NjgxZWM5MGRkYjM4ODk1NmJkMjE2MjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcApAQCAt
NTQsNyArNTQsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogCi0jaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oIGIvU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oCmluZGV4IDA4MGY5ZTEzMmM5MzQw
N2VhZjQ1N2FmZGI2NDFlM2Y0ZTM5M2Y2MDYuLjEzZTMyYmE2MjBlMzUwN2UwNDJhOTBlODE3NDQz
ZDkzYWY2M2I2MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVk
L1Byb3h5SW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Q
cm94eUluc3RhbmNlLmgKQEAgLTMyLDcgKzMyLDYgQEAKICNpbXBvcnQgIldlYktpdFBsdWdpbkhv
c3RUeXBlcy5oIgogI2ltcG9ydCA8V2ViQ29yZS9CcmlkZ2VKU0MuaD4KICNpbXBvcnQgPFdlYkNv
cmUvcnVudGltZV9yb290Lmg+Ci0jaW1wb3J0IDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VO
ZXRzY2FwZVBsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5l
dHNjYXBlUGx1Z2luVmlldy5oCmluZGV4IDRmNGNkNTNjNWJhYzA2NzgxOWU5NTA5YTQ0ODdiNDNm
NzEyNWY0YTcuLmY0ZDhmYWI4MWE3NzIzZmQ2Y2VjZmJlMDQ4MTQ3ZGZiOGY5ZTUwZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmll
dy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2lu
Vmlldy5oCkBAIC0zMiw3ICszMiw2IEBACiAjaW1wb3J0ICJXZWJOZXRzY2FwZVBsdWdpblBhY2th
Z2UuaCIKICNpbXBvcnQgIldlYlBsdWdpbkNvbnRhaW5lckNoZWNrLmgiCiAjaW1wb3J0IDx3dGYv
Rm9yd2FyZC5oPgotI2ltcG9ydCA8d3RmL093blB0ci5oPgogI2ltcG9ydCA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5F
dmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVn
aW5FdmVudEhhbmRsZXIuaAppbmRleCA5ZTMyZTJmYmZiMzZhZWNiMDA5Yzk4MzE3YjBkODcwZDU1
MjA0YWI0Li4xNGI0MWJjZmFhOWRkNjc4YzAwOGI4YTYxZWFhMzNiZWJlNzVjYzA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5k
bGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2
ZW50SGFuZGxlci5oCkBAIC0zMywyNiArMzMsMjQgQEAKIEBjbGFzcyBOU0V2ZW50OwogQGNsYXNz
IFdlYk5ldHNjYXBlUGx1Z2luVmlldzsKIAotc3RydWN0IENHUmVjdDsKLQogY2xhc3MgV2ViTmV0
c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyPiBjcmVhdGUoV2ViTmV0c2NhcGVQbHVnaW5W
aWV3Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJOZXRzY2FwZVBsdWdpbkV2ZW50
SGFuZGxlcj4gY3JlYXRlKFdlYk5ldHNjYXBlUGx1Z2luVmlldyAqKTsKICAgICB2aXJ0dWFsIH5X
ZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcigpIHsgfQogICAgIAogICAgIHZpcnR1YWwgdm9p
ZCBkcmF3UmVjdChDR0NvbnRleHRSZWYsIGNvbnN0IE5TUmVjdCYpID0gMDsKICAgICAKLSAgICB2
aXJ0dWFsIHZvaWQgbW91c2VEb3duKE5TRXZlbnQqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIG1v
dXNlRHJhZ2dlZChOU0V2ZW50KikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBtb3VzZUVudGVyZWQo
TlNFdmVudCopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgbW91c2VFeGl0ZWQoTlNFdmVudCopID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgbW91c2VNb3ZlZChOU0V2ZW50KikgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBtb3VzZVVwKE5TRXZlbnQqKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHNjcm9sbFdo
ZWVsKE5TRXZlbnQqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG1vdXNlRG93bihOU0V2ZW50ICop
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbW91c2VEcmFnZ2VkKE5TRXZlbnQgKikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBtb3VzZUVudGVyZWQoTlNFdmVudCAqKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIG1vdXNlRXhpdGVkKE5TRXZlbnQgKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtb3VzZU1v
dmVkKE5TRXZlbnQgKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtb3VzZVVwKE5TRXZlbnQgKikg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxXaGVlbChOU0V2ZW50ICopID0gMDsKICAgICAK
LSAgICB2aXJ0dWFsIHZvaWQga2V5RG93bihOU0V2ZW50KikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBrZXlVcChOU0V2ZW50KikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBmbGFnc0NoYW5nZWQoTlNF
dmVudCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQga2V5RG93bihOU0V2ZW50ICopID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQga2V5VXAoTlNFdmVudCAqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZs
YWdzQ2hhbmdlZChOU0V2ZW50ICopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3ludGhldGljS2V5
RG93bldpdGhDb21tYW5kTW9kaWZpZXIoaW50IGtleUNvZGUsIGNoYXIgY2hhcmFjdGVyKSA9IDA7
CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGZvY3VzQ2hhbmdlZChib29sIGhhc0ZvY3VzKSA9IDA7
CkBAIC02MiwxNyArNjAsMTggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdG9wVGltZXJz
KCkgeyB9CiAgICAgCiAgICAgLy8gUmV0dXJucyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgd2luZG93
IHVzZWQgaW4gTlBQX1NldFdpbmRvdwotICAgIHZpcnR1YWwgdm9pZCogcGxhdGZvcm1XaW5kb3co
TlNXaW5kb3cqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkKiBwbGF0Zm9ybVdpbmRvdyhOU1dpbmRv
dyAqKSA9IDA7CiAgICAgCiAgICAgYm9vbCBjdXJyZW50RXZlbnRJc1VzZXJHZXN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9jdXJyZW50RXZlbnRJc1VzZXJHZXN0dXJlOyB9CisKIHByb3RlY3RlZDoK
LSAgICBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcihXZWJOZXRzY2FwZVBsdWdpblZpZXcq
IHBsdWdpblZpZXcpCisgICAgZXhwbGljaXQgV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIo
V2ViTmV0c2NhcGVQbHVnaW5WaWV3ICpwbHVnaW5WaWV3KQogICAgICAgICA6IG1fcGx1Z2luVmll
dyhwbHVnaW5WaWV3KQogICAgICAgICAsIG1fY3VycmVudEV2ZW50SXNVc2VyR2VzdHVyZShmYWxz
ZSkKICAgICB7CiAgICAgfQogICAgIAotICAgIFdlYk5ldHNjYXBlUGx1Z2luVmlldyogbV9wbHVn
aW5WaWV3OworICAgIFdlYk5ldHNjYXBlUGx1Z2luVmlldyAqbV9wbHVnaW5WaWV3OwogICAgIGJv
b2wgbV9jdXJyZW50RXZlbnRJc1VzZXJHZXN0dXJlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIubW0K
aW5kZXggOWMyZGM1MDVlM2ZlZDMyZDY0MTAxZjIxNTE4YzZlZThhMzgwODY5YS4uN2RmOGU4NzQy
ZjVhNTMwZjhjYTMzNDc3MGIzZjA5OTNlMmZhNTRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLm1tCkBA
IC0yOCwyMCArMjgsMTkgQEAKICNpbXBvcnQgIldlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVy
LmgiCiAKICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW1wb3J0IDx3dGYvUGFzc093blB0
ci5oPgogI2ltcG9ydCAiV2ViTmV0c2NhcGVQbHVnaW5WaWV3LmgiCiAjaW1wb3J0ICJXZWJOZXRz
Y2FwZVBsdWdpbkV2ZW50SGFuZGxlckNhcmJvbi5oIgogI2ltcG9ydCAiV2ViTmV0c2NhcGVQbHVn
aW5FdmVudEhhbmRsZXJDb2NvYS5oIgogCi1QYXNzT3duUHRyPFdlYk5ldHNjYXBlUGx1Z2luRXZl
bnRIYW5kbGVyPiBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcjo6Y3JlYXRlKFdlYk5ldHNj
YXBlUGx1Z2luVmlldyogcGx1Z2luVmlldykKK3N0ZDo6dW5pcXVlX3B0cjxXZWJOZXRzY2FwZVBs
dWdpbkV2ZW50SGFuZGxlcj4gV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXI6OmNyZWF0ZShX
ZWJOZXRzY2FwZVBsdWdpblZpZXcgKnBsdWdpblZpZXcpCiB7CiAgICAgc3dpdGNoIChbcGx1Z2lu
VmlldyBldmVudE1vZGVsXSkgewogI2lmbmRlZiBOUF9OT19DQVJCT04KICAgICAgICAgY2FzZSBO
UEV2ZW50TW9kZWxDYXJib246Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYk5l
dHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ2FyYm9uKHBsdWdpblZpZXcpKTsKLSNlbmRpZiAvLyBO
UF9OT19DQVJCT04KKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYk5ldHNj
YXBlUGx1Z2luRXZlbnRIYW5kbGVyQ2FyYm9uPihwbHVnaW5WaWV3KTsKKyNlbmRpZgogICAgICAg
ICBjYXNlIE5QRXZlbnRNb2RlbENvY29hOgotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hKHBsdWdpblZpZXcpKTsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5k
bGVyQ29jb2E+KHBsdWdpblZpZXcpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3LmggYi9T
b3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5oCmluZGV4IGEx
NGEzZmY1NjFhMWRkN2NhYjJiNjcyYjJiYmI4YjdhNjVjZDgwNzYuLjc4M2YzM2YxNzY5MjYwYmEw
MGZiZTY0OGU0ZjMxN2I3YmRkOTZjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1Bs
dWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1
Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcuaApAQCAtMjksMTggKzI5LDEzIEBACiAjaWYgRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKICNpbXBvcnQgIldlYkJhc2VOZXRzY2FwZVBsdWdp
blZpZXcuaCIKLQogI2ltcG9ydCAiV2ViTmV0c2NhcGVDb250YWluZXJDaGVja1ByaXZhdGUuaCIK
ICNpbXBvcnQgPFdlYktpdExlZ2FjeS9ucGZ1bmN0aW9ucy5oPgogI2ltcG9ydCA8V2ViS2l0TGVn
YWN5L25wYXBpLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL0hhc2hT
ZXQuaD4KLSNpbXBvcnQgPHd0Zi9Pd25QdHIuaD4KIAotQGNsYXNzIFdlYkRhdGFTb3VyY2U7Ci1A
Y2xhc3MgV2ViRnJhbWU7CiBAY2xhc3MgV2ViTmV0c2NhcGVQbHVnaW5QYWNrYWdlOwotQGNsYXNz
IFdlYlZpZXc7CiAKIGNsYXNzIFBsdWdpblRpbWVyOwogY2xhc3MgV2ViTmV0c2NhcGVQbHVnaW5T
dHJlYW07CkBAIC04Myw3ICs3OCw3IEBAIHR5cGVkZWYgdW5pb24gUGx1Z2luUG9ydCB7CiAgICAg
R1dvcmxkUHRyIG9mZnNjcmVlbkdXb3JsZDsKICNlbmRpZgogCi0gICAgT3duUHRyPFdlYk5ldHNj
YXBlUGx1Z2luRXZlbnRIYW5kbGVyPiBfZXZlbnRIYW5kbGVyOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcj4gX2V2ZW50SGFuZGxlcjsKICAgICAKICAg
ICBCT09MIGluU2V0V2luZG93OwogICAgIEJPT0wgc2hvdWxkU3RvcFNvb247CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDM5
MTE4MDAyMDIxNmUyYWRkZjgyMDcyODAyMmZmZjI1NmU4ZWJiYWUuLjk1YWFiOTk0MGM3YTkxYTIx
OWJhYzhkNGZkODNmZDg5Njg2MDgwMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1Bs
dWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1Bs
dWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC0xMTg3LDEyICsxMTg3LDEyIEBAIC0g
KHZvaWQpZGVzdHJveVBsdWdpbgogICAgIC8vIFNldHRpbmcgdGhlIHdpbmRvdyB0eXBlIHRvIDAg
ZW5zdXJlcyB0aGF0IE5QUF9TZXRXaW5kb3cgd2lsbCBiZSBjYWxsZWQgaWYgdGhlIHBsdWctaW4g
aXMgcmVzdGFydGVkLgogICAgIGxhc3RTZXRXaW5kb3cudHlwZSA9IChOUFdpbmRvd1R5cGUpMDsK
ICAgICAKLSAgICBfcGx1Z2luTGF5ZXIgPSAwOworICAgIF9wbHVnaW5MYXllciA9IG5pbDsKICAg
ICAKICAgICBbc2VsZiBfZGVzdHJveVBsdWdpbl07CiAgICAgW19wbHVnaW5QYWNrYWdlLmdldCgp
IGNsb3NlXTsKICAgICAKLSAgICBfZXZlbnRIYW5kbGVyLmNsZWFyKCk7CisgICAgX2V2ZW50SGFu
ZGxlciA9IG51bGxwdHI7CiB9CiAKIC0gKE5QRXZlbnRNb2RlbClldmVudE1vZGVsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQu
bW0KaW5kZXggMWE2NDQwZDk1ZmEzYWRiNGYyZDk1NzAwZDBiOTFkYWRkN2E4YWRiYS4uYWVkZDg1
M2JkM2RhN2ZhODY3ZjYyNGRlZDA3MWYzOTVhOTEyNTE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5tbQpAQCAtMzYs
NyArMzYsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1VzZXJNZWRpYVJlcXVlc3QuaD4KICNpbXBvcnQgPHd0Zi9IYXNoTWFw
Lmg+Ci0jaW1wb3J0IDx3dGYvUGFzc093blB0ci5oPgogI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgog
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbQppbmRl
eCBlYTE2ZjM1MmNiMGFjMWFhYjRkYWUwYzk5NzBiOGRlMzk2NmIwYWMxLi4yNDVkMjE4MGM4OWYw
MWFjOWY5YTkwZjRiMzVmN2Q4NjVjOGVjMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW0K
QEAgLTI2LDcgKzI2LDYgQEAKICNpbXBvcnQgIldlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJN
b2NrSW50ZXJuYWwuaCIKIAogI2ltcG9ydCAiV2ViRGV2aWNlT3JpZW50YXRpb25JbnRlcm5hbC5o
IgotI2ltcG9ydCA8d3RmL1Bhc3NPd25QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKQEAgLTM3LDcgKzM2LDcgQEAgLSAoaWQpaW5pdAogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07
CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIG1fY29yZSA9IGFkb3B0
UHRyKG5ldyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2soKSk7CisgICAgbV9jb3JlID0gc3Rk
OjptYWtlX3VuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s+KCk7CiAgICAgcmV0dXJu
IHNlbGY7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2
aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2tJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsLmgKaW5kZXgg
NWFjMzhlNWM3ZjJiZDA4MWI5YzlkYWQ1NjIwNjg0NzFmY2RlZDkxOS4uYjA2YjJjMWZjN2QwNmIw
YjliOGM5YzY2MjQyM2Y4NjZmNDI4YTQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsLmgKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9j
a0ludGVybmFsLmgKQEAgLTI0LDEyICsyNCwxMCBAQAogICovCiAKICNpbXBvcnQgIldlYkRldmlj
ZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLmgiCi0KICNpbXBvcnQgPFdlYkNvcmUvRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRNb2NrLmg+Ci0jaW1wb3J0IDx3dGYvT3duUHRyLmg+CiAKIEBpbnRlcmZh
Y2UgV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2tJbnRlcm5hbCA6IE5TT2JqZWN0IHsK
LSAgICBPd25QdHI8V2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrPiBtX2NvcmU7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9j
az4gbV9jb3JlOwogfQogCiAtIChpZClpbml0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJh
bWUubW0KaW5kZXggMzNhN2JlM2MxNDI2MmFjZjU1NGJiNGM3ZmMzYTJlY2JkNjM1MzM1OC4uMjlm
Njk1ZGE4ZWExN2FhNjAzZDY4YjMwZDNiYzBkMTUxZWU5ODNiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0yNDAsMzcgKzI0MCwyNSBAQCBUZXh0RGlyZWN0aW9uU3Vi
bWVudUluY2x1c2lvbkJlaGF2aW9yIGNvcmUoV2ViVGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNp
b25CZWhhdgogfQogCiAjaWYgUExBVEZPUk0oSU9TKQotUGFzc093blB0cjxWZWN0b3I8VmVjdG9y
PFN0cmluZz4+PiB2ZWN0b3JGb3JEaWN0YXRpb25QaHJhc2VzQXJyYXkoTlNBcnJheSAqZGljdGF0
aW9uUGhyYXNlcykKKworVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiB2ZWN0b3JGb3JEaWN0YXRpb25Q
aHJhc2VzQXJyYXkoTlNBcnJheSAqZGljdGF0aW9uUGhyYXNlcykKIHsKLSAgICBOU1VJbnRlZ2Vy
IGRpY3RhdGlvblBocmFzZXNDb3VudCA9IFtkaWN0YXRpb25QaHJhc2VzIGNvdW50XTsKLSAgICBp
ZiAoIWRpY3RhdGlvblBocmFzZXNDb3VudCkKLSAgICAgICAgcmV0dXJuIFBhc3NPd25QdHI8VmVj
dG9yPFZlY3RvcjxTdHJpbmc+ID4gPigpOwotICAgIAotICAgIE93blB0cjxWZWN0b3I8VmVjdG9y
PFN0cmluZz4gPiA+IGRpY3RhdGlvblBocmFzZXNWZWN0b3IgPSBhZG9wdFB0cihuZXcgVmVjdG9y
PFZlY3RvcjxTdHJpbmc+ID4oZGljdGF0aW9uUGhyYXNlc0NvdW50KSk7Ci0gICAgCi0gICAgZm9y
IChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgZGljdGF0aW9uUGhyYXNlc0NvdW50OyBpKyspIHsKLSAg
ICAgICAgCi0gICAgICAgIGlkIGRpY3RhdGlvblBocmFzZSA9IFtkaWN0YXRpb25QaHJhc2VzIG9i
amVjdEF0SW5kZXg6aV07CisgICAgVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiByZXN1bHQ7CisKKyAg
ICBmb3IgKGlkIGRpY3RhdGlvblBocmFzZSBpbiBkaWN0YXRpb25QaHJhc2VzKSB7CiAgICAgICAg
IGlmICghW2RpY3RhdGlvblBocmFzZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCiAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAgIE5TQXJyYXkgKmludGVycHJl
dGF0aW9uc0FycmF5ID0gKE5TQXJyYXkgKilkaWN0YXRpb25QaHJhc2U7Ci0gICAgICAgIFZlY3Rv
cjxTdHJpbmc+JiBpbnRlcnByZXRhdGlvbnNWZWN0b3IgPSBkaWN0YXRpb25QaHJhc2VzVmVjdG9y
LT5hdChpKTsKLSAgICAgICAgCi0gICAgICAgIE5TVUludGVnZXIgaW50ZXJwcmV0YXRpb25zQ291
bnQgPSBbaW50ZXJwcmV0YXRpb25zQXJyYXkgY291bnRdOwotICAgICAgICAKLSAgICAgICAgZm9y
IChOU1VJbnRlZ2VyIGogPSAwOyBqIDwgaW50ZXJwcmV0YXRpb25zQ291bnQ7IGorKykgewotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBpZCBpbnRlcnByZXRhdGlvbiA9IFtpbnRlcnByZXRhdGlv
bnNBcnJheSBvYmplY3RBdEluZGV4OmpdOworICAgICAgICByZXN1bHQuYXBwZW5kKFZlY3RvcjxT
dHJpbmc+KCkpOworICAgICAgICBmb3IgKGlkIGludGVycHJldGF0aW9uIDogKE5TQXJyYXkgKilk
aWN0YXRpb25QaHJhc2UpIHsKICAgICAgICAgICAgIGlmICghW2ludGVycHJldGF0aW9uIGlzS2lu
ZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIGludGVycHJldGF0aW9uc1ZlY3Rvci5hcHBlbmQoU3Ry
aW5nKChOU1N0cmluZyAqKWludGVycHJldGF0aW9uKSk7CisgICAgICAgICAgICByZXN1bHQubGFz
dCgpLmFwcGVuZCgoTlNTdHJpbmcgKilpbnRlcnByZXRhdGlvbik7CiAgICAgICAgIH0KICAgICB9
CiAgICAgCi0gICAgcmV0dXJuIGRpY3RhdGlvblBocmFzZXNWZWN0b3IucmVsZWFzZSgpOworICAg
IHJldHVybiByZXN1bHQ7CiB9CisKICNlbmRpZgogCiBAaW1wbGVtZW50YXRpb24gV2ViRnJhbWUg
KFdlYkludGVybmFsKQpAQCAtMjUwNywzMyArMjQ5NSwzMiBAQCBzdGF0aWMgTlNVUkwgKmNyZWF0
ZVVuaXF1ZVdlYkRhdGFVUkwoKQogCiAtICh2b2lkKV9sb2FkRGF0YTooTlNEYXRhICopZGF0YSBN
SU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZSB0ZXh0RW5jb2RpbmdOYW1lOihOU1N0cmluZyAq
KWVuY29kaW5nTmFtZSBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwgdW5yZWFjaGFibGVVUkw6KE5T
VVJMICopdW5yZWFjaGFibGVVUkwKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KE1BQykKICAgICBpZiAoIXB0aHJlYWRfbWFpbl9ucCgpKQogICAgICAgICByZXR1cm4gW1tzZWxm
IF93ZWJraXRfaW52b2tlT25NYWluVGhyZWFkXSBfbG9hZERhdGE6ZGF0YSBNSU1FVHlwZTpNSU1F
VHlwZSB0ZXh0RW5jb2RpbmdOYW1lOmVuY29kaW5nTmFtZSBiYXNlVVJMOmJhc2VVUkwgdW5yZWFj
aGFibGVVUkw6dW5yZWFjaGFibGVVUkxdOwogI2VuZGlmCi0gICAgCi0gICAgVVJMIHJlc3BvbnNl
VVJMOwotICAgIGlmICghYmFzZVVSTCkgeworCisgICAgTlNVUkwgKnJlc3BvbnNlVVJMID0gbmls
OworICAgIGlmIChiYXNlVVJMKQorICAgICAgICBiYXNlVVJMID0gW2Jhc2VVUkwgYWJzb2x1dGVV
UkxdOworICAgIGVsc2UgewogICAgICAgICBiYXNlVVJMID0gYmxhbmtVUkwoKTsKICAgICAgICAg
cmVzcG9uc2VVUkwgPSBjcmVhdGVVbmlxdWVXZWJEYXRhVVJMKCk7CiAgICAgfQogICAgIAogI2lm
IFVTRShRVUlDS19MT09LKQogICAgIGlmIChzaG91bGRVc2VRdWlja0xvb2tGb3JNSU1FVHlwZShN
SU1FVHlwZSkpIHsKLSAgICAgICAgVVJMIHFsVVJMID0gcmVzcG9uc2VVUkw7Ci0gICAgICAgIGlm
IChxbFVSTC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBxbFVSTCA9IFtiYXNlVVJMIGFic29sdXRl
VVJMXTsKLSAgICAgICAgT3duUHRyPFJlc291cmNlUmVxdWVzdD4gcWxSZXF1ZXN0KHJlZ2lzdGVy
UUxQcmV2aWV3Q29udmVydGVySWZOZWVkZWQoKE5TVVJMICopcWxVUkwsIE1JTUVUeXBlLCBkYXRh
KSk7Ci0gICAgICAgIGlmIChxbFJlcXVlc3QpIHsKLSAgICAgICAgICAgIF9wcml2YXRlLT5jb3Jl
RnJhbWUtPmxvYWRlcigpLmxvYWQoRnJhbWVMb2FkUmVxdWVzdChfcHJpdmF0ZS0+Y29yZUZyYW1l
LCAqcWxSZXF1ZXN0KSk7CisgICAgICAgIE5TVVJMICpxdWlja0xvb2tVUkwgPSByZXNwb25zZVVS
TCA/IHJlc3BvbnNlVVJMIDogYmFzZVVSTDsKKyAgICAgICAgaWYgKGF1dG8gcmVxdWVzdCA9IHJl
Z2lzdGVyUUxQcmV2aWV3Q29udmVydGVySWZOZWVkZWQocXVpY2tMb29rVVJMLCBNSU1FVHlwZSwg
ZGF0YSkpIHsKKyAgICAgICAgICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmxvYWRlcigpLmxvYWQo
RnJhbWVMb2FkUmVxdWVzdChfcHJpdmF0ZS0+Y29yZUZyYW1lLCByZXF1ZXN0KSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0jZW5kaWYgLy8gVVNFKFFVSUNLX0xPT0sp
CisjZW5kaWYKIAotICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFtiYXNlVVJMIGFic29sdXRl
VVJMXSk7CisgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoYmFzZVVSTCk7CiAKLSNpZiAhUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBoYWNrIGJlY2F1c2UgTWFpbCBj
aGVja3MgZm9yIHRoaXMgcHJvcGVydHkgdG8gZGV0ZWN0IGRhdGEgLyBhcmNoaXZlIGxvYWRzCiAg
ICAgW05TVVJMUHJvdG9jb2wgc2V0UHJvcGVydHk6QCIiIGZvcktleTpAIldlYkRhdGFSZXF1ZXN0
IiBpblJlcXVlc3Q6KE5TTXV0YWJsZVVSTFJlcXVlc3QgKilyZXF1ZXN0Lm5zVVJMUmVxdWVzdChV
cGRhdGVIVFRQQm9keSldOwogI2VuZGlmCkBAIC0yNTQzLDcgKzI1MzAsNiBAQCAtICh2b2lkKV9s
b2FkRGF0YTooTlNEYXRhICopZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZSB0ZXh0
RW5jb2RpbmdOYW1lOgogICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmxvYWRlcigpLmxvYWQoRnJh
bWVMb2FkUmVxdWVzdChfcHJpdmF0ZS0+Y29yZUZyYW1lLCByZXF1ZXN0LCBzdWJzdGl0dXRlRGF0
YSkpOwogfQogCi0KIC0gKHZvaWQpbG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5T
U3RyaW5nICopTUlNRVR5cGUgdGV4dEVuY29kaW5nTmFtZTooTlNTdHJpbmcgKillbmNvZGluZ05h
bWUgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJMCiB7CiAgICAgV2ViQ29yZVRocmVhZFZpb2xhdGlv
bkNoZWNrUm91bmRUd28oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRnJhbWVJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZUlu
dGVybmFsLmgKaW5kZXggMGFhZmIxZDZjMDkzZWYwNDMyOTlmNzlmNGVhOGUwYWU2Y2ZmM2JkZC4u
NWVmNDdmNjI5MjFkZTljMTE1YWQ3MjI4MTJjYjhjYWY0NjUwZTY3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZUludGVybmFsLmgKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZUludGVybmFsLmgKQEAgLTczLDcgKzczLDcgQEAgV2Vi
Q29yZTo6RWRpdGFibGVMaW5rQmVoYXZpb3IgY29yZShXZWJLaXRFZGl0YWJsZUxpbmtCZWhhdmlv
cik7CiBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yIGNvcmUo
V2ViVGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25CZWhhdmlvcik7CiAKICNpZiBkZWZpbmVk
KF9fY3BsdXNwbHVzKSAmJiBQTEFURk9STShJT1MpCi1QYXNzT3duUHRyPFZlY3RvcjxWZWN0b3I8
U3RyaW5nPj4+IHZlY3RvckZvckRpY3RhdGlvblBocmFzZXNBcnJheShOU0FycmF5ICopOworVmVj
dG9yPFZlY3RvcjxTdHJpbmc+PiB2ZWN0b3JGb3JEaWN0YXRpb25QaHJhc2VzQXJyYXkoTlNBcnJh
eSAqKTsKICNlbmRpZgogCiBXZWJWaWV3ICpnZXRXZWJWaWV3KFdlYkZyYW1lICp3ZWJGcmFtZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9s
bGVyLmgKaW5kZXggMjViMGViNWI3ZTEwMmYyZDkzNmI0YzY4YTYyY2QxN2NmNDhkZTE1ZS4uY2Q1
M2JhNjkxN2ZmZjUwNmE5YzU0YTRjZjc5OGFmMGUzMDcwMGU5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIuaApAQCAtMjYsNyAr
MjYsNiBAQAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgIVBMQVRGT1JNKElPUykKIAog
I2ltcG9ydCA8V2ViQ29yZS9JbnRQb2ludC5oPgotI2ltcG9ydCA8d3RmL093blB0ci5oPgogI2lt
cG9ydCA8d3RmL1JlZlB0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmggYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKaW5kZXggNmFlOTliYzFkNTQ0NDBkNzg0ZjRk
OTg1NjQyZDhhODdjNTAzZGI5MS4uOWYxZDFhYjExNGFmMDdiYzFlYTQ5MWZkYmM2ZWU0NWZmMTRj
NWU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaApAQCAtMzQsNyAr
MzQsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9MYXllckZsdXNoU2NoZWR1bGVyQ2xpZW50Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVLZXlib2FyZFVJTW9kZS5oPgogI2ltcG9ydCA8d3RmL0hh
c2hNYXAuaD4KLSNpbXBvcnQgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CiAjaW1wb3J0IDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgogI2ltcG9ydCA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CkBAIC0zMTgsNyArMzE3LDcgQEAgcHJpdmF0ZToKICNlbmRpZgog
CiAjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCi0gICAgT3duUHRyPFdlYkNvcmU6OkFs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcj4gbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
cj4gbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI7CiAjZW5kaWYKIAogICAgIFJldGFpblB0
cjxOU0RhdGE+IHNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlld0RhdGEubW0KaW5kZXggOWViYjMyMGU1YmE0NGY4ZTgzNzBiYTUwYjcyNjgy
NmFjMDI1ZGM3Ny4uOGJkOWU0N2YyYTRjMDI4OGFkNzE5ZTg0MDVjODIyYzJkNjAxY2U0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCkBAIC0xNjIsNyArMTYyLDcg
QEAgLSAoaWQpaW5pdAogICAgIHBsdWdpbkRhdGFiYXNlQ2xpZW50Q291bnQrKzsKIAogI2lmIFVT
RShESUNUQVRJT05fQUxURVJOQVRJVkVTKQotICAgIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9s
bGVyID0gYWRvcHRQdHIobmV3IFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcik7
CisgICAgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcj4oKTsKICNlbmRpZgogCiAgICAgcmV0
dXJuIHNlbGY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhy
ZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaAppbmRleCA2NjI1ODkzODgwMWJkNDI5Yzcy
M2ViZGUwNTNkYWMyYTZhYjM3Y2Y1Li44MTk1MGY4MjAzNDBkZjk2MDI2NGQzN2YxMTZmNTRhYjk5
NjdkYjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1Ro
cmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKQEAgLTQxLDcgKzQxLDYgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0ludFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VPdmVybGF5Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251146</attachid>
            <date>2015-04-19 23:27:05 -0700</date>
            <delta_ts>2015-04-20 09:45:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143943-20150419232603.patch</filename>
            <type>text/plain</type>
            <size>29978</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzMDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDViMWUxMTU3NGE4YmYx
M2VlOWZkMDc3YTRkNWUyMTJmNzEwODdmZC4uNzY3NDViNTY4NzM5ZDI4ZjFjNmJhZTM2ZTEyODE3
NmI1NWEwZDlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE1LTA0LTE5ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgT3duUHRyIGFuZCBQ
YXNzT3duUHRyIHVzZSBmcm9tIFdlYktpdC9jZiwgV2ViS2l0L21hYywgYW5kIFdlYktpdDIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mzk0MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXREaWN0YXRpb25QaHJhc2Vz
QXNDaGlsZE9mRWxlbWVudCk6IENoYW5nZWQgdGhpcyBpT1Mtb25seQorICAgICAgICBmdW5jdGlv
biB0byB0YWtlIGEgVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiBhbmQgbm90IGludm9sdmUgUGFzc093
blB0ci4gQWxzbyBtYWRlCisgICAgICAgIGl0IHRha2UgYSByZWZlcmVuY2UgcmF0aGVyIHRoYW4g
YSBwb2ludGVyIHRvIHRoZSBlbGVtZW50IGFuZCBzaW1wbGlmeSB0aGUgY29kZQorICAgICAgICBh
IGJpdCB1c2luZyBtb2Rlcm4gZm9yIGxvb3BzIGFuZCBhdXRvLgorICAgICAgICAqIGVkaXRpbmcv
RWRpdG9yLmg6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tM
b29rLmg6IFJldHVybiBhbiBOU1VSTFJlcXVlc3QgKiBpbnN0ZWFkIG9mIGEKKyAgICAgICAgUGFz
c093blB0cjxSZXNvdXJjZVJlcXVlc3Q+IGZyb20gdGhpcyBpT1Mtc3BlY2lmaWMgZnVuY3Rpb24u
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tOgorICAgICAgICAo
V2ViQ29yZTo6cmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZCk6IERpdHRvLgorCiAy
MDE1LTA0LTE5ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBJbXByb3ZlIHRoZSBmZWF0dXJlLmpzb24gZmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2YvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cKaW5kZXggYTg0
ZjZkMTI1Yjg5ZjVlMGRiN2QxMjc0MGI2NjllZGI4MGY1ZTIzNS4uNmU5NDdlYmI1ZjRhNDQ4MWIw
YWIyZTg3YjM3MDk4MjI5OGU3M2NmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jZi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxNS0wNC0xOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVt
b3ZlIE93blB0ciBhbmQgUGFzc093blB0ciB1c2UgZnJvbSBXZWJLaXQvY2YsIFdlYktpdC9tYWMs
IGFuZCBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDM5NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcDogUmVtb3ZlZCB1
bm5lZWRlZCBpbmNsdWRlLgorCiAyMDE0LTA5LTI1ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIFdpbkNFIHBvcnQgZnJvbSB0cnVuawpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCmluZGV4IGExMzA1OTY5Yzk4MWZhNmJjNjJlMjk2MDZkODZiNDVhZTYwZjY4OWEu
LmVlNGMxMWJmOWI0NzFjM2YzODY1M2IyMjA2YmQ3ZjExM2EzYjRhOTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0OSBAQAorMjAxNS0wNC0xOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIE93blB0ciBhbmQgUGFzc093blB0ciB1c2UgZnJvbSBX
ZWJLaXQvY2YsIFdlYktpdC9tYWMsIGFuZCBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM5NDMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2Uu
aDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlLgorICAgICAgICAqIFBsdWdpbnMvV2ViQmFzZU5l
dHNjYXBlUGx1Z2luVmlldy5oOiBEaXR0by4KKworICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2Nh
cGVQbHVnaW5FdmVudEhhbmRsZXIuaDogVXNlIHVuaXF1ZV9wdHIgaW5zdGVhZCBvZgorICAgICAg
ICBQYXNzT3duUHRyIGZvciB0aGUgY3JlYXRlIGZ1bmN0aW9uLiBBbHNvIHR3ZWFrZWQgZm9ybWF0
dGluZyBhbmQgcmVtb3ZlZAorICAgICAgICB1bm5lZWRlZCBmb3J3YXJkIGRlY2xhcmF0aW9uIG9m
IENHUmVjdC4KKyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVy
Lm1tOgorICAgICAgICAoV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXI6OmNyZWF0ZSk6IENo
YW5nZWQgdG8gdXNlIHVuaXF1ZV9wdHIgYW5kCisgICAgICAgIG1ha2VfdW5pcXVlLgorCisgICAg
ICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcuaDogVXNlIHVuaXF1ZV9wdHIgaW5z
dGVhZCBvZiBPd25QdHIgZm9yCisgICAgICAgIHRoZSBfZXZlbnRIYW5kbGVyIGZpZWxkLgorICAg
ICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJO
ZXRzY2FwZVBsdWdpblZpZXcgZGVzdHJveVBsdWdpbl0pOiBDaGFuZ2VkIGNvZGUgdG8gd29yayB3
aXRoIHVuaXF1ZV9wdHIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFD
bGllbnQubW06IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZS4KKworICAgICAgICAqIFdlYlZpZXcv
V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW06IENoYW5nZWQgdG8gdXNlIG1ha2Vf
dW5pcXVlLgorICAgICAgICAqIFdlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1v
Y2tJbnRlcm5hbC5oOiBDaGFuZ2VkIHRvIHVzZSB1bmlxdWVfcHRyLgorCisgICAgICAgICogV2Vi
Vmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKHZlY3RvckZvckRpY3RhdGlvblBocmFzZXNBcnJh
eSk6IENoYW5nZWQgdG8gcmV0dXJuIFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4gYW5kCisgICAgICAg
IG5vdCBhIFBhc3NPd25QdHIuIEFsc28gcmV3cm90ZSB0byBiZSBtdWNoIHNpbXBsZXIsIGFsdGhv
dWdoIHRoZXJlIGlzIHN0aWxsIGEKKyAgICAgICAgcHJlLWV4aXN0aW5nIHByb2JsZW0gaGVyZSB3
aGVyZSB0aGlzIGNvdWxkIHB1dCBlbXB0eSB2ZWN0b3JzIGludG8gdGhlIHJlc3VsdCwKKyAgICAg
ICAgYW5kIEknbSBwcmV0dHkgc3VyZSB0aGUgY2xpZW50IG5ldmVyIGV4cGVjdHMgYW55IG9mIHRo
ZSBWZWN0b3I8U3RyaW5nPiB0byBiZSBlbXB0eS4KKyAgICAgICAgKC1bV2ViRnJhbWUgX2xvYWRE
YXRhOk1JTUVUeXBlOnRleHRFbmNvZGluZ05hbWU6YmFzZVVSTDp1bnJlYWNoYWJsZVVSTDpdKToK
KyAgICAgICAgUmV3cm90ZSBsb2dpYyB0byBpbnZvbHZlIFdlYkNvcmUgdHlwZXMgYSBiaXQgbGVz
czsgb2xkIGNvZGUgd2FzIHJvdW5kIHRyaXBwaW5nCisgICAgICAgIHRoaW5ncyB0aHJvdWdoIFdl
YkNvcmU6OlVSTCBmb3Igbm8gb2J2aW91cyByZWFzb24uCisKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkZyYW1lSW50ZXJuYWwuaDogQ2hhbmdlZCB2ZWN0b3JGb3JEaWN0YXRpb25QaHJhc2VzQXJyYXkg
dG8gcmV0dXJuCisgICAgICAgIGEgVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiBhbmQgbm90IGEgUGFz
c093blB0ci4KKworICAgICAgICAqIFdlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIuaDog
UmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3RGF0
YS5oOiBDaGFuZ2VkIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyIHRvIGJlIGEKKyAgICAg
ICAgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuCisgICAgICAgICogV2ViVmlldy9XZWJW
aWV3RGF0YS5tbToKKyAgICAgICAgKC1bV2ViVmlld1ByaXZhdGUgaW5pdF0pOiBVc2UgbWFrZV91
bmlxdWUgdG8gaW5pdGlhbGl6ZSBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci4KKwogMjAx
NS0wNC0xNyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVH
UkVTU0lPTjogU1ZHIGRvZXMgbm90IHN1cHBvcnQgbGluayBkcmFnZ2luZwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IDExMGEyMzMyYjhmMTRkNmMyZTE1ZWU5NjQyMzYxMWFmN2U5NTdhMmUuLjYyNWVmMWNkY2FhNzU0
ODZmNTBhY2RkNWNkYjkzNzM1ZWNkOGJmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxNS0wNC0xOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVt
b3ZlIE93blB0ciBhbmQgUGFzc093blB0ciB1c2UgZnJvbSBXZWJLaXQvY2YsIFdlYktpdC9tYWMs
IGFuZCBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDM5NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVk
ZS4KKwogMjAxNS0wNC0xOCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
IAogICAgICAgICBSRUdSRVNTSU9OIChyMTgxNjU2KTogQW5pbWF0ZWQgdGlsZWQgbGF5ZXJzIGFy
ZSBtaXNzaW5nIGNvbnRlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA3MTBhYTM5
N2VjZTVlMWU5Y2UwNWM5NzRiZTBmYzY2M2UyNWI4NTg4Li43MzkxYzYwNjhkZTE3YzI0N2U2ZWU2
MTg0YmRmMmI4OTkwOTY5N2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zODgs
NiArMzg4LDcgQEAgdm9pZCBFZGl0b3I6OmNsZWFyVGV4dCgpCiB9CiAKICNpZiBQTEFURk9STShJ
T1MpCisKIHZvaWQgRWRpdG9yOjppbnNlcnREaWN0YXRpb25QaHJhc2VzKFBhc3NPd25QdHI8VmVj
dG9yPFZlY3RvcjxTdHJpbmc+ID4gPiBkaWN0YXRpb25QaHJhc2VzLCBSZXRhaW5QdHI8aWQ+IG1l
dGFkYXRhKQogewogICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpKQpAQCAtMzk5
LDcgKzQwMCw3IEBAIHZvaWQgRWRpdG9yOjppbnNlcnREaWN0YXRpb25QaHJhc2VzKFBhc3NPd25Q
dHI8VmVjdG9yPFZlY3RvcjxTdHJpbmc+ID4gPiBkaWN0YXRpCiAgICAgYXBwbHlDb21tYW5kKERp
Y3RhdGlvbkNvbW1hbmRJT1M6OmNyZWF0ZShkb2N1bWVudCgpLCBkaWN0YXRpb25QaHJhc2VzLCBt
ZXRhZGF0YSkpOwogfQogCi12b2lkIEVkaXRvcjo6c2V0RGljdGF0aW9uUGhyYXNlc0FzQ2hpbGRP
ZkVsZW1lbnQoUGFzc093blB0cjxWZWN0b3I8VmVjdG9yPFN0cmluZz4gPiA+IGRpY3RhdGlvblBo
cmFzZXMsIFJldGFpblB0cjxpZD4gbWV0YWRhdGEsIEVsZW1lbnQqIGVsZW1lbnQpCit2b2lkIEVk
aXRvcjo6c2V0RGljdGF0aW9uUGhyYXNlc0FzQ2hpbGRPZkVsZW1lbnQoY29uc3QgVmVjdG9yPFZl
Y3RvcjxTdHJpbmc+PiYgZGljdGF0aW9uUGhyYXNlcywgUmV0YWluUHRyPGlkPiBtZXRhZGF0YSwg
RWxlbWVudCYgZWxlbWVudCkKIHsKICAgICAvLyBDbGVhciB0aGUgY29tcG9zaXRpb24uCiAgICAg
Y2xlYXIoKTsKQEAgLTQxMCw1NCArNDExLDUwIEBAIHZvaWQgRWRpdG9yOjpzZXREaWN0YXRpb25Q
aHJhc2VzQXNDaGlsZE9mRWxlbWVudChQYXNzT3duUHRyPFZlY3RvcjxWZWN0b3I8U3RyaW5nCiAg
ICAgCiAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5jbGVhcigpOwogICAgIAotICAgIGVsZW1lbnQt
PnJlbW92ZUNoaWxkcmVuKCk7CisgICAgZWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAgIAot
ICAgIGlmIChkaWN0YXRpb25QaHJhc2VzLT5pc0VtcHR5KCkpIHsKKyAgICBpZiAoZGljdGF0aW9u
UGhyYXNlcy5pc0VtcHR5KCkpIHsKICAgICAgICAgY2xpZW50KCktPnJlc3BvbmRUb0NoYW5nZWRD
b250ZW50cygpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIEV4Y2VwdGlvbkNv
ZGUgZWM7ICAgIAogICAgIFJlZlB0cjxSYW5nZT4gY29udGV4dCA9IGRvY3VtZW50KCkuY3JlYXRl
UmFuZ2UoKTsKLSAgICBjb250ZXh0LT5zZWxlY3ROb2RlQ29udGVudHMoZWxlbWVudCwgZWMpOwot
ICAgIAorICAgIGNvbnRleHQtPnNlbGVjdE5vZGVDb250ZW50cygmZWxlbWVudCwgZWMpOworCiAg
ICAgU3RyaW5nQnVpbGRlciBkaWN0YXRpb25QaHJhc2VzQnVpbGRlcjsKLSAgICBzaXplX3QgZGlj
dGF0aW9uUGhyYXNlQ291bnQgPSBkaWN0YXRpb25QaHJhc2VzLT5zaXplKCk7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBkaWN0YXRpb25QaHJhc2VDb3VudDsgaSsrKSB7Ci0gICAgICAgIGNv
bnN0IFN0cmluZyYgZmlyc3RJbnRlcnByZXRhdGlvbiA9IGRpY3RhdGlvblBocmFzZXMtPmF0KGkp
WzBdOwotICAgICAgICBkaWN0YXRpb25QaHJhc2VzQnVpbGRlci5hcHBlbmQoZmlyc3RJbnRlcnBy
ZXRhdGlvbik7Ci0gICAgfQotICAgIFN0cmluZyBzZXJpYWxpemVkRGljdGF0aW9uUGhyYXNlcyA9
IGRpY3RhdGlvblBocmFzZXNCdWlsZGVyLnRvU3RyaW5nKCk7Ci0gICAgCi0gICAgZWxlbWVudC0+
YXBwZW5kQ2hpbGQoY3JlYXRlRnJhZ21lbnRGcm9tVGV4dCgqY29udGV4dC5nZXQoKSwgc2VyaWFs
aXplZERpY3RhdGlvblBocmFzZXMpLCBlYyk7Ci0gICAgCisgICAgZm9yIChhdXRvJiBpbnRlcnBy
ZXRhdGlvbnMgOiBkaWN0YXRpb25QaHJhc2VzKQorICAgICAgICBkaWN0YXRpb25QaHJhc2VzQnVp
bGRlci5hcHBlbmQoaW50ZXJwcmV0YXRpb25zWzBdKTsKKworICAgIGVsZW1lbnQuYXBwZW5kQ2hp
bGQoY3JlYXRlRnJhZ21lbnRGcm9tVGV4dCgqY29udGV4dCwgZGljdGF0aW9uUGhyYXNlc0J1aWxk
ZXIudG9TdHJpbmcoKSksIGVjKTsKKwogICAgIC8vIFdlIG5lZWQgYSBsYXlvdXQgaW4gb3JkZXIg
dG8gYWRkIG1hcmtlcnMgYmVsb3cuCiAgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXQoKTsKLSAg
ICAKLSAgICBpZiAoIWVsZW1lbnQtPmZpcnN0Q2hpbGQoKS0+aXNUZXh0Tm9kZSgpKSB7CisKKyAg
ICBpZiAoIWVsZW1lbnQuZmlyc3RDaGlsZCgpLT5pc1RleHROb2RlKCkpIHsKICAgICAgICAgLy8g
U2hvdWxkbid0IGhhcHBlbi4KLSAgICAgICAgQVNTRVJUKGVsZW1lbnQtPmZpcnN0Q2hpbGQoKS0+
aXNUZXh0Tm9kZSgpKTsKKyAgICAgICAgQVNTRVJUKGVsZW1lbnQuZmlyc3RDaGlsZCgpLT5pc1Rl
eHROb2RlKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgICAgICAKLSAgICBUZXh0KiB0
ZXh0Tm9kZSA9IHN0YXRpY19jYXN0PFRleHQqPihlbGVtZW50LT5maXJzdENoaWxkKCkpOworCisg
ICAgVGV4dCYgdGV4dE5vZGUgPSBkb3duY2FzdDxUZXh0PigqZWxlbWVudC5maXJzdENoaWxkKCkp
OwogICAgIGludCBwcmV2aW91c0RpY3RhdGlvblBocmFzZVN0YXJ0ID0gMDsKLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGRpY3RhdGlvblBocmFzZUNvdW50OyBpKyspIHsKLSAgICAgICAgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGludGVycHJldGF0aW9ucyA9IGRpY3RhdGlvblBocmFzZXMtPmF0
KGkpOworICAgIGZvciAoYXV0byYgaW50ZXJwcmV0YXRpb25zIDogZGljdGF0aW9uUGhyYXNlcykg
ewogICAgICAgICBpbnQgZGljdGF0aW9uUGhyYXNlTGVuZ3RoID0gaW50ZXJwcmV0YXRpb25zWzBd
Lmxlbmd0aCgpOwogICAgICAgICBpbnQgZGljdGF0aW9uUGhyYXNlRW5kID0gcHJldmlvdXNEaWN0
YXRpb25QaHJhc2VTdGFydCArIGRpY3RhdGlvblBocmFzZUxlbmd0aDsKICAgICAgICAgaWYgKGlu
dGVycHJldGF0aW9ucy5zaXplKCkgPiAxKSB7Ci0gICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IGRp
Y3RhdGlvblBocmFzZVJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCB0ZXh0Tm9kZSwg
cHJldmlvdXNEaWN0YXRpb25QaHJhc2VTdGFydCwgdGV4dE5vZGUsIGRpY3RhdGlvblBocmFzZUVu
ZCk7Ci0gICAgICAgICAgICBkb2N1bWVudCgpLm1hcmtlcnMoKS5hZGREaWN0YXRpb25QaHJhc2VX
aXRoQWx0ZXJuYXRpdmVzTWFya2VyKGRpY3RhdGlvblBocmFzZVJhbmdlLmdldCgpLCBpbnRlcnBy
ZXRhdGlvbnMpOworICAgICAgICAgICAgYXV0byBkaWN0YXRpb25QaHJhc2VSYW5nZSA9IFJhbmdl
OjpjcmVhdGUoZG9jdW1lbnQoKSwgJnRleHROb2RlLCBwcmV2aW91c0RpY3RhdGlvblBocmFzZVN0
YXJ0LCAmdGV4dE5vZGUsIGRpY3RhdGlvblBocmFzZUVuZCk7CisgICAgICAgICAgICBkb2N1bWVu
dCgpLm1hcmtlcnMoKS5hZGREaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzTWFya2VyKGRp
Y3RhdGlvblBocmFzZVJhbmdlLnB0cigpLCBpbnRlcnByZXRhdGlvbnMpOwogICAgICAgICB9CiAg
ICAgICAgIHByZXZpb3VzRGljdGF0aW9uUGhyYXNlU3RhcnQgPSBkaWN0YXRpb25QaHJhc2VFbmQ7
CiAgICAgfQotICAgIAotICAgIFJlZlB0cjxSYW5nZT4gcmVzdWx0UmFuZ2UgPSBSYW5nZTo6Y3Jl
YXRlKGRvY3VtZW50KCksIHRleHROb2RlLCAwLCB0ZXh0Tm9kZSwgdGV4dE5vZGUtPmxlbmd0aCgp
KTsKLSAgICBkb2N1bWVudCgpLm1hcmtlcnMoKS5hZGREaWN0YXRpb25SZXN1bHRNYXJrZXIocmVz
dWx0UmFuZ2UuZ2V0KCksIG1ldGFkYXRhKTsKLSAgICAKKworICAgIGF1dG8gcmVzdWx0UmFuZ2Ug
PSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksICZ0ZXh0Tm9kZSwgMCwgJnRleHROb2RlLCB0ZXh0
Tm9kZS5sZW5ndGgoKSk7CisgICAgZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkRGljdGF0aW9uUmVz
dWx0TWFya2VyKHJlc3VsdFJhbmdlLnB0cigpLCBtZXRhZGF0YSk7CisKICAgICBjbGllbnQoKS0+
cmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCk7CiB9CisKICNlbmRpZgogCiB2b2lkIEVkaXRvcjo6
cGFzdGVBc1BsYWluVGV4dChjb25zdCBTdHJpbmcmIHBhc3RpbmdUZXh0LCBib29sIHNtYXJ0UmVw
bGFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDc5MmJjNDZhNjM2NTNkZGYxNTc5ZDg3
OThiOWVkOTgwMjlkNTgwNzguLmY5YzU0YThkMjhhYWVkYzY1MGQzMmI0Mzg4NWM1NzI1NmZlMjBh
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtMzMwLDcgKzMzMCw3IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRleHRBc0NoaWxkT2ZFbGVtZW50KGNvbnN0IFN0
cmluZyYsIEVsZW1lbnQqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRleHRBbGlnbm1l
bnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNlcnREaWN0YXRpb25QaHJhc2VzKFBhc3NPd25QdHI8VmVj
dG9yPFZlY3RvcjxTdHJpbmc+ID4gPiBkaWN0YXRpb25QaHJhc2VzLCBSZXRhaW5QdHI8aWQ+IG1l
dGFkYXRhKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERpY3RhdGlvblBocmFzZXNBc0No
aWxkT2ZFbGVtZW50KFBhc3NPd25QdHI8VmVjdG9yPFZlY3RvcjxTdHJpbmc+ID4gPiBkaWN0YXRp
b25QaHJhc2VzLCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhLCBFbGVtZW50KiBlbGVtZW50KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERpY3RhdGlvblBocmFzZXNBc0NoaWxkT2ZFbGVtZW50
KGNvbnN0IFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4mIGRpY3RhdGlvblBocmFzZXMsIFJldGFpblB0
cjxpZD4gbWV0YWRhdGEsIEVsZW1lbnQmKTsKICNlbmRpZgogICAgIAogICAgIHZvaWQgYWRkVG9L
aWxsUmluZyhSYW5nZSosIGJvb2wgcHJlcGVuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5oCmluZGV4IGY1NzYyZjBhMTViYzM1ZTY2Y2JhMDE1
NDkxYjc4MDE2ZjhjODViYzYuLmE5ZWY3Y2M0N2EwNmM4MDdmMTcxYTQwNTA5ZjljOGJjMTBmZDQ4
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNr
TG9vay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9v
ay5oCkBAIC00MSw2ICs0MSw3IEBAIE9CSkNfQ0xBU1MgTlNTZXQ7CiBPQkpDX0NMQVNTIE5TU3Ry
aW5nOwogT0JKQ19DTEFTUyBOU1VSTDsKIE9CSkNfQ0xBU1MgTlNVUkxDb25uZWN0aW9uOworT0JK
Q19DTEFTUyBOU1VSTFJlcXVlc3Q7CiBPQkpDX0NMQVNTIE5TVVJMUmVzcG9uc2U7CiBPQkpDX0NM
QVNTIFFMUHJldmlld0NvbnZlcnRlcjsKIApAQCAtNzIsNyArNzMsNyBAQCBXRUJDT1JFX0VYUE9S
VCBOU1N0cmluZyAqcWxQcmV2aWV3Q29udmVydGVyRmlsZU5hbWVGb3JVUkwoTlNVUkwgKik7CiBX
RUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqcWxQcmV2aWV3Q29udmVydGVyVVRJRm9yVVJMKE5TVVJM
ICopOwogV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVRTFByZXZpZXdDb252ZXJ0ZXJGb3JVUkwo
TlNVUkwgKik7CiAKLVdFQkNPUkVfRVhQT1JUIFBhc3NPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBy
ZWdpc3RlclFMUHJldmlld0NvbnZlcnRlcklmTmVlZGVkKE5TVVJMICosIE5TU3RyaW5nICptaW1l
VHlwZSwgTlNEYXRhICopOworV0VCQ09SRV9FWFBPUlQgTlNVUkxSZXF1ZXN0ICpyZWdpc3RlclFM
UHJldmlld0NvbnZlcnRlcklmTmVlZGVkKE5TVVJMICosIE5TU3RyaW5nICptaW1lVHlwZSwgTlNE
YXRhICopOwogCiBjb25zdCBVUkwgc2FmZVFMVVJMRm9yRG9jdW1lbnRVUkxBbmRSZXNvdXJjZVVS
TChjb25zdCBVUkwmIGRvY3VtZW50VVJMLCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29r
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCmlu
ZGV4IGVlOTA0OTFjYjlhNThhYjU0NDlkNWExOTljNWJiMzVjNTllNDM3ZTIuLmU0MDYxMWMxNTc4
MWYzN2RmN2IzYjA5MjE2ZDY2Y2JmNDQzODQ2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0KQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lk
IFdlYkNvcmU6OnJlbW92ZVFMUHJldmlld0NvbnZlcnRlckZvclVSTChOU1VSTCAqdXJsKQogICAg
IFtRTENvbnRlbnREaWN0aW9uYXJ5KCkgcmVtb3ZlT2JqZWN0Rm9yS2V5OnVybF07CiB9CiAKLVBh
c3NPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBXZWJDb3JlOjpyZWdpc3RlclFMUHJldmlld0NvbnZl
cnRlcklmTmVlZGVkKE5TVVJMICp1cmwsIE5TU3RyaW5nICptaW1lVHlwZSwgTlNEYXRhICpkYXRh
KQorTlNVUkxSZXF1ZXN0ICpXZWJDb3JlOjpyZWdpc3RlclFMUHJldmlld0NvbnZlcnRlcklmTmVl
ZGVkKE5TVVJMICp1cmwsIE5TU3RyaW5nICptaW1lVHlwZSwgTlNEYXRhICpkYXRhKQogewogICAg
IFJldGFpblB0cjxOU1N0cmluZz4gdXBkYXRlZE1JTUVUeXBlID0gYWRvcHROUyhXZWJDb3JlOjpR
TFR5cGVDb3B5QmVzdE1pbWVUeXBlRm9yVVJMQW5kTWltZVR5cGUodXJsLCBtaW1lVHlwZSkpOwog
CkBAIC0yMDIsMTAgKzIwMiwxMCBAQCBQYXNzT3duUHRyPFJlc291cmNlUmVxdWVzdD4gV2ViQ29y
ZTo6cmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZChOU1VSTCAqdQogICAgICAgICAv
LyB0aGUgVVJMIHRoYXQgdGhlIFdlYkRhdGFTb3VyY2Ugd2lsbCBzZWUgZHVyaW5nIC1kZWFsbG9j
LgogICAgICAgICBhZGRRTFByZXZpZXdDb252ZXJ0ZXJXaXRoRmlsZUZvclVSTChbcmVxdWVzdCBV
UkxdLCBjb252ZXJ0ZXIuZ2V0KCksIG5pbCk7CiAKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCkpOworICAgICAgICByZXR1cm4gcmVxdWVzdDsKICAg
ICB9CiAKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbmlsOwogfQogCiBjb25zdCBV
UkwgV2ViQ29yZTo6c2FmZVFMVVJMRm9yRG9jdW1lbnRVUkxBbmRSZXNvdXJjZVVSTChjb25zdCBV
UkwmIGRvY3VtZW50VVJMLCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNw
cAppbmRleCAwNGZlNzMzMjMyOWRmNDhkODlmYTJiMzUyMmFmYmNkZjdiN2IxMmU0Li4zYmFiMjU2
NmI1NzY2MjQ2NjgxZWM5MGRkYjM4ODk1NmJkMjE2MjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcApAQCAt
NTQsNyArNTQsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogCi0jaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oIGIvU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oCmluZGV4IDA4MGY5ZTEzMmM5MzQw
N2VhZjQ1N2FmZGI2NDFlM2Y0ZTM5M2Y2MDYuLjEzZTMyYmE2MjBlMzUwN2UwNDJhOTBlODE3NDQz
ZDkzYWY2M2I2MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVk
L1Byb3h5SW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Q
cm94eUluc3RhbmNlLmgKQEAgLTMyLDcgKzMyLDYgQEAKICNpbXBvcnQgIldlYktpdFBsdWdpbkhv
c3RUeXBlcy5oIgogI2ltcG9ydCA8V2ViQ29yZS9CcmlkZ2VKU0MuaD4KICNpbXBvcnQgPFdlYkNv
cmUvcnVudGltZV9yb290Lmg+Ci0jaW1wb3J0IDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VO
ZXRzY2FwZVBsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5l
dHNjYXBlUGx1Z2luVmlldy5oCmluZGV4IDRmNGNkNTNjNWJhYzA2NzgxOWU5NTA5YTQ0ODdiNDNm
NzEyNWY0YTcuLmY0ZDhmYWI4MWE3NzIzZmQ2Y2VjZmJlMDQ4MTQ3ZGZiOGY5ZTUwZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmll
dy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2lu
Vmlldy5oCkBAIC0zMiw3ICszMiw2IEBACiAjaW1wb3J0ICJXZWJOZXRzY2FwZVBsdWdpblBhY2th
Z2UuaCIKICNpbXBvcnQgIldlYlBsdWdpbkNvbnRhaW5lckNoZWNrLmgiCiAjaW1wb3J0IDx3dGYv
Rm9yd2FyZC5oPgotI2ltcG9ydCA8d3RmL093blB0ci5oPgogI2ltcG9ydCA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5F
dmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVn
aW5FdmVudEhhbmRsZXIuaAppbmRleCA5ZTMyZTJmYmZiMzZhZWNiMDA5Yzk4MzE3YjBkODcwZDU1
MjA0YWI0Li4xNGI0MWJjZmFhOWRkNjc4YzAwOGI4YTYxZWFhMzNiZWJlNzVjYzA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5k
bGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2
ZW50SGFuZGxlci5oCkBAIC0zMywyNiArMzMsMjQgQEAKIEBjbGFzcyBOU0V2ZW50OwogQGNsYXNz
IFdlYk5ldHNjYXBlUGx1Z2luVmlldzsKIAotc3RydWN0IENHUmVjdDsKLQogY2xhc3MgV2ViTmV0
c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyPiBjcmVhdGUoV2ViTmV0c2NhcGVQbHVnaW5W
aWV3Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJOZXRzY2FwZVBsdWdpbkV2ZW50
SGFuZGxlcj4gY3JlYXRlKFdlYk5ldHNjYXBlUGx1Z2luVmlldyAqKTsKICAgICB2aXJ0dWFsIH5X
ZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcigpIHsgfQogICAgIAogICAgIHZpcnR1YWwgdm9p
ZCBkcmF3UmVjdChDR0NvbnRleHRSZWYsIGNvbnN0IE5TUmVjdCYpID0gMDsKICAgICAKLSAgICB2
aXJ0dWFsIHZvaWQgbW91c2VEb3duKE5TRXZlbnQqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIG1v
dXNlRHJhZ2dlZChOU0V2ZW50KikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBtb3VzZUVudGVyZWQo
TlNFdmVudCopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgbW91c2VFeGl0ZWQoTlNFdmVudCopID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgbW91c2VNb3ZlZChOU0V2ZW50KikgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBtb3VzZVVwKE5TRXZlbnQqKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHNjcm9sbFdo
ZWVsKE5TRXZlbnQqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG1vdXNlRG93bihOU0V2ZW50ICop
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbW91c2VEcmFnZ2VkKE5TRXZlbnQgKikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBtb3VzZUVudGVyZWQoTlNFdmVudCAqKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIG1vdXNlRXhpdGVkKE5TRXZlbnQgKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtb3VzZU1v
dmVkKE5TRXZlbnQgKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtb3VzZVVwKE5TRXZlbnQgKikg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxXaGVlbChOU0V2ZW50ICopID0gMDsKICAgICAK
LSAgICB2aXJ0dWFsIHZvaWQga2V5RG93bihOU0V2ZW50KikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBrZXlVcChOU0V2ZW50KikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBmbGFnc0NoYW5nZWQoTlNF
dmVudCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQga2V5RG93bihOU0V2ZW50ICopID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQga2V5VXAoTlNFdmVudCAqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZs
YWdzQ2hhbmdlZChOU0V2ZW50ICopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3ludGhldGljS2V5
RG93bldpdGhDb21tYW5kTW9kaWZpZXIoaW50IGtleUNvZGUsIGNoYXIgY2hhcmFjdGVyKSA9IDA7
CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGZvY3VzQ2hhbmdlZChib29sIGhhc0ZvY3VzKSA9IDA7
CkBAIC02MiwxNyArNjAsMTggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdG9wVGltZXJz
KCkgeyB9CiAgICAgCiAgICAgLy8gUmV0dXJucyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgd2luZG93
IHVzZWQgaW4gTlBQX1NldFdpbmRvdwotICAgIHZpcnR1YWwgdm9pZCogcGxhdGZvcm1XaW5kb3co
TlNXaW5kb3cqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkKiBwbGF0Zm9ybVdpbmRvdyhOU1dpbmRv
dyAqKSA9IDA7CiAgICAgCiAgICAgYm9vbCBjdXJyZW50RXZlbnRJc1VzZXJHZXN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9jdXJyZW50RXZlbnRJc1VzZXJHZXN0dXJlOyB9CisKIHByb3RlY3RlZDoK
LSAgICBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcihXZWJOZXRzY2FwZVBsdWdpblZpZXcq
IHBsdWdpblZpZXcpCisgICAgZXhwbGljaXQgV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIo
V2ViTmV0c2NhcGVQbHVnaW5WaWV3ICpwbHVnaW5WaWV3KQogICAgICAgICA6IG1fcGx1Z2luVmll
dyhwbHVnaW5WaWV3KQogICAgICAgICAsIG1fY3VycmVudEV2ZW50SXNVc2VyR2VzdHVyZShmYWxz
ZSkKICAgICB7CiAgICAgfQogICAgIAotICAgIFdlYk5ldHNjYXBlUGx1Z2luVmlldyogbV9wbHVn
aW5WaWV3OworICAgIFdlYk5ldHNjYXBlUGx1Z2luVmlldyAqbV9wbHVnaW5WaWV3OwogICAgIGJv
b2wgbV9jdXJyZW50RXZlbnRJc1VzZXJHZXN0dXJlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIubW0K
aW5kZXggOWMyZGM1MDVlM2ZlZDMyZDY0MTAxZjIxNTE4YzZlZThhMzgwODY5YS4uN2RmOGU4NzQy
ZjVhNTMwZjhjYTMzNDc3MGIzZjA5OTNlMmZhNTRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLm1tCkBA
IC0yOCwyMCArMjgsMTkgQEAKICNpbXBvcnQgIldlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVy
LmgiCiAKICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW1wb3J0IDx3dGYvUGFzc093blB0
ci5oPgogI2ltcG9ydCAiV2ViTmV0c2NhcGVQbHVnaW5WaWV3LmgiCiAjaW1wb3J0ICJXZWJOZXRz
Y2FwZVBsdWdpbkV2ZW50SGFuZGxlckNhcmJvbi5oIgogI2ltcG9ydCAiV2ViTmV0c2NhcGVQbHVn
aW5FdmVudEhhbmRsZXJDb2NvYS5oIgogCi1QYXNzT3duUHRyPFdlYk5ldHNjYXBlUGx1Z2luRXZl
bnRIYW5kbGVyPiBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcjo6Y3JlYXRlKFdlYk5ldHNj
YXBlUGx1Z2luVmlldyogcGx1Z2luVmlldykKK3N0ZDo6dW5pcXVlX3B0cjxXZWJOZXRzY2FwZVBs
dWdpbkV2ZW50SGFuZGxlcj4gV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXI6OmNyZWF0ZShX
ZWJOZXRzY2FwZVBsdWdpblZpZXcgKnBsdWdpblZpZXcpCiB7CiAgICAgc3dpdGNoIChbcGx1Z2lu
VmlldyBldmVudE1vZGVsXSkgewogI2lmbmRlZiBOUF9OT19DQVJCT04KICAgICAgICAgY2FzZSBO
UEV2ZW50TW9kZWxDYXJib246Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYk5l
dHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ2FyYm9uKHBsdWdpblZpZXcpKTsKLSNlbmRpZiAvLyBO
UF9OT19DQVJCT04KKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYk5ldHNj
YXBlUGx1Z2luRXZlbnRIYW5kbGVyQ2FyYm9uPihwbHVnaW5WaWV3KTsKKyNlbmRpZgogICAgICAg
ICBjYXNlIE5QRXZlbnRNb2RlbENvY29hOgotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hKHBsdWdpblZpZXcpKTsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5k
bGVyQ29jb2E+KHBsdWdpblZpZXcpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3LmggYi9T
b3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5oCmluZGV4IGEx
NGEzZmY1NjFhMWRkN2NhYjJiNjcyYjJiYmI4YjdhNjVjZDgwNzYuLjc4M2YzM2YxNzY5MjYwYmEw
MGZiZTY0OGU0ZjMxN2I3YmRkOTZjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1Bs
dWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1
Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcuaApAQCAtMjksMTggKzI5LDEzIEBACiAjaWYgRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKICNpbXBvcnQgIldlYkJhc2VOZXRzY2FwZVBsdWdp
blZpZXcuaCIKLQogI2ltcG9ydCAiV2ViTmV0c2NhcGVDb250YWluZXJDaGVja1ByaXZhdGUuaCIK
ICNpbXBvcnQgPFdlYktpdExlZ2FjeS9ucGZ1bmN0aW9ucy5oPgogI2ltcG9ydCA8V2ViS2l0TGVn
YWN5L25wYXBpLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL0hhc2hT
ZXQuaD4KLSNpbXBvcnQgPHd0Zi9Pd25QdHIuaD4KIAotQGNsYXNzIFdlYkRhdGFTb3VyY2U7Ci1A
Y2xhc3MgV2ViRnJhbWU7CiBAY2xhc3MgV2ViTmV0c2NhcGVQbHVnaW5QYWNrYWdlOwotQGNsYXNz
IFdlYlZpZXc7CiAKIGNsYXNzIFBsdWdpblRpbWVyOwogY2xhc3MgV2ViTmV0c2NhcGVQbHVnaW5T
dHJlYW07CkBAIC04Myw3ICs3OCw3IEBAIHR5cGVkZWYgdW5pb24gUGx1Z2luUG9ydCB7CiAgICAg
R1dvcmxkUHRyIG9mZnNjcmVlbkdXb3JsZDsKICNlbmRpZgogCi0gICAgT3duUHRyPFdlYk5ldHNj
YXBlUGx1Z2luRXZlbnRIYW5kbGVyPiBfZXZlbnRIYW5kbGVyOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcj4gX2V2ZW50SGFuZGxlcjsKICAgICAKICAg
ICBCT09MIGluU2V0V2luZG93OwogICAgIEJPT0wgc2hvdWxkU3RvcFNvb247CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDM5
MTE4MDAyMDIxNmUyYWRkZjgyMDcyODAyMmZmZjI1NmU4ZWJiYWUuLjk1YWFiOTk0MGM3YTkxYTIx
OWJhYzhkNGZkODNmZDg5Njg2MDgwMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1Bs
dWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1Bs
dWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC0xMTg3LDEyICsxMTg3LDEyIEBAIC0g
KHZvaWQpZGVzdHJveVBsdWdpbgogICAgIC8vIFNldHRpbmcgdGhlIHdpbmRvdyB0eXBlIHRvIDAg
ZW5zdXJlcyB0aGF0IE5QUF9TZXRXaW5kb3cgd2lsbCBiZSBjYWxsZWQgaWYgdGhlIHBsdWctaW4g
aXMgcmVzdGFydGVkLgogICAgIGxhc3RTZXRXaW5kb3cudHlwZSA9IChOUFdpbmRvd1R5cGUpMDsK
ICAgICAKLSAgICBfcGx1Z2luTGF5ZXIgPSAwOworICAgIF9wbHVnaW5MYXllciA9IG5pbDsKICAg
ICAKICAgICBbc2VsZiBfZGVzdHJveVBsdWdpbl07CiAgICAgW19wbHVnaW5QYWNrYWdlLmdldCgp
IGNsb3NlXTsKICAgICAKLSAgICBfZXZlbnRIYW5kbGVyLmNsZWFyKCk7CisgICAgX2V2ZW50SGFu
ZGxlciA9IG51bGxwdHI7CiB9CiAKIC0gKE5QRXZlbnRNb2RlbClldmVudE1vZGVsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQu
bW0KaW5kZXggMWE2NDQwZDk1ZmEzYWRiNGYyZDk1NzAwZDBiOTFkYWRkN2E4YWRiYS4uYWVkZDg1
M2JkM2RhN2ZhODY3ZjYyNGRlZDA3MWYzOTVhOTEyNTE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5tbQpAQCAtMzYs
NyArMzYsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1VzZXJNZWRpYVJlcXVlc3QuaD4KICNpbXBvcnQgPHd0Zi9IYXNoTWFw
Lmg+Ci0jaW1wb3J0IDx3dGYvUGFzc093blB0ci5oPgogI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgog
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbQppbmRl
eCBlYTE2ZjM1MmNiMGFjMWFhYjRkYWUwYzk5NzBiOGRlMzk2NmIwYWMxLi4yNDVkMjE4MGM4OWYw
MWFjOWY5YTkwZjRiMzVmN2Q4NjVjOGVjMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW0K
QEAgLTI2LDcgKzI2LDYgQEAKICNpbXBvcnQgIldlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJN
b2NrSW50ZXJuYWwuaCIKIAogI2ltcG9ydCAiV2ViRGV2aWNlT3JpZW50YXRpb25JbnRlcm5hbC5o
IgotI2ltcG9ydCA8d3RmL1Bhc3NPd25QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKQEAgLTM3LDcgKzM2LDcgQEAgLSAoaWQpaW5pdAogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07
CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIG1fY29yZSA9IGFkb3B0
UHRyKG5ldyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2soKSk7CisgICAgbV9jb3JlID0gc3Rk
OjptYWtlX3VuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s+KCk7CiAgICAgcmV0dXJu
IHNlbGY7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2
aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2tJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsLmgKaW5kZXgg
NWFjMzhlNWM3ZjJiZDA4MWI5YzlkYWQ1NjIwNjg0NzFmY2RlZDkxOS4uYjA2YjJjMWZjN2QwNmIw
YjliOGM5YzY2MjQyM2Y4NjZmNDI4YTQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsLmgKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9j
a0ludGVybmFsLmgKQEAgLTI0LDEyICsyNCwxMCBAQAogICovCiAKICNpbXBvcnQgIldlYkRldmlj
ZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLmgiCi0KICNpbXBvcnQgPFdlYkNvcmUvRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRNb2NrLmg+Ci0jaW1wb3J0IDx3dGYvT3duUHRyLmg+CiAKIEBpbnRlcmZh
Y2UgV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2tJbnRlcm5hbCA6IE5TT2JqZWN0IHsK
LSAgICBPd25QdHI8V2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrPiBtX2NvcmU7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9j
az4gbV9jb3JlOwogfQogCiAtIChpZClpbml0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJh
bWUubW0KaW5kZXggMzNhN2JlM2MxNDI2MmFjZjU1NGJiNGM3ZmMzYTJlY2JkNjM1MzM1OC4uMjlm
Njk1ZGE4ZWExN2FhNjAzZDY4YjMwZDNiYzBkMTUxZWU5ODNiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0yNDAsMzcgKzI0MCwyNSBAQCBUZXh0RGlyZWN0aW9uU3Vi
bWVudUluY2x1c2lvbkJlaGF2aW9yIGNvcmUoV2ViVGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNp
b25CZWhhdgogfQogCiAjaWYgUExBVEZPUk0oSU9TKQotUGFzc093blB0cjxWZWN0b3I8VmVjdG9y
PFN0cmluZz4+PiB2ZWN0b3JGb3JEaWN0YXRpb25QaHJhc2VzQXJyYXkoTlNBcnJheSAqZGljdGF0
aW9uUGhyYXNlcykKKworVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiB2ZWN0b3JGb3JEaWN0YXRpb25Q
aHJhc2VzQXJyYXkoTlNBcnJheSAqZGljdGF0aW9uUGhyYXNlcykKIHsKLSAgICBOU1VJbnRlZ2Vy
IGRpY3RhdGlvblBocmFzZXNDb3VudCA9IFtkaWN0YXRpb25QaHJhc2VzIGNvdW50XTsKLSAgICBp
ZiAoIWRpY3RhdGlvblBocmFzZXNDb3VudCkKLSAgICAgICAgcmV0dXJuIFBhc3NPd25QdHI8VmVj
dG9yPFZlY3RvcjxTdHJpbmc+ID4gPigpOwotICAgIAotICAgIE93blB0cjxWZWN0b3I8VmVjdG9y
PFN0cmluZz4gPiA+IGRpY3RhdGlvblBocmFzZXNWZWN0b3IgPSBhZG9wdFB0cihuZXcgVmVjdG9y
PFZlY3RvcjxTdHJpbmc+ID4oZGljdGF0aW9uUGhyYXNlc0NvdW50KSk7Ci0gICAgCi0gICAgZm9y
IChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgZGljdGF0aW9uUGhyYXNlc0NvdW50OyBpKyspIHsKLSAg
ICAgICAgCi0gICAgICAgIGlkIGRpY3RhdGlvblBocmFzZSA9IFtkaWN0YXRpb25QaHJhc2VzIG9i
amVjdEF0SW5kZXg6aV07CisgICAgVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiByZXN1bHQ7CisKKyAg
ICBmb3IgKGlkIGRpY3RhdGlvblBocmFzZSBpbiBkaWN0YXRpb25QaHJhc2VzKSB7CiAgICAgICAg
IGlmICghW2RpY3RhdGlvblBocmFzZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCiAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAgIE5TQXJyYXkgKmludGVycHJl
dGF0aW9uc0FycmF5ID0gKE5TQXJyYXkgKilkaWN0YXRpb25QaHJhc2U7Ci0gICAgICAgIFZlY3Rv
cjxTdHJpbmc+JiBpbnRlcnByZXRhdGlvbnNWZWN0b3IgPSBkaWN0YXRpb25QaHJhc2VzVmVjdG9y
LT5hdChpKTsKLSAgICAgICAgCi0gICAgICAgIE5TVUludGVnZXIgaW50ZXJwcmV0YXRpb25zQ291
bnQgPSBbaW50ZXJwcmV0YXRpb25zQXJyYXkgY291bnRdOwotICAgICAgICAKLSAgICAgICAgZm9y
IChOU1VJbnRlZ2VyIGogPSAwOyBqIDwgaW50ZXJwcmV0YXRpb25zQ291bnQ7IGorKykgewotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBpZCBpbnRlcnByZXRhdGlvbiA9IFtpbnRlcnByZXRhdGlv
bnNBcnJheSBvYmplY3RBdEluZGV4OmpdOworICAgICAgICByZXN1bHQuYXBwZW5kKFZlY3RvcjxT
dHJpbmc+KCkpOworICAgICAgICBmb3IgKGlkIGludGVycHJldGF0aW9uIDogKE5TQXJyYXkgKilk
aWN0YXRpb25QaHJhc2UpIHsKICAgICAgICAgICAgIGlmICghW2ludGVycHJldGF0aW9uIGlzS2lu
ZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIGludGVycHJldGF0aW9uc1ZlY3Rvci5hcHBlbmQoU3Ry
aW5nKChOU1N0cmluZyAqKWludGVycHJldGF0aW9uKSk7CisgICAgICAgICAgICByZXN1bHQubGFz
dCgpLmFwcGVuZCgoTlNTdHJpbmcgKilpbnRlcnByZXRhdGlvbik7CiAgICAgICAgIH0KICAgICB9
CiAgICAgCi0gICAgcmV0dXJuIGRpY3RhdGlvblBocmFzZXNWZWN0b3IucmVsZWFzZSgpOworICAg
IHJldHVybiByZXN1bHQ7CiB9CisKICNlbmRpZgogCiBAaW1wbGVtZW50YXRpb24gV2ViRnJhbWUg
KFdlYkludGVybmFsKQpAQCAtMjUwNywzMyArMjQ5NSwzMiBAQCBzdGF0aWMgTlNVUkwgKmNyZWF0
ZVVuaXF1ZVdlYkRhdGFVUkwoKQogCiAtICh2b2lkKV9sb2FkRGF0YTooTlNEYXRhICopZGF0YSBN
SU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZSB0ZXh0RW5jb2RpbmdOYW1lOihOU1N0cmluZyAq
KWVuY29kaW5nTmFtZSBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwgdW5yZWFjaGFibGVVUkw6KE5T
VVJMICopdW5yZWFjaGFibGVVUkwKIHsKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KE1BQykKICAgICBpZiAoIXB0aHJlYWRfbWFpbl9ucCgpKQogICAgICAgICByZXR1cm4gW1tzZWxm
IF93ZWJraXRfaW52b2tlT25NYWluVGhyZWFkXSBfbG9hZERhdGE6ZGF0YSBNSU1FVHlwZTpNSU1F
VHlwZSB0ZXh0RW5jb2RpbmdOYW1lOmVuY29kaW5nTmFtZSBiYXNlVVJMOmJhc2VVUkwgdW5yZWFj
aGFibGVVUkw6dW5yZWFjaGFibGVVUkxdOwogI2VuZGlmCi0gICAgCi0gICAgVVJMIHJlc3BvbnNl
VVJMOwotICAgIGlmICghYmFzZVVSTCkgeworCisgICAgTlNVUkwgKnJlc3BvbnNlVVJMID0gbmls
OworICAgIGlmIChiYXNlVVJMKQorICAgICAgICBiYXNlVVJMID0gW2Jhc2VVUkwgYWJzb2x1dGVV
UkxdOworICAgIGVsc2UgewogICAgICAgICBiYXNlVVJMID0gYmxhbmtVUkwoKTsKICAgICAgICAg
cmVzcG9uc2VVUkwgPSBjcmVhdGVVbmlxdWVXZWJEYXRhVVJMKCk7CiAgICAgfQogICAgIAogI2lm
IFVTRShRVUlDS19MT09LKQogICAgIGlmIChzaG91bGRVc2VRdWlja0xvb2tGb3JNSU1FVHlwZShN
SU1FVHlwZSkpIHsKLSAgICAgICAgVVJMIHFsVVJMID0gcmVzcG9uc2VVUkw7Ci0gICAgICAgIGlm
IChxbFVSTC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBxbFVSTCA9IFtiYXNlVVJMIGFic29sdXRl
VVJMXTsKLSAgICAgICAgT3duUHRyPFJlc291cmNlUmVxdWVzdD4gcWxSZXF1ZXN0KHJlZ2lzdGVy
UUxQcmV2aWV3Q29udmVydGVySWZOZWVkZWQoKE5TVVJMICopcWxVUkwsIE1JTUVUeXBlLCBkYXRh
KSk7Ci0gICAgICAgIGlmIChxbFJlcXVlc3QpIHsKLSAgICAgICAgICAgIF9wcml2YXRlLT5jb3Jl
RnJhbWUtPmxvYWRlcigpLmxvYWQoRnJhbWVMb2FkUmVxdWVzdChfcHJpdmF0ZS0+Y29yZUZyYW1l
LCAqcWxSZXF1ZXN0KSk7CisgICAgICAgIE5TVVJMICpxdWlja0xvb2tVUkwgPSByZXNwb25zZVVS
TCA/IHJlc3BvbnNlVVJMIDogYmFzZVVSTDsKKyAgICAgICAgaWYgKGF1dG8gcmVxdWVzdCA9IHJl
Z2lzdGVyUUxQcmV2aWV3Q29udmVydGVySWZOZWVkZWQocXVpY2tMb29rVVJMLCBNSU1FVHlwZSwg
ZGF0YSkpIHsKKyAgICAgICAgICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmxvYWRlcigpLmxvYWQo
RnJhbWVMb2FkUmVxdWVzdChfcHJpdmF0ZS0+Y29yZUZyYW1lLCByZXF1ZXN0KSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0jZW5kaWYgLy8gVVNFKFFVSUNLX0xPT0sp
CisjZW5kaWYKIAotICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFtiYXNlVVJMIGFic29sdXRl
VVJMXSk7CisgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoYmFzZVVSTCk7CiAKLSNpZiAhUExB
VEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBoYWNrIGJlY2F1c2UgTWFpbCBj
aGVja3MgZm9yIHRoaXMgcHJvcGVydHkgdG8gZGV0ZWN0IGRhdGEgLyBhcmNoaXZlIGxvYWRzCiAg
ICAgW05TVVJMUHJvdG9jb2wgc2V0UHJvcGVydHk6QCIiIGZvcktleTpAIldlYkRhdGFSZXF1ZXN0
IiBpblJlcXVlc3Q6KE5TTXV0YWJsZVVSTFJlcXVlc3QgKilyZXF1ZXN0Lm5zVVJMUmVxdWVzdChV
cGRhdGVIVFRQQm9keSldOwogI2VuZGlmCkBAIC0yNTQzLDcgKzI1MzAsNiBAQCAtICh2b2lkKV9s
b2FkRGF0YTooTlNEYXRhICopZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZSB0ZXh0
RW5jb2RpbmdOYW1lOgogICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmxvYWRlcigpLmxvYWQoRnJh
bWVMb2FkUmVxdWVzdChfcHJpdmF0ZS0+Y29yZUZyYW1lLCByZXF1ZXN0LCBzdWJzdGl0dXRlRGF0
YSkpOwogfQogCi0KIC0gKHZvaWQpbG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5T
U3RyaW5nICopTUlNRVR5cGUgdGV4dEVuY29kaW5nTmFtZTooTlNTdHJpbmcgKillbmNvZGluZ05h
bWUgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJMCiB7CiAgICAgV2ViQ29yZVRocmVhZFZpb2xhdGlv
bkNoZWNrUm91bmRUd28oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRnJhbWVJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZUlu
dGVybmFsLmgKaW5kZXggMGFhZmIxZDZjMDkzZWYwNDMyOTlmNzlmNGVhOGUwYWU2Y2ZmM2JkZC4u
NWVmNDdmNjI5MjFkZTljMTE1YWQ3MjI4MTJjYjhjYWY0NjUwZTY3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZUludGVybmFsLmgKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZUludGVybmFsLmgKQEAgLTczLDcgKzczLDcgQEAgV2Vi
Q29yZTo6RWRpdGFibGVMaW5rQmVoYXZpb3IgY29yZShXZWJLaXRFZGl0YWJsZUxpbmtCZWhhdmlv
cik7CiBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yIGNvcmUo
V2ViVGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25CZWhhdmlvcik7CiAKICNpZiBkZWZpbmVk
KF9fY3BsdXNwbHVzKSAmJiBQTEFURk9STShJT1MpCi1QYXNzT3duUHRyPFZlY3RvcjxWZWN0b3I8
U3RyaW5nPj4+IHZlY3RvckZvckRpY3RhdGlvblBocmFzZXNBcnJheShOU0FycmF5ICopOworVmVj
dG9yPFZlY3RvcjxTdHJpbmc+PiB2ZWN0b3JGb3JEaWN0YXRpb25QaHJhc2VzQXJyYXkoTlNBcnJh
eSAqKTsKICNlbmRpZgogCiBXZWJWaWV3ICpnZXRXZWJWaWV3KFdlYkZyYW1lICp3ZWJGcmFtZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9s
bGVyLmgKaW5kZXggMjViMGViNWI3ZTEwMmYyZDkzNmI0YzY4YTYyY2QxN2NmNDhkZTE1ZS4uY2Q1
M2JhNjkxN2ZmZjUwNmE5YzU0YTRjZjc5OGFmMGUzMDcwMGU5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIuaApAQCAtMjYsNyAr
MjYsNiBAQAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgIVBMQVRGT1JNKElPUykKIAog
I2ltcG9ydCA8V2ViQ29yZS9JbnRQb2ludC5oPgotI2ltcG9ydCA8d3RmL093blB0ci5oPgogI2lt
cG9ydCA8d3RmL1JlZlB0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmggYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKaW5kZXggNmFlOTliYzFkNTQ0NDBkNzg0ZjRk
OTg1NjQyZDhhODdjNTAzZGI5MS4uOWYxZDFhYjExNGFmMDdiYzFlYTQ5MWZkYmM2ZWU0NWZmMTRj
NWU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaApAQCAtMzQsNyAr
MzQsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9MYXllckZsdXNoU2NoZWR1bGVyQ2xpZW50Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVLZXlib2FyZFVJTW9kZS5oPgogI2ltcG9ydCA8d3RmL0hh
c2hNYXAuaD4KLSNpbXBvcnQgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CiAjaW1wb3J0IDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgogI2ltcG9ydCA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CkBAIC0zMTgsNyArMzE3LDcgQEAgcHJpdmF0ZToKICNlbmRpZgog
CiAjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCi0gICAgT3duUHRyPFdlYkNvcmU6OkFs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcj4gbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
cj4gbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI7CiAjZW5kaWYKIAogICAgIFJldGFpblB0
cjxOU0RhdGE+IHNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlld0RhdGEubW0KaW5kZXggOWViYjMyMGU1YmE0NGY4ZTgzNzBiYTUwYjcyNjgy
NmFjMDI1ZGM3Ny4uOGJkOWU0N2YyYTRjMDI4OGFkNzE5ZTg0MDVjODIyYzJkNjAxY2U0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCkBAIC0xNjIsNyArMTYyLDcg
QEAgLSAoaWQpaW5pdAogICAgIHBsdWdpbkRhdGFiYXNlQ2xpZW50Q291bnQrKzsKIAogI2lmIFVT
RShESUNUQVRJT05fQUxURVJOQVRJVkVTKQotICAgIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9s
bGVyID0gYWRvcHRQdHIobmV3IFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcik7
CisgICAgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcj4oKTsKICNlbmRpZgogCiAgICAgcmV0
dXJuIHNlbGY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhy
ZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaAppbmRleCA2NjI1ODkzODgwMWJkNDI5Yzcy
M2ViZGUwNTNkYWMyYTZhYjM3Y2Y1Li44MTk1MGY4MjAzNDBkZjk2MDI2NGQzN2YxMTZmNTRhYjk5
NjdkYjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1Ro
cmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKQEAgLTQxLDcgKzQxLDYgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0ludFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VPdmVybGF5Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251162</attachid>
            <date>2015-04-20 09:45:45 -0700</date>
            <delta_ts>2015-04-21 08:55:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143943-20150420094443.patch</filename>
            <type>text/plain</type>
            <size>8865</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzMDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDA5NjYzYTg3NDc1ZjZk
ODJkZTA1NDM2NGNlZTkwOTZhYmI5ZDA5NC4uY2Y1ZWVkYmYyNDI4YTljZjExNDkwMTY3YzkxMWRk
NmQ0MzcxMThlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE1LTA0LTE5ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgT3duUHRyIGFuZCBQ
YXNzT3duUHRyIHVzZSBmcm9tIFdlYktpdC9jZiwgV2ViS2l0L21hYywgYW5kIFdlYktpdDIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mzk0MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXREaWN0YXRpb25QaHJhc2Vz
QXNDaGlsZE9mRWxlbWVudCk6IENoYW5nZWQgdGhpcyBpT1Mtb25seQorICAgICAgICBmdW5jdGlv
biB0byB0YWtlIGEgVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiBhbmQgbm90IGludm9sdmUgUGFzc093
blB0ci4gQWxzbyBtYWRlCisgICAgICAgIGl0IHRha2UgYSByZWZlcmVuY2UgcmF0aGVyIHRoYW4g
YSBwb2ludGVyIHRvIHRoZSBlbGVtZW50IGFuZCBzaW1wbGlmeSB0aGUgY29kZQorICAgICAgICBh
IGJpdCB1c2luZyBtb2Rlcm4gZm9yIGxvb3BzIGFuZCBhdXRvLgorICAgICAgICAqIGVkaXRpbmcv
RWRpdG9yLmg6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tM
b29rLmg6IFJldHVybiBhbiBOU1VSTFJlcXVlc3QgKiBpbnN0ZWFkIG9mIGEKKyAgICAgICAgUGFz
c093blB0cjxSZXNvdXJjZVJlcXVlc3Q+IGZyb20gdGhpcyBpT1Mtc3BlY2lmaWMgZnVuY3Rpb24u
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tOgorICAgICAgICAo
V2ViQ29yZTo6cmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZCk6IERpdHRvLgorCiAy
MDE1LTA0LTIwICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbQ01ha2VdIEluY2x1ZGUgSUNVIHVuY29uZGl0aW9uYWxseSBvbiB0aGUgc291cmNlIGxp
c3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggNzEwYWEzOTdlY2U1ZTFlOWNlMDVj
OTc0YmUwZmM2NjNlMjViODU4OC4uNzM5MWM2MDY4ZGUxN2MyNDdlNmVlNjE4NGJkZjJiODk5MDk2
OTdkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzg4LDYgKzM4OCw3IEBAIHZv
aWQgRWRpdG9yOjpjbGVhclRleHQoKQogfQogCiAjaWYgUExBVEZPUk0oSU9TKQorCiB2b2lkIEVk
aXRvcjo6aW5zZXJ0RGljdGF0aW9uUGhyYXNlcyhQYXNzT3duUHRyPFZlY3RvcjxWZWN0b3I8U3Ry
aW5nPiA+ID4gZGljdGF0aW9uUGhyYXNlcywgUmV0YWluUHRyPGlkPiBtZXRhZGF0YSkKIHsKICAg
ICBpZiAobV9mcmFtZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkKQEAgLTM5OSw3ICs0MDAsNyBAQCB2
b2lkIEVkaXRvcjo6aW5zZXJ0RGljdGF0aW9uUGhyYXNlcyhQYXNzT3duUHRyPFZlY3RvcjxWZWN0
b3I8U3RyaW5nPiA+ID4gZGljdGF0aQogICAgIGFwcGx5Q29tbWFuZChEaWN0YXRpb25Db21tYW5k
SU9TOjpjcmVhdGUoZG9jdW1lbnQoKSwgZGljdGF0aW9uUGhyYXNlcywgbWV0YWRhdGEpKTsKIH0K
IAotdm9pZCBFZGl0b3I6OnNldERpY3RhdGlvblBocmFzZXNBc0NoaWxkT2ZFbGVtZW50KFBhc3NP
d25QdHI8VmVjdG9yPFZlY3RvcjxTdHJpbmc+ID4gPiBkaWN0YXRpb25QaHJhc2VzLCBSZXRhaW5Q
dHI8aWQ+IG1ldGFkYXRhLCBFbGVtZW50KiBlbGVtZW50KQordm9pZCBFZGl0b3I6OnNldERpY3Rh
dGlvblBocmFzZXNBc0NoaWxkT2ZFbGVtZW50KGNvbnN0IFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4m
IGRpY3RhdGlvblBocmFzZXMsIFJldGFpblB0cjxpZD4gbWV0YWRhdGEsIEVsZW1lbnQmIGVsZW1l
bnQpCiB7CiAgICAgLy8gQ2xlYXIgdGhlIGNvbXBvc2l0aW9uLgogICAgIGNsZWFyKCk7CkBAIC00
MTAsNTQgKzQxMSw1MCBAQCB2b2lkIEVkaXRvcjo6c2V0RGljdGF0aW9uUGhyYXNlc0FzQ2hpbGRP
ZkVsZW1lbnQoUGFzc093blB0cjxWZWN0b3I8VmVjdG9yPFN0cmluZwogICAgIAogICAgIG1fZnJh
bWUuc2VsZWN0aW9uKCkuY2xlYXIoKTsKICAgICAKLSAgICBlbGVtZW50LT5yZW1vdmVDaGlsZHJl
bigpOworICAgIGVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAKLSAgICBpZiAoZGljdGF0
aW9uUGhyYXNlcy0+aXNFbXB0eSgpKSB7CisgICAgaWYgKGRpY3RhdGlvblBocmFzZXMuaXNFbXB0
eSgpKSB7CiAgICAgICAgIGNsaWVudCgpLT5yZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAgICBFeGNlcHRpb25Db2RlIGVjOyAgICAKICAg
ICBSZWZQdHI8UmFuZ2U+IGNvbnRleHQgPSBkb2N1bWVudCgpLmNyZWF0ZVJhbmdlKCk7Ci0gICAg
Y29udGV4dC0+c2VsZWN0Tm9kZUNvbnRlbnRzKGVsZW1lbnQsIGVjKTsKLSAgICAKKyAgICBjb250
ZXh0LT5zZWxlY3ROb2RlQ29udGVudHMoJmVsZW1lbnQsIGVjKTsKKwogICAgIFN0cmluZ0J1aWxk
ZXIgZGljdGF0aW9uUGhyYXNlc0J1aWxkZXI7Ci0gICAgc2l6ZV90IGRpY3RhdGlvblBocmFzZUNv
dW50ID0gZGljdGF0aW9uUGhyYXNlcy0+c2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZGljdGF0aW9uUGhyYXNlQ291bnQ7IGkrKykgewotICAgICAgICBjb25zdCBTdHJpbmcmIGZp
cnN0SW50ZXJwcmV0YXRpb24gPSBkaWN0YXRpb25QaHJhc2VzLT5hdChpKVswXTsKLSAgICAgICAg
ZGljdGF0aW9uUGhyYXNlc0J1aWxkZXIuYXBwZW5kKGZpcnN0SW50ZXJwcmV0YXRpb24pOwotICAg
IH0KLSAgICBTdHJpbmcgc2VyaWFsaXplZERpY3RhdGlvblBocmFzZXMgPSBkaWN0YXRpb25QaHJh
c2VzQnVpbGRlci50b1N0cmluZygpOwotICAgIAotICAgIGVsZW1lbnQtPmFwcGVuZENoaWxkKGNy
ZWF0ZUZyYWdtZW50RnJvbVRleHQoKmNvbnRleHQuZ2V0KCksIHNlcmlhbGl6ZWREaWN0YXRpb25Q
aHJhc2VzKSwgZWMpOwotICAgIAorICAgIGZvciAoYXV0byYgaW50ZXJwcmV0YXRpb25zIDogZGlj
dGF0aW9uUGhyYXNlcykKKyAgICAgICAgZGljdGF0aW9uUGhyYXNlc0J1aWxkZXIuYXBwZW5kKGlu
dGVycHJldGF0aW9uc1swXSk7CisKKyAgICBlbGVtZW50LmFwcGVuZENoaWxkKGNyZWF0ZUZyYWdt
ZW50RnJvbVRleHQoKmNvbnRleHQsIGRpY3RhdGlvblBocmFzZXNCdWlsZGVyLnRvU3RyaW5nKCkp
LCBlYyk7CisKICAgICAvLyBXZSBuZWVkIGEgbGF5b3V0IGluIG9yZGVyIHRvIGFkZCBtYXJrZXJz
IGJlbG93LgogICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0KCk7Ci0gICAgCi0gICAgaWYgKCFl
bGVtZW50LT5maXJzdENoaWxkKCktPmlzVGV4dE5vZGUoKSkgeworCisgICAgaWYgKCFlbGVtZW50
LmZpcnN0Q2hpbGQoKS0+aXNUZXh0Tm9kZSgpKSB7CiAgICAgICAgIC8vIFNob3VsZG4ndCBoYXBw
ZW4uCi0gICAgICAgIEFTU0VSVChlbGVtZW50LT5maXJzdENoaWxkKCktPmlzVGV4dE5vZGUoKSk7
CisgICAgICAgIEFTU0VSVChlbGVtZW50LmZpcnN0Q2hpbGQoKS0+aXNUZXh0Tm9kZSgpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAgICAgCi0gICAgVGV4dCogdGV4dE5vZGUgPSBzdGF0
aWNfY2FzdDxUZXh0Kj4oZWxlbWVudC0+Zmlyc3RDaGlsZCgpKTsKKworICAgIFRleHQmIHRleHRO
b2RlID0gZG93bmNhc3Q8VGV4dD4oKmVsZW1lbnQuZmlyc3RDaGlsZCgpKTsKICAgICBpbnQgcHJl
dmlvdXNEaWN0YXRpb25QaHJhc2VTdGFydCA9IDA7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBkaWN0YXRpb25QaHJhc2VDb3VudDsgaSsrKSB7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBpbnRlcnByZXRhdGlvbnMgPSBkaWN0YXRpb25QaHJhc2VzLT5hdChpKTsKKyAgICBmb3Ig
KGF1dG8mIGludGVycHJldGF0aW9ucyA6IGRpY3RhdGlvblBocmFzZXMpIHsKICAgICAgICAgaW50
IGRpY3RhdGlvblBocmFzZUxlbmd0aCA9IGludGVycHJldGF0aW9uc1swXS5sZW5ndGgoKTsKICAg
ICAgICAgaW50IGRpY3RhdGlvblBocmFzZUVuZCA9IHByZXZpb3VzRGljdGF0aW9uUGhyYXNlU3Rh
cnQgKyBkaWN0YXRpb25QaHJhc2VMZW5ndGg7CiAgICAgICAgIGlmIChpbnRlcnByZXRhdGlvbnMu
c2l6ZSgpID4gMSkgewotICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBkaWN0YXRpb25QaHJhc2VS
YW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgdGV4dE5vZGUsIHByZXZpb3VzRGljdGF0
aW9uUGhyYXNlU3RhcnQsIHRleHROb2RlLCBkaWN0YXRpb25QaHJhc2VFbmQpOwotICAgICAgICAg
ICAgZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZl
c01hcmtlcihkaWN0YXRpb25QaHJhc2VSYW5nZS5nZXQoKSwgaW50ZXJwcmV0YXRpb25zKTsKKyAg
ICAgICAgICAgIGF1dG8gZGljdGF0aW9uUGhyYXNlUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3Vt
ZW50KCksICZ0ZXh0Tm9kZSwgcHJldmlvdXNEaWN0YXRpb25QaHJhc2VTdGFydCwgJnRleHROb2Rl
LCBkaWN0YXRpb25QaHJhc2VFbmQpOworICAgICAgICAgICAgZG9jdW1lbnQoKS5tYXJrZXJzKCku
YWRkRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlc01hcmtlcihkaWN0YXRpb25QaHJhc2VS
YW5nZS5wdHIoKSwgaW50ZXJwcmV0YXRpb25zKTsKICAgICAgICAgfQogICAgICAgICBwcmV2aW91
c0RpY3RhdGlvblBocmFzZVN0YXJ0ID0gZGljdGF0aW9uUGhyYXNlRW5kOwogICAgIH0KLSAgICAK
LSAgICBSZWZQdHI8UmFuZ2U+IHJlc3VsdFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgp
LCB0ZXh0Tm9kZSwgMCwgdGV4dE5vZGUsIHRleHROb2RlLT5sZW5ndGgoKSk7Ci0gICAgZG9jdW1l
bnQoKS5tYXJrZXJzKCkuYWRkRGljdGF0aW9uUmVzdWx0TWFya2VyKHJlc3VsdFJhbmdlLmdldCgp
LCBtZXRhZGF0YSk7Ci0gICAgCisKKyAgICBhdXRvIHJlc3VsdFJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShkb2N1bWVudCgpLCAmdGV4dE5vZGUsIDAsICZ0ZXh0Tm9kZSwgdGV4dE5vZGUubGVuZ3RoKCkp
OworICAgIGRvY3VtZW50KCkubWFya2VycygpLmFkZERpY3RhdGlvblJlc3VsdE1hcmtlcihyZXN1
bHRSYW5nZS5wdHIoKSwgbWV0YWRhdGEpOworCiAgICAgY2xpZW50KCktPnJlc3BvbmRUb0NoYW5n
ZWRDb250ZW50cygpOwogfQorCiAjZW5kaWYKIAogdm9pZCBFZGl0b3I6OnBhc3RlQXNQbGFpblRl
eHQoY29uc3QgU3RyaW5nJiBwYXN0aW5nVGV4dCwgYm9vbCBzbWFydFJlcGxhY2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaAppbmRleCA3OTJiYzQ2YTYzNjUzZGRmMTU3OWQ4Nzk4YjllZDk4MDI5ZDU4
MDc4Li5mOWM1NGE4ZDI4YWFlZGM2NTBkMzJiNDM4ODVjNTcyNTZmZTIwYTM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmgKQEAgLTMzMCw3ICszMzAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRUZXh0QXNDaGlsZE9mRWxlbWVudChjb25zdCBTdHJpbmcmLCBFbGVtZW50
Kik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJh
c2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24pOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgaW5zZXJ0RGljdGF0aW9uUGhyYXNlcyhQYXNzT3duUHRyPFZlY3RvcjxWZWN0b3I8U3Ry
aW5nPiA+ID4gZGljdGF0aW9uUGhyYXNlcywgUmV0YWluUHRyPGlkPiBtZXRhZGF0YSk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREaWN0YXRpb25QaHJhc2VzQXNDaGlsZE9mRWxlbWVudChQ
YXNzT3duUHRyPFZlY3RvcjxWZWN0b3I8U3RyaW5nPiA+ID4gZGljdGF0aW9uUGhyYXNlcywgUmV0
YWluUHRyPGlkPiBtZXRhZGF0YSwgRWxlbWVudCogZWxlbWVudCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXREaWN0YXRpb25QaHJhc2VzQXNDaGlsZE9mRWxlbWVudChjb25zdCBWZWN0b3I8
VmVjdG9yPFN0cmluZz4+JiBkaWN0YXRpb25QaHJhc2VzLCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRh
LCBFbGVtZW50Jik7CiAjZW5kaWYKICAgICAKICAgICB2b2lkIGFkZFRvS2lsbFJpbmcoUmFuZ2Uq
LCBib29sIHByZXBlbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9pb3MvUXVpY2tMb29rLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lv
cy9RdWlja0xvb2suaAppbmRleCBmNTc2MmYwYTE1YmMzNWU2NmNiYTAxNTQ5MWI3ODAxNmY4Yzg1
YmM2Li5hOWVmN2NjNDdhMDZjODA3ZjE3MWE0MDUwOWY5YzhiYzEwZmQ0ODIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaApAQCAtNDEsNiAr
NDEsNyBAQCBPQkpDX0NMQVNTIE5TU2V0OwogT0JKQ19DTEFTUyBOU1N0cmluZzsKIE9CSkNfQ0xB
U1MgTlNVUkw7CiBPQkpDX0NMQVNTIE5TVVJMQ29ubmVjdGlvbjsKK09CSkNfQ0xBU1MgTlNVUkxS
ZXF1ZXN0OwogT0JKQ19DTEFTUyBOU1VSTFJlc3BvbnNlOwogT0JKQ19DTEFTUyBRTFByZXZpZXdD
b252ZXJ0ZXI7CiAKQEAgLTcyLDcgKzczLDcgQEAgV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcgKnFs
UHJldmlld0NvbnZlcnRlckZpbGVOYW1lRm9yVVJMKE5TVVJMICopOwogV0VCQ09SRV9FWFBPUlQg
TlNTdHJpbmcgKnFsUHJldmlld0NvbnZlcnRlclVUSUZvclVSTChOU1VSTCAqKTsKIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcmVtb3ZlUUxQcmV2aWV3Q29udmVydGVyRm9yVVJMKE5TVVJMICopOwogCi1X
RUJDT1JFX0VYUE9SVCBQYXNzT3duUHRyPFJlc291cmNlUmVxdWVzdD4gcmVnaXN0ZXJRTFByZXZp
ZXdDb252ZXJ0ZXJJZk5lZWRlZChOU1VSTCAqLCBOU1N0cmluZyAqbWltZVR5cGUsIE5TRGF0YSAq
KTsKK1dFQkNPUkVfRVhQT1JUIE5TVVJMUmVxdWVzdCAqcmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0
ZXJJZk5lZWRlZChOU1VSTCAqLCBOU1N0cmluZyAqbWltZVR5cGUsIE5TRGF0YSAqKTsKIAogY29u
c3QgVVJMIHNhZmVRTFVSTEZvckRvY3VtZW50VVJMQW5kUmVzb3VyY2VVUkwoY29uc3QgVVJMJiBk
b2N1bWVudFVSTCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQppbmRleCBlZTkwNDkxY2I5
YTU4YWI1NDQ5ZDVhMTk5YzViYjM1YzU5ZTQzN2UyLi5lNDA2MTFjMTU3ODFmMzdkZjdiM2IwOTIx
NmQ2NmNiZjQ0Mzg0NjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2lvcy9RdWlja0xvb2subW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9pb3MvUXVpY2tMb29rLm1tCkBAIC0xODgsNyArMTg4LDcgQEAgdm9pZCBXZWJDb3JlOjpyZW1v
dmVRTFByZXZpZXdDb252ZXJ0ZXJGb3JVUkwoTlNVUkwgKnVybCkKICAgICBbUUxDb250ZW50RGlj
dGlvbmFyeSgpIHJlbW92ZU9iamVjdEZvcktleTp1cmxdOwogfQogCi1QYXNzT3duUHRyPFJlc291
cmNlUmVxdWVzdD4gV2ViQ29yZTo6cmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZChO
U1VSTCAqdXJsLCBOU1N0cmluZyAqbWltZVR5cGUsIE5TRGF0YSAqZGF0YSkKK05TVVJMUmVxdWVz
dCAqV2ViQ29yZTo6cmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZChOU1VSTCAqdXJs
LCBOU1N0cmluZyAqbWltZVR5cGUsIE5TRGF0YSAqZGF0YSkKIHsKICAgICBSZXRhaW5QdHI8TlNT
dHJpbmc+IHVwZGF0ZWRNSU1FVHlwZSA9IGFkb3B0TlMoV2ViQ29yZTo6UUxUeXBlQ29weUJlc3RN
aW1lVHlwZUZvclVSTEFuZE1pbWVUeXBlKHVybCwgbWltZVR5cGUpKTsKIApAQCAtMjAyLDEwICsy
MDIsMTAgQEAgUGFzc093blB0cjxSZXNvdXJjZVJlcXVlc3Q+IFdlYkNvcmU6OnJlZ2lzdGVyUUxQ
cmV2aWV3Q29udmVydGVySWZOZWVkZWQoTlNVUkwgKnUKICAgICAgICAgLy8gdGhlIFVSTCB0aGF0
IHRoZSBXZWJEYXRhU291cmNlIHdpbGwgc2VlIGR1cmluZyAtZGVhbGxvYy4KICAgICAgICAgYWRk
UUxQcmV2aWV3Q29udmVydGVyV2l0aEZpbGVGb3JVUkwoW3JlcXVlc3QgVVJMXSwgY29udmVydGVy
LmdldCgpLCBuaWwpOwogCi0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgUmVzb3VyY2VSZXF1
ZXN0KHJlcXVlc3QpKTsKKyAgICAgICAgcmV0dXJuIHJlcXVlc3Q7CiAgICAgfQogCi0gICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG5pbDsKIH0KIAogY29uc3QgVVJMIFdlYkNvcmU6OnNh
ZmVRTFVSTEZvckRvY3VtZW50VVJMQW5kUmVzb3VyY2VVUkwoY29uc3QgVVJMJiBkb2N1bWVudFVS
TCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251230</attachid>
            <date>2015-04-21 08:55:38 -0700</date>
            <delta_ts>2015-04-21 08:56:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143943-20150421085436.patch</filename>
            <type>text/plain</type>
            <size>30709</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzMDYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmVmYjU5ZTY3YTI3MDY4
MGFmNjk3M2ZjYzYzZTg4YmI2ODcwMjgyNC4uZDMzNjM2YTVlYTlhZjZlNTc4Mzk1YzBmOTJlM2Ri
YzhmMGEyNzc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI0IEBACiAyMDE1LTA0LTIxICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAorICAgICAgICBSZW1vdmUgT3duUHRyIGFuZCBQ
YXNzT3duUHRyIHVzZSBmcm9tIFdlYktpdC9jZiwgV2ViS2l0L21hYywgYW5kIFdlYktpdDIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mzk0MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXREaWN0YXRpb25QaHJhc2Vz
QXNDaGlsZE9mRWxlbWVudCk6IENoYW5nZWQgdGhpcyBpT1Mtb25seQorICAgICAgICBmdW5jdGlv
biB0byB0YWtlIGEgVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiBhbmQgbm90IGludm9sdmUgUGFzc093
blB0ci4gQWxzbyBtYWRlCisgICAgICAgIGl0IHRha2UgYSByZWZlcmVuY2UgcmF0aGVyIHRoYW4g
YSBwb2ludGVyIHRvIHRoZSBlbGVtZW50IGFuZCBzaW1wbGlmeSB0aGUgY29kZQorICAgICAgICBh
IGJpdCB1c2luZyBtb2Rlcm4gZm9yIGxvb3BzIGFuZCBhdXRvLgorICAgICAgICAqIGVkaXRpbmcv
RWRpdG9yLmg6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tM
b29rLmg6IFJldHVybiBhbiBOU1VSTFJlcXVlc3QgKiBpbnN0ZWFkIG9mIGEKKyAgICAgICAgUGFz
c093blB0cjxSZXNvdXJjZVJlcXVlc3Q+IGZyb20gdGhpcyBpT1Mtc3BlY2lmaWMgZnVuY3Rpb24u
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tOgorICAgICAgICAo
V2ViQ29yZTo6cmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZCk6IERpdHRvLgorCisy
MDE1LTA0LTIxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKwogICAgICAgICBSZW1v
dmUgc29tZSBzdHJheSB1c2VzIG9mIE93blB0ciBhbmQgUGFzc093blB0ciBpbiBXVEYgKG91dHNp
ZGUgb2YgdGhlIHRlbXBsYXRlIGRlZmluaXRpb25zIGFuZCB0cmFpdHMpCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM5NDQKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZwpp
bmRleCBhODRmNmQxMjViODlmNWUwZGI3ZDEyNzQwYjY2OWVkYjgwZjVlMjM1Li42ZTk0N2ViYjVm
NGE0NDgxYjBhYjJlODdiMzcwOTgyMjk4ZTczY2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2NmL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyIEBACisyMDE1LTA0LTE5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZW1vdmUgT3duUHRyIGFuZCBQYXNzT3duUHRyIHVzZSBmcm9tIFdlYktpdC9jZiwgV2Vi
S2l0L21hYywgYW5kIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0Mzk0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOiBS
ZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUuCisKIDIwMTQtMDktMjUgIENzYWJhIE9zenRyb2dvbsOh
YyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgV2luQ0UgcG9ydCBmcm9tIHRy
dW5rCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggYWU2ZDY3YzMyYzUzMDgzYTlkNWUxZWEzY2MxMTU3MjMy
Y2UzZDhiNC4uZmFiZjQyYjMxNmQ0MGFjNDQxZGYxODlmZWJjZmM0N2I3NzU5MmM4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE1LTA0LTIxICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgT3duUHRyIGFuZCBQYXNzT3duUHRyIHVz
ZSBmcm9tIFdlYktpdC9jZiwgV2ViS2l0L21hYywgYW5kIFdlYktpdDIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mzk0MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvUHJveHlJ
bnN0YW5jZS5oOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUuCisgICAgICAgICogUGx1Z2lucy9X
ZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lmg6IERpdHRvLgorCisgICAgICAgICogUGx1Z2lucy9X
ZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5oOiBVc2UgdW5pcXVlX3B0ciBpbnN0ZWFkIG9m
CisgICAgICAgIFBhc3NPd25QdHIgZm9yIHRoZSBjcmVhdGUgZnVuY3Rpb24uIEFsc28gdHdlYWtl
ZCBmb3JtYXR0aW5nIGFuZCByZW1vdmVkCisgICAgICAgIHVubmVlZGVkIGZvcndhcmQgZGVjbGFy
YXRpb24gb2YgQ0dSZWN0LgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVu
dEhhbmRsZXIubW06CisgICAgICAgIChXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcjo6Y3Jl
YXRlKTogQ2hhbmdlZCB0byB1c2UgdW5pcXVlX3B0ciBhbmQKKyAgICAgICAgbWFrZV91bmlxdWUu
CisKKyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5oOiBVc2UgdW5pcXVl
X3B0ciBpbnN0ZWFkIG9mIE93blB0ciBmb3IKKyAgICAgICAgdGhlIF9ldmVudEhhbmRsZXIgZmll
bGQuCisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAg
ICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBkZXN0cm95UGx1Z2luXSk6IENoYW5nZWQgY29kZSB0
byB3b3JrIHdpdGggdW5pcXVlX3B0ci4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlVz
ZXJNZWRpYUNsaWVudC5tbTogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlLgorCisgICAgICAgICog
V2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbTogQ2hhbmdlZCB0byB1
c2UgbWFrZV91bmlxdWUuCisgICAgICAgICogV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblBy
b3ZpZGVyTW9ja0ludGVybmFsLmg6IENoYW5nZWQgdG8gdXNlIHVuaXF1ZV9wdHIuCisKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAodmVjdG9yRm9yRGljdGF0aW9uUGhy
YXNlc0FycmF5KTogQ2hhbmdlZCB0byByZXR1cm4gVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiBhbmQK
KyAgICAgICAgbm90IGEgUGFzc093blB0ci4gQWxzbyByZXdyb3RlIHRvIGJlIG11Y2ggc2ltcGxl
ciwgYWx0aG91Z2ggdGhlcmUgaXMgc3RpbGwgYQorICAgICAgICBwcmUtZXhpc3RpbmcgcHJvYmxl
bSBoZXJlIHdoZXJlIHRoaXMgY291bGQgcHV0IGVtcHR5IHZlY3RvcnMgaW50byB0aGUgcmVzdWx0
LAorICAgICAgICBhbmQgSSdtIHByZXR0eSBzdXJlIHRoZSBjbGllbnQgbmV2ZXIgZXhwZWN0cyBh
bnkgb2YgdGhlIFZlY3RvcjxTdHJpbmc+IHRvIGJlIGVtcHR5LgorICAgICAgICAoLVtXZWJGcmFt
ZSBfbG9hZERhdGE6TUlNRVR5cGU6dGV4dEVuY29kaW5nTmFtZTpiYXNlVVJMOnVucmVhY2hhYmxl
VVJMOl0pOgorICAgICAgICBSZXdyb3RlIGxvZ2ljIHRvIGludm9sdmUgV2ViQ29yZSB0eXBlcyBh
IGJpdCBsZXNzOyBvbGQgY29kZSB3YXMgcm91bmQgdHJpcHBpbmcKKyAgICAgICAgdGhpbmdzIHRo
cm91Z2ggV2ViQ29yZTo6VVJMIGZvciBubyBvYnZpb3VzIHJlYXNvbi4KKworICAgICAgICAqIFdl
YlZpZXcvV2ViRnJhbWVJbnRlcm5hbC5oOiBDaGFuZ2VkIHZlY3RvckZvckRpY3RhdGlvblBocmFz
ZXNBcnJheSB0byByZXR1cm4KKyAgICAgICAgYSBWZWN0b3I8VmVjdG9yPFN0cmluZz4+IGFuZCBu
b3QgYSBQYXNzT3duUHRyLgorCisgICAgICAgICogV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJv
bGxlci5oOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUuCisKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlZpZXdEYXRhLmg6IENoYW5nZWQgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgdG8gYmUg
YQorICAgICAgICBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci4KKyAgICAgICAgKiBXZWJW
aWV3L1dlYlZpZXdEYXRhLm1tOgorICAgICAgICAoLVtXZWJWaWV3UHJpdmF0ZSBpbml0XSk6IFVz
ZSBtYWtlX3VuaXF1ZSB0byBpbml0aWFsaXplIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVy
LgorCiAyMDE1LTA0LTIwICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAg
ICAgICAgIERpc2FibGUgbWl4ZWQgY29udGVudCBibG9ja2luZyBmb3IgZXhpc3RpbmcgV2ViS2l0
MSBjbGllbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTU2MWJlNjNmNmQ4OWE1ZGYzMGJjNjA3Mzg4NzVjNzIy
ZThiYjI5OS4uMjdjN2RkNTc5ZjJiYzU3MWQ1NDA3NmVkZDg0OWQ4ZGQwODdlMTU1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTA0LTIxICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgT3duUHRyIGFuZCBQYXNzT3duUHRyIHVzZSBmcm9t
IFdlYktpdC9jZiwgV2ViS2l0L21hYywgYW5kIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mzk0MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaDoKKyAgICAgICAg
UmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlLgorCiAyMDE1LTA0LTIwICBEYW4gQmVybnN0ZWluICA8
bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgRXhwb3NlIG1vcmUgYnVuZGxlIGZvcm0gY2xpZW50
IGZ1bmN0aW9ucyBhcyBXS1dlYlByb2Nlc3NQbHVnSW5Gb3JtRGVsZWdhdGVQcml2YXRlIG1ldGhv
ZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA3MTBhYTM5N2VjZTVlMWU5Y2UwNWM5
NzRiZTBmYzY2M2UyNWI4NTg4Li43MzkxYzYwNjhkZTE3YzI0N2U2ZWU2MTg0YmRmMmI4OTkwOTY5
N2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zODgsNiArMzg4LDcgQEAgdm9p
ZCBFZGl0b3I6OmNsZWFyVGV4dCgpCiB9CiAKICNpZiBQTEFURk9STShJT1MpCisKIHZvaWQgRWRp
dG9yOjppbnNlcnREaWN0YXRpb25QaHJhc2VzKFBhc3NPd25QdHI8VmVjdG9yPFZlY3RvcjxTdHJp
bmc+ID4gPiBkaWN0YXRpb25QaHJhc2VzLCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhKQogewogICAg
IGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpKQpAQCAtMzk5LDcgKzQwMCw3IEBAIHZv
aWQgRWRpdG9yOjppbnNlcnREaWN0YXRpb25QaHJhc2VzKFBhc3NPd25QdHI8VmVjdG9yPFZlY3Rv
cjxTdHJpbmc+ID4gPiBkaWN0YXRpCiAgICAgYXBwbHlDb21tYW5kKERpY3RhdGlvbkNvbW1hbmRJ
T1M6OmNyZWF0ZShkb2N1bWVudCgpLCBkaWN0YXRpb25QaHJhc2VzLCBtZXRhZGF0YSkpOwogfQog
Ci12b2lkIEVkaXRvcjo6c2V0RGljdGF0aW9uUGhyYXNlc0FzQ2hpbGRPZkVsZW1lbnQoUGFzc093
blB0cjxWZWN0b3I8VmVjdG9yPFN0cmluZz4gPiA+IGRpY3RhdGlvblBocmFzZXMsIFJldGFpblB0
cjxpZD4gbWV0YWRhdGEsIEVsZW1lbnQqIGVsZW1lbnQpCit2b2lkIEVkaXRvcjo6c2V0RGljdGF0
aW9uUGhyYXNlc0FzQ2hpbGRPZkVsZW1lbnQoY29uc3QgVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiYg
ZGljdGF0aW9uUGhyYXNlcywgUmV0YWluUHRyPGlkPiBtZXRhZGF0YSwgRWxlbWVudCYgZWxlbWVu
dCkKIHsKICAgICAvLyBDbGVhciB0aGUgY29tcG9zaXRpb24uCiAgICAgY2xlYXIoKTsKQEAgLTQx
MCw1NCArNDExLDUwIEBAIHZvaWQgRWRpdG9yOjpzZXREaWN0YXRpb25QaHJhc2VzQXNDaGlsZE9m
RWxlbWVudChQYXNzT3duUHRyPFZlY3RvcjxWZWN0b3I8U3RyaW5nCiAgICAgCiAgICAgbV9mcmFt
ZS5zZWxlY3Rpb24oKS5jbGVhcigpOwogICAgIAotICAgIGVsZW1lbnQtPnJlbW92ZUNoaWxkcmVu
KCk7CisgICAgZWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAgIAotICAgIGlmIChkaWN0YXRp
b25QaHJhc2VzLT5pc0VtcHR5KCkpIHsKKyAgICBpZiAoZGljdGF0aW9uUGhyYXNlcy5pc0VtcHR5
KCkpIHsKICAgICAgICAgY2xpZW50KCktPnJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWM7ICAgIAogICAg
IFJlZlB0cjxSYW5nZT4gY29udGV4dCA9IGRvY3VtZW50KCkuY3JlYXRlUmFuZ2UoKTsKLSAgICBj
b250ZXh0LT5zZWxlY3ROb2RlQ29udGVudHMoZWxlbWVudCwgZWMpOwotICAgIAorICAgIGNvbnRl
eHQtPnNlbGVjdE5vZGVDb250ZW50cygmZWxlbWVudCwgZWMpOworCiAgICAgU3RyaW5nQnVpbGRl
ciBkaWN0YXRpb25QaHJhc2VzQnVpbGRlcjsKLSAgICBzaXplX3QgZGljdGF0aW9uUGhyYXNlQ291
bnQgPSBkaWN0YXRpb25QaHJhc2VzLT5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBkaWN0YXRpb25QaHJhc2VDb3VudDsgaSsrKSB7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgZmly
c3RJbnRlcnByZXRhdGlvbiA9IGRpY3RhdGlvblBocmFzZXMtPmF0KGkpWzBdOwotICAgICAgICBk
aWN0YXRpb25QaHJhc2VzQnVpbGRlci5hcHBlbmQoZmlyc3RJbnRlcnByZXRhdGlvbik7Ci0gICAg
fQotICAgIFN0cmluZyBzZXJpYWxpemVkRGljdGF0aW9uUGhyYXNlcyA9IGRpY3RhdGlvblBocmFz
ZXNCdWlsZGVyLnRvU3RyaW5nKCk7Ci0gICAgCi0gICAgZWxlbWVudC0+YXBwZW5kQ2hpbGQoY3Jl
YXRlRnJhZ21lbnRGcm9tVGV4dCgqY29udGV4dC5nZXQoKSwgc2VyaWFsaXplZERpY3RhdGlvblBo
cmFzZXMpLCBlYyk7Ci0gICAgCisgICAgZm9yIChhdXRvJiBpbnRlcnByZXRhdGlvbnMgOiBkaWN0
YXRpb25QaHJhc2VzKQorICAgICAgICBkaWN0YXRpb25QaHJhc2VzQnVpbGRlci5hcHBlbmQoaW50
ZXJwcmV0YXRpb25zWzBdKTsKKworICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQoY3JlYXRlRnJhZ21l
bnRGcm9tVGV4dCgqY29udGV4dCwgZGljdGF0aW9uUGhyYXNlc0J1aWxkZXIudG9TdHJpbmcoKSks
IGVjKTsKKwogICAgIC8vIFdlIG5lZWQgYSBsYXlvdXQgaW4gb3JkZXIgdG8gYWRkIG1hcmtlcnMg
YmVsb3cuCiAgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXQoKTsKLSAgICAKLSAgICBpZiAoIWVs
ZW1lbnQtPmZpcnN0Q2hpbGQoKS0+aXNUZXh0Tm9kZSgpKSB7CisKKyAgICBpZiAoIWVsZW1lbnQu
Zmlyc3RDaGlsZCgpLT5pc1RleHROb2RlKCkpIHsKICAgICAgICAgLy8gU2hvdWxkbid0IGhhcHBl
bi4KLSAgICAgICAgQVNTRVJUKGVsZW1lbnQtPmZpcnN0Q2hpbGQoKS0+aXNUZXh0Tm9kZSgpKTsK
KyAgICAgICAgQVNTRVJUKGVsZW1lbnQuZmlyc3RDaGlsZCgpLT5pc1RleHROb2RlKCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgICAgICAKLSAgICBUZXh0KiB0ZXh0Tm9kZSA9IHN0YXRp
Y19jYXN0PFRleHQqPihlbGVtZW50LT5maXJzdENoaWxkKCkpOworCisgICAgVGV4dCYgdGV4dE5v
ZGUgPSBkb3duY2FzdDxUZXh0PigqZWxlbWVudC5maXJzdENoaWxkKCkpOwogICAgIGludCBwcmV2
aW91c0RpY3RhdGlvblBocmFzZVN0YXJ0ID0gMDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGRpY3RhdGlvblBocmFzZUNvdW50OyBpKyspIHsKLSAgICAgICAgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGludGVycHJldGF0aW9ucyA9IGRpY3RhdGlvblBocmFzZXMtPmF0KGkpOworICAgIGZvciAo
YXV0byYgaW50ZXJwcmV0YXRpb25zIDogZGljdGF0aW9uUGhyYXNlcykgewogICAgICAgICBpbnQg
ZGljdGF0aW9uUGhyYXNlTGVuZ3RoID0gaW50ZXJwcmV0YXRpb25zWzBdLmxlbmd0aCgpOwogICAg
ICAgICBpbnQgZGljdGF0aW9uUGhyYXNlRW5kID0gcHJldmlvdXNEaWN0YXRpb25QaHJhc2VTdGFy
dCArIGRpY3RhdGlvblBocmFzZUxlbmd0aDsKICAgICAgICAgaWYgKGludGVycHJldGF0aW9ucy5z
aXplKCkgPiAxKSB7Ci0gICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IGRpY3RhdGlvblBocmFzZVJh
bmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCB0ZXh0Tm9kZSwgcHJldmlvdXNEaWN0YXRp
b25QaHJhc2VTdGFydCwgdGV4dE5vZGUsIGRpY3RhdGlvblBocmFzZUVuZCk7Ci0gICAgICAgICAg
ICBkb2N1bWVudCgpLm1hcmtlcnMoKS5hZGREaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVz
TWFya2VyKGRpY3RhdGlvblBocmFzZVJhbmdlLmdldCgpLCBpbnRlcnByZXRhdGlvbnMpOworICAg
ICAgICAgICAgYXV0byBkaWN0YXRpb25QaHJhc2VSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1l
bnQoKSwgJnRleHROb2RlLCBwcmV2aW91c0RpY3RhdGlvblBocmFzZVN0YXJ0LCAmdGV4dE5vZGUs
IGRpY3RhdGlvblBocmFzZUVuZCk7CisgICAgICAgICAgICBkb2N1bWVudCgpLm1hcmtlcnMoKS5h
ZGREaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzTWFya2VyKGRpY3RhdGlvblBocmFzZVJh
bmdlLnB0cigpLCBpbnRlcnByZXRhdGlvbnMpOwogICAgICAgICB9CiAgICAgICAgIHByZXZpb3Vz
RGljdGF0aW9uUGhyYXNlU3RhcnQgPSBkaWN0YXRpb25QaHJhc2VFbmQ7CiAgICAgfQotICAgIAot
ICAgIFJlZlB0cjxSYW5nZT4gcmVzdWx0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCks
IHRleHROb2RlLCAwLCB0ZXh0Tm9kZSwgdGV4dE5vZGUtPmxlbmd0aCgpKTsKLSAgICBkb2N1bWVu
dCgpLm1hcmtlcnMoKS5hZGREaWN0YXRpb25SZXN1bHRNYXJrZXIocmVzdWx0UmFuZ2UuZ2V0KCks
IG1ldGFkYXRhKTsKLSAgICAKKworICAgIGF1dG8gcmVzdWx0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGRvY3VtZW50KCksICZ0ZXh0Tm9kZSwgMCwgJnRleHROb2RlLCB0ZXh0Tm9kZS5sZW5ndGgoKSk7
CisgICAgZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkRGljdGF0aW9uUmVzdWx0TWFya2VyKHJlc3Vs
dFJhbmdlLnB0cigpLCBtZXRhZGF0YSk7CisKICAgICBjbGllbnQoKS0+cmVzcG9uZFRvQ2hhbmdl
ZENvbnRlbnRzKCk7CiB9CisKICNlbmRpZgogCiB2b2lkIEVkaXRvcjo6cGFzdGVBc1BsYWluVGV4
dChjb25zdCBTdHJpbmcmIHBhc3RpbmdUZXh0LCBib29sIHNtYXJ0UmVwbGFjZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5oCmluZGV4IDc5MmJjNDZhNjM2NTNkZGYxNTc5ZDg3OThiOWVkOTgwMjlkNTgw
NzguLmY5YzU0YThkMjhhYWVkYzY1MGQzMmI0Mzg4NWM1NzI1NmZlMjBhMzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaApAQCAtMzMwLDcgKzMzMCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFRleHRBc0NoaWxkT2ZFbGVtZW50KGNvbnN0IFN0cmluZyYsIEVsZW1lbnQq
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFz
ZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBpbnNlcnREaWN0YXRpb25QaHJhc2VzKFBhc3NPd25QdHI8VmVjdG9yPFZlY3RvcjxTdHJp
bmc+ID4gPiBkaWN0YXRpb25QaHJhc2VzLCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldERpY3RhdGlvblBocmFzZXNBc0NoaWxkT2ZFbGVtZW50KFBh
c3NPd25QdHI8VmVjdG9yPFZlY3RvcjxTdHJpbmc+ID4gPiBkaWN0YXRpb25QaHJhc2VzLCBSZXRh
aW5QdHI8aWQ+IG1ldGFkYXRhLCBFbGVtZW50KiBlbGVtZW50KTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldERpY3RhdGlvblBocmFzZXNBc0NoaWxkT2ZFbGVtZW50KGNvbnN0IFZlY3RvcjxW
ZWN0b3I8U3RyaW5nPj4mIGRpY3RhdGlvblBocmFzZXMsIFJldGFpblB0cjxpZD4gbWV0YWRhdGEs
IEVsZW1lbnQmKTsKICNlbmRpZgogICAgIAogICAgIHZvaWQgYWRkVG9LaWxsUmluZyhSYW5nZSos
IGJvb2wgcHJlcGVuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2lvcy9RdWlja0xvb2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9z
L1F1aWNrTG9vay5oCmluZGV4IGY1NzYyZjBhMTViYzM1ZTY2Y2JhMDE1NDkxYjc4MDE2ZjhjODVi
YzYuLmE5ZWY3Y2M0N2EwNmM4MDdmMTcxYTQwNTA5ZjljOGJjMTBmZDQ4MjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5oCkBAIC00MSw2ICs0
MSw3IEBAIE9CSkNfQ0xBU1MgTlNTZXQ7CiBPQkpDX0NMQVNTIE5TU3RyaW5nOwogT0JKQ19DTEFT
UyBOU1VSTDsKIE9CSkNfQ0xBU1MgTlNVUkxDb25uZWN0aW9uOworT0JKQ19DTEFTUyBOU1VSTFJl
cXVlc3Q7CiBPQkpDX0NMQVNTIE5TVVJMUmVzcG9uc2U7CiBPQkpDX0NMQVNTIFFMUHJldmlld0Nv
bnZlcnRlcjsKIApAQCAtNzIsNyArNzMsNyBAQCBXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqcWxQ
cmV2aWV3Q29udmVydGVyRmlsZU5hbWVGb3JVUkwoTlNVUkwgKik7CiBXRUJDT1JFX0VYUE9SVCBO
U1N0cmluZyAqcWxQcmV2aWV3Q29udmVydGVyVVRJRm9yVVJMKE5TVVJMICopOwogV0VCQ09SRV9F
WFBPUlQgdm9pZCByZW1vdmVRTFByZXZpZXdDb252ZXJ0ZXJGb3JVUkwoTlNVUkwgKik7CiAKLVdF
QkNPUkVfRVhQT1JUIFBhc3NPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiByZWdpc3RlclFMUHJldmll
d0NvbnZlcnRlcklmTmVlZGVkKE5TVVJMICosIE5TU3RyaW5nICptaW1lVHlwZSwgTlNEYXRhICop
OworV0VCQ09SRV9FWFBPUlQgTlNVUkxSZXF1ZXN0ICpyZWdpc3RlclFMUHJldmlld0NvbnZlcnRl
cklmTmVlZGVkKE5TVVJMICosIE5TU3RyaW5nICptaW1lVHlwZSwgTlNEYXRhICopOwogCiBjb25z
dCBVUkwgc2FmZVFMVVJMRm9yRG9jdW1lbnRVUkxBbmRSZXNvdXJjZVVSTChjb25zdCBVUkwmIGRv
Y3VtZW50VVJMLCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCmluZGV4IGVlOTA0OTFjYjlh
NThhYjU0NDlkNWExOTljNWJiMzVjNTllNDM3ZTIuLmU0MDYxMWMxNTc4MWYzN2RmN2IzYjA5MjE2
ZDY2Y2JmNDQzODQ2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvaW9zL1F1aWNrTG9vay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2lvcy9RdWlja0xvb2subW0KQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFdlYkNvcmU6OnJlbW92
ZVFMUHJldmlld0NvbnZlcnRlckZvclVSTChOU1VSTCAqdXJsKQogICAgIFtRTENvbnRlbnREaWN0
aW9uYXJ5KCkgcmVtb3ZlT2JqZWN0Rm9yS2V5OnVybF07CiB9CiAKLVBhc3NPd25QdHI8UmVzb3Vy
Y2VSZXF1ZXN0PiBXZWJDb3JlOjpyZWdpc3RlclFMUHJldmlld0NvbnZlcnRlcklmTmVlZGVkKE5T
VVJMICp1cmwsIE5TU3RyaW5nICptaW1lVHlwZSwgTlNEYXRhICpkYXRhKQorTlNVUkxSZXF1ZXN0
ICpXZWJDb3JlOjpyZWdpc3RlclFMUHJldmlld0NvbnZlcnRlcklmTmVlZGVkKE5TVVJMICp1cmws
IE5TU3RyaW5nICptaW1lVHlwZSwgTlNEYXRhICpkYXRhKQogewogICAgIFJldGFpblB0cjxOU1N0
cmluZz4gdXBkYXRlZE1JTUVUeXBlID0gYWRvcHROUyhXZWJDb3JlOjpRTFR5cGVDb3B5QmVzdE1p
bWVUeXBlRm9yVVJMQW5kTWltZVR5cGUodXJsLCBtaW1lVHlwZSkpOwogCkBAIC0yMDIsMTAgKzIw
MiwxMCBAQCBQYXNzT3duUHRyPFJlc291cmNlUmVxdWVzdD4gV2ViQ29yZTo6cmVnaXN0ZXJRTFBy
ZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZChOU1VSTCAqdQogICAgICAgICAvLyB0aGUgVVJMIHRoYXQg
dGhlIFdlYkRhdGFTb3VyY2Ugd2lsbCBzZWUgZHVyaW5nIC1kZWFsbG9jLgogICAgICAgICBhZGRR
TFByZXZpZXdDb252ZXJ0ZXJXaXRoRmlsZUZvclVSTChbcmVxdWVzdCBVUkxdLCBjb252ZXJ0ZXIu
Z2V0KCksIG5pbCk7CiAKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBSZXNvdXJjZVJlcXVl
c3QocmVxdWVzdCkpOworICAgICAgICByZXR1cm4gcmVxdWVzdDsKICAgICB9CiAKLSAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbmlsOwogfQogCiBjb25zdCBVUkwgV2ViQ29yZTo6c2Fm
ZVFMVVJMRm9yRG9jdW1lbnRVUkxBbmRSZXNvdXJjZVVSTChjb25zdCBVUkwmIGRvY3VtZW50VVJM
LCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
Zi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAppbmRleCAwNGZlNzMz
MjMyOWRmNDhkODlmYTJiMzUyMmFmYmNkZjdiN2IxMmU0Li4zYmFiMjU2NmI1NzY2MjQ2NjgxZWM5
MGRkYjM4ODk1NmJkMjE2MjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2NmL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcApAQCAtNTQsNyArNTQsNiBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUGFnZS5oPgogCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1
Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9I
b3N0ZWQvUHJveHlJbnN0YW5jZS5oCmluZGV4IDA4MGY5ZTEzMmM5MzQwN2VhZjQ1N2FmZGI2NDFl
M2Y0ZTM5M2Y2MDYuLjEzZTMyYmE2MjBlMzUwN2UwNDJhOTBlODE3NDQzZDkzYWY2M2I2MDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLmgK
QEAgLTMyLDcgKzMyLDYgQEAKICNpbXBvcnQgIldlYktpdFBsdWdpbkhvc3RUeXBlcy5oIgogI2lt
cG9ydCA8V2ViQ29yZS9CcmlkZ2VKU0MuaD4KICNpbXBvcnQgPFdlYkNvcmUvcnVudGltZV9yb290
Lmg+Ci0jaW1wb3J0IDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZp
ZXcuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmll
dy5oCmluZGV4IDRmNGNkNTNjNWJhYzA2NzgxOWU5NTA5YTQ0ODdiNDNmNzEyNWY0YTcuLmY0ZDhm
YWI4MWE3NzIzZmQ2Y2VjZmJlMDQ4MTQ3ZGZiOGY5ZTUwZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oCkBAIC0zMiw3
ICszMiw2IEBACiAjaW1wb3J0ICJXZWJOZXRzY2FwZVBsdWdpblBhY2thZ2UuaCIKICNpbXBvcnQg
IldlYlBsdWdpbkNvbnRhaW5lckNoZWNrLmgiCiAjaW1wb3J0IDx3dGYvRm9yd2FyZC5oPgotI2lt
cG9ydCA8d3RmL093blB0ci5oPgogI2ltcG9ydCA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbXBvcnQg
PHd0Zi9SZWZQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIuaCBi
L1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIu
aAppbmRleCA5ZTMyZTJmYmZiMzZhZWNiMDA5Yzk4MzE3YjBkODcwZDU1MjA0YWI0Li4xNGI0MWJj
ZmFhOWRkNjc4YzAwOGI4YTYxZWFhMzNiZWJlNzVjYzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5oCkBA
IC0zMywyNiArMzMsMjQgQEAKIEBjbGFzcyBOU0V2ZW50OwogQGNsYXNzIFdlYk5ldHNjYXBlUGx1
Z2luVmlldzsKIAotc3RydWN0IENHUmVjdDsKLQogY2xhc3MgV2ViTmV0c2NhcGVQbHVnaW5FdmVu
dEhhbmRsZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYk5ldHNjYXBlUGx1
Z2luRXZlbnRIYW5kbGVyPiBjcmVhdGUoV2ViTmV0c2NhcGVQbHVnaW5WaWV3Kik7CisgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcj4gY3JlYXRl
KFdlYk5ldHNjYXBlUGx1Z2luVmlldyAqKTsKICAgICB2aXJ0dWFsIH5XZWJOZXRzY2FwZVBsdWdp
bkV2ZW50SGFuZGxlcigpIHsgfQogICAgIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChDR0Nv
bnRleHRSZWYsIGNvbnN0IE5TUmVjdCYpID0gMDsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgbW91
c2VEb3duKE5TRXZlbnQqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIG1vdXNlRHJhZ2dlZChOU0V2
ZW50KikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBtb3VzZUVudGVyZWQoTlNFdmVudCopID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgbW91c2VFeGl0ZWQoTlNFdmVudCopID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgbW91c2VNb3ZlZChOU0V2ZW50KikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBtb3VzZVVw
KE5TRXZlbnQqKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHNjcm9sbFdoZWVsKE5TRXZlbnQqKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIG1vdXNlRG93bihOU0V2ZW50ICopID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgbW91c2VEcmFnZ2VkKE5TRXZlbnQgKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBt
b3VzZUVudGVyZWQoTlNFdmVudCAqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG1vdXNlRXhpdGVk
KE5TRXZlbnQgKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtb3VzZU1vdmVkKE5TRXZlbnQgKikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBtb3VzZVVwKE5TRXZlbnQgKikgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBzY3JvbGxXaGVlbChOU0V2ZW50ICopID0gMDsKICAgICAKLSAgICB2aXJ0dWFsIHZv
aWQga2V5RG93bihOU0V2ZW50KikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBrZXlVcChOU0V2ZW50
KikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBmbGFnc0NoYW5nZWQoTlNFdmVudCopID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQga2V5RG93bihOU0V2ZW50ICopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
a2V5VXAoTlNFdmVudCAqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZsYWdzQ2hhbmdlZChOU0V2
ZW50ICopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3ludGhldGljS2V5RG93bldpdGhDb21tYW5k
TW9kaWZpZXIoaW50IGtleUNvZGUsIGNoYXIgY2hhcmFjdGVyKSA9IDA7CiAgICAgCiAgICAgdmly
dHVhbCB2b2lkIGZvY3VzQ2hhbmdlZChib29sIGhhc0ZvY3VzKSA9IDA7CkBAIC02MiwxNyArNjAs
MTggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdG9wVGltZXJzKCkgeyB9CiAgICAgCiAg
ICAgLy8gUmV0dXJucyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgd2luZG93IHVzZWQgaW4gTlBQX1Nl
dFdpbmRvdwotICAgIHZpcnR1YWwgdm9pZCogcGxhdGZvcm1XaW5kb3coTlNXaW5kb3cqKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkKiBwbGF0Zm9ybVdpbmRvdyhOU1dpbmRvdyAqKSA9IDA7CiAgICAg
CiAgICAgYm9vbCBjdXJyZW50RXZlbnRJc1VzZXJHZXN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9j
dXJyZW50RXZlbnRJc1VzZXJHZXN0dXJlOyB9CisKIHByb3RlY3RlZDoKLSAgICBXZWJOZXRzY2Fw
ZVBsdWdpbkV2ZW50SGFuZGxlcihXZWJOZXRzY2FwZVBsdWdpblZpZXcqIHBsdWdpblZpZXcpCisg
ICAgZXhwbGljaXQgV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIoV2ViTmV0c2NhcGVQbHVn
aW5WaWV3ICpwbHVnaW5WaWV3KQogICAgICAgICA6IG1fcGx1Z2luVmlldyhwbHVnaW5WaWV3KQog
ICAgICAgICAsIG1fY3VycmVudEV2ZW50SXNVc2VyR2VzdHVyZShmYWxzZSkKICAgICB7CiAgICAg
fQogICAgIAotICAgIFdlYk5ldHNjYXBlUGx1Z2luVmlldyogbV9wbHVnaW5WaWV3OworICAgIFdl
Yk5ldHNjYXBlUGx1Z2luVmlldyAqbV9wbHVnaW5WaWV3OwogICAgIGJvb2wgbV9jdXJyZW50RXZl
bnRJc1VzZXJHZXN0dXJlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1
Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIubW0KaW5kZXggOWMyZGM1MDVl
M2ZlZDMyZDY0MTAxZjIxNTE4YzZlZThhMzgwODY5YS4uN2RmOGU4NzQyZjVhNTMwZjhjYTMzNDc3
MGIzZjA5OTNlMmZhNTRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9X
ZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9Q
bHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLm1tCkBAIC0yOCwyMCArMjgsMTkg
QEAKICNpbXBvcnQgIldlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLmgiCiAKICNpbXBvcnQg
PHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW1wb3J0IDx3dGYvUGFzc093blB0ci5oPgogI2ltcG9ydCAi
V2ViTmV0c2NhcGVQbHVnaW5WaWV3LmgiCiAjaW1wb3J0ICJXZWJOZXRzY2FwZVBsdWdpbkV2ZW50
SGFuZGxlckNhcmJvbi5oIgogI2ltcG9ydCAiV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJD
b2NvYS5oIgogCi1QYXNzT3duUHRyPFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyPiBXZWJO
ZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcjo6Y3JlYXRlKFdlYk5ldHNjYXBlUGx1Z2luVmlldyog
cGx1Z2luVmlldykKK3N0ZDo6dW5pcXVlX3B0cjxXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxl
cj4gV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXI6OmNyZWF0ZShXZWJOZXRzY2FwZVBsdWdp
blZpZXcgKnBsdWdpblZpZXcpCiB7CiAgICAgc3dpdGNoIChbcGx1Z2luVmlldyBldmVudE1vZGVs
XSkgewogI2lmbmRlZiBOUF9OT19DQVJCT04KICAgICAgICAgY2FzZSBOUEV2ZW50TW9kZWxDYXJi
b246Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYk5ldHNjYXBlUGx1Z2luRXZl
bnRIYW5kbGVyQ2FyYm9uKHBsdWdpblZpZXcpKTsKLSNlbmRpZiAvLyBOUF9OT19DQVJCT04KKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRI
YW5kbGVyQ2FyYm9uPihwbHVnaW5WaWV3KTsKKyNlbmRpZgogICAgICAgICBjYXNlIE5QRXZlbnRN
b2RlbENvY29hOgotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJOZXRzY2FwZVBs
dWdpbkV2ZW50SGFuZGxlckNvY29hKHBsdWdpblZpZXcpKTsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2E+KHBsdWdp
blZpZXcpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L21h
Yy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5oCmluZGV4IGExNGEzZmY1NjFhMWRkN2Nh
YjJiNjcyYjJiYmI4YjdhNjVjZDgwNzYuLjc4M2YzM2YxNzY5MjYwYmEwMGZiZTY0OGU0ZjMxN2I3
YmRkOTZjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2Nh
cGVQbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2Fw
ZVBsdWdpblZpZXcuaApAQCAtMjksMTggKzI5LDEzIEBACiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BM
VUdJTl9BUEkpCiAKICNpbXBvcnQgIldlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaCIKLQogI2lt
cG9ydCAiV2ViTmV0c2NhcGVDb250YWluZXJDaGVja1ByaXZhdGUuaCIKICNpbXBvcnQgPFdlYktp
dExlZ2FjeS9ucGZ1bmN0aW9ucy5oPgogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L25wYXBpLmg+CiAj
aW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KLSNpbXBvcnQg
PHd0Zi9Pd25QdHIuaD4KIAotQGNsYXNzIFdlYkRhdGFTb3VyY2U7Ci1AY2xhc3MgV2ViRnJhbWU7
CiBAY2xhc3MgV2ViTmV0c2NhcGVQbHVnaW5QYWNrYWdlOwotQGNsYXNzIFdlYlZpZXc7CiAKIGNs
YXNzIFBsdWdpblRpbWVyOwogY2xhc3MgV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW07CkBAIC04Myw3
ICs3OCw3IEBAIHR5cGVkZWYgdW5pb24gUGx1Z2luUG9ydCB7CiAgICAgR1dvcmxkUHRyIG9mZnNj
cmVlbkdXb3JsZDsKICNlbmRpZgogCi0gICAgT3duUHRyPFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRI
YW5kbGVyPiBfZXZlbnRIYW5kbGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJOZXRzY2FwZVBs
dWdpbkV2ZW50SGFuZGxlcj4gX2V2ZW50SGFuZGxlcjsKICAgICAKICAgICBCT09MIGluU2V0V2lu
ZG93OwogICAgIEJPT0wgc2hvdWxkU3RvcFNvb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDM5MTE4MDAyMDIxNmUyYWRk
ZjgyMDcyODAyMmZmZjI1NmU4ZWJiYWUuLjk1YWFiOTk0MGM3YTkxYTIxOWJhYzhkNGZkODNmZDg5
Njg2MDgwMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2Nh
cGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2Nh
cGVQbHVnaW5WaWV3Lm1tCkBAIC0xMTg3LDEyICsxMTg3LDEyIEBAIC0gKHZvaWQpZGVzdHJveVBs
dWdpbgogICAgIC8vIFNldHRpbmcgdGhlIHdpbmRvdyB0eXBlIHRvIDAgZW5zdXJlcyB0aGF0IE5Q
UF9TZXRXaW5kb3cgd2lsbCBiZSBjYWxsZWQgaWYgdGhlIHBsdWctaW4gaXMgcmVzdGFydGVkLgog
ICAgIGxhc3RTZXRXaW5kb3cudHlwZSA9IChOUFdpbmRvd1R5cGUpMDsKICAgICAKLSAgICBfcGx1
Z2luTGF5ZXIgPSAwOworICAgIF9wbHVnaW5MYXllciA9IG5pbDsKICAgICAKICAgICBbc2VsZiBf
ZGVzdHJveVBsdWdpbl07CiAgICAgW19wbHVnaW5QYWNrYWdlLmdldCgpIGNsb3NlXTsKICAgICAK
LSAgICBfZXZlbnRIYW5kbGVyLmNsZWFyKCk7CisgICAgX2V2ZW50SGFuZGxlciA9IG51bGxwdHI7
CiB9CiAKIC0gKE5QRXZlbnRNb2RlbClldmVudE1vZGVsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQubW0KaW5kZXggMWE2NDQw
ZDk1ZmEzYWRiNGYyZDk1NzAwZDBiOTFkYWRkN2E4YWRiYS4uYWVkZDg1M2JkM2RhN2ZhODY3ZjYy
NGRlZDA3MWYzOTVhOTEyNTE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5tbQpAQCAtMzYsNyArMzYsNiBAQAogI2lt
cG9ydCA8V2ViQ29yZS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1VzZXJNZWRpYVJlcXVlc3QuaD4KICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+Ci0jaW1wb3J0IDx3
dGYvUGFzc093blB0ci5oPgogI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgogI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRl
dmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbQppbmRleCBlYTE2ZjM1MmNiMGFj
MWFhYjRkYWUwYzk5NzBiOGRlMzk2NmIwYWMxLi4yNDVkMjE4MGM4OWYwMWFjOWY5YTkwZjRiMzVm
N2Q4NjVjOGVjMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRl
dmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW0KQEAgLTI2LDcgKzI2LDYg
QEAKICNpbXBvcnQgIldlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwuaCIK
IAogI2ltcG9ydCAiV2ViRGV2aWNlT3JpZW50YXRpb25JbnRlcm5hbC5oIgotI2ltcG9ydCA8d3Rm
L1Bhc3NPd25QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTM3LDcgKzM2
LDcgQEAgLSAoaWQpaW5pdAogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxm
KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIG1fY29yZSA9IGFkb3B0UHRyKG5ldyBEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2soKSk7CisgICAgbV9jb3JlID0gc3RkOjptYWtlX3VuaXF1ZTxE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s+KCk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Q
cm92aWRlck1vY2tJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZp
Y2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsLmgKaW5kZXggNWFjMzhlNWM3ZjJiZDA4
MWI5YzlkYWQ1NjIwNjg0NzFmY2RlZDkxOS4uYjA2YjJjMWZjN2QwNmIwYjliOGM5YzY2MjQyM2Y4
NjZmNDI4YTQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZp
Y2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsLmgKQEAg
LTI0LDEyICsyNCwxMCBAQAogICovCiAKICNpbXBvcnQgIldlYkRldmljZU9yaWVudGF0aW9uUHJv
dmlkZXJNb2NrLmgiCi0KICNpbXBvcnQgPFdlYkNvcmUvRGV2aWNlT3JpZW50YXRpb25DbGllbnRN
b2NrLmg+Ci0jaW1wb3J0IDx3dGYvT3duUHRyLmg+CiAKIEBpbnRlcmZhY2UgV2ViRGV2aWNlT3Jp
ZW50YXRpb25Qcm92aWRlck1vY2tJbnRlcm5hbCA6IE5TT2JqZWN0IHsKLSAgICBPd25QdHI8V2Vi
Q29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrPiBtX2NvcmU7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaz4gbV9jb3JlOwogfQog
CiAtIChpZClpbml0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggMzNh
N2JlM2MxNDI2MmFjZjU1NGJiNGM3ZmMzYTJlY2JkNjM1MzM1OC4uNTI2MGFkOTcyMmMzYWNkMDZl
ZjRkZDY4NDEwZjI3NTZkMzk2ZjhmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tCkBAIC0yNDAsMzcgKzI0MCwyNSBAQCBUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJl
aGF2aW9yIGNvcmUoV2ViVGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25CZWhhdgogfQogCiAj
aWYgUExBVEZPUk0oSU9TKQotUGFzc093blB0cjxWZWN0b3I8VmVjdG9yPFN0cmluZz4+PiB2ZWN0
b3JGb3JEaWN0YXRpb25QaHJhc2VzQXJyYXkoTlNBcnJheSAqZGljdGF0aW9uUGhyYXNlcykKKwor
VmVjdG9yPFZlY3RvcjxTdHJpbmc+PiB2ZWN0b3JGb3JEaWN0YXRpb25QaHJhc2VzQXJyYXkoTlNB
cnJheSAqZGljdGF0aW9uUGhyYXNlcykKIHsKLSAgICBOU1VJbnRlZ2VyIGRpY3RhdGlvblBocmFz
ZXNDb3VudCA9IFtkaWN0YXRpb25QaHJhc2VzIGNvdW50XTsKLSAgICBpZiAoIWRpY3RhdGlvblBo
cmFzZXNDb3VudCkKLSAgICAgICAgcmV0dXJuIFBhc3NPd25QdHI8VmVjdG9yPFZlY3RvcjxTdHJp
bmc+ID4gPigpOwotICAgIAotICAgIE93blB0cjxWZWN0b3I8VmVjdG9yPFN0cmluZz4gPiA+IGRp
Y3RhdGlvblBocmFzZXNWZWN0b3IgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFZlY3RvcjxTdHJpbmc+
ID4oZGljdGF0aW9uUGhyYXNlc0NvdW50KSk7Ci0gICAgCi0gICAgZm9yIChOU1VJbnRlZ2VyIGkg
PSAwOyBpIDwgZGljdGF0aW9uUGhyYXNlc0NvdW50OyBpKyspIHsKLSAgICAgICAgCi0gICAgICAg
IGlkIGRpY3RhdGlvblBocmFzZSA9IFtkaWN0YXRpb25QaHJhc2VzIG9iamVjdEF0SW5kZXg6aV07
CisgICAgVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiByZXN1bHQ7CisKKyAgICBmb3IgKGlkIGRpY3Rh
dGlvblBocmFzZSBpbiBkaWN0YXRpb25QaHJhc2VzKSB7CiAgICAgICAgIGlmICghW2RpY3RhdGlv
blBocmFzZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCiAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgCi0gICAgICAgIE5TQXJyYXkgKmludGVycHJldGF0aW9uc0FycmF5ID0g
KE5TQXJyYXkgKilkaWN0YXRpb25QaHJhc2U7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+JiBpbnRl
cnByZXRhdGlvbnNWZWN0b3IgPSBkaWN0YXRpb25QaHJhc2VzVmVjdG9yLT5hdChpKTsKLSAgICAg
ICAgCi0gICAgICAgIE5TVUludGVnZXIgaW50ZXJwcmV0YXRpb25zQ291bnQgPSBbaW50ZXJwcmV0
YXRpb25zQXJyYXkgY291bnRdOwotICAgICAgICAKLSAgICAgICAgZm9yIChOU1VJbnRlZ2VyIGog
PSAwOyBqIDwgaW50ZXJwcmV0YXRpb25zQ291bnQ7IGorKykgewotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBpZCBpbnRlcnByZXRhdGlvbiA9IFtpbnRlcnByZXRhdGlvbnNBcnJheSBvYmplY3RB
dEluZGV4OmpdOworICAgICAgICByZXN1bHQuYXBwZW5kKFZlY3RvcjxTdHJpbmc+KCkpOworICAg
ICAgICBmb3IgKGlkIGludGVycHJldGF0aW9uIDogKE5TQXJyYXkgKilkaWN0YXRpb25QaHJhc2Up
IHsKICAgICAgICAgICAgIGlmICghW2ludGVycHJldGF0aW9uIGlzS2luZE9mQ2xhc3M6W05TU3Ry
aW5nIGNsYXNzXV0pCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIGludGVycHJldGF0aW9uc1ZlY3Rvci5hcHBlbmQoU3RyaW5nKChOU1N0cmluZyAq
KWludGVycHJldGF0aW9uKSk7CisgICAgICAgICAgICByZXN1bHQubGFzdCgpLmFwcGVuZCgoTlNT
dHJpbmcgKilpbnRlcnByZXRhdGlvbik7CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgcmV0
dXJuIGRpY3RhdGlvblBocmFzZXNWZWN0b3IucmVsZWFzZSgpOworICAgIHJldHVybiByZXN1bHQ7
CiB9CisKICNlbmRpZgogCiBAaW1wbGVtZW50YXRpb24gV2ViRnJhbWUgKFdlYkludGVybmFsKQpA
QCAtMTcwNCwxMSArMTY5MiwxMSBAQCAtICh2b2lkKXNldERpY3RhdGlvblBocmFzZXM6KE5TQXJy
YXkgKilkaWN0YXRpb25QaHJhc2VzIG1ldGFkYXRhOihpZCltZXRhZGF0YSBhcwogICAgIGlmICgh
ZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFdlYkNvcmU6OkZyYW1lICpmcmFt
ZSA9IGNvcmUoc2VsZik7CisgICAgYXV0byogZnJhbWUgPSBjb3JlKHNlbGYpOwogICAgIGlmICgh
ZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0RGlj
dGF0aW9uUGhyYXNlc0FzQ2hpbGRPZkVsZW1lbnQodmVjdG9yRm9yRGljdGF0aW9uUGhyYXNlc0Fy
cmF5KGRpY3RhdGlvblBocmFzZXMpLCBtZXRhZGF0YSwgY29yZShlbGVtZW50KSk7CisgICAgZnJh
bWUtPmVkaXRvcigpLnNldERpY3RhdGlvblBocmFzZXNBc0NoaWxkT2ZFbGVtZW50KHZlY3RvckZv
ckRpY3RhdGlvblBocmFzZXNBcnJheShkaWN0YXRpb25QaHJhc2VzKSwgbWV0YWRhdGEsICpjb3Jl
KGVsZW1lbnQpKTsKIH0KIAogLSAoTlNBcnJheSAqKWludGVycHJldGF0aW9uc0ZvckN1cnJlbnRS
b290CkBAIC0yNTA3LDMzICsyNDk1LDMyIEBAIHN0YXRpYyBOU1VSTCAqY3JlYXRlVW5pcXVlV2Vi
RGF0YVVSTCgpCiAKIC0gKHZvaWQpX2xvYWREYXRhOihOU0RhdGEgKilkYXRhIE1JTUVUeXBlOihO
U1N0cmluZyAqKU1JTUVUeXBlIHRleHRFbmNvZGluZ05hbWU6KE5TU3RyaW5nICopZW5jb2RpbmdO
YW1lIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTCB1bnJlYWNoYWJsZVVSTDooTlNVUkwgKil1bnJl
YWNoYWJsZVVSTAogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oTUFDKQogICAg
IGlmICghcHRocmVhZF9tYWluX25wKCkpCiAgICAgICAgIHJldHVybiBbW3NlbGYgX3dlYmtpdF9p
bnZva2VPbk1haW5UaHJlYWRdIF9sb2FkRGF0YTpkYXRhIE1JTUVUeXBlOk1JTUVUeXBlIHRleHRF
bmNvZGluZ05hbWU6ZW5jb2RpbmdOYW1lIGJhc2VVUkw6YmFzZVVSTCB1bnJlYWNoYWJsZVVSTDp1
bnJlYWNoYWJsZVVSTF07CiAjZW5kaWYKLSAgICAKLSAgICBVUkwgcmVzcG9uc2VVUkw7Ci0gICAg
aWYgKCFiYXNlVVJMKSB7CisKKyAgICBOU1VSTCAqcmVzcG9uc2VVUkwgPSBuaWw7CisgICAgaWYg
KGJhc2VVUkwpCisgICAgICAgIGJhc2VVUkwgPSBbYmFzZVVSTCBhYnNvbHV0ZVVSTF07CisgICAg
ZWxzZSB7CiAgICAgICAgIGJhc2VVUkwgPSBibGFua1VSTCgpOwogICAgICAgICByZXNwb25zZVVS
TCA9IGNyZWF0ZVVuaXF1ZVdlYkRhdGFVUkwoKTsKICAgICB9CiAgICAgCiAjaWYgVVNFKFFVSUNL
X0xPT0spCiAgICAgaWYgKHNob3VsZFVzZVF1aWNrTG9va0Zvck1JTUVUeXBlKE1JTUVUeXBlKSkg
ewotICAgICAgICBVUkwgcWxVUkwgPSByZXNwb25zZVVSTDsKLSAgICAgICAgaWYgKHFsVVJMLmlz
RW1wdHkoKSkKLSAgICAgICAgICAgIHFsVVJMID0gW2Jhc2VVUkwgYWJzb2x1dGVVUkxdOwotICAg
ICAgICBPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBxbFJlcXVlc3QocmVnaXN0ZXJRTFByZXZpZXdD
b252ZXJ0ZXJJZk5lZWRlZCgoTlNVUkwgKilxbFVSTCwgTUlNRVR5cGUsIGRhdGEpKTsKLSAgICAg
ICAgaWYgKHFsUmVxdWVzdCkgewotICAgICAgICAgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+bG9h
ZGVyKCkubG9hZChGcmFtZUxvYWRSZXF1ZXN0KF9wcml2YXRlLT5jb3JlRnJhbWUsICpxbFJlcXVl
c3QpKTsKKyAgICAgICAgTlNVUkwgKnF1aWNrTG9va1VSTCA9IHJlc3BvbnNlVVJMID8gcmVzcG9u
c2VVUkwgOiBiYXNlVVJMOworICAgICAgICBpZiAoYXV0byByZXF1ZXN0ID0gcmVnaXN0ZXJRTFBy
ZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZChxdWlja0xvb2tVUkwsIE1JTUVUeXBlLCBkYXRhKSkgewor
ICAgICAgICAgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+bG9hZGVyKCkubG9hZChGcmFtZUxvYWRS
ZXF1ZXN0KF9wcml2YXRlLT5jb3JlRnJhbWUsIHJlcXVlc3QpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgIH0KLSNlbmRpZiAvLyBVU0UoUVVJQ0tfTE9PSykKKyNlbmRpZgog
Ci0gICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoW2Jhc2VVUkwgYWJzb2x1dGVVUkxdKTsKKyAg
ICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChiYXNlVVJMKTsKIAotI2lmICFQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIGhhY2sgYmVjYXVzZSBNYWlsIGNoZWNrcyBmb3Ig
dGhpcyBwcm9wZXJ0eSB0byBkZXRlY3QgZGF0YSAvIGFyY2hpdmUgbG9hZHMKICAgICBbTlNVUkxQ
cm90b2NvbCBzZXRQcm9wZXJ0eTpAIiIgZm9yS2V5OkAiV2ViRGF0YVJlcXVlc3QiIGluUmVxdWVz
dDooTlNNdXRhYmxlVVJMUmVxdWVzdCAqKXJlcXVlc3QubnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBC
b2R5KV07CiAjZW5kaWYKQEAgLTI1NDMsNyArMjUzMCw2IEBAIC0gKHZvaWQpX2xvYWREYXRhOihO
U0RhdGEgKilkYXRhIE1JTUVUeXBlOihOU1N0cmluZyAqKU1JTUVUeXBlIHRleHRFbmNvZGluZ05h
bWU6CiAgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+bG9hZGVyKCkubG9hZChGcmFtZUxvYWRSZXF1
ZXN0KF9wcml2YXRlLT5jb3JlRnJhbWUsIHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKSk7CiB9CiAK
LQogLSAodm9pZClsb2FkRGF0YTooTlNEYXRhICopZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcgKilN
SU1FVHlwZSB0ZXh0RW5jb2RpbmdOYW1lOihOU1N0cmluZyAqKWVuY29kaW5nTmFtZSBiYXNlVVJM
OihOU1VSTCAqKWJhc2VVUkwKIHsKICAgICBXZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2tSb3Vu
ZFR3bygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZUlu
dGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwuaApp
bmRleCAwYWFmYjFkNmMwOTNlZjA0MzI5OWY3OWY0ZWE4ZTBhZTZjZmYzYmRkLi41ZWY0N2Y2Mjky
MWRlOWMxMTVhZDcyMjgxMmNiOGNhZjQ2NTBlNjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwuaApAQCAtNzMsNyArNzMsNyBAQCBXZWJDb3JlOjpFZGl0
YWJsZUxpbmtCZWhhdmlvciBjb3JlKFdlYktpdEVkaXRhYmxlTGlua0JlaGF2aW9yKTsKIFdlYkNv
cmU6OlRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3IgY29yZShXZWJUZXh0RGly
ZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yKTsKIAogI2lmIGRlZmluZWQoX19jcGx1c3Bs
dXMpICYmIFBMQVRGT1JNKElPUykKLVBhc3NPd25QdHI8VmVjdG9yPFZlY3RvcjxTdHJpbmc+Pj4g
dmVjdG9yRm9yRGljdGF0aW9uUGhyYXNlc0FycmF5KE5TQXJyYXkgKik7CitWZWN0b3I8VmVjdG9y
PFN0cmluZz4+IHZlY3RvckZvckRpY3RhdGlvblBocmFzZXNBcnJheShOU0FycmF5ICopOwogI2Vu
ZGlmCiAKIFdlYlZpZXcgKmdldFdlYlZpZXcoV2ViRnJhbWUgKndlYkZyYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIuaAppbmRl
eCAyNWIwZWI1YjdlMTAyZjJkOTM2YjRjNjhhNjJjZDE3Y2Y0OGRlMTVlLi5jZDUzYmE2OTE3ZmZm
NTA2YTljNTRhNGNmNzk4YWYwZTMwNzAwZTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5oCkBAIC0yNiw3ICsyNiw2IEBACiAj
aWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiAhUExBVEZPUk0oSU9TKQogCiAjaW1wb3J0IDxX
ZWJDb3JlL0ludFBvaW50Lmg+Ci0jaW1wb3J0IDx3dGYvT3duUHRyLmg+CiAjaW1wb3J0IDx3dGYv
UmVmUHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlld0RhdGEuaAppbmRleCA2YWU5OWJjMWQ1NDQ0MGQ3ODRmNGQ5ODU2NDJkOGE4
N2M1MDNkYjkxLi45ZjFkMWFiMTE0YWYwN2JjMWVhNDkxZmRiYzZlZTQ1ZmYxNGM1ZTViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKKysrIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCkBAIC0zNCw3ICszNCw2IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0xheWVyRmx1c2hTY2hlZHVsZXJDbGllbnQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2ViQ29yZUtleWJvYXJkVUlNb2RlLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgot
I2ltcG9ydCA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNp
bXBvcnQgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KQEAgLTMxOCw3ICszMTcsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBVU0Uo
RElDVEFUSU9OX0FMVEVSTkFUSVZFUykKLSAgICBPd25QdHI8V2ViQ29yZTo6QWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyPiBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPiBtX2FsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlcjsKICNlbmRpZgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4g
c291cmNlQXBwbGljYXRpb25BdWRpdERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3RGF0YS5tbQppbmRleCA5ZWJiMzIwZTViYTQ0ZjhlODM3MGJhNTBiNzI2ODI2YWMwMjVkYzc3
Li44YmQ5ZTQ3ZjJhNGMwMjg4YWQ3MTllODQwNWM4MjJjMmQ2MDFjZTRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0KQEAgLTE2Miw3ICsxNjIsNyBAQCAtIChpZClp
bml0CiAgICAgcGx1Z2luRGF0YWJhc2VDbGllbnRDb3VudCsrOwogCiAjaWYgVVNFKERJQ1RBVElP
Tl9BTFRFUk5BVElWRVMpCi0gICAgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgPSBhZG9w
dFB0cihuZXcgV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKTsKKyAgICBtX2Fs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPigpOwogI2VuZGlmCiAKICAgICByZXR1cm4gc2VsZjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDY2MjU4OTM4ODAxYmQ0MjljNzIzZWJkZTA1M2Rh
YzJhNmFiMzdjZjUuLjgxOTUwZjgyMDM0MGRmOTYwMjY0ZDM3ZjExNmY1NGFiOTk2N2RiNTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29y
ZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAtNDEsNyArNDEsNiBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvSW50U2l6ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZU92ZXJsYXkuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1RpbWVyLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251231</attachid>
            <date>2015-04-21 08:56:14 -0700</date>
            <delta_ts>2015-04-22 08:40:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143943-20150421085511.patch</filename>
            <type>text/plain</type>
            <size>30709</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzMDYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmVmYjU5ZTY3YTI3MDY4
MGFmNjk3M2ZjYzYzZTg4YmI2ODcwMjgyNC4uZDMzNjM2YTVlYTlhZjZlNTc4Mzk1YzBmOTJlM2Ri
YzhmMGEyNzc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI0IEBACiAyMDE1LTA0LTIxICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAorICAgICAgICBSZW1vdmUgT3duUHRyIGFuZCBQ
YXNzT3duUHRyIHVzZSBmcm9tIFdlYktpdC9jZiwgV2ViS2l0L21hYywgYW5kIFdlYktpdDIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mzk0MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXREaWN0YXRpb25QaHJhc2Vz
QXNDaGlsZE9mRWxlbWVudCk6IENoYW5nZWQgdGhpcyBpT1Mtb25seQorICAgICAgICBmdW5jdGlv
biB0byB0YWtlIGEgVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiBhbmQgbm90IGludm9sdmUgUGFzc093
blB0ci4gQWxzbyBtYWRlCisgICAgICAgIGl0IHRha2UgYSByZWZlcmVuY2UgcmF0aGVyIHRoYW4g
YSBwb2ludGVyIHRvIHRoZSBlbGVtZW50IGFuZCBzaW1wbGlmeSB0aGUgY29kZQorICAgICAgICBh
IGJpdCB1c2luZyBtb2Rlcm4gZm9yIGxvb3BzIGFuZCBhdXRvLgorICAgICAgICAqIGVkaXRpbmcv
RWRpdG9yLmg6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tM
b29rLmg6IFJldHVybiBhbiBOU1VSTFJlcXVlc3QgKiBpbnN0ZWFkIG9mIGEKKyAgICAgICAgUGFz
c093blB0cjxSZXNvdXJjZVJlcXVlc3Q+IGZyb20gdGhpcyBpT1Mtc3BlY2lmaWMgZnVuY3Rpb24u
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tOgorICAgICAgICAo
V2ViQ29yZTo6cmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZCk6IERpdHRvLgorCisy
MDE1LTA0LTIxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKwogICAgICAgICBSZW1v
dmUgc29tZSBzdHJheSB1c2VzIG9mIE93blB0ciBhbmQgUGFzc093blB0ciBpbiBXVEYgKG91dHNp
ZGUgb2YgdGhlIHRlbXBsYXRlIGRlZmluaXRpb25zIGFuZCB0cmFpdHMpCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM5NDQKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZwpp
bmRleCBhODRmNmQxMjViODlmNWUwZGI3ZDEyNzQwYjY2OWVkYjgwZjVlMjM1Li4yNGI4NTg3MWM0
OTRlZGMyYWFlMTYxZTliODQ2NGExYjg2OTlkY2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2NmL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyIEBACisyMDE1LTA0LTIxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZW1vdmUgT3duUHRyIGFuZCBQYXNzT3duUHRyIHVzZSBmcm9tIFdlYktpdC9jZiwgV2Vi
S2l0L21hYywgYW5kIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0Mzk0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOiBS
ZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUuCisKIDIwMTQtMDktMjUgIENzYWJhIE9zenRyb2dvbsOh
YyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgV2luQ0UgcG9ydCBmcm9tIHRy
dW5rCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggYWU2ZDY3YzMyYzUzMDgzYTlkNWUxZWEzY2MxMTU3MjMy
Y2UzZDhiNC4uZmFiZjQyYjMxNmQ0MGFjNDQxZGYxODlmZWJjZmM0N2I3NzU5MmM4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE1LTA0LTIxICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgT3duUHRyIGFuZCBQYXNzT3duUHRyIHVz
ZSBmcm9tIFdlYktpdC9jZiwgV2ViS2l0L21hYywgYW5kIFdlYktpdDIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mzk0MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvUHJveHlJ
bnN0YW5jZS5oOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUuCisgICAgICAgICogUGx1Z2lucy9X
ZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lmg6IERpdHRvLgorCisgICAgICAgICogUGx1Z2lucy9X
ZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5oOiBVc2UgdW5pcXVlX3B0ciBpbnN0ZWFkIG9m
CisgICAgICAgIFBhc3NPd25QdHIgZm9yIHRoZSBjcmVhdGUgZnVuY3Rpb24uIEFsc28gdHdlYWtl
ZCBmb3JtYXR0aW5nIGFuZCByZW1vdmVkCisgICAgICAgIHVubmVlZGVkIGZvcndhcmQgZGVjbGFy
YXRpb24gb2YgQ0dSZWN0LgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVu
dEhhbmRsZXIubW06CisgICAgICAgIChXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcjo6Y3Jl
YXRlKTogQ2hhbmdlZCB0byB1c2UgdW5pcXVlX3B0ciBhbmQKKyAgICAgICAgbWFrZV91bmlxdWUu
CisKKyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5oOiBVc2UgdW5pcXVl
X3B0ciBpbnN0ZWFkIG9mIE93blB0ciBmb3IKKyAgICAgICAgdGhlIF9ldmVudEhhbmRsZXIgZmll
bGQuCisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAg
ICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBkZXN0cm95UGx1Z2luXSk6IENoYW5nZWQgY29kZSB0
byB3b3JrIHdpdGggdW5pcXVlX3B0ci4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlVz
ZXJNZWRpYUNsaWVudC5tbTogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlLgorCisgICAgICAgICog
V2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbTogQ2hhbmdlZCB0byB1
c2UgbWFrZV91bmlxdWUuCisgICAgICAgICogV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblBy
b3ZpZGVyTW9ja0ludGVybmFsLmg6IENoYW5nZWQgdG8gdXNlIHVuaXF1ZV9wdHIuCisKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAodmVjdG9yRm9yRGljdGF0aW9uUGhy
YXNlc0FycmF5KTogQ2hhbmdlZCB0byByZXR1cm4gVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiBhbmQK
KyAgICAgICAgbm90IGEgUGFzc093blB0ci4gQWxzbyByZXdyb3RlIHRvIGJlIG11Y2ggc2ltcGxl
ciwgYWx0aG91Z2ggdGhlcmUgaXMgc3RpbGwgYQorICAgICAgICBwcmUtZXhpc3RpbmcgcHJvYmxl
bSBoZXJlIHdoZXJlIHRoaXMgY291bGQgcHV0IGVtcHR5IHZlY3RvcnMgaW50byB0aGUgcmVzdWx0
LAorICAgICAgICBhbmQgSSdtIHByZXR0eSBzdXJlIHRoZSBjbGllbnQgbmV2ZXIgZXhwZWN0cyBh
bnkgb2YgdGhlIFZlY3RvcjxTdHJpbmc+IHRvIGJlIGVtcHR5LgorICAgICAgICAoLVtXZWJGcmFt
ZSBfbG9hZERhdGE6TUlNRVR5cGU6dGV4dEVuY29kaW5nTmFtZTpiYXNlVVJMOnVucmVhY2hhYmxl
VVJMOl0pOgorICAgICAgICBSZXdyb3RlIGxvZ2ljIHRvIGludm9sdmUgV2ViQ29yZSB0eXBlcyBh
IGJpdCBsZXNzOyBvbGQgY29kZSB3YXMgcm91bmQgdHJpcHBpbmcKKyAgICAgICAgdGhpbmdzIHRo
cm91Z2ggV2ViQ29yZTo6VVJMIGZvciBubyBvYnZpb3VzIHJlYXNvbi4KKworICAgICAgICAqIFdl
YlZpZXcvV2ViRnJhbWVJbnRlcm5hbC5oOiBDaGFuZ2VkIHZlY3RvckZvckRpY3RhdGlvblBocmFz
ZXNBcnJheSB0byByZXR1cm4KKyAgICAgICAgYSBWZWN0b3I8VmVjdG9yPFN0cmluZz4+IGFuZCBu
b3QgYSBQYXNzT3duUHRyLgorCisgICAgICAgICogV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJv
bGxlci5oOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUuCisKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlZpZXdEYXRhLmg6IENoYW5nZWQgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgdG8gYmUg
YQorICAgICAgICBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci4KKyAgICAgICAgKiBXZWJW
aWV3L1dlYlZpZXdEYXRhLm1tOgorICAgICAgICAoLVtXZWJWaWV3UHJpdmF0ZSBpbml0XSk6IFVz
ZSBtYWtlX3VuaXF1ZSB0byBpbml0aWFsaXplIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVy
LgorCiAyMDE1LTA0LTIwICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAg
ICAgICAgIERpc2FibGUgbWl4ZWQgY29udGVudCBibG9ja2luZyBmb3IgZXhpc3RpbmcgV2ViS2l0
MSBjbGllbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTU2MWJlNjNmNmQ4OWE1ZGYzMGJjNjA3Mzg4NzVjNzIy
ZThiYjI5OS4uMjdjN2RkNTc5ZjJiYzU3MWQ1NDA3NmVkZDg0OWQ4ZGQwODdlMTU1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTA0LTIxICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgT3duUHRyIGFuZCBQYXNzT3duUHRyIHVzZSBmcm9t
IFdlYktpdC9jZiwgV2ViS2l0L21hYywgYW5kIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mzk0MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaDoKKyAgICAgICAg
UmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlLgorCiAyMDE1LTA0LTIwICBEYW4gQmVybnN0ZWluICA8
bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgRXhwb3NlIG1vcmUgYnVuZGxlIGZvcm0gY2xpZW50
IGZ1bmN0aW9ucyBhcyBXS1dlYlByb2Nlc3NQbHVnSW5Gb3JtRGVsZWdhdGVQcml2YXRlIG1ldGhv
ZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA3MTBhYTM5N2VjZTVlMWU5Y2UwNWM5
NzRiZTBmYzY2M2UyNWI4NTg4Li43MzkxYzYwNjhkZTE3YzI0N2U2ZWU2MTg0YmRmMmI4OTkwOTY5
N2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zODgsNiArMzg4LDcgQEAgdm9p
ZCBFZGl0b3I6OmNsZWFyVGV4dCgpCiB9CiAKICNpZiBQTEFURk9STShJT1MpCisKIHZvaWQgRWRp
dG9yOjppbnNlcnREaWN0YXRpb25QaHJhc2VzKFBhc3NPd25QdHI8VmVjdG9yPFZlY3RvcjxTdHJp
bmc+ID4gPiBkaWN0YXRpb25QaHJhc2VzLCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhKQogewogICAg
IGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpKQpAQCAtMzk5LDcgKzQwMCw3IEBAIHZv
aWQgRWRpdG9yOjppbnNlcnREaWN0YXRpb25QaHJhc2VzKFBhc3NPd25QdHI8VmVjdG9yPFZlY3Rv
cjxTdHJpbmc+ID4gPiBkaWN0YXRpCiAgICAgYXBwbHlDb21tYW5kKERpY3RhdGlvbkNvbW1hbmRJ
T1M6OmNyZWF0ZShkb2N1bWVudCgpLCBkaWN0YXRpb25QaHJhc2VzLCBtZXRhZGF0YSkpOwogfQog
Ci12b2lkIEVkaXRvcjo6c2V0RGljdGF0aW9uUGhyYXNlc0FzQ2hpbGRPZkVsZW1lbnQoUGFzc093
blB0cjxWZWN0b3I8VmVjdG9yPFN0cmluZz4gPiA+IGRpY3RhdGlvblBocmFzZXMsIFJldGFpblB0
cjxpZD4gbWV0YWRhdGEsIEVsZW1lbnQqIGVsZW1lbnQpCit2b2lkIEVkaXRvcjo6c2V0RGljdGF0
aW9uUGhyYXNlc0FzQ2hpbGRPZkVsZW1lbnQoY29uc3QgVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiYg
ZGljdGF0aW9uUGhyYXNlcywgUmV0YWluUHRyPGlkPiBtZXRhZGF0YSwgRWxlbWVudCYgZWxlbWVu
dCkKIHsKICAgICAvLyBDbGVhciB0aGUgY29tcG9zaXRpb24uCiAgICAgY2xlYXIoKTsKQEAgLTQx
MCw1NCArNDExLDUwIEBAIHZvaWQgRWRpdG9yOjpzZXREaWN0YXRpb25QaHJhc2VzQXNDaGlsZE9m
RWxlbWVudChQYXNzT3duUHRyPFZlY3RvcjxWZWN0b3I8U3RyaW5nCiAgICAgCiAgICAgbV9mcmFt
ZS5zZWxlY3Rpb24oKS5jbGVhcigpOwogICAgIAotICAgIGVsZW1lbnQtPnJlbW92ZUNoaWxkcmVu
KCk7CisgICAgZWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAgIAotICAgIGlmIChkaWN0YXRp
b25QaHJhc2VzLT5pc0VtcHR5KCkpIHsKKyAgICBpZiAoZGljdGF0aW9uUGhyYXNlcy5pc0VtcHR5
KCkpIHsKICAgICAgICAgY2xpZW50KCktPnJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWM7ICAgIAogICAg
IFJlZlB0cjxSYW5nZT4gY29udGV4dCA9IGRvY3VtZW50KCkuY3JlYXRlUmFuZ2UoKTsKLSAgICBj
b250ZXh0LT5zZWxlY3ROb2RlQ29udGVudHMoZWxlbWVudCwgZWMpOwotICAgIAorICAgIGNvbnRl
eHQtPnNlbGVjdE5vZGVDb250ZW50cygmZWxlbWVudCwgZWMpOworCiAgICAgU3RyaW5nQnVpbGRl
ciBkaWN0YXRpb25QaHJhc2VzQnVpbGRlcjsKLSAgICBzaXplX3QgZGljdGF0aW9uUGhyYXNlQ291
bnQgPSBkaWN0YXRpb25QaHJhc2VzLT5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBkaWN0YXRpb25QaHJhc2VDb3VudDsgaSsrKSB7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgZmly
c3RJbnRlcnByZXRhdGlvbiA9IGRpY3RhdGlvblBocmFzZXMtPmF0KGkpWzBdOwotICAgICAgICBk
aWN0YXRpb25QaHJhc2VzQnVpbGRlci5hcHBlbmQoZmlyc3RJbnRlcnByZXRhdGlvbik7Ci0gICAg
fQotICAgIFN0cmluZyBzZXJpYWxpemVkRGljdGF0aW9uUGhyYXNlcyA9IGRpY3RhdGlvblBocmFz
ZXNCdWlsZGVyLnRvU3RyaW5nKCk7Ci0gICAgCi0gICAgZWxlbWVudC0+YXBwZW5kQ2hpbGQoY3Jl
YXRlRnJhZ21lbnRGcm9tVGV4dCgqY29udGV4dC5nZXQoKSwgc2VyaWFsaXplZERpY3RhdGlvblBo
cmFzZXMpLCBlYyk7Ci0gICAgCisgICAgZm9yIChhdXRvJiBpbnRlcnByZXRhdGlvbnMgOiBkaWN0
YXRpb25QaHJhc2VzKQorICAgICAgICBkaWN0YXRpb25QaHJhc2VzQnVpbGRlci5hcHBlbmQoaW50
ZXJwcmV0YXRpb25zWzBdKTsKKworICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQoY3JlYXRlRnJhZ21l
bnRGcm9tVGV4dCgqY29udGV4dCwgZGljdGF0aW9uUGhyYXNlc0J1aWxkZXIudG9TdHJpbmcoKSks
IGVjKTsKKwogICAgIC8vIFdlIG5lZWQgYSBsYXlvdXQgaW4gb3JkZXIgdG8gYWRkIG1hcmtlcnMg
YmVsb3cuCiAgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXQoKTsKLSAgICAKLSAgICBpZiAoIWVs
ZW1lbnQtPmZpcnN0Q2hpbGQoKS0+aXNUZXh0Tm9kZSgpKSB7CisKKyAgICBpZiAoIWVsZW1lbnQu
Zmlyc3RDaGlsZCgpLT5pc1RleHROb2RlKCkpIHsKICAgICAgICAgLy8gU2hvdWxkbid0IGhhcHBl
bi4KLSAgICAgICAgQVNTRVJUKGVsZW1lbnQtPmZpcnN0Q2hpbGQoKS0+aXNUZXh0Tm9kZSgpKTsK
KyAgICAgICAgQVNTRVJUKGVsZW1lbnQuZmlyc3RDaGlsZCgpLT5pc1RleHROb2RlKCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgICAgICAKLSAgICBUZXh0KiB0ZXh0Tm9kZSA9IHN0YXRp
Y19jYXN0PFRleHQqPihlbGVtZW50LT5maXJzdENoaWxkKCkpOworCisgICAgVGV4dCYgdGV4dE5v
ZGUgPSBkb3duY2FzdDxUZXh0PigqZWxlbWVudC5maXJzdENoaWxkKCkpOwogICAgIGludCBwcmV2
aW91c0RpY3RhdGlvblBocmFzZVN0YXJ0ID0gMDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGRpY3RhdGlvblBocmFzZUNvdW50OyBpKyspIHsKLSAgICAgICAgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGludGVycHJldGF0aW9ucyA9IGRpY3RhdGlvblBocmFzZXMtPmF0KGkpOworICAgIGZvciAo
YXV0byYgaW50ZXJwcmV0YXRpb25zIDogZGljdGF0aW9uUGhyYXNlcykgewogICAgICAgICBpbnQg
ZGljdGF0aW9uUGhyYXNlTGVuZ3RoID0gaW50ZXJwcmV0YXRpb25zWzBdLmxlbmd0aCgpOwogICAg
ICAgICBpbnQgZGljdGF0aW9uUGhyYXNlRW5kID0gcHJldmlvdXNEaWN0YXRpb25QaHJhc2VTdGFy
dCArIGRpY3RhdGlvblBocmFzZUxlbmd0aDsKICAgICAgICAgaWYgKGludGVycHJldGF0aW9ucy5z
aXplKCkgPiAxKSB7Ci0gICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IGRpY3RhdGlvblBocmFzZVJh
bmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCB0ZXh0Tm9kZSwgcHJldmlvdXNEaWN0YXRp
b25QaHJhc2VTdGFydCwgdGV4dE5vZGUsIGRpY3RhdGlvblBocmFzZUVuZCk7Ci0gICAgICAgICAg
ICBkb2N1bWVudCgpLm1hcmtlcnMoKS5hZGREaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVz
TWFya2VyKGRpY3RhdGlvblBocmFzZVJhbmdlLmdldCgpLCBpbnRlcnByZXRhdGlvbnMpOworICAg
ICAgICAgICAgYXV0byBkaWN0YXRpb25QaHJhc2VSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1l
bnQoKSwgJnRleHROb2RlLCBwcmV2aW91c0RpY3RhdGlvblBocmFzZVN0YXJ0LCAmdGV4dE5vZGUs
IGRpY3RhdGlvblBocmFzZUVuZCk7CisgICAgICAgICAgICBkb2N1bWVudCgpLm1hcmtlcnMoKS5h
ZGREaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzTWFya2VyKGRpY3RhdGlvblBocmFzZVJh
bmdlLnB0cigpLCBpbnRlcnByZXRhdGlvbnMpOwogICAgICAgICB9CiAgICAgICAgIHByZXZpb3Vz
RGljdGF0aW9uUGhyYXNlU3RhcnQgPSBkaWN0YXRpb25QaHJhc2VFbmQ7CiAgICAgfQotICAgIAot
ICAgIFJlZlB0cjxSYW5nZT4gcmVzdWx0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCks
IHRleHROb2RlLCAwLCB0ZXh0Tm9kZSwgdGV4dE5vZGUtPmxlbmd0aCgpKTsKLSAgICBkb2N1bWVu
dCgpLm1hcmtlcnMoKS5hZGREaWN0YXRpb25SZXN1bHRNYXJrZXIocmVzdWx0UmFuZ2UuZ2V0KCks
IG1ldGFkYXRhKTsKLSAgICAKKworICAgIGF1dG8gcmVzdWx0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGRvY3VtZW50KCksICZ0ZXh0Tm9kZSwgMCwgJnRleHROb2RlLCB0ZXh0Tm9kZS5sZW5ndGgoKSk7
CisgICAgZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkRGljdGF0aW9uUmVzdWx0TWFya2VyKHJlc3Vs
dFJhbmdlLnB0cigpLCBtZXRhZGF0YSk7CisKICAgICBjbGllbnQoKS0+cmVzcG9uZFRvQ2hhbmdl
ZENvbnRlbnRzKCk7CiB9CisKICNlbmRpZgogCiB2b2lkIEVkaXRvcjo6cGFzdGVBc1BsYWluVGV4
dChjb25zdCBTdHJpbmcmIHBhc3RpbmdUZXh0LCBib29sIHNtYXJ0UmVwbGFjZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5oCmluZGV4IDc5MmJjNDZhNjM2NTNkZGYxNTc5ZDg3OThiOWVkOTgwMjlkNTgw
NzguLmY5YzU0YThkMjhhYWVkYzY1MGQzMmI0Mzg4NWM1NzI1NmZlMjBhMzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaApAQCAtMzMwLDcgKzMzMCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFRleHRBc0NoaWxkT2ZFbGVtZW50KGNvbnN0IFN0cmluZyYsIEVsZW1lbnQq
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFz
ZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBpbnNlcnREaWN0YXRpb25QaHJhc2VzKFBhc3NPd25QdHI8VmVjdG9yPFZlY3RvcjxTdHJp
bmc+ID4gPiBkaWN0YXRpb25QaHJhc2VzLCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldERpY3RhdGlvblBocmFzZXNBc0NoaWxkT2ZFbGVtZW50KFBh
c3NPd25QdHI8VmVjdG9yPFZlY3RvcjxTdHJpbmc+ID4gPiBkaWN0YXRpb25QaHJhc2VzLCBSZXRh
aW5QdHI8aWQ+IG1ldGFkYXRhLCBFbGVtZW50KiBlbGVtZW50KTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldERpY3RhdGlvblBocmFzZXNBc0NoaWxkT2ZFbGVtZW50KGNvbnN0IFZlY3RvcjxW
ZWN0b3I8U3RyaW5nPj4mIGRpY3RhdGlvblBocmFzZXMsIFJldGFpblB0cjxpZD4gbWV0YWRhdGEs
IEVsZW1lbnQmKTsKICNlbmRpZgogICAgIAogICAgIHZvaWQgYWRkVG9LaWxsUmluZyhSYW5nZSos
IGJvb2wgcHJlcGVuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2lvcy9RdWlja0xvb2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9z
L1F1aWNrTG9vay5oCmluZGV4IGY1NzYyZjBhMTViYzM1ZTY2Y2JhMDE1NDkxYjc4MDE2ZjhjODVi
YzYuLmE5ZWY3Y2M0N2EwNmM4MDdmMTcxYTQwNTA5ZjljOGJjMTBmZDQ4MjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5oCkBAIC00MSw2ICs0
MSw3IEBAIE9CSkNfQ0xBU1MgTlNTZXQ7CiBPQkpDX0NMQVNTIE5TU3RyaW5nOwogT0JKQ19DTEFT
UyBOU1VSTDsKIE9CSkNfQ0xBU1MgTlNVUkxDb25uZWN0aW9uOworT0JKQ19DTEFTUyBOU1VSTFJl
cXVlc3Q7CiBPQkpDX0NMQVNTIE5TVVJMUmVzcG9uc2U7CiBPQkpDX0NMQVNTIFFMUHJldmlld0Nv
bnZlcnRlcjsKIApAQCAtNzIsNyArNzMsNyBAQCBXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqcWxQ
cmV2aWV3Q29udmVydGVyRmlsZU5hbWVGb3JVUkwoTlNVUkwgKik7CiBXRUJDT1JFX0VYUE9SVCBO
U1N0cmluZyAqcWxQcmV2aWV3Q29udmVydGVyVVRJRm9yVVJMKE5TVVJMICopOwogV0VCQ09SRV9F
WFBPUlQgdm9pZCByZW1vdmVRTFByZXZpZXdDb252ZXJ0ZXJGb3JVUkwoTlNVUkwgKik7CiAKLVdF
QkNPUkVfRVhQT1JUIFBhc3NPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiByZWdpc3RlclFMUHJldmll
d0NvbnZlcnRlcklmTmVlZGVkKE5TVVJMICosIE5TU3RyaW5nICptaW1lVHlwZSwgTlNEYXRhICop
OworV0VCQ09SRV9FWFBPUlQgTlNVUkxSZXF1ZXN0ICpyZWdpc3RlclFMUHJldmlld0NvbnZlcnRl
cklmTmVlZGVkKE5TVVJMICosIE5TU3RyaW5nICptaW1lVHlwZSwgTlNEYXRhICopOwogCiBjb25z
dCBVUkwgc2FmZVFMVVJMRm9yRG9jdW1lbnRVUkxBbmRSZXNvdXJjZVVSTChjb25zdCBVUkwmIGRv
Y3VtZW50VVJMLCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCmluZGV4IGVlOTA0OTFjYjlh
NThhYjU0NDlkNWExOTljNWJiMzVjNTllNDM3ZTIuLmU0MDYxMWMxNTc4MWYzN2RmN2IzYjA5MjE2
ZDY2Y2JmNDQzODQ2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvaW9zL1F1aWNrTG9vay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2lvcy9RdWlja0xvb2subW0KQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFdlYkNvcmU6OnJlbW92
ZVFMUHJldmlld0NvbnZlcnRlckZvclVSTChOU1VSTCAqdXJsKQogICAgIFtRTENvbnRlbnREaWN0
aW9uYXJ5KCkgcmVtb3ZlT2JqZWN0Rm9yS2V5OnVybF07CiB9CiAKLVBhc3NPd25QdHI8UmVzb3Vy
Y2VSZXF1ZXN0PiBXZWJDb3JlOjpyZWdpc3RlclFMUHJldmlld0NvbnZlcnRlcklmTmVlZGVkKE5T
VVJMICp1cmwsIE5TU3RyaW5nICptaW1lVHlwZSwgTlNEYXRhICpkYXRhKQorTlNVUkxSZXF1ZXN0
ICpXZWJDb3JlOjpyZWdpc3RlclFMUHJldmlld0NvbnZlcnRlcklmTmVlZGVkKE5TVVJMICp1cmws
IE5TU3RyaW5nICptaW1lVHlwZSwgTlNEYXRhICpkYXRhKQogewogICAgIFJldGFpblB0cjxOU1N0
cmluZz4gdXBkYXRlZE1JTUVUeXBlID0gYWRvcHROUyhXZWJDb3JlOjpRTFR5cGVDb3B5QmVzdE1p
bWVUeXBlRm9yVVJMQW5kTWltZVR5cGUodXJsLCBtaW1lVHlwZSkpOwogCkBAIC0yMDIsMTAgKzIw
MiwxMCBAQCBQYXNzT3duUHRyPFJlc291cmNlUmVxdWVzdD4gV2ViQ29yZTo6cmVnaXN0ZXJRTFBy
ZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZChOU1VSTCAqdQogICAgICAgICAvLyB0aGUgVVJMIHRoYXQg
dGhlIFdlYkRhdGFTb3VyY2Ugd2lsbCBzZWUgZHVyaW5nIC1kZWFsbG9jLgogICAgICAgICBhZGRR
TFByZXZpZXdDb252ZXJ0ZXJXaXRoRmlsZUZvclVSTChbcmVxdWVzdCBVUkxdLCBjb252ZXJ0ZXIu
Z2V0KCksIG5pbCk7CiAKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBSZXNvdXJjZVJlcXVl
c3QocmVxdWVzdCkpOworICAgICAgICByZXR1cm4gcmVxdWVzdDsKICAgICB9CiAKLSAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbmlsOwogfQogCiBjb25zdCBVUkwgV2ViQ29yZTo6c2Fm
ZVFMVVJMRm9yRG9jdW1lbnRVUkxBbmRSZXNvdXJjZVVSTChjb25zdCBVUkwmIGRvY3VtZW50VVJM
LCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
Zi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAppbmRleCAwNGZlNzMz
MjMyOWRmNDhkODlmYTJiMzUyMmFmYmNkZjdiN2IxMmU0Li4zYmFiMjU2NmI1NzY2MjQ2NjgxZWM5
MGRkYjM4ODk1NmJkMjE2MjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2NmL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcApAQCAtNTQsNyArNTQsNiBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUGFnZS5oPgogCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1
Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9I
b3N0ZWQvUHJveHlJbnN0YW5jZS5oCmluZGV4IDA4MGY5ZTEzMmM5MzQwN2VhZjQ1N2FmZGI2NDFl
M2Y0ZTM5M2Y2MDYuLjEzZTMyYmE2MjBlMzUwN2UwNDJhOTBlODE3NDQzZDkzYWY2M2I2MDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLmgK
QEAgLTMyLDcgKzMyLDYgQEAKICNpbXBvcnQgIldlYktpdFBsdWdpbkhvc3RUeXBlcy5oIgogI2lt
cG9ydCA8V2ViQ29yZS9CcmlkZ2VKU0MuaD4KICNpbXBvcnQgPFdlYkNvcmUvcnVudGltZV9yb290
Lmg+Ci0jaW1wb3J0IDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZp
ZXcuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmll
dy5oCmluZGV4IDRmNGNkNTNjNWJhYzA2NzgxOWU5NTA5YTQ0ODdiNDNmNzEyNWY0YTcuLmY0ZDhm
YWI4MWE3NzIzZmQ2Y2VjZmJlMDQ4MTQ3ZGZiOGY5ZTUwZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oCkBAIC0zMiw3
ICszMiw2IEBACiAjaW1wb3J0ICJXZWJOZXRzY2FwZVBsdWdpblBhY2thZ2UuaCIKICNpbXBvcnQg
IldlYlBsdWdpbkNvbnRhaW5lckNoZWNrLmgiCiAjaW1wb3J0IDx3dGYvRm9yd2FyZC5oPgotI2lt
cG9ydCA8d3RmL093blB0ci5oPgogI2ltcG9ydCA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbXBvcnQg
PHd0Zi9SZWZQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIuaCBi
L1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIu
aAppbmRleCA5ZTMyZTJmYmZiMzZhZWNiMDA5Yzk4MzE3YjBkODcwZDU1MjA0YWI0Li4xNGI0MWJj
ZmFhOWRkNjc4YzAwOGI4YTYxZWFhMzNiZWJlNzVjYzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5oCkBA
IC0zMywyNiArMzMsMjQgQEAKIEBjbGFzcyBOU0V2ZW50OwogQGNsYXNzIFdlYk5ldHNjYXBlUGx1
Z2luVmlldzsKIAotc3RydWN0IENHUmVjdDsKLQogY2xhc3MgV2ViTmV0c2NhcGVQbHVnaW5FdmVu
dEhhbmRsZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYk5ldHNjYXBlUGx1
Z2luRXZlbnRIYW5kbGVyPiBjcmVhdGUoV2ViTmV0c2NhcGVQbHVnaW5WaWV3Kik7CisgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcj4gY3JlYXRl
KFdlYk5ldHNjYXBlUGx1Z2luVmlldyAqKTsKICAgICB2aXJ0dWFsIH5XZWJOZXRzY2FwZVBsdWdp
bkV2ZW50SGFuZGxlcigpIHsgfQogICAgIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChDR0Nv
bnRleHRSZWYsIGNvbnN0IE5TUmVjdCYpID0gMDsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgbW91
c2VEb3duKE5TRXZlbnQqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIG1vdXNlRHJhZ2dlZChOU0V2
ZW50KikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBtb3VzZUVudGVyZWQoTlNFdmVudCopID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgbW91c2VFeGl0ZWQoTlNFdmVudCopID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgbW91c2VNb3ZlZChOU0V2ZW50KikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBtb3VzZVVw
KE5TRXZlbnQqKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHNjcm9sbFdoZWVsKE5TRXZlbnQqKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIG1vdXNlRG93bihOU0V2ZW50ICopID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgbW91c2VEcmFnZ2VkKE5TRXZlbnQgKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBt
b3VzZUVudGVyZWQoTlNFdmVudCAqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG1vdXNlRXhpdGVk
KE5TRXZlbnQgKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtb3VzZU1vdmVkKE5TRXZlbnQgKikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBtb3VzZVVwKE5TRXZlbnQgKikgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBzY3JvbGxXaGVlbChOU0V2ZW50ICopID0gMDsKICAgICAKLSAgICB2aXJ0dWFsIHZv
aWQga2V5RG93bihOU0V2ZW50KikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBrZXlVcChOU0V2ZW50
KikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBmbGFnc0NoYW5nZWQoTlNFdmVudCopID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQga2V5RG93bihOU0V2ZW50ICopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
a2V5VXAoTlNFdmVudCAqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZsYWdzQ2hhbmdlZChOU0V2
ZW50ICopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3ludGhldGljS2V5RG93bldpdGhDb21tYW5k
TW9kaWZpZXIoaW50IGtleUNvZGUsIGNoYXIgY2hhcmFjdGVyKSA9IDA7CiAgICAgCiAgICAgdmly
dHVhbCB2b2lkIGZvY3VzQ2hhbmdlZChib29sIGhhc0ZvY3VzKSA9IDA7CkBAIC02MiwxNyArNjAs
MTggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdG9wVGltZXJzKCkgeyB9CiAgICAgCiAg
ICAgLy8gUmV0dXJucyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgd2luZG93IHVzZWQgaW4gTlBQX1Nl
dFdpbmRvdwotICAgIHZpcnR1YWwgdm9pZCogcGxhdGZvcm1XaW5kb3coTlNXaW5kb3cqKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkKiBwbGF0Zm9ybVdpbmRvdyhOU1dpbmRvdyAqKSA9IDA7CiAgICAg
CiAgICAgYm9vbCBjdXJyZW50RXZlbnRJc1VzZXJHZXN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9j
dXJyZW50RXZlbnRJc1VzZXJHZXN0dXJlOyB9CisKIHByb3RlY3RlZDoKLSAgICBXZWJOZXRzY2Fw
ZVBsdWdpbkV2ZW50SGFuZGxlcihXZWJOZXRzY2FwZVBsdWdpblZpZXcqIHBsdWdpblZpZXcpCisg
ICAgZXhwbGljaXQgV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIoV2ViTmV0c2NhcGVQbHVn
aW5WaWV3ICpwbHVnaW5WaWV3KQogICAgICAgICA6IG1fcGx1Z2luVmlldyhwbHVnaW5WaWV3KQog
ICAgICAgICAsIG1fY3VycmVudEV2ZW50SXNVc2VyR2VzdHVyZShmYWxzZSkKICAgICB7CiAgICAg
fQogICAgIAotICAgIFdlYk5ldHNjYXBlUGx1Z2luVmlldyogbV9wbHVnaW5WaWV3OworICAgIFdl
Yk5ldHNjYXBlUGx1Z2luVmlldyAqbV9wbHVnaW5WaWV3OwogICAgIGJvb2wgbV9jdXJyZW50RXZl
bnRJc1VzZXJHZXN0dXJlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1
Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIubW0KaW5kZXggOWMyZGM1MDVl
M2ZlZDMyZDY0MTAxZjIxNTE4YzZlZThhMzgwODY5YS4uN2RmOGU4NzQyZjVhNTMwZjhjYTMzNDc3
MGIzZjA5OTNlMmZhNTRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9X
ZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9Q
bHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLm1tCkBAIC0yOCwyMCArMjgsMTkg
QEAKICNpbXBvcnQgIldlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLmgiCiAKICNpbXBvcnQg
PHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW1wb3J0IDx3dGYvUGFzc093blB0ci5oPgogI2ltcG9ydCAi
V2ViTmV0c2NhcGVQbHVnaW5WaWV3LmgiCiAjaW1wb3J0ICJXZWJOZXRzY2FwZVBsdWdpbkV2ZW50
SGFuZGxlckNhcmJvbi5oIgogI2ltcG9ydCAiV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJD
b2NvYS5oIgogCi1QYXNzT3duUHRyPFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyPiBXZWJO
ZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcjo6Y3JlYXRlKFdlYk5ldHNjYXBlUGx1Z2luVmlldyog
cGx1Z2luVmlldykKK3N0ZDo6dW5pcXVlX3B0cjxXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxl
cj4gV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXI6OmNyZWF0ZShXZWJOZXRzY2FwZVBsdWdp
blZpZXcgKnBsdWdpblZpZXcpCiB7CiAgICAgc3dpdGNoIChbcGx1Z2luVmlldyBldmVudE1vZGVs
XSkgewogI2lmbmRlZiBOUF9OT19DQVJCT04KICAgICAgICAgY2FzZSBOUEV2ZW50TW9kZWxDYXJi
b246Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYk5ldHNjYXBlUGx1Z2luRXZl
bnRIYW5kbGVyQ2FyYm9uKHBsdWdpblZpZXcpKTsKLSNlbmRpZiAvLyBOUF9OT19DQVJCT04KKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRI
YW5kbGVyQ2FyYm9uPihwbHVnaW5WaWV3KTsKKyNlbmRpZgogICAgICAgICBjYXNlIE5QRXZlbnRN
b2RlbENvY29hOgotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJOZXRzY2FwZVBs
dWdpbkV2ZW50SGFuZGxlckNvY29hKHBsdWdpblZpZXcpKTsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2E+KHBsdWdp
blZpZXcpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L21h
Yy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5oCmluZGV4IGExNGEzZmY1NjFhMWRkN2Nh
YjJiNjcyYjJiYmI4YjdhNjVjZDgwNzYuLjc4M2YzM2YxNzY5MjYwYmEwMGZiZTY0OGU0ZjMxN2I3
YmRkOTZjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2Nh
cGVQbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2Fw
ZVBsdWdpblZpZXcuaApAQCAtMjksMTggKzI5LDEzIEBACiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BM
VUdJTl9BUEkpCiAKICNpbXBvcnQgIldlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaCIKLQogI2lt
cG9ydCAiV2ViTmV0c2NhcGVDb250YWluZXJDaGVja1ByaXZhdGUuaCIKICNpbXBvcnQgPFdlYktp
dExlZ2FjeS9ucGZ1bmN0aW9ucy5oPgogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L25wYXBpLmg+CiAj
aW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KLSNpbXBvcnQg
PHd0Zi9Pd25QdHIuaD4KIAotQGNsYXNzIFdlYkRhdGFTb3VyY2U7Ci1AY2xhc3MgV2ViRnJhbWU7
CiBAY2xhc3MgV2ViTmV0c2NhcGVQbHVnaW5QYWNrYWdlOwotQGNsYXNzIFdlYlZpZXc7CiAKIGNs
YXNzIFBsdWdpblRpbWVyOwogY2xhc3MgV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW07CkBAIC04Myw3
ICs3OCw3IEBAIHR5cGVkZWYgdW5pb24gUGx1Z2luUG9ydCB7CiAgICAgR1dvcmxkUHRyIG9mZnNj
cmVlbkdXb3JsZDsKICNlbmRpZgogCi0gICAgT3duUHRyPFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRI
YW5kbGVyPiBfZXZlbnRIYW5kbGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJOZXRzY2FwZVBs
dWdpbkV2ZW50SGFuZGxlcj4gX2V2ZW50SGFuZGxlcjsKICAgICAKICAgICBCT09MIGluU2V0V2lu
ZG93OwogICAgIEJPT0wgc2hvdWxkU3RvcFNvb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDM5MTE4MDAyMDIxNmUyYWRk
ZjgyMDcyODAyMmZmZjI1NmU4ZWJiYWUuLjk1YWFiOTk0MGM3YTkxYTIxOWJhYzhkNGZkODNmZDg5
Njg2MDgwMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2Nh
cGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2Nh
cGVQbHVnaW5WaWV3Lm1tCkBAIC0xMTg3LDEyICsxMTg3LDEyIEBAIC0gKHZvaWQpZGVzdHJveVBs
dWdpbgogICAgIC8vIFNldHRpbmcgdGhlIHdpbmRvdyB0eXBlIHRvIDAgZW5zdXJlcyB0aGF0IE5Q
UF9TZXRXaW5kb3cgd2lsbCBiZSBjYWxsZWQgaWYgdGhlIHBsdWctaW4gaXMgcmVzdGFydGVkLgog
ICAgIGxhc3RTZXRXaW5kb3cudHlwZSA9IChOUFdpbmRvd1R5cGUpMDsKICAgICAKLSAgICBfcGx1
Z2luTGF5ZXIgPSAwOworICAgIF9wbHVnaW5MYXllciA9IG5pbDsKICAgICAKICAgICBbc2VsZiBf
ZGVzdHJveVBsdWdpbl07CiAgICAgW19wbHVnaW5QYWNrYWdlLmdldCgpIGNsb3NlXTsKICAgICAK
LSAgICBfZXZlbnRIYW5kbGVyLmNsZWFyKCk7CisgICAgX2V2ZW50SGFuZGxlciA9IG51bGxwdHI7
CiB9CiAKIC0gKE5QRXZlbnRNb2RlbClldmVudE1vZGVsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQubW0KaW5kZXggMWE2NDQw
ZDk1ZmEzYWRiNGYyZDk1NzAwZDBiOTFkYWRkN2E4YWRiYS4uYWVkZDg1M2JkM2RhN2ZhODY3ZjYy
NGRlZDA3MWYzOTVhOTEyNTE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5tbQpAQCAtMzYsNyArMzYsNiBAQAogI2lt
cG9ydCA8V2ViQ29yZS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1VzZXJNZWRpYVJlcXVlc3QuaD4KICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+Ci0jaW1wb3J0IDx3
dGYvUGFzc093blB0ci5oPgogI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgogI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRl
dmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbQppbmRleCBlYTE2ZjM1MmNiMGFj
MWFhYjRkYWUwYzk5NzBiOGRlMzk2NmIwYWMxLi4yNDVkMjE4MGM4OWYwMWFjOWY5YTkwZjRiMzVm
N2Q4NjVjOGVjMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRl
dmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW0KQEAgLTI2LDcgKzI2LDYg
QEAKICNpbXBvcnQgIldlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwuaCIK
IAogI2ltcG9ydCAiV2ViRGV2aWNlT3JpZW50YXRpb25JbnRlcm5hbC5oIgotI2ltcG9ydCA8d3Rm
L1Bhc3NPd25QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTM3LDcgKzM2
LDcgQEAgLSAoaWQpaW5pdAogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxm
KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIG1fY29yZSA9IGFkb3B0UHRyKG5ldyBEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2soKSk7CisgICAgbV9jb3JlID0gc3RkOjptYWtlX3VuaXF1ZTxE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s+KCk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Q
cm92aWRlck1vY2tJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZp
Y2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsLmgKaW5kZXggNWFjMzhlNWM3ZjJiZDA4
MWI5YzlkYWQ1NjIwNjg0NzFmY2RlZDkxOS4uYjA2YjJjMWZjN2QwNmIwYjliOGM5YzY2MjQyM2Y4
NjZmNDI4YTQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZp
Y2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsLmgKQEAg
LTI0LDEyICsyNCwxMCBAQAogICovCiAKICNpbXBvcnQgIldlYkRldmljZU9yaWVudGF0aW9uUHJv
dmlkZXJNb2NrLmgiCi0KICNpbXBvcnQgPFdlYkNvcmUvRGV2aWNlT3JpZW50YXRpb25DbGllbnRN
b2NrLmg+Ci0jaW1wb3J0IDx3dGYvT3duUHRyLmg+CiAKIEBpbnRlcmZhY2UgV2ViRGV2aWNlT3Jp
ZW50YXRpb25Qcm92aWRlck1vY2tJbnRlcm5hbCA6IE5TT2JqZWN0IHsKLSAgICBPd25QdHI8V2Vi
Q29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrPiBtX2NvcmU7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaz4gbV9jb3JlOwogfQog
CiAtIChpZClpbml0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggMzNh
N2JlM2MxNDI2MmFjZjU1NGJiNGM3ZmMzYTJlY2JkNjM1MzM1OC4uNTI2MGFkOTcyMmMzYWNkMDZl
ZjRkZDY4NDEwZjI3NTZkMzk2ZjhmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tCkBAIC0yNDAsMzcgKzI0MCwyNSBAQCBUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJl
aGF2aW9yIGNvcmUoV2ViVGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25CZWhhdgogfQogCiAj
aWYgUExBVEZPUk0oSU9TKQotUGFzc093blB0cjxWZWN0b3I8VmVjdG9yPFN0cmluZz4+PiB2ZWN0
b3JGb3JEaWN0YXRpb25QaHJhc2VzQXJyYXkoTlNBcnJheSAqZGljdGF0aW9uUGhyYXNlcykKKwor
VmVjdG9yPFZlY3RvcjxTdHJpbmc+PiB2ZWN0b3JGb3JEaWN0YXRpb25QaHJhc2VzQXJyYXkoTlNB
cnJheSAqZGljdGF0aW9uUGhyYXNlcykKIHsKLSAgICBOU1VJbnRlZ2VyIGRpY3RhdGlvblBocmFz
ZXNDb3VudCA9IFtkaWN0YXRpb25QaHJhc2VzIGNvdW50XTsKLSAgICBpZiAoIWRpY3RhdGlvblBo
cmFzZXNDb3VudCkKLSAgICAgICAgcmV0dXJuIFBhc3NPd25QdHI8VmVjdG9yPFZlY3RvcjxTdHJp
bmc+ID4gPigpOwotICAgIAotICAgIE93blB0cjxWZWN0b3I8VmVjdG9yPFN0cmluZz4gPiA+IGRp
Y3RhdGlvblBocmFzZXNWZWN0b3IgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFZlY3RvcjxTdHJpbmc+
ID4oZGljdGF0aW9uUGhyYXNlc0NvdW50KSk7Ci0gICAgCi0gICAgZm9yIChOU1VJbnRlZ2VyIGkg
PSAwOyBpIDwgZGljdGF0aW9uUGhyYXNlc0NvdW50OyBpKyspIHsKLSAgICAgICAgCi0gICAgICAg
IGlkIGRpY3RhdGlvblBocmFzZSA9IFtkaWN0YXRpb25QaHJhc2VzIG9iamVjdEF0SW5kZXg6aV07
CisgICAgVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiByZXN1bHQ7CisKKyAgICBmb3IgKGlkIGRpY3Rh
dGlvblBocmFzZSBpbiBkaWN0YXRpb25QaHJhc2VzKSB7CiAgICAgICAgIGlmICghW2RpY3RhdGlv
blBocmFzZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCiAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgCi0gICAgICAgIE5TQXJyYXkgKmludGVycHJldGF0aW9uc0FycmF5ID0g
KE5TQXJyYXkgKilkaWN0YXRpb25QaHJhc2U7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+JiBpbnRl
cnByZXRhdGlvbnNWZWN0b3IgPSBkaWN0YXRpb25QaHJhc2VzVmVjdG9yLT5hdChpKTsKLSAgICAg
ICAgCi0gICAgICAgIE5TVUludGVnZXIgaW50ZXJwcmV0YXRpb25zQ291bnQgPSBbaW50ZXJwcmV0
YXRpb25zQXJyYXkgY291bnRdOwotICAgICAgICAKLSAgICAgICAgZm9yIChOU1VJbnRlZ2VyIGog
PSAwOyBqIDwgaW50ZXJwcmV0YXRpb25zQ291bnQ7IGorKykgewotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBpZCBpbnRlcnByZXRhdGlvbiA9IFtpbnRlcnByZXRhdGlvbnNBcnJheSBvYmplY3RB
dEluZGV4OmpdOworICAgICAgICByZXN1bHQuYXBwZW5kKFZlY3RvcjxTdHJpbmc+KCkpOworICAg
ICAgICBmb3IgKGlkIGludGVycHJldGF0aW9uIDogKE5TQXJyYXkgKilkaWN0YXRpb25QaHJhc2Up
IHsKICAgICAgICAgICAgIGlmICghW2ludGVycHJldGF0aW9uIGlzS2luZE9mQ2xhc3M6W05TU3Ry
aW5nIGNsYXNzXV0pCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIGludGVycHJldGF0aW9uc1ZlY3Rvci5hcHBlbmQoU3RyaW5nKChOU1N0cmluZyAq
KWludGVycHJldGF0aW9uKSk7CisgICAgICAgICAgICByZXN1bHQubGFzdCgpLmFwcGVuZCgoTlNT
dHJpbmcgKilpbnRlcnByZXRhdGlvbik7CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgcmV0
dXJuIGRpY3RhdGlvblBocmFzZXNWZWN0b3IucmVsZWFzZSgpOworICAgIHJldHVybiByZXN1bHQ7
CiB9CisKICNlbmRpZgogCiBAaW1wbGVtZW50YXRpb24gV2ViRnJhbWUgKFdlYkludGVybmFsKQpA
QCAtMTcwNCwxMSArMTY5MiwxMSBAQCAtICh2b2lkKXNldERpY3RhdGlvblBocmFzZXM6KE5TQXJy
YXkgKilkaWN0YXRpb25QaHJhc2VzIG1ldGFkYXRhOihpZCltZXRhZGF0YSBhcwogICAgIGlmICgh
ZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFdlYkNvcmU6OkZyYW1lICpmcmFt
ZSA9IGNvcmUoc2VsZik7CisgICAgYXV0byogZnJhbWUgPSBjb3JlKHNlbGYpOwogICAgIGlmICgh
ZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0RGlj
dGF0aW9uUGhyYXNlc0FzQ2hpbGRPZkVsZW1lbnQodmVjdG9yRm9yRGljdGF0aW9uUGhyYXNlc0Fy
cmF5KGRpY3RhdGlvblBocmFzZXMpLCBtZXRhZGF0YSwgY29yZShlbGVtZW50KSk7CisgICAgZnJh
bWUtPmVkaXRvcigpLnNldERpY3RhdGlvblBocmFzZXNBc0NoaWxkT2ZFbGVtZW50KHZlY3RvckZv
ckRpY3RhdGlvblBocmFzZXNBcnJheShkaWN0YXRpb25QaHJhc2VzKSwgbWV0YWRhdGEsICpjb3Jl
KGVsZW1lbnQpKTsKIH0KIAogLSAoTlNBcnJheSAqKWludGVycHJldGF0aW9uc0ZvckN1cnJlbnRS
b290CkBAIC0yNTA3LDMzICsyNDk1LDMyIEBAIHN0YXRpYyBOU1VSTCAqY3JlYXRlVW5pcXVlV2Vi
RGF0YVVSTCgpCiAKIC0gKHZvaWQpX2xvYWREYXRhOihOU0RhdGEgKilkYXRhIE1JTUVUeXBlOihO
U1N0cmluZyAqKU1JTUVUeXBlIHRleHRFbmNvZGluZ05hbWU6KE5TU3RyaW5nICopZW5jb2RpbmdO
YW1lIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTCB1bnJlYWNoYWJsZVVSTDooTlNVUkwgKil1bnJl
YWNoYWJsZVVSTAogewotI2lmICFQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oTUFDKQogICAg
IGlmICghcHRocmVhZF9tYWluX25wKCkpCiAgICAgICAgIHJldHVybiBbW3NlbGYgX3dlYmtpdF9p
bnZva2VPbk1haW5UaHJlYWRdIF9sb2FkRGF0YTpkYXRhIE1JTUVUeXBlOk1JTUVUeXBlIHRleHRF
bmNvZGluZ05hbWU6ZW5jb2RpbmdOYW1lIGJhc2VVUkw6YmFzZVVSTCB1bnJlYWNoYWJsZVVSTDp1
bnJlYWNoYWJsZVVSTF07CiAjZW5kaWYKLSAgICAKLSAgICBVUkwgcmVzcG9uc2VVUkw7Ci0gICAg
aWYgKCFiYXNlVVJMKSB7CisKKyAgICBOU1VSTCAqcmVzcG9uc2VVUkwgPSBuaWw7CisgICAgaWYg
KGJhc2VVUkwpCisgICAgICAgIGJhc2VVUkwgPSBbYmFzZVVSTCBhYnNvbHV0ZVVSTF07CisgICAg
ZWxzZSB7CiAgICAgICAgIGJhc2VVUkwgPSBibGFua1VSTCgpOwogICAgICAgICByZXNwb25zZVVS
TCA9IGNyZWF0ZVVuaXF1ZVdlYkRhdGFVUkwoKTsKICAgICB9CiAgICAgCiAjaWYgVVNFKFFVSUNL
X0xPT0spCiAgICAgaWYgKHNob3VsZFVzZVF1aWNrTG9va0Zvck1JTUVUeXBlKE1JTUVUeXBlKSkg
ewotICAgICAgICBVUkwgcWxVUkwgPSByZXNwb25zZVVSTDsKLSAgICAgICAgaWYgKHFsVVJMLmlz
RW1wdHkoKSkKLSAgICAgICAgICAgIHFsVVJMID0gW2Jhc2VVUkwgYWJzb2x1dGVVUkxdOwotICAg
ICAgICBPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBxbFJlcXVlc3QocmVnaXN0ZXJRTFByZXZpZXdD
b252ZXJ0ZXJJZk5lZWRlZCgoTlNVUkwgKilxbFVSTCwgTUlNRVR5cGUsIGRhdGEpKTsKLSAgICAg
ICAgaWYgKHFsUmVxdWVzdCkgewotICAgICAgICAgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+bG9h
ZGVyKCkubG9hZChGcmFtZUxvYWRSZXF1ZXN0KF9wcml2YXRlLT5jb3JlRnJhbWUsICpxbFJlcXVl
c3QpKTsKKyAgICAgICAgTlNVUkwgKnF1aWNrTG9va1VSTCA9IHJlc3BvbnNlVVJMID8gcmVzcG9u
c2VVUkwgOiBiYXNlVVJMOworICAgICAgICBpZiAoYXV0byByZXF1ZXN0ID0gcmVnaXN0ZXJRTFBy
ZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZChxdWlja0xvb2tVUkwsIE1JTUVUeXBlLCBkYXRhKSkgewor
ICAgICAgICAgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+bG9hZGVyKCkubG9hZChGcmFtZUxvYWRS
ZXF1ZXN0KF9wcml2YXRlLT5jb3JlRnJhbWUsIHJlcXVlc3QpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgIH0KLSNlbmRpZiAvLyBVU0UoUVVJQ0tfTE9PSykKKyNlbmRpZgog
Ci0gICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoW2Jhc2VVUkwgYWJzb2x1dGVVUkxdKTsKKyAg
ICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChiYXNlVVJMKTsKIAotI2lmICFQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIGhhY2sgYmVjYXVzZSBNYWlsIGNoZWNrcyBmb3Ig
dGhpcyBwcm9wZXJ0eSB0byBkZXRlY3QgZGF0YSAvIGFyY2hpdmUgbG9hZHMKICAgICBbTlNVUkxQ
cm90b2NvbCBzZXRQcm9wZXJ0eTpAIiIgZm9yS2V5OkAiV2ViRGF0YVJlcXVlc3QiIGluUmVxdWVz
dDooTlNNdXRhYmxlVVJMUmVxdWVzdCAqKXJlcXVlc3QubnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBC
b2R5KV07CiAjZW5kaWYKQEAgLTI1NDMsNyArMjUzMCw2IEBAIC0gKHZvaWQpX2xvYWREYXRhOihO
U0RhdGEgKilkYXRhIE1JTUVUeXBlOihOU1N0cmluZyAqKU1JTUVUeXBlIHRleHRFbmNvZGluZ05h
bWU6CiAgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+bG9hZGVyKCkubG9hZChGcmFtZUxvYWRSZXF1
ZXN0KF9wcml2YXRlLT5jb3JlRnJhbWUsIHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKSk7CiB9CiAK
LQogLSAodm9pZClsb2FkRGF0YTooTlNEYXRhICopZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcgKilN
SU1FVHlwZSB0ZXh0RW5jb2RpbmdOYW1lOihOU1N0cmluZyAqKWVuY29kaW5nTmFtZSBiYXNlVVJM
OihOU1VSTCAqKWJhc2VVUkwKIHsKICAgICBXZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2tSb3Vu
ZFR3bygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZUlu
dGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwuaApp
bmRleCAwYWFmYjFkNmMwOTNlZjA0MzI5OWY3OWY0ZWE4ZTBhZTZjZmYzYmRkLi41ZWY0N2Y2Mjky
MWRlOWMxMTVhZDcyMjgxMmNiOGNhZjQ2NTBlNjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwuaApAQCAtNzMsNyArNzMsNyBAQCBXZWJDb3JlOjpFZGl0
YWJsZUxpbmtCZWhhdmlvciBjb3JlKFdlYktpdEVkaXRhYmxlTGlua0JlaGF2aW9yKTsKIFdlYkNv
cmU6OlRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3IgY29yZShXZWJUZXh0RGly
ZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yKTsKIAogI2lmIGRlZmluZWQoX19jcGx1c3Bs
dXMpICYmIFBMQVRGT1JNKElPUykKLVBhc3NPd25QdHI8VmVjdG9yPFZlY3RvcjxTdHJpbmc+Pj4g
dmVjdG9yRm9yRGljdGF0aW9uUGhyYXNlc0FycmF5KE5TQXJyYXkgKik7CitWZWN0b3I8VmVjdG9y
PFN0cmluZz4+IHZlY3RvckZvckRpY3RhdGlvblBocmFzZXNBcnJheShOU0FycmF5ICopOwogI2Vu
ZGlmCiAKIFdlYlZpZXcgKmdldFdlYlZpZXcoV2ViRnJhbWUgKndlYkZyYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIuaAppbmRl
eCAyNWIwZWI1YjdlMTAyZjJkOTM2YjRjNjhhNjJjZDE3Y2Y0OGRlMTVlLi5jZDUzYmE2OTE3ZmZm
NTA2YTljNTRhNGNmNzk4YWYwZTMwNzAwZTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5oCkBAIC0yNiw3ICsyNiw2IEBACiAj
aWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiAhUExBVEZPUk0oSU9TKQogCiAjaW1wb3J0IDxX
ZWJDb3JlL0ludFBvaW50Lmg+Ci0jaW1wb3J0IDx3dGYvT3duUHRyLmg+CiAjaW1wb3J0IDx3dGYv
UmVmUHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlld0RhdGEuaAppbmRleCA2YWU5OWJjMWQ1NDQ0MGQ3ODRmNGQ5ODU2NDJkOGE4
N2M1MDNkYjkxLi45ZjFkMWFiMTE0YWYwN2JjMWVhNDkxZmRiYzZlZTQ1ZmYxNGM1ZTViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKKysrIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCkBAIC0zNCw3ICszNCw2IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0xheWVyRmx1c2hTY2hlZHVsZXJDbGllbnQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2ViQ29yZUtleWJvYXJkVUlNb2RlLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgot
I2ltcG9ydCA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNp
bXBvcnQgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KQEAgLTMxOCw3ICszMTcsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBVU0Uo
RElDVEFUSU9OX0FMVEVSTkFUSVZFUykKLSAgICBPd25QdHI8V2ViQ29yZTo6QWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyPiBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPiBtX2FsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlcjsKICNlbmRpZgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4g
c291cmNlQXBwbGljYXRpb25BdWRpdERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3RGF0YS5tbQppbmRleCA5ZWJiMzIwZTViYTQ0ZjhlODM3MGJhNTBiNzI2ODI2YWMwMjVkYzc3
Li44YmQ5ZTQ3ZjJhNGMwMjg4YWQ3MTllODQwNWM4MjJjMmQ2MDFjZTRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0KQEAgLTE2Miw3ICsxNjIsNyBAQCAtIChpZClp
bml0CiAgICAgcGx1Z2luRGF0YWJhc2VDbGllbnRDb3VudCsrOwogCiAjaWYgVVNFKERJQ1RBVElP
Tl9BTFRFUk5BVElWRVMpCi0gICAgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgPSBhZG9w
dFB0cihuZXcgV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKTsKKyAgICBtX2Fs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPigpOwogI2VuZGlmCiAKICAgICByZXR1cm4gc2VsZjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDY2MjU4OTM4ODAxYmQ0MjljNzIzZWJkZTA1M2Rh
YzJhNmFiMzdjZjUuLjgxOTUwZjgyMDM0MGRmOTYwMjY0ZDM3ZjExNmY1NGFiOTk2N2RiNTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29y
ZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAtNDEsNyArNDEsNiBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvSW50U2l6ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZU92ZXJsYXkuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1RpbWVyLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCg==
</data>
<flag name="review"
          id="276028"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251403</attachid>
            <date>2015-04-22 21:38:09 -0700</date>
            <delta_ts>2015-04-22 22:00:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143943-20150422213704.patch</filename>
            <type>text/plain</type>
            <size>36439</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzMTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTM2NzI3NzJjMzg5OTYx
YTJkMTUzNDZmNmYyZTVmYTY5NWNlZGQ5MS4uNDBmMjI1OTRmNGM0Y2Q1OTBhNTgxOGU5OTkyNmI3
NWM2YmQyMmJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE1LTA0LTIyICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgT3duUHRyIGFuZCBQ
YXNzT3duUHRyIHVzZSBmcm9tIFdlYktpdC9jZiwgV2ViS2l0L21hYywgYW5kIFdlYktpdDIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mzk0MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbnNlcnREaWN0YXRpb25QaHJh
c2VzKTogQ2hhbmdlZCB0aGlzIGlPUy1vbmx5CisgICAgICAgIGZ1bmN0aW9uIHRvIHRha2UgYSBW
ZWN0b3I8VmVjdG9yPFN0cmluZz4+JiYgYW5kIG5vdCBpbnZvbHZlIFBhc3NPd25QdHIuCisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldERpY3RhdGlvblBocmFzZXNBc0NoaWxkT2ZFbGVtZW50
KTogQ2hhbmdlZCB0aGlzIGlPUy1vbmx5CisgICAgICAgIGZ1bmN0aW9uIHRvIHRha2UgYSBWZWN0
b3I8VmVjdG9yPFN0cmluZz4+IGFuZCBub3QgaW52b2x2ZSBQYXNzT3duUHRyLiBBbHNvIG1hZGUK
KyAgICAgICAgaXQgdGFrZSBhIHJlZmVyZW5jZSByYXRoZXIgdGhhbiBhIHBvaW50ZXIgdG8gdGhl
IGVsZW1lbnQgYW5kIHNpbXBsaWZ5IHRoZSBjb2RlCisgICAgICAgIGEgYml0IHVzaW5nIG1vZGVy
biBmb3IgbG9vcHMgYW5kIGF1dG8uCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDogRGl0dG8u
CisKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpY3RhdGlvbkNvbW1hbmRJT1M6OkRpY3RhdGlvbkNvbW1hbmRJT1MpOiBU
YWtlCisgICAgICAgIGEgVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiYmIGluc3RlYWQgb2YgYSBQYXNz
T3duUHRyLgorICAgICAgICAoV2ViQ29yZTo6RGljdGF0aW9uQ29tbWFuZElPUzo6fkRpY3RhdGlv
bkNvbW1hbmRJT1MpOiBEZWxldGVkLiBObyBuZWVkIHRvCisgICAgICAgIGV4cGxpY2l0bHkgZGVm
aW5lIHRoaXMuCisgICAgICAgIChXZWJDb3JlOjpEaWN0YXRpb25Db21tYW5kSU9TOjpkb0FwcGx5
KTogVXBkYXRlZCB0byB1c2UgbW9kZXJuIGZvciBsb29wIGFuZAorICAgICAgICB3b3JrIHdpdGgg
YSBWZWN0b3I8VmVjdG9yPFN0cmluZz4+IGluc3RlYWQgb2YgYW4gT3duUHRyLgorICAgICAgICAq
IGVkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuaDogVXBkYXRlZCB0byBub3QgdXNlIFBh
c3NPd25QdHIgYW5kIE93blB0ci4KKyAgICAgICAgQWxzbyBtb2Rlcm5pemVkIGEgYml0IGJ5IHVz
aW5nIG92ZXJyaWRlLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29r
Lmg6IFJldHVybiBhbiBOU1VSTFJlcXVlc3QgKiBpbnN0ZWFkIG9mIGEKKyAgICAgICAgUGFzc093
blB0cjxSZXNvdXJjZVJlcXVlc3Q+IGZyb20gdGhpcyBpT1Mtc3BlY2lmaWMgZnVuY3Rpb24uCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6cmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZCk6IERpdHRvLgorCiAyMDE1
LTA0LTIyICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ3JlYXRl
IFJlbmRlclJ1YnlUZXh0IGZvciA8cnQ+IG9ubHkgd2hlbiB0aGUgcGFyZW50IHJlbmRlcmVyIGlz
IGEgUmVuZGVyUnVieS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cKaW5kZXggYTg0ZjZkMTI1Yjg5ZjVlMGRiN2QxMjc0
MGI2NjllZGI4MGY1ZTIzNS4uZDE0MjlmMDhkMzY5YTQ0Yzc2MWIyNGNiZTk2ZjE0NWQ3NGNmNjYz
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jZi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0wNC0yMiAgRGFyaW4gQWRs
ZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIE93blB0ciBhbmQgUGFzc093
blB0ciB1c2UgZnJvbSBXZWJLaXQvY2YsIFdlYktpdC9tYWMsIGFuZCBXZWJLaXQyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM5NDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudENGLmNwcDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlLgorCiAy
MDE0LTA5LTI1ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmVtb3ZlIFdpbkNFIHBvcnQgZnJvbSB0cnVuawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDk0YmM5
NjQxYTk2YzBiYTBlNjZlYmNjOThhMjBkMjk1MGNlZjU4MjMuLjFlOTljOTY0NTMzN2Q5YWE4OWNj
MGE2MWJiYzYzYTBkNDU1NzEzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAor
MjAxNS0wNC0yMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVt
b3ZlIE93blB0ciBhbmQgUGFzc093blB0ciB1c2UgZnJvbSBXZWJLaXQvY2YsIFdlYktpdC9tYWMs
IGFuZCBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDM5NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFBsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UuaDogUmVtb3ZlZCB1bm5lZWRlZCBp
bmNsdWRlLgorICAgICAgICAqIFBsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oOiBE
aXR0by4KKworICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIu
aDogVXNlIHVuaXF1ZV9wdHIgaW5zdGVhZCBvZgorICAgICAgICBQYXNzT3duUHRyIGZvciB0aGUg
Y3JlYXRlIGZ1bmN0aW9uLiBBbHNvIHR3ZWFrZWQgZm9ybWF0dGluZyBhbmQgcmVtb3ZlZAorICAg
ICAgICB1bm5lZWRlZCBmb3J3YXJkIGRlY2xhcmF0aW9uIG9mIENHUmVjdC4KKyAgICAgICAgKiBQ
bHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLm1tOgorICAgICAgICAoV2ViTmV0
c2NhcGVQbHVnaW5FdmVudEhhbmRsZXI6OmNyZWF0ZSk6IENoYW5nZWQgdG8gdXNlIHVuaXF1ZV9w
dHIgYW5kCisgICAgICAgIG1ha2VfdW5pcXVlLgorCisgICAgICAgICogUGx1Z2lucy9XZWJOZXRz
Y2FwZVBsdWdpblZpZXcuaDogVXNlIHVuaXF1ZV9wdHIgaW5zdGVhZCBvZiBPd25QdHIgZm9yCisg
ICAgICAgIHRoZSBfZXZlbnRIYW5kbGVyIGZpZWxkLgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0
c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgZGVz
dHJveVBsdWdpbl0pOiBDaGFuZ2VkIGNvZGUgdG8gd29yayB3aXRoIHVuaXF1ZV9wdHIuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQubW06IFJlbW92ZWQgdW5u
ZWVkZWQgaW5jbHVkZS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Q
cm92aWRlck1vY2subW06IENoYW5nZWQgdG8gdXNlIG1ha2VfdW5pcXVlLgorICAgICAgICAqIFdl
YlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2tJbnRlcm5hbC5oOiBDaGFuZ2Vk
IHRvIHVzZSB1bmlxdWVfcHRyLgorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAg
ICAgICAgKHZlY3RvckZvckRpY3RhdGlvblBocmFzZXNBcnJheSk6IENoYW5nZWQgdG8gcmV0dXJu
IFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4gYW5kCisgICAgICAgIG5vdCBhIFBhc3NPd25QdHIuIEFs
c28gcmV3cm90ZSB0byBiZSBtdWNoIHNpbXBsZXIsIGFsdGhvdWdoIHRoZXJlIGlzIHN0aWxsIGEK
KyAgICAgICAgcHJlLWV4aXN0aW5nIHByb2JsZW0gaGVyZSB3aGVyZSB0aGlzIGNvdWxkIHB1dCBl
bXB0eSB2ZWN0b3JzIGludG8gdGhlIHJlc3VsdCwKKyAgICAgICAgYW5kIEknbSBwcmV0dHkgc3Vy
ZSB0aGUgY2xpZW50IG5ldmVyIGV4cGVjdHMgYW55IG9mIHRoZSBWZWN0b3I8U3RyaW5nPiB0byBi
ZSBlbXB0eS4KKyAgICAgICAgKC1bV2ViRnJhbWUgX2xvYWREYXRhOk1JTUVUeXBlOnRleHRFbmNv
ZGluZ05hbWU6YmFzZVVSTDp1bnJlYWNoYWJsZVVSTDpdKToKKyAgICAgICAgUmV3cm90ZSBsb2dp
YyB0byBpbnZvbHZlIFdlYkNvcmUgdHlwZXMgYSBiaXQgbGVzczsgb2xkIGNvZGUgd2FzIHJvdW5k
IHRyaXBwaW5nCisgICAgICAgIHRoaW5ncyB0aHJvdWdoIFdlYkNvcmU6OlVSTCBmb3Igbm8gb2J2
aW91cyByZWFzb24uCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwuaDogQ2hh
bmdlZCB2ZWN0b3JGb3JEaWN0YXRpb25QaHJhc2VzQXJyYXkgdG8gcmV0dXJuCisgICAgICAgIGEg
VmVjdG9yPFZlY3RvcjxTdHJpbmc+PiBhbmQgbm90IGEgUGFzc093blB0ci4KKworICAgICAgICAq
IFdlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIuaDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNs
dWRlLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3RGF0YS5oOiBDaGFuZ2VkIG1fYWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyIHRvIGJlIGEKKyAgICAgICAgbV9hbHRlcm5hdGl2ZVRleHRV
SUNvbnRyb2xsZXIuCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3RGF0YS5tbToKKyAgICAgICAg
KC1bV2ViVmlld1ByaXZhdGUgaW5pdF0pOiBVc2UgbWFrZV91bmlxdWUgdG8gaW5pdGlhbGl6ZSBt
X2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci4KKwogMjAxNS0wNC0yMiAgQnJlbnQgRnVsZ2hh
bSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIHNob3Vs
ZCBvbmx5IGFjY2VwdCBSYW5nZSBieSByZWZlcmVuY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyZWU4ODY1NDc2
MGIxOTdiMDE2Njc1NTM4Mjc1ZDljNmFkYmVlMDRiLi4yMjJhMzBiYzUzZDZhZjRkY2QxMWM3YTY0
ZTFkZDZmN2VlYmYzZGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDQtMjIg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBPd25QdHIg
YW5kIFBhc3NPd25QdHIgdXNlIGZyb20gV2ViS2l0L2NmLCBXZWJLaXQvbWFjLCBhbmQgV2ViS2l0
MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzOTQz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdC5oOgorICAgICAgICBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUuCisKIDIwMTUt
MDQtMjIgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgVmlz
aWJsZVNlbGVjdGlvbiBzaG91bGQgb25seSBhY2NlcHQgUmFuZ2UgYnkgcmVmZXJlbmNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggZmUwN2NlZTg1ZjU1OTkyNWIwYjk1MzkwYTkyMTM4
NDNjOWY5MDczZC4uZjIxMzdlNzc4OTBiYjQ1ODAxZjU5YzM3Nzg4MWYwNTc5NjE3NTUwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzg4LDcgKzM4OCw4IEBAIHZvaWQgRWRpdG9y
OjpjbGVhclRleHQoKQogfQogCiAjaWYgUExBVEZPUk0oSU9TKQotdm9pZCBFZGl0b3I6Omluc2Vy
dERpY3RhdGlvblBocmFzZXMoUGFzc093blB0cjxWZWN0b3I8VmVjdG9yPFN0cmluZz4gPiA+IGRp
Y3RhdGlvblBocmFzZXMsIFJldGFpblB0cjxpZD4gbWV0YWRhdGEpCisKK3ZvaWQgRWRpdG9yOjpp
bnNlcnREaWN0YXRpb25QaHJhc2VzKFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4mJiBkaWN0YXRpb25Q
aHJhc2VzLCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhKQogewogICAgIGlmIChtX2ZyYW1lLnNlbGVj
dGlvbigpLmlzTm9uZSgpKQogICAgICAgICByZXR1cm47CkBAIC0zOTYsMTAgKzM5NywxMCBAQCB2
b2lkIEVkaXRvcjo6aW5zZXJ0RGljdGF0aW9uUGhyYXNlcyhQYXNzT3duUHRyPFZlY3RvcjxWZWN0
b3I8U3RyaW5nPiA+ID4gZGljdGF0aQogICAgIGlmIChkaWN0YXRpb25QaHJhc2VzLT5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgYXBwbHlDb21tYW5kKERpY3RhdGlv
bkNvbW1hbmRJT1M6OmNyZWF0ZShkb2N1bWVudCgpLCBkaWN0YXRpb25QaHJhc2VzLCBtZXRhZGF0
YSkpOworICAgIGFwcGx5Q29tbWFuZChEaWN0YXRpb25Db21tYW5kSU9TOjpjcmVhdGUoZG9jdW1l
bnQoKSwgV1RGOjptb3ZlKGRpY3RhdGlvblBocmFzZXMpLCBXVEY6Om1vdmUobWV0YWRhdGEpKSk7
CiB9CiAKLXZvaWQgRWRpdG9yOjpzZXREaWN0YXRpb25QaHJhc2VzQXNDaGlsZE9mRWxlbWVudChQ
YXNzT3duUHRyPFZlY3RvcjxWZWN0b3I8U3RyaW5nPiA+ID4gZGljdGF0aW9uUGhyYXNlcywgUmV0
YWluUHRyPGlkPiBtZXRhZGF0YSwgRWxlbWVudCogZWxlbWVudCkKK3ZvaWQgRWRpdG9yOjpzZXRE
aWN0YXRpb25QaHJhc2VzQXNDaGlsZE9mRWxlbWVudChjb25zdCBWZWN0b3I8VmVjdG9yPFN0cmlu
Zz4+JiBkaWN0YXRpb25QaHJhc2VzLCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhLCBFbGVtZW50JiBl
bGVtZW50KQogewogICAgIC8vIENsZWFyIHRoZSBjb21wb3NpdGlvbi4KICAgICBjbGVhcigpOwpA
QCAtNDEwLDU0ICs0MTEsNTAgQEAgdm9pZCBFZGl0b3I6OnNldERpY3RhdGlvblBocmFzZXNBc0No
aWxkT2ZFbGVtZW50KFBhc3NPd25QdHI8VmVjdG9yPFZlY3RvcjxTdHJpbmcKICAgICAKICAgICBt
X2ZyYW1lLnNlbGVjdGlvbigpLmNsZWFyKCk7CiAgICAgCi0gICAgZWxlbWVudC0+cmVtb3ZlQ2hp
bGRyZW4oKTsKKyAgICBlbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAgICAgCi0gICAgaWYgKGRp
Y3RhdGlvblBocmFzZXMtPmlzRW1wdHkoKSkgeworICAgIGlmIChkaWN0YXRpb25QaHJhc2VzLmlz
RW1wdHkoKSkgewogICAgICAgICBjbGllbnQoKS0+cmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYzsgICAg
CiAgICAgUmVmUHRyPFJhbmdlPiBjb250ZXh0ID0gZG9jdW1lbnQoKS5jcmVhdGVSYW5nZSgpOwot
ICAgIGNvbnRleHQtPnNlbGVjdE5vZGVDb250ZW50cyhlbGVtZW50LCBlYyk7Ci0gICAgCisgICAg
Y29udGV4dC0+c2VsZWN0Tm9kZUNvbnRlbnRzKCZlbGVtZW50LCBlYyk7CisKICAgICBTdHJpbmdC
dWlsZGVyIGRpY3RhdGlvblBocmFzZXNCdWlsZGVyOwotICAgIHNpemVfdCBkaWN0YXRpb25QaHJh
c2VDb3VudCA9IGRpY3RhdGlvblBocmFzZXMtPnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGRpY3RhdGlvblBocmFzZUNvdW50OyBpKyspIHsKLSAgICAgICAgY29uc3QgU3RyaW5n
JiBmaXJzdEludGVycHJldGF0aW9uID0gZGljdGF0aW9uUGhyYXNlcy0+YXQoaSlbMF07Ci0gICAg
ICAgIGRpY3RhdGlvblBocmFzZXNCdWlsZGVyLmFwcGVuZChmaXJzdEludGVycHJldGF0aW9uKTsK
LSAgICB9Ci0gICAgU3RyaW5nIHNlcmlhbGl6ZWREaWN0YXRpb25QaHJhc2VzID0gZGljdGF0aW9u
UGhyYXNlc0J1aWxkZXIudG9TdHJpbmcoKTsKLSAgICAKLSAgICBlbGVtZW50LT5hcHBlbmRDaGls
ZChjcmVhdGVGcmFnbWVudEZyb21UZXh0KCpjb250ZXh0LmdldCgpLCBzZXJpYWxpemVkRGljdGF0
aW9uUGhyYXNlcyksIGVjKTsKLSAgICAKKyAgICBmb3IgKGF1dG8mIGludGVycHJldGF0aW9ucyA6
IGRpY3RhdGlvblBocmFzZXMpCisgICAgICAgIGRpY3RhdGlvblBocmFzZXNCdWlsZGVyLmFwcGVu
ZChpbnRlcnByZXRhdGlvbnNbMF0pOworCisgICAgZWxlbWVudC5hcHBlbmRDaGlsZChjcmVhdGVG
cmFnbWVudEZyb21UZXh0KCpjb250ZXh0LCBkaWN0YXRpb25QaHJhc2VzQnVpbGRlci50b1N0cmlu
ZygpKSwgZWMpOworCiAgICAgLy8gV2UgbmVlZCBhIGxheW91dCBpbiBvcmRlciB0byBhZGQgbWFy
a2VycyBiZWxvdy4KICAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOwotICAgIAotICAgIGlm
ICghZWxlbWVudC0+Zmlyc3RDaGlsZCgpLT5pc1RleHROb2RlKCkpIHsKKworICAgIGlmICghZWxl
bWVudC5maXJzdENoaWxkKCktPmlzVGV4dE5vZGUoKSkgewogICAgICAgICAvLyBTaG91bGRuJ3Qg
aGFwcGVuLgotICAgICAgICBBU1NFUlQoZWxlbWVudC0+Zmlyc3RDaGlsZCgpLT5pc1RleHROb2Rl
KCkpOworICAgICAgICBBU1NFUlQoZWxlbWVudC5maXJzdENoaWxkKCktPmlzVGV4dE5vZGUoKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgICAgIAotICAgIFRleHQqIHRleHROb2RlID0g
c3RhdGljX2Nhc3Q8VGV4dCo+KGVsZW1lbnQtPmZpcnN0Q2hpbGQoKSk7CisKKyAgICBUZXh0JiB0
ZXh0Tm9kZSA9IGRvd25jYXN0PFRleHQ+KCplbGVtZW50LmZpcnN0Q2hpbGQoKSk7CiAgICAgaW50
IHByZXZpb3VzRGljdGF0aW9uUGhyYXNlU3RhcnQgPSAwOwotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZGljdGF0aW9uUGhyYXNlQ291bnQ7IGkrKykgewotICAgICAgICBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgaW50ZXJwcmV0YXRpb25zID0gZGljdGF0aW9uUGhyYXNlcy0+YXQoaSk7CisgICAg
Zm9yIChhdXRvJiBpbnRlcnByZXRhdGlvbnMgOiBkaWN0YXRpb25QaHJhc2VzKSB7CiAgICAgICAg
IGludCBkaWN0YXRpb25QaHJhc2VMZW5ndGggPSBpbnRlcnByZXRhdGlvbnNbMF0ubGVuZ3RoKCk7
CiAgICAgICAgIGludCBkaWN0YXRpb25QaHJhc2VFbmQgPSBwcmV2aW91c0RpY3RhdGlvblBocmFz
ZVN0YXJ0ICsgZGljdGF0aW9uUGhyYXNlTGVuZ3RoOwogICAgICAgICBpZiAoaW50ZXJwcmV0YXRp
b25zLnNpemUoKSA+IDEpIHsKLSAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gZGljdGF0aW9uUGhy
YXNlUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHRleHROb2RlLCBwcmV2aW91c0Rp
Y3RhdGlvblBocmFzZVN0YXJ0LCB0ZXh0Tm9kZSwgZGljdGF0aW9uUGhyYXNlRW5kKTsKLSAgICAg
ICAgICAgIGRvY3VtZW50KCkubWFya2VycygpLmFkZERpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5h
dGl2ZXNNYXJrZXIoZGljdGF0aW9uUGhyYXNlUmFuZ2UuZ2V0KCksIGludGVycHJldGF0aW9ucyk7
CisgICAgICAgICAgICBhdXRvIGRpY3RhdGlvblBocmFzZVJhbmdlID0gUmFuZ2U6OmNyZWF0ZShk
b2N1bWVudCgpLCAmdGV4dE5vZGUsIHByZXZpb3VzRGljdGF0aW9uUGhyYXNlU3RhcnQsICZ0ZXh0
Tm9kZSwgZGljdGF0aW9uUGhyYXNlRW5kKTsKKyAgICAgICAgICAgIGRvY3VtZW50KCkubWFya2Vy
cygpLmFkZERpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXNNYXJrZXIoZGljdGF0aW9uUGhy
YXNlUmFuZ2UucHRyKCksIGludGVycHJldGF0aW9ucyk7CiAgICAgICAgIH0KICAgICAgICAgcHJl
dmlvdXNEaWN0YXRpb25QaHJhc2VTdGFydCA9IGRpY3RhdGlvblBocmFzZUVuZDsKICAgICB9Ci0g
ICAgCi0gICAgUmVmUHRyPFJhbmdlPiByZXN1bHRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1l
bnQoKSwgdGV4dE5vZGUsIDAsIHRleHROb2RlLCB0ZXh0Tm9kZS0+bGVuZ3RoKCkpOwotICAgIGRv
Y3VtZW50KCkubWFya2VycygpLmFkZERpY3RhdGlvblJlc3VsdE1hcmtlcihyZXN1bHRSYW5nZS5n
ZXQoKSwgbWV0YWRhdGEpOwotICAgIAorCisgICAgYXV0byByZXN1bHRSYW5nZSA9IFJhbmdlOjpj
cmVhdGUoZG9jdW1lbnQoKSwgJnRleHROb2RlLCAwLCAmdGV4dE5vZGUsIHRleHROb2RlLmxlbmd0
aCgpKTsKKyAgICBkb2N1bWVudCgpLm1hcmtlcnMoKS5hZGREaWN0YXRpb25SZXN1bHRNYXJrZXIo
cmVzdWx0UmFuZ2UucHRyKCksIG1ldGFkYXRhKTsKKwogICAgIGNsaWVudCgpLT5yZXNwb25kVG9D
aGFuZ2VkQ29udGVudHMoKTsKIH0KKwogI2VuZGlmCiAKIHZvaWQgRWRpdG9yOjpwYXN0ZUFzUGxh
aW5UZXh0KGNvbnN0IFN0cmluZyYgcGFzdGluZ1RleHQsIGJvb2wgc21hcnRSZXBsYWNlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggNzkyYmM0NmE2MzY1M2RkZjE1NzlkODc5OGI5ZWQ5ODAy
OWQ1ODA3OC4uYTU3ZDQyYTA0YWIwYzAwNzY4YTNmMmY0NjNiN2M3OTBkMTJhNmU1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCkBAIC0zMjksOCArMzI5LDggQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY29uZmlybU1hcmtlZFRleHQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldFRleHRBc0NoaWxkT2ZFbGVtZW50KGNvbnN0IFN0cmluZyYsIEVsZW1lbnQqKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRp
bmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBp
bnNlcnREaWN0YXRpb25QaHJhc2VzKFBhc3NPd25QdHI8VmVjdG9yPFZlY3RvcjxTdHJpbmc+ID4g
PiBkaWN0YXRpb25QaHJhc2VzLCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldERpY3RhdGlvblBocmFzZXNBc0NoaWxkT2ZFbGVtZW50KFBhc3NPd25Q
dHI8VmVjdG9yPFZlY3RvcjxTdHJpbmc+ID4gPiBkaWN0YXRpb25QaHJhc2VzLCBSZXRhaW5QdHI8
aWQ+IG1ldGFkYXRhLCBFbGVtZW50KiBlbGVtZW50KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluc2VydERpY3RhdGlvblBocmFzZXMoVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiYmIGRpY3RhdGlv
blBocmFzZXMsIFJldGFpblB0cjxpZD4gbWV0YWRhdGEpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0RGljdGF0aW9uUGhyYXNlc0FzQ2hpbGRPZkVsZW1lbnQoY29uc3QgVmVjdG9yPFZlY3Rv
cjxTdHJpbmc+PiYgZGljdGF0aW9uUGhyYXNlcywgUmV0YWluUHRyPGlkPiBtZXRhZGF0YSwgRWxl
bWVudCYpOwogI2VuZGlmCiAgICAgCiAgICAgdm9pZCBhZGRUb0tpbGxSaW5nKFJhbmdlKiwgYm9v
bCBwcmVwZW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3Rh
dGlvbkNvbW1hbmRJT1MuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9u
Q29tbWFuZElPUy5jcHAKaW5kZXggYWFhYjE0YzcyN2ZmYzQ2YWY5OTIzMTIwZmQxMDg3YzhjMzU4
ZTM3MS4uYzE4ODMzODI3OGYzMjkwYTljYmVjNmI5NmViZDExNjNiNjZiMThiOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAKQEAg
LTM3LDQ1ICszNywzOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLURpY3RhdGlvbkNvbW1h
bmRJT1M6OkRpY3RhdGlvbkNvbW1hbmRJT1MoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzT3duUHRy
PFZlY3RvcjxWZWN0b3I8U3RyaW5nPiA+ID4gZGljdGF0aW9uUGhyYXNlcywgUmV0YWluUHRyPGlk
PiBtZXRhZGF0YSkKK0RpY3RhdGlvbkNvbW1hbmRJT1M6OkRpY3RhdGlvbkNvbW1hbmRJT1MoRG9j
dW1lbnQmIGRvY3VtZW50LCBWZWN0b3I8VmVjdG9yPFN0cmluZz4+JiYgZGljdGF0aW9uUGhyYXNl
cywgUmV0YWluUHRyPGlkPiBtZXRhZGF0YSkKICAgICA6IENvbXBvc2l0ZUVkaXRDb21tYW5kKGRv
Y3VtZW50KQotICAgICwgbV9kaWN0YXRpb25QaHJhc2VzKGRpY3RhdGlvblBocmFzZXMpCi0gICAg
LCBtX21ldGFkYXRhKG1ldGFkYXRhKQotewotfQotCi1EaWN0YXRpb25Db21tYW5kSU9TOjp+RGlj
dGF0aW9uQ29tbWFuZElPUygpCisgICAgLCBtX2RpY3RhdGlvblBocmFzZXMoV1RGOjptb3ZlKGRp
Y3RhdGlvblBocmFzZXMpKQorICAgICwgbV9tZXRhZGF0YShXVEY6Om1vdmUobWV0YWRhdGEpKQog
ewogfQogCiB2b2lkIERpY3RhdGlvbkNvbW1hbmRJT1M6OmRvQXBwbHkoKQogewogICAgIFZpc2li
bGVQb3NpdGlvbiBpbnNlcnRpb25Qb3NpdGlvbihzdGFydGluZ1NlbGVjdGlvbigpLnZpc2libGVT
dGFydCgpKTsKLSAgICAKKwogICAgIHVuc2lnbmVkIHJlc3VsdExlbmd0aCA9IDA7Ci0gICAgc2l6
ZV90IGRpY3RhdGlvblBocmFzZUNvdW50ID0gbV9kaWN0YXRpb25QaHJhc2VzLT5zaXplKCk7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkaWN0YXRpb25QaHJhc2VDb3VudDsgaSsrKSB7Ci0g
ICAgCi0gICAgICAgIGNvbnN0IFN0cmluZyYgZmlyc3RJbnRlcnByZXRhdGlvbiA9IG1fZGljdGF0
aW9uUGhyYXNlcy0+YXQoaSlbMF07CisgICAgZm9yIChhdXRvJiBpbnRlcnByZXRhdGlvbnMgOiBt
X2RpY3RhdGlvblBocmFzZXMpIHsKKyAgICAgICAgY29uc3QgU3RyaW5nJiBmaXJzdEludGVycHJl
dGF0aW9uID0gaW50ZXJwcmV0YXRpb25zWzBdOwogICAgICAgICByZXN1bHRMZW5ndGggKz0gZmly
c3RJbnRlcnByZXRhdGlvbi5sZW5ndGgoKTsKICAgICAgICAgaW5wdXRUZXh0KGZpcnN0SW50ZXJw
cmV0YXRpb24sIHRydWUpOwotICAgICAgICAKLSAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGludGVycHJldGF0aW9ucyA9IG1fZGljdGF0aW9uUGhyYXNlcy0+YXQoaSk7Ci0gICAgICAgIAor
CiAgICAgICAgIGlmIChpbnRlcnByZXRhdGlvbnMuc2l6ZSgpID4gMSkKICAgICAgICAgICAgIGRv
Y3VtZW50KCkubWFya2VycygpLmFkZERpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXNNYXJr
ZXIoZW5kaW5nU2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgaW50ZXJwcmV0
YXRpb25zKTsKLSAgICAgICAgICAgIAorCiAgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNp
YmxlU2VsZWN0aW9uKGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVFbmQoKSkpOwogICAgIH0KLSAg
ICAKKwogICAgIFZpc2libGVQb3NpdGlvbiBhZnRlclJlc3VsdHMoZW5kaW5nU2VsZWN0aW9uKCku
dmlzaWJsZUVuZCgpKTsKLSAgICAKKwogICAgIEVsZW1lbnQqIHJvb3QgPSBhZnRlclJlc3VsdHMu
cm9vdEVkaXRhYmxlRWxlbWVudCgpOworCiAgICAgLy8gRklYTUU6IEFkZCB0aGUgcmVzdWx0IG1h
cmtlciB1c2luZyBhIFBvc2l0aW9uIGNhY2hlZCBiZWZvcmUgcmVzdWx0cyBhcmUgaW5zZXJ0ZWQs
IGluc3RlYWQgb2YgcmVseWluZyBvbiBUZXh0SXRlcmF0b3JzLgogICAgIFJlZlB0cjxSYW5nZT4g
cmFuZ2VUb0VuZCA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgY3JlYXRlTGVnYWN5RWRpdGlu
Z1Bvc2l0aW9uKChOb2RlICopcm9vdCwgMCksIGFmdGVyUmVzdWx0cy5kZWVwRXF1aXZhbGVudCgp
KTsKICAgICBpbnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlVG9F
bmQuZ2V0KCksIHRydWUpOwogICAgIGludCBzdGFydEluZGV4ID0gZW5kSW5kZXggLSByZXN1bHRM
ZW5ndGg7Ci0gICAgCisKICAgICBpZiAoc3RhcnRJbmRleCA+PSAwKSB7CiAgICAgICAgIFJlZlB0
cjxSYW5nZT4gcmVzdWx0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5k
TGVuZ3RoKGRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCksIHN0YXJ0SW5kZXgsIGVuZEluZGV4
LCB0cnVlKTsKICAgICAgICAgZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkRGljdGF0aW9uUmVzdWx0
TWFya2VyKHJlc3VsdFJhbmdlLmdldCgpLCBtX21ldGFkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuaAppbmRleCA2MzFiZmIzZDQyZjZl
ZmQxMjE3NThjMDY2MjkxMGQ4ZThmMGY4OTM1Li5kNjhmYjY0MTQ4MzFiM2VkMWNjYWFjOTFlZGEx
NjQ2MTM2Yjc0NmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0
YXRpb25Db21tYW5kSU9TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0
aW9uQ29tbWFuZElPUy5oCkBAIC0yNyw4ICsyNyw2IEBACiAjZGVmaW5lIERpY3RhdGlvbkNvbW1h
bmRJT1NfaAogCiAjaW1wb3J0ICJDb21wb3NpdGVFZGl0Q29tbWFuZC5oIgotI2ltcG9ydCA8d3Rm
L093blB0ci5oPgotI2ltcG9ydCA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KIAogdHlwZWRlZiBzdHJ1Y3Qgb2JqY19vYmplY3QgKmlkOwpAQCAtMzcsMTkgKzM1
LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGljdGF0aW9uQ29tbWFuZElPUyA6
IHB1YmxpYyBDb21wb3NpdGVFZGl0Q29tbWFuZCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxE
aWN0YXRpb25Db21tYW5kSU9TPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzT3duUHRy
PFZlY3RvcjxWZWN0b3I8U3RyaW5nPiA+ID4gZGljdGF0aW9uUGhyYXNlLCBSZXRhaW5QdHI8aWQ+
IG1ldGFkYXRhKQorICAgIHN0YXRpYyBSZWY8RGljdGF0aW9uQ29tbWFuZElPUz4gY3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCwgVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiYmIGRpY3RhdGlvblBocmFz
ZXMsIFJldGFpblB0cjxpZD4gbWV0YWRhdGEpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBEaWN0YXRpb25Db21tYW5kSU9TKGRvY3VtZW50LCBkaWN0YXRpb25QaHJhc2UsIG1l
dGFkYXRhKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpY3RhdGlvbkNvbW1hbmRJ
T1MoZG9jdW1lbnQsIFdURjo6bW92ZShkaWN0YXRpb25QaHJhc2VzKSwgV1RGOjptb3ZlKG1ldGFk
YXRhKSkpOwogICAgIH0KLSAgICAKLSAgICB2aXJ0dWFsIH5EaWN0YXRpb25Db21tYW5kSU9TKCk7
CisKIHByaXZhdGU6Ci0gICAgRGljdGF0aW9uQ29tbWFuZElPUyhEb2N1bWVudCYgZG9jdW1lbnQs
IFBhc3NPd25QdHI8VmVjdG9yPFZlY3RvcjxTdHJpbmc+ID4gPiBkaWN0YXRpb25QaHJhc2UsIFJl
dGFpblB0cjxpZD4gbWV0YWRhdGEpOwotICAgIAotICAgIHZpcnR1YWwgdm9pZCBkb0FwcGx5KCk7
Ci0gICAgdmlydHVhbCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24oKSBjb25zdCB7IHJldHVybiBF
ZGl0QWN0aW9uRGljdGF0aW9uOyB9Ci0gICAgCi0gICAgT3duUHRyPFZlY3RvcjxWZWN0b3I8U3Ry
aW5nPiA+ID4gbV9kaWN0YXRpb25QaHJhc2VzOworICAgIERpY3RhdGlvbkNvbW1hbmRJT1MoRG9j
dW1lbnQmLCBWZWN0b3I8VmVjdG9yPFN0cmluZz4+JiBkaWN0YXRpb25QaHJhc2VzLCBSZXRhaW5Q
dHI8aWQ+IG1ldGFkYXRhKTsKKworICAgIHZpcnR1YWwgdm9pZCBkb0FwcGx5KCkgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBFZGl0QWN0aW9uRGljdGF0aW9uOyB9CisKKyAgICBWZWN0b3I8VmVjdG9yPFN0cmlu
Zz4+IG1fZGljdGF0aW9uUGhyYXNlczsKICAgICBSZXRhaW5QdHI8aWQ+IG1fbWV0YWRhdGE7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlj
a0xvb2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5o
CmluZGV4IGY1NzYyZjBhMTViYzM1ZTY2Y2JhMDE1NDkxYjc4MDE2ZjhjODViYzYuLmRlMjRmMTMy
ZDQ4ZmQ4MzZiOGRkNmJkZThjOWQxYTBiYjQzZDAzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5oCkBAIC0zMSw3ICszMSw2IEBACiAjaW1w
b3J0ICJRdWlja0xvb2tIYW5kbGVDbGllbnQuaCIKICNpbXBvcnQgIlJlc291cmNlUmVxdWVzdC5o
IgogI2ltcG9ydCA8b2JqYy9vYmpjLXJ1bnRpbWUuaD4KLSNpbXBvcnQgPHd0Zi9QYXNzT3duUHRy
Lmg+CiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAKIE9CSkNfQ0xBU1MgTlNEYXRhOwpAQCAtNDEs
NiArNDAsNyBAQCBPQkpDX0NMQVNTIE5TU2V0OwogT0JKQ19DTEFTUyBOU1N0cmluZzsKIE9CSkNf
Q0xBU1MgTlNVUkw7CiBPQkpDX0NMQVNTIE5TVVJMQ29ubmVjdGlvbjsKK09CSkNfQ0xBU1MgTlNV
UkxSZXF1ZXN0OwogT0JKQ19DTEFTUyBOU1VSTFJlc3BvbnNlOwogT0JKQ19DTEFTUyBRTFByZXZp
ZXdDb252ZXJ0ZXI7CiAKQEAgLTcyLDcgKzcyLDcgQEAgV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcg
KnFsUHJldmlld0NvbnZlcnRlckZpbGVOYW1lRm9yVVJMKE5TVVJMICopOwogV0VCQ09SRV9FWFBP
UlQgTlNTdHJpbmcgKnFsUHJldmlld0NvbnZlcnRlclVUSUZvclVSTChOU1VSTCAqKTsKIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVtb3ZlUUxQcmV2aWV3Q29udmVydGVyRm9yVVJMKE5TVVJMICopOwog
Ci1XRUJDT1JFX0VYUE9SVCBQYXNzT3duUHRyPFJlc291cmNlUmVxdWVzdD4gcmVnaXN0ZXJRTFBy
ZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZChOU1VSTCAqLCBOU1N0cmluZyAqbWltZVR5cGUsIE5TRGF0
YSAqKTsKK1dFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IHJlZ2lzdGVyUUxQ
cmV2aWV3Q29udmVydGVySWZOZWVkZWQoTlNVUkwgKiwgTlNTdHJpbmcgKm1pbWVUeXBlLCBOU0Rh
dGEgKik7CiAKIGNvbnN0IFVSTCBzYWZlUUxVUkxGb3JEb2N1bWVudFVSTEFuZFJlc291cmNlVVJM
KGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkwpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2su
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0KaW5k
ZXggZWU5MDQ5MWNiOWE1OGFiNTQ0OWQ1YTE5OWM1YmIzNWM1OWU0MzdlMi4uOGMwODhmODM3YjA5
YjgzMzEzNWQzMDI3M2FlMGVhYTJiZjA4MmM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQpAQCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQg
V2ViQ29yZTo6cmVtb3ZlUUxQcmV2aWV3Q29udmVydGVyRm9yVVJMKE5TVVJMICp1cmwpCiAgICAg
W1FMQ29udGVudERpY3Rpb25hcnkoKSByZW1vdmVPYmplY3RGb3JLZXk6dXJsXTsKIH0KIAotUGFz
c093blB0cjxSZXNvdXJjZVJlcXVlc3Q+IFdlYkNvcmU6OnJlZ2lzdGVyUUxQcmV2aWV3Q29udmVy
dGVySWZOZWVkZWQoTlNVUkwgKnVybCwgTlNTdHJpbmcgKm1pbWVUeXBlLCBOU0RhdGEgKmRhdGEp
CitSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBXZWJDb3JlOjpyZWdpc3RlclFMUHJldmlld0NvbnZl
cnRlcklmTmVlZGVkKE5TVVJMICp1cmwsIE5TU3RyaW5nICptaW1lVHlwZSwgTlNEYXRhICpkYXRh
KQogewogICAgIFJldGFpblB0cjxOU1N0cmluZz4gdXBkYXRlZE1JTUVUeXBlID0gYWRvcHROUyhX
ZWJDb3JlOjpRTFR5cGVDb3B5QmVzdE1pbWVUeXBlRm9yVVJMQW5kTWltZVR5cGUodXJsLCBtaW1l
VHlwZSkpOwogCkBAIC0yMDIsMTAgKzIwMiwxMCBAQCBQYXNzT3duUHRyPFJlc291cmNlUmVxdWVz
dD4gV2ViQ29yZTo6cmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZChOU1VSTCAqdQog
ICAgICAgICAvLyB0aGUgVVJMIHRoYXQgdGhlIFdlYkRhdGFTb3VyY2Ugd2lsbCBzZWUgZHVyaW5n
IC1kZWFsbG9jLgogICAgICAgICBhZGRRTFByZXZpZXdDb252ZXJ0ZXJXaXRoRmlsZUZvclVSTChb
cmVxdWVzdCBVUkxdLCBjb252ZXJ0ZXIuZ2V0KCksIG5pbCk7CiAKLSAgICAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCkpOworICAgICAgICByZXR1cm4gcmVx
dWVzdDsKICAgICB9CiAKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbmlsOwogfQog
CiBjb25zdCBVUkwgV2ViQ29yZTo6c2FmZVFMVVJMRm9yRG9jdW1lbnRVUkxBbmRSZXNvdXJjZVVS
TChjb25zdCBVUkwmIGRvY3VtZW50VVJMLCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnRDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudENGLmNwcAppbmRleCAwNGZlNzMzMjMyOWRmNDhkODlmYTJiMzUyMmFmYmNkZjdiN2IxMmU0
Li4zYmFiMjU2NmI1NzY2MjQ2NjgxZWM5MGRkYjM4ODk1NmJkMjE2MjNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENG
LmNwcApAQCAtNTQsNyArNTQsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogCi0jaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oIGIvU291
cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oCmluZGV4IDA4MGY5
ZTEzMmM5MzQwN2VhZjQ1N2FmZGI2NDFlM2Y0ZTM5M2Y2MDYuLjEzZTMyYmE2MjBlMzUwN2UwNDJh
OTBlODE3NDQzZDkzYWY2M2I2MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdp
bnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L0hvc3RlZC9Qcm94eUluc3RhbmNlLmgKQEAgLTMyLDcgKzMyLDYgQEAKICNpbXBvcnQgIldlYktp
dFBsdWdpbkhvc3RUeXBlcy5oIgogI2ltcG9ydCA8V2ViQ29yZS9CcmlkZ2VKU0MuaD4KICNpbXBv
cnQgPFdlYkNvcmUvcnVudGltZV9yb290Lmg+Ci0jaW1wb3J0IDx3dGYvT3duUHRyLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
V2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oCmluZGV4IDRmNGNkNTNjNWJhYzA2NzgxOWU5NTA5
YTQ0ODdiNDNmNzEyNWY0YTcuLmY0ZDhmYWI4MWE3NzIzZmQ2Y2VjZmJlMDQ4MTQ3ZGZiOGY5ZTUw
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBl
UGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNj
YXBlUGx1Z2luVmlldy5oCkBAIC0zMiw3ICszMiw2IEBACiAjaW1wb3J0ICJXZWJOZXRzY2FwZVBs
dWdpblBhY2thZ2UuaCIKICNpbXBvcnQgIldlYlBsdWdpbkNvbnRhaW5lckNoZWNrLmgiCiAjaW1w
b3J0IDx3dGYvRm9yd2FyZC5oPgotI2ltcG9ydCA8d3RmL093blB0ci5oPgogI2ltcG9ydCA8d3Rm
L1Bhc3NSZWZQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2Nh
cGVQbHVnaW5FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0
c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIuaAppbmRleCA5ZTMyZTJmYmZiMzZhZWNiMDA5Yzk4MzE3
YjBkODcwZDU1MjA0YWI0Li4xNGI0MWJjZmFhOWRkNjc4YzAwOGI4YTYxZWFhMzNiZWJlNzVjYzA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2lu
RXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2Fw
ZVBsdWdpbkV2ZW50SGFuZGxlci5oCkBAIC0zMywyNiArMzMsMjQgQEAKIEBjbGFzcyBOU0V2ZW50
OwogQGNsYXNzIFdlYk5ldHNjYXBlUGx1Z2luVmlldzsKIAotc3RydWN0IENHUmVjdDsKLQogY2xh
c3MgV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzT3duUHRyPFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyPiBjcmVhdGUoV2ViTmV0c2Nh
cGVQbHVnaW5WaWV3Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJOZXRzY2FwZVBs
dWdpbkV2ZW50SGFuZGxlcj4gY3JlYXRlKFdlYk5ldHNjYXBlUGx1Z2luVmlldyAqKTsKICAgICB2
aXJ0dWFsIH5XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcigpIHsgfQogICAgIAogICAgIHZp
cnR1YWwgdm9pZCBkcmF3UmVjdChDR0NvbnRleHRSZWYsIGNvbnN0IE5TUmVjdCYpID0gMDsKICAg
ICAKLSAgICB2aXJ0dWFsIHZvaWQgbW91c2VEb3duKE5TRXZlbnQqKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIG1vdXNlRHJhZ2dlZChOU0V2ZW50KikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBtb3Vz
ZUVudGVyZWQoTlNFdmVudCopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgbW91c2VFeGl0ZWQoTlNF
dmVudCopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgbW91c2VNb3ZlZChOU0V2ZW50KikgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBtb3VzZVVwKE5TRXZlbnQqKSA9IDA7Ci0gICAgdmlydHVhbCBib29s
IHNjcm9sbFdoZWVsKE5TRXZlbnQqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG1vdXNlRG93bihO
U0V2ZW50ICopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbW91c2VEcmFnZ2VkKE5TRXZlbnQgKikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBtb3VzZUVudGVyZWQoTlNFdmVudCAqKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIG1vdXNlRXhpdGVkKE5TRXZlbnQgKikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBtb3VzZU1vdmVkKE5TRXZlbnQgKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtb3VzZVVwKE5T
RXZlbnQgKikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxXaGVlbChOU0V2ZW50ICopID0g
MDsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQga2V5RG93bihOU0V2ZW50KikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBrZXlVcChOU0V2ZW50KikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBmbGFnc0No
YW5nZWQoTlNFdmVudCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQga2V5RG93bihOU0V2ZW50ICop
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQga2V5VXAoTlNFdmVudCAqKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGZsYWdzQ2hhbmdlZChOU0V2ZW50ICopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3lu
dGhldGljS2V5RG93bldpdGhDb21tYW5kTW9kaWZpZXIoaW50IGtleUNvZGUsIGNoYXIgY2hhcmFj
dGVyKSA9IDA7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGZvY3VzQ2hhbmdlZChib29sIGhhc0Zv
Y3VzKSA9IDA7CkBAIC02MiwxNyArNjAsMTggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
dG9wVGltZXJzKCkgeyB9CiAgICAgCiAgICAgLy8gUmV0dXJucyB0aGUgcGxhdGZvcm0gc3BlY2lm
aWMgd2luZG93IHVzZWQgaW4gTlBQX1NldFdpbmRvdwotICAgIHZpcnR1YWwgdm9pZCogcGxhdGZv
cm1XaW5kb3coTlNXaW5kb3cqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkKiBwbGF0Zm9ybVdpbmRv
dyhOU1dpbmRvdyAqKSA9IDA7CiAgICAgCiAgICAgYm9vbCBjdXJyZW50RXZlbnRJc1VzZXJHZXN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50RXZlbnRJc1VzZXJHZXN0dXJlOyB9CisKIHBy
b3RlY3RlZDoKLSAgICBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcihXZWJOZXRzY2FwZVBs
dWdpblZpZXcqIHBsdWdpblZpZXcpCisgICAgZXhwbGljaXQgV2ViTmV0c2NhcGVQbHVnaW5FdmVu
dEhhbmRsZXIoV2ViTmV0c2NhcGVQbHVnaW5WaWV3ICpwbHVnaW5WaWV3KQogICAgICAgICA6IG1f
cGx1Z2luVmlldyhwbHVnaW5WaWV3KQogICAgICAgICAsIG1fY3VycmVudEV2ZW50SXNVc2VyR2Vz
dHVyZShmYWxzZSkKICAgICB7CiAgICAgfQogICAgIAotICAgIFdlYk5ldHNjYXBlUGx1Z2luVmll
dyogbV9wbHVnaW5WaWV3OworICAgIFdlYk5ldHNjYXBlUGx1Z2luVmlldyAqbV9wbHVnaW5WaWV3
OwogICAgIGJvb2wgbV9jdXJyZW50RXZlbnRJc1VzZXJHZXN0dXJlOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxl
ci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhh
bmRsZXIubW0KaW5kZXggOWMyZGM1MDVlM2ZlZDMyZDY0MTAxZjIxNTE4YzZlZThhMzgwODY5YS4u
N2RmOGU4NzQyZjVhNTMwZjhjYTMzNDc3MGIzZjA5OTNlMmZhNTRiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5k
bGVyLm1tCkBAIC0yOCwyMCArMjgsMTkgQEAKICNpbXBvcnQgIldlYk5ldHNjYXBlUGx1Z2luRXZl
bnRIYW5kbGVyLmgiCiAKICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW1wb3J0IDx3dGYv
UGFzc093blB0ci5oPgogI2ltcG9ydCAiV2ViTmV0c2NhcGVQbHVnaW5WaWV3LmgiCiAjaW1wb3J0
ICJXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNhcmJvbi5oIgogI2ltcG9ydCAiV2ViTmV0
c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYS5oIgogCi1QYXNzT3duUHRyPFdlYk5ldHNjYXBl
UGx1Z2luRXZlbnRIYW5kbGVyPiBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcjo6Y3JlYXRl
KFdlYk5ldHNjYXBlUGx1Z2luVmlldyogcGx1Z2luVmlldykKK3N0ZDo6dW5pcXVlX3B0cjxXZWJO
ZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcj4gV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXI6
OmNyZWF0ZShXZWJOZXRzY2FwZVBsdWdpblZpZXcgKnBsdWdpblZpZXcpCiB7CiAgICAgc3dpdGNo
IChbcGx1Z2luVmlldyBldmVudE1vZGVsXSkgewogI2lmbmRlZiBOUF9OT19DQVJCT04KICAgICAg
ICAgY2FzZSBOUEV2ZW50TW9kZWxDYXJib246Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ2FyYm9uKHBsdWdpblZpZXcpKTsKLSNl
bmRpZiAvLyBOUF9OT19DQVJCT04KKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ2FyYm9uPihwbHVnaW5WaWV3KTsKKyNlbmRp
ZgogICAgICAgICBjYXNlIE5QRXZlbnRNb2RlbENvY29hOgotICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hKHBsdWdpblZpZXcp
KTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYk5ldHNjYXBlUGx1Z2lu
RXZlbnRIYW5kbGVyQ29jb2E+KHBsdWdpblZpZXcpOwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5W
aWV3LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5o
CmluZGV4IGExNGEzZmY1NjFhMWRkN2NhYjJiNjcyYjJiYmI4YjdhNjVjZDgwNzYuLjc4M2YzM2Yx
NzY5MjYwYmEwMGZiZTY0OGU0ZjMxN2I3YmRkOTZjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcuaApAQCAtMjksMTggKzI5LDEzIEBA
CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKICNpbXBvcnQgIldlYkJhc2VOZXRz
Y2FwZVBsdWdpblZpZXcuaCIKLQogI2ltcG9ydCAiV2ViTmV0c2NhcGVDb250YWluZXJDaGVja1By
aXZhdGUuaCIKICNpbXBvcnQgPFdlYktpdExlZ2FjeS9ucGZ1bmN0aW9ucy5oPgogI2ltcG9ydCA8
V2ViS2l0TGVnYWN5L25wYXBpLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8
d3RmL0hhc2hTZXQuaD4KLSNpbXBvcnQgPHd0Zi9Pd25QdHIuaD4KIAotQGNsYXNzIFdlYkRhdGFT
b3VyY2U7Ci1AY2xhc3MgV2ViRnJhbWU7CiBAY2xhc3MgV2ViTmV0c2NhcGVQbHVnaW5QYWNrYWdl
OwotQGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIFBsdWdpblRpbWVyOwogY2xhc3MgV2ViTmV0c2Nh
cGVQbHVnaW5TdHJlYW07CkBAIC04Myw3ICs3OCw3IEBAIHR5cGVkZWYgdW5pb24gUGx1Z2luUG9y
dCB7CiAgICAgR1dvcmxkUHRyIG9mZnNjcmVlbkdXb3JsZDsKICNlbmRpZgogCi0gICAgT3duUHRy
PFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyPiBfZXZlbnRIYW5kbGVyOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcj4gX2V2ZW50SGFuZGxlcjsK
ICAgICAKICAgICBCT09MIGluU2V0V2luZG93OwogICAgIEJPT0wgc2hvdWxkU3RvcFNvb247CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1t
CmluZGV4IDM5MTE4MDAyMDIxNmUyYWRkZjgyMDcyODAyMmZmZjI1NmU4ZWJiYWUuLjk1YWFiOTk0
MGM3YTkxYTIxOWJhYzhkNGZkODNmZDg5Njg2MDgwMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC0xMTg3LDEyICsxMTg3
LDEyIEBAIC0gKHZvaWQpZGVzdHJveVBsdWdpbgogICAgIC8vIFNldHRpbmcgdGhlIHdpbmRvdyB0
eXBlIHRvIDAgZW5zdXJlcyB0aGF0IE5QUF9TZXRXaW5kb3cgd2lsbCBiZSBjYWxsZWQgaWYgdGhl
IHBsdWctaW4gaXMgcmVzdGFydGVkLgogICAgIGxhc3RTZXRXaW5kb3cudHlwZSA9IChOUFdpbmRv
d1R5cGUpMDsKICAgICAKLSAgICBfcGx1Z2luTGF5ZXIgPSAwOworICAgIF9wbHVnaW5MYXllciA9
IG5pbDsKICAgICAKICAgICBbc2VsZiBfZGVzdHJveVBsdWdpbl07CiAgICAgW19wbHVnaW5QYWNr
YWdlLmdldCgpIGNsb3NlXTsKICAgICAKLSAgICBfZXZlbnRIYW5kbGVyLmNsZWFyKCk7CisgICAg
X2V2ZW50SGFuZGxlciA9IG51bGxwdHI7CiB9CiAKIC0gKE5QRXZlbnRNb2RlbClldmVudE1vZGVs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVk
aWFDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVk
aWFDbGllbnQubW0KaW5kZXggMWE2NDQwZDk1ZmEzYWRiNGYyZDk1NzAwZDBiOTFkYWRkN2E4YWRi
YS4uYWVkZDg1M2JkM2RhN2ZhODY3ZjYyNGRlZDA3MWYzOTVhOTEyNTE1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5t
bQpAQCAtMzYsNyArMzYsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VzZXJNZWRpYVJlcXVlc3QuaD4KICNpbXBvcnQgPHd0
Zi9IYXNoTWFwLmg+Ci0jaW1wb3J0IDx3dGYvUGFzc093blB0ci5oPgogI2ltcG9ydCA8d3RmL1Jl
ZlB0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9j
ay5tbQppbmRleCBlYTE2ZjM1MmNiMGFjMWFhYjRkYWUwYzk5NzBiOGRlMzk2NmIwYWMxLi4yNDVk
MjE4MGM4OWYwMWFjOWY5YTkwZjRiMzVmN2Q4NjVjOGVjMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRl
ck1vY2subW0KQEAgLTI2LDcgKzI2LDYgQEAKICNpbXBvcnQgIldlYkRldmljZU9yaWVudGF0aW9u
UHJvdmlkZXJNb2NrSW50ZXJuYWwuaCIKIAogI2ltcG9ydCAiV2ViRGV2aWNlT3JpZW50YXRpb25J
bnRlcm5hbC5oIgotI2ltcG9ydCA8d3RmL1Bhc3NPd25QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKQEAgLTM3LDcgKzM2LDcgQEAgLSAoaWQpaW5pdAogICAgIHNlbGYgPSBbc3Vw
ZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIG1fY29y
ZSA9IGFkb3B0UHRyKG5ldyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2soKSk7CisgICAgbV9j
b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s+KCk7CiAg
ICAgcmV0dXJuIHNlbGY7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2tJbnRlcm5hbC5oIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFs
LmgKaW5kZXggNWFjMzhlNWM3ZjJiZDA4MWI5YzlkYWQ1NjIwNjg0NzFmY2RlZDkxOS4uYjA2YjJj
MWZjN2QwNmIwYjliOGM5YzY2MjQyM2Y4NjZmNDI4YTQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFs
LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblBy
b3ZpZGVyTW9ja0ludGVybmFsLmgKQEAgLTI0LDEyICsyNCwxMCBAQAogICovCiAKICNpbXBvcnQg
IldlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLmgiCi0KICNpbXBvcnQgPFdlYkNvcmUv
RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmg+Ci0jaW1wb3J0IDx3dGYvT3duUHRyLmg+CiAK
IEBpbnRlcmZhY2UgV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2tJbnRlcm5hbCA6IE5T
T2JqZWN0IHsKLSAgICBPd25QdHI8V2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2Nr
PiBtX2NvcmU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9u
Q2xpZW50TW9jaz4gbV9jb3JlOwogfQogCiAtIChpZClpbml0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViRnJhbWUubW0KaW5kZXggZTI4MTBmYmJmODk4YzZlNjI5OWE5MDI4ZDQxOWUzYWFlNDBk
NzE2My4uZWMxNWFjMzUzMzA5OTY4MzJiNGY3NDE1ZTY2YTNmZDFhY2EyNzRmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0yNDAsMzcgKzI0MCwyNSBAQCBUZXh0RGly
ZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yIGNvcmUoV2ViVGV4dERpcmVjdGlvblN1Ym1l
bnVJbmNsdXNpb25CZWhhdgogfQogCiAjaWYgUExBVEZPUk0oSU9TKQotUGFzc093blB0cjxWZWN0
b3I8VmVjdG9yPFN0cmluZz4+PiB2ZWN0b3JGb3JEaWN0YXRpb25QaHJhc2VzQXJyYXkoTlNBcnJh
eSAqZGljdGF0aW9uUGhyYXNlcykKKworVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiB2ZWN0b3JGb3JE
aWN0YXRpb25QaHJhc2VzQXJyYXkoTlNBcnJheSAqZGljdGF0aW9uUGhyYXNlcykKIHsKLSAgICBO
U1VJbnRlZ2VyIGRpY3RhdGlvblBocmFzZXNDb3VudCA9IFtkaWN0YXRpb25QaHJhc2VzIGNvdW50
XTsKLSAgICBpZiAoIWRpY3RhdGlvblBocmFzZXNDb3VudCkKLSAgICAgICAgcmV0dXJuIFBhc3NP
d25QdHI8VmVjdG9yPFZlY3RvcjxTdHJpbmc+ID4gPigpOwotICAgIAotICAgIE93blB0cjxWZWN0
b3I8VmVjdG9yPFN0cmluZz4gPiA+IGRpY3RhdGlvblBocmFzZXNWZWN0b3IgPSBhZG9wdFB0cihu
ZXcgVmVjdG9yPFZlY3RvcjxTdHJpbmc+ID4oZGljdGF0aW9uUGhyYXNlc0NvdW50KSk7Ci0gICAg
Ci0gICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgZGljdGF0aW9uUGhyYXNlc0NvdW50OyBp
KyspIHsKLSAgICAgICAgCi0gICAgICAgIGlkIGRpY3RhdGlvblBocmFzZSA9IFtkaWN0YXRpb25Q
aHJhc2VzIG9iamVjdEF0SW5kZXg6aV07CisgICAgVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiByZXN1
bHQ7CisKKyAgICBmb3IgKGlkIGRpY3RhdGlvblBocmFzZSBpbiBkaWN0YXRpb25QaHJhc2VzKSB7
CiAgICAgICAgIGlmICghW2RpY3RhdGlvblBocmFzZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNs
YXNzXV0pCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAgIE5TQXJyYXkg
KmludGVycHJldGF0aW9uc0FycmF5ID0gKE5TQXJyYXkgKilkaWN0YXRpb25QaHJhc2U7Ci0gICAg
ICAgIFZlY3RvcjxTdHJpbmc+JiBpbnRlcnByZXRhdGlvbnNWZWN0b3IgPSBkaWN0YXRpb25QaHJh
c2VzVmVjdG9yLT5hdChpKTsKLSAgICAgICAgCi0gICAgICAgIE5TVUludGVnZXIgaW50ZXJwcmV0
YXRpb25zQ291bnQgPSBbaW50ZXJwcmV0YXRpb25zQXJyYXkgY291bnRdOwotICAgICAgICAKLSAg
ICAgICAgZm9yIChOU1VJbnRlZ2VyIGogPSAwOyBqIDwgaW50ZXJwcmV0YXRpb25zQ291bnQ7IGor
KykgewotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZCBpbnRlcnByZXRhdGlvbiA9IFtpbnRl
cnByZXRhdGlvbnNBcnJheSBvYmplY3RBdEluZGV4OmpdOworICAgICAgICByZXN1bHQuYXBwZW5k
KFZlY3RvcjxTdHJpbmc+KCkpOworICAgICAgICBmb3IgKGlkIGludGVycHJldGF0aW9uIDogKE5T
QXJyYXkgKilkaWN0YXRpb25QaHJhc2UpIHsKICAgICAgICAgICAgIGlmICghW2ludGVycHJldGF0
aW9uIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCiAgICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGludGVycHJldGF0aW9uc1ZlY3Rvci5h
cHBlbmQoU3RyaW5nKChOU1N0cmluZyAqKWludGVycHJldGF0aW9uKSk7CisgICAgICAgICAgICBy
ZXN1bHQubGFzdCgpLmFwcGVuZCgoTlNTdHJpbmcgKilpbnRlcnByZXRhdGlvbik7CiAgICAgICAg
IH0KICAgICB9CiAgICAgCi0gICAgcmV0dXJuIGRpY3RhdGlvblBocmFzZXNWZWN0b3IucmVsZWFz
ZSgpOworICAgIHJldHVybiByZXN1bHQ7CiB9CisKICNlbmRpZgogCiBAaW1wbGVtZW50YXRpb24g
V2ViRnJhbWUgKFdlYkludGVybmFsKQpAQCAtMTcwNCwxMSArMTY5MiwxMSBAQCAtICh2b2lkKXNl
dERpY3RhdGlvblBocmFzZXM6KE5TQXJyYXkgKilkaWN0YXRpb25QaHJhc2VzIG1ldGFkYXRhOihp
ZCltZXRhZGF0YSBhcwogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIAot
ICAgIFdlYkNvcmU6OkZyYW1lICpmcmFtZSA9IGNvcmUoc2VsZik7CisgICAgYXV0byogZnJhbWUg
PSBjb3JlKHNlbGYpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAg
ICBmcmFtZS0+ZWRpdG9yKCkuc2V0RGljdGF0aW9uUGhyYXNlc0FzQ2hpbGRPZkVsZW1lbnQodmVj
dG9yRm9yRGljdGF0aW9uUGhyYXNlc0FycmF5KGRpY3RhdGlvblBocmFzZXMpLCBtZXRhZGF0YSwg
Y29yZShlbGVtZW50KSk7CisgICAgZnJhbWUtPmVkaXRvcigpLnNldERpY3RhdGlvblBocmFzZXNB
c0NoaWxkT2ZFbGVtZW50KHZlY3RvckZvckRpY3RhdGlvblBocmFzZXNBcnJheShkaWN0YXRpb25Q
aHJhc2VzKSwgbWV0YWRhdGEsICpjb3JlKGVsZW1lbnQpKTsKIH0KIAogLSAoTlNBcnJheSAqKWlu
dGVycHJldGF0aW9uc0ZvckN1cnJlbnRSb290CkBAIC0yNTA3LDMzICsyNDk1LDMyIEBAIHN0YXRp
YyBOU1VSTCAqY3JlYXRlVW5pcXVlV2ViRGF0YVVSTCgpCiAKIC0gKHZvaWQpX2xvYWREYXRhOihO
U0RhdGEgKilkYXRhIE1JTUVUeXBlOihOU1N0cmluZyAqKU1JTUVUeXBlIHRleHRFbmNvZGluZ05h
bWU6KE5TU3RyaW5nICopZW5jb2RpbmdOYW1lIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTCB1bnJl
YWNoYWJsZVVSTDooTlNVUkwgKil1bnJlYWNoYWJsZVVSTAogewotI2lmICFQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmICghcHRocmVhZF9tYWluX25wKCkpCiAgICAgICAg
IHJldHVybiBbW3NlbGYgX3dlYmtpdF9pbnZva2VPbk1haW5UaHJlYWRdIF9sb2FkRGF0YTpkYXRh
IE1JTUVUeXBlOk1JTUVUeXBlIHRleHRFbmNvZGluZ05hbWU6ZW5jb2RpbmdOYW1lIGJhc2VVUkw6
YmFzZVVSTCB1bnJlYWNoYWJsZVVSTDp1bnJlYWNoYWJsZVVSTF07CiAjZW5kaWYKLSAgICAKLSAg
ICBVUkwgcmVzcG9uc2VVUkw7Ci0gICAgaWYgKCFiYXNlVVJMKSB7CisKKyAgICBOU1VSTCAqcmVz
cG9uc2VVUkwgPSBuaWw7CisgICAgaWYgKGJhc2VVUkwpCisgICAgICAgIGJhc2VVUkwgPSBbYmFz
ZVVSTCBhYnNvbHV0ZVVSTF07CisgICAgZWxzZSB7CiAgICAgICAgIGJhc2VVUkwgPSBibGFua1VS
TCgpOwogICAgICAgICByZXNwb25zZVVSTCA9IGNyZWF0ZVVuaXF1ZVdlYkRhdGFVUkwoKTsKICAg
ICB9CiAgICAgCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgaWYgKHNob3VsZFVzZVF1aWNrTG9v
a0Zvck1JTUVUeXBlKE1JTUVUeXBlKSkgewotICAgICAgICBVUkwgcWxVUkwgPSByZXNwb25zZVVS
TDsKLSAgICAgICAgaWYgKHFsVVJMLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHFsVVJMID0gW2Jh
c2VVUkwgYWJzb2x1dGVVUkxdOwotICAgICAgICBPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBxbFJl
cXVlc3QocmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZCgoTlNVUkwgKilxbFVSTCwg
TUlNRVR5cGUsIGRhdGEpKTsKLSAgICAgICAgaWYgKHFsUmVxdWVzdCkgewotICAgICAgICAgICAg
X3ByaXZhdGUtPmNvcmVGcmFtZS0+bG9hZGVyKCkubG9hZChGcmFtZUxvYWRSZXF1ZXN0KF9wcml2
YXRlLT5jb3JlRnJhbWUsICpxbFJlcXVlc3QpKTsKKyAgICAgICAgTlNVUkwgKnF1aWNrTG9va1VS
TCA9IHJlc3BvbnNlVVJMID8gcmVzcG9uc2VVUkwgOiBiYXNlVVJMOworICAgICAgICBpZiAoYXV0
byByZXF1ZXN0ID0gcmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZChxdWlja0xvb2tV
UkwsIE1JTUVUeXBlLCBkYXRhKSkgeworICAgICAgICAgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+
bG9hZGVyKCkubG9hZChGcmFtZUxvYWRSZXF1ZXN0KF9wcml2YXRlLT5jb3JlRnJhbWUsIHJlcXVl
c3QuZ2V0KCkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSNlbmRp
ZiAvLyBVU0UoUVVJQ0tfTE9PSykKKyNlbmRpZgogCi0gICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QoW2Jhc2VVUkwgYWJzb2x1dGVVUkxdKTsKKyAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChi
YXNlVVJMKTsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oTUFDKQogICAgIC8v
IGhhY2sgYmVjYXVzZSBNYWlsIGNoZWNrcyBmb3IgdGhpcyBwcm9wZXJ0eSB0byBkZXRlY3QgZGF0
YSAvIGFyY2hpdmUgbG9hZHMKICAgICBbTlNVUkxQcm90b2NvbCBzZXRQcm9wZXJ0eTpAIiIgZm9y
S2V5OkAiV2ViRGF0YVJlcXVlc3QiIGluUmVxdWVzdDooTlNNdXRhYmxlVVJMUmVxdWVzdCAqKXJl
cXVlc3QubnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KV07CiAjZW5kaWYKQEAgLTI1NDMsNyAr
MjUzMCw2IEBAIC0gKHZvaWQpX2xvYWREYXRhOihOU0RhdGEgKilkYXRhIE1JTUVUeXBlOihOU1N0
cmluZyAqKU1JTUVUeXBlIHRleHRFbmNvZGluZ05hbWU6CiAgICAgX3ByaXZhdGUtPmNvcmVGcmFt
ZS0+bG9hZGVyKCkubG9hZChGcmFtZUxvYWRSZXF1ZXN0KF9wcml2YXRlLT5jb3JlRnJhbWUsIHJl
cXVlc3QsIHN1YnN0aXR1dGVEYXRhKSk7CiB9CiAKLQogLSAodm9pZClsb2FkRGF0YTooTlNEYXRh
ICopZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZSB0ZXh0RW5jb2RpbmdOYW1lOihO
U1N0cmluZyAqKWVuY29kaW5nTmFtZSBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwKIHsKICAgICBX
ZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2tSb3VuZFR3bygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZUludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwuaAppbmRleCAwYWFmYjFkNmMwOTNlZjA0MzI5OWY3
OWY0ZWE4ZTBhZTZjZmYzYmRkLi41ZWY0N2Y2MjkyMWRlOWMxMTVhZDcyMjgxMmNiOGNhZjQ2NTBl
Njc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lSW50ZXJu
YWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwuaApA
QCAtNzMsNyArNzMsNyBAQCBXZWJDb3JlOjpFZGl0YWJsZUxpbmtCZWhhdmlvciBjb3JlKFdlYktp
dEVkaXRhYmxlTGlua0JlaGF2aW9yKTsKIFdlYkNvcmU6OlRleHREaXJlY3Rpb25TdWJtZW51SW5j
bHVzaW9uQmVoYXZpb3IgY29yZShXZWJUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2
aW9yKTsKIAogI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpICYmIFBMQVRGT1JNKElPUykKLVBhc3NP
d25QdHI8VmVjdG9yPFZlY3RvcjxTdHJpbmc+Pj4gdmVjdG9yRm9yRGljdGF0aW9uUGhyYXNlc0Fy
cmF5KE5TQXJyYXkgKik7CitWZWN0b3I8VmVjdG9yPFN0cmluZz4+IHZlY3RvckZvckRpY3RhdGlv
blBocmFzZXNBcnJheShOU0FycmF5ICopOwogI2VuZGlmCiAKIFdlYlZpZXcgKmdldFdlYlZpZXco
V2ViRnJhbWUgKndlYkZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIuaAppbmRleCAyNWIwZWI1YjdlMTAyZjJkOTM2YjRjNjhh
NjJjZDE3Y2Y0OGRlMTVlLi5jZDUzYmE2OTE3ZmZmNTA2YTljNTRhNGNmNzk4YWYwZTMwNzAwZTlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250
cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29u
dHJvbGxlci5oCkBAIC0yNiw3ICsyNiw2IEBACiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAm
JiAhUExBVEZPUk0oSU9TKQogCiAjaW1wb3J0IDxXZWJDb3JlL0ludFBvaW50Lmg+Ci0jaW1wb3J0
IDx3dGYvT3duUHRyLmg+CiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
d0RhdGEuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAppbmRleCA2
YWU5OWJjMWQ1NDQ0MGQ3ODRmNGQ5ODU2NDJkOGE4N2M1MDNkYjkxLi45ZjFkMWFiMTE0YWYwN2Jj
MWVhNDkxZmRiYzZlZTQ1ZmYxNGM1ZTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXdEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3RGF0YS5oCkBAIC0zNCw3ICszNCw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0xheWVyRmx1c2hT
Y2hlZHVsZXJDbGllbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZUtleWJvYXJkVUlNb2Rl
Lmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgotI2ltcG9ydCA8d3RmL1Bhc3NPd25QdHIuaD4K
ICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRpbmdQcmltaXRp
dmVzLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTMxOCw3ICszMTcsNyBA
QCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKLSAg
ICBPd25QdHI8V2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPiBtX2FsdGVybmF0
aXZlVGV4dFVJQ29udHJvbGxlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyPiBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjsKICNl
bmRpZgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gc291cmNlQXBwbGljYXRpb25BdWRpdERhdGE7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQppbmRleCA5ZWJiMzIwZTVi
YTQ0ZjhlODM3MGJhNTBiNzI2ODI2YWMwMjVkYzc3Li44YmQ5ZTQ3ZjJhNGMwMjg4YWQ3MTllODQw
NWM4MjJjMmQ2MDFjZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXdEYXRhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEu
bW0KQEAgLTE2Miw3ICsxNjIsNyBAQCAtIChpZClpbml0CiAgICAgcGx1Z2luRGF0YWJhc2VDbGll
bnRDb3VudCsrOwogCiAjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCi0gICAgbV9hbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgPSBhZG9wdFB0cihuZXcgV2ViQ29yZTo6QWx0ZXJuYXRp
dmVUZXh0VUlDb250cm9sbGVyKTsKKyAgICBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlciA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPigp
OwogI2VuZGlmCiAKICAgICByZXR1cm4gc2VsZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4
IDY2MjU4OTM4ODAxYmQ0MjljNzIzZWJkZTA1M2RhYzJhNmFiMzdjZjUuLjgxOTUwZjgyMDM0MGRm
OTYwMjY0ZDM3ZjExNmY1NGFiOTk2N2RiNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAt
NDEsNyArNDEsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZU92ZXJsYXkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+Ci0jaW5jbHVk
ZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZGluZy5oPgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251407</attachid>
            <date>2015-04-22 22:23:11 -0700</date>
            <delta_ts>2015-04-22 22:35:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143943-20150422222207.patch</filename>
            <type>text/plain</type>
            <size>36525</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzMTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWNmNTAxMTYxOTE4OTc4
NTJjZjE3MTRmZWZkZTg4NWIyYzk4NTAzYS4uZjk4N2VhNmI0OTRlY2JlYTllZWQ2YWYwMjIxYTY5
MDFmODFmZDYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM2IEBACiAyMDE1LTA0LTIyICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAorICAgICAgICBSZW1vdmUgT3duUHRyIGFuZCBQ
YXNzT3duUHRyIHVzZSBmcm9tIFdlYktpdC9jZiwgV2ViS2l0L21hYywgYW5kIFdlYktpdDIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mzk0MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbnNlcnREaWN0YXRpb25QaHJh
c2VzKTogQ2hhbmdlZCB0aGlzIGlPUy1vbmx5CisgICAgICAgIGZ1bmN0aW9uIHRvIHRha2UgYSBW
ZWN0b3I8VmVjdG9yPFN0cmluZz4+JiYgYW5kIG5vdCBpbnZvbHZlIFBhc3NPd25QdHIuCisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldERpY3RhdGlvblBocmFzZXNBc0NoaWxkT2ZFbGVtZW50
KTogQ2hhbmdlZCB0aGlzIGlPUy1vbmx5CisgICAgICAgIGZ1bmN0aW9uIHRvIHRha2UgYSBWZWN0
b3I8VmVjdG9yPFN0cmluZz4+IGFuZCBub3QgaW52b2x2ZSBQYXNzT3duUHRyLiBBbHNvIG1hZGUK
KyAgICAgICAgaXQgdGFrZSBhIHJlZmVyZW5jZSByYXRoZXIgdGhhbiBhIHBvaW50ZXIgdG8gdGhl
IGVsZW1lbnQgYW5kIHNpbXBsaWZ5IHRoZSBjb2RlCisgICAgICAgIGEgYml0IHVzaW5nIG1vZGVy
biBmb3IgbG9vcHMgYW5kIGF1dG8uCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDogRGl0dG8u
CisKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpY3RhdGlvbkNvbW1hbmRJT1M6OkRpY3RhdGlvbkNvbW1hbmRJT1MpOiBU
YWtlCisgICAgICAgIGEgVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiYmIGluc3RlYWQgb2YgYSBQYXNz
T3duUHRyLgorICAgICAgICAoV2ViQ29yZTo6RGljdGF0aW9uQ29tbWFuZElPUzo6fkRpY3RhdGlv
bkNvbW1hbmRJT1MpOiBEZWxldGVkLiBObyBuZWVkIHRvCisgICAgICAgIGV4cGxpY2l0bHkgZGVm
aW5lIHRoaXMuCisgICAgICAgIChXZWJDb3JlOjpEaWN0YXRpb25Db21tYW5kSU9TOjpkb0FwcGx5
KTogVXBkYXRlZCB0byB1c2UgbW9kZXJuIGZvciBsb29wIGFuZAorICAgICAgICB3b3JrIHdpdGgg
YSBWZWN0b3I8VmVjdG9yPFN0cmluZz4+IGluc3RlYWQgb2YgYW4gT3duUHRyLgorICAgICAgICAq
IGVkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuaDogVXBkYXRlZCB0byBub3QgdXNlIFBh
c3NPd25QdHIgYW5kIE93blB0ci4KKyAgICAgICAgQWxzbyBtb2Rlcm5pemVkIGEgYml0IGJ5IHVz
aW5nIG92ZXJyaWRlLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29r
Lmg6IFJldHVybiBhbiBOU1VSTFJlcXVlc3QgKiBpbnN0ZWFkIG9mIGEKKyAgICAgICAgUGFzc093
blB0cjxSZXNvdXJjZVJlcXVlc3Q+IGZyb20gdGhpcyBpT1Mtc3BlY2lmaWMgZnVuY3Rpb24uCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6cmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZCk6IERpdHRvLgorCisyMDE1
LTA0LTIyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKwogICAgICAgICBFbGltaW5h
dGUgcmVtYWluaW5nIHVzZXMgb2YgT3duUHRyIGFuZCBQYXNzT3duUHRyIGluIFdlYkNvcmUgb3V0
c2lkZSB0aGUgZWRpdGluZyBhbmQgcGxhdGZvcm0gZGlyZWN0b3JpZXMKICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mzk0OQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nCmlu
ZGV4IGE4NGY2ZDEyNWI4OWY1ZTBkYjdkMTI3NDBiNjY5ZWRiODBmNWUyMzUuLmQxNDI5ZjA4ZDM2
OWE0NGM3NjFiMjRjYmU5NmYxNDVkNzRjZjY2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2YvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMTUtMDQtMjIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFJlbW92ZSBPd25QdHIgYW5kIFBhc3NPd25QdHIgdXNlIGZyb20gV2ViS2l0L2NmLCBXZWJL
aXQvbWFjLCBhbmQgV2ViS2l0MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQzOTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHA6IFJl
bW92ZWQgdW5uZWVkZWQgaW5jbHVkZS4KKwogMjAxNC0wOS0yNSAgQ3NhYmEgT3N6dHJvZ29uw6Fj
ICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBXaW5DRSBwb3J0IGZyb20gdHJ1
bmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwppbmRleCA5NGJjOTY0MWE5NmMwYmEwZTY2ZWJjYzk4YTIwZDI5NTBj
ZWY1ODIzLi4xZTk5Yzk2NDUzMzdkOWFhODljYzBhNjFiYmM2M2EwZDQ1NTcxM2Q2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTUtMDQtMjIgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBPd25QdHIgYW5kIFBhc3NPd25QdHIgdXNl
IGZyb20gV2ViS2l0L2NmLCBXZWJLaXQvbWFjLCBhbmQgV2ViS2l0MgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzOTQzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9Qcm94eUlu
c3RhbmNlLmg6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZS4KKyAgICAgICAgKiBQbHVnaW5zL1dl
YkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaDogRGl0dG8uCisKKyAgICAgICAgKiBQbHVnaW5zL1dl
Yk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLmg6IFVzZSB1bmlxdWVfcHRyIGluc3RlYWQgb2YK
KyAgICAgICAgUGFzc093blB0ciBmb3IgdGhlIGNyZWF0ZSBmdW5jdGlvbi4gQWxzbyB0d2Vha2Vk
IGZvcm1hdHRpbmcgYW5kIHJlbW92ZWQKKyAgICAgICAgdW5uZWVkZWQgZm9yd2FyZCBkZWNsYXJh
dGlvbiBvZiBDR1JlY3QuCisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50
SGFuZGxlci5tbToKKyAgICAgICAgKFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyOjpjcmVh
dGUpOiBDaGFuZ2VkIHRvIHVzZSB1bmlxdWVfcHRyIGFuZAorICAgICAgICBtYWtlX3VuaXF1ZS4K
KworICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lmg6IFVzZSB1bmlxdWVf
cHRyIGluc3RlYWQgb2YgT3duUHRyIGZvcgorICAgICAgICB0aGUgX2V2ZW50SGFuZGxlciBmaWVs
ZC4KKyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAg
KC1bV2ViTmV0c2NhcGVQbHVnaW5WaWV3IGRlc3Ryb3lQbHVnaW5dKTogQ2hhbmdlZCBjb2RlIHRv
IHdvcmsgd2l0aCB1bmlxdWVfcHRyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVXNl
ck1lZGlhQ2xpZW50Lm1tOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUuCisKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tOiBDaGFuZ2VkIHRvIHVz
ZSBtYWtlX3VuaXF1ZS4KKyAgICAgICAgKiBXZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJv
dmlkZXJNb2NrSW50ZXJuYWwuaDogQ2hhbmdlZCB0byB1c2UgdW5pcXVlX3B0ci4KKworICAgICAg
ICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICh2ZWN0b3JGb3JEaWN0YXRpb25QaHJh
c2VzQXJyYXkpOiBDaGFuZ2VkIHRvIHJldHVybiBWZWN0b3I8VmVjdG9yPFN0cmluZz4+IGFuZAor
ICAgICAgICBub3QgYSBQYXNzT3duUHRyLiBBbHNvIHJld3JvdGUgdG8gYmUgbXVjaCBzaW1wbGVy
LCBhbHRob3VnaCB0aGVyZSBpcyBzdGlsbCBhCisgICAgICAgIHByZS1leGlzdGluZyBwcm9ibGVt
IGhlcmUgd2hlcmUgdGhpcyBjb3VsZCBwdXQgZW1wdHkgdmVjdG9ycyBpbnRvIHRoZSByZXN1bHQs
CisgICAgICAgIGFuZCBJJ20gcHJldHR5IHN1cmUgdGhlIGNsaWVudCBuZXZlciBleHBlY3RzIGFu
eSBvZiB0aGUgVmVjdG9yPFN0cmluZz4gdG8gYmUgZW1wdHkuCisgICAgICAgICgtW1dlYkZyYW1l
IF9sb2FkRGF0YTpNSU1FVHlwZTp0ZXh0RW5jb2RpbmdOYW1lOmJhc2VVUkw6dW5yZWFjaGFibGVV
Ukw6XSk6CisgICAgICAgIFJld3JvdGUgbG9naWMgdG8gaW52b2x2ZSBXZWJDb3JlIHR5cGVzIGEg
Yml0IGxlc3M7IG9sZCBjb2RlIHdhcyByb3VuZCB0cmlwcGluZworICAgICAgICB0aGluZ3MgdGhy
b3VnaCBXZWJDb3JlOjpVUkwgZm9yIG5vIG9idmlvdXMgcmVhc29uLgorCisgICAgICAgICogV2Vi
Vmlldy9XZWJGcmFtZUludGVybmFsLmg6IENoYW5nZWQgdmVjdG9yRm9yRGljdGF0aW9uUGhyYXNl
c0FycmF5IHRvIHJldHVybgorICAgICAgICBhIFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4gYW5kIG5v
dCBhIFBhc3NPd25QdHIuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9s
bGVyLmg6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZS4KKworICAgICAgICAqIFdlYlZpZXcvV2Vi
Vmlld0RhdGEuaDogQ2hhbmdlZCBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlciB0byBiZSBh
CisgICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLgorICAgICAgICAqIFdlYlZp
ZXcvV2ViVmlld0RhdGEubW06CisgICAgICAgICgtW1dlYlZpZXdQcml2YXRlIGluaXRdKTogVXNl
IG1ha2VfdW5pcXVlIHRvIGluaXRpYWxpemUgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIu
CisKIDIwMTUtMDQtMjIgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAg
ICAgICAgVmlzaWJsZVNlbGVjdGlvbiBzaG91bGQgb25seSBhY2NlcHQgUmFuZ2UgYnkgcmVmZXJl
bmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKaW5kZXggMmVlODg2NTQ3NjBiMTk3YjAxNjY3NTUzODI3NWQ5YzZhZGJlZTA0
Yi4uMjIyYTMwYmM1M2Q2YWY0ZGNkMTFjN2E2NGUxZGQ2ZjdlZWJmM2RmZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDE1LTA0LTIyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKworICAgICAgICBSZW1vdmUgT3duUHRyIGFuZCBQYXNzT3duUHRyIHVzZSBmcm9tIFdlYktp
dC9jZiwgV2ViS2l0L21hYywgYW5kIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mzk0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgUmVtb3Zl
ZCB1bm5lZWRlZCBpbmNsdWRlLgorCiAyMDE1LTA0LTIyICBCcmVudCBGdWxnaGFtICA8YmZ1bGdo
YW1AYXBwbGUuY29tPgogCiAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gc2hvdWxkIG9ubHkgYWNj
ZXB0IFJhbmdlIGJ5IHJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGZl
MDdjZWU4NWY1NTk5MjViMGI5NTM5MGE5MjEzODQzYzlmOTA3M2QuLmYyMTM3ZTc3ODkwYmI0NTgw
MWY1OWMzNzc4ODFmMDU3OTYxNzU1MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAg
LTM4OCw3ICszODgsOCBAQCB2b2lkIEVkaXRvcjo6Y2xlYXJUZXh0KCkKIH0KIAogI2lmIFBMQVRG
T1JNKElPUykKLXZvaWQgRWRpdG9yOjppbnNlcnREaWN0YXRpb25QaHJhc2VzKFBhc3NPd25QdHI8
VmVjdG9yPFZlY3RvcjxTdHJpbmc+ID4gPiBkaWN0YXRpb25QaHJhc2VzLCBSZXRhaW5QdHI8aWQ+
IG1ldGFkYXRhKQorCit2b2lkIEVkaXRvcjo6aW5zZXJ0RGljdGF0aW9uUGhyYXNlcyhWZWN0b3I8
VmVjdG9yPFN0cmluZz4+JiYgZGljdGF0aW9uUGhyYXNlcywgUmV0YWluUHRyPGlkPiBtZXRhZGF0
YSkKIHsKICAgICBpZiAobV9mcmFtZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMzk2LDEwICszOTcsMTAgQEAgdm9pZCBFZGl0b3I6Omluc2VydERpY3RhdGlvblBo
cmFzZXMoUGFzc093blB0cjxWZWN0b3I8VmVjdG9yPFN0cmluZz4gPiA+IGRpY3RhdGkKICAgICBp
ZiAoZGljdGF0aW9uUGhyYXNlcy0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgICAg
IAotICAgIGFwcGx5Q29tbWFuZChEaWN0YXRpb25Db21tYW5kSU9TOjpjcmVhdGUoZG9jdW1lbnQo
KSwgZGljdGF0aW9uUGhyYXNlcywgbWV0YWRhdGEpKTsKKyAgICBhcHBseUNvbW1hbmQoRGljdGF0
aW9uQ29tbWFuZElPUzo6Y3JlYXRlKGRvY3VtZW50KCksIFdURjo6bW92ZShkaWN0YXRpb25QaHJh
c2VzKSwgV1RGOjptb3ZlKG1ldGFkYXRhKSkpOwogfQogCi12b2lkIEVkaXRvcjo6c2V0RGljdGF0
aW9uUGhyYXNlc0FzQ2hpbGRPZkVsZW1lbnQoUGFzc093blB0cjxWZWN0b3I8VmVjdG9yPFN0cmlu
Zz4gPiA+IGRpY3RhdGlvblBocmFzZXMsIFJldGFpblB0cjxpZD4gbWV0YWRhdGEsIEVsZW1lbnQq
IGVsZW1lbnQpCit2b2lkIEVkaXRvcjo6c2V0RGljdGF0aW9uUGhyYXNlc0FzQ2hpbGRPZkVsZW1l
bnQoY29uc3QgVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiYgZGljdGF0aW9uUGhyYXNlcywgUmV0YWlu
UHRyPGlkPiBtZXRhZGF0YSwgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICAvLyBDbGVhciB0aGUg
Y29tcG9zaXRpb24uCiAgICAgY2xlYXIoKTsKQEAgLTQxMCw1NCArNDExLDUwIEBAIHZvaWQgRWRp
dG9yOjpzZXREaWN0YXRpb25QaHJhc2VzQXNDaGlsZE9mRWxlbWVudChQYXNzT3duUHRyPFZlY3Rv
cjxWZWN0b3I8U3RyaW5nCiAgICAgCiAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5jbGVhcigpOwog
ICAgIAotICAgIGVsZW1lbnQtPnJlbW92ZUNoaWxkcmVuKCk7CisgICAgZWxlbWVudC5yZW1vdmVD
aGlsZHJlbigpOwogICAgIAotICAgIGlmIChkaWN0YXRpb25QaHJhc2VzLT5pc0VtcHR5KCkpIHsK
KyAgICBpZiAoZGljdGF0aW9uUGhyYXNlcy5pc0VtcHR5KCkpIHsKICAgICAgICAgY2xpZW50KCkt
PnJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IAogICAgIEV4Y2VwdGlvbkNvZGUgZWM7ICAgIAogICAgIFJlZlB0cjxSYW5nZT4gY29udGV4dCA9
IGRvY3VtZW50KCkuY3JlYXRlUmFuZ2UoKTsKLSAgICBjb250ZXh0LT5zZWxlY3ROb2RlQ29udGVu
dHMoZWxlbWVudCwgZWMpOwotICAgIAorICAgIGNvbnRleHQtPnNlbGVjdE5vZGVDb250ZW50cygm
ZWxlbWVudCwgZWMpOworCiAgICAgU3RyaW5nQnVpbGRlciBkaWN0YXRpb25QaHJhc2VzQnVpbGRl
cjsKLSAgICBzaXplX3QgZGljdGF0aW9uUGhyYXNlQ291bnQgPSBkaWN0YXRpb25QaHJhc2VzLT5z
aXplKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkaWN0YXRpb25QaHJhc2VDb3VudDsg
aSsrKSB7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgZmlyc3RJbnRlcnByZXRhdGlvbiA9IGRpY3Rh
dGlvblBocmFzZXMtPmF0KGkpWzBdOwotICAgICAgICBkaWN0YXRpb25QaHJhc2VzQnVpbGRlci5h
cHBlbmQoZmlyc3RJbnRlcnByZXRhdGlvbik7Ci0gICAgfQotICAgIFN0cmluZyBzZXJpYWxpemVk
RGljdGF0aW9uUGhyYXNlcyA9IGRpY3RhdGlvblBocmFzZXNCdWlsZGVyLnRvU3RyaW5nKCk7Ci0g
ICAgCi0gICAgZWxlbWVudC0+YXBwZW5kQ2hpbGQoY3JlYXRlRnJhZ21lbnRGcm9tVGV4dCgqY29u
dGV4dC5nZXQoKSwgc2VyaWFsaXplZERpY3RhdGlvblBocmFzZXMpLCBlYyk7Ci0gICAgCisgICAg
Zm9yIChhdXRvJiBpbnRlcnByZXRhdGlvbnMgOiBkaWN0YXRpb25QaHJhc2VzKQorICAgICAgICBk
aWN0YXRpb25QaHJhc2VzQnVpbGRlci5hcHBlbmQoaW50ZXJwcmV0YXRpb25zWzBdKTsKKworICAg
IGVsZW1lbnQuYXBwZW5kQ2hpbGQoY3JlYXRlRnJhZ21lbnRGcm9tVGV4dCgqY29udGV4dCwgZGlj
dGF0aW9uUGhyYXNlc0J1aWxkZXIudG9TdHJpbmcoKSksIGVjKTsKKwogICAgIC8vIFdlIG5lZWQg
YSBsYXlvdXQgaW4gb3JkZXIgdG8gYWRkIG1hcmtlcnMgYmVsb3cuCiAgICAgZG9jdW1lbnQoKS51
cGRhdGVMYXlvdXQoKTsKLSAgICAKLSAgICBpZiAoIWVsZW1lbnQtPmZpcnN0Q2hpbGQoKS0+aXNU
ZXh0Tm9kZSgpKSB7CisKKyAgICBpZiAoIWVsZW1lbnQuZmlyc3RDaGlsZCgpLT5pc1RleHROb2Rl
KCkpIHsKICAgICAgICAgLy8gU2hvdWxkbid0IGhhcHBlbi4KLSAgICAgICAgQVNTRVJUKGVsZW1l
bnQtPmZpcnN0Q2hpbGQoKS0+aXNUZXh0Tm9kZSgpKTsKKyAgICAgICAgQVNTRVJUKGVsZW1lbnQu
Zmlyc3RDaGlsZCgpLT5pc1RleHROb2RlKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
ICAgICAKLSAgICBUZXh0KiB0ZXh0Tm9kZSA9IHN0YXRpY19jYXN0PFRleHQqPihlbGVtZW50LT5m
aXJzdENoaWxkKCkpOworCisgICAgVGV4dCYgdGV4dE5vZGUgPSBkb3duY2FzdDxUZXh0PigqZWxl
bWVudC5maXJzdENoaWxkKCkpOwogICAgIGludCBwcmV2aW91c0RpY3RhdGlvblBocmFzZVN0YXJ0
ID0gMDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRpY3RhdGlvblBocmFzZUNvdW50OyBp
KyspIHsKLSAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGludGVycHJldGF0aW9ucyA9IGRp
Y3RhdGlvblBocmFzZXMtPmF0KGkpOworICAgIGZvciAoYXV0byYgaW50ZXJwcmV0YXRpb25zIDog
ZGljdGF0aW9uUGhyYXNlcykgewogICAgICAgICBpbnQgZGljdGF0aW9uUGhyYXNlTGVuZ3RoID0g
aW50ZXJwcmV0YXRpb25zWzBdLmxlbmd0aCgpOwogICAgICAgICBpbnQgZGljdGF0aW9uUGhyYXNl
RW5kID0gcHJldmlvdXNEaWN0YXRpb25QaHJhc2VTdGFydCArIGRpY3RhdGlvblBocmFzZUxlbmd0
aDsKICAgICAgICAgaWYgKGludGVycHJldGF0aW9ucy5zaXplKCkgPiAxKSB7Ci0gICAgICAgICAg
ICBSZWZQdHI8UmFuZ2U+IGRpY3RhdGlvblBocmFzZVJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1
bWVudCgpLCB0ZXh0Tm9kZSwgcHJldmlvdXNEaWN0YXRpb25QaHJhc2VTdGFydCwgdGV4dE5vZGUs
IGRpY3RhdGlvblBocmFzZUVuZCk7Ci0gICAgICAgICAgICBkb2N1bWVudCgpLm1hcmtlcnMoKS5h
ZGREaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzTWFya2VyKGRpY3RhdGlvblBocmFzZVJh
bmdlLmdldCgpLCBpbnRlcnByZXRhdGlvbnMpOworICAgICAgICAgICAgYXV0byBkaWN0YXRpb25Q
aHJhc2VSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgJnRleHROb2RlLCBwcmV2aW91
c0RpY3RhdGlvblBocmFzZVN0YXJ0LCAmdGV4dE5vZGUsIGRpY3RhdGlvblBocmFzZUVuZCk7Cisg
ICAgICAgICAgICBkb2N1bWVudCgpLm1hcmtlcnMoKS5hZGREaWN0YXRpb25QaHJhc2VXaXRoQWx0
ZXJuYXRpdmVzTWFya2VyKGRpY3RhdGlvblBocmFzZVJhbmdlLnB0cigpLCBpbnRlcnByZXRhdGlv
bnMpOwogICAgICAgICB9CiAgICAgICAgIHByZXZpb3VzRGljdGF0aW9uUGhyYXNlU3RhcnQgPSBk
aWN0YXRpb25QaHJhc2VFbmQ7CiAgICAgfQotICAgIAotICAgIFJlZlB0cjxSYW5nZT4gcmVzdWx0
UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHRleHROb2RlLCAwLCB0ZXh0Tm9kZSwg
dGV4dE5vZGUtPmxlbmd0aCgpKTsKLSAgICBkb2N1bWVudCgpLm1hcmtlcnMoKS5hZGREaWN0YXRp
b25SZXN1bHRNYXJrZXIocmVzdWx0UmFuZ2UuZ2V0KCksIG1ldGFkYXRhKTsKLSAgICAKKworICAg
IGF1dG8gcmVzdWx0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksICZ0ZXh0Tm9kZSwg
MCwgJnRleHROb2RlLCB0ZXh0Tm9kZS5sZW5ndGgoKSk7CisgICAgZG9jdW1lbnQoKS5tYXJrZXJz
KCkuYWRkRGljdGF0aW9uUmVzdWx0TWFya2VyKHJlc3VsdFJhbmdlLnB0cigpLCBtZXRhZGF0YSk7
CisKICAgICBjbGllbnQoKS0+cmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCk7CiB9CisKICNlbmRp
ZgogCiB2b2lkIEVkaXRvcjo6cGFzdGVBc1BsYWluVGV4dChjb25zdCBTdHJpbmcmIHBhc3RpbmdU
ZXh0LCBib29sIHNtYXJ0UmVwbGFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDc5MmJj
NDZhNjM2NTNkZGYxNTc5ZDg3OThiOWVkOTgwMjlkNTgwNzguLmE1N2Q0MmEwNGFiMGMwMDc2OGEz
ZjJmNDYzYjdjNzkwZDEyYTZlNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtMzI5LDgg
KzMyOSw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbmZpcm1NYXJrZWRU
ZXh0KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUZXh0QXNDaGlsZE9mRWxlbWVudChj
b25zdCBTdHJpbmcmLCBFbGVtZW50Kik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUZXh0
QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24p
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5zZXJ0RGljdGF0aW9uUGhyYXNlcyhQYXNzT3du
UHRyPFZlY3RvcjxWZWN0b3I8U3RyaW5nPiA+ID4gZGljdGF0aW9uUGhyYXNlcywgUmV0YWluUHRy
PGlkPiBtZXRhZGF0YSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREaWN0YXRpb25QaHJh
c2VzQXNDaGlsZE9mRWxlbWVudChQYXNzT3duUHRyPFZlY3RvcjxWZWN0b3I8U3RyaW5nPiA+ID4g
ZGljdGF0aW9uUGhyYXNlcywgUmV0YWluUHRyPGlkPiBtZXRhZGF0YSwgRWxlbWVudCogZWxlbWVu
dCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNlcnREaWN0YXRpb25QaHJhc2VzKFZlY3Rv
cjxWZWN0b3I8U3RyaW5nPj4mJiBkaWN0YXRpb25QaHJhc2VzLCBSZXRhaW5QdHI8aWQ+IG1ldGFk
YXRhKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERpY3RhdGlvblBocmFzZXNBc0NoaWxk
T2ZFbGVtZW50KGNvbnN0IFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4mIGRpY3RhdGlvblBocmFzZXMs
IFJldGFpblB0cjxpZD4gbWV0YWRhdGEsIEVsZW1lbnQmKTsKICNlbmRpZgogICAgIAogICAgIHZv
aWQgYWRkVG9LaWxsUmluZyhSYW5nZSosIGJvb2wgcHJlcGVuZCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwCmluZGV4IGFhYWIxNGM3
MjdmZmM0NmFmOTkyMzEyMGZkMTA4N2M4YzM1OGUzNzEuLmMxODgzMzgyNzhmMzI5MGE5Y2JlYzZi
OTZlYmQxMTYzYjY2YjE4YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9z
L0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9z
L0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwCkBAIC0zNyw0NSArMzcsMzggQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1EaWN0YXRpb25Db21tYW5kSU9TOjpEaWN0YXRpb25Db21tYW5kSU9TKERv
Y3VtZW50JiBkb2N1bWVudCwgUGFzc093blB0cjxWZWN0b3I8VmVjdG9yPFN0cmluZz4gPiA+IGRp
Y3RhdGlvblBocmFzZXMsIFJldGFpblB0cjxpZD4gbWV0YWRhdGEpCitEaWN0YXRpb25Db21tYW5k
SU9TOjpEaWN0YXRpb25Db21tYW5kSU9TKERvY3VtZW50JiBkb2N1bWVudCwgVmVjdG9yPFZlY3Rv
cjxTdHJpbmc+PiYmIGRpY3RhdGlvblBocmFzZXMsIFJldGFpblB0cjxpZD4gbWV0YWRhdGEpCiAg
ICAgOiBDb21wb3NpdGVFZGl0Q29tbWFuZChkb2N1bWVudCkKLSAgICAsIG1fZGljdGF0aW9uUGhy
YXNlcyhkaWN0YXRpb25QaHJhc2VzKQotICAgICwgbV9tZXRhZGF0YShtZXRhZGF0YSkKLXsKLX0K
LQotRGljdGF0aW9uQ29tbWFuZElPUzo6fkRpY3RhdGlvbkNvbW1hbmRJT1MoKQorICAgICwgbV9k
aWN0YXRpb25QaHJhc2VzKFdURjo6bW92ZShkaWN0YXRpb25QaHJhc2VzKSkKKyAgICAsIG1fbWV0
YWRhdGEoV1RGOjptb3ZlKG1ldGFkYXRhKSkKIHsKIH0KIAogdm9pZCBEaWN0YXRpb25Db21tYW5k
SU9TOjpkb0FwcGx5KCkKIHsKICAgICBWaXNpYmxlUG9zaXRpb24gaW5zZXJ0aW9uUG9zaXRpb24o
c3RhcnRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKSk7Ci0gICAgCisKICAgICB1bnNpZ25l
ZCByZXN1bHRMZW5ndGggPSAwOwotICAgIHNpemVfdCBkaWN0YXRpb25QaHJhc2VDb3VudCA9IG1f
ZGljdGF0aW9uUGhyYXNlcy0+c2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGlj
dGF0aW9uUGhyYXNlQ291bnQ7IGkrKykgewotICAgIAotICAgICAgICBjb25zdCBTdHJpbmcmIGZp
cnN0SW50ZXJwcmV0YXRpb24gPSBtX2RpY3RhdGlvblBocmFzZXMtPmF0KGkpWzBdOworICAgIGZv
ciAoYXV0byYgaW50ZXJwcmV0YXRpb25zIDogbV9kaWN0YXRpb25QaHJhc2VzKSB7CisgICAgICAg
IGNvbnN0IFN0cmluZyYgZmlyc3RJbnRlcnByZXRhdGlvbiA9IGludGVycHJldGF0aW9uc1swXTsK
ICAgICAgICAgcmVzdWx0TGVuZ3RoICs9IGZpcnN0SW50ZXJwcmV0YXRpb24ubGVuZ3RoKCk7CiAg
ICAgICAgIGlucHV0VGV4dChmaXJzdEludGVycHJldGF0aW9uLCB0cnVlKTsKLSAgICAgICAgCi0g
ICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpbnRlcnByZXRhdGlvbnMgPSBtX2RpY3RhdGlv
blBocmFzZXMtPmF0KGkpOwotICAgICAgICAKKwogICAgICAgICBpZiAoaW50ZXJwcmV0YXRpb25z
LnNpemUoKSA+IDEpCiAgICAgICAgICAgICBkb2N1bWVudCgpLm1hcmtlcnMoKS5hZGREaWN0YXRp
b25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzTWFya2VyKGVuZGluZ1NlbGVjdGlvbigpLnRvTm9ybWFs
aXplZFJhbmdlKCkuZ2V0KCksIGludGVycHJldGF0aW9ucyk7Ci0gICAgICAgICAgICAKKwogICAg
ICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihlbmRpbmdTZWxlY3Rpb24o
KS52aXNpYmxlRW5kKCkpKTsKICAgICB9Ci0gICAgCisKICAgICBWaXNpYmxlUG9zaXRpb24gYWZ0
ZXJSZXN1bHRzKGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVFbmQoKSk7Ci0gICAgCisKICAgICBF
bGVtZW50KiByb290ID0gYWZ0ZXJSZXN1bHRzLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKKwogICAg
IC8vIEZJWE1FOiBBZGQgdGhlIHJlc3VsdCBtYXJrZXIgdXNpbmcgYSBQb3NpdGlvbiBjYWNoZWQg
YmVmb3JlIHJlc3VsdHMgYXJlIGluc2VydGVkLCBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gVGV4dEl0
ZXJhdG9ycy4KICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlVG9FbmQgPSBSYW5nZTo6Y3JlYXRlKGRv
Y3VtZW50KCksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbigoTm9kZSAqKXJvb3QsIDApLCBh
ZnRlclJlc3VsdHMuZGVlcEVxdWl2YWxlbnQoKSk7CiAgICAgaW50IGVuZEluZGV4ID0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZVRvRW5kLmdldCgpLCB0cnVlKTsKICAgICBpbnQgc3Rh
cnRJbmRleCA9IGVuZEluZGV4IC0gcmVzdWx0TGVuZ3RoOwotICAgIAorCiAgICAgaWYgKHN0YXJ0
SW5kZXggPj0gMCkgewogICAgICAgICBSZWZQdHI8UmFuZ2U+IHJlc3VsdFJhbmdlID0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChkb2N1bWVudCgpLmRvY3VtZW50RWxl
bWVudCgpLCBzdGFydEluZGV4LCBlbmRJbmRleCwgdHJ1ZSk7CiAgICAgICAgIGRvY3VtZW50KCku
bWFya2VycygpLmFkZERpY3RhdGlvblJlc3VsdE1hcmtlcihyZXN1bHRSYW5nZS5nZXQoKSwgbV9t
ZXRhZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRp
b25Db21tYW5kSU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21t
YW5kSU9TLmgKaW5kZXggNjMxYmZiM2Q0MmY2ZWZkMTIxNzU4YzA2NjI5MTBkOGU4ZjBmODkzNS4u
YmY5MDc2NGIzZGJkNzcyZDg1ZjQyODg5YmY2MzFmZjMxNzQ1OGZkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuaApAQCAtMjcsOCArMjcs
NiBAQAogI2RlZmluZSBEaWN0YXRpb25Db21tYW5kSU9TX2gKIAogI2ltcG9ydCAiQ29tcG9zaXRl
RWRpdENvbW1hbmQuaCIKLSNpbXBvcnQgPHd0Zi9Pd25QdHIuaD4KLSNpbXBvcnQgPHd0Zi9QYXNz
T3duUHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIHR5cGVkZWYgc3RydWN0IG9i
amNfb2JqZWN0ICppZDsKQEAgLTM3LDE5ICszNSwxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIERpY3RhdGlvbkNvbW1hbmRJT1MgOiBwdWJsaWMgQ29tcG9zaXRlRWRpdENvbW1hbmQg
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RGljdGF0aW9uQ29tbWFuZElPUz4gY3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCwgUGFzc093blB0cjxWZWN0b3I8VmVjdG9yPFN0cmluZz4gPiA+IGRp
Y3RhdGlvblBocmFzZSwgUmV0YWluUHRyPGlkPiBtZXRhZGF0YSkKKyAgICBzdGF0aWMgUmVmPERp
Y3RhdGlvbkNvbW1hbmRJT1M+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFZlY3RvcjxWZWN0
b3I8U3RyaW5nPj4mJiBkaWN0YXRpb25QaHJhc2VzLCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGljdGF0aW9uQ29tbWFuZElPUyhk
b2N1bWVudCwgZGljdGF0aW9uUGhyYXNlLCBtZXRhZGF0YSkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEaWN0YXRpb25Db21tYW5kSU9TKGRvY3VtZW50LCBXVEY6Om1vdmUoZGljdGF0
aW9uUGhyYXNlcyksIFdURjo6bW92ZShtZXRhZGF0YSkpKTsKICAgICB9Ci0gICAgCi0gICAgdmly
dHVhbCB+RGljdGF0aW9uQ29tbWFuZElPUygpOworCiBwcml2YXRlOgotICAgIERpY3RhdGlvbkNv
bW1hbmRJT1MoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzT3duUHRyPFZlY3RvcjxWZWN0b3I8U3Ry
aW5nPiA+ID4gZGljdGF0aW9uUGhyYXNlLCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhKTsKLSAgICAK
LSAgICB2aXJ0dWFsIHZvaWQgZG9BcHBseSgpOwotICAgIHZpcnR1YWwgRWRpdEFjdGlvbiBlZGl0
aW5nQWN0aW9uKCkgY29uc3QgeyByZXR1cm4gRWRpdEFjdGlvbkRpY3RhdGlvbjsgfQotICAgIAot
ICAgIE93blB0cjxWZWN0b3I8VmVjdG9yPFN0cmluZz4gPiA+IG1fZGljdGF0aW9uUGhyYXNlczsK
KyAgICBEaWN0YXRpb25Db21tYW5kSU9TKERvY3VtZW50JiwgVmVjdG9yPFZlY3RvcjxTdHJpbmc+
PiYmIGRpY3RhdGlvblBocmFzZXMsIFJldGFpblB0cjxpZD4gbWV0YWRhdGEpOworCisgICAgdmly
dHVhbCB2b2lkIGRvQXBwbHkoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIEVkaXRBY3Rpb24gZWRp
dGluZ0FjdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEVkaXRBY3Rpb25EaWN0YXRpb247
IH0KKworICAgIFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4gbV9kaWN0YXRpb25QaHJhc2VzOwogICAg
IFJldGFpblB0cjxpZD4gbV9tZXRhZGF0YTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLmgKaW5kZXggZjU3NjJmMGExNWJjMzVlNjZjYmEw
MTU0OTFiNzgwMTZmOGM4NWJjNi4uZGUyNGYxMzJkNDhmZDgzNmI4ZGQ2YmRlOGM5ZDFhMGJiNDNk
MDNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVp
Y2tMb29rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tM
b29rLmgKQEAgLTMxLDcgKzMxLDYgQEAKICNpbXBvcnQgIlF1aWNrTG9va0hhbmRsZUNsaWVudC5o
IgogI2ltcG9ydCAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW1wb3J0IDxvYmpjL29iamMtcnVudGlt
ZS5oPgotI2ltcG9ydCA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4K
IAogT0JKQ19DTEFTUyBOU0RhdGE7CkBAIC00MSw2ICs0MCw3IEBAIE9CSkNfQ0xBU1MgTlNTZXQ7
CiBPQkpDX0NMQVNTIE5TU3RyaW5nOwogT0JKQ19DTEFTUyBOU1VSTDsKIE9CSkNfQ0xBU1MgTlNV
UkxDb25uZWN0aW9uOworT0JKQ19DTEFTUyBOU1VSTFJlcXVlc3Q7CiBPQkpDX0NMQVNTIE5TVVJM
UmVzcG9uc2U7CiBPQkpDX0NMQVNTIFFMUHJldmlld0NvbnZlcnRlcjsKIApAQCAtNzIsNyArNzIs
NyBAQCBXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqcWxQcmV2aWV3Q29udmVydGVyRmlsZU5hbWVG
b3JVUkwoTlNVUkwgKik7CiBXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqcWxQcmV2aWV3Q29udmVy
dGVyVVRJRm9yVVJMKE5TVVJMICopOwogV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVRTFByZXZp
ZXdDb252ZXJ0ZXJGb3JVUkwoTlNVUkwgKik7CiAKLVdFQkNPUkVfRVhQT1JUIFBhc3NPd25QdHI8
UmVzb3VyY2VSZXF1ZXN0PiByZWdpc3RlclFMUHJldmlld0NvbnZlcnRlcklmTmVlZGVkKE5TVVJM
ICosIE5TU3RyaW5nICptaW1lVHlwZSwgTlNEYXRhICopOworV0VCQ09SRV9FWFBPUlQgUmV0YWlu
UHRyPE5TVVJMUmVxdWVzdD4gcmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZChOU1VS
TCAqLCBOU1N0cmluZyAqbWltZVR5cGUsIE5TRGF0YSAqKTsKIAogY29uc3QgVVJMIHNhZmVRTFVS
TEZvckRvY3VtZW50VVJMQW5kUmVzb3VyY2VVUkwoY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgY29u
c3QgU3RyaW5nJiByZXNvdXJjZVVSTCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQppbmRleCBlZTkwNDkxY2I5YTU4YWI1NDQ5ZDVhMTk5
YzViYjM1YzU5ZTQzN2UyLi44YzA4OGY4MzdiMDliODMzMTM1ZDMwMjczYWUwZWFhMmJmMDgyYzZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xv
b2subW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29r
Lm1tCkBAIC0xODgsNyArMTg4LDcgQEAgdm9pZCBXZWJDb3JlOjpyZW1vdmVRTFByZXZpZXdDb252
ZXJ0ZXJGb3JVUkwoTlNVUkwgKnVybCkKICAgICBbUUxDb250ZW50RGljdGlvbmFyeSgpIHJlbW92
ZU9iamVjdEZvcktleTp1cmxdOwogfQogCi1QYXNzT3duUHRyPFJlc291cmNlUmVxdWVzdD4gV2Vi
Q29yZTo6cmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZChOU1VSTCAqdXJsLCBOU1N0
cmluZyAqbWltZVR5cGUsIE5TRGF0YSAqZGF0YSkKK1JldGFpblB0cjxOU1VSTFJlcXVlc3Q+IFdl
YkNvcmU6OnJlZ2lzdGVyUUxQcmV2aWV3Q29udmVydGVySWZOZWVkZWQoTlNVUkwgKnVybCwgTlNT
dHJpbmcgKm1pbWVUeXBlLCBOU0RhdGEgKmRhdGEpCiB7CiAgICAgUmV0YWluUHRyPE5TU3RyaW5n
PiB1cGRhdGVkTUlNRVR5cGUgPSBhZG9wdE5TKFdlYkNvcmU6OlFMVHlwZUNvcHlCZXN0TWltZVR5
cGVGb3JVUkxBbmRNaW1lVHlwZSh1cmwsIG1pbWVUeXBlKSk7CiAKQEAgLTIwMiwxMCArMjAyLDEw
IEBAIFBhc3NPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBXZWJDb3JlOjpyZWdpc3RlclFMUHJldmll
d0NvbnZlcnRlcklmTmVlZGVkKE5TVVJMICp1CiAgICAgICAgIC8vIHRoZSBVUkwgdGhhdCB0aGUg
V2ViRGF0YVNvdXJjZSB3aWxsIHNlZSBkdXJpbmcgLWRlYWxsb2MuCiAgICAgICAgIGFkZFFMUHJl
dmlld0NvbnZlcnRlcldpdGhGaWxlRm9yVVJMKFtyZXF1ZXN0IFVSTF0sIGNvbnZlcnRlci5nZXQo
KSwgbmlsKTsKIAotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFJlc291cmNlUmVxdWVzdChy
ZXF1ZXN0KSk7CisgICAgICAgIHJldHVybiByZXF1ZXN0OwogICAgIH0KIAotICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBuaWw7CiB9CiAKIGNvbnN0IFVSTCBXZWJDb3JlOjpzYWZlUUxV
UkxGb3JEb2N1bWVudFVSTEFuZFJlc291cmNlVVJMKGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIGNv
bnN0IFN0cmluZyYgcmVzb3VyY2VVUkwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2NmL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2Yv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCmluZGV4IDA0ZmU3MzMyMzI5
ZGY0OGQ4OWZhMmIzNTIyYWZiY2RmN2I3YjEyZTQuLjNiYWIyNTY2YjU3NjYyNDY2ODFlYzkwZGRi
Mzg4OTU2YmQyMTYyM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2YvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2YvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCkBAIC01NCw3ICs1NCw2IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlLmg+CiAKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L0hvc3RlZC9Qcm94eUluc3RhbmNlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3Rl
ZC9Qcm94eUluc3RhbmNlLmgKaW5kZXggMDgwZjllMTMyYzkzNDA3ZWFmNDU3YWZkYjY0MWUzZjRl
MzkzZjYwNi4uMTNlMzJiYTYyMGUzNTA3ZTA0MmE5MGU4MTc0NDNkOTNhZjYzYjYwMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UuaApAQCAt
MzIsNyArMzIsNiBAQAogI2ltcG9ydCAiV2ViS2l0UGx1Z2luSG9zdFR5cGVzLmgiCiAjaW1wb3J0
IDxXZWJDb3JlL0JyaWRnZUpTQy5oPgogI2ltcG9ydCA8V2ViQ29yZS9ydW50aW1lX3Jvb3QuaD4K
LSNpbXBvcnQgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5o
IGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3LmgK
aW5kZXggNGY0Y2Q1M2M1YmFjMDY3ODE5ZTk1MDlhNDQ4N2I0M2Y3MTI1ZjRhNy4uZjRkOGZhYjgx
YTc3MjNmZDZjZWNmYmUwNDgxNDdkZmI4ZjllNTBmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3LmgKQEAgLTMyLDcgKzMy
LDYgQEAKICNpbXBvcnQgIldlYk5ldHNjYXBlUGx1Z2luUGFja2FnZS5oIgogI2ltcG9ydCAiV2Vi
UGx1Z2luQ29udGFpbmVyQ2hlY2suaCIKICNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW1wb3J0
IDx3dGYvT3duUHRyLmg+CiAjaW1wb3J0IDx3dGYvUGFzc1JlZlB0ci5oPgogI2ltcG9ydCA8d3Rm
L1JlZlB0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5oIGIvU291
cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5oCmlu
ZGV4IDllMzJlMmZiZmIzNmFlY2IwMDljOTgzMTdiMGQ4NzBkNTUyMDRhYjQuLjE0YjQxYmNmYWE5
ZGQ2NzhjMDA4YjhhNjFlYWEzM2JlYmU3NWNjMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLmgKQEAgLTMz
LDI2ICszMywyNCBAQAogQGNsYXNzIE5TRXZlbnQ7CiBAY2xhc3MgV2ViTmV0c2NhcGVQbHVnaW5W
aWV3OwogCi1zdHJ1Y3QgQ0dSZWN0OwotCiBjbGFzcyBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFu
ZGxlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8V2ViTmV0c2NhcGVQbHVnaW5F
dmVudEhhbmRsZXI+IGNyZWF0ZShXZWJOZXRzY2FwZVBsdWdpblZpZXcqKTsKKyAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyPiBjcmVhdGUoV2Vi
TmV0c2NhcGVQbHVnaW5WaWV3ICopOwogICAgIHZpcnR1YWwgfldlYk5ldHNjYXBlUGx1Z2luRXZl
bnRIYW5kbGVyKCkgeyB9CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGRyYXdSZWN0KENHQ29udGV4
dFJlZiwgY29uc3QgTlNSZWN0JikgPSAwOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBtb3VzZURv
d24oTlNFdmVudCopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgbW91c2VEcmFnZ2VkKE5TRXZlbnQq
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIG1vdXNlRW50ZXJlZChOU0V2ZW50KikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBtb3VzZUV4aXRlZChOU0V2ZW50KikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBtb3VzZU1vdmVkKE5TRXZlbnQqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIG1vdXNlVXAoTlNF
dmVudCopID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsV2hlZWwoTlNFdmVudCopID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgbW91c2VEb3duKE5TRXZlbnQgKikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBtb3VzZURyYWdnZWQoTlNFdmVudCAqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG1vdXNl
RW50ZXJlZChOU0V2ZW50ICopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbW91c2VFeGl0ZWQoTlNF
dmVudCAqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG1vdXNlTW92ZWQoTlNFdmVudCAqKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIG1vdXNlVXAoTlNFdmVudCAqKSA9IDA7CisgICAgdmlydHVhbCBi
b29sIHNjcm9sbFdoZWVsKE5TRXZlbnQgKikgPSAwOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBr
ZXlEb3duKE5TRXZlbnQqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGtleVVwKE5TRXZlbnQqKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGZsYWdzQ2hhbmdlZChOU0V2ZW50KikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBrZXlEb3duKE5TRXZlbnQgKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBrZXlV
cChOU0V2ZW50ICopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmxhZ3NDaGFuZ2VkKE5TRXZlbnQg
KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzeW50aGV0aWNLZXlEb3duV2l0aENvbW1hbmRNb2Rp
ZmllcihpbnQga2V5Q29kZSwgY2hhciBjaGFyYWN0ZXIpID0gMDsKICAgICAKICAgICB2aXJ0dWFs
IHZvaWQgZm9jdXNDaGFuZ2VkKGJvb2wgaGFzRm9jdXMpID0gMDsKQEAgLTYyLDE3ICs2MCwxOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0b3BUaW1lcnMoKSB7IH0KICAgICAKICAgICAv
LyBSZXR1cm5zIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyB3aW5kb3cgdXNlZCBpbiBOUFBfU2V0V2lu
ZG93Ci0gICAgdmlydHVhbCB2b2lkKiBwbGF0Zm9ybVdpbmRvdyhOU1dpbmRvdyopID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQqIHBsYXRmb3JtV2luZG93KE5TV2luZG93ICopID0gMDsKICAgICAKICAg
ICBib29sIGN1cnJlbnRFdmVudElzVXNlckdlc3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJl
bnRFdmVudElzVXNlckdlc3R1cmU7IH0KKwogcHJvdGVjdGVkOgotICAgIFdlYk5ldHNjYXBlUGx1
Z2luRXZlbnRIYW5kbGVyKFdlYk5ldHNjYXBlUGx1Z2luVmlldyogcGx1Z2luVmlldykKKyAgICBl
eHBsaWNpdCBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcihXZWJOZXRzY2FwZVBsdWdpblZp
ZXcgKnBsdWdpblZpZXcpCiAgICAgICAgIDogbV9wbHVnaW5WaWV3KHBsdWdpblZpZXcpCiAgICAg
ICAgICwgbV9jdXJyZW50RXZlbnRJc1VzZXJHZXN0dXJlKGZhbHNlKQogICAgIHsKICAgICB9CiAg
ICAgCi0gICAgV2ViTmV0c2NhcGVQbHVnaW5WaWV3KiBtX3BsdWdpblZpZXc7CisgICAgV2ViTmV0
c2NhcGVQbHVnaW5WaWV3ICptX3BsdWdpblZpZXc7CiAgICAgYm9vbCBtX2N1cnJlbnRFdmVudElz
VXNlckdlc3R1cmU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1
Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbQppbmRleCA5YzJkYzUwNWUzZmVk
MzJkNjQxMDFmMjE1MThjNmVlOGEzODA4NjlhLi43ZGY4ZTg3NDJmNWE1MzBmOGNhMzM0NzcwYjNm
MDk5M2UyZmE1NGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5l
dHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdp
bnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIubW0KQEAgLTI4LDIwICsyOCwxOSBAQAog
I2ltcG9ydCAiV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIuaCIKIAogI2ltcG9ydCA8d3Rm
L0Fzc2VydGlvbnMuaD4KLSNpbXBvcnQgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW1wb3J0ICJXZWJO
ZXRzY2FwZVBsdWdpblZpZXcuaCIKICNpbXBvcnQgIldlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5k
bGVyQ2FyYm9uLmgiCiAjaW1wb3J0ICJXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29h
LmgiCiAKLVBhc3NPd25QdHI8V2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXI+IFdlYk5ldHNj
YXBlUGx1Z2luRXZlbnRIYW5kbGVyOjpjcmVhdGUoV2ViTmV0c2NhcGVQbHVnaW5WaWV3KiBwbHVn
aW5WaWV3KQorc3RkOjp1bmlxdWVfcHRyPFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyPiBX
ZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcjo6Y3JlYXRlKFdlYk5ldHNjYXBlUGx1Z2luVmll
dyAqcGx1Z2luVmlldykKIHsKICAgICBzd2l0Y2ggKFtwbHVnaW5WaWV3IGV2ZW50TW9kZWxdKSB7
CiAjaWZuZGVmIE5QX05PX0NBUkJPTgogICAgICAgICBjYXNlIE5QRXZlbnRNb2RlbENhcmJvbjoK
LSAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhh
bmRsZXJDYXJib24ocGx1Z2luVmlldykpOwotI2VuZGlmIC8vIE5QX05PX0NBUkJPTgorICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRs
ZXJDYXJib24+KHBsdWdpblZpZXcpOworI2VuZGlmCiAgICAgICAgIGNhc2UgTlBFdmVudE1vZGVs
Q29jb2E6Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYk5ldHNjYXBlUGx1Z2lu
RXZlbnRIYW5kbGVyQ29jb2EocGx1Z2luVmlldykpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8V2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYT4ocGx1Z2luVmll
dyk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1Bs
dWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3LmgKaW5kZXggYTE0YTNmZjU2MWExZGQ3Y2FiMmI2
NzJiMmJiYjhiN2E2NWNkODA3Ni4uNzgzZjMzZjE3NjkyNjBiYTAwZmJlNjQ4ZTRmMzE3YjdiZGQ5
NmM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1
Z2luVmlldy5oCkBAIC0yOSwxOCArMjksMTMgQEAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKIAogI2ltcG9ydCAiV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oIgotCiAjaW1wb3J0
ICJXZWJOZXRzY2FwZUNvbnRhaW5lckNoZWNrUHJpdmF0ZS5oIgogI2ltcG9ydCA8V2ViS2l0TGVn
YWN5L25wZnVuY3Rpb25zLmg+CiAjaW1wb3J0IDxXZWJLaXRMZWdhY3kvbnBhcGkuaD4KICNpbXBv
cnQgPHd0Zi9IYXNoTWFwLmg+CiAjaW1wb3J0IDx3dGYvSGFzaFNldC5oPgotI2ltcG9ydCA8d3Rm
L093blB0ci5oPgogCi1AY2xhc3MgV2ViRGF0YVNvdXJjZTsKLUBjbGFzcyBXZWJGcmFtZTsKIEBj
bGFzcyBXZWJOZXRzY2FwZVBsdWdpblBhY2thZ2U7Ci1AY2xhc3MgV2ViVmlldzsKIAogY2xhc3Mg
UGx1Z2luVGltZXI7CiBjbGFzcyBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTsKQEAgLTgzLDcgKzc4
LDcgQEAgdHlwZWRlZiB1bmlvbiBQbHVnaW5Qb3J0IHsKICAgICBHV29ybGRQdHIgb2Zmc2NyZWVu
R1dvcmxkOwogI2VuZGlmCiAKLSAgICBPd25QdHI8V2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRs
ZXI+IF9ldmVudEhhbmRsZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYk5ldHNjYXBlUGx1Z2lu
RXZlbnRIYW5kbGVyPiBfZXZlbnRIYW5kbGVyOwogICAgIAogICAgIEJPT0wgaW5TZXRXaW5kb3c7
CiAgICAgQk9PTCBzaG91bGRTdG9wU29vbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1
Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggMzkxMTgwMDIwMjE2ZTJhZGRmODIw
NzI4MDIyZmZmMjU2ZThlYmJhZS4uOTVhYWI5OTQwYzdhOTFhMjE5YmFjOGQ0ZmQ4M2ZkODk2ODYw
ODAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpblZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpblZpZXcubW0KQEAgLTExODcsMTIgKzExODcsMTIgQEAgLSAodm9pZClkZXN0cm95UGx1Z2lu
CiAgICAgLy8gU2V0dGluZyB0aGUgd2luZG93IHR5cGUgdG8gMCBlbnN1cmVzIHRoYXQgTlBQX1Nl
dFdpbmRvdyB3aWxsIGJlIGNhbGxlZCBpZiB0aGUgcGx1Zy1pbiBpcyByZXN0YXJ0ZWQuCiAgICAg
bGFzdFNldFdpbmRvdy50eXBlID0gKE5QV2luZG93VHlwZSkwOwogICAgIAotICAgIF9wbHVnaW5M
YXllciA9IDA7CisgICAgX3BsdWdpbkxheWVyID0gbmlsOwogICAgIAogICAgIFtzZWxmIF9kZXN0
cm95UGx1Z2luXTsKICAgICBbX3BsdWdpblBhY2thZ2UuZ2V0KCkgY2xvc2VdOwogICAgIAotICAg
IF9ldmVudEhhbmRsZXIuY2xlYXIoKTsKKyAgICBfZXZlbnRIYW5kbGVyID0gbnVsbHB0cjsKIH0K
IAogLSAoTlBFdmVudE1vZGVsKWV2ZW50TW9kZWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5tbQppbmRleCAxYTY0NDBkOTVm
YTNhZGI0ZjJkOTU3MDBkMGI5MWRhZGQ3YThhZGJhLi5hZWRkODUzYmQzZGE3ZmE4NjdmNjI0ZGVk
MDcxZjM5NWE5MTI1MTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJVc2VyTWVkaWFDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50Lm1tCkBAIC0zNiw3ICszNiw2IEBACiAjaW1wb3J0
IDxXZWJDb3JlL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVXNl
ck1lZGlhUmVxdWVzdC5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KLSNpbXBvcnQgPHd0Zi9Q
YXNzT3duUHRyLmg+CiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNl
T3JpZW50YXRpb25Qcm92aWRlck1vY2subW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tCmluZGV4IGVhMTZmMzUyY2IwYWMxYWFi
NGRhZTBjOTk3MGI4ZGUzOTY2YjBhYzEuLjI0NWQyMTgwYzg5ZjAxYWM5ZjlhOTBmNGIzNWY3ZDg2
NWM4ZWMyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNl
T3JpZW50YXRpb25Qcm92aWRlck1vY2subW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbQpAQCAtMjYsNyArMjYsNiBAQAog
I2ltcG9ydCAiV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2tJbnRlcm5hbC5oIgogCiAj
aW1wb3J0ICJXZWJEZXZpY2VPcmllbnRhdGlvbkludGVybmFsLmgiCi0jaW1wb3J0IDx3dGYvUGFz
c093blB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMzcsNyArMzYsNyBA
QCAtIChpZClpbml0CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCiAg
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgbV9jb3JlID0gYWRvcHRQdHIobmV3IERldmljZU9yaWVu
dGF0aW9uQ2xpZW50TW9jaygpKTsKKyAgICBtX2NvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPERldmlj
ZU9yaWVudGF0aW9uQ2xpZW50TW9jaz4oKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3Zp
ZGVyTW9ja0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRldmljZU9y
aWVudGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwuaAppbmRleCA1YWMzOGU1YzdmMmJkMDgxYjlj
OWRhZDU2MjA2ODQ3MWZjZGVkOTE5Li5iMDZiMmMxZmM3ZDA2YjBiOWI4YzljNjYyNDIzZjg2NmY0
MjhhNDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRldmljZU9y
aWVudGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwuaApAQCAtMjQs
MTIgKzI0LDEwIEBACiAgKi8KIAogI2ltcG9ydCAiV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRl
ck1vY2suaCIKLQogI2ltcG9ydCA8V2ViQ29yZS9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2su
aD4KLSNpbXBvcnQgPHd0Zi9Pd25QdHIuaD4KIAogQGludGVyZmFjZSBXZWJEZXZpY2VPcmllbnRh
dGlvblByb3ZpZGVyTW9ja0ludGVybmFsIDogTlNPYmplY3QgewotICAgIE93blB0cjxXZWJDb3Jl
OjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s+IG1fY29yZTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrPiBtX2NvcmU7CiB9CiAKIC0g
KGlkKWluaXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBlMjgxMGZi
YmY4OThjNmU2Mjk5YTkwMjhkNDE5ZTNhYWU0MGQ3MTYzLi5lYzE1YWMzNTMzMDk5NjgzMmI0Zjc0
MTVlNjZhM2ZkMWFjYTI3NGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0K
QEAgLTI0MCwzNyArMjQwLDI1IEBAIFRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZp
b3IgY29yZShXZWJUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2CiB9CiAKICNpZiBQ
TEFURk9STShJT1MpCi1QYXNzT3duUHRyPFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4+IHZlY3RvckZv
ckRpY3RhdGlvblBocmFzZXNBcnJheShOU0FycmF5ICpkaWN0YXRpb25QaHJhc2VzKQorCitWZWN0
b3I8VmVjdG9yPFN0cmluZz4+IHZlY3RvckZvckRpY3RhdGlvblBocmFzZXNBcnJheShOU0FycmF5
ICpkaWN0YXRpb25QaHJhc2VzKQogewotICAgIE5TVUludGVnZXIgZGljdGF0aW9uUGhyYXNlc0Nv
dW50ID0gW2RpY3RhdGlvblBocmFzZXMgY291bnRdOwotICAgIGlmICghZGljdGF0aW9uUGhyYXNl
c0NvdW50KQotICAgICAgICByZXR1cm4gUGFzc093blB0cjxWZWN0b3I8VmVjdG9yPFN0cmluZz4g
PiA+KCk7Ci0gICAgCi0gICAgT3duUHRyPFZlY3RvcjxWZWN0b3I8U3RyaW5nPiA+ID4gZGljdGF0
aW9uUGhyYXNlc1ZlY3RvciA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8VmVjdG9yPFN0cmluZz4gPihk
aWN0YXRpb25QaHJhc2VzQ291bnQpKTsKLSAgICAKLSAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7
IGkgPCBkaWN0YXRpb25QaHJhc2VzQ291bnQ7IGkrKykgewotICAgICAgICAKLSAgICAgICAgaWQg
ZGljdGF0aW9uUGhyYXNlID0gW2RpY3RhdGlvblBocmFzZXMgb2JqZWN0QXRJbmRleDppXTsKKyAg
ICBWZWN0b3I8VmVjdG9yPFN0cmluZz4+IHJlc3VsdDsKKworICAgIGZvciAoaWQgZGljdGF0aW9u
UGhyYXNlIGluIGRpY3RhdGlvblBocmFzZXMpIHsKICAgICAgICAgaWYgKCFbZGljdGF0aW9uUGhy
YXNlIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAKLSAgICAgICAgTlNBcnJheSAqaW50ZXJwcmV0YXRpb25zQXJyYXkgPSAoTlNB
cnJheSAqKWRpY3RhdGlvblBocmFzZTsKLSAgICAgICAgVmVjdG9yPFN0cmluZz4mIGludGVycHJl
dGF0aW9uc1ZlY3RvciA9IGRpY3RhdGlvblBocmFzZXNWZWN0b3ItPmF0KGkpOwotICAgICAgICAK
LSAgICAgICAgTlNVSW50ZWdlciBpbnRlcnByZXRhdGlvbnNDb3VudCA9IFtpbnRlcnByZXRhdGlv
bnNBcnJheSBjb3VudF07Ci0gICAgICAgIAotICAgICAgICBmb3IgKE5TVUludGVnZXIgaiA9IDA7
IGogPCBpbnRlcnByZXRhdGlvbnNDb3VudDsgaisrKSB7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIGlkIGludGVycHJldGF0aW9uID0gW2ludGVycHJldGF0aW9uc0FycmF5IG9iamVjdEF0SW5k
ZXg6al07CisgICAgICAgIHJlc3VsdC5hcHBlbmQoVmVjdG9yPFN0cmluZz4oKSk7CisgICAgICAg
IGZvciAoaWQgaW50ZXJwcmV0YXRpb24gOiAoTlNBcnJheSAqKWRpY3RhdGlvblBocmFzZSkgewog
ICAgICAgICAgICAgaWYgKCFbaW50ZXJwcmV0YXRpb24gaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcg
Y2xhc3NdXSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgaW50ZXJwcmV0YXRpb25zVmVjdG9yLmFwcGVuZChTdHJpbmcoKE5TU3RyaW5nICopaW50
ZXJwcmV0YXRpb24pKTsKKyAgICAgICAgICAgIHJlc3VsdC5sYXN0KCkuYXBwZW5kKChOU1N0cmlu
ZyAqKWludGVycHJldGF0aW9uKTsKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICByZXR1cm4g
ZGljdGF0aW9uUGhyYXNlc1ZlY3Rvci5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0K
KwogI2VuZGlmCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJGcmFtZSAoV2ViSW50ZXJuYWwpCkBAIC0x
NzA0LDExICsxNjkyLDExIEBAIC0gKHZvaWQpc2V0RGljdGF0aW9uUGhyYXNlczooTlNBcnJheSAq
KWRpY3RhdGlvblBocmFzZXMgbWV0YWRhdGE6KGlkKW1ldGFkYXRhIGFzCiAgICAgaWYgKCFlbGVt
ZW50KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgV2ViQ29yZTo6RnJhbWUgKmZyYW1lID0g
Y29yZShzZWxmKTsKKyAgICBhdXRvKiBmcmFtZSA9IGNvcmUoc2VsZik7CiAgICAgaWYgKCFmcmFt
ZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGZyYW1lLT5lZGl0b3IoKS5zZXREaWN0YXRp
b25QaHJhc2VzQXNDaGlsZE9mRWxlbWVudCh2ZWN0b3JGb3JEaWN0YXRpb25QaHJhc2VzQXJyYXko
ZGljdGF0aW9uUGhyYXNlcyksIG1ldGFkYXRhLCBjb3JlKGVsZW1lbnQpKTsKKyAgICBmcmFtZS0+
ZWRpdG9yKCkuc2V0RGljdGF0aW9uUGhyYXNlc0FzQ2hpbGRPZkVsZW1lbnQodmVjdG9yRm9yRGlj
dGF0aW9uUGhyYXNlc0FycmF5KGRpY3RhdGlvblBocmFzZXMpLCBtZXRhZGF0YSwgKmNvcmUoZWxl
bWVudCkpOwogfQogCiAtIChOU0FycmF5ICopaW50ZXJwcmV0YXRpb25zRm9yQ3VycmVudFJvb3QK
QEAgLTI1MDcsMzMgKzI0OTUsMzIgQEAgc3RhdGljIE5TVVJMICpjcmVhdGVVbmlxdWVXZWJEYXRh
VVJMKCkKIAogLSAodm9pZClfbG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3Ry
aW5nICopTUlNRVR5cGUgdGV4dEVuY29kaW5nTmFtZTooTlNTdHJpbmcgKillbmNvZGluZ05hbWUg
YmFzZVVSTDooTlNVUkwgKiliYXNlVVJMIHVucmVhY2hhYmxlVVJMOihOU1VSTCAqKXVucmVhY2hh
YmxlVVJMCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShNQUMpCiAgICAgaWYg
KCFwdGhyZWFkX21haW5fbnAoKSkKICAgICAgICAgcmV0dXJuIFtbc2VsZiBfd2Via2l0X2ludm9r
ZU9uTWFpblRocmVhZF0gX2xvYWREYXRhOmRhdGEgTUlNRVR5cGU6TUlNRVR5cGUgdGV4dEVuY29k
aW5nTmFtZTplbmNvZGluZ05hbWUgYmFzZVVSTDpiYXNlVVJMIHVucmVhY2hhYmxlVVJMOnVucmVh
Y2hhYmxlVVJMXTsKICNlbmRpZgotICAgIAotICAgIFVSTCByZXNwb25zZVVSTDsKLSAgICBpZiAo
IWJhc2VVUkwpIHsKKworICAgIE5TVVJMICpyZXNwb25zZVVSTCA9IG5pbDsKKyAgICBpZiAoYmFz
ZVVSTCkKKyAgICAgICAgYmFzZVVSTCA9IFtiYXNlVVJMIGFic29sdXRlVVJMXTsKKyAgICBlbHNl
IHsKICAgICAgICAgYmFzZVVSTCA9IGJsYW5rVVJMKCk7CiAgICAgICAgIHJlc3BvbnNlVVJMID0g
Y3JlYXRlVW5pcXVlV2ViRGF0YVVSTCgpOwogICAgIH0KICAgICAKICNpZiBVU0UoUVVJQ0tfTE9P
SykKICAgICBpZiAoc2hvdWxkVXNlUXVpY2tMb29rRm9yTUlNRVR5cGUoTUlNRVR5cGUpKSB7Ci0g
ICAgICAgIFVSTCBxbFVSTCA9IHJlc3BvbnNlVVJMOwotICAgICAgICBpZiAocWxVUkwuaXNFbXB0
eSgpKQotICAgICAgICAgICAgcWxVUkwgPSBbYmFzZVVSTCBhYnNvbHV0ZVVSTF07Ci0gICAgICAg
IE93blB0cjxSZXNvdXJjZVJlcXVlc3Q+IHFsUmVxdWVzdChyZWdpc3RlclFMUHJldmlld0NvbnZl
cnRlcklmTmVlZGVkKChOU1VSTCAqKXFsVVJMLCBNSU1FVHlwZSwgZGF0YSkpOwotICAgICAgICBp
ZiAocWxSZXF1ZXN0KSB7Ci0gICAgICAgICAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5sb2FkZXIo
KS5sb2FkKEZyYW1lTG9hZFJlcXVlc3QoX3ByaXZhdGUtPmNvcmVGcmFtZSwgKnFsUmVxdWVzdCkp
OworICAgICAgICBOU1VSTCAqcXVpY2tMb29rVVJMID0gcmVzcG9uc2VVUkwgPyByZXNwb25zZVVS
TCA6IGJhc2VVUkw7CisgICAgICAgIGlmIChhdXRvIHJlcXVlc3QgPSByZWdpc3RlclFMUHJldmll
d0NvbnZlcnRlcklmTmVlZGVkKHF1aWNrTG9va1VSTCwgTUlNRVR5cGUsIGRhdGEpKSB7CisgICAg
ICAgICAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5sb2FkZXIoKS5sb2FkKEZyYW1lTG9hZFJlcXVl
c3QoX3ByaXZhdGUtPmNvcmVGcmFtZSwgcmVxdWVzdC5nZXQoKSkpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgfQotI2VuZGlmIC8vIFVTRShRVUlDS19MT09LKQorI2VuZGlm
CiAKLSAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChbYmFzZVVSTCBhYnNvbHV0ZVVSTF0pOwor
ICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGJhc2VVUkwpOwogCi0jaWYgIVBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShNQUMpCiAgICAgLy8gaGFjayBiZWNhdXNlIE1haWwgY2hlY2tzIGZv
ciB0aGlzIHByb3BlcnR5IHRvIGRldGVjdCBkYXRhIC8gYXJjaGl2ZSBsb2FkcwogICAgIFtOU1VS
TFByb3RvY29sIHNldFByb3BlcnR5OkAiIiBmb3JLZXk6QCJXZWJEYXRhUmVxdWVzdCIgaW5SZXF1
ZXN0OihOU011dGFibGVVUkxSZXF1ZXN0ICopcmVxdWVzdC5uc1VSTFJlcXVlc3QoVXBkYXRlSFRU
UEJvZHkpXTsKICNlbmRpZgpAQCAtMjU0Myw3ICsyNTMwLDYgQEAgLSAodm9pZClfbG9hZERhdGE6
KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUgdGV4dEVuY29kaW5n
TmFtZToKICAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5sb2FkZXIoKS5sb2FkKEZyYW1lTG9hZFJl
cXVlc3QoX3ByaXZhdGUtPmNvcmVGcmFtZSwgcmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpKTsKIH0K
IAotCiAtICh2b2lkKWxvYWREYXRhOihOU0RhdGEgKilkYXRhIE1JTUVUeXBlOihOU1N0cmluZyAq
KU1JTUVUeXBlIHRleHRFbmNvZGluZ05hbWU6KE5TU3RyaW5nICopZW5jb2RpbmdOYW1lIGJhc2VV
Ukw6KE5TVVJMICopYmFzZVVSTAogewogICAgIFdlYkNvcmVUaHJlYWRWaW9sYXRpb25DaGVja1Jv
dW5kVHdvKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1l
SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVJbnRlcm5hbC5o
CmluZGV4IDBhYWZiMWQ2YzA5M2VmMDQzMjk5Zjc5ZjRlYThlMGFlNmNmZjNiZGQuLjVlZjQ3ZjYy
OTIxZGU5YzExNWFkNzIyODEyY2I4Y2FmNDY1MGU2NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRnJhbWVJbnRlcm5hbC5oCkBAIC03Myw3ICs3Myw3IEBAIFdlYkNvcmU6OkVk
aXRhYmxlTGlua0JlaGF2aW9yIGNvcmUoV2ViS2l0RWRpdGFibGVMaW5rQmVoYXZpb3IpOwogV2Vi
Q29yZTo6VGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25CZWhhdmlvciBjb3JlKFdlYlRleHRE
aXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3IpOwogCiAjaWYgZGVmaW5lZChfX2NwbHVz
cGx1cykgJiYgUExBVEZPUk0oSU9TKQotUGFzc093blB0cjxWZWN0b3I8VmVjdG9yPFN0cmluZz4+
PiB2ZWN0b3JGb3JEaWN0YXRpb25QaHJhc2VzQXJyYXkoTlNBcnJheSAqKTsKK1ZlY3RvcjxWZWN0
b3I8U3RyaW5nPj4gdmVjdG9yRm9yRGljdGF0aW9uUGhyYXNlc0FycmF5KE5TQXJyYXkgKik7CiAj
ZW5kaWYKIAogV2ViVmlldyAqZ2V0V2ViVmlldyhXZWJGcmFtZSAqd2ViRnJhbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5o
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5oCmlu
ZGV4IDI1YjBlYjViN2UxMDJmMmQ5MzZiNGM2OGE2MmNkMTdjZjQ4ZGUxNWUuLmNkNTNiYTY5MTdm
ZmY1MDZhOWM1NGE0Y2Y3OThhZjBlMzA3MDBlOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLmgKQEAgLTI2LDcgKzI2LDYgQEAK
ICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpICYmICFQTEFURk9STShJT1MpCiAKICNpbXBvcnQg
PFdlYkNvcmUvSW50UG9pbnQuaD4KLSNpbXBvcnQgPHd0Zi9Pd25QdHIuaD4KICNpbXBvcnQgPHd0
Zi9SZWZQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3RGF0YS5oCmluZGV4IDZhZTk5YmMxZDU0NDQwZDc4NGY0ZDk4NTY0MmQ4
YTg3YzUwM2RiOTEuLjlmMWQxYWIxMTRhZjA3YmMxZWE0OTFmZGJjNmVlNDVmZjE0YzVlNWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKQEAgLTM0LDcgKzM0LDYgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvTGF5ZXJGbHVzaFNjaGVkdWxlckNsaWVudC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJDb3JlS2V5Ym9hcmRVSU1vZGUuaD4KICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+
Ci0jaW1wb3J0IDx3dGYvUGFzc093blB0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgog
I2ltcG9ydCA8d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgpAQCAtMzE4LDcgKzMxNyw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFVT
RShESUNUQVRJT05fQUxURVJOQVRJVkVTKQotICAgIE93blB0cjxXZWJDb3JlOjpBbHRlcm5hdGl2
ZVRleHRVSUNvbnRyb2xsZXI+IG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+IG1fYWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOwogI2VuZGlmCiAKICAgICBSZXRhaW5QdHI8TlNEYXRh
PiBzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXdEYXRhLm1tCmluZGV4IDllYmIzMjBlNWJhNDRmOGU4MzcwYmE1MGI3MjY4MjZhYzAyNWRj
NzcuLjhiZDllNDdmMmE0YzAyODhhZDcxOWU4NDA1YzgyMmMyZDYwMWNlNGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0KKysrIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQpAQCAtMTYyLDcgKzE2Miw3IEBAIC0gKGlk
KWluaXQKICAgICBwbHVnaW5EYXRhYmFzZUNsaWVudENvdW50Kys7CiAKICNpZiBVU0UoRElDVEFU
SU9OX0FMVEVSTkFUSVZFUykKLSAgICBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlciA9IGFk
b3B0UHRyKG5ldyBXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIpOworICAgIG1f
YWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpB
bHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+KCk7CiAjZW5kaWYKIAogICAgIHJldHVybiBzZWxm
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKaW5kZXggNjYyNTg5Mzg4MDFiZDQyOWM3MjNlYmRlMDUz
ZGFjMmE2YWIzN2NmNS4uODE5NTBmODIwMzQwZGY5NjAyNjRkMzdmMTE2ZjU0YWI5OTY3ZGI1MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCkBAIC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9JbnRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlT3ZlcmxheS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvVGltZXIuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251408</attachid>
            <date>2015-04-22 22:34:44 -0700</date>
            <delta_ts>2015-04-22 22:34:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143943-20150422223340.patch</filename>
            <type>text/plain</type>
            <size>36382</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzMTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y1OGEwODRlODUzODQw
Mjk4OWUzNGU3ODcyYTBmMTFjNWQxZjEzOS4uOTZhM2NhMDU0MjYxYjY0OGQ3MjRiY2UxMTMyNDJj
NTBiZWY1MTJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE1LTA0LTIyICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgT3duUHRyIGFuZCBQ
YXNzT3duUHRyIHVzZSBmcm9tIFdlYktpdC9jZiwgV2ViS2l0L21hYywgYW5kIFdlYktpdDIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mzk0MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbnNlcnREaWN0YXRpb25QaHJh
c2VzKTogQ2hhbmdlZCB0aGlzIGlPUy1vbmx5CisgICAgICAgIGZ1bmN0aW9uIHRvIHRha2UgYSBW
ZWN0b3I8VmVjdG9yPFN0cmluZz4+JiYgYW5kIG5vdCBpbnZvbHZlIFBhc3NPd25QdHIuCisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldERpY3RhdGlvblBocmFzZXNBc0NoaWxkT2ZFbGVtZW50
KTogQ2hhbmdlZCB0aGlzIGlPUy1vbmx5CisgICAgICAgIGZ1bmN0aW9uIHRvIHRha2UgYSBWZWN0
b3I8VmVjdG9yPFN0cmluZz4+IGFuZCBub3QgaW52b2x2ZSBQYXNzT3duUHRyLiBBbHNvIG1hZGUK
KyAgICAgICAgaXQgdGFrZSBhIHJlZmVyZW5jZSByYXRoZXIgdGhhbiBhIHBvaW50ZXIgdG8gdGhl
IGVsZW1lbnQgYW5kIHNpbXBsaWZ5IHRoZSBjb2RlCisgICAgICAgIGEgYml0IHVzaW5nIG1vZGVy
biBmb3IgbG9vcHMgYW5kIGF1dG8uCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDogRGl0dG8u
CisKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpY3RhdGlvbkNvbW1hbmRJT1M6OkRpY3RhdGlvbkNvbW1hbmRJT1MpOiBU
YWtlCisgICAgICAgIGEgVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiYmIGluc3RlYWQgb2YgYSBQYXNz
T3duUHRyLgorICAgICAgICAoV2ViQ29yZTo6RGljdGF0aW9uQ29tbWFuZElPUzo6fkRpY3RhdGlv
bkNvbW1hbmRJT1MpOiBEZWxldGVkLiBObyBuZWVkIHRvCisgICAgICAgIGV4cGxpY2l0bHkgZGVm
aW5lIHRoaXMuCisgICAgICAgIChXZWJDb3JlOjpEaWN0YXRpb25Db21tYW5kSU9TOjpkb0FwcGx5
KTogVXBkYXRlZCB0byB1c2UgbW9kZXJuIGZvciBsb29wIGFuZAorICAgICAgICB3b3JrIHdpdGgg
YSBWZWN0b3I8VmVjdG9yPFN0cmluZz4+IGluc3RlYWQgb2YgYW4gT3duUHRyLgorICAgICAgICAq
IGVkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuaDogVXBkYXRlZCB0byBub3QgdXNlIFBh
c3NPd25QdHIgYW5kIE93blB0ci4KKyAgICAgICAgQWxzbyBtb2Rlcm5pemVkIGEgYml0IGJ5IHVz
aW5nIG92ZXJyaWRlLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29r
Lmg6IFJldHVybiBhbiBOU1VSTFJlcXVlc3QgKiBpbnN0ZWFkIG9mIGEKKyAgICAgICAgUGFzc093
blB0cjxSZXNvdXJjZVJlcXVlc3Q+IGZyb20gdGhpcyBpT1Mtc3BlY2lmaWMgZnVuY3Rpb24uCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6cmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZCk6IERpdHRvLgorCiAyMDE1
LTA0LTIyICBKaW53b28gU29uZyAgPGppbndvbzcuc29uZ0BzYW1zdW5nLmNvbT4KIAogICAgICAg
ICBDb252ZXJ0IE93blB0ciB0byBzdGQ6OnVuaXF1ZV9wdHIgaW4gR3JhcGhpY3NDb250ZXh0Q2Fp
cm8uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2YvQ2hhbmdlTG9nCmluZGV4IGE4NGY2ZDEyNWI4OWY1ZTBkYjdkMTI3NDBiNjY5ZWRi
ODBmNWUyMzUuLmQxNDI5ZjA4ZDM2OWE0NGM3NjFiMjRjYmU5NmYxNDVkNzRjZjY2M2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2Yv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMDQtMjIgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBPd25QdHIgYW5kIFBhc3NPd25QdHIgdXNl
IGZyb20gV2ViS2l0L2NmLCBXZWJLaXQvbWFjLCBhbmQgV2ViS2l0MgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzOTQzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnRDRi5jcHA6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZS4KKwogMjAxNC0wOS0y
NSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92
ZSBXaW5DRSBwb3J0IGZyb20gdHJ1bmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA5NGJjOTY0MWE5NmMw
YmEwZTY2ZWJjYzk4YTIwZDI5NTBjZWY1ODIzLi4xZTk5Yzk2NDUzMzdkOWFhODljYzBhNjFiYmM2
M2EwZDQ1NTcxM2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTUtMDQt
MjIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBPd25Q
dHIgYW5kIFBhc3NPd25QdHIgdXNlIGZyb20gV2ViS2l0L2NmLCBXZWJLaXQvbWFjLCBhbmQgV2Vi
S2l0MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQz
OTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQ
bHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLmg6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZS4K
KyAgICAgICAgKiBQbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaDogRGl0dG8uCisK
KyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLmg6IFVzZSB1
bmlxdWVfcHRyIGluc3RlYWQgb2YKKyAgICAgICAgUGFzc093blB0ciBmb3IgdGhlIGNyZWF0ZSBm
dW5jdGlvbi4gQWxzbyB0d2Vha2VkIGZvcm1hdHRpbmcgYW5kIHJlbW92ZWQKKyAgICAgICAgdW5u
ZWVkZWQgZm9yd2FyZCBkZWNsYXJhdGlvbiBvZiBDR1JlY3QuCisgICAgICAgICogUGx1Z2lucy9X
ZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbToKKyAgICAgICAgKFdlYk5ldHNjYXBlUGx1
Z2luRXZlbnRIYW5kbGVyOjpjcmVhdGUpOiBDaGFuZ2VkIHRvIHVzZSB1bmlxdWVfcHRyIGFuZAor
ICAgICAgICBtYWtlX3VuaXF1ZS4KKworICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVn
aW5WaWV3Lmg6IFVzZSB1bmlxdWVfcHRyIGluc3RlYWQgb2YgT3duUHRyIGZvcgorICAgICAgICB0
aGUgX2V2ZW50SGFuZGxlciBmaWVsZC4KKyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1
Z2luVmlldy5tbToKKyAgICAgICAgKC1bV2ViTmV0c2NhcGVQbHVnaW5WaWV3IGRlc3Ryb3lQbHVn
aW5dKTogQ2hhbmdlZCBjb2RlIHRvIHdvcmsgd2l0aCB1bmlxdWVfcHRyLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50Lm1tOiBSZW1vdmVkIHVubmVlZGVkIGlu
Y2x1ZGUuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJN
b2NrLm1tOiBDaGFuZ2VkIHRvIHVzZSBtYWtlX3VuaXF1ZS4KKyAgICAgICAgKiBXZWJWaWV3L1dl
YkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwuaDogQ2hhbmdlZCB0byB1c2Ug
dW5pcXVlX3B0ci4KKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICh2
ZWN0b3JGb3JEaWN0YXRpb25QaHJhc2VzQXJyYXkpOiBDaGFuZ2VkIHRvIHJldHVybiBWZWN0b3I8
VmVjdG9yPFN0cmluZz4+IGFuZAorICAgICAgICBub3QgYSBQYXNzT3duUHRyLiBBbHNvIHJld3Jv
dGUgdG8gYmUgbXVjaCBzaW1wbGVyLCBhbHRob3VnaCB0aGVyZSBpcyBzdGlsbCBhCisgICAgICAg
IHByZS1leGlzdGluZyBwcm9ibGVtIGhlcmUgd2hlcmUgdGhpcyBjb3VsZCBwdXQgZW1wdHkgdmVj
dG9ycyBpbnRvIHRoZSByZXN1bHQsCisgICAgICAgIGFuZCBJJ20gcHJldHR5IHN1cmUgdGhlIGNs
aWVudCBuZXZlciBleHBlY3RzIGFueSBvZiB0aGUgVmVjdG9yPFN0cmluZz4gdG8gYmUgZW1wdHku
CisgICAgICAgICgtW1dlYkZyYW1lIF9sb2FkRGF0YTpNSU1FVHlwZTp0ZXh0RW5jb2RpbmdOYW1l
OmJhc2VVUkw6dW5yZWFjaGFibGVVUkw6XSk6CisgICAgICAgIFJld3JvdGUgbG9naWMgdG8gaW52
b2x2ZSBXZWJDb3JlIHR5cGVzIGEgYml0IGxlc3M7IG9sZCBjb2RlIHdhcyByb3VuZCB0cmlwcGlu
ZworICAgICAgICB0aGluZ3MgdGhyb3VnaCBXZWJDb3JlOjpVUkwgZm9yIG5vIG9idmlvdXMgcmVh
c29uLgorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZUludGVybmFsLmg6IENoYW5nZWQgdmVj
dG9yRm9yRGljdGF0aW9uUGhyYXNlc0FycmF5IHRvIHJldHVybgorICAgICAgICBhIFZlY3RvcjxW
ZWN0b3I8U3RyaW5nPj4gYW5kIG5vdCBhIFBhc3NPd25QdHIuCisKKyAgICAgICAgKiBXZWJWaWV3
L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLmg6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZS4KKwor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0RhdGEuaDogQ2hhbmdlZCBtX2FsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlciB0byBiZSBhCisgICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9s
bGVyLgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0RhdGEubW06CisgICAgICAgICgtW1dlYlZp
ZXdQcml2YXRlIGluaXRdKTogVXNlIG1ha2VfdW5pcXVlIHRvIGluaXRpYWxpemUgbV9hbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXIuCisKIDIwMTUtMDQtMjIgIEJyZW50IEZ1bGdoYW0gIDxiZnVs
Z2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBzaG91bGQgb25seSBh
Y2NlcHQgUmFuZ2UgYnkgcmVmZXJlbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmVlODg2NTQ3NjBiMTk3YjAx
NjY3NTUzODI3NWQ5YzZhZGJlZTA0Yi4uMjIyYTMwYmM1M2Q2YWY0ZGNkMTFjN2E2NGUxZGQ2Zjdl
ZWJmM2RmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTA0LTIyICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgT3duUHRyIGFuZCBQYXNz
T3duUHRyIHVzZSBmcm9tIFdlYktpdC9jZiwgV2ViS2l0L21hYywgYW5kIFdlYktpdDIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mzk0MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhv
c3QuaDoKKyAgICAgICAgUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlLgorCiAyMDE1LTA0LTIyICBC
cmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFZpc2libGVTZWxl
Y3Rpb24gc2hvdWxkIG9ubHkgYWNjZXB0IFJhbmdlIGJ5IHJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCmluZGV4IGZlMDdjZWU4NWY1NTk5MjViMGI5NTM5MGE5MjEzODQzYzlmOTA3
M2QuLjBmZDJmOTEyNjY3ZjI0MzcyZDNlNWZmMTRjMmRlYzI0NzEyOGNmNTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKQEAgLTM4OCwxOCArMzg4LDE5IEBAIHZvaWQgRWRpdG9yOjpjbGVh
clRleHQoKQogfQogCiAjaWYgUExBVEZPUk0oSU9TKQotdm9pZCBFZGl0b3I6Omluc2VydERpY3Rh
dGlvblBocmFzZXMoUGFzc093blB0cjxWZWN0b3I8VmVjdG9yPFN0cmluZz4gPiA+IGRpY3RhdGlv
blBocmFzZXMsIFJldGFpblB0cjxpZD4gbWV0YWRhdGEpCisKK3ZvaWQgRWRpdG9yOjppbnNlcnRE
aWN0YXRpb25QaHJhc2VzKFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4mJiBkaWN0YXRpb25QaHJhc2Vz
LCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhKQogewogICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigp
LmlzTm9uZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgIGlmIChkaWN0YXRpb25Q
aHJhc2VzLT5pc0VtcHR5KCkpCisKKyAgICBpZiAoZGljdGF0aW9uUGhyYXNlcy5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgYXBwbHlDb21tYW5kKERpY3RhdGlvbkNv
bW1hbmRJT1M6OmNyZWF0ZShkb2N1bWVudCgpLCBkaWN0YXRpb25QaHJhc2VzLCBtZXRhZGF0YSkp
OworCisgICAgYXBwbHlDb21tYW5kKERpY3RhdGlvbkNvbW1hbmRJT1M6OmNyZWF0ZShkb2N1bWVu
dCgpLCBXVEY6Om1vdmUoZGljdGF0aW9uUGhyYXNlcyksIFdURjo6bW92ZShtZXRhZGF0YSkpKTsK
IH0KIAotdm9pZCBFZGl0b3I6OnNldERpY3RhdGlvblBocmFzZXNBc0NoaWxkT2ZFbGVtZW50KFBh
c3NPd25QdHI8VmVjdG9yPFZlY3RvcjxTdHJpbmc+ID4gPiBkaWN0YXRpb25QaHJhc2VzLCBSZXRh
aW5QdHI8aWQ+IG1ldGFkYXRhLCBFbGVtZW50KiBlbGVtZW50KQordm9pZCBFZGl0b3I6OnNldERp
Y3RhdGlvblBocmFzZXNBc0NoaWxkT2ZFbGVtZW50KGNvbnN0IFZlY3RvcjxWZWN0b3I8U3RyaW5n
Pj4mIGRpY3RhdGlvblBocmFzZXMsIFJldGFpblB0cjxpZD4gbWV0YWRhdGEsIEVsZW1lbnQmIGVs
ZW1lbnQpCiB7CiAgICAgLy8gQ2xlYXIgdGhlIGNvbXBvc2l0aW9uLgogICAgIGNsZWFyKCk7CkBA
IC00MTAsNTQgKzQxMSw1MCBAQCB2b2lkIEVkaXRvcjo6c2V0RGljdGF0aW9uUGhyYXNlc0FzQ2hp
bGRPZkVsZW1lbnQoUGFzc093blB0cjxWZWN0b3I8VmVjdG9yPFN0cmluZwogICAgIAogICAgIG1f
ZnJhbWUuc2VsZWN0aW9uKCkuY2xlYXIoKTsKICAgICAKLSAgICBlbGVtZW50LT5yZW1vdmVDaGls
ZHJlbigpOworICAgIGVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAKLSAgICBpZiAoZGlj
dGF0aW9uUGhyYXNlcy0+aXNFbXB0eSgpKSB7CisgICAgaWYgKGRpY3RhdGlvblBocmFzZXMuaXNF
bXB0eSgpKSB7CiAgICAgICAgIGNsaWVudCgpLT5yZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAgICBFeGNlcHRpb25Db2RlIGVjOyAgICAK
ICAgICBSZWZQdHI8UmFuZ2U+IGNvbnRleHQgPSBkb2N1bWVudCgpLmNyZWF0ZVJhbmdlKCk7Ci0g
ICAgY29udGV4dC0+c2VsZWN0Tm9kZUNvbnRlbnRzKGVsZW1lbnQsIGVjKTsKLSAgICAKKyAgICBj
b250ZXh0LT5zZWxlY3ROb2RlQ29udGVudHMoJmVsZW1lbnQsIGVjKTsKKwogICAgIFN0cmluZ0J1
aWxkZXIgZGljdGF0aW9uUGhyYXNlc0J1aWxkZXI7Ci0gICAgc2l6ZV90IGRpY3RhdGlvblBocmFz
ZUNvdW50ID0gZGljdGF0aW9uUGhyYXNlcy0+c2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZGljdGF0aW9uUGhyYXNlQ291bnQ7IGkrKykgewotICAgICAgICBjb25zdCBTdHJpbmcm
IGZpcnN0SW50ZXJwcmV0YXRpb24gPSBkaWN0YXRpb25QaHJhc2VzLT5hdChpKVswXTsKLSAgICAg
ICAgZGljdGF0aW9uUGhyYXNlc0J1aWxkZXIuYXBwZW5kKGZpcnN0SW50ZXJwcmV0YXRpb24pOwot
ICAgIH0KLSAgICBTdHJpbmcgc2VyaWFsaXplZERpY3RhdGlvblBocmFzZXMgPSBkaWN0YXRpb25Q
aHJhc2VzQnVpbGRlci50b1N0cmluZygpOwotICAgIAotICAgIGVsZW1lbnQtPmFwcGVuZENoaWxk
KGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoKmNvbnRleHQuZ2V0KCksIHNlcmlhbGl6ZWREaWN0YXRp
b25QaHJhc2VzKSwgZWMpOwotICAgIAorICAgIGZvciAoYXV0byYgaW50ZXJwcmV0YXRpb25zIDog
ZGljdGF0aW9uUGhyYXNlcykKKyAgICAgICAgZGljdGF0aW9uUGhyYXNlc0J1aWxkZXIuYXBwZW5k
KGludGVycHJldGF0aW9uc1swXSk7CisKKyAgICBlbGVtZW50LmFwcGVuZENoaWxkKGNyZWF0ZUZy
YWdtZW50RnJvbVRleHQoKmNvbnRleHQsIGRpY3RhdGlvblBocmFzZXNCdWlsZGVyLnRvU3RyaW5n
KCkpLCBlYyk7CisKICAgICAvLyBXZSBuZWVkIGEgbGF5b3V0IGluIG9yZGVyIHRvIGFkZCBtYXJr
ZXJzIGJlbG93LgogICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0KCk7Ci0gICAgCi0gICAgaWYg
KCFlbGVtZW50LT5maXJzdENoaWxkKCktPmlzVGV4dE5vZGUoKSkgeworCisgICAgaWYgKCFlbGVt
ZW50LmZpcnN0Q2hpbGQoKS0+aXNUZXh0Tm9kZSgpKSB7CiAgICAgICAgIC8vIFNob3VsZG4ndCBo
YXBwZW4uCi0gICAgICAgIEFTU0VSVChlbGVtZW50LT5maXJzdENoaWxkKCktPmlzVGV4dE5vZGUo
KSk7CisgICAgICAgIEFTU0VSVChlbGVtZW50LmZpcnN0Q2hpbGQoKS0+aXNUZXh0Tm9kZSgpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAgICAgCi0gICAgVGV4dCogdGV4dE5vZGUgPSBz
dGF0aWNfY2FzdDxUZXh0Kj4oZWxlbWVudC0+Zmlyc3RDaGlsZCgpKTsKKworICAgIFRleHQmIHRl
eHROb2RlID0gZG93bmNhc3Q8VGV4dD4oKmVsZW1lbnQuZmlyc3RDaGlsZCgpKTsKICAgICBpbnQg
cHJldmlvdXNEaWN0YXRpb25QaHJhc2VTdGFydCA9IDA7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBkaWN0YXRpb25QaHJhc2VDb3VudDsgaSsrKSB7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBpbnRlcnByZXRhdGlvbnMgPSBkaWN0YXRpb25QaHJhc2VzLT5hdChpKTsKKyAgICBm
b3IgKGF1dG8mIGludGVycHJldGF0aW9ucyA6IGRpY3RhdGlvblBocmFzZXMpIHsKICAgICAgICAg
aW50IGRpY3RhdGlvblBocmFzZUxlbmd0aCA9IGludGVycHJldGF0aW9uc1swXS5sZW5ndGgoKTsK
ICAgICAgICAgaW50IGRpY3RhdGlvblBocmFzZUVuZCA9IHByZXZpb3VzRGljdGF0aW9uUGhyYXNl
U3RhcnQgKyBkaWN0YXRpb25QaHJhc2VMZW5ndGg7CiAgICAgICAgIGlmIChpbnRlcnByZXRhdGlv
bnMuc2l6ZSgpID4gMSkgewotICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBkaWN0YXRpb25QaHJh
c2VSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgdGV4dE5vZGUsIHByZXZpb3VzRGlj
dGF0aW9uUGhyYXNlU3RhcnQsIHRleHROb2RlLCBkaWN0YXRpb25QaHJhc2VFbmQpOwotICAgICAg
ICAgICAgZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0
aXZlc01hcmtlcihkaWN0YXRpb25QaHJhc2VSYW5nZS5nZXQoKSwgaW50ZXJwcmV0YXRpb25zKTsK
KyAgICAgICAgICAgIGF1dG8gZGljdGF0aW9uUGhyYXNlUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRv
Y3VtZW50KCksICZ0ZXh0Tm9kZSwgcHJldmlvdXNEaWN0YXRpb25QaHJhc2VTdGFydCwgJnRleHRO
b2RlLCBkaWN0YXRpb25QaHJhc2VFbmQpOworICAgICAgICAgICAgZG9jdW1lbnQoKS5tYXJrZXJz
KCkuYWRkRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlc01hcmtlcihkaWN0YXRpb25QaHJh
c2VSYW5nZS5wdHIoKSwgaW50ZXJwcmV0YXRpb25zKTsKICAgICAgICAgfQogICAgICAgICBwcmV2
aW91c0RpY3RhdGlvblBocmFzZVN0YXJ0ID0gZGljdGF0aW9uUGhyYXNlRW5kOwogICAgIH0KLSAg
ICAKLSAgICBSZWZQdHI8UmFuZ2U+IHJlc3VsdFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVu
dCgpLCB0ZXh0Tm9kZSwgMCwgdGV4dE5vZGUsIHRleHROb2RlLT5sZW5ndGgoKSk7Ci0gICAgZG9j
dW1lbnQoKS5tYXJrZXJzKCkuYWRkRGljdGF0aW9uUmVzdWx0TWFya2VyKHJlc3VsdFJhbmdlLmdl
dCgpLCBtZXRhZGF0YSk7Ci0gICAgCisKKyAgICBhdXRvIHJlc3VsdFJhbmdlID0gUmFuZ2U6OmNy
ZWF0ZShkb2N1bWVudCgpLCAmdGV4dE5vZGUsIDAsICZ0ZXh0Tm9kZSwgdGV4dE5vZGUubGVuZ3Ro
KCkpOworICAgIGRvY3VtZW50KCkubWFya2VycygpLmFkZERpY3RhdGlvblJlc3VsdE1hcmtlcihy
ZXN1bHRSYW5nZS5wdHIoKSwgbWV0YWRhdGEpOworCiAgICAgY2xpZW50KCktPnJlc3BvbmRUb0No
YW5nZWRDb250ZW50cygpOwogfQorCiAjZW5kaWYKIAogdm9pZCBFZGl0b3I6OnBhc3RlQXNQbGFp
blRleHQoY29uc3QgU3RyaW5nJiBwYXN0aW5nVGV4dCwgYm9vbCBzbWFydFJlcGxhY2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaAppbmRleCA3OTJiYzQ2YTYzNjUzZGRmMTU3OWQ4Nzk4YjllZDk4MDI5
ZDU4MDc4Li5hNTdkNDJhMDRhYjBjMDA3NjhhM2YyZjQ2M2I3Yzc5MGQxMmE2ZTVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmgKQEAgLTMyOSw4ICszMjksOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjb25maXJtTWFya2VkVGV4dCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0VGV4dEFzQ2hpbGRPZkVsZW1lbnQoY29uc3QgU3RyaW5nJiwgRWxlbWVudCopOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGlu
Z0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGlu
c2VydERpY3RhdGlvblBocmFzZXMoUGFzc093blB0cjxWZWN0b3I8VmVjdG9yPFN0cmluZz4gPiA+
IGRpY3RhdGlvblBocmFzZXMsIFJldGFpblB0cjxpZD4gbWV0YWRhdGEpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0RGljdGF0aW9uUGhyYXNlc0FzQ2hpbGRPZkVsZW1lbnQoUGFzc093blB0
cjxWZWN0b3I8VmVjdG9yPFN0cmluZz4gPiA+IGRpY3RhdGlvblBocmFzZXMsIFJldGFpblB0cjxp
ZD4gbWV0YWRhdGEsIEVsZW1lbnQqIGVsZW1lbnQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
aW5zZXJ0RGljdGF0aW9uUGhyYXNlcyhWZWN0b3I8VmVjdG9yPFN0cmluZz4+JiYgZGljdGF0aW9u
UGhyYXNlcywgUmV0YWluUHRyPGlkPiBtZXRhZGF0YSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXREaWN0YXRpb25QaHJhc2VzQXNDaGlsZE9mRWxlbWVudChjb25zdCBWZWN0b3I8VmVjdG9y
PFN0cmluZz4+JiBkaWN0YXRpb25QaHJhc2VzLCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhLCBFbGVt
ZW50Jik7CiAjZW5kaWYKICAgICAKICAgICB2b2lkIGFkZFRvS2lsbFJpbmcoUmFuZ2UqLCBib29s
IHByZXBlbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0
aW9uQ29tbWFuZElPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25D
b21tYW5kSU9TLmNwcAppbmRleCBhYWFiMTRjNzI3ZmZjNDZhZjk5MjMxMjBmZDEwODdjOGMzNThl
MzcxLi5jMTg4MzM4Mjc4ZjMyOTBhOWNiZWM2Yjk2ZWJkMTE2M2I2NmIxOGI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcApAQCAt
MzcsNDUgKzM3LDM4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRGljdGF0aW9uQ29tbWFu
ZElPUzo6RGljdGF0aW9uQ29tbWFuZElPUyhEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NPd25QdHI8
VmVjdG9yPFZlY3RvcjxTdHJpbmc+ID4gPiBkaWN0YXRpb25QaHJhc2VzLCBSZXRhaW5QdHI8aWQ+
IG1ldGFkYXRhKQorRGljdGF0aW9uQ29tbWFuZElPUzo6RGljdGF0aW9uQ29tbWFuZElPUyhEb2N1
bWVudCYgZG9jdW1lbnQsIFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4mJiBkaWN0YXRpb25QaHJhc2Vz
LCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhKQogICAgIDogQ29tcG9zaXRlRWRpdENvbW1hbmQoZG9j
dW1lbnQpCi0gICAgLCBtX2RpY3RhdGlvblBocmFzZXMoZGljdGF0aW9uUGhyYXNlcykKLSAgICAs
IG1fbWV0YWRhdGEobWV0YWRhdGEpCi17Ci19Ci0KLURpY3RhdGlvbkNvbW1hbmRJT1M6On5EaWN0
YXRpb25Db21tYW5kSU9TKCkKKyAgICAsIG1fZGljdGF0aW9uUGhyYXNlcyhXVEY6Om1vdmUoZGlj
dGF0aW9uUGhyYXNlcykpCisgICAgLCBtX21ldGFkYXRhKFdURjo6bW92ZShtZXRhZGF0YSkpCiB7
CiB9CiAKIHZvaWQgRGljdGF0aW9uQ29tbWFuZElPUzo6ZG9BcHBseSgpCiB7CiAgICAgVmlzaWJs
ZVBvc2l0aW9uIGluc2VydGlvblBvc2l0aW9uKHN0YXJ0aW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0
YXJ0KCkpOwotICAgIAorCiAgICAgdW5zaWduZWQgcmVzdWx0TGVuZ3RoID0gMDsKLSAgICBzaXpl
X3QgZGljdGF0aW9uUGhyYXNlQ291bnQgPSBtX2RpY3RhdGlvblBocmFzZXMtPnNpemUoKTsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRpY3RhdGlvblBocmFzZUNvdW50OyBpKyspIHsKLSAg
ICAKLSAgICAgICAgY29uc3QgU3RyaW5nJiBmaXJzdEludGVycHJldGF0aW9uID0gbV9kaWN0YXRp
b25QaHJhc2VzLT5hdChpKVswXTsKKyAgICBmb3IgKGF1dG8mIGludGVycHJldGF0aW9ucyA6IG1f
ZGljdGF0aW9uUGhyYXNlcykgeworICAgICAgICBjb25zdCBTdHJpbmcmIGZpcnN0SW50ZXJwcmV0
YXRpb24gPSBpbnRlcnByZXRhdGlvbnNbMF07CiAgICAgICAgIHJlc3VsdExlbmd0aCArPSBmaXJz
dEludGVycHJldGF0aW9uLmxlbmd0aCgpOwogICAgICAgICBpbnB1dFRleHQoZmlyc3RJbnRlcnBy
ZXRhdGlvbiwgdHJ1ZSk7Ci0gICAgICAgIAotICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
aW50ZXJwcmV0YXRpb25zID0gbV9kaWN0YXRpb25QaHJhc2VzLT5hdChpKTsKLSAgICAgICAgCisK
ICAgICAgICAgaWYgKGludGVycHJldGF0aW9ucy5zaXplKCkgPiAxKQogICAgICAgICAgICAgZG9j
dW1lbnQoKS5tYXJrZXJzKCkuYWRkRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlc01hcmtl
cihlbmRpbmdTZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBpbnRlcnByZXRh
dGlvbnMpOwotICAgICAgICAgICAgCisKICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2li
bGVTZWxlY3Rpb24oZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpKSk7CiAgICAgfQotICAg
IAorCiAgICAgVmlzaWJsZVBvc2l0aW9uIGFmdGVyUmVzdWx0cyhlbmRpbmdTZWxlY3Rpb24oKS52
aXNpYmxlRW5kKCkpOwotICAgIAorCiAgICAgRWxlbWVudCogcm9vdCA9IGFmdGVyUmVzdWx0cy5y
b290RWRpdGFibGVFbGVtZW50KCk7CisKICAgICAvLyBGSVhNRTogQWRkIHRoZSByZXN1bHQgbWFy
a2VyIHVzaW5nIGEgUG9zaXRpb24gY2FjaGVkIGJlZm9yZSByZXN1bHRzIGFyZSBpbnNlcnRlZCwg
aW5zdGVhZCBvZiByZWx5aW5nIG9uIFRleHRJdGVyYXRvcnMuCiAgICAgUmVmUHRyPFJhbmdlPiBy
YW5nZVRvRW5kID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBjcmVhdGVMZWdhY3lFZGl0aW5n
UG9zaXRpb24oKE5vZGUgKilyb290LCAwKSwgYWZ0ZXJSZXN1bHRzLmRlZXBFcXVpdmFsZW50KCkp
OwogICAgIGludCBlbmRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2VUb0Vu
ZC5nZXQoKSwgdHJ1ZSk7CiAgICAgaW50IHN0YXJ0SW5kZXggPSBlbmRJbmRleCAtIHJlc3VsdExl
bmd0aDsKLSAgICAKKwogICAgIGlmIChzdGFydEluZGV4ID49IDApIHsKICAgICAgICAgUmVmUHRy
PFJhbmdlPiByZXN1bHRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRM
ZW5ndGgoZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKSwgc3RhcnRJbmRleCwgZW5kSW5kZXgs
IHRydWUpOwogICAgICAgICBkb2N1bWVudCgpLm1hcmtlcnMoKS5hZGREaWN0YXRpb25SZXN1bHRN
YXJrZXIocmVzdWx0UmFuZ2UuZ2V0KCksIG1fbWV0YWRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5oCmluZGV4IDYzMWJmYjNkNDJmNmVm
ZDEyMTc1OGMwNjYyOTEwZDhlOGYwZjg5MzUuLmJmOTA3NjRiM2RiZDc3MmQ4NWY0Mjg4OWJmNjMx
ZmYzMTc0NThmZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3Rh
dGlvbkNvbW1hbmRJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRp
b25Db21tYW5kSU9TLmgKQEAgLTI3LDggKzI3LDYgQEAKICNkZWZpbmUgRGljdGF0aW9uQ29tbWFu
ZElPU19oCiAKICNpbXBvcnQgIkNvbXBvc2l0ZUVkaXRDb21tYW5kLmgiCi0jaW1wb3J0IDx3dGYv
T3duUHRyLmg+Ci0jaW1wb3J0IDx3dGYvUGFzc093blB0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgogCiB0eXBlZGVmIHN0cnVjdCBvYmpjX29iamVjdCAqaWQ7CkBAIC0zNywxOSArMzUs
MTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEaWN0YXRpb25Db21tYW5kSU9TIDog
cHVibGljIENvbXBvc2l0ZUVkaXRDb21tYW5kIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPERp
Y3RhdGlvbkNvbW1hbmRJT1M+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NPd25QdHI8
VmVjdG9yPFZlY3RvcjxTdHJpbmc+ID4gPiBkaWN0YXRpb25QaHJhc2UsIFJldGFpblB0cjxpZD4g
bWV0YWRhdGEpCisgICAgc3RhdGljIFJlZjxEaWN0YXRpb25Db21tYW5kSU9TPiBjcmVhdGUoRG9j
dW1lbnQmIGRvY3VtZW50LCBWZWN0b3I8VmVjdG9yPFN0cmluZz4+JiYgZGljdGF0aW9uUGhyYXNl
cywgUmV0YWluUHRyPGlkPiBtZXRhZGF0YSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IERpY3RhdGlvbkNvbW1hbmRJT1MoZG9jdW1lbnQsIGRpY3RhdGlvblBocmFzZSwgbWV0
YWRhdGEpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGljdGF0aW9uQ29tbWFuZElP
Uyhkb2N1bWVudCwgV1RGOjptb3ZlKGRpY3RhdGlvblBocmFzZXMpLCBXVEY6Om1vdmUobWV0YWRh
dGEpKSk7CiAgICAgfQotICAgIAotICAgIHZpcnR1YWwgfkRpY3RhdGlvbkNvbW1hbmRJT1MoKTsK
KwogcHJpdmF0ZToKLSAgICBEaWN0YXRpb25Db21tYW5kSU9TKERvY3VtZW50JiBkb2N1bWVudCwg
UGFzc093blB0cjxWZWN0b3I8VmVjdG9yPFN0cmluZz4gPiA+IGRpY3RhdGlvblBocmFzZSwgUmV0
YWluUHRyPGlkPiBtZXRhZGF0YSk7Ci0gICAgCi0gICAgdmlydHVhbCB2b2lkIGRvQXBwbHkoKTsK
LSAgICB2aXJ0dWFsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbigpIGNvbnN0IHsgcmV0dXJuIEVk
aXRBY3Rpb25EaWN0YXRpb247IH0KLSAgICAKLSAgICBPd25QdHI8VmVjdG9yPFZlY3RvcjxTdHJp
bmc+ID4gPiBtX2RpY3RhdGlvblBocmFzZXM7CisgICAgRGljdGF0aW9uQ29tbWFuZElPUyhEb2N1
bWVudCYsIFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4mJiBkaWN0YXRpb25QaHJhc2VzLCBSZXRhaW5Q
dHI8aWQ+IG1ldGFkYXRhKTsKKworICAgIHZpcnR1YWwgdm9pZCBkb0FwcGx5KCkgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBFZGl0QWN0aW9uRGljdGF0aW9uOyB9CisKKyAgICBWZWN0b3I8VmVjdG9yPFN0cmlu
Zz4+IG1fZGljdGF0aW9uUGhyYXNlczsKICAgICBSZXRhaW5QdHI8aWQ+IG1fbWV0YWRhdGE7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlj
a0xvb2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5o
CmluZGV4IGY1NzYyZjBhMTViYzM1ZTY2Y2JhMDE1NDkxYjc4MDE2ZjhjODViYzYuLmRlMjRmMTMy
ZDQ4ZmQ4MzZiOGRkNmJkZThjOWQxYTBiYjQzZDAzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5oCkBAIC0zMSw3ICszMSw2IEBACiAjaW1w
b3J0ICJRdWlja0xvb2tIYW5kbGVDbGllbnQuaCIKICNpbXBvcnQgIlJlc291cmNlUmVxdWVzdC5o
IgogI2ltcG9ydCA8b2JqYy9vYmpjLXJ1bnRpbWUuaD4KLSNpbXBvcnQgPHd0Zi9QYXNzT3duUHRy
Lmg+CiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAKIE9CSkNfQ0xBU1MgTlNEYXRhOwpAQCAtNDEs
NiArNDAsNyBAQCBPQkpDX0NMQVNTIE5TU2V0OwogT0JKQ19DTEFTUyBOU1N0cmluZzsKIE9CSkNf
Q0xBU1MgTlNVUkw7CiBPQkpDX0NMQVNTIE5TVVJMQ29ubmVjdGlvbjsKK09CSkNfQ0xBU1MgTlNV
UkxSZXF1ZXN0OwogT0JKQ19DTEFTUyBOU1VSTFJlc3BvbnNlOwogT0JKQ19DTEFTUyBRTFByZXZp
ZXdDb252ZXJ0ZXI7CiAKQEAgLTcyLDcgKzcyLDcgQEAgV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcg
KnFsUHJldmlld0NvbnZlcnRlckZpbGVOYW1lRm9yVVJMKE5TVVJMICopOwogV0VCQ09SRV9FWFBP
UlQgTlNTdHJpbmcgKnFsUHJldmlld0NvbnZlcnRlclVUSUZvclVSTChOU1VSTCAqKTsKIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVtb3ZlUUxQcmV2aWV3Q29udmVydGVyRm9yVVJMKE5TVVJMICopOwog
Ci1XRUJDT1JFX0VYUE9SVCBQYXNzT3duUHRyPFJlc291cmNlUmVxdWVzdD4gcmVnaXN0ZXJRTFBy
ZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZChOU1VSTCAqLCBOU1N0cmluZyAqbWltZVR5cGUsIE5TRGF0
YSAqKTsKK1dFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IHJlZ2lzdGVyUUxQ
cmV2aWV3Q29udmVydGVySWZOZWVkZWQoTlNVUkwgKiwgTlNTdHJpbmcgKm1pbWVUeXBlLCBOU0Rh
dGEgKik7CiAKIGNvbnN0IFVSTCBzYWZlUUxVUkxGb3JEb2N1bWVudFVSTEFuZFJlc291cmNlVVJM
KGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkwpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2su
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0KaW5k
ZXggZWU5MDQ5MWNiOWE1OGFiNTQ0OWQ1YTE5OWM1YmIzNWM1OWU0MzdlMi4uOGMwODhmODM3YjA5
YjgzMzEzNWQzMDI3M2FlMGVhYTJiZjA4MmM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQpAQCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQg
V2ViQ29yZTo6cmVtb3ZlUUxQcmV2aWV3Q29udmVydGVyRm9yVVJMKE5TVVJMICp1cmwpCiAgICAg
W1FMQ29udGVudERpY3Rpb25hcnkoKSByZW1vdmVPYmplY3RGb3JLZXk6dXJsXTsKIH0KIAotUGFz
c093blB0cjxSZXNvdXJjZVJlcXVlc3Q+IFdlYkNvcmU6OnJlZ2lzdGVyUUxQcmV2aWV3Q29udmVy
dGVySWZOZWVkZWQoTlNVUkwgKnVybCwgTlNTdHJpbmcgKm1pbWVUeXBlLCBOU0RhdGEgKmRhdGEp
CitSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBXZWJDb3JlOjpyZWdpc3RlclFMUHJldmlld0NvbnZl
cnRlcklmTmVlZGVkKE5TVVJMICp1cmwsIE5TU3RyaW5nICptaW1lVHlwZSwgTlNEYXRhICpkYXRh
KQogewogICAgIFJldGFpblB0cjxOU1N0cmluZz4gdXBkYXRlZE1JTUVUeXBlID0gYWRvcHROUyhX
ZWJDb3JlOjpRTFR5cGVDb3B5QmVzdE1pbWVUeXBlRm9yVVJMQW5kTWltZVR5cGUodXJsLCBtaW1l
VHlwZSkpOwogCkBAIC0yMDIsMTAgKzIwMiwxMCBAQCBQYXNzT3duUHRyPFJlc291cmNlUmVxdWVz
dD4gV2ViQ29yZTo6cmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZChOU1VSTCAqdQog
ICAgICAgICAvLyB0aGUgVVJMIHRoYXQgdGhlIFdlYkRhdGFTb3VyY2Ugd2lsbCBzZWUgZHVyaW5n
IC1kZWFsbG9jLgogICAgICAgICBhZGRRTFByZXZpZXdDb252ZXJ0ZXJXaXRoRmlsZUZvclVSTChb
cmVxdWVzdCBVUkxdLCBjb252ZXJ0ZXIuZ2V0KCksIG5pbCk7CiAKLSAgICAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCkpOworICAgICAgICByZXR1cm4gcmVx
dWVzdDsKICAgICB9CiAKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbmlsOwogfQog
CiBjb25zdCBVUkwgV2ViQ29yZTo6c2FmZVFMVVJMRm9yRG9jdW1lbnRVUkxBbmRSZXNvdXJjZVVS
TChjb25zdCBVUkwmIGRvY3VtZW50VVJMLCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnRDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudENGLmNwcAppbmRleCAwNGZlNzMzMjMyOWRmNDhkODlmYTJiMzUyMmFmYmNkZjdiN2IxMmU0
Li4zYmFiMjU2NmI1NzY2MjQ2NjgxZWM5MGRkYjM4ODk1NmJkMjE2MjNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENG
LmNwcApAQCAtNTQsNyArNTQsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogCi0jaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oIGIvU291
cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5oCmluZGV4IDA4MGY5
ZTEzMmM5MzQwN2VhZjQ1N2FmZGI2NDFlM2Y0ZTM5M2Y2MDYuLjEzZTMyYmE2MjBlMzUwN2UwNDJh
OTBlODE3NDQzZDkzYWY2M2I2MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdp
bnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L0hvc3RlZC9Qcm94eUluc3RhbmNlLmgKQEAgLTMyLDcgKzMyLDYgQEAKICNpbXBvcnQgIldlYktp
dFBsdWdpbkhvc3RUeXBlcy5oIgogI2ltcG9ydCA8V2ViQ29yZS9CcmlkZ2VKU0MuaD4KICNpbXBv
cnQgPFdlYkNvcmUvcnVudGltZV9yb290Lmg+Ci0jaW1wb3J0IDx3dGYvT3duUHRyLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
V2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oCmluZGV4IDRmNGNkNTNjNWJhYzA2NzgxOWU5NTA5
YTQ0ODdiNDNmNzEyNWY0YTcuLmY0ZDhmYWI4MWE3NzIzZmQ2Y2VjZmJlMDQ4MTQ3ZGZiOGY5ZTUw
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBl
UGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNj
YXBlUGx1Z2luVmlldy5oCkBAIC0zMiw3ICszMiw2IEBACiAjaW1wb3J0ICJXZWJOZXRzY2FwZVBs
dWdpblBhY2thZ2UuaCIKICNpbXBvcnQgIldlYlBsdWdpbkNvbnRhaW5lckNoZWNrLmgiCiAjaW1w
b3J0IDx3dGYvRm9yd2FyZC5oPgotI2ltcG9ydCA8d3RmL093blB0ci5oPgogI2ltcG9ydCA8d3Rm
L1Bhc3NSZWZQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2Nh
cGVQbHVnaW5FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0
c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIuaAppbmRleCA5ZTMyZTJmYmZiMzZhZWNiMDA5Yzk4MzE3
YjBkODcwZDU1MjA0YWI0Li4xNGI0MWJjZmFhOWRkNjc4YzAwOGI4YTYxZWFhMzNiZWJlNzVjYzA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2lu
RXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2Fw
ZVBsdWdpbkV2ZW50SGFuZGxlci5oCkBAIC0zMywyNiArMzMsMjQgQEAKIEBjbGFzcyBOU0V2ZW50
OwogQGNsYXNzIFdlYk5ldHNjYXBlUGx1Z2luVmlldzsKIAotc3RydWN0IENHUmVjdDsKLQogY2xh
c3MgV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzT3duUHRyPFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyPiBjcmVhdGUoV2ViTmV0c2Nh
cGVQbHVnaW5WaWV3Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJOZXRzY2FwZVBs
dWdpbkV2ZW50SGFuZGxlcj4gY3JlYXRlKFdlYk5ldHNjYXBlUGx1Z2luVmlldyAqKTsKICAgICB2
aXJ0dWFsIH5XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcigpIHsgfQogICAgIAogICAgIHZp
cnR1YWwgdm9pZCBkcmF3UmVjdChDR0NvbnRleHRSZWYsIGNvbnN0IE5TUmVjdCYpID0gMDsKICAg
ICAKLSAgICB2aXJ0dWFsIHZvaWQgbW91c2VEb3duKE5TRXZlbnQqKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIG1vdXNlRHJhZ2dlZChOU0V2ZW50KikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBtb3Vz
ZUVudGVyZWQoTlNFdmVudCopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgbW91c2VFeGl0ZWQoTlNF
dmVudCopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgbW91c2VNb3ZlZChOU0V2ZW50KikgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBtb3VzZVVwKE5TRXZlbnQqKSA9IDA7Ci0gICAgdmlydHVhbCBib29s
IHNjcm9sbFdoZWVsKE5TRXZlbnQqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG1vdXNlRG93bihO
U0V2ZW50ICopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbW91c2VEcmFnZ2VkKE5TRXZlbnQgKikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBtb3VzZUVudGVyZWQoTlNFdmVudCAqKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIG1vdXNlRXhpdGVkKE5TRXZlbnQgKikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBtb3VzZU1vdmVkKE5TRXZlbnQgKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtb3VzZVVwKE5T
RXZlbnQgKikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxXaGVlbChOU0V2ZW50ICopID0g
MDsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQga2V5RG93bihOU0V2ZW50KikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBrZXlVcChOU0V2ZW50KikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBmbGFnc0No
YW5nZWQoTlNFdmVudCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQga2V5RG93bihOU0V2ZW50ICop
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQga2V5VXAoTlNFdmVudCAqKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGZsYWdzQ2hhbmdlZChOU0V2ZW50ICopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3lu
dGhldGljS2V5RG93bldpdGhDb21tYW5kTW9kaWZpZXIoaW50IGtleUNvZGUsIGNoYXIgY2hhcmFj
dGVyKSA9IDA7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGZvY3VzQ2hhbmdlZChib29sIGhhc0Zv
Y3VzKSA9IDA7CkBAIC02MiwxNyArNjAsMTggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
dG9wVGltZXJzKCkgeyB9CiAgICAgCiAgICAgLy8gUmV0dXJucyB0aGUgcGxhdGZvcm0gc3BlY2lm
aWMgd2luZG93IHVzZWQgaW4gTlBQX1NldFdpbmRvdwotICAgIHZpcnR1YWwgdm9pZCogcGxhdGZv
cm1XaW5kb3coTlNXaW5kb3cqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkKiBwbGF0Zm9ybVdpbmRv
dyhOU1dpbmRvdyAqKSA9IDA7CiAgICAgCiAgICAgYm9vbCBjdXJyZW50RXZlbnRJc1VzZXJHZXN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50RXZlbnRJc1VzZXJHZXN0dXJlOyB9CisKIHBy
b3RlY3RlZDoKLSAgICBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcihXZWJOZXRzY2FwZVBs
dWdpblZpZXcqIHBsdWdpblZpZXcpCisgICAgZXhwbGljaXQgV2ViTmV0c2NhcGVQbHVnaW5FdmVu
dEhhbmRsZXIoV2ViTmV0c2NhcGVQbHVnaW5WaWV3ICpwbHVnaW5WaWV3KQogICAgICAgICA6IG1f
cGx1Z2luVmlldyhwbHVnaW5WaWV3KQogICAgICAgICAsIG1fY3VycmVudEV2ZW50SXNVc2VyR2Vz
dHVyZShmYWxzZSkKICAgICB7CiAgICAgfQogICAgIAotICAgIFdlYk5ldHNjYXBlUGx1Z2luVmll
dyogbV9wbHVnaW5WaWV3OworICAgIFdlYk5ldHNjYXBlUGx1Z2luVmlldyAqbV9wbHVnaW5WaWV3
OwogICAgIGJvb2wgbV9jdXJyZW50RXZlbnRJc1VzZXJHZXN0dXJlOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxl
ci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhh
bmRsZXIubW0KaW5kZXggOWMyZGM1MDVlM2ZlZDMyZDY0MTAxZjIxNTE4YzZlZThhMzgwODY5YS4u
N2RmOGU4NzQyZjVhNTMwZjhjYTMzNDc3MGIzZjA5OTNlMmZhNTRiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5k
bGVyLm1tCkBAIC0yOCwyMCArMjgsMTkgQEAKICNpbXBvcnQgIldlYk5ldHNjYXBlUGx1Z2luRXZl
bnRIYW5kbGVyLmgiCiAKICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW1wb3J0IDx3dGYv
UGFzc093blB0ci5oPgogI2ltcG9ydCAiV2ViTmV0c2NhcGVQbHVnaW5WaWV3LmgiCiAjaW1wb3J0
ICJXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNhcmJvbi5oIgogI2ltcG9ydCAiV2ViTmV0
c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYS5oIgogCi1QYXNzT3duUHRyPFdlYk5ldHNjYXBl
UGx1Z2luRXZlbnRIYW5kbGVyPiBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcjo6Y3JlYXRl
KFdlYk5ldHNjYXBlUGx1Z2luVmlldyogcGx1Z2luVmlldykKK3N0ZDo6dW5pcXVlX3B0cjxXZWJO
ZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcj4gV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXI6
OmNyZWF0ZShXZWJOZXRzY2FwZVBsdWdpblZpZXcgKnBsdWdpblZpZXcpCiB7CiAgICAgc3dpdGNo
IChbcGx1Z2luVmlldyBldmVudE1vZGVsXSkgewogI2lmbmRlZiBOUF9OT19DQVJCT04KICAgICAg
ICAgY2FzZSBOUEV2ZW50TW9kZWxDYXJib246Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ2FyYm9uKHBsdWdpblZpZXcpKTsKLSNl
bmRpZiAvLyBOUF9OT19DQVJCT04KKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ2FyYm9uPihwbHVnaW5WaWV3KTsKKyNlbmRp
ZgogICAgICAgICBjYXNlIE5QRXZlbnRNb2RlbENvY29hOgotICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hKHBsdWdpblZpZXcp
KTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYk5ldHNjYXBlUGx1Z2lu
RXZlbnRIYW5kbGVyQ29jb2E+KHBsdWdpblZpZXcpOwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5W
aWV3LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5o
CmluZGV4IGExNGEzZmY1NjFhMWRkN2NhYjJiNjcyYjJiYmI4YjdhNjVjZDgwNzYuLjc4M2YzM2Yx
NzY5MjYwYmEwMGZiZTY0OGU0ZjMxN2I3YmRkOTZjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcuaApAQCAtMjksMTggKzI5LDEzIEBA
CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKICNpbXBvcnQgIldlYkJhc2VOZXRz
Y2FwZVBsdWdpblZpZXcuaCIKLQogI2ltcG9ydCAiV2ViTmV0c2NhcGVDb250YWluZXJDaGVja1By
aXZhdGUuaCIKICNpbXBvcnQgPFdlYktpdExlZ2FjeS9ucGZ1bmN0aW9ucy5oPgogI2ltcG9ydCA8
V2ViS2l0TGVnYWN5L25wYXBpLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8
d3RmL0hhc2hTZXQuaD4KLSNpbXBvcnQgPHd0Zi9Pd25QdHIuaD4KIAotQGNsYXNzIFdlYkRhdGFT
b3VyY2U7Ci1AY2xhc3MgV2ViRnJhbWU7CiBAY2xhc3MgV2ViTmV0c2NhcGVQbHVnaW5QYWNrYWdl
OwotQGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIFBsdWdpblRpbWVyOwogY2xhc3MgV2ViTmV0c2Nh
cGVQbHVnaW5TdHJlYW07CkBAIC04Myw3ICs3OCw3IEBAIHR5cGVkZWYgdW5pb24gUGx1Z2luUG9y
dCB7CiAgICAgR1dvcmxkUHRyIG9mZnNjcmVlbkdXb3JsZDsKICNlbmRpZgogCi0gICAgT3duUHRy
PFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyPiBfZXZlbnRIYW5kbGVyOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcj4gX2V2ZW50SGFuZGxlcjsK
ICAgICAKICAgICBCT09MIGluU2V0V2luZG93OwogICAgIEJPT0wgc2hvdWxkU3RvcFNvb247CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1t
CmluZGV4IDM5MTE4MDAyMDIxNmUyYWRkZjgyMDcyODAyMmZmZjI1NmU4ZWJiYWUuLjk1YWFiOTk0
MGM3YTkxYTIxOWJhYzhkNGZkODNmZDg5Njg2MDgwMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC0xMTg3LDEyICsxMTg3
LDEyIEBAIC0gKHZvaWQpZGVzdHJveVBsdWdpbgogICAgIC8vIFNldHRpbmcgdGhlIHdpbmRvdyB0
eXBlIHRvIDAgZW5zdXJlcyB0aGF0IE5QUF9TZXRXaW5kb3cgd2lsbCBiZSBjYWxsZWQgaWYgdGhl
IHBsdWctaW4gaXMgcmVzdGFydGVkLgogICAgIGxhc3RTZXRXaW5kb3cudHlwZSA9IChOUFdpbmRv
d1R5cGUpMDsKICAgICAKLSAgICBfcGx1Z2luTGF5ZXIgPSAwOworICAgIF9wbHVnaW5MYXllciA9
IG5pbDsKICAgICAKICAgICBbc2VsZiBfZGVzdHJveVBsdWdpbl07CiAgICAgW19wbHVnaW5QYWNr
YWdlLmdldCgpIGNsb3NlXTsKICAgICAKLSAgICBfZXZlbnRIYW5kbGVyLmNsZWFyKCk7CisgICAg
X2V2ZW50SGFuZGxlciA9IG51bGxwdHI7CiB9CiAKIC0gKE5QRXZlbnRNb2RlbClldmVudE1vZGVs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVk
aWFDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVk
aWFDbGllbnQubW0KaW5kZXggMWE2NDQwZDk1ZmEzYWRiNGYyZDk1NzAwZDBiOTFkYWRkN2E4YWRi
YS4uYWVkZDg1M2JkM2RhN2ZhODY3ZjYyNGRlZDA3MWYzOTVhOTEyNTE1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5t
bQpAQCAtMzYsNyArMzYsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VzZXJNZWRpYVJlcXVlc3QuaD4KICNpbXBvcnQgPHd0
Zi9IYXNoTWFwLmg+Ci0jaW1wb3J0IDx3dGYvUGFzc093blB0ci5oPgogI2ltcG9ydCA8d3RmL1Jl
ZlB0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9j
ay5tbQppbmRleCBlYTE2ZjM1MmNiMGFjMWFhYjRkYWUwYzk5NzBiOGRlMzk2NmIwYWMxLi4yNDVk
MjE4MGM4OWYwMWFjOWY5YTkwZjRiMzVmN2Q4NjVjOGVjMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRl
ck1vY2subW0KQEAgLTI2LDcgKzI2LDYgQEAKICNpbXBvcnQgIldlYkRldmljZU9yaWVudGF0aW9u
UHJvdmlkZXJNb2NrSW50ZXJuYWwuaCIKIAogI2ltcG9ydCAiV2ViRGV2aWNlT3JpZW50YXRpb25J
bnRlcm5hbC5oIgotI2ltcG9ydCA8d3RmL1Bhc3NPd25QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKQEAgLTM3LDcgKzM2LDcgQEAgLSAoaWQpaW5pdAogICAgIHNlbGYgPSBbc3Vw
ZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIG1fY29y
ZSA9IGFkb3B0UHRyKG5ldyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2soKSk7CisgICAgbV9j
b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s+KCk7CiAg
ICAgcmV0dXJuIHNlbGY7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2tJbnRlcm5hbC5oIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFs
LmgKaW5kZXggNWFjMzhlNWM3ZjJiZDA4MWI5YzlkYWQ1NjIwNjg0NzFmY2RlZDkxOS4uYjA2YjJj
MWZjN2QwNmIwYjliOGM5YzY2MjQyM2Y4NjZmNDI4YTQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFs
LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblBy
b3ZpZGVyTW9ja0ludGVybmFsLmgKQEAgLTI0LDEyICsyNCwxMCBAQAogICovCiAKICNpbXBvcnQg
IldlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLmgiCi0KICNpbXBvcnQgPFdlYkNvcmUv
RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmg+Ci0jaW1wb3J0IDx3dGYvT3duUHRyLmg+CiAK
IEBpbnRlcmZhY2UgV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2tJbnRlcm5hbCA6IE5T
T2JqZWN0IHsKLSAgICBPd25QdHI8V2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2Nr
PiBtX2NvcmU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9u
Q2xpZW50TW9jaz4gbV9jb3JlOwogfQogCiAtIChpZClpbml0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViRnJhbWUubW0KaW5kZXggZTI4MTBmYmJmODk4YzZlNjI5OWE5MDI4ZDQxOWUzYWFlNDBk
NzE2My4uZWMxNWFjMzUzMzA5OTY4MzJiNGY3NDE1ZTY2YTNmZDFhY2EyNzRmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0yNDAsMzcgKzI0MCwyNSBAQCBUZXh0RGly
ZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yIGNvcmUoV2ViVGV4dERpcmVjdGlvblN1Ym1l
bnVJbmNsdXNpb25CZWhhdgogfQogCiAjaWYgUExBVEZPUk0oSU9TKQotUGFzc093blB0cjxWZWN0
b3I8VmVjdG9yPFN0cmluZz4+PiB2ZWN0b3JGb3JEaWN0YXRpb25QaHJhc2VzQXJyYXkoTlNBcnJh
eSAqZGljdGF0aW9uUGhyYXNlcykKKworVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiB2ZWN0b3JGb3JE
aWN0YXRpb25QaHJhc2VzQXJyYXkoTlNBcnJheSAqZGljdGF0aW9uUGhyYXNlcykKIHsKLSAgICBO
U1VJbnRlZ2VyIGRpY3RhdGlvblBocmFzZXNDb3VudCA9IFtkaWN0YXRpb25QaHJhc2VzIGNvdW50
XTsKLSAgICBpZiAoIWRpY3RhdGlvblBocmFzZXNDb3VudCkKLSAgICAgICAgcmV0dXJuIFBhc3NP
d25QdHI8VmVjdG9yPFZlY3RvcjxTdHJpbmc+ID4gPigpOwotICAgIAotICAgIE93blB0cjxWZWN0
b3I8VmVjdG9yPFN0cmluZz4gPiA+IGRpY3RhdGlvblBocmFzZXNWZWN0b3IgPSBhZG9wdFB0cihu
ZXcgVmVjdG9yPFZlY3RvcjxTdHJpbmc+ID4oZGljdGF0aW9uUGhyYXNlc0NvdW50KSk7Ci0gICAg
Ci0gICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgZGljdGF0aW9uUGhyYXNlc0NvdW50OyBp
KyspIHsKLSAgICAgICAgCi0gICAgICAgIGlkIGRpY3RhdGlvblBocmFzZSA9IFtkaWN0YXRpb25Q
aHJhc2VzIG9iamVjdEF0SW5kZXg6aV07CisgICAgVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiByZXN1
bHQ7CisKKyAgICBmb3IgKGlkIGRpY3RhdGlvblBocmFzZSBpbiBkaWN0YXRpb25QaHJhc2VzKSB7
CiAgICAgICAgIGlmICghW2RpY3RhdGlvblBocmFzZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNs
YXNzXV0pCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAgIE5TQXJyYXkg
KmludGVycHJldGF0aW9uc0FycmF5ID0gKE5TQXJyYXkgKilkaWN0YXRpb25QaHJhc2U7Ci0gICAg
ICAgIFZlY3RvcjxTdHJpbmc+JiBpbnRlcnByZXRhdGlvbnNWZWN0b3IgPSBkaWN0YXRpb25QaHJh
c2VzVmVjdG9yLT5hdChpKTsKLSAgICAgICAgCi0gICAgICAgIE5TVUludGVnZXIgaW50ZXJwcmV0
YXRpb25zQ291bnQgPSBbaW50ZXJwcmV0YXRpb25zQXJyYXkgY291bnRdOwotICAgICAgICAKLSAg
ICAgICAgZm9yIChOU1VJbnRlZ2VyIGogPSAwOyBqIDwgaW50ZXJwcmV0YXRpb25zQ291bnQ7IGor
KykgewotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZCBpbnRlcnByZXRhdGlvbiA9IFtpbnRl
cnByZXRhdGlvbnNBcnJheSBvYmplY3RBdEluZGV4OmpdOworICAgICAgICByZXN1bHQuYXBwZW5k
KFZlY3RvcjxTdHJpbmc+KCkpOworICAgICAgICBmb3IgKGlkIGludGVycHJldGF0aW9uIDogKE5T
QXJyYXkgKilkaWN0YXRpb25QaHJhc2UpIHsKICAgICAgICAgICAgIGlmICghW2ludGVycHJldGF0
aW9uIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCiAgICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGludGVycHJldGF0aW9uc1ZlY3Rvci5h
cHBlbmQoU3RyaW5nKChOU1N0cmluZyAqKWludGVycHJldGF0aW9uKSk7CisgICAgICAgICAgICBy
ZXN1bHQubGFzdCgpLmFwcGVuZCgoTlNTdHJpbmcgKilpbnRlcnByZXRhdGlvbik7CiAgICAgICAg
IH0KICAgICB9CiAgICAgCi0gICAgcmV0dXJuIGRpY3RhdGlvblBocmFzZXNWZWN0b3IucmVsZWFz
ZSgpOworICAgIHJldHVybiByZXN1bHQ7CiB9CisKICNlbmRpZgogCiBAaW1wbGVtZW50YXRpb24g
V2ViRnJhbWUgKFdlYkludGVybmFsKQpAQCAtMTcwNCwxMSArMTY5MiwxMSBAQCAtICh2b2lkKXNl
dERpY3RhdGlvblBocmFzZXM6KE5TQXJyYXkgKilkaWN0YXRpb25QaHJhc2VzIG1ldGFkYXRhOihp
ZCltZXRhZGF0YSBhcwogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIAot
ICAgIFdlYkNvcmU6OkZyYW1lICpmcmFtZSA9IGNvcmUoc2VsZik7CisgICAgYXV0byogZnJhbWUg
PSBjb3JlKHNlbGYpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAg
ICBmcmFtZS0+ZWRpdG9yKCkuc2V0RGljdGF0aW9uUGhyYXNlc0FzQ2hpbGRPZkVsZW1lbnQodmVj
dG9yRm9yRGljdGF0aW9uUGhyYXNlc0FycmF5KGRpY3RhdGlvblBocmFzZXMpLCBtZXRhZGF0YSwg
Y29yZShlbGVtZW50KSk7CisgICAgZnJhbWUtPmVkaXRvcigpLnNldERpY3RhdGlvblBocmFzZXNB
c0NoaWxkT2ZFbGVtZW50KHZlY3RvckZvckRpY3RhdGlvblBocmFzZXNBcnJheShkaWN0YXRpb25Q
aHJhc2VzKSwgbWV0YWRhdGEsICpjb3JlKGVsZW1lbnQpKTsKIH0KIAogLSAoTlNBcnJheSAqKWlu
dGVycHJldGF0aW9uc0ZvckN1cnJlbnRSb290CkBAIC0yNTA3LDMzICsyNDk1LDMyIEBAIHN0YXRp
YyBOU1VSTCAqY3JlYXRlVW5pcXVlV2ViRGF0YVVSTCgpCiAKIC0gKHZvaWQpX2xvYWREYXRhOihO
U0RhdGEgKilkYXRhIE1JTUVUeXBlOihOU1N0cmluZyAqKU1JTUVUeXBlIHRleHRFbmNvZGluZ05h
bWU6KE5TU3RyaW5nICopZW5jb2RpbmdOYW1lIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTCB1bnJl
YWNoYWJsZVVSTDooTlNVUkwgKil1bnJlYWNoYWJsZVVSTAogewotI2lmICFQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmICghcHRocmVhZF9tYWluX25wKCkpCiAgICAgICAg
IHJldHVybiBbW3NlbGYgX3dlYmtpdF9pbnZva2VPbk1haW5UaHJlYWRdIF9sb2FkRGF0YTpkYXRh
IE1JTUVUeXBlOk1JTUVUeXBlIHRleHRFbmNvZGluZ05hbWU6ZW5jb2RpbmdOYW1lIGJhc2VVUkw6
YmFzZVVSTCB1bnJlYWNoYWJsZVVSTDp1bnJlYWNoYWJsZVVSTF07CiAjZW5kaWYKLSAgICAKLSAg
ICBVUkwgcmVzcG9uc2VVUkw7Ci0gICAgaWYgKCFiYXNlVVJMKSB7CisKKyAgICBOU1VSTCAqcmVz
cG9uc2VVUkwgPSBuaWw7CisgICAgaWYgKGJhc2VVUkwpCisgICAgICAgIGJhc2VVUkwgPSBbYmFz
ZVVSTCBhYnNvbHV0ZVVSTF07CisgICAgZWxzZSB7CiAgICAgICAgIGJhc2VVUkwgPSBibGFua1VS
TCgpOwogICAgICAgICByZXNwb25zZVVSTCA9IGNyZWF0ZVVuaXF1ZVdlYkRhdGFVUkwoKTsKICAg
ICB9CiAgICAgCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgaWYgKHNob3VsZFVzZVF1aWNrTG9v
a0Zvck1JTUVUeXBlKE1JTUVUeXBlKSkgewotICAgICAgICBVUkwgcWxVUkwgPSByZXNwb25zZVVS
TDsKLSAgICAgICAgaWYgKHFsVVJMLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHFsVVJMID0gW2Jh
c2VVUkwgYWJzb2x1dGVVUkxdOwotICAgICAgICBPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBxbFJl
cXVlc3QocmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZCgoTlNVUkwgKilxbFVSTCwg
TUlNRVR5cGUsIGRhdGEpKTsKLSAgICAgICAgaWYgKHFsUmVxdWVzdCkgewotICAgICAgICAgICAg
X3ByaXZhdGUtPmNvcmVGcmFtZS0+bG9hZGVyKCkubG9hZChGcmFtZUxvYWRSZXF1ZXN0KF9wcml2
YXRlLT5jb3JlRnJhbWUsICpxbFJlcXVlc3QpKTsKKyAgICAgICAgTlNVUkwgKnF1aWNrTG9va1VS
TCA9IHJlc3BvbnNlVVJMID8gcmVzcG9uc2VVUkwgOiBiYXNlVVJMOworICAgICAgICBpZiAoYXV0
byByZXF1ZXN0ID0gcmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZChxdWlja0xvb2tV
UkwsIE1JTUVUeXBlLCBkYXRhKSkgeworICAgICAgICAgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+
bG9hZGVyKCkubG9hZChGcmFtZUxvYWRSZXF1ZXN0KF9wcml2YXRlLT5jb3JlRnJhbWUsIHJlcXVl
c3QuZ2V0KCkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSNlbmRp
ZiAvLyBVU0UoUVVJQ0tfTE9PSykKKyNlbmRpZgogCi0gICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QoW2Jhc2VVUkwgYWJzb2x1dGVVUkxdKTsKKyAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChi
YXNlVVJMKTsKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oTUFDKQogICAgIC8v
IGhhY2sgYmVjYXVzZSBNYWlsIGNoZWNrcyBmb3IgdGhpcyBwcm9wZXJ0eSB0byBkZXRlY3QgZGF0
YSAvIGFyY2hpdmUgbG9hZHMKICAgICBbTlNVUkxQcm90b2NvbCBzZXRQcm9wZXJ0eTpAIiIgZm9y
S2V5OkAiV2ViRGF0YVJlcXVlc3QiIGluUmVxdWVzdDooTlNNdXRhYmxlVVJMUmVxdWVzdCAqKXJl
cXVlc3QubnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KV07CiAjZW5kaWYKQEAgLTI1NDMsNyAr
MjUzMCw2IEBAIC0gKHZvaWQpX2xvYWREYXRhOihOU0RhdGEgKilkYXRhIE1JTUVUeXBlOihOU1N0
cmluZyAqKU1JTUVUeXBlIHRleHRFbmNvZGluZ05hbWU6CiAgICAgX3ByaXZhdGUtPmNvcmVGcmFt
ZS0+bG9hZGVyKCkubG9hZChGcmFtZUxvYWRSZXF1ZXN0KF9wcml2YXRlLT5jb3JlRnJhbWUsIHJl
cXVlc3QsIHN1YnN0aXR1dGVEYXRhKSk7CiB9CiAKLQogLSAodm9pZClsb2FkRGF0YTooTlNEYXRh
ICopZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZSB0ZXh0RW5jb2RpbmdOYW1lOihO
U1N0cmluZyAqKWVuY29kaW5nTmFtZSBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwKIHsKICAgICBX
ZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2tSb3VuZFR3bygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZUludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwuaAppbmRleCAwYWFmYjFkNmMwOTNlZjA0MzI5OWY3
OWY0ZWE4ZTBhZTZjZmYzYmRkLi41ZWY0N2Y2MjkyMWRlOWMxMTVhZDcyMjgxMmNiOGNhZjQ2NTBl
Njc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lSW50ZXJu
YWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwuaApA
QCAtNzMsNyArNzMsNyBAQCBXZWJDb3JlOjpFZGl0YWJsZUxpbmtCZWhhdmlvciBjb3JlKFdlYktp
dEVkaXRhYmxlTGlua0JlaGF2aW9yKTsKIFdlYkNvcmU6OlRleHREaXJlY3Rpb25TdWJtZW51SW5j
bHVzaW9uQmVoYXZpb3IgY29yZShXZWJUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2
aW9yKTsKIAogI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpICYmIFBMQVRGT1JNKElPUykKLVBhc3NP
d25QdHI8VmVjdG9yPFZlY3RvcjxTdHJpbmc+Pj4gdmVjdG9yRm9yRGljdGF0aW9uUGhyYXNlc0Fy
cmF5KE5TQXJyYXkgKik7CitWZWN0b3I8VmVjdG9yPFN0cmluZz4+IHZlY3RvckZvckRpY3RhdGlv
blBocmFzZXNBcnJheShOU0FycmF5ICopOwogI2VuZGlmCiAKIFdlYlZpZXcgKmdldFdlYlZpZXco
V2ViRnJhbWUgKndlYkZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIuaAppbmRleCAyNWIwZWI1YjdlMTAyZjJkOTM2YjRjNjhh
NjJjZDE3Y2Y0OGRlMTVlLi5jZDUzYmE2OTE3ZmZmNTA2YTljNTRhNGNmNzk4YWYwZTMwNzAwZTlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250
cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29u
dHJvbGxlci5oCkBAIC0yNiw3ICsyNiw2IEBACiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAm
JiAhUExBVEZPUk0oSU9TKQogCiAjaW1wb3J0IDxXZWJDb3JlL0ludFBvaW50Lmg+Ci0jaW1wb3J0
IDx3dGYvT3duUHRyLmg+CiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
d0RhdGEuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAppbmRleCA2
YWU5OWJjMWQ1NDQ0MGQ3ODRmNGQ5ODU2NDJkOGE4N2M1MDNkYjkxLi45ZjFkMWFiMTE0YWYwN2Jj
MWVhNDkxZmRiYzZlZTQ1ZmYxNGM1ZTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXdEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3RGF0YS5oCkBAIC0zNCw3ICszNCw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0xheWVyRmx1c2hT
Y2hlZHVsZXJDbGllbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZUtleWJvYXJkVUlNb2Rl
Lmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgotI2ltcG9ydCA8d3RmL1Bhc3NPd25QdHIuaD4K
ICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRpbmdQcmltaXRp
dmVzLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTMxOCw3ICszMTcsNyBA
QCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKLSAg
ICBPd25QdHI8V2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPiBtX2FsdGVybmF0
aXZlVGV4dFVJQ29udHJvbGxlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyPiBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjsKICNl
bmRpZgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gc291cmNlQXBwbGljYXRpb25BdWRpdERhdGE7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQppbmRleCA5ZWJiMzIwZTVi
YTQ0ZjhlODM3MGJhNTBiNzI2ODI2YWMwMjVkYzc3Li44YmQ5ZTQ3ZjJhNGMwMjg4YWQ3MTllODQw
NWM4MjJjMmQ2MDFjZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXdEYXRhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEu
bW0KQEAgLTE2Miw3ICsxNjIsNyBAQCAtIChpZClpbml0CiAgICAgcGx1Z2luRGF0YWJhc2VDbGll
bnRDb3VudCsrOwogCiAjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCi0gICAgbV9hbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgPSBhZG9wdFB0cihuZXcgV2ViQ29yZTo6QWx0ZXJuYXRp
dmVUZXh0VUlDb250cm9sbGVyKTsKKyAgICBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlciA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPigp
OwogI2VuZGlmCiAKICAgICByZXR1cm4gc2VsZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4
IDY2MjU4OTM4ODAxYmQ0MjljNzIzZWJkZTA1M2RhYzJhNmFiMzdjZjUuLjgxOTUwZjgyMDM0MGRm
OTYwMjY0ZDM3ZjExNmY1NGFiOTk2N2RiNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAt
NDEsNyArNDEsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZU92ZXJsYXkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+Ci0jaW5jbHVk
ZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZGluZy5oPgogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>