<?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>215760</bug_id>
          
          <creation_ts>2020-08-23 13:54:03 -0700</creation_ts>
          <short_desc>Invalid early error for object literal method named &quot;__proto__&quot;</short_desc>
          <delta_ts>2020-08-25 08:59:17 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=215769</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Trivial</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>145138</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Shvayka">ashvayka</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1682262</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-08-23 13:54:03 -0700</bug_when>
    <thetext>Invalid early error for object literal method named &quot;__proto__&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682272</commentid>
    <comment_count>1</comment_count>
      <attachid>407084</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-08-23 18:14:50 -0700</bug_when>
    <thetext>Created attachment 407084
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682352</commentid>
    <comment_count>2</comment_count>
      <attachid>407084</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-08-24 09:45:10 -0700</bug_when>
    <thetext>Comment on attachment 407084
Patch

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

r=me, this seems like a nice cleanup.

&gt; Source/JavaScriptCore/parser/SyntaxChecker.h:107
&gt; +        ALWAYS_INLINE Property(PropertyNode::Type type, bool isUnderscoreProtoSetter = false)

nit: I&apos;m not certain that a default param value is really better than a default field value here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682597</commentid>
    <comment_count>3</comment_count>
      <attachid>407179</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-08-25 00:30:30 -0700</bug_when>
    <thetext>Created attachment 407179
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682598</commentid>
    <comment_count>4</comment_count>
      <attachid>407179</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-08-25 00:31:26 -0700</bug_when>
    <thetext>Comment on attachment 407179
Patch

