<?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>155062</bug_id>
          
          <creation_ts>2016-03-05 00:36:44 -0800</creation_ts>
          <short_desc>Add the support for upgrading custom elements in cloneNode</short_desc>
          <delta_ts>2016-03-05 21:07:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>154907</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1171175</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-05 00:36:44 -0800</bug_when>
    <thetext>Node.prototype.cloneNode should support upgrading custom elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171176</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-05 00:37:12 -0800</bug_when>
    <thetext>&lt;rdar://problem/24949463&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171181</commentid>
    <comment_count>2</comment_count>
      <attachid>273072</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-05 01:08:08 -0800</bug_when>
    <thetext>Created attachment 273072
Adds the support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171182</commentid>
    <comment_count>3</comment_count>
      <attachid>273073</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-05 01:08:59 -0800</bug_when>
    <thetext>Created attachment 273073
Minor fix in change log</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171186</commentid>
    <comment_count>4</comment_count>
      <attachid>273075</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-05 01:12:07 -0800</bug_when>
    <thetext>Created attachment 273075
Fix GTK/EFL builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171188</commentid>
    <comment_count>5</comment_count>
      <attachid>273075</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-03-05 01:15:08 -0800</bug_when>
    <thetext>Comment on attachment 273075
Fix GTK/EFL builds

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

&gt; Source/WebCore/dom/LifecycleCallbackQueue.cpp:51
&gt; +        , m_attributeName(nullQName())

This isn&apos;t needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171189</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-05 01:18:06 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 273075 [details]
&gt; Fix GTK/EFL builds
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=273075&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/LifecycleCallbackQueue.cpp:51
&gt; &gt; +        , m_attributeName(nullQName())
&gt; 
&gt; This isn&apos;t needed.

