<?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>161558</bug_id>
          
          <creation_ts>2016-09-02 16:53:24 -0700</creation_ts>
          <short_desc>ProxyObject&apos;s structure should not have ObjectPrototype as its prototype and it should not have special behavior for intercepting &quot;__proto__&quot;</short_desc>
          <delta_ts>2016-09-06 19:50:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>161455</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sukolsak</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1226034</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-09-02 16:53:24 -0700</bug_when>
    <thetext>This will lead to cycles in the getDirectPrototype() chain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226055</commentid>
    <comment_count>1</comment_count>
      <attachid>287840</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-09-02 17:51:28 -0700</bug_when>
    <thetext>Created attachment 287840
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226056</commentid>
    <comment_count>2</comment_count>
      <attachid>287840</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-09-02 17:52:04 -0700</bug_when>
    <thetext>Comment on attachment 287840
WIP

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

&gt; JSTests/stress/proxy-dont-infinite-loop.js:18
&gt; +        +err;

I&apos;m not getting an error here. Don&apos;t know why. I need to investigate. It&apos;s also a very weird err, and can&apos;t be accessed in any way, so I have no idea what it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226965</commentid>
    <comment_count>3</comment_count>
      <attachid>288073</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-09-06 17:40:55 -0700</bug_when>
    <thetext>Created attachment 288073
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227028</commentid>
    <comment_count>4</comment_count>
      <attachid>288073</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-06 19:50:34 -0700</bug_when>
    <thetext>Comment on attachment 288073
patch

Clearing flags on attachment: 288073

Committed r205535: &lt;http://trac.webkit.org/changeset/205535&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227029</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-06 19:50:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287840</attachid>
            <date>2016-09-02 17:51:28 -0700</date>
            <delta_ts>2016-09-06 17:40:55 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>18806</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDUzOTEpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDE2LTA5LTAyICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFByb3h5T2JqZWN0J3Mgc3RydWN0dXJlIHNob3VsZCBub3QgaGF2ZSBP
