<?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>160679</bug_id>
          
          <creation_ts>2016-08-08 17:13:36 -0700</creation_ts>
          <short_desc>Move plug-in code from WebPlatformStrategies to WebPluginInfoProvider</short_desc>
          <delta_ts>2016-08-09 09:28:07 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1218638</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-08-08 17:13:36 -0700</bug_when>
    <thetext>Move plug-in code from WebPlatformStrategies to WebPluginInfoProvider</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218639</commentid>
    <comment_count>1</comment_count>
      <attachid>285611</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-08-08 17:14:43 -0700</bug_when>
    <thetext>Created attachment 285611
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218641</commentid>
    <comment_count>2</comment_count>
      <attachid>285613</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-08-08 17:19:41 -0700</bug_when>
    <thetext>Created attachment 285613
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218646</commentid>
    <comment_count>3</comment_count>
      <attachid>285615</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-08-08 17:24:12 -0700</bug_when>
    <thetext>Created attachment 285615
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218655</commentid>
    <comment_count>4</comment_count>
      <attachid>285619</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-08-08 17:33:09 -0700</bug_when>
    <thetext>Created attachment 285619
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218686</commentid>
    <comment_count>5</comment_count>
      <attachid>285619</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-08-08 20:35:38 -0700</bug_when>
    <thetext>Comment on attachment 285619
Patch

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

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:101
&gt;  PluginStrategy* WebPlatformStrategies::createPluginStrategy()

Could we get rid of this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218740</commentid>
    <comment_count>6</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-08-09 09:27:36 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 285619 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=285619&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:101
&gt; &gt;  PluginStrategy* WebPlatformStrategies::createPluginStrategy()
&gt; 
&gt; Could we get rid of this?

In an upcoming patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218741</commentid>
    <comment_count>7</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-08-09 09:28:07 -0700</bug_when>
    <thetext>Committed r204281: &lt;http://trac.webkit.org/changeset/204281&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285611</attachid>
            <date>2016-08-08 17:14:43 -0700</date>
            <delta_ts>2016-08-08 17:19:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160679-20160808171310.patch</filename>
            <type>text/plain</type>
            <size>27541</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMGJhODRkYTcxZGYzMDE3
OWIyZTJmNTI5NGIzODYzMjE5NDhjMWU4MC4uNTYyOTEzODdjNGUwNjlhMGM1OGQ5MjFhODg2MWEw
Mzk0MWQ1NzQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQxIEBACiAyMDE2LTA4LTA4ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgTW92ZSBwbHVnLWlu
IGNvZGUgZnJvbSBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgdG8gV2ViUGx1Z2luSW5mb1Byb3ZpZGVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA2NzkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3kpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OmNsZWFyUGx1Z2luQ2xpZW50UG9s
aWNpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnJlZnJlc2hQ
bHVnaW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpnZXRQbHVn
aW5JbmZvKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpnZXRXZWJW
aXNpYmxlUGx1Z2luSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkluZm9Qcm92aWRl
cjo6cG9wdWxhdGVQbHVnaW5DYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkluZm9Q
cm92aWRlcjo6cGx1Z2luTG9hZENsaWVudFBvbGljeUZvckhvc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbHVnaW5JbmZvUHJvdmlkZXI6Omxvbmdlc3RNYXRjaGVkV2lsZGNhcmRIb3N0Rm9ySG9z
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkluZm9Qcm92aWRlcjo6cmVwbGFjZUhvc3RX
aXRoTWF0Y2hlZFdpbGRjYXJkSG9zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1dl
YlBsdWdpbkluZm9Qcm92aWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjcmVhdGVQbHVnaW5TdHJhdGVneSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsYXRmb3JtU3RyYXRlZ2llczo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWZyZXNoUGx1Z2lucyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGx1Z2lu
SW5mbyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Z2V0V2ViVmlzaWJsZVBsdWdpbkluZm8pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3kpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNsZWFyUGx1Z2luQ2xpZW50
UG9saWNpZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6Omxvbmdlc3RNYXRjaGVkV2lsZGNhcmRIb3N0Rm9ySG9zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVwbGFjZUhvc3RXaXRoTWF0Y2hlZFdp
bGRjYXJkSG9zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cGx1Z2luTG9hZENsaWVudFBvbGljeUZvckhvc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnBvcHVsYXRlUGx1Z2luQ2FjaGUpOiBEZWxl
dGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzczo6Y2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcyk6CisKKzIwMTYtMDgt
MDggIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKwogICAgICAgICBBZGQg
YSBuZXcgUGx1Z2luSW5mb1Byb3ZpZGVyIGNsYXNzLCB0byByZXBsYWNlIFBsdWdpblN0cmF0ZWd5
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA2NzAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdp
bkluZm9Qcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvV2Vi
UGx1Z2luSW5mb1Byb3ZpZGVyLmNwcAppbmRleCA4ZjU2ZGRlMTBmOGFhMjk2NzllNTNiMjEyMDM3
YTA2MDU0OWM0ZTZlLi5jOTQ2NmM4YjY5OGMxMTMxMTdkMjVhYTljMjFlYTYwZjc1OTE0NmJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5m
b1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvV2Vi
UGx1Z2luSW5mb1Byb3ZpZGVyLmNwcApAQCAtMjYsOSArMjYsMTggQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJXZWJQbHVnaW5JbmZvUHJvdmlkZXIuaCIKIAotLy8gRklYTUU6IFdl
IHNob3VsZG4ndCBjYWxsIG91dCB0byB0aGUgcGxhdGZvcm0gc3RyYXRlZ3kgZm9yIHRoaXMuCi0j
aW5jbHVkZSAiV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9QbHVn
aW5TdHJhdGVneS5oPgorI2luY2x1ZGUgIkhhbmdEZXRlY3Rpb25EaXNhYmxlci5oIgorI2luY2x1
ZGUgIlN0cmluZ1V0aWxpdGllcy5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5o
IgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNz
YWdlcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0RvY3VtZW50TG9hZGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NYWluRnJhbWUuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1BhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9TdWJmcmFtZUxvYWRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQ3LDMxICs1NiwxODgg
QEAgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjp+V2ViUGx1Z2luSW5mb1Byb3ZpZGVyKCkKIHsKIH0K
IAorI2lmIFBMQVRGT1JNKE1BQykKK3ZvaWQgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpzZXRQbHVn
aW5Mb2FkQ2xpZW50UG9saWN5KFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3kgY2xpZW50
UG9saWN5LCBjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uU3RyaW5nKQoreworICAgIFN0cmluZyBob3N0VG9TZXQg
PSBob3N0LmlzTnVsbCgpIHx8ICFob3N0Lmxlbmd0aCgpID8gIioiIDogaG9zdDsKKyAgICBTdHJp
bmcgYnVuZGxlSWRlbnRpZmllclRvU2V0ID0gYnVuZGxlSWRlbnRpZmllci5pc051bGwoKSB8fCAh
YnVuZGxlSWRlbnRpZmllci5sZW5ndGgoKSA/ICIqIiA6IGJ1bmRsZUlkZW50aWZpZXI7CisgICAg
U3RyaW5nIHZlcnNpb25TdHJpbmdUb1NldCA9IHZlcnNpb25TdHJpbmcuaXNOdWxsKCkgfHwgIXZl
cnNpb25TdHJpbmcubGVuZ3RoKCkgPyAiKiIgOiB2ZXJzaW9uU3RyaW5nOworCisgICAgUGx1Z2lu
UG9saWN5TWFwc0J5SWRlbnRpZmllciBwb2xpY2llc0J5SWRlbnRpZmllcjsKKyAgICBpZiAobV9o
b3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEuY29udGFpbnMoaG9zdFRvU2V0KSkKKyAgICAgICAg
cG9saWNpZXNCeUlkZW50aWZpZXIgPSBtX2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YS5nZXQo
aG9zdFRvU2V0KTsKKworICAgIFBsdWdpbkxvYWRDbGllbnRQb2xpY2llc0J5QnVuZGxlVmVyc2lv
biB2ZXJzaW9uc1RvUG9saWNpZXM7CisgICAgaWYgKHBvbGljaWVzQnlJZGVudGlmaWVyLmNvbnRh
aW5zKGJ1bmRsZUlkZW50aWZpZXJUb1NldCkpCisgICAgICAgIHZlcnNpb25zVG9Qb2xpY2llcyA9
IHBvbGljaWVzQnlJZGVudGlmaWVyLmdldChidW5kbGVJZGVudGlmaWVyVG9TZXQpOworCisgICAg
dmVyc2lvbnNUb1BvbGljaWVzLnNldCh2ZXJzaW9uU3RyaW5nVG9TZXQsIGNsaWVudFBvbGljeSk7
CisgICAgcG9saWNpZXNCeUlkZW50aWZpZXIuc2V0KGJ1bmRsZUlkZW50aWZpZXJUb1NldCwgdmVy
c2lvbnNUb1BvbGljaWVzKTsKKyAgICBtX2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YS5zZXQo
aG9zdFRvU2V0LCBwb2xpY2llc0J5SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViUGx1Z2luSW5m
b1Byb3ZpZGVyOjpjbGVhclBsdWdpbkNsaWVudFBvbGljaWVzKCkKK3sKKyAgICBtX2hvc3RzVG9Q
bHVnaW5JZGVudGlmaWVyRGF0YS5jbGVhcigpOworfQorI2VuZGlmCisKIHZvaWQgV2ViUGx1Z2lu
SW5mb1Byb3ZpZGVyOjpyZWZyZXNoUGx1Z2lucygpCiB7Ci0gICAgV2ViQ29yZTo6cGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBsdWdpblN0cmF0ZWd5KCktPnJlZnJlc2hQbHVnaW5zKCk7CisjaWYgRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisgICAgbV9jYWNoZWRQbHVnaW5zLmNsZWFyKCk7Cisg
ICAgbV9wbHVnaW5DYWNoZUlzUG9wdWxhdGVkID0gZmFsc2U7CisgICAgbV9zaG91bGRSZWZyZXNo
UGx1Z2lucyA9IHRydWU7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6
OmdldFBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYgcGFnZSwgVmVjdG9yPFdlYkNvcmU6OlBsdWdp
bkluZm8+JiBwbHVnaW5zKQogewotICAgIFdlYkNvcmU6OnBsYXRmb3JtU3RyYXRlZ2llcygpLT5w
bHVnaW5TdHJhdGVneSgpLT5nZXRQbHVnaW5JbmZvKCZwYWdlLCBwbHVnaW5zKTsKKyNpZiBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKyAgICBwb3B1bGF0ZVBsdWdpbkNhY2hlKHBhZ2UpOwor
CisgICAgaWYgKHBhZ2UubWFpbkZyYW1lKCkubG9hZGVyKCkuc3ViZnJhbWVMb2FkZXIoKS5hbGxv
d1BsdWdpbnMoKSkgeworICAgICAgICBwbHVnaW5zID0gbV9jYWNoZWRQbHVnaW5zOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgcGx1Z2lucyA9IG1fY2FjaGVkQXBwbGljYXRpb25QbHVn
aW5zOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocGFnZSk7CisgICAgVU5VU0VEX1BBUkFNKHBs
dWdpbnMpOworI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogfQogCiB2b2lk
IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6Z2V0V2ViVmlzaWJsZVBsdWdpbkluZm8oV2ViQ29yZTo6
UGFnZSYgcGFnZSwgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+JiBwbHVnaW5zKQogewotICAg
IFdlYkNvcmU6OnBsYXRmb3JtU3RyYXRlZ2llcygpLT5wbHVnaW5TdHJhdGVneSgpLT5nZXRXZWJW
aXNpYmxlUGx1Z2luSW5mbygmcGFnZSwgcGx1Z2lucyk7CisgICAgQVNTRVJUX0FSRyhwbHVnaW5z
LCBwbHVnaW5zLmlzRW1wdHkoKSk7CisKKyAgICBnZXRQbHVnaW5JbmZvKHBhZ2UsIHBsdWdpbnMp
OworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHBhZ2UubWFp
bkZyYW1lKCkuZG9jdW1lbnQoKSkgeworICAgICAgICBpZiAoYXV0byogc2VjdXJpdHlPcmlnaW4g
PSBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkgeworICAgICAgICAgICAgaWYgKHNlY3VyaXR5
T3JpZ2luLT5pc0xvY2FsKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgfQorCisgICAgZm9yIChpbnQzMl90IGkgPSBwbHVnaW5zLnNpemUoKSAtIDE7IGkgPj0gMDsg
LS1pKSB7CisgICAgICAgIGF1dG8mIGluZm8gPSBwbHVnaW5zLmF0KGkpOworCisgICAgICAgIC8v
IEFsbG93IGJ1aWx0LWluIHBsdWdpbnMuIEFsc28gdGVudGF0aXZlbHkgYWxsb3cgcGx1Z2lucyB0
aGF0IHRoZSBjbGllbnQgbWlnaHQgbGF0ZXIgc2VsZWN0aXZlbHkgcGVybWl0LgorICAgICAgICBp
ZiAoaW5mby5pc0FwcGxpY2F0aW9uUGx1Z2luIHx8IGluZm8uY2xpZW50TG9hZFBvbGljeSA9PSBX
ZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QXNrKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgaWYgKGluZm8uY2xpZW50TG9hZFBvbGljeSA9PSBXZWJDb3JlOjpQbHVnaW5M
b2FkQ2xpZW50UG9saWN5QmxvY2spCisgICAgICAgICAgICBwbHVnaW5zLnJlbW92ZShpKTsKKyAg
ICB9CisjZW5kaWYKIH0KIAordm9pZCBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnBvcHVsYXRlUGx1
Z2luQ2FjaGUoY29uc3QgV2ViQ29yZTo6UGFnZSYgcGFnZSkKK3sKKyAgICBpZiAoIW1fcGx1Z2lu
Q2FjaGVJc1BvcHVsYXRlZCkgeworICAgICAgICBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIgaGFuZ0Rl
dGVjdGlvbkRpc2FibGVyOworCisgICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlByb2Nlc3NQ
cm94eTo6R2V0UGx1Z2lucyhtX3Nob3VsZFJlZnJlc2hQbHVnaW5zKSwgTWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6R2V0UGx1Z2luczo6UmVwbHkobV9jYWNoZWRQbHVnaW5zLCBtX2NhY2hlZEFw
cGxpY2F0aW9uUGx1Z2lucyksIDApKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1f
c2hvdWxkUmVmcmVzaFBsdWdpbnMgPSBmYWxzZTsKKyAgICAgICAgbV9wbHVnaW5DYWNoZUlzUG9w
dWxhdGVkID0gdHJ1ZTsKKyAgICB9CisKICNpZiBQTEFURk9STShNQUMpCi12b2lkIFdlYlBsdWdp
bkluZm9Qcm92aWRlcjo6c2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShXZWJDb3JlOjpQbHVnaW5M
b2FkQ2xpZW50UG9saWN5IHBsdWdpbkxvYWRDbGllbnRQb2xpY3ksIGNvbnN0IFN0cmluZyYgaG9z
dCwgY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHZlcnNpb25T
dHJpbmcpCisgICAgU3RyaW5nIHBhZ2VIb3N0ID0gcGFnZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5k
b2N1bWVudExvYWRlcigpLT5yZXNwb25zZVVSTCgpLmhvc3QoKTsKKyAgICBmb3IgKGF1dG8mIGlu
Zm8gOiBtX2NhY2hlZFBsdWdpbnMpIHsKKyAgICAgICAgaWYgKGF1dG8gY2xpZW50UG9saWN5ID0g
cGx1Z2luTG9hZENsaWVudFBvbGljeUZvckhvc3QocGFnZUhvc3QsIGluZm8pKQorICAgICAgICAg
ICAgaW5mby5jbGllbnRMb2FkUG9saWN5ID0gKmNsaWVudFBvbGljeTsKKyAgICB9CisjZWxzZQor
ICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKKyNlbmRpZiAvLyBub3QgUExBVEZPUk0oTUFDKQorfQor
CisKK09wdGlvbmFsPFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3k+IFdlYlBsdWdpbklu
Zm9Qcm92aWRlcjo6cGx1Z2luTG9hZENsaWVudFBvbGljeUZvckhvc3QoY29uc3QgU3RyaW5nJiBo
b3N0LCBjb25zdCBXZWJDb3JlOjpQbHVnaW5JbmZvJiBpbmZvKSBjb25zdAoreworICAgIFN0cmlu
ZyBob3N0VG9Mb29rVXAgPSBob3N0OworICAgIFN0cmluZyBpZGVudGlmaWVyID0gaW5mby5idW5k
bGVJZGVudGlmaWVyOworCisgICAgYXV0byBwb2xpY2llc0J5SWRlbnRpZmllckl0ZXJhdG9yID0g
bV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEuZmluZChob3N0VG9Mb29rVXApOworCisgICAg
aWYgKCFpZGVudGlmaWVyLmlzTnVsbCgpICYmIHBvbGljaWVzQnlJZGVudGlmaWVySXRlcmF0b3Ig
PT0gbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEuZW5kKCkpIHsKKyAgICAgICAgaWYgKCFy
ZXBsYWNlSG9zdFdpdGhNYXRjaGVkV2lsZGNhcmRIb3N0KGhvc3RUb0xvb2tVcCwgaWRlbnRpZmll
cikpCisgICAgICAgICAgICBob3N0VG9Mb29rVXAgPSAiKiI7CisgICAgICAgIHBvbGljaWVzQnlJ
ZGVudGlmaWVySXRlcmF0b3IgPSBtX2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YS5maW5kKGhv
c3RUb0xvb2tVcCk7CisgICAgICAgIGlmIChob3N0VG9Mb29rVXAgIT0gIioiICYmIHBvbGljaWVz
QnlJZGVudGlmaWVySXRlcmF0b3IgPT0gbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEuZW5k
KCkpIHsKKyAgICAgICAgICAgIGhvc3RUb0xvb2tVcCA9ICIqIjsKKyAgICAgICAgICAgIHBvbGlj
aWVzQnlJZGVudGlmaWVySXRlcmF0b3IgPSBtX2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YS5m
aW5kKGhvc3RUb0xvb2tVcCk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHBvbGljaWVzQnlJ
ZGVudGlmaWVySXRlcmF0b3IgPT0gbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEuZW5kKCkp
CisgICAgICAgIHJldHVybiBOdWxsb3B0OworCisgICAgYXV0byYgcG9saWNpZXNCeUlkZW50aWZp
ZXIgPSBwb2xpY2llc0J5SWRlbnRpZmllckl0ZXJhdG9yLT52YWx1ZTsKKworICAgIGlmICghaWRl
bnRpZmllcikKKyAgICAgICAgaWRlbnRpZmllciA9ICIqIjsKKworICAgIGF1dG8gaWRlbnRpZmll
clBvbGljeUl0ZXJhdG9yID0gcG9saWNpZXNCeUlkZW50aWZpZXIuZmluZChpZGVudGlmaWVyKTsK
KyAgICBpZiAoaWRlbnRpZmllciAhPSAiKiIgJiYgaWRlbnRpZmllclBvbGljeUl0ZXJhdG9yID09
IHBvbGljaWVzQnlJZGVudGlmaWVyLmVuZCgpKSB7CisgICAgICAgIGlkZW50aWZpZXIgPSAiKiI7
CisgICAgICAgIGlkZW50aWZpZXJQb2xpY3lJdGVyYXRvciA9IHBvbGljaWVzQnlJZGVudGlmaWVy
LmZpbmQoaWRlbnRpZmllcik7CisgICAgfQorCisgICAgaWYgKGlkZW50aWZpZXJQb2xpY3lJdGVy
YXRvciA9PSBwb2xpY2llc0J5SWRlbnRpZmllci5lbmQoKSkKKyAgICAgICAgcmV0dXJuIE51bGxv
cHQ7CisKKyAgICBhdXRvJiB2ZXJzaW9uc1RvUG9saWNpZXMgPSBpZGVudGlmaWVyUG9saWN5SXRl
cmF0b3ItPnZhbHVlOworCisgICAgU3RyaW5nIHZlcnNpb24gPSBpbmZvLnZlcnNpb25TdHJpbmc7
CisgICAgaWYgKCF2ZXJzaW9uKQorICAgICAgICB2ZXJzaW9uID0gIioiOworICAgIGF1dG8gcG9s
aWN5SXRlcmF0b3IgPSB2ZXJzaW9uc1RvUG9saWNpZXMuZmluZCh2ZXJzaW9uKTsKKyAgICBpZiAo
dmVyc2lvbiAhPSAiKiIgJiYgcG9saWN5SXRlcmF0b3IgPT0gdmVyc2lvbnNUb1BvbGljaWVzLmVu
ZCgpKSB7CisgICAgICAgIHZlcnNpb24gPSAiKiI7CisgICAgICAgIHBvbGljeUl0ZXJhdG9yID0g
dmVyc2lvbnNUb1BvbGljaWVzLmZpbmQodmVyc2lvbik7CisgICAgfQorCisgICAgaWYgKHBvbGlj
eUl0ZXJhdG9yID09IHZlcnNpb25zVG9Qb2xpY2llcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIE51
bGxvcHQ7CisKKyAgICByZXR1cm4gcG9saWN5SXRlcmF0b3ItPnZhbHVlOworfQorCitTdHJpbmcg
V2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpsb25nZXN0TWF0Y2hlZFdpbGRjYXJkSG9zdEZvckhvc3Qo
Y29uc3QgU3RyaW5nJiBob3N0KSBjb25zdAogewotICAgIFdlYkNvcmU6OnBsYXRmb3JtU3RyYXRl
Z2llcygpLT5wbHVnaW5TdHJhdGVneSgpLT5zZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KHBsdWdp
bkxvYWRDbGllbnRQb2xpY3ksIGhvc3QsIGJ1bmRsZUlkZW50aWZpZXIsIHZlcnNpb25TdHJpbmcp
OworICAgIFN0cmluZyBsb25nZXN0TWF0Y2hlZEhvc3Q7CisKKyAgICBmb3IgKGF1dG8mIGtleSA6
IG1faG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLmtleXMoKSkgeworICAgICAgICBpZiAoa2V5
LmNvbnRhaW5zKCcqJykgJiYga2V5ICE9ICIqIiAmJiBzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJp
bmcoaG9zdCwga2V5KSkgeworICAgICAgICAgICAgaWYgKGtleS5sZW5ndGgoKSA+IGxvbmdlc3RN
YXRjaGVkSG9zdC5sZW5ndGgoKSkKKyAgICAgICAgICAgICAgICBsb25nZXN0TWF0Y2hlZEhvc3Qg
PSBrZXk7CisgICAgICAgICAgICBlbHNlIGlmIChrZXkubGVuZ3RoKCkgPT0gbG9uZ2VzdE1hdGNo
ZWRIb3N0Lmxlbmd0aCgpICYmIGNvZGVQb2ludENvbXBhcmVMZXNzVGhhbihrZXksIGxvbmdlc3RN
YXRjaGVkSG9zdCkpCisgICAgICAgICAgICAgICAgbG9uZ2VzdE1hdGNoZWRIb3N0ID0ga2V5Owor
ICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGxvbmdlc3RNYXRjaGVkSG9zdDsKIH0KIAot
dm9pZCBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OmNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKQor
Ym9vbCBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnJlcGxhY2VIb3N0V2l0aE1hdGNoZWRXaWxkY2Fy
ZEhvc3QoU3RyaW5nJiBob3N0LCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpIGNvbnN0CiB7Ci0g
ICAgV2ViQ29yZTo6cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBsdWdpblN0cmF0ZWd5KCktPmNsZWFy
UGx1Z2luQ2xpZW50UG9saWNpZXMoKTsKKyAgICBTdHJpbmcgbWF0Y2hlZFdpbGRjYXJkSG9zdCA9
IGxvbmdlc3RNYXRjaGVkV2lsZGNhcmRIb3N0Rm9ySG9zdChob3N0KTsKKworICAgIGlmIChtYXRj
aGVkV2lsZGNhcmRIb3N0LmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBh
dXRvIHBsdWdJbklkZW50aWZpZXJEYXRhID0gbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEu
ZmluZChtYXRjaGVkV2lsZGNhcmRIb3N0KTsKKyAgICBpZiAocGx1Z0luSWRlbnRpZmllckRhdGEg
PT0gbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEuZW5kKCkgfHwgIXBsdWdJbklkZW50aWZp
ZXJEYXRhLT52YWx1ZS5jb250YWlucyhpZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaG9zdCA9IG1hdGNoZWRXaWxkY2FyZEhvc3Q7CisgICAgcmV0dXJuIHRydWU7CiB9
Ci0jZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCmluZGV4IDc5YzBkZWQwY2YyYzViNzg0ZjZm
YjE1YjNhNGU5Mzg4MzBlZGEzMmIuLjllNDhhNjk4YjVkNmUyNGNhNzNmMTcyZTVjNDA2YTE4ODcw
OTFiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQ
bHVnaW5JbmZvUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5JbmZvUHJvdmlkZXIuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMzYsMTYgKzM3LDM4IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyJiBzaW5nbGV0b24oKTsK
ICAgICB2aXJ0dWFsIH5XZWJQbHVnaW5JbmZvUHJvdmlkZXIoKTsKIAorI2lmIFBMQVRGT1JNKE1B
QykKKyAgICB2b2lkIHNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3koV2ViQ29yZTo6UGx1Z2luTG9h
ZENsaWVudFBvbGljeSwgY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZykgb3ZlcnJpZGU7CisgICAgdm9p
ZCBjbGVhclBsdWdpbkNsaWVudFBvbGljaWVzKCkgb3ZlcnJpZGU7CisjZW5kaWYKKwogcHJpdmF0
ZToKKyAgICBXZWJQbHVnaW5JbmZvUHJvdmlkZXIoKTsKKwogICAgIHZvaWQgcmVmcmVzaFBsdWdp
bnMoKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYsIFZl
Y3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0V2ViVmlz
aWJsZVBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYsIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZv
PiYpIG92ZXJyaWRlOworCisjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisgICAgdm9p
ZCBwb3B1bGF0ZVBsdWdpbkNhY2hlKGNvbnN0IFdlYkNvcmU6OlBhZ2UmKTsKKyNlbmRpZiAvLyBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2b2lk
IHNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3koV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGlj
eSwgY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgdmVyc2lvblN0cmluZykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGVhclBsdWdp
bkNsaWVudFBvbGljaWVzKCkgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGx1Z2lu
TG9hZENsaWVudFBvbGljeT4gcGx1Z2luTG9hZENsaWVudFBvbGljeUZvckhvc3QoY29uc3QgU3Ry
aW5nJiwgY29uc3QgV2ViQ29yZTo6UGx1Z2luSW5mbyYpIGNvbnN0OworICAgIFN0cmluZyBsb25n
ZXN0TWF0Y2hlZFdpbGRjYXJkSG9zdEZvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0KSBjb25zdDsK
KyAgICBib29sIHJlcGxhY2VIb3N0V2l0aE1hdGNoZWRXaWxkY2FyZEhvc3QoU3RyaW5nJiBob3N0
LCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpIGNvbnN0OworCisgICAgdHlwZWRlZiBIYXNoTWFw
PFN0cmluZywgV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeT4gUGx1Z2luTG9hZENsaWVu
dFBvbGljaWVzQnlCdW5kbGVWZXJzaW9uOworICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFBs
dWdpbkxvYWRDbGllbnRQb2xpY2llc0J5QnVuZGxlVmVyc2lvbj4gUGx1Z2luUG9saWN5TWFwc0J5
SWRlbnRpZmllcjsKKyAgICBIYXNoTWFwPFN0cmluZywgUGx1Z2luUG9saWN5TWFwc0J5SWRlbnRp
Zmllcj4gbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGE7CiAjZW5kaWYKIAotICAgIFdlYlBs
dWdpbkluZm9Qcm92aWRlcigpOworI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQorICAg
IGJvb2wgbV9wbHVnaW5DYWNoZUlzUG9wdWxhdGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fc2hv
dWxkUmVmcmVzaFBsdWdpbnMgeyBmYWxzZSB9OworICAgIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5J
bmZvPiBtX2NhY2hlZFBsdWdpbnM7CisgICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IG1f
Y2FjaGVkQXBwbGljYXRpb25QbHVnaW5zOworI2VuZGlmCiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggOTRlOWMxNmJmYjZhOTRjMTNiMDgzZjg3NzVmNTc1
ZDhlOTA2NjMxZS4uOWM4OGI1ZjFhMWRiODZlMTZjODNkNTkxNzZjYTRhMWE0YzU4NGMwMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtODAsMTAgKzgwLDYgQEAgdm9p
ZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluaXRpYWxpemUoKQogfQogCiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OldlYlBsYXRmb3JtU3RyYXRlZ2llcygpCi0jaWYgRU5BQkxFKE5FVFNDQVBFX1BM
VUdJTl9BUEkpCi0gICAgOiBtX3BsdWdpbkNhY2hlSXNQb3B1bGF0ZWQoZmFsc2UpCi0gICAgLCBt
X3Nob3VsZFJlZnJlc2hQbHVnaW5zKGZhbHNlKQotI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9Q
TFVHSU5fQVBJKQogewogfQogCkBAIC0xMDQsNyArMTAwLDcgQEAgUGFzdGVib2FyZFN0cmF0ZWd5
KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZVBhc3RlYm9hcmRTdHJhdGVneSgpCiAKIFBs
dWdpblN0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZVBsdWdpblN0cmF0ZWd5
KCkKIHsKLSAgICByZXR1cm4gdGhpczsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogQmxvYlJl
Z2lzdHJ5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUJsb2JSZWdpc3RyeSgpCkBAIC0x
NjUsMjAwICsxNjEsNiBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWRkQ29va2llKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29ucwogICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpBZGRDb29raWUoU2Vzc2lvblRyYWNr
ZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgdXJsLCBjb29raWUpLCAwKTsKIH0KIAotLy8gUGx1Z2lu
U3RyYXRlZ3kKLQotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlZnJlc2hQbHVnaW5zKCkK
LXsKLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBtX2NhY2hlZFBsdWdpbnMu
Y2xlYXIoKTsKLSAgICBtX3BsdWdpbkNhY2hlSXNQb3B1bGF0ZWQgPSBmYWxzZTsKLSAgICBtX3No
b3VsZFJlZnJlc2hQbHVnaW5zID0gdHJ1ZTsKLSNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX0FQSSkKLX0KLQotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBsdWdpbkluZm8o
Y29uc3QgV2ViQ29yZTo6UGFnZSogcGFnZSwgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+JiBw
bHVnaW5zKQotewotI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIEFTU0VSVF9B
UkcocGFnZSwgcGFnZSk7Ci0gICAgcG9wdWxhdGVQbHVnaW5DYWNoZSgqcGFnZSk7Ci0KLSAgICBp
ZiAocGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuc3ViZnJhbWVMb2FkZXIoKS5hbGxvd1BsdWdp
bnMoKSkgewotICAgICAgICBwbHVnaW5zID0gbV9jYWNoZWRQbHVnaW5zOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgcGx1Z2lucyA9IG1fY2FjaGVkQXBwbGljYXRpb25QbHVnaW5zOwot
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocGFnZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHBsdWdpbnMp
OwotI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotfQotCi12b2lkIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Z2V0V2ViVmlzaWJsZVBsdWdpbkluZm8oY29uc3QgUGFnZSogcGFn
ZSwgVmVjdG9yPFBsdWdpbkluZm8+JiBwbHVnaW5zKQotewotICAgIEFTU0VSVF9BUkcocGFnZSwg
cGFnZSk7Ci0gICAgQVNTRVJUX0FSRyhwbHVnaW5zLCBwbHVnaW5zLmlzRW1wdHkoKSk7Ci0KLSAg
ICBnZXRQbHVnaW5JbmZvKHBhZ2UsIHBsdWdpbnMpOwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAg
IGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBwYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKSB7
Ci0gICAgICAgIGlmIChTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4gPSBkb2N1bWVudC0+
c2VjdXJpdHlPcmlnaW4oKSkgewotICAgICAgICAgICAgaWYgKHNlY3VyaXR5T3JpZ2luLT5pc0xv
Y2FsKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotICAgIAot
ICAgIGZvciAoaW50MzJfdCBpID0gcGx1Z2lucy5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgewot
ICAgICAgICBQbHVnaW5JbmZvJiBpbmZvID0gcGx1Z2lucy5hdChpKTsKLSAgICAgICAgUGx1Z2lu
TG9hZENsaWVudFBvbGljeSBjbGllbnRQb2xpY3kgPSBpbmZvLmNsaWVudExvYWRQb2xpY3k7Ci0g
ICAgICAgIC8vIEFsbG93IGJ1aWx0LWluIHBsdWdpbnMuIEFsc28gdGVudGF0aXZlbHkgYWxsb3cg
cGx1Z2lucyB0aGF0IHRoZSBjbGllbnQgbWlnaHQgbGF0ZXIgc2VsZWN0aXZlbHkgcGVybWl0Lgot
ICAgICAgICBpZiAoaW5mby5pc0FwcGxpY2F0aW9uUGx1Z2luIHx8IGNsaWVudFBvbGljeSA9PSBQ
bHVnaW5Mb2FkQ2xpZW50UG9saWN5QXNrKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAg
ICAgaWYgKGNsaWVudFBvbGljeSA9PSBQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QmxvY2spCi0gICAg
ICAgICAgICBwbHVnaW5zLnJlbW92ZShpKTsKLSAgICB9Ci0jZW5kaWYKLX0KLQotI2lmIFBMQVRG
T1JNKE1BQykKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRQbHVnaW5Mb2FkQ2xpZW50
UG9saWN5KFBsdWdpbkxvYWRDbGllbnRQb2xpY3kgY2xpZW50UG9saWN5LCBjb25zdCBTdHJpbmcm
IGhvc3QsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB2ZXJz
aW9uU3RyaW5nKQotewotICAgIFN0cmluZyBob3N0VG9TZXQgPSBob3N0LmlzTnVsbCgpIHx8ICFo
b3N0Lmxlbmd0aCgpID8gIioiIDogaG9zdDsKLSAgICBTdHJpbmcgYnVuZGxlSWRlbnRpZmllclRv
U2V0ID0gYnVuZGxlSWRlbnRpZmllci5pc051bGwoKSB8fCAhYnVuZGxlSWRlbnRpZmllci5sZW5n
dGgoKSA/ICIqIiA6IGJ1bmRsZUlkZW50aWZpZXI7Ci0gICAgU3RyaW5nIHZlcnNpb25TdHJpbmdU
b1NldCA9IHZlcnNpb25TdHJpbmcuaXNOdWxsKCkgfHwgIXZlcnNpb25TdHJpbmcubGVuZ3RoKCkg
PyAiKiIgOiB2ZXJzaW9uU3RyaW5nOwotCi0gICAgUGx1Z2luUG9saWN5TWFwc0J5SWRlbnRpZmll
ciBwb2xpY2llc0J5SWRlbnRpZmllcjsKLSAgICBpZiAobV9ob3N0c1RvUGx1Z2luSWRlbnRpZmll
ckRhdGEuY29udGFpbnMoaG9zdFRvU2V0KSkKLSAgICAgICAgcG9saWNpZXNCeUlkZW50aWZpZXIg
PSBtX2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YS5nZXQoaG9zdFRvU2V0KTsKLQotICAgIFBs
dWdpbkxvYWRDbGllbnRQb2xpY2llc0J5QnVuZGxlVmVyc2lvbiB2ZXJzaW9uc1RvUG9saWNpZXM7
Ci0gICAgaWYgKHBvbGljaWVzQnlJZGVudGlmaWVyLmNvbnRhaW5zKGJ1bmRsZUlkZW50aWZpZXJU
b1NldCkpCi0gICAgICAgIHZlcnNpb25zVG9Qb2xpY2llcyA9IHBvbGljaWVzQnlJZGVudGlmaWVy
LmdldChidW5kbGVJZGVudGlmaWVyVG9TZXQpOwotCi0gICAgdmVyc2lvbnNUb1BvbGljaWVzLnNl
dCh2ZXJzaW9uU3RyaW5nVG9TZXQsIGNsaWVudFBvbGljeSk7Ci0gICAgcG9saWNpZXNCeUlkZW50
aWZpZXIuc2V0KGJ1bmRsZUlkZW50aWZpZXJUb1NldCwgdmVyc2lvbnNUb1BvbGljaWVzKTsKLSAg
ICBtX2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YS5zZXQoaG9zdFRvU2V0LCBwb2xpY2llc0J5
SWRlbnRpZmllcik7Ci19Ci0KLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjbGVhclBsdWdp
bkNsaWVudFBvbGljaWVzKCkKLXsKLSAgICBtX2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YS5j
bGVhcigpOwotfQotCi0jZW5kaWYKLQotI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQot
I2lmIFBMQVRGT1JNKE1BQykKLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bG9uZ2Vz
dE1hdGNoZWRXaWxkY2FyZEhvc3RGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCkgY29uc3QKLXsK
LSAgICBTdHJpbmcgbG9uZ2VzdE1hdGNoZWRIb3N0OwotCi0gICAgZm9yIChhdXRvJiBrZXkgOiBt
X2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YS5rZXlzKCkpIHsKLSAgICAgICAgaWYgKGtleS5j
b250YWlucygnKicpICYmIGtleSAhPSAiKiIgJiYgc3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5n
KGhvc3QsIGtleSkpIHsKLSAgICAgICAgICAgIGlmIChrZXkubGVuZ3RoKCkgPiBsb25nZXN0TWF0
Y2hlZEhvc3QubGVuZ3RoKCkpCi0gICAgICAgICAgICAgICAgbG9uZ2VzdE1hdGNoZWRIb3N0ID0g
a2V5OwotICAgICAgICAgICAgZWxzZSBpZiAoa2V5Lmxlbmd0aCgpID09IGxvbmdlc3RNYXRjaGVk
SG9zdC5sZW5ndGgoKSAmJiBjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4oa2V5LCBsb25nZXN0TWF0
Y2hlZEhvc3QpKQotICAgICAgICAgICAgICAgIGxvbmdlc3RNYXRjaGVkSG9zdCA9IGtleTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBsb25nZXN0TWF0Y2hlZEhvc3Q7Ci19Ci0KLWJv
b2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZXBsYWNlSG9zdFdpdGhNYXRjaGVkV2lsZGNhcmRI
b3N0KFN0cmluZyYgaG9zdCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKSBjb25zdAotewotICAg
IFN0cmluZyBtYXRjaGVkV2lsZGNhcmRIb3N0ID0gbG9uZ2VzdE1hdGNoZWRXaWxkY2FyZEhvc3RG
b3JIb3N0KGhvc3QpOwotCi0gICAgaWYgKG1hdGNoZWRXaWxkY2FyZEhvc3QuaXNOdWxsKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gcGx1Z0luSWRlbnRpZmllckRhdGEgPSBt
X2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YS5maW5kKG1hdGNoZWRXaWxkY2FyZEhvc3QpOwot
ICAgIGlmIChwbHVnSW5JZGVudGlmaWVyRGF0YSA9PSBtX2hvc3RzVG9QbHVnaW5JZGVudGlmaWVy
RGF0YS5lbmQoKSB8fCAhcGx1Z0luSWRlbnRpZmllckRhdGEtPnZhbHVlLmNvbnRhaW5zKGlkZW50
aWZpZXIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBob3N0ID0gbWF0Y2hlZFdpbGRj
YXJkSG9zdDsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnBsdWdpbkxvYWRDbGllbnRQb2xpY3lGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCwgY29u
c3QgUGx1Z2luSW5mbyYgaW5mbywgUGx1Z2luTG9hZENsaWVudFBvbGljeSYgcG9saWN5KSBjb25z
dAotewotICAgIFN0cmluZyBob3N0VG9Mb29rVXAgPSBob3N0OwotICAgIFN0cmluZyBpZGVudGlm
aWVyID0gaW5mby5idW5kbGVJZGVudGlmaWVyOwotCi0gICAgYXV0byBwb2xpY2llc0J5SWRlbnRp
Zmllckl0ZXJhdG9yID0gbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEuZmluZChob3N0VG9M
b29rVXApOwotCi0gICAgaWYgKCFpZGVudGlmaWVyLmlzTnVsbCgpICYmIHBvbGljaWVzQnlJZGVu
dGlmaWVySXRlcmF0b3IgPT0gbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEuZW5kKCkpIHsK
LSAgICAgICAgaWYgKCFyZXBsYWNlSG9zdFdpdGhNYXRjaGVkV2lsZGNhcmRIb3N0KGhvc3RUb0xv
b2tVcCwgaWRlbnRpZmllcikpCi0gICAgICAgICAgICBob3N0VG9Mb29rVXAgPSAiKiI7Ci0gICAg
ICAgIHBvbGljaWVzQnlJZGVudGlmaWVySXRlcmF0b3IgPSBtX2hvc3RzVG9QbHVnaW5JZGVudGlm
aWVyRGF0YS5maW5kKGhvc3RUb0xvb2tVcCk7Ci0gICAgICAgIGlmIChob3N0VG9Mb29rVXAgIT0g
IioiICYmIHBvbGljaWVzQnlJZGVudGlmaWVySXRlcmF0b3IgPT0gbV9ob3N0c1RvUGx1Z2luSWRl
bnRpZmllckRhdGEuZW5kKCkpIHsKLSAgICAgICAgICAgIGhvc3RUb0xvb2tVcCA9ICIqIjsKLSAg
ICAgICAgICAgIHBvbGljaWVzQnlJZGVudGlmaWVySXRlcmF0b3IgPSBtX2hvc3RzVG9QbHVnaW5J
ZGVudGlmaWVyRGF0YS5maW5kKGhvc3RUb0xvb2tVcCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
aWYgKHBvbGljaWVzQnlJZGVudGlmaWVySXRlcmF0b3IgPT0gbV9ob3N0c1RvUGx1Z2luSWRlbnRp
ZmllckRhdGEuZW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8mIHBvbGlj
aWVzQnlJZGVudGlmaWVyID0gcG9saWNpZXNCeUlkZW50aWZpZXJJdGVyYXRvci0+dmFsdWU7Ci0K
LSAgICBpZiAoIWlkZW50aWZpZXIpCi0gICAgICAgIGlkZW50aWZpZXIgPSAiKiI7Ci0KLSAgICBh
dXRvIGlkZW50aWZpZXJQb2xpY3lJdGVyYXRvciA9IHBvbGljaWVzQnlJZGVudGlmaWVyLmZpbmQo
aWRlbnRpZmllcik7Ci0gICAgaWYgKGlkZW50aWZpZXIgIT0gIioiICYmIGlkZW50aWZpZXJQb2xp
Y3lJdGVyYXRvciA9PSBwb2xpY2llc0J5SWRlbnRpZmllci5lbmQoKSkgewotICAgICAgICBpZGVu
dGlmaWVyID0gIioiOwotICAgICAgICBpZGVudGlmaWVyUG9saWN5SXRlcmF0b3IgPSBwb2xpY2ll
c0J5SWRlbnRpZmllci5maW5kKGlkZW50aWZpZXIpOwotICAgIH0KLSAgICBpZiAoaWRlbnRpZmll
clBvbGljeUl0ZXJhdG9yID09IHBvbGljaWVzQnlJZGVudGlmaWVyLmVuZCgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvJiB2ZXJzaW9uc1RvUG9saWNpZXMgPSBpZGVudGlmaWVy
UG9saWN5SXRlcmF0b3ItPnZhbHVlOwotCi0gICAgU3RyaW5nIHZlcnNpb24gPSBpbmZvLnZlcnNp
b25TdHJpbmc7Ci0gICAgaWYgKCF2ZXJzaW9uKQotICAgICAgICB2ZXJzaW9uID0gIioiOwotICAg
IGF1dG8gcG9saWN5SXRlcmF0b3IgPSB2ZXJzaW9uc1RvUG9saWNpZXMuZmluZCh2ZXJzaW9uKTsK
LSAgICBpZiAodmVyc2lvbiAhPSAiKiIgJiYgcG9saWN5SXRlcmF0b3IgPT0gdmVyc2lvbnNUb1Bv
bGljaWVzLmVuZCgpKSB7Ci0gICAgICAgIHZlcnNpb24gPSAiKiI7Ci0gICAgICAgIHBvbGljeUl0
ZXJhdG9yID0gdmVyc2lvbnNUb1BvbGljaWVzLmZpbmQodmVyc2lvbik7Ci0gICAgfQotCi0gICAg
aWYgKHBvbGljeUl0ZXJhdG9yID09IHZlcnNpb25zVG9Qb2xpY2llcy5lbmQoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgcG9saWN5ID0gcG9saWN5SXRlcmF0b3ItPnZhbHVlOwotICAg
IHJldHVybiB0cnVlOwotfQotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKLQotdm9pZCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnBvcHVsYXRlUGx1Z2luQ2FjaGUoY29uc3QgV2ViQ29yZTo6UGFnZSYg
cGFnZSkKLXsKLSAgICBpZiAoIW1fcGx1Z2luQ2FjaGVJc1BvcHVsYXRlZCkgewotICAgICAgICBI
YW5nRGV0ZWN0aW9uRGlzYWJsZXIgaGFuZ0RldGVjdGlvbkRpc2FibGVyOwotCi0gICAgICAgIGlm
ICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2lucyhtX3Nob3VsZFJlZnJl
c2hQbHVnaW5zKSwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luczo6UmVwbHko
bV9jYWNoZWRQbHVnaW5zLCBtX2NhY2hlZEFwcGxpY2F0aW9uUGx1Z2lucyksIDApKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fc2hvdWxkUmVmcmVzaFBsdWdpbnMgPSBmYWxzZTsK
LSAgICAgICAgbV9wbHVnaW5DYWNoZUlzUG9wdWxhdGVkID0gdHJ1ZTsKLSAgICB9Ci0KLSNpZiBQ
TEFURk9STShNQUMpCi0gICAgU3RyaW5nIHBhZ2VIb3N0ID0gcGFnZS5tYWluRnJhbWUoKS5sb2Fk
ZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZVVSTCgpLmhvc3QoKTsKLSAgICBmb3IgKFBs
dWdpbkluZm8mIGluZm8gOiBtX2NhY2hlZFBsdWdpbnMpIHsKLSAgICAgICAgUGx1Z2luTG9hZENs
aWVudFBvbGljeSBjbGllbnRQb2xpY3k7Ci0gICAgICAgIGlmIChwbHVnaW5Mb2FkQ2xpZW50UG9s
aWN5Rm9ySG9zdChwYWdlSG9zdCwgaW5mbywgY2xpZW50UG9saWN5KSkKLSAgICAgICAgICAgIGlu
Zm8uY2xpZW50TG9hZFBvbGljeSA9IGNsaWVudFBvbGljeTsKLSAgICB9Ci0jZWxzZQotICAgIFVO
VVNFRF9QQVJBTShwYWdlKTsKLSNlbmRpZiAvLyBub3QgUExBVEZPUk0oTUFDKQotfQotI2VuZGlm
IC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAv
LyBQYXN0ZWJvYXJkU3RyYXRlZ3kKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5k
ZXggMGZmNDc0YTc0Yzg5OWY5NjljODY1N2U2MGMwOWVkMmE3ZTIyNTMyYy4uNmRkMWUxZTlkOWE3
MWE5MGQwYzUzZjdhZjIyYTdiZGNmYjU5OTc0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oCkBAIC0zMCwxMyArMzAsMTIgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0xvYWRlclN0cmF0
ZWd5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtU3RyYXRlZ2llcy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2lu
U3RyYXRlZ3kuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBX
ZWJDb3JlOjpDb29raWVzU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0
ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5IHsKK2NsYXNzIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUg
V2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJh
dGVneSB7CiAgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPFdlYlBsYXRmb3JtU3RyYXRl
Z2llcz47CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpOwpAQCAtNjEsMTkg
KzYwLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcm
KSBvdmVycmlkZTsKICAgICB2b2lkIGFkZENvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpDb29raWUm
KSBvdmVycmlkZTsKIAotICAgIC8vIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5Ci0gICAgdm9pZCBy
ZWZyZXNoUGx1Z2lucygpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0UGx1Z2luSW5mbyhjb25zdCBX
ZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+Jikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBnZXRXZWJWaXNpYmxlUGx1Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQYWdlKiwgVmVj
dG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+Jikgb3ZlcnJpZGU7Ci0KLSNpZiBQTEFURk9STShNQUMp
Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBv
bGljeT4gUGx1Z2luTG9hZENsaWVudFBvbGljaWVzQnlCdW5kbGVWZXJzaW9uOwotICAgIHR5cGVk
ZWYgSGFzaE1hcDxTdHJpbmcsIFBsdWdpbkxvYWRDbGllbnRQb2xpY2llc0J5QnVuZGxlVmVyc2lv
bj4gUGx1Z2luUG9saWN5TWFwc0J5SWRlbnRpZmllcjsKLQotICAgIHZvaWQgc2V0UGx1Z2luTG9h
ZENsaWVudFBvbGljeShXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5LCBjb25zdCBTdHJp
bmcmIGhvc3QsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB2
ZXJzaW9uU3RyaW5nKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsZWFyUGx1Z2luQ2xpZW50UG9saWNp
ZXMoKSBvdmVycmlkZTsKLSNlbmRpZgotCiAgICAgLy8gV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0
ZWd5CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQmKSBvdmVycmlkZTsKQEAgLTEwMywyNyArODks
OCBAQCBwcml2YXRlOgogICAgIGxvbmcgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0g
ICAgLy8gV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3kgaW1wbGVtZW50YXRpb24uCi0gICAgdm9pZCBw
b3B1bGF0ZVBsdWdpbkNhY2hlKGNvbnN0IFdlYkNvcmU6OlBhZ2UmKTsKLSAgICBib29sIG1fcGx1
Z2luQ2FjaGVJc1BvcHVsYXRlZDsKLSAgICBib29sIG1fc2hvdWxkUmVmcmVzaFBsdWdpbnM7Ci0g
ICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IG1fY2FjaGVkUGx1Z2luczsKLSAgICBWZWN0
b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gbV9jYWNoZWRBcHBsaWNhdGlvblBsdWdpbnM7Ci0KLSNp
ZiBQTEFURk9STShNQUMpCi0gICAgSGFzaE1hcDxTdHJpbmcsIFBsdWdpblBvbGljeU1hcHNCeUlk
ZW50aWZpZXI+IG1faG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRhOwotICAgIGJvb2wgcGx1Z2lu
TG9hZENsaWVudFBvbGljeUZvckhvc3QoY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6UGx1
Z2luSW5mbyYsIFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3kmKSBjb25zdDsKLSAgICBT
dHJpbmcgbG9uZ2VzdE1hdGNoZWRXaWxkY2FyZEhvc3RGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9z
dCkgY29uc3Q7Ci0gICAgYm9vbCByZXBsYWNlSG9zdFdpdGhNYXRjaGVkV2lsZGNhcmRIb3N0KFN0
cmluZyYgaG9zdCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKSBjb25zdDsKLSNlbmRpZiAvLyBQ
TEFURk9STShNQUMpCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiB9Owog
Ci0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi12b2lkIGhhbmRsZURpZEdldFBsdWdp
bnModWludDY0X3QgcmVxdWVzdElELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4m
LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mIGFwcGxpY2F0aW9uUGx1Z2lucyk7
Ci0jZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0KIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCiAjZW5kaWYgLy8gV2ViUGxhdGZvcm1TdHJhdGVnaWVzX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGJhMmNiOWMzYzFlYzMxZmY0NWEwMTVi
MmM1MzE1OGFlMjc1ZjU1YzcuLmE3ZDk1Y2FmNWJjM2FkN2UyMDQ2YWMxMTEyMjUzMzk4NzBlMWUx
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNTYsNiAr
NTYsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXBQcm94
eS5oIgogI2luY2x1ZGUgIldlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIgorI2luY2x1ZGUgIldlYlBs
dWdpbkluZm9Qcm92aWRlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUG9vbE1lc3NhZ2VzLmgiCkBAIC0zOTcsNyArMzk4LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpp
bml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1l
dGVycykKICAgICBmb3IgKGF1dG8gaG9zdEl0ZXIgPSBwYXJhbWV0ZXJzLnBsdWdpbkxvYWRDbGll
bnRQb2xpY2llcy5iZWdpbigpOyBob3N0SXRlciAhPSBwYXJhbWV0ZXJzLnBsdWdpbkxvYWRDbGll
bnRQb2xpY2llcy5lbmQoKTsgKytob3N0SXRlcikgewogICAgICAgICBmb3IgKGF1dG8gYnVuZGxl
SWRlbnRpZmllckl0ZXIgPSBob3N0SXRlci0+dmFsdWUuYmVnaW4oKTsgYnVuZGxlSWRlbnRpZmll
ckl0ZXIgIT0gaG9zdEl0ZXItPnZhbHVlLmVuZCgpOyArK2J1bmRsZUlkZW50aWZpZXJJdGVyKSB7
CiAgICAgICAgICAgICBmb3IgKGF1dG8gdmVyc2lvbkl0ZXIgPSBidW5kbGVJZGVudGlmaWVySXRl
ci0+dmFsdWUuYmVnaW4oKTsgdmVyc2lvbkl0ZXIgIT0gYnVuZGxlSWRlbnRpZmllckl0ZXItPnZh
bHVlLmVuZCgpOyArK3ZlcnNpb25JdGVyKQotICAgICAgICAgICAgICAgIHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5wbHVnaW5TdHJhdGVneSgpLT5zZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KHN0YXRp
Y19jYXN0PFBsdWdpbkxvYWRDbGllbnRQb2xpY3k+KHZlcnNpb25JdGVyLT52YWx1ZSksIGhvc3RJ
dGVyLT5rZXksIGJ1bmRsZUlkZW50aWZpZXJJdGVyLT5rZXksIHZlcnNpb25JdGVyLT5rZXkpOwor
ICAgICAgICAgICAgICAgIFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6c2luZ2xldG9uKCkuc2V0UGx1
Z2luTG9hZENsaWVudFBvbGljeShzdGF0aWNfY2FzdDxQbHVnaW5Mb2FkQ2xpZW50UG9saWN5Pih2
ZXJzaW9uSXRlci0+dmFsdWUpLCBob3N0SXRlci0+a2V5LCBidW5kbGVJZGVudGlmaWVySXRlci0+
a2V5LCB2ZXJzaW9uSXRlci0+a2V5KTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpAQCAtOTE1
LDE0ICs5MTYsMTQgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbHVnSW5EaWRSZWNlaXZlVXNlckludGVy
YWN0aW9uKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QKIHZvaWQgV2ViUHJvY2Vzczo6
c2V0UGx1Z2luTG9hZENsaWVudFBvbGljeSh1aW50OF90IHBvbGljeSwgY29uc3QgU3RyaW5nJiBo
b3N0LCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdmVyc2lv
blN0cmluZykKIHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkgJiYgUExBVEZPUk0o
TUFDKQotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wbHVnaW5TdHJhdGVneSgpLT5zZXRQbHVn
aW5Mb2FkQ2xpZW50UG9saWN5KHN0YXRpY19jYXN0PFBsdWdpbkxvYWRDbGllbnRQb2xpY3k+KHBv
bGljeSksIGhvc3QsIGJ1bmRsZUlkZW50aWZpZXIsIHZlcnNpb25TdHJpbmcpOworICAgIFdlYlBs
dWdpbkluZm9Qcm92aWRlcjo6c2luZ2xldG9uKCkuc2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShz
dGF0aWNfY2FzdDxQbHVnaW5Mb2FkQ2xpZW50UG9saWN5Pihwb2xpY3kpLCBob3N0LCBidW5kbGVJ
ZGVudGlmaWVyLCB2ZXJzaW9uU3RyaW5nKTsKICNlbmRpZgogfQogCiB2b2lkIFdlYlByb2Nlc3M6
OmNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKQogewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKSAmJiBQTEFURk9STShNQUMpCi0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBsdWdp
blN0cmF0ZWd5KCktPmNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKTsKKyAgICBXZWJQbHVnaW5J
bmZvUHJvdmlkZXI6OnNpbmdsZXRvbigpLmNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKTsKICNl
bmRpZgogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285613</attachid>
            <date>2016-08-08 17:19:41 -0700</date>
            <delta_ts>2016-08-08 17:24:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160679-20160808171808.patch</filename>
            <type>text/plain</type>
            <size>27570</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMGJhODRkYTcxZGYzMDE3
OWIyZTJmNTI5NGIzODYzMjE5NDhjMWU4MC4uNTYyOTEzODdjNGUwNjlhMGM1OGQ5MjFhODg2MWEw
Mzk0MWQ1NzQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQxIEBACiAyMDE2LTA4LTA4ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgTW92ZSBwbHVnLWlu
IGNvZGUgZnJvbSBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgdG8gV2ViUGx1Z2luSW5mb1Byb3ZpZGVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA2NzkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3kpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OmNsZWFyUGx1Z2luQ2xpZW50UG9s
aWNpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnJlZnJlc2hQ
bHVnaW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpnZXRQbHVn
aW5JbmZvKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpnZXRXZWJW
aXNpYmxlUGx1Z2luSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkluZm9Qcm92aWRl
cjo6cG9wdWxhdGVQbHVnaW5DYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkluZm9Q
cm92aWRlcjo6cGx1Z2luTG9hZENsaWVudFBvbGljeUZvckhvc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbHVnaW5JbmZvUHJvdmlkZXI6Omxvbmdlc3RNYXRjaGVkV2lsZGNhcmRIb3N0Rm9ySG9z
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkluZm9Qcm92aWRlcjo6cmVwbGFjZUhvc3RX
aXRoTWF0Y2hlZFdpbGRjYXJkSG9zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1dl
YlBsdWdpbkluZm9Qcm92aWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjcmVhdGVQbHVnaW5TdHJhdGVneSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsYXRmb3JtU3RyYXRlZ2llczo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWZyZXNoUGx1Z2lucyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGx1Z2lu
SW5mbyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Z2V0V2ViVmlzaWJsZVBsdWdpbkluZm8pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3kpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNsZWFyUGx1Z2luQ2xpZW50
UG9saWNpZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6Omxvbmdlc3RNYXRjaGVkV2lsZGNhcmRIb3N0Rm9ySG9zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVwbGFjZUhvc3RXaXRoTWF0Y2hlZFdp
bGRjYXJkSG9zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cGx1Z2luTG9hZENsaWVudFBvbGljeUZvckhvc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnBvcHVsYXRlUGx1Z2luQ2FjaGUpOiBEZWxl
dGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzczo6Y2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcyk6CisKKzIwMTYtMDgt
MDggIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKwogICAgICAgICBBZGQg
YSBuZXcgUGx1Z2luSW5mb1Byb3ZpZGVyIGNsYXNzLCB0byByZXBsYWNlIFBsdWdpblN0cmF0ZWd5
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA2NzAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdp
bkluZm9Qcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvV2Vi
UGx1Z2luSW5mb1Byb3ZpZGVyLmNwcAppbmRleCA4ZjU2ZGRlMTBmOGFhMjk2NzllNTNiMjEyMDM3
YTA2MDU0OWM0ZTZlLi4wNTdhOTZjOWMxY2FjYWI1OTZkOTY2YTk5MjMyNDNhYzY0YzA3NmU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5m
b1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvV2Vi
UGx1Z2luSW5mb1Byb3ZpZGVyLmNwcApAQCAtMjYsOSArMjYsMjEgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJXZWJQbHVnaW5JbmZvUHJvdmlkZXIuaCIKIAotLy8gRklYTUU6IFdl
IHNob3VsZG4ndCBjYWxsIG91dCB0byB0aGUgcGxhdGZvcm0gc3RyYXRlZ3kgZm9yIHRoaXMuCi0j
aW5jbHVkZSAiV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9QbHVn
aW5TdHJhdGVneS5oPgorI2luY2x1ZGUgIkhhbmdEZXRlY3Rpb25EaXNhYmxlci5oIgorI2luY2x1
ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNp
bmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRG9j
dW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9NYWluRnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TdWJmcmFtZUxv
YWRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworI2lmIFBMQVRGT1JN
KE1BQykKKyNpbmNsdWRlICJTdHJpbmdVdGlsaXRpZXMuaCIKKyNlbmRpZgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIApAQCAtNDcsMzEgKzU5LDE4OCBAQCBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6On5X
ZWJQbHVnaW5JbmZvUHJvdmlkZXIoKQogewogfQogCisjaWYgUExBVEZPUk0oTUFDKQordm9pZCBX
ZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3koV2ViQ29yZTo6
UGx1Z2luTG9hZENsaWVudFBvbGljeSBjbGllbnRQb2xpY3ksIGNvbnN0IFN0cmluZyYgaG9zdCwg
Y29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJp
bmcpCit7CisgICAgU3RyaW5nIGhvc3RUb1NldCA9IGhvc3QuaXNOdWxsKCkgfHwgIWhvc3QubGVu
Z3RoKCkgPyAiKiIgOiBob3N0OworICAgIFN0cmluZyBidW5kbGVJZGVudGlmaWVyVG9TZXQgPSBi
dW5kbGVJZGVudGlmaWVyLmlzTnVsbCgpIHx8ICFidW5kbGVJZGVudGlmaWVyLmxlbmd0aCgpID8g
IioiIDogYnVuZGxlSWRlbnRpZmllcjsKKyAgICBTdHJpbmcgdmVyc2lvblN0cmluZ1RvU2V0ID0g
dmVyc2lvblN0cmluZy5pc051bGwoKSB8fCAhdmVyc2lvblN0cmluZy5sZW5ndGgoKSA/ICIqIiA6
IHZlcnNpb25TdHJpbmc7CisKKyAgICBQbHVnaW5Qb2xpY3lNYXBzQnlJZGVudGlmaWVyIHBvbGlj
aWVzQnlJZGVudGlmaWVyOworICAgIGlmIChtX2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YS5j
b250YWlucyhob3N0VG9TZXQpKQorICAgICAgICBwb2xpY2llc0J5SWRlbnRpZmllciA9IG1faG9z
dHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLmdldChob3N0VG9TZXQpOworCisgICAgUGx1Z2luTG9h
ZENsaWVudFBvbGljaWVzQnlCdW5kbGVWZXJzaW9uIHZlcnNpb25zVG9Qb2xpY2llczsKKyAgICBp
ZiAocG9saWNpZXNCeUlkZW50aWZpZXIuY29udGFpbnMoYnVuZGxlSWRlbnRpZmllclRvU2V0KSkK
KyAgICAgICAgdmVyc2lvbnNUb1BvbGljaWVzID0gcG9saWNpZXNCeUlkZW50aWZpZXIuZ2V0KGJ1
bmRsZUlkZW50aWZpZXJUb1NldCk7CisKKyAgICB2ZXJzaW9uc1RvUG9saWNpZXMuc2V0KHZlcnNp
b25TdHJpbmdUb1NldCwgY2xpZW50UG9saWN5KTsKKyAgICBwb2xpY2llc0J5SWRlbnRpZmllci5z
ZXQoYnVuZGxlSWRlbnRpZmllclRvU2V0LCB2ZXJzaW9uc1RvUG9saWNpZXMpOworICAgIG1faG9z
dHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLnNldChob3N0VG9TZXQsIHBvbGljaWVzQnlJZGVudGlm
aWVyKTsKK30KKwordm9pZCBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OmNsZWFyUGx1Z2luQ2xpZW50
UG9saWNpZXMoKQoreworICAgIG1faG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLmNsZWFyKCk7
Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnJlZnJlc2hQbHVnaW5z
KCkKIHsKLSAgICBXZWJDb3JlOjpwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGx1Z2luU3RyYXRlZ3ko
KS0+cmVmcmVzaFBsdWdpbnMoKTsKKyNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKyAg
ICBtX2NhY2hlZFBsdWdpbnMuY2xlYXIoKTsKKyAgICBtX3BsdWdpbkNhY2hlSXNQb3B1bGF0ZWQg
PSBmYWxzZTsKKyAgICBtX3Nob3VsZFJlZnJlc2hQbHVnaW5zID0gdHJ1ZTsKKyNlbmRpZgogfQog
CiB2b2lkIFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6Z2V0UGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdl
JiBwYWdlLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mIHBsdWdpbnMpCiB7Ci0gICAgV2Vi
Q29yZTo6cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBsdWdpblN0cmF0ZWd5KCktPmdldFBsdWdpbklu
Zm8oJnBhZ2UsIHBsdWdpbnMpOworI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQorICAg
IHBvcHVsYXRlUGx1Z2luQ2FjaGUocGFnZSk7CisKKyAgICBpZiAocGFnZS5tYWluRnJhbWUoKS5s
b2FkZXIoKS5zdWJmcmFtZUxvYWRlcigpLmFsbG93UGx1Z2lucygpKSB7CisgICAgICAgIHBsdWdp
bnMgPSBtX2NhY2hlZFBsdWdpbnM7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBwbHVn
aW5zID0gbV9jYWNoZWRBcHBsaWNhdGlvblBsdWdpbnM7CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShwYWdlKTsKKyAgICBVTlVTRURfUEFSQU0ocGx1Z2lucyk7CisjZW5kaWYgLy8gRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9BUEkpCiB9CiAKIHZvaWQgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpnZXRX
ZWJWaXNpYmxlUGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiBwYWdlLCBWZWN0b3I8V2ViQ29yZTo6
UGx1Z2luSW5mbz4mIHBsdWdpbnMpCiB7Ci0gICAgV2ViQ29yZTo6cGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBsdWdpblN0cmF0ZWd5KCktPmdldFdlYlZpc2libGVQbHVnaW5JbmZvKCZwYWdlLCBwbHVn
aW5zKTsKKyAgICBBU1NFUlRfQVJHKHBsdWdpbnMsIHBsdWdpbnMuaXNFbXB0eSgpKTsKKworICAg
IGdldFBsdWdpbkluZm8ocGFnZSwgcGx1Z2lucyk7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAg
aWYgKGF1dG8qIGRvY3VtZW50ID0gcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudCgpKSB7CisgICAg
ICAgIGlmIChhdXRvKiBzZWN1cml0eU9yaWdpbiA9IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigp
KSB7CisgICAgICAgICAgICBpZiAoc2VjdXJpdHlPcmlnaW4tPmlzTG9jYWwoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKGludDMyX3QgaSA9
IHBsdWdpbnMuc2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgYXV0byYgaW5mbyA9
IHBsdWdpbnMuYXQoaSk7CisKKyAgICAgICAgLy8gQWxsb3cgYnVpbHQtaW4gcGx1Z2lucy4gQWxz
byB0ZW50YXRpdmVseSBhbGxvdyBwbHVnaW5zIHRoYXQgdGhlIGNsaWVudCBtaWdodCBsYXRlciBz
ZWxlY3RpdmVseSBwZXJtaXQuCisgICAgICAgIGlmIChpbmZvLmlzQXBwbGljYXRpb25QbHVnaW4g
fHwgaW5mby5jbGllbnRMb2FkUG9saWN5ID09IFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xp
Y3lBc2spCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoaW5mby5jbGllbnRM
b2FkUG9saWN5ID09IFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3lCbG9jaykKKyAgICAg
ICAgICAgIHBsdWdpbnMucmVtb3ZlKGkpOworICAgIH0KKyNlbmRpZgogfQogCit2b2lkIFdlYlBs
dWdpbkluZm9Qcm92aWRlcjo6cG9wdWxhdGVQbHVnaW5DYWNoZShjb25zdCBXZWJDb3JlOjpQYWdl
JiBwYWdlKQoreworICAgIGlmICghbV9wbHVnaW5DYWNoZUlzUG9wdWxhdGVkKSB7CisgICAgICAg
IEhhbmdEZXRlY3Rpb25EaXNhYmxlciBoYW5nRGV0ZWN0aW9uRGlzYWJsZXI7CisKKyAgICAgICAg
aWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5zKG1fc2hvdWxkUmVm
cmVzaFBsdWdpbnMpLCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5zOjpSZXBs
eShtX2NhY2hlZFBsdWdpbnMsIG1fY2FjaGVkQXBwbGljYXRpb25QbHVnaW5zKSwgMCkpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9zaG91bGRSZWZyZXNoUGx1Z2lucyA9IGZhbHNl
OworICAgICAgICBtX3BsdWdpbkNhY2hlSXNQb3B1bGF0ZWQgPSB0cnVlOworICAgIH0KKwogI2lm
IFBMQVRGT1JNKE1BQykKLXZvaWQgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpzZXRQbHVnaW5Mb2Fk
Q2xpZW50UG9saWN5KFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3kgcGx1Z2luTG9hZENs
aWVudFBvbGljeSwgY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZykKKyAgICBTdHJpbmcgcGFnZUhvc3Qg
PSBwYWdlLm1haW5GcmFtZSgpLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlVVJM
KCkuaG9zdCgpOworICAgIGZvciAoYXV0byYgaW5mbyA6IG1fY2FjaGVkUGx1Z2lucykgeworICAg
ICAgICBpZiAoYXV0byBjbGllbnRQb2xpY3kgPSBwbHVnaW5Mb2FkQ2xpZW50UG9saWN5Rm9ySG9z
dChwYWdlSG9zdCwgaW5mbykpCisgICAgICAgICAgICBpbmZvLmNsaWVudExvYWRQb2xpY3kgPSAq
Y2xpZW50UG9saWN5OworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOworI2Vu
ZGlmIC8vIG5vdCBQTEFURk9STShNQUMpCit9CisKKworT3B0aW9uYWw8V2ViQ29yZTo6UGx1Z2lu
TG9hZENsaWVudFBvbGljeT4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpwbHVnaW5Mb2FkQ2xpZW50
UG9saWN5Rm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFdlYkNvcmU6OlBsdWdpbklu
Zm8mIGluZm8pIGNvbnN0Cit7CisgICAgU3RyaW5nIGhvc3RUb0xvb2tVcCA9IGhvc3Q7CisgICAg
U3RyaW5nIGlkZW50aWZpZXIgPSBpbmZvLmJ1bmRsZUlkZW50aWZpZXI7CisKKyAgICBhdXRvIHBv
bGljaWVzQnlJZGVudGlmaWVySXRlcmF0b3IgPSBtX2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0
YS5maW5kKGhvc3RUb0xvb2tVcCk7CisKKyAgICBpZiAoIWlkZW50aWZpZXIuaXNOdWxsKCkgJiYg
cG9saWNpZXNCeUlkZW50aWZpZXJJdGVyYXRvciA9PSBtX2hvc3RzVG9QbHVnaW5JZGVudGlmaWVy
RGF0YS5lbmQoKSkgeworICAgICAgICBpZiAoIXJlcGxhY2VIb3N0V2l0aE1hdGNoZWRXaWxkY2Fy
ZEhvc3QoaG9zdFRvTG9va1VwLCBpZGVudGlmaWVyKSkKKyAgICAgICAgICAgIGhvc3RUb0xvb2tV
cCA9ICIqIjsKKyAgICAgICAgcG9saWNpZXNCeUlkZW50aWZpZXJJdGVyYXRvciA9IG1faG9zdHNU
b1BsdWdpbklkZW50aWZpZXJEYXRhLmZpbmQoaG9zdFRvTG9va1VwKTsKKyAgICAgICAgaWYgKGhv
c3RUb0xvb2tVcCAhPSAiKiIgJiYgcG9saWNpZXNCeUlkZW50aWZpZXJJdGVyYXRvciA9PSBtX2hv
c3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YS5lbmQoKSkgeworICAgICAgICAgICAgaG9zdFRvTG9v
a1VwID0gIioiOworICAgICAgICAgICAgcG9saWNpZXNCeUlkZW50aWZpZXJJdGVyYXRvciA9IG1f
aG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLmZpbmQoaG9zdFRvTG9va1VwKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBpZiAocG9saWNpZXNCeUlkZW50aWZpZXJJdGVyYXRvciA9PSBtX2hvc3Rz
VG9QbHVnaW5JZGVudGlmaWVyRGF0YS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisK
KyAgICBhdXRvJiBwb2xpY2llc0J5SWRlbnRpZmllciA9IHBvbGljaWVzQnlJZGVudGlmaWVySXRl
cmF0b3ItPnZhbHVlOworCisgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAgICBpZGVudGlmaWVy
ID0gIioiOworCisgICAgYXV0byBpZGVudGlmaWVyUG9saWN5SXRlcmF0b3IgPSBwb2xpY2llc0J5
SWRlbnRpZmllci5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpZGVudGlmaWVyICE9ICIqIiAm
JiBpZGVudGlmaWVyUG9saWN5SXRlcmF0b3IgPT0gcG9saWNpZXNCeUlkZW50aWZpZXIuZW5kKCkp
IHsKKyAgICAgICAgaWRlbnRpZmllciA9ICIqIjsKKyAgICAgICAgaWRlbnRpZmllclBvbGljeUl0
ZXJhdG9yID0gcG9saWNpZXNCeUlkZW50aWZpZXIuZmluZChpZGVudGlmaWVyKTsKKyAgICB9CisK
KyAgICBpZiAoaWRlbnRpZmllclBvbGljeUl0ZXJhdG9yID09IHBvbGljaWVzQnlJZGVudGlmaWVy
LmVuZCgpKQorICAgICAgICByZXR1cm4gTnVsbG9wdDsKKworICAgIGF1dG8mIHZlcnNpb25zVG9Q
b2xpY2llcyA9IGlkZW50aWZpZXJQb2xpY3lJdGVyYXRvci0+dmFsdWU7CisKKyAgICBTdHJpbmcg
dmVyc2lvbiA9IGluZm8udmVyc2lvblN0cmluZzsKKyAgICBpZiAoIXZlcnNpb24pCisgICAgICAg
IHZlcnNpb24gPSAiKiI7CisgICAgYXV0byBwb2xpY3lJdGVyYXRvciA9IHZlcnNpb25zVG9Qb2xp
Y2llcy5maW5kKHZlcnNpb24pOworICAgIGlmICh2ZXJzaW9uICE9ICIqIiAmJiBwb2xpY3lJdGVy
YXRvciA9PSB2ZXJzaW9uc1RvUG9saWNpZXMuZW5kKCkpIHsKKyAgICAgICAgdmVyc2lvbiA9ICIq
IjsKKyAgICAgICAgcG9saWN5SXRlcmF0b3IgPSB2ZXJzaW9uc1RvUG9saWNpZXMuZmluZCh2ZXJz
aW9uKTsKKyAgICB9CisKKyAgICBpZiAocG9saWN5SXRlcmF0b3IgPT0gdmVyc2lvbnNUb1BvbGlj
aWVzLmVuZCgpKQorICAgICAgICByZXR1cm4gTnVsbG9wdDsKKworICAgIHJldHVybiBwb2xpY3lJ
dGVyYXRvci0+dmFsdWU7Cit9CisKK1N0cmluZyBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6Omxvbmdl
c3RNYXRjaGVkV2lsZGNhcmRIb3N0Rm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QpIGNvbnN0CiB7
Ci0gICAgV2ViQ29yZTo6cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBsdWdpblN0cmF0ZWd5KCktPnNl
dFBsdWdpbkxvYWRDbGllbnRQb2xpY3kocGx1Z2luTG9hZENsaWVudFBvbGljeSwgaG9zdCwgYnVu
ZGxlSWRlbnRpZmllciwgdmVyc2lvblN0cmluZyk7CisgICAgU3RyaW5nIGxvbmdlc3RNYXRjaGVk
SG9zdDsKKworICAgIGZvciAoYXV0byYga2V5IDogbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRh
dGEua2V5cygpKSB7CisgICAgICAgIGlmIChrZXkuY29udGFpbnMoJyonKSAmJiBrZXkgIT0gIioi
ICYmIHN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZyhob3N0LCBrZXkpKSB7CisgICAgICAgICAg
ICBpZiAoa2V5Lmxlbmd0aCgpID4gbG9uZ2VzdE1hdGNoZWRIb3N0Lmxlbmd0aCgpKQorICAgICAg
ICAgICAgICAgIGxvbmdlc3RNYXRjaGVkSG9zdCA9IGtleTsKKyAgICAgICAgICAgIGVsc2UgaWYg
KGtleS5sZW5ndGgoKSA9PSBsb25nZXN0TWF0Y2hlZEhvc3QubGVuZ3RoKCkgJiYgY29kZVBvaW50
Q29tcGFyZUxlc3NUaGFuKGtleSwgbG9uZ2VzdE1hdGNoZWRIb3N0KSkKKyAgICAgICAgICAgICAg
ICBsb25nZXN0TWF0Y2hlZEhvc3QgPSBrZXk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1
cm4gbG9uZ2VzdE1hdGNoZWRIb3N0OwogfQogCi12b2lkIFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6
Y2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcygpCitib29sIFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6
cmVwbGFjZUhvc3RXaXRoTWF0Y2hlZFdpbGRjYXJkSG9zdChTdHJpbmcmIGhvc3QsIGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllcikgY29uc3QKIHsKLSAgICBXZWJDb3JlOjpwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGx1Z2luU3RyYXRlZ3koKS0+Y2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcygpOworICAg
IFN0cmluZyBtYXRjaGVkV2lsZGNhcmRIb3N0ID0gbG9uZ2VzdE1hdGNoZWRXaWxkY2FyZEhvc3RG
b3JIb3N0KGhvc3QpOworCisgICAgaWYgKG1hdGNoZWRXaWxkY2FyZEhvc3QuaXNOdWxsKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gcGx1Z0luSWRlbnRpZmllckRhdGEgPSBt
X2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YS5maW5kKG1hdGNoZWRXaWxkY2FyZEhvc3QpOwor
ICAgIGlmIChwbHVnSW5JZGVudGlmaWVyRGF0YSA9PSBtX2hvc3RzVG9QbHVnaW5JZGVudGlmaWVy
RGF0YS5lbmQoKSB8fCAhcGx1Z0luSWRlbnRpZmllckRhdGEtPnZhbHVlLmNvbnRhaW5zKGlkZW50
aWZpZXIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBob3N0ID0gbWF0Y2hlZFdpbGRj
YXJkSG9zdDsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KLSNlbmRpZgogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVy
LmgKaW5kZXggNzljMGRlZDBjZjJjNWI3ODRmNmZiMTViM2E0ZTkzODgzMGVkYTMyYi4uOWU0OGE2
OThiNWQ2ZTI0Y2E3M2YxNzJlNWM0MDZhMTg4NzA5MWIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaApA
QCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdp
bkluZm9Qcm92aWRlci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCkBAIC0zNiwxNiArMzcsMzggQEAgcHVibGljOgogICAgIHN0YXRpYyBXZWJQbHVn
aW5JbmZvUHJvdmlkZXImIHNpbmdsZXRvbigpOwogICAgIHZpcnR1YWwgfldlYlBsdWdpbkluZm9Q
cm92aWRlcigpOwogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZvaWQgc2V0UGx1Z2luTG9hZENs
aWVudFBvbGljeShXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5LCBjb25zdCBTdHJpbmcm
IGhvc3QsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB2ZXJz
aW9uU3RyaW5nKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMo
KSBvdmVycmlkZTsKKyNlbmRpZgorCiBwcml2YXRlOgorICAgIFdlYlBsdWdpbkluZm9Qcm92aWRl
cigpOworCiAgICAgdm9pZCByZWZyZXNoUGx1Z2lucygpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0
UGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiwgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+Jikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRXZWJWaXNpYmxlUGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdl
JiwgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+Jikgb3ZlcnJpZGU7CisKKyNpZiBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKKyAgICB2b2lkIHBvcHVsYXRlUGx1Z2luQ2FjaGUoY29uc3Qg
V2ViQ29yZTo6UGFnZSYpOworI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQor
CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHZvaWQgc2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShX
ZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5LCBjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0
IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uU3RyaW5nKSBv
dmVycmlkZTsKLSAgICB2b2lkIGNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKSBvdmVycmlkZTsK
KyAgICBPcHRpb25hbDxXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5PiBwbHVnaW5Mb2Fk
Q2xpZW50UG9saWN5Rm9ySG9zdChjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpQbHVnaW5J
bmZvJikgY29uc3Q7CisgICAgU3RyaW5nIGxvbmdlc3RNYXRjaGVkV2lsZGNhcmRIb3N0Rm9ySG9z
dChjb25zdCBTdHJpbmcmIGhvc3QpIGNvbnN0OworICAgIGJvb2wgcmVwbGFjZUhvc3RXaXRoTWF0
Y2hlZFdpbGRjYXJkSG9zdChTdHJpbmcmIGhvc3QsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikg
Y29uc3Q7CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBXZWJDb3JlOjpQbHVnaW5Mb2Fk
Q2xpZW50UG9saWN5PiBQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXNCeUJ1bmRsZVZlcnNpb247Cisg
ICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUGx1Z2luTG9hZENsaWVudFBvbGljaWVzQnlCdW5k
bGVWZXJzaW9uPiBQbHVnaW5Qb2xpY3lNYXBzQnlJZGVudGlmaWVyOworICAgIEhhc2hNYXA8U3Ry
aW5nLCBQbHVnaW5Qb2xpY3lNYXBzQnlJZGVudGlmaWVyPiBtX2hvc3RzVG9QbHVnaW5JZGVudGlm
aWVyRGF0YTsKICNlbmRpZgogCi0gICAgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyKCk7CisjaWYgRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisgICAgYm9vbCBtX3BsdWdpbkNhY2hlSXNQb3B1bGF0
ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9zaG91bGRSZWZyZXNoUGx1Z2lucyB7IGZhbHNlIH07
CisgICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IG1fY2FjaGVkUGx1Z2luczsKKyAgICBW
ZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gbV9jYWNoZWRBcHBsaWNhdGlvblBsdWdpbnM7Cisj
ZW5kaWYKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCA5
NGU5YzE2YmZiNmE5NGMxM2IwODNmODc3NWY1NzVkOGU5MDY2MzFlLi45Yzg4YjVmMWExZGI4NmUx
NmM4M2Q1OTE3NmNhNGExYTRjNTg0YzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwCkBAIC04MCwxMCArODAsNiBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5p
dGlhbGl6ZSgpCiB9CiAKIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6V2ViUGxhdGZvcm1TdHJhdGVn
aWVzKCkKLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICA6IG1fcGx1Z2luQ2Fj
aGVJc1BvcHVsYXRlZChmYWxzZSkKLSAgICAsIG1fc2hvdWxkUmVmcmVzaFBsdWdpbnMoZmFsc2Up
Ci0jZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiB7CiB9CiAKQEAgLTEwNCw3
ICsxMDAsNyBAQCBQYXN0ZWJvYXJkU3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3Jl
YXRlUGFzdGVib2FyZFN0cmF0ZWd5KCkKIAogUGx1Z2luU3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y3JlYXRlUGx1Z2luU3RyYXRlZ3koKQogewotICAgIHJldHVybiB0aGlzOworICAg
IHJldHVybiBudWxscHRyOwogfQogCiBCbG9iUmVnaXN0cnkqIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KCkKQEAgLTE2NSwyMDAgKzE2MSw2IEBAIHZvaWQgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjphZGRDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OkFkZENvb2tpZShTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNlc3Npb24pLCB1cmws
IGNvb2tpZSksIDApOwogfQogCi0vLyBQbHVnaW5TdHJhdGVneQotCi12b2lkIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6cmVmcmVzaFBsdWdpbnMoKQotewotI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKQotICAgIG1fY2FjaGVkUGx1Z2lucy5jbGVhcigpOwotICAgIG1fcGx1Z2luQ2FjaGVJ
c1BvcHVsYXRlZCA9IGZhbHNlOwotICAgIG1fc2hvdWxkUmVmcmVzaFBsdWdpbnMgPSB0cnVlOwot
I2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotfQotCi12b2lkIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Z2V0UGx1Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQYWdlKiBwYWdlLCBW
ZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mIHBsdWdpbnMpCi17Ci0jaWYgRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCi0gICAgQVNTRVJUX0FSRyhwYWdlLCBwYWdlKTsKLSAgICBwb3B1bGF0
ZVBsdWdpbkNhY2hlKCpwYWdlKTsKLQotICAgIGlmIChwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIo
KS5zdWJmcmFtZUxvYWRlcigpLmFsbG93UGx1Z2lucygpKSB7Ci0gICAgICAgIHBsdWdpbnMgPSBt
X2NhY2hlZFBsdWdpbnM7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBwbHVnaW5zID0g
bV9jYWNoZWRBcHBsaWNhdGlvblBsdWdpbnM7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShwYWdl
KTsKLSAgICBVTlVTRURfUEFSQU0ocGx1Z2lucyk7Ci0jZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9BUEkpCi19Ci0KLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRXZWJWaXNp
YmxlUGx1Z2luSW5mbyhjb25zdCBQYWdlKiBwYWdlLCBWZWN0b3I8UGx1Z2luSW5mbz4mIHBsdWdp
bnMpCi17Ci0gICAgQVNTRVJUX0FSRyhwYWdlLCBwYWdlKTsKLSAgICBBU1NFUlRfQVJHKHBsdWdp
bnMsIHBsdWdpbnMuaXNFbXB0eSgpKTsKLQotICAgIGdldFBsdWdpbkluZm8ocGFnZSwgcGx1Z2lu
cyk7Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IHBh
Z2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkpIHsKLSAgICAgICAgaWYgKFNlY3VyaXR5T3JpZ2lu
KiBzZWN1cml0eU9yaWdpbiA9IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSB7Ci0gICAgICAg
ICAgICBpZiAoc2VjdXJpdHlPcmlnaW4tPmlzTG9jYWwoKSkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgZm9yIChpbnQzMl90IGkgPSBwbHVnaW5z
LnNpemUoKSAtIDE7IGkgPj0gMDsgLS1pKSB7Ci0gICAgICAgIFBsdWdpbkluZm8mIGluZm8gPSBw
bHVnaW5zLmF0KGkpOwotICAgICAgICBQbHVnaW5Mb2FkQ2xpZW50UG9saWN5IGNsaWVudFBvbGlj
eSA9IGluZm8uY2xpZW50TG9hZFBvbGljeTsKLSAgICAgICAgLy8gQWxsb3cgYnVpbHQtaW4gcGx1
Z2lucy4gQWxzbyB0ZW50YXRpdmVseSBhbGxvdyBwbHVnaW5zIHRoYXQgdGhlIGNsaWVudCBtaWdo
dCBsYXRlciBzZWxlY3RpdmVseSBwZXJtaXQuCi0gICAgICAgIGlmIChpbmZvLmlzQXBwbGljYXRp
b25QbHVnaW4gfHwgY2xpZW50UG9saWN5ID09IFBsdWdpbkxvYWRDbGllbnRQb2xpY3lBc2spCi0g
ICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoY2xpZW50UG9saWN5ID09IFBsdWdp
bkxvYWRDbGllbnRQb2xpY3lCbG9jaykKLSAgICAgICAgICAgIHBsdWdpbnMucmVtb3ZlKGkpOwot
ICAgIH0KLSNlbmRpZgotfQotCi0jaWYgUExBVEZPUk0oTUFDKQotdm9pZCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3koUGx1Z2luTG9hZENsaWVudFBvbGlj
eSBjbGllbnRQb2xpY3ksIGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgU3RyaW5nJiBidW5kbGVJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmcpCi17Ci0gICAgU3RyaW5nIGhv
c3RUb1NldCA9IGhvc3QuaXNOdWxsKCkgfHwgIWhvc3QubGVuZ3RoKCkgPyAiKiIgOiBob3N0Owot
ICAgIFN0cmluZyBidW5kbGVJZGVudGlmaWVyVG9TZXQgPSBidW5kbGVJZGVudGlmaWVyLmlzTnVs
bCgpIHx8ICFidW5kbGVJZGVudGlmaWVyLmxlbmd0aCgpID8gIioiIDogYnVuZGxlSWRlbnRpZmll
cjsKLSAgICBTdHJpbmcgdmVyc2lvblN0cmluZ1RvU2V0ID0gdmVyc2lvblN0cmluZy5pc051bGwo
KSB8fCAhdmVyc2lvblN0cmluZy5sZW5ndGgoKSA/ICIqIiA6IHZlcnNpb25TdHJpbmc7Ci0KLSAg
ICBQbHVnaW5Qb2xpY3lNYXBzQnlJZGVudGlmaWVyIHBvbGljaWVzQnlJZGVudGlmaWVyOwotICAg
IGlmIChtX2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YS5jb250YWlucyhob3N0VG9TZXQpKQot
ICAgICAgICBwb2xpY2llc0J5SWRlbnRpZmllciA9IG1faG9zdHNUb1BsdWdpbklkZW50aWZpZXJE
YXRhLmdldChob3N0VG9TZXQpOwotCi0gICAgUGx1Z2luTG9hZENsaWVudFBvbGljaWVzQnlCdW5k
bGVWZXJzaW9uIHZlcnNpb25zVG9Qb2xpY2llczsKLSAgICBpZiAocG9saWNpZXNCeUlkZW50aWZp
ZXIuY29udGFpbnMoYnVuZGxlSWRlbnRpZmllclRvU2V0KSkKLSAgICAgICAgdmVyc2lvbnNUb1Bv
bGljaWVzID0gcG9saWNpZXNCeUlkZW50aWZpZXIuZ2V0KGJ1bmRsZUlkZW50aWZpZXJUb1NldCk7
Ci0KLSAgICB2ZXJzaW9uc1RvUG9saWNpZXMuc2V0KHZlcnNpb25TdHJpbmdUb1NldCwgY2xpZW50
UG9saWN5KTsKLSAgICBwb2xpY2llc0J5SWRlbnRpZmllci5zZXQoYnVuZGxlSWRlbnRpZmllclRv
U2V0LCB2ZXJzaW9uc1RvUG9saWNpZXMpOwotICAgIG1faG9zdHNUb1BsdWdpbklkZW50aWZpZXJE
YXRhLnNldChob3N0VG9TZXQsIHBvbGljaWVzQnlJZGVudGlmaWVyKTsKLX0KLQotdm9pZCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKQotewotICAgIG1f
aG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLmNsZWFyKCk7Ci19Ci0KLSNlbmRpZgotCi0jaWYg
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0jaWYgUExBVEZPUk0oTUFDKQotCi1TdHJpbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpsb25nZXN0TWF0Y2hlZFdpbGRjYXJkSG9zdEZvckhvc3Qo
Y29uc3QgU3RyaW5nJiBob3N0KSBjb25zdAotewotICAgIFN0cmluZyBsb25nZXN0TWF0Y2hlZEhv
c3Q7Ci0KLSAgICBmb3IgKGF1dG8mIGtleSA6IG1faG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRh
LmtleXMoKSkgewotICAgICAgICBpZiAoa2V5LmNvbnRhaW5zKCcqJykgJiYga2V5ICE9ICIqIiAm
JiBzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoaG9zdCwga2V5KSkgewotICAgICAgICAgICAg
aWYgKGtleS5sZW5ndGgoKSA+IGxvbmdlc3RNYXRjaGVkSG9zdC5sZW5ndGgoKSkKLSAgICAgICAg
ICAgICAgICBsb25nZXN0TWF0Y2hlZEhvc3QgPSBrZXk7Ci0gICAgICAgICAgICBlbHNlIGlmIChr
ZXkubGVuZ3RoKCkgPT0gbG9uZ2VzdE1hdGNoZWRIb3N0Lmxlbmd0aCgpICYmIGNvZGVQb2ludENv
bXBhcmVMZXNzVGhhbihrZXksIGxvbmdlc3RNYXRjaGVkSG9zdCkpCi0gICAgICAgICAgICAgICAg
bG9uZ2VzdE1hdGNoZWRIb3N0ID0ga2V5OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJu
IGxvbmdlc3RNYXRjaGVkSG9zdDsKLX0KLQotYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJl
cGxhY2VIb3N0V2l0aE1hdGNoZWRXaWxkY2FyZEhvc3QoU3RyaW5nJiBob3N0LCBjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIpIGNvbnN0Ci17Ci0gICAgU3RyaW5nIG1hdGNoZWRXaWxkY2FyZEhvc3Qg
PSBsb25nZXN0TWF0Y2hlZFdpbGRjYXJkSG9zdEZvckhvc3QoaG9zdCk7Ci0KLSAgICBpZiAobWF0
Y2hlZFdpbGRjYXJkSG9zdC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
YXV0byBwbHVnSW5JZGVudGlmaWVyRGF0YSA9IG1faG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRh
LmZpbmQobWF0Y2hlZFdpbGRjYXJkSG9zdCk7Ci0gICAgaWYgKHBsdWdJbklkZW50aWZpZXJEYXRh
ID09IG1faG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLmVuZCgpIHx8ICFwbHVnSW5JZGVudGlm
aWVyRGF0YS0+dmFsdWUuY29udGFpbnMoaWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIGhvc3QgPSBtYXRjaGVkV2lsZGNhcmRIb3N0OwotICAgIHJldHVybiB0cnVlOwot
fQotCi1ib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cGx1Z2luTG9hZENsaWVudFBvbGljeUZv
ckhvc3QoY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBQbHVnaW5JbmZvJiBpbmZvLCBQbHVnaW5M
b2FkQ2xpZW50UG9saWN5JiBwb2xpY3kpIGNvbnN0Ci17Ci0gICAgU3RyaW5nIGhvc3RUb0xvb2tV
cCA9IGhvc3Q7Ci0gICAgU3RyaW5nIGlkZW50aWZpZXIgPSBpbmZvLmJ1bmRsZUlkZW50aWZpZXI7
Ci0KLSAgICBhdXRvIHBvbGljaWVzQnlJZGVudGlmaWVySXRlcmF0b3IgPSBtX2hvc3RzVG9QbHVn
aW5JZGVudGlmaWVyRGF0YS5maW5kKGhvc3RUb0xvb2tVcCk7Ci0KLSAgICBpZiAoIWlkZW50aWZp
ZXIuaXNOdWxsKCkgJiYgcG9saWNpZXNCeUlkZW50aWZpZXJJdGVyYXRvciA9PSBtX2hvc3RzVG9Q
bHVnaW5JZGVudGlmaWVyRGF0YS5lbmQoKSkgewotICAgICAgICBpZiAoIXJlcGxhY2VIb3N0V2l0
aE1hdGNoZWRXaWxkY2FyZEhvc3QoaG9zdFRvTG9va1VwLCBpZGVudGlmaWVyKSkKLSAgICAgICAg
ICAgIGhvc3RUb0xvb2tVcCA9ICIqIjsKLSAgICAgICAgcG9saWNpZXNCeUlkZW50aWZpZXJJdGVy
YXRvciA9IG1faG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLmZpbmQoaG9zdFRvTG9va1VwKTsK
LSAgICAgICAgaWYgKGhvc3RUb0xvb2tVcCAhPSAiKiIgJiYgcG9saWNpZXNCeUlkZW50aWZpZXJJ
dGVyYXRvciA9PSBtX2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YS5lbmQoKSkgewotICAgICAg
ICAgICAgaG9zdFRvTG9va1VwID0gIioiOwotICAgICAgICAgICAgcG9saWNpZXNCeUlkZW50aWZp
ZXJJdGVyYXRvciA9IG1faG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLmZpbmQoaG9zdFRvTG9v
a1VwKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAocG9saWNpZXNCeUlkZW50aWZpZXJJdGVy
YXRvciA9PSBtX2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YS5lbmQoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgYXV0byYgcG9saWNpZXNCeUlkZW50aWZpZXIgPSBwb2xpY2llc0J5
SWRlbnRpZmllckl0ZXJhdG9yLT52YWx1ZTsKLQotICAgIGlmICghaWRlbnRpZmllcikKLSAgICAg
ICAgaWRlbnRpZmllciA9ICIqIjsKLQotICAgIGF1dG8gaWRlbnRpZmllclBvbGljeUl0ZXJhdG9y
ID0gcG9saWNpZXNCeUlkZW50aWZpZXIuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaWRlbnRp
ZmllciAhPSAiKiIgJiYgaWRlbnRpZmllclBvbGljeUl0ZXJhdG9yID09IHBvbGljaWVzQnlJZGVu
dGlmaWVyLmVuZCgpKSB7Ci0gICAgICAgIGlkZW50aWZpZXIgPSAiKiI7Ci0gICAgICAgIGlkZW50
aWZpZXJQb2xpY3lJdGVyYXRvciA9IHBvbGljaWVzQnlJZGVudGlmaWVyLmZpbmQoaWRlbnRpZmll
cik7Ci0gICAgfQotICAgIGlmIChpZGVudGlmaWVyUG9saWN5SXRlcmF0b3IgPT0gcG9saWNpZXNC
eUlkZW50aWZpZXIuZW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8mIHZl
cnNpb25zVG9Qb2xpY2llcyA9IGlkZW50aWZpZXJQb2xpY3lJdGVyYXRvci0+dmFsdWU7Ci0KLSAg
ICBTdHJpbmcgdmVyc2lvbiA9IGluZm8udmVyc2lvblN0cmluZzsKLSAgICBpZiAoIXZlcnNpb24p
Ci0gICAgICAgIHZlcnNpb24gPSAiKiI7Ci0gICAgYXV0byBwb2xpY3lJdGVyYXRvciA9IHZlcnNp
b25zVG9Qb2xpY2llcy5maW5kKHZlcnNpb24pOwotICAgIGlmICh2ZXJzaW9uICE9ICIqIiAmJiBw
b2xpY3lJdGVyYXRvciA9PSB2ZXJzaW9uc1RvUG9saWNpZXMuZW5kKCkpIHsKLSAgICAgICAgdmVy
c2lvbiA9ICIqIjsKLSAgICAgICAgcG9saWN5SXRlcmF0b3IgPSB2ZXJzaW9uc1RvUG9saWNpZXMu
ZmluZCh2ZXJzaW9uKTsKLSAgICB9Ci0KLSAgICBpZiAocG9saWN5SXRlcmF0b3IgPT0gdmVyc2lv
bnNUb1BvbGljaWVzLmVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBwb2xpY3kg
PSBwb2xpY3lJdGVyYXRvci0+dmFsdWU7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0jZW5kaWYgLy8g
UExBVEZPUk0oTUFDKQotCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cG9wdWxhdGVQbHVn
aW5DYWNoZShjb25zdCBXZWJDb3JlOjpQYWdlJiBwYWdlKQotewotICAgIGlmICghbV9wbHVnaW5D
YWNoZUlzUG9wdWxhdGVkKSB7Ci0gICAgICAgIEhhbmdEZXRlY3Rpb25EaXNhYmxlciBoYW5nRGV0
ZWN0aW9uRGlzYWJsZXI7Ci0KLSAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUHJvY2Vzc1By
b3h5OjpHZXRQbHVnaW5zKG1fc2hvdWxkUmVmcmVzaFBsdWdpbnMpLCBNZXNzYWdlczo6V2ViUHJv
Y2Vzc1Byb3h5OjpHZXRQbHVnaW5zOjpSZXBseShtX2NhY2hlZFBsdWdpbnMsIG1fY2FjaGVkQXBw
bGljYXRpb25QbHVnaW5zKSwgMCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbV9z
aG91bGRSZWZyZXNoUGx1Z2lucyA9IGZhbHNlOwotICAgICAgICBtX3BsdWdpbkNhY2hlSXNQb3B1
bGF0ZWQgPSB0cnVlOwotICAgIH0KLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBTdHJpbmcgcGFn
ZUhvc3QgPSBwYWdlLm1haW5GcmFtZSgpLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3Bv
bnNlVVJMKCkuaG9zdCgpOwotICAgIGZvciAoUGx1Z2luSW5mbyYgaW5mbyA6IG1fY2FjaGVkUGx1
Z2lucykgewotICAgICAgICBQbHVnaW5Mb2FkQ2xpZW50UG9saWN5IGNsaWVudFBvbGljeTsKLSAg
ICAgICAgaWYgKHBsdWdpbkxvYWRDbGllbnRQb2xpY3lGb3JIb3N0KHBhZ2VIb3N0LCBpbmZvLCBj
bGllbnRQb2xpY3kpKQotICAgICAgICAgICAgaW5mby5jbGllbnRMb2FkUG9saWN5ID0gY2xpZW50
UG9saWN5OwotICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwotI2VuZGlmIC8v
IG5vdCBQTEFURk9STShNQUMpCi19Ci0jZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9B
UEkpCi0KICNpZiBQTEFURk9STShDT0NPQSkKIC8vIFBhc3RlYm9hcmRTdHJhdGVneQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAwZmY0NzRhNzRjODk5Zjk2OWM4NjU3ZTYw
YzA5ZWQyYTdlMjI1MzJjLi42ZGQxZTFlOWQ5YTcxYTkwZDBjNTNmN2FmMjJhN2JkY2ZiNTk5NzQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTMwLDEzICszMCwxMiBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvTG9hZGVyU3RyYXRlZ3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bh
c3RlYm9hcmRTdHJhdGVneS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TdHJhdGVnaWVz
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5TdHJhdGVneS5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1jbGFzcyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6
UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSwgcHJp
dmF0ZSBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6UGx1Z2lu
U3RyYXRlZ3kgeworY2xhc3MgV2ViUGxhdGZvcm1TdHJhdGVnaWVzIDogcHVibGljIFdlYkNvcmU6
OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3ksIHBy
aXZhdGUgV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5IHsKICAgICBmcmllbmQgY2xhc3MgTmV2
ZXJEZXN0cm95ZWQ8V2ViUGxhdGZvcm1TdHJhdGVnaWVzPjsKIHB1YmxpYzoKICAgICBzdGF0aWMg
dm9pZCBpbml0aWFsaXplKCk7CkBAIC02MSwxOSArNjAsNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkQ29v
a2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYpIG92ZXJyaWRlOwogCi0gICAgLy8gV2ViQ29y
ZTo6UGx1Z2luU3RyYXRlZ3kKLSAgICB2b2lkIHJlZnJlc2hQbHVnaW5zKCkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBnZXRQbHVnaW5JbmZvKGNvbnN0IFdlYkNvcmU6OlBhZ2UqLCBWZWN0b3I8V2ViQ29y
ZTo6UGx1Z2luSW5mbz4mKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFdlYlZpc2libGVQbHVnaW5J
bmZvKGNvbnN0IFdlYkNvcmU6OlBhZ2UqLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mKSBv
dmVycmlkZTsKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5n
LCBXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5PiBQbHVnaW5Mb2FkQ2xpZW50UG9saWNp
ZXNCeUJ1bmRsZVZlcnNpb247Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUGx1Z2luTG9h
ZENsaWVudFBvbGljaWVzQnlCdW5kbGVWZXJzaW9uPiBQbHVnaW5Qb2xpY3lNYXBzQnlJZGVudGlm
aWVyOwotCi0gICAgdm9pZCBzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KFdlYkNvcmU6OlBsdWdp
bkxvYWRDbGllbnRQb2xpY3ksIGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgU3RyaW5nJiBidW5k
bGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmcpIG92ZXJyaWRlOwotICAg
IHZvaWQgY2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcygpIG92ZXJyaWRlOwotI2VuZGlmCi0KICAg
ICAvLyBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kKICNpZiBQTEFURk9STShJT1MpCiAgICAg
dm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVu
dCYpIG92ZXJyaWRlOwpAQCAtMTAzLDI3ICs4OSw4IEBAIHByaXZhdGU6CiAgICAgbG9uZyBzZXRT
dHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSNpZiBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICAvLyBXZWJDb3JlOjpQbHVnaW5TdHJhdGVn
eSBpbXBsZW1lbnRhdGlvbi4KLSAgICB2b2lkIHBvcHVsYXRlUGx1Z2luQ2FjaGUoY29uc3QgV2Vi
Q29yZTo6UGFnZSYpOwotICAgIGJvb2wgbV9wbHVnaW5DYWNoZUlzUG9wdWxhdGVkOwotICAgIGJv
b2wgbV9zaG91bGRSZWZyZXNoUGx1Z2luczsKLSAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5m
bz4gbV9jYWNoZWRQbHVnaW5zOwotICAgIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBtX2Nh
Y2hlZEFwcGxpY2F0aW9uUGx1Z2luczsKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBIYXNoTWFw
PFN0cmluZywgUGx1Z2luUG9saWN5TWFwc0J5SWRlbnRpZmllcj4gbV9ob3N0c1RvUGx1Z2luSWRl
bnRpZmllckRhdGE7Ci0gICAgYm9vbCBwbHVnaW5Mb2FkQ2xpZW50UG9saWN5Rm9ySG9zdChjb25z
dCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpQbHVnaW5JbmZvJiwgV2ViQ29yZTo6UGx1Z2luTG9h
ZENsaWVudFBvbGljeSYpIGNvbnN0OwotICAgIFN0cmluZyBsb25nZXN0TWF0Y2hlZFdpbGRjYXJk
SG9zdEZvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0KSBjb25zdDsKLSAgICBib29sIHJlcGxhY2VI
b3N0V2l0aE1hdGNoZWRXaWxkY2FyZEhvc3QoU3RyaW5nJiBob3N0LCBjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIpIGNvbnN0OwotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKLSNlbmRpZiAvLyBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIH07CiAKLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKLXZvaWQgaGFuZGxlRGlkR2V0UGx1Z2lucyh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQbHVn
aW5JbmZvPiYgYXBwbGljYXRpb25QbHVnaW5zKTsKLSNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVf
UExVR0lOX0FQSSkKLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
aW5kZXggYmEyY2I5YzNjMWVjMzFmZjQ1YTAxNWIyYzUzMTU4YWUyNzVmNTVjNy4uYTdkOTVjYWY1
YmMzYWQ3ZTIwNDZhYzExMTIyNTMzOTg3MGUxZTE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC01Niw2ICs1Niw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZS5o
IgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgiCisjaW5jbHVkZSAiV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKQEAgLTM5Nyw3
ICszOTgsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIGZvciAoYXV0byBob3N0SXRl
ciA9IHBhcmFtZXRlcnMucGx1Z2luTG9hZENsaWVudFBvbGljaWVzLmJlZ2luKCk7IGhvc3RJdGVy
ICE9IHBhcmFtZXRlcnMucGx1Z2luTG9hZENsaWVudFBvbGljaWVzLmVuZCgpOyArK2hvc3RJdGVy
KSB7CiAgICAgICAgIGZvciAoYXV0byBidW5kbGVJZGVudGlmaWVySXRlciA9IGhvc3RJdGVyLT52
YWx1ZS5iZWdpbigpOyBidW5kbGVJZGVudGlmaWVySXRlciAhPSBob3N0SXRlci0+dmFsdWUuZW5k
KCk7ICsrYnVuZGxlSWRlbnRpZmllckl0ZXIpIHsKICAgICAgICAgICAgIGZvciAoYXV0byB2ZXJz
aW9uSXRlciA9IGJ1bmRsZUlkZW50aWZpZXJJdGVyLT52YWx1ZS5iZWdpbigpOyB2ZXJzaW9uSXRl
ciAhPSBidW5kbGVJZGVudGlmaWVySXRlci0+dmFsdWUuZW5kKCk7ICsrdmVyc2lvbkl0ZXIpCi0g
ICAgICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBsdWdpblN0cmF0ZWd5KCktPnNl
dFBsdWdpbkxvYWRDbGllbnRQb2xpY3koc3RhdGljX2Nhc3Q8UGx1Z2luTG9hZENsaWVudFBvbGlj
eT4odmVyc2lvbkl0ZXItPnZhbHVlKSwgaG9zdEl0ZXItPmtleSwgYnVuZGxlSWRlbnRpZmllckl0
ZXItPmtleSwgdmVyc2lvbkl0ZXItPmtleSk7CisgICAgICAgICAgICAgICAgV2ViUGx1Z2luSW5m
b1Byb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KHN0YXRpY19j
YXN0PFBsdWdpbkxvYWRDbGllbnRQb2xpY3k+KHZlcnNpb25JdGVyLT52YWx1ZSksIGhvc3RJdGVy
LT5rZXksIGJ1bmRsZUlkZW50aWZpZXJJdGVyLT5rZXksIHZlcnNpb25JdGVyLT5rZXkpOwogICAg
ICAgICB9CiAgICAgfQogI2VuZGlmCkBAIC05MTUsMTQgKzkxNiwxNCBAQCB2b2lkIFdlYlByb2Nl
c3M6OnBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBwYWdlT3Jp
Z2luLCBjb25zdAogdm9pZCBXZWJQcm9jZXNzOjpzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KHVp
bnQ4X3QgcG9saWN5LCBjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uU3RyaW5nKQogewogI2lmIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fQVBJKSAmJiBQTEFURk9STShNQUMpCi0gICAgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBsdWdpblN0cmF0ZWd5KCktPnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3koc3RhdGljX2Nh
c3Q8UGx1Z2luTG9hZENsaWVudFBvbGljeT4ocG9saWN5KSwgaG9zdCwgYnVuZGxlSWRlbnRpZmll
ciwgdmVyc2lvblN0cmluZyk7CisgICAgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpzaW5nbGV0b24o
KS5zZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KHN0YXRpY19jYXN0PFBsdWdpbkxvYWRDbGllbnRQ
b2xpY3k+KHBvbGljeSksIGhvc3QsIGJ1bmRsZUlkZW50aWZpZXIsIHZlcnNpb25TdHJpbmcpOwog
I2VuZGlmCiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6Y2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcygp
CiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpICYmIFBMQVRGT1JNKE1BQykKLSAg
ICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGx1Z2luU3RyYXRlZ3koKS0+Y2xlYXJQbHVnaW5DbGll
bnRQb2xpY2llcygpOworICAgIFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6c2luZ2xldG9uKCkuY2xl
YXJQbHVnaW5DbGllbnRQb2xpY2llcygpOwogI2VuZGlmCiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285615</attachid>
            <date>2016-08-08 17:24:12 -0700</date>
            <delta_ts>2016-08-08 17:33:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160679-20160808172239.patch</filename>
            <type>text/plain</type>
            <size>27584</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMGJhODRkYTcxZGYzMDE3
OWIyZTJmNTI5NGIzODYzMjE5NDhjMWU4MC4uNTYyOTEzODdjNGUwNjlhMGM1OGQ5MjFhODg2MWEw
Mzk0MWQ1NzQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQxIEBACiAyMDE2LTA4LTA4ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgTW92ZSBwbHVnLWlu
IGNvZGUgZnJvbSBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgdG8gV2ViUGx1Z2luSW5mb1Byb3ZpZGVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA2NzkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3kpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OmNsZWFyUGx1Z2luQ2xpZW50UG9s
aWNpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnJlZnJlc2hQ
bHVnaW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpnZXRQbHVn
aW5JbmZvKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpnZXRXZWJW
aXNpYmxlUGx1Z2luSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkluZm9Qcm92aWRl
cjo6cG9wdWxhdGVQbHVnaW5DYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkluZm9Q
cm92aWRlcjo6cGx1Z2luTG9hZENsaWVudFBvbGljeUZvckhvc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbHVnaW5JbmZvUHJvdmlkZXI6Omxvbmdlc3RNYXRjaGVkV2lsZGNhcmRIb3N0Rm9ySG9z
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkluZm9Qcm92aWRlcjo6cmVwbGFjZUhvc3RX
aXRoTWF0Y2hlZFdpbGRjYXJkSG9zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1dl
YlBsdWdpbkluZm9Qcm92aWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjcmVhdGVQbHVnaW5TdHJhdGVneSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsYXRmb3JtU3RyYXRlZ2llczo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWZyZXNoUGx1Z2lucyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGx1Z2lu
SW5mbyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Z2V0V2ViVmlzaWJsZVBsdWdpbkluZm8pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3kpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNsZWFyUGx1Z2luQ2xpZW50
UG9saWNpZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6Omxvbmdlc3RNYXRjaGVkV2lsZGNhcmRIb3N0Rm9ySG9zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVwbGFjZUhvc3RXaXRoTWF0Y2hlZFdp
bGRjYXJkSG9zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cGx1Z2luTG9hZENsaWVudFBvbGljeUZvckhvc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnBvcHVsYXRlUGx1Z2luQ2FjaGUpOiBEZWxl
dGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzczo6Y2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcyk6CisKKzIwMTYtMDgt
MDggIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKwogICAgICAgICBBZGQg
YSBuZXcgUGx1Z2luSW5mb1Byb3ZpZGVyIGNsYXNzLCB0byByZXBsYWNlIFBsdWdpblN0cmF0ZWd5
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA2NzAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdp
bkluZm9Qcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvV2Vi
UGx1Z2luSW5mb1Byb3ZpZGVyLmNwcAppbmRleCA4ZjU2ZGRlMTBmOGFhMjk2NzllNTNiMjEyMDM3
YTA2MDU0OWM0ZTZlLi45NGM2YmU5NjA0ZjUzNzcyZmRiOTA2ZmY0YmQ0NjRkZDIxYmEyMDYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5m
b1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvV2Vi
UGx1Z2luSW5mb1Byb3ZpZGVyLmNwcApAQCAtMjYsOSArMjYsMjEgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJXZWJQbHVnaW5JbmZvUHJvdmlkZXIuaCIKIAotLy8gRklYTUU6IFdl
IHNob3VsZG4ndCBjYWxsIG91dCB0byB0aGUgcGxhdGZvcm0gc3RyYXRlZ3kgZm9yIHRoaXMuCi0j
aW5jbHVkZSAiV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9QbHVn
aW5TdHJhdGVneS5oPgorI2luY2x1ZGUgIkhhbmdEZXRlY3Rpb25EaXNhYmxlci5oIgorI2luY2x1
ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNp
bmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRG9j
dW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9NYWluRnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TdWJmcmFtZUxv
YWRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworI2lmIFBMQVRGT1JN
KE1BQykKKyNpbmNsdWRlICJTdHJpbmdVdGlsaXRpZXMuaCIKKyNlbmRpZgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIApAQCAtNDcsMzAgKzU5LDE4OCBAQCBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6On5X
ZWJQbHVnaW5JbmZvUHJvdmlkZXIoKQogewogfQogCisjaWYgUExBVEZPUk0oTUFDKQordm9pZCBX
ZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3koV2ViQ29yZTo6
UGx1Z2luTG9hZENsaWVudFBvbGljeSBjbGllbnRQb2xpY3ksIGNvbnN0IFN0cmluZyYgaG9zdCwg
Y29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJp
bmcpCit7CisgICAgU3RyaW5nIGhvc3RUb1NldCA9IGhvc3QuaXNOdWxsKCkgfHwgIWhvc3QubGVu
Z3RoKCkgPyAiKiIgOiBob3N0OworICAgIFN0cmluZyBidW5kbGVJZGVudGlmaWVyVG9TZXQgPSBi
dW5kbGVJZGVudGlmaWVyLmlzTnVsbCgpIHx8ICFidW5kbGVJZGVudGlmaWVyLmxlbmd0aCgpID8g
IioiIDogYnVuZGxlSWRlbnRpZmllcjsKKyAgICBTdHJpbmcgdmVyc2lvblN0cmluZ1RvU2V0ID0g
dmVyc2lvblN0cmluZy5pc051bGwoKSB8fCAhdmVyc2lvblN0cmluZy5sZW5ndGgoKSA/ICIqIiA6
IHZlcnNpb25TdHJpbmc7CisKKyAgICBQbHVnaW5Qb2xpY3lNYXBzQnlJZGVudGlmaWVyIHBvbGlj
aWVzQnlJZGVudGlmaWVyOworICAgIGlmIChtX2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YS5j
b250YWlucyhob3N0VG9TZXQpKQorICAgICAgICBwb2xpY2llc0J5SWRlbnRpZmllciA9IG1faG9z
dHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLmdldChob3N0VG9TZXQpOworCisgICAgUGx1Z2luTG9h
ZENsaWVudFBvbGljaWVzQnlCdW5kbGVWZXJzaW9uIHZlcnNpb25zVG9Qb2xpY2llczsKKyAgICBp
ZiAocG9saWNpZXNCeUlkZW50aWZpZXIuY29udGFpbnMoYnVuZGxlSWRlbnRpZmllclRvU2V0KSkK
KyAgICAgICAgdmVyc2lvbnNUb1BvbGljaWVzID0gcG9saWNpZXNCeUlkZW50aWZpZXIuZ2V0KGJ1
bmRsZUlkZW50aWZpZXJUb1NldCk7CisKKyAgICB2ZXJzaW9uc1RvUG9saWNpZXMuc2V0KHZlcnNp
b25TdHJpbmdUb1NldCwgY2xpZW50UG9saWN5KTsKKyAgICBwb2xpY2llc0J5SWRlbnRpZmllci5z
ZXQoYnVuZGxlSWRlbnRpZmllclRvU2V0LCB2ZXJzaW9uc1RvUG9saWNpZXMpOworICAgIG1faG9z
dHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLnNldChob3N0VG9TZXQsIHBvbGljaWVzQnlJZGVudGlm
aWVyKTsKK30KKwordm9pZCBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OmNsZWFyUGx1Z2luQ2xpZW50
UG9saWNpZXMoKQoreworICAgIG1faG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLmNsZWFyKCk7
Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnJlZnJlc2hQbHVnaW5z
KCkKIHsKLSAgICBXZWJDb3JlOjpwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGx1Z2luU3RyYXRlZ3ko
KS0+cmVmcmVzaFBsdWdpbnMoKTsKKyNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKyAg
ICBtX2NhY2hlZFBsdWdpbnMuY2xlYXIoKTsKKyAgICBtX3BsdWdpbkNhY2hlSXNQb3B1bGF0ZWQg
PSBmYWxzZTsKKyAgICBtX3Nob3VsZFJlZnJlc2hQbHVnaW5zID0gdHJ1ZTsKKyNlbmRpZgogfQog
CiB2b2lkIFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6Z2V0UGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdl
JiBwYWdlLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mIHBsdWdpbnMpCiB7Ci0gICAgV2Vi
Q29yZTo6cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBsdWdpblN0cmF0ZWd5KCktPmdldFBsdWdpbklu
Zm8oJnBhZ2UsIHBsdWdpbnMpOworI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQorICAg
IHBvcHVsYXRlUGx1Z2luQ2FjaGUocGFnZSk7CisKKyAgICBpZiAocGFnZS5tYWluRnJhbWUoKS5s
b2FkZXIoKS5zdWJmcmFtZUxvYWRlcigpLmFsbG93UGx1Z2lucygpKSB7CisgICAgICAgIHBsdWdp
bnMgPSBtX2NhY2hlZFBsdWdpbnM7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBwbHVn
aW5zID0gbV9jYWNoZWRBcHBsaWNhdGlvblBsdWdpbnM7CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShwYWdlKTsKKyAgICBVTlVTRURfUEFSQU0ocGx1Z2lucyk7CisjZW5kaWYgLy8gRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9BUEkpCiB9CiAKIHZvaWQgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpnZXRX
ZWJWaXNpYmxlUGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiBwYWdlLCBWZWN0b3I8V2ViQ29yZTo6
UGx1Z2luSW5mbz4mIHBsdWdpbnMpCiB7Ci0gICAgV2ViQ29yZTo6cGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBsdWdpblN0cmF0ZWd5KCktPmdldFdlYlZpc2libGVQbHVnaW5JbmZvKCZwYWdlLCBwbHVn
aW5zKTsKKyAgICBBU1NFUlRfQVJHKHBsdWdpbnMsIHBsdWdpbnMuaXNFbXB0eSgpKTsKKworICAg
IGdldFBsdWdpbkluZm8ocGFnZSwgcGx1Z2lucyk7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAg
aWYgKGF1dG8qIGRvY3VtZW50ID0gcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudCgpKSB7CisgICAg
ICAgIGlmIChhdXRvKiBzZWN1cml0eU9yaWdpbiA9IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigp
KSB7CisgICAgICAgICAgICBpZiAoc2VjdXJpdHlPcmlnaW4tPmlzTG9jYWwoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKGludDMyX3QgaSA9
IHBsdWdpbnMuc2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgYXV0byYgaW5mbyA9
IHBsdWdpbnMuYXQoaSk7CisKKyAgICAgICAgLy8gQWxsb3cgYnVpbHQtaW4gcGx1Z2lucy4gQWxz
byB0ZW50YXRpdmVseSBhbGxvdyBwbHVnaW5zIHRoYXQgdGhlIGNsaWVudCBtaWdodCBsYXRlciBz
ZWxlY3RpdmVseSBwZXJtaXQuCisgICAgICAgIGlmIChpbmZvLmlzQXBwbGljYXRpb25QbHVnaW4g
fHwgaW5mby5jbGllbnRMb2FkUG9saWN5ID09IFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xp
Y3lBc2spCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoaW5mby5jbGllbnRM
b2FkUG9saWN5ID09IFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3lCbG9jaykKKyAgICAg
ICAgICAgIHBsdWdpbnMucmVtb3ZlKGkpOworICAgIH0KKyNlbmRpZgogfQogCit2b2lkIFdlYlBs
dWdpbkluZm9Qcm92aWRlcjo6cG9wdWxhdGVQbHVnaW5DYWNoZShjb25zdCBXZWJDb3JlOjpQYWdl
JiBwYWdlKQoreworICAgIGlmICghbV9wbHVnaW5DYWNoZUlzUG9wdWxhdGVkKSB7CisgICAgICAg
IEhhbmdEZXRlY3Rpb25EaXNhYmxlciBoYW5nRGV0ZWN0aW9uRGlzYWJsZXI7CisKKyAgICAgICAg
aWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5zKG1fc2hvdWxkUmVm
cmVzaFBsdWdpbnMpLCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5zOjpSZXBs
eShtX2NhY2hlZFBsdWdpbnMsIG1fY2FjaGVkQXBwbGljYXRpb25QbHVnaW5zKSwgMCkpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9zaG91bGRSZWZyZXNoUGx1Z2lucyA9IGZhbHNl
OworICAgICAgICBtX3BsdWdpbkNhY2hlSXNQb3B1bGF0ZWQgPSB0cnVlOworICAgIH0KKwogI2lm
IFBMQVRGT1JNKE1BQykKLXZvaWQgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpzZXRQbHVnaW5Mb2Fk
Q2xpZW50UG9saWN5KFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3kgcGx1Z2luTG9hZENs
aWVudFBvbGljeSwgY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZykKKyAgICBTdHJpbmcgcGFnZUhvc3Qg
PSBwYWdlLm1haW5GcmFtZSgpLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlVVJM
KCkuaG9zdCgpOworICAgIGZvciAoYXV0byYgaW5mbyA6IG1fY2FjaGVkUGx1Z2lucykgeworICAg
ICAgICBpZiAoYXV0byBjbGllbnRQb2xpY3kgPSBwbHVnaW5Mb2FkQ2xpZW50UG9saWN5Rm9ySG9z
dChwYWdlSG9zdCwgaW5mbykpCisgICAgICAgICAgICBpbmZvLmNsaWVudExvYWRQb2xpY3kgPSAq
Y2xpZW50UG9saWN5OworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOworI2Vu
ZGlmIC8vIG5vdCBQTEFURk9STShNQUMpCit9CisKKyNpZiBQTEFURk9STShNQUMpCitPcHRpb25h
bDxXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5PiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6
OnBsdWdpbkxvYWRDbGllbnRQb2xpY3lGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3Qg
V2ViQ29yZTo6UGx1Z2luSW5mbyYgaW5mbykgY29uc3QKIHsKLSAgICBXZWJDb3JlOjpwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+cGx1Z2luU3RyYXRlZ3koKS0+c2V0UGx1Z2luTG9hZENsaWVudFBvbGlj
eShwbHVnaW5Mb2FkQ2xpZW50UG9saWN5LCBob3N0LCBidW5kbGVJZGVudGlmaWVyLCB2ZXJzaW9u
U3RyaW5nKTsKKyAgICBTdHJpbmcgaG9zdFRvTG9va1VwID0gaG9zdDsKKyAgICBTdHJpbmcgaWRl
bnRpZmllciA9IGluZm8uYnVuZGxlSWRlbnRpZmllcjsKKworICAgIGF1dG8gcG9saWNpZXNCeUlk
ZW50aWZpZXJJdGVyYXRvciA9IG1faG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLmZpbmQoaG9z
dFRvTG9va1VwKTsKKworICAgIGlmICghaWRlbnRpZmllci5pc051bGwoKSAmJiBwb2xpY2llc0J5
SWRlbnRpZmllckl0ZXJhdG9yID09IG1faG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLmVuZCgp
KSB7CisgICAgICAgIGlmICghcmVwbGFjZUhvc3RXaXRoTWF0Y2hlZFdpbGRjYXJkSG9zdChob3N0
VG9Mb29rVXAsIGlkZW50aWZpZXIpKQorICAgICAgICAgICAgaG9zdFRvTG9va1VwID0gIioiOwor
ICAgICAgICBwb2xpY2llc0J5SWRlbnRpZmllckl0ZXJhdG9yID0gbV9ob3N0c1RvUGx1Z2luSWRl
bnRpZmllckRhdGEuZmluZChob3N0VG9Mb29rVXApOworICAgICAgICBpZiAoaG9zdFRvTG9va1Vw
ICE9ICIqIiAmJiBwb2xpY2llc0J5SWRlbnRpZmllckl0ZXJhdG9yID09IG1faG9zdHNUb1BsdWdp
bklkZW50aWZpZXJEYXRhLmVuZCgpKSB7CisgICAgICAgICAgICBob3N0VG9Mb29rVXAgPSAiKiI7
CisgICAgICAgICAgICBwb2xpY2llc0J5SWRlbnRpZmllckl0ZXJhdG9yID0gbV9ob3N0c1RvUGx1
Z2luSWRlbnRpZmllckRhdGEuZmluZChob3N0VG9Mb29rVXApOworICAgICAgICB9CisgICAgfQor
ICAgIGlmIChwb2xpY2llc0J5SWRlbnRpZmllckl0ZXJhdG9yID09IG1faG9zdHNUb1BsdWdpbklk
ZW50aWZpZXJEYXRhLmVuZCgpKQorICAgICAgICByZXR1cm4gTnVsbG9wdDsKKworICAgIGF1dG8m
IHBvbGljaWVzQnlJZGVudGlmaWVyID0gcG9saWNpZXNCeUlkZW50aWZpZXJJdGVyYXRvci0+dmFs
dWU7CisKKyAgICBpZiAoIWlkZW50aWZpZXIpCisgICAgICAgIGlkZW50aWZpZXIgPSAiKiI7CisK
KyAgICBhdXRvIGlkZW50aWZpZXJQb2xpY3lJdGVyYXRvciA9IHBvbGljaWVzQnlJZGVudGlmaWVy
LmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGlkZW50aWZpZXIgIT0gIioiICYmIGlkZW50aWZp
ZXJQb2xpY3lJdGVyYXRvciA9PSBwb2xpY2llc0J5SWRlbnRpZmllci5lbmQoKSkgeworICAgICAg
ICBpZGVudGlmaWVyID0gIioiOworICAgICAgICBpZGVudGlmaWVyUG9saWN5SXRlcmF0b3IgPSBw
b2xpY2llc0J5SWRlbnRpZmllci5maW5kKGlkZW50aWZpZXIpOworICAgIH0KKworICAgIGlmIChp
ZGVudGlmaWVyUG9saWN5SXRlcmF0b3IgPT0gcG9saWNpZXNCeUlkZW50aWZpZXIuZW5kKCkpCisg
ICAgICAgIHJldHVybiBOdWxsb3B0OworCisgICAgYXV0byYgdmVyc2lvbnNUb1BvbGljaWVzID0g
aWRlbnRpZmllclBvbGljeUl0ZXJhdG9yLT52YWx1ZTsKKworICAgIFN0cmluZyB2ZXJzaW9uID0g
aW5mby52ZXJzaW9uU3RyaW5nOworICAgIGlmICghdmVyc2lvbikKKyAgICAgICAgdmVyc2lvbiA9
ICIqIjsKKyAgICBhdXRvIHBvbGljeUl0ZXJhdG9yID0gdmVyc2lvbnNUb1BvbGljaWVzLmZpbmQo
dmVyc2lvbik7CisgICAgaWYgKHZlcnNpb24gIT0gIioiICYmIHBvbGljeUl0ZXJhdG9yID09IHZl
cnNpb25zVG9Qb2xpY2llcy5lbmQoKSkgeworICAgICAgICB2ZXJzaW9uID0gIioiOworICAgICAg
ICBwb2xpY3lJdGVyYXRvciA9IHZlcnNpb25zVG9Qb2xpY2llcy5maW5kKHZlcnNpb24pOworICAg
IH0KKworICAgIGlmIChwb2xpY3lJdGVyYXRvciA9PSB2ZXJzaW9uc1RvUG9saWNpZXMuZW5kKCkp
CisgICAgICAgIHJldHVybiBOdWxsb3B0OworCisgICAgcmV0dXJuIHBvbGljeUl0ZXJhdG9yLT52
YWx1ZTsKIH0KIAotdm9pZCBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OmNsZWFyUGx1Z2luQ2xpZW50
UG9saWNpZXMoKQorU3RyaW5nIFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6bG9uZ2VzdE1hdGNoZWRX
aWxkY2FyZEhvc3RGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCkgY29uc3QKK3sKKyAgICBTdHJp
bmcgbG9uZ2VzdE1hdGNoZWRIb3N0OworCisgICAgZm9yIChhdXRvJiBrZXkgOiBtX2hvc3RzVG9Q
bHVnaW5JZGVudGlmaWVyRGF0YS5rZXlzKCkpIHsKKyAgICAgICAgaWYgKGtleS5jb250YWlucygn
KicpICYmIGtleSAhPSAiKiIgJiYgc3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKGhvc3QsIGtl
eSkpIHsKKyAgICAgICAgICAgIGlmIChrZXkubGVuZ3RoKCkgPiBsb25nZXN0TWF0Y2hlZEhvc3Qu
bGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgbG9uZ2VzdE1hdGNoZWRIb3N0ID0ga2V5OworICAg
ICAgICAgICAgZWxzZSBpZiAoa2V5Lmxlbmd0aCgpID09IGxvbmdlc3RNYXRjaGVkSG9zdC5sZW5n
dGgoKSAmJiBjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4oa2V5LCBsb25nZXN0TWF0Y2hlZEhvc3Qp
KQorICAgICAgICAgICAgICAgIGxvbmdlc3RNYXRjaGVkSG9zdCA9IGtleTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHJldHVybiBsb25nZXN0TWF0Y2hlZEhvc3Q7Cit9CisKK2Jvb2wgV2ViUGx1
Z2luSW5mb1Byb3ZpZGVyOjpyZXBsYWNlSG9zdFdpdGhNYXRjaGVkV2lsZGNhcmRIb3N0KFN0cmlu
ZyYgaG9zdCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKSBjb25zdAogewotICAgIFdlYkNvcmU6
OnBsYXRmb3JtU3RyYXRlZ2llcygpLT5wbHVnaW5TdHJhdGVneSgpLT5jbGVhclBsdWdpbkNsaWVu
dFBvbGljaWVzKCk7CisgICAgU3RyaW5nIG1hdGNoZWRXaWxkY2FyZEhvc3QgPSBsb25nZXN0TWF0
Y2hlZFdpbGRjYXJkSG9zdEZvckhvc3QoaG9zdCk7CisKKyAgICBpZiAobWF0Y2hlZFdpbGRjYXJk
SG9zdC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBwbHVnSW5J
ZGVudGlmaWVyRGF0YSA9IG1faG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLmZpbmQobWF0Y2hl
ZFdpbGRjYXJkSG9zdCk7CisgICAgaWYgKHBsdWdJbklkZW50aWZpZXJEYXRhID09IG1faG9zdHNU
b1BsdWdpbklkZW50aWZpZXJEYXRhLmVuZCgpIHx8ICFwbHVnSW5JZGVudGlmaWVyRGF0YS0+dmFs
dWUuY29udGFpbnMoaWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGhv
c3QgPSBtYXRjaGVkV2lsZGNhcmRIb3N0OworICAgIHJldHVybiB0cnVlOwogfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5J
bmZvUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVn
aW5JbmZvUHJvdmlkZXIuaAppbmRleCA3OWMwZGVkMGNmMmM1Yjc4NGY2ZmIxNWIzYTRlOTM4ODMw
ZWRhMzJiLi45ZTQ4YTY5OGI1ZDZlMjRjYTczZjE3MmU1YzQwNmExODg3MDkxYjMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3Zp
ZGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbklu
Zm9Qcm92aWRlci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
PFdlYkNvcmUvUGx1Z2luSW5mb1Byb3ZpZGVyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTM2LDE2ICszNywzOCBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFdlYlBsdWdpbkluZm9Qcm92aWRlciYgc2luZ2xldG9uKCk7CiAgICAgdmlydHVhbCB+
V2ViUGx1Z2luSW5mb1Byb3ZpZGVyKCk7CiAKKyNpZiBQTEFURk9STShNQUMpCisgICAgdm9pZCBz
ZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3ks
IGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHZlcnNpb25TdHJpbmcpIG92ZXJyaWRlOworICAgIHZvaWQgY2xlYXJQbHVnaW5D
bGllbnRQb2xpY2llcygpIG92ZXJyaWRlOworI2VuZGlmCisKIHByaXZhdGU6CisgICAgV2ViUGx1
Z2luSW5mb1Byb3ZpZGVyKCk7CisKICAgICB2b2lkIHJlZnJlc2hQbHVnaW5zKCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBnZXRQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmLCBWZWN0b3I8V2ViQ29yZTo6
UGx1Z2luSW5mbz4mKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFdlYlZpc2libGVQbHVnaW5JbmZv
KFdlYkNvcmU6OlBhZ2UmLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mKSBvdmVycmlkZTsK
KworI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQorICAgIHZvaWQgcG9wdWxhdGVQbHVn
aW5DYWNoZShjb25zdCBXZWJDb3JlOjpQYWdlJik7CisjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9BUEkpCisKICNpZiBQTEFURk9STShNQUMpCi0gICAgdm9pZCBzZXRQbHVnaW5Mb2Fk
Q2xpZW50UG9saWN5KFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3ksIGNvbnN0IFN0cmlu
ZyYgaG9zdCwgY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHZl
cnNpb25TdHJpbmcpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xlYXJQbHVnaW5DbGllbnRQb2xpY2ll
cygpIG92ZXJyaWRlOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xp
Y3k+IHBsdWdpbkxvYWRDbGllbnRQb2xpY3lGb3JIb3N0KGNvbnN0IFN0cmluZyYsIGNvbnN0IFdl
YkNvcmU6OlBsdWdpbkluZm8mKSBjb25zdDsKKyAgICBTdHJpbmcgbG9uZ2VzdE1hdGNoZWRXaWxk
Y2FyZEhvc3RGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCkgY29uc3Q7CisgICAgYm9vbCByZXBs
YWNlSG9zdFdpdGhNYXRjaGVkV2lsZGNhcmRIb3N0KFN0cmluZyYgaG9zdCwgY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyKSBjb25zdDsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFdlYkNv
cmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3k+IFBsdWdpbkxvYWRDbGllbnRQb2xpY2llc0J5QnVu
ZGxlVmVyc2lvbjsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBQbHVnaW5Mb2FkQ2xpZW50
UG9saWNpZXNCeUJ1bmRsZVZlcnNpb24+IFBsdWdpblBvbGljeU1hcHNCeUlkZW50aWZpZXI7Cisg
ICAgSGFzaE1hcDxTdHJpbmcsIFBsdWdpblBvbGljeU1hcHNCeUlkZW50aWZpZXI+IG1faG9zdHNU
b1BsdWdpbklkZW50aWZpZXJEYXRhOwogI2VuZGlmCiAKLSAgICBXZWJQbHVnaW5JbmZvUHJvdmlk
ZXIoKTsKKyNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKyAgICBib29sIG1fcGx1Z2lu
Q2FjaGVJc1BvcHVsYXRlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX3Nob3VsZFJlZnJlc2hQbHVn
aW5zIHsgZmFsc2UgfTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gbV9jYWNoZWRQ
bHVnaW5zOworICAgIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBtX2NhY2hlZEFwcGxpY2F0
aW9uUGx1Z2luczsKKyNlbmRpZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwCmluZGV4IDk0ZTljMTZiZmI2YTk0YzEzYjA4M2Y4Nzc1ZjU3NWQ4ZTkwNjYzMWUuLjlj
ODhiNWYxYTFkYjg2ZTE2YzgzZDU5MTc2Y2E0YTFhNGM1ODRjMDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTgwLDEwICs4MCw2IEBAIHZvaWQgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjppbml0aWFsaXplKCkKIH0KIAogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMoKQotI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAg
IDogbV9wbHVnaW5DYWNoZUlzUG9wdWxhdGVkKGZhbHNlKQotICAgICwgbV9zaG91bGRSZWZyZXNo
UGx1Z2lucyhmYWxzZSkKLSNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIHsK
IH0KIApAQCAtMTA0LDcgKzEwMCw3IEBAIFBhc3RlYm9hcmRTdHJhdGVneSogV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpjcmVhdGVQYXN0ZWJvYXJkU3RyYXRlZ3koKQogCiBQbHVnaW5TdHJhdGVneSog
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVQbHVnaW5TdHJhdGVneSgpCiB7Ci0gICAgcmV0
dXJuIHRoaXM7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIEJsb2JSZWdpc3RyeSogV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVCbG9iUmVnaXN0cnkoKQpAQCAtMTY1LDIwMCArMTYxLDYg
QEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFkZENvb2tpZShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnMKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5u
ZXR3b3JrQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6QWRkQ29va2llKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uSUQo
c2Vzc2lvbiksIHVybCwgY29va2llKSwgMCk7CiB9CiAKLS8vIFBsdWdpblN0cmF0ZWd5Ci0KLXZv
aWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWZyZXNoUGx1Z2lucygpCi17Ci0jaWYgRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgbV9jYWNoZWRQbHVnaW5zLmNsZWFyKCk7Ci0gICAg
bV9wbHVnaW5DYWNoZUlzUG9wdWxhdGVkID0gZmFsc2U7Ci0gICAgbV9zaG91bGRSZWZyZXNoUGx1
Z2lucyA9IHRydWU7Ci0jZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi19Ci0K
LXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFdlYkNvcmU6
OlBhZ2UqIHBhZ2UsIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYgcGx1Z2lucykKLXsKLSNp
ZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBBU1NFUlRfQVJHKHBhZ2UsIHBhZ2Up
OwotICAgIHBvcHVsYXRlUGx1Z2luQ2FjaGUoKnBhZ2UpOwotCi0gICAgaWYgKHBhZ2UtPm1haW5G
cmFtZSgpLmxvYWRlcigpLnN1YmZyYW1lTG9hZGVyKCkuYWxsb3dQbHVnaW5zKCkpIHsKLSAgICAg
ICAgcGx1Z2lucyA9IG1fY2FjaGVkUGx1Z2luczsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIHBsdWdpbnMgPSBtX2NhY2hlZEFwcGxpY2F0aW9uUGx1Z2luczsKLSNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKHBhZ2UpOwotICAgIFVOVVNFRF9QQVJBTShwbHVnaW5zKTsKLSNlbmRpZiAvLyBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLX0KLQotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmdldFdlYlZpc2libGVQbHVnaW5JbmZvKGNvbnN0IFBhZ2UqIHBhZ2UsIFZlY3RvcjxQbHVn
aW5JbmZvPiYgcGx1Z2lucykKLXsKLSAgICBBU1NFUlRfQVJHKHBhZ2UsIHBhZ2UpOwotICAgIEFT
U0VSVF9BUkcocGx1Z2lucywgcGx1Z2lucy5pc0VtcHR5KCkpOwotCi0gICAgZ2V0UGx1Z2luSW5m
byhwYWdlLCBwbHVnaW5zKTsKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoRG9jdW1lbnQq
IGRvY3VtZW50ID0gcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkgewotICAgICAgICBpZiAo
U2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luID0gZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2lu
KCkpIHsKLSAgICAgICAgICAgIGlmIChzZWN1cml0eU9yaWdpbi0+aXNMb2NhbCgpKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBmb3IgKGludDMy
X3QgaSA9IHBsdWdpbnMuc2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKLSAgICAgICAgUGx1Z2lu
SW5mbyYgaW5mbyA9IHBsdWdpbnMuYXQoaSk7Ci0gICAgICAgIFBsdWdpbkxvYWRDbGllbnRQb2xp
Y3kgY2xpZW50UG9saWN5ID0gaW5mby5jbGllbnRMb2FkUG9saWN5OwotICAgICAgICAvLyBBbGxv
dyBidWlsdC1pbiBwbHVnaW5zLiBBbHNvIHRlbnRhdGl2ZWx5IGFsbG93IHBsdWdpbnMgdGhhdCB0
aGUgY2xpZW50IG1pZ2h0IGxhdGVyIHNlbGVjdGl2ZWx5IHBlcm1pdC4KLSAgICAgICAgaWYgKGlu
Zm8uaXNBcHBsaWNhdGlvblBsdWdpbiB8fCBjbGllbnRQb2xpY3kgPT0gUGx1Z2luTG9hZENsaWVu
dFBvbGljeUFzaykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmIChjbGllbnRQ
b2xpY3kgPT0gUGx1Z2luTG9hZENsaWVudFBvbGljeUJsb2NrKQotICAgICAgICAgICAgcGx1Z2lu
cy5yZW1vdmUoaSk7Ci0gICAgfQotI2VuZGlmCi19Ci0KLSNpZiBQTEFURk9STShNQUMpCi12b2lk
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShQbHVnaW5M
b2FkQ2xpZW50UG9saWN5IGNsaWVudFBvbGljeSwgY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBT
dHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZykKLXsK
LSAgICBTdHJpbmcgaG9zdFRvU2V0ID0gaG9zdC5pc051bGwoKSB8fCAhaG9zdC5sZW5ndGgoKSA/
ICIqIiA6IGhvc3Q7Ci0gICAgU3RyaW5nIGJ1bmRsZUlkZW50aWZpZXJUb1NldCA9IGJ1bmRsZUlk
ZW50aWZpZXIuaXNOdWxsKCkgfHwgIWJ1bmRsZUlkZW50aWZpZXIubGVuZ3RoKCkgPyAiKiIgOiBi
dW5kbGVJZGVudGlmaWVyOwotICAgIFN0cmluZyB2ZXJzaW9uU3RyaW5nVG9TZXQgPSB2ZXJzaW9u
U3RyaW5nLmlzTnVsbCgpIHx8ICF2ZXJzaW9uU3RyaW5nLmxlbmd0aCgpID8gIioiIDogdmVyc2lv
blN0cmluZzsKLQotICAgIFBsdWdpblBvbGljeU1hcHNCeUlkZW50aWZpZXIgcG9saWNpZXNCeUlk
ZW50aWZpZXI7Ci0gICAgaWYgKG1faG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLmNvbnRhaW5z
KGhvc3RUb1NldCkpCi0gICAgICAgIHBvbGljaWVzQnlJZGVudGlmaWVyID0gbV9ob3N0c1RvUGx1
Z2luSWRlbnRpZmllckRhdGEuZ2V0KGhvc3RUb1NldCk7Ci0KLSAgICBQbHVnaW5Mb2FkQ2xpZW50
UG9saWNpZXNCeUJ1bmRsZVZlcnNpb24gdmVyc2lvbnNUb1BvbGljaWVzOwotICAgIGlmIChwb2xp
Y2llc0J5SWRlbnRpZmllci5jb250YWlucyhidW5kbGVJZGVudGlmaWVyVG9TZXQpKQotICAgICAg
ICB2ZXJzaW9uc1RvUG9saWNpZXMgPSBwb2xpY2llc0J5SWRlbnRpZmllci5nZXQoYnVuZGxlSWRl
bnRpZmllclRvU2V0KTsKLQotICAgIHZlcnNpb25zVG9Qb2xpY2llcy5zZXQodmVyc2lvblN0cmlu
Z1RvU2V0LCBjbGllbnRQb2xpY3kpOwotICAgIHBvbGljaWVzQnlJZGVudGlmaWVyLnNldChidW5k
bGVJZGVudGlmaWVyVG9TZXQsIHZlcnNpb25zVG9Qb2xpY2llcyk7Ci0gICAgbV9ob3N0c1RvUGx1
Z2luSWRlbnRpZmllckRhdGEuc2V0KGhvc3RUb1NldCwgcG9saWNpZXNCeUlkZW50aWZpZXIpOwot
fQotCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y2xlYXJQbHVnaW5DbGllbnRQb2xpY2ll
cygpCi17Ci0gICAgbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEuY2xlYXIoKTsKLX0KLQot
I2VuZGlmCi0KLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSNpZiBQTEFURk9STShN
QUMpCi0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Omxvbmdlc3RNYXRjaGVkV2lsZGNh
cmRIb3N0Rm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QpIGNvbnN0Ci17Ci0gICAgU3RyaW5nIGxv
bmdlc3RNYXRjaGVkSG9zdDsKLQotICAgIGZvciAoYXV0byYga2V5IDogbV9ob3N0c1RvUGx1Z2lu
SWRlbnRpZmllckRhdGEua2V5cygpKSB7Ci0gICAgICAgIGlmIChrZXkuY29udGFpbnMoJyonKSAm
JiBrZXkgIT0gIioiICYmIHN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZyhob3N0LCBrZXkpKSB7
Ci0gICAgICAgICAgICBpZiAoa2V5Lmxlbmd0aCgpID4gbG9uZ2VzdE1hdGNoZWRIb3N0Lmxlbmd0
aCgpKQotICAgICAgICAgICAgICAgIGxvbmdlc3RNYXRjaGVkSG9zdCA9IGtleTsKLSAgICAgICAg
ICAgIGVsc2UgaWYgKGtleS5sZW5ndGgoKSA9PSBsb25nZXN0TWF0Y2hlZEhvc3QubGVuZ3RoKCkg
JiYgY29kZVBvaW50Q29tcGFyZUxlc3NUaGFuKGtleSwgbG9uZ2VzdE1hdGNoZWRIb3N0KSkKLSAg
ICAgICAgICAgICAgICBsb25nZXN0TWF0Y2hlZEhvc3QgPSBrZXk7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICByZXR1cm4gbG9uZ2VzdE1hdGNoZWRIb3N0OwotfQotCi1ib29sIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6cmVwbGFjZUhvc3RXaXRoTWF0Y2hlZFdpbGRjYXJkSG9zdChTdHJpbmcmIGhv
c3QsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikgY29uc3QKLXsKLSAgICBTdHJpbmcgbWF0Y2hl
ZFdpbGRjYXJkSG9zdCA9IGxvbmdlc3RNYXRjaGVkV2lsZGNhcmRIb3N0Rm9ySG9zdChob3N0KTsK
LQotICAgIGlmIChtYXRjaGVkV2lsZGNhcmRIb3N0LmlzTnVsbCgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBhdXRvIHBsdWdJbklkZW50aWZpZXJEYXRhID0gbV9ob3N0c1RvUGx1Z2lu
SWRlbnRpZmllckRhdGEuZmluZChtYXRjaGVkV2lsZGNhcmRIb3N0KTsKLSAgICBpZiAocGx1Z0lu
SWRlbnRpZmllckRhdGEgPT0gbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEuZW5kKCkgfHwg
IXBsdWdJbklkZW50aWZpZXJEYXRhLT52YWx1ZS5jb250YWlucyhpZGVudGlmaWVyKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaG9zdCA9IG1hdGNoZWRXaWxkY2FyZEhvc3Q7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpwbHVnaW5Mb2Fk
Q2xpZW50UG9saWN5Rm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFBsdWdpbkluZm8m
IGluZm8sIFBsdWdpbkxvYWRDbGllbnRQb2xpY3kmIHBvbGljeSkgY29uc3QKLXsKLSAgICBTdHJp
bmcgaG9zdFRvTG9va1VwID0gaG9zdDsKLSAgICBTdHJpbmcgaWRlbnRpZmllciA9IGluZm8uYnVu
ZGxlSWRlbnRpZmllcjsKLQotICAgIGF1dG8gcG9saWNpZXNCeUlkZW50aWZpZXJJdGVyYXRvciA9
IG1faG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLmZpbmQoaG9zdFRvTG9va1VwKTsKLQotICAg
IGlmICghaWRlbnRpZmllci5pc051bGwoKSAmJiBwb2xpY2llc0J5SWRlbnRpZmllckl0ZXJhdG9y
ID09IG1faG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLmVuZCgpKSB7Ci0gICAgICAgIGlmICgh
cmVwbGFjZUhvc3RXaXRoTWF0Y2hlZFdpbGRjYXJkSG9zdChob3N0VG9Mb29rVXAsIGlkZW50aWZp
ZXIpKQotICAgICAgICAgICAgaG9zdFRvTG9va1VwID0gIioiOwotICAgICAgICBwb2xpY2llc0J5
SWRlbnRpZmllckl0ZXJhdG9yID0gbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEuZmluZCho
b3N0VG9Mb29rVXApOwotICAgICAgICBpZiAoaG9zdFRvTG9va1VwICE9ICIqIiAmJiBwb2xpY2ll
c0J5SWRlbnRpZmllckl0ZXJhdG9yID09IG1faG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLmVu
ZCgpKSB7Ci0gICAgICAgICAgICBob3N0VG9Mb29rVXAgPSAiKiI7Ci0gICAgICAgICAgICBwb2xp
Y2llc0J5SWRlbnRpZmllckl0ZXJhdG9yID0gbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEu
ZmluZChob3N0VG9Mb29rVXApOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChwb2xpY2llc0J5
SWRlbnRpZmllckl0ZXJhdG9yID09IG1faG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLmVuZCgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvJiBwb2xpY2llc0J5SWRlbnRpZmll
ciA9IHBvbGljaWVzQnlJZGVudGlmaWVySXRlcmF0b3ItPnZhbHVlOwotCi0gICAgaWYgKCFpZGVu
dGlmaWVyKQotICAgICAgICBpZGVudGlmaWVyID0gIioiOwotCi0gICAgYXV0byBpZGVudGlmaWVy
UG9saWN5SXRlcmF0b3IgPSBwb2xpY2llc0J5SWRlbnRpZmllci5maW5kKGlkZW50aWZpZXIpOwot
ICAgIGlmIChpZGVudGlmaWVyICE9ICIqIiAmJiBpZGVudGlmaWVyUG9saWN5SXRlcmF0b3IgPT0g
cG9saWNpZXNCeUlkZW50aWZpZXIuZW5kKCkpIHsKLSAgICAgICAgaWRlbnRpZmllciA9ICIqIjsK
LSAgICAgICAgaWRlbnRpZmllclBvbGljeUl0ZXJhdG9yID0gcG9saWNpZXNCeUlkZW50aWZpZXIu
ZmluZChpZGVudGlmaWVyKTsKLSAgICB9Ci0gICAgaWYgKGlkZW50aWZpZXJQb2xpY3lJdGVyYXRv
ciA9PSBwb2xpY2llc0J5SWRlbnRpZmllci5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgYXV0byYgdmVyc2lvbnNUb1BvbGljaWVzID0gaWRlbnRpZmllclBvbGljeUl0ZXJhdG9y
LT52YWx1ZTsKLQotICAgIFN0cmluZyB2ZXJzaW9uID0gaW5mby52ZXJzaW9uU3RyaW5nOwotICAg
IGlmICghdmVyc2lvbikKLSAgICAgICAgdmVyc2lvbiA9ICIqIjsKLSAgICBhdXRvIHBvbGljeUl0
ZXJhdG9yID0gdmVyc2lvbnNUb1BvbGljaWVzLmZpbmQodmVyc2lvbik7Ci0gICAgaWYgKHZlcnNp
b24gIT0gIioiICYmIHBvbGljeUl0ZXJhdG9yID09IHZlcnNpb25zVG9Qb2xpY2llcy5lbmQoKSkg
ewotICAgICAgICB2ZXJzaW9uID0gIioiOwotICAgICAgICBwb2xpY3lJdGVyYXRvciA9IHZlcnNp
b25zVG9Qb2xpY2llcy5maW5kKHZlcnNpb24pOwotICAgIH0KLQotICAgIGlmIChwb2xpY3lJdGVy
YXRvciA9PSB2ZXJzaW9uc1RvUG9saWNpZXMuZW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIHBvbGljeSA9IHBvbGljeUl0ZXJhdG9yLT52YWx1ZTsKLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLSNlbmRpZiAvLyBQTEFURk9STShNQUMpCi0KLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpwb3B1bGF0ZVBsdWdpbkNhY2hlKGNvbnN0IFdlYkNvcmU6OlBhZ2UmIHBhZ2UpCi17Ci0gICAg
aWYgKCFtX3BsdWdpbkNhY2hlSXNQb3B1bGF0ZWQpIHsKLSAgICAgICAgSGFuZ0RldGVjdGlvbkRp
c2FibGVyIGhhbmdEZXRlY3Rpb25EaXNhYmxlcjsKLQotICAgICAgICBpZiAoIVdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpbnMobV9zaG91bGRSZWZyZXNoUGx1Z2lucyksIE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpbnM6OlJlcGx5KG1fY2FjaGVkUGx1Z2lu
cywgbV9jYWNoZWRBcHBsaWNhdGlvblBsdWdpbnMpLCAwKSkKLSAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICBtX3Nob3VsZFJlZnJlc2hQbHVnaW5zID0gZmFsc2U7Ci0gICAgICAgIG1fcGx1
Z2luQ2FjaGVJc1BvcHVsYXRlZCA9IHRydWU7Ci0gICAgfQotCi0jaWYgUExBVEZPUk0oTUFDKQot
ICAgIFN0cmluZyBwYWdlSG9zdCA9IHBhZ2UubWFpbkZyYW1lKCkubG9hZGVyKCkuZG9jdW1lbnRM
b2FkZXIoKS0+cmVzcG9uc2VVUkwoKS5ob3N0KCk7Ci0gICAgZm9yIChQbHVnaW5JbmZvJiBpbmZv
IDogbV9jYWNoZWRQbHVnaW5zKSB7Ci0gICAgICAgIFBsdWdpbkxvYWRDbGllbnRQb2xpY3kgY2xp
ZW50UG9saWN5OwotICAgICAgICBpZiAocGx1Z2luTG9hZENsaWVudFBvbGljeUZvckhvc3QocGFn
ZUhvc3QsIGluZm8sIGNsaWVudFBvbGljeSkpCi0gICAgICAgICAgICBpbmZvLmNsaWVudExvYWRQ
b2xpY3kgPSBjbGllbnRQb2xpY3k7Ci0gICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocGFn
ZSk7Ci0jZW5kaWYgLy8gbm90IFBMQVRGT1JNKE1BQykKLX0KLSNlbmRpZiAvLyBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkKLQogI2lmIFBMQVRGT1JNKENPQ09BKQogLy8gUGFzdGVib2FyZFN0
cmF0ZWd5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDBmZjQ3NGE3NGM4
OTlmOTY5Yzg2NTdlNjBjMDllZDJhN2UyMjUzMmMuLjZkZDFlMWU5ZDlhNzFhOTBkMGM1M2Y3YWYy
MmE3YmRjZmI1OTk3NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtMzAs
MTMgKzMwLDEyIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2FkZXJTdHJhdGVneS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUGFzdGVib2FyZFN0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0
Zm9ybVN0cmF0ZWdpZXMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpblN0cmF0ZWd5Lmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYlBsYXRmb3JtU3RyYXRlZ2llcyA6IHB1
YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yZTo6Q29va2ll
c1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneSwgcHJpdmF0ZSBX
ZWJDb3JlOjpQbHVnaW5TdHJhdGVneSB7CitjbGFzcyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBw
dWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6OkNvb2tp
ZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kgewogICAgIGZy
aWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM+OwogcHVibGlj
OgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKQEAgLTYxLDE5ICs2MCw2IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBhZGRDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6Q29va2llJikgb3ZlcnJpZGU7CiAK
LSAgICAvLyBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneQotICAgIHZvaWQgcmVmcmVzaFBsdWdpbnMo
KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSos
IFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0V2Vi
VmlzaWJsZVBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQ
bHVnaW5JbmZvPiYpIG92ZXJyaWRlOwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIHR5cGVkZWYg
SGFzaE1hcDxTdHJpbmcsIFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3k+IFBsdWdpbkxv
YWRDbGllbnRQb2xpY2llc0J5QnVuZGxlVmVyc2lvbjsKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXNCeUJ1bmRsZVZlcnNpb24+IFBsdWdpblBvbGlj
eU1hcHNCeUlkZW50aWZpZXI7Ci0KLSAgICB2b2lkIHNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3ko
V2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeSwgY29uc3QgU3RyaW5nJiBob3N0LCBjb25z
dCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZykg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGVhclBsdWdpbkNsaWVudFBvbGljaWVzKCkgb3ZlcnJpZGU7
Ci0jZW5kaWYKLQogICAgIC8vIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneQogI2lmIFBMQVRG
T1JNKElPUykKICAgICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRXZWJDb250ZW50Jikgb3ZlcnJpZGU7CkBAIC0xMDMsMjcgKzg5LDggQEAgcHJpdmF0ZToK
ICAgICBsb25nIHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAj
ZW5kaWYKIAotI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIC8vIFdlYkNvcmU6
OlBsdWdpblN0cmF0ZWd5IGltcGxlbWVudGF0aW9uLgotICAgIHZvaWQgcG9wdWxhdGVQbHVnaW5D
YWNoZShjb25zdCBXZWJDb3JlOjpQYWdlJik7Ci0gICAgYm9vbCBtX3BsdWdpbkNhY2hlSXNQb3B1
bGF0ZWQ7Ci0gICAgYm9vbCBtX3Nob3VsZFJlZnJlc2hQbHVnaW5zOwotICAgIFZlY3RvcjxXZWJD
b3JlOjpQbHVnaW5JbmZvPiBtX2NhY2hlZFBsdWdpbnM7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlBs
dWdpbkluZm8+IG1fY2FjaGVkQXBwbGljYXRpb25QbHVnaW5zOwotCi0jaWYgUExBVEZPUk0oTUFD
KQotICAgIEhhc2hNYXA8U3RyaW5nLCBQbHVnaW5Qb2xpY3lNYXBzQnlJZGVudGlmaWVyPiBtX2hv
c3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YTsKLSAgICBib29sIHBsdWdpbkxvYWRDbGllbnRQb2xp
Y3lGb3JIb3N0KGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlBsdWdpbkluZm8mLCBXZWJD
b3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5JikgY29uc3Q7Ci0gICAgU3RyaW5nIGxvbmdlc3RN
YXRjaGVkV2lsZGNhcmRIb3N0Rm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QpIGNvbnN0OwotICAg
IGJvb2wgcmVwbGFjZUhvc3RXaXRoTWF0Y2hlZFdpbGRjYXJkSG9zdChTdHJpbmcmIGhvc3QsIGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllcikgY29uc3Q7Ci0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQot
I2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogfTsKIAotI2lmIEVOQUJMRShO
RVRTQ0FQRV9QTFVHSU5fQVBJKQotdm9pZCBoYW5kbGVEaWRHZXRQbHVnaW5zKHVpbnQ2NF90IHJl
cXVlc3RJRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+JiwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlBsdWdpbkluZm8+JiBhcHBsaWNhdGlvblBsdWdpbnMpOwotI2VuZGlmIC8vIEVO
QUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2Vu
ZGlmIC8vIFdlYlBsYXRmb3JtU3RyYXRlZ2llc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcAppbmRleCBiYTJjYjljM2MxZWMzMWZmNDVhMDE1YjJjNTMxNThhZTI3NWY1
NWM3Li5hN2Q5NWNhZjViYzNhZDdlMjA0NmFjMTExMjI1MzM5ODcwZTFlMTdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNs
dWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwUHJveHkuaCIKICNpbmNsdWRl
ICJXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKKyNpbmNsdWRlICJXZWJQbHVnaW5JbmZvUHJvdmlk
ZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdl
cy5oIgpAQCAtMzk3LDcgKzM5OCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlBy
b2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgZm9y
IChhdXRvIGhvc3RJdGVyID0gcGFyYW1ldGVycy5wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMuYmVn
aW4oKTsgaG9zdEl0ZXIgIT0gcGFyYW1ldGVycy5wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMuZW5k
KCk7ICsraG9zdEl0ZXIpIHsKICAgICAgICAgZm9yIChhdXRvIGJ1bmRsZUlkZW50aWZpZXJJdGVy
ID0gaG9zdEl0ZXItPnZhbHVlLmJlZ2luKCk7IGJ1bmRsZUlkZW50aWZpZXJJdGVyICE9IGhvc3RJ
dGVyLT52YWx1ZS5lbmQoKTsgKytidW5kbGVJZGVudGlmaWVySXRlcikgewogICAgICAgICAgICAg
Zm9yIChhdXRvIHZlcnNpb25JdGVyID0gYnVuZGxlSWRlbnRpZmllckl0ZXItPnZhbHVlLmJlZ2lu
KCk7IHZlcnNpb25JdGVyICE9IGJ1bmRsZUlkZW50aWZpZXJJdGVyLT52YWx1ZS5lbmQoKTsgKyt2
ZXJzaW9uSXRlcikKLSAgICAgICAgICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGx1Z2lu
U3RyYXRlZ3koKS0+c2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShzdGF0aWNfY2FzdDxQbHVnaW5M
b2FkQ2xpZW50UG9saWN5Pih2ZXJzaW9uSXRlci0+dmFsdWUpLCBob3N0SXRlci0+a2V5LCBidW5k
bGVJZGVudGlmaWVySXRlci0+a2V5LCB2ZXJzaW9uSXRlci0+a2V5KTsKKyAgICAgICAgICAgICAg
ICBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNldFBsdWdpbkxvYWRDbGllbnRQ
b2xpY3koc3RhdGljX2Nhc3Q8UGx1Z2luTG9hZENsaWVudFBvbGljeT4odmVyc2lvbkl0ZXItPnZh
bHVlKSwgaG9zdEl0ZXItPmtleSwgYnVuZGxlSWRlbnRpZmllckl0ZXItPmtleSwgdmVyc2lvbkl0
ZXItPmtleSk7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKQEAgLTkxNSwxNCArOTE2LDE0IEBA
IHZvaWQgV2ViUHJvY2Vzczo6cGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbihjb25zdCBT
dHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0CiB2b2lkIFdlYlByb2Nlc3M6OnNldFBsdWdpbkxvYWRD
bGllbnRQb2xpY3kodWludDhfdCBwb2xpY3ksIGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgU3Ry
aW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmcpCiB7CiAj
aWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpICYmIFBMQVRGT1JNKE1BQykKLSAgICBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGx1Z2luU3RyYXRlZ3koKS0+c2V0UGx1Z2luTG9hZENsaWVudFBv
bGljeShzdGF0aWNfY2FzdDxQbHVnaW5Mb2FkQ2xpZW50UG9saWN5Pihwb2xpY3kpLCBob3N0LCBi
dW5kbGVJZGVudGlmaWVyLCB2ZXJzaW9uU3RyaW5nKTsKKyAgICBXZWJQbHVnaW5JbmZvUHJvdmlk
ZXI6OnNpbmdsZXRvbigpLnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3koc3RhdGljX2Nhc3Q8UGx1
Z2luTG9hZENsaWVudFBvbGljeT4ocG9saWN5KSwgaG9zdCwgYnVuZGxlSWRlbnRpZmllciwgdmVy
c2lvblN0cmluZyk7CiAjZW5kaWYKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpjbGVhclBsdWdpbkNs
aWVudFBvbGljaWVzKCkKIHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkgJiYgUExB
VEZPUk0oTUFDKQotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wbHVnaW5TdHJhdGVneSgpLT5j
bGVhclBsdWdpbkNsaWVudFBvbGljaWVzKCk7CisgICAgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpz
aW5nbGV0b24oKS5jbGVhclBsdWdpbkNsaWVudFBvbGljaWVzKCk7CiAjZW5kaWYKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285619</attachid>
            <date>2016-08-08 17:33:09 -0700</date>
            <delta_ts>2016-08-08 20:35:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160679-20160808173136.patch</filename>
            <type>text/plain</type>
            <size>27625</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMGJhODRkYTcxZGYzMDE3
OWIyZTJmNTI5NGIzODYzMjE5NDhjMWU4MC4uNTYyOTEzODdjNGUwNjlhMGM1OGQ5MjFhODg2MWEw
Mzk0MWQ1NzQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQxIEBACiAyMDE2LTA4LTA4ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgTW92ZSBwbHVnLWlu
IGNvZGUgZnJvbSBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgdG8gV2ViUGx1Z2luSW5mb1Byb3ZpZGVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA2NzkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3kpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OmNsZWFyUGx1Z2luQ2xpZW50UG9s
aWNpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnJlZnJlc2hQ
bHVnaW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpnZXRQbHVn
aW5JbmZvKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpnZXRXZWJW
aXNpYmxlUGx1Z2luSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkluZm9Qcm92aWRl
cjo6cG9wdWxhdGVQbHVnaW5DYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkluZm9Q
cm92aWRlcjo6cGx1Z2luTG9hZENsaWVudFBvbGljeUZvckhvc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbHVnaW5JbmZvUHJvdmlkZXI6Omxvbmdlc3RNYXRjaGVkV2lsZGNhcmRIb3N0Rm9ySG9z
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkluZm9Qcm92aWRlcjo6cmVwbGFjZUhvc3RX
aXRoTWF0Y2hlZFdpbGRjYXJkSG9zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1dl
YlBsdWdpbkluZm9Qcm92aWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjcmVhdGVQbHVnaW5TdHJhdGVneSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsYXRmb3JtU3RyYXRlZ2llczo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWZyZXNoUGx1Z2lucyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGx1Z2lu
SW5mbyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Z2V0V2ViVmlzaWJsZVBsdWdpbkluZm8pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3kpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNsZWFyUGx1Z2luQ2xpZW50
UG9saWNpZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6Omxvbmdlc3RNYXRjaGVkV2lsZGNhcmRIb3N0Rm9ySG9zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVwbGFjZUhvc3RXaXRoTWF0Y2hlZFdp
bGRjYXJkSG9zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cGx1Z2luTG9hZENsaWVudFBvbGljeUZvckhvc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnBvcHVsYXRlUGx1Z2luQ2FjaGUpOiBEZWxl
dGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzczo6Y2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcyk6CisKKzIwMTYtMDgt
MDggIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKwogICAgICAgICBBZGQg
YSBuZXcgUGx1Z2luSW5mb1Byb3ZpZGVyIGNsYXNzLCB0byByZXBsYWNlIFBsdWdpblN0cmF0ZWd5
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA2NzAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdp
bkluZm9Qcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvV2Vi
UGx1Z2luSW5mb1Byb3ZpZGVyLmNwcAppbmRleCA4ZjU2ZGRlMTBmOGFhMjk2NzllNTNiMjEyMDM3
YTA2MDU0OWM0ZTZlLi5jOTkzMjZkZjEyM2U4NTM5Zjc2YzczYzBhMzQ4Njg4NDkwNGQ3OTQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5m
b1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvV2Vi
UGx1Z2luSW5mb1Byb3ZpZGVyLmNwcApAQCAtMjYsOSArMjYsMjEgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJXZWJQbHVnaW5JbmZvUHJvdmlkZXIuaCIKIAotLy8gRklYTUU6IFdl
IHNob3VsZG4ndCBjYWxsIG91dCB0byB0aGUgcGxhdGZvcm0gc3RyYXRlZ3kgZm9yIHRoaXMuCi0j
aW5jbHVkZSAiV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9QbHVn
aW5TdHJhdGVneS5oPgorI2luY2x1ZGUgIkhhbmdEZXRlY3Rpb25EaXNhYmxlci5oIgorI2luY2x1
ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNp
bmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRG9j
dW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9NYWluRnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TdWJmcmFtZUxv
YWRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworI2lmIFBMQVRGT1JN
KE1BQykKKyNpbmNsdWRlICJTdHJpbmdVdGlsaXRpZXMuaCIKKyNlbmRpZgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIApAQCAtNDcsMzAgKzU5LDE5MCBAQCBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6On5X
ZWJQbHVnaW5JbmZvUHJvdmlkZXIoKQogewogfQogCisjaWYgUExBVEZPUk0oTUFDKQordm9pZCBX
ZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3koV2ViQ29yZTo6
UGx1Z2luTG9hZENsaWVudFBvbGljeSBjbGllbnRQb2xpY3ksIGNvbnN0IFN0cmluZyYgaG9zdCwg
Y29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJp
bmcpCit7CisgICAgU3RyaW5nIGhvc3RUb1NldCA9IGhvc3QuaXNOdWxsKCkgfHwgIWhvc3QubGVu
Z3RoKCkgPyAiKiIgOiBob3N0OworICAgIFN0cmluZyBidW5kbGVJZGVudGlmaWVyVG9TZXQgPSBi
dW5kbGVJZGVudGlmaWVyLmlzTnVsbCgpIHx8ICFidW5kbGVJZGVudGlmaWVyLmxlbmd0aCgpID8g
IioiIDogYnVuZGxlSWRlbnRpZmllcjsKKyAgICBTdHJpbmcgdmVyc2lvblN0cmluZ1RvU2V0ID0g
dmVyc2lvblN0cmluZy5pc051bGwoKSB8fCAhdmVyc2lvblN0cmluZy5sZW5ndGgoKSA/ICIqIiA6
IHZlcnNpb25TdHJpbmc7CisKKyAgICBQbHVnaW5Qb2xpY3lNYXBzQnlJZGVudGlmaWVyIHBvbGlj
aWVzQnlJZGVudGlmaWVyOworICAgIGlmIChtX2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YS5j
b250YWlucyhob3N0VG9TZXQpKQorICAgICAgICBwb2xpY2llc0J5SWRlbnRpZmllciA9IG1faG9z
dHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLmdldChob3N0VG9TZXQpOworCisgICAgUGx1Z2luTG9h
ZENsaWVudFBvbGljaWVzQnlCdW5kbGVWZXJzaW9uIHZlcnNpb25zVG9Qb2xpY2llczsKKyAgICBp
ZiAocG9saWNpZXNCeUlkZW50aWZpZXIuY29udGFpbnMoYnVuZGxlSWRlbnRpZmllclRvU2V0KSkK
KyAgICAgICAgdmVyc2lvbnNUb1BvbGljaWVzID0gcG9saWNpZXNCeUlkZW50aWZpZXIuZ2V0KGJ1
bmRsZUlkZW50aWZpZXJUb1NldCk7CisKKyAgICB2ZXJzaW9uc1RvUG9saWNpZXMuc2V0KHZlcnNp
b25TdHJpbmdUb1NldCwgY2xpZW50UG9saWN5KTsKKyAgICBwb2xpY2llc0J5SWRlbnRpZmllci5z
ZXQoYnVuZGxlSWRlbnRpZmllclRvU2V0LCB2ZXJzaW9uc1RvUG9saWNpZXMpOworICAgIG1faG9z
dHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLnNldChob3N0VG9TZXQsIHBvbGljaWVzQnlJZGVudGlm
aWVyKTsKK30KKwordm9pZCBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OmNsZWFyUGx1Z2luQ2xpZW50
UG9saWNpZXMoKQoreworICAgIG1faG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLmNsZWFyKCk7
Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnJlZnJlc2hQbHVnaW5z
KCkKIHsKLSAgICBXZWJDb3JlOjpwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGx1Z2luU3RyYXRlZ3ko
KS0+cmVmcmVzaFBsdWdpbnMoKTsKKyNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKyAg
ICBtX2NhY2hlZFBsdWdpbnMuY2xlYXIoKTsKKyAgICBtX3BsdWdpbkNhY2hlSXNQb3B1bGF0ZWQg
PSBmYWxzZTsKKyAgICBtX3Nob3VsZFJlZnJlc2hQbHVnaW5zID0gdHJ1ZTsKKyNlbmRpZgogfQog
CiB2b2lkIFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6Z2V0UGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdl
JiBwYWdlLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mIHBsdWdpbnMpCiB7Ci0gICAgV2Vi
Q29yZTo6cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBsdWdpblN0cmF0ZWd5KCktPmdldFBsdWdpbklu
Zm8oJnBhZ2UsIHBsdWdpbnMpOworI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQorICAg
IHBvcHVsYXRlUGx1Z2luQ2FjaGUocGFnZSk7CisKKyAgICBpZiAocGFnZS5tYWluRnJhbWUoKS5s
b2FkZXIoKS5zdWJmcmFtZUxvYWRlcigpLmFsbG93UGx1Z2lucygpKSB7CisgICAgICAgIHBsdWdp
bnMgPSBtX2NhY2hlZFBsdWdpbnM7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBwbHVn
aW5zID0gbV9jYWNoZWRBcHBsaWNhdGlvblBsdWdpbnM7CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShwYWdlKTsKKyAgICBVTlVTRURfUEFSQU0ocGx1Z2lucyk7CisjZW5kaWYgLy8gRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9BUEkpCiB9CiAKIHZvaWQgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpnZXRX
ZWJWaXNpYmxlUGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiBwYWdlLCBWZWN0b3I8V2ViQ29yZTo6
UGx1Z2luSW5mbz4mIHBsdWdpbnMpCiB7Ci0gICAgV2ViQ29yZTo6cGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBsdWdpblN0cmF0ZWd5KCktPmdldFdlYlZpc2libGVQbHVnaW5JbmZvKCZwYWdlLCBwbHVn
aW5zKTsKKyAgICBBU1NFUlRfQVJHKHBsdWdpbnMsIHBsdWdpbnMuaXNFbXB0eSgpKTsKKworICAg
IGdldFBsdWdpbkluZm8ocGFnZSwgcGx1Z2lucyk7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAg
aWYgKGF1dG8qIGRvY3VtZW50ID0gcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudCgpKSB7CisgICAg
ICAgIGlmIChhdXRvKiBzZWN1cml0eU9yaWdpbiA9IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigp
KSB7CisgICAgICAgICAgICBpZiAoc2VjdXJpdHlPcmlnaW4tPmlzTG9jYWwoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKGludDMyX3QgaSA9
IHBsdWdpbnMuc2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgYXV0byYgaW5mbyA9
IHBsdWdpbnMuYXQoaSk7CisKKyAgICAgICAgLy8gQWxsb3cgYnVpbHQtaW4gcGx1Z2lucy4gQWxz
byB0ZW50YXRpdmVseSBhbGxvdyBwbHVnaW5zIHRoYXQgdGhlIGNsaWVudCBtaWdodCBsYXRlciBz
ZWxlY3RpdmVseSBwZXJtaXQuCisgICAgICAgIGlmIChpbmZvLmlzQXBwbGljYXRpb25QbHVnaW4g
fHwgaW5mby5jbGllbnRMb2FkUG9saWN5ID09IFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xp
Y3lBc2spCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoaW5mby5jbGllbnRM
b2FkUG9saWN5ID09IFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3lCbG9jaykKKyAgICAg
ICAgICAgIHBsdWdpbnMucmVtb3ZlKGkpOworICAgIH0KKyNlbmRpZgorfQorCisjaWYgRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpCit2b2lkIFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6cG9wdWxh
dGVQbHVnaW5DYWNoZShjb25zdCBXZWJDb3JlOjpQYWdlJiBwYWdlKQoreworICAgIGlmICghbV9w
bHVnaW5DYWNoZUlzUG9wdWxhdGVkKSB7CisgICAgICAgIEhhbmdEZXRlY3Rpb25EaXNhYmxlciBo
YW5nRGV0ZWN0aW9uRGlzYWJsZXI7CisKKyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUHJv
Y2Vzc1Byb3h5OjpHZXRQbHVnaW5zKG1fc2hvdWxkUmVmcmVzaFBsdWdpbnMpLCBNZXNzYWdlczo6
V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5zOjpSZXBseShtX2NhY2hlZFBsdWdpbnMsIG1fY2Fj
aGVkQXBwbGljYXRpb25QbHVnaW5zKSwgMCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgbV9zaG91bGRSZWZyZXNoUGx1Z2lucyA9IGZhbHNlOworICAgICAgICBtX3BsdWdpbkNhY2hl
SXNQb3B1bGF0ZWQgPSB0cnVlOworICAgIH0KKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBTdHJp
bmcgcGFnZUhvc3QgPSBwYWdlLm1haW5GcmFtZSgpLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkt
PnJlc3BvbnNlVVJMKCkuaG9zdCgpOworICAgIGZvciAoYXV0byYgaW5mbyA6IG1fY2FjaGVkUGx1
Z2lucykgeworICAgICAgICBpZiAoYXV0byBjbGllbnRQb2xpY3kgPSBwbHVnaW5Mb2FkQ2xpZW50
UG9saWN5Rm9ySG9zdChwYWdlSG9zdCwgaW5mbykpCisgICAgICAgICAgICBpbmZvLmNsaWVudExv
YWRQb2xpY3kgPSAqY2xpZW50UG9saWN5OworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFN
KHBhZ2UpOworI2VuZGlmIC8vIG5vdCBQTEFURk9STShNQUMpCiB9CisjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKE1BQykKLXZvaWQgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpzZXRQbHVnaW5Mb2FkQ2xp
ZW50UG9saWN5KFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3kgcGx1Z2luTG9hZENsaWVu
dFBvbGljeSwgY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZykKK09wdGlvbmFsPFdlYkNvcmU6OlBsdWdp
bkxvYWRDbGllbnRQb2xpY3k+IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6cGx1Z2luTG9hZENsaWVu
dFBvbGljeUZvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBXZWJDb3JlOjpQbHVnaW5J
bmZvJiBpbmZvKSBjb25zdAoreworICAgIFN0cmluZyBob3N0VG9Mb29rVXAgPSBob3N0OworICAg
IFN0cmluZyBpZGVudGlmaWVyID0gaW5mby5idW5kbGVJZGVudGlmaWVyOworCisgICAgYXV0byBw
b2xpY2llc0J5SWRlbnRpZmllckl0ZXJhdG9yID0gbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRh
dGEuZmluZChob3N0VG9Mb29rVXApOworCisgICAgaWYgKCFpZGVudGlmaWVyLmlzTnVsbCgpICYm
IHBvbGljaWVzQnlJZGVudGlmaWVySXRlcmF0b3IgPT0gbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmll
ckRhdGEuZW5kKCkpIHsKKyAgICAgICAgaWYgKCFyZXBsYWNlSG9zdFdpdGhNYXRjaGVkV2lsZGNh
cmRIb3N0KGhvc3RUb0xvb2tVcCwgaWRlbnRpZmllcikpCisgICAgICAgICAgICBob3N0VG9Mb29r
VXAgPSAiKiI7CisgICAgICAgIHBvbGljaWVzQnlJZGVudGlmaWVySXRlcmF0b3IgPSBtX2hvc3Rz
VG9QbHVnaW5JZGVudGlmaWVyRGF0YS5maW5kKGhvc3RUb0xvb2tVcCk7CisgICAgICAgIGlmICho
b3N0VG9Mb29rVXAgIT0gIioiICYmIHBvbGljaWVzQnlJZGVudGlmaWVySXRlcmF0b3IgPT0gbV9o
b3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEuZW5kKCkpIHsKKyAgICAgICAgICAgIGhvc3RUb0xv
b2tVcCA9ICIqIjsKKyAgICAgICAgICAgIHBvbGljaWVzQnlJZGVudGlmaWVySXRlcmF0b3IgPSBt
X2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YS5maW5kKGhvc3RUb0xvb2tVcCk7CisgICAgICAg
IH0KKyAgICB9CisgICAgaWYgKHBvbGljaWVzQnlJZGVudGlmaWVySXRlcmF0b3IgPT0gbV9ob3N0
c1RvUGx1Z2luSWRlbnRpZmllckRhdGEuZW5kKCkpCisgICAgICAgIHJldHVybiBOdWxsb3B0Owor
CisgICAgYXV0byYgcG9saWNpZXNCeUlkZW50aWZpZXIgPSBwb2xpY2llc0J5SWRlbnRpZmllckl0
ZXJhdG9yLT52YWx1ZTsKKworICAgIGlmICghaWRlbnRpZmllcikKKyAgICAgICAgaWRlbnRpZmll
ciA9ICIqIjsKKworICAgIGF1dG8gaWRlbnRpZmllclBvbGljeUl0ZXJhdG9yID0gcG9saWNpZXNC
eUlkZW50aWZpZXIuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaWRlbnRpZmllciAhPSAiKiIg
JiYgaWRlbnRpZmllclBvbGljeUl0ZXJhdG9yID09IHBvbGljaWVzQnlJZGVudGlmaWVyLmVuZCgp
KSB7CisgICAgICAgIGlkZW50aWZpZXIgPSAiKiI7CisgICAgICAgIGlkZW50aWZpZXJQb2xpY3lJ
dGVyYXRvciA9IHBvbGljaWVzQnlJZGVudGlmaWVyLmZpbmQoaWRlbnRpZmllcik7CisgICAgfQor
CisgICAgaWYgKGlkZW50aWZpZXJQb2xpY3lJdGVyYXRvciA9PSBwb2xpY2llc0J5SWRlbnRpZmll
ci5lbmQoKSkKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisKKyAgICBhdXRvJiB2ZXJzaW9uc1Rv
UG9saWNpZXMgPSBpZGVudGlmaWVyUG9saWN5SXRlcmF0b3ItPnZhbHVlOworCisgICAgU3RyaW5n
IHZlcnNpb24gPSBpbmZvLnZlcnNpb25TdHJpbmc7CisgICAgaWYgKCF2ZXJzaW9uKQorICAgICAg
ICB2ZXJzaW9uID0gIioiOworICAgIGF1dG8gcG9saWN5SXRlcmF0b3IgPSB2ZXJzaW9uc1RvUG9s
aWNpZXMuZmluZCh2ZXJzaW9uKTsKKyAgICBpZiAodmVyc2lvbiAhPSAiKiIgJiYgcG9saWN5SXRl
cmF0b3IgPT0gdmVyc2lvbnNUb1BvbGljaWVzLmVuZCgpKSB7CisgICAgICAgIHZlcnNpb24gPSAi
KiI7CisgICAgICAgIHBvbGljeUl0ZXJhdG9yID0gdmVyc2lvbnNUb1BvbGljaWVzLmZpbmQodmVy
c2lvbik7CisgICAgfQorCisgICAgaWYgKHBvbGljeUl0ZXJhdG9yID09IHZlcnNpb25zVG9Qb2xp
Y2llcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisKKyAgICByZXR1cm4gcG9saWN5
SXRlcmF0b3ItPnZhbHVlOworfQorCitTdHJpbmcgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpsb25n
ZXN0TWF0Y2hlZFdpbGRjYXJkSG9zdEZvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0KSBjb25zdAog
ewotICAgIFdlYkNvcmU6OnBsYXRmb3JtU3RyYXRlZ2llcygpLT5wbHVnaW5TdHJhdGVneSgpLT5z
ZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KHBsdWdpbkxvYWRDbGllbnRQb2xpY3ksIGhvc3QsIGJ1
bmRsZUlkZW50aWZpZXIsIHZlcnNpb25TdHJpbmcpOworICAgIFN0cmluZyBsb25nZXN0TWF0Y2hl
ZEhvc3Q7CisKKyAgICBmb3IgKGF1dG8mIGtleSA6IG1faG9zdHNUb1BsdWdpbklkZW50aWZpZXJE
YXRhLmtleXMoKSkgeworICAgICAgICBpZiAoa2V5LmNvbnRhaW5zKCcqJykgJiYga2V5ICE9ICIq
IiAmJiBzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoaG9zdCwga2V5KSkgeworICAgICAgICAg
ICAgaWYgKGtleS5sZW5ndGgoKSA+IGxvbmdlc3RNYXRjaGVkSG9zdC5sZW5ndGgoKSkKKyAgICAg
ICAgICAgICAgICBsb25nZXN0TWF0Y2hlZEhvc3QgPSBrZXk7CisgICAgICAgICAgICBlbHNlIGlm
IChrZXkubGVuZ3RoKCkgPT0gbG9uZ2VzdE1hdGNoZWRIb3N0Lmxlbmd0aCgpICYmIGNvZGVQb2lu
dENvbXBhcmVMZXNzVGhhbihrZXksIGxvbmdlc3RNYXRjaGVkSG9zdCkpCisgICAgICAgICAgICAg
ICAgbG9uZ2VzdE1hdGNoZWRIb3N0ID0ga2V5OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0
dXJuIGxvbmdlc3RNYXRjaGVkSG9zdDsKIH0KIAotdm9pZCBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6
OmNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKQorYm9vbCBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6
OnJlcGxhY2VIb3N0V2l0aE1hdGNoZWRXaWxkY2FyZEhvc3QoU3RyaW5nJiBob3N0LCBjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIpIGNvbnN0CiB7Ci0gICAgV2ViQ29yZTo6cGxhdGZvcm1TdHJhdGVn
aWVzKCktPnBsdWdpblN0cmF0ZWd5KCktPmNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKTsKKyAg
ICBTdHJpbmcgbWF0Y2hlZFdpbGRjYXJkSG9zdCA9IGxvbmdlc3RNYXRjaGVkV2lsZGNhcmRIb3N0
Rm9ySG9zdChob3N0KTsKKworICAgIGlmIChtYXRjaGVkV2lsZGNhcmRIb3N0LmlzTnVsbCgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIHBsdWdJbklkZW50aWZpZXJEYXRhID0g
bV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEuZmluZChtYXRjaGVkV2lsZGNhcmRIb3N0KTsK
KyAgICBpZiAocGx1Z0luSWRlbnRpZmllckRhdGEgPT0gbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmll
ckRhdGEuZW5kKCkgfHwgIXBsdWdJbklkZW50aWZpZXJEYXRhLT52YWx1ZS5jb250YWlucyhpZGVu
dGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaG9zdCA9IG1hdGNoZWRXaWxk
Y2FyZEhvc3Q7CisgICAgcmV0dXJuIHRydWU7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5o
CmluZGV4IDc5YzBkZWQwY2YyYzViNzg0ZjZmYjE1YjNhNGU5Mzg4MzBlZGEzMmIuLjllNDhhNjk4
YjVkNmUyNGNhNzNmMTcyZTVjNDA2YTE4ODcwOTFiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKQEAg
LTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5J
bmZvUHJvdmlkZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIApAQCAtMzYsMTYgKzM3LDM4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViUGx1Z2lu
SW5mb1Byb3ZpZGVyJiBzaW5nbGV0b24oKTsKICAgICB2aXJ0dWFsIH5XZWJQbHVnaW5JbmZvUHJv
dmlkZXIoKTsKIAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICB2b2lkIHNldFBsdWdpbkxvYWRDbGll
bnRQb2xpY3koV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeSwgY29uc3QgU3RyaW5nJiBo
b3N0LCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdmVyc2lv
blN0cmluZykgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGVhclBsdWdpbkNsaWVudFBvbGljaWVzKCkg
b3ZlcnJpZGU7CisjZW5kaWYKKwogcHJpdmF0ZToKKyAgICBXZWJQbHVnaW5JbmZvUHJvdmlkZXIo
KTsKKwogICAgIHZvaWQgcmVmcmVzaFBsdWdpbnMoKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBs
dWdpbkluZm8oV2ViQ29yZTo6UGFnZSYsIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgZ2V0V2ViVmlzaWJsZVBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYs
IFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpIG92ZXJyaWRlOworCisjaWYgRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9BUEkpCisgICAgdm9pZCBwb3B1bGF0ZVBsdWdpbkNhY2hlKGNvbnN0IFdl
YkNvcmU6OlBhZ2UmKTsKKyNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKwog
I2lmIFBMQVRGT1JNKE1BQykKLSAgICB2b2lkIHNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3koV2Vi
Q29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeSwgY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBT
dHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZykgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBjbGVhclBsdWdpbkNsaWVudFBvbGljaWVzKCkgb3ZlcnJpZGU7Cisg
ICAgT3B0aW9uYWw8V2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeT4gcGx1Z2luTG9hZENs
aWVudFBvbGljeUZvckhvc3QoY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6UGx1Z2luSW5m
byYpIGNvbnN0OworICAgIFN0cmluZyBsb25nZXN0TWF0Y2hlZFdpbGRjYXJkSG9zdEZvckhvc3Qo
Y29uc3QgU3RyaW5nJiBob3N0KSBjb25zdDsKKyAgICBib29sIHJlcGxhY2VIb3N0V2l0aE1hdGNo
ZWRXaWxkY2FyZEhvc3QoU3RyaW5nJiBob3N0LCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpIGNv
bnN0OworCisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgV2ViQ29yZTo6UGx1Z2luTG9hZENs
aWVudFBvbGljeT4gUGx1Z2luTG9hZENsaWVudFBvbGljaWVzQnlCdW5kbGVWZXJzaW9uOworICAg
IHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFBsdWdpbkxvYWRDbGllbnRQb2xpY2llc0J5QnVuZGxl
VmVyc2lvbj4gUGx1Z2luUG9saWN5TWFwc0J5SWRlbnRpZmllcjsKKyAgICBIYXNoTWFwPFN0cmlu
ZywgUGx1Z2luUG9saWN5TWFwc0J5SWRlbnRpZmllcj4gbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmll
ckRhdGE7CiAjZW5kaWYKIAotICAgIFdlYlBsdWdpbkluZm9Qcm92aWRlcigpOworI2lmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQorICAgIGJvb2wgbV9wbHVnaW5DYWNoZUlzUG9wdWxhdGVk
IHsgZmFsc2UgfTsKKyAgICBib29sIG1fc2hvdWxkUmVmcmVzaFBsdWdpbnMgeyBmYWxzZSB9Owor
ICAgIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBtX2NhY2hlZFBsdWdpbnM7CisgICAgVmVj
dG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IG1fY2FjaGVkQXBwbGljYXRpb25QbHVnaW5zOworI2Vu
ZGlmCiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggOTRl
OWMxNmJmYjZhOTRjMTNiMDgzZjg3NzVmNTc1ZDhlOTA2NjMxZS4uOWM4OGI1ZjFhMWRiODZlMTZj
ODNkNTkxNzZjYTRhMWE0YzU4NGMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcApAQCAtODAsMTAgKzgwLDYgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluaXRp
YWxpemUoKQogfQogCiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OldlYlBsYXRmb3JtU3RyYXRlZ2ll
cygpCi0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgOiBtX3BsdWdpbkNhY2hl
SXNQb3B1bGF0ZWQoZmFsc2UpCi0gICAgLCBtX3Nob3VsZFJlZnJlc2hQbHVnaW5zKGZhbHNlKQot
I2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogewogfQogCkBAIC0xMDQsNyAr
MTAwLDcgQEAgUGFzdGVib2FyZFN0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0
ZVBhc3RlYm9hcmRTdHJhdGVneSgpCiAKIFBsdWdpblN0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNyZWF0ZVBsdWdpblN0cmF0ZWd5KCkKIHsKLSAgICByZXR1cm4gdGhpczsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAogQmxvYlJlZ2lzdHJ5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNyZWF0ZUJsb2JSZWdpc3RyeSgpCkBAIC0xNjUsMjAwICsxNjEsNiBAQCB2b2lkIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6YWRkQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29ucwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpBZGRDb29raWUoU2Vzc2lvblRyYWNrZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgdXJsLCBj
b29raWUpLCAwKTsKIH0KIAotLy8gUGx1Z2luU3RyYXRlZ3kKLQotdm9pZCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnJlZnJlc2hQbHVnaW5zKCkKLXsKLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKLSAgICBtX2NhY2hlZFBsdWdpbnMuY2xlYXIoKTsKLSAgICBtX3BsdWdpbkNhY2hlSXNQ
b3B1bGF0ZWQgPSBmYWxzZTsKLSAgICBtX3Nob3VsZFJlZnJlc2hQbHVnaW5zID0gdHJ1ZTsKLSNl
bmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLX0KLQotdm9pZCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSogcGFnZSwgVmVj
dG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+JiBwbHVnaW5zKQotewotI2lmIEVOQUJMRShORVRTQ0FQ
RV9QTFVHSU5fQVBJKQotICAgIEFTU0VSVF9BUkcocGFnZSwgcGFnZSk7Ci0gICAgcG9wdWxhdGVQ
bHVnaW5DYWNoZSgqcGFnZSk7Ci0KLSAgICBpZiAocGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCku
c3ViZnJhbWVMb2FkZXIoKS5hbGxvd1BsdWdpbnMoKSkgewotICAgICAgICBwbHVnaW5zID0gbV9j
YWNoZWRQbHVnaW5zOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcGx1Z2lucyA9IG1f
Y2FjaGVkQXBwbGljYXRpb25QbHVnaW5zOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocGFnZSk7
Ci0gICAgVU5VU0VEX1BBUkFNKHBsdWdpbnMpOwotI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9Q
TFVHSU5fQVBJKQotfQotCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0V2ViVmlzaWJs
ZVBsdWdpbkluZm8oY29uc3QgUGFnZSogcGFnZSwgVmVjdG9yPFBsdWdpbkluZm8+JiBwbHVnaW5z
KQotewotICAgIEFTU0VSVF9BUkcocGFnZSwgcGFnZSk7Ci0gICAgQVNTRVJUX0FSRyhwbHVnaW5z
LCBwbHVnaW5zLmlzRW1wdHkoKSk7Ci0KLSAgICBnZXRQbHVnaW5JbmZvKHBhZ2UsIHBsdWdpbnMp
OwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBwYWdl
LT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKSB7Ci0gICAgICAgIGlmIChTZWN1cml0eU9yaWdpbiog
c2VjdXJpdHlPcmlnaW4gPSBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkgewotICAgICAgICAg
ICAgaWYgKHNlY3VyaXR5T3JpZ2luLT5pc0xvY2FsKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIGZvciAoaW50MzJfdCBpID0gcGx1Z2lucy5z
aXplKCkgLSAxOyBpID49IDA7IC0taSkgewotICAgICAgICBQbHVnaW5JbmZvJiBpbmZvID0gcGx1
Z2lucy5hdChpKTsKLSAgICAgICAgUGx1Z2luTG9hZENsaWVudFBvbGljeSBjbGllbnRQb2xpY3kg
PSBpbmZvLmNsaWVudExvYWRQb2xpY3k7Ci0gICAgICAgIC8vIEFsbG93IGJ1aWx0LWluIHBsdWdp
bnMuIEFsc28gdGVudGF0aXZlbHkgYWxsb3cgcGx1Z2lucyB0aGF0IHRoZSBjbGllbnQgbWlnaHQg
bGF0ZXIgc2VsZWN0aXZlbHkgcGVybWl0LgotICAgICAgICBpZiAoaW5mby5pc0FwcGxpY2F0aW9u
UGx1Z2luIHx8IGNsaWVudFBvbGljeSA9PSBQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QXNrKQotICAg
ICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKGNsaWVudFBvbGljeSA9PSBQbHVnaW5M
b2FkQ2xpZW50UG9saWN5QmxvY2spCi0gICAgICAgICAgICBwbHVnaW5zLnJlbW92ZShpKTsKLSAg
ICB9Ci0jZW5kaWYKLX0KLQotI2lmIFBMQVRGT1JNKE1BQykKLXZvaWQgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KFBsdWdpbkxvYWRDbGllbnRQb2xpY3kg
Y2xpZW50UG9saWN5LCBjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uU3RyaW5nKQotewotICAgIFN0cmluZyBob3N0
VG9TZXQgPSBob3N0LmlzTnVsbCgpIHx8ICFob3N0Lmxlbmd0aCgpID8gIioiIDogaG9zdDsKLSAg
ICBTdHJpbmcgYnVuZGxlSWRlbnRpZmllclRvU2V0ID0gYnVuZGxlSWRlbnRpZmllci5pc051bGwo
KSB8fCAhYnVuZGxlSWRlbnRpZmllci5sZW5ndGgoKSA/ICIqIiA6IGJ1bmRsZUlkZW50aWZpZXI7
Ci0gICAgU3RyaW5nIHZlcnNpb25TdHJpbmdUb1NldCA9IHZlcnNpb25TdHJpbmcuaXNOdWxsKCkg
fHwgIXZlcnNpb25TdHJpbmcubGVuZ3RoKCkgPyAiKiIgOiB2ZXJzaW9uU3RyaW5nOwotCi0gICAg
UGx1Z2luUG9saWN5TWFwc0J5SWRlbnRpZmllciBwb2xpY2llc0J5SWRlbnRpZmllcjsKLSAgICBp
ZiAobV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEuY29udGFpbnMoaG9zdFRvU2V0KSkKLSAg
ICAgICAgcG9saWNpZXNCeUlkZW50aWZpZXIgPSBtX2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0
YS5nZXQoaG9zdFRvU2V0KTsKLQotICAgIFBsdWdpbkxvYWRDbGllbnRQb2xpY2llc0J5QnVuZGxl
VmVyc2lvbiB2ZXJzaW9uc1RvUG9saWNpZXM7Ci0gICAgaWYgKHBvbGljaWVzQnlJZGVudGlmaWVy
LmNvbnRhaW5zKGJ1bmRsZUlkZW50aWZpZXJUb1NldCkpCi0gICAgICAgIHZlcnNpb25zVG9Qb2xp
Y2llcyA9IHBvbGljaWVzQnlJZGVudGlmaWVyLmdldChidW5kbGVJZGVudGlmaWVyVG9TZXQpOwot
Ci0gICAgdmVyc2lvbnNUb1BvbGljaWVzLnNldCh2ZXJzaW9uU3RyaW5nVG9TZXQsIGNsaWVudFBv
bGljeSk7Ci0gICAgcG9saWNpZXNCeUlkZW50aWZpZXIuc2V0KGJ1bmRsZUlkZW50aWZpZXJUb1Nl
dCwgdmVyc2lvbnNUb1BvbGljaWVzKTsKLSAgICBtX2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0
YS5zZXQoaG9zdFRvU2V0LCBwb2xpY2llc0J5SWRlbnRpZmllcik7Ci19Ci0KLXZvaWQgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjbGVhclBsdWdpbkNsaWVudFBvbGljaWVzKCkKLXsKLSAgICBtX2hv
c3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YS5jbGVhcigpOwotfQotCi0jZW5kaWYKLQotI2lmIEVO
QUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotI2lmIFBMQVRGT1JNKE1BQykKLQotU3RyaW5nIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6bG9uZ2VzdE1hdGNoZWRXaWxkY2FyZEhvc3RGb3JIb3N0KGNv
bnN0IFN0cmluZyYgaG9zdCkgY29uc3QKLXsKLSAgICBTdHJpbmcgbG9uZ2VzdE1hdGNoZWRIb3N0
OwotCi0gICAgZm9yIChhdXRvJiBrZXkgOiBtX2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YS5r
ZXlzKCkpIHsKLSAgICAgICAgaWYgKGtleS5jb250YWlucygnKicpICYmIGtleSAhPSAiKiIgJiYg
c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKGhvc3QsIGtleSkpIHsKLSAgICAgICAgICAgIGlm
IChrZXkubGVuZ3RoKCkgPiBsb25nZXN0TWF0Y2hlZEhvc3QubGVuZ3RoKCkpCi0gICAgICAgICAg
ICAgICAgbG9uZ2VzdE1hdGNoZWRIb3N0ID0ga2V5OwotICAgICAgICAgICAgZWxzZSBpZiAoa2V5
Lmxlbmd0aCgpID09IGxvbmdlc3RNYXRjaGVkSG9zdC5sZW5ndGgoKSAmJiBjb2RlUG9pbnRDb21w
YXJlTGVzc1RoYW4oa2V5LCBsb25nZXN0TWF0Y2hlZEhvc3QpKQotICAgICAgICAgICAgICAgIGxv
bmdlc3RNYXRjaGVkSG9zdCA9IGtleTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBs
b25nZXN0TWF0Y2hlZEhvc3Q7Ci19Ci0KLWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZXBs
YWNlSG9zdFdpdGhNYXRjaGVkV2lsZGNhcmRIb3N0KFN0cmluZyYgaG9zdCwgY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyKSBjb25zdAotewotICAgIFN0cmluZyBtYXRjaGVkV2lsZGNhcmRIb3N0ID0g
bG9uZ2VzdE1hdGNoZWRXaWxkY2FyZEhvc3RGb3JIb3N0KGhvc3QpOwotCi0gICAgaWYgKG1hdGNo
ZWRXaWxkY2FyZEhvc3QuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1
dG8gcGx1Z0luSWRlbnRpZmllckRhdGEgPSBtX2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YS5m
aW5kKG1hdGNoZWRXaWxkY2FyZEhvc3QpOwotICAgIGlmIChwbHVnSW5JZGVudGlmaWVyRGF0YSA9
PSBtX2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YS5lbmQoKSB8fCAhcGx1Z0luSWRlbnRpZmll
ckRhdGEtPnZhbHVlLmNvbnRhaW5zKGlkZW50aWZpZXIpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBob3N0ID0gbWF0Y2hlZFdpbGRjYXJkSG9zdDsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnBsdWdpbkxvYWRDbGllbnRQb2xpY3lGb3JI
b3N0KGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgUGx1Z2luSW5mbyYgaW5mbywgUGx1Z2luTG9h
ZENsaWVudFBvbGljeSYgcG9saWN5KSBjb25zdAotewotICAgIFN0cmluZyBob3N0VG9Mb29rVXAg
PSBob3N0OwotICAgIFN0cmluZyBpZGVudGlmaWVyID0gaW5mby5idW5kbGVJZGVudGlmaWVyOwot
Ci0gICAgYXV0byBwb2xpY2llc0J5SWRlbnRpZmllckl0ZXJhdG9yID0gbV9ob3N0c1RvUGx1Z2lu
SWRlbnRpZmllckRhdGEuZmluZChob3N0VG9Mb29rVXApOwotCi0gICAgaWYgKCFpZGVudGlmaWVy
LmlzTnVsbCgpICYmIHBvbGljaWVzQnlJZGVudGlmaWVySXRlcmF0b3IgPT0gbV9ob3N0c1RvUGx1
Z2luSWRlbnRpZmllckRhdGEuZW5kKCkpIHsKLSAgICAgICAgaWYgKCFyZXBsYWNlSG9zdFdpdGhN
YXRjaGVkV2lsZGNhcmRIb3N0KGhvc3RUb0xvb2tVcCwgaWRlbnRpZmllcikpCi0gICAgICAgICAg
ICBob3N0VG9Mb29rVXAgPSAiKiI7Ci0gICAgICAgIHBvbGljaWVzQnlJZGVudGlmaWVySXRlcmF0
b3IgPSBtX2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YS5maW5kKGhvc3RUb0xvb2tVcCk7Ci0g
ICAgICAgIGlmIChob3N0VG9Mb29rVXAgIT0gIioiICYmIHBvbGljaWVzQnlJZGVudGlmaWVySXRl
cmF0b3IgPT0gbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEuZW5kKCkpIHsKLSAgICAgICAg
ICAgIGhvc3RUb0xvb2tVcCA9ICIqIjsKLSAgICAgICAgICAgIHBvbGljaWVzQnlJZGVudGlmaWVy
SXRlcmF0b3IgPSBtX2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YS5maW5kKGhvc3RUb0xvb2tV
cCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKHBvbGljaWVzQnlJZGVudGlmaWVySXRlcmF0
b3IgPT0gbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEuZW5kKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGF1dG8mIHBvbGljaWVzQnlJZGVudGlmaWVyID0gcG9saWNpZXNCeUlk
ZW50aWZpZXJJdGVyYXRvci0+dmFsdWU7Ci0KLSAgICBpZiAoIWlkZW50aWZpZXIpCi0gICAgICAg
IGlkZW50aWZpZXIgPSAiKiI7Ci0KLSAgICBhdXRvIGlkZW50aWZpZXJQb2xpY3lJdGVyYXRvciA9
IHBvbGljaWVzQnlJZGVudGlmaWVyLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGlkZW50aWZp
ZXIgIT0gIioiICYmIGlkZW50aWZpZXJQb2xpY3lJdGVyYXRvciA9PSBwb2xpY2llc0J5SWRlbnRp
Zmllci5lbmQoKSkgewotICAgICAgICBpZGVudGlmaWVyID0gIioiOwotICAgICAgICBpZGVudGlm
aWVyUG9saWN5SXRlcmF0b3IgPSBwb2xpY2llc0J5SWRlbnRpZmllci5maW5kKGlkZW50aWZpZXIp
OwotICAgIH0KLSAgICBpZiAoaWRlbnRpZmllclBvbGljeUl0ZXJhdG9yID09IHBvbGljaWVzQnlJ
ZGVudGlmaWVyLmVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvJiB2ZXJz
aW9uc1RvUG9saWNpZXMgPSBpZGVudGlmaWVyUG9saWN5SXRlcmF0b3ItPnZhbHVlOwotCi0gICAg
U3RyaW5nIHZlcnNpb24gPSBpbmZvLnZlcnNpb25TdHJpbmc7Ci0gICAgaWYgKCF2ZXJzaW9uKQot
ICAgICAgICB2ZXJzaW9uID0gIioiOwotICAgIGF1dG8gcG9saWN5SXRlcmF0b3IgPSB2ZXJzaW9u
c1RvUG9saWNpZXMuZmluZCh2ZXJzaW9uKTsKLSAgICBpZiAodmVyc2lvbiAhPSAiKiIgJiYgcG9s
aWN5SXRlcmF0b3IgPT0gdmVyc2lvbnNUb1BvbGljaWVzLmVuZCgpKSB7Ci0gICAgICAgIHZlcnNp
b24gPSAiKiI7Ci0gICAgICAgIHBvbGljeUl0ZXJhdG9yID0gdmVyc2lvbnNUb1BvbGljaWVzLmZp
bmQodmVyc2lvbik7Ci0gICAgfQotCi0gICAgaWYgKHBvbGljeUl0ZXJhdG9yID09IHZlcnNpb25z
VG9Qb2xpY2llcy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcG9saWN5ID0g
cG9saWN5SXRlcmF0b3ItPnZhbHVlOwotICAgIHJldHVybiB0cnVlOwotfQotI2VuZGlmIC8vIFBM
QVRGT1JNKE1BQykKLQotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnBvcHVsYXRlUGx1Z2lu
Q2FjaGUoY29uc3QgV2ViQ29yZTo6UGFnZSYgcGFnZSkKLXsKLSAgICBpZiAoIW1fcGx1Z2luQ2Fj
aGVJc1BvcHVsYXRlZCkgewotICAgICAgICBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIgaGFuZ0RldGVj
dGlvbkRpc2FibGVyOwotCi0gICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94
eTo6R2V0UGx1Z2lucyhtX3Nob3VsZFJlZnJlc2hQbHVnaW5zKSwgTWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0UGx1Z2luczo6UmVwbHkobV9jYWNoZWRQbHVnaW5zLCBtX2NhY2hlZEFwcGxp
Y2F0aW9uUGx1Z2lucyksIDApKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fc2hv
dWxkUmVmcmVzaFBsdWdpbnMgPSBmYWxzZTsKLSAgICAgICAgbV9wbHVnaW5DYWNoZUlzUG9wdWxh
dGVkID0gdHJ1ZTsKLSAgICB9Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgU3RyaW5nIHBhZ2VI
b3N0ID0gcGFnZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25z
ZVVSTCgpLmhvc3QoKTsKLSAgICBmb3IgKFBsdWdpbkluZm8mIGluZm8gOiBtX2NhY2hlZFBsdWdp
bnMpIHsKLSAgICAgICAgUGx1Z2luTG9hZENsaWVudFBvbGljeSBjbGllbnRQb2xpY3k7Ci0gICAg
ICAgIGlmIChwbHVnaW5Mb2FkQ2xpZW50UG9saWN5Rm9ySG9zdChwYWdlSG9zdCwgaW5mbywgY2xp
ZW50UG9saWN5KSkKLSAgICAgICAgICAgIGluZm8uY2xpZW50TG9hZFBvbGljeSA9IGNsaWVudFBv
bGljeTsKLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKLSNlbmRpZiAvLyBu
b3QgUExBVEZPUk0oTUFDKQotfQotI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQotCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAvLyBQYXN0ZWJvYXJkU3RyYXRlZ3kKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggMGZmNDc0YTc0Yzg5OWY5NjljODY1N2U2MGMw
OWVkMmE3ZTIyNTMyYy4uNmRkMWUxZTlkOWE3MWE5MGQwYzUzZjdhZjIyYTdiZGNmYjU5OTc0MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC0zMCwxMyArMzAsMTIgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0xvYWRlclN0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYXN0
ZWJvYXJkU3RyYXRlZ3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3RyYXRlZ2llcy5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luU3RyYXRlZ3kuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotY2xhc3MgV2ViUGxhdGZvcm1TdHJhdGVnaWVzIDogcHVibGljIFdlYkNvcmU6OlBs
YXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3ksIHByaXZh
dGUgV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdpblN0
cmF0ZWd5IHsKK2NsYXNzIFdlYlBsYXRmb3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQ
bGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2
YXRlIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneSB7CiAgICAgZnJpZW5kIGNsYXNzIE5ldmVy
RGVzdHJveWVkPFdlYlBsYXRmb3JtU3RyYXRlZ2llcz47CiBwdWJsaWM6CiAgICAgc3RhdGljIHZv
aWQgaW5pdGlhbGl6ZSgpOwpAQCAtNjEsMTkgKzYwLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRl
bGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBX
ZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIGFkZENvb2tp
ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpV
UkwmLCBjb25zdCBXZWJDb3JlOjpDb29raWUmKSBvdmVycmlkZTsKIAotICAgIC8vIFdlYkNvcmU6
OlBsdWdpblN0cmF0ZWd5Ci0gICAgdm9pZCByZWZyZXNoUGx1Z2lucygpIG92ZXJyaWRlOwotICAg
IHZvaWQgZ2V0UGx1Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdlYkNvcmU6
OlBsdWdpbkluZm8+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRXZWJWaXNpYmxlUGx1Z2luSW5m
byhjb25zdCBXZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+Jikgb3Zl
cnJpZGU7Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywg
V2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeT4gUGx1Z2luTG9hZENsaWVudFBvbGljaWVz
QnlCdW5kbGVWZXJzaW9uOwotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFBsdWdpbkxvYWRD
bGllbnRQb2xpY2llc0J5QnVuZGxlVmVyc2lvbj4gUGx1Z2luUG9saWN5TWFwc0J5SWRlbnRpZmll
cjsKLQotICAgIHZvaWQgc2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShXZWJDb3JlOjpQbHVnaW5M
b2FkQ2xpZW50UG9saWN5LCBjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFN0cmluZyYgYnVuZGxl
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uU3RyaW5nKSBvdmVycmlkZTsKLSAgICB2
b2lkIGNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKSBvdmVycmlkZTsKLSNlbmRpZgotCiAgICAg
Ly8gV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHZv
aWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQm
KSBvdmVycmlkZTsKQEAgLTEwMywyNyArODksOCBAQCBwcml2YXRlOgogICAgIGxvbmcgc2V0U3Ry
aW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICNlbmRpZgogCi0jaWYgRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgLy8gV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3kg
aW1wbGVtZW50YXRpb24uCi0gICAgdm9pZCBwb3B1bGF0ZVBsdWdpbkNhY2hlKGNvbnN0IFdlYkNv
cmU6OlBhZ2UmKTsKLSAgICBib29sIG1fcGx1Z2luQ2FjaGVJc1BvcHVsYXRlZDsKLSAgICBib29s
IG1fc2hvdWxkUmVmcmVzaFBsdWdpbnM7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+
IG1fY2FjaGVkUGx1Z2luczsKLSAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gbV9jYWNo
ZWRBcHBsaWNhdGlvblBsdWdpbnM7Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgSGFzaE1hcDxT
dHJpbmcsIFBsdWdpblBvbGljeU1hcHNCeUlkZW50aWZpZXI+IG1faG9zdHNUb1BsdWdpbklkZW50
aWZpZXJEYXRhOwotICAgIGJvb2wgcGx1Z2luTG9hZENsaWVudFBvbGljeUZvckhvc3QoY29uc3Qg
U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6UGx1Z2luSW5mbyYsIFdlYkNvcmU6OlBsdWdpbkxvYWRD
bGllbnRQb2xpY3kmKSBjb25zdDsKLSAgICBTdHJpbmcgbG9uZ2VzdE1hdGNoZWRXaWxkY2FyZEhv
c3RGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCkgY29uc3Q7Ci0gICAgYm9vbCByZXBsYWNlSG9z
dFdpdGhNYXRjaGVkV2lsZGNhcmRIb3N0KFN0cmluZyYgaG9zdCwgY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyKSBjb25zdDsKLSNlbmRpZiAvLyBQTEFURk9STShNQUMpCi0jZW5kaWYgLy8gRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpCiB9OwogCi0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9B
UEkpCi12b2lkIGhhbmRsZURpZEdldFBsdWdpbnModWludDY0X3QgcmVxdWVzdElELCBjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2lu
SW5mbz4mIGFwcGxpY2F0aW9uUGx1Z2lucyk7Ci0jZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BM
VUdJTl9BUEkpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gV2ViUGxhdGZv
cm1TdHJhdGVnaWVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmlu
ZGV4IGJhMmNiOWMzYzFlYzMxZmY0NWEwMTViMmM1MzE1OGFlMjc1ZjU1YzcuLmE3ZDk1Y2FmNWJj
M2FkN2UyMDQ2YWMxMTEyMjUzMzk4NzBlMWUxN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcApAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2UuaCIK
ICNpbmNsdWRlICJXZWJQYWdlR3JvdXBQcm94eS5oIgogI2luY2x1ZGUgIldlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oIgorI2luY2x1ZGUgIldlYlBsdWdpbkluZm9Qcm92aWRlci5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCkBAIC0zOTcsNyAr
Mzk4LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBmb3IgKGF1dG8gaG9zdEl0ZXIg
PSBwYXJhbWV0ZXJzLnBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5iZWdpbigpOyBob3N0SXRlciAh
PSBwYXJhbWV0ZXJzLnBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5lbmQoKTsgKytob3N0SXRlcikg
ewogICAgICAgICBmb3IgKGF1dG8gYnVuZGxlSWRlbnRpZmllckl0ZXIgPSBob3N0SXRlci0+dmFs
dWUuYmVnaW4oKTsgYnVuZGxlSWRlbnRpZmllckl0ZXIgIT0gaG9zdEl0ZXItPnZhbHVlLmVuZCgp
OyArK2J1bmRsZUlkZW50aWZpZXJJdGVyKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8gdmVyc2lv
bkl0ZXIgPSBidW5kbGVJZGVudGlmaWVySXRlci0+dmFsdWUuYmVnaW4oKTsgdmVyc2lvbkl0ZXIg
IT0gYnVuZGxlSWRlbnRpZmllckl0ZXItPnZhbHVlLmVuZCgpOyArK3ZlcnNpb25JdGVyKQotICAg
ICAgICAgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wbHVnaW5TdHJhdGVneSgpLT5zZXRQ
bHVnaW5Mb2FkQ2xpZW50UG9saWN5KHN0YXRpY19jYXN0PFBsdWdpbkxvYWRDbGllbnRQb2xpY3k+
KHZlcnNpb25JdGVyLT52YWx1ZSksIGhvc3RJdGVyLT5rZXksIGJ1bmRsZUlkZW50aWZpZXJJdGVy
LT5rZXksIHZlcnNpb25JdGVyLT5rZXkpOworICAgICAgICAgICAgICAgIFdlYlBsdWdpbkluZm9Q
cm92aWRlcjo6c2luZ2xldG9uKCkuc2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShzdGF0aWNfY2Fz
dDxQbHVnaW5Mb2FkQ2xpZW50UG9saWN5Pih2ZXJzaW9uSXRlci0+dmFsdWUpLCBob3N0SXRlci0+
a2V5LCBidW5kbGVJZGVudGlmaWVySXRlci0+a2V5LCB2ZXJzaW9uSXRlci0+a2V5KTsKICAgICAg
ICAgfQogICAgIH0KICNlbmRpZgpAQCAtOTE1LDE0ICs5MTYsMTQgQEAgdm9pZCBXZWJQcm9jZXNz
OjpwbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdp
biwgY29uc3QKIHZvaWQgV2ViUHJvY2Vzczo6c2V0UGx1Z2luTG9hZENsaWVudFBvbGljeSh1aW50
OF90IHBvbGljeSwgY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZykKIHsKICNpZiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkgJiYgUExBVEZPUk0oTUFDKQotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wbHVnaW5TdHJhdGVneSgpLT5zZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KHN0YXRpY19jYXN0
PFBsdWdpbkxvYWRDbGllbnRQb2xpY3k+KHBvbGljeSksIGhvc3QsIGJ1bmRsZUlkZW50aWZpZXIs
IHZlcnNpb25TdHJpbmcpOworICAgIFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6c2luZ2xldG9uKCku
c2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShzdGF0aWNfY2FzdDxQbHVnaW5Mb2FkQ2xpZW50UG9s
aWN5Pihwb2xpY3kpLCBob3N0LCBidW5kbGVJZGVudGlmaWVyLCB2ZXJzaW9uU3RyaW5nKTsKICNl
bmRpZgogfQogCiB2b2lkIFdlYlByb2Nlc3M6OmNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKQog
ewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKSAmJiBQTEFURk9STShNQUMpCi0gICAg
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBsdWdpblN0cmF0ZWd5KCktPmNsZWFyUGx1Z2luQ2xpZW50
UG9saWNpZXMoKTsKKyAgICBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnNpbmdsZXRvbigpLmNsZWFy
UGx1Z2luQ2xpZW50UG9saWNpZXMoKTsKICNlbmRpZgogfQogCg==
</data>
<flag name="review"
          id="309230"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>