Actually, it&apos;s needed on Mac port :(  Compiler will complain otherwise.  I guess QNAME_DEFAULT_CONSTRUCTOR is false at
http://trac.webkit.org/browser/trunk/Source/WebCore/dom/QualifiedName.h#L76

#ifdef QNAME_DEFAULT_CONSTRUCTOR
    QualifiedName() { }
#endif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171193</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-05 01:27:00 -0800</bug_when>
    <thetext>I&apos;m going to use Optional&lt;QualifiedName&gt; instead as discussed on IRC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171195</commentid>
    <comment_count>8</comment_count>
      <attachid>273078</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-05 01:27:32 -0800</bug_when>
    <thetext>Created attachment 273078
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171196</commentid>
    <comment_count>9</comment_count>
      <attachid>273078</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-05 01:27:47 -0800</bug_when>
    <thetext>Comment on attachment 273078
Patch for landing

Wait for EWS first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171384</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-05 21:07:35 -0800</bug_when>
    <thetext>Committed r197634: &lt;http://trac.webkit.org/changeset/197634&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273072</attachid>
            <date>2016-03-05 01:08:08 -0800</date>
            <delta_ts>2016-03-05 01:08:57 -0800</delta_ts>
            <desc>Adds the support</desc>
            <filename>bug-155062-20160305010753.patch</filename>
            <type>text/plain</type>
            <size>34167</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzYxMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDE2LTAzLTA1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCB0aGUgc3VwcG9ydCBmb3Ig
dXBncmFkaW5nIGN1c3RvbSBlbGVtZW50cyBpbiBjbG9uZU5vZGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTA2MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBodHRwczovL3czYy5naXRo
dWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL2N1c3RvbS8jdXBncmFkaW5nIGFuZCBzdGVwcyA2IHRo
cm91Z2ggMTEgaW4KKyAgICAgICAgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmNvbXBvbmVudHMv
c3BlYy9jdXN0b20vI2h0bWxlbGVtZW50LWNvbnN0cnVjdG9yIHRvIHN1cHBvcnQgdXBncmFkaW5n
IGVsZW1lbnRzCisgICAgICAgIGNyZWF0ZWQgYnkgTm9kZS5wcm90b3R5cGUuY2xvbmVOb2RlLgor
CisgICAgICAgIFRlc3RzOiBmYXN0L2N1c3RvbS1lbGVtZW50cy9saWZlY3ljbGUtY2FsbGJhY2st
dGltaW5nLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3VzdG9tLWVsZW1lbnRzL3VwZ3JhZGlu
Zy9Ob2RlLWNsb25lTm9kZS5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbUVs
ZW1lbnRJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21FbGVtZW50SW50
ZXJmYWNlOjp1cGdyYWRlRWxlbWVudCk6IEFkZGVkLiBJbXBsZW1lbnRzCisgICAgICAgICBodHRw
czovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL2N1c3RvbS8jZGZuLXVwZ3JhZGUt
YS1jdXN0b20tZWxlbWVudAorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21FbGVtZW50SW50ZXJm
YWNlOjpkaWRVcGdyYWRlTGFzdEVsZW1lbnRJbkNvbnN0cnVjdGlvblN0YWNrKTogQWRkZWQuIElt
cGxlbWVudHMgc3RlcCAxMAorICAgICAgICAgIlJlcGxhY2UgdGhlIGxhc3QgZW50cnkgaW4gZGVm
aW5pdGlvbidzIGNvbnN0cnVjdGlvbiBzdGFja2Egd2l0aCBhbiBhbHJlYWR5IGNvbnN0cnVjdGVk
IG1hcmtlci4iCisgICAgICAgICBpbiBodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50
cy9zcGVjL2N1c3RvbS8jZG9tLWh0bWxlbGVtZW50LWNvbnN0cnVjdG9yCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpK
U0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmlzVXBncmFkaW5nRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6Omxhc3RFbGVtZW50SW5Db25zdHJ1Y3Rp
b25TdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UpOiBB
ZGRlZCBtX2NvbnN0cnVjdGlvblN0YWNrLiBUaGlzIGlzIHRoZSBjb25zdHJ1Y3Rpb24gc3RhY2s6
CisgICAgICAgICBodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL2N1c3Rv
bS8jZGZuLWVsZW1lbnQtZGVmaW5pdGlvbi1jb25zdHJ1Y3Rpb24tc3RhY2sKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGhyb3dJbnZh
bGlkU3RhdGVFcnJvcik6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNIVE1MRWxlbWVudCk6IEltcGxlbWVudCB0aGUgdXBn
cmFkaW5nIGNhc2UgaW46CisgICAgICAgICBodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9u
ZW50cy9zcGVjL2N1c3RvbS8jaHRtbGVsZW1lbnQtY29uc3RydWN0b3IKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRmFsbGJhY2tIVE1MRWxlbWVu
dCk6IEFkZGVkLiBFbnF1ZXVlcyB1cGdyYWRlcyBvZiBjdXN0b20gZWxlbWVudHMgKGVucXVldWVF
bGVtZW50VXBncmFkZQorICAgICAgICBjdXJyZW50bHkgZG9lcyBub3RoaW5nIGlmIHRoZXJlIGlz
IG5vIEludm9rZXNDdXN0b21FbGVtZW50TGlmZWN5Y2xlQ2FsbGJhY2tzOyBlLmcuIGluIG90aGVy
IERPTSBBUElzKS4KKyAgICAgICAgVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIGh0dHBzOi8vdzNj
LmdpdGh1Yi5pby93ZWJjb21wb25lbnRzL3NwZWMvY3VzdG9tLyNkZm4tZWxlbWVudC11cGdyYWRl
LWFsZ29yaXRobQorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnQpOgor
ICAgICAgICAqIGRvbS9MaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxpZmVjeWNsZVF1ZXVlSXRlbTo6TGlmZWN5Y2xlUXVldWVJdGVtKTogQWRkZWQgYSBnZW5l
cmljIGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6TGlmZWN5Y2xlUXVldWVJdGVtOjpp
bnZva2UpOiBDYWxsIHVwZ3JhZGVFbGVtZW50IHdoZW4gbV90eXBlIGlzIFR5cGU6OkVsZW1lbnRV
cGdyYWRlLgorICAgICAgICAoV2ViQ29yZTo6TGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZTo6ZW5xdWV1
ZUVsZW1lbnRVcGdyYWRlKTogQWRkZWQuCisgICAgICAgICogZG9tL0xpZmVjeWNsZUNhbGxiYWNr
UXVldWUuaDoKKyAgICAgICAgKiBkb20vTm9kZS5pZGw6IEFkZGVkIEludm9rZXNDdXN0b21FbGVt
ZW50TGlmZWN5Y2xlQ2FsbGJhY2tzIG9uIGNsb25lTm9kZS4KKyAgICAgICAgKiBkb20vbWFrZV9u
YW1lcy5wbDoKKyAgICAgICAgKHByaW50RmFjdG9yeUNwcEZpbGUpOiBBZGRlZCBhIHZhcmlhbnQg
b2YgY3JlYXRlS25vd25FbGVtZW50IHdoaWNoIHRha2VzIFF1YWxpZmllZE5hbWUuIEFsc28gZGly
ZWN0bHkgY2FsbAorICAgICAgICBmaW5kKEhUTUx8U1ZHfE1hdGhNTClFbGVtZW50Q29uc3RydWN0
b3JGdW5jdGlvbiBpbiBjcmVhdGVFbGVtZW50IHRoYXQgdGFrZXMgQXRvbWljU3RyaW5nIHRvIGF2
b2lkIGFuIGV4dHJhCisgICAgICAgIGZ1bmN0aW9uIGNhbGwuCisgICAgICAgIChwcmludEZhY3Rv
cnlIZWFkZXJGaWxlKTogQWRkZWQgYSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBmb3IgY3JlYXRlS25v
d25FbGVtZW50IHRoYXQgdGFrZXMgUXVhbGlmaWVkTmFtZSBhbmQKKyAgICAgICAgb3V0ZGVudGVk
IGNsYXNzIGFuZCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgdG8gbWF0Y2ggdGhlIG1vZGVybiBjb2Rl
IHN0eWxlIGd1aWRlbGluZS4KKwogMjAxNi0wMy0wNSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBGaXggdGhlIGJpbmRpbmdzIHRlc3QgYWZ0ZXIgcjE5NzYxMS4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFj
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21F
bGVtZW50SW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMTk3NjEyKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTAyLDYgKzEwMiw1NCBAQCBSZWZQdHI8RWxlbWVudD4gSlNDdXN0b21FbGVtZW50SW50ZXJm
YWNlCiAgICAgcmV0dXJuIHdyYXBwZWRFbGVtZW50OwogfQogCit2b2lkIEpTQ3VzdG9tRWxlbWVu
dEludGVyZmFjZTo6dXBncmFkZUVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICBBU1NF
UlQoZWxlbWVudC5pc0N1c3RvbUVsZW1lbnQoKSk7CisgICAgaWYgKCFjYW5JbnZva2VDYWxsYmFj
aygpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWY8SlNDdXN0b21FbGVtZW50SW50ZXJmYWNl
PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2lzb2xhdGVkV29ybGQt
PnZtKCkpOworCisgICAgaWYgKCFtX2NvbnN0cnVjdG9yKQorICAgICAgICByZXR1cm47CisKKyAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChjb250
ZXh0LT5pc0RvY3VtZW50KCkpOworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSB0b0pTRE9NR2xvYmFsT2JqZWN0KGNvbnRleHQsICptX2lzb2xhdGVkV29ybGQpOworICAgIEV4
ZWNTdGF0ZSogc3RhdGUgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBpZiAoc3Rh
dGUtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm47CisKKyAgICBDb25zdHJ1Y3REYXRh
IGNvbnN0cnVjdERhdGE7CisgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gbV9jb25z
dHJ1Y3Rvci0+bWV0aG9kVGFibGUoKS0+Z2V0Q29uc3RydWN0RGF0YShtX2NvbnN0cnVjdG9yLmdl
dCgpLCBjb25zdHJ1Y3REYXRhKTsKKyAgICBpZiAoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RU
eXBlTm9uZSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG1fY29uc3RydWN0aW9uU3RhY2suYXBwZW5kKCZlbGVtZW50KTsKKwor
ICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIGNvb2tpZSA9IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0
aW9uQ29uc3RydWN0KGNvbnRleHQsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEpOworICAg
IEpTVmFsdWUgcmV0dXJuZWRFbGVtZW50ID0gY29uc3RydWN0KHN0YXRlLCBtX2NvbnN0cnVjdG9y
LmdldCgpLCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdzKTsKKyAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5jdGlvbihjb29raWUsIGNvbnRleHQpOworCisg
ICAgbV9jb25zdHJ1Y3Rpb25TdGFjay5yZW1vdmVMYXN0KCk7CisKKyAgICBpZiAoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm47CisKKyAgICBFbGVtZW50KiB3cmFwcGVkRWxl
bWVudCA9IEpTRWxlbWVudDo6dG9XcmFwcGVkKHJldHVybmVkRWxlbWVudCk7CisgICAgaWYgKCF3
cmFwcGVkRWxlbWVudCB8fCB3cmFwcGVkRWxlbWVudCAhPSAmZWxlbWVudCkgeworICAgICAgICB0
aHJvd0ludmFsaWRTdGF0ZUVycm9yKCpzdGF0ZSwgIkN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9y
IGZhaWxlZCB0byB1cGdyYWRlIGFuIGVsZW1lbnQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBBU1NFUlQod3JhcHBlZEVsZW1lbnQtPmlzQ3VzdG9tRWxlbWVudCgpKTsKK30KKwogdm9p
ZCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKIHsKICAgICBpZiAo
IWNhbkludm9rZUNhbGxiYWNrKCkpCkBAIC0xNDUsNiArMTkzLDExIEBAIHZvaWQgSlNDdXN0b21F
bGVtZW50SW50ZXJmYWNlOjphdHRyaWJ1dGUKICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICBy
ZXBvcnRFeGNlcHRpb24oc3RhdGUsIGV4Y2VwdGlvbik7CiB9CisgICAgCit2b2lkIEpTQ3VzdG9t
RWxlbWVudEludGVyZmFjZTo6ZGlkVXBncmFkZUxhc3RFbGVtZW50SW5Db25zdHJ1Y3Rpb25TdGFj
aygpCit7CisgICAgbV9jb25zdHJ1Y3Rpb25TdGFjay5sYXN0KCkgPSBudWxscHRyOworfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oCShyZXZpc2lvbiAxOTc2MTIp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsOCBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFz
cyBTaG91bGRDbGVhckV4Y2VwdGlvbiB7IENsZWFyLCBEb05vdENsZWFyIH07CiAgICAgUmVmUHRy
PEVsZW1lbnQ+IGNvbnN0cnVjdEVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgU2hvdWxkQ2xl
YXJFeGNlcHRpb24pOwogCisgICAgdm9pZCB1cGdyYWRlRWxlbWVudChFbGVtZW50Jik7CisKICAg
ICB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudCYsIGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVl
KTsKIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdCB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOyB9CkBAIC03MCw2ICs3MiwxMCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAKKyAgICBib29s
IGlzVXBncmFkaW5nRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuICFtX2NvbnN0cnVjdGlvblN0YWNr
LmlzRW1wdHkoKTsgfQorICAgIEVsZW1lbnQqIGxhc3RFbGVtZW50SW5Db25zdHJ1Y3Rpb25TdGFj
aygpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RydWN0aW9uU3RhY2subGFzdCgpLmdldCgpOyB9Cisg
ICAgdm9pZCBkaWRVcGdyYWRlTGFzdEVsZW1lbnRJbkNvbnN0cnVjdGlvblN0YWNrKCk7CisKICAg
ICB2aXJ0dWFsIH5KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UoKTsKIAogcHJpdmF0ZToKQEAgLTc4
LDYgKzg0LDcgQEAgcHJpdmF0ZToKICAgICBRdWFsaWZpZWROYW1lIG1fbmFtZTsKICAgICBtdXRh
YmxlIEpTQzo6V2VhazxKU0M6OkpTT2JqZWN0PiBtX2NvbnN0cnVjdG9yOwogICAgIFJlZlB0cjxE
T01XcmFwcGVyV29ybGQ+IG1faXNvbGF0ZWRXb3JsZDsKKyAgICBWZWN0b3I8UmVmUHRyPEVsZW1l
bnQ+LCAxPiBtX2NvbnN0cnVjdGlvblN0YWNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCShy
ZXZpc2lvbiAxOTc2MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NDIsNiArNjQyLDEzIEBAIHZvaWQgdGhyb3dOb3RT
dXBwb3J0ZWRFcnJvcihKU0M6OkV4ZWNTdGEKICAgICBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9u
KCZzdGF0ZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgTk9UX1NVUFBPUlRFRF9FUlIsICZt
ZXNzYWdlU3RyaW5nKSk7CiB9CiAKK3ZvaWQgdGhyb3dJbnZhbGlkU3RhdGVFcnJvcihKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCit7CisgICAgQVNTRVJUKCFzdGF0
ZS5oYWRFeGNlcHRpb24oKSk7CisgICAgU3RyaW5nIG1lc3NhZ2VTdHJpbmcobWVzc2FnZSk7Cisg
ICAgc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZURPTUV4Y2VwdGlvbigm
c3RhdGUsIElOVkFMSURfU1RBVEVfRVJSLCAmbWVzc2FnZVN0cmluZykpOworfQorCiBKU0M6OkVu
Y29kZWRKU1ZhbHVlIHRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IoSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCB1bnNpZ25lZCBhcmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUs
IGNvbnN0IGNoYXIqIGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25O
YW1lLCBjb25zdCBjaGFyKiBleHBlY3RlZFZhbHVlcykKIHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAko
cmV2aXNpb24gMTk3NjEyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDYgKzg1LDcgQEAgV0VCQ09SRV9FWFBPUlQgSlND
OjpFbmNvZGVkSlNWYWx1ZSByZXBvcgogV0VCQ09SRV9FWFBPUlQgdm9pZCByZXBvcnREZXByZWNh
dGVkU2V0dGVyRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1l
LCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKTsKIAogdm9pZCB0aHJvd05vdFN1cHBvcnRlZEVy
cm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciogbWVzc2FnZSk7Cit2b2lkIHRocm93SW52
YWxpZFN0YXRlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKIHZv
aWQgdGhyb3dBcnJheUVsZW1lbnRUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmKTsKIHZvaWQgdGhy
b3dBdHRyaWJ1dGVUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiBpbnRlcmZh
Y2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBjaGFyKiBleHBlY3RlZFR5
cGUpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKEpTQzo6RXhl
Y1N0YXRlJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMTk3NjEyKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDdXN0b21FbGVtZW50RGVmaW5pdGlvbnMuaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgorI2luY2x1ZGUg
IkpTTm9kZUN1c3RvbS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvSlNXaXRoU2NvcGUuaD4KIApAQCAtNTcsMTYgKzU4LDQwIEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlMKICAgICBpZiAoIWludGVyZmFj
ZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsICJuZXcudGFyZ2V0IGRv
ZXMgbm90IGRlZmluZSBhIGN1c3RvbSBlbGVtZW50Iik7CiAKLSAgICBhdXRvKiBnbG9iYWxPYmpl
Y3QgPSBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKTsKLSAgICBTdHJ1Y3R1cmUqIGJhc2VT
dHJ1Y3R1cmUgPSBnZXRET01TdHJ1Y3R1cmU8SlNIVE1MRWxlbWVudD4odm0sICpnbG9iYWxPYmpl
Y3QpOwotICAgIGF1dG8qIG5ld0VsZW1lbnRTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpj
cmVhdGVTdWJjbGFzc1N0cnVjdHVyZShzdGF0ZSwgbmV3VGFyZ2V0VmFsdWUsIGJhc2VTdHJ1Y3R1
cmUpOwotICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQorICAgIGlmICgh
aW50ZXJmYWNlLT5pc1VwZ3JhZGluZ0VsZW1lbnQoKSkgeworICAgICAgICBhdXRvKiBnbG9iYWxP
YmplY3QgPSBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgU3RydWN0dXJl
KiBiYXNlU3RydWN0dXJlID0gZ2V0RE9NU3RydWN0dXJlPEpTSFRNTEVsZW1lbnQ+KHZtLCAqZ2xv
YmFsT2JqZWN0KTsKKyAgICAgICAgYXV0byogbmV3RWxlbWVudFN0cnVjdHVyZSA9IEludGVybmFs
RnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKHN0YXRlLCBuZXdUYXJnZXRWYWx1ZSwg
YmFzZVN0cnVjdHVyZSk7CisgICAgICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
KworICAgICAgICBSZWY8SFRNTEVsZW1lbnQ+IGVsZW1lbnQgPSBIVE1MRWxlbWVudDo6Y3JlYXRl
KGludGVyZmFjZS0+bmFtZSgpLCBkb2N1bWVudCk7CisgICAgICAgIGF1dG8qIGpzRWxlbWVudCA9
IEpTSFRNTEVsZW1lbnQ6OmNyZWF0ZShuZXdFbGVtZW50U3RydWN0dXJlLCBnbG9iYWxPYmplY3Qs
IGVsZW1lbnQuZ2V0KCkpOworICAgICAgICBjYWNoZVdyYXBwZXIoZ2xvYmFsT2JqZWN0LT53b3Js
ZCgpLCBlbGVtZW50LnB0cigpLCBqc0VsZW1lbnQpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzRWxlbWVudCk7CisgICAgfQorCisgICAgRWxlbWVudCogZWxlbWVudFRvVXBncmFk
ZSA9IGludGVyZmFjZS0+bGFzdEVsZW1lbnRJbkNvbnN0cnVjdGlvblN0YWNrKCk7CisgICAgaWYg
KCFlbGVtZW50VG9VcGdyYWRlKSB7CisgICAgICAgIHRocm93SW52YWxpZFN0YXRlRXJyb3IoKnN0
YXRlLCAiQ2Fubm90IGluc3RhbnRpYXRlIGEgY3VzdG9tIGVsZW1lbnQgaW5zaWRlIGl0cyBvd24g
Y29uc3RyY3V0b3IgZHVyaW5nIHVwZ3JhZGVzIik7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgfQogCi0gICAgUmVmPEhUTUxFbGVtZW50PiBlbGVt
ZW50ID0gSFRNTEVsZW1lbnQ6OmNyZWF0ZShpbnRlcmZhY2UtPm5hbWUoKSwgZG9jdW1lbnQpOwot
ICAgIGF1dG8qIGpzRWxlbWVudCA9IEpTSFRNTEVsZW1lbnQ6OmNyZWF0ZShuZXdFbGVtZW50U3Ry
dWN0dXJlLCBnbG9iYWxPYmplY3QsIGVsZW1lbnQuZ2V0KCkpOwotICAgIGNhY2hlV3JhcHBlcihn
bG9iYWxPYmplY3QtPndvcmxkKCksIGVsZW1lbnQucHRyKCksIGpzRWxlbWVudCk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0VsZW1lbnQpOworICAgIEpTVmFsdWUgZWxlbWVudFdyYXBw
ZXJWYWx1ZSA9IHRvSlMoc3RhdGUsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBlbGVt
ZW50VG9VcGdyYWRlKTsKKyAgICBBU1NFUlQoZWxlbWVudFdyYXBwZXJWYWx1ZS5pc09iamVjdCgp
KTsKKworICAgIEpTVmFsdWUgbmV3UHJvdG90eXBlID0gbmV3VGFyZ2V0LT5nZXQoc3RhdGUsIHZt
LnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7CisgICAgaWYgKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAg
IEpTT2JqZWN0KiBlbGVtZW50V3JhcHBlck9iamVjdCA9IGFzT2JqZWN0KGVsZW1lbnRXcmFwcGVy
VmFsdWUpOworICAgIEpTT2JqZWN0OjpzZXRQcm90b3R5cGUoZWxlbWVudFdyYXBwZXJPYmplY3Qs
IHN0YXRlLCBuZXdQcm90b3R5cGUsIHRydWUgLyogc2hvdWxkVGhyb3dJZkNhbnRTZXQgKi8pOwor
ICAgIGlmIChzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICBpbnRlcmZhY2UtPmRpZFVwZ3JhZGVMYXN0RWxl
bWVudEluQ29uc3RydWN0aW9uU3RhY2soKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
ZWxlbWVudFdyYXBwZXJWYWx1ZSk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCShyZXZpc2lvbiAxOTc2MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNiArMTAzLDcgQEAKICNpbmNsdWRlICJKU01vZHVs
ZUxvYWRlci5oIgogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJMYW5ndWFn
ZS5oIgorI2luY2x1ZGUgIkxpZmVjeWNsZUNhbGxiYWNrUXVldWUuaCIKICNpbmNsdWRlICJMb2Fk
ZXJTdHJhdGVneS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNYWluRnJhbWUu
aCIKQEAgLTEwNzIsMTUgKzEwNzMsMzEgQEAgYm9vbCBEb2N1bWVudDo6aGFzVmFsaWROYW1lc3Bh
Y2VGb3JBdHRyaQogICAgIHJldHVybiBoYXNWYWxpZE5hbWVzcGFjZUZvckVsZW1lbnRzKHFOYW1l
KTsKIH0KIAorc3RhdGljIFJlZjxIVE1MRWxlbWVudD4gY3JlYXRlRmFsbGJhY2tIVE1MRWxlbWVu
dChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCit7CisgICAg
YXV0byogZGVmaW5pdGlvbnMgPSBkb2N1bWVudC5jdXN0b21FbGVtZW50RGVmaW5pdGlvbnMoKTsK
KyAgICBpZiAoVU5MSUtFTFkoZGVmaW5pdGlvbnMpKSB7CisgICAgICAgIGlmIChhdXRvKiBpbnRl
cmZhY2UgPSBkZWZpbml0aW9ucy0+ZmluZEludGVyZmFjZShuYW1lKSkgeworICAgICAgICAgICAg
UmVmPEhUTUxFbGVtZW50PiBlbGVtZW50ID0gSFRNTEVsZW1lbnQ6OmNyZWF0ZShuYW1lLCBkb2N1
bWVudCk7CisgICAgICAgICAgICBlbGVtZW50LT5zZXRJc0N1c3RvbUVsZW1lbnQoKTsgLy8gUHJl
LXVwZ3JhZGUgZWxlbWVudCBpcyBzdGlsbCBjb25zaWRlcmVkIGEgY3VzdG9tIGVsZW1lbnQuCisg
ICAgICAgICAgICBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlOjplbnF1ZXVlRWxlbWVudFVwZ3JhZGUo
ZWxlbWVudC5nZXQoKSwgKmludGVyZmFjZSk7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsK
KyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gSFRNTFVua25vd25FbGVtZW50OjpjcmVhdGUo
bmFtZSwgZG9jdW1lbnQpOworfQorCiAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmVhbGx5IGJlIGlu
IGEgcG9zc2libGUgRWxlbWVudEZhY3RvcnkgY2xhc3MuCiBSZWY8RWxlbWVudD4gRG9jdW1lbnQ6
OmNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgYm9vbCBjcmVhdGVkQnlQ
YXJzZXIpCiB7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQ7CiAKICAgICAvLyBGSVhNRTog
VXNlIHJlZ2lzdGVyZWQgbmFtZXNwYWNlcyBhbmQgbG9vayB1cCBpbiBhIGhhc2ggdG8gZmluZCB0
aGUgcmlnaHQgZmFjdG9yeS4KLSAgICBpZiAobmFtZS5uYW1lc3BhY2VVUkkoKSA9PSB4aHRtbE5h
bWVzcGFjZVVSSSkKLSAgICAgICAgZWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRl
RWxlbWVudChuYW1lLCAqdGhpcywgbnVsbHB0ciwgY3JlYXRlZEJ5UGFyc2VyKTsKLSAgICBlbHNl
IGlmIChuYW1lLm5hbWVzcGFjZVVSSSgpID09IFNWR05hbWVzOjpzdmdOYW1lc3BhY2VVUkkpCisg
ICAgaWYgKG5hbWUubmFtZXNwYWNlVVJJKCkgPT0geGh0bWxOYW1lc3BhY2VVUkkpIHsKKyAgICAg
ICAgZWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlS25vd25FbGVtZW50KG5hbWUs
ICp0aGlzLCBudWxscHRyLCBjcmVhdGVkQnlQYXJzZXIpOworICAgICAgICBpZiAoVU5MSUtFTFko
IWVsZW1lbnQpKQorICAgICAgICAgICAgZWxlbWVudCA9IGNyZWF0ZUZhbGxiYWNrSFRNTEVsZW1l
bnQoKnRoaXMsIG5hbWUpOworICAgIH0gZWxzZSBpZiAobmFtZS5uYW1lc3BhY2VVUkkoKSA9PSBT
VkdOYW1lczo6c3ZnTmFtZXNwYWNlVVJJKQogICAgICAgICBlbGVtZW50ID0gU1ZHRWxlbWVudEZh
Y3Rvcnk6OmNyZWF0ZUVsZW1lbnQobmFtZSwgKnRoaXMsIGNyZWF0ZWRCeVBhcnNlcik7CiAjaWYg
RU5BQkxFKE1BVEhNTCkKICAgICBlbHNlIGlmIChuYW1lLm5hbWVzcGFjZVVSSSgpID09IE1hdGhN
TE5hbWVzOjptYXRobWxOYW1lc3BhY2VVUkkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTGlm
ZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L0xpZmVjeWNsZUNhbGxiYWNrUXVldWUuY3BwCShyZXZpc2lvbiAxOTc2MTIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDkgKzQwLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExpZmVjeWNsZVF1ZXVl
SXRlbSB7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBUeXBlIHsKKyAgICAgICAgRWxlbWVudFVw
Z3JhZGUsCiAgICAgICAgIEF0dHJpYnV0ZUNoYW5nZWQsCiAgICAgfTsKIAorICAgIExpZmVjeWNs
ZVF1ZXVlSXRlbShUeXBlIHR5cGUsIEVsZW1lbnQmIGVsZW1lbnQsIEpTQ3VzdG9tRWxlbWVudElu
dGVyZmFjZSYgaW50ZXJmYWNlKQorICAgICAgICA6IG1fdHlwZSh0eXBlKQorICAgICAgICAsIG1f
ZWxlbWVudChlbGVtZW50KQorICAgICAgICAsIG1faW50ZXJmYWNlKGludGVyZmFjZSkKKyAgICAg
ICAgLCBtX2F0dHJpYnV0ZU5hbWUobnVsbFFOYW1lKCkpCisgICAgeyB9CisKICAgICBMaWZlY3lj
bGVRdWV1ZUl0ZW0oRWxlbWVudCYgZWxlbWVudCwgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlJiBp
bnRlcmZhY2UsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCiAgICAgICAg
IDogbV90eXBlKFR5cGU6OkF0dHJpYnV0ZUNoYW5nZWQpCiAgICAgICAgICwgbV9lbGVtZW50KGVs
ZW1lbnQpCkBAIC01NCw3ICs2MiwxNCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGludm9rZSgpCiAg
ICAgewotICAgICAgICBtX2ludGVyZmFjZS0+YXR0cmlidXRlQ2hhbmdlZChtX2VsZW1lbnQuZ2V0
KCksIG1fYXR0cmlidXRlTmFtZSwgbV9vbGRWYWx1ZSwgbV9uZXdWYWx1ZSk7CisgICAgICAgIHN3
aXRjaCAobV90eXBlKSB7CisgICAgICAgIGNhc2UgVHlwZTo6RWxlbWVudFVwZ3JhZGU6CisgICAg
ICAgICAgICBtX2ludGVyZmFjZS0+dXBncmFkZUVsZW1lbnQobV9lbGVtZW50LmdldCgpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFR5cGU6OkF0dHJpYnV0ZUNoYW5nZWQ6Cisg
ICAgICAgICAgICBtX2ludGVyZmFjZS0+YXR0cmlidXRlQ2hhbmdlZChtX2VsZW1lbnQuZ2V0KCks
IG1fYXR0cmlidXRlTmFtZSwgbV9vbGRWYWx1ZSwgbV9uZXdWYWx1ZSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQogICAgIH0KIAogcHJpdmF0ZToKQEAgLTc0LDYgKzg5LDEyIEBAIExp
ZmVjeWNsZUNhbGxiYWNrUXVldWU6On5MaWZlY3ljbGVDYWxsYmEKICAgICBBU1NFUlQobV9pdGVt
cy5pc0VtcHR5KCkpOwogfQogCit2b2lkIExpZmVjeWNsZUNhbGxiYWNrUXVldWU6OmVucXVldWVF
bGVtZW50VXBncmFkZShFbGVtZW50JiBlbGVtZW50LCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2Um
IGludGVyZmFjZSkKK3sKKyAgICBpZiAoYXV0byogcXVldWUgPSBDdXN0b21FbGVtZW50TGlmZWN5
Y2xlUHJvY2Vzc2luZ1N0YWNrOjplbnN1cmVDdXJyZW50UXVldWUoKSkKKyAgICAgICAgcXVldWUt
Pm1faXRlbXMuYXBwZW5kKExpZmVjeWNsZVF1ZXVlSXRlbShMaWZlY3ljbGVRdWV1ZUl0ZW06OlR5
cGU6OkVsZW1lbnRVcGdyYWRlLCBlbGVtZW50LCBpbnRlcmZhY2UpKTsKK30KKwogdm9pZCBMaWZl
Y3ljbGVDYWxsYmFja1F1ZXVlOjplbnF1ZXVlQXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKEVsZW1l
bnQmIGVsZW1lbnQsIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSYgaW50ZXJmYWNlLAogICAgIGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xk
VmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCiB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9MaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmgJKHJldmlzaW9uIDE5NzYxMikKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9MaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDYgKzQ3LDggQEAgcHVibGljOgogICAgIExpZmVjeWNsZUNhbGxiYWNrUXVldWUo
KTsKICAgICB+TGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZSgpOwogCisgICAgc3RhdGljIHZvaWQgZW5x
dWV1ZUVsZW1lbnRVcGdyYWRlKEVsZW1lbnQmLCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UmKTsK
KwogICAgIHN0YXRpYyB2b2lkIGVucXVldWVBdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2soRWxlbWVu
dCYsIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSYsCiAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5l
d1ZhbHVlKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmlkbAkocmV2aXNpb24gMTk3NjEyKQorKysgU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCwxMCBA
QAogICAgIFtDdXN0b20sIFJhaXNlc0V4Y2VwdGlvbl0gTm9kZSBhcHBlbmRDaGlsZChbQ3VzdG9t
UmV0dXJuXSBOb2RlIG5ld0NoaWxkKTsKIAogICAgIGJvb2xlYW4gICAgICAgICAgICBoYXNDaGls
ZE5vZGVzKCk7Ci0gICAgW05ld09iamVjdCwgUmFpc2VzRXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFz
PWNsb25lTm9kZUZvckJpbmRpbmdzXSBOb2RlIGNsb25lTm9kZShbRGVmYXVsdD1VbmRlZmluZWRd
IG9wdGlvbmFsIGJvb2xlYW4gZGVlcCk7CisKKyAgICBbTmV3T2JqZWN0LCBSYWlzZXNFeGNlcHRp
b24sIEltcGxlbWVudGVkQXM9Y2xvbmVOb2RlRm9yQmluZGluZ3MsIEludm9rZXNDdXN0b21FbGVt
ZW50TGlmZWN5Y2xlQ2FsbGJhY2tzXQorICAgIE5vZGUgY2xvbmVOb2RlKFtEZWZhdWx0PVVuZGVm
aW5lZF0gb3B0aW9uYWwgYm9vbGVhbiBkZWVwKTsKKwogICAgIHZvaWQgICAgICAgICAgICAgICBu
b3JtYWxpemUoKTsKIAogICAgIC8vIEludHJvZHVjZWQgaW4gRE9NIExldmVsIDI6CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vbWFrZV9uYW1lcy5wbAkocmV2aXNpb24gMTk3NjEyKQorKysgU291cmNlL1dlYkNv
cmUvZG9tL21ha2VfbmFtZXMucGwJKHdvcmtpbmcgY29weSkKQEAgLTEwNDcsMTIgKzEwNDcsMjMg
QEAgUmVmUHRyPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PiAkcAogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi1SZWY8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+ICRwYXJhbWV0
ZXJze25hbWVzcGFjZX1FbGVtZW50RmFjdG9yeTo6Y3JlYXRlRWxlbWVudChjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIERvY3VtZW50JiBkb2N1bWVudCRmb3JtRWxlbWVudEFyZ3VtZW50Rm9yRGVm
aW5pdGlvbiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCitSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNw
YWNlfUVsZW1lbnQ+ICRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50RmFjdG9yeTo6Y3JlYXRl
S25vd25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIERvY3VtZW50JiBkb2N1bWVu
dCRmb3JtRWxlbWVudEFyZ3VtZW50Rm9yRGVmaW5pdGlvbiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIp
CiB7Ci0gICAgUmVmUHRyPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PiBlbGVtZW50ID0g
JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRGYWN0b3J5OjpjcmVhdGVLbm93bkVsZW1lbnQo
JGFyZ3VtZW50TGlzdCk7Ci0gICAgaWYgKExJS0VMWShlbGVtZW50KSkKLSAgICAgICAgcmV0dXJu
IGVsZW1lbnQucmVsZWFzZU5vbk51bGwoKTsKLSAgICByZXR1cm4gJHBhcmFtZXRlcnN7ZmFsbGJh
Y2tJbnRlcmZhY2VOYW1lfTo6Y3JlYXRlKFF1YWxpZmllZE5hbWUobnVsbEF0b20sIG5hbWUsICR7
bG93ZXJjYXNlTmFtZXNwYWNlUHJlZml4fU5hbWVzcGFjZVVSSSksIGRvY3VtZW50KTsKKyAgICBj
b25zdCBDb25zdHJ1Y3RvckZ1bmN0aW9uTWFwRW50cnkmIGVudHJ5ID0gZmluZCRwYXJhbWV0ZXJz
e25hbWVzcGFjZX1FbGVtZW50Q29uc3RydWN0b3JGdW5jdGlvbihuYW1lLmxvY2FsTmFtZSgpKTsK
KyAgICBpZiAoTElLRUxZKGVudHJ5LmZ1bmN0aW9uKSkKKyAgICAgICAgcmV0dXJuIGVudHJ5LmZ1
bmN0aW9uKCRhcmd1bWVudExpc3QpOworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWY8JHBh
cmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+ICRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50
RmFjdG9yeTo6Y3JlYXRlRWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgRG9j
dW1lbnQmIGRvY3VtZW50JGZvcm1FbGVtZW50QXJndW1lbnRGb3JEZWZpbml0aW9uLCBib29sIGNy
ZWF0ZWRCeVBhcnNlcikKK3sKKyAgICBjb25zdCBDb25zdHJ1Y3RvckZ1bmN0aW9uTWFwRW50cnkm
IGVudHJ5ID0gZmluZCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50Q29uc3RydWN0b3JGdW5j
dGlvbihsb2NhbE5hbWUpOworICAgIGlmIChMSUtFTFkoZW50cnkuZnVuY3Rpb24pKSB7CisgICAg
ICAgIEFTU0VSVChlbnRyeS5xdWFsaWZpZWROYW1lKTsKKyAgICAgICAgY29uc3QgYXV0byYgbmFt
ZSA9ICplbnRyeS5xdWFsaWZpZWROYW1lOworICAgICAgICByZXR1cm4gZW50cnkuZnVuY3Rpb24o
JGFyZ3VtZW50TGlzdCk7CisgICAgfQorICAgIHJldHVybiAkcGFyYW1ldGVyc3tmYWxsYmFja0lu
dGVyZmFjZU5hbWV9OjpjcmVhdGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbG9jYWxOYW1lLCAk
e2xvd2VyY2FzZU5hbWVzcGFjZVByZWZpeH1OYW1lc3BhY2VVUkkpLCBkb2N1bWVudCk7CiB9CiAK
IFJlZjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gJHBhcmFtZXRlcnN7bmFtZXNwYWNl
fUVsZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IERvY3VtZW50JiBkb2N1bWVudCRmb3JtRWxlbWVudEFyZ3VtZW50Rm9yRGVmaW5pdGlvbiwgYm9v
bCBjcmVhdGVkQnlQYXJzZXIpCkBAIC0xMDg5LDI5ICsxMTAwLDM2IEBAIHN1YiBwcmludEZhY3Rv
cnlIZWFkZXJGaWxlCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIERvY3VtZW50
OwotICAgIGNsYXNzIEhUTUxGb3JtRWxlbWVudDsKLSAgICBjbGFzcyBRdWFsaWZpZWROYW1lOwor
Y2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBIVE1MRm9ybUVsZW1lbnQ7CitjbGFzcyBRdWFsaWZpZWRO
YW1lOwogCi0gICAgY2xhc3MgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ7CitjbGFzcyAk
cGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudDsKIAotICAgIGNsYXNzICRwYXJhbWV0ZXJze25h
bWVzcGFjZX1FbGVtZW50RmFjdG9yeSB7Ci0gICAgcHVibGljOgorY2xhc3MgJHBhcmFtZXRlcnN7
bmFtZXNwYWNlfUVsZW1lbnRGYWN0b3J5IHsKK3B1YmxpYzoKIEVORAogOwogCi1wcmludCBGICIg
ICAgICAgIHN0YXRpYyBSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+IGNyZWF0
ZUtub3duRWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgRG9jdW1lbnQmIjsK
K3ByaW50IEYgInN0YXRpYyBSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+IGNy
ZWF0ZUtub3duRWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmLCBEb2N1bWVudCYiOwogcHJpbnQg
RiAiLCBIVE1MRm9ybUVsZW1lbnQqID0gbnVsbHB0ciIgaWYgJHBhcmFtZXRlcnN7bmFtZXNwYWNl
fSBlcSAiSFRNTCI7Ci1wcmludCBGICIsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyID0gZmFsc2UpO1xu
XG4iOwotcHJpbnQgRiAiICAgICAgICBzdGF0aWMgUmVmPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1F
bGVtZW50PiBjcmVhdGVFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBEb2N1
bWVudCYiOworcHJpbnQgRiAiLCBib29sIGNyZWF0ZWRCeVBhcnNlciA9IGZhbHNlKTtcbiI7CisK
K3ByaW50IEYgInN0YXRpYyBSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+IGNy
ZWF0ZUtub3duRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmIjsKIHByaW50
IEYgIiwgSFRNTEZvcm1FbGVtZW50KiA9IG51bGxwdHIiIGlmICRwYXJhbWV0ZXJze25hbWVzcGFj
ZX0gZXEgIkhUTUwiOwogcHJpbnQgRiAiLCBib29sIGNyZWF0ZWRCeVBhcnNlciA9IGZhbHNlKTtc
biI7Ci1wcmludCBGICIgICAgICAgIHN0YXRpYyBSZWY8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVs
ZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbG9jYWxOYW1lLCBEb2N1
bWVudCYiOworCitwcmludCBGICJzdGF0aWMgUmVmPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVt
ZW50PiBjcmVhdGVFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIERvY3VtZW50JiI7Citwcmlu
dCBGICIsIEhUTUxGb3JtRWxlbWVudCogPSBudWxscHRyIiBpZiAkcGFyYW1ldGVyc3tuYW1lc3Bh
Y2V9IGVxICJIVE1MIjsKK3ByaW50IEYgIiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIgPSBmYWxzZSk7
XG4iOworCitwcmludCBGICJzdGF0aWMgUmVmPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50
PiBjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYiOwogcHJpbnQg
RiAiLCBIVE1MRm9ybUVsZW1lbnQqID0gbnVsbHB0ciIgaWYgJHBhcmFtZXRlcnN7bmFtZXNwYWNl
fSBlcSAiSFRNTCI7CiBwcmludCBGICIsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyID0gZmFsc2UpO1xu
IjsKIAogcHJpbnRmIEY8PEVORAotICAgIH07Cit9OworCiB9CiAKICNlbmRpZiAvLyAkcGFyYW1l
dGVyc3tuYW1lc3BhY2V9RWxlbWVudEZhY3RvcnlfaApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3NjEy
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTYtMDMtMDUgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgQWRkIHRoZSBzdXBwb3J0IGZvciB1cGdyYWRpbmcgY3VzdG9tIGVsZW1lbnRzIGluIGNsb25l
Tm9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1
MDYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgdGVzdCBjYXNlcyBmb3IgdXBncmFkaW5nIGVsZW1lbnRzIHdpdGggTm9kZS5wcm90b3R5cGUu
Y2xvbmVOb2RlLgorCisgICAgICAgICogZmFzdC9jdXN0b20tZWxlbWVudHMvbGlmZWN5Y2xlLWNh
bGxiYWNrLXRpbWluZy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jdXN0b20tZWxlbWVu
dHMvbGlmZWN5Y2xlLWNhbGxiYWNrLXRpbWluZy5odG1sOgorCiAyMDE2LTAzLTA0ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBiYXNpYyBzdXBwb3J0IGZv
ciBhdHRyaWJ1dGVDaGFuZ2VkIGxpZmVjeWNsZSBjYWxsYmFjawpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9jdXN0b20tZWxlbWVudHMvbGlmZWN5Y2xlLWNhbGxiYWNrLXRpbWluZy1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvbGlmZWN5
Y2xlLWNhbGxiYWNrLXRpbWluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE5NzYxMikKKysrIExh
eW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2xpZmVjeWNsZS1jYWxsYmFjay10aW1pbmct
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNCBAQAogCiBQQVNTIHNldEF0
dHJpYnV0ZSBhbmQgcmVtb3ZlQXR0cmlidXRlIG11c3QgZW5xdWV1ZSBhbmQgaW52b2tlIGF0dHJp
YnV0ZUNoYW5nZWRDYWxsYmFjayAKK1BBU1MgQ2FsbGluZyBOb2RlLnByb3RvdHlwZS5jbG9uZU5v
ZGUoZmFsc2UpIG11c3QgcHVzaCBhIG5ldyBlbGVtZW50IHF1ZXVlIHRvIHRoZSBwcm9jZXNzaW5n
IHN0YWNrIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9saWZlY3lj
bGUtY2FsbGJhY2stdGltaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9j
dXN0b20tZWxlbWVudHMvbGlmZWN5Y2xlLWNhbGxiYWNrLXRpbWluZy5odG1sCShyZXZpc2lvbiAx
OTc2MTIpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9saWZlY3ljbGUtY2Fs
bGJhY2stdGltaW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDQyIEBAIHRlc3Qo
ZnVuY3Rpb24gKCkgewogCiB9LCAnc2V0QXR0cmlidXRlIGFuZCByZW1vdmVBdHRyaWJ1dGUgbXVz
dCBlbnF1ZXVlIGFuZCBpbnZva2UgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrJyk7CiAKK3Rlc3Qo
ZnVuY3Rpb24gKCkgeworICAgIHZhciBzaG91bGRDbG9uZUFub3RoZXJJbnN0YW5jZSA9IGZhbHNl
OworICAgIHZhciBhbm90aGVySW5zdGFuY2VDbG9uZTsKKyAgICB2YXIgbG9nID0gW107CisKKyAg
ICBjbGFzcyBTZWxmQ2xvbmluZ0VsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7CisgICAgICAg
IGNvbnN0cnVjdG9yKCkgeworICAgICAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgICAgIGxvZy5w
dXNoKFt0aGlzLCAnYmVnaW4nXSk7CisgICAgICAgICAgICBpZiAoc2hvdWxkQ2xvbmVBbm90aGVy
SW5zdGFuY2UpIHsKKyAgICAgICAgICAgICAgICBzaG91bGRDbG9uZUFub3RoZXJJbnN0YW5jZSA9
IGZhbHNlOworICAgICAgICAgICAgICAgIGFub3RoZXJJbnN0YW5jZUNsb25lID0gYW5vdGhlcklu
c3RhbmNlLmNsb25lTm9kZShmYWxzZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsb2cu
cHVzaChbdGhpcywgJ2VuZCddKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBkb2N1bWVudC5kZWZp
bmVFbGVtZW50KCdzZWxmLWNsb25pbmctZWxlbWVudCcsIFNlbGZDbG9uaW5nRWxlbWVudCk7CisK
KyAgICB2YXIgaW5zdGFuY2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzZWxmLWNsb25pbmct
ZWxlbWVudCcpOworICAgIHZhciBhbm90aGVySW5zdGFuY2UgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdzZWxmLWNsb25pbmctZWxlbWVudCcpOworICAgIHNob3VsZENsb25lQW5vdGhlckluc3Rh
bmNlID0gdHJ1ZTsKKworICAgIGFzc2VydF9lcXVhbHMobG9nLmxlbmd0aCwgNCk7CisgICAgdmFy
IGluc3RhbmNlQ2xvbmUgPSBpbnN0YW5jZS5jbG9uZU5vZGUoZmFsc2UpOworCisgICAgYXNzZXJ0
X2VxdWFscyhsb2cubGVuZ3RoLCA4KTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1swXSwg
W2luc3RhbmNlLCAnYmVnaW4nXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbMV0sIFtp
bnN0YW5jZSwgJ2VuZCddKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1syXSwgW2Fub3Ro
ZXJJbnN0YW5jZSwgJ2JlZ2luJ10pOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzNdLCBb
YW5vdGhlckluc3RhbmNlLCAnZW5kJ10pOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzRd
LCBbaW5zdGFuY2VDbG9uZSwgJ2JlZ2luJ10pOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9n
WzVdLCBbYW5vdGhlckluc3RhbmNlQ2xvbmUsICdiZWdpbiddKTsKKyAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGxvZ1s2XSwgW2Fub3RoZXJJbnN0YW5jZUNsb25lLCAnZW5kJ10pOworICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMobG9nWzddLCBbaW5zdGFuY2VDbG9uZSwgJ2VuZCddKTsKK30sICdDYWxs
aW5nIE5vZGUucHJvdG90eXBlLmNsb25lTm9kZShmYWxzZSkgbXVzdCBwdXNoIGEgbmV3IGVsZW1l
bnQgcXVldWUgdG8gdGhlIHByb2Nlc3Npbmcgc3RhY2snKTsKKwogPC9zY3JpcHQ+CiA8L2JvZHk+
CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy91cGdyYWRp
bmcvTm9kZS1jbG9uZU5vZGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3VwZ3JhZGluZy9Ob2RlLWNsb25lTm9kZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy91cGdy
YWRpbmcvTm9kZS1jbG9uZU5vZGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsOSBAQAorCitQQVNTIE5vZGUucHJvdG90eXBlLmNsb25lTm9kZShmYWxzZSkgbXVzdCBiZSBh
YmxlIHRvIGNsb25lIGEgY3VzdG9tIGVsZW1lbnQgCitQQVNTIE5vZGUucHJvdG90eXBlLmNsb25l
Tm9kZShmYWxzZSkgbXVzdCBiZSBhYmxlIHRvIGNsb25lIGEgY3VzdG9tIGVsZW1lbnQgaW5zaWRl
IGFuIGlmcmFtZSAKK1BBU1MgTm9kZS5wcm90b3R5cGUuY2xvbmVOb2RlKHRydWUpIG11c3QgYmUg
YWJsZSB0byBjbG9uZSBhIGRlc2NlbmRlbnQgY3VzdG9tIGVsZW1lbnQgCitQQVNTIE5vZGUucHJv
dG90eXBlLmNsb25lTm9kZSh0cnVlKSBtdXN0IGJlIGFibGUgdG8gY2xvbmUgYSBkZXNjZW5kZW50
IGN1c3RvbSBlbGVtZW50IAorUEFTUyBIVE1MRWxlbWVudCBjb25zdHJ1Y3RvciBtdXN0IHRocm93
IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gdGhlIHRvcCBvZiB0aGUgY29uc3RydWN0aW9uIHN0
YWNrIGlzIG1hcmtlZCBBbHJlYWR5Q29uc3RydWN0ZWQgZHVlIHRvIGEgY3VzdG9tIGVsZW1lbnQg
Y29uc3RydWN0b3IgY29uc3RydWN0aW5nIGl0c2VsZiBhZnRlciBzdXBlcigpIGNhbGwgCitQQVNT
IEhUTUxFbGVtZW50IGNvbnN0cnVjdG9yIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Ig
d2hlbiB0aGUgdG9wIG9mIHRoZSBjb25zdHJ1Y3Rpb24gc3RhY2sgaXMgbWFya2VkIEFscmVhZHlD
b25zdHJ1Y3RlZCBkdWUgdG8gYSBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciBjb25zdHJ1Y3Rp
bmcgaXRzZWxmIGJlZm9yZSBzdXBlcigpIGNhbGwgCitQQVNTIFVwZ3JhZGluZyBhIGN1c3RvbSBl
bGVtZW50IG11c3QgdGhyb3cgSW52YWxpZFN0YXRlRXJyb3Igd2hlbiB0aGUgY3VzdG9tIGVsZW1l
bnQncyBjb25zdHJ1Y3RvciByZXR1cm5zIGFub3RoZXIgZWxlbWVudCAKKwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdXBncmFkaW5nL05vZGUtY2xvbmVOb2RlLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdXBncmFkaW5n
L05vZGUtY2xvbmVOb2RlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2N1
c3RvbS1lbGVtZW50cy91cGdyYWRpbmcvTm9kZS1jbG9uZU5vZGUuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDE2OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRp
dGxlPkN1c3RvbSBFbGVtZW50czogRXh0ZW5zaW9ucyB0byBEb2N1bWVudCBpbnRlcmZhY2U8L3Rp
dGxlPgorPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iUnlvc3VrZSBOaXdhIiBocmVmPSJtYWls
dG86cm5pd2FAd2Via2l0Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9Ik5vZGUu
cHJvdG90eXBlLmNsb25lTm9kZSBzaG91bGQgdXBncmFkZSBhIGN1c3RvbSBlbGVtZW50Ij4KKzxs
aW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmNvbXBvbmVudHMv
c3BlYy9jdXN0b20vI3VwZ3JhZGluZyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSdzdHlsZXNoZWV0
JyBocmVmPScuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzJz4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHdpdGhOZXdE
b2N1bWVudFdpdGhBQnJvd3NpbmdDb250ZXh0KGNhbGxiYWNrKSB7CisgICAgdmFyIGlmcmFtZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOworICAgIGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQoaWZyYW1lKTsKKyAgICB0cnkgeworICAgICAgICBjYWxsYmFjayhpZnJhbWUuY29u
dGVudFdpbmRvdywgaWZyYW1lLmNvbnRlbnREb2N1bWVudCk7ICAgICAgICAKKyAgICB9IGZpbmFs
bHkgeworICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGlmcmFtZSk7CisgICAgfQor
fQorCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBNeUN1c3RvbUVsZW1lbnQgZXh0ZW5k
cyBIVE1MRWxlbWVudCB7fQorICAgIGRvY3VtZW50LmRlZmluZUVsZW1lbnQoJ215LWN1c3RvbS1l
bGVtZW50JywgTXlDdXN0b21FbGVtZW50KTsKKworICAgIHZhciBpbnN0YW5jZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50Jyk7CisgICAgYXNzZXJ0X3RydWUoaW5z
dGFuY2UgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCk7CisgICAgYXNzZXJ0X3RydWUoaW5zdGFuY2Ug
aW5zdGFuY2VvZiBNeUN1c3RvbUVsZW1lbnQpOworCisgICAgdmFyIGNsb25lID0gaW5zdGFuY2Uu
Y2xvbmVOb2RlKGZhbHNlKTsKKyAgICBhc3NlcnRfbm90X2VxdWFscyhpbnN0YW5jZSwgY2xvbmUp
OworICAgIGFzc2VydF90cnVlKGNsb25lIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQsCisgICAgICAg
ICdBIGNsb25lZCBjdXN0b20gZWxlbWVudCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEhUTUxFbGVt
ZW50Jyk7CisgICAgYXNzZXJ0X3RydWUoY2xvbmUgaW5zdGFuY2VvZiBNeUN1c3RvbUVsZW1lbnQs
CisgICAgICAgICdBIGNsb25lZCBjdXN0b20gZWxlbWVudCBtdXN0IGJlIGFuIGluc3RhbmNlIG9m
IHRoZSBjdXN0b20gZWxlbWVudCcpOworfSwgJ05vZGUucHJvdG90eXBlLmNsb25lTm9kZShmYWxz
ZSkgbXVzdCBiZSBhYmxlIHRvIGNsb25lIGEgY3VzdG9tIGVsZW1lbnQnKTsKKwordGVzdChmdW5j
dGlvbiAoKSB7CisgICAgd2l0aE5ld0RvY3VtZW50V2l0aEFCcm93c2luZ0NvbnRleHQoZnVuY3Rp
b24gKGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICBjbGFzcyBNeUN1
c3RvbUVsZW1lbnQgZXh0ZW5kcyBjb250ZW50V2luZG93LkhUTUxFbGVtZW50IHt9CisgICAgICAg
IGNvbnRlbnREb2N1bWVudC5kZWZpbmVFbGVtZW50KCdteS1jdXN0b20tZWxlbWVudCcsIE15Q3Vz
dG9tRWxlbWVudCk7CisKKyAgICAgICAgdmFyIGluc3RhbmNlID0gY29udGVudERvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50Jyk7CisgICAgICAgIGFzc2VydF90cnVlKGlu
c3RhbmNlIGluc3RhbmNlb2YgY29udGVudFdpbmRvdy5IVE1MRWxlbWVudCk7CisgICAgICAgIGFz
c2VydF90cnVlKGluc3RhbmNlIGluc3RhbmNlb2YgTXlDdXN0b21FbGVtZW50KTsKKworICAgICAg
ICB2YXIgY2xvbmUgPSBpbnN0YW5jZS5jbG9uZU5vZGUoZmFsc2UpOworICAgICAgICBhc3NlcnRf
bm90X2VxdWFscyhpbnN0YW5jZSwgY2xvbmUpOworICAgICAgICBhc3NlcnRfdHJ1ZShjbG9uZSBp
bnN0YW5jZW9mIGNvbnRlbnRXaW5kb3cuSFRNTEVsZW1lbnQsCisgICAgICAgICAgICAnQSBjbG9u
ZWQgY3VzdG9tIGVsZW1lbnQgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBIVE1MRWxlbWVudCcpOwor
ICAgICAgICBhc3NlcnRfdHJ1ZShjbG9uZSBpbnN0YW5jZW9mIE15Q3VzdG9tRWxlbWVudCwKKyAg
ICAgICAgICAgICdBIGNsb25lZCBjdXN0b20gZWxlbWVudCBtdXN0IGJlIGFuIGluc3RhbmNlIG9m
IHRoZSBjdXN0b20gZWxlbWVudCcpOworICAgIH0pOworfSwgJ05vZGUucHJvdG90eXBlLmNsb25l
Tm9kZShmYWxzZSkgbXVzdCBiZSBhYmxlIHRvIGNsb25lIGEgY3VzdG9tIGVsZW1lbnQgaW5zaWRl
IGFuIGlmcmFtZScpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB3aXRoTmV3RG9jdW1lbnRX
aXRoQUJyb3dzaW5nQ29udGV4dChmdW5jdGlvbiAoY29udGVudFdpbmRvdywgY29udGVudERvY3Vt
ZW50KSB7CisgICAgICAgIGNsYXNzIE15Q3VzdG9tRWxlbWVudCBleHRlbmRzIGNvbnRlbnRXaW5k
b3cuSFRNTEVsZW1lbnQgeyB9CisgICAgICAgIGNvbnRlbnREb2N1bWVudC5kZWZpbmVFbGVtZW50
KCdteS1jdXN0b20tZWxlbWVudCcsIE15Q3VzdG9tRWxlbWVudCk7CisKKyAgICAgICAgdmFyIGlu
c3RhbmNlID0gY29udGVudERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50
Jyk7CisgICAgICAgIHZhciBjb250YWluZXIgPSBjb250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7CisgICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChpbnN0YW5jZSk7CisKKyAg
ICAgICAgdmFyIGNvbnRhaW5lckNsb25lID0gY29udGFpbmVyLmNsb25lTm9kZSh0cnVlKTsKKyAg
ICAgICAgYXNzZXJ0X3RydWUoY29udGFpbmVyQ2xvbmUgaW5zdGFuY2VvZiBjb250ZW50V2luZG93
LkhUTUxEaXZFbGVtZW50KTsKKworICAgICAgICB2YXIgY2xvbmUgPSBjb250YWluZXJDbG9uZS5m
aXJzdENoaWxkOworICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhpbnN0YW5jZSwgY2xvbmUpOwor
ICAgICAgICBhc3NlcnRfdHJ1ZShjbG9uZSBpbnN0YW5jZW9mIGNvbnRlbnRXaW5kb3cuSFRNTEVs
ZW1lbnQsCisgICAgICAgICAgICAnQSBjbG9uZWQgY3VzdG9tIGVsZW1lbnQgbXVzdCBiZSBhbiBp
bnN0YW5jZSBvZiBIVE1MRWxlbWVudCcpOworICAgICAgICBhc3NlcnRfdHJ1ZShjbG9uZSBpbnN0
YW5jZW9mIE15Q3VzdG9tRWxlbWVudCwKKyAgICAgICAgICAgICdBIGNsb25lZCBjdXN0b20gZWxl
bWVudCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIHRoZSBjdXN0b20gZWxlbWVudCcpOworICAgIH0p
OworfSwgJ05vZGUucHJvdG90eXBlLmNsb25lTm9kZSh0cnVlKSBtdXN0IGJlIGFibGUgdG8gY2xv
bmUgYSBkZXNjZW5kZW50IGN1c3RvbSBlbGVtZW50Jyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgewor
ICAgIHdpdGhOZXdEb2N1bWVudFdpdGhBQnJvd3NpbmdDb250ZXh0KGZ1bmN0aW9uIChjb250ZW50
V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgdmFyIHBhcmVudE5vZGVJbkNvbnN0
cnVjdG9yOworICAgICAgICB2YXIgcHJldmlvdXNTaWJsaW5nSW5Db25zdHJ1Y3RvcjsKKyAgICAg
ICAgdmFyIG5leHRTaWJsaW5nSW5Db25zdHJ1Y3RvcjsKKyAgICAgICAgY2xhc3MgTXlDdXN0b21F
bGVtZW50IGV4dGVuZHMgY29udGVudFdpbmRvdy5IVE1MRWxlbWVudCB7CisgICAgICAgICAgICBj
b25zdHJ1Y3RvcigpIHsKKyAgICAgICAgICAgICAgICBzdXBlcigpOworICAgICAgICAgICAgICAg
IHBhcmVudE5vZGVJbkNvbnN0cnVjdG9yID0gdGhpcy5wYXJlbnROb2RlOworICAgICAgICAgICAg
ICAgIHByZXZpb3VzU2libGluZ0luQ29uc3RydWN0b3IgPSB0aGlzLnByZXZpb3VzU2libGluZzsK
KyAgICAgICAgICAgICAgICBuZXh0U2libGluZ0luQ29uc3RydWN0b3IgPSB0aGlzLm5leHRTaWJs
aW5nOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNvbnRlbnREb2N1bWVudC5k
ZWZpbmVFbGVtZW50KCdteS1jdXN0b20tZWxlbWVudCcsIE15Q3VzdG9tRWxlbWVudCk7CisKKyAg
ICAgICAgdmFyIGluc3RhbmNlID0gY29udGVudERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ215LWN1
c3RvbS1lbGVtZW50Jyk7CisgICAgICAgIHZhciBzaWJsaW5nQmVmb3JlSW5zdGFuY2UgPSBjb250
ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYicpOworICAgICAgICB2YXIgc2libGluZ0FmdGVy
SW5zdGFuY2UgPSBjb250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOworICAgICAgICB2
YXIgY29udGFpbmVyID0gY29udGVudERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAg
ICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoc2libGluZ0JlZm9yZUluc3RhbmNlKTsKKyAgICAg
ICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGluc3RhbmNlKTsKKyAgICAgICAgY29udGFpbmVyLmFw
cGVuZENoaWxkKHNpYmxpbmdBZnRlckluc3RhbmNlKTsKKworICAgICAgICB2YXIgY29udGFpbmVy
Q2xvbmUgPSBjb250YWluZXIuY2xvbmVOb2RlKHRydWUpOworCisgICAgICAgIGFzc2VydF9lcXVh
bHMocGFyZW50Tm9kZUluQ29uc3RydWN0b3IsIGNvbnRhaW5lckNsb25lLAorICAgICAgICAgICAg
J0FuIHVwZ3JhZGVkIGVsZW1lbnQgbXVzdCBoYXZlIGl0cyBwYXJlbnROb2RlIHNldCBiZWZvcmUg
dGhlIGN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIGlzIGNhbGxlZCcpOworICAgICAgICBhc3Nl
cnRfZXF1YWxzKHByZXZpb3VzU2libGluZ0luQ29uc3RydWN0b3IsIGNvbnRhaW5lckNsb25lLmZp
cnN0Q2hpbGQsCisgICAgICAgICAgICAnQW4gdXBncmFkZWQgZWxlbWVudCBtdXN0IGhhdmUgaXRz
IHByZXZpb3VzU2libGluZyBzZXQgYmVmb3JlIHRoZSBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3Rv
ciBpcyBjYWxsZWQnKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhuZXh0U2libGluZ0luQ29uc3Ry
dWN0b3IsIGNvbnRhaW5lckNsb25lLmxhc3RDaGlsZCwKKyAgICAgICAgICAgICdBbiB1cGdyYWRl
ZCBlbGVtZW50IG11c3QgaGF2ZSBpdHMgbmV4dFNpYmxpbmcgc2V0IGJlZm9yZSB0aGUgY3VzdG9t
IGVsZW1lbnQgY29uc3RydWN0b3IgaXMgY2FsbGVkJyk7CisgICAgfSk7Cit9LCAnTm9kZS5wcm90
b3R5cGUuY2xvbmVOb2RlKHRydWUpIG11c3QgYmUgYWJsZSB0byBjbG9uZSBhIGRlc2NlbmRlbnQg
Y3VzdG9tIGVsZW1lbnQnKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgd2l0aE5ld0RvY3Vt
ZW50V2l0aEFCcm93c2luZ0NvbnRleHQoZnVuY3Rpb24gKGNvbnRlbnRXaW5kb3csIGNvbnRlbnRE
b2N1bWVudCkgeworICAgICAgICBjbGFzcyBNeUN1c3RvbUVsZW1lbnQgZXh0ZW5kcyBjb250ZW50
V2luZG93LkhUTUxFbGVtZW50IHsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKGRvTm90Q3JlYXRl
SXRzZWxmKSB7CisgICAgICAgICAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgICAgICAgICBpZiAo
IWRvTm90Q3JlYXRlSXRzZWxmKQorICAgICAgICAgICAgICAgICAgICBuZXcgTXlDdXN0b21FbGVt
ZW50KHRydWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNvbnRlbnREb2N1
bWVudC5kZWZpbmVFbGVtZW50KCdteS1jdXN0b20tZWxlbWVudCcsIE15Q3VzdG9tRWxlbWVudCk7
CisKKyAgICAgICAgdmFyIGluc3RhbmNlID0gY29udGVudERvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J215LWN1c3RvbS1lbGVtZW50Jyk7CisgICAgICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ0lu
dmFsaWRTdGF0ZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgaW5zdGFuY2UuY2xvbmVOb2RlKGZhbHNl
KTsgfSk7CisgICAgfSk7Cit9LCAnSFRNTEVsZW1lbnQgY29uc3RydWN0b3IgbXVzdCB0aHJvdyBh
biBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHRoZSB0b3Agb2YgdGhlIGNvbnN0cnVjdGlvbiBzdGFj
ayBpcyBtYXJrZWQgQWxyZWFkeUNvbnN0cnVjdGVkJworICAgICsgJyBkdWUgdG8gYSBjdXN0b20g
ZWxlbWVudCBjb25zdHJ1Y3RvciBjb25zdHJ1Y3RpbmcgaXRzZWxmIGFmdGVyIHN1cGVyKCkgY2Fs
bCcpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB3aXRoTmV3RG9jdW1lbnRXaXRoQUJyb3dz
aW5nQ29udGV4dChmdW5jdGlvbiAoY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7Cisg
ICAgICAgIGNsYXNzIE15Q3VzdG9tRWxlbWVudCBleHRlbmRzIGNvbnRlbnRXaW5kb3cuSFRNTEVs
ZW1lbnQgeworICAgICAgICAgICAgY29uc3RydWN0b3IoZG9Ob3RDcmVhdGVJdHNlbGYpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIWRvTm90Q3JlYXRlSXRzZWxmKQorICAgICAgICAgICAgICAgICAg
ICBuZXcgTXlDdXN0b21FbGVtZW50KHRydWUpOworICAgICAgICAgICAgICAgIHN1cGVyKCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY29udGVudERvY3VtZW50LmRlZmluZUVs
ZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50JywgTXlDdXN0b21FbGVtZW50KTsKKworICAgICAgICB2
YXIgaW5zdGFuY2UgPSBjb250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbXktY3VzdG9tLWVs
ZW1lbnQnKTsKKyAgICAgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnSW52YWxpZFN0YXRlRXJy
b3InfSwgZnVuY3Rpb24gKCkgeyBpbnN0YW5jZS5jbG9uZU5vZGUoZmFsc2UpOyB9KTsKKyAgICB9
KTsKK30sICdIVE1MRWxlbWVudCBjb25zdHJ1Y3RvciBtdXN0IHRocm93IGFuIEludmFsaWRTdGF0
ZUVycm9yIHdoZW4gdGhlIHRvcCBvZiB0aGUgY29uc3RydWN0aW9uIHN0YWNrIGlzIG1hcmtlZCBB
bHJlYWR5Q29uc3RydWN0ZWQnCisgICAgKyAnIGR1ZSB0byBhIGN1c3RvbSBlbGVtZW50IGNvbnN0
cnVjdG9yIGNvbnN0cnVjdGluZyBpdHNlbGYgYmVmb3JlIHN1cGVyKCkgY2FsbCcpOworCit0ZXN0
KGZ1bmN0aW9uICgpIHsKKyAgICB3aXRoTmV3RG9jdW1lbnRXaXRoQUJyb3dzaW5nQ29udGV4dChm
dW5jdGlvbiAoY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgIHZhciBj
bG9uaW5nID0gZmFsc2U7CisgICAgICAgIGNsYXNzIE15Q3VzdG9tRWxlbWVudCBleHRlbmRzIGNv
bnRlbnRXaW5kb3cuSFRNTEVsZW1lbnQgeworICAgICAgICAgICAgY29uc3RydWN0b3IoKSB7Cisg
ICAgICAgICAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgICAgICAgICBpZiAoY2xvbmluZykKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCdz
cGFuJyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY29udGVudERvY3VtZW50
LmRlZmluZUVsZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50JywgTXlDdXN0b21FbGVtZW50KTsKKwor
ICAgICAgICB2YXIgaW5zdGFuY2UgPSBjb250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbXkt
Y3VzdG9tLWVsZW1lbnQnKTsKKyAgICAgICAgY2xvbmluZyA9IHRydWU7CisgICAgICAgIGFzc2Vy
dF90aHJvd3MoeyduYW1lJzogJ0ludmFsaWRTdGF0ZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgaW5z
dGFuY2UuY2xvbmVOb2RlKGZhbHNlKTsgfSk7CisgICAgfSk7Cit9LCAnVXBncmFkaW5nIGEgY3Vz
dG9tIGVsZW1lbnQgbXVzdCB0aHJvdyBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHRoZSBjdXN0b20g
ZWxlbWVudFwncyBjb25zdHJ1Y3RvciByZXR1cm5zIGFub3RoZXIgZWxlbWVudCcpOworCis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273073</attachid>
            <date>2016-03-05 01:08:59 -0800</date>
            <delta_ts>2016-03-05 01:12:04 -0800</delta_ts>
            <desc>Minor fix in change log</desc>
            <filename>bug-155062-20160305010845.patch</filename>
            <type>text/plain</type>
            <size>34172</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzYxMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDE2LTAzLTA1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCB0aGUgc3VwcG9ydCBmb3Ig
dXBncmFkaW5nIGN1c3RvbSBlbGVtZW50cyBpbiBjbG9uZU5vZGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTA2MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBodHRwczovL3czYy5naXRo
dWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL2N1c3RvbS8jdXBncmFkaW5nIGFuZCBzdGVwcyA2IHRo
cm91Z2ggMTEgaW4KKyAgICAgICAgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmNvbXBvbmVudHMv
c3BlYy9jdXN0b20vI2h0bWxlbGVtZW50LWNvbnN0cnVjdG9yIHRvIHN1cHBvcnQgdXBncmFkaW5n
IGVsZW1lbnRzCisgICAgICAgIGNyZWF0ZWQgYnkgTm9kZS5wcm90b3R5cGUuY2xvbmVOb2RlLgor
CisgICAgICAgIFRlc3RzOiBmYXN0L2N1c3RvbS1lbGVtZW50cy9saWZlY3ljbGUtY2FsbGJhY2st
dGltaW5nLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3VzdG9tLWVsZW1lbnRzL3VwZ3JhZGlu
Zy9Ob2RlLWNsb25lTm9kZS5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbUVs
ZW1lbnRJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21FbGVtZW50SW50
ZXJmYWNlOjp1cGdyYWRlRWxlbWVudCk6IEFkZGVkLiBJbXBsZW1lbnRzCisgICAgICAgICBodHRw
czovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL2N1c3RvbS8jZGZuLXVwZ3JhZGUt
YS1jdXN0b20tZWxlbWVudAorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21FbGVtZW50SW50ZXJm
YWNlOjpkaWRVcGdyYWRlTGFzdEVsZW1lbnRJbkNvbnN0cnVjdGlvblN0YWNrKTogQWRkZWQuIElt
cGxlbWVudHMgc3RlcCAxMAorICAgICAgICAgIlJlcGxhY2UgdGhlIGxhc3QgZW50cnkgaW4gZGVm
aW5pdGlvbidzIGNvbnN0cnVjdGlvbiBzdGFja2Egd2l0aCBhbiBhbHJlYWR5IGNvbnN0cnVjdGVk
IG1hcmtlci4iCisgICAgICAgICBpbiBodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50
cy9zcGVjL2N1c3RvbS8jZG9tLWh0bWxlbGVtZW50LWNvbnN0cnVjdG9yCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpK
U0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmlzVXBncmFkaW5nRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6Omxhc3RFbGVtZW50SW5Db25zdHJ1Y3Rp
b25TdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UpOiBB
ZGRlZCBtX2NvbnN0cnVjdGlvblN0YWNrLiBUaGlzIGlzIHRoZSBjb25zdHJ1Y3Rpb24gc3RhY2s6
CisgICAgICAgICBodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL2N1c3Rv
bS8jZGZuLWVsZW1lbnQtZGVmaW5pdGlvbi1jb25zdHJ1Y3Rpb24tc3RhY2sKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGhyb3dJbnZh
bGlkU3RhdGVFcnJvcik6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNIVE1MRWxlbWVudCk6IEltcGxlbWVudCB0aGUgdXBn
cmFkaW5nIGNhc2UgaW46CisgICAgICAgICBodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9u
ZW50cy9zcGVjL2N1c3RvbS8jaHRtbGVsZW1lbnQtY29uc3RydWN0b3IKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRmFsbGJhY2tIVE1MRWxlbWVu
dCk6IEFkZGVkLiBFbnF1ZXVlcyB1cGdyYWRlcyBvZiBjdXN0b20gZWxlbWVudHMgKGVucXVldWVF
bGVtZW50VXBncmFkZQorICAgICAgICAgY3VycmVudGx5IGRvZXMgbm90aGluZyBpZiB0aGVyZSBp
cyBubyBJbnZva2VzQ3VzdG9tRWxlbWVudExpZmVjeWNsZUNhbGxiYWNrczsgZS5nLiBpbiBvdGhl
ciBET00gQVBJcykuCisgICAgICAgICBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgaHR0cHM6Ly93
M2MuZ2l0aHViLmlvL3dlYmNvbXBvbmVudHMvc3BlYy9jdXN0b20vI2Rmbi1lbGVtZW50LXVwZ3Jh
ZGUtYWxnb3JpdGhtCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlRWxlbWVudCk6
CisgICAgICAgICogZG9tL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGlmZWN5Y2xlUXVldWVJdGVtOjpMaWZlY3ljbGVRdWV1ZUl0ZW0pOiBBZGRlZCBhIGdl
bmVyaWMgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpMaWZlY3ljbGVRdWV1ZUl0ZW06
Omludm9rZSk6IENhbGwgdXBncmFkZUVsZW1lbnQgd2hlbiBtX3R5cGUgaXMgVHlwZTo6RWxlbWVu
dFVwZ3JhZGUuCisgICAgICAgIChXZWJDb3JlOjpMaWZlY3ljbGVDYWxsYmFja1F1ZXVlOjplbnF1
ZXVlRWxlbWVudFVwZ3JhZGUpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vTGlmZWN5Y2xlQ2FsbGJh
Y2tRdWV1ZS5oOgorICAgICAgICAqIGRvbS9Ob2RlLmlkbDogQWRkZWQgSW52b2tlc0N1c3RvbUVs
ZW1lbnRMaWZlY3ljbGVDYWxsYmFja3Mgb24gY2xvbmVOb2RlLgorICAgICAgICAqIGRvbS9tYWtl
X25hbWVzLnBsOgorICAgICAgICAocHJpbnRGYWN0b3J5Q3BwRmlsZSk6IEFkZGVkIGEgdmFyaWFu
dCBvZiBjcmVhdGVLbm93bkVsZW1lbnQgd2hpY2ggdGFrZXMgUXVhbGlmaWVkTmFtZS4gQWxzbyBk
aXJlY3RseSBjYWxsCisgICAgICAgICBmaW5kKEhUTUx8U1ZHfE1hdGhNTClFbGVtZW50Q29uc3Ry
dWN0b3JGdW5jdGlvbiBpbiBjcmVhdGVFbGVtZW50IHRoYXQgdGFrZXMgQXRvbWljU3RyaW5nIHRv
IGF2b2lkIGFuIGV4dHJhCisgICAgICAgICBmdW5jdGlvbiBjYWxsLgorICAgICAgICAocHJpbnRG
YWN0b3J5SGVhZGVyRmlsZSk6IEFkZGVkIGEgZnVuY3Rpb24gZGVjbGFyYXRpb24gZm9yIGNyZWF0
ZUtub3duRWxlbWVudCB0aGF0IHRha2VzIFF1YWxpZmllZE5hbWUgYW5kCisgICAgICAgICBvdXRk
ZW50ZWQgY2xhc3MgYW5kIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyB0byBtYXRjaCB0aGUgbW9kZXJu
IGNvZGUgc3R5bGUgZ3VpZGVsaW5lLgorCiAyMDE2LTAzLTA1ICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCB0aGUgYmluZGluZ3MgdGVzdCBhZnRlciByMTk3
NjExLgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50
ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1
c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAxOTc2MTIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDIsNiArMTAyLDU0IEBAIFJlZlB0cjxFbGVtZW50PiBKU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UKICAgICByZXR1cm4gd3JhcHBlZEVsZW1lbnQ7CiB9CiAKK3ZvaWQgSlNDdXN0b21F
bGVtZW50SW50ZXJmYWNlOjp1cGdyYWRlRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQoreworICAg
IEFTU0VSVChlbGVtZW50LmlzQ3VzdG9tRWxlbWVudCgpKTsKKyAgICBpZiAoIWNhbkludm9rZUNh
bGxiYWNrKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZjxKU0N1c3RvbUVsZW1lbnRJbnRl
cmZhY2U+IHByb3RlY3QoKnRoaXMpOworICAgIEpTTG9ja0hvbGRlciBsb2NrKG1faXNvbGF0ZWRX
b3JsZC0+dm0oKSk7CisKKyAgICBpZiAoIW1fY29uc3RydWN0b3IpCisgICAgICAgIHJldHVybjsK
KworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJU
KGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CisgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IHRvSlNET01HbG9iYWxPYmplY3QoY29udGV4dCwgKm1faXNvbGF0ZWRXb3JsZCk7Cisg
ICAgRXhlY1N0YXRlKiBzdGF0ZSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIGlm
IChzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENvbnN0cnVj
dERhdGEgY29uc3RydWN0RGF0YTsKKyAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBt
X2NvbnN0cnVjdG9yLT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRhKG1fY29uc3RydWN0
b3IuZ2V0KCksIGNvbnN0cnVjdERhdGEpOworICAgIGlmIChjb25zdHJ1Y3RUeXBlID09IENvbnN0
cnVjdFR5cGVOb25lKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgbV9jb25zdHJ1Y3Rpb25TdGFjay5hcHBlbmQoJmVsZW1lbnQp
OworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUgY29va2llID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjppbnN0cnVtZW50
RnVuY3Rpb25Db25zdHJ1Y3QoY29udGV4dCwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSk7
CisgICAgSlNWYWx1ZSByZXR1cm5lZEVsZW1lbnQgPSBjb25zdHJ1Y3Qoc3RhdGUsIG1fY29uc3Ry
dWN0b3IuZ2V0KCksIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3MpOworICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKGNvb2tpZSwgY29udGV4dCk7
CisKKyAgICBtX2NvbnN0cnVjdGlvblN0YWNrLnJlbW92ZUxhc3QoKTsKKworICAgIGlmIChzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEVsZW1lbnQqIHdyYXBw
ZWRFbGVtZW50ID0gSlNFbGVtZW50Ojp0b1dyYXBwZWQocmV0dXJuZWRFbGVtZW50KTsKKyAgICBp
ZiAoIXdyYXBwZWRFbGVtZW50IHx8IHdyYXBwZWRFbGVtZW50ICE9ICZlbGVtZW50KSB7CisgICAg
ICAgIHRocm93SW52YWxpZFN0YXRlRXJyb3IoKnN0YXRlLCAiQ3VzdG9tIGVsZW1lbnQgY29uc3Ry
dWN0b3IgZmFpbGVkIHRvIHVwZ3JhZGUgYW4gZWxlbWVudCIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIEFTU0VSVCh3cmFwcGVkRWxlbWVudC0+aXNDdXN0b21FbGVtZW50KCkpOworfQor
CiB2b2lkIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6YXR0cmlidXRlQ2hhbmdlZChFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQogewogICAg
IGlmICghY2FuSW52b2tlQ2FsbGJhY2soKSkKQEAgLTE0NSw2ICsxOTMsMTEgQEAgdm9pZCBKU0N1
c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmF0dHJpYnV0ZQogICAgIGlmIChleGNlcHRpb24pCiAgICAg
ICAgIHJlcG9ydEV4Y2VwdGlvbihzdGF0ZSwgZXhjZXB0aW9uKTsKIH0KKyAgICAKK3ZvaWQgSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlOjpkaWRVcGdyYWRlTGFzdEVsZW1lbnRJbkNvbnN0cnVjdGlv
blN0YWNrKCkKK3sKKyAgICBtX2NvbnN0cnVjdGlvblN0YWNrLmxhc3QoKSA9IG51bGxwdHI7Cit9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmgJKHJldmlzaW9uIDE5
NzYxMikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVy
ZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw4IEBAIHB1YmxpYzoKICAgICBlbnVt
IGNsYXNzIFNob3VsZENsZWFyRXhjZXB0aW9uIHsgQ2xlYXIsIERvTm90Q2xlYXIgfTsKICAgICBS
ZWZQdHI8RWxlbWVudD4gY29uc3RydWN0RWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmLCBTaG91
bGRDbGVhckV4Y2VwdGlvbik7CiAKKyAgICB2b2lkIHVwZ3JhZGVFbGVtZW50KEVsZW1lbnQmKTsK
KwogICAgIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChFbGVtZW50JiwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3
VmFsdWUpOwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0IHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7IH0KQEAgLTcwLDYgKzcyLDEwIEBAIHB1YmxpYzoKIAogICAgIGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KIAorICAg
IGJvb2wgaXNVcGdyYWRpbmdFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gIW1fY29uc3RydWN0aW9u
U3RhY2suaXNFbXB0eSgpOyB9CisgICAgRWxlbWVudCogbGFzdEVsZW1lbnRJbkNvbnN0cnVjdGlv
blN0YWNrKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJ1Y3Rpb25TdGFjay5sYXN0KCkuZ2V0KCk7
IH0KKyAgICB2b2lkIGRpZFVwZ3JhZGVMYXN0RWxlbWVudEluQ29uc3RydWN0aW9uU3RhY2soKTsK
KwogICAgIHZpcnR1YWwgfkpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSgpOwogCiBwcml2YXRlOgpA
QCAtNzgsNiArODQsNyBAQCBwcml2YXRlOgogICAgIFF1YWxpZmllZE5hbWUgbV9uYW1lOwogICAg
IG11dGFibGUgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IG1fY29uc3RydWN0b3I7CiAgICAgUmVm
UHRyPERPTVdyYXBwZXJXb3JsZD4gbV9pc29sYXRlZFdvcmxkOworICAgIFZlY3RvcjxSZWZQdHI8
RWxlbWVudD4sIDE+IG1fY29uc3RydWN0aW9uU3RhY2s7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5j
cHAJKHJldmlzaW9uIDE5NzYxMikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0Miw2ICs2NDIsMTMgQEAgdm9pZCB0aHJv
d05vdFN1cHBvcnRlZEVycm9yKEpTQzo6RXhlY1N0YQogICAgIHN0YXRlLnZtKCkudGhyb3dFeGNl
cHRpb24oJnN0YXRlLCBjcmVhdGVET01FeGNlcHRpb24oJnN0YXRlLCBOT1RfU1VQUE9SVEVEX0VS
UiwgJm1lc3NhZ2VTdHJpbmcpKTsKIH0KIAordm9pZCB0aHJvd0ludmFsaWRTdGF0ZUVycm9yKEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hhciogbWVzc2FnZSkKK3sKKyAgICBBU1NFUlQo
IXN0YXRlLmhhZEV4Y2VwdGlvbigpKTsKKyAgICBTdHJpbmcgbWVzc2FnZVN0cmluZyhtZXNzYWdl
KTsKKyAgICBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlRE9NRXhjZXB0
aW9uKCZzdGF0ZSwgSU5WQUxJRF9TVEFURV9FUlIsICZtZXNzYWdlU3RyaW5nKSk7Cit9CisKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcihKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50
TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5j
dGlvbk5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVmFsdWVzKQogewogICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oCShyZXZpc2lvbiAxOTc2MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsNyBAQCBXRUJDT1JFX0VYUE9S
VCBKU0M6OkVuY29kZWRKU1ZhbHVlIHJlcG9yCiBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcG9ydERl
cHJlY2F0ZWRTZXR0ZXJFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIGludGVyZmFj
ZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpOwogCiB2b2lkIHRocm93Tm90U3VwcG9y
dGVkRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKK3ZvaWQgdGhy
b3dJbnZhbGlkU3RhdGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIG1lc3NhZ2Up
Owogdm9pZCB0aHJvd0FycmF5RWxlbWVudFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYpOwogdm9p
ZCB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIGlu
dGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IGNoYXIqIGV4cGVj
dGVkVHlwZSk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoSlND
OjpFeGVjU3RhdGUmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVs
ZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTEVsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAxOTc2MTIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnREZWZpbml0aW9ucy5oIgog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCisjaW5j
bHVkZSAiSlNOb2RlQ3VzdG9tLmgiCiAjaW5jbHVkZSA8cnVudGltZS9JbnRlcm5hbEZ1bmN0aW9u
Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU1dpdGhTY29wZS5oPgogCkBAIC01NywxNiArNTgsNDAg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKUwogICAgIGlmICghaW50
ZXJmYWNlKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgIm5ldy50YXJn
ZXQgZG9lcyBub3QgZGVmaW5lIGEgY3VzdG9tIGVsZW1lbnQiKTsKIAotICAgIGF1dG8qIGdsb2Jh
bE9iamVjdCA9IGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpOwotICAgIFN0cnVjdHVyZSog
YmFzZVN0cnVjdHVyZSA9IGdldERPTVN0cnVjdHVyZTxKU0hUTUxFbGVtZW50Pih2bSwgKmdsb2Jh
bE9iamVjdCk7Ci0gICAgYXV0byogbmV3RWxlbWVudFN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rp
b246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKHN0YXRlLCBuZXdUYXJnZXRWYWx1ZSwgYmFzZVN0
cnVjdHVyZSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCisgICAg
aWYgKCFpbnRlcmZhY2UtPmlzVXBncmFkaW5nRWxlbWVudCgpKSB7CisgICAgICAgIGF1dG8qIGds
b2JhbE9iamVjdCA9IGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpOworICAgICAgICBTdHJ1
Y3R1cmUqIGJhc2VTdHJ1Y3R1cmUgPSBnZXRET01TdHJ1Y3R1cmU8SlNIVE1MRWxlbWVudD4odm0s
ICpnbG9iYWxPYmplY3QpOworICAgICAgICBhdXRvKiBuZXdFbGVtZW50U3RydWN0dXJlID0gSW50
ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoc3RhdGUsIG5ld1RhcmdldFZh
bHVlLCBiYXNlU3RydWN0dXJlKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworCisgICAgICAgIFJlZjxIVE1MRWxlbWVudD4gZWxlbWVudCA9IEhUTUxFbGVtZW50Ojpj
cmVhdGUoaW50ZXJmYWNlLT5uYW1lKCksIGRvY3VtZW50KTsKKyAgICAgICAgYXV0byoganNFbGVt
ZW50ID0gSlNIVE1MRWxlbWVudDo6Y3JlYXRlKG5ld0VsZW1lbnRTdHJ1Y3R1cmUsIGdsb2JhbE9i
amVjdCwgZWxlbWVudC5nZXQoKSk7CisgICAgICAgIGNhY2hlV3JhcHBlcihnbG9iYWxPYmplY3Qt
PndvcmxkKCksIGVsZW1lbnQucHRyKCksIGpzRWxlbWVudCk7CisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNFbGVtZW50KTsKKyAgICB9CisKKyAgICBFbGVtZW50KiBlbGVtZW50VG9V
cGdyYWRlID0gaW50ZXJmYWNlLT5sYXN0RWxlbWVudEluQ29uc3RydWN0aW9uU3RhY2soKTsKKyAg
ICBpZiAoIWVsZW1lbnRUb1VwZ3JhZGUpIHsKKyAgICAgICAgdGhyb3dJbnZhbGlkU3RhdGVFcnJv
cigqc3RhdGUsICJDYW5ub3QgaW5zdGFudGlhdGUgYSBjdXN0b20gZWxlbWVudCBpbnNpZGUgaXRz
IG93biBjb25zdHJjdXRvciBkdXJpbmcgdXBncmFkZXMiKTsKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICB9CiAKLSAgICBSZWY8SFRNTEVsZW1lbnQ+
IGVsZW1lbnQgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKGludGVyZmFjZS0+bmFtZSgpLCBkb2N1bWVu
dCk7Ci0gICAgYXV0byoganNFbGVtZW50ID0gSlNIVE1MRWxlbWVudDo6Y3JlYXRlKG5ld0VsZW1l
bnRTdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgZWxlbWVudC5nZXQoKSk7Ci0gICAgY2FjaGVXcmFw
cGVyKGdsb2JhbE9iamVjdC0+d29ybGQoKSwgZWxlbWVudC5wdHIoKSwganNFbGVtZW50KTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRWxlbWVudCk7CisgICAgSlNWYWx1ZSBlbGVtZW50
V3JhcHBlclZhbHVlID0gdG9KUyhzdGF0ZSwganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCks
IGVsZW1lbnRUb1VwZ3JhZGUpOworICAgIEFTU0VSVChlbGVtZW50V3JhcHBlclZhbHVlLmlzT2Jq
ZWN0KCkpOworCisgICAgSlNWYWx1ZSBuZXdQcm90b3R5cGUgPSBuZXdUYXJnZXQtPmdldChzdGF0
ZSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKKyAgICBpZiAoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwor
CisgICAgSlNPYmplY3QqIGVsZW1lbnRXcmFwcGVyT2JqZWN0ID0gYXNPYmplY3QoZWxlbWVudFdy
YXBwZXJWYWx1ZSk7CisgICAgSlNPYmplY3Q6OnNldFByb3RvdHlwZShlbGVtZW50V3JhcHBlck9i
amVjdCwgc3RhdGUsIG5ld1Byb3RvdHlwZSwgdHJ1ZSAvKiBzaG91bGRUaHJvd0lmQ2FudFNldCAq
Lyk7CisgICAgaWYgKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIGludGVyZmFjZS0+ZGlkVXBncmFkZUxh
c3RFbGVtZW50SW5Db25zdHJ1Y3Rpb25TdGFjaygpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShlbGVtZW50V3JhcHBlclZhbHVlKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAJKHJldmlzaW9uIDE5NzYxMikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw2ICsxMDMsNyBAQAogI2luY2x1ZGUgIkpT
TW9kdWxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIkxh
bmd1YWdlLmgiCisjaW5jbHVkZSAiTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5oIgogI2luY2x1ZGUg
IkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1haW5G
cmFtZS5oIgpAQCAtMTA3MiwxNSArMTA3MywzMSBAQCBib29sIERvY3VtZW50OjpoYXNWYWxpZE5h
bWVzcGFjZUZvckF0dHJpCiAgICAgcmV0dXJuIGhhc1ZhbGlkTmFtZXNwYWNlRm9yRWxlbWVudHMo
cU5hbWUpOwogfQogCitzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBjcmVhdGVGYWxsYmFja0hUTUxF
bGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKK3sK
KyAgICBhdXRvKiBkZWZpbml0aW9ucyA9IGRvY3VtZW50LmN1c3RvbUVsZW1lbnREZWZpbml0aW9u
cygpOworICAgIGlmIChVTkxJS0VMWShkZWZpbml0aW9ucykpIHsKKyAgICAgICAgaWYgKGF1dG8q
IGludGVyZmFjZSA9IGRlZmluaXRpb25zLT5maW5kSW50ZXJmYWNlKG5hbWUpKSB7CisgICAgICAg
ICAgICBSZWY8SFRNTEVsZW1lbnQ+IGVsZW1lbnQgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKG5hbWUs
IGRvY3VtZW50KTsKKyAgICAgICAgICAgIGVsZW1lbnQtPnNldElzQ3VzdG9tRWxlbWVudCgpOyAv
LyBQcmUtdXBncmFkZSBlbGVtZW50IGlzIHN0aWxsIGNvbnNpZGVyZWQgYSBjdXN0b20gZWxlbWVu
dC4KKyAgICAgICAgICAgIExpZmVjeWNsZUNhbGxiYWNrUXVldWU6OmVucXVldWVFbGVtZW50VXBn
cmFkZShlbGVtZW50LmdldCgpLCAqaW50ZXJmYWNlKTsKKyAgICAgICAgICAgIHJldHVybiBlbGVt
ZW50OworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBIVE1MVW5rbm93bkVsZW1lbnQ6OmNy
ZWF0ZShuYW1lLCBkb2N1bWVudCk7Cit9CisKIC8vIEZJWE1FOiBUaGlzIHNob3VsZCByZWFsbHkg
YmUgaW4gYSBwb3NzaWJsZSBFbGVtZW50RmFjdG9yeSBjbGFzcy4KIFJlZjxFbGVtZW50PiBEb2N1
bWVudDo6Y3JlYXRlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBib29sIGNyZWF0
ZWRCeVBhcnNlcikKIHsKICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudDsKIAogICAgIC8vIEZJ
WE1FOiBVc2UgcmVnaXN0ZXJlZCBuYW1lc3BhY2VzIGFuZCBsb29rIHVwIGluIGEgaGFzaCB0byBm
aW5kIHRoZSByaWdodCBmYWN0b3J5LgotICAgIGlmIChuYW1lLm5hbWVzcGFjZVVSSSgpID09IHho
dG1sTmFtZXNwYWNlVVJJKQotICAgICAgICBlbGVtZW50ID0gSFRNTEVsZW1lbnRGYWN0b3J5Ojpj
cmVhdGVFbGVtZW50KG5hbWUsICp0aGlzLCBudWxscHRyLCBjcmVhdGVkQnlQYXJzZXIpOwotICAg
IGVsc2UgaWYgKG5hbWUubmFtZXNwYWNlVVJJKCkgPT0gU1ZHTmFtZXM6OnN2Z05hbWVzcGFjZVVS
SSkKKyAgICBpZiAobmFtZS5uYW1lc3BhY2VVUkkoKSA9PSB4aHRtbE5hbWVzcGFjZVVSSSkgewor
ICAgICAgICBlbGVtZW50ID0gSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVLbm93bkVsZW1lbnQo
bmFtZSwgKnRoaXMsIG51bGxwdHIsIGNyZWF0ZWRCeVBhcnNlcik7CisgICAgICAgIGlmIChVTkxJ
S0VMWSghZWxlbWVudCkpCisgICAgICAgICAgICBlbGVtZW50ID0gY3JlYXRlRmFsbGJhY2tIVE1M
RWxlbWVudCgqdGhpcywgbmFtZSk7CisgICAgfSBlbHNlIGlmIChuYW1lLm5hbWVzcGFjZVVSSSgp
ID09IFNWR05hbWVzOjpzdmdOYW1lc3BhY2VVUkkpCiAgICAgICAgIGVsZW1lbnQgPSBTVkdFbGVt
ZW50RmFjdG9yeTo6Y3JlYXRlRWxlbWVudChuYW1lLCAqdGhpcywgY3JlYXRlZEJ5UGFyc2VyKTsK
ICNpZiBFTkFCTEUoTUFUSE1MKQogICAgIGVsc2UgaWYgKG5hbWUubmFtZXNwYWNlVVJJKCkgPT0g
TWF0aE1MTmFtZXM6Om1hdGhtbE5hbWVzcGFjZVVSSSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9MaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5jcHAJKHJldmlzaW9uIDE5NzYxMikKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9MaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDAsOSArNDAsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTGlmZWN5Y2xl
UXVldWVJdGVtIHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFR5cGUgeworICAgICAgICBFbGVt
ZW50VXBncmFkZSwKICAgICAgICAgQXR0cmlidXRlQ2hhbmdlZCwKICAgICB9OwogCisgICAgTGlm
ZWN5Y2xlUXVldWVJdGVtKFR5cGUgdHlwZSwgRWxlbWVudCYgZWxlbWVudCwgSlNDdXN0b21FbGVt
ZW50SW50ZXJmYWNlJiBpbnRlcmZhY2UpCisgICAgICAgIDogbV90eXBlKHR5cGUpCisgICAgICAg
ICwgbV9lbGVtZW50KGVsZW1lbnQpCisgICAgICAgICwgbV9pbnRlcmZhY2UoaW50ZXJmYWNlKQor
ICAgICAgICAsIG1fYXR0cmlidXRlTmFtZShudWxsUU5hbWUoKSkKKyAgICB7IH0KKwogICAgIExp
ZmVjeWNsZVF1ZXVlSXRlbShFbGVtZW50JiBlbGVtZW50LCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZh
Y2UmIGludGVyZmFjZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKICAg
ICAgICAgOiBtX3R5cGUoVHlwZTo6QXR0cmlidXRlQ2hhbmdlZCkKICAgICAgICAgLCBtX2VsZW1l
bnQoZWxlbWVudCkKQEAgLTU0LDcgKzYyLDE0IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW52b2tl
KCkKICAgICB7Ci0gICAgICAgIG1faW50ZXJmYWNlLT5hdHRyaWJ1dGVDaGFuZ2VkKG1fZWxlbWVu
dC5nZXQoKSwgbV9hdHRyaWJ1dGVOYW1lLCBtX29sZFZhbHVlLCBtX25ld1ZhbHVlKTsKKyAgICAg
ICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICAgICAgY2FzZSBUeXBlOjpFbGVtZW50VXBncmFkZToK
KyAgICAgICAgICAgIG1faW50ZXJmYWNlLT51cGdyYWRlRWxlbWVudChtX2VsZW1lbnQuZ2V0KCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHlwZTo6QXR0cmlidXRlQ2hhbmdl
ZDoKKyAgICAgICAgICAgIG1faW50ZXJmYWNlLT5hdHRyaWJ1dGVDaGFuZ2VkKG1fZWxlbWVudC5n
ZXQoKSwgbV9hdHRyaWJ1dGVOYW1lLCBtX29sZFZhbHVlLCBtX25ld1ZhbHVlKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQogCiBwcml2YXRlOgpAQCAtNzQsNiArODksMTIg
QEAgTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZTo6fkxpZmVjeWNsZUNhbGxiYQogICAgIEFTU0VSVCht
X2l0ZW1zLmlzRW1wdHkoKSk7CiB9CiAKK3ZvaWQgTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZTo6ZW5x
dWV1ZUVsZW1lbnRVcGdyYWRlKEVsZW1lbnQmIGVsZW1lbnQsIEpTQ3VzdG9tRWxlbWVudEludGVy
ZmFjZSYgaW50ZXJmYWNlKQoreworICAgIGlmIChhdXRvKiBxdWV1ZSA9IEN1c3RvbUVsZW1lbnRM
aWZlY3ljbGVQcm9jZXNzaW5nU3RhY2s6OmVuc3VyZUN1cnJlbnRRdWV1ZSgpKQorICAgICAgICBx
dWV1ZS0+bV9pdGVtcy5hcHBlbmQoTGlmZWN5Y2xlUXVldWVJdGVtKExpZmVjeWNsZVF1ZXVlSXRl
bTo6VHlwZTo6RWxlbWVudFVwZ3JhZGUsIGVsZW1lbnQsIGludGVyZmFjZSkpOworfQorCiB2b2lk
IExpZmVjeWNsZUNhbGxiYWNrUXVldWU6OmVucXVldWVBdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2so
RWxlbWVudCYgZWxlbWVudCwgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlJiBpbnRlcmZhY2UsCiAg
ICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9MaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUuaAkocmV2aXNpb24gMTk3NjEy
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDcsNiArNDcsOCBAQCBwdWJsaWM6CiAgICAgTGlmZWN5Y2xlQ2FsbGJhY2tR
dWV1ZSgpOwogICAgIH5MaWZlY3ljbGVDYWxsYmFja1F1ZXVlKCk7CiAKKyAgICBzdGF0aWMgdm9p
ZCBlbnF1ZXVlRWxlbWVudFVwZ3JhZGUoRWxlbWVudCYsIEpTQ3VzdG9tRWxlbWVudEludGVyZmFj
ZSYpOworCiAgICAgc3RhdGljIHZvaWQgZW5xdWV1ZUF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayhF
bGVtZW50JiwgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlJiwKICAgICAgICAgY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmV3VmFsdWUpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaWRsCShyZXZpc2lvbiAxOTc2MTIpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcw
LDEwIEBACiAgICAgW0N1c3RvbSwgUmFpc2VzRXhjZXB0aW9uXSBOb2RlIGFwcGVuZENoaWxkKFtD
dXN0b21SZXR1cm5dIE5vZGUgbmV3Q2hpbGQpOwogCiAgICAgYm9vbGVhbiAgICAgICAgICAgIGhh
c0NoaWxkTm9kZXMoKTsKLSAgICBbTmV3T2JqZWN0LCBSYWlzZXNFeGNlcHRpb24sIEltcGxlbWVu
dGVkQXM9Y2xvbmVOb2RlRm9yQmluZGluZ3NdIE5vZGUgY2xvbmVOb2RlKFtEZWZhdWx0PVVuZGVm
aW5lZF0gb3B0aW9uYWwgYm9vbGVhbiBkZWVwKTsKKworICAgIFtOZXdPYmplY3QsIFJhaXNlc0V4
Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1jbG9uZU5vZGVGb3JCaW5kaW5ncywgSW52b2tlc0N1c3Rv
bUVsZW1lbnRMaWZlY3ljbGVDYWxsYmFja3NdCisgICAgTm9kZSBjbG9uZU5vZGUoW0RlZmF1bHQ9
VW5kZWZpbmVkXSBvcHRpb25hbCBib29sZWFuIGRlZXApOworCiAgICAgdm9pZCAgICAgICAgICAg
ICAgIG5vcm1hbGl6ZSgpOwogCiAgICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCShyZXZpc2lvbiAxOTc2MTIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAkod29ya2luZyBjb3B5KQpAQCAtMTA0NywxMiArMTA0
NywyMyBAQCBSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+ICRwCiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLVJlZjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gJHBh
cmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVtZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50JGZvcm1FbGVtZW50QXJndW1lbnRG
b3JEZWZpbml0aW9uLCBib29sIGNyZWF0ZWRCeVBhcnNlcikKK1JlZlB0cjwkcGFyYW1ldGVyc3tu
YW1lc3BhY2V9RWxlbWVudD4gJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRGYWN0b3J5Ojpj
cmVhdGVLbm93bkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgRG9jdW1lbnQmIGRv
Y3VtZW50JGZvcm1FbGVtZW50QXJndW1lbnRGb3JEZWZpbml0aW9uLCBib29sIGNyZWF0ZWRCeVBh
cnNlcikKIHsKLSAgICBSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+IGVsZW1l
bnQgPSAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUtub3duRWxl
bWVudCgkYXJndW1lbnRMaXN0KTsKLSAgICBpZiAoTElLRUxZKGVsZW1lbnQpKQotICAgICAgICBy
ZXR1cm4gZWxlbWVudC5yZWxlYXNlTm9uTnVsbCgpOwotICAgIHJldHVybiAkcGFyYW1ldGVyc3tm
YWxsYmFja0ludGVyZmFjZU5hbWV9OjpjcmVhdGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbmFt
ZSwgJHtsb3dlcmNhc2VOYW1lc3BhY2VQcmVmaXh9TmFtZXNwYWNlVVJJKSwgZG9jdW1lbnQpOwor
ICAgIGNvbnN0IENvbnN0cnVjdG9yRnVuY3Rpb25NYXBFbnRyeSYgZW50cnkgPSBmaW5kJHBhcmFt
ZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRDb25zdHJ1Y3RvckZ1bmN0aW9uKG5hbWUubG9jYWxOYW1l
KCkpOworICAgIGlmIChMSUtFTFkoZW50cnkuZnVuY3Rpb24pKQorICAgICAgICByZXR1cm4gZW50
cnkuZnVuY3Rpb24oJGFyZ3VtZW50TGlzdCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1Jl
ZjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVs
ZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1l
LCBEb2N1bWVudCYgZG9jdW1lbnQkZm9ybUVsZW1lbnRBcmd1bWVudEZvckRlZmluaXRpb24sIGJv
b2wgY3JlYXRlZEJ5UGFyc2VyKQoreworICAgIGNvbnN0IENvbnN0cnVjdG9yRnVuY3Rpb25NYXBF
bnRyeSYgZW50cnkgPSBmaW5kJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRDb25zdHJ1Y3Rv
ckZ1bmN0aW9uKGxvY2FsTmFtZSk7CisgICAgaWYgKExJS0VMWShlbnRyeS5mdW5jdGlvbikpIHsK
KyAgICAgICAgQVNTRVJUKGVudHJ5LnF1YWxpZmllZE5hbWUpOworICAgICAgICBjb25zdCBhdXRv
JiBuYW1lID0gKmVudHJ5LnF1YWxpZmllZE5hbWU7CisgICAgICAgIHJldHVybiBlbnRyeS5mdW5j
dGlvbigkYXJndW1lbnRMaXN0KTsKKyAgICB9CisgICAgcmV0dXJuICRwYXJhbWV0ZXJze2ZhbGxi
YWNrSW50ZXJmYWNlTmFtZX06OmNyZWF0ZShRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBsb2NhbE5h
bWUsICR7bG93ZXJjYXNlTmFtZXNwYWNlUHJlZml4fU5hbWVzcGFjZVVSSSksIGRvY3VtZW50KTsK
IH0KIAogUmVmPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PiAkcGFyYW1ldGVyc3tuYW1l
c3BhY2V9RWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50JGZvcm1FbGVtZW50QXJndW1lbnRGb3JEZWZpbml0aW9u
LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKQEAgLTEwODksMjkgKzExMDAsMzYgQEAgc3ViIHByaW50
RmFjdG9yeUhlYWRlckZpbGUKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgRG9j
dW1lbnQ7Ci0gICAgY2xhc3MgSFRNTEZvcm1FbGVtZW50OwotICAgIGNsYXNzIFF1YWxpZmllZE5h
bWU7CitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIEhUTUxGb3JtRWxlbWVudDsKK2NsYXNzIFF1YWxp
ZmllZE5hbWU7CiAKLSAgICBjbGFzcyAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudDsKK2Ns
YXNzICRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50OwogCi0gICAgY2xhc3MgJHBhcmFtZXRl
cnN7bmFtZXNwYWNlfUVsZW1lbnRGYWN0b3J5IHsKLSAgICBwdWJsaWM6CitjbGFzcyAkcGFyYW1l
dGVyc3tuYW1lc3BhY2V9RWxlbWVudEZhY3RvcnkgeworcHVibGljOgogRU5ECiA7CiAKLXByaW50
IEYgIiAgICAgICAgc3RhdGljIFJlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4g
Y3JlYXRlS25vd25FbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBEb2N1bWVu
dCYiOworcHJpbnQgRiAic3RhdGljIFJlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVu
dD4gY3JlYXRlS25vd25FbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIERvY3VtZW50JiI7CiBw
cmludCBGICIsIEhUTUxGb3JtRWxlbWVudCogPSBudWxscHRyIiBpZiAkcGFyYW1ldGVyc3tuYW1l
c3BhY2V9IGVxICJIVE1MIjsKLXByaW50IEYgIiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIgPSBmYWxz
ZSk7XG5cbiI7Ci1wcmludCBGICIgICAgICAgIHN0YXRpYyBSZWY8JHBhcmFtZXRlcnN7bmFtZXNw
YWNlfUVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUs
IERvY3VtZW50JiI7CitwcmludCBGICIsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyID0gZmFsc2UpO1xu
IjsKKworcHJpbnQgRiAic3RhdGljIFJlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVu
dD4gY3JlYXRlS25vd25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYiOwog
cHJpbnQgRiAiLCBIVE1MRm9ybUVsZW1lbnQqID0gbnVsbHB0ciIgaWYgJHBhcmFtZXRlcnN7bmFt
ZXNwYWNlfSBlcSAiSFRNTCI7CiBwcmludCBGICIsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyID0gZmFs
c2UpO1xuIjsKLXByaW50IEYgIiAgICAgICAgc3RhdGljIFJlZjwkcGFyYW1ldGVyc3tuYW1lc3Bh
Y2V9RWxlbWVudD4gY3JlYXRlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBsb2NhbE5hbWUs
IERvY3VtZW50JiI7CisKK3ByaW50IEYgInN0YXRpYyBSZWY8JHBhcmFtZXRlcnN7bmFtZXNwYWNl
fUVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgRG9jdW1lbnQmIjsK
K3ByaW50IEYgIiwgSFRNTEZvcm1FbGVtZW50KiA9IG51bGxwdHIiIGlmICRwYXJhbWV0ZXJze25h
bWVzcGFjZX0gZXEgIkhUTUwiOworcHJpbnQgRiAiLCBib29sIGNyZWF0ZWRCeVBhcnNlciA9IGZh
bHNlKTtcbiI7CisKK3ByaW50IEYgInN0YXRpYyBSZWY8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVs
ZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiI7CiBw
cmludCBGICIsIEhUTUxGb3JtRWxlbWVudCogPSBudWxscHRyIiBpZiAkcGFyYW1ldGVyc3tuYW1l
c3BhY2V9IGVxICJIVE1MIjsKIHByaW50IEYgIiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIgPSBmYWxz
ZSk7XG4iOwogCiBwcmludGYgRjw8RU5ECi0gICAgfTsKK307CisKIH0KIAogI2VuZGlmIC8vICRw
YXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50RmFjdG9yeV9oCkluZGV4OiBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
OTc2MTIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNSBAQAorMjAxNi0wMy0wNSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBBZGQgdGhlIHN1cHBvcnQgZm9yIHVwZ3JhZGluZyBjdXN0b20gZWxlbWVudHMgaW4g
Y2xvbmVOb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTUwNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCB0ZXN0IGNhc2VzIGZvciB1cGdyYWRpbmcgZWxlbWVudHMgd2l0aCBOb2RlLnByb3Rv
dHlwZS5jbG9uZU5vZGUuCisKKyAgICAgICAgKiBmYXN0L2N1c3RvbS1lbGVtZW50cy9saWZlY3lj
bGUtY2FsbGJhY2stdGltaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2N1c3RvbS1l
bGVtZW50cy9saWZlY3ljbGUtY2FsbGJhY2stdGltaW5nLmh0bWw6CisKIDIwMTYtMDMtMDQgIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIGJhc2ljIHN1cHBv
cnQgZm9yIGF0dHJpYnV0ZUNoYW5nZWQgbGlmZWN5Y2xlIGNhbGxiYWNrCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9saWZlY3ljbGUtY2FsbGJhY2stdGltaW5nLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9s
aWZlY3ljbGUtY2FsbGJhY2stdGltaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTk3NjEyKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvbGlmZWN5Y2xlLWNhbGxiYWNrLXRp
bWluZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0IEBACiAKIFBBU1Mg
c2V0QXR0cmlidXRlIGFuZCByZW1vdmVBdHRyaWJ1dGUgbXVzdCBlbnF1ZXVlIGFuZCBpbnZva2Ug
YXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrIAorUEFTUyBDYWxsaW5nIE5vZGUucHJvdG90eXBlLmNs
b25lTm9kZShmYWxzZSkgbXVzdCBwdXNoIGEgbmV3IGVsZW1lbnQgcXVldWUgdG8gdGhlIHByb2Nl
c3Npbmcgc3RhY2sgCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2xp
ZmVjeWNsZS1jYWxsYmFjay10aW1pbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2N1c3RvbS1lbGVtZW50cy9saWZlY3ljbGUtY2FsbGJhY2stdGltaW5nLmh0bWwJKHJldmlz
aW9uIDE5NzYxMikKKysrIExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2xpZmVjeWNs
ZS1jYWxsYmFjay10aW1pbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNDIgQEAg
dGVzdChmdW5jdGlvbiAoKSB7CiAKIH0sICdzZXRBdHRyaWJ1dGUgYW5kIHJlbW92ZUF0dHJpYnV0
ZSBtdXN0IGVucXVldWUgYW5kIGludm9rZSBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2snKTsKIAor
dGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIHNob3VsZENsb25lQW5vdGhlckluc3RhbmNlID0g
ZmFsc2U7CisgICAgdmFyIGFub3RoZXJJbnN0YW5jZUNsb25lOworICAgIHZhciBsb2cgPSBbXTsK
KworICAgIGNsYXNzIFNlbGZDbG9uaW5nRWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50IHsKKyAg
ICAgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgICAgICBzdXBlcigpOworICAgICAgICAgICAg
bG9nLnB1c2goW3RoaXMsICdiZWdpbiddKTsKKyAgICAgICAgICAgIGlmIChzaG91bGRDbG9uZUFu
b3RoZXJJbnN0YW5jZSkgeworICAgICAgICAgICAgICAgIHNob3VsZENsb25lQW5vdGhlckluc3Rh
bmNlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgYW5vdGhlckluc3RhbmNlQ2xvbmUgPSBhbm90
aGVySW5zdGFuY2UuY2xvbmVOb2RlKGZhbHNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGxvZy5wdXNoKFt0aGlzLCAnZW5kJ10pOworICAgICAgICB9CisgICAgfQorICAgIGRvY3VtZW50
LmRlZmluZUVsZW1lbnQoJ3NlbGYtY2xvbmluZy1lbGVtZW50JywgU2VsZkNsb25pbmdFbGVtZW50
KTsKKworICAgIHZhciBpbnN0YW5jZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NlbGYtY2xv
bmluZy1lbGVtZW50Jyk7CisgICAgdmFyIGFub3RoZXJJbnN0YW5jZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ3NlbGYtY2xvbmluZy1lbGVtZW50Jyk7CisgICAgc2hvdWxkQ2xvbmVBbm90aGVy
SW5zdGFuY2UgPSB0cnVlOworCisgICAgYXNzZXJ0X2VxdWFscyhsb2cubGVuZ3RoLCA0KTsKKyAg
ICB2YXIgaW5zdGFuY2VDbG9uZSA9IGluc3RhbmNlLmNsb25lTm9kZShmYWxzZSk7CisKKyAgICBh
c3NlcnRfZXF1YWxzKGxvZy5sZW5ndGgsIDgpOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9n
WzBdLCBbaW5zdGFuY2UsICdiZWdpbiddKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1sx
XSwgW2luc3RhbmNlLCAnZW5kJ10pOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzJdLCBb
YW5vdGhlckluc3RhbmNlLCAnYmVnaW4nXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2db
M10sIFthbm90aGVySW5zdGFuY2UsICdlbmQnXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhs
b2dbNF0sIFtpbnN0YW5jZUNsb25lLCAnYmVnaW4nXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhsb2dbNV0sIFthbm90aGVySW5zdGFuY2VDbG9uZSwgJ2JlZ2luJ10pOworICAgIGFzc2VydF9h
cnJheV9lcXVhbHMobG9nWzZdLCBbYW5vdGhlckluc3RhbmNlQ2xvbmUsICdlbmQnXSk7CisgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbN10sIFtpbnN0YW5jZUNsb25lLCAnZW5kJ10pOworfSwg
J0NhbGxpbmcgTm9kZS5wcm90b3R5cGUuY2xvbmVOb2RlKGZhbHNlKSBtdXN0IHB1c2ggYSBuZXcg
ZWxlbWVudCBxdWV1ZSB0byB0aGUgcHJvY2Vzc2luZyBzdGFjaycpOworCiA8L3NjcmlwdD4KIDwv
Ym9keT4KIDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3Vw
Z3JhZGluZy9Ob2RlLWNsb25lTm9kZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdXBncmFkaW5nL05vZGUtY2xvbmVOb2RlLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRz
L3VwZ3JhZGluZy9Ob2RlLWNsb25lTm9kZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw5IEBACisKK1BBU1MgTm9kZS5wcm90b3R5cGUuY2xvbmVOb2RlKGZhbHNlKSBtdXN0
IGJlIGFibGUgdG8gY2xvbmUgYSBjdXN0b20gZWxlbWVudCAKK1BBU1MgTm9kZS5wcm90b3R5cGUu
Y2xvbmVOb2RlKGZhbHNlKSBtdXN0IGJlIGFibGUgdG8gY2xvbmUgYSBjdXN0b20gZWxlbWVudCBp
bnNpZGUgYW4gaWZyYW1lIAorUEFTUyBOb2RlLnByb3RvdHlwZS5jbG9uZU5vZGUodHJ1ZSkgbXVz
dCBiZSBhYmxlIHRvIGNsb25lIGEgZGVzY2VuZGVudCBjdXN0b20gZWxlbWVudCAKK1BBU1MgTm9k
ZS5wcm90b3R5cGUuY2xvbmVOb2RlKHRydWUpIG11c3QgYmUgYWJsZSB0byBjbG9uZSBhIGRlc2Nl
bmRlbnQgY3VzdG9tIGVsZW1lbnQgCitQQVNTIEhUTUxFbGVtZW50IGNvbnN0cnVjdG9yIG11c3Qg
dGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiB0aGUgdG9wIG9mIHRoZSBjb25zdHJ1Y3Rp
b24gc3RhY2sgaXMgbWFya2VkIEFscmVhZHlDb25zdHJ1Y3RlZCBkdWUgdG8gYSBjdXN0b20gZWxl
bWVudCBjb25zdHJ1Y3RvciBjb25zdHJ1Y3RpbmcgaXRzZWxmIGFmdGVyIHN1cGVyKCkgY2FsbCAK
K1BBU1MgSFRNTEVsZW1lbnQgY29uc3RydWN0b3IgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVF
cnJvciB3aGVuIHRoZSB0b3Agb2YgdGhlIGNvbnN0cnVjdGlvbiBzdGFjayBpcyBtYXJrZWQgQWxy
ZWFkeUNvbnN0cnVjdGVkIGR1ZSB0byBhIGN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIGNvbnN0
cnVjdGluZyBpdHNlbGYgYmVmb3JlIHN1cGVyKCkgY2FsbCAKK1BBU1MgVXBncmFkaW5nIGEgY3Vz
dG9tIGVsZW1lbnQgbXVzdCB0aHJvdyBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHRoZSBjdXN0b20g
ZWxlbWVudCdzIGNvbnN0cnVjdG9yIHJldHVybnMgYW5vdGhlciBlbGVtZW50IAorCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy91cGdyYWRpbmcvTm9kZS1jbG9uZU5vZGUu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy91cGdy
YWRpbmcvTm9kZS1jbG9uZU5vZGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvY3VzdG9tLWVsZW1lbnRzL3VwZ3JhZGluZy9Ob2RlLWNsb25lTm9kZS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTY5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8dGl0bGU+Q3VzdG9tIEVsZW1lbnRzOiBFeHRlbnNpb25zIHRvIERvY3VtZW50IGludGVyZmFj
ZTwvdGl0bGU+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJSeW9zdWtlIE5pd2EiIGhyZWY9
Im1haWx0bzpybml3YUB3ZWJraXQub3JnIj4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0i
Tm9kZS5wcm90b3R5cGUuY2xvbmVOb2RlIHNob3VsZCB1cGdyYWRlIGEgY3VzdG9tIGVsZW1lbnQi
PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9u
ZW50cy9zcGVjL2N1c3RvbS8jdXBncmFkaW5nIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9J3N0eWxl
c2hlZXQnIGhyZWY9Jy4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MnPgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2PgorPHNjcmlwdD4KKworZnVuY3Rpb24gd2l0
aE5ld0RvY3VtZW50V2l0aEFCcm93c2luZ0NvbnRleHQoY2FsbGJhY2spIHsKKyAgICB2YXIgaWZy
YW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7CisgICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChpZnJhbWUpOworICAgIHRyeSB7CisgICAgICAgIGNhbGxiYWNrKGlmcmFt
ZS5jb250ZW50V2luZG93LCBpZnJhbWUuY29udGVudERvY3VtZW50KTsgICAgICAgIAorICAgIH0g
ZmluYWxseSB7CisgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoaWZyYW1lKTsKKyAg
ICB9Cit9CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIE15Q3VzdG9tRWxlbWVudCBl
eHRlbmRzIEhUTUxFbGVtZW50IHt9CisgICAgZG9jdW1lbnQuZGVmaW5lRWxlbWVudCgnbXktY3Vz
dG9tLWVsZW1lbnQnLCBNeUN1c3RvbUVsZW1lbnQpOworCisgICAgdmFyIGluc3RhbmNlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnbXktY3VzdG9tLWVsZW1lbnQnKTsKKyAgICBhc3NlcnRfdHJ1
ZShpbnN0YW5jZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KTsKKyAgICBhc3NlcnRfdHJ1ZShpbnN0
YW5jZSBpbnN0YW5jZW9mIE15Q3VzdG9tRWxlbWVudCk7CisKKyAgICB2YXIgY2xvbmUgPSBpbnN0
YW5jZS5jbG9uZU5vZGUoZmFsc2UpOworICAgIGFzc2VydF9ub3RfZXF1YWxzKGluc3RhbmNlLCBj
bG9uZSk7CisgICAgYXNzZXJ0X3RydWUoY2xvbmUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCwKKyAg
ICAgICAgJ0EgY2xvbmVkIGN1c3RvbSBlbGVtZW50IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgSFRN
TEVsZW1lbnQnKTsKKyAgICBhc3NlcnRfdHJ1ZShjbG9uZSBpbnN0YW5jZW9mIE15Q3VzdG9tRWxl
bWVudCwKKyAgICAgICAgJ0EgY2xvbmVkIGN1c3RvbSBlbGVtZW50IG11c3QgYmUgYW4gaW5zdGFu
Y2Ugb2YgdGhlIGN1c3RvbSBlbGVtZW50Jyk7Cit9LCAnTm9kZS5wcm90b3R5cGUuY2xvbmVOb2Rl
KGZhbHNlKSBtdXN0IGJlIGFibGUgdG8gY2xvbmUgYSBjdXN0b20gZWxlbWVudCcpOworCit0ZXN0
KGZ1bmN0aW9uICgpIHsKKyAgICB3aXRoTmV3RG9jdW1lbnRXaXRoQUJyb3dzaW5nQ29udGV4dChm
dW5jdGlvbiAoY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgIGNsYXNz
IE15Q3VzdG9tRWxlbWVudCBleHRlbmRzIGNvbnRlbnRXaW5kb3cuSFRNTEVsZW1lbnQge30KKyAg
ICAgICAgY29udGVudERvY3VtZW50LmRlZmluZUVsZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50Jywg
TXlDdXN0b21FbGVtZW50KTsKKworICAgICAgICB2YXIgaW5zdGFuY2UgPSBjb250ZW50RG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnbXktY3VzdG9tLWVsZW1lbnQnKTsKKyAgICAgICAgYXNzZXJ0X3Ry
dWUoaW5zdGFuY2UgaW5zdGFuY2VvZiBjb250ZW50V2luZG93LkhUTUxFbGVtZW50KTsKKyAgICAg
ICAgYXNzZXJ0X3RydWUoaW5zdGFuY2UgaW5zdGFuY2VvZiBNeUN1c3RvbUVsZW1lbnQpOworCisg
ICAgICAgIHZhciBjbG9uZSA9IGluc3RhbmNlLmNsb25lTm9kZShmYWxzZSk7CisgICAgICAgIGFz
c2VydF9ub3RfZXF1YWxzKGluc3RhbmNlLCBjbG9uZSk7CisgICAgICAgIGFzc2VydF90cnVlKGNs
b25lIGluc3RhbmNlb2YgY29udGVudFdpbmRvdy5IVE1MRWxlbWVudCwKKyAgICAgICAgICAgICdB
IGNsb25lZCBjdXN0b20gZWxlbWVudCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEhUTUxFbGVtZW50
Jyk7CisgICAgICAgIGFzc2VydF90cnVlKGNsb25lIGluc3RhbmNlb2YgTXlDdXN0b21FbGVtZW50
LAorICAgICAgICAgICAgJ0EgY2xvbmVkIGN1c3RvbSBlbGVtZW50IG11c3QgYmUgYW4gaW5zdGFu
Y2Ugb2YgdGhlIGN1c3RvbSBlbGVtZW50Jyk7CisgICAgfSk7Cit9LCAnTm9kZS5wcm90b3R5cGUu
Y2xvbmVOb2RlKGZhbHNlKSBtdXN0IGJlIGFibGUgdG8gY2xvbmUgYSBjdXN0b20gZWxlbWVudCBp
bnNpZGUgYW4gaWZyYW1lJyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHdpdGhOZXdEb2N1
bWVudFdpdGhBQnJvd3NpbmdDb250ZXh0KGZ1bmN0aW9uIChjb250ZW50V2luZG93LCBjb250ZW50
RG9jdW1lbnQpIHsKKyAgICAgICAgY2xhc3MgTXlDdXN0b21FbGVtZW50IGV4dGVuZHMgY29udGVu
dFdpbmRvdy5IVE1MRWxlbWVudCB7IH0KKyAgICAgICAgY29udGVudERvY3VtZW50LmRlZmluZUVs
ZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50JywgTXlDdXN0b21FbGVtZW50KTsKKworICAgICAgICB2
YXIgaW5zdGFuY2UgPSBjb250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbXktY3VzdG9tLWVs
ZW1lbnQnKTsKKyAgICAgICAgdmFyIGNvbnRhaW5lciA9IGNvbnRlbnREb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKKyAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGluc3RhbmNlKTsK
KworICAgICAgICB2YXIgY29udGFpbmVyQ2xvbmUgPSBjb250YWluZXIuY2xvbmVOb2RlKHRydWUp
OworICAgICAgICBhc3NlcnRfdHJ1ZShjb250YWluZXJDbG9uZSBpbnN0YW5jZW9mIGNvbnRlbnRX
aW5kb3cuSFRNTERpdkVsZW1lbnQpOworCisgICAgICAgIHZhciBjbG9uZSA9IGNvbnRhaW5lckNs
b25lLmZpcnN0Q2hpbGQ7CisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGluc3RhbmNlLCBjbG9u
ZSk7CisgICAgICAgIGFzc2VydF90cnVlKGNsb25lIGluc3RhbmNlb2YgY29udGVudFdpbmRvdy5I
VE1MRWxlbWVudCwKKyAgICAgICAgICAgICdBIGNsb25lZCBjdXN0b20gZWxlbWVudCBtdXN0IGJl
IGFuIGluc3RhbmNlIG9mIEhUTUxFbGVtZW50Jyk7CisgICAgICAgIGFzc2VydF90cnVlKGNsb25l
IGluc3RhbmNlb2YgTXlDdXN0b21FbGVtZW50LAorICAgICAgICAgICAgJ0EgY2xvbmVkIGN1c3Rv
bSBlbGVtZW50IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgdGhlIGN1c3RvbSBlbGVtZW50Jyk7Cisg
ICAgfSk7Cit9LCAnTm9kZS5wcm90b3R5cGUuY2xvbmVOb2RlKHRydWUpIG11c3QgYmUgYWJsZSB0
byBjbG9uZSBhIGRlc2NlbmRlbnQgY3VzdG9tIGVsZW1lbnQnKTsKKwordGVzdChmdW5jdGlvbiAo
KSB7CisgICAgd2l0aE5ld0RvY3VtZW50V2l0aEFCcm93c2luZ0NvbnRleHQoZnVuY3Rpb24gKGNv
bnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICB2YXIgcGFyZW50Tm9kZUlu
Q29uc3RydWN0b3I7CisgICAgICAgIHZhciBwcmV2aW91c1NpYmxpbmdJbkNvbnN0cnVjdG9yOwor
ICAgICAgICB2YXIgbmV4dFNpYmxpbmdJbkNvbnN0cnVjdG9yOworICAgICAgICBjbGFzcyBNeUN1
c3RvbUVsZW1lbnQgZXh0ZW5kcyBjb250ZW50V2luZG93LkhUTUxFbGVtZW50IHsKKyAgICAgICAg
ICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICAgICAgICAgIHN1cGVyKCk7CisgICAgICAgICAg
ICAgICAgcGFyZW50Tm9kZUluQ29uc3RydWN0b3IgPSB0aGlzLnBhcmVudE5vZGU7CisgICAgICAg
ICAgICAgICAgcHJldmlvdXNTaWJsaW5nSW5Db25zdHJ1Y3RvciA9IHRoaXMucHJldmlvdXNTaWJs
aW5nOworICAgICAgICAgICAgICAgIG5leHRTaWJsaW5nSW5Db25zdHJ1Y3RvciA9IHRoaXMubmV4
dFNpYmxpbmc7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY29udGVudERvY3Vt
ZW50LmRlZmluZUVsZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50JywgTXlDdXN0b21FbGVtZW50KTsK
KworICAgICAgICB2YXIgaW5zdGFuY2UgPSBjb250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
bXktY3VzdG9tLWVsZW1lbnQnKTsKKyAgICAgICAgdmFyIHNpYmxpbmdCZWZvcmVJbnN0YW5jZSA9
IGNvbnRlbnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCdiJyk7CisgICAgICAgIHZhciBzaWJsaW5n
QWZ0ZXJJbnN0YW5jZSA9IGNvbnRlbnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7CisgICAg
ICAgIHZhciBjb250YWluZXIgPSBjb250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
CisgICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChzaWJsaW5nQmVmb3JlSW5zdGFuY2UpOwor
ICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoaW5zdGFuY2UpOworICAgICAgICBjb250YWlu
ZXIuYXBwZW5kQ2hpbGQoc2libGluZ0FmdGVySW5zdGFuY2UpOworCisgICAgICAgIHZhciBjb250
YWluZXJDbG9uZSA9IGNvbnRhaW5lci5jbG9uZU5vZGUodHJ1ZSk7CisKKyAgICAgICAgYXNzZXJ0
X2VxdWFscyhwYXJlbnROb2RlSW5Db25zdHJ1Y3RvciwgY29udGFpbmVyQ2xvbmUsCisgICAgICAg
ICAgICAnQW4gdXBncmFkZWQgZWxlbWVudCBtdXN0IGhhdmUgaXRzIHBhcmVudE5vZGUgc2V0IGJl
Zm9yZSB0aGUgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IgaXMgY2FsbGVkJyk7CisgICAgICAg
IGFzc2VydF9lcXVhbHMocHJldmlvdXNTaWJsaW5nSW5Db25zdHJ1Y3RvciwgY29udGFpbmVyQ2xv
bmUuZmlyc3RDaGlsZCwKKyAgICAgICAgICAgICdBbiB1cGdyYWRlZCBlbGVtZW50IG11c3QgaGF2
ZSBpdHMgcHJldmlvdXNTaWJsaW5nIHNldCBiZWZvcmUgdGhlIGN1c3RvbSBlbGVtZW50IGNvbnN0
cnVjdG9yIGlzIGNhbGxlZCcpOworICAgICAgICBhc3NlcnRfZXF1YWxzKG5leHRTaWJsaW5nSW5D
b25zdHJ1Y3RvciwgY29udGFpbmVyQ2xvbmUubGFzdENoaWxkLAorICAgICAgICAgICAgJ0FuIHVw
Z3JhZGVkIGVsZW1lbnQgbXVzdCBoYXZlIGl0cyBuZXh0U2libGluZyBzZXQgYmVmb3JlIHRoZSBj
dXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciBpcyBjYWxsZWQnKTsKKyAgICB9KTsKK30sICdOb2Rl
LnByb3RvdHlwZS5jbG9uZU5vZGUodHJ1ZSkgbXVzdCBiZSBhYmxlIHRvIGNsb25lIGEgZGVzY2Vu
ZGVudCBjdXN0b20gZWxlbWVudCcpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB3aXRoTmV3
RG9jdW1lbnRXaXRoQUJyb3dzaW5nQ29udGV4dChmdW5jdGlvbiAoY29udGVudFdpbmRvdywgY29u
dGVudERvY3VtZW50KSB7CisgICAgICAgIGNsYXNzIE15Q3VzdG9tRWxlbWVudCBleHRlbmRzIGNv
bnRlbnRXaW5kb3cuSFRNTEVsZW1lbnQgeworICAgICAgICAgICAgY29uc3RydWN0b3IoZG9Ob3RD
cmVhdGVJdHNlbGYpIHsKKyAgICAgICAgICAgICAgICBzdXBlcigpOworICAgICAgICAgICAgICAg
IGlmICghZG9Ob3RDcmVhdGVJdHNlbGYpCisgICAgICAgICAgICAgICAgICAgIG5ldyBNeUN1c3Rv
bUVsZW1lbnQodHJ1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY29udGVu
dERvY3VtZW50LmRlZmluZUVsZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50JywgTXlDdXN0b21FbGVt
ZW50KTsKKworICAgICAgICB2YXIgaW5zdGFuY2UgPSBjb250ZW50RG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnbXktY3VzdG9tLWVsZW1lbnQnKTsKKyAgICAgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUn
OiAnSW52YWxpZFN0YXRlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBpbnN0YW5jZS5jbG9uZU5vZGUo
ZmFsc2UpOyB9KTsKKyAgICB9KTsKK30sICdIVE1MRWxlbWVudCBjb25zdHJ1Y3RvciBtdXN0IHRo
cm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gdGhlIHRvcCBvZiB0aGUgY29uc3RydWN0aW9u
IHN0YWNrIGlzIG1hcmtlZCBBbHJlYWR5Q29uc3RydWN0ZWQnCisgICAgKyAnIGR1ZSB0byBhIGN1
c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIGNvbnN0cnVjdGluZyBpdHNlbGYgYWZ0ZXIgc3VwZXIo
KSBjYWxsJyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHdpdGhOZXdEb2N1bWVudFdpdGhB
QnJvd3NpbmdDb250ZXh0KGZ1bmN0aW9uIChjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQp
IHsKKyAgICAgICAgY2xhc3MgTXlDdXN0b21FbGVtZW50IGV4dGVuZHMgY29udGVudFdpbmRvdy5I
VE1MRWxlbWVudCB7CisgICAgICAgICAgICBjb25zdHJ1Y3Rvcihkb05vdENyZWF0ZUl0c2VsZikg
eworICAgICAgICAgICAgICAgIGlmICghZG9Ob3RDcmVhdGVJdHNlbGYpCisgICAgICAgICAgICAg
ICAgICAgIG5ldyBNeUN1c3RvbUVsZW1lbnQodHJ1ZSk7CisgICAgICAgICAgICAgICAgc3VwZXIo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjb250ZW50RG9jdW1lbnQuZGVm
aW5lRWxlbWVudCgnbXktY3VzdG9tLWVsZW1lbnQnLCBNeUN1c3RvbUVsZW1lbnQpOworCisgICAg
ICAgIHZhciBpbnN0YW5jZSA9IGNvbnRlbnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCdteS1jdXN0
b20tZWxlbWVudCcpOworICAgICAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdJbnZhbGlkU3Rh
dGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IGluc3RhbmNlLmNsb25lTm9kZShmYWxzZSk7IH0pOwor
ICAgIH0pOworfSwgJ0hUTUxFbGVtZW50IGNvbnN0cnVjdG9yIG11c3QgdGhyb3cgYW4gSW52YWxp
ZFN0YXRlRXJyb3Igd2hlbiB0aGUgdG9wIG9mIHRoZSBjb25zdHJ1Y3Rpb24gc3RhY2sgaXMgbWFy
a2VkIEFscmVhZHlDb25zdHJ1Y3RlZCcKKyAgICArICcgZHVlIHRvIGEgY3VzdG9tIGVsZW1lbnQg
Y29uc3RydWN0b3IgY29uc3RydWN0aW5nIGl0c2VsZiBiZWZvcmUgc3VwZXIoKSBjYWxsJyk7CisK
K3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHdpdGhOZXdEb2N1bWVudFdpdGhBQnJvd3NpbmdDb250
ZXh0KGZ1bmN0aW9uIChjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAg
dmFyIGNsb25pbmcgPSBmYWxzZTsKKyAgICAgICAgY2xhc3MgTXlDdXN0b21FbGVtZW50IGV4dGVu
ZHMgY29udGVudFdpbmRvdy5IVE1MRWxlbWVudCB7CisgICAgICAgICAgICBjb25zdHJ1Y3Rvcigp
IHsKKyAgICAgICAgICAgICAgICBzdXBlcigpOworICAgICAgICAgICAgICAgIGlmIChjbG9uaW5n
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudERvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ3NwYW4nKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjb250ZW50RG9j
dW1lbnQuZGVmaW5lRWxlbWVudCgnbXktY3VzdG9tLWVsZW1lbnQnLCBNeUN1c3RvbUVsZW1lbnQp
OworCisgICAgICAgIHZhciBpbnN0YW5jZSA9IGNvbnRlbnREb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdteS1jdXN0b20tZWxlbWVudCcpOworICAgICAgICBjbG9uaW5nID0gdHJ1ZTsKKyAgICAgICAg
YXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnSW52YWxpZFN0YXRlRXJyb3InfSwgZnVuY3Rpb24gKCkg
eyBpbnN0YW5jZS5jbG9uZU5vZGUoZmFsc2UpOyB9KTsKKyAgICB9KTsKK30sICdVcGdyYWRpbmcg
YSBjdXN0b20gZWxlbWVudCBtdXN0IHRocm93IEludmFsaWRTdGF0ZUVycm9yIHdoZW4gdGhlIGN1
c3RvbSBlbGVtZW50XCdzIGNvbnN0cnVjdG9yIHJldHVybnMgYW5vdGhlciBlbGVtZW50Jyk7CisK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273075</attachid>
            <date>2016-03-05 01:12:07 -0800</date>
            <delta_ts>2016-03-05 01:27:28 -0800</delta_ts>
            <desc>Fix GTK/EFL builds</desc>
            <filename>bug-155062-20160305011152.patch</filename>
            <type>text/plain</type>
            <size>34209</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzYxMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDE2LTAzLTA1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCB0aGUgc3VwcG9ydCBmb3Ig
dXBncmFkaW5nIGN1c3RvbSBlbGVtZW50cyBpbiBjbG9uZU5vZGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTA2MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBodHRwczovL3czYy5naXRo
dWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL2N1c3RvbS8jdXBncmFkaW5nIGFuZCBzdGVwcyA2IHRo
cm91Z2ggMTEgaW4KKyAgICAgICAgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmNvbXBvbmVudHMv
c3BlYy9jdXN0b20vI2h0bWxlbGVtZW50LWNvbnN0cnVjdG9yIHRvIHN1cHBvcnQgdXBncmFkaW5n
IGVsZW1lbnRzCisgICAgICAgIGNyZWF0ZWQgYnkgTm9kZS5wcm90b3R5cGUuY2xvbmVOb2RlLgor
CisgICAgICAgIFRlc3RzOiBmYXN0L2N1c3RvbS1lbGVtZW50cy9saWZlY3ljbGUtY2FsbGJhY2st
dGltaW5nLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3VzdG9tLWVsZW1lbnRzL3VwZ3JhZGlu
Zy9Ob2RlLWNsb25lTm9kZS5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbUVs
ZW1lbnRJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21FbGVtZW50SW50
ZXJmYWNlOjp1cGdyYWRlRWxlbWVudCk6IEFkZGVkLiBJbXBsZW1lbnRzCisgICAgICAgICBodHRw
czovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL2N1c3RvbS8jZGZuLXVwZ3JhZGUt
YS1jdXN0b20tZWxlbWVudAorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21FbGVtZW50SW50ZXJm
YWNlOjpkaWRVcGdyYWRlTGFzdEVsZW1lbnRJbkNvbnN0cnVjdGlvblN0YWNrKTogQWRkZWQuIElt
cGxlbWVudHMgc3RlcCAxMAorICAgICAgICAgIlJlcGxhY2UgdGhlIGxhc3QgZW50cnkgaW4gZGVm
aW5pdGlvbidzIGNvbnN0cnVjdGlvbiBzdGFja2Egd2l0aCBhbiBhbHJlYWR5IGNvbnN0cnVjdGVk
IG1hcmtlci4iCisgICAgICAgICBpbiBodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50
cy9zcGVjL2N1c3RvbS8jZG9tLWh0bWxlbGVtZW50LWNvbnN0cnVjdG9yCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpK
U0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmlzVXBncmFkaW5nRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6Omxhc3RFbGVtZW50SW5Db25zdHJ1Y3Rp
b25TdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UpOiBB
ZGRlZCBtX2NvbnN0cnVjdGlvblN0YWNrLiBUaGlzIGlzIHRoZSBjb25zdHJ1Y3Rpb24gc3RhY2s6
CisgICAgICAgICBodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL2N1c3Rv
bS8jZGZuLWVsZW1lbnQtZGVmaW5pdGlvbi1jb25zdHJ1Y3Rpb24tc3RhY2sKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGhyb3dJbnZh
bGlkU3RhdGVFcnJvcik6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNIVE1MRWxlbWVudCk6IEltcGxlbWVudCB0aGUgdXBn
cmFkaW5nIGNhc2UgaW46CisgICAgICAgICBodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9u
ZW50cy9zcGVjL2N1c3RvbS8jaHRtbGVsZW1lbnQtY29uc3RydWN0b3IKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRmFsbGJhY2tIVE1MRWxlbWVu
dCk6IEFkZGVkLiBFbnF1ZXVlcyB1cGdyYWRlcyBvZiBjdXN0b20gZWxlbWVudHMgKGVucXVldWVF
bGVtZW50VXBncmFkZQorICAgICAgICAgY3VycmVudGx5IGRvZXMgbm90aGluZyBpZiB0aGVyZSBp
cyBubyBJbnZva2VzQ3VzdG9tRWxlbWVudExpZmVjeWNsZUNhbGxiYWNrczsgZS5nLiBpbiBvdGhl
ciBET00gQVBJcykuCisgICAgICAgICBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgaHR0cHM6Ly93
M2MuZ2l0aHViLmlvL3dlYmNvbXBvbmVudHMvc3BlYy9jdXN0b20vI2Rmbi1lbGVtZW50LXVwZ3Jh
ZGUtYWxnb3JpdGhtCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlRWxlbWVudCk6
CisgICAgICAgICogZG9tL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGlmZWN5Y2xlUXVldWVJdGVtOjpMaWZlY3ljbGVRdWV1ZUl0ZW0pOiBBZGRlZCBhIGdl
bmVyaWMgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpMaWZlY3ljbGVRdWV1ZUl0ZW06
Omludm9rZSk6IENhbGwgdXBncmFkZUVsZW1lbnQgd2hlbiBtX3R5cGUgaXMgVHlwZTo6RWxlbWVu
dFVwZ3JhZGUuCisgICAgICAgIChXZWJDb3JlOjpMaWZlY3ljbGVDYWxsYmFja1F1ZXVlOjplbnF1
ZXVlRWxlbWVudFVwZ3JhZGUpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vTGlmZWN5Y2xlQ2FsbGJh
Y2tRdWV1ZS5oOgorICAgICAgICAqIGRvbS9Ob2RlLmlkbDogQWRkZWQgSW52b2tlc0N1c3RvbUVs
ZW1lbnRMaWZlY3ljbGVDYWxsYmFja3Mgb24gY2xvbmVOb2RlLgorICAgICAgICAqIGRvbS9tYWtl
X25hbWVzLnBsOgorICAgICAgICAocHJpbnRGYWN0b3J5Q3BwRmlsZSk6IEFkZGVkIGEgdmFyaWFu
dCBvZiBjcmVhdGVLbm93bkVsZW1lbnQgd2hpY2ggdGFrZXMgUXVhbGlmaWVkTmFtZS4gQWxzbyBk
aXJlY3RseSBjYWxsCisgICAgICAgICBmaW5kKEhUTUx8U1ZHfE1hdGhNTClFbGVtZW50Q29uc3Ry
dWN0b3JGdW5jdGlvbiBpbiBjcmVhdGVFbGVtZW50IHRoYXQgdGFrZXMgQXRvbWljU3RyaW5nIHRv
IGF2b2lkIGFuIGV4dHJhCisgICAgICAgICBmdW5jdGlvbiBjYWxsLgorICAgICAgICAocHJpbnRG
YWN0b3J5SGVhZGVyRmlsZSk6IEFkZGVkIGEgZnVuY3Rpb24gZGVjbGFyYXRpb24gZm9yIGNyZWF0
ZUtub3duRWxlbWVudCB0aGF0IHRha2VzIFF1YWxpZmllZE5hbWUgYW5kCisgICAgICAgICBvdXRk
ZW50ZWQgY2xhc3MgYW5kIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyB0byBtYXRjaCB0aGUgbW9kZXJu
IGNvZGUgc3R5bGUgZ3VpZGVsaW5lLgorCiAyMDE2LTAzLTA1ICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCB0aGUgYmluZGluZ3MgdGVzdCBhZnRlciByMTk3
NjExLgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50
ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1
c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAxOTc2MTMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDIsNiArMTAyLDU0IEBAIFJlZlB0cjxFbGVtZW50PiBKU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UKICAgICByZXR1cm4gd3JhcHBlZEVsZW1lbnQ7CiB9CiAKK3ZvaWQgSlNDdXN0b21F
bGVtZW50SW50ZXJmYWNlOjp1cGdyYWRlRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQoreworICAg
IEFTU0VSVChlbGVtZW50LmlzQ3VzdG9tRWxlbWVudCgpKTsKKyAgICBpZiAoIWNhbkludm9rZUNh
bGxiYWNrKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZjxKU0N1c3RvbUVsZW1lbnRJbnRl
cmZhY2U+IHByb3RlY3QoKnRoaXMpOworICAgIEpTTG9ja0hvbGRlciBsb2NrKG1faXNvbGF0ZWRX
b3JsZC0+dm0oKSk7CisKKyAgICBpZiAoIW1fY29uc3RydWN0b3IpCisgICAgICAgIHJldHVybjsK
KworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJU
KGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CisgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IHRvSlNET01HbG9iYWxPYmplY3QoY29udGV4dCwgKm1faXNvbGF0ZWRXb3JsZCk7Cisg
ICAgRXhlY1N0YXRlKiBzdGF0ZSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIGlm
IChzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENvbnN0cnVj
dERhdGEgY29uc3RydWN0RGF0YTsKKyAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBt
X2NvbnN0cnVjdG9yLT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRhKG1fY29uc3RydWN0
b3IuZ2V0KCksIGNvbnN0cnVjdERhdGEpOworICAgIGlmIChjb25zdHJ1Y3RUeXBlID09IENvbnN0
cnVjdFR5cGVOb25lKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgbV9jb25zdHJ1Y3Rpb25TdGFjay5hcHBlbmQoJmVsZW1lbnQp
OworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUgY29va2llID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjppbnN0cnVtZW50
RnVuY3Rpb25Db25zdHJ1Y3QoY29udGV4dCwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSk7
CisgICAgSlNWYWx1ZSByZXR1cm5lZEVsZW1lbnQgPSBjb25zdHJ1Y3Qoc3RhdGUsIG1fY29uc3Ry
dWN0b3IuZ2V0KCksIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3MpOworICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKGNvb2tpZSwgY29udGV4dCk7
CisKKyAgICBtX2NvbnN0cnVjdGlvblN0YWNrLnJlbW92ZUxhc3QoKTsKKworICAgIGlmIChzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEVsZW1lbnQqIHdyYXBw
ZWRFbGVtZW50ID0gSlNFbGVtZW50Ojp0b1dyYXBwZWQocmV0dXJuZWRFbGVtZW50KTsKKyAgICBp
ZiAoIXdyYXBwZWRFbGVtZW50IHx8IHdyYXBwZWRFbGVtZW50ICE9ICZlbGVtZW50KSB7CisgICAg
ICAgIHRocm93SW52YWxpZFN0YXRlRXJyb3IoKnN0YXRlLCAiQ3VzdG9tIGVsZW1lbnQgY29uc3Ry
dWN0b3IgZmFpbGVkIHRvIHVwZ3JhZGUgYW4gZWxlbWVudCIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIEFTU0VSVCh3cmFwcGVkRWxlbWVudC0+aXNDdXN0b21FbGVtZW50KCkpOworfQor
CiB2b2lkIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6YXR0cmlidXRlQ2hhbmdlZChFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQogewogICAg
IGlmICghY2FuSW52b2tlQ2FsbGJhY2soKSkKQEAgLTE0NSw2ICsxOTMsMTEgQEAgdm9pZCBKU0N1
c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmF0dHJpYnV0ZQogICAgIGlmIChleGNlcHRpb24pCiAgICAg
ICAgIHJlcG9ydEV4Y2VwdGlvbihzdGF0ZSwgZXhjZXB0aW9uKTsKIH0KKyAgICAKK3ZvaWQgSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlOjpkaWRVcGdyYWRlTGFzdEVsZW1lbnRJbkNvbnN0cnVjdGlv
blN0YWNrKCkKK3sKKyAgICBtX2NvbnN0cnVjdGlvblN0YWNrLmxhc3QoKSA9IG51bGxwdHI7Cit9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmgJKHJldmlzaW9uIDE5
NzYxMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVy
ZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw4IEBAIHB1YmxpYzoKICAgICBlbnVt
IGNsYXNzIFNob3VsZENsZWFyRXhjZXB0aW9uIHsgQ2xlYXIsIERvTm90Q2xlYXIgfTsKICAgICBS
ZWZQdHI8RWxlbWVudD4gY29uc3RydWN0RWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmLCBTaG91
bGRDbGVhckV4Y2VwdGlvbik7CiAKKyAgICB2b2lkIHVwZ3JhZGVFbGVtZW50KEVsZW1lbnQmKTsK
KwogICAgIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChFbGVtZW50JiwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3
VmFsdWUpOwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0IHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7IH0KQEAgLTcwLDYgKzcyLDEwIEBAIHB1YmxpYzoKIAogICAgIGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KIAorICAg
IGJvb2wgaXNVcGdyYWRpbmdFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gIW1fY29uc3RydWN0aW9u
U3RhY2suaXNFbXB0eSgpOyB9CisgICAgRWxlbWVudCogbGFzdEVsZW1lbnRJbkNvbnN0cnVjdGlv
blN0YWNrKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJ1Y3Rpb25TdGFjay5sYXN0KCkuZ2V0KCk7
IH0KKyAgICB2b2lkIGRpZFVwZ3JhZGVMYXN0RWxlbWVudEluQ29uc3RydWN0aW9uU3RhY2soKTsK
KwogICAgIHZpcnR1YWwgfkpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSgpOwogCiBwcml2YXRlOgpA
QCAtNzgsNiArODQsNyBAQCBwcml2YXRlOgogICAgIFF1YWxpZmllZE5hbWUgbV9uYW1lOwogICAg
IG11dGFibGUgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IG1fY29uc3RydWN0b3I7CiAgICAgUmVm
UHRyPERPTVdyYXBwZXJXb3JsZD4gbV9pc29sYXRlZFdvcmxkOworICAgIFZlY3RvcjxSZWZQdHI8
RWxlbWVudD4sIDE+IG1fY29uc3RydWN0aW9uU3RhY2s7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5j
cHAJKHJldmlzaW9uIDE5NzYxMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0Miw2ICs2NDIsMTMgQEAgdm9pZCB0aHJv
d05vdFN1cHBvcnRlZEVycm9yKEpTQzo6RXhlY1N0YQogICAgIHN0YXRlLnZtKCkudGhyb3dFeGNl
cHRpb24oJnN0YXRlLCBjcmVhdGVET01FeGNlcHRpb24oJnN0YXRlLCBOT1RfU1VQUE9SVEVEX0VS
UiwgJm1lc3NhZ2VTdHJpbmcpKTsKIH0KIAordm9pZCB0aHJvd0ludmFsaWRTdGF0ZUVycm9yKEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hhciogbWVzc2FnZSkKK3sKKyAgICBBU1NFUlQo
IXN0YXRlLmhhZEV4Y2VwdGlvbigpKTsKKyAgICBTdHJpbmcgbWVzc2FnZVN0cmluZyhtZXNzYWdl
KTsKKyAgICBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlRE9NRXhjZXB0
aW9uKCZzdGF0ZSwgSU5WQUxJRF9TVEFURV9FUlIsICZtZXNzYWdlU3RyaW5nKSk7Cit9CisKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcihKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50
TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5j
dGlvbk5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVmFsdWVzKQogewogICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oCShyZXZpc2lvbiAxOTc2MTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsNyBAQCBXRUJDT1JFX0VYUE9S
VCBKU0M6OkVuY29kZWRKU1ZhbHVlIHJlcG9yCiBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcG9ydERl
cHJlY2F0ZWRTZXR0ZXJFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIGludGVyZmFj
ZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpOwogCiB2b2lkIHRocm93Tm90U3VwcG9y
dGVkRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKK3ZvaWQgdGhy
b3dJbnZhbGlkU3RhdGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIG1lc3NhZ2Up
Owogdm9pZCB0aHJvd0FycmF5RWxlbWVudFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYpOwogdm9p
ZCB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIGlu
dGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IGNoYXIqIGV4cGVj
dGVkVHlwZSk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoSlND
OjpFeGVjU3RhdGUmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVs
ZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTEVsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAxOTc2MTMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnREZWZpbml0aW9ucy5oIgog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCisjaW5j
bHVkZSAiSlNOb2RlQ3VzdG9tLmgiCiAjaW5jbHVkZSA8cnVudGltZS9JbnRlcm5hbEZ1bmN0aW9u
Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU1dpdGhTY29wZS5oPgogCkBAIC01NywxNiArNTgsNDAg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKUwogICAgIGlmICghaW50
ZXJmYWNlKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgIm5ldy50YXJn
ZXQgZG9lcyBub3QgZGVmaW5lIGEgY3VzdG9tIGVsZW1lbnQiKTsKIAotICAgIGF1dG8qIGdsb2Jh
bE9iamVjdCA9IGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpOwotICAgIFN0cnVjdHVyZSog
YmFzZVN0cnVjdHVyZSA9IGdldERPTVN0cnVjdHVyZTxKU0hUTUxFbGVtZW50Pih2bSwgKmdsb2Jh
bE9iamVjdCk7Ci0gICAgYXV0byogbmV3RWxlbWVudFN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rp
b246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKHN0YXRlLCBuZXdUYXJnZXRWYWx1ZSwgYmFzZVN0
cnVjdHVyZSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCisgICAg
aWYgKCFpbnRlcmZhY2UtPmlzVXBncmFkaW5nRWxlbWVudCgpKSB7CisgICAgICAgIGF1dG8qIGds
b2JhbE9iamVjdCA9IGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpOworICAgICAgICBTdHJ1
Y3R1cmUqIGJhc2VTdHJ1Y3R1cmUgPSBnZXRET01TdHJ1Y3R1cmU8SlNIVE1MRWxlbWVudD4odm0s
ICpnbG9iYWxPYmplY3QpOworICAgICAgICBhdXRvKiBuZXdFbGVtZW50U3RydWN0dXJlID0gSW50
ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoc3RhdGUsIG5ld1RhcmdldFZh
bHVlLCBiYXNlU3RydWN0dXJlKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworCisgICAgICAgIFJlZjxIVE1MRWxlbWVudD4gZWxlbWVudCA9IEhUTUxFbGVtZW50Ojpj
cmVhdGUoaW50ZXJmYWNlLT5uYW1lKCksIGRvY3VtZW50KTsKKyAgICAgICAgYXV0byoganNFbGVt
ZW50ID0gSlNIVE1MRWxlbWVudDo6Y3JlYXRlKG5ld0VsZW1lbnRTdHJ1Y3R1cmUsIGdsb2JhbE9i
amVjdCwgZWxlbWVudC5nZXQoKSk7CisgICAgICAgIGNhY2hlV3JhcHBlcihnbG9iYWxPYmplY3Qt
PndvcmxkKCksIGVsZW1lbnQucHRyKCksIGpzRWxlbWVudCk7CisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNFbGVtZW50KTsKKyAgICB9CisKKyAgICBFbGVtZW50KiBlbGVtZW50VG9V
cGdyYWRlID0gaW50ZXJmYWNlLT5sYXN0RWxlbWVudEluQ29uc3RydWN0aW9uU3RhY2soKTsKKyAg
ICBpZiAoIWVsZW1lbnRUb1VwZ3JhZGUpIHsKKyAgICAgICAgdGhyb3dJbnZhbGlkU3RhdGVFcnJv
cigqc3RhdGUsICJDYW5ub3QgaW5zdGFudGlhdGUgYSBjdXN0b20gZWxlbWVudCBpbnNpZGUgaXRz
IG93biBjb25zdHJjdXRvciBkdXJpbmcgdXBncmFkZXMiKTsKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICB9CiAKLSAgICBSZWY8SFRNTEVsZW1lbnQ+
IGVsZW1lbnQgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKGludGVyZmFjZS0+bmFtZSgpLCBkb2N1bWVu
dCk7Ci0gICAgYXV0byoganNFbGVtZW50ID0gSlNIVE1MRWxlbWVudDo6Y3JlYXRlKG5ld0VsZW1l
bnRTdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgZWxlbWVudC5nZXQoKSk7Ci0gICAgY2FjaGVXcmFw
cGVyKGdsb2JhbE9iamVjdC0+d29ybGQoKSwgZWxlbWVudC5wdHIoKSwganNFbGVtZW50KTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRWxlbWVudCk7CisgICAgSlNWYWx1ZSBlbGVtZW50
V3JhcHBlclZhbHVlID0gdG9KUyhzdGF0ZSwganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCks
IGVsZW1lbnRUb1VwZ3JhZGUpOworICAgIEFTU0VSVChlbGVtZW50V3JhcHBlclZhbHVlLmlzT2Jq
ZWN0KCkpOworCisgICAgSlNWYWx1ZSBuZXdQcm90b3R5cGUgPSBuZXdUYXJnZXQtPmdldChzdGF0
ZSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKKyAgICBpZiAoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwor
CisgICAgSlNPYmplY3QqIGVsZW1lbnRXcmFwcGVyT2JqZWN0ID0gYXNPYmplY3QoZWxlbWVudFdy
YXBwZXJWYWx1ZSk7CisgICAgSlNPYmplY3Q6OnNldFByb3RvdHlwZShlbGVtZW50V3JhcHBlck9i
amVjdCwgc3RhdGUsIG5ld1Byb3RvdHlwZSwgdHJ1ZSAvKiBzaG91bGRUaHJvd0lmQ2FudFNldCAq
Lyk7CisgICAgaWYgKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIGludGVyZmFjZS0+ZGlkVXBncmFkZUxh
c3RFbGVtZW50SW5Db25zdHJ1Y3Rpb25TdGFjaygpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShlbGVtZW50V3JhcHBlclZhbHVlKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAJKHJldmlzaW9uIDE5NzYxMykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw2ICsxMDMsNyBAQAogI2luY2x1ZGUgIkpT
TW9kdWxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIkxh
bmd1YWdlLmgiCisjaW5jbHVkZSAiTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5oIgogI2luY2x1ZGUg
IkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1haW5G
cmFtZS5oIgpAQCAtMTA3MiwxNSArMTA3MywzMyBAQCBib29sIERvY3VtZW50OjpoYXNWYWxpZE5h
bWVzcGFjZUZvckF0dHJpCiAgICAgcmV0dXJuIGhhc1ZhbGlkTmFtZXNwYWNlRm9yRWxlbWVudHMo
cU5hbWUpOwogfQogCitzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBjcmVhdGVGYWxsYmFja0hUTUxF
bGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKK3sK
KyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorICAgIGF1dG8qIGRlZmluaXRpb25zID0gZG9j
dW1lbnQuY3VzdG9tRWxlbWVudERlZmluaXRpb25zKCk7CisgICAgaWYgKFVOTElLRUxZKGRlZmlu
aXRpb25zKSkgeworICAgICAgICBpZiAoYXV0byogaW50ZXJmYWNlID0gZGVmaW5pdGlvbnMtPmZp
bmRJbnRlcmZhY2UobmFtZSkpIHsKKyAgICAgICAgICAgIFJlZjxIVE1MRWxlbWVudD4gZWxlbWVu
dCA9IEhUTUxFbGVtZW50OjpjcmVhdGUobmFtZSwgZG9jdW1lbnQpOworICAgICAgICAgICAgZWxl
bWVudC0+c2V0SXNDdXN0b21FbGVtZW50KCk7IC8vIFByZS11cGdyYWRlIGVsZW1lbnQgaXMgc3Rp
bGwgY29uc2lkZXJlZCBhIGN1c3RvbSBlbGVtZW50LgorICAgICAgICAgICAgTGlmZWN5Y2xlQ2Fs
bGJhY2tRdWV1ZTo6ZW5xdWV1ZUVsZW1lbnRVcGdyYWRlKGVsZW1lbnQuZ2V0KCksICppbnRlcmZh
Y2UpOworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0KKyAgICB9CisjZW5k
aWYKKyAgICByZXR1cm4gSFRNTFVua25vd25FbGVtZW50OjpjcmVhdGUobmFtZSwgZG9jdW1lbnQp
OworfQorCiAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmVhbGx5IGJlIGluIGEgcG9zc2libGUgRWxl
bWVudEZhY3RvcnkgY2xhc3MuCiBSZWY8RWxlbWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCiB7CiAgICAg
UmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQ7CiAKICAgICAvLyBGSVhNRTogVXNlIHJlZ2lzdGVyZWQg
bmFtZXNwYWNlcyBhbmQgbG9vayB1cCBpbiBhIGhhc2ggdG8gZmluZCB0aGUgcmlnaHQgZmFjdG9y
eS4KLSAgICBpZiAobmFtZS5uYW1lc3BhY2VVUkkoKSA9PSB4aHRtbE5hbWVzcGFjZVVSSSkKLSAg
ICAgICAgZWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlRWxlbWVudChuYW1lLCAq
dGhpcywgbnVsbHB0ciwgY3JlYXRlZEJ5UGFyc2VyKTsKLSAgICBlbHNlIGlmIChuYW1lLm5hbWVz
cGFjZVVSSSgpID09IFNWR05hbWVzOjpzdmdOYW1lc3BhY2VVUkkpCisgICAgaWYgKG5hbWUubmFt
ZXNwYWNlVVJJKCkgPT0geGh0bWxOYW1lc3BhY2VVUkkpIHsKKyAgICAgICAgZWxlbWVudCA9IEhU
TUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlS25vd25FbGVtZW50KG5hbWUsICp0aGlzLCBudWxscHRy
LCBjcmVhdGVkQnlQYXJzZXIpOworICAgICAgICBpZiAoVU5MSUtFTFkoIWVsZW1lbnQpKQorICAg
ICAgICAgICAgZWxlbWVudCA9IGNyZWF0ZUZhbGxiYWNrSFRNTEVsZW1lbnQoKnRoaXMsIG5hbWUp
OworICAgIH0gZWxzZSBpZiAobmFtZS5uYW1lc3BhY2VVUkkoKSA9PSBTVkdOYW1lczo6c3ZnTmFt
ZXNwYWNlVVJJKQogICAgICAgICBlbGVtZW50ID0gU1ZHRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUVs
ZW1lbnQobmFtZSwgKnRoaXMsIGNyZWF0ZWRCeVBhcnNlcik7CiAjaWYgRU5BQkxFKE1BVEhNTCkK
ICAgICBlbHNlIGlmIChuYW1lLm5hbWVzcGFjZVVSSSgpID09IE1hdGhNTE5hbWVzOjptYXRobWxO
YW1lc3BhY2VVUkkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTGlmZWN5Y2xlQ2FsbGJhY2tR
dWV1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0xpZmVjeWNsZUNhbGxi
YWNrUXVldWUuY3BwCShyZXZpc2lvbiAxOTc2MTMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTGlm
ZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDkgKzQwLDE3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExpZmVjeWNsZVF1ZXVlSXRlbSB7CiBwdWJsaWM6
CiAgICAgZW51bSBjbGFzcyBUeXBlIHsKKyAgICAgICAgRWxlbWVudFVwZ3JhZGUsCiAgICAgICAg
IEF0dHJpYnV0ZUNoYW5nZWQsCiAgICAgfTsKIAorICAgIExpZmVjeWNsZVF1ZXVlSXRlbShUeXBl
IHR5cGUsIEVsZW1lbnQmIGVsZW1lbnQsIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSYgaW50ZXJm
YWNlKQorICAgICAgICA6IG1fdHlwZSh0eXBlKQorICAgICAgICAsIG1fZWxlbWVudChlbGVtZW50
KQorICAgICAgICAsIG1faW50ZXJmYWNlKGludGVyZmFjZSkKKyAgICAgICAgLCBtX2F0dHJpYnV0
ZU5hbWUobnVsbFFOYW1lKCkpCisgICAgeyB9CisKICAgICBMaWZlY3ljbGVRdWV1ZUl0ZW0oRWxl
bWVudCYgZWxlbWVudCwgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlJiBpbnRlcmZhY2UsIGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFs
dWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCiAgICAgICAgIDogbV90eXBlKFR5cGU6
OkF0dHJpYnV0ZUNoYW5nZWQpCiAgICAgICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCkBAIC01NCw3
ICs2MiwxNCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGludm9rZSgpCiAgICAgewotICAgICAgICBt
X2ludGVyZmFjZS0+YXR0cmlidXRlQ2hhbmdlZChtX2VsZW1lbnQuZ2V0KCksIG1fYXR0cmlidXRl
TmFtZSwgbV9vbGRWYWx1ZSwgbV9uZXdWYWx1ZSk7CisgICAgICAgIHN3aXRjaCAobV90eXBlKSB7
CisgICAgICAgIGNhc2UgVHlwZTo6RWxlbWVudFVwZ3JhZGU6CisgICAgICAgICAgICBtX2ludGVy
ZmFjZS0+dXBncmFkZUVsZW1lbnQobV9lbGVtZW50LmdldCgpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFR5cGU6OkF0dHJpYnV0ZUNoYW5nZWQ6CisgICAgICAgICAgICBtX2lu
dGVyZmFjZS0+YXR0cmlidXRlQ2hhbmdlZChtX2VsZW1lbnQuZ2V0KCksIG1fYXR0cmlidXRlTmFt
ZSwgbV9vbGRWYWx1ZSwgbV9uZXdWYWx1ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQogICAgIH0KIAogcHJpdmF0ZToKQEAgLTc0LDYgKzg5LDEyIEBAIExpZmVjeWNsZUNhbGxiYWNr
UXVldWU6On5MaWZlY3ljbGVDYWxsYmEKICAgICBBU1NFUlQobV9pdGVtcy5pc0VtcHR5KCkpOwog
fQogCit2b2lkIExpZmVjeWNsZUNhbGxiYWNrUXVldWU6OmVucXVldWVFbGVtZW50VXBncmFkZShF
bGVtZW50JiBlbGVtZW50LCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UmIGludGVyZmFjZSkKK3sK
KyAgICBpZiAoYXV0byogcXVldWUgPSBDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0
YWNrOjplbnN1cmVDdXJyZW50UXVldWUoKSkKKyAgICAgICAgcXVldWUtPm1faXRlbXMuYXBwZW5k
KExpZmVjeWNsZVF1ZXVlSXRlbShMaWZlY3ljbGVRdWV1ZUl0ZW06OlR5cGU6OkVsZW1lbnRVcGdy
YWRlLCBlbGVtZW50LCBpbnRlcmZhY2UpKTsKK30KKwogdm9pZCBMaWZlY3ljbGVDYWxsYmFja1F1
ZXVlOjplbnF1ZXVlQXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKEVsZW1lbnQmIGVsZW1lbnQsIEpT
Q3VzdG9tRWxlbWVudEludGVyZmFjZSYgaW50ZXJmYWNlLAogICAgIGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgbmV3VmFsdWUpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTGlmZWN5
Y2xlQ2FsbGJhY2tRdWV1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9MaWZl
Y3ljbGVDYWxsYmFja1F1ZXVlLmgJKHJldmlzaW9uIDE5NzYxMykKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9MaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3
LDggQEAgcHVibGljOgogICAgIExpZmVjeWNsZUNhbGxiYWNrUXVldWUoKTsKICAgICB+TGlmZWN5
Y2xlQ2FsbGJhY2tRdWV1ZSgpOwogCisgICAgc3RhdGljIHZvaWQgZW5xdWV1ZUVsZW1lbnRVcGdy
YWRlKEVsZW1lbnQmLCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UmKTsKKwogICAgIHN0YXRpYyB2
b2lkIGVucXVldWVBdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2soRWxlbWVudCYsIEpTQ3VzdG9tRWxl
bWVudEludGVyZmFjZSYsCiAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmlkbAkocmV2aXNpb24gMTk3NjEzKQorKysgU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCwxMCBAQAogICAgIFtDdXN0b20s
IFJhaXNlc0V4Y2VwdGlvbl0gTm9kZSBhcHBlbmRDaGlsZChbQ3VzdG9tUmV0dXJuXSBOb2RlIG5l
d0NoaWxkKTsKIAogICAgIGJvb2xlYW4gICAgICAgICAgICBoYXNDaGlsZE5vZGVzKCk7Ci0gICAg
W05ld09iamVjdCwgUmFpc2VzRXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFzPWNsb25lTm9kZUZvckJp
bmRpbmdzXSBOb2RlIGNsb25lTm9kZShbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGJvb2xl
YW4gZGVlcCk7CisKKyAgICBbTmV3T2JqZWN0LCBSYWlzZXNFeGNlcHRpb24sIEltcGxlbWVudGVk
QXM9Y2xvbmVOb2RlRm9yQmluZGluZ3MsIEludm9rZXNDdXN0b21FbGVtZW50TGlmZWN5Y2xlQ2Fs
bGJhY2tzXQorICAgIE5vZGUgY2xvbmVOb2RlKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwg
Ym9vbGVhbiBkZWVwKTsKKwogICAgIHZvaWQgICAgICAgICAgICAgICBub3JtYWxpemUoKTsKIAog
ICAgIC8vIEludHJvZHVjZWQgaW4gRE9NIExldmVsIDI6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vbWFrZV9uYW1lcy5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9u
YW1lcy5wbAkocmV2aXNpb24gMTk3NjEzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFt
ZXMucGwJKHdvcmtpbmcgY29weSkKQEAgLTEwNDcsMTIgKzEwNDcsMjMgQEAgUmVmUHRyPCRwYXJh
bWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PiAkcAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1S
ZWY8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+ICRwYXJhbWV0ZXJze25hbWVzcGFjZX1F
bGVtZW50RmFjdG9yeTo6Y3JlYXRlRWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIERv
Y3VtZW50JiBkb2N1bWVudCRmb3JtRWxlbWVudEFyZ3VtZW50Rm9yRGVmaW5pdGlvbiwgYm9vbCBj
cmVhdGVkQnlQYXJzZXIpCitSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+ICRw
YXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50RmFjdG9yeTo6Y3JlYXRlS25vd25FbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIERvY3VtZW50JiBkb2N1bWVudCRmb3JtRWxlbWVudEFy
Z3VtZW50Rm9yRGVmaW5pdGlvbiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCiB7Ci0gICAgUmVmUHRy
PCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PiBlbGVtZW50ID0gJHBhcmFtZXRlcnN7bmFt
ZXNwYWNlfUVsZW1lbnRGYWN0b3J5OjpjcmVhdGVLbm93bkVsZW1lbnQoJGFyZ3VtZW50TGlzdCk7
Ci0gICAgaWYgKExJS0VMWShlbGVtZW50KSkKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQucmVsZWFz
ZU5vbk51bGwoKTsKLSAgICByZXR1cm4gJHBhcmFtZXRlcnN7ZmFsbGJhY2tJbnRlcmZhY2VOYW1l
fTo6Y3JlYXRlKFF1YWxpZmllZE5hbWUobnVsbEF0b20sIG5hbWUsICR7bG93ZXJjYXNlTmFtZXNw
YWNlUHJlZml4fU5hbWVzcGFjZVVSSSksIGRvY3VtZW50KTsKKyAgICBjb25zdCBDb25zdHJ1Y3Rv
ckZ1bmN0aW9uTWFwRW50cnkmIGVudHJ5ID0gZmluZCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVt
ZW50Q29uc3RydWN0b3JGdW5jdGlvbihuYW1lLmxvY2FsTmFtZSgpKTsKKyAgICBpZiAoTElLRUxZ
KGVudHJ5LmZ1bmN0aW9uKSkKKyAgICAgICAgcmV0dXJuIGVudHJ5LmZ1bmN0aW9uKCRhcmd1bWVu
dExpc3QpOworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWY8JHBhcmFtZXRlcnN7bmFtZXNw
YWNlfUVsZW1lbnQ+ICRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50RmFjdG9yeTo6Y3JlYXRl
RWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50
JGZvcm1FbGVtZW50QXJndW1lbnRGb3JEZWZpbml0aW9uLCBib29sIGNyZWF0ZWRCeVBhcnNlcikK
K3sKKyAgICBjb25zdCBDb25zdHJ1Y3RvckZ1bmN0aW9uTWFwRW50cnkmIGVudHJ5ID0gZmluZCRw
YXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50Q29uc3RydWN0b3JGdW5jdGlvbihsb2NhbE5hbWUp
OworICAgIGlmIChMSUtFTFkoZW50cnkuZnVuY3Rpb24pKSB7CisgICAgICAgIEFTU0VSVChlbnRy
eS5xdWFsaWZpZWROYW1lKTsKKyAgICAgICAgY29uc3QgYXV0byYgbmFtZSA9ICplbnRyeS5xdWFs
aWZpZWROYW1lOworICAgICAgICByZXR1cm4gZW50cnkuZnVuY3Rpb24oJGFyZ3VtZW50TGlzdCk7
CisgICAgfQorICAgIHJldHVybiAkcGFyYW1ldGVyc3tmYWxsYmFja0ludGVyZmFjZU5hbWV9Ojpj
cmVhdGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbG9jYWxOYW1lLCAke2xvd2VyY2FzZU5hbWVz
cGFjZVByZWZpeH1OYW1lc3BhY2VVUkkpLCBkb2N1bWVudCk7CiB9CiAKIFJlZjwkcGFyYW1ldGVy
c3tuYW1lc3BhY2V9RWxlbWVudD4gJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRGYWN0b3J5
OjpjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIERvY3VtZW50JiBkb2N1
bWVudCRmb3JtRWxlbWVudEFyZ3VtZW50Rm9yRGVmaW5pdGlvbiwgYm9vbCBjcmVhdGVkQnlQYXJz
ZXIpCkBAIC0xMDg5LDI5ICsxMTAwLDM2IEBAIHN1YiBwcmludEZhY3RvcnlIZWFkZXJGaWxlCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIERvY3VtZW50OwotICAgIGNsYXNzIEhU
TUxGb3JtRWxlbWVudDsKLSAgICBjbGFzcyBRdWFsaWZpZWROYW1lOworY2xhc3MgRG9jdW1lbnQ7
CitjbGFzcyBIVE1MRm9ybUVsZW1lbnQ7CitjbGFzcyBRdWFsaWZpZWROYW1lOwogCi0gICAgY2xh
c3MgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ7CitjbGFzcyAkcGFyYW1ldGVyc3tuYW1l
c3BhY2V9RWxlbWVudDsKIAotICAgIGNsYXNzICRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50
RmFjdG9yeSB7Ci0gICAgcHVibGljOgorY2xhc3MgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1l
bnRGYWN0b3J5IHsKK3B1YmxpYzoKIEVORAogOwogCi1wcmludCBGICIgICAgICAgIHN0YXRpYyBS
ZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+IGNyZWF0ZUtub3duRWxlbWVudChj
b25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgRG9jdW1lbnQmIjsKK3ByaW50IEYgInN0YXRp
YyBSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+IGNyZWF0ZUtub3duRWxlbWVu
dChjb25zdCBBdG9taWNTdHJpbmcmLCBEb2N1bWVudCYiOwogcHJpbnQgRiAiLCBIVE1MRm9ybUVs
ZW1lbnQqID0gbnVsbHB0ciIgaWYgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBlcSAiSFRNTCI7Ci1w
cmludCBGICIsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyID0gZmFsc2UpO1xuXG4iOwotcHJpbnQgRiAi
ICAgICAgICBzdGF0aWMgUmVmPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PiBjcmVhdGVF
bGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBEb2N1bWVudCYiOworcHJpbnQg
RiAiLCBib29sIGNyZWF0ZWRCeVBhcnNlciA9IGZhbHNlKTtcbiI7CisKK3ByaW50IEYgInN0YXRp
YyBSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+IGNyZWF0ZUtub3duRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmIjsKIHByaW50IEYgIiwgSFRNTEZvcm1F
bGVtZW50KiA9IG51bGxwdHIiIGlmICRwYXJhbWV0ZXJze25hbWVzcGFjZX0gZXEgIkhUTUwiOwog
cHJpbnQgRiAiLCBib29sIGNyZWF0ZWRCeVBhcnNlciA9IGZhbHNlKTtcbiI7Ci1wcmludCBGICIg
ICAgICAgIHN0YXRpYyBSZWY8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbG9jYWxOYW1lLCBEb2N1bWVudCYiOworCitwcmlu
dCBGICJzdGF0aWMgUmVmPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PiBjcmVhdGVFbGVt
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIERvY3VtZW50JiI7CitwcmludCBGICIsIEhUTUxGb3Jt
RWxlbWVudCogPSBudWxscHRyIiBpZiAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9IGVxICJIVE1MIjsK
K3ByaW50IEYgIiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIgPSBmYWxzZSk7XG4iOworCitwcmludCBG
ICJzdGF0aWMgUmVmPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PiBjcmVhdGVFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYiOwogcHJpbnQgRiAiLCBIVE1MRm9ybUVs
ZW1lbnQqID0gbnVsbHB0ciIgaWYgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBlcSAiSFRNTCI7CiBw
cmludCBGICIsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyID0gZmFsc2UpO1xuIjsKIAogcHJpbnRmIEY8
PEVORAotICAgIH07Cit9OworCiB9CiAKICNlbmRpZiAvLyAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9
RWxlbWVudEZhY3RvcnlfaApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3NjEzKQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMDMtMDUg
IFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHRoZSBzdXBw
b3J0IGZvciB1cGdyYWRpbmcgY3VzdG9tIGVsZW1lbnRzIGluIGNsb25lTm9kZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MDYyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGVzdCBjYXNlcyBm
b3IgdXBncmFkaW5nIGVsZW1lbnRzIHdpdGggTm9kZS5wcm90b3R5cGUuY2xvbmVOb2RlLgorCisg
ICAgICAgICogZmFzdC9jdXN0b20tZWxlbWVudHMvbGlmZWN5Y2xlLWNhbGxiYWNrLXRpbWluZy1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jdXN0b20tZWxlbWVudHMvbGlmZWN5Y2xlLWNh
bGxiYWNrLXRpbWluZy5odG1sOgorCiAyMDE2LTAzLTA0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBiYXNpYyBzdXBwb3J0IGZvciBhdHRyaWJ1dGVDaGFu
Z2VkIGxpZmVjeWNsZSBjYWxsYmFjawpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxl
bWVudHMvbGlmZWN5Y2xlLWNhbGxiYWNrLXRpbWluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvbGlmZWN5Y2xlLWNhbGxiYWNrLXRp
bWluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE5NzYxMykKKysrIExheW91dFRlc3RzL2Zhc3Qv
Y3VzdG9tLWVsZW1lbnRzL2xpZmVjeWNsZS1jYWxsYmFjay10aW1pbmctZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNCBAQAogCiBQQVNTIHNldEF0dHJpYnV0ZSBhbmQgcmVt
b3ZlQXR0cmlidXRlIG11c3QgZW5xdWV1ZSBhbmQgaW52b2tlIGF0dHJpYnV0ZUNoYW5nZWRDYWxs
YmFjayAKK1BBU1MgQ2FsbGluZyBOb2RlLnByb3RvdHlwZS5jbG9uZU5vZGUoZmFsc2UpIG11c3Qg
cHVzaCBhIG5ldyBlbGVtZW50IHF1ZXVlIHRvIHRoZSBwcm9jZXNzaW5nIHN0YWNrIAogCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9saWZlY3ljbGUtY2FsbGJhY2stdGlt
aW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMv
bGlmZWN5Y2xlLWNhbGxiYWNrLXRpbWluZy5odG1sCShyZXZpc2lvbiAxOTc2MTMpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9saWZlY3ljbGUtY2FsbGJhY2stdGltaW5nLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDQyIEBAIHRlc3QoZnVuY3Rpb24gKCkgewog
CiB9LCAnc2V0QXR0cmlidXRlIGFuZCByZW1vdmVBdHRyaWJ1dGUgbXVzdCBlbnF1ZXVlIGFuZCBp
bnZva2UgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrJyk7CiAKK3Rlc3QoZnVuY3Rpb24gKCkgewor
ICAgIHZhciBzaG91bGRDbG9uZUFub3RoZXJJbnN0YW5jZSA9IGZhbHNlOworICAgIHZhciBhbm90
aGVySW5zdGFuY2VDbG9uZTsKKyAgICB2YXIgbG9nID0gW107CisKKyAgICBjbGFzcyBTZWxmQ2xv
bmluZ0VsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7CisgICAgICAgIGNvbnN0cnVjdG9yKCkg
eworICAgICAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgICAgIGxvZy5wdXNoKFt0aGlzLCAnYmVn
aW4nXSk7CisgICAgICAgICAgICBpZiAoc2hvdWxkQ2xvbmVBbm90aGVySW5zdGFuY2UpIHsKKyAg
ICAgICAgICAgICAgICBzaG91bGRDbG9uZUFub3RoZXJJbnN0YW5jZSA9IGZhbHNlOworICAgICAg
ICAgICAgICAgIGFub3RoZXJJbnN0YW5jZUNsb25lID0gYW5vdGhlckluc3RhbmNlLmNsb25lTm9k
ZShmYWxzZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsb2cucHVzaChbdGhpcywgJ2Vu
ZCddKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBkb2N1bWVudC5kZWZpbmVFbGVtZW50KCdzZWxm
LWNsb25pbmctZWxlbWVudCcsIFNlbGZDbG9uaW5nRWxlbWVudCk7CisKKyAgICB2YXIgaW5zdGFu
Y2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzZWxmLWNsb25pbmctZWxlbWVudCcpOworICAg
IHZhciBhbm90aGVySW5zdGFuY2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzZWxmLWNsb25p
bmctZWxlbWVudCcpOworICAgIHNob3VsZENsb25lQW5vdGhlckluc3RhbmNlID0gdHJ1ZTsKKwor
ICAgIGFzc2VydF9lcXVhbHMobG9nLmxlbmd0aCwgNCk7CisgICAgdmFyIGluc3RhbmNlQ2xvbmUg
PSBpbnN0YW5jZS5jbG9uZU5vZGUoZmFsc2UpOworCisgICAgYXNzZXJ0X2VxdWFscyhsb2cubGVu
Z3RoLCA4KTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1swXSwgW2luc3RhbmNlLCAnYmVn
aW4nXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbMV0sIFtpbnN0YW5jZSwgJ2VuZCdd
KTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1syXSwgW2Fub3RoZXJJbnN0YW5jZSwgJ2Jl
Z2luJ10pOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzNdLCBbYW5vdGhlckluc3RhbmNl
LCAnZW5kJ10pOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzRdLCBbaW5zdGFuY2VDbG9u
ZSwgJ2JlZ2luJ10pOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzVdLCBbYW5vdGhlcklu
c3RhbmNlQ2xvbmUsICdiZWdpbiddKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1s2XSwg
W2Fub3RoZXJJbnN0YW5jZUNsb25lLCAnZW5kJ10pOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
bG9nWzddLCBbaW5zdGFuY2VDbG9uZSwgJ2VuZCddKTsKK30sICdDYWxsaW5nIE5vZGUucHJvdG90
eXBlLmNsb25lTm9kZShmYWxzZSkgbXVzdCBwdXNoIGEgbmV3IGVsZW1lbnQgcXVldWUgdG8gdGhl
IHByb2Nlc3Npbmcgc3RhY2snKTsKKwogPC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy91cGdyYWRpbmcvTm9kZS1jbG9uZU5v
ZGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVs
ZW1lbnRzL3VwZ3JhZGluZy9Ob2RlLWNsb25lTm9kZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy91cGdyYWRpbmcvTm9kZS1jbG9u
ZU5vZGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOSBAQAorCitQQVNT
IE5vZGUucHJvdG90eXBlLmNsb25lTm9kZShmYWxzZSkgbXVzdCBiZSBhYmxlIHRvIGNsb25lIGEg
Y3VzdG9tIGVsZW1lbnQgCitQQVNTIE5vZGUucHJvdG90eXBlLmNsb25lTm9kZShmYWxzZSkgbXVz
dCBiZSBhYmxlIHRvIGNsb25lIGEgY3VzdG9tIGVsZW1lbnQgaW5zaWRlIGFuIGlmcmFtZSAKK1BB
U1MgTm9kZS5wcm90b3R5cGUuY2xvbmVOb2RlKHRydWUpIG11c3QgYmUgYWJsZSB0byBjbG9uZSBh
IGRlc2NlbmRlbnQgY3VzdG9tIGVsZW1lbnQgCitQQVNTIE5vZGUucHJvdG90eXBlLmNsb25lTm9k
ZSh0cnVlKSBtdXN0IGJlIGFibGUgdG8gY2xvbmUgYSBkZXNjZW5kZW50IGN1c3RvbSBlbGVtZW50
IAorUEFTUyBIVE1MRWxlbWVudCBjb25zdHJ1Y3RvciBtdXN0IHRocm93IGFuIEludmFsaWRTdGF0
ZUVycm9yIHdoZW4gdGhlIHRvcCBvZiB0aGUgY29uc3RydWN0aW9uIHN0YWNrIGlzIG1hcmtlZCBB
bHJlYWR5Q29uc3RydWN0ZWQgZHVlIHRvIGEgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IgY29u
c3RydWN0aW5nIGl0c2VsZiBhZnRlciBzdXBlcigpIGNhbGwgCitQQVNTIEhUTUxFbGVtZW50IGNv
bnN0cnVjdG9yIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiB0aGUgdG9wIG9m
IHRoZSBjb25zdHJ1Y3Rpb24gc3RhY2sgaXMgbWFya2VkIEFscmVhZHlDb25zdHJ1Y3RlZCBkdWUg
dG8gYSBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciBjb25zdHJ1Y3RpbmcgaXRzZWxmIGJlZm9y
ZSBzdXBlcigpIGNhbGwgCitQQVNTIFVwZ3JhZGluZyBhIGN1c3RvbSBlbGVtZW50IG11c3QgdGhy
b3cgSW52YWxpZFN0YXRlRXJyb3Igd2hlbiB0aGUgY3VzdG9tIGVsZW1lbnQncyBjb25zdHJ1Y3Rv
ciByZXR1cm5zIGFub3RoZXIgZWxlbWVudCAKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jdXN0
b20tZWxlbWVudHMvdXBncmFkaW5nL05vZGUtY2xvbmVOb2RlLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdXBncmFkaW5nL05vZGUtY2xvbmVOb2Rl
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy91
cGdyYWRpbmcvTm9kZS1jbG9uZU5vZGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2
OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkN1c3RvbSBFbGVt
ZW50czogRXh0ZW5zaW9ucyB0byBEb2N1bWVudCBpbnRlcmZhY2U8L3RpdGxlPgorPG1ldGEgbmFt
ZT0iYXV0aG9yIiB0aXRsZT0iUnlvc3VrZSBOaXdhIiBocmVmPSJtYWlsdG86cm5pd2FAd2Via2l0
Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9Ik5vZGUucHJvdG90eXBlLmNsb25l
Tm9kZSBzaG91bGQgdXBncmFkZSBhIGN1c3RvbSBlbGVtZW50Ij4KKzxsaW5rIHJlbD0iaGVscCIg
aHJlZj0iaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmNvbXBvbmVudHMvc3BlYy9jdXN0b20vI3Vw
Z3JhZGluZyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBocmVmPScuLi8uLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzJz4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
bG9nIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHdpdGhOZXdEb2N1bWVudFdpdGhBQnJv
d3NpbmdDb250ZXh0KGNhbGxiYWNrKSB7CisgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2lmcmFtZScpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1l
KTsKKyAgICB0cnkgeworICAgICAgICBjYWxsYmFjayhpZnJhbWUuY29udGVudFdpbmRvdywgaWZy
YW1lLmNvbnRlbnREb2N1bWVudCk7ICAgICAgICAKKyAgICB9IGZpbmFsbHkgeworICAgICAgICBk
b2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGlmcmFtZSk7CisgICAgfQorfQorCit0ZXN0KGZ1bmN0
aW9uICgpIHsKKyAgICBjbGFzcyBNeUN1c3RvbUVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7
fQorICAgIGRvY3VtZW50LmRlZmluZUVsZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50JywgTXlDdXN0
b21FbGVtZW50KTsKKworICAgIHZhciBpbnN0YW5jZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J215LWN1c3RvbS1lbGVtZW50Jyk7CisgICAgYXNzZXJ0X3RydWUoaW5zdGFuY2UgaW5zdGFuY2Vv
ZiBIVE1MRWxlbWVudCk7CisgICAgYXNzZXJ0X3RydWUoaW5zdGFuY2UgaW5zdGFuY2VvZiBNeUN1
c3RvbUVsZW1lbnQpOworCisgICAgdmFyIGNsb25lID0gaW5zdGFuY2UuY2xvbmVOb2RlKGZhbHNl
KTsKKyAgICBhc3NlcnRfbm90X2VxdWFscyhpbnN0YW5jZSwgY2xvbmUpOworICAgIGFzc2VydF90
cnVlKGNsb25lIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQsCisgICAgICAgICdBIGNsb25lZCBjdXN0
b20gZWxlbWVudCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEhUTUxFbGVtZW50Jyk7CisgICAgYXNz
ZXJ0X3RydWUoY2xvbmUgaW5zdGFuY2VvZiBNeUN1c3RvbUVsZW1lbnQsCisgICAgICAgICdBIGNs
b25lZCBjdXN0b20gZWxlbWVudCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIHRoZSBjdXN0b20gZWxl
bWVudCcpOworfSwgJ05vZGUucHJvdG90eXBlLmNsb25lTm9kZShmYWxzZSkgbXVzdCBiZSBhYmxl
IHRvIGNsb25lIGEgY3VzdG9tIGVsZW1lbnQnKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAg
d2l0aE5ld0RvY3VtZW50V2l0aEFCcm93c2luZ0NvbnRleHQoZnVuY3Rpb24gKGNvbnRlbnRXaW5k
b3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICBjbGFzcyBNeUN1c3RvbUVsZW1lbnQgZXh0
ZW5kcyBjb250ZW50V2luZG93LkhUTUxFbGVtZW50IHt9CisgICAgICAgIGNvbnRlbnREb2N1bWVu
dC5kZWZpbmVFbGVtZW50KCdteS1jdXN0b20tZWxlbWVudCcsIE15Q3VzdG9tRWxlbWVudCk7CisK
KyAgICAgICAgdmFyIGluc3RhbmNlID0gY29udGVudERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ215
LWN1c3RvbS1lbGVtZW50Jyk7CisgICAgICAgIGFzc2VydF90cnVlKGluc3RhbmNlIGluc3RhbmNl
b2YgY29udGVudFdpbmRvdy5IVE1MRWxlbWVudCk7CisgICAgICAgIGFzc2VydF90cnVlKGluc3Rh
bmNlIGluc3RhbmNlb2YgTXlDdXN0b21FbGVtZW50KTsKKworICAgICAgICB2YXIgY2xvbmUgPSBp
bnN0YW5jZS5jbG9uZU5vZGUoZmFsc2UpOworICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhpbnN0
YW5jZSwgY2xvbmUpOworICAgICAgICBhc3NlcnRfdHJ1ZShjbG9uZSBpbnN0YW5jZW9mIGNvbnRl
bnRXaW5kb3cuSFRNTEVsZW1lbnQsCisgICAgICAgICAgICAnQSBjbG9uZWQgY3VzdG9tIGVsZW1l
bnQgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBIVE1MRWxlbWVudCcpOworICAgICAgICBhc3NlcnRf
dHJ1ZShjbG9uZSBpbnN0YW5jZW9mIE15Q3VzdG9tRWxlbWVudCwKKyAgICAgICAgICAgICdBIGNs
b25lZCBjdXN0b20gZWxlbWVudCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIHRoZSBjdXN0b20gZWxl
bWVudCcpOworICAgIH0pOworfSwgJ05vZGUucHJvdG90eXBlLmNsb25lTm9kZShmYWxzZSkgbXVz
dCBiZSBhYmxlIHRvIGNsb25lIGEgY3VzdG9tIGVsZW1lbnQgaW5zaWRlIGFuIGlmcmFtZScpOwor
Cit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB3aXRoTmV3RG9jdW1lbnRXaXRoQUJyb3dzaW5nQ29u
dGV4dChmdW5jdGlvbiAoY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAg
IGNsYXNzIE15Q3VzdG9tRWxlbWVudCBleHRlbmRzIGNvbnRlbnRXaW5kb3cuSFRNTEVsZW1lbnQg
eyB9CisgICAgICAgIGNvbnRlbnREb2N1bWVudC5kZWZpbmVFbGVtZW50KCdteS1jdXN0b20tZWxl
bWVudCcsIE15Q3VzdG9tRWxlbWVudCk7CisKKyAgICAgICAgdmFyIGluc3RhbmNlID0gY29udGVu
dERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50Jyk7CisgICAgICAgIHZh
ciBjb250YWluZXIgPSBjb250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAg
ICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChpbnN0YW5jZSk7CisKKyAgICAgICAgdmFyIGNvbnRh
aW5lckNsb25lID0gY29udGFpbmVyLmNsb25lTm9kZSh0cnVlKTsKKyAgICAgICAgYXNzZXJ0X3Ry
dWUoY29udGFpbmVyQ2xvbmUgaW5zdGFuY2VvZiBjb250ZW50V2luZG93LkhUTUxEaXZFbGVtZW50
KTsKKworICAgICAgICB2YXIgY2xvbmUgPSBjb250YWluZXJDbG9uZS5maXJzdENoaWxkOworICAg
ICAgICBhc3NlcnRfbm90X2VxdWFscyhpbnN0YW5jZSwgY2xvbmUpOworICAgICAgICBhc3NlcnRf
dHJ1ZShjbG9uZSBpbnN0YW5jZW9mIGNvbnRlbnRXaW5kb3cuSFRNTEVsZW1lbnQsCisgICAgICAg
ICAgICAnQSBjbG9uZWQgY3VzdG9tIGVsZW1lbnQgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBIVE1M
RWxlbWVudCcpOworICAgICAgICBhc3NlcnRfdHJ1ZShjbG9uZSBpbnN0YW5jZW9mIE15Q3VzdG9t
RWxlbWVudCwKKyAgICAgICAgICAgICdBIGNsb25lZCBjdXN0b20gZWxlbWVudCBtdXN0IGJlIGFu
IGluc3RhbmNlIG9mIHRoZSBjdXN0b20gZWxlbWVudCcpOworICAgIH0pOworfSwgJ05vZGUucHJv
dG90eXBlLmNsb25lTm9kZSh0cnVlKSBtdXN0IGJlIGFibGUgdG8gY2xvbmUgYSBkZXNjZW5kZW50
IGN1c3RvbSBlbGVtZW50Jyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHdpdGhOZXdEb2N1
bWVudFdpdGhBQnJvd3NpbmdDb250ZXh0KGZ1bmN0aW9uIChjb250ZW50V2luZG93LCBjb250ZW50
RG9jdW1lbnQpIHsKKyAgICAgICAgdmFyIHBhcmVudE5vZGVJbkNvbnN0cnVjdG9yOworICAgICAg
ICB2YXIgcHJldmlvdXNTaWJsaW5nSW5Db25zdHJ1Y3RvcjsKKyAgICAgICAgdmFyIG5leHRTaWJs
aW5nSW5Db25zdHJ1Y3RvcjsKKyAgICAgICAgY2xhc3MgTXlDdXN0b21FbGVtZW50IGV4dGVuZHMg
Y29udGVudFdpbmRvdy5IVE1MRWxlbWVudCB7CisgICAgICAgICAgICBjb25zdHJ1Y3RvcigpIHsK
KyAgICAgICAgICAgICAgICBzdXBlcigpOworICAgICAgICAgICAgICAgIHBhcmVudE5vZGVJbkNv
bnN0cnVjdG9yID0gdGhpcy5wYXJlbnROb2RlOworICAgICAgICAgICAgICAgIHByZXZpb3VzU2li
bGluZ0luQ29uc3RydWN0b3IgPSB0aGlzLnByZXZpb3VzU2libGluZzsKKyAgICAgICAgICAgICAg
ICBuZXh0U2libGluZ0luQ29uc3RydWN0b3IgPSB0aGlzLm5leHRTaWJsaW5nOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGNvbnRlbnREb2N1bWVudC5kZWZpbmVFbGVtZW50KCdt
eS1jdXN0b20tZWxlbWVudCcsIE15Q3VzdG9tRWxlbWVudCk7CisKKyAgICAgICAgdmFyIGluc3Rh
bmNlID0gY29udGVudERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50Jyk7
CisgICAgICAgIHZhciBzaWJsaW5nQmVmb3JlSW5zdGFuY2UgPSBjb250ZW50RG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnYicpOworICAgICAgICB2YXIgc2libGluZ0FmdGVySW5zdGFuY2UgPSBjb250
ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOworICAgICAgICB2YXIgY29udGFpbmVyID0g
Y29udGVudERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBjb250YWluZXIu
YXBwZW5kQ2hpbGQoc2libGluZ0JlZm9yZUluc3RhbmNlKTsKKyAgICAgICAgY29udGFpbmVyLmFw
cGVuZENoaWxkKGluc3RhbmNlKTsKKyAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHNpYmxp
bmdBZnRlckluc3RhbmNlKTsKKworICAgICAgICB2YXIgY29udGFpbmVyQ2xvbmUgPSBjb250YWlu
ZXIuY2xvbmVOb2RlKHRydWUpOworCisgICAgICAgIGFzc2VydF9lcXVhbHMocGFyZW50Tm9kZUlu
Q29uc3RydWN0b3IsIGNvbnRhaW5lckNsb25lLAorICAgICAgICAgICAgJ0FuIHVwZ3JhZGVkIGVs
ZW1lbnQgbXVzdCBoYXZlIGl0cyBwYXJlbnROb2RlIHNldCBiZWZvcmUgdGhlIGN1c3RvbSBlbGVt
ZW50IGNvbnN0cnVjdG9yIGlzIGNhbGxlZCcpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHByZXZp
b3VzU2libGluZ0luQ29uc3RydWN0b3IsIGNvbnRhaW5lckNsb25lLmZpcnN0Q2hpbGQsCisgICAg
ICAgICAgICAnQW4gdXBncmFkZWQgZWxlbWVudCBtdXN0IGhhdmUgaXRzIHByZXZpb3VzU2libGlu
ZyBzZXQgYmVmb3JlIHRoZSBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciBpcyBjYWxsZWQnKTsK
KyAgICAgICAgYXNzZXJ0X2VxdWFscyhuZXh0U2libGluZ0luQ29uc3RydWN0b3IsIGNvbnRhaW5l
ckNsb25lLmxhc3RDaGlsZCwKKyAgICAgICAgICAgICdBbiB1cGdyYWRlZCBlbGVtZW50IG11c3Qg
aGF2ZSBpdHMgbmV4dFNpYmxpbmcgc2V0IGJlZm9yZSB0aGUgY3VzdG9tIGVsZW1lbnQgY29uc3Ry
dWN0b3IgaXMgY2FsbGVkJyk7CisgICAgfSk7Cit9LCAnTm9kZS5wcm90b3R5cGUuY2xvbmVOb2Rl
KHRydWUpIG11c3QgYmUgYWJsZSB0byBjbG9uZSBhIGRlc2NlbmRlbnQgY3VzdG9tIGVsZW1lbnQn
KTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgd2l0aE5ld0RvY3VtZW50V2l0aEFCcm93c2lu
Z0NvbnRleHQoZnVuY3Rpb24gKGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAg
ICAgICBjbGFzcyBNeUN1c3RvbUVsZW1lbnQgZXh0ZW5kcyBjb250ZW50V2luZG93LkhUTUxFbGVt
ZW50IHsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKGRvTm90Q3JlYXRlSXRzZWxmKSB7CisgICAg
ICAgICAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWRvTm90Q3JlYXRlSXRz
ZWxmKQorICAgICAgICAgICAgICAgICAgICBuZXcgTXlDdXN0b21FbGVtZW50KHRydWUpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNvbnRlbnREb2N1bWVudC5kZWZpbmVFbGVt
ZW50KCdteS1jdXN0b20tZWxlbWVudCcsIE15Q3VzdG9tRWxlbWVudCk7CisKKyAgICAgICAgdmFy
IGluc3RhbmNlID0gY29udGVudERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ215LWN1c3RvbS1lbGVt
ZW50Jyk7CisgICAgICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ0ludmFsaWRTdGF0ZUVycm9y
J30sIGZ1bmN0aW9uICgpIHsgaW5zdGFuY2UuY2xvbmVOb2RlKGZhbHNlKTsgfSk7CisgICAgfSk7
Cit9LCAnSFRNTEVsZW1lbnQgY29uc3RydWN0b3IgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVF
cnJvciB3aGVuIHRoZSB0b3Agb2YgdGhlIGNvbnN0cnVjdGlvbiBzdGFjayBpcyBtYXJrZWQgQWxy
ZWFkeUNvbnN0cnVjdGVkJworICAgICsgJyBkdWUgdG8gYSBjdXN0b20gZWxlbWVudCBjb25zdHJ1
Y3RvciBjb25zdHJ1Y3RpbmcgaXRzZWxmIGFmdGVyIHN1cGVyKCkgY2FsbCcpOworCit0ZXN0KGZ1
bmN0aW9uICgpIHsKKyAgICB3aXRoTmV3RG9jdW1lbnRXaXRoQUJyb3dzaW5nQ29udGV4dChmdW5j
dGlvbiAoY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgIGNsYXNzIE15
Q3VzdG9tRWxlbWVudCBleHRlbmRzIGNvbnRlbnRXaW5kb3cuSFRNTEVsZW1lbnQgeworICAgICAg
ICAgICAgY29uc3RydWN0b3IoZG9Ob3RDcmVhdGVJdHNlbGYpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIWRvTm90Q3JlYXRlSXRzZWxmKQorICAgICAgICAgICAgICAgICAgICBuZXcgTXlDdXN0b21F
bGVtZW50KHRydWUpOworICAgICAgICAgICAgICAgIHN1cGVyKCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgY29udGVudERvY3VtZW50LmRlZmluZUVsZW1lbnQoJ215LWN1c3Rv
bS1lbGVtZW50JywgTXlDdXN0b21FbGVtZW50KTsKKworICAgICAgICB2YXIgaW5zdGFuY2UgPSBj
b250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbXktY3VzdG9tLWVsZW1lbnQnKTsKKyAgICAg
ICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnSW52YWxpZFN0YXRlRXJyb3InfSwgZnVuY3Rpb24g
KCkgeyBpbnN0YW5jZS5jbG9uZU5vZGUoZmFsc2UpOyB9KTsKKyAgICB9KTsKK30sICdIVE1MRWxl
bWVudCBjb25zdHJ1Y3RvciBtdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gdGhl
IHRvcCBvZiB0aGUgY29uc3RydWN0aW9uIHN0YWNrIGlzIG1hcmtlZCBBbHJlYWR5Q29uc3RydWN0
ZWQnCisgICAgKyAnIGR1ZSB0byBhIGN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIGNvbnN0cnVj
dGluZyBpdHNlbGYgYmVmb3JlIHN1cGVyKCkgY2FsbCcpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsK
KyAgICB3aXRoTmV3RG9jdW1lbnRXaXRoQUJyb3dzaW5nQ29udGV4dChmdW5jdGlvbiAoY29udGVu
dFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgIHZhciBjbG9uaW5nID0gZmFsc2U7
CisgICAgICAgIGNsYXNzIE15Q3VzdG9tRWxlbWVudCBleHRlbmRzIGNvbnRlbnRXaW5kb3cuSFRN
TEVsZW1lbnQgeworICAgICAgICAgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgICAgICAgICAg
c3VwZXIoKTsKKyAgICAgICAgICAgICAgICBpZiAoY2xvbmluZykKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGNvbnRlbnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY29udGVudERvY3VtZW50LmRlZmluZUVsZW1lbnQo
J215LWN1c3RvbS1lbGVtZW50JywgTXlDdXN0b21FbGVtZW50KTsKKworICAgICAgICB2YXIgaW5z
dGFuY2UgPSBjb250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbXktY3VzdG9tLWVsZW1lbnQn
KTsKKyAgICAgICAgY2xvbmluZyA9IHRydWU7CisgICAgICAgIGFzc2VydF90aHJvd3MoeyduYW1l
JzogJ0ludmFsaWRTdGF0ZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgaW5zdGFuY2UuY2xvbmVOb2Rl
KGZhbHNlKTsgfSk7CisgICAgfSk7Cit9LCAnVXBncmFkaW5nIGEgY3VzdG9tIGVsZW1lbnQgbXVz
dCB0aHJvdyBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHRoZSBjdXN0b20gZWxlbWVudFwncyBjb25z
dHJ1Y3RvciByZXR1cm5zIGFub3RoZXIgZWxlbWVudCcpOworCis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273078</attachid>
            <date>2016-03-05 01:27:32 -0800</date>
            <delta_ts>2016-03-05 01:27:47 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-155062-20160305012718.patch</filename>
            <type>text/plain</type>
            <size>34637</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzYxMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDE2LTAzLTA1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCB0aGUgc3VwcG9ydCBmb3Ig
dXBncmFkaW5nIGN1c3RvbSBlbGVtZW50cyBpbiBjbG9uZU5vZGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTA2MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIEltcGxlbWVudCBodHRwczovL3czYy5naXRo
dWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL2N1c3RvbS8jdXBncmFkaW5nIGFuZCBzdGVwcyA2IHRo
cm91Z2ggMTEgaW4KKyAgICAgICAgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmNvbXBvbmVudHMv
c3BlYy9jdXN0b20vI2h0bWxlbGVtZW50LWNvbnN0cnVjdG9yIHRvIHN1cHBvcnQgdXBncmFkaW5n
IGVsZW1lbnRzCisgICAgICAgIGNyZWF0ZWQgYnkgTm9kZS5wcm90b3R5cGUuY2xvbmVOb2RlLgor
CisgICAgICAgIFRlc3RzOiBmYXN0L2N1c3RvbS1lbGVtZW50cy9saWZlY3ljbGUtY2FsbGJhY2st
dGltaW5nLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3VzdG9tLWVsZW1lbnRzL3VwZ3JhZGlu
Zy9Ob2RlLWNsb25lTm9kZS5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbUVs
ZW1lbnRJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21FbGVtZW50SW50
ZXJmYWNlOjp1cGdyYWRlRWxlbWVudCk6IEFkZGVkLiBJbXBsZW1lbnRzCisgICAgICAgICBodHRw
czovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL2N1c3RvbS8jZGZuLXVwZ3JhZGUt
YS1jdXN0b20tZWxlbWVudAorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21FbGVtZW50SW50ZXJm
YWNlOjpkaWRVcGdyYWRlTGFzdEVsZW1lbnRJbkNvbnN0cnVjdGlvblN0YWNrKTogQWRkZWQuIElt
cGxlbWVudHMgc3RlcCAxMAorICAgICAgICAgIlJlcGxhY2UgdGhlIGxhc3QgZW50cnkgaW4gZGVm
aW5pdGlvbidzIGNvbnN0cnVjdGlvbiBzdGFja2Egd2l0aCBhbiBhbHJlYWR5IGNvbnN0cnVjdGVk
IG1hcmtlci4iCisgICAgICAgICBpbiBodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50
cy9zcGVjL2N1c3RvbS8jZG9tLWh0bWxlbGVtZW50LWNvbnN0cnVjdG9yCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpK
U0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmlzVXBncmFkaW5nRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6Omxhc3RFbGVtZW50SW5Db25zdHJ1Y3Rp
b25TdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UpOiBB
ZGRlZCBtX2NvbnN0cnVjdGlvblN0YWNrLiBUaGlzIGlzIHRoZSBjb25zdHJ1Y3Rpb24gc3RhY2s6
CisgICAgICAgICBodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL2N1c3Rv
bS8jZGZuLWVsZW1lbnQtZGVmaW5pdGlvbi1jb25zdHJ1Y3Rpb24tc3RhY2sKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGhyb3dJbnZh
bGlkU3RhdGVFcnJvcik6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNIVE1MRWxlbWVudCk6IEltcGxlbWVudCB0aGUgdXBn
cmFkaW5nIGNhc2UgaW46CisgICAgICAgICBodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9u
ZW50cy9zcGVjL2N1c3RvbS8jaHRtbGVsZW1lbnQtY29uc3RydWN0b3IKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRmFsbGJhY2tIVE1MRWxlbWVu
dCk6IEFkZGVkLiBFbnF1ZXVlcyB1cGdyYWRlcyBvZiBjdXN0b20gZWxlbWVudHMgKGVucXVldWVF
bGVtZW50VXBncmFkZQorICAgICAgICAgY3VycmVudGx5IGRvZXMgbm90aGluZyBpZiB0aGVyZSBp
cyBubyBJbnZva2VzQ3VzdG9tRWxlbWVudExpZmVjeWNsZUNhbGxiYWNrczsgZS5nLiBpbiBvdGhl
ciBET00gQVBJcykuCisgICAgICAgICBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgaHR0cHM6Ly93
M2MuZ2l0aHViLmlvL3dlYmNvbXBvbmVudHMvc3BlYy9jdXN0b20vI2Rmbi1lbGVtZW50LXVwZ3Jh
ZGUtYWxnb3JpdGhtCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlRWxlbWVudCk6
CisgICAgICAgICogZG9tL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGlmZWN5Y2xlUXVldWVJdGVtOjpMaWZlY3ljbGVRdWV1ZUl0ZW0pOiBBZGRlZCBhIGdl
bmVyaWMgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpMaWZlY3ljbGVRdWV1ZUl0ZW06
Omludm9rZSk6IENhbGwgdXBncmFkZUVsZW1lbnQgd2hlbiBtX3R5cGUgaXMgVHlwZTo6RWxlbWVu
dFVwZ3JhZGUuCisgICAgICAgIChXZWJDb3JlOjpMaWZlY3ljbGVDYWxsYmFja1F1ZXVlOjplbnF1
ZXVlRWxlbWVudFVwZ3JhZGUpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vTGlmZWN5Y2xlQ2FsbGJh
Y2tRdWV1ZS5oOgorICAgICAgICAqIGRvbS9Ob2RlLmlkbDogQWRkZWQgSW52b2tlc0N1c3RvbUVs
ZW1lbnRMaWZlY3ljbGVDYWxsYmFja3Mgb24gY2xvbmVOb2RlLgorICAgICAgICAqIGRvbS9tYWtl
X25hbWVzLnBsOgorICAgICAgICAocHJpbnRGYWN0b3J5Q3BwRmlsZSk6IEFkZGVkIGEgdmFyaWFu
dCBvZiBjcmVhdGVLbm93bkVsZW1lbnQgd2hpY2ggdGFrZXMgUXVhbGlmaWVkTmFtZS4gQWxzbyBk
aXJlY3RseSBjYWxsCisgICAgICAgICBmaW5kKEhUTUx8U1ZHfE1hdGhNTClFbGVtZW50Q29uc3Ry
dWN0b3JGdW5jdGlvbiBpbiBjcmVhdGVFbGVtZW50IHRoYXQgdGFrZXMgQXRvbWljU3RyaW5nIHRv
IGF2b2lkIGFuIGV4dHJhCisgICAgICAgICBmdW5jdGlvbiBjYWxsLgorICAgICAgICAocHJpbnRG
YWN0b3J5SGVhZGVyRmlsZSk6IEFkZGVkIGEgZnVuY3Rpb24gZGVjbGFyYXRpb24gZm9yIGNyZWF0
ZUtub3duRWxlbWVudCB0aGF0IHRha2VzIFF1YWxpZmllZE5hbWUgYW5kCisgICAgICAgICBvdXRk
ZW50ZWQgY2xhc3MgYW5kIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyB0byBtYXRjaCB0aGUgbW9kZXJu
IGNvZGUgc3R5bGUgZ3VpZGVsaW5lLgorCiAyMDE2LTAzLTA1ICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCB0aGUgYmluZGluZ3MgdGVzdCBhZnRlciByMTk3
NjExLgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50
ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1
c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAxOTc2MTMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDIsNiArMTAyLDU0IEBAIFJlZlB0cjxFbGVtZW50PiBKU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UKICAgICByZXR1cm4gd3JhcHBlZEVsZW1lbnQ7CiB9CiAKK3ZvaWQgSlNDdXN0b21F
bGVtZW50SW50ZXJmYWNlOjp1cGdyYWRlRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQoreworICAg
IEFTU0VSVChlbGVtZW50LmlzQ3VzdG9tRWxlbWVudCgpKTsKKyAgICBpZiAoIWNhbkludm9rZUNh
bGxiYWNrKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZjxKU0N1c3RvbUVsZW1lbnRJbnRl
cmZhY2U+IHByb3RlY3QoKnRoaXMpOworICAgIEpTTG9ja0hvbGRlciBsb2NrKG1faXNvbGF0ZWRX
b3JsZC0+dm0oKSk7CisKKyAgICBpZiAoIW1fY29uc3RydWN0b3IpCisgICAgICAgIHJldHVybjsK
KworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJU
KGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CisgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IHRvSlNET01HbG9iYWxPYmplY3QoY29udGV4dCwgKm1faXNvbGF0ZWRXb3JsZCk7Cisg
ICAgRXhlY1N0YXRlKiBzdGF0ZSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIGlm
IChzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENvbnN0cnVj
dERhdGEgY29uc3RydWN0RGF0YTsKKyAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBt
X2NvbnN0cnVjdG9yLT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRhKG1fY29uc3RydWN0
b3IuZ2V0KCksIGNvbnN0cnVjdERhdGEpOworICAgIGlmIChjb25zdHJ1Y3RUeXBlID09IENvbnN0
cnVjdFR5cGVOb25lKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgbV9jb25zdHJ1Y3Rpb25TdGFjay5hcHBlbmQoJmVsZW1lbnQp
OworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUgY29va2llID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjppbnN0cnVtZW50
RnVuY3Rpb25Db25zdHJ1Y3QoY29udGV4dCwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSk7
CisgICAgSlNWYWx1ZSByZXR1cm5lZEVsZW1lbnQgPSBjb25zdHJ1Y3Qoc3RhdGUsIG1fY29uc3Ry
dWN0b3IuZ2V0KCksIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3MpOworICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKGNvb2tpZSwgY29udGV4dCk7
CisKKyAgICBtX2NvbnN0cnVjdGlvblN0YWNrLnJlbW92ZUxhc3QoKTsKKworICAgIGlmIChzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEVsZW1lbnQqIHdyYXBw
ZWRFbGVtZW50ID0gSlNFbGVtZW50Ojp0b1dyYXBwZWQocmV0dXJuZWRFbGVtZW50KTsKKyAgICBp
ZiAoIXdyYXBwZWRFbGVtZW50IHx8IHdyYXBwZWRFbGVtZW50ICE9ICZlbGVtZW50KSB7CisgICAg
ICAgIHRocm93SW52YWxpZFN0YXRlRXJyb3IoKnN0YXRlLCAiQ3VzdG9tIGVsZW1lbnQgY29uc3Ry
dWN0b3IgZmFpbGVkIHRvIHVwZ3JhZGUgYW4gZWxlbWVudCIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIEFTU0VSVCh3cmFwcGVkRWxlbWVudC0+aXNDdXN0b21FbGVtZW50KCkpOworfQor
CiB2b2lkIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6YXR0cmlidXRlQ2hhbmdlZChFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQogewogICAg
IGlmICghY2FuSW52b2tlQ2FsbGJhY2soKSkKQEAgLTE0NSw2ICsxOTMsMTEgQEAgdm9pZCBKU0N1
c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmF0dHJpYnV0ZQogICAgIGlmIChleGNlcHRpb24pCiAgICAg
ICAgIHJlcG9ydEV4Y2VwdGlvbihzdGF0ZSwgZXhjZXB0aW9uKTsKIH0KKyAgICAKK3ZvaWQgSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlOjpkaWRVcGdyYWRlTGFzdEVsZW1lbnRJbkNvbnN0cnVjdGlv
blN0YWNrKCkKK3sKKyAgICBtX2NvbnN0cnVjdGlvblN0YWNrLmxhc3QoKSA9IG51bGxwdHI7Cit9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmgJKHJldmlzaW9uIDE5
NzYxMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVy
ZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw4IEBAIHB1YmxpYzoKICAgICBlbnVt
IGNsYXNzIFNob3VsZENsZWFyRXhjZXB0aW9uIHsgQ2xlYXIsIERvTm90Q2xlYXIgfTsKICAgICBS
ZWZQdHI8RWxlbWVudD4gY29uc3RydWN0RWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmLCBTaG91
bGRDbGVhckV4Y2VwdGlvbik7CiAKKyAgICB2b2lkIHVwZ3JhZGVFbGVtZW50KEVsZW1lbnQmKTsK
KwogICAgIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChFbGVtZW50JiwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3
VmFsdWUpOwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0IHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7IH0KQEAgLTcwLDYgKzcyLDEwIEBAIHB1YmxpYzoKIAogICAgIGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KIAorICAg
IGJvb2wgaXNVcGdyYWRpbmdFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gIW1fY29uc3RydWN0aW9u
U3RhY2suaXNFbXB0eSgpOyB9CisgICAgRWxlbWVudCogbGFzdEVsZW1lbnRJbkNvbnN0cnVjdGlv
blN0YWNrKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJ1Y3Rpb25TdGFjay5sYXN0KCkuZ2V0KCk7
IH0KKyAgICB2b2lkIGRpZFVwZ3JhZGVMYXN0RWxlbWVudEluQ29uc3RydWN0aW9uU3RhY2soKTsK
KwogICAgIHZpcnR1YWwgfkpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSgpOwogCiBwcml2YXRlOgpA
QCAtNzgsNiArODQsNyBAQCBwcml2YXRlOgogICAgIFF1YWxpZmllZE5hbWUgbV9uYW1lOwogICAg
IG11dGFibGUgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IG1fY29uc3RydWN0b3I7CiAgICAgUmVm
UHRyPERPTVdyYXBwZXJXb3JsZD4gbV9pc29sYXRlZFdvcmxkOworICAgIFZlY3RvcjxSZWZQdHI8
RWxlbWVudD4sIDE+IG1fY29uc3RydWN0aW9uU3RhY2s7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5j
cHAJKHJldmlzaW9uIDE5NzYxMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0Miw2ICs2NDIsMTMgQEAgdm9pZCB0aHJv
d05vdFN1cHBvcnRlZEVycm9yKEpTQzo6RXhlY1N0YQogICAgIHN0YXRlLnZtKCkudGhyb3dFeGNl
cHRpb24oJnN0YXRlLCBjcmVhdGVET01FeGNlcHRpb24oJnN0YXRlLCBOT1RfU1VQUE9SVEVEX0VS
UiwgJm1lc3NhZ2VTdHJpbmcpKTsKIH0KIAordm9pZCB0aHJvd0ludmFsaWRTdGF0ZUVycm9yKEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hhciogbWVzc2FnZSkKK3sKKyAgICBBU1NFUlQo
IXN0YXRlLmhhZEV4Y2VwdGlvbigpKTsKKyAgICBTdHJpbmcgbWVzc2FnZVN0cmluZyhtZXNzYWdl
KTsKKyAgICBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlRE9NRXhjZXB0
aW9uKCZzdGF0ZSwgSU5WQUxJRF9TVEFURV9FUlIsICZtZXNzYWdlU3RyaW5nKSk7Cit9CisKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcihKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50
TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5j
dGlvbk5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVmFsdWVzKQogewogICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oCShyZXZpc2lvbiAxOTc2MTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsNyBAQCBXRUJDT1JFX0VYUE9S
VCBKU0M6OkVuY29kZWRKU1ZhbHVlIHJlcG9yCiBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcG9ydERl
cHJlY2F0ZWRTZXR0ZXJFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIGludGVyZmFj
ZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpOwogCiB2b2lkIHRocm93Tm90U3VwcG9y
dGVkRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKK3ZvaWQgdGhy
b3dJbnZhbGlkU3RhdGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIG1lc3NhZ2Up
Owogdm9pZCB0aHJvd0FycmF5RWxlbWVudFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYpOwogdm9p
ZCB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIGlu
dGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IGNoYXIqIGV4cGVj
dGVkVHlwZSk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoSlND
OjpFeGVjU3RhdGUmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVs
ZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTEVsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAxOTc2MTMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnREZWZpbml0aW9ucy5oIgog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCisjaW5j
bHVkZSAiSlNOb2RlQ3VzdG9tLmgiCiAjaW5jbHVkZSA8cnVudGltZS9JbnRlcm5hbEZ1bmN0aW9u
Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU1dpdGhTY29wZS5oPgogCkBAIC01NywxNiArNTgsNDAg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKUwogICAgIGlmICghaW50
ZXJmYWNlKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgIm5ldy50YXJn
ZXQgZG9lcyBub3QgZGVmaW5lIGEgY3VzdG9tIGVsZW1lbnQiKTsKIAotICAgIGF1dG8qIGdsb2Jh
bE9iamVjdCA9IGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpOwotICAgIFN0cnVjdHVyZSog
YmFzZVN0cnVjdHVyZSA9IGdldERPTVN0cnVjdHVyZTxKU0hUTUxFbGVtZW50Pih2bSwgKmdsb2Jh
bE9iamVjdCk7Ci0gICAgYXV0byogbmV3RWxlbWVudFN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rp
b246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKHN0YXRlLCBuZXdUYXJnZXRWYWx1ZSwgYmFzZVN0
cnVjdHVyZSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCisgICAg
aWYgKCFpbnRlcmZhY2UtPmlzVXBncmFkaW5nRWxlbWVudCgpKSB7CisgICAgICAgIGF1dG8qIGds
b2JhbE9iamVjdCA9IGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpOworICAgICAgICBTdHJ1
Y3R1cmUqIGJhc2VTdHJ1Y3R1cmUgPSBnZXRET01TdHJ1Y3R1cmU8SlNIVE1MRWxlbWVudD4odm0s
ICpnbG9iYWxPYmplY3QpOworICAgICAgICBhdXRvKiBuZXdFbGVtZW50U3RydWN0dXJlID0gSW50
ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoc3RhdGUsIG5ld1RhcmdldFZh
bHVlLCBiYXNlU3RydWN0dXJlKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworCisgICAgICAgIFJlZjxIVE1MRWxlbWVudD4gZWxlbWVudCA9IEhUTUxFbGVtZW50Ojpj
cmVhdGUoaW50ZXJmYWNlLT5uYW1lKCksIGRvY3VtZW50KTsKKyAgICAgICAgYXV0byoganNFbGVt
ZW50ID0gSlNIVE1MRWxlbWVudDo6Y3JlYXRlKG5ld0VsZW1lbnRTdHJ1Y3R1cmUsIGdsb2JhbE9i
amVjdCwgZWxlbWVudC5nZXQoKSk7CisgICAgICAgIGNhY2hlV3JhcHBlcihnbG9iYWxPYmplY3Qt
PndvcmxkKCksIGVsZW1lbnQucHRyKCksIGpzRWxlbWVudCk7CisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNFbGVtZW50KTsKKyAgICB9CisKKyAgICBFbGVtZW50KiBlbGVtZW50VG9V
cGdyYWRlID0gaW50ZXJmYWNlLT5sYXN0RWxlbWVudEluQ29uc3RydWN0aW9uU3RhY2soKTsKKyAg
ICBpZiAoIWVsZW1lbnRUb1VwZ3JhZGUpIHsKKyAgICAgICAgdGhyb3dJbnZhbGlkU3RhdGVFcnJv
cigqc3RhdGUsICJDYW5ub3QgaW5zdGFudGlhdGUgYSBjdXN0b20gZWxlbWVudCBpbnNpZGUgaXRz
IG93biBjb25zdHJjdXRvciBkdXJpbmcgdXBncmFkZXMiKTsKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICB9CiAKLSAgICBSZWY8SFRNTEVsZW1lbnQ+
IGVsZW1lbnQgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKGludGVyZmFjZS0+bmFtZSgpLCBkb2N1bWVu
dCk7Ci0gICAgYXV0byoganNFbGVtZW50ID0gSlNIVE1MRWxlbWVudDo6Y3JlYXRlKG5ld0VsZW1l
bnRTdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgZWxlbWVudC5nZXQoKSk7Ci0gICAgY2FjaGVXcmFw
cGVyKGdsb2JhbE9iamVjdC0+d29ybGQoKSwgZWxlbWVudC5wdHIoKSwganNFbGVtZW50KTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRWxlbWVudCk7CisgICAgSlNWYWx1ZSBlbGVtZW50
V3JhcHBlclZhbHVlID0gdG9KUyhzdGF0ZSwganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCks
IGVsZW1lbnRUb1VwZ3JhZGUpOworICAgIEFTU0VSVChlbGVtZW50V3JhcHBlclZhbHVlLmlzT2Jq
ZWN0KCkpOworCisgICAgSlNWYWx1ZSBuZXdQcm90b3R5cGUgPSBuZXdUYXJnZXQtPmdldChzdGF0
ZSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKKyAgICBpZiAoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwor
CisgICAgSlNPYmplY3QqIGVsZW1lbnRXcmFwcGVyT2JqZWN0ID0gYXNPYmplY3QoZWxlbWVudFdy
YXBwZXJWYWx1ZSk7CisgICAgSlNPYmplY3Q6OnNldFByb3RvdHlwZShlbGVtZW50V3JhcHBlck9i
amVjdCwgc3RhdGUsIG5ld1Byb3RvdHlwZSwgdHJ1ZSAvKiBzaG91bGRUaHJvd0lmQ2FudFNldCAq
Lyk7CisgICAgaWYgKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIGludGVyZmFjZS0+ZGlkVXBncmFkZUxh
c3RFbGVtZW50SW5Db25zdHJ1Y3Rpb25TdGFjaygpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShlbGVtZW50V3JhcHBlclZhbHVlKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAJKHJldmlzaW9uIDE5NzYxMykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw2ICsxMDMsNyBAQAogI2luY2x1ZGUgIkpT
TW9kdWxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIkxh
bmd1YWdlLmgiCisjaW5jbHVkZSAiTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5oIgogI2luY2x1ZGUg
IkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1haW5G
cmFtZS5oIgpAQCAtMTA3MiwxNSArMTA3MywzMyBAQCBib29sIERvY3VtZW50OjpoYXNWYWxpZE5h
bWVzcGFjZUZvckF0dHJpCiAgICAgcmV0dXJuIGhhc1ZhbGlkTmFtZXNwYWNlRm9yRWxlbWVudHMo
cU5hbWUpOwogfQogCitzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBjcmVhdGVGYWxsYmFja0hUTUxF
bGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKK3sK
KyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorICAgIGF1dG8qIGRlZmluaXRpb25zID0gZG9j
dW1lbnQuY3VzdG9tRWxlbWVudERlZmluaXRpb25zKCk7CisgICAgaWYgKFVOTElLRUxZKGRlZmlu
aXRpb25zKSkgeworICAgICAgICBpZiAoYXV0byogaW50ZXJmYWNlID0gZGVmaW5pdGlvbnMtPmZp
bmRJbnRlcmZhY2UobmFtZSkpIHsKKyAgICAgICAgICAgIFJlZjxIVE1MRWxlbWVudD4gZWxlbWVu
dCA9IEhUTUxFbGVtZW50OjpjcmVhdGUobmFtZSwgZG9jdW1lbnQpOworICAgICAgICAgICAgZWxl
bWVudC0+c2V0SXNDdXN0b21FbGVtZW50KCk7IC8vIFByZS11cGdyYWRlIGVsZW1lbnQgaXMgc3Rp
bGwgY29uc2lkZXJlZCBhIGN1c3RvbSBlbGVtZW50LgorICAgICAgICAgICAgTGlmZWN5Y2xlQ2Fs
bGJhY2tRdWV1ZTo6ZW5xdWV1ZUVsZW1lbnRVcGdyYWRlKGVsZW1lbnQuZ2V0KCksICppbnRlcmZh
Y2UpOworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0KKyAgICB9CisjZW5k
aWYKKyAgICByZXR1cm4gSFRNTFVua25vd25FbGVtZW50OjpjcmVhdGUobmFtZSwgZG9jdW1lbnQp
OworfQorCiAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmVhbGx5IGJlIGluIGEgcG9zc2libGUgRWxl
bWVudEZhY3RvcnkgY2xhc3MuCiBSZWY8RWxlbWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCiB7CiAgICAg
UmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQ7CiAKICAgICAvLyBGSVhNRTogVXNlIHJlZ2lzdGVyZWQg
bmFtZXNwYWNlcyBhbmQgbG9vayB1cCBpbiBhIGhhc2ggdG8gZmluZCB0aGUgcmlnaHQgZmFjdG9y
eS4KLSAgICBpZiAobmFtZS5uYW1lc3BhY2VVUkkoKSA9PSB4aHRtbE5hbWVzcGFjZVVSSSkKLSAg
ICAgICAgZWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlRWxlbWVudChuYW1lLCAq
dGhpcywgbnVsbHB0ciwgY3JlYXRlZEJ5UGFyc2VyKTsKLSAgICBlbHNlIGlmIChuYW1lLm5hbWVz
cGFjZVVSSSgpID09IFNWR05hbWVzOjpzdmdOYW1lc3BhY2VVUkkpCisgICAgaWYgKG5hbWUubmFt
ZXNwYWNlVVJJKCkgPT0geGh0bWxOYW1lc3BhY2VVUkkpIHsKKyAgICAgICAgZWxlbWVudCA9IEhU
TUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlS25vd25FbGVtZW50KG5hbWUsICp0aGlzLCBudWxscHRy
LCBjcmVhdGVkQnlQYXJzZXIpOworICAgICAgICBpZiAoVU5MSUtFTFkoIWVsZW1lbnQpKQorICAg
ICAgICAgICAgZWxlbWVudCA9IGNyZWF0ZUZhbGxiYWNrSFRNTEVsZW1lbnQoKnRoaXMsIG5hbWUp
OworICAgIH0gZWxzZSBpZiAobmFtZS5uYW1lc3BhY2VVUkkoKSA9PSBTVkdOYW1lczo6c3ZnTmFt
ZXNwYWNlVVJJKQogICAgICAgICBlbGVtZW50ID0gU1ZHRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUVs
ZW1lbnQobmFtZSwgKnRoaXMsIGNyZWF0ZWRCeVBhcnNlcik7CiAjaWYgRU5BQkxFKE1BVEhNTCkK
ICAgICBlbHNlIGlmIChuYW1lLm5hbWVzcGFjZVVSSSgpID09IE1hdGhNTE5hbWVzOjptYXRobWxO
YW1lc3BhY2VVUkkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTGlmZWN5Y2xlQ2FsbGJhY2tR
dWV1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0xpZmVjeWNsZUNhbGxi
YWNrUXVldWUuY3BwCShyZXZpc2lvbiAxOTc2MTMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTGlm
ZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAK
ICNpbmNsdWRlICJKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJKU0RPTUJp
bmRpbmcuaCIKICNpbmNsdWRlIDxoZWFwL0hlYXAuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwu
aD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQwLDkg
KzQxLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExpZmVjeWNsZVF1ZXVlSXRlbSB7
CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBUeXBlIHsKKyAgICAgICAgRWxlbWVudFVwZ3JhZGUs
CiAgICAgICAgIEF0dHJpYnV0ZUNoYW5nZWQsCiAgICAgfTsKIAorICAgIExpZmVjeWNsZVF1ZXVl
SXRlbShUeXBlIHR5cGUsIEVsZW1lbnQmIGVsZW1lbnQsIEpTQ3VzdG9tRWxlbWVudEludGVyZmFj
ZSYgaW50ZXJmYWNlKQorICAgICAgICA6IG1fdHlwZSh0eXBlKQorICAgICAgICAsIG1fZWxlbWVu
dChlbGVtZW50KQorICAgICAgICAsIG1faW50ZXJmYWNlKGludGVyZmFjZSkKKyAgICB7IH0KKwog
ICAgIExpZmVjeWNsZVF1ZXVlSXRlbShFbGVtZW50JiBlbGVtZW50LCBKU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UmIGludGVyZmFjZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1
ZSkKICAgICAgICAgOiBtX3R5cGUoVHlwZTo6QXR0cmlidXRlQ2hhbmdlZCkKICAgICAgICAgLCBt
X2VsZW1lbnQoZWxlbWVudCkKQEAgLTU0LDE0ICs2MiwyMiBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGludm9rZSgpCiAgICAgewotICAgICAgICBtX2ludGVyZmFjZS0+YXR0cmlidXRlQ2hhbmdlZCht
X2VsZW1lbnQuZ2V0KCksIG1fYXR0cmlidXRlTmFtZSwgbV9vbGRWYWx1ZSwgbV9uZXdWYWx1ZSk7
CisgICAgICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgICAgIGNhc2UgVHlwZTo6RWxlbWVudFVw
Z3JhZGU6CisgICAgICAgICAgICBtX2ludGVyZmFjZS0+dXBncmFkZUVsZW1lbnQobV9lbGVtZW50
LmdldCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFR5cGU6OkF0dHJpYnV0
ZUNoYW5nZWQ6CisgICAgICAgICAgICBBU1NFUlQobV9hdHRyaWJ1dGVOYW1lKTsKKyAgICAgICAg
ICAgIG1faW50ZXJmYWNlLT5hdHRyaWJ1dGVDaGFuZ2VkKG1fZWxlbWVudC5nZXQoKSwgbV9hdHRy
aWJ1dGVOYW1lLnZhbHVlKCksIG1fb2xkVmFsdWUsIG1fbmV3VmFsdWUpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KICAgICB9CiAKIHByaXZhdGU6CiAgICAgVHlwZSBtX3R5cGU7CiAg
ICAgUmVmPEVsZW1lbnQ+IG1fZWxlbWVudDsKICAgICBSZWY8SlNDdXN0b21FbGVtZW50SW50ZXJm
YWNlPiBtX2ludGVyZmFjZTsKLSAgICBRdWFsaWZpZWROYW1lIG1fYXR0cmlidXRlTmFtZTsKKyAg
ICBPcHRpb25hbDxRdWFsaWZpZWROYW1lPiBtX2F0dHJpYnV0ZU5hbWU7CiAgICAgQXRvbWljU3Ry
aW5nIG1fb2xkVmFsdWU7CiAgICAgQXRvbWljU3RyaW5nIG1fbmV3VmFsdWU7CiB9OwpAQCAtNzQs
NiArOTAsMTIgQEAgTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZTo6fkxpZmVjeWNsZUNhbGxiYQogICAg
IEFTU0VSVChtX2l0ZW1zLmlzRW1wdHkoKSk7CiB9CiAKK3ZvaWQgTGlmZWN5Y2xlQ2FsbGJhY2tR
dWV1ZTo6ZW5xdWV1ZUVsZW1lbnRVcGdyYWRlKEVsZW1lbnQmIGVsZW1lbnQsIEpTQ3VzdG9tRWxl
bWVudEludGVyZmFjZSYgaW50ZXJmYWNlKQoreworICAgIGlmIChhdXRvKiBxdWV1ZSA9IEN1c3Rv
bUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2s6OmVuc3VyZUN1cnJlbnRRdWV1ZSgpKQor
ICAgICAgICBxdWV1ZS0+bV9pdGVtcy5hcHBlbmQoTGlmZWN5Y2xlUXVldWVJdGVtKExpZmVjeWNs
ZVF1ZXVlSXRlbTo6VHlwZTo6RWxlbWVudFVwZ3JhZGUsIGVsZW1lbnQsIGludGVyZmFjZSkpOwor
fQorCiB2b2lkIExpZmVjeWNsZUNhbGxiYWNrUXVldWU6OmVucXVldWVBdHRyaWJ1dGVDaGFuZ2Vk
Q2FsbGJhY2soRWxlbWVudCYgZWxlbWVudCwgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlJiBpbnRl
cmZhY2UsCiAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9MaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUuaAkocmV2aXNp
b24gMTk3NjEzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUu
aAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsOCBAQCBwdWJsaWM6CiAgICAgTGlmZWN5Y2xl
Q2FsbGJhY2tRdWV1ZSgpOwogICAgIH5MaWZlY3ljbGVDYWxsYmFja1F1ZXVlKCk7CiAKKyAgICBz
dGF0aWMgdm9pZCBlbnF1ZXVlRWxlbWVudFVwZ3JhZGUoRWxlbWVudCYsIEpTQ3VzdG9tRWxlbWVu
dEludGVyZmFjZSYpOworCiAgICAgc3RhdGljIHZvaWQgZW5xdWV1ZUF0dHJpYnV0ZUNoYW5nZWRD
YWxsYmFjayhFbGVtZW50JiwgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlJiwKICAgICAgICAgY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgbmV3VmFsdWUpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaWRsCShyZXZpc2lvbiAx
OTc2MTMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTcwLDcgKzcwLDEwIEBACiAgICAgW0N1c3RvbSwgUmFpc2VzRXhjZXB0aW9uXSBOb2RlIGFwcGVu
ZENoaWxkKFtDdXN0b21SZXR1cm5dIE5vZGUgbmV3Q2hpbGQpOwogCiAgICAgYm9vbGVhbiAgICAg
ICAgICAgIGhhc0NoaWxkTm9kZXMoKTsKLSAgICBbTmV3T2JqZWN0LCBSYWlzZXNFeGNlcHRpb24s
IEltcGxlbWVudGVkQXM9Y2xvbmVOb2RlRm9yQmluZGluZ3NdIE5vZGUgY2xvbmVOb2RlKFtEZWZh
dWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgYm9vbGVhbiBkZWVwKTsKKworICAgIFtOZXdPYmplY3Qs
IFJhaXNlc0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1jbG9uZU5vZGVGb3JCaW5kaW5ncywgSW52
b2tlc0N1c3RvbUVsZW1lbnRMaWZlY3ljbGVDYWxsYmFja3NdCisgICAgTm9kZSBjbG9uZU5vZGUo
W0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBib29sZWFuIGRlZXApOworCiAgICAgdm9pZCAg
ICAgICAgICAgICAgIG5vcm1hbGl6ZSgpOwogCiAgICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2
ZWwgMjoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCShyZXZpc2lvbiAxOTc2MTMpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAkod29ya2luZyBjb3B5KQpAQCAtMTA0
NywxMiArMTA0NywyMyBAQCBSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+ICRw
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxl
bWVudD4gJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVtZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50JGZvcm1FbGVtZW50
QXJndW1lbnRGb3JEZWZpbml0aW9uLCBib29sIGNyZWF0ZWRCeVBhcnNlcikKK1JlZlB0cjwkcGFy
YW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRG
YWN0b3J5OjpjcmVhdGVLbm93bkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgRG9j
dW1lbnQmIGRvY3VtZW50JGZvcm1FbGVtZW50QXJndW1lbnRGb3JEZWZpbml0aW9uLCBib29sIGNy
ZWF0ZWRCeVBhcnNlcikKIHsKLSAgICBSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1l
bnQ+IGVsZW1lbnQgPSAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudEZhY3Rvcnk6OmNyZWF0
ZUtub3duRWxlbWVudCgkYXJndW1lbnRMaXN0KTsKLSAgICBpZiAoTElLRUxZKGVsZW1lbnQpKQot
ICAgICAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNlTm9uTnVsbCgpOwotICAgIHJldHVybiAkcGFy
YW1ldGVyc3tmYWxsYmFja0ludGVyZmFjZU5hbWV9OjpjcmVhdGUoUXVhbGlmaWVkTmFtZShudWxs
QXRvbSwgbmFtZSwgJHtsb3dlcmNhc2VOYW1lc3BhY2VQcmVmaXh9TmFtZXNwYWNlVVJJKSwgZG9j
dW1lbnQpOworICAgIGNvbnN0IENvbnN0cnVjdG9yRnVuY3Rpb25NYXBFbnRyeSYgZW50cnkgPSBm
aW5kJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRDb25zdHJ1Y3RvckZ1bmN0aW9uKG5hbWUu
bG9jYWxOYW1lKCkpOworICAgIGlmIChMSUtFTFkoZW50cnkuZnVuY3Rpb24pKQorICAgICAgICBy
ZXR1cm4gZW50cnkuZnVuY3Rpb24oJGFyZ3VtZW50TGlzdCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK1JlZjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gJHBhcmFtZXRlcnN7bmFt
ZXNwYWNlfUVsZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
bG9jYWxOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQkZm9ybUVsZW1lbnRBcmd1bWVudEZvckRlZmlu
aXRpb24sIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQoreworICAgIGNvbnN0IENvbnN0cnVjdG9yRnVu
Y3Rpb25NYXBFbnRyeSYgZW50cnkgPSBmaW5kJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRD
b25zdHJ1Y3RvckZ1bmN0aW9uKGxvY2FsTmFtZSk7CisgICAgaWYgKExJS0VMWShlbnRyeS5mdW5j
dGlvbikpIHsKKyAgICAgICAgQVNTRVJUKGVudHJ5LnF1YWxpZmllZE5hbWUpOworICAgICAgICBj
b25zdCBhdXRvJiBuYW1lID0gKmVudHJ5LnF1YWxpZmllZE5hbWU7CisgICAgICAgIHJldHVybiBl
bnRyeS5mdW5jdGlvbigkYXJndW1lbnRMaXN0KTsKKyAgICB9CisgICAgcmV0dXJuICRwYXJhbWV0
ZXJze2ZhbGxiYWNrSW50ZXJmYWNlTmFtZX06OmNyZWF0ZShRdWFsaWZpZWROYW1lKG51bGxBdG9t
LCBsb2NhbE5hbWUsICR7bG93ZXJjYXNlTmFtZXNwYWNlUHJlZml4fU5hbWVzcGFjZVVSSSksIGRv
Y3VtZW50KTsKIH0KIAogUmVmPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PiAkcGFyYW1l
dGVyc3tuYW1lc3BhY2V9RWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50JGZvcm1FbGVtZW50QXJndW1lbnRGb3JE
ZWZpbml0aW9uLCBib29sIGNyZWF0ZWRCeVBhcnNlcikKQEAgLTEwODksMjkgKzExMDAsMzYgQEAg
c3ViIHByaW50RmFjdG9yeUhlYWRlckZpbGUKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAg
Y2xhc3MgRG9jdW1lbnQ7Ci0gICAgY2xhc3MgSFRNTEZvcm1FbGVtZW50OwotICAgIGNsYXNzIFF1
YWxpZmllZE5hbWU7CitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIEhUTUxGb3JtRWxlbWVudDsKK2Ns
YXNzIFF1YWxpZmllZE5hbWU7CiAKLSAgICBjbGFzcyAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxl
bWVudDsKK2NsYXNzICRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50OwogCi0gICAgY2xhc3Mg
JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRGYWN0b3J5IHsKLSAgICBwdWJsaWM6CitjbGFz
cyAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudEZhY3RvcnkgeworcHVibGljOgogRU5ECiA7
CiAKLXByaW50IEYgIiAgICAgICAgc3RhdGljIFJlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9
RWxlbWVudD4gY3JlYXRlS25vd25FbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1l
LCBEb2N1bWVudCYiOworcHJpbnQgRiAic3RhdGljIFJlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3Bh
Y2V9RWxlbWVudD4gY3JlYXRlS25vd25FbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIERvY3Vt
ZW50JiI7CiBwcmludCBGICIsIEhUTUxGb3JtRWxlbWVudCogPSBudWxscHRyIiBpZiAkcGFyYW1l
dGVyc3tuYW1lc3BhY2V9IGVxICJIVE1MIjsKLXByaW50IEYgIiwgYm9vbCBjcmVhdGVkQnlQYXJz
ZXIgPSBmYWxzZSk7XG5cbiI7Ci1wcmludCBGICIgICAgICAgIHN0YXRpYyBSZWY8JHBhcmFtZXRl
cnN7bmFtZXNwYWNlfUVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBs
b2NhbE5hbWUsIERvY3VtZW50JiI7CitwcmludCBGICIsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyID0g
ZmFsc2UpO1xuIjsKKworcHJpbnQgRiAic3RhdGljIFJlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3Bh
Y2V9RWxlbWVudD4gY3JlYXRlS25vd25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCYiOwogcHJpbnQgRiAiLCBIVE1MRm9ybUVsZW1lbnQqID0gbnVsbHB0ciIgaWYgJHBhcmFt
ZXRlcnN7bmFtZXNwYWNlfSBlcSAiSFRNTCI7CiBwcmludCBGICIsIGJvb2wgY3JlYXRlZEJ5UGFy
c2VyID0gZmFsc2UpO1xuIjsKLXByaW50IEYgIiAgICAgICAgc3RhdGljIFJlZjwkcGFyYW1ldGVy
c3tuYW1lc3BhY2V9RWxlbWVudD4gY3JlYXRlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBs
b2NhbE5hbWUsIERvY3VtZW50JiI7CisKK3ByaW50IEYgInN0YXRpYyBSZWY8JHBhcmFtZXRlcnN7
bmFtZXNwYWNlfUVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgRG9j
dW1lbnQmIjsKK3ByaW50IEYgIiwgSFRNTEZvcm1FbGVtZW50KiA9IG51bGxwdHIiIGlmICRwYXJh
bWV0ZXJze25hbWVzcGFjZX0gZXEgIkhUTUwiOworcHJpbnQgRiAiLCBib29sIGNyZWF0ZWRCeVBh
cnNlciA9IGZhbHNlKTtcbiI7CisKK3ByaW50IEYgInN0YXRpYyBSZWY8JHBhcmFtZXRlcnN7bmFt
ZXNwYWNlfUVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50JiI7CiBwcmludCBGICIsIEhUTUxGb3JtRWxlbWVudCogPSBudWxscHRyIiBpZiAkcGFyYW1l
dGVyc3tuYW1lc3BhY2V9IGVxICJIVE1MIjsKIHByaW50IEYgIiwgYm9vbCBjcmVhdGVkQnlQYXJz
ZXIgPSBmYWxzZSk7XG4iOwogCiBwcmludGYgRjw8RU5ECi0gICAgfTsKK307CisKIH0KIAogI2Vu
ZGlmIC8vICRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50RmFjdG9yeV9oCkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxOTc2MTMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNSBAQAorMjAxNi0wMy0wNSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0
Lm9yZz4KKworICAgICAgICBBZGQgdGhlIHN1cHBvcnQgZm9yIHVwZ3JhZGluZyBjdXN0b20gZWxl
bWVudHMgaW4gY2xvbmVOb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTUwNjIKKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4K
KworICAgICAgICBBZGRlZCB0ZXN0IGNhc2VzIGZvciB1cGdyYWRpbmcgZWxlbWVudHMgd2l0aCBO
b2RlLnByb3RvdHlwZS5jbG9uZU5vZGUuCisKKyAgICAgICAgKiBmYXN0L2N1c3RvbS1lbGVtZW50
cy9saWZlY3ljbGUtY2FsbGJhY2stdGltaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0
L2N1c3RvbS1lbGVtZW50cy9saWZlY3ljbGUtY2FsbGJhY2stdGltaW5nLmh0bWw6CisKIDIwMTYt
MDMtMDQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIGJh
c2ljIHN1cHBvcnQgZm9yIGF0dHJpYnV0ZUNoYW5nZWQgbGlmZWN5Y2xlIGNhbGxiYWNrCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9saWZlY3ljbGUtY2FsbGJhY2stdGlt
aW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1l
bGVtZW50cy9saWZlY3ljbGUtY2FsbGJhY2stdGltaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MTk3NjEzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvbGlmZWN5Y2xlLWNh
bGxiYWNrLXRpbWluZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0IEBA
CiAKIFBBU1Mgc2V0QXR0cmlidXRlIGFuZCByZW1vdmVBdHRyaWJ1dGUgbXVzdCBlbnF1ZXVlIGFu
ZCBpbnZva2UgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrIAorUEFTUyBDYWxsaW5nIE5vZGUucHJv
dG90eXBlLmNsb25lTm9kZShmYWxzZSkgbXVzdCBwdXNoIGEgbmV3IGVsZW1lbnQgcXVldWUgdG8g
dGhlIHByb2Nlc3Npbmcgc3RhY2sgCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVs
ZW1lbnRzL2xpZmVjeWNsZS1jYWxsYmFjay10aW1pbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9saWZlY3ljbGUtY2FsbGJhY2stdGltaW5nLmh0
bWwJKHJldmlzaW9uIDE5NzYxMykKKysrIExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRz
L2xpZmVjeWNsZS1jYWxsYmFjay10aW1pbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiAr
NDcsNDIgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAKIH0sICdzZXRBdHRyaWJ1dGUgYW5kIHJlbW92
ZUF0dHJpYnV0ZSBtdXN0IGVucXVldWUgYW5kIGludm9rZSBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJh
Y2snKTsKIAordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIHNob3VsZENsb25lQW5vdGhlcklu
c3RhbmNlID0gZmFsc2U7CisgICAgdmFyIGFub3RoZXJJbnN0YW5jZUNsb25lOworICAgIHZhciBs
b2cgPSBbXTsKKworICAgIGNsYXNzIFNlbGZDbG9uaW5nRWxlbWVudCBleHRlbmRzIEhUTUxFbGVt
ZW50IHsKKyAgICAgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgICAgICBzdXBlcigpOworICAg
ICAgICAgICAgbG9nLnB1c2goW3RoaXMsICdiZWdpbiddKTsKKyAgICAgICAgICAgIGlmIChzaG91
bGRDbG9uZUFub3RoZXJJbnN0YW5jZSkgeworICAgICAgICAgICAgICAgIHNob3VsZENsb25lQW5v
dGhlckluc3RhbmNlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgYW5vdGhlckluc3RhbmNlQ2xv
bmUgPSBhbm90aGVySW5zdGFuY2UuY2xvbmVOb2RlKGZhbHNlKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGxvZy5wdXNoKFt0aGlzLCAnZW5kJ10pOworICAgICAgICB9CisgICAgfQorICAg
IGRvY3VtZW50LmRlZmluZUVsZW1lbnQoJ3NlbGYtY2xvbmluZy1lbGVtZW50JywgU2VsZkNsb25p
bmdFbGVtZW50KTsKKworICAgIHZhciBpbnN0YW5jZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3NlbGYtY2xvbmluZy1lbGVtZW50Jyk7CisgICAgdmFyIGFub3RoZXJJbnN0YW5jZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ3NlbGYtY2xvbmluZy1lbGVtZW50Jyk7CisgICAgc2hvdWxkQ2xv
bmVBbm90aGVySW5zdGFuY2UgPSB0cnVlOworCisgICAgYXNzZXJ0X2VxdWFscyhsb2cubGVuZ3Ro
LCA0KTsKKyAgICB2YXIgaW5zdGFuY2VDbG9uZSA9IGluc3RhbmNlLmNsb25lTm9kZShmYWxzZSk7
CisKKyAgICBhc3NlcnRfZXF1YWxzKGxvZy5sZW5ndGgsIDgpOworICAgIGFzc2VydF9hcnJheV9l
cXVhbHMobG9nWzBdLCBbaW5zdGFuY2UsICdiZWdpbiddKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKGxvZ1sxXSwgW2luc3RhbmNlLCAnZW5kJ10pOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
bG9nWzJdLCBbYW5vdGhlckluc3RhbmNlLCAnYmVnaW4nXSk7CisgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhsb2dbM10sIFthbm90aGVySW5zdGFuY2UsICdlbmQnXSk7CisgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyhsb2dbNF0sIFtpbnN0YW5jZUNsb25lLCAnYmVnaW4nXSk7CisgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhsb2dbNV0sIFthbm90aGVySW5zdGFuY2VDbG9uZSwgJ2JlZ2luJ10pOworICAg
IGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzZdLCBbYW5vdGhlckluc3RhbmNlQ2xvbmUsICdlbmQn
XSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbN10sIFtpbnN0YW5jZUNsb25lLCAnZW5k
J10pOworfSwgJ0NhbGxpbmcgTm9kZS5wcm90b3R5cGUuY2xvbmVOb2RlKGZhbHNlKSBtdXN0IHB1
c2ggYSBuZXcgZWxlbWVudCBxdWV1ZSB0byB0aGUgcHJvY2Vzc2luZyBzdGFjaycpOworCiA8L3Nj
cmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVs
ZW1lbnRzL3VwZ3JhZGluZy9Ob2RlLWNsb25lTm9kZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdXBncmFkaW5nL05vZGUtY2xvbmVO
b2RlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3VzdG9t
LWVsZW1lbnRzL3VwZ3JhZGluZy9Ob2RlLWNsb25lTm9kZS1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw5IEBACisKK1BBU1MgTm9kZS5wcm90b3R5cGUuY2xvbmVOb2RlKGZh
bHNlKSBtdXN0IGJlIGFibGUgdG8gY2xvbmUgYSBjdXN0b20gZWxlbWVudCAKK1BBU1MgTm9kZS5w
cm90b3R5cGUuY2xvbmVOb2RlKGZhbHNlKSBtdXN0IGJlIGFibGUgdG8gY2xvbmUgYSBjdXN0b20g
ZWxlbWVudCBpbnNpZGUgYW4gaWZyYW1lIAorUEFTUyBOb2RlLnByb3RvdHlwZS5jbG9uZU5vZGUo
dHJ1ZSkgbXVzdCBiZSBhYmxlIHRvIGNsb25lIGEgZGVzY2VuZGVudCBjdXN0b20gZWxlbWVudCAK
K1BBU1MgTm9kZS5wcm90b3R5cGUuY2xvbmVOb2RlKHRydWUpIG11c3QgYmUgYWJsZSB0byBjbG9u
ZSBhIGRlc2NlbmRlbnQgY3VzdG9tIGVsZW1lbnQgCitQQVNTIEhUTUxFbGVtZW50IGNvbnN0cnVj
dG9yIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiB0aGUgdG9wIG9mIHRoZSBj
b25zdHJ1Y3Rpb24gc3RhY2sgaXMgbWFya2VkIEFscmVhZHlDb25zdHJ1Y3RlZCBkdWUgdG8gYSBj
dXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciBjb25zdHJ1Y3RpbmcgaXRzZWxmIGFmdGVyIHN1cGVy
KCkgY2FsbCAKK1BBU1MgSFRNTEVsZW1lbnQgY29uc3RydWN0b3IgbXVzdCB0aHJvdyBhbiBJbnZh
bGlkU3RhdGVFcnJvciB3aGVuIHRoZSB0b3Agb2YgdGhlIGNvbnN0cnVjdGlvbiBzdGFjayBpcyBt
YXJrZWQgQWxyZWFkeUNvbnN0cnVjdGVkIGR1ZSB0byBhIGN1c3RvbSBlbGVtZW50IGNvbnN0cnVj
dG9yIGNvbnN0cnVjdGluZyBpdHNlbGYgYmVmb3JlIHN1cGVyKCkgY2FsbCAKK1BBU1MgVXBncmFk
aW5nIGEgY3VzdG9tIGVsZW1lbnQgbXVzdCB0aHJvdyBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHRo
ZSBjdXN0b20gZWxlbWVudCdzIGNvbnN0cnVjdG9yIHJldHVybnMgYW5vdGhlciBlbGVtZW50IAor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy91cGdyYWRpbmcvTm9kZS1j
bG9uZU5vZGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVt
ZW50cy91cGdyYWRpbmcvTm9kZS1jbG9uZU5vZGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3VwZ3JhZGluZy9Ob2RlLWNsb25lTm9kZS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTY5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8dGl0bGU+Q3VzdG9tIEVsZW1lbnRzOiBFeHRlbnNpb25zIHRvIERvY3VtZW50
IGludGVyZmFjZTwvdGl0bGU+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJSeW9zdWtlIE5p
d2EiIGhyZWY9Im1haWx0bzpybml3YUB3ZWJraXQub3JnIj4KKzxtZXRhIG5hbWU9ImFzc2VydCIg
Y29udGVudD0iTm9kZS5wcm90b3R5cGUuY2xvbmVOb2RlIHNob3VsZCB1cGdyYWRlIGEgY3VzdG9t
IGVsZW1lbnQiPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL3czYy5naXRodWIuaW8v
d2ViY29tcG9uZW50cy9zcGVjL2N1c3RvbS8jdXBncmFkaW5nIj4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayBy
ZWw9J3N0eWxlc2hlZXQnIGhyZWY9Jy4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3Mn
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2PgorPHNjcmlwdD4KKworZnVu
Y3Rpb24gd2l0aE5ld0RvY3VtZW50V2l0aEFCcm93c2luZ0NvbnRleHQoY2FsbGJhY2spIHsKKyAg
ICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7CisgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpOworICAgIHRyeSB7CisgICAgICAgIGNhbGxi
YWNrKGlmcmFtZS5jb250ZW50V2luZG93LCBpZnJhbWUuY29udGVudERvY3VtZW50KTsgICAgICAg
IAorICAgIH0gZmluYWxseSB7CisgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoaWZy
YW1lKTsKKyAgICB9Cit9CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIE15Q3VzdG9t
RWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50IHt9CisgICAgZG9jdW1lbnQuZGVmaW5lRWxlbWVu
dCgnbXktY3VzdG9tLWVsZW1lbnQnLCBNeUN1c3RvbUVsZW1lbnQpOworCisgICAgdmFyIGluc3Rh
bmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbXktY3VzdG9tLWVsZW1lbnQnKTsKKyAgICBh
c3NlcnRfdHJ1ZShpbnN0YW5jZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KTsKKyAgICBhc3NlcnRf
dHJ1ZShpbnN0YW5jZSBpbnN0YW5jZW9mIE15Q3VzdG9tRWxlbWVudCk7CisKKyAgICB2YXIgY2xv
bmUgPSBpbnN0YW5jZS5jbG9uZU5vZGUoZmFsc2UpOworICAgIGFzc2VydF9ub3RfZXF1YWxzKGlu
c3RhbmNlLCBjbG9uZSk7CisgICAgYXNzZXJ0X3RydWUoY2xvbmUgaW5zdGFuY2VvZiBIVE1MRWxl
bWVudCwKKyAgICAgICAgJ0EgY2xvbmVkIGN1c3RvbSBlbGVtZW50IG11c3QgYmUgYW4gaW5zdGFu
Y2Ugb2YgSFRNTEVsZW1lbnQnKTsKKyAgICBhc3NlcnRfdHJ1ZShjbG9uZSBpbnN0YW5jZW9mIE15
Q3VzdG9tRWxlbWVudCwKKyAgICAgICAgJ0EgY2xvbmVkIGN1c3RvbSBlbGVtZW50IG11c3QgYmUg
YW4gaW5zdGFuY2Ugb2YgdGhlIGN1c3RvbSBlbGVtZW50Jyk7Cit9LCAnTm9kZS5wcm90b3R5cGUu
Y2xvbmVOb2RlKGZhbHNlKSBtdXN0IGJlIGFibGUgdG8gY2xvbmUgYSBjdXN0b20gZWxlbWVudCcp
OworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB3aXRoTmV3RG9jdW1lbnRXaXRoQUJyb3dzaW5n
Q29udGV4dChmdW5jdGlvbiAoY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAg
ICAgIGNsYXNzIE15Q3VzdG9tRWxlbWVudCBleHRlbmRzIGNvbnRlbnRXaW5kb3cuSFRNTEVsZW1l
bnQge30KKyAgICAgICAgY29udGVudERvY3VtZW50LmRlZmluZUVsZW1lbnQoJ215LWN1c3RvbS1l
bGVtZW50JywgTXlDdXN0b21FbGVtZW50KTsKKworICAgICAgICB2YXIgaW5zdGFuY2UgPSBjb250
ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbXktY3VzdG9tLWVsZW1lbnQnKTsKKyAgICAgICAg
YXNzZXJ0X3RydWUoaW5zdGFuY2UgaW5zdGFuY2VvZiBjb250ZW50V2luZG93LkhUTUxFbGVtZW50
KTsKKyAgICAgICAgYXNzZXJ0X3RydWUoaW5zdGFuY2UgaW5zdGFuY2VvZiBNeUN1c3RvbUVsZW1l
bnQpOworCisgICAgICAgIHZhciBjbG9uZSA9IGluc3RhbmNlLmNsb25lTm9kZShmYWxzZSk7Cisg
ICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGluc3RhbmNlLCBjbG9uZSk7CisgICAgICAgIGFzc2Vy
dF90cnVlKGNsb25lIGluc3RhbmNlb2YgY29udGVudFdpbmRvdy5IVE1MRWxlbWVudCwKKyAgICAg
ICAgICAgICdBIGNsb25lZCBjdXN0b20gZWxlbWVudCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEhU
TUxFbGVtZW50Jyk7CisgICAgICAgIGFzc2VydF90cnVlKGNsb25lIGluc3RhbmNlb2YgTXlDdXN0
b21FbGVtZW50LAorICAgICAgICAgICAgJ0EgY2xvbmVkIGN1c3RvbSBlbGVtZW50IG11c3QgYmUg
YW4gaW5zdGFuY2Ugb2YgdGhlIGN1c3RvbSBlbGVtZW50Jyk7CisgICAgfSk7Cit9LCAnTm9kZS5w
cm90b3R5cGUuY2xvbmVOb2RlKGZhbHNlKSBtdXN0IGJlIGFibGUgdG8gY2xvbmUgYSBjdXN0b20g
ZWxlbWVudCBpbnNpZGUgYW4gaWZyYW1lJyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHdp
dGhOZXdEb2N1bWVudFdpdGhBQnJvd3NpbmdDb250ZXh0KGZ1bmN0aW9uIChjb250ZW50V2luZG93
LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgY2xhc3MgTXlDdXN0b21FbGVtZW50IGV4dGVu
ZHMgY29udGVudFdpbmRvdy5IVE1MRWxlbWVudCB7IH0KKyAgICAgICAgY29udGVudERvY3VtZW50
LmRlZmluZUVsZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50JywgTXlDdXN0b21FbGVtZW50KTsKKwor
ICAgICAgICB2YXIgaW5zdGFuY2UgPSBjb250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbXkt
Y3VzdG9tLWVsZW1lbnQnKTsKKyAgICAgICAgdmFyIGNvbnRhaW5lciA9IGNvbnRlbnREb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGlu
c3RhbmNlKTsKKworICAgICAgICB2YXIgY29udGFpbmVyQ2xvbmUgPSBjb250YWluZXIuY2xvbmVO
b2RlKHRydWUpOworICAgICAgICBhc3NlcnRfdHJ1ZShjb250YWluZXJDbG9uZSBpbnN0YW5jZW9m
IGNvbnRlbnRXaW5kb3cuSFRNTERpdkVsZW1lbnQpOworCisgICAgICAgIHZhciBjbG9uZSA9IGNv
bnRhaW5lckNsb25lLmZpcnN0Q2hpbGQ7CisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGluc3Rh
bmNlLCBjbG9uZSk7CisgICAgICAgIGFzc2VydF90cnVlKGNsb25lIGluc3RhbmNlb2YgY29udGVu
dFdpbmRvdy5IVE1MRWxlbWVudCwKKyAgICAgICAgICAgICdBIGNsb25lZCBjdXN0b20gZWxlbWVu
dCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEhUTUxFbGVtZW50Jyk7CisgICAgICAgIGFzc2VydF90
cnVlKGNsb25lIGluc3RhbmNlb2YgTXlDdXN0b21FbGVtZW50LAorICAgICAgICAgICAgJ0EgY2xv
bmVkIGN1c3RvbSBlbGVtZW50IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgdGhlIGN1c3RvbSBlbGVt
ZW50Jyk7CisgICAgfSk7Cit9LCAnTm9kZS5wcm90b3R5cGUuY2xvbmVOb2RlKHRydWUpIG11c3Qg
YmUgYWJsZSB0byBjbG9uZSBhIGRlc2NlbmRlbnQgY3VzdG9tIGVsZW1lbnQnKTsKKwordGVzdChm
dW5jdGlvbiAoKSB7CisgICAgd2l0aE5ld0RvY3VtZW50V2l0aEFCcm93c2luZ0NvbnRleHQoZnVu
Y3Rpb24gKGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICB2YXIgcGFy
ZW50Tm9kZUluQ29uc3RydWN0b3I7CisgICAgICAgIHZhciBwcmV2aW91c1NpYmxpbmdJbkNvbnN0
cnVjdG9yOworICAgICAgICB2YXIgbmV4dFNpYmxpbmdJbkNvbnN0cnVjdG9yOworICAgICAgICBj
bGFzcyBNeUN1c3RvbUVsZW1lbnQgZXh0ZW5kcyBjb250ZW50V2luZG93LkhUTUxFbGVtZW50IHsK
KyAgICAgICAgICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICAgICAgICAgIHN1cGVyKCk7Cisg
ICAgICAgICAgICAgICAgcGFyZW50Tm9kZUluQ29uc3RydWN0b3IgPSB0aGlzLnBhcmVudE5vZGU7
CisgICAgICAgICAgICAgICAgcHJldmlvdXNTaWJsaW5nSW5Db25zdHJ1Y3RvciA9IHRoaXMucHJl
dmlvdXNTaWJsaW5nOworICAgICAgICAgICAgICAgIG5leHRTaWJsaW5nSW5Db25zdHJ1Y3RvciA9
IHRoaXMubmV4dFNpYmxpbmc7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY29u
dGVudERvY3VtZW50LmRlZmluZUVsZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50JywgTXlDdXN0b21F
bGVtZW50KTsKKworICAgICAgICB2YXIgaW5zdGFuY2UgPSBjb250ZW50RG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnbXktY3VzdG9tLWVsZW1lbnQnKTsKKyAgICAgICAgdmFyIHNpYmxpbmdCZWZvcmVJ
bnN0YW5jZSA9IGNvbnRlbnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCdiJyk7CisgICAgICAgIHZh
ciBzaWJsaW5nQWZ0ZXJJbnN0YW5jZSA9IGNvbnRlbnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCdh
Jyk7CisgICAgICAgIHZhciBjb250YWluZXIgPSBjb250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7CisgICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChzaWJsaW5nQmVmb3JlSW5z
dGFuY2UpOworICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoaW5zdGFuY2UpOworICAgICAg
ICBjb250YWluZXIuYXBwZW5kQ2hpbGQoc2libGluZ0FmdGVySW5zdGFuY2UpOworCisgICAgICAg
IHZhciBjb250YWluZXJDbG9uZSA9IGNvbnRhaW5lci5jbG9uZU5vZGUodHJ1ZSk7CisKKyAgICAg
ICAgYXNzZXJ0X2VxdWFscyhwYXJlbnROb2RlSW5Db25zdHJ1Y3RvciwgY29udGFpbmVyQ2xvbmUs
CisgICAgICAgICAgICAnQW4gdXBncmFkZWQgZWxlbWVudCBtdXN0IGhhdmUgaXRzIHBhcmVudE5v
ZGUgc2V0IGJlZm9yZSB0aGUgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IgaXMgY2FsbGVkJyk7
CisgICAgICAgIGFzc2VydF9lcXVhbHMocHJldmlvdXNTaWJsaW5nSW5Db25zdHJ1Y3RvciwgY29u
dGFpbmVyQ2xvbmUuZmlyc3RDaGlsZCwKKyAgICAgICAgICAgICdBbiB1cGdyYWRlZCBlbGVtZW50
IG11c3QgaGF2ZSBpdHMgcHJldmlvdXNTaWJsaW5nIHNldCBiZWZvcmUgdGhlIGN1c3RvbSBlbGVt
ZW50IGNvbnN0cnVjdG9yIGlzIGNhbGxlZCcpOworICAgICAgICBhc3NlcnRfZXF1YWxzKG5leHRT
aWJsaW5nSW5Db25zdHJ1Y3RvciwgY29udGFpbmVyQ2xvbmUubGFzdENoaWxkLAorICAgICAgICAg
ICAgJ0FuIHVwZ3JhZGVkIGVsZW1lbnQgbXVzdCBoYXZlIGl0cyBuZXh0U2libGluZyBzZXQgYmVm
b3JlIHRoZSBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciBpcyBjYWxsZWQnKTsKKyAgICB9KTsK
K30sICdOb2RlLnByb3RvdHlwZS5jbG9uZU5vZGUodHJ1ZSkgbXVzdCBiZSBhYmxlIHRvIGNsb25l
IGEgZGVzY2VuZGVudCBjdXN0b20gZWxlbWVudCcpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAg
ICB3aXRoTmV3RG9jdW1lbnRXaXRoQUJyb3dzaW5nQ29udGV4dChmdW5jdGlvbiAoY29udGVudFdp
bmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgIGNsYXNzIE15Q3VzdG9tRWxlbWVudCBl
eHRlbmRzIGNvbnRlbnRXaW5kb3cuSFRNTEVsZW1lbnQgeworICAgICAgICAgICAgY29uc3RydWN0
b3IoZG9Ob3RDcmVhdGVJdHNlbGYpIHsKKyAgICAgICAgICAgICAgICBzdXBlcigpOworICAgICAg
ICAgICAgICAgIGlmICghZG9Ob3RDcmVhdGVJdHNlbGYpCisgICAgICAgICAgICAgICAgICAgIG5l
dyBNeUN1c3RvbUVsZW1lbnQodHJ1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgY29udGVudERvY3VtZW50LmRlZmluZUVsZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50JywgTXlD
dXN0b21FbGVtZW50KTsKKworICAgICAgICB2YXIgaW5zdGFuY2UgPSBjb250ZW50RG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnbXktY3VzdG9tLWVsZW1lbnQnKTsKKyAgICAgICAgYXNzZXJ0X3Rocm93
cyh7J25hbWUnOiAnSW52YWxpZFN0YXRlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBpbnN0YW5jZS5j
bG9uZU5vZGUoZmFsc2UpOyB9KTsKKyAgICB9KTsKK30sICdIVE1MRWxlbWVudCBjb25zdHJ1Y3Rv
ciBtdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gdGhlIHRvcCBvZiB0aGUgY29u
c3RydWN0aW9uIHN0YWNrIGlzIG1hcmtlZCBBbHJlYWR5Q29uc3RydWN0ZWQnCisgICAgKyAnIGR1
ZSB0byBhIGN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIGNvbnN0cnVjdGluZyBpdHNlbGYgYWZ0
ZXIgc3VwZXIoKSBjYWxsJyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHdpdGhOZXdEb2N1
bWVudFdpdGhBQnJvd3NpbmdDb250ZXh0KGZ1bmN0aW9uIChjb250ZW50V2luZG93LCBjb250ZW50
RG9jdW1lbnQpIHsKKyAgICAgICAgY2xhc3MgTXlDdXN0b21FbGVtZW50IGV4dGVuZHMgY29udGVu
dFdpbmRvdy5IVE1MRWxlbWVudCB7CisgICAgICAgICAgICBjb25zdHJ1Y3Rvcihkb05vdENyZWF0
ZUl0c2VsZikgeworICAgICAgICAgICAgICAgIGlmICghZG9Ob3RDcmVhdGVJdHNlbGYpCisgICAg
ICAgICAgICAgICAgICAgIG5ldyBNeUN1c3RvbUVsZW1lbnQodHJ1ZSk7CisgICAgICAgICAgICAg
ICAgc3VwZXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjb250ZW50RG9j
dW1lbnQuZGVmaW5lRWxlbWVudCgnbXktY3VzdG9tLWVsZW1lbnQnLCBNeUN1c3RvbUVsZW1lbnQp
OworCisgICAgICAgIHZhciBpbnN0YW5jZSA9IGNvbnRlbnREb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdteS1jdXN0b20tZWxlbWVudCcpOworICAgICAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdJ
bnZhbGlkU3RhdGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IGluc3RhbmNlLmNsb25lTm9kZShmYWxz
ZSk7IH0pOworICAgIH0pOworfSwgJ0hUTUxFbGVtZW50IGNvbnN0cnVjdG9yIG11c3QgdGhyb3cg
YW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiB0aGUgdG9wIG9mIHRoZSBjb25zdHJ1Y3Rpb24gc3Rh
Y2sgaXMgbWFya2VkIEFscmVhZHlDb25zdHJ1Y3RlZCcKKyAgICArICcgZHVlIHRvIGEgY3VzdG9t
IGVsZW1lbnQgY29uc3RydWN0b3IgY29uc3RydWN0aW5nIGl0c2VsZiBiZWZvcmUgc3VwZXIoKSBj
YWxsJyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHdpdGhOZXdEb2N1bWVudFdpdGhBQnJv
d3NpbmdDb250ZXh0KGZ1bmN0aW9uIChjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsK
KyAgICAgICAgdmFyIGNsb25pbmcgPSBmYWxzZTsKKyAgICAgICAgY2xhc3MgTXlDdXN0b21FbGVt
ZW50IGV4dGVuZHMgY29udGVudFdpbmRvdy5IVE1MRWxlbWVudCB7CisgICAgICAgICAgICBjb25z
dHJ1Y3RvcigpIHsKKyAgICAgICAgICAgICAgICBzdXBlcigpOworICAgICAgICAgICAgICAgIGlm
IChjbG9uaW5nKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudERvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBj
b250ZW50RG9jdW1lbnQuZGVmaW5lRWxlbWVudCgnbXktY3VzdG9tLWVsZW1lbnQnLCBNeUN1c3Rv
bUVsZW1lbnQpOworCisgICAgICAgIHZhciBpbnN0YW5jZSA9IGNvbnRlbnREb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdteS1jdXN0b20tZWxlbWVudCcpOworICAgICAgICBjbG9uaW5nID0gdHJ1ZTsK
KyAgICAgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnSW52YWxpZFN0YXRlRXJyb3InfSwgZnVu
Y3Rpb24gKCkgeyBpbnN0YW5jZS5jbG9uZU5vZGUoZmFsc2UpOyB9KTsKKyAgICB9KTsKK30sICdV
cGdyYWRpbmcgYSBjdXN0b20gZWxlbWVudCBtdXN0IHRocm93IEludmFsaWRTdGF0ZUVycm9yIHdo
ZW4gdGhlIGN1c3RvbSBlbGVtZW50XCdzIGNvbnN0cnVjdG9yIHJldHVybnMgYW5vdGhlciBlbGVt
ZW50Jyk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>