YmplY3RQcm90b3R5cGUgYXMgaXRzIHByb3RvdHlwZSBhbmQgaXQgc2hvdWxkIG5vdCBoYXZlIHNw
ZWNpYWwgYmVoYXZpb3IgZm9yIGludGVyY2VwdGluZyAiX19wcm90b19fIgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNTU4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvcHJveHktZ2V0LXBy
b3RvdHlwZS1vZi5qczoKKyAgICAgICAgKiBzdHJlc3MvcHJveHktc2V0LXByb3RvdHlwZS1vZi5q
czoKKyAgICAgICAgKGxldC5oYW5kbGVyLnNldFByb3RvdHlwZU9mKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBzdHJlc3MvcHJveHktdW5kZXJzY29yZS1wcm90by5qczogQWRkZWQuCisgICAgICAgIChh
c3NlcnQpOgorCiAyMDE2LTA5LTAyICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQgZml4IGFmdGVyIGltcG9ydGluZyBDaGFrcmEgdGVzdApJ
bmRleDogSlNUZXN0cy9zdHJlc3MvcHJveHktZG9udC1pbmZpbml0ZS1sb29wLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3Byb3h5LWRvbnQtaW5maW5pdGUtbG9vcC5qcwkocmV2aXNp
b24gMCkKKysrIEpTVGVzdHMvc3RyZXNzL3Byb3h5LWRvbnQtaW5maW5pdGUtbG9vcC5qcwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDIzIEBACitmdW5jdGlvbiBmb28oKSB7CisgICAgbGV0IHRh
cmdldCA9IHsKKyAgICAgIF9fcHJvdG9fXzogbnVsbAorICAgIH07CisgICAgbGV0IHByb3h5ID0g
bmV3IFByb3h5KHRhcmdldCwgeworICAgICAgICBnZXQoLi4uYXJncykgeworICAgICAgICAgICAg
cmV0dXJuIFJlZmxlY3QuZ2V0KC4uLmFyZ3MpOworICAgICAgICB9CisgICAgfSk7CisgICAgT2Jq
ZWN0LnByb3RvdHlwZS5fX3Byb3RvX18gPSB7CisgICAgICAgX19wcm90b19fOiBwcm94eSwKKyAg
ICB9OworCisgICAgbGV0IGEgPSB7fTsKKyAgICB0cnkgeworICAgICAgICBhLnRlc3Q7CisgICAg
fSBjYXRjaChlcnIpIHsKKyAgICAgICAgK2VycjsKKyAgICAgICAgLy9wcmludChlIGluc3RhbmNl
b2YgVHlwZUVycm9yKTsKKyAgICAgICAgLy9wcmludChKU09OLnN0cmluZ2lmeShlKSk7CisgICAg
fQorfQorZm9vKCk7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9wcm94eS1nZXQtcHJvdG90eXBlLW9m
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3Byb3h5LWdldC1wcm90b3R5cGUtb2Yu
anMJKHJldmlzaW9uIDIwNTM3NSkKKysrIEpTVGVzdHMvc3RyZXNzL3Byb3h5LWdldC1wcm90b3R5
cGUtb2YuanMJKHdvcmtpbmcgY29weSkKQEAgLTE4LDcgKzE4LDYgQEAgZnVuY3Rpb24gYXNzZXJ0
KGIpIHsKICAgICAgICAgbGV0IGdldHRlcnMgPSBbCiAgICAgICAgICAgICAoKSA9PiBSZWZsZWN0
LmdldFByb3RvdHlwZU9mKHByb3h5KSwKICAgICAgICAgICAgICgpID0+IE9iamVjdC5nZXRQcm90
b3R5cGVPZihwcm94eSksCi0gICAgICAgICAgICAoKSA9PiBwcm94eS5fX3Byb3RvX18sCiAgICAg
ICAgIF07CiAgICAgICAgIGZvciAobGV0IGdldCBvZiBnZXR0ZXJzKSB7CiAgICAgICAgICAgICBs
ZXQgdGhyZXcgPSBmYWxzZTsKQEAgLTQ4LDcgKzQ3LDYgQEAgZnVuY3Rpb24gYXNzZXJ0KGIpIHsK
ICAgICAgICAgbGV0IGdldHRlcnMgPSBbCiAgICAgICAgICAgICAoKSA9PiBSZWZsZWN0LmdldFBy
b3RvdHlwZU9mKHByb3h5KSwKICAgICAgICAgICAgICgpID0+IE9iamVjdC5nZXRQcm90b3R5cGVP
Zihwcm94eSksCi0gICAgICAgICAgICAoKSA9PiBwcm94eS5fX3Byb3RvX18sCiAgICAgICAgIF07
CiAgICAgICAgIGZvciAobGV0IGdldCBvZiBnZXR0ZXJzKSB7CiAgICAgICAgICAgICBsZXQgdGhy
ZXcgPSBmYWxzZTsKQEAgLTgzLDcgKzgxLDYgQEAgZnVuY3Rpb24gYXNzZXJ0KGIpIHsKICAgICAg
ICAgbGV0IGdldHRlcnMgPSBbCiAgICAgICAgICAgICAoKSA9PiBSZWZsZWN0LmdldFByb3RvdHlw
ZU9mKHByb3h5KSwKICAgICAgICAgICAgICgpID0+IE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm94
eSksCi0gICAgICAgICAgICAoKSA9PiBwcm94eS5fX3Byb3RvX18sCiAgICAgICAgIF07CiAgICAg
ICAgIGZvciAobGV0IGdldCBvZiBnZXR0ZXJzKSB7CiAgICAgICAgICAgICBsZXQgdGhyZXcgPSBm
YWxzZTsKQEAgLTEwOSw3ICsxMDYsNiBAQCBmdW5jdGlvbiBhc3NlcnQoYikgewogICAgICAgICBs
ZXQgZ2V0dGVycyA9IFsKICAgICAgICAgICAgICgpID0+IFJlZmxlY3QuZ2V0UHJvdG90eXBlT2Yo
cHJveHkpLAogICAgICAgICAgICAgKCkgPT4gT2JqZWN0LmdldFByb3RvdHlwZU9mKHByb3h5KSwK
LSAgICAgICAgICAgICgpID0+IHByb3h5Ll9fcHJvdG9fXywKICAgICAgICAgXTsKICAgICAgICAg
Zm9yIChsZXQgZ2V0IG9mIGdldHRlcnMpIHsKICAgICAgICAgICAgIGxldCB0aHJldyA9IGZhbHNl
OwpAQCAtMTM3LDcgKzEzMyw2IEBAIGZ1bmN0aW9uIGFzc2VydChiKSB7CiAgICAgICAgIGxldCBn
ZXR0ZXJzID0gWwogICAgICAgICAgICAgKCkgPT4gUmVmbGVjdC5nZXRQcm90b3R5cGVPZihwcm94
eSksCiAgICAgICAgICAgICAoKSA9PiBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJveHkpLAotICAg
ICAgICAgICAgKCkgPT4gcHJveHkuX19wcm90b19fLAogICAgICAgICBdOwogICAgICAgICBmb3Ig
KGxldCBnZXQgb2YgZ2V0dGVycykgewogICAgICAgICAgICAgbGV0IHRocmV3ID0gZmFsc2U7CkBA
IC0xNjUsNyArMTYwLDYgQEAgZnVuY3Rpb24gYXNzZXJ0KGIpIHsKICAgICAgICAgbGV0IGdldHRl
cnMgPSBbCiAgICAgICAgICAgICAoKSA9PiBSZWZsZWN0LmdldFByb3RvdHlwZU9mKHByb3h5KSwK
ICAgICAgICAgICAgICgpID0+IE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm94eSksCi0gICAgICAg
ICAgICAoKSA9PiBwcm94eS5fX3Byb3RvX18sCiAgICAgICAgIF07CiAgICAgICAgIGZvciAobGV0
IGdldCBvZiBnZXR0ZXJzKSB7CiAgICAgICAgICAgICBsZXQgdGhyZXcgPSBmYWxzZTsKQEAgLTE5
NCw3ICsxODgsNiBAQCBmdW5jdGlvbiBhc3NlcnQoYikgewogICAgICAgICBsZXQgZ2V0dGVycyA9
IFsKICAgICAgICAgICAgICgpID0+IFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YocHJveHkpLAogICAg
ICAgICAgICAgKCkgPT4gT2JqZWN0LmdldFByb3RvdHlwZU9mKHByb3h5KSwKLSAgICAgICAgICAg
ICgpID0+IHByb3h5Ll9fcHJvdG9fXywKICAgICAgICAgXTsKICAgICAgICAgZm9yIChsZXQgZ2V0
IG9mIGdldHRlcnMpIHsKICAgICAgICAgICAgIGxldCB0aHJldyA9IGZhbHNlOwpAQCAtMjI0LDcg
KzIxNyw2IEBAIGZ1bmN0aW9uIGFzc2VydChiKSB7CiAgICAgICAgIGxldCBnZXR0ZXJzID0gWwog
ICAgICAgICAgICAgKCkgPT4gUmVmbGVjdC5nZXRQcm90b3R5cGVPZihwcm94eSksCiAgICAgICAg
ICAgICAoKSA9PiBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJveHkpLAotICAgICAgICAgICAgKCkg
PT4gcHJveHkuX19wcm90b19fLAogICAgICAgICBdOwogICAgICAgICBmb3IgKGxldCBnZXQgb2Yg
Z2V0dGVycykgewogICAgICAgICAgICAgbGV0IHRocmV3ID0gZmFsc2U7CkBAIC0yNTUsNyArMjQ3
LDYgQEAgZnVuY3Rpb24gYXNzZXJ0KGIpIHsKICAgICAgICAgbGV0IGdldHRlcnMgPSBbCiAgICAg
ICAgICAgICAoKSA9PiBSZWZsZWN0LmdldFByb3RvdHlwZU9mKHByb3h5KSwKICAgICAgICAgICAg
ICgpID0+IE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm94eSksCi0gICAgICAgICAgICAoKSA9PiBw
cm94eS5fX3Byb3RvX18sCiAgICAgICAgIF07CiAgICAgICAgIGZvciAobGV0IGdldCBvZiBnZXR0
ZXJzKSB7CiAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gZ2V0KCk7CkBAIC0yODUsNyArMjc2LDYg
QEAgZnVuY3Rpb24gYXNzZXJ0KGIpIHsKICAgICAgICAgbGV0IGdldHRlcnMgPSBbCiAgICAgICAg
ICAgICAoKSA9PiBSZWZsZWN0LmdldFByb3RvdHlwZU9mKHByb3h5KSwKICAgICAgICAgICAgICgp
ID0+IE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm94eSksCi0gICAgICAgICAgICAoKSA9PiBwcm94
eS5fX3Byb3RvX18sCiAgICAgICAgIF07CiAgICAgICAgIGZvciAobGV0IGdldCBvZiBnZXR0ZXJz
KSB7CiAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gZ2V0KCk7CkBAIC0zMDgsNyArMjk4LDYgQEAg
ZnVuY3Rpb24gYXNzZXJ0KGIpIHsKICAgICAgICAgbGV0IGdldHRlcnMgPSBbCiAgICAgICAgICAg
ICAoKSA9PiBSZWZsZWN0LmdldFByb3RvdHlwZU9mKHByb3h5KSwKICAgICAgICAgICAgICgpID0+
IE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm94eSksCi0gICAgICAgICAgICAoKSA9PiBwcm94eS5f
X3Byb3RvX18sCiAgICAgICAgIF07CiAgICAgICAgIGZvciAobGV0IGdldCBvZiBnZXR0ZXJzKSB7
CiAgICAgICAgICAgICBhc3NlcnQoZ2V0KCkgPT09IHByb3RvKTsKQEAgLTMzMyw3ICszMjIsNiBA
QCBmdW5jdGlvbiBhc3NlcnQoYikgewogICAgICAgICBsZXQgZ2V0dGVycyA9IFsKICAgICAgICAg
ICAgICgpID0+IFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YocHJveHkpLAogICAgICAgICAgICAgKCkg
PT4gT2JqZWN0LmdldFByb3RvdHlwZU9mKHByb3h5KSwKLSAgICAgICAgICAgICgpID0+IHByb3h5
Ll9fcHJvdG9fXywKICAgICAgICAgXTsKICAgICAgICAgZm9yIChsZXQgZ2V0IG9mIGdldHRlcnMp
IHsKICAgICAgICAgICAgIGFzc2VydChnZXQoKSA9PT0gcHJvdG8pOwpAQCAtMzYwLDcgKzM0OCw2
IEBAIGZ1bmN0aW9uIGFzc2VydChiKSB7CiAgICAgICAgIGxldCBnZXR0ZXJzID0gWwogICAgICAg
ICAgICAgKCkgPT4gUmVmbGVjdC5nZXRQcm90b3R5cGVPZihwcm94eSksCiAgICAgICAgICAgICAo
KSA9PiBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJveHkpLAotICAgICAgICAgICAgKCkgPT4gcHJv
eHkuX19wcm90b19fLAogICAgICAgICBdOwogICAgICAgICBmb3IgKGxldCBnZXQgb2YgZ2V0dGVy
cykgewogICAgICAgICAgICAgYXNzZXJ0KGdldCgpID09PSBwcm90byk7CkBAIC0zODcsNyArMzc0
LDYgQEAgZnVuY3Rpb24gYXNzZXJ0KGIpIHsKICAgICAgICAgbGV0IGdldHRlcnMgPSBbCiAgICAg
ICAgICAgICAoKSA9PiBSZWZsZWN0LmdldFByb3RvdHlwZU9mKHByb3h5KSwKICAgICAgICAgICAg
ICgpID0+IE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm94eSksCi0gICAgICAgICAgICAoKSA9PiBw
cm94eS5fX3Byb3RvX18sCiAgICAgICAgIF07CiAgICAgICAgIGZvciAobGV0IGdldCBvZiBnZXR0
ZXJzKSB7CiAgICAgICAgICAgICBhc3NlcnQoZ2V0KCkgPT09IHByb3RvKTsKSW5kZXg6IEpTVGVz
dHMvc3RyZXNzL3Byb3h5LXNldC1wcm90b3R5cGUtb2YuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0
cy9zdHJlc3MvcHJveHktc2V0LXByb3RvdHlwZS1vZi5qcwkocmV2aXNpb24gMjA1Mzc1KQorKysg
SlNUZXN0cy9zdHJlc3MvcHJveHktc2V0LXByb3RvdHlwZS1vZi5qcwkod29ya2luZyBjb3B5KQpA
QCAtMTgsNyArMTgsNiBAQCBmdW5jdGlvbiBhc3NlcnQoYikgewogICAgICAgICBsZXQgc2V0dGVy
cyA9IFsKICAgICAgICAgICAgICgpID0+IFJlZmxlY3Quc2V0UHJvdG90eXBlT2YocHJveHksIHt9
KSwKICAgICAgICAgICAgICgpID0+IE9iamVjdC5zZXRQcm90b3R5cGVPZihwcm94eSwge30pLAot
ICAgICAgICAgICAgKCkgPT4gcHJveHkuX19wcm90b19fID0ge30sCiAgICAgICAgIF07CiAgICAg
ICAgIGZvciAobGV0IHNldCBvZiBzZXR0ZXJzKSB7CiAgICAgICAgICAgICBsZXQgdGhyZXcgPSBm
YWxzZTsKQEAgLTQ4LDcgKzQ3LDYgQEAgZnVuY3Rpb24gYXNzZXJ0KGIpIHsKICAgICAgICAgbGV0
IHNldHRlcnMgPSBbCiAgICAgICAgICAgICAoKSA9PiBSZWZsZWN0LnNldFByb3RvdHlwZU9mKHBy
b3h5LCB7fSksCiAgICAgICAgICAgICAoKSA9PiBPYmplY3Quc2V0UHJvdG90eXBlT2YocHJveHks
IHt9KSwKLSAgICAgICAgICAgICgpID0+IHByb3h5Ll9fcHJvdG9fXyA9IHt9LAogICAgICAgICBd
OwogICAgICAgICBmb3IgKGxldCBzZXQgb2Ygc2V0dGVycykgewogICAgICAgICAgICAgbGV0IHRo
cmV3ID0gZmFsc2U7CkBAIC03NSw3ICs3Myw2IEBAIGZ1bmN0aW9uIGFzc2VydChiKSB7CiAgICAg
ICAgIGxldCBzZXR0ZXJzID0gWwogICAgICAgICAgICAgKCkgPT4gUmVmbGVjdC5zZXRQcm90b3R5
cGVPZihwcm94eSwge30pLAogICAgICAgICAgICAgKCkgPT4gT2JqZWN0LnNldFByb3RvdHlwZU9m
KHByb3h5LCB7fSksCi0gICAgICAgICAgICAoKSA9PiBwcm94eS5fX3Byb3RvX18gPSB7fSwKICAg
ICAgICAgXTsKICAgICAgICAgZm9yIChsZXQgc2V0IG9mIHNldHRlcnMpIHsKICAgICAgICAgICAg
IGxldCB0aHJldyA9IGZhbHNlOwpAQCAtMTA0LDE1ICsxMDEsMTMgQEAgZnVuY3Rpb24gYXNzZXJ0
KGIpIHsKICAgICAgICAgbGV0IHNldHRlcnMgPSBbCiAgICAgICAgICAgICAoKSA9PiBSZWZsZWN0
LnNldFByb3RvdHlwZU9mKHByb3h5LCB7fSksCiAgICAgICAgICAgICAoKSA9PiBPYmplY3Quc2V0
UHJvdG90eXBlT2YocHJveHksIHt9KSwKLSAgICAgICAgICAgICgpID0+IHByb3h5Ll9fcHJvdG9f
XyA9IHt9LAogICAgICAgICBdOwogICAgICAgICBmb3IgKGxldCBzZXQgb2Ygc2V0dGVycykgewog
ICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHNldCgpOwogICAgICAgICAgICAgYXNzZXJ0KHJlc3Vs
dCk7CiAgICAgICAgICAgICBhc3NlcnQoUmVmbGVjdC5nZXRQcm90b3R5cGVPZih0YXJnZXQpID09
PSBudWxsKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiB3aGVuIHdlIGltcGxlbWVudCBQcm94eS5b
W0dldFByb3RvdHlwZU9mXV0gdGhpcyBzaG91bGQgd29yay4KLSAgICAgICAgICAgIC8vYXNzZXJ0
KFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YocHJveHkpID09PSBudWxsKTsKLSAgICAgICAgICAgIC8v
YXNzZXJ0KHByb3h5Ll9fcHJvdG9fXyA9PT0gbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQoUmVm
bGVjdC5nZXRQcm90b3R5cGVPZihwcm94eSkgPT09IG51bGwpOworICAgICAgICAgICAgYXNzZXJ0
KHByb3h5Ll9fcHJvdG9fXyA9PT0gdW5kZWZpbmVkKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAg
LTEzMywxNSArMTI4LDEzIEBAIGZ1bmN0aW9uIGFzc2VydChiKSB7CiAgICAgICAgIGxldCBzZXR0
ZXJzID0gWwogICAgICAgICAgICAgKCkgPT4gUmVmbGVjdC5zZXRQcm90b3R5cGVPZihwcm94eSwg
b2JqKSwKICAgICAgICAgICAgICgpID0+IE9iamVjdC5zZXRQcm90b3R5cGVPZihwcm94eSwgb2Jq
KSwKLSAgICAgICAgICAgICgpID0+IHByb3h5Ll9fcHJvdG9fXyA9IG9iaiwKICAgICAgICAgXTsK
ICAgICAgICAgZm9yIChsZXQgc2V0IG9mIHNldHRlcnMpIHsKICAgICAgICAgICAgIGxldCByZXN1
bHQgPSBzZXQoKTsKICAgICAgICAgICAgIGFzc2VydChyZXN1bHQpOwogICAgICAgICAgICAgYXNz
ZXJ0KFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YodGFyZ2V0KSA9PT0gb2JqKTsKLSAgICAgICAgICAg
IC8vIEZJWE1FOiB3aGVuIHdlIGltcGxlbWVudCBQcm94eS5bW0dldFByb3RvdHlwZU9mXV0gdGhp
cyBzaG91bGQgd29yay4KLSAgICAgICAgICAgIC8vYXNzZXJ0KFJlZmxlY3QuZ2V0UHJvdG90eXBl
T2YocHJveHkpID09PSBvYmopOwotICAgICAgICAgICAgLy9hc3NlcnQocHJveHkuX19wcm90b19f
ID09PSBvYmopOworICAgICAgICAgICAgYXNzZXJ0KFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YocHJv
eHkpID09PSBvYmopOworICAgICAgICAgICAgYXNzZXJ0KHByb3h5Ll9fcHJvdG9fXyA9PT0gb2Jq
KTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTE2Nyw3ICsxNjAsNiBAQCBmdW5jdGlvbiBhc3Nl
cnQoYikgewogICAgICAgICBsZXQgc2V0dGVycyA9IFsKICAgICAgICAgICAgICgpID0+IFJlZmxl
Y3Quc2V0UHJvdG90eXBlT2YocHJveHksIG9iaiksCiAgICAgICAgICAgICAoKSA9PiBPYmplY3Qu
c2V0UHJvdG90eXBlT2YocHJveHksIG9iaiksCi0gICAgICAgICAgICAoKSA9PiBwcm94eS5fX3By
b3RvX18gPSBvYmosCiAgICAgICAgIF07CiAgICAgICAgIGZvciAobGV0IHNldCBvZiBzZXR0ZXJz
KSB7CiAgICAgICAgICAgICBsZXQgdGhyZXcgPSBmYWxzZTsKQEAgLTE4Miw5ICsxNzQsOCBAQCBm
dW5jdGlvbiBhc3NlcnQoYikgewogCiAgICAgICAgICAgICBhc3NlcnQodGhyZXcpOwogICAgICAg
ICAgICAgYXNzZXJ0KFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YodGFyZ2V0KSA9PT0gbnVsbCk7Ci0g
ICAgICAgICAgICAvLyBGSVhNRTogd2hlbiB3ZSBpbXBsZW1lbnQgUHJveHkuW1tHZXRQcm90b3R5
cGVPZl1dIHRoaXMgc2hvdWxkIHdvcmsuCi0gICAgICAgICAgICAvL2Fzc2VydChSZWZsZWN0Lmdl
dFByb3RvdHlwZU9mKHByb3h5KSA9PT0gbnVsbCk7Ci0gICAgICAgICAgICAvL2Fzc2VydChwcm94
eS5fX3Byb3RvX18gPT09IG51bGwpOworICAgICAgICAgICAgYXNzZXJ0KFJlZmxlY3QuZ2V0UHJv
dG90eXBlT2YocHJveHkpID09PSBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydChwcm94eS5fX3By
b3RvX18gPT09IHVuZGVmaW5lZCk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0yMDksNyArMjAw
LDYgQEAgZnVuY3Rpb24gYXNzZXJ0KGIpIHsKICAgICAgICAgbGV0IHNldHRlcnMgPSBbCiAgICAg
ICAgICAgICBbKCkgPT4gUmVmbGVjdC5zZXRQcm90b3R5cGVPZihwcm94eSwgbnVsbCksIHRydWVd
LAogICAgICAgICAgICAgWygpID0+IE9iamVjdC5zZXRQcm90b3R5cGVPZihwcm94eSwgbnVsbCks
IHByb3h5XSwKLSAgICAgICAgICAgIFsoKSA9PiBwcm94eS5fX3Byb3RvX18gPSBudWxsLCBudWxs
XQogICAgICAgICBdOwogICAgICAgICBmb3IgKGxldCBbc2V0LCBleHBlY3RlZFJlc3VsdF0gb2Yg
c2V0dGVycykgewogICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHNldCgpOwpAQCAtMjE3LDkgKzIw
Nyw4IEBAIGZ1bmN0aW9uIGFzc2VydChiKSB7CiAgICAgICAgICAgICBhc3NlcnQoY2FsbGVkKTsK
ICAgICAgICAgICAgIGNhbGxlZCA9IGZhbHNlOwogICAgICAgICAgICAgYXNzZXJ0KFJlZmxlY3Qu
Z2V0UHJvdG90eXBlT2YodGFyZ2V0KSA9PT0gbnVsbCk7Ci0gICAgICAgICAgICAvLyBGSVhNRTog
d2hlbiB3ZSBpbXBsZW1lbnQgUHJveHkuW1tHZXRQcm90b3R5cGVPZl1dIHRoaXMgc2hvdWxkIHdv
cmsuCi0gICAgICAgICAgICAvL2Fzc2VydChSZWZsZWN0LmdldFByb3RvdHlwZU9mKHByb3h5KSA9
PT0gbnVsbCk7Ci0gICAgICAgICAgICAvL2Fzc2VydChwcm94eS5fX3Byb3RvX18gPT09IG51bGwp
OworICAgICAgICAgICAgYXNzZXJ0KFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YocHJveHkpID09PSBu
dWxsKTsKKyAgICAgICAgICAgIGFzc2VydChwcm94eS5fX3Byb3RvX18gPT09IHVuZGVmaW5lZCk7
CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0yNDUsNyArMjM0LDYgQEAgZnVuY3Rpb24gYXNzZXJ0
KGIpIHsKICAgICAgICAgbGV0IHNldHRlcnMgPSBbCiAgICAgICAgICAgICBbKCkgPT4gUmVmbGVj
dC5zZXRQcm90b3R5cGVPZihwcm94eSwgb2JqKSwgdHJ1ZV0sCiAgICAgICAgICAgICBbKCkgPT4g
T2JqZWN0LnNldFByb3RvdHlwZU9mKHByb3h5LCBvYmopLCBwcm94eV0sCi0gICAgICAgICAgICBb
KCkgPT4gcHJveHkuX19wcm90b19fID0gb2JqLCBvYmpdCiAgICAgICAgIF07CiAgICAgICAgIGZv
ciAobGV0IFtzZXQsIGV4cGVjdGVkUmVzdWx0XSBvZiBzZXR0ZXJzKSB7CiAgICAgICAgICAgICBs
ZXQgcmVzdWx0ID0gc2V0KCk7CkBAIC0yNTMsOSArMjQxLDggQEAgZnVuY3Rpb24gYXNzZXJ0KGIp
IHsKICAgICAgICAgICAgIGFzc2VydChjYWxsZWQpOwogICAgICAgICAgICAgY2FsbGVkID0gZmFs
c2U7CiAgICAgICAgICAgICBhc3NlcnQoUmVmbGVjdC5nZXRQcm90b3R5cGVPZih0YXJnZXQpID09
PSBvYmopOwotICAgICAgICAgICAgLy8gRklYTUU6IHdoZW4gd2UgaW1wbGVtZW50IFByb3h5Lltb
R2V0UHJvdG90eXBlT2ZdXSB0aGlzIHNob3VsZCB3b3JrLgotICAgICAgICAgICAgLy9hc3NlcnQo
UmVmbGVjdC5nZXRQcm90b3R5cGVPZihwcm94eSkgPT09IG51bGwpOwotICAgICAgICAgICAgLy9h
c3NlcnQocHJveHkuX19wcm90b19fID09PSBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydChSZWZs
ZWN0LmdldFByb3RvdHlwZU9mKHByb3h5KSA9PT0gb2JqKTsKKyAgICAgICAgICAgIGFzc2VydChw
cm94eS5fX3Byb3RvX18gPT09IG9iaik7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0yODMsMzgg
KzI3MCw4IEBAIGZ1bmN0aW9uIGFzc2VydChiKSB7CiAKICAgICAgICAgYXNzZXJ0KHRocmV3KTsK
ICAgICAgICAgYXNzZXJ0KFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YodGFyZ2V0KSA9PT0gbnVsbCk7
Ci0gICAgICAgIC8vIEZJWE1FOiB3aGVuIHdlIGltcGxlbWVudCBQcm94eS5bW0dldFByb3RvdHlw
ZU9mXV0gdGhpcyBzaG91bGQgd29yay4KLSAgICAgICAgLy9hc3NlcnQoUmVmbGVjdC5nZXRQcm90
b3R5cGVPZihwcm94eSkgPT09IG51bGwpOwotICAgICAgICAvL2Fzc2VydChwcm94eS5fX3Byb3Rv
X18gPT09IG51bGwpOwotICAgIH0KLX0KLQotewotICAgIGxldCB0YXJnZXQgPSB7fTsKLSAgICB0
YXJnZXQuX19wcm90b19fID0gbnVsbDsKLSAgICBSZWZsZWN0LnByZXZlbnRFeHRlbnNpb25zKHRh
cmdldCk7Ci0gICAgbGV0IGhhbmRsZXIgPSB7Ci0gICAgICAgIHNldFByb3RvdHlwZU9mOiBmdW5j
dGlvbih0aGVUYXJnZXQsIHZhbHVlKSB7Ci0gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5zZXRQ
cm90b3R5cGVPZih0aGVUYXJnZXQsIHZhbHVlKTsKLSAgICAgICAgfQotICAgIH07Ci0gICAgCi0g
ICAgbGV0IHByb3h5ID0gbmV3IFByb3h5KHRhcmdldCwgaGFuZGxlcik7Ci0gICAgZm9yIChsZXQg
aSA9IDA7IGkgPCA1MDA7IGkrKykgewotICAgICAgICBsZXQgb2JqID0ge307Ci0gICAgICAgIGxl
dCB0aHJldyA9IGZhbHNlOwotICAgICAgICB0cnkgewotICAgICAgICAgICAgcHJveHkuX19wcm90
b19fID0gb2JqOwotICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgIHRocmV3ID0gdHJ1
ZTsKLSAgICAgICAgICAgIGFzc2VydChlLnRvU3RyaW5nKCkgPT09ICJUeXBlRXJyb3I6IFByb3h5
ICdzZXRQcm90b3R5cGVPZicgcmV0dXJuZWQgZmFsc2UgaW5kaWNhdGluZyBpdCBjb3VsZCBub3Qg
c2V0IHRoZSBwcm90b3R5cGUgdmFsdWUuIFRoZSBvcGVyYXRpb24gd2FzIGV4cGVjdGVkIHRvIHN1
Y2NlZWQiKTsKLSAgICAgICAgfQotCi0gICAgICAgIGFzc2VydCh0aHJldyk7Ci0gICAgICAgIGFz
c2VydChSZWZsZWN0LmdldFByb3RvdHlwZU9mKHRhcmdldCkgPT09IG51bGwpOwotICAgICAgICAv
LyBGSVhNRTogd2hlbiB3ZSBpbXBsZW1lbnQgUHJveHkuW1tHZXRQcm90b3R5cGVPZl1dIHRoaXMg
c2hvdWxkIHdvcmsuCi0gICAgICAgIC8vYXNzZXJ0KFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YocHJv
eHkpID09PSBudWxsKTsKLSAgICAgICAgLy9hc3NlcnQocHJveHkuX19wcm90b19fID09PSBudWxs
KTsKKyAgICAgICAgYXNzZXJ0KFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YocHJveHkpID09PSBudWxs
KTsKKyAgICAgICAgYXNzZXJ0KHByb3h5Ll9fcHJvdG9fXyA9PT0gdW5kZWZpbmVkKTsKICAgICB9
CiB9CiAKQEAgLTMzOSw5ICsyOTYsOCBAQCBmdW5jdGlvbiBhc3NlcnQoYikgewogCiAgICAgICAg
IGFzc2VydChjYWxsZWQpOwogICAgICAgICBjYWxsZWQgPSBmYWxzZTsKLSAgICAgICAgLy8gRklY
TUU6IHdoZW4gd2UgaW1wbGVtZW50IFByb3h5LltbR2V0UHJvdG90eXBlT2ZdXSB0aGlzIHNob3Vs
ZCB3b3JrLgotICAgICAgICAvL2Fzc2VydChSZWZsZWN0LmdldFByb3RvdHlwZU9mKHByb3h5KSA9
PT0gbnVsbCk7Ci0gICAgICAgIC8vYXNzZXJ0KHByb3h5Ll9fcHJvdG9fXyA9PT0gbnVsbCk7Cisg
ICAgICAgIGFzc2VydChSZWZsZWN0LmdldFByb3RvdHlwZU9mKHByb3h5KSA9PT0gbnVsbCk7Cisg
ICAgICAgIGFzc2VydChwcm94eS5fX3Byb3RvX18gPT09IHVuZGVmaW5lZCk7CiAgICAgfQogfQog
CkBAIC0zNjYsOSArMzIyLDggQEAgZnVuY3Rpb24gYXNzZXJ0KGIpIHsKICAgICAgICAgYXNzZXJ0
KGNhbGxlZCk7CiAgICAgICAgIGNhbGxlZCA9IGZhbHNlOwogCi0gICAgICAgIC8vIEZJWE1FOiB3
aGVuIHdlIGltcGxlbWVudCBQcm94eS5bW0dldFByb3RvdHlwZU9mXV0gdGhpcyBzaG91bGQgd29y
ay4KLSAgICAgICAgLy9hc3NlcnQoUmVmbGVjdC5nZXRQcm90b3R5cGVPZihwcm94eSkgPT09IG51
bGwpOwotICAgICAgICAvL2Fzc2VydChwcm94eS5fX3Byb3RvX18gPT09IG51bGwpOworICAgICAg
ICBhc3NlcnQoUmVmbGVjdC5nZXRQcm90b3R5cGVPZihwcm94eSkgPT09IG51bGwpOworICAgICAg
ICBhc3NlcnQocHJveHkuX19wcm90b19fID09PSB1bmRlZmluZWQpOwogICAgIH0KIH0KIApJbmRl
eDogSlNUZXN0cy9zdHJlc3MvcHJveHktdW5kZXJzY29yZS1wcm90by5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKU1Rlc3RzL3N0cmVzcy9wcm94eS11bmRlcnNjb3JlLXByb3RvLmpzCShyZXZpc2lvbiAwKQor
KysgSlNUZXN0cy9zdHJlc3MvcHJveHktdW5kZXJzY29yZS1wcm90by5qcwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDExMCBAQAorZnVuY3Rpb24gYXNzZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiEiKTsKK30KKworeworICAgIGxl
dCBwID0ge307CisgICAgbGV0IHRhcmdldCA9IHtfX3Byb3RvX186IHB9OworICAgIGxldCBjYWxs
ZWQgPSBmYWxzZTsKKyAgICBsZXQgaGFuZGxlciA9IHsKKyAgICAgICAgZ2V0KHRhcmdldCwga2V5
LCByZWNlaXZlcikgeworICAgICAgICAgICAgY2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGFz
c2VydChrZXkgPT09ICJfX3Byb3RvX18iKTsKKyAgICAgICAgICAgIHJldHVybiB0YXJnZXRba2V5
XTsKKyAgICAgICAgfSwKKworICAgICAgICBnZXRQcm90b3R5cGVPZigpIHsKKyAgICAgICAgICAg
IGFzc2VydChmYWxzZSk7CisgICAgICAgIH0KKyAgICB9OworICAgIAorICAgIGxldCBwcm94eSA9
IG5ldyBQcm94eSh0YXJnZXQsIGhhbmRsZXIpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTAw
OyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KHByb3h5Ll9fcHJvdG9fXyA9PT0gcCk7CisgICAgICAg
IGFzc2VydChjYWxsZWQpOworICAgICAgICBjYWxsZWQgPSBmYWxzZTsKKyAgICB9Cit9CisKK3sK
KyAgICBsZXQgcCA9IHt9OworICAgIGxldCB0YXJnZXQgPSB7X19wcm90b19fOiBwfTsKKyAgICBs
ZXQgY2FsbGVkMSA9IGZhbHNlOworICAgIGxldCBjYWxsZWQyID0gZmFsc2U7CisgICAgbGV0IGhh
bmRsZXIgPSB7CisgICAgICAgIGdldCh0YXJnZXQsIGtleSwgcmVjZWl2ZXIpIHsKKyAgICAgICAg
ICAgIGNhbGxlZDEgPSB0cnVlOworICAgICAgICAgICAgYXNzZXJ0KGtleSA9PT0gIl9fcHJvdG9f
XyIpOworICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0KHRhcmdldCwga2V5LCByZWNlaXZl
cik7CisgICAgICAgIH0sCisKKyAgICAgICAgZ2V0UHJvdG90eXBlT2YoLi4uYXJncykgeworICAg
ICAgICAgICAgY2FsbGVkMiA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXRQ
cm90b3R5cGVPZiguLi5hcmdzKTsKKyAgICAgICAgfQorICAgIH07CisgICAgCisgICAgbGV0IHBy
b3h5ID0gbmV3IFByb3h5KHRhcmdldCwgaGFuZGxlcik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCA1MDA7IGkrKykgeworICAgICAgICBhc3NlcnQocHJveHkuX19wcm90b19fID09PSBwKTsKKyAg
ICAgICAgYXNzZXJ0KGNhbGxlZDEpOworICAgICAgICBhc3NlcnQoY2FsbGVkMik7CisgICAgICAg
IGNhbGxlZDEgPSBmYWxzZTsKKyAgICAgICAgY2FsbGVkMiA9IGZhbHNlOworICAgIH0KK30KKwor
eworICAgIGxldCBwID0ge307CisgICAgbGV0IHRhcmdldCA9IHtfX3Byb3RvX186IG51bGx9Owor
ICAgIGxldCBjYWxsZWQgPSBmYWxzZTsKKyAgICBsZXQgaGFuZGxlciA9IHsKKyAgICAgICAgc2V0
KHRhcmdldCwga2V5LCB2YWx1ZSwgcmVjZWl2ZXIpIHsKKyAgICAgICAgICAgIGNhbGxlZCA9IHRy
dWU7CisgICAgICAgICAgICBhc3NlcnQoa2V5ID09PSAiX19wcm90b19fIik7CisgICAgICAgICAg
ICByZXR1cm4gdGFyZ2V0W2tleV0gPSB2YWx1ZTsKKyAgICAgICAgfSwKKworICAgICAgICBzZXRQ
cm90b3R5cGVPZigpIHsKKyAgICAgICAgICAgIGFzc2VydChmYWxzZSk7CisgICAgICAgIH0KKyAg
ICB9OworICAgIAorICAgIGxldCBwcm94eSA9IG5ldyBQcm94eSh0YXJnZXQsIGhhbmRsZXIpOwor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTAwOyBpKyspIHsKKyAgICAgICAgcHJveHkuX19wcm90
b19fID0gcDsKKyAgICAgICAgYXNzZXJ0KHByb3h5Ll9fcHJvdG9fXyA9PT0gcCk7CisgICAgICAg
IGFzc2VydCh0YXJnZXQuX19wcm90b19fID09PSBwKTsKKyAgICAgICAgdGFyZ2V0Ll9fcHJvdG9f
XyA9IG51bGw7CisgICAgICAgIGFzc2VydChjYWxsZWQpOworICAgICAgICBjYWxsZWQgPSBmYWxz
ZTsKKyAgICB9Cit9CisKK3sKKyAgICBsZXQgcCA9IHt9OworICAgIGxldCB0YXJnZXQgPSB7X19w
cm90b19fOiBudWxsfTsKKyAgICBsZXQgY2FsbGVkID0gZmFsc2U7CisgICAgbGV0IGhhbmRsZXIg
PSB7CisgICAgICAgIHNldCh0YXJnZXQsIGtleSwgdmFsdWUsIHJlY2VpdmVyKSB7CisgICAgICAg
ICAgICBjYWxsZWQgPSB0cnVlOworICAgICAgICAgICAgYXNzZXJ0KGtleSA9PT0gIl9fcHJvdG9f
XyIpOworICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3Quc2V0KHRhcmdldCwga2V5LCB2YWx1ZSwg
cmVjZWl2ZXIpOworICAgICAgICB9LAorCisgICAgICAgIHNldFByb3RvdHlwZU9mKCkgeworICAg
ICAgICAgICAgYXNzZXJ0KGZhbHNlKTsKKyAgICAgICAgfQorICAgIH07CisgICAgCisgICAgbGV0
IHByb3h5ID0gbmV3IFByb3h5KHRhcmdldCwgaGFuZGxlcik7CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCA1MDA7IGkrKykgeworICAgICAgICBwcm94eS5fX3Byb3RvX18gPSBwOworICAgICAgICBh
c3NlcnQocHJveHkuX19wcm90b19fID09PSBwKTsKKyAgICAgICAgYXNzZXJ0KHRhcmdldC5fX3By
b3RvX18gPT09IHApOworICAgICAgICB0YXJnZXQuX19wcm90b19fID0gbnVsbDsKKyAgICAgICAg
YXNzZXJ0KGNhbGxlZCk7CisgICAgICAgIGNhbGxlZCA9IGZhbHNlOworICAgIH0KK30KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA1Mzc2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE2
LTA5LTAyICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIFByb3h5
T2JqZWN0J3Mgc3RydWN0dXJlIHNob3VsZCBub3QgaGF2ZSBPYmplY3RQcm90b3R5cGUgYXMgaXRz
IHByb3RvdHlwZSBhbmQgaXQgc2hvdWxkIG5vdCBoYXZlIHNwZWNpYWwgYmVoYXZpb3IgZm9yIGlu
dGVyY2VwdGluZyAiX19wcm90b19fIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYxNTU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKK1Byb3h5T2JqZWN0IGhhZCBPYmplY3RQcm90b3R5cGUgYXMgaXRzIGRpcmVjdCBwcm90
b3R5cGUuCitUaGlzIGNvdWxkIGxlYWQgdG8gaW5maW5pdGUgbG9vcHMgd2hlbiBkb2luZyBhIGdl
dERpcmVjdFByb3RvdHlwZSgpCitsb29wLgorCitGaXhpbmcgdGhpcyBidWcgcmV2ZWFsZWQgYW5v
dGhlciBidWcsIHdoaWNoIGlzIGEgZ29vZCBJIG1hZGUgd2hlbgoraW1wbGVtZW50aW5nIFByb3h5
LiBXZSBzaG91bGQgbm90IHNwZWNpYWwgY2FzZSAiX19wcm90b19fIiBpbiBnZXQKK2FuZCBzZXQg
Zm9yIAorCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKiBydW50aW1lL1Byb3h5T2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6cGVyZm9ybVByb3h5R2V0KToKKyAgICAgICAgKEpTQzo6UHJv
eHlPYmplY3Q6OnB1dCk6CisKIDIwMTYtMDktMDIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsIG91dCByMjA1MzU0IGJlY2F1c2UgaXQg
Y2F1c2VkIEpTQyB0ZXN0IGZhaWx1cmVzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyMDUzNzUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUwOCw5ICs1MDgsOSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkK
ICAgICBtX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7
CiAgICAgewogICAgICAgICBib29sIGlzQ2FsbGFibGUgPSBmYWxzZTsKLSAgICAgICAgbV9wcm94
eU9iamVjdFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIFByb3h5T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpLCBpc0NhbGxhYmxlKSk7CisgICAg
ICAgIG1fcHJveHlPYmplY3RTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBQcm94eU9iamVjdDo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCB0aGlzLCBqc051bGwoKSwgaXNDYWxsYWJsZSkpOwogICAgICAgICBp
c0NhbGxhYmxlID0gdHJ1ZTsKLSAgICAgICAgbV9jYWxsYWJsZVByb3h5T2JqZWN0U3RydWN0dXJl
LnNldCh2bSwgdGhpcywgUHJveHlPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9v
YmplY3RQcm90b3R5cGUuZ2V0KCksIGlzQ2FsbGFibGUpKTsKKyAgICAgICAgbV9jYWxsYWJsZVBy
b3h5T2JqZWN0U3RydWN0dXJlLnNldCh2bSwgdGhpcywgUHJveHlPYmplY3Q6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgdGhpcywganNOdWxsKCksIGlzQ2FsbGFibGUpKTsKICAgICB9CiAgICAgbV9wcm94
eVJldm9rZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIFByb3h5UmV2b2tlOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAkocmV2aXNpb24gMjA1
Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjYsOSArMTI2LDYgQEAgc3RhdGljIEpTVmFsdWUgcGVyZm9ybVBy
b3h5R2V0KEV4ZWNTdGF0ZQogCiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHByb3h5T2JqZWN0LT50
YXJnZXQoKTsKIAotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+dW5k
ZXJzY29yZVByb3RvKQotICAgICAgICByZXR1cm4gcHJveHlPYmplY3QtPnBlcmZvcm1HZXRQcm90
b3R5cGUoZXhlYyk7Ci0KICAgICBhdXRvIHBlcmZvcm1EZWZhdWx0R2V0ID0gWyZdIHsKICAgICAg
ICAgcmV0dXJuIHRhcmdldC0+Z2V0KGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgfTsKQEAgLTQ1
OSw4ICs0NTYsNiBAQCBib29sIFByb3h5T2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjCiB7
CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBzbG90LmRpc2FibGVDYWNoaW5nKCk7Ci0g
ICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8p
Ci0gICAgICAgIHJldHVybiBCYXNlOjpwdXQoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2xvdCk7CiAKICAgICBQcm94eU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxQcm94eU9i
amVjdCo+KGNlbGwpOwogICAgIGF1dG8gcGVyZm9ybURlZmF1bHRQdXQgPSBbJl0gKCkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288073</attachid>
            <date>2016-09-06 17:40:55 -0700</date>
            <delta_ts>2016-09-06 19:50:34 -0700</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>18793</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDUzOTEpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDE2LTA5LTAyICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFByb3h5T2JqZWN0J3Mgc3RydWN0dXJlIHNob3VsZCBub3QgaGF2ZSBP