(In reply to Ross Kirsling from comment #2)
&gt; r=me, this seems like a nice cleanup.

I appreciate you reviewing this, Ross! The diff is quite tough.

&gt; nit: I&apos;m not certain that a default param value is really better than a
&gt; default field value here?

I&apos;ve moved the default value to field initializer (TIL `struct` can also do that), and brought back the `type` field.
PropertyNode::Type is the same size as `bool`, yet it&apos;s more useful to have (unlike `name`).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682660</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-25 08:58:45 -0700</bug_when>
    <thetext>Committed r266117: &lt;https://trac.webkit.org/changeset/266117&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 407179.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682661</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-25 08:59:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/67740285&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407084</attachid>
            <date>2020-08-23 18:14:50 -0700</date>
            <delta_ts>2020-08-25 00:30:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215760-20200824041448.patch</filename>
            <type>text/plain</type>
            <size>36902</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
ZTc0ZTJmMjU2NTY5YTI5YmQwNzVlZDkyMjQ0YjEwOTExNzliNThhLi5lMzJhMmQ0ZmFjNzQxODlh
M2NiODUzYWZjMjE0YmNmMWRjOGE5NWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MyBAQAorMjAyMC0wOC0yMyAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFp
bC5jb20+CisKKyAgICAgICAgSW52YWxpZCBlYXJseSBlcnJvciBmb3Igb2JqZWN0IGxpdGVyYWwg
bWV0aG9kIG5hbWVkICJfX3Byb3RvX18iCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTU3NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBY2NvcmRpbmcgdG8gQW5uZXggQiBbMV0sIGB7IF9fcHJvdG9fXzog
bnVsbCwgX19wcm90b19fKCkge30gfWAgaXMgYSB2YWxpZCBvYmplY3QgbGl0ZXJhbCBhcyB0aGUg
c2Vjb25kCisgICAgICAgIGBfX3Byb3RvX19gIHdhc24ndCBvYnRhaW5lZCBmcm9tIGBQcm9wZXJ0
eURlZmluaXRpb24gOiBQcm9wZXJ0eU5hbWUgOiBBc3NpZ25tZW50RXhwcmVzc2lvbmAgcHJvZHVj
dGlvbi4KKyAgICAgICAgQ3VycmVudGx5LCBKU0MgdGhyb3dzIGFuIGVhcmx5IFN5bnRheEVycm9y
LCB1bmxpa2UgVjggYW5kIFNwaWRlck1vbmtleS4KKworICAgICAgICBTaW5jZSBhIG1ldGhvZCBu
ZWVkcyBgc3VwZXJgIGJpbmRpbmcsIHRoZSBtb3N0IHN0cmFpZ2h0Zm9yd2FyZCBmaXggd291bGQg
YmUgYWRkaW5nIFN1cGVyQmluZGluZyBmaWVsZAorICAgICAgICB0byBTeW50YXhDaGVja2VyOjpQ
cm9wZXJ0eSBhbmQgZXhwb3NpbmcgaXQgdmlhIGFuIGFjY2Vzc29yLiBTaW5jZSBQcm9wZXJ0eSBp
cyBhIHZlcnkgY29tbW9uIHN0cnVjdHVyZSwKKyAgICAgICAgdGhpcyBhcHByb2FjaCB3b3VsZCBu
b3RpY2VhYmx5IGluY3JlYXNlIG1lbW9yeSBwcmVzc3VyZSBkdXJpbmcgcGFyc2luZy4KKworICAg
ICAgICBJbnN0ZWFkLCB0aGlzIHBhdGNoIHJld29ya3MgU3ludGF4Q2hlY2tlcjo6UHJvcGVydHkg
dG8gYWNjZXB0IGBpc1VuZGVyc2NvcmVQcm90b1NldHRlcmAgcGFyYW1ldGVyLAorICAgICAgICBy
ZW1vdmluZyBgdHlwZWAgLyBgbmFtZWAgZmllbGRzLCB0aGVpciBhY2Nlc3NvcnMsIGFuZCBzaG91
bGRDaGVja1Byb3BlcnR5Rm9yVW5kZXJzY29yZVByb3RvRHVwbGljYXRlKCkuCisgICAgICAgIEFs
c28sIHRoaXMgY2hhbmdlIGF2b2lkcyB0d28gZXh0cmEgbWFrZU51bWVyaWNJZGVudGlmaWVyKCkg
Y2FsbHMsIHNwZWVkaW5nIHVwIG51bWVyaWMga2V5cyBwYXJzaW5nLgorCisgICAgICAgIFRoaXMg
YXBwcm9hY2ggaXMgZmVhc2libGUgYmVjYXVzZSAiX19wcm90b19fIiBpcyB0aGUgb25seSBpZGVu
dGlmaWVyLWJhc2VkIGVhcmx5IGVycm9yIGZvciBvYmplY3QKKyAgICAgICAgbGl0ZXJhbHMgWzJd
LCB3aXRoIG5vIHN1Y2ggZXJyb3JzIGJlaW5nIGFkZGVkIGluIHVwY29taW5nIHN0YWdlIDItNCBw
cm9wb3NhbHMuCisKKyAgICAgICAgQWRkaXRpb25hbGx5LCB0aGlzIHBhdGNoIHJlbW92ZXMgYGJv
b2wgc3RyaWN0YCAvIGBib29sIGNvbXBsZXRlYCBwYXJhbWV0ZXIgZnJvbSBge3BhcnNlLGNyZWF0
ZX1Qcm9wZXJ0eSgpYAorICAgICAgICBzaWduYXR1cmVzIGFzIGEpIGl0IHdhcyBhbHdheXMgYHRy
dWVgLCBiKSBpcyBub3cgdW51c2VkLCBhbmQgYykgc3RyaWN0IG1vZGUgY2FuIGJlIGNoZWNrZWQg
dmlhIHNjb3BlLgorCisgICAgICAgIFsxXTogaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1f
X3Byb3RvX18tcHJvcGVydHktbmFtZXMtaW4tb2JqZWN0LWluaXRpYWxpemVycworICAgICAgICBb
Ml06IGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LWluaXRpYWxpemVyLXN0YXRp
Yy1zZW1hbnRpY3MtZWFybHktZXJyb3JzCisKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5o
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5
KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlUHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpBU1RCdWlsZGVyOjppc1VuZGVyc2NvcmVQcm90b1NldHRlciBjb25zdCk6CisgICAgICAg
IChKU0M6OkFTVEJ1aWxkZXI6OmdldE5hbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpBU1RCdWlsZGVyOjpnZXRUeXBlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYXJzZXIv
Tm9kZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFy
c2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUdldHRlclNldHRlcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZU9iamVjdExpdGVyYWwpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6c2hvdWxk
Q2hlY2tQcm9wZXJ0eUZvclVuZGVyc2NvcmVQcm90b0R1cGxpY2F0ZSk6IERlbGV0ZWQuCisgICAg
ICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6
CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OlN5bnRheENoZWNrZXIpOgorICAgICAgICAo
SlNDOjpTeW50YXhDaGVja2VyOjpQcm9wZXJ0eTo6UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjpQcm9wZXJ0eTo6b3BlcmF0b3IhKToKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6Y3JlYXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpj
cmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tl
cjo6b3BlcmF0b3JTdGFja1BvcCk6CisKIDIwMjAtMDgtMjIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbRUNNQS00MDJdIEludGwuRGF0ZVRpbWVGb3JtYXQg
ZGF0ZVN0eWxlL3RpbWVTdHlsZSBtaXNzaW5nIGluIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCA1MjVhYzRkMDg1MDc1MjZmYWZmNjNkZWYwN2I2
MGJlOThjZjIzMDlkLi5mNjFmZDk4ODJmMmMzYzQ4ZDg5OTMzNjRiNjQyMmQ2MjAyYjA2ZGRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtNDgxLDcgKzQ4
MSw3IEBAIHB1YmxpYzoKICAgICBBcmd1bWVudExpc3ROb2RlKiBjcmVhdGVBcmd1bWVudHNMaXN0
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBhcmcpIHsg
cmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQXJndW1lbnRMaXN0Tm9kZShsb2NhdGlvbiwgYXJn
KTsgfQogICAgIEFyZ3VtZW50TGlzdE5vZGUqIGNyZWF0ZUFyZ3VtZW50c0xpc3QoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgQXJndW1lbnRMaXN0Tm9kZSogYXJncywgRXhwcmVzc2lv
bk5vZGUqIGFyZykgeyByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBBcmd1bWVudExpc3ROb2Rl
KGxvY2F0aW9uLCBhcmdzLCBhcmcpOyB9CiAKLSAgICBORVZFUl9JTkxJTkUgUHJvcGVydHlOb2Rl
KiBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBib29sLAorICAgIE5FVkVSX0lOTElORSBQ
cm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsCiAgICAgICAgIGNvbnN0
IElkZW50aWZpZXIqIG5hbWUsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYg
ZnVuY3Rpb25JbmZvLCBDbGFzc0VsZW1lbnRUYWcgdGFnKQogICAgIHsKICAgICAgICAgQVNTRVJU
KG5hbWUpOwpAQCAtNDkyLDcgKzQ5Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG5ldyAo
bV9wYXJzZXJBcmVuYSkgUHJvcGVydHlOb2RlKCpuYW1lLCBtZXRob2REZWYsIHR5cGUsIFByb3Bl
cnR5Tm9kZTo6VW5rbm93biwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIHRhZyk7CiAgICAgfQogCi0g
ICAgTkVWRVJfSU5MSU5FIFByb3BlcnR5Tm9kZSogY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0
eShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlw
ZSwgYm9vbCwKKyAgICBORVZFUl9JTkxJTkUgUHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0ZXJPclNl
dHRlclByb3BlcnR5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFByb3BlcnR5Tm9k
ZTo6VHlwZSB0eXBlLAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbmFtZSwgY29uc3QgUGFyc2Vy
RnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBmdW5jdGlvbkluZm8sIENsYXNzRWxlbWVudFRhZyB0
YWcpCiAgICAgewogICAgICAgICBBU1NFUlQobmFtZSk7CkBAIC01MDIsNyArNTAyLDcgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBQcm9wZXJ0eU5vZGUobmFt
ZSwgbWV0aG9kRGVmLCB0eXBlLCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIFN1cGVyQmluZGluZzo6
TmVlZGVkLCB0YWcpOwogICAgIH0KIAotICAgIE5FVkVSX0lOTElORSBQcm9wZXJ0eU5vZGUqIGNy
ZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoVk0mIHZtLCBQYXJzZXJBcmVuYSYgcGFyc2VyQXJl
bmEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFByb3BlcnR5Tm9kZTo6VHlwZSB0
eXBlLCBib29sLAorICAgIE5FVkVSX0lOTElORSBQcm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRlck9y
U2V0dGVyUHJvcGVydHkoVk0mIHZtLCBQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLAogICAgICAg
ICBkb3VibGUgbmFtZSwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBmdW5j
dGlvbkluZm8sIENsYXNzRWxlbWVudFRhZyB0YWcpCiAgICAgewogICAgICAgICBmdW5jdGlvbklu
Zm8uYm9keS0+c2V0TG9jKGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5lbmRM
aW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKQEAg
LTUxMiw3ICs1MTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJl
bmEpIFByb3BlcnR5Tm9kZShpZGVudCwgbWV0aG9kRGVmLCB0eXBlLCBQcm9wZXJ0eU5vZGU6OlVu
a25vd24sIFN1cGVyQmluZGluZzo6TmVlZGVkLCB0YWcpOwogICAgIH0KIAotICAgIFByb3BlcnR5
Tm9kZSogY3JlYXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciogcHJvcGVydHlOYW1lLCBFeHBy
ZXNzaW9uTm9kZSogbm9kZSwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIFByb3BlcnR5Tm9kZTo6
UHV0VHlwZSBwdXRUeXBlLCBib29sLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBJbmZlck5h
bWUgaW5mZXJOYW1lLCBDbGFzc0VsZW1lbnRUYWcgdGFnKQorICAgIFByb3BlcnR5Tm9kZSogY3Jl
YXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciogcHJvcGVydHlOYW1lLCBFeHByZXNzaW9uTm9k
ZSogbm9kZSwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIFByb3BlcnR5Tm9kZTo6UHV0VHlwZSBw
dXRUeXBlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBJbmZlck5hbWUgaW5mZXJOYW1lLCBD
bGFzc0VsZW1lbnRUYWcgdGFnKQogICAgIHsKICAgICAgICAgaWYgKGluZmVyTmFtZSA9PSBJbmZl
ck5hbWU6OkFsbG93ZWQpIHsKICAgICAgICAgICAgIGlmIChub2RlLT5pc0Jhc2VGdW5jRXhwck5v
ZGUoKSkgewpAQCAtNTIzLDE2ICs1MjMsMTYgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAg
IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5Tm9kZSgqcHJvcGVydHlOYW1lLCBu
b2RlLCB0eXBlLCBwdXRUeXBlLCBzdXBlckJpbmRpbmcsIHRhZyk7CiAgICAgfQotICAgIFByb3Bl
cnR5Tm9kZSogY3JlYXRlUHJvcGVydHkoRXhwcmVzc2lvbk5vZGUqIG5vZGUsIFByb3BlcnR5Tm9k
ZTo6VHlwZSB0eXBlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUgcHV0VHlwZSwgYm9vbCwgU3VwZXJC
aW5kaW5nIHN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnIHRhZykKKyAgICBQcm9wZXJ0eU5v
ZGUqIGNyZWF0ZVByb3BlcnR5KEV4cHJlc3Npb25Ob2RlKiBub2RlLCBQcm9wZXJ0eU5vZGU6OlR5
cGUgdHlwZSwgUHJvcGVydHlOb2RlOjpQdXRUeXBlIHB1dFR5cGUsIFN1cGVyQmluZGluZyBzdXBl
ckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyB0YWcpCiAgICAgewogICAgICAgICByZXR1cm4gbmV3
IChtX3BhcnNlckFyZW5hKSBQcm9wZXJ0eU5vZGUobm9kZSwgdHlwZSwgcHV0VHlwZSwgc3VwZXJC
aW5kaW5nLCB0YWcpOwogICAgIH0KLSAgICBQcm9wZXJ0eU5vZGUqIGNyZWF0ZVByb3BlcnR5KFZN
JiB2bSwgUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBkb3VibGUgcHJvcGVydHlOYW1lLCBFeHBy
ZXNzaW9uTm9kZSogbm9kZSwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIFByb3BlcnR5Tm9kZTo6
UHV0VHlwZSBwdXRUeXBlLCBib29sLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBDbGFzc0Vs
ZW1lbnRUYWcgdGFnKQorICAgIFByb3BlcnR5Tm9kZSogY3JlYXRlUHJvcGVydHkoVk0mIHZtLCBQ
YXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGRvdWJsZSBwcm9wZXJ0eU5hbWUsIEV4cHJlc3Npb25O
b2RlKiBub2RlLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgUHJvcGVydHlOb2RlOjpQdXRUeXBl
IHB1dFR5cGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyB0YWcp
CiAgICAgewogICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBQcm9wZXJ0eU5vZGUo
cGFyc2VyQXJlbmEuaWRlbnRpZmllckFyZW5hKCkubWFrZU51bWVyaWNJZGVudGlmaWVyKHZtLCBw
cm9wZXJ0eU5hbWUpLCBub2RlLCB0eXBlLCBwdXRUeXBlLCBzdXBlckJpbmRpbmcsIHRhZyk7CiAg
ICAgfQotICAgIFByb3BlcnR5Tm9kZSogY3JlYXRlUHJvcGVydHkoRXhwcmVzc2lvbk5vZGUqIHBy
b3BlcnR5TmFtZSwgRXhwcmVzc2lvbk5vZGUqIG5vZGUsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBl
LCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUgcHV0VHlwZSwgYm9vbCwgU3VwZXJCaW5kaW5nIHN1cGVy
QmluZGluZywgQ2xhc3NFbGVtZW50VGFnIHRhZykgeyByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5h
KSBQcm9wZXJ0eU5vZGUocHJvcGVydHlOYW1lLCBub2RlLCB0eXBlLCBwdXRUeXBlLCBzdXBlckJp
bmRpbmcsIHRhZyk7IH0KLSAgICBQcm9wZXJ0eU5vZGUqIGNyZWF0ZVByb3BlcnR5KGNvbnN0IElk
ZW50aWZpZXIqIGlkZW50aWZpZXIsIEV4cHJlc3Npb25Ob2RlKiBwcm9wZXJ0eU5hbWUsIEV4cHJl
c3Npb25Ob2RlKiBub2RlLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgUHJvcGVydHlOb2RlOjpQ
dXRUeXBlIHB1dFR5cGUsIGJvb2wsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIENsYXNzRWxl
bWVudFRhZyB0YWcpIHsgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUHJvcGVydHlOb2RlKCpp
ZGVudGlmaWVyLCBwcm9wZXJ0eU5hbWUsIG5vZGUsIHR5cGUsIHB1dFR5cGUsIHN1cGVyQmluZGlu
ZywgdGFnKTsgfQorICAgIFByb3BlcnR5Tm9kZSogY3JlYXRlUHJvcGVydHkoRXhwcmVzc2lvbk5v
ZGUqIHByb3BlcnR5TmFtZSwgRXhwcmVzc2lvbk5vZGUqIG5vZGUsIFByb3BlcnR5Tm9kZTo6VHlw
ZSB0eXBlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUgcHV0VHlwZSwgU3VwZXJCaW5kaW5nIHN1cGVy
QmluZGluZywgQ2xhc3NFbGVtZW50VGFnIHRhZykgeyByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5h
KSBQcm9wZXJ0eU5vZGUocHJvcGVydHlOYW1lLCBub2RlLCB0eXBlLCBwdXRUeXBlLCBzdXBlckJp
bmRpbmcsIHRhZyk7IH0KKyAgICBQcm9wZXJ0eU5vZGUqIGNyZWF0ZVByb3BlcnR5KGNvbnN0IElk
ZW50aWZpZXIqIGlkZW50aWZpZXIsIEV4cHJlc3Npb25Ob2RlKiBwcm9wZXJ0eU5hbWUsIEV4cHJl
c3Npb25Ob2RlKiBub2RlLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgUHJvcGVydHlOb2RlOjpQ
dXRUeXBlIHB1dFR5cGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRh
ZyB0YWcpIHsgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUHJvcGVydHlOb2RlKCppZGVudGlm
aWVyLCBwcm9wZXJ0eU5hbWUsIG5vZGUsIHR5cGUsIHB1dFR5cGUsIHN1cGVyQmluZGluZywgdGFn
KTsgfQogICAgIFByb3BlcnR5TGlzdE5vZGUqIGNyZWF0ZVByb3BlcnR5TGlzdChjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGUqIHByb3BlcnR5KSB7IHJldHVybiBu
ZXcgKG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5TGlzdE5vZGUobG9jYXRpb24sIHByb3BlcnR5KTsg
fQogICAgIFByb3BlcnR5TGlzdE5vZGUqIGNyZWF0ZVByb3BlcnR5TGlzdChjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGUqIHByb3BlcnR5LCBQcm9wZXJ0eUxpc3RO
b2RlKiB0YWlsKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5TGlzdE5vZGUo
bG9jYXRpb24sIHByb3BlcnR5LCB0YWlsKTsgfQogCkBAIC05NTksOCArOTU5LDEwIEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBjb25zdCBJZGVudGlmaWVy
KiBnZXROYW1lKGNvbnN0IFByb3BlcnR5JiBwcm9wZXJ0eSkgY29uc3QgeyByZXR1cm4gcHJvcGVy
dHktPm5hbWUoKTsgfQotICAgIFByb3BlcnR5Tm9kZTo6VHlwZSBnZXRUeXBlKGNvbnN0IFByb3Bl
cnR5JiBwcm9wZXJ0eSkgY29uc3QgeyByZXR1cm4gcHJvcGVydHktPnR5cGUoKTsgfQorICAgIGJv
b2wgaXNVbmRlcnNjb3JlUHJvdG9TZXR0ZXIoY29uc3QgUHJvcGVydHkmIHByb3BlcnR5KSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIFByb3BlcnR5Tm9kZTo6aXNVbmRlcnNjb3JlUHJvdG9T
ZXR0ZXIobV92bSwgcHJvcGVydHktPm5hbWUoKSwgcHJvcGVydHktPnR5cGUoKSwgcHJvcGVydHkt
Pm5lZWRzU3VwZXJCaW5kaW5nKCkpOworICAgIH0KIAogICAgIGJvb2wgaXNSZXNvbHZlKEV4cHJl
c3Npb25Ob2RlKiBleHByKSBjb25zdCB7IHJldHVybiBleHByLT5pc1Jlc29sdmVOb2RlKCk7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IGQ3NjQ2NmYwYWU1NzVkZmVj
M2UzODllZjRlNWNiOTI4MDg2ZjkxYWEuLjhhNzg2NTc1MTQ2YmQ0M2U0OWUwY2I3MTkyYWZiZjUy
MjM2MmI1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTc0Niw2ICs3
NDYsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgc2V0SXNPdmVycmlkZGVuQnlE
dXBsaWNhdGUoKSB7IG1faXNPdmVycmlkZGVuQnlEdXBsaWNhdGUgPSB0cnVlOyB9CiAgICAgICAg
IFB1dFR5cGUgcHV0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFB1dFR5cGU+KG1f
cHV0VHlwZSk7IH0KIAorICAgICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzVW5kZXJz
Y29yZVByb3RvU2V0dGVyKFZNJiB2bSwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgVHlwZSB0eXBl
LCBib29sIG5lZWRzU3VwZXJCaW5kaW5nKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
bmFtZSAmJiAqbmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8gJiYgdHlw
ZSA9PSBUeXBlOjpDb25zdGFudCAmJiAhbmVlZHNTdXBlckJpbmRpbmc7CisgICAgICAgIH0KKwog
ICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBQcm9wZXJ0eUxpc3ROb2RlOwogICAg
ICAgICBjb25zdCBJZGVudGlmaWVyKiBtX25hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5jcHAKaW5kZXggODhmNjNkNzQ3YTUzMGMwNmM4MzRlOGNjMTYzZDFmMzBkOGFkNTUx
Yi4uNWEyYjQ0ZGFiYjIyOGJhMjM5MjhlNTIzOTI2ZTJlMWYwMDliZTE2NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjk3NywxMSArMjk3NywxMCBAQCBwYXJz
ZU1ldGhvZDoKICAgICAgICAgfQogCiAgICAgICAgIFRyZWVQcm9wZXJ0eSBwcm9wZXJ0eTsKLSAg
ICAgICAgY29uc3QgYm9vbCBhbHdheXNTdHJpY3RJbnNpZGVDbGFzcyA9IHRydWU7CiAgICAgICAg
IGlmIChpc0dldHRlciB8fCBpc1NldHRlcikgewogICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19j
YXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlwZSAmIH5Qcm9wZXJ0eU5vZGU6OkNvbnN0YW50KTsK
ICAgICAgICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUg
fCAoaXNHZXR0ZXIgPyBQcm9wZXJ0eU5vZGU6OkdldHRlciA6IFByb3BlcnR5Tm9kZTo6U2V0dGVy
KSk7Ci0gICAgICAgICAgICBwcm9wZXJ0eSA9IHBhcnNlR2V0dGVyU2V0dGVyKGNvbnRleHQsIGFs
d2F5c1N0cmljdEluc2lkZUNsYXNzLCB0eXBlLCBtZXRob2RTdGFydCwgQ29uc3RydWN0b3JLaW5k
OjpOb25lLCB0YWcpOworICAgICAgICAgICAgcHJvcGVydHkgPSBwYXJzZUdldHRlclNldHRlcihj
b250ZXh0LCB0eXBlLCBtZXRob2RTdGFydCwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCB0YWcpOwog
ICAgICAgICAgICAgZmFpbElmRmFsc2UocHJvcGVydHksICJDYW5ub3QgcGFyc2UgdGhpcyBtZXRo
b2QiKTsKICAgICAgICAgfSBlbHNlIGlmIChPcHRpb25zOjp1c2VQdWJsaWNDbGFzc0ZpZWxkcygp
ICYmICFtYXRjaChPUEVOUEFSRU4pICYmIHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6Okluc3RhbmNl
ICYmIHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUpIHsKICAgICAgICAg
ICAgIEFTU0VSVCghaXNHZXR0ZXIgJiYgIWlzU2V0dGVyKTsKQEAgLTMwMTAsOSArMzAwOSw5IEBA
IHBhcnNlTWV0aG9kOgogICAgICAgICAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpLCAi
RXhwZWN0ZWQgYSAnOycgZm9sbG93aW5nIGEgY2xhc3MgZmllbGQiKTsKICAgICAgICAgICAgIGF1
dG8gaW5mZXJOYW1lID0gaW5pdGlhbGl6ZXIgPyBJbmZlck5hbWU6OkFsbG93ZWQgOiBJbmZlck5h
bWU6OkRpc2FsbG93ZWQ7CiAgICAgICAgICAgICBpZiAoY29tcHV0ZWRQcm9wZXJ0eU5hbWUpCi0g
ICAgICAgICAgICAgICAgcHJvcGVydHkgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KGlkZW50LCBj
b21wdXRlZFByb3BlcnR5TmFtZSwgaW5pdGlhbGl6ZXIsIHR5cGUsIFByb3BlcnR5Tm9kZTo6VW5r
bm93biwgYWx3YXlzU3RyaWN0SW5zaWRlQ2xhc3MsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCB0
YWcpOworICAgICAgICAgICAgICAgIHByb3BlcnR5ID0gY29udGV4dC5jcmVhdGVQcm9wZXJ0eShp
ZGVudCwgY29tcHV0ZWRQcm9wZXJ0eU5hbWUsIGluaXRpYWxpemVyLCB0eXBlLCBQcm9wZXJ0eU5v
ZGU6OlVua25vd24sIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCB0YWcpOwogICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIHByb3BlcnR5ID0gY29udGV4dC5jcmVhdGVQcm9wZXJ0eShp
ZGVudCwgaW5pdGlhbGl6ZXIsIHR5cGUsIFByb3BlcnR5Tm9kZTo6VW5rbm93biwgYWx3YXlzU3Ry
aWN0SW5zaWRlQ2xhc3MsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBpbmZlck5hbWUsIHRhZyk7
CisgICAgICAgICAgICAgICAgcHJvcGVydHkgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KGlkZW50
LCBpbml0aWFsaXplciwgdHlwZSwgUHJvcGVydHlOb2RlOjpVbmtub3duLCBTdXBlckJpbmRpbmc6
Ok5vdE5lZWRlZCwgaW5mZXJOYW1lLCB0YWcpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBtZXRob2RJbmZvOwogICAgICAgICAg
ICAgYm9vbCBpc0NvbnN0cnVjdG9yID0gdGFnID09IENsYXNzRWxlbWVudFRhZzo6SW5zdGFuY2Ug
JiYgKmlkZW50ID09IHByb3BlcnR5TmFtZXMuY29uc3RydWN0b3I7CkBAIC0zMDMzLDkgKzMwMzIs
OSBAQCBwYXJzZU1ldGhvZDoKICAgICAgICAgICAgICAgICAiQ2Fubm90IGRlY2xhcmUgYSBzdGF0
aWMgbWV0aG9kIG5hbWVkICdwcm90b3R5cGUnIik7CiAKICAgICAgICAgICAgIGlmIChjb21wdXRl
ZFByb3BlcnR5TmFtZSkgewotICAgICAgICAgICAgICAgIHByb3BlcnR5ID0gY29udGV4dC5jcmVh
dGVQcm9wZXJ0eShjb21wdXRlZFByb3BlcnR5TmFtZSwgbWV0aG9kLCB0eXBlLCBQcm9wZXJ0eU5v
ZGU6OlVua25vd24sIGFsd2F5c1N0cmljdEluc2lkZUNsYXNzLCBTdXBlckJpbmRpbmc6Ok5lZWRl
ZCwgdGFnKTsKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eSA9IGNvbnRleHQuY3JlYXRlUHJvcGVy
dHkoY29tcHV0ZWRQcm9wZXJ0eU5hbWUsIG1ldGhvZCwgdHlwZSwgUHJvcGVydHlOb2RlOjpVbmtu
b3duLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgdGFnKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgcHJvcGVydHkgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KG1ldGhvZElu
Zm8ubmFtZSwgbWV0aG9kLCB0eXBlLCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIGFsd2F5c1N0cmlj
dEluc2lkZUNsYXNzLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgSW5mZXJOYW1lOjpBbGxvd2VkLCB0
YWcpOworICAgICAgICAgICAgICAgIHByb3BlcnR5ID0gY29udGV4dC5jcmVhdGVQcm9wZXJ0eSht
ZXRob2RJbmZvLm5hbWUsIG1ldGhvZCwgdHlwZSwgUHJvcGVydHlOb2RlOjpVbmtub3duLCBTdXBl
ckJpbmRpbmc6Ok5lZWRlZCwgSW5mZXJOYW1lOjpBbGxvd2VkLCB0YWcpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAKQEAgLTQxMDQsNyArNDEwMyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQmluYXJ5RXhw
cmVzCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcm9wZXJ0
eShUcmVlQnVpbGRlciYgY29udGV4dCwgYm9vbCBjb21wbGV0ZSkKK3RlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByb3BlcnR5
KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUg
PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU7CiAgICAgYm9vbCB3YXNJZGVudCA9IGZhbHNl
OwpAQCAtNDE0NSw3ICs0MTQ0LDcgQEAgbmFtZWRQcm9wZXJ0eToKICAgICAgICAgdW5zaWduZWQg
Z2V0dGVyT3JTZXR0ZXJTdGFydE9mZnNldCA9IHRva2VuU3RhcnQoKTsKICAgICAgICAgSlNUb2tl
biBpZGVudFRva2VuID0gbV90b2tlbjsKIAotICAgICAgICBpZiAoY29tcGxldGUgfHwgKHdhc0lk
ZW50ICYmICFpc0dlbmVyYXRvck1ldGhvZFBhcnNlTW9kZShwYXJzZU1vZGUpICAmJiAoKmlkZW50
ID09IG1fdm0ucHJvcGVydHlOYW1lcy0+Z2V0IHx8ICppZGVudCA9PSBtX3ZtLnByb3BlcnR5TmFt
ZXMtPnNldCkpKQorICAgICAgICBpZiAod2FzSWRlbnQgJiYgIWlzR2VuZXJhdG9yTWV0aG9kUGFy
c2VNb2RlKHBhcnNlTW9kZSkgJiYgKCppZGVudCA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmdldCB8
fCAqaWRlbnQgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5zZXQpKQogICAgICAgICAgICAgbmV4dEV4
cGVjdElkZW50aWZpZXIoTGV4ZXJGbGFnczo6SWdub3JlUmVzZXJ2ZWRXb3Jkcyk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIG5leHRFeHBlY3RJZGVudGlmaWVyKFRyZWVCdWlsZGVyOjpEb250
QnVpbGRLZXl3b3JkcyB8IExleGVyRmxhZ3M6Oklnbm9yZVJlc2VydmVkV29yZHMpOwpAQCAtNDE1
NiwxMyArNDE1NSwxMyBAQCBuYW1lZFByb3BlcnR5OgogICAgICAgICAgICAgZmFpbElmRmFsc2Uo
bm9kZSwgIkNhbm5vdCBwYXJzZSBleHByZXNzaW9uIGZvciBwcm9wZXJ0eSBkZWNsYXJhdGlvbiIp
OwogICAgICAgICAgICAgY29udGV4dC5zZXRFbmRPZmZzZXQobm9kZSwgbV9sZXhlci0+Y3VycmVu
dE9mZnNldCgpKTsKICAgICAgICAgICAgIEluZmVyTmFtZSBpbmZlck5hbWUgPSBpZGVudCAmJiAq
aWRlbnQgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8gPyBJbmZlck5hbWU6
OkRpc2FsbG93ZWQgOiBJbmZlck5hbWU6OkFsbG93ZWQ7Ci0gICAgICAgICAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVQcm9wZXJ0eShpZGVudCwgbm9kZSwgUHJvcGVydHlOb2RlOjpDb25zdGFudCwg
UHJvcGVydHlOb2RlOjpVbmtub3duLCBjb21wbGV0ZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQs
IGluZmVyTmFtZSwgQ2xhc3NFbGVtZW50VGFnOjpObyk7CisgICAgICAgICAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVQcm9wZXJ0eShpZGVudCwgbm9kZSwgUHJvcGVydHlOb2RlOjpDb25zdGFudCwg
UHJvcGVydHlOb2RlOjpVbmtub3duLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgaW5mZXJOYW1l
LCBDbGFzc0VsZW1lbnRUYWc6Ok5vKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtYXRjaChP
UEVOUEFSRU4pKSB7CiAgICAgICAgICAgICBhdXRvIG1ldGhvZCA9IHBhcnNlUHJvcGVydHlNZXRo
b2QoY29udGV4dCwgaWRlbnQsIHBhcnNlTW9kZSk7CiAgICAgICAgICAgICBwcm9wYWdhdGVFcnJv
cigpOwotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHkoaWRlbnQsIG1l
dGhvZCwgUHJvcGVydHlOb2RlOjpDb25zdGFudCwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCwg
Y29tcGxldGUsIFN1cGVyQmluZGluZzo6TmVlZGVkLCBJbmZlck5hbWU6OkFsbG93ZWQsIENsYXNz
RWxlbWVudFRhZzo6Tm8pOworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVy
dHkoaWRlbnQsIG1ldGhvZCwgUHJvcGVydHlOb2RlOjpDb25zdGFudCwgUHJvcGVydHlOb2RlOjpL
bm93bkRpcmVjdCwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIEluZmVyTmFtZTo6QWxsb3dlZCwgQ2xh
c3NFbGVtZW50VGFnOjpObyk7CiAgICAgICAgIH0KICAgICAgICAgZmFpbElmVHJ1ZShwYXJzZU1v
ZGUgIT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlLCAiRXhwZWN0ZWQgYSBwYXJlbnRoZXNp
cyBmb3IgYXJndW1lbnQgbGlzdCIpOwogCkBAIC00MTc2LDcgKzQxNzUsNyBAQCBuYW1lZFByb3Bl
cnR5OgogICAgICAgICAgICAgaWYgKGN1cnJlbnRTY29wZSgpLT5pc0Fycm93RnVuY3Rpb24oKSkK
ICAgICAgICAgICAgICAgICBjdXJyZW50U2NvcGUoKS0+c2V0SW5uZXJBcnJvd0Z1bmN0aW9uVXNl
c0V2YWwoKTsKICAgICAgICAgICAgIFRyZWVFeHByZXNzaW9uIG5vZGUgPSBjb250ZXh0LmNyZWF0
ZVJlc29sdmUobG9jYXRpb24sICppZGVudCwgc3RhcnQsIGxhc3RUb2tlbkVuZFBvc2l0aW9uKCkp
OwotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHkoaWRlbnQsIG5vZGUs
IHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4oUHJvcGVydHlOb2RlOjpDb25zdGFudCB8
IFByb3BlcnR5Tm9kZTo6U2hvcnRoYW5kKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCwgY29t
cGxldGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBJbmZlck5hbWU6OkFsbG93ZWQsIENsYXNz
RWxlbWVudFRhZzo6Tm8pOworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVy
dHkoaWRlbnQsIG5vZGUsIHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4oUHJvcGVydHlO
b2RlOjpDb25zdGFudCB8IFByb3BlcnR5Tm9kZTo6U2hvcnRoYW5kKSwgUHJvcGVydHlOb2RlOjpL
bm93bkRpcmVjdCwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIEluZmVyTmFtZTo6QWxsb3dlZCwg
Q2xhc3NFbGVtZW50VGFnOjpObyk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobWF0Y2goRVFV
QUwpKSAvLyBDb3ZlckluaXRpYWxpemVkTmFtZSBpcyBleGNsdXNpdmUgdG8gQmluZGluZ1BhdHRl
cm4gYW5kIEFzc2lnbm1lbnRQYXR0ZXJuCkBAIC00MTg5LDcgKzQxODgsNyBAQCBuYW1lZFByb3Bl
cnR5OgogICAgICAgICAgICAgdHlwZSA9IFByb3BlcnR5Tm9kZTo6U2V0dGVyOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBmYWlsV2l0aE1lc3NhZ2UoIkV4cGVjdGVkIGEgJzonIGZvbGxvd2lu
ZyB0aGUgcHJvcGVydHkgbmFtZSAnIiwgaWRlbnQtPmltcGwoKSwgIiciKTsKLSAgICAgICAgcmV0
dXJuIHBhcnNlR2V0dGVyU2V0dGVyKGNvbnRleHQsIGNvbXBsZXRlLCB0eXBlLCBnZXR0ZXJPclNl
dHRlclN0YXJ0T2Zmc2V0LCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIENsYXNzRWxlbWVudFRhZzo6
Tm8pOworICAgICAgICByZXR1cm4gcGFyc2VHZXR0ZXJTZXR0ZXIoY29udGV4dCwgdHlwZSwgZ2V0
dGVyT3JTZXR0ZXJTdGFydE9mZnNldCwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBDbGFzc0VsZW1l
bnRUYWc6Ok5vKTsKICAgICB9CiAgICAgY2FzZSBET1VCTEU6CiAgICAgY2FzZSBJTlRFR0VSOiB7
CkBAIC00MjAwLDcgKzQxOTksNyBAQCBuYW1lZFByb3BlcnR5OgogICAgICAgICAgICAgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQgPSBtX3BhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1ha2VO
dW1lcmljSWRlbnRpZmllcihjb25zdF9jYXN0PFZNJj4obV92bSksIHByb3BlcnR5TmFtZSk7CiAg
ICAgICAgICAgICBhdXRvIG1ldGhvZCA9IHBhcnNlUHJvcGVydHlNZXRob2QoY29udGV4dCwgJmlk
ZW50LCBwYXJzZU1vZGUpOwogICAgICAgICAgICAgcHJvcGFnYXRlRXJyb3IoKTsKLSAgICAgICAg
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KCZpZGVudCwgbWV0aG9kLCBQcm9wZXJ0
eU5vZGU6OkNvbnN0YW50LCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIGNvbXBsZXRlLCBTdXBlckJp
bmRpbmc6Ok5lZWRlZCwgSW5mZXJOYW1lOjpBbGxvd2VkLCBDbGFzc0VsZW1lbnRUYWc6Ok5vKTsK
KyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KCZpZGVudCwgbWV0aG9k
LCBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50LCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIFN1cGVyQmlu
ZGluZzo6TmVlZGVkLCBJbmZlck5hbWU6OkFsbG93ZWQsIENsYXNzRWxlbWVudFRhZzo6Tm8pOwog
ICAgICAgICB9CiAgICAgICAgIGZhaWxJZlRydWUocGFyc2VNb2RlICE9IFNvdXJjZVBhcnNlTW9k
ZTo6TWV0aG9kTW9kZSwgIkV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3Qi
KTsKIApAQCAtNDIwOCw3ICs0MjA3LDcgQEAgbmFtZWRQcm9wZXJ0eToKICAgICAgICAgVHJlZUV4
cHJlc3Npb24gbm9kZSA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAg
ICAgIGZhaWxJZkZhbHNlKG5vZGUsICJDYW5ub3QgcGFyc2UgZXhwcmVzc2lvbiBmb3IgcHJvcGVy
dHkgZGVjbGFyYXRpb24iKTsKICAgICAgICAgY29udGV4dC5zZXRFbmRPZmZzZXQobm9kZSwgbV9s
ZXhlci0+Y3VycmVudE9mZnNldCgpKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJv
cGVydHkoY29uc3RfY2FzdDxWTSY+KG1fdm0pLCBtX3BhcnNlckFyZW5hLCBwcm9wZXJ0eU5hbWUs
IG5vZGUsIFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQsIFByb3BlcnR5Tm9kZTo6VW5rbm93biwgY29t
cGxldGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBDbGFzc0VsZW1lbnRUYWc6Ok5vKTsKKyAg
ICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHkoY29uc3RfY2FzdDxWTSY+KG1fdm0p
LCBtX3BhcnNlckFyZW5hLCBwcm9wZXJ0eU5hbWUsIG5vZGUsIFByb3BlcnR5Tm9kZTo6Q29uc3Rh
bnQsIFByb3BlcnR5Tm9kZTo6VW5rbm93biwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIENsYXNz
RWxlbWVudFRhZzo6Tm8pOwogICAgIH0KICAgICBjYXNlIEJJR0lOVDogewogICAgICAgICBjb25z
dCBJZGVudGlmaWVyKiBpZGVudCA9ICZtX3BhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1h
a2VCaWdJbnREZWNpbWFsSWRlbnRpZmllcihjb25zdF9jYXN0PFZNJj4obV92bSksICptX3Rva2Vu
Lm1fZGF0YS5iaWdJbnRTdHJpbmcsIG1fdG9rZW4ubV9kYXRhLnJhZGl4KTsKQEAgLTQyMTcsNyAr
NDIxNiw3IEBAIG5hbWVkUHJvcGVydHk6CiAgICAgICAgIGlmIChtYXRjaChPUEVOUEFSRU4pKSB7
CiAgICAgICAgICAgICBhdXRvIG1ldGhvZCA9IHBhcnNlUHJvcGVydHlNZXRob2QoY29udGV4dCwg
aWRlbnQsIHBhcnNlTW9kZSk7CiAgICAgICAgICAgICBwcm9wYWdhdGVFcnJvcigpOwotICAgICAg
ICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHkoaWRlbnQsIG1ldGhvZCwgUHJvcGVy
dHlOb2RlOjpDb25zdGFudCwgUHJvcGVydHlOb2RlOjpVbmtub3duLCBjb21wbGV0ZSwgU3VwZXJC
aW5kaW5nOjpOZWVkZWQsIEluZmVyTmFtZTo6QWxsb3dlZCwgQ2xhc3NFbGVtZW50VGFnOjpObyk7
CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVQcm9wZXJ0eShpZGVudCwgbWV0aG9k
LCBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50LCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIFN1cGVyQmlu
ZGluZzo6TmVlZGVkLCBJbmZlck5hbWU6OkFsbG93ZWQsIENsYXNzRWxlbWVudFRhZzo6Tm8pOwog
ICAgICAgICB9CiAgICAgICAgIGZhaWxJZlRydWUocGFyc2VNb2RlICE9IFNvdXJjZVBhcnNlTW9k
ZTo6TWV0aG9kTW9kZSwgIkV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3Qi
KTsKIApAQCAtNDIyNSw3ICs0MjI0LDcgQEAgbmFtZWRQcm9wZXJ0eToKICAgICAgICAgVHJlZUV4
cHJlc3Npb24gbm9kZSA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAg
ICAgIGZhaWxJZkZhbHNlKG5vZGUsICJDYW5ub3QgcGFyc2UgZXhwcmVzc2lvbiBmb3IgcHJvcGVy
dHkgZGVjbGFyYXRpb24iKTsKICAgICAgICAgY29udGV4dC5zZXRFbmRPZmZzZXQobm9kZSwgbV9s
ZXhlci0+Y3VycmVudE9mZnNldCgpKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJv
cGVydHkoaWRlbnQsIG5vZGUsIFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQsIFByb3BlcnR5Tm9kZTo6
VW5rbm93biwgY29tcGxldGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBJbmZlck5hbWU6OkFs
bG93ZWQsIENsYXNzRWxlbWVudFRhZzo6Tm8pOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVQcm9wZXJ0eShpZGVudCwgbm9kZSwgUHJvcGVydHlOb2RlOjpDb25zdGFudCwgUHJvcGVydHlO
b2RlOjpVbmtub3duLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgSW5mZXJOYW1lOjpBbGxvd2Vk
LCBDbGFzc0VsZW1lbnRUYWc6Ok5vKTsKICAgICB9CiAgICAgY2FzZSBPUEVOQlJBQ0tFVDogewog
ICAgICAgICBuZXh0KCk7CkBAIC00MjM2LDcgKzQyMzUsNyBAQCBuYW1lZFByb3BlcnR5OgogICAg
ICAgICBpZiAobWF0Y2goT1BFTlBBUkVOKSkgewogICAgICAgICAgICAgYXV0byBtZXRob2QgPSBw
YXJzZVByb3BlcnR5TWV0aG9kKGNvbnRleHQsICZtX3ZtLnByb3BlcnR5TmFtZXMtPm51bGxJZGVu
dGlmaWVyLCBwYXJzZU1vZGUpOwogICAgICAgICAgICAgcHJvcGFnYXRlRXJyb3IoKTsKLSAgICAg
ICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KHByb3BlcnR5TmFtZSwgbWV0aG9k
LCBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQg
fCBQcm9wZXJ0eU5vZGU6OkNvbXB1dGVkKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCwgY29t
cGxldGUsIFN1cGVyQmluZGluZzo6TmVlZGVkLCBDbGFzc0VsZW1lbnRUYWc6Ok5vKTsKKyAgICAg
ICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KHByb3BlcnR5TmFtZSwgbWV0aG9k
LCBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQg
fCBQcm9wZXJ0eU5vZGU6OkNvbXB1dGVkKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCwgU3Vw
ZXJCaW5kaW5nOjpOZWVkZWQsIENsYXNzRWxlbWVudFRhZzo6Tm8pOwogICAgICAgICB9CiAgICAg
ICAgIGZhaWxJZlRydWUocGFyc2VNb2RlICE9IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSwg
IkV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QiKTsKIApAQCAtNDI0NCw3
ICs0MjQzLDcgQEAgbmFtZWRQcm9wZXJ0eToKICAgICAgICAgVHJlZUV4cHJlc3Npb24gbm9kZSA9
IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAgIGZhaWxJZkZhbHNl
KG5vZGUsICJDYW5ub3QgcGFyc2UgZXhwcmVzc2lvbiBmb3IgcHJvcGVydHkgZGVjbGFyYXRpb24i
KTsKICAgICAgICAgY29udGV4dC5zZXRFbmRPZmZzZXQobm9kZSwgbV9sZXhlci0+Y3VycmVudE9m
ZnNldCgpKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHkocHJvcGVydHlO
YW1lLCBub2RlLCBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KFByb3BlcnR5Tm9kZTo6
Q29uc3RhbnQgfCBQcm9wZXJ0eU5vZGU6OkNvbXB1dGVkKSwgUHJvcGVydHlOb2RlOjpVbmtub3du
LCBjb21wbGV0ZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIENsYXNzRWxlbWVudFRhZzo6Tm8p
OworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIG5v
ZGUsIHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4oUHJvcGVydHlOb2RlOjpDb25zdGFu
dCB8IFByb3BlcnR5Tm9kZTo6Q29tcHV0ZWQpLCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIFN1cGVy
QmluZGluZzo6Tm90TmVlZGVkLCBDbGFzc0VsZW1lbnRUYWc6Ok5vKTsKICAgICB9CiAgICAgY2Fz
ZSBET1RET1RET1Q6IHsKICAgICAgICAgYXV0byBzcHJlYWRMb2NhdGlvbiA9IG1fdG9rZW4ubV9s
b2NhdGlvbjsKQEAgLTQyNTQsNyArNDI1Myw3IEBAIG5hbWVkUHJvcGVydHk6CiAgICAgICAgIFRy
ZWVFeHByZXNzaW9uIGVsZW0gPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uT3JQcm9wYWdhdGVF
cnJvckNsYXNzKGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShlbGVtLCAiQ2Fubm90IHBh
cnNlIHN1YmplY3Qgb2YgYSBzcHJlYWQgb3BlcmF0aW9uIik7CiAgICAgICAgIGF1dG8gbm9kZSA9
IGNvbnRleHQuY3JlYXRlT2JqZWN0U3ByZWFkRXhwcmVzc2lvbihzcHJlYWRMb2NhdGlvbiwgZWxl
bSwgc3RhcnQsIGRpdm90LCBtX2xhc3RUb2tlbkVuZFBvc2l0aW9uKTsKLSAgICAgICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlUHJvcGVydHkobm9kZSwgUHJvcGVydHlOb2RlOjpTcHJlYWQsIFByb3Bl
cnR5Tm9kZTo6VW5rbm93biwgY29tcGxldGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBDbGFz
c0VsZW1lbnRUYWc6Ok5vKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHko
bm9kZSwgUHJvcGVydHlOb2RlOjpTcHJlYWQsIFByb3BlcnR5Tm9kZTo6VW5rbm93biwgU3VwZXJC
aW5kaW5nOjpOb3ROZWVkZWQsIENsYXNzRWxlbWVudFRhZzo6Tm8pOwogICAgIH0KICAgICBkZWZh
dWx0OgogICAgICAgICBmYWlsSWZGYWxzZShtX3Rva2VuLm1fdHlwZSAmIEtleXdvcmRUb2tlbkZs
YWcsICJFeHBlY3RlZCBhIHByb3BlcnR5IG5hbWUiKTsKQEAgLTQyNzYsNyArNDI3NSw3IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlUHJvcGVydHlNZXRoCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+
Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VHZXR0ZXJTZXR0ZXIoVHJlZUJ1aWxkZXImIGNvbnRleHQsIGJvb2wgc3RyaWN0
LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgdW5zaWduZWQgZ2V0dGVyT3JTZXR0ZXJTdGFydE9m
ZnNldCwKK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUdldHRlclNldHRlcihUcmVlQnVpbGRlciYgY29udGV4dCwgUHJvcGVy
dHlOb2RlOjpUeXBlIHR5cGUsIHVuc2lnbmVkIGdldHRlck9yU2V0dGVyU3RhcnRPZmZzZXQsCiAg
ICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgQ2xhc3NFbGVtZW50VGFnIHRhZykK
IHsKICAgICBjb25zdCBJZGVudGlmaWVyKiBzdHJpbmdQcm9wZXJ0eU5hbWUgPSBudWxscHRyOwpA
QCAtNDMxNiwyMiArNDMxNSwxMiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQ
cm9wZXJ0eSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZXR0ZXJTZXR0ZXIoVAogICAgIH0KIAog
ICAgIGlmIChzdHJpbmdQcm9wZXJ0eU5hbWUpCi0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0
ZUdldHRlck9yU2V0dGVyUHJvcGVydHkobG9jYXRpb24sIHR5cGUsIHN0cmljdCwgc3RyaW5nUHJv
cGVydHlOYW1lLCBpbmZvLCB0YWcpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVHZXR0
ZXJPclNldHRlclByb3BlcnR5KGxvY2F0aW9uLCB0eXBlLCBzdHJpbmdQcm9wZXJ0eU5hbWUsIGlu
Zm8sIHRhZyk7CiAKICAgICBpZiAoY29tcHV0ZWRQcm9wZXJ0eU5hbWUpCi0gICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkobG9jYXRpb24sIHN0YXRpY19j
YXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlwZSB8IFByb3BlcnR5Tm9kZTo6Q29tcHV0ZWQpLCBz
dHJpY3QsIGNvbXB1dGVkUHJvcGVydHlOYW1lLCBpbmZvLCB0YWcpOworICAgICAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KGxvY2F0aW9uLCBzdGF0aWNfY2Fz
dDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCBQcm9wZXJ0eU5vZGU6OkNvbXB1dGVkKSwgY29t
cHV0ZWRQcm9wZXJ0eU5hbWUsIGluZm8sIHRhZyk7CiAKLSAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVHZXR0ZXJPclNldHRlclByb3BlcnR5KGNvbnN0X2Nhc3Q8Vk0mPihtX3ZtKSwgbV9wYXJzZXJB
cmVuYSwgbG9jYXRpb24sIHR5cGUsIHN0cmljdCwgbnVtZXJpY1Byb3BlcnR5TmFtZSwgaW5mbywg
dGFnKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6c2hvdWxkQ2hlY2tQcm9wZXJ0
eUZvclVuZGVyc2NvcmVQcm90b0R1cGxpY2F0ZShUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3Qg
VHJlZVByb3BlcnR5JiBwcm9wZXJ0eSkKLXsKLSAgICBpZiAoIWNvbnRleHQuZ2V0TmFtZShwcm9w
ZXJ0eSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIEEgQ29uc3RhbnQgcHJvcGVy
dHkgdGhhdCBpcyBub3QgYSBDb21wdXRlZCBvciBTaG9ydGhhbmQgQ29uc3RhbnQgcHJvcGVydHku
Ci0gICAgcmV0dXJuIGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSkgPT0gUHJvcGVydHlOb2RlOjpD
b25zdGFudDsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5
KGNvbnN0X2Nhc3Q8Vk0mPihtX3ZtKSwgbV9wYXJzZXJBcmVuYSwgbG9jYXRpb24sIHR5cGUsIG51
bWVyaWNQcm9wZXJ0eU5hbWUsIGluZm8sIHRhZyk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBM
ZXhlclR5cGU+CkBAIC00Mzc3LDEyICs0MzY2LDEwIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlT2JqZWN0TGl0ZXJh
CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU9iamVjdExpdGVyYWwobG9jYXRpb24pOwog
ICAgIH0KICAgICAKLSAgICBUcmVlUHJvcGVydHkgcHJvcGVydHkgPSBwYXJzZVByb3BlcnR5KGNv
bnRleHQsIHRydWUpOworICAgIFRyZWVQcm9wZXJ0eSBwcm9wZXJ0eSA9IHBhcnNlUHJvcGVydHko
Y29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UocHJvcGVydHksICJDYW5ub3QgcGFyc2Ugb2JqZWN0
IGxpdGVyYWwgcHJvcGVydHkiKTsKIAotICAgIGJvb2wgc2VlblVuZGVyc2NvcmVQcm90byA9IGZh
bHNlOwotICAgIGlmIChzaG91bGRDaGVja1Byb3BlcnR5Rm9yVW5kZXJzY29yZVByb3RvRHVwbGlj
YXRlKGNvbnRleHQsIHByb3BlcnR5KSkKLSAgICAgICAgc2VlblVuZGVyc2NvcmVQcm90byA9ICpj
b250ZXh0LmdldE5hbWUocHJvcGVydHkpID09IG1fdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29y
ZVByb3RvOworICAgIGJvb2wgc2VlblByb3RvU2V0dGVyID0gY29udGV4dC5pc1VuZGVyc2NvcmVQ
cm90b1NldHRlcihwcm9wZXJ0eSk7CiAKICAgICBUcmVlUHJvcGVydHlMaXN0IHByb3BlcnR5TGlz
dCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KGxvY2F0aW9uLCBwcm9wZXJ0eSk7CiAgICAg
VHJlZVByb3BlcnR5TGlzdCB0YWlsID0gcHJvcGVydHlMaXN0OwpAQCAtNDM5MSwxMyArNDM3OCwx
MiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZU9iamVjdExpdGVyYQogICAgICAgICBpZiAobWF0Y2goQ0xPU0VCUkFD
RSkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgSlNUb2tlbkxvY2F0aW9uIHByb3BlcnR5
TG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKLSAgICAgICAgcHJvcGVydHkgPSBwYXJzZVByb3Bl
cnR5KGNvbnRleHQsIHRydWUpOworICAgICAgICBwcm9wZXJ0eSA9IHBhcnNlUHJvcGVydHkoY29u
dGV4dCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHByb3BlcnR5LCAiQ2Fubm90IHBhcnNlIG9iamVj
dCBsaXRlcmFsIHByb3BlcnR5Iik7Ci0gICAgICAgIGlmIChzaG91bGRDaGVja1Byb3BlcnR5Rm9y
VW5kZXJzY29yZVByb3RvRHVwbGljYXRlKGNvbnRleHQsIHByb3BlcnR5KSkgewotICAgICAgICAg
ICAgaWYgKCpjb250ZXh0LmdldE5hbWUocHJvcGVydHkpID09IG1fdm0ucHJvcGVydHlOYW1lcy0+
dW5kZXJzY29yZVByb3RvKSB7Ci0gICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHNl
ZW5VbmRlcnNjb3JlUHJvdG8sICJBdHRlbXB0ZWQgdG8gcmVkZWZpbmUgX19wcm90b19fIHByb3Bl
cnR5Iik7Ci0gICAgICAgICAgICAgICAgc2VlblVuZGVyc2NvcmVQcm90byA9IHRydWU7Ci0gICAg
ICAgICAgICB9CisgICAgICAgIGlmIChjb250ZXh0LmlzVW5kZXJzY29yZVByb3RvU2V0dGVyKHBy
b3BlcnR5KSkgeworICAgICAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1f
X3Byb3RvX18tcHJvcGVydHktbmFtZXMtaW4tb2JqZWN0LWluaXRpYWxpemVycworICAgICAgICAg
ICAgc2VtYW50aWNGYWlsSWZUcnVlKHNlZW5Qcm90b1NldHRlciwgIkF0dGVtcHRlZCB0byByZWRl
ZmluZSBfX3Byb3RvX18gcHJvcGVydHkiKTsKKyAgICAgICAgICAgIHNlZW5Qcm90b1NldHRlciA9
IHRydWU7CiAgICAgICAgIH0KICAgICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlM
aXN0KHByb3BlcnR5TG9jYXRpb24sIHByb3BlcnR5LCB0YWlsKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCAxZjVkOTMyYzNmNTc1ZWIyMDU1NzQwNGU1NjQx
ODdmYmY3NWI5NjY5Li40NmE0ZDNhODBkNzZlMzE4ZDg4Njk4NDEzMTVkZDIxMTdiNTEyYmMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTE3NjAsOSArMTc2MCw5IEBA
IHByaXZhdGU6CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5F
IFRyZWVFeHByZXNzaW9uIHBhcnNlQXN5bmNGdW5jdGlvbkV4cHJlc3Npb24oVHJlZUJ1aWxkZXIm
KTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUFy
Z3VtZW50cyBwYXJzZUFyZ3VtZW50cyhUcmVlQnVpbGRlciYpOwogICAgIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRXhwcmVzc2lvbiBwYXJzZUFyZ3VtZW50
KFRyZWVCdWlsZGVyJiwgQXJndW1lbnRUeXBlJik7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlUHJvcGVydHkgcGFyc2VQcm9wZXJ0eShUcmVlQnVpbGRlciYsIGJvb2wgc3Ry
aWN0KTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBwYXJz
ZVByb3BlcnR5KFRyZWVCdWlsZGVyJik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlRXhwcmVzc2lvbiBwYXJzZVByb3BlcnR5TWV0aG9kKFRyZWVCdWlsZGVyJiBjb250ZXh0
LCBjb25zdCBJZGVudGlmaWVyKiBtZXRob2ROYW1lLCBTb3VyY2VQYXJzZU1vZGUpOwotICAgIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IHBhcnNlR2V0dGVyU2V0dGVy
KFRyZWVCdWlsZGVyJiwgYm9vbCBzdHJpY3QsIFByb3BlcnR5Tm9kZTo6VHlwZSwgdW5zaWduZWQg
Z2V0dGVyT3JTZXR0ZXJTdGFydE9mZnNldCwgQ29uc3RydWN0b3JLaW5kLCBDbGFzc0VsZW1lbnRU
YWcpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IHBhcnNl
R2V0dGVyU2V0dGVyKFRyZWVCdWlsZGVyJiwgUHJvcGVydHlOb2RlOjpUeXBlLCB1bnNpZ25lZCBn
ZXR0ZXJPclNldHRlclN0YXJ0T2Zmc2V0LCBDb25zdHJ1Y3RvcktpbmQsIENsYXNzRWxlbWVudFRh
Zyk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVG
dW5jdGlvbkJvZHkgcGFyc2VGdW5jdGlvbkJvZHkoVHJlZUJ1aWxkZXImLCBTeW50YXhDaGVja2Vy
JiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQs
IGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgQ29uc3RydWN0b3JL
aW5kLCBTdXBlckJpbmRpbmcsIEZ1bmN0aW9uQm9keVR5cGUsIHVuc2lnbmVkLCBTb3VyY2VQYXJz
ZU1vZGUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBi
b29sIHBhcnNlRm9ybWFsUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIFRyZWVGb3JtYWxQYXJhbWV0
ZXJMaXN0LCBib29sIGlzQXJyb3dGdW5jdGlvbiwgYm9vbCBpc01ldGhvZCwgdW5zaWduZWQmKTsK
ICAgICBlbnVtIFZhckRlY2xhcmF0aW9uTGlzdENvbnRleHQgeyBGb3JMb29wQ29udGV4dCwgVmFy
RGVjbGFyYXRpb25Db250ZXh0IH07CkBAIC0xODAyLDggKzE4MDIsNiBAQCBwcml2YXRlOgogICAg
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVC
dWlsZGVyOjpUZW1wbGF0ZVN0cmluZyBwYXJzZVRlbXBsYXRlU3RyaW5nKFRyZWVCdWlsZGVyJiBj
b250ZXh0LCBib29sIGlzVGVtcGxhdGVIZWFkLCB0eXBlbmFtZSBMZXhlclR5cGU6OlJhd1N0cmlu
Z3NCdWlsZE1vZGUsIGJvb2wmIGVsZW1lbnRJc1RhaWwpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpUZW1wbGF0ZUxp
dGVyYWwgcGFyc2VUZW1wbGF0ZUxpdGVyYWwoVHJlZUJ1aWxkZXImLCB0eXBlbmFtZSBMZXhlclR5
cGU6OlJhd1N0cmluZ3NCdWlsZE1vZGUpOwogCi0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBBTFdBWVNfSU5MSU5FIGJvb2wgc2hvdWxkQ2hlY2tQcm9wZXJ0eUZvclVuZGVyc2NvcmVQ
cm90b0R1cGxpY2F0ZShUcmVlQnVpbGRlciYsIGNvbnN0IFRyZWVQcm9wZXJ0eSYpOwotCiAgICAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgY29uc3QgY2hhciogbWV0
YVByb3BlcnR5TmFtZShUcmVlQnVpbGRlciYsIFRyZWVFeHByZXNzaW9uKTsKIAogICAgIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBib29sIGlzU2ltcGxlQXNzaWdu
bWVudFRhcmdldChUcmVlQnVpbGRlciYsIFRyZWVFeHByZXNzaW9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXggMTlhNTk0MjZiMDYzMGUwZTlk
YjNlMzViOTkwZjk1YmI1NmViOGY2Mi4uNDNhM2E3ZTg1NGE2YjQyMDczMDAwMjI4ODIyZDU0YmNm
YTVjNmYyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhD
aGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2Vy
LmgKQEAgLTY0LDcgKzY0LDggQEAgcHVibGljOgogICAgICAgICBTeW50YXhDaGVja2VyKiBtX2Nv
bnRleHQ7CiAgICAgfTsKICAgICAKLSAgICBTeW50YXhDaGVja2VyKFZNJiAsIHZvaWQqKQorICAg
IFN5bnRheENoZWNrZXIoVk0mIHZtLCB2b2lkKikKKyAgICAgICAgOiBtX3ZtKHZtKQogICAgIHsK
ICAgICB9CiAKQEAgLTk5LDIyICsxMDAsMTggQEAgcHVibGljOgogICAgIHR5cGVkZWYgRXhwcmVz
c2lvblR5cGUgQ29tbWE7CiAgICAgc3RydWN0IFByb3BlcnR5IHsKICAgICAgICAgQUxXQVlTX0lO
TElORSBQcm9wZXJ0eSh2b2lkKiA9IG51bGxwdHIpCi0gICAgICAgICAgICA6IHR5cGUoKFByb3Bl
cnR5Tm9kZTo6VHlwZSkwKQorICAgICAgICAgICAgOiBpc1BhcnNpbmdFcnJvcih0cnVlKQorICAg
ICAgICAgICAgLCBpc1VuZGVyc2NvcmVQcm90b1NldHRlcihmYWxzZSkKICAgICAgICAgewogICAg
ICAgICB9Ci0gICAgICAgIEFMV0FZU19JTkxJTkUgUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciog
aWRlbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eSkKLSAgICAgICAgICAgIDogbmFtZShpZGVudCkK
LSAgICAgICAgICAgICwgdHlwZSh0eSkKKyAgICAgICAgQUxXQVlTX0lOTElORSBQcm9wZXJ0eShQ
cm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgYm9vbCBpc1VuZGVyc2NvcmVQcm90b1NldHRlciA9IGZh
bHNlKQorICAgICAgICAgICAgOiBpc1BhcnNpbmdFcnJvcighdHlwZSkKKyAgICAgICAgICAgICwg
aXNVbmRlcnNjb3JlUHJvdG9TZXR0ZXIoaXNVbmRlcnNjb3JlUHJvdG9TZXR0ZXIpCiAgICAgICAg
IHsKICAgICAgICAgfQotICAgICAgICBBTFdBWVNfSU5MSU5FIFByb3BlcnR5KFByb3BlcnR5Tm9k
ZTo6VHlwZSB0eSkKLSAgICAgICAgICAgIDogbmFtZShudWxscHRyKQotICAgICAgICAgICAgLCB0
eXBlKHR5KQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgQUxXQVlTX0lOTElORSBib29s
IG9wZXJhdG9yISgpIHsgcmV0dXJuICF0eXBlOyB9Ci0gICAgICAgIGNvbnN0IElkZW50aWZpZXIq
IG5hbWU7Ci0gICAgICAgIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlOworICAgICAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgb3BlcmF0b3IhKCkgeyByZXR1cm4gaXNQYXJzaW5nRXJyb3I7IH0KKyAgICAg
ICAgYm9vbCBpc1BhcnNpbmdFcnJvcjsKKyAgICAgICAgYm9vbCBpc1VuZGVyc2NvcmVQcm90b1Nl
dHRlcjsKICAgICB9OwogICAgIHR5cGVkZWYgaW50IFByb3BlcnR5TGlzdDsKICAgICB0eXBlZGVm
IGludCBFbGVtZW50TGlzdDsKQEAgLTIxNSwyOCArMjEyLDIzIEBAIHB1YmxpYzoKIAogICAgIGlu
dCBjcmVhdGVBcmd1bWVudHNMaXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCkgeyByZXR1
cm4gQXJndW1lbnRzTGlzdFJlc3VsdDsgfQogICAgIGludCBjcmVhdGVBcmd1bWVudHNMaXN0KGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50KSB7IHJldHVybiBBcmd1bWVudHNMaXN0UmVz
dWx0OyB9Ci0gICAgUHJvcGVydHkgY3JlYXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciogbmFt
ZSwgaW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgUHJvcGVydHlOb2RlOjpQdXRUeXBlLCBi
b29sIGNvbXBsZXRlLCBTdXBlckJpbmRpbmcsIEluZmVyTmFtZSwgQ2xhc3NFbGVtZW50VGFnKQor
ICAgIFByb3BlcnR5IGNyZWF0ZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIGludCwg
UHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIFByb3BlcnR5Tm9kZTo6UHV0VHlwZSwgU3VwZXJCaW5k
aW5nIHN1cGVyQmluZGluZywgSW5mZXJOYW1lLCBDbGFzc0VsZW1lbnRUYWcpCiAgICAgewotICAg
ICAgICBpZiAoIWNvbXBsZXRlKQotICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5KHR5cGUpOwot
ICAgICAgICBBU1NFUlQobmFtZSk7Ci0gICAgICAgIHJldHVybiBQcm9wZXJ0eShuYW1lLCB0eXBl
KTsKKyAgICAgICAgcmV0dXJuIFByb3BlcnR5KHR5cGUsIFByb3BlcnR5Tm9kZTo6aXNVbmRlcnNj
b3JlUHJvdG9TZXR0ZXIobV92bSwgbmFtZSwgdHlwZSwgc3VwZXJCaW5kaW5nID09IFN1cGVyQmlu
ZGluZzo6TmVlZGVkKSk7CiAgICAgfQotICAgIFByb3BlcnR5IGNyZWF0ZVByb3BlcnR5KGludCwg
UHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIFByb3BlcnR5Tm9kZTo6UHV0VHlwZSwgYm9vbCwgU3Vw
ZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpCisgICAgUHJvcGVydHkgY3JlYXRlUHJvcGVydHko
aW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgUHJvcGVydHlOb2RlOjpQdXRUeXBlLCBTdXBl
ckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZykKICAgICB7CiAgICAgICAgIHJldHVybiBQcm9wZXJ0
eSh0eXBlKTsKICAgICB9Ci0gICAgUHJvcGVydHkgY3JlYXRlUHJvcGVydHkoVk0mIHZtLCBQYXJz
ZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGRvdWJsZSBuYW1lLCBpbnQsIFByb3BlcnR5Tm9kZTo6VHlw
ZSB0eXBlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUsIGJvb2wgY29tcGxldGUsIFN1cGVyQmluZGlu
ZywgQ2xhc3NFbGVtZW50VGFnKQorICAgIFByb3BlcnR5IGNyZWF0ZVByb3BlcnR5KFZNJiwgUGFy
c2VyQXJlbmEmLCBkb3VibGUsIGludCwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIFByb3BlcnR5
Tm9kZTo6UHV0VHlwZSwgU3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpCiAgICAgewotICAg
ICAgICBpZiAoIWNvbXBsZXRlKQotICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5KHR5cGUpOwot
ICAgICAgICByZXR1cm4gUHJvcGVydHkoJnBhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1h
a2VOdW1lcmljSWRlbnRpZmllcih2bSwgbmFtZSksIHR5cGUpOworICAgICAgICByZXR1cm4gUHJv
cGVydHkodHlwZSk7CiAgICAgfQotICAgIFByb3BlcnR5IGNyZWF0ZVByb3BlcnR5KGludCwgaW50
LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgUHJvcGVydHlOb2RlOjpQdXRUeXBlLCBib29sLCBT
dXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZykKKyAgICBQcm9wZXJ0eSBjcmVhdGVQcm9wZXJ0
eShpbnQsIGludCwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIFByb3BlcnR5Tm9kZTo6UHV0VHlw
ZSwgU3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpCiAgICAgewogICAgICAgICByZXR1cm4g
UHJvcGVydHkodHlwZSk7CiAgICAgfQotICAgIFByb3BlcnR5IGNyZWF0ZVByb3BlcnR5KGNvbnN0
IElkZW50aWZpZXIqLCBpbnQsIGludCwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIFByb3BlcnR5
Tm9kZTo6UHV0VHlwZSwgYm9vbCwgU3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpCisgICAg
UHJvcGVydHkgY3JlYXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBQcm9w
ZXJ0eU5vZGU6OlR5cGUgdHlwZSwgUHJvcGVydHlOb2RlOjpQdXRUeXBlLCBTdXBlckJpbmRpbmcs
IENsYXNzRWxlbWVudFRhZykKICAgICB7CiAgICAgICAgIHJldHVybiBQcm9wZXJ0eSh0eXBlKTsK
ICAgICB9CkBAIC0yOTEsMjIgKzI4MywxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRFeHBv
cnRTcGVjaWZpZXIoRXhwb3J0U3BlY2lmaWVyTGlzdCwgRXhwb3J0U3BlY2lmaWVyKSB7IH0KIAog
ICAgIGludCBhcHBlbmRDb25zdERlY2woY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBjb25z
dCBJZGVudGlmaWVyKiwgaW50KSB7IHJldHVybiBTdGF0ZW1lbnRSZXN1bHQ7IH0KLSAgICBQcm9w
ZXJ0eSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBib29sIHN0cmljdCwgY29uc3QgSWRlbnRpZmllciog
bmFtZSwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JiwgQ2xhc3NFbGVt
ZW50VGFnKQorICAgIFByb3BlcnR5IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGNvbnN0IElkZW50aWZp
ZXIqLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mLCBDbGFzc0VsZW1l
bnRUYWcpCiAgICAgewotICAgICAgICBBU1NFUlQobmFtZSk7Ci0gICAgICAgIGlmICghc3RyaWN0
KQotICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5KHR5cGUpOwotICAgICAgICByZXR1cm4gUHJv
cGVydHkobmFtZSwgdHlwZSk7CisgICAgICAgIHJldHVybiBQcm9wZXJ0eSh0eXBlKTsKICAgICB9
Ci0gICAgUHJvcGVydHkgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgYm9vbCwgaW50LCBjb25zdCBQYXJz
ZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mLCBDbGFzc0VsZW1lbnRUYWcpCisgICAgUHJv
cGVydHkgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgaW50LCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88
U3ludGF4Q2hlY2tlcj4mLCBDbGFzc0VsZW1lbnRUYWcpCiAgICAgewogICAgICAgICByZXR1cm4g
UHJvcGVydHkodHlwZSk7CiAgICAgfQotICAgIFByb3BlcnR5IGNyZWF0ZUdldHRlck9yU2V0dGVy
UHJvcGVydHkoVk0mIHZtLCBQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBib29sIHN0cmljdCwgZG91YmxlIG5h
bWUsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYsIENsYXNzRWxlbWVu
dFRhZykKKyAgICBQcm9wZXJ0eSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KFZNJiwgUGFy
c2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlw
ZSwgZG91YmxlLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mLCBDbGFz
c0VsZW1lbnRUYWcpCiAgICAgewotICAgICAgICBpZiAoIXN0cmljdCkKLSAgICAgICAgICAgIHJl
dHVybiBQcm9wZXJ0eSh0eXBlKTsKLSAgICAgICAgcmV0dXJuIFByb3BlcnR5KCZwYXJzZXJBcmVu
YS5pZGVudGlmaWVyQXJlbmEoKS5tYWtlTnVtZXJpY0lkZW50aWZpZXIodm0sIG5hbWUpLCB0eXBl
KTsKKyAgICAgICAgcmV0dXJuIFByb3BlcnR5KHR5cGUpOwogICAgIH0KIAogICAgIHZvaWQgYXBw
ZW5kU3RhdGVtZW50KGludCwgaW50KSB7IH0KQEAgLTMzOSw4ICszMjYsNyBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgdm9pZCBhc3NpZ25tZW50U3RhY2tBcHBlbmQoaW50JiBhc3NpZ25tZW50U3RhY2tE
ZXB0aCwgaW50LCBpbnQsIGludCwgaW50LCBPcGVyYXRvcikgeyBhc3NpZ25tZW50U3RhY2tEZXB0
aCA9IDE7IH0KICAgICBpbnQgY3JlYXRlQXNzaWdubWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBpbnQmIGFzc2lnbm1lbnRTdGFja0RlcHRoLCBpbnQsIGludCwgaW50LCBpbnQpIHsgYXNzaWdu
bWVudFN0YWNrRGVwdGggPSAwOyByZXR1cm4gQXNzaWdubWVudEV4cHI7IH0KLSAgICBjb25zdCBJ
ZGVudGlmaWVyKiBnZXROYW1lKGNvbnN0IFByb3BlcnR5JiBwcm9wZXJ0eSkgY29uc3QgeyByZXR1
cm4gcHJvcGVydHkubmFtZTsgfQotICAgIFByb3BlcnR5Tm9kZTo6VHlwZSBnZXRUeXBlKGNvbnN0
IFByb3BlcnR5JiBwcm9wZXJ0eSkgY29uc3QgeyByZXR1cm4gcHJvcGVydHkudHlwZTsgfQorICAg
IGJvb2wgaXNVbmRlcnNjb3JlUHJvdG9TZXR0ZXIoY29uc3QgUHJvcGVydHkmIHByb3BlcnR5KSBj
b25zdCB7IHJldHVybiBwcm9wZXJ0eS5pc1VuZGVyc2NvcmVQcm90b1NldHRlcjsgfQogICAgIGJv
b2wgaXNSZXNvbHZlKEV4cHJlc3Npb25UeXBlIGV4cHIpIGNvbnN0IHsgcmV0dXJuIGV4cHIgPT0g
UmVzb2x2ZUV4cHIgfHwgZXhwciA9PSBSZXNvbHZlRXZhbEV4cHI7IH0KICAgICBFeHByZXNzaW9u
VHlwZSBjcmVhdGVEZXN0cnVjdHVyaW5nQXNzaWdubWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBpbnQsIEV4cHJlc3Npb25UeXBlKQogICAgIHsKQEAgLTQ0Nyw2ICs0MzMsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBwcm9wYWdhdGVBcmd1bWVudHNVc2UoKSB7IH0KIAogcHJpdmF0ZToKKyAgICBW
TSYgbV92bTsKICAgICBpbnQgbV90b3BCaW5hcnlFeHByOwogICAgIGludCBtX3RvcFVuYXJ5VG9r
ZW47CiB9OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwppbmRleCA5MmM2ZTZiZTQyNmVkYzUzN2I0MTdjZTY0MjVmZjNiMWM3MjYzMjU2Li42OTJmNzQ4
MGUzZTY4Yjc0ODgzNzI2MTk2NjU3YWM0ZTU4OTMyNWEzIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0No
YW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA4
LTIzICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBJ
bnZhbGlkIGVhcmx5IGVycm9yIGZvciBvYmplY3QgbGl0ZXJhbCBtZXRob2QgbmFtZWQgIl9fcHJv
dG9fXyIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NTc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
dGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbDogTWFyayAyIHRlc3QgY2FzZXMgYXMgcGFzc2luZy4K
KwogMjAyMC0wOC0yMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtFQ01BLTQwMl0gSW50bC5EYXRlVGltZUZvcm1hdCBkYXRlU3R5bGUvdGltZVN0eWxlIG1p
c3NpbmcgaW4gV2ViS2l0CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25z
LnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKaW5kZXggNDlmODViYjA4
ZGQyNTA5YjU5NmMyYWYxNmJlZTVmNTRmZDczYWI3My4uZGJiMWFlNjExZGJmMGMwZmIzMDk0Zjg3
Y2Q5NTdjZWRlNjRkM2ZjZCAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9u
cy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbApAQCAtMjUzOCw5
ICsyNTM4LDYgQEAgdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9uZXcvY3RvckV4cHItaXNDdG9y
LWFmdGVyLWFyZ3MtZXZhbC1mbi13cmFwdXAuanM6CiB0ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25z
L25ldy9ub24tY3Rvci1lcnItcmVhbG0uanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IHBy
b2R1Y3Rpb24gaW5jbHVkaW5nIEFyZ3VtZW50cyBFeHBlY3RlZCBhIFR5cGVFcnJvciBidXQgZ290
IGEgVHlwZUVycm9yJwogICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogcHJvZHVjdGlvbiBp
bmNsdWRpbmcgQXJndW1lbnRzIEV4cGVjdGVkIGEgVHlwZUVycm9yIGJ1dCBnb3QgYSBUeXBlRXJy
b3InCi10ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL29iamVjdC9fX3Byb3RvX18tcGVybWl0dGVk
LWR1cC5qczoKLSAgZGVmYXVsdDogJ1N5bnRheEVycm9yOiBBdHRlbXB0ZWQgdG8gcmVkZWZpbmUg
X19wcm90b19fIHByb3BlcnR5LicKLSAgc3RyaWN0IG1vZGU6ICdTeW50YXhFcnJvcjogQXR0ZW1w
dGVkIHRvIHJlZGVmaW5lIF9fcHJvdG9fXyBwcm9wZXJ0eS4nCiB0ZXN0L2xhbmd1YWdlL2V4cHJl
c3Npb25zL29iamVjdC9jb3ZlcmVkLWlkZW50LW5hbWUtcHJvcC1uYW1lLWxpdGVyYWwtYnJlYWst
ZXNjYXBlZC5qczoKICAgZGVmYXVsdDogIlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGVzY2FwZWQg
Y2hhcmFjdGVycyBpbiBrZXl3b3JkIHRva2VuOiAnYnJlXFx1MDA2MWsnIgogICBzdHJpY3QgbW9k
ZTogIlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGVzY2FwZWQgY2hhcmFjdGVycyBpbiBrZXl3b3Jk
IHRva2VuOiAnYnJlXFx1MDA2MWsnIgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407179</attachid>
            <date>2020-08-25 00:30:30 -0700</date>
            <delta_ts>2020-08-25 08:58:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215760-20200825103028.patch</filename>
            <type>text/plain</type>
            <size>36878</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NzlkYjkyMjdiNTI2ODZmNDM1ODYzMDlkOWExOTNhNDkyMDE0YjAyLi5hZTY0N2IzNzI0YTRhMWQ4
NjlhYzI5ZTY5NjMzZmYwZmUxMjE4MjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MyBAQAorMjAyMC0wOC0yNCAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFp
bC5jb20+CisKKyAgICAgICAgSW52YWxpZCBlYXJseSBlcnJvciBmb3Igb2JqZWN0IGxpdGVyYWwg
bWV0aG9kIG5hbWVkICJfX3Byb3RvX18iCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTU3NjAKKworICAgICAgICBSZXZpZXdlZCBieSBSb3NzIEtpcnNs
aW5nLgorCisgICAgICAgIEFjY29yZGluZyB0byBBbm5leCBCIFsxXSwgYHsgX19wcm90b19fOiBu
dWxsLCBfX3Byb3RvX18oKSB7fSB9YCBpcyBhIHZhbGlkIG9iamVjdCBsaXRlcmFsIGFzIHRoZSBz
ZWNvbmQKKyAgICAgICAgYF9fcHJvdG9fX2Agd2Fzbid0IG9idGFpbmVkIGZyb20gYFByb3BlcnR5
RGVmaW5pdGlvbiA6IFByb3BlcnR5TmFtZSA6IEFzc2lnbm1lbnRFeHByZXNzaW9uYCBwcm9kdWN0
aW9uLgorICAgICAgICBDdXJyZW50bHksIEpTQyB0aHJvd3MgYW4gZWFybHkgU3ludGF4RXJyb3Is
IHVubGlrZSBWOCBhbmQgU3BpZGVyTW9ua2V5LgorCisgICAgICAgIFNpbmNlIGEgbWV0aG9kIG5l
ZWRzIGBzdXBlcmAgYmluZGluZywgdGhlIG1vc3Qgc3RyYWlnaHRmb3J3YXJkIGZpeCB3b3VsZCBi
ZSBhZGRpbmcgU3VwZXJCaW5kaW5nIGZpZWxkCisgICAgICAgIHRvIFN5bnRheENoZWNrZXI6OlBy
b3BlcnR5IGFuZCBleHBvc2luZyBpdCB2aWEgYW4gYWNjZXNzb3IuIEhvd2V2ZXIsIGdpdmVuIHRo
YXQgUHJvcGVydHkgaXMgYSB2ZXJ5CisgICAgICAgIGNvbW1vbiBzdHJ1Y3R1cmUsIHRoaXMgYXBw
cm9hY2ggd291bGQgbm90aWNlYWJseSBpbmNyZWFzZSBtZW1vcnkgcHJlc3N1cmUgZHVyaW5nIHBh
cnNpbmcuCisKKyAgICAgICAgSW5zdGVhZCwgdGhpcyBwYXRjaCByZXdvcmtzIFN5bnRheENoZWNr
ZXI6OlByb3BlcnR5IHRvIGFjY2VwdCBgaXNVbmRlcnNjb3JlUHJvdG9TZXR0ZXJgIHBhcmFtZXRl
ciwKKyAgICAgICAgcmVtb3Zpbmcgb3B0aW9uYWwgYG5hbWVgIGZpZWxkLCBpdHMgYWNjZXNzb3Is
IGFuZCBzaG91bGRDaGVja1Byb3BlcnR5Rm9yVW5kZXJzY29yZVByb3RvRHVwbGljYXRlKCksCisg
ICAgICAgIHdoaWNoIHJlZHVjZXMgc2l6ZW9mKFN5bnRheENoZWNrZXI6OlByb3BlcnR5KSBieSBh
IGZhY3RvciBvZiA4OiBmcm9tIDE2IHRvIDIgYnl0ZXMuCisgICAgICAgIEFsc28sIHRoaXMgY2hh
bmdlIGF2b2lkcyB0d28gZXh0cmEgbWFrZU51bWVyaWNJZGVudGlmaWVyKCkgY2FsbHMsIHNwZWVk
aW5nIHVwIG51bWVyaWMga2V5cyBwYXJzaW5nLgorCisgICAgICAgIFRoaXMgYXBwcm9hY2ggaXMg
ZmVhc2libGUgYmVjYXVzZSAiX19wcm90b19fIiBpcyB0aGUgb25seSBpZGVudGlmaWVyLWJhc2Vk
IGVhcmx5IGVycm9yIGZvciBvYmplY3QKKyAgICAgICAgbGl0ZXJhbHMgWzJdLCB3aXRoIG5vIHN1
Y2ggZXJyb3JzIGJlaW5nIGFkZGVkIGluIHVwY29taW5nIHN0YWdlIDItNCBwcm9wb3NhbHMuCisK
KyAgICAgICAgQWRkaXRpb25hbGx5LCB0aGlzIHBhdGNoIHJlbW92ZXMgYHN0cmljdGAgLyBgY29t
cGxldGVgIGJvb2wgcGFyYW1ldGVyIGZyb20ge3BhcnNlLGNyZWF0ZX1Qcm9wZXJ0eSgpCisgICAg
ICAgIHNpZ25hdHVyZXMgYXMgYSkgaXQgd2FzIGFsd2F5cyBgdHJ1ZWAsIGIpIGlzIG5vdyB1bnVz
ZWQsIGFuZCBjKSBzdHJpY3QgbW9kZSBjYW4gYmUgY2hlY2tlZCB2aWEgc2NvcGUuCisKKyAgICAg
ICAgWzFdOiBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLV9fcHJvdG9fXy1wcm9wZXJ0eS1u
YW1lcy1pbi1vYmplY3QtaW5pdGlhbGl6ZXJzCisgICAgICAgIFsyXTogaHR0cHM6Ly90YzM5LmVz
L2VjbWEyNjIvI3NlYy1vYmplY3QtaW5pdGlhbGl6ZXItc3RhdGljLXNlbWFudGljcy1lYXJseS1l
cnJvcnMKKworICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpB
U1RCdWlsZGVyOjpjcmVhdGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Omlz
VW5kZXJzY29yZVByb3RvU2V0dGVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6
Z2V0TmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAg
ICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUNsYXNzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJv
cGVydHkpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZXR0ZXJTZXR0
ZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VPYmplY3RMaXRlcmFs
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnNob3VsZENoZWNrUHJvcGVydHlG
b3JVbmRlcnNjb3JlUHJvdG9EdXBsaWNhdGUpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXIuaDoKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgorICAgICAgICAoSlND
OjpTeW50YXhDaGVja2VyOjpTeW50YXhDaGVja2VyKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6UHJvcGVydHk6OlByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6
UHJvcGVydHk6Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0
ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlR2V0dGVyT3JT
ZXR0ZXJQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om9wZXJhdG9yU3Rh
Y2tQb3ApOgorCiAyMDIwLTA4LTIzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgd3JvbmcgbWVyZ2UgcmVzb2x1dGlvbiBiZXR3ZWVuIHIy
NjYwMzEgYW5kIHIyNjM4MzcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVy
LmgKaW5kZXggNTI1YWM0ZDA4NTA3NTI2ZmFmZjYzZGVmMDdiNjBiZTk4Y2YyMzA5ZC4uMzBhZjdi
MzRiOGVhZWY2ZTFmMTM2NDRhMmQzN2ZlZDQwNTg5N2EyNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTQ4MSw3ICs0ODEsNyBAQCBwdWJsaWM6CiAgICAg
QXJndW1lbnRMaXN0Tm9kZSogY3JlYXRlQXJndW1lbnRzTGlzdChjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYXJnKSB7IHJldHVybiBuZXcgKG1fcGFyc2Vy
QXJlbmEpIEFyZ3VtZW50TGlzdE5vZGUobG9jYXRpb24sIGFyZyk7IH0KICAgICBBcmd1bWVudExp
c3ROb2RlKiBjcmVhdGVBcmd1bWVudHNMaXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MsIEV4cHJlc3Npb25Ob2RlKiBhcmcpIHsgcmV0dXJu
IG5ldyAobV9wYXJzZXJBcmVuYSkgQXJndW1lbnRMaXN0Tm9kZShsb2NhdGlvbiwgYXJncywgYXJn
KTsgfQogCi0gICAgTkVWRVJfSU5MSU5FIFByb3BlcnR5Tm9kZSogY3JlYXRlR2V0dGVyT3JTZXR0
ZXJQcm9wZXJ0eShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGU6
OlR5cGUgdHlwZSwgYm9vbCwKKyAgICBORVZFUl9JTkxJTkUgUHJvcGVydHlOb2RlKiBjcmVhdGVH
ZXR0ZXJPclNldHRlclByb3BlcnR5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFBy
b3BlcnR5Tm9kZTo6VHlwZSB0eXBlLAogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBj
b25zdCBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbywgQ2xhc3NF
bGVtZW50VGFnIHRhZykKICAgICB7CiAgICAgICAgIEFTU0VSVChuYW1lKTsKQEAgLTQ5Miw3ICs0
OTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFByb3Bl
cnR5Tm9kZSgqbmFtZSwgbWV0aG9kRGVmLCB0eXBlLCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIFN1
cGVyQmluZGluZzo6TmVlZGVkLCB0YWcpOwogICAgIH0KIAotICAgIE5FVkVSX0lOTElORSBQcm9w
ZXJ0eU5vZGUqIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGJvb2wsCisgICAgTkVWRVJf
SU5MSU5FIFByb3BlcnR5Tm9kZSogY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwKICAgICAg
ICAgRXhwcmVzc2lvbk5vZGUqIG5hbWUsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWls
ZGVyPiYgZnVuY3Rpb25JbmZvLCBDbGFzc0VsZW1lbnRUYWcgdGFnKQogICAgIHsKICAgICAgICAg
QVNTRVJUKG5hbWUpOwpAQCAtNTAyLDcgKzUwMiw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IG5ldyAobV9wYXJzZXJBcmVuYSkgUHJvcGVydHlOb2RlKG5hbWUsIG1ldGhvZERlZiwgdHlwZSwg
UHJvcGVydHlOb2RlOjpVbmtub3duLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgdGFnKTsKICAgICB9
CiAKLSAgICBORVZFUl9JTkxJTkUgUHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0ZXJPclNldHRlclBy
b3BlcnR5KFZNJiB2bSwgUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgYm9vbCwKKyAgICBORVZF
Ul9JTkxJTkUgUHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KFZNJiB2
bSwgUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwKICAgICAgICAgZG91YmxlIG5hbWUsIGNvbnN0
IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvLCBDbGFzc0VsZW1l
bnRUYWcgdGFnKQogICAgIHsKICAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHktPnNldExvYyhmdW5j
dGlvbkluZm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8uZW5kTGluZSwgbG9jYXRpb24uc3RhcnRP
ZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CkBAIC01MTIsNyArNTEyLDcgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBQcm9wZXJ0eU5vZGUoaWRl
bnQsIG1ldGhvZERlZiwgdHlwZSwgUHJvcGVydHlOb2RlOjpVbmtub3duLCBTdXBlckJpbmRpbmc6
Ok5lZWRlZCwgdGFnKTsKICAgICB9CiAKLSAgICBQcm9wZXJ0eU5vZGUqIGNyZWF0ZVByb3BlcnR5
KGNvbnN0IElkZW50aWZpZXIqIHByb3BlcnR5TmFtZSwgRXhwcmVzc2lvbk5vZGUqIG5vZGUsIFBy
b3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUgcHV0VHlwZSwgYm9v
bCwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgSW5mZXJOYW1lIGluZmVyTmFtZSwgQ2xhc3NF
bGVtZW50VGFnIHRhZykKKyAgICBQcm9wZXJ0eU5vZGUqIGNyZWF0ZVByb3BlcnR5KGNvbnN0IElk
ZW50aWZpZXIqIHByb3BlcnR5TmFtZSwgRXhwcmVzc2lvbk5vZGUqIG5vZGUsIFByb3BlcnR5Tm9k
ZTo6VHlwZSB0eXBlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUgcHV0VHlwZSwgU3VwZXJCaW5kaW5n
IHN1cGVyQmluZGluZywgSW5mZXJOYW1lIGluZmVyTmFtZSwgQ2xhc3NFbGVtZW50VGFnIHRhZykK
ICAgICB7CiAgICAgICAgIGlmIChpbmZlck5hbWUgPT0gSW5mZXJOYW1lOjpBbGxvd2VkKSB7CiAg
ICAgICAgICAgICBpZiAobm9kZS0+aXNCYXNlRnVuY0V4cHJOb2RlKCkpIHsKQEAgLTUyMywxNiAr
NTIzLDE2IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNl
ckFyZW5hKSBQcm9wZXJ0eU5vZGUoKnByb3BlcnR5TmFtZSwgbm9kZSwgdHlwZSwgcHV0VHlwZSwg
c3VwZXJCaW5kaW5nLCB0YWcpOwogICAgIH0KLSAgICBQcm9wZXJ0eU5vZGUqIGNyZWF0ZVByb3Bl
cnR5KEV4cHJlc3Npb25Ob2RlKiBub2RlLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgUHJvcGVy
dHlOb2RlOjpQdXRUeXBlIHB1dFR5cGUsIGJvb2wsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcs
IENsYXNzRWxlbWVudFRhZyB0YWcpCisgICAgUHJvcGVydHlOb2RlKiBjcmVhdGVQcm9wZXJ0eShF
eHByZXNzaW9uTm9kZSogbm9kZSwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIFByb3BlcnR5Tm9k
ZTo6UHV0VHlwZSBwdXRUeXBlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1l
bnRUYWcgdGFnKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUHJv
cGVydHlOb2RlKG5vZGUsIHR5cGUsIHB1dFR5cGUsIHN1cGVyQmluZGluZywgdGFnKTsKICAgICB9
Ci0gICAgUHJvcGVydHlOb2RlKiBjcmVhdGVQcm9wZXJ0eShWTSYgdm0sIFBhcnNlckFyZW5hJiBw
YXJzZXJBcmVuYSwgZG91YmxlIHByb3BlcnR5TmFtZSwgRXhwcmVzc2lvbk5vZGUqIG5vZGUsIFBy
b3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUgcHV0VHlwZSwgYm9v
bCwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnIHRhZykKKyAgICBQ
cm9wZXJ0eU5vZGUqIGNyZWF0ZVByb3BlcnR5KFZNJiB2bSwgUGFyc2VyQXJlbmEmIHBhcnNlckFy
ZW5hLCBkb3VibGUgcHJvcGVydHlOYW1lLCBFeHByZXNzaW9uTm9kZSogbm9kZSwgUHJvcGVydHlO
b2RlOjpUeXBlIHR5cGUsIFByb3BlcnR5Tm9kZTo6UHV0VHlwZSBwdXRUeXBlLCBTdXBlckJpbmRp
bmcgc3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcgdGFnKQogICAgIHsKICAgICAgICAgcmV0
dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUHJvcGVydHlOb2RlKHBhcnNlckFyZW5hLmlkZW50aWZp
ZXJBcmVuYSgpLm1ha2VOdW1lcmljSWRlbnRpZmllcih2bSwgcHJvcGVydHlOYW1lKSwgbm9kZSwg
dHlwZSwgcHV0VHlwZSwgc3VwZXJCaW5kaW5nLCB0YWcpOwogICAgIH0KLSAgICBQcm9wZXJ0eU5v
ZGUqIGNyZWF0ZVByb3BlcnR5KEV4cHJlc3Npb25Ob2RlKiBwcm9wZXJ0eU5hbWUsIEV4cHJlc3Np
b25Ob2RlKiBub2RlLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgUHJvcGVydHlOb2RlOjpQdXRU
eXBlIHB1dFR5cGUsIGJvb2wsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIENsYXNzRWxlbWVu
dFRhZyB0YWcpIHsgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUHJvcGVydHlOb2RlKHByb3Bl
cnR5TmFtZSwgbm9kZSwgdHlwZSwgcHV0VHlwZSwgc3VwZXJCaW5kaW5nLCB0YWcpOyB9Ci0gICAg
UHJvcGVydHlOb2RlKiBjcmVhdGVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyKiBpZGVudGlmaWVy
LCBFeHByZXNzaW9uTm9kZSogcHJvcGVydHlOYW1lLCBFeHByZXNzaW9uTm9kZSogbm9kZSwgUHJv
cGVydHlOb2RlOjpUeXBlIHR5cGUsIFByb3BlcnR5Tm9kZTo6UHV0VHlwZSBwdXRUeXBlLCBib29s
LCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcgdGFnKSB7IHJldHVy
biBuZXcgKG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5Tm9kZSgqaWRlbnRpZmllciwgcHJvcGVydHlO
YW1lLCBub2RlLCB0eXBlLCBwdXRUeXBlLCBzdXBlckJpbmRpbmcsIHRhZyk7IH0KKyAgICBQcm9w
ZXJ0eU5vZGUqIGNyZWF0ZVByb3BlcnR5KEV4cHJlc3Npb25Ob2RlKiBwcm9wZXJ0eU5hbWUsIEV4
cHJlc3Npb25Ob2RlKiBub2RlLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgUHJvcGVydHlOb2Rl
OjpQdXRUeXBlIHB1dFR5cGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIENsYXNzRWxlbWVu
dFRhZyB0YWcpIHsgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUHJvcGVydHlOb2RlKHByb3Bl
cnR5TmFtZSwgbm9kZSwgdHlwZSwgcHV0VHlwZSwgc3VwZXJCaW5kaW5nLCB0YWcpOyB9CisgICAg
UHJvcGVydHlOb2RlKiBjcmVhdGVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyKiBpZGVudGlmaWVy
LCBFeHByZXNzaW9uTm9kZSogcHJvcGVydHlOYW1lLCBFeHByZXNzaW9uTm9kZSogbm9kZSwgUHJv
cGVydHlOb2RlOjpUeXBlIHR5cGUsIFByb3BlcnR5Tm9kZTo6UHV0VHlwZSBwdXRUeXBlLCBTdXBl
ckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcgdGFnKSB7IHJldHVybiBuZXcg
KG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5Tm9kZSgqaWRlbnRpZmllciwgcHJvcGVydHlOYW1lLCBu
b2RlLCB0eXBlLCBwdXRUeXBlLCBzdXBlckJpbmRpbmcsIHRhZyk7IH0KICAgICBQcm9wZXJ0eUxp
c3ROb2RlKiBjcmVhdGVQcm9wZXJ0eUxpc3QoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgUHJvcGVydHlOb2RlKiBwcm9wZXJ0eSkgeyByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBQ
cm9wZXJ0eUxpc3ROb2RlKGxvY2F0aW9uLCBwcm9wZXJ0eSk7IH0KICAgICBQcm9wZXJ0eUxpc3RO
b2RlKiBjcmVhdGVQcm9wZXJ0eUxpc3QoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
UHJvcGVydHlOb2RlKiBwcm9wZXJ0eSwgUHJvcGVydHlMaXN0Tm9kZSogdGFpbCkgeyByZXR1cm4g
bmV3IChtX3BhcnNlckFyZW5hKSBQcm9wZXJ0eUxpc3ROb2RlKGxvY2F0aW9uLCBwcm9wZXJ0eSwg
dGFpbCk7IH0KIApAQCAtOTU5LDggKzk1OSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogCi0gICAgY29uc3QgSWRlbnRpZmllciogZ2V0TmFtZShjb25zdCBQcm9w
ZXJ0eSYgcHJvcGVydHkpIGNvbnN0IHsgcmV0dXJuIHByb3BlcnR5LT5uYW1lKCk7IH0KICAgICBQ
cm9wZXJ0eU5vZGU6OlR5cGUgZ2V0VHlwZShjb25zdCBQcm9wZXJ0eSYgcHJvcGVydHkpIGNvbnN0
IHsgcmV0dXJuIHByb3BlcnR5LT50eXBlKCk7IH0KKyAgICBib29sIGlzVW5kZXJzY29yZVByb3Rv
U2V0dGVyKGNvbnN0IFByb3BlcnR5JiBwcm9wZXJ0eSkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBQcm9wZXJ0eU5vZGU6OmlzVW5kZXJzY29yZVByb3RvU2V0dGVyKG1fdm0sIHByb3BlcnR5
LT5uYW1lKCksIHByb3BlcnR5LT50eXBlKCksIHByb3BlcnR5LT5uZWVkc1N1cGVyQmluZGluZygp
KTsKKyAgICB9CiAKICAgICBib29sIGlzUmVzb2x2ZShFeHByZXNzaW9uTm9kZSogZXhwcikgY29u
c3QgeyByZXR1cm4gZXhwci0+aXNSZXNvbHZlTm9kZSgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuaAppbmRleCBkNzY0NjZmMGFlNTc1ZGZlYzNlMzg5ZWY0ZTVjYjkyODA4NmY5
MWFhLi44YTc4NjU3NTE0NmJkNDNlNDllMGNiNzE5MmFmYmY1MjIzNjJiNTkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC03NDYsNiArNzQ2LDExIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB2b2lkIHNldElzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlKCkgeyBtX2lzT3Zl
cnJpZGRlbkJ5RHVwbGljYXRlID0gdHJ1ZTsgfQogICAgICAgICBQdXRUeXBlIHB1dFR5cGUoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQdXRUeXBlPihtX3B1dFR5cGUpOyB9CiAKKyAgICAg
ICAgQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1VuZGVyc2NvcmVQcm90b1NldHRlcihWTSYg
dm0sIGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIFR5cGUgdHlwZSwgYm9vbCBuZWVkc1N1cGVyQmlu
ZGluZykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG5hbWUgJiYgKm5hbWUgPT0gdm0u
cHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvICYmIHR5cGUgPT0gVHlwZTo6Q29uc3RhbnQg
JiYgIW5lZWRzU3VwZXJCaW5kaW5nOworICAgICAgICB9CisKICAgICBwcml2YXRlOgogICAgICAg
ICBmcmllbmQgY2xhc3MgUHJvcGVydHlMaXN0Tm9kZTsKICAgICAgICAgY29uc3QgSWRlbnRpZmll
ciogbV9uYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDg4
ZjYzZDc0N2E1MzBjMDZjODM0ZThjYzE2M2QxZjMwZDhhZDU1MWIuLjVhMmI0NGRhYmIyMjhiYTIz
OTI4ZTUyMzkyNmUyZTFmMDA5YmUxNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKQEAgLTI5NzcsMTEgKzI5NzcsMTAgQEAgcGFyc2VNZXRob2Q6CiAgICAgICAgIH0K
IAogICAgICAgICBUcmVlUHJvcGVydHkgcHJvcGVydHk7Ci0gICAgICAgIGNvbnN0IGJvb2wgYWx3
YXlzU3RyaWN0SW5zaWRlQ2xhc3MgPSB0cnVlOwogICAgICAgICBpZiAoaXNHZXR0ZXIgfHwgaXNT
ZXR0ZXIpIHsKICAgICAgICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5
cGU+KHR5cGUgJiB+UHJvcGVydHlOb2RlOjpDb25zdGFudCk7CiAgICAgICAgICAgICB0eXBlID0g
c3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgKGlzR2V0dGVyID8gUHJvcGVy
dHlOb2RlOjpHZXR0ZXIgOiBQcm9wZXJ0eU5vZGU6OlNldHRlcikpOwotICAgICAgICAgICAgcHJv
cGVydHkgPSBwYXJzZUdldHRlclNldHRlcihjb250ZXh0LCBhbHdheXNTdHJpY3RJbnNpZGVDbGFz
cywgdHlwZSwgbWV0aG9kU3RhcnQsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgdGFnKTsKKyAgICAg
ICAgICAgIHByb3BlcnR5ID0gcGFyc2VHZXR0ZXJTZXR0ZXIoY29udGV4dCwgdHlwZSwgbWV0aG9k
U3RhcnQsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgdGFnKTsKICAgICAgICAgICAgIGZhaWxJZkZh
bHNlKHByb3BlcnR5LCAiQ2Fubm90IHBhcnNlIHRoaXMgbWV0aG9kIik7CiAgICAgICAgIH0gZWxz
ZSBpZiAoT3B0aW9uczo6dXNlUHVibGljQ2xhc3NGaWVsZHMoKSAmJiAhbWF0Y2goT1BFTlBBUkVO
KSAmJiB0YWcgPT0gQ2xhc3NFbGVtZW50VGFnOjpJbnN0YW5jZSAmJiBwYXJzZU1vZGUgPT0gU291
cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlKSB7CiAgICAgICAgICAgICBBU1NFUlQoIWlzR2V0dGVy
ICYmICFpc1NldHRlcik7CkBAIC0zMDEwLDkgKzMwMDksOSBAQCBwYXJzZU1ldGhvZDoKICAgICAg
ICAgICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSwgIkV4cGVjdGVkIGEgJzsnIGZvbGxv
d2luZyBhIGNsYXNzIGZpZWxkIik7CiAgICAgICAgICAgICBhdXRvIGluZmVyTmFtZSA9IGluaXRp
YWxpemVyID8gSW5mZXJOYW1lOjpBbGxvd2VkIDogSW5mZXJOYW1lOjpEaXNhbGxvd2VkOwogICAg
ICAgICAgICAgaWYgKGNvbXB1dGVkUHJvcGVydHlOYW1lKQotICAgICAgICAgICAgICAgIHByb3Bl
cnR5ID0gY29udGV4dC5jcmVhdGVQcm9wZXJ0eShpZGVudCwgY29tcHV0ZWRQcm9wZXJ0eU5hbWUs
IGluaXRpYWxpemVyLCB0eXBlLCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIGFsd2F5c1N0cmljdElu
c2lkZUNsYXNzLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgdGFnKTsKKyAgICAgICAgICAgICAg
ICBwcm9wZXJ0eSA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHkoaWRlbnQsIGNvbXB1dGVkUHJvcGVy
dHlOYW1lLCBpbml0aWFsaXplciwgdHlwZSwgUHJvcGVydHlOb2RlOjpVbmtub3duLCBTdXBlckJp
bmRpbmc6Ok5vdE5lZWRlZCwgdGFnKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBwcm9wZXJ0eSA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHkoaWRlbnQsIGluaXRpYWxpemVyLCB0
eXBlLCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIGFsd2F5c1N0cmljdEluc2lkZUNsYXNzLCBTdXBl
ckJpbmRpbmc6Ok5vdE5lZWRlZCwgaW5mZXJOYW1lLCB0YWcpOworICAgICAgICAgICAgICAgIHBy
b3BlcnR5ID0gY29udGV4dC5jcmVhdGVQcm9wZXJ0eShpZGVudCwgaW5pdGlhbGl6ZXIsIHR5cGUs
IFByb3BlcnR5Tm9kZTo6VW5rbm93biwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGluZmVyTmFt
ZSwgdGFnKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFBhcnNlckZ1bmN0aW9uSW5m
bzxUcmVlQnVpbGRlcj4gbWV0aG9kSW5mbzsKICAgICAgICAgICAgIGJvb2wgaXNDb25zdHJ1Y3Rv
ciA9IHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6Okluc3RhbmNlICYmICppZGVudCA9PSBwcm9wZXJ0
eU5hbWVzLmNvbnN0cnVjdG9yOwpAQCAtMzAzMyw5ICszMDMyLDkgQEAgcGFyc2VNZXRob2Q6CiAg
ICAgICAgICAgICAgICAgIkNhbm5vdCBkZWNsYXJlIGEgc3RhdGljIG1ldGhvZCBuYW1lZCAncHJv
dG90eXBlJyIpOwogCiAgICAgICAgICAgICBpZiAoY29tcHV0ZWRQcm9wZXJ0eU5hbWUpIHsKLSAg
ICAgICAgICAgICAgICBwcm9wZXJ0eSA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHkoY29tcHV0ZWRQ
cm9wZXJ0eU5hbWUsIG1ldGhvZCwgdHlwZSwgUHJvcGVydHlOb2RlOjpVbmtub3duLCBhbHdheXNT
dHJpY3RJbnNpZGVDbGFzcywgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIHRhZyk7CisgICAgICAgICAg
ICAgICAgcHJvcGVydHkgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KGNvbXB1dGVkUHJvcGVydHlO
YW1lLCBtZXRob2QsIHR5cGUsIFByb3BlcnR5Tm9kZTo6VW5rbm93biwgU3VwZXJCaW5kaW5nOjpO
ZWVkZWQsIHRhZyk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHByb3Bl
cnR5ID0gY29udGV4dC5jcmVhdGVQcm9wZXJ0eShtZXRob2RJbmZvLm5hbWUsIG1ldGhvZCwgdHlw
ZSwgUHJvcGVydHlOb2RlOjpVbmtub3duLCBhbHdheXNTdHJpY3RJbnNpZGVDbGFzcywgU3VwZXJC
aW5kaW5nOjpOZWVkZWQsIEluZmVyTmFtZTo6QWxsb3dlZCwgdGFnKTsKKyAgICAgICAgICAgICAg
ICBwcm9wZXJ0eSA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHkobWV0aG9kSW5mby5uYW1lLCBtZXRo
b2QsIHR5cGUsIFByb3BlcnR5Tm9kZTo6VW5rbm93biwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIElu
ZmVyTmFtZTo6QWxsb3dlZCwgdGFnKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC00
MTA0LDcgKzQxMDMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNz
aW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUJpbmFyeUV4cHJlcwogfQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJv
cGVydHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJvcGVydHkoVHJlZUJ1aWxkZXImIGNvbnRl
eHQsIGJvb2wgY29tcGxldGUpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9w
ZXJ0eSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcm9wZXJ0eShUcmVlQnVpbGRlciYgY29udGV4
dCkKIHsKICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpN
ZXRob2RNb2RlOwogICAgIGJvb2wgd2FzSWRlbnQgPSBmYWxzZTsKQEAgLTQxNDUsNyArNDE0NCw3
IEBAIG5hbWVkUHJvcGVydHk6CiAgICAgICAgIHVuc2lnbmVkIGdldHRlck9yU2V0dGVyU3RhcnRP
ZmZzZXQgPSB0b2tlblN0YXJ0KCk7CiAgICAgICAgIEpTVG9rZW4gaWRlbnRUb2tlbiA9IG1fdG9r
ZW47CiAKLSAgICAgICAgaWYgKGNvbXBsZXRlIHx8ICh3YXNJZGVudCAmJiAhaXNHZW5lcmF0b3JN
ZXRob2RQYXJzZU1vZGUocGFyc2VNb2RlKSAgJiYgKCppZGVudCA9PSBtX3ZtLnByb3BlcnR5TmFt
ZXMtPmdldCB8fCAqaWRlbnQgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5zZXQpKSkKKyAgICAgICAg
aWYgKHdhc0lkZW50ICYmICFpc0dlbmVyYXRvck1ldGhvZFBhcnNlTW9kZShwYXJzZU1vZGUpICYm
ICgqaWRlbnQgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5nZXQgfHwgKmlkZW50ID09IG1fdm0ucHJv
cGVydHlOYW1lcy0+c2V0KSkKICAgICAgICAgICAgIG5leHRFeHBlY3RJZGVudGlmaWVyKExleGVy
RmxhZ3M6Oklnbm9yZVJlc2VydmVkV29yZHMpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBu
ZXh0RXhwZWN0SWRlbnRpZmllcihUcmVlQnVpbGRlcjo6RG9udEJ1aWxkS2V5d29yZHMgfCBMZXhl
ckZsYWdzOjpJZ25vcmVSZXNlcnZlZFdvcmRzKTsKQEAgLTQxNTYsMTMgKzQxNTUsMTMgQEAgbmFt
ZWRQcm9wZXJ0eToKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKG5vZGUsICJDYW5ub3QgcGFyc2Ug
ZXhwcmVzc2lvbiBmb3IgcHJvcGVydHkgZGVjbGFyYXRpb24iKTsKICAgICAgICAgICAgIGNvbnRl
eHQuc2V0RW5kT2Zmc2V0KG5vZGUsIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7CiAgICAgICAg
ICAgICBJbmZlck5hbWUgaW5mZXJOYW1lID0gaWRlbnQgJiYgKmlkZW50ID09IG1fdm0ucHJvcGVy
dHlOYW1lcy0+dW5kZXJzY29yZVByb3RvID8gSW5mZXJOYW1lOjpEaXNhbGxvd2VkIDogSW5mZXJO
YW1lOjpBbGxvd2VkOwotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHko
aWRlbnQsIG5vZGUsIFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQsIFByb3BlcnR5Tm9kZTo6VW5rbm93
biwgY29tcGxldGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBpbmZlck5hbWUsIENsYXNzRWxl
bWVudFRhZzo6Tm8pOworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHko
aWRlbnQsIG5vZGUsIFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQsIFByb3BlcnR5Tm9kZTo6VW5rbm93
biwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGluZmVyTmFtZSwgQ2xhc3NFbGVtZW50VGFnOjpO
byk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobWF0Y2goT1BFTlBBUkVOKSkgewogICAgICAg
ICAgICAgYXV0byBtZXRob2QgPSBwYXJzZVByb3BlcnR5TWV0aG9kKGNvbnRleHQsIGlkZW50LCBw
YXJzZU1vZGUpOwogICAgICAgICAgICAgcHJvcGFnYXRlRXJyb3IoKTsKLSAgICAgICAgICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KGlkZW50LCBtZXRob2QsIFByb3BlcnR5Tm9kZTo6
Q29uc3RhbnQsIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QsIGNvbXBsZXRlLCBTdXBlckJpbmRp
bmc6Ok5lZWRlZCwgSW5mZXJOYW1lOjpBbGxvd2VkLCBDbGFzc0VsZW1lbnRUYWc6Ok5vKTsKKyAg
ICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KGlkZW50LCBtZXRob2QsIFBy
b3BlcnR5Tm9kZTo6Q29uc3RhbnQsIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QsIFN1cGVyQmlu
ZGluZzo6TmVlZGVkLCBJbmZlck5hbWU6OkFsbG93ZWQsIENsYXNzRWxlbWVudFRhZzo6Tm8pOwog
ICAgICAgICB9CiAgICAgICAgIGZhaWxJZlRydWUocGFyc2VNb2RlICE9IFNvdXJjZVBhcnNlTW9k
ZTo6TWV0aG9kTW9kZSwgIkV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3Qi
KTsKIApAQCAtNDE3Niw3ICs0MTc1LDcgQEAgbmFtZWRQcm9wZXJ0eToKICAgICAgICAgICAgIGlm
IChjdXJyZW50U2NvcGUoKS0+aXNBcnJvd0Z1bmN0aW9uKCkpCiAgICAgICAgICAgICAgICAgY3Vy
cmVudFNjb3BlKCktPnNldElubmVyQXJyb3dGdW5jdGlvblVzZXNFdmFsKCk7CiAgICAgICAgICAg
ICBUcmVlRXhwcmVzc2lvbiBub2RlID0gY29udGV4dC5jcmVhdGVSZXNvbHZlKGxvY2F0aW9uLCAq
aWRlbnQsIHN0YXJ0LCBsYXN0VG9rZW5FbmRQb3NpdGlvbigpKTsKLSAgICAgICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KGlkZW50LCBub2RlLCBzdGF0aWNfY2FzdDxQcm9wZXJ0
eU5vZGU6OlR5cGU+KFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQgfCBQcm9wZXJ0eU5vZGU6OlNob3J0
aGFuZCksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QsIGNvbXBsZXRlLCBTdXBlckJpbmRpbmc6
Ok5vdE5lZWRlZCwgSW5mZXJOYW1lOjpBbGxvd2VkLCBDbGFzc0VsZW1lbnRUYWc6Ok5vKTsKKyAg
ICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KGlkZW50LCBub2RlLCBzdGF0
aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQgfCBQcm9w
ZXJ0eU5vZGU6OlNob3J0aGFuZCksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QsIFN1cGVyQmlu
ZGluZzo6Tm90TmVlZGVkLCBJbmZlck5hbWU6OkFsbG93ZWQsIENsYXNzRWxlbWVudFRhZzo6Tm8p
OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1hdGNoKEVRVUFMKSkgLy8gQ292ZXJJbml0aWFs
aXplZE5hbWUgaXMgZXhjbHVzaXZlIHRvIEJpbmRpbmdQYXR0ZXJuIGFuZCBBc3NpZ25tZW50UGF0
dGVybgpAQCAtNDE4OSw3ICs0MTg4LDcgQEAgbmFtZWRQcm9wZXJ0eToKICAgICAgICAgICAgIHR5
cGUgPSBQcm9wZXJ0eU5vZGU6OlNldHRlcjsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZmFp
bFdpdGhNZXNzYWdlKCJFeHBlY3RlZCBhICc6JyBmb2xsb3dpbmcgdGhlIHByb3BlcnR5IG5hbWUg
JyIsIGlkZW50LT5pbXBsKCksICInIik7Ci0gICAgICAgIHJldHVybiBwYXJzZUdldHRlclNldHRl
cihjb250ZXh0LCBjb21wbGV0ZSwgdHlwZSwgZ2V0dGVyT3JTZXR0ZXJTdGFydE9mZnNldCwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCBDbGFzc0VsZW1lbnRUYWc6Ok5vKTsKKyAgICAgICAgcmV0dXJu
IHBhcnNlR2V0dGVyU2V0dGVyKGNvbnRleHQsIHR5cGUsIGdldHRlck9yU2V0dGVyU3RhcnRPZmZz
ZXQsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgQ2xhc3NFbGVtZW50VGFnOjpObyk7CiAgICAgfQog
ICAgIGNhc2UgRE9VQkxFOgogICAgIGNhc2UgSU5URUdFUjogewpAQCAtNDIwMCw3ICs0MTk5LDcg
QEAgbmFtZWRQcm9wZXJ0eToKICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0g
bV9wYXJzZXJBcmVuYS5pZGVudGlmaWVyQXJlbmEoKS5tYWtlTnVtZXJpY0lkZW50aWZpZXIoY29u
c3RfY2FzdDxWTSY+KG1fdm0pLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgYXV0byBtZXRo
b2QgPSBwYXJzZVByb3BlcnR5TWV0aG9kKGNvbnRleHQsICZpZGVudCwgcGFyc2VNb2RlKTsKICAg
ICAgICAgICAgIHByb3BhZ2F0ZUVycm9yKCk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVQcm9wZXJ0eSgmaWRlbnQsIG1ldGhvZCwgUHJvcGVydHlOb2RlOjpDb25zdGFudCwgUHJv
cGVydHlOb2RlOjpVbmtub3duLCBjb21wbGV0ZSwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIEluZmVy
TmFtZTo6QWxsb3dlZCwgQ2xhc3NFbGVtZW50VGFnOjpObyk7CisgICAgICAgICAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVQcm9wZXJ0eSgmaWRlbnQsIG1ldGhvZCwgUHJvcGVydHlOb2RlOjpDb25z
dGFudCwgUHJvcGVydHlOb2RlOjpVbmtub3duLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgSW5mZXJO
YW1lOjpBbGxvd2VkLCBDbGFzc0VsZW1lbnRUYWc6Ok5vKTsKICAgICAgICAgfQogICAgICAgICBm
YWlsSWZUcnVlKHBhcnNlTW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUsICJFeHBl
Y3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0Iik7CiAKQEAgLTQyMDgsNyArNDIw
Nyw3IEBAIG5hbWVkUHJvcGVydHk6CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIG5vZGUgPSBwYXJz
ZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShub2Rl
LCAiQ2Fubm90IHBhcnNlIGV4cHJlc3Npb24gZm9yIHByb3BlcnR5IGRlY2xhcmF0aW9uIik7CiAg
ICAgICAgIGNvbnRleHQuc2V0RW5kT2Zmc2V0KG5vZGUsIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQo
KSk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KGNvbnN0X2Nhc3Q8Vk0m
PihtX3ZtKSwgbV9wYXJzZXJBcmVuYSwgcHJvcGVydHlOYW1lLCBub2RlLCBQcm9wZXJ0eU5vZGU6
OkNvbnN0YW50LCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIGNvbXBsZXRlLCBTdXBlckJpbmRpbmc6
Ok5vdE5lZWRlZCwgQ2xhc3NFbGVtZW50VGFnOjpObyk7CisgICAgICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZVByb3BlcnR5KGNvbnN0X2Nhc3Q8Vk0mPihtX3ZtKSwgbV9wYXJzZXJBcmVuYSwgcHJv
cGVydHlOYW1lLCBub2RlLCBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50LCBQcm9wZXJ0eU5vZGU6OlVu
a25vd24sIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBDbGFzc0VsZW1lbnRUYWc6Ok5vKTsKICAg
ICB9CiAgICAgY2FzZSBCSUdJTlQ6IHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQg
PSAmbV9wYXJzZXJBcmVuYS5pZGVudGlmaWVyQXJlbmEoKS5tYWtlQmlnSW50RGVjaW1hbElkZW50
aWZpZXIoY29uc3RfY2FzdDxWTSY+KG1fdm0pLCAqbV90b2tlbi5tX2RhdGEuYmlnSW50U3RyaW5n
LCBtX3Rva2VuLm1fZGF0YS5yYWRpeCk7CkBAIC00MjE3LDcgKzQyMTYsNyBAQCBuYW1lZFByb3Bl
cnR5OgogICAgICAgICBpZiAobWF0Y2goT1BFTlBBUkVOKSkgewogICAgICAgICAgICAgYXV0byBt
ZXRob2QgPSBwYXJzZVByb3BlcnR5TWV0aG9kKGNvbnRleHQsIGlkZW50LCBwYXJzZU1vZGUpOwog
ICAgICAgICAgICAgcHJvcGFnYXRlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZVByb3BlcnR5KGlkZW50LCBtZXRob2QsIFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQsIFBy
b3BlcnR5Tm9kZTo6VW5rbm93biwgY29tcGxldGUsIFN1cGVyQmluZGluZzo6TmVlZGVkLCBJbmZl
ck5hbWU6OkFsbG93ZWQsIENsYXNzRWxlbWVudFRhZzo6Tm8pOworICAgICAgICAgICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlUHJvcGVydHkoaWRlbnQsIG1ldGhvZCwgUHJvcGVydHlOb2RlOjpDb25z
dGFudCwgUHJvcGVydHlOb2RlOjpVbmtub3duLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgSW5mZXJO
YW1lOjpBbGxvd2VkLCBDbGFzc0VsZW1lbnRUYWc6Ok5vKTsKICAgICAgICAgfQogICAgICAgICBm
YWlsSWZUcnVlKHBhcnNlTW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUsICJFeHBl
Y3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0Iik7CiAKQEAgLTQyMjUsNyArNDIy
NCw3IEBAIG5hbWVkUHJvcGVydHk6CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIG5vZGUgPSBwYXJz
ZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShub2Rl
LCAiQ2Fubm90IHBhcnNlIGV4cHJlc3Npb24gZm9yIHByb3BlcnR5IGRlY2xhcmF0aW9uIik7CiAg
ICAgICAgIGNvbnRleHQuc2V0RW5kT2Zmc2V0KG5vZGUsIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQo
KSk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KGlkZW50LCBub2RlLCBQ
cm9wZXJ0eU5vZGU6OkNvbnN0YW50LCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIGNvbXBsZXRlLCBT
dXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgSW5mZXJOYW1lOjpBbGxvd2VkLCBDbGFzc0VsZW1lbnRU
YWc6Ok5vKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHkoaWRlbnQsIG5v
ZGUsIFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQsIFByb3BlcnR5Tm9kZTo6VW5rbm93biwgU3VwZXJC
aW5kaW5nOjpOb3ROZWVkZWQsIEluZmVyTmFtZTo6QWxsb3dlZCwgQ2xhc3NFbGVtZW50VGFnOjpO
byk7CiAgICAgfQogICAgIGNhc2UgT1BFTkJSQUNLRVQ6IHsKICAgICAgICAgbmV4dCgpOwpAQCAt
NDIzNiw3ICs0MjM1LDcgQEAgbmFtZWRQcm9wZXJ0eToKICAgICAgICAgaWYgKG1hdGNoKE9QRU5Q
QVJFTikpIHsKICAgICAgICAgICAgIGF1dG8gbWV0aG9kID0gcGFyc2VQcm9wZXJ0eU1ldGhvZChj
b250ZXh0LCAmbV92bS5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllciwgcGFyc2VNb2RlKTsK
ICAgICAgICAgICAgIHByb3BhZ2F0ZUVycm9yKCk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIG1ldGhvZCwgc3RhdGljX2Nhc3Q8UHJvcGVy
dHlOb2RlOjpUeXBlPihQcm9wZXJ0eU5vZGU6OkNvbnN0YW50IHwgUHJvcGVydHlOb2RlOjpDb21w
dXRlZCksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QsIGNvbXBsZXRlLCBTdXBlckJpbmRpbmc6
Ok5lZWRlZCwgQ2xhc3NFbGVtZW50VGFnOjpObyk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIG1ldGhvZCwgc3RhdGljX2Nhc3Q8UHJvcGVy
dHlOb2RlOjpUeXBlPihQcm9wZXJ0eU5vZGU6OkNvbnN0YW50IHwgUHJvcGVydHlOb2RlOjpDb21w
dXRlZCksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QsIFN1cGVyQmluZGluZzo6TmVlZGVkLCBD
bGFzc0VsZW1lbnRUYWc6Ok5vKTsKICAgICAgICAgfQogICAgICAgICBmYWlsSWZUcnVlKHBhcnNl
TW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUsICJFeHBlY3RlZCBhIHBhcmVudGhl
c2lzIGZvciBhcmd1bWVudCBsaXN0Iik7CiAKQEAgLTQyNDQsNyArNDI0Myw3IEBAIG5hbWVkUHJv
cGVydHk6CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIG5vZGUgPSBwYXJzZUFzc2lnbm1lbnRFeHBy
ZXNzaW9uKGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShub2RlLCAiQ2Fubm90IHBhcnNl
IGV4cHJlc3Npb24gZm9yIHByb3BlcnR5IGRlY2xhcmF0aW9uIik7CiAgICAgICAgIGNvbnRleHQu
c2V0RW5kT2Zmc2V0KG5vZGUsIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7Ci0gICAgICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KHByb3BlcnR5TmFtZSwgbm9kZSwgc3RhdGljX2Nh
c3Q8UHJvcGVydHlOb2RlOjpUeXBlPihQcm9wZXJ0eU5vZGU6OkNvbnN0YW50IHwgUHJvcGVydHlO
b2RlOjpDb21wdXRlZCksIFByb3BlcnR5Tm9kZTo6VW5rbm93biwgY29tcGxldGUsIFN1cGVyQmlu
ZGluZzo6Tm90TmVlZGVkLCBDbGFzc0VsZW1lbnRUYWc6Ok5vKTsKKyAgICAgICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlUHJvcGVydHkocHJvcGVydHlOYW1lLCBub2RlLCBzdGF0aWNfY2FzdDxQcm9w
ZXJ0eU5vZGU6OlR5cGU+KFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQgfCBQcm9wZXJ0eU5vZGU6OkNv
bXB1dGVkKSwgUHJvcGVydHlOb2RlOjpVbmtub3duLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwg
Q2xhc3NFbGVtZW50VGFnOjpObyk7CiAgICAgfQogICAgIGNhc2UgRE9URE9URE9UOiB7CiAgICAg
ICAgIGF1dG8gc3ByZWFkTG9jYXRpb24gPSBtX3Rva2VuLm1fbG9jYXRpb247CkBAIC00MjU0LDcg
KzQyNTMsNyBAQCBuYW1lZFByb3BlcnR5OgogICAgICAgICBUcmVlRXhwcmVzc2lvbiBlbGVtID0g
cGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbk9yUHJvcGFnYXRlRXJyb3JDbGFzcyhjb250ZXh0KTsK
ICAgICAgICAgZmFpbElmRmFsc2UoZWxlbSwgIkNhbm5vdCBwYXJzZSBzdWJqZWN0IG9mIGEgc3By
ZWFkIG9wZXJhdGlvbiIpOwogICAgICAgICBhdXRvIG5vZGUgPSBjb250ZXh0LmNyZWF0ZU9iamVj
dFNwcmVhZEV4cHJlc3Npb24oc3ByZWFkTG9jYXRpb24sIGVsZW0sIHN0YXJ0LCBkaXZvdCwgbV9s
YXN0VG9rZW5FbmRQb3NpdGlvbik7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3Bl
cnR5KG5vZGUsIFByb3BlcnR5Tm9kZTo6U3ByZWFkLCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIGNv
bXBsZXRlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgQ2xhc3NFbGVtZW50VGFnOjpObyk7Cisg
ICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KG5vZGUsIFByb3BlcnR5Tm9kZTo6
U3ByZWFkLCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBD
bGFzc0VsZW1lbnRUYWc6Ok5vKTsKICAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgZmFpbElm
RmFsc2UobV90b2tlbi5tX3R5cGUgJiBLZXl3b3JkVG9rZW5GbGFnLCAiRXhwZWN0ZWQgYSBwcm9w
ZXJ0eSBuYW1lIik7CkBAIC00Mjc2LDcgKzQyNzUsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByb3BlcnR5TWV0
aAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2V0dGVyU2V0
dGVyKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBib29sIHN0cmljdCwgUHJvcGVydHlOb2RlOjpUeXBl
IHR5cGUsIHVuc2lnbmVkIGdldHRlck9yU2V0dGVyU3RhcnRPZmZzZXQsCit0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZXR0
ZXJTZXR0ZXIoVHJlZUJ1aWxkZXImIGNvbnRleHQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCB1
bnNpZ25lZCBnZXR0ZXJPclNldHRlclN0YXJ0T2Zmc2V0LAogICAgIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQsIENsYXNzRWxlbWVudFRhZyB0YWcpCiB7CiAgICAgY29uc3QgSWRlbnRp
Zmllciogc3RyaW5nUHJvcGVydHlOYW1lID0gbnVsbHB0cjsKQEAgLTQzMTYsMjIgKzQzMTUsMTIg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkgUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlR2V0dGVyU2V0dGVyKFQKICAgICB9CiAKICAgICBpZiAoc3RyaW5nUHJvcGVy
dHlOYW1lKQotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVHZXR0ZXJPclNldHRlclByb3Bl
cnR5KGxvY2F0aW9uLCB0eXBlLCBzdHJpY3QsIHN0cmluZ1Byb3BlcnR5TmFtZSwgaW5mbywgdGFn
KTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShs
b2NhdGlvbiwgdHlwZSwgc3RyaW5nUHJvcGVydHlOYW1lLCBpbmZvLCB0YWcpOwogCiAgICAgaWYg
KGNvbXB1dGVkUHJvcGVydHlOYW1lKQotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVHZXR0
ZXJPclNldHRlclByb3BlcnR5KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5
cGU+KHR5cGUgfCBQcm9wZXJ0eU5vZGU6OkNvbXB1dGVkKSwgc3RyaWN0LCBjb21wdXRlZFByb3Bl
cnR5TmFtZSwgaW5mbywgdGFnKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlR2V0dGVy
T3JTZXR0ZXJQcm9wZXJ0eShsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBl
Pih0eXBlIHwgUHJvcGVydHlOb2RlOjpDb21wdXRlZCksIGNvbXB1dGVkUHJvcGVydHlOYW1lLCBp
bmZvLCB0YWcpOwogCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9w
ZXJ0eShjb25zdF9jYXN0PFZNJj4obV92bSksIG1fcGFyc2VyQXJlbmEsIGxvY2F0aW9uLCB0eXBl
LCBzdHJpY3QsIG51bWVyaWNQcm9wZXJ0eU5hbWUsIGluZm8sIHRhZyk7Ci19Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wg
UGFyc2VyPExleGVyVHlwZT46OnNob3VsZENoZWNrUHJvcGVydHlGb3JVbmRlcnNjb3JlUHJvdG9E
dXBsaWNhdGUoVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IFRyZWVQcm9wZXJ0eSYgcHJvcGVy
dHkpCi17Ci0gICAgaWYgKCFjb250ZXh0LmdldE5hbWUocHJvcGVydHkpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICAvLyBBIENvbnN0YW50IHByb3BlcnR5IHRoYXQgaXMgbm90IGEgQ29t
cHV0ZWQgb3IgU2hvcnRoYW5kIENvbnN0YW50IHByb3BlcnR5LgotICAgIHJldHVybiBjb250ZXh0
LmdldFR5cGUocHJvcGVydHkpID09IFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQ7CisgICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShjb25zdF9jYXN0PFZNJj4obV92
bSksIG1fcGFyc2VyQXJlbmEsIGxvY2F0aW9uLCB0eXBlLCBudW1lcmljUHJvcGVydHlOYW1lLCBp
bmZvLCB0YWcpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtNDM3Nywx
MiArNDM2NiwxMCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9u
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU9iamVjdExpdGVyYQogICAgICAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVPYmplY3RMaXRlcmFsKGxvY2F0aW9uKTsKICAgICB9CiAgICAgCi0gICAgVHJl
ZVByb3BlcnR5IHByb3BlcnR5ID0gcGFyc2VQcm9wZXJ0eShjb250ZXh0LCB0cnVlKTsKKyAgICBU
cmVlUHJvcGVydHkgcHJvcGVydHkgPSBwYXJzZVByb3BlcnR5KGNvbnRleHQpOwogICAgIGZhaWxJ
ZkZhbHNlKHByb3BlcnR5LCAiQ2Fubm90IHBhcnNlIG9iamVjdCBsaXRlcmFsIHByb3BlcnR5Iik7
CiAKLSAgICBib29sIHNlZW5VbmRlcnNjb3JlUHJvdG8gPSBmYWxzZTsKLSAgICBpZiAoc2hvdWxk
Q2hlY2tQcm9wZXJ0eUZvclVuZGVyc2NvcmVQcm90b0R1cGxpY2F0ZShjb250ZXh0LCBwcm9wZXJ0
eSkpCi0gICAgICAgIHNlZW5VbmRlcnNjb3JlUHJvdG8gPSAqY29udGV4dC5nZXROYW1lKHByb3Bl
cnR5KSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90bzsKKyAgICBib29sIHNl
ZW5Qcm90b1NldHRlciA9IGNvbnRleHQuaXNVbmRlcnNjb3JlUHJvdG9TZXR0ZXIocHJvcGVydHkp
OwogCiAgICAgVHJlZVByb3BlcnR5TGlzdCBwcm9wZXJ0eUxpc3QgPSBjb250ZXh0LmNyZWF0ZVBy
b3BlcnR5TGlzdChsb2NhdGlvbiwgcHJvcGVydHkpOwogICAgIFRyZWVQcm9wZXJ0eUxpc3QgdGFp
bCA9IHByb3BlcnR5TGlzdDsKQEAgLTQzOTEsMTMgKzQzNzgsMTIgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VPYmpl
Y3RMaXRlcmEKICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBwcm9wZXJ0eUxvY2F0aW9uKHRva2VuTG9jYXRp
b24oKSk7Ci0gICAgICAgIHByb3BlcnR5ID0gcGFyc2VQcm9wZXJ0eShjb250ZXh0LCB0cnVlKTsK
KyAgICAgICAgcHJvcGVydHkgPSBwYXJzZVByb3BlcnR5KGNvbnRleHQpOwogICAgICAgICBmYWls
SWZGYWxzZShwcm9wZXJ0eSwgIkNhbm5vdCBwYXJzZSBvYmplY3QgbGl0ZXJhbCBwcm9wZXJ0eSIp
OwotICAgICAgICBpZiAoc2hvdWxkQ2hlY2tQcm9wZXJ0eUZvclVuZGVyc2NvcmVQcm90b0R1cGxp
Y2F0ZShjb250ZXh0LCBwcm9wZXJ0eSkpIHsKLSAgICAgICAgICAgIGlmICgqY29udGV4dC5nZXRO
YW1lKHByb3BlcnR5KSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90bykgewot
ICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShzZWVuVW5kZXJzY29yZVByb3RvLCAi
QXR0ZW1wdGVkIHRvIHJlZGVmaW5lIF9fcHJvdG9fXyBwcm9wZXJ0eSIpOwotICAgICAgICAgICAg
ICAgIHNlZW5VbmRlcnNjb3JlUHJvdG8gPSB0cnVlOwotICAgICAgICAgICAgfQorICAgICAgICBp
ZiAoY29udGV4dC5pc1VuZGVyc2NvcmVQcm90b1NldHRlcihwcm9wZXJ0eSkpIHsKKyAgICAgICAg
ICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtX19wcm90b19fLXByb3BlcnR5LW5h
bWVzLWluLW9iamVjdC1pbml0aWFsaXplcnMKKyAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1
ZShzZWVuUHJvdG9TZXR0ZXIsICJBdHRlbXB0ZWQgdG8gcmVkZWZpbmUgX19wcm90b19fIHByb3Bl
cnR5Iik7CisgICAgICAgICAgICBzZWVuUHJvdG9TZXR0ZXIgPSB0cnVlOwogICAgICAgICB9CiAg
ICAgICAgIHRhaWwgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdChwcm9wZXJ0eUxvY2F0aW9u
LCBwcm9wZXJ0eSwgdGFpbCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmgKaW5kZXggMWY1ZDkzMmMzZjU3NWViMjA1NTc0MDRlNTY0MTg3ZmJmNzViOTY2OS4uNDZhNGQz
YTgwZDc2ZTMxOGQ4ODY5ODQxMzE1ZGQyMTE3YjUxMmJjMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5oCkBAIC0xNzYwLDkgKzE3NjAsOSBAQCBwcml2YXRlOgogICAgIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRXhwcmVzc2lvbiBwYXJz
ZUFzeW5jRnVuY3Rpb25FeHByZXNzaW9uKFRyZWVCdWlsZGVyJik7CiAgICAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVBcmd1bWVudHMgcGFyc2VBcmd1bWVu
dHMoVHJlZUJ1aWxkZXImKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZ
U19JTkxJTkUgVHJlZUV4cHJlc3Npb24gcGFyc2VBcmd1bWVudChUcmVlQnVpbGRlciYsIEFyZ3Vt
ZW50VHlwZSYpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5
IHBhcnNlUHJvcGVydHkoVHJlZUJ1aWxkZXImLCBib29sIHN0cmljdCk7CisgICAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkgcGFyc2VQcm9wZXJ0eShUcmVlQnVpbGRl
ciYpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gcGFy
c2VQcm9wZXJ0eU1ldGhvZChUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3QgSWRlbnRpZmllciog
bWV0aG9kTmFtZSwgU291cmNlUGFyc2VNb2RlKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVQcm9wZXJ0eSBwYXJzZUdldHRlclNldHRlcihUcmVlQnVpbGRlciYsIGJvb2wg
c3RyaWN0LCBQcm9wZXJ0eU5vZGU6OlR5cGUsIHVuc2lnbmVkIGdldHRlck9yU2V0dGVyU3RhcnRP
ZmZzZXQsIENvbnN0cnVjdG9yS2luZCwgQ2xhc3NFbGVtZW50VGFnKTsKKyAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBwYXJzZUdldHRlclNldHRlcihUcmVlQnVp
bGRlciYsIFByb3BlcnR5Tm9kZTo6VHlwZSwgdW5zaWduZWQgZ2V0dGVyT3JTZXR0ZXJTdGFydE9m
ZnNldCwgQ29uc3RydWN0b3JLaW5kLCBDbGFzc0VsZW1lbnRUYWcpOwogICAgIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRnVuY3Rpb25Cb2R5IHBhcnNlRnVu
Y3Rpb25Cb2R5KFRyZWVCdWlsZGVyJiwgU3ludGF4Q2hlY2tlciYsIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGludCwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3Rh
cnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCBG
dW5jdGlvbkJvZHlUeXBlLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlKTsKICAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZUZvcm1hbFBhcmFt
ZXRlcnMoVHJlZUJ1aWxkZXImLCBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCwgYm9vbCBpc0Fycm93
RnVuY3Rpb24sIGJvb2wgaXNNZXRob2QsIHVuc2lnbmVkJik7CiAgICAgZW51bSBWYXJEZWNsYXJh
dGlvbkxpc3RDb250ZXh0IHsgRm9yTG9vcENvbnRleHQsIFZhckRlY2xhcmF0aW9uQ29udGV4dCB9
OwpAQCAtMTgwMiw4ICsxODAyLDYgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6VGVtcGxhdGVTdHJp
bmcgcGFyc2VUZW1wbGF0ZVN0cmluZyhUcmVlQnVpbGRlciYgY29udGV4dCwgYm9vbCBpc1RlbXBs
YXRlSGVhZCwgdHlwZW5hbWUgTGV4ZXJUeXBlOjpSYXdTdHJpbmdzQnVpbGRNb2RlLCBib29sJiBl
bGVtZW50SXNUYWlsKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lO
TElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6VGVtcGxhdGVMaXRlcmFsIHBhcnNlVGVtcGxhdGVM
aXRlcmFsKFRyZWVCdWlsZGVyJiwgdHlwZW5hbWUgTGV4ZXJUeXBlOjpSYXdTdHJpbmdzQnVpbGRN
b2RlKTsKIAotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBi
b29sIHNob3VsZENoZWNrUHJvcGVydHlGb3JVbmRlcnNjb3JlUHJvdG9EdXBsaWNhdGUoVHJlZUJ1
aWxkZXImLCBjb25zdCBUcmVlUHJvcGVydHkmKTsKLQogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gTkVWRVJfSU5MSU5FIGNvbnN0IGNoYXIqIG1ldGFQcm9wZXJ0eU5hbWUoVHJlZUJ1
aWxkZXImLCBUcmVlRXhwcmVzc2lvbik7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IEFMV0FZU19JTkxJTkUgYm9vbCBpc1NpbXBsZUFzc2lnbm1lbnRUYXJnZXQoVHJlZUJ1aWxk
ZXImLCBUcmVlRXhwcmVzc2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3lu
dGF4Q2hlY2tlci5oCmluZGV4IDE5YTU5NDI2YjA2MzBlMGU5ZGIzZTM1Yjk5MGY5NWJiNTZlYjhm
NjIuLmVmNmIzNjAwNzMwOTM0ZDBlOTYwM2VlNjA2ZjVlMTAwYzg1NTk2MDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC02NCw3ICs2NCw4IEBA
IHB1YmxpYzoKICAgICAgICAgU3ludGF4Q2hlY2tlciogbV9jb250ZXh0OwogICAgIH07CiAgICAg
Ci0gICAgU3ludGF4Q2hlY2tlcihWTSYgLCB2b2lkKikKKyAgICBTeW50YXhDaGVja2VyKFZNJiB2
bSwgdm9pZCopCisgICAgICAgIDogbV92bSh2bSkKICAgICB7CiAgICAgfQogCkBAIC05OSwyMiAr
MTAwLDIwIEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEV4cHJlc3Npb25UeXBlIENvbW1hOwogICAg
IHN0cnVjdCBQcm9wZXJ0eSB7CiAgICAgICAgIEFMV0FZU19JTkxJTkUgUHJvcGVydHkodm9pZCog
PSBudWxscHRyKQotICAgICAgICAgICAgOiB0eXBlKChQcm9wZXJ0eU5vZGU6OlR5cGUpMCkKICAg
ICAgICAgewogICAgICAgICB9Ci0gICAgICAgIEFMV0FZU19JTkxJTkUgUHJvcGVydHkoY29uc3Qg
SWRlbnRpZmllciogaWRlbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eSkKLSAgICAgICAgICAgIDog
bmFtZShpZGVudCkKLSAgICAgICAgICAgICwgdHlwZSh0eSkKKyAgICAgICAgQUxXQVlTX0lOTElO
RSBQcm9wZXJ0eShQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSkKKyAgICAgICAgICAgIDogdHlwZSh0
eXBlKQogICAgICAgICB7CiAgICAgICAgIH0KLSAgICAgICAgQUxXQVlTX0lOTElORSBQcm9wZXJ0
eShQcm9wZXJ0eU5vZGU6OlR5cGUgdHkpCi0gICAgICAgICAgICA6IG5hbWUobnVsbHB0cikKLSAg
ICAgICAgICAgICwgdHlwZSh0eSkKKyAgICAgICAgQUxXQVlTX0lOTElORSBQcm9wZXJ0eShQcm9w
ZXJ0eU5vZGU6OlR5cGUgdHlwZSwgYm9vbCBpc1VuZGVyc2NvcmVQcm90b1NldHRlcikKKyAgICAg
ICAgICAgIDogdHlwZSh0eXBlKQorICAgICAgICAgICAgLCBpc1VuZGVyc2NvcmVQcm90b1NldHRl
cihpc1VuZGVyc2NvcmVQcm90b1NldHRlcikKICAgICAgICAgewogICAgICAgICB9CiAgICAgICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBvcGVyYXRvciEoKSB7IHJldHVybiAhdHlwZTsgfQotICAgICAg
ICBjb25zdCBJZGVudGlmaWVyKiBuYW1lOwotICAgICAgICBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlw
ZTsKKyAgICAgICAgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUgeyBzdGF0aWNfY2FzdDxQcm9wZXJ0
eU5vZGU6OlR5cGU+KDApIH07CisgICAgICAgIGJvb2wgaXNVbmRlcnNjb3JlUHJvdG9TZXR0ZXIg
eyBmYWxzZSB9OwogICAgIH07CiAgICAgdHlwZWRlZiBpbnQgUHJvcGVydHlMaXN0OwogICAgIHR5
cGVkZWYgaW50IEVsZW1lbnRMaXN0OwpAQCAtMjE1LDI4ICsyMTQsMjMgQEAgcHVibGljOgogCiAg
ICAgaW50IGNyZWF0ZUFyZ3VtZW50c0xpc3QoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50KSB7
IHJldHVybiBBcmd1bWVudHNMaXN0UmVzdWx0OyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50c0xp
c3QoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQpIHsgcmV0dXJuIEFyZ3VtZW50c0xp
c3RSZXN1bHQ7IH0KLSAgICBQcm9wZXJ0eSBjcmVhdGVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVy
KiBuYW1lLCBpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5
cGUsIGJvb2wgY29tcGxldGUsIFN1cGVyQmluZGluZywgSW5mZXJOYW1lLCBDbGFzc0VsZW1lbnRU
YWcpCisgICAgUHJvcGVydHkgY3JlYXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciogbmFtZSwg
aW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgUHJvcGVydHlOb2RlOjpQdXRUeXBlLCBTdXBl
ckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBJbmZlck5hbWUsIENsYXNzRWxlbWVudFRhZykKICAgICB7
Ci0gICAgICAgIGlmICghY29tcGxldGUpCi0gICAgICAgICAgICByZXR1cm4gUHJvcGVydHkodHlw
ZSk7Ci0gICAgICAgIEFTU0VSVChuYW1lKTsKLSAgICAgICAgcmV0dXJuIFByb3BlcnR5KG5hbWUs
IHR5cGUpOworICAgICAgICByZXR1cm4gUHJvcGVydHkodHlwZSwgUHJvcGVydHlOb2RlOjppc1Vu
ZGVyc2NvcmVQcm90b1NldHRlcihtX3ZtLCBuYW1lLCB0eXBlLCBzdXBlckJpbmRpbmcgPT0gU3Vw
ZXJCaW5kaW5nOjpOZWVkZWQpKTsKICAgICB9Ci0gICAgUHJvcGVydHkgY3JlYXRlUHJvcGVydHko
aW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgUHJvcGVydHlOb2RlOjpQdXRUeXBlLCBib29s
LCBTdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZykKKyAgICBQcm9wZXJ0eSBjcmVhdGVQcm9w
ZXJ0eShpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUs
IFN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnKQogICAgIHsKICAgICAgICAgcmV0dXJuIFBy
b3BlcnR5KHR5cGUpOwogICAgIH0KLSAgICBQcm9wZXJ0eSBjcmVhdGVQcm9wZXJ0eShWTSYgdm0s
IFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgZG91YmxlIG5hbWUsIGludCwgUHJvcGVydHlOb2Rl
OjpUeXBlIHR5cGUsIFByb3BlcnR5Tm9kZTo6UHV0VHlwZSwgYm9vbCBjb21wbGV0ZSwgU3VwZXJC
aW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpCisgICAgUHJvcGVydHkgY3JlYXRlUHJvcGVydHkoVk0m
LCBQYXJzZXJBcmVuYSYsIGRvdWJsZSwgaW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgUHJv
cGVydHlOb2RlOjpQdXRUeXBlLCBTdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZykKICAgICB7
Ci0gICAgICAgIGlmICghY29tcGxldGUpCi0gICAgICAgICAgICByZXR1cm4gUHJvcGVydHkodHlw
ZSk7Ci0gICAgICAgIHJldHVybiBQcm9wZXJ0eSgmcGFyc2VyQXJlbmEuaWRlbnRpZmllckFyZW5h
KCkubWFrZU51bWVyaWNJZGVudGlmaWVyKHZtLCBuYW1lKSwgdHlwZSk7CisgICAgICAgIHJldHVy
biBQcm9wZXJ0eSh0eXBlKTsKICAgICB9Ci0gICAgUHJvcGVydHkgY3JlYXRlUHJvcGVydHkoaW50
LCBpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUsIGJv
b2wsIFN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnKQorICAgIFByb3BlcnR5IGNyZWF0ZVBy
b3BlcnR5KGludCwgaW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgUHJvcGVydHlOb2RlOjpQ
dXRUeXBlLCBTdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZykKICAgICB7CiAgICAgICAgIHJl
dHVybiBQcm9wZXJ0eSh0eXBlKTsKICAgICB9Ci0gICAgUHJvcGVydHkgY3JlYXRlUHJvcGVydHko
Y29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgUHJv
cGVydHlOb2RlOjpQdXRUeXBlLCBib29sLCBTdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZykK
KyAgICBQcm9wZXJ0eSBjcmVhdGVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQs
IFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUsIFN1cGVyQmlu
ZGluZywgQ2xhc3NFbGVtZW50VGFnKQogICAgIHsKICAgICAgICAgcmV0dXJuIFByb3BlcnR5KHR5
cGUpOwogICAgIH0KQEAgLTI5MSwyMiArMjg1LDE3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVu
ZEV4cG9ydFNwZWNpZmllcihFeHBvcnRTcGVjaWZpZXJMaXN0LCBFeHBvcnRTcGVjaWZpZXIpIHsg
fQogCiAgICAgaW50IGFwcGVuZENvbnN0RGVjbChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQs
IGNvbnN0IElkZW50aWZpZXIqLCBpbnQpIHsgcmV0dXJuIFN0YXRlbWVudFJlc3VsdDsgfQotICAg
IFByb3BlcnR5IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGJvb2wgc3RyaWN0LCBjb25zdCBJZGVudGlm
aWVyKiBuYW1lLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mLCBDbGFz
c0VsZW1lbnRUYWcpCisgICAgUHJvcGVydHkgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgY29uc3QgSWRl
bnRpZmllciosIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYsIENsYXNz
RWxlbWVudFRhZykKICAgICB7Ci0gICAgICAgIEFTU0VSVChuYW1lKTsKLSAgICAgICAgaWYgKCFz
dHJpY3QpCi0gICAgICAgICAgICByZXR1cm4gUHJvcGVydHkodHlwZSk7Ci0gICAgICAgIHJldHVy
biBQcm9wZXJ0eShuYW1lLCB0eXBlKTsKKyAgICAgICAgcmV0dXJuIFByb3BlcnR5KHR5cGUpOwog
ICAgIH0KLSAgICBQcm9wZXJ0eSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBib29sLCBpbnQsIGNvbnN0
IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYsIENsYXNzRWxlbWVudFRhZykKKyAg
ICBQcm9wZXJ0eSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBpbnQsIGNvbnN0IFBhcnNlckZ1bmN0aW9u
SW5mbzxTeW50YXhDaGVja2VyPiYsIENsYXNzRWxlbWVudFRhZykKICAgICB7CiAgICAgICAgIHJl
dHVybiBQcm9wZXJ0eSh0eXBlKTsKICAgICB9Ci0gICAgUHJvcGVydHkgY3JlYXRlR2V0dGVyT3JT
ZXR0ZXJQcm9wZXJ0eShWTSYgdm0sIFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGJvb2wgc3RyaWN0LCBkb3Vi
bGUgbmFtZSwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JiwgQ2xhc3NF
bGVtZW50VGFnKQorICAgIFByb3BlcnR5IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoVk0m
LCBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFByb3BlcnR5Tm9kZTo6VHlw
ZSB0eXBlLCBkb3VibGUsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYs
IENsYXNzRWxlbWVudFRhZykKICAgICB7Ci0gICAgICAgIGlmICghc3RyaWN0KQotICAgICAgICAg
ICAgcmV0dXJuIFByb3BlcnR5KHR5cGUpOwotICAgICAgICByZXR1cm4gUHJvcGVydHkoJnBhcnNl
ckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1ha2VOdW1lcmljSWRlbnRpZmllcih2bSwgbmFtZSks
IHR5cGUpOworICAgICAgICByZXR1cm4gUHJvcGVydHkodHlwZSk7CiAgICAgfQogCiAgICAgdm9p
ZCBhcHBlbmRTdGF0ZW1lbnQoaW50LCBpbnQpIHsgfQpAQCAtMzM5LDggKzMyOCw4IEBAIHB1Ymxp
YzoKICAgICAKICAgICB2b2lkIGFzc2lnbm1lbnRTdGFja0FwcGVuZChpbnQmIGFzc2lnbm1lbnRT
dGFja0RlcHRoLCBpbnQsIGludCwgaW50LCBpbnQsIE9wZXJhdG9yKSB7IGFzc2lnbm1lbnRTdGFj
a0RlcHRoID0gMTsgfQogICAgIGludCBjcmVhdGVBc3NpZ25tZW50KGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGludCYgYXNzaWdubWVudFN0YWNrRGVwdGgsIGludCwgaW50LCBpbnQsIGludCkgeyBh
c3NpZ25tZW50U3RhY2tEZXB0aCA9IDA7IHJldHVybiBBc3NpZ25tZW50RXhwcjsgfQotICAgIGNv
bnN0IElkZW50aWZpZXIqIGdldE5hbWUoY29uc3QgUHJvcGVydHkmIHByb3BlcnR5KSBjb25zdCB7
IHJldHVybiBwcm9wZXJ0eS5uYW1lOyB9CiAgICAgUHJvcGVydHlOb2RlOjpUeXBlIGdldFR5cGUo
Y29uc3QgUHJvcGVydHkmIHByb3BlcnR5KSBjb25zdCB7IHJldHVybiBwcm9wZXJ0eS50eXBlOyB9
CisgICAgYm9vbCBpc1VuZGVyc2NvcmVQcm90b1NldHRlcihjb25zdCBQcm9wZXJ0eSYgcHJvcGVy
dHkpIGNvbnN0IHsgcmV0dXJuIHByb3BlcnR5LmlzVW5kZXJzY29yZVByb3RvU2V0dGVyOyB9CiAg
ICAgYm9vbCBpc1Jlc29sdmUoRXhwcmVzc2lvblR5cGUgZXhwcikgY29uc3QgeyByZXR1cm4gZXhw
ciA9PSBSZXNvbHZlRXhwciB8fCBleHByID09IFJlc29sdmVFdmFsRXhwcjsgfQogICAgIEV4cHJl
c3Npb25UeXBlIGNyZWF0ZURlc3RydWN0dXJpbmdBc3NpZ25tZW50KGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGludCwgRXhwcmVzc2lvblR5cGUpCiAgICAgewpAQCAtNDQ3LDYgKzQzNiw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHByb3BhZ2F0ZUFyZ3VtZW50c1VzZSgpIHsgfQogCiBwcml2YXRlOgor
ICAgIFZNJiBtX3ZtOwogICAgIGludCBtX3RvcEJpbmFyeUV4cHI7CiAgICAgaW50IG1fdG9wVW5h
cnlUb2tlbjsKIH07CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDAyNjRlZWZjM2JjZGRkNWYyODAwZjUzZWFhMDBhZmVkOGViYTkwN2EuLjQ1
OTY4ZDhhNDYwOTZiYzdlNzUxZTcyMzQxNmUyOWFhZDdiMGNhZGEgMTAwNjQ0Ci0tLSBhL0pTVGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MjAtMDgtMjQgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAg
ICAgIEludmFsaWQgZWFybHkgZXJyb3IgZm9yIG9iamVjdCBsaXRlcmFsIG1ldGhvZCBuYW1lZCAi
X19wcm90b19fIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE1NzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUm9zcyBLaXJzbGluZy4KKworICAgICAg
ICAqIHRlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWw6IE1hcmsgMiB0ZXN0IGNhc2VzIGFzIHBhc3Np
bmcuCisKIDIwMjAtMDgtMjIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbSlNDXSBJbXBsZW1lbnQgSW50bCBMYW5ndWFnZSBUYWcgUGFyc2VyCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIv
ZXhwZWN0YXRpb25zLnlhbWwKaW5kZXggNGQxOWE0Zjk4ZTFjMTk1ZmJkNjRhNmI1NWYwZmIyYTli
NDFlMDQ5NS4uMTc1MmQxYjkzMzVjM2QwOTVmOWIxN2VhOGVhMzRmNWU1OTcxNWY4MSAxMDA2NDQK
LS0tIGEvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCisrKyBiL0pTVGVzdHMvdGVz
dDI2Mi9leHBlY3RhdGlvbnMueWFtbApAQCAtMjM4NSw5ICsyMzg1LDYgQEAgdGVzdC9sYW5ndWFn
ZS9leHByZXNzaW9ucy9uZXcvY3RvckV4cHItaXNDdG9yLWFmdGVyLWFyZ3MtZXZhbC1mbi13cmFw
dXAuanM6CiB0ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL25ldy9ub24tY3Rvci1lcnItcmVhbG0u
anM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IHByb2R1Y3Rpb24gaW5jbHVkaW5nIEFyZ3Vt
ZW50cyBFeHBlY3RlZCBhIFR5cGVFcnJvciBidXQgZ290IGEgVHlwZUVycm9yJwogICBzdHJpY3Qg
bW9kZTogJ1Rlc3QyNjJFcnJvcjogcHJvZHVjdGlvbiBpbmNsdWRpbmcgQXJndW1lbnRzIEV4cGVj
dGVkIGEgVHlwZUVycm9yIGJ1dCBnb3QgYSBUeXBlRXJyb3InCi10ZXN0L2xhbmd1YWdlL2V4cHJl
c3Npb25zL29iamVjdC9fX3Byb3RvX18tcGVybWl0dGVkLWR1cC5qczoKLSAgZGVmYXVsdDogJ1N5
bnRheEVycm9yOiBBdHRlbXB0ZWQgdG8gcmVkZWZpbmUgX19wcm90b19fIHByb3BlcnR5LicKLSAg
c3RyaWN0IG1vZGU6ICdTeW50YXhFcnJvcjogQXR0ZW1wdGVkIHRvIHJlZGVmaW5lIF9fcHJvdG9f
XyBwcm9wZXJ0eS4nCiB0ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL29iamVjdC9jb3ZlcmVkLWlk
ZW50LW5hbWUtcHJvcC1uYW1lLWxpdGVyYWwtYnJlYWstZXNjYXBlZC5qczoKICAgZGVmYXVsdDog
IlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGVzY2FwZWQgY2hhcmFjdGVycyBpbiBrZXl3b3JkIHRv
a2VuOiAnYnJlXFx1MDA2MWsnIgogICBzdHJpY3QgbW9kZTogIlN5bnRheEVycm9yOiBVbmV4cGVj
dGVkIGVzY2FwZWQgY2hhcmFjdGVycyBpbiBrZXl3b3JkIHRva2VuOiAnYnJlXFx1MDA2MWsnIgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>