YmplY3RQcm90b3R5cGUgYXMgaXRzIHByb3RvdHlwZSBhbmQgaXQgc2hvdWxkIG5vdCBoYXZlIHNw
ZWNpYWwgYmVoYXZpb3IgZm9yIGludGVyY2VwdGluZyAiX19wcm90b19fIgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNTU4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvcHJveHktZ2V0LXBy
b3RvdHlwZS1vZi5qczoKKyAgICAgICAgKiBzdHJlc3MvcHJveHktc2V0LXByb3RvdHlwZS1vZi5q
czoKKyAgICAgICAgKGxldC5oYW5kbGVyLnNldFByb3RvdHlwZU9mKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBzdHJlc3MvcHJveHktdW5kZXJzY29yZS1wcm90by5qczogQWRkZWQuCisgICAgICAgIChh
c3NlcnQpOgorCiAyMDE2LTA5LTAyICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQgZml4IGFmdGVyIGltcG9ydGluZyBDaGFrcmEgdGVzdApJ
bmRleDogSlNUZXN0cy9zdHJlc3MvcHJveHktZG9udC1pbmZpbml0ZS1sb29wLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3Byb3h5LWRvbnQtaW5maW5pdGUtbG9vcC5qcwkocmV2aXNp
b24gMCkKKysrIEpTVGVzdHMvc3RyZXNzL3Byb3h5LWRvbnQtaW5maW5pdGUtbG9vcC5qcwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDE3IEBACitmdW5jdGlvbiBmb28oKSB7CisgICAgbGV0IHRh
cmdldCA9IHsKKyAgICAgIF9fcHJvdG9fXzogbnVsbAorICAgIH07CisgICAgbGV0IHByb3h5ID0g
bmV3IFByb3h5KHRhcmdldCwgeworICAgICAgICBnZXQoLi4uYXJncykgeworICAgICAgICAgICAg
cmV0dXJuIFJlZmxlY3QuZ2V0KC4uLmFyZ3MpOworICAgICAgICB9CisgICAgfSk7CisgICAgT2Jq
ZWN0LnByb3RvdHlwZS5fX3Byb3RvX18gPSB7CisgICAgICAgX19wcm90b19fOiBwcm94eSwKKyAg
ICB9OworCisgICAgbGV0IGEgPSB7fTsKKyAgICBhLnRlc3Q7Cit9Citmb28oKTsKSW5kZXg6IEpT
VGVzdHMvc3RyZXNzL3Byb3h5LWdldC1wcm90b3R5cGUtb2YuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNU
ZXN0cy9zdHJlc3MvcHJveHktZ2V0LXByb3RvdHlwZS1vZi5qcwkocmV2aXNpb24gMjA1Mzc1KQor
KysgSlNUZXN0cy9zdHJlc3MvcHJveHktZ2V0LXByb3RvdHlwZS1vZi5qcwkod29ya2luZyBjb3B5
KQpAQCAtMTgsNyArMTgsNiBAQCBmdW5jdGlvbiBhc3NlcnQoYikgewogICAgICAgICBsZXQgZ2V0
dGVycyA9IFsKICAgICAgICAgICAgICgpID0+IFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YocHJveHkp
LAogICAgICAgICAgICAgKCkgPT4gT2JqZWN0LmdldFByb3RvdHlwZU9mKHByb3h5KSwKLSAgICAg
ICAgICAgICgpID0+IHByb3h5Ll9fcHJvdG9fXywKICAgICAgICAgXTsKICAgICAgICAgZm9yIChs
ZXQgZ2V0IG9mIGdldHRlcnMpIHsKICAgICAgICAgICAgIGxldCB0aHJldyA9IGZhbHNlOwpAQCAt
NDgsNyArNDcsNiBAQCBmdW5jdGlvbiBhc3NlcnQoYikgewogICAgICAgICBsZXQgZ2V0dGVycyA9
IFsKICAgICAgICAgICAgICgpID0+IFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YocHJveHkpLAogICAg
ICAgICAgICAgKCkgPT4gT2JqZWN0LmdldFByb3RvdHlwZU9mKHByb3h5KSwKLSAgICAgICAgICAg
ICgpID0+IHByb3h5Ll9fcHJvdG9fXywKICAgICAgICAgXTsKICAgICAgICAgZm9yIChsZXQgZ2V0
IG9mIGdldHRlcnMpIHsKICAgICAgICAgICAgIGxldCB0aHJldyA9IGZhbHNlOwpAQCAtODMsNyAr
ODEsNiBAQCBmdW5jdGlvbiBhc3NlcnQoYikgewogICAgICAgICBsZXQgZ2V0dGVycyA9IFsKICAg
ICAgICAgICAgICgpID0+IFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YocHJveHkpLAogICAgICAgICAg
ICAgKCkgPT4gT2JqZWN0LmdldFByb3RvdHlwZU9mKHByb3h5KSwKLSAgICAgICAgICAgICgpID0+
IHByb3h5Ll9fcHJvdG9fXywKICAgICAgICAgXTsKICAgICAgICAgZm9yIChsZXQgZ2V0IG9mIGdl
dHRlcnMpIHsKICAgICAgICAgICAgIGxldCB0aHJldyA9IGZhbHNlOwpAQCAtMTA5LDcgKzEwNiw2
IEBAIGZ1bmN0aW9uIGFzc2VydChiKSB7CiAgICAgICAgIGxldCBnZXR0ZXJzID0gWwogICAgICAg
ICAgICAgKCkgPT4gUmVmbGVjdC5nZXRQcm90b3R5cGVPZihwcm94eSksCiAgICAgICAgICAgICAo
KSA9PiBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJveHkpLAotICAgICAgICAgICAgKCkgPT4gcHJv
eHkuX19wcm90b19fLAogICAgICAgICBdOwogICAgICAgICBmb3IgKGxldCBnZXQgb2YgZ2V0dGVy
cykgewogICAgICAgICAgICAgbGV0IHRocmV3ID0gZmFsc2U7CkBAIC0xMzcsNyArMTMzLDYgQEAg
ZnVuY3Rpb24gYXNzZXJ0KGIpIHsKICAgICAgICAgbGV0IGdldHRlcnMgPSBbCiAgICAgICAgICAg
ICAoKSA9PiBSZWZsZWN0LmdldFByb3RvdHlwZU9mKHByb3h5KSwKICAgICAgICAgICAgICgpID0+
IE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm94eSksCi0gICAgICAgICAgICAoKSA9PiBwcm94eS5f
X3Byb3RvX18sCiAgICAgICAgIF07CiAgICAgICAgIGZvciAobGV0IGdldCBvZiBnZXR0ZXJzKSB7
CiAgICAgICAgICAgICBsZXQgdGhyZXcgPSBmYWxzZTsKQEAgLTE2NSw3ICsxNjAsNiBAQCBmdW5j
dGlvbiBhc3NlcnQoYikgewogICAgICAgICBsZXQgZ2V0dGVycyA9IFsKICAgICAgICAgICAgICgp
ID0+IFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YocHJveHkpLAogICAgICAgICAgICAgKCkgPT4gT2Jq
ZWN0LmdldFByb3RvdHlwZU9mKHByb3h5KSwKLSAgICAgICAgICAgICgpID0+IHByb3h5Ll9fcHJv
dG9fXywKICAgICAgICAgXTsKICAgICAgICAgZm9yIChsZXQgZ2V0IG9mIGdldHRlcnMpIHsKICAg
ICAgICAgICAgIGxldCB0aHJldyA9IGZhbHNlOwpAQCAtMTk0LDcgKzE4OCw2IEBAIGZ1bmN0aW9u
IGFzc2VydChiKSB7CiAgICAgICAgIGxldCBnZXR0ZXJzID0gWwogICAgICAgICAgICAgKCkgPT4g
UmVmbGVjdC5nZXRQcm90b3R5cGVPZihwcm94eSksCiAgICAgICAgICAgICAoKSA9PiBPYmplY3Qu
Z2V0UHJvdG90eXBlT2YocHJveHkpLAotICAgICAgICAgICAgKCkgPT4gcHJveHkuX19wcm90b19f
LAogICAgICAgICBdOwogICAgICAgICBmb3IgKGxldCBnZXQgb2YgZ2V0dGVycykgewogICAgICAg
ICAgICAgbGV0IHRocmV3ID0gZmFsc2U7CkBAIC0yMjQsNyArMjE3LDYgQEAgZnVuY3Rpb24gYXNz
ZXJ0KGIpIHsKICAgICAgICAgbGV0IGdldHRlcnMgPSBbCiAgICAgICAgICAgICAoKSA9PiBSZWZs
ZWN0LmdldFByb3RvdHlwZU9mKHByb3h5KSwKICAgICAgICAgICAgICgpID0+IE9iamVjdC5nZXRQ
cm90b3R5cGVPZihwcm94eSksCi0gICAgICAgICAgICAoKSA9PiBwcm94eS5fX3Byb3RvX18sCiAg
ICAgICAgIF07CiAgICAgICAgIGZvciAobGV0IGdldCBvZiBnZXR0ZXJzKSB7CiAgICAgICAgICAg
ICBsZXQgdGhyZXcgPSBmYWxzZTsKQEAgLTI1NSw3ICsyNDcsNiBAQCBmdW5jdGlvbiBhc3NlcnQo
YikgewogICAgICAgICBsZXQgZ2V0dGVycyA9IFsKICAgICAgICAgICAgICgpID0+IFJlZmxlY3Qu
Z2V0UHJvdG90eXBlT2YocHJveHkpLAogICAgICAgICAgICAgKCkgPT4gT2JqZWN0LmdldFByb3Rv
dHlwZU9mKHByb3h5KSwKLSAgICAgICAgICAgICgpID0+IHByb3h5Ll9fcHJvdG9fXywKICAgICAg
ICAgXTsKICAgICAgICAgZm9yIChsZXQgZ2V0IG9mIGdldHRlcnMpIHsKICAgICAgICAgICAgIGxl
dCByZXN1bHQgPSBnZXQoKTsKQEAgLTI4NSw3ICsyNzYsNiBAQCBmdW5jdGlvbiBhc3NlcnQoYikg
ewogICAgICAgICBsZXQgZ2V0dGVycyA9IFsKICAgICAgICAgICAgICgpID0+IFJlZmxlY3QuZ2V0
UHJvdG90eXBlT2YocHJveHkpLAogICAgICAgICAgICAgKCkgPT4gT2JqZWN0LmdldFByb3RvdHlw
ZU9mKHByb3h5KSwKLSAgICAgICAgICAgICgpID0+IHByb3h5Ll9fcHJvdG9fXywKICAgICAgICAg
XTsKICAgICAgICAgZm9yIChsZXQgZ2V0IG9mIGdldHRlcnMpIHsKICAgICAgICAgICAgIGxldCBy
ZXN1bHQgPSBnZXQoKTsKQEAgLTMwOCw3ICsyOTgsNiBAQCBmdW5jdGlvbiBhc3NlcnQoYikgewog
ICAgICAgICBsZXQgZ2V0dGVycyA9IFsKICAgICAgICAgICAgICgpID0+IFJlZmxlY3QuZ2V0UHJv
dG90eXBlT2YocHJveHkpLAogICAgICAgICAgICAgKCkgPT4gT2JqZWN0LmdldFByb3RvdHlwZU9m
KHByb3h5KSwKLSAgICAgICAgICAgICgpID0+IHByb3h5Ll9fcHJvdG9fXywKICAgICAgICAgXTsK
ICAgICAgICAgZm9yIChsZXQgZ2V0IG9mIGdldHRlcnMpIHsKICAgICAgICAgICAgIGFzc2VydChn
ZXQoKSA9PT0gcHJvdG8pOwpAQCAtMzMzLDcgKzMyMiw2IEBAIGZ1bmN0aW9uIGFzc2VydChiKSB7
CiAgICAgICAgIGxldCBnZXR0ZXJzID0gWwogICAgICAgICAgICAgKCkgPT4gUmVmbGVjdC5nZXRQ
cm90b3R5cGVPZihwcm94eSksCiAgICAgICAgICAgICAoKSA9PiBPYmplY3QuZ2V0UHJvdG90eXBl
T2YocHJveHkpLAotICAgICAgICAgICAgKCkgPT4gcHJveHkuX19wcm90b19fLAogICAgICAgICBd
OwogICAgICAgICBmb3IgKGxldCBnZXQgb2YgZ2V0dGVycykgewogICAgICAgICAgICAgYXNzZXJ0
KGdldCgpID09PSBwcm90byk7CkBAIC0zNjAsNyArMzQ4LDYgQEAgZnVuY3Rpb24gYXNzZXJ0KGIp
IHsKICAgICAgICAgbGV0IGdldHRlcnMgPSBbCiAgICAgICAgICAgICAoKSA9PiBSZWZsZWN0Lmdl
dFByb3RvdHlwZU9mKHByb3h5KSwKICAgICAgICAgICAgICgpID0+IE9iamVjdC5nZXRQcm90b3R5
cGVPZihwcm94eSksCi0gICAgICAgICAgICAoKSA9PiBwcm94eS5fX3Byb3RvX18sCiAgICAgICAg
IF07CiAgICAgICAgIGZvciAobGV0IGdldCBvZiBnZXR0ZXJzKSB7CiAgICAgICAgICAgICBhc3Nl
cnQoZ2V0KCkgPT09IHByb3RvKTsKQEAgLTM4Nyw3ICszNzQsNiBAQCBmdW5jdGlvbiBhc3NlcnQo
YikgewogICAgICAgICBsZXQgZ2V0dGVycyA9IFsKICAgICAgICAgICAgICgpID0+IFJlZmxlY3Qu
Z2V0UHJvdG90eXBlT2YocHJveHkpLAogICAgICAgICAgICAgKCkgPT4gT2JqZWN0LmdldFByb3Rv
dHlwZU9mKHByb3h5KSwKLSAgICAgICAgICAgICgpID0+IHByb3h5Ll9fcHJvdG9fXywKICAgICAg
ICAgXTsKICAgICAgICAgZm9yIChsZXQgZ2V0IG9mIGdldHRlcnMpIHsKICAgICAgICAgICAgIGFz
c2VydChnZXQoKSA9PT0gcHJvdG8pOwpJbmRleDogSlNUZXN0cy9zdHJlc3MvcHJveHktc2V0LXBy
b3RvdHlwZS1vZi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9wcm94eS1zZXQtcHJv
dG90eXBlLW9mLmpzCShyZXZpc2lvbiAyMDUzNzUpCisrKyBKU1Rlc3RzL3N0cmVzcy9wcm94eS1z
ZXQtcHJvdG90eXBlLW9mLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw3ICsxOCw2IEBAIGZ1bmN0
aW9uIGFzc2VydChiKSB7CiAgICAgICAgIGxldCBzZXR0ZXJzID0gWwogICAgICAgICAgICAgKCkg
PT4gUmVmbGVjdC5zZXRQcm90b3R5cGVPZihwcm94eSwge30pLAogICAgICAgICAgICAgKCkgPT4g
T2JqZWN0LnNldFByb3RvdHlwZU9mKHByb3h5LCB7fSksCi0gICAgICAgICAgICAoKSA9PiBwcm94
eS5fX3Byb3RvX18gPSB7fSwKICAgICAgICAgXTsKICAgICAgICAgZm9yIChsZXQgc2V0IG9mIHNl
dHRlcnMpIHsKICAgICAgICAgICAgIGxldCB0aHJldyA9IGZhbHNlOwpAQCAtNDgsNyArNDcsNiBA
QCBmdW5jdGlvbiBhc3NlcnQoYikgewogICAgICAgICBsZXQgc2V0dGVycyA9IFsKICAgICAgICAg
ICAgICgpID0+IFJlZmxlY3Quc2V0UHJvdG90eXBlT2YocHJveHksIHt9KSwKICAgICAgICAgICAg
ICgpID0+IE9iamVjdC5zZXRQcm90b3R5cGVPZihwcm94eSwge30pLAotICAgICAgICAgICAgKCkg
PT4gcHJveHkuX19wcm90b19fID0ge30sCiAgICAgICAgIF07CiAgICAgICAgIGZvciAobGV0IHNl
dCBvZiBzZXR0ZXJzKSB7CiAgICAgICAgICAgICBsZXQgdGhyZXcgPSBmYWxzZTsKQEAgLTc1LDcg
KzczLDYgQEAgZnVuY3Rpb24gYXNzZXJ0KGIpIHsKICAgICAgICAgbGV0IHNldHRlcnMgPSBbCiAg
ICAgICAgICAgICAoKSA9PiBSZWZsZWN0LnNldFByb3RvdHlwZU9mKHByb3h5LCB7fSksCiAgICAg
ICAgICAgICAoKSA9PiBPYmplY3Quc2V0UHJvdG90eXBlT2YocHJveHksIHt9KSwKLSAgICAgICAg
ICAgICgpID0+IHByb3h5Ll9fcHJvdG9fXyA9IHt9LAogICAgICAgICBdOwogICAgICAgICBmb3Ig
KGxldCBzZXQgb2Ygc2V0dGVycykgewogICAgICAgICAgICAgbGV0IHRocmV3ID0gZmFsc2U7CkBA
IC0xMDQsMTUgKzEwMSwxMyBAQCBmdW5jdGlvbiBhc3NlcnQoYikgewogICAgICAgICBsZXQgc2V0
dGVycyA9IFsKICAgICAgICAgICAgICgpID0+IFJlZmxlY3Quc2V0UHJvdG90eXBlT2YocHJveHks
IHt9KSwKICAgICAgICAgICAgICgpID0+IE9iamVjdC5zZXRQcm90b3R5cGVPZihwcm94eSwge30p
LAotICAgICAgICAgICAgKCkgPT4gcHJveHkuX19wcm90b19fID0ge30sCiAgICAgICAgIF07CiAg
ICAgICAgIGZvciAobGV0IHNldCBvZiBzZXR0ZXJzKSB7CiAgICAgICAgICAgICBsZXQgcmVzdWx0
ID0gc2V0KCk7CiAgICAgICAgICAgICBhc3NlcnQocmVzdWx0KTsKICAgICAgICAgICAgIGFzc2Vy
dChSZWZsZWN0LmdldFByb3RvdHlwZU9mKHRhcmdldCkgPT09IG51bGwpOwotICAgICAgICAgICAg
Ly8gRklYTUU6IHdoZW4gd2UgaW1wbGVtZW50IFByb3h5LltbR2V0UHJvdG90eXBlT2ZdXSB0aGlz
IHNob3VsZCB3b3JrLgotICAgICAgICAgICAgLy9hc3NlcnQoUmVmbGVjdC5nZXRQcm90b3R5cGVP
Zihwcm94eSkgPT09IG51bGwpOwotICAgICAgICAgICAgLy9hc3NlcnQocHJveHkuX19wcm90b19f
ID09PSBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydChSZWZsZWN0LmdldFByb3RvdHlwZU9mKHBy
b3h5KSA9PT0gbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQocHJveHkuX19wcm90b19fID09PSB1
bmRlZmluZWQpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTMzLDE1ICsxMjgsMTMgQEAgZnVu
Y3Rpb24gYXNzZXJ0KGIpIHsKICAgICAgICAgbGV0IHNldHRlcnMgPSBbCiAgICAgICAgICAgICAo
KSA9PiBSZWZsZWN0LnNldFByb3RvdHlwZU9mKHByb3h5LCBvYmopLAogICAgICAgICAgICAgKCkg
PT4gT2JqZWN0LnNldFByb3RvdHlwZU9mKHByb3h5LCBvYmopLAotICAgICAgICAgICAgKCkgPT4g
cHJveHkuX19wcm90b19fID0gb2JqLAogICAgICAgICBdOwogICAgICAgICBmb3IgKGxldCBzZXQg
b2Ygc2V0dGVycykgewogICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHNldCgpOwogICAgICAgICAg
ICAgYXNzZXJ0KHJlc3VsdCk7CiAgICAgICAgICAgICBhc3NlcnQoUmVmbGVjdC5nZXRQcm90b3R5
cGVPZih0YXJnZXQpID09PSBvYmopOwotICAgICAgICAgICAgLy8gRklYTUU6IHdoZW4gd2UgaW1w
bGVtZW50IFByb3h5LltbR2V0UHJvdG90eXBlT2ZdXSB0aGlzIHNob3VsZCB3b3JrLgotICAgICAg
ICAgICAgLy9hc3NlcnQoUmVmbGVjdC5nZXRQcm90b3R5cGVPZihwcm94eSkgPT09IG9iaik7Ci0g
ICAgICAgICAgICAvL2Fzc2VydChwcm94eS5fX3Byb3RvX18gPT09IG9iaik7CisgICAgICAgICAg
ICBhc3NlcnQoUmVmbGVjdC5nZXRQcm90b3R5cGVPZihwcm94eSkgPT09IG9iaik7CisgICAgICAg
ICAgICBhc3NlcnQocHJveHkuX19wcm90b19fID09PSBvYmopOwogICAgICAgICB9CiAgICAgfQog
fQpAQCAtMTY3LDcgKzE2MCw2IEBAIGZ1bmN0aW9uIGFzc2VydChiKSB7CiAgICAgICAgIGxldCBz
ZXR0ZXJzID0gWwogICAgICAgICAgICAgKCkgPT4gUmVmbGVjdC5zZXRQcm90b3R5cGVPZihwcm94
eSwgb2JqKSwKICAgICAgICAgICAgICgpID0+IE9iamVjdC5zZXRQcm90b3R5cGVPZihwcm94eSwg
b2JqKSwKLSAgICAgICAgICAgICgpID0+IHByb3h5Ll9fcHJvdG9fXyA9IG9iaiwKICAgICAgICAg
XTsKICAgICAgICAgZm9yIChsZXQgc2V0IG9mIHNldHRlcnMpIHsKICAgICAgICAgICAgIGxldCB0
aHJldyA9IGZhbHNlOwpAQCAtMTgyLDkgKzE3NCw4IEBAIGZ1bmN0aW9uIGFzc2VydChiKSB7CiAK
ICAgICAgICAgICAgIGFzc2VydCh0aHJldyk7CiAgICAgICAgICAgICBhc3NlcnQoUmVmbGVjdC5n
ZXRQcm90b3R5cGVPZih0YXJnZXQpID09PSBudWxsKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiB3
aGVuIHdlIGltcGxlbWVudCBQcm94eS5bW0dldFByb3RvdHlwZU9mXV0gdGhpcyBzaG91bGQgd29y
ay4KLSAgICAgICAgICAgIC8vYXNzZXJ0KFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YocHJveHkpID09
PSBudWxsKTsKLSAgICAgICAgICAgIC8vYXNzZXJ0KHByb3h5Ll9fcHJvdG9fXyA9PT0gbnVsbCk7
CisgICAgICAgICAgICBhc3NlcnQoUmVmbGVjdC5nZXRQcm90b3R5cGVPZihwcm94eSkgPT09IG51
bGwpOworICAgICAgICAgICAgYXNzZXJ0KHByb3h5Ll9fcHJvdG9fXyA9PT0gdW5kZWZpbmVkKTsK
ICAgICAgICAgfQogICAgIH0KIH0KQEAgLTIwOSw3ICsyMDAsNiBAQCBmdW5jdGlvbiBhc3NlcnQo
YikgewogICAgICAgICBsZXQgc2V0dGVycyA9IFsKICAgICAgICAgICAgIFsoKSA9PiBSZWZsZWN0
LnNldFByb3RvdHlwZU9mKHByb3h5LCBudWxsKSwgdHJ1ZV0sCiAgICAgICAgICAgICBbKCkgPT4g
T2JqZWN0LnNldFByb3RvdHlwZU9mKHByb3h5LCBudWxsKSwgcHJveHldLAotICAgICAgICAgICAg
WygpID0+IHByb3h5Ll9fcHJvdG9fXyA9IG51bGwsIG51bGxdCiAgICAgICAgIF07CiAgICAgICAg
IGZvciAobGV0IFtzZXQsIGV4cGVjdGVkUmVzdWx0XSBvZiBzZXR0ZXJzKSB7CiAgICAgICAgICAg
ICBsZXQgcmVzdWx0ID0gc2V0KCk7CkBAIC0yMTcsOSArMjA3LDggQEAgZnVuY3Rpb24gYXNzZXJ0
KGIpIHsKICAgICAgICAgICAgIGFzc2VydChjYWxsZWQpOwogICAgICAgICAgICAgY2FsbGVkID0g
ZmFsc2U7CiAgICAgICAgICAgICBhc3NlcnQoUmVmbGVjdC5nZXRQcm90b3R5cGVPZih0YXJnZXQp
ID09PSBudWxsKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiB3aGVuIHdlIGltcGxlbWVudCBQcm94
eS5bW0dldFByb3RvdHlwZU9mXV0gdGhpcyBzaG91bGQgd29yay4KLSAgICAgICAgICAgIC8vYXNz
ZXJ0KFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YocHJveHkpID09PSBudWxsKTsKLSAgICAgICAgICAg
IC8vYXNzZXJ0KHByb3h5Ll9fcHJvdG9fXyA9PT0gbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQo
UmVmbGVjdC5nZXRQcm90b3R5cGVPZihwcm94eSkgPT09IG51bGwpOworICAgICAgICAgICAgYXNz
ZXJ0KHByb3h5Ll9fcHJvdG9fXyA9PT0gdW5kZWZpbmVkKTsKICAgICAgICAgfQogICAgIH0KIH0K
QEAgLTI0NSw3ICsyMzQsNiBAQCBmdW5jdGlvbiBhc3NlcnQoYikgewogICAgICAgICBsZXQgc2V0
dGVycyA9IFsKICAgICAgICAgICAgIFsoKSA9PiBSZWZsZWN0LnNldFByb3RvdHlwZU9mKHByb3h5
LCBvYmopLCB0cnVlXSwKICAgICAgICAgICAgIFsoKSA9PiBPYmplY3Quc2V0UHJvdG90eXBlT2Yo
cHJveHksIG9iaiksIHByb3h5XSwKLSAgICAgICAgICAgIFsoKSA9PiBwcm94eS5fX3Byb3RvX18g
PSBvYmosIG9ial0KICAgICAgICAgXTsKICAgICAgICAgZm9yIChsZXQgW3NldCwgZXhwZWN0ZWRS
ZXN1bHRdIG9mIHNldHRlcnMpIHsKICAgICAgICAgICAgIGxldCByZXN1bHQgPSBzZXQoKTsKQEAg
LTI1Myw5ICsyNDEsOCBAQCBmdW5jdGlvbiBhc3NlcnQoYikgewogICAgICAgICAgICAgYXNzZXJ0
KGNhbGxlZCk7CiAgICAgICAgICAgICBjYWxsZWQgPSBmYWxzZTsKICAgICAgICAgICAgIGFzc2Vy
dChSZWZsZWN0LmdldFByb3RvdHlwZU9mKHRhcmdldCkgPT09IG9iaik7Ci0gICAgICAgICAgICAv
LyBGSVhNRTogd2hlbiB3ZSBpbXBsZW1lbnQgUHJveHkuW1tHZXRQcm90b3R5cGVPZl1dIHRoaXMg
c2hvdWxkIHdvcmsuCi0gICAgICAgICAgICAvL2Fzc2VydChSZWZsZWN0LmdldFByb3RvdHlwZU9m
KHByb3h5KSA9PT0gbnVsbCk7Ci0gICAgICAgICAgICAvL2Fzc2VydChwcm94eS5fX3Byb3RvX18g
PT09IG51bGwpOworICAgICAgICAgICAgYXNzZXJ0KFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YocHJv
eHkpID09PSBvYmopOworICAgICAgICAgICAgYXNzZXJ0KHByb3h5Ll9fcHJvdG9fXyA9PT0gb2Jq
KTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTI4MywzOCArMjcwLDggQEAgZnVuY3Rpb24gYXNz
ZXJ0KGIpIHsKIAogICAgICAgICBhc3NlcnQodGhyZXcpOwogICAgICAgICBhc3NlcnQoUmVmbGVj
dC5nZXRQcm90b3R5cGVPZih0YXJnZXQpID09PSBudWxsKTsKLSAgICAgICAgLy8gRklYTUU6IHdo
ZW4gd2UgaW1wbGVtZW50IFByb3h5LltbR2V0UHJvdG90eXBlT2ZdXSB0aGlzIHNob3VsZCB3b3Jr
LgotICAgICAgICAvL2Fzc2VydChSZWZsZWN0LmdldFByb3RvdHlwZU9mKHByb3h5KSA9PT0gbnVs
bCk7Ci0gICAgICAgIC8vYXNzZXJ0KHByb3h5Ll9fcHJvdG9fXyA9PT0gbnVsbCk7Ci0gICAgfQot
fQotCi17Ci0gICAgbGV0IHRhcmdldCA9IHt9OwotICAgIHRhcmdldC5fX3Byb3RvX18gPSBudWxs
OwotICAgIFJlZmxlY3QucHJldmVudEV4dGVuc2lvbnModGFyZ2V0KTsKLSAgICBsZXQgaGFuZGxl
ciA9IHsKLSAgICAgICAgc2V0UHJvdG90eXBlT2Y6IGZ1bmN0aW9uKHRoZVRhcmdldCwgdmFsdWUp
IHsKLSAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LnNldFByb3RvdHlwZU9mKHRoZVRhcmdldCwg
dmFsdWUpOwotICAgICAgICB9Ci0gICAgfTsKLSAgICAKLSAgICBsZXQgcHJveHkgPSBuZXcgUHJv
eHkodGFyZ2V0LCBoYW5kbGVyKTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwMDsgaSsrKSB7
Ci0gICAgICAgIGxldCBvYmogPSB7fTsKLSAgICAgICAgbGV0IHRocmV3ID0gZmFsc2U7Ci0gICAg
ICAgIHRyeSB7Ci0gICAgICAgICAgICBwcm94eS5fX3Byb3RvX18gPSBvYmo7Ci0gICAgICAgIH0g
Y2F0Y2goZSkgewotICAgICAgICAgICAgdGhyZXcgPSB0cnVlOwotICAgICAgICAgICAgYXNzZXJ0
KGUudG9TdHJpbmcoKSA9PT0gIlR5cGVFcnJvcjogUHJveHkgJ3NldFByb3RvdHlwZU9mJyByZXR1
cm5lZCBmYWxzZSBpbmRpY2F0aW5nIGl0IGNvdWxkIG5vdCBzZXQgdGhlIHByb3RvdHlwZSB2YWx1
ZS4gVGhlIG9wZXJhdGlvbiB3YXMgZXhwZWN0ZWQgdG8gc3VjY2VlZCIpOwotICAgICAgICB9Ci0K
LSAgICAgICAgYXNzZXJ0KHRocmV3KTsKLSAgICAgICAgYXNzZXJ0KFJlZmxlY3QuZ2V0UHJvdG90
eXBlT2YodGFyZ2V0KSA9PT0gbnVsbCk7Ci0gICAgICAgIC8vIEZJWE1FOiB3aGVuIHdlIGltcGxl
bWVudCBQcm94eS5bW0dldFByb3RvdHlwZU9mXV0gdGhpcyBzaG91bGQgd29yay4KLSAgICAgICAg
Ly9hc3NlcnQoUmVmbGVjdC5nZXRQcm90b3R5cGVPZihwcm94eSkgPT09IG51bGwpOwotICAgICAg
ICAvL2Fzc2VydChwcm94eS5fX3Byb3RvX18gPT09IG51bGwpOworICAgICAgICBhc3NlcnQoUmVm
bGVjdC5nZXRQcm90b3R5cGVPZihwcm94eSkgPT09IG51bGwpOworICAgICAgICBhc3NlcnQocHJv
eHkuX19wcm90b19fID09PSB1bmRlZmluZWQpOwogICAgIH0KIH0KIApAQCAtMzM5LDkgKzI5Niw4
IEBAIGZ1bmN0aW9uIGFzc2VydChiKSB7CiAKICAgICAgICAgYXNzZXJ0KGNhbGxlZCk7CiAgICAg
ICAgIGNhbGxlZCA9IGZhbHNlOwotICAgICAgICAvLyBGSVhNRTogd2hlbiB3ZSBpbXBsZW1lbnQg
UHJveHkuW1tHZXRQcm90b3R5cGVPZl1dIHRoaXMgc2hvdWxkIHdvcmsuCi0gICAgICAgIC8vYXNz
ZXJ0KFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YocHJveHkpID09PSBudWxsKTsKLSAgICAgICAgLy9h
c3NlcnQocHJveHkuX19wcm90b19fID09PSBudWxsKTsKKyAgICAgICAgYXNzZXJ0KFJlZmxlY3Qu
Z2V0UHJvdG90eXBlT2YocHJveHkpID09PSBudWxsKTsKKyAgICAgICAgYXNzZXJ0KHByb3h5Ll9f
cHJvdG9fXyA9PT0gdW5kZWZpbmVkKTsKICAgICB9CiB9CiAKQEAgLTM2Niw5ICszMjIsOCBAQCBm
dW5jdGlvbiBhc3NlcnQoYikgewogICAgICAgICBhc3NlcnQoY2FsbGVkKTsKICAgICAgICAgY2Fs
bGVkID0gZmFsc2U7CiAKLSAgICAgICAgLy8gRklYTUU6IHdoZW4gd2UgaW1wbGVtZW50IFByb3h5
LltbR2V0UHJvdG90eXBlT2ZdXSB0aGlzIHNob3VsZCB3b3JrLgotICAgICAgICAvL2Fzc2VydChS
ZWZsZWN0LmdldFByb3RvdHlwZU9mKHByb3h5KSA9PT0gbnVsbCk7Ci0gICAgICAgIC8vYXNzZXJ0
KHByb3h5Ll9fcHJvdG9fXyA9PT0gbnVsbCk7CisgICAgICAgIGFzc2VydChSZWZsZWN0LmdldFBy
b3RvdHlwZU9mKHByb3h5KSA9PT0gbnVsbCk7CisgICAgICAgIGFzc2VydChwcm94eS5fX3Byb3Rv
X18gPT09IHVuZGVmaW5lZCk7CiAgICAgfQogfQogCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9wcm94
eS11bmRlcnNjb3JlLXByb3RvLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3Byb3h5
LXVuZGVyc2NvcmUtcHJvdG8uanMJKHJldmlzaW9uIDApCisrKyBKU1Rlc3RzL3N0cmVzcy9wcm94
eS11bmRlcnNjb3JlLXByb3RvLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEwIEBACitm
dW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJCYWQgYXNzZXJ0aW9uISIpOworfQorCit7CisgICAgbGV0IHAgPSB7fTsKKyAgICBsZXQgdGFy
Z2V0ID0ge19fcHJvdG9fXzogcH07CisgICAgbGV0IGNhbGxlZCA9IGZhbHNlOworICAgIGxldCBo
YW5kbGVyID0geworICAgICAgICBnZXQodGFyZ2V0LCBrZXksIHJlY2VpdmVyKSB7CisgICAgICAg
ICAgICBjYWxsZWQgPSB0cnVlOworICAgICAgICAgICAgYXNzZXJ0KGtleSA9PT0gIl9fcHJvdG9f
XyIpOworICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtrZXldOworICAgICAgICB9LAorCisgICAg
ICAgIGdldFByb3RvdHlwZU9mKCkgeworICAgICAgICAgICAgYXNzZXJ0KGZhbHNlKTsKKyAgICAg
ICAgfQorICAgIH07CisgICAgCisgICAgbGV0IHByb3h5ID0gbmV3IFByb3h5KHRhcmdldCwgaGFu
ZGxlcik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDA7IGkrKykgeworICAgICAgICBhc3Nl
cnQocHJveHkuX19wcm90b19fID09PSBwKTsKKyAgICAgICAgYXNzZXJ0KGNhbGxlZCk7CisgICAg
ICAgIGNhbGxlZCA9IGZhbHNlOworICAgIH0KK30KKworeworICAgIGxldCBwID0ge307CisgICAg
bGV0IHRhcmdldCA9IHtfX3Byb3RvX186IHB9OworICAgIGxldCBjYWxsZWQxID0gZmFsc2U7Cisg
ICAgbGV0IGNhbGxlZDIgPSBmYWxzZTsKKyAgICBsZXQgaGFuZGxlciA9IHsKKyAgICAgICAgZ2V0
KHRhcmdldCwga2V5LCByZWNlaXZlcikgeworICAgICAgICAgICAgY2FsbGVkMSA9IHRydWU7Cisg
ICAgICAgICAgICBhc3NlcnQoa2V5ID09PSAiX19wcm90b19fIik7CisgICAgICAgICAgICByZXR1
cm4gUmVmbGVjdC5nZXQodGFyZ2V0LCBrZXksIHJlY2VpdmVyKTsKKyAgICAgICAgfSwKKworICAg
ICAgICBnZXRQcm90b3R5cGVPZiguLi5hcmdzKSB7CisgICAgICAgICAgICBjYWxsZWQyID0gdHJ1
ZTsKKyAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmdldFByb3RvdHlwZU9mKC4uLmFyZ3MpOwor
ICAgICAgICB9CisgICAgfTsKKyAgICAKKyAgICBsZXQgcHJveHkgPSBuZXcgUHJveHkodGFyZ2V0
LCBoYW5kbGVyKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwMDsgaSsrKSB7CisgICAgICAg
IGFzc2VydChwcm94eS5fX3Byb3RvX18gPT09IHApOworICAgICAgICBhc3NlcnQoY2FsbGVkMSk7
CisgICAgICAgIGFzc2VydChjYWxsZWQyKTsKKyAgICAgICAgY2FsbGVkMSA9IGZhbHNlOworICAg
ICAgICBjYWxsZWQyID0gZmFsc2U7CisgICAgfQorfQorCit7CisgICAgbGV0IHAgPSB7fTsKKyAg
ICBsZXQgdGFyZ2V0ID0ge19fcHJvdG9fXzogbnVsbH07CisgICAgbGV0IGNhbGxlZCA9IGZhbHNl
OworICAgIGxldCBoYW5kbGVyID0geworICAgICAgICBzZXQodGFyZ2V0LCBrZXksIHZhbHVlLCBy
ZWNlaXZlcikgeworICAgICAgICAgICAgY2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGFzc2Vy
dChrZXkgPT09ICJfX3Byb3RvX18iKTsKKyAgICAgICAgICAgIHJldHVybiB0YXJnZXRba2V5XSA9
IHZhbHVlOworICAgICAgICB9LAorCisgICAgICAgIHNldFByb3RvdHlwZU9mKCkgeworICAgICAg
ICAgICAgYXNzZXJ0KGZhbHNlKTsKKyAgICAgICAgfQorICAgIH07CisgICAgCisgICAgbGV0IHBy
b3h5ID0gbmV3IFByb3h5KHRhcmdldCwgaGFuZGxlcik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCA1MDA7IGkrKykgeworICAgICAgICBwcm94eS5fX3Byb3RvX18gPSBwOworICAgICAgICBhc3Nl
cnQocHJveHkuX19wcm90b19fID09PSBwKTsKKyAgICAgICAgYXNzZXJ0KHRhcmdldC5fX3Byb3Rv
X18gPT09IHApOworICAgICAgICB0YXJnZXQuX19wcm90b19fID0gbnVsbDsKKyAgICAgICAgYXNz
ZXJ0KGNhbGxlZCk7CisgICAgICAgIGNhbGxlZCA9IGZhbHNlOworICAgIH0KK30KKworeworICAg
IGxldCBwID0ge307CisgICAgbGV0IHRhcmdldCA9IHtfX3Byb3RvX186IG51bGx9OworICAgIGxl
dCBjYWxsZWQgPSBmYWxzZTsKKyAgICBsZXQgaGFuZGxlciA9IHsKKyAgICAgICAgc2V0KHRhcmdl
dCwga2V5LCB2YWx1ZSwgcmVjZWl2ZXIpIHsKKyAgICAgICAgICAgIGNhbGxlZCA9IHRydWU7Cisg
ICAgICAgICAgICBhc3NlcnQoa2V5ID09PSAiX19wcm90b19fIik7CisgICAgICAgICAgICByZXR1
cm4gUmVmbGVjdC5zZXQodGFyZ2V0LCBrZXksIHZhbHVlLCByZWNlaXZlcik7CisgICAgICAgIH0s
CisKKyAgICAgICAgc2V0UHJvdG90eXBlT2YoKSB7CisgICAgICAgICAgICBhc3NlcnQoZmFsc2Up
OworICAgICAgICB9CisgICAgfTsKKyAgICAKKyAgICBsZXQgcHJveHkgPSBuZXcgUHJveHkodGFy
Z2V0LCBoYW5kbGVyKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwMDsgaSsrKSB7CisgICAg
ICAgIHByb3h5Ll9fcHJvdG9fXyA9IHA7CisgICAgICAgIGFzc2VydChwcm94eS5fX3Byb3RvX18g
PT09IHApOworICAgICAgICBhc3NlcnQodGFyZ2V0Ll9fcHJvdG9fXyA9PT0gcCk7CisgICAgICAg
IHRhcmdldC5fX3Byb3RvX18gPSBudWxsOworICAgICAgICBhc3NlcnQoY2FsbGVkKTsKKyAgICAg
ICAgY2FsbGVkID0gZmFsc2U7CisgICAgfQorfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDUzNzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTYtMDktMDIgIFNhYW0gQmFyYXRpICA8
c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgUHJveHlPYmplY3QncyBzdHJ1Y3R1cmUgc2hv
dWxkIG5vdCBoYXZlIE9iamVjdFByb3RvdHlwZSBhcyBpdHMgcHJvdG90eXBlIGFuZCBpdCBzaG91
bGQgbm90IGhhdmUgc3BlY2lhbCBiZWhhdmlvciBmb3IgaW50ZXJjZXB0aW5nICJfX3Byb3RvX18i
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE1NTgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcm94eU9i
amVjdCBoYWQgT2JqZWN0UHJvdG90eXBlIGFzIGl0cyBkaXJlY3QgcHJvdG90eXBlLgorICAgICAg
ICBUaGlzIGNvdWxkIGxlYWQgdG8gaW5maW5pdGUgbG9vcHMgd2hlbiBkb2luZyBhIGdldERpcmVj
dFByb3RvdHlwZSgpCisgICAgICAgIGxvb3AuCisKKyAgICAgICAgRml4aW5nIHRoaXMgYnVnIHJl
dmVhbGVkIGFub3RoZXIgYnVnLCB3aGljaCBJIG1hZGUgd2hlbiBpbXBsZW1lbnRpbmcgUHJveHku
CisgICAgICAgIFdlIHNob3VsZCBub3Qgc3BlY2lhbCBjYXNlICJfX3Byb3RvX18iIGluIGdldCBh
bmQgc2V0IGZvciBQcm94eSBPYmplY3QncworICAgICAgICBob29rcy4gIl9fcHJvdG9fXyIgc2hv
dWxkIGp1c3QgZ28gdGhyb3VnaCB0aGUgbm9ybWFsIHNldCBhbmQgZ2V0IHBhdGguCisKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpwZXJmb3JtUHJveHlHZXQpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cHV0
KToKKwogMjAxNi0wOS0wMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGwgb3V0IHIyMDUzNTQgYmVjYXVzZSBpdCBjYXVzZWQgSlNDIHRl
c3QgZmFpbHVyZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDIwNTM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTA4LDkg
KzUwOCw5IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fbW9kdWxl
TmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkpKTsKICAgICB7CiAgICAg
ICAgIGJvb2wgaXNDYWxsYWJsZSA9IGZhbHNlOwotICAgICAgICBtX3Byb3h5T2JqZWN0U3RydWN0
dXJlLnNldCh2bSwgdGhpcywgUHJveHlPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywg
bV9vYmplY3RQcm90b3R5cGUuZ2V0KCksIGlzQ2FsbGFibGUpKTsKKyAgICAgICAgbV9wcm94eU9i
amVjdFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIFByb3h5T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIGpzTnVsbCgpLCBpc0NhbGxhYmxlKSk7CiAgICAgICAgIGlzQ2FsbGFibGUgPSB0
cnVlOwotICAgICAgICBtX2NhbGxhYmxlUHJveHlPYmplY3RTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlz
LCBQcm94eU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlw
ZS5nZXQoKSwgaXNDYWxsYWJsZSkpOworICAgICAgICBtX2NhbGxhYmxlUHJveHlPYmplY3RTdHJ1
Y3R1cmUuc2V0KHZtLCB0aGlzLCBQcm94eU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBqc051bGwoKSwgaXNDYWxsYWJsZSkpOwogICAgIH0KICAgICBtX3Byb3h5UmV2b2tlU3RydWN0
dXJlLnNldCh2bSwgdGhpcywgUHJveHlSZXZva2U6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywg
bV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCShyZXZpc2lvbiAyMDUzNzUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEyNiw5ICsxMjYsNiBAQCBzdGF0aWMgSlNWYWx1ZSBwZXJmb3JtUHJveHlHZXQoRXhlY1N0
YXRlCiAKICAgICBKU09iamVjdCogdGFyZ2V0ID0gcHJveHlPYmplY3QtPnRhcmdldCgpOwogCi0g
ICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8p
Ci0gICAgICAgIHJldHVybiBwcm94eU9iamVjdC0+cGVyZm9ybUdldFByb3RvdHlwZShleGVjKTsK
LQogICAgIGF1dG8gcGVyZm9ybURlZmF1bHRHZXQgPSBbJl0gewogICAgICAgICByZXR1cm4gdGFy
Z2V0LT5nZXQoZXhlYywgcHJvcGVydHlOYW1lKTsKICAgICB9OwpAQCAtNDU5LDggKzQ1Niw2IEBA
IGJvb2wgUHJveHlPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWMKIHsKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwogICAgIHNsb3QuZGlzYWJsZUNhY2hpbmcoKTsKLSAgICBpZiAocHJvcGVy
dHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90bykKLSAgICAgICAgcmV0
dXJuIEJhc2U6OnB1dChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIAog
ICAgIFByb3h5T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFByb3h5T2JqZWN0Kj4oY2VsbCk7
CiAgICAgYXV0byBwZXJmb3JtRGVmYXVsdFB1dCA9IFsmXSAoKSB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>