<?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>193612</bug_id>
          
          <creation_ts>2019-01-19 03:18:35 -0800</creation_ts>
          <short_desc>[JSC] Shrink data structure size in JSC/heap</short_desc>
          <delta_ts>2019-01-20 18:57:08 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>193606</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1496222</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-19 03:18:35 -0800</bug_when>
    <thetext>[JSC] Shrink data structure size in JSC/heap</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496223</commentid>
    <comment_count>1</comment_count>
      <attachid>359603</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-19 04:01:50 -0800</bug_when>
    <thetext>Created attachment 359603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496339</commentid>
    <comment_count>2</comment_count>
      <attachid>359603</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-01-20 12:05:59 -0800</bug_when>
    <thetext>Comment on attachment 359603
Patch

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

&gt; Source/JavaScriptCore/heap/Heap.h:581
&gt; +    Markable&lt;CollectionScope, EnumMarkableTraits&lt;CollectionScope&gt;&gt; m_collectionScope;

I really hate the name of this &quot;Markable&quot; class. Why don&apos;t we just encode this stuff in Optional via some extra type parameter?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496349</commentid>
    <comment_count>3</comment_count>
      <attachid>359603</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-20 12:37:18 -0800</bug_when>
    <thetext>Comment on attachment 359603
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/heap/Heap.h:581
&gt;&gt; +    Markable&lt;CollectionScope, EnumMarkableTraits&lt;CollectionScope&gt;&gt; m_collectionScope;
&gt; 
&gt; I really hate the name of this &quot;Markable&quot; class. Why don&apos;t we just encode this stuff in Optional via some extra type parameter?

This is because `WTF::Optional` was `std::optional` when `WTF::Markable` is introduced. We do not have the way to modify `std::optional` at that point.
Anyway, now we have a chance to do that. Opened the bug for that. https://bugs.webkit.org/show_bug.cgi?id=193625</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496352</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-20 12:39:38 -0800</bug_when>
    <thetext>Committed r240216: &lt;https://trac.webkit.org/changeset/240216&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496353</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-20 12:40:29 -0800</bug_when>
    <thetext>&lt;rdar://problem/47416829&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496354</commentid>
    <comment_count>6</comment_count>
      <attachid>359603</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-01-20 12:40:41 -0800</bug_when>
    <thetext>Comment on attachment 359603
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/heap/Heap.h:581
&gt;&gt;&gt; +    Markable&lt;CollectionScope, EnumMarkableTraits&lt;CollectionScope&gt;&gt; m_collectionScope;
&gt;&gt; 
&gt;&gt; I really hate the name of this &quot;Markable&quot; class. Why don&apos;t we just encode this stuff in Optional via some extra type parameter?
&gt; 
&gt; This is because `WTF::Optional` was `std::optional` when `WTF::Markable` is introduced. We do not have the way to modify `std::optional` at that point.
&gt; Anyway, now we have a chance to do that. Opened the bug for that. https://bugs.webkit.org/show_bug.cgi?id=193625

Thanks. I also meant to say that this is completely unrelated to this patch. This patch LGTM</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359603</attachid>
            <date>2019-01-19 04:01:50 -0800</date>
            <delta_ts>2019-01-20 12:05:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193612-20190119040149.patch</filename>
            <type>text/plain</type>
            <size>30145</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
OWEyNTBkZjFlODY2OWI4YWIyYTdmYWZkMzZmMzE2MjA5YjExMmY5Li5mZDFhODIwNjhiMTNkN2Zm
NzU1NmU2NzA0NmJhNjA0YTI4MWNjNDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NyBAQAorMjAxOS0wMS0xOSAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIFNocmluayBkYXRhIHN0cnVjdHVyZSBzaXplIGlu
IEpTQy9oZWFwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTM2MTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIHJlZHVjZXMgdGhlIHNpemUgb2YgZGF0YSBzdHJ1Y3R1cmVzIGluIEpTQy9o
ZWFwLiBCYXNpY2FsbHksIHdlIHJlb3JkZXIgdGhlIG1lbWJlcnMgdG8gcmVtb3ZlIHBhZGRpbmdz
LgorCisgICAgICAgIEZvciBTdWJzcGFjZSwgd2UgZHJvcCBDZWxsQXR0cmlidXRlcyBgbV9hdHRy
aWJ1dGVzYC4gSW5zdGVhZCwgd2UgdXNlIGBoZWFwQ2VsbFR5cGUtPmF0dHJpYnV0ZXMoKWAuIEFu
ZCB3ZSB1c2UKKyAgICAgICAgRnJlZUxpc3Q6OmNlbGxTaXplKCkgaW5zdGVhZCBvZiBob2xkaW5n
IG1fY2VsbFNpemUgaW4gTG9jYWxBbGxvY2F0b3IuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgcmVk
dWNlcyB0aGUgc2l6ZSBvZiBKU0M6OlZNIHRvbyBzaW5jZSBpdCBpbmNsdWRlcyBKU0M6OkhlYXAu
IFRoZSBzaXplIG9mIFZNIGJlY29tZXMgZnJvbSA3ODIwOCB0byA3NjY5Ni4KKworICAgICAgICAq
IGhlYXAvQmxvY2tEaXJlY3RvcnkuY3BwOgorICAgICAgICAqIGhlYXAvQmxvY2tEaXJlY3Rvcnku
aDoKKyAgICAgICAgKiBoZWFwL0NvbGxlY3Rpb25TY29wZS5oOgorICAgICAgICAqIGhlYXAvQ29t
cGxldGVTdWJzcGFjZS5jcHA6CisgICAgICAgIChKU0M6OkNvbXBsZXRlU3Vic3BhY2U6OmFsbG9j
YXRvckZvclNsb3cpOgorICAgICAgICAqIGhlYXAvRnJlZUxpc3QuaDoKKyAgICAgICAgKEpTQzo6
RnJlZUxpc3Q6Om9mZnNldE9mQ2VsbFNpemUpOgorICAgICAgICAoSlNDOjpGcmVlTGlzdDo6Y2Vs
bFNpemUgY29uc3QpOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6Okhl
YXA6OkhlYXApOgorICAgICAgICAoSlNDOjpIZWFwOjp1cGRhdGVPYmplY3RDb3VudHMpOgorICAg
ICAgICAoSlNDOjpIZWFwOjphZGRUb1JlbWVtYmVyZWRTZXQpOgorICAgICAgICAoSlNDOjpIZWFw
OjpydW5CZWdpblBoYXNlKToKKyAgICAgICAgKEpTQzo6SGVhcDo6d2lsbFN0YXJ0Q29sbGVjdGlv
bik6CisgICAgICAgIChKU0M6OkhlYXA6OnBydW5lU3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMp
OgorICAgICAgICAoSlNDOjpIZWFwOjpkZWxldGVTb3VyY2VQcm92aWRlckNhY2hlcyk6CisgICAg
ICAgIChKU0M6OkhlYXA6Om5vdGlmeUluY3JlbWVudGFsU3dlZXBlcik6CisgICAgICAgIChKU0M6
OkhlYXA6OnVwZGF0ZUFsbG9jYXRpb25MaW1pdHMpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgor
ICAgICAgICAqIGhlYXAvSXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oOgorICAgICAgICAqIGhl
YXAvTGFyZ2VBbGxvY2F0aW9uLmNwcDoKKyAgICAgICAgKiBoZWFwL0xvY2FsQWxsb2NhdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6TG9jYWxBbGxvY2F0b3I6OkxvY2FsQWxsb2NhdG9yKToKKyAgICAg
ICAgKiBoZWFwL0xvY2FsQWxsb2NhdG9yLmg6CisgICAgICAgIChKU0M6OkxvY2FsQWxsb2NhdG9y
OjpjZWxsU2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkxvY2FsQWxsb2NhdG9yOjpvZmZzZXRP
ZkNlbGxTaXplKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6TWFya2VkU3BhY2U6Ok1hcmtlZFNwYWNlKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNl
Lmg6CisgICAgICAgICogaGVhcC9NYXJraW5nQ29uc3RyYWludC5oOgorICAgICAgICAqIGhlYXAv
U3Vic3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgICogaGVhcC9TdWJzcGFjZS5oOgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6YXR0cmlidXRl
cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9TdWJzcGFjZUlubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6U3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsKToKKyAgICAgICAgKEpTQzo6
U3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbCk6CisgICAgICAgIChKU0M6OlN1
YnNwYWNlOjpmb3JFYWNoTGl2ZUNlbGwpOgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6YXR0cmli
dXRlcyBjb25zdCk6CisKIDIwMTktMDEtMTggIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBh
cHBsZS5jb20+CiAKICAgICAgICAgSlNTY3JpcHQgQVBJIHNob3VsZCBvbmx5IHRha2UgYXNjaWkg
ZmlsZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVj
dG9yeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5jcHAK
aW5kZXggZjVmMmIzZWI0ZDNhYTMxZTBiNDg5ODU3NmNhNWYyMTg3MGY0ZjFlNC4uOGMxYTkzNDNj
N2I0YzhmOThkNDc1ZWI5NjhkNmZkOTc1NmJjMmIxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
IkluY3JlbWVudGFsU3dlZXBlci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRl
ICJNYXJrZWRCbG9ja0lubGluZXMuaCIKKyNpbmNsdWRlICJTdWJzcGFjZUlubGluZXMuaCIKICNp
bmNsdWRlICJTdXBlclNhbXBsZXIuaCIKICNpbmNsdWRlICJWTS5oIgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuaAppbmRleCBhMTJiNDMzY2VmMzRkMmYyZGM2
ODVmMmE2YmFjMjcyMGIzOTNjMWNjLi5hN2JjYWE2YjllYmQ0YmFkNjNkN2U3ODExMDkxOGUzZTQz
NjM4N2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVj
dG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmgK
QEAgLTE3MywxOSArMTczLDIxIEBAIGNsYXNzIEJsb2NrRGlyZWN0b3J5IHsKIAogICAgIC8vIE11
dGF0b3IgdXNlcyB0aGlzIHRvIGd1YXJkIHJlc2l6aW5nIHRoZSBiaXR2ZWN0b3JzLiBUaG9zZSB0
aGluZ3MgaW4gdGhlIEdDIHRoYXQgbWF5IHJ1bgogICAgIC8vIGNvbmN1cnJlbnRseSB0byB0aGUg
bXV0YXRvciBtdXN0IGxvY2sgdGhpcyB3aGVuIGFjY2Vzc2luZyB0aGUgYml0dmVjdG9ycy4KLSAg
ICBMb2NrIG1fYml0dmVjdG9yTG9jazsKICNkZWZpbmUgQkxPQ0tfRElSRUNUT1JZX0JJVF9ERUNM
QVJBVElPTihsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSBcCiAgICAgRmFzdEJpdFZlY3Rv
ciBtXyAjIyBsb3dlckJpdE5hbWU7CiAgICAgRk9SX0VBQ0hfQkxPQ0tfRElSRUNUT1JZX0JJVChC
TE9DS19ESVJFQ1RPUllfQklUX0RFQ0xBUkFUSU9OKQogI3VuZGVmIEJMT0NLX0RJUkVDVE9SWV9C
SVRfREVDTEFSQVRJT04KKyAgICBMb2NrIG1fYml0dmVjdG9yTG9jazsKKyAgICBMb2NrIG1fbG9j
YWxBbGxvY2F0b3JzTG9jazsKKyAgICBDZWxsQXR0cmlidXRlcyBtX2F0dHJpYnV0ZXM7CisKKyAg
ICB1bnNpZ25lZCBtX2NlbGxTaXplOwogICAgIAogICAgIC8vIEFmdGVyIHlvdSBkbyBzb21ldGhp
bmcgdG8gYSBibG9jayBiYXNlZCBvbiBvbmUgb2YgdGhlc2UgY3Vyc29ycywgeW91IGNsZWFyIHRo
ZSBiaXQgaW4gdGhlCiAgICAgLy8gY29ycmVzcG9uZGluZyBiaXR2ZWN0b3IgYW5kIGxlYXZlIHRo
ZSBjdXJzb3Igd2hlcmUgaXQgd2FzLgogICAgIHNpemVfdCBtX2VtcHR5Q3Vyc29yIHsgMCB9Owog
ICAgIHNpemVfdCBtX3Vuc3dlcHRDdXJzb3IgeyAwIH07IC8vIFBvaW50cyB0byB0aGUgbmV4dCBi
bG9jayB0aGF0IGlzIGEgY2FuZGlkYXRlIGZvciBpbmNyZW1lbnRhbCBzd2VlcGluZy4KICAgICAK
LSAgICB1bnNpZ25lZCBtX2NlbGxTaXplOwotICAgIENlbGxBdHRyaWJ1dGVzIG1fYXR0cmlidXRl
czsKICAgICAvLyBGSVhNRTogQWxsIG9mIHRoZXNlIHNob3VsZCBwcm9iYWJseSBiZSByZWZlcmVu
Y2VzLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY5
ODgKICAgICBIZWFwKiBtX2hlYXAgeyBudWxscHRyIH07CkBAIC0xOTQsNyArMTk2LDYgQEAgY2xh
c3MgQmxvY2tEaXJlY3RvcnkgewogICAgIEJsb2NrRGlyZWN0b3J5KiBtX25leHREaXJlY3RvcnlJ
blN1YnNwYWNlIHsgbnVsbHB0ciB9OwogICAgIEJsb2NrRGlyZWN0b3J5KiBtX25leHREaXJlY3Rv
cnlJbkFsaWduZWRNZW1vcnlBbGxvY2F0b3IgeyBudWxscHRyIH07CiAgICAgCi0gICAgTG9jayBt
X2xvY2FsQWxsb2NhdG9yc0xvY2s7CiAgICAgU2VudGluZWxMaW5rZWRMaXN0PExvY2FsQWxsb2Nh
dG9yLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxMb2NhbEFsbG9jYXRvcj4+IG1fbG9jYWxBbGxvY2F0
b3JzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29sbGVj
dGlvblNjb3BlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2xsZWN0aW9uU2NvcGUu
aAppbmRleCA5YjRmNDg3MDNmZTg3ZmIyMmYxODgxYzQ2YTIxYTMzZGI3N2QyOTZhLi41OTA5MjRj
ZDVjMmMzZWY0ZDNhY2RjNDlhOGEyODk2ZjFmMmZlMjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Db2xsZWN0aW9uU2NvcGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Db2xsZWN0aW9uU2NvcGUuaApAQCAtMjcsNyArMjcsNyBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotZW51bSBjbGFzcyBDb2xsZWN0aW9uU2NvcGUgeyBFZGVuLCBGdWxsIH07Citl
bnVtIGNsYXNzIENvbGxlY3Rpb25TY29wZSA6IHVpbnQ4X3QgeyBFZGVuLCBGdWxsIH07CiAKIGNv
bnN0IGNoYXIqIGNvbGxlY3Rpb25TY29wZU5hbWUoQ29sbGVjdGlvblNjb3BlKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcAppbmRleCBiZDRi
ODFiZmRkMmYxNWZmYzFiZmE1NzBlZTQxNjI5YjNlMzc2NGQyLi5jZDRlYmFmYzcyZjAyMzQyNTM4
MTRkNGU4MjIyM2I4ZDc5YWFiZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Db21wbGV0ZVN1YnNwYWNlLmNwcApAQCAtNzcsNyArNzcsNyBAQCBBbGxvY2F0b3IgQ29tcGxl
dGVTdWJzcGFjZTo6YWxsb2NhdG9yRm9yU2xvdyhzaXplX3Qgc2l6ZSkKICAgICAgICAgcmV0dXJu
IGFsbG9jYXRvcjsKIAogICAgIGlmIChmYWxzZSkKLSAgICAgICAgZGF0YUxvZygiQ3JlYXRpbmcg
QmxvY2tEaXJlY3RvcnkvTG9jYWxBbGxvY2F0b3IgZm9yICIsIG1fbmFtZSwgIiwgIiwgbV9hdHRy
aWJ1dGVzLCAiLCAiLCBzaXplQ2xhc3MsICIuXG4iKTsKKyAgICAgICAgZGF0YUxvZygiQ3JlYXRp
bmcgQmxvY2tEaXJlY3RvcnkvTG9jYWxBbGxvY2F0b3IgZm9yICIsIG1fbmFtZSwgIiwgIiwgYXR0
cmlidXRlcygpLCAiLCAiLCBzaXplQ2xhc3MsICIuXG4iKTsKICAgICAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8QmxvY2tEaXJlY3Rvcnk+IHVuaXF1ZURpcmVjdG9yeSA9CiAgICAgICAgIHN0ZDo6bWFr
ZV91bmlxdWU8QmxvY2tEaXJlY3Rvcnk+KG1fc3BhY2UuaGVhcCgpLCBzaXplQ2xhc3MpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnJlZUxpc3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0ZyZWVMaXN0LmgKaW5kZXggZTNlY2ZiODc1YjhmZDVmNmE2YThj
MGViOGViNzRhYjE5MzM2NWM3Ni4uZDRhYjhiN2YzMTlkYTNkZjk2YTZkOWIyY2ZkMGEyODFlNzhi
MTkxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnJlZUxpc3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9GcmVlTGlzdC5oCkBAIC04NCw4ICs4NCwx
MSBAQCBjbGFzcyBGcmVlTGlzdCB7CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlBheWxv
YWRFbmQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRnJlZUxpc3QsIG1fcGF5bG9hZEVuZCk7
IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mUmVtYWluaW5nKCkgeyByZXR1cm4gT0JK
RUNUX09GRlNFVE9GKEZyZWVMaXN0LCBtX3JlbWFpbmluZyk7IH0KICAgICBzdGF0aWMgcHRyZGlm
Zl90IG9mZnNldE9mT3JpZ2luYWxTaXplKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZyZWVM
aXN0LCBtX29yaWdpbmFsU2l6ZSk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ2Vs
bFNpemUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRnJlZUxpc3QsIG1fY2VsbFNpemUpOyB9
CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisKKyAgICB1bnNpZ25l
ZCBjZWxsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2VsbFNpemU7IH0KICAgICAKIHByaXZhdGU6
CiAgICAgRnJlZUNlbGwqIGhlYWQoKSBjb25zdCB7IHJldHVybiBGcmVlQ2VsbDo6ZGVzY3JhbWJs
ZShtX3NjcmFtYmxlZEhlYWQsIG1fc2VjcmV0KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmNwcAppbmRleCA1YjcxZjA4MTM4ZDc3ZmEwMGM1ODE0ZDhkOWNjNzY3MTcyOTYyZTU5Li5kMTY2
NzAzN2FjNWNkYzlhYjEyODYxMzgyMmU4N2RlZTMwMjBmMzA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcApAQCAtMjc0LDIwICsyNzQsOSBAQCBIZWFwOjpIZWFwKFZNKiB2bSwgSGVh
cFR5cGUgaGVhcFR5cGUpCiAgICAgOiBtX2hlYXBUeXBlKGhlYXBUeXBlKQogICAgICwgbV9yYW1T
aXplKE9wdGlvbnM6OmZvcmNlUkFNU2l6ZSgpID8gT3B0aW9uczo6Zm9yY2VSQU1TaXplKCkgOiBy
YW1TaXplKCkpCiAgICAgLCBtX21pbkJ5dGVzUGVyQ3ljbGUobWluSGVhcFNpemUobV9oZWFwVHlw
ZSwgbV9yYW1TaXplKSkKLSAgICAsIG1fc2l6ZUFmdGVyTGFzdENvbGxlY3QoMCkKLSAgICAsIG1f
c2l6ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0KDApCi0gICAgLCBtX3NpemVCZWZvcmVMYXN0RnVsbENv
bGxlY3QoMCkKLSAgICAsIG1fc2l6ZUFmdGVyTGFzdEVkZW5Db2xsZWN0KDApCi0gICAgLCBtX3Np
emVCZWZvcmVMYXN0RWRlbkNvbGxlY3QoMCkKLSAgICAsIG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3lj
bGUoMCkKLSAgICAsIG1fYnl0ZXNBYmFuZG9uZWRTaW5jZUxhc3RGdWxsQ29sbGVjdCgwKQogICAg
ICwgbV9tYXhFZGVuU2l6ZShtX21pbkJ5dGVzUGVyQ3ljbGUpCiAgICAgLCBtX21heEhlYXBTaXpl
KG1fbWluQnl0ZXNQZXJDeWNsZSkKLSAgICAsIG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbihmYWxz
ZSkKLSAgICAsIG1fdG90YWxCeXRlc1Zpc2l0ZWQoMCkKICAgICAsIG1fb2JqZWN0U3BhY2UodGhp
cykKLSAgICAsIG1fZXh0cmFNZW1vcnlTaXplKDApCi0gICAgLCBtX2RlcHJlY2F0ZWRFeHRyYU1l
bW9yeVNpemUoMCkKICAgICAsIG1fbWFjaGluZVRocmVhZHMoc3RkOjptYWtlX3VuaXF1ZTxNYWNo
aW5lVGhyZWFkcz4oKSkKICAgICAsIG1fY29sbGVjdG9yU2xvdFZpc2l0b3Ioc3RkOjptYWtlX3Vu
aXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMsICJDIikpCiAgICAgLCBtX211dGF0b3JTbG90VmlzaXRv
cihzdGQ6Om1ha2VfdW5pcXVlPFNsb3RWaXNpdG9yPigqdGhpcywgIk0iKSkKQEAgLTI5NywyMCAr
Mjg2LDEzIEBAIEhlYXA6OkhlYXAoVk0qIHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1f
aGFuZGxlU2V0KHZtKQogICAgICwgbV9jb2RlQmxvY2tzKHN0ZDo6bWFrZV91bmlxdWU8Q29kZUJs
b2NrU2V0PigpKQogICAgICwgbV9qaXRTdHViUm91dGluZXMoc3RkOjptYWtlX3VuaXF1ZTxKSVRT
dHViUm91dGluZVNldD4oKSkKLSAgICAsIG1faXNTYWZlVG9Db2xsZWN0KGZhbHNlKQogICAgICwg
bV92bSh2bSkKICAgICAvLyBXZSBzZWVkIHdpdGggMTBtcyBzbyB0aGF0IEdDQWN0aXZpdHlDYWxs
YmFjazo6ZGlkQWxsb2NhdGUgZG9lc24ndCBjb250aW51b3VzbHkgCiAgICAgLy8gc2NoZWR1bGUg
dGhlIHRpbWVyIGlmIHdlJ3ZlIG5ldmVyIGRvbmUgYSBjb2xsZWN0aW9uLgotICAgICwgbV9sYXN0
RnVsbEdDTGVuZ3RoKDAuMDEpCi0gICAgLCBtX2xhc3RFZGVuR0NMZW5ndGgoMC4wMSkKICAgICAs
IG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2soR0NBY3Rpdml0eUNhbGxiYWNrOjp0cnlDcmVhdGVGdWxs
VGltZXIodGhpcykpCiAgICAgLCBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZpdHlDYWxs
YmFjazo6dHJ5Q3JlYXRlRWRlblRpbWVyKHRoaXMpKQogICAgICwgbV9zd2VlcGVyKGFkb3B0UmVm
KCpuZXcgSW5jcmVtZW50YWxTd2VlcGVyKHRoaXMpKSkKICAgICAsIG1fc3RvcElmTmVjZXNzYXJ5
VGltZXIoYWRvcHRSZWYoKm5ldyBTdG9wSWZOZWNlc3NhcnlUaW1lcih2bSkpKQotICAgICwgbV9k
ZWZlcnJhbERlcHRoKDApCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgLCBtX2RlbGF5ZWRSZWxl
YXNlUmVjdXJzaW9uQ291bnQoMCkKLSNlbmRpZgogICAgICwgbV9zaGFyZWRDb2xsZWN0b3JNYXJr
U3RhY2soc3RkOjptYWtlX3VuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKICAgICAsIG1fc2hhcmVk
TXV0YXRvck1hcmtTdGFjayhzdGQ6Om1ha2VfdW5pcXVlPE1hcmtTdGFja0FycmF5PigpKQogICAg
ICwgbV9oZWxwZXJDbGllbnQoJmhlYXBIZWxwZXJQb29sKCkpCkBAIC03NjcsNyArNzQ5LDcgQEAg
dm9pZCBIZWFwOjpyZW1vdmVEZWFkSGVhcFNuYXBzaG90Tm9kZXMoSGVhcFByb2ZpbGVyJiBoZWFw
UHJvZmlsZXIpCiAKIHZvaWQgSGVhcDo6dXBkYXRlT2JqZWN0Q291bnRzKCkKIHsKLSAgICBpZiAo
bV9jb2xsZWN0aW9uU2NvcGUgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKQorICAgIGlmIChtX2Nv
bGxlY3Rpb25TY29wZSAmJiBtX2NvbGxlY3Rpb25TY29wZS52YWx1ZSgpID09IENvbGxlY3Rpb25T
Y29wZTo6RnVsbCkKICAgICAgICAgbV90b3RhbEJ5dGVzVmlzaXRlZCA9IDA7CiAKICAgICBtX3Rv
dGFsQnl0ZXNWaXNpdGVkVGhpc0N5Y2xlID0gYnl0ZXNWaXNpdGVkKCk7CkBAIC05NjMsNyArOTQ1
LDcgQEAgdm9pZCBIZWFwOjphZGRUb1JlbWVtYmVyZWRTZXQoY29uc3QgSlNDZWxsKiBjb25zdENl
bGwpCiAgICAgICAgICAgICAvLyBwYXRoLiBTbywgd2UgZG9uJ3QgaGF2ZSB0byByZW1lbWJlciB0
aGlzIG9iamVjdC4gV2UgY291bGQgcmV0dXJuIGhlcmUuIEJ1dCB3ZSBnbwogICAgICAgICAgICAg
Ly8gZnVydGhlciBhbmQgYXR0ZW1wdCB0byByZS13aGl0ZSB0aGUgb2JqZWN0LgogICAgICAgICAg
ICAgCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2NvbGxlY3Rpb25TY29wZSA9PSBDb2xs
ZWN0aW9uU2NvcGU6OkZ1bGwpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9jb2xsZWN0
aW9uU2NvcGUgJiYgbV9jb2xsZWN0aW9uU2NvcGUudmFsdWUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6
OkZ1bGwpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoY2VsbC0+YXRvbWljQ29tcGFy
ZUV4Y2hhbmdlQ2VsbFN0YXRlU3Ryb25nKENlbGxTdGF0ZTo6UG9zc2libHlCbGFjaywgQ2VsbFN0
YXRlOjpEZWZpbml0ZWx5V2hpdGUpID09IENlbGxTdGF0ZTo6UG9zc2libHlCbGFjaykgewogICAg
ICAgICAgICAgICAgIC8vIE5vdyB3ZSBwcm90ZWN0IGFnYWluc3QgdGhpcyByYWNlOgpAQCAtMTIz
NCw3ICsxMjE2LDcgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSGVhcDo6cnVuQmVnaW5QaGFzZShHQ0Nv
bmR1Y3RvciBjb25uKQogICAgICAgICAKICAgICBwcmVwYXJlRm9yTWFya2luZygpOwogICAgICAg
ICAKLSAgICBpZiAobV9jb2xsZWN0aW9uU2NvcGUgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKSB7
CisgICAgaWYgKG1fY29sbGVjdGlvblNjb3BlICYmIG1fY29sbGVjdGlvblNjb3BlLnZhbHVlKCkg
PT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKSB7CiAgICAgICAgIG1fb3BhcXVlUm9vdHMuY2xlYXIo
KTsKICAgICAgICAgbV9jb2xsZWN0b3JTbG90VmlzaXRvci0+Y2xlYXJNYXJrU3RhY2tzKCk7CiAg
ICAgICAgIG1fbXV0YXRvck1hcmtTdGFjay0+Y2xlYXIoKTsKQEAgLTIxMjcsNyArMjEwOSw3IEBA
IHZvaWQgSGVhcDo6d2lsbFN0YXJ0Q29sbGVjdGlvbigpCiAgICAgICAgIGlmIChmYWxzZSkKICAg
ICAgICAgICAgIGRhdGFMb2coIkVkZW4gY29sbGVjdGlvbiFcbiIpOwogICAgIH0KLSAgICBpZiAo
bV9jb2xsZWN0aW9uU2NvcGUgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKSB7CisgICAgaWYgKG1f
Y29sbGVjdGlvblNjb3BlICYmIG1fY29sbGVjdGlvblNjb3BlLnZhbHVlKCkgPT0gQ29sbGVjdGlv
blNjb3BlOjpGdWxsKSB7CiAgICAgICAgIG1fc2l6ZUJlZm9yZUxhc3RGdWxsQ29sbGVjdCA9IG1f
c2l6ZUFmdGVyTGFzdENvbGxlY3QgKyBtX2J5dGVzQWxsb2NhdGVkVGhpc0N5Y2xlOwogICAgICAg
ICBtX2V4dHJhTWVtb3J5U2l6ZSA9IDA7CiAgICAgICAgIG1fZGVwcmVjYXRlZEV4dHJhTWVtb3J5
U2l6ZSA9IDA7CkBAIC0yMTM4LDcgKzIxMjAsNyBAQCB2b2lkIEhlYXA6OndpbGxTdGFydENvbGxl
Y3Rpb24oKQogICAgICAgICBpZiAobV9mdWxsQWN0aXZpdHlDYWxsYmFjaykKICAgICAgICAgICAg
IG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2stPndpbGxDb2xsZWN0KCk7CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgQVNTRVJUKG1fY29sbGVjdGlvblNjb3BlID09IENvbGxlY3Rpb25TY29wZTo6RWRlbik7
CisgICAgICAgIEFTU0VSVChtX2NvbGxlY3Rpb25TY29wZSAmJiBtX2NvbGxlY3Rpb25TY29wZS52
YWx1ZSgpID09IENvbGxlY3Rpb25TY29wZTo6RWRlbik7CiAgICAgICAgIG1fc2l6ZUJlZm9yZUxh
c3RFZGVuQ29sbGVjdCA9IG1fc2l6ZUFmdGVyTGFzdENvbGxlY3QgKyBtX2J5dGVzQWxsb2NhdGVk
VGhpc0N5Y2xlOwogICAgIH0KIApAQCAtMjE2MSw3ICsyMTQzLDcgQEAgdm9pZCBIZWFwOjpyZWFw
V2Vha0hhbmRsZXMoKQogCiB2b2lkIEhlYXA6OnBydW5lU3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01h
cHMoKQogewotICAgIGlmIChtX2NvbGxlY3Rpb25TY29wZSAhPSBDb2xsZWN0aW9uU2NvcGU6OkZ1
bGwpCisgICAgaWYgKCFtX2NvbGxlY3Rpb25TY29wZSB8fCBtX2NvbGxlY3Rpb25TY29wZS52YWx1
ZSgpICE9IENvbGxlY3Rpb25TY29wZTo6RnVsbCkKICAgICAgICAgcmV0dXJuOwogICAgIGZvciAo
V2Vha0dDTWFwQmFzZSogd2Vha0dDTWFwIDogbV93ZWFrR0NNYXBzKQogICAgICAgICB3ZWFrR0NN
YXAtPnBydW5lU3RhbGVFbnRyaWVzKCk7CkBAIC0yMTgwLDEzICsyMTYyLDEzIEBAIHZvaWQgSGVh
cDo6c25hcHNob3RVbnN3ZXB0KCkKIAogdm9pZCBIZWFwOjpkZWxldGVTb3VyY2VQcm92aWRlckNh
Y2hlcygpCiB7Ci0gICAgaWYgKCptX2xhc3RDb2xsZWN0aW9uU2NvcGUgPT0gQ29sbGVjdGlvblNj
b3BlOjpGdWxsKQorICAgIGlmIChtX2xhc3RDb2xsZWN0aW9uU2NvcGUgJiYgbV9sYXN0Q29sbGVj
dGlvblNjb3BlLnZhbHVlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKQogICAgICAgICBtX3Zt
LT5jbGVhclNvdXJjZVByb3ZpZGVyQ2FjaGVzKCk7CiB9CiAKIHZvaWQgSGVhcDo6bm90aWZ5SW5j
cmVtZW50YWxTd2VlcGVyKCkKIHsKLSAgICBpZiAobV9jb2xsZWN0aW9uU2NvcGUgPT0gQ29sbGVj
dGlvblNjb3BlOjpGdWxsKSB7CisgICAgaWYgKG1fY29sbGVjdGlvblNjb3BlICYmIG1fY29sbGVj
dGlvblNjb3BlLnZhbHVlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKSB7CiAgICAgICAgIGlm
ICghbV9sb2dpY2FsbHlFbXB0eVdlYWtCbG9ja3MuaXNFbXB0eSgpKQogICAgICAgICAgICAgbV9p
bmRleE9mTmV4dExvZ2ljYWxseUVtcHR5V2Vha0Jsb2NrVG9Td2VlcCA9IDA7CiAgICAgfQpAQCAt
MjIzMSw3ICsyMjEzLDcgQEAgdm9pZCBIZWFwOjp1cGRhdGVBbGxvY2F0aW9uTGltaXRzKCkKICAg
ICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiZXh0cmFNZW1vcnlTaXplKCkgPSAiLCBl
eHRyYU1lbW9yeVNpemUoKSwgIiwgY3VycmVudEhlYXBTaXplID0gIiwgY3VycmVudEhlYXBTaXpl
LCAiXG4iKTsKICAgICAKLSAgICBpZiAobV9jb2xsZWN0aW9uU2NvcGUgPT0gQ29sbGVjdGlvblNj
b3BlOjpGdWxsKSB7CisgICAgaWYgKG1fY29sbGVjdGlvblNjb3BlICYmIG1fY29sbGVjdGlvblNj
b3BlLnZhbHVlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKSB7CiAgICAgICAgIC8vIFRvIGF2
b2lkIHBhdGhvbG9naWNhbCBHQyBjaHVybiBpbiB2ZXJ5IHNtYWxsIGFuZCB2ZXJ5IGxhcmdlIGhl
YXBzLCB3ZSBzZXQKICAgICAgICAgLy8gdGhlIG5ldyBhbGxvY2F0aW9uIGxpbWl0IGJhc2VkIG9u
IHRoZSBjdXJyZW50IHNpemUgb2YgdGhlIGhlYXAsIHdpdGggYQogICAgICAgICAvLyBmaXhlZCBt
aW5pbXVtLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCmluZGV4IGFmMGYwMDRjMWU2OThhYjVi
NzkwMzY1ZGM4MmU3OGZlN2QwOTBlNzQuLmE1ZmIyNDRhMjM4ZWEwZTYyZDM2ZWU0ZjNkYjQwOTA0
YTkwYjI3NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKQEAgLTQ0LDYgKzQ0LDcgQEAK
ICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9NYXJrYWJsZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXJhbGxlbEhlbHBlclBvb2wuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5n
Lmg+CiAKQEAgLTU1OCwzMiArNTU5LDM0IEBAIGNsYXNzIEhlYXAgewogICAgIHN0YXRpYyBib29s
IHNob3VsZFN3ZWVwU3luY2hyb25vdXNseSgpOwogICAgIAogICAgIGNvbnN0IEhlYXBUeXBlIG1f
aGVhcFR5cGU7CisgICAgTXV0YXRvclN0YXRlIG1fbXV0YXRvclN0YXRlIHsgTXV0YXRvclN0YXRl
OjpSdW5uaW5nIH07CiAgICAgY29uc3Qgc2l6ZV90IG1fcmFtU2l6ZTsKICAgICBjb25zdCBzaXpl
X3QgbV9taW5CeXRlc1BlckN5Y2xlOwotICAgIHNpemVfdCBtX3NpemVBZnRlckxhc3RDb2xsZWN0
OwotICAgIHNpemVfdCBtX3NpemVBZnRlckxhc3RGdWxsQ29sbGVjdDsKLSAgICBzaXplX3QgbV9z
aXplQmVmb3JlTGFzdEZ1bGxDb2xsZWN0OwotICAgIHNpemVfdCBtX3NpemVBZnRlckxhc3RFZGVu
Q29sbGVjdDsKLSAgICBzaXplX3QgbV9zaXplQmVmb3JlTGFzdEVkZW5Db2xsZWN0OwotCi0gICAg
c2l6ZV90IG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGU7Ci0gICAgc2l6ZV90IG1fYnl0ZXNBYmFu
ZG9uZWRTaW5jZUxhc3RGdWxsQ29sbGVjdDsKKyAgICBzaXplX3QgbV9zaXplQWZ0ZXJMYXN0Q29s
bGVjdCB7IDAgfTsKKyAgICBzaXplX3QgbV9zaXplQWZ0ZXJMYXN0RnVsbENvbGxlY3QgeyAwIH07
CisgICAgc2l6ZV90IG1fc2l6ZUJlZm9yZUxhc3RGdWxsQ29sbGVjdCB7IDAgfTsKKyAgICBzaXpl
X3QgbV9zaXplQWZ0ZXJMYXN0RWRlbkNvbGxlY3QgeyAwIH07CisgICAgc2l6ZV90IG1fc2l6ZUJl
Zm9yZUxhc3RFZGVuQ29sbGVjdCB7IDAgfTsKKworICAgIHNpemVfdCBtX2J5dGVzQWxsb2NhdGVk
VGhpc0N5Y2xlIHsgMCB9OworICAgIHNpemVfdCBtX2J5dGVzQWJhbmRvbmVkU2luY2VMYXN0RnVs
bENvbGxlY3QgeyAwIH07CiAgICAgc2l6ZV90IG1fbWF4RWRlblNpemU7CiAgICAgc2l6ZV90IG1f
bWF4RWRlblNpemVXaGVuQ3JpdGljYWw7CiAgICAgc2l6ZV90IG1fbWF4SGVhcFNpemU7Ci0gICAg
Ym9vbCBtX3Nob3VsZERvRnVsbENvbGxlY3Rpb247Ci0gICAgc2l6ZV90IG1fdG90YWxCeXRlc1Zp
c2l0ZWQ7Ci0gICAgc2l6ZV90IG1fdG90YWxCeXRlc1Zpc2l0ZWRUaGlzQ3ljbGU7CisgICAgc2l6
ZV90IG1fdG90YWxCeXRlc1Zpc2l0ZWQgeyAwIH07CisgICAgc2l6ZV90IG1fdG90YWxCeXRlc1Zp
c2l0ZWRUaGlzQ3ljbGUgeyAwIH07CiAgICAgZG91YmxlIG1faW5jcmVtZW50QmFsYW5jZSB7IDAg
fTsKICAgICAKLSAgICBPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IG1fY29sbGVjdGlvblNjb3Bl
OwotICAgIE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gbV9sYXN0Q29sbGVjdGlvblNjb3BlOwot
ICAgIE11dGF0b3JTdGF0ZSBtX211dGF0b3JTdGF0ZSB7IE11dGF0b3JTdGF0ZTo6UnVubmluZyB9
OworICAgIGJvb2wgbV9zaG91bGREb0Z1bGxDb2xsZWN0aW9uIHsgZmFsc2UgfTsKKyAgICBNYXJr
YWJsZTxDb2xsZWN0aW9uU2NvcGUsIEVudW1NYXJrYWJsZVRyYWl0czxDb2xsZWN0aW9uU2NvcGU+
PiBtX2NvbGxlY3Rpb25TY29wZTsKKyAgICBNYXJrYWJsZTxDb2xsZWN0aW9uU2NvcGUsIEVudW1N
YXJrYWJsZVRyYWl0czxDb2xsZWN0aW9uU2NvcGU+PiBtX2xhc3RDb2xsZWN0aW9uU2NvcGU7Cisg
ICAgTG9jayBtX3JhY2VNYXJrU3RhY2tMb2NrOworCiAgICAgU3RydWN0dXJlSURUYWJsZSBtX3N0
cnVjdHVyZUlEVGFibGU7CiAgICAgTWFya2VkU3BhY2UgbV9vYmplY3RTcGFjZTsKICAgICBHQ0lu
Y29taW5nUmVmQ291bnRlZFNldDxBcnJheUJ1ZmZlcj4gbV9hcnJheUJ1ZmZlcnM7Ci0gICAgc2l6
ZV90IG1fZXh0cmFNZW1vcnlTaXplOwotICAgIHNpemVfdCBtX2RlcHJlY2F0ZWRFeHRyYU1lbW9y
eVNpemU7CisgICAgc2l6ZV90IG1fZXh0cmFNZW1vcnlTaXplIHsgMCB9OworICAgIHNpemVfdCBt
X2RlcHJlY2F0ZWRFeHRyYU1lbW9yeVNpemUgeyAwIH07CiAKICAgICBIYXNoU2V0PGNvbnN0IEpT
Q2VsbCo+IG1fY29weWluZ1JlbWVtYmVyZWRTZXQ7CiAKQEAgLTU5NSwxMCArNTk4LDcgQEAgY2xh
c3MgSGVhcCB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3RWaXNpdG9yPiBtX2NvbGxlY3RvclNs
b3RWaXNpdG9yOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG90VmlzaXRvcj4gbV9tdXRhdG9yU2xv
dFZpc2l0b3I7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1hcmtTdGFja0FycmF5PiBtX211dGF0b3JN
YXJrU3RhY2s7Ci0KLSAgICBMb2NrIG1fcmFjZU1hcmtTdGFja0xvY2s7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPE1hcmtTdGFja0FycmF5PiBtX3JhY2VNYXJrU3RhY2s7Ci0KICAgICBzdGQ6OnVuaXF1
ZV9wdHI8TWFya2luZ0NvbnN0cmFpbnRTZXQ+IG1fY29uc3RyYWludFNldDsKIAogICAgIC8vIFdl
IHBvb2wgdGhlIHNsb3QgdmlzaXRvcnMgdXNlZCBieSBwYXJhbGxlbCBtYXJraW5nIHRocmVhZHMu
IEl0J3MgdXNlZnVsIHRvIGJlIGFibGUgdG8KQEAgLTYwNywyMiArNjA3LDIyIEBAIGNsYXNzIEhl
YXAgewogICAgIC8vIHRoZW0gYXQgdGhlIGVuZC4KICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PFNsb3RWaXNpdG9yPj4gbV9wYXJhbGxlbFNsb3RWaXNpdG9yczsKICAgICBWZWN0b3I8U2xvdFZp
c2l0b3IqPiBtX2F2YWlsYWJsZVBhcmFsbGVsU2xvdFZpc2l0b3JzOwotICAgIExvY2sgbV9wYXJh
bGxlbFNsb3RWaXNpdG9yTG9jazsKICAgICAKICAgICBIYW5kbGVTZXQgbV9oYW5kbGVTZXQ7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPENvZGVCbG9ja1NldD4gbV9jb2RlQmxvY2tzOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxKSVRTdHViUm91dGluZVNldD4gbV9qaXRTdHViUm91dGluZXM7CiAgICAgRmlu
YWxpemVyT3duZXIgbV9maW5hbGl6ZXJPd25lcjsKICAgICAKLSAgICBib29sIG1faXNTYWZlVG9D
b2xsZWN0OworICAgIExvY2sgbV9wYXJhbGxlbFNsb3RWaXNpdG9yTG9jazsKKyAgICBib29sIG1f
aXNTYWZlVG9Db2xsZWN0IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNTaHV0dGluZ0Rvd24geyBm
YWxzZSB9OwotCiAgICAgYm9vbCBtX211dGF0b3JTaG91bGRCZUZlbmNlZCB7IE9wdGlvbnM6OmZv
cmNlRmVuY2VkQmFycmllcigpIH07CisKICAgICB1bnNpZ25lZCBtX2JhcnJpZXJUaHJlc2hvbGQg
eyBPcHRpb25zOjpmb3JjZUZlbmNlZEJhcnJpZXIoKSA/IHRhdXRvbG9naWNhbFRocmVzaG9sZCA6
IGJsYWNrVGhyZXNob2xkIH07CiAKICAgICBWTSogbV92bTsKLSAgICBTZWNvbmRzIG1fbGFzdEZ1
bGxHQ0xlbmd0aDsKLSAgICBTZWNvbmRzIG1fbGFzdEVkZW5HQ0xlbmd0aDsKKyAgICBTZWNvbmRz
IG1fbGFzdEZ1bGxHQ0xlbmd0aCB7IDEwX21zIH07CisgICAgU2Vjb25kcyBtX2xhc3RFZGVuR0NM
ZW5ndGggeyAxMF9tcyB9OwogCiAgICAgVmVjdG9yPFdlYWtCbG9jayo+IG1fbG9naWNhbGx5RW1w
dHlXZWFrQmxvY2tzOwogICAgIHNpemVfdCBtX2luZGV4T2ZOZXh0TG9naWNhbGx5RW1wdHlXZWFr
QmxvY2tUb1N3ZWVwIHsgV1RGOjpub3RGb3VuZCB9OwpAQCAtNjM2LDM0ICs2MzYsMjYgQEAgY2xh
c3MgSGVhcCB7CiAgICAgCiAgICAgVmVjdG9yPEhlYXBGaW5hbGl6ZXJDYWxsYmFjaz4gbV9oZWFw
RmluYWxpemVyQ2FsbGJhY2tzOwogICAgIAotICAgIHVuc2lnbmVkIG1fZGVmZXJyYWxEZXB0aDsK
LSAgICBib29sIG1fZGlkRGVmZXJHQ1dvcmsgeyBmYWxzZSB9OwotCiAgICAgc3RkOjp1bmlxdWVf
cHRyPEhlYXBWZXJpZmllcj4gbV92ZXJpZmllcjsKIAogI2lmIFVTRShGT1VOREFUSU9OKQogICAg
IFZlY3RvcjxSZXRhaW5QdHI8Q0ZUeXBlUmVmPj4gbV9kZWxheWVkUmVsZWFzZU9iamVjdHM7Ci0g
ICAgdW5zaWduZWQgbV9kZWxheWVkUmVsZWFzZVJlY3Vyc2lvbkNvdW50OworICAgIHVuc2lnbmVk
IG1fZGVsYXllZFJlbGVhc2VSZWN1cnNpb25Db3VudCB7IDAgfTsKICNlbmRpZgogI2lmIFVTRShH
TElCKQogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SlNDR0xpYldyYXBwZXJPYmplY3Q+PiBt
X2RlbGF5ZWRSZWxlYXNlT2JqZWN0czsKICAgICB1bnNpZ25lZCBtX2RlbGF5ZWRSZWxlYXNlUmVj
dXJzaW9uQ291bnQgeyAwIH07CiAjZW5kaWYKKyAgICB1bnNpZ25lZCBtX2RlZmVycmFsRGVwdGgg
eyAwIH07CiAKICAgICBIYXNoU2V0PFdlYWtHQ01hcEJhc2UqPiBtX3dlYWtHQ01hcHM7CiAgICAg
Ci0gICAgTG9jayBtX3Zpc2l0UmFjZUxvY2s7Ci0KLSAgICBMb2NrIG1fbWFya2luZ011dGV4Owot
ICAgIENvbmRpdGlvbiBtX21hcmtpbmdDb25kaXRpb25WYXJpYWJsZTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8TWFya1N0YWNrQXJyYXk+IG1fc2hhcmVkQ29sbGVjdG9yTWFya1N0YWNrOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxNYXJrU3RhY2tBcnJheT4gbV9zaGFyZWRNdXRhdG9yTWFya1N0YWNrOwog
ICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZBY3RpdmVQYXJhbGxlbE1hcmtlcnMgeyAwIH07CiAgICAg
dW5zaWduZWQgbV9udW1iZXJPZldhaXRpbmdQYXJhbGxlbE1hcmtlcnMgeyAwIH07Ci0gICAgYm9v
bCBtX3BhcmFsbGVsTWFya2Vyc1Nob3VsZEV4aXQgeyBmYWxzZSB9OwogCiAgICAgQ29uY3VycmVu
dFB0ckhhc2hTZXQgbV9vcGFxdWVSb290czsKLQogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc19i
bG9ja0ZyYWdtZW50TGVuZ3RoID0gMzI7CiAKICAgICBQYXJhbGxlbEhlbHBlckNsaWVudCBtX2hl
bHBlckNsaWVudDsKQEAgLTY4NCw2ICs2NzYsMTAgQEAgY2xhc3MgSGVhcCB7CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIG11dGF0b3JXYWl0aW5nQml0ID0gMXUgPDwgNXU7IC8vIEFsbG93cyB0
aGUgbXV0YXRvciB0byB1c2UgdGhpcyBhcyBhIGNvbmRpdGlvbiB2YXJpYWJsZS4KICAgICBBdG9t
aWM8dW5zaWduZWQ+IG1fd29ybGRTdGF0ZTsKICAgICBib29sIG1fd29ybGRJc1N0b3BwZWQgeyBm
YWxzZSB9OworICAgIExvY2sgbV92aXNpdFJhY2VMb2NrOworICAgIExvY2sgbV9tYXJraW5nTXV0
ZXg7CisgICAgQ29uZGl0aW9uIG1fbWFya2luZ0NvbmRpdGlvblZhcmlhYmxlOworCiAgICAgTW9u
b3RvbmljVGltZSBtX2JlZm9yZUdDOwogICAgIE1vbm90b25pY1RpbWUgbV9hZnRlckdDOwogICAg
IE1vbm90b25pY1RpbWUgbV9zdG9wVGltZTsKQEAgLTY5MiwyNiArNjg4LDIyIEBAIGNsYXNzIEhl
YXAgewogICAgIEdDUmVxdWVzdCBtX2N1cnJlbnRSZXF1ZXN0OwogICAgIFRpY2tldCBtX2xhc3RT
ZXJ2ZWRUaWNrZXQgeyAwIH07CiAgICAgVGlja2V0IG1fbGFzdEdyYW50ZWRUaWNrZXQgeyAwIH07
CisKICAgICBDb2xsZWN0b3JQaGFzZSBtX2xhc3RQaGFzZSB7IENvbGxlY3RvclBoYXNlOjpOb3RS
dW5uaW5nIH07CiAgICAgQ29sbGVjdG9yUGhhc2UgbV9jdXJyZW50UGhhc2UgeyBDb2xsZWN0b3JQ
aGFzZTo6Tm90UnVubmluZyB9OwogICAgIENvbGxlY3RvclBoYXNlIG1fbmV4dFBoYXNlIHsgQ29s
bGVjdG9yUGhhc2U6Ok5vdFJ1bm5pbmcgfTsKICAgICBib29sIG1fdGhyZWFkU2hvdWxkU3RvcCB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX3RocmVhZElzU3RvcHBpbmcgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9tdXRhdG9yRGlkUnVuIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9kaWREZWZlckdDV29yayB7
IGZhbHNlIH07CisgICAgYm9vbCBtX3Nob3VsZFN0b3BDb2xsZWN0aW5nQ29udGludW91c2x5IHsg
ZmFsc2UgfTsKKwogICAgIHVpbnQ2NF90IG1fbXV0YXRvckV4ZWN1dGlvblZlcnNpb24geyAwIH07
CiAgICAgdWludDY0X3QgbV9waGFzZVZlcnNpb24geyAwIH07CiAgICAgQm94PExvY2s+IG1fdGhy
ZWFkTG9jazsKICAgICBSZWY8QXV0b21hdGljVGhyZWFkQ29uZGl0aW9uPiBtX3RocmVhZENvbmRp
dGlvbjsgLy8gVGhlIG11dGF0b3IgbXVzdCBub3Qgd2FpdCBvbiB0aGlzLiBJdCB3b3VsZCBjYXVz
ZSBhIGRlYWRsb2NrLgogICAgIFJlZlB0cjxBdXRvbWF0aWNUaHJlYWQ+IG1fdGhyZWFkOwogCi0j
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB1bnNpZ25lZCBtX3ByZWNlbnRBdmFpbGFibGVN
ZW1vcnlDYWNoZWRDYWxsQ291bnQ7Ci0gICAgYm9vbCBtX292ZXJDcml0aWNhbE1lbW9yeVRocmVz
aG9sZDsKLSNlbmRpZgotCi0gICAgTG9jayBtX2NvbGxlY3RDb250aW51b3VzbHlMb2NrOwotICAg
IENvbmRpdGlvbiBtX2NvbGxlY3RDb250aW51b3VzbHlDb25kaXRpb247Ci0gICAgYm9vbCBtX3No
b3VsZFN0b3BDb2xsZWN0aW5nQ29udGludW91c2x5IHsgZmFsc2UgfTsKICAgICBSZWZQdHI8V1RG
OjpUaHJlYWQ+IG1fY29sbGVjdENvbnRpbnVvdXNseVRocmVhZCB7IG51bGxwdHIgfTsKICAgICAK
ICAgICBNb25vdG9uaWNUaW1lIG1fbGFzdEdDU3RhcnRUaW1lOwpAQCAtNzIzLDYgKzcxNSwxNSBA
QCBjbGFzcyBIZWFwIHsKICAgICAKICAgICBDdXJyZW50VGhyZWFkU3RhdGUqIG1fY3VycmVudFRo
cmVhZFN0YXRlIHsgbnVsbHB0ciB9OwogICAgIFdURjo6VGhyZWFkKiBtX2N1cnJlbnRUaHJlYWQg
eyBudWxscHRyIH07IC8vIEl0J3MgT0sgaWYgdGhpcyBiZWNvbWVzIGEgZGFuZ2xpbmcgcG9pbnRl
ci4KKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgdW5zaWduZWQgbV9wcmVjZW50QXZh
aWxhYmxlTWVtb3J5Q2FjaGVkQ2FsbENvdW50OworICAgIGJvb2wgbV9vdmVyQ3JpdGljYWxNZW1v
cnlUaHJlc2hvbGQ7CisjZW5kaWYKKworICAgIGJvb2wgbV9wYXJhbGxlbE1hcmtlcnNTaG91bGRF
eGl0IHsgZmFsc2UgfTsKKyAgICBMb2NrIG1fY29sbGVjdENvbnRpbnVvdXNseUxvY2s7CisgICAg
Q29uZGl0aW9uIG1fY29sbGVjdENvbnRpbnVvdXNseUNvbmRpdGlvbjsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQWxp
Z25lZE1lbW9yeUFsbG9jYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQWxp
Z25lZE1lbW9yeUFsbG9jYXRvci5oCmluZGV4IDA5MDczYjk0NmYwODBkMzlhNmY3MTI4YTQ5YTJl
NzY3NGRhZTVjZjEuLjMzNmU5YjhjYTg2YjlkYjk0ZmQ3Y2M1ODFkZGMwODg5YzI3MTkyMjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0FsaWduZWRNZW1vcnlBbGxv
Y2F0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29BbGlnbmVkTWVtb3J5
QWxsb2NhdG9yLmgKQEAgLTQwLDExICs0MCwxMSBAQCBjbGFzcyBJc29BbGlnbmVkTWVtb3J5QWxs
b2NhdG9yIDogcHVibGljIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IgewogICAgIHZvaWQgZHVtcChQ
cmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIExvY2sgbV9sb2Nr
OwogICAgIFZlY3Rvcjx2b2lkKj4gbV9ibG9ja3M7CiAgICAgSGFzaE1hcDx2b2lkKiwgdW5zaWdu
ZWQ+IG1fYmxvY2tJbmRpY2VzOwogICAgIEZhc3RCaXRWZWN0b3IgbV9jb21taXR0ZWQ7CiAgICAg
dW5zaWduZWQgbV9maXJzdFVuY29tbWl0dGVkIHsgMCB9OworICAgIExvY2sgbV9sb2NrOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9MYXJnZUFsbG9jYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTGFy
Z2VBbGxvY2F0aW9uLmNwcAppbmRleCBkZmJmNmFjZDA1Yzk0YjdmOWJlODQ2MTg3NmFlYTkzNTNk
YjZiNjI0Li40MGVjZTNkYzBlYzBkNWFkNmMzN2E2MTA2Njg0ZTM5ODdjYzkwNGJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9MYXJnZUFsbG9jYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xhcmdlQWxsb2NhdGlvbi5jcHAKQEAgLTMwLDYg
KzMwLDcgQEAKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJTdWJzcGFjZUlubGluZXMuaCIKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xv
Y2FsQWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2Nh
dG9yLmNwcAppbmRleCBiZmM3NDlmNDZhNGFjYjE2MWI4MGMzNzRhOGM4OTY3YTlhNDU0ZTRkLi5l
ZTdjNzgyMDgzNTFhZTk2MmUwYjRmZDlhZTMwMTQ1ZDRkMWM1NTNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3IuY3BwCkBAIC0zNCw4ICszNCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiBMb2NhbEFsbG9jYXRvcjo6TG9jYWxBbGxvY2F0b3IoQmxvY2tEaXJl
Y3RvcnkqIGRpcmVjdG9yeSkKICAgICA6IG1fZGlyZWN0b3J5KGRpcmVjdG9yeSkKLSAgICAsIG1f
Y2VsbFNpemUoZGlyZWN0b3J5LT5tX2NlbGxTaXplKQotICAgICwgbV9mcmVlTGlzdChtX2NlbGxT
aXplKQorICAgICwgbV9mcmVlTGlzdChkaXJlY3RvcnktPm1fY2VsbFNpemUpCiB7CiAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhkaXJlY3RvcnktPm1fbG9jYWxBbGxvY2F0b3JzTG9jayk7CiAg
ICAgZGlyZWN0b3J5LT5tX2xvY2FsQWxsb2NhdG9ycy5hcHBlbmQodGhpcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3IuaAppbmRleCA5ZDhmNWE0Y2VmMDNlY2Y3
YzhmZjE0NWE0ZjQxOWVmOGZhNDg2Mjk0Li5kZmE2NmMzODAwOTk4NjAxMGQ2ZmE3YWQ3NjJjZDlj
ODU3ZmQ0MzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFs
bG9jYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9y
LmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgTG9jYWxBbGxvY2F0b3IgOiBwdWJsaWMgQmFzaWNS
YXdTZW50aW5lbE5vZGU8TG9jYWxBbGxvY2F0b3I+IHsKICAgICAKICAgICB2b2lkKiBhbGxvY2F0
ZShHQ0RlZmVycmFsQ29udGV4dCosIEFsbG9jYXRpb25GYWlsdXJlTW9kZSk7CiAgICAgCi0gICAg
dW5zaWduZWQgY2VsbFNpemUoKSBjb25zdCB7IHJldHVybiBtX2NlbGxTaXplOyB9CisgICAgdW5z
aWduZWQgY2VsbFNpemUoKSBjb25zdCB7IHJldHVybiBtX2ZyZWVMaXN0LmNlbGxTaXplKCk7IH0K
IAogICAgIHZvaWQgc3RvcEFsbG9jYXRpbmcoKTsKICAgICB2b2lkIHByZXBhcmVGb3JBbGxvY2F0
aW9uKCk7CkBAIC02Nyw4ICs2Nyw4IEBAIGNsYXNzIExvY2FsQWxsb2NhdG9yIDogcHVibGljIEJh
c2ljUmF3U2VudGluZWxOb2RlPExvY2FsQWxsb2NhdG9yPiB7CiAgICAgQUxXQVlTX0lOTElORSB2
b2lkIGRvVGVzdENvbGxlY3Rpb25zSWZOZWVkZWQoR0NEZWZlcnJhbENvbnRleHQqKTsKIAogICAg
IEJsb2NrRGlyZWN0b3J5KiBtX2RpcmVjdG9yeTsKLSAgICB1bnNpZ25lZCBtX2NlbGxTaXplOwog
ICAgIEZyZWVMaXN0IG1fZnJlZUxpc3Q7CisKICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX2N1
cnJlbnRCbG9jayB7IG51bGxwdHIgfTsKICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX2xhc3RB
Y3RpdmVCbG9jayB7IG51bGxwdHIgfTsKICAgICAKQEAgLTg0LDcgKzg0LDcgQEAgaW5saW5lIHB0
cmRpZmZfdCBMb2NhbEFsbG9jYXRvcjo6b2Zmc2V0T2ZGcmVlTGlzdCgpCiAKIGlubGluZSBwdHJk
aWZmX3QgTG9jYWxBbGxvY2F0b3I6Om9mZnNldE9mQ2VsbFNpemUoKQogewotICAgIHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoTG9jYWxBbGxvY2F0b3IsIG1fY2VsbFNpemUpOworICAgIHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoTG9jYWxBbGxvY2F0b3IsIG1fZnJlZUxpc3QpICsgRnJlZUxpc3Q6Om9m
ZnNldE9mQ2VsbFNpemUoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAKaW5kZXggZTM4NzJhNzNjZDc4ZDI0NmNmZDQ5
NThhMDdkMGM0M2E4NDEyYTdjYS4uZWM4OWEwMjUzNzBmZjhhYjdiYjg4ZTNkMDA2YjQ4ZGU2MTc5
YTJiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcApAQCAt
MTk3LDggKzE5Nyw2IEBAIHZvaWQgTWFya2VkU3BhY2U6OmluaXRpYWxpemVTaXplQ2xhc3NGb3JT
dGVwU2l6ZSgpCiAKIE1hcmtlZFNwYWNlOjpNYXJrZWRTcGFjZShIZWFwKiBoZWFwKQogICAgIDog
bV9oZWFwKGhlYXApCi0gICAgLCBtX2NhcGFjaXR5KDApCi0gICAgLCBtX2lzSXRlcmF0aW5nKGZh
bHNlKQogewogICAgIGluaXRpYWxpemVTaXplQ2xhc3NGb3JTdGVwU2l6ZSgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKaW5kZXggMGQ3Njk4MTdhZWU1Nzg4MTRi
M2ZjOWVlYTdkMzg3MTRiZTM4NmJhYy4uNjk4ZjFjN2E0NzNhYzI1YzY5NjE1YTA5MTdjMTA1YjUy
OGUzMmU5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3Bh
Y2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCkBAIC0y
MDEsMjIgKzIwMSwyMiBAQCBjbGFzcyBNYXJrZWRTcGFjZSB7CiAgICAgdW5zaWduZWQgbV9sYXJn
ZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2xhcmdlQWxs
b2NhdGlvbnNPZmZzZXRGb3JUaGlzQ29sbGVjdGlvbiB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2xh
cmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0Rm9yU3dlZXAgeyAwIH07CisgICAgdW5zaWduZWQg
bV9sYXJnZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25TaXplIHsgMCB9OwogICAgIExhcmdl
QWxsb2NhdGlvbioqIG1fbGFyZ2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uQmVnaW4geyBu
dWxscHRyIH07CiAgICAgTGFyZ2VBbGxvY2F0aW9uKiogbV9sYXJnZUFsbG9jYXRpb25zRm9yVGhp
c0NvbGxlY3Rpb25FbmQgeyBudWxscHRyIH07Ci0gICAgdW5zaWduZWQgbV9sYXJnZUFsbG9jYXRp
b25zRm9yVGhpc0NvbGxlY3Rpb25TaXplIHsgMCB9OwogCiAgICAgSGVhcCogbV9oZWFwOworICAg
IHNpemVfdCBtX2NhcGFjaXR5IHsgMCB9OwogICAgIEhlYXBWZXJzaW9uIG1fbWFya2luZ1ZlcnNp
b24geyBpbml0aWFsVmVyc2lvbiB9OwogICAgIEhlYXBWZXJzaW9uIG1fbmV3bHlBbGxvY2F0ZWRW
ZXJzaW9uIHsgaW5pdGlhbFZlcnNpb24gfTsKLSAgICBzaXplX3QgbV9jYXBhY2l0eTsKLSAgICBi
b29sIG1faXNJdGVyYXRpbmc7CisgICAgYm9vbCBtX2lzSXRlcmF0aW5nIHsgZmFsc2UgfTsKICAg
ICBib29sIG1faXNNYXJraW5nIHsgZmFsc2UgfTsKKyAgICBMb2NrIG1fZGlyZWN0b3J5TG9jazsK
ICAgICBNYXJrZWRCbG9ja1NldCBtX2Jsb2NrczsKICAgICAKICAgICBTZW50aW5lbExpbmtlZExp
c3Q8V2Vha1NldCwgQmFzaWNSYXdTZW50aW5lbE5vZGU8V2Vha1NldD4+IG1fYWN0aXZlV2Vha1Nl
dHM7CiAgICAgU2VudGluZWxMaW5rZWRMaXN0PFdlYWtTZXQsIEJhc2ljUmF3U2VudGluZWxOb2Rl
PFdlYWtTZXQ+PiBtX25ld0FjdGl2ZVdlYWtTZXRzOwogCi0gICAgTG9jayBtX2RpcmVjdG9yeUxv
Y2s7CiAgICAgU2luZ2x5TGlua2VkTGlzdFdpdGhUYWlsPEJsb2NrRGlyZWN0b3J5PiBtX2RpcmVj
dG9yaWVzOwogCiAgICAgZnJpZW5kIGNsYXNzIEhlYXBWZXJpZmllcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludC5oCmluZGV4IDVmMGVmZmUzMzIwN2Nm
YmRjNjRlZTNjMDQ0ZWIwY2Q3ZTVjZjIzY2EuLjhkZjRlOTdlY2E4NTgyODM0MjY4Njg1ZGEwNWFm
YmEzOGQwMmQwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtp
bmdDb25zdHJhaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0Nv
bnN0cmFpbnQuaApAQCAtODIsMTMgKzgyLDEzIEBAIGNsYXNzIE1hcmtpbmdDb25zdHJhaW50IHsK
IHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIE1hcmtpbmdDb25zdHJhaW50U2V0OyAvLyBTbyBp
dCBjYW4gc2V0IG1faW5kZXguCiAgICAgCi0gICAgdW5zaWduZWQgbV9pbmRleCB7IFVJTlRfTUFY
IH07CiAgICAgQ1N0cmluZyBtX2FiYnJldmlhdGVkTmFtZTsKICAgICBDU3RyaW5nIG1fbmFtZTsK
KyAgICBzaXplX3QgbV9sYXN0VmlzaXRDb3VudCB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX2luZGV4
IHsgVUlOVF9NQVggfTsKICAgICBDb25zdHJhaW50Vm9sYXRpbGl0eSBtX3ZvbGF0aWxpdHk7CiAg
ICAgQ29uc3RyYWludENvbmN1cnJlbmN5IG1fY29uY3VycmVuY3k7CiAgICAgQ29uc3RyYWludFBh
cmFsbGVsaXNtIG1fcGFyYWxsZWxpc207Ci0gICAgc2l6ZV90IG1fbGFzdFZpc2l0Q291bnQgeyAw
IH07CiAgICAgTG9jayBtX2xvY2s7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9TdWJzcGFjZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJz
cGFjZS5jcHAKaW5kZXggZTE0YTM3NDkyMjdmNzQ2NzYwYWE4YTQwOTQwNGFmMmQ0NDBlYjE3YS4u
Yjg3MDUyYzY1ZTIwOTFmMmRkYjI3OWNmYTQ5ZjJmYzcyYWJiYWFjMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcApAQCAtNDUsNyArNDUsNiBAQCBTdWJzcGFjZTo6U3Vi
c3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFwKQogCiB2b2lkIFN1YnNwYWNlOjppbml0aWFs
aXplKEhlYXBDZWxsVHlwZSogaGVhcENlbGxUeXBlLCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKiBh
bGlnbmVkTWVtb3J5QWxsb2NhdG9yKQogewotICAgIG1fYXR0cmlidXRlcyA9IGhlYXBDZWxsVHlw
ZS0+YXR0cmlidXRlcygpOwogICAgIG1faGVhcENlbGxUeXBlID0gaGVhcENlbGxUeXBlOwogICAg
IG1fYWxpZ25lZE1lbW9yeUFsbG9jYXRvciA9IGFsaWduZWRNZW1vcnlBbGxvY2F0b3I7CiAgICAg
bV9kaXJlY3RvcnlGb3JFbXB0eUFsbG9jYXRpb24gPSBtX2FsaWduZWRNZW1vcnlBbGxvY2F0b3It
PmZpcnN0RGlyZWN0b3J5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9TdWJzcGFjZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaAppbmRl
eCA4M2VmNGQ3NDlmYmM4Njc4Njc1YzkyMzQ4MDQ3NzNkYjE4Y2FjOWE2Li5jMzI3MTk5ZTVjYTEy
MWE5NzA1MTg5ZTVjZmM1NDJjYTk0NjA0MGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9TdWJzcGFjZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1
YnNwYWNlLmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgU3Vic3BhY2UgewogICAgIGNvbnN0IGNo
YXIqIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWUuZGF0YSgpOyB9CiAgICAgTWFya2VkU3Bh
Y2UmIHNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9zcGFjZTsgfQogICAgIAotICAgIGNvbnN0IENl
bGxBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzOyB9
CisgICAgY29uc3QgQ2VsbEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMoKSBjb25zdDsKICAgICBIZWFw
Q2VsbFR5cGUqIGhlYXBDZWxsVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faGVhcENlbGxUeXBlOyB9
CiAgICAgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciogYWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpIGNv
bnN0IHsgcmV0dXJuIG1fYWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsgfQogICAgIApAQCAtMTA2LDkg
KzEwNiw2IEBAIGNsYXNzIFN1YnNwYWNlIHsKICAgICAKICAgICBNYXJrZWRTcGFjZSYgbV9zcGFj
ZTsKICAgICAKLSAgICBDU3RyaW5nIG1fbmFtZTsKLSAgICBDZWxsQXR0cmlidXRlcyBtX2F0dHJp
YnV0ZXM7Ci0KICAgICBIZWFwQ2VsbFR5cGUqIG1faGVhcENlbGxUeXBlIHsgbnVsbHB0ciB9Owog
ICAgIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IqIG1fYWxpZ25lZE1lbW9yeUFsbG9jYXRvciB7IG51
bGxwdHIgfTsKICAgICAKQEAgLTExNiw2ICsxMTMsOCBAQCBjbGFzcyBTdWJzcGFjZSB7CiAgICAg
QmxvY2tEaXJlY3RvcnkqIG1fZGlyZWN0b3J5Rm9yRW1wdHlBbGxvY2F0aW9uIHsgbnVsbHB0ciB9
OyAvLyBVc2VzIHRoZSBNYXJrZWRTcGFjZSBsaW5rZWQgbGlzdCBvZiBibG9ja3MuCiAgICAgU2Vu
dGluZWxMaW5rZWRMaXN0PExhcmdlQWxsb2NhdGlvbiwgQmFzaWNSYXdTZW50aW5lbE5vZGU8TGFy
Z2VBbGxvY2F0aW9uPj4gbV9sYXJnZUFsbG9jYXRpb25zOwogICAgIFN1YnNwYWNlKiBtX25leHRT
dWJzcGFjZUluQWxpZ25lZE1lbW9yeUFsbG9jYXRvciB7IG51bGxwdHIgfTsKKworICAgIENTdHJp
bmcgbV9uYW1lOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1N1YnNwYWNlSW5saW5lcy5oCmluZGV4IDE2NzEyN2ZmNDM4NDNlYjYxNGUwYjFh
NmNmNzY5M2E1MGE3YmFjYjguLjIwYjQxYmI3YTcyMmE3ZDg3NjAzMTA2MDJkMzNjMzY3Zjk5NjM1
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlSW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlSW5saW5lcy5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkJsb2NrRGlyZWN0b3J5
SW5saW5lcy5oIgorI2luY2x1ZGUgIkhlYXBDZWxsVHlwZS5oIgogI2luY2x1ZGUgIkpTQ2FzdC5o
IgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCiAjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKQEAg
LTc2LDEwICs3NywxMSBAQCB2b2lkIFN1YnNwYWNlOjpmb3JFYWNoTWFya2VkQ2VsbChjb25zdCBG
dW5jJiBmdW5jKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpD
b250aW51ZTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CisgICAgQ2VsbEF0dHJp
YnV0ZXMgYXR0cmlidXRlcyA9IHRoaXMtPmF0dHJpYnV0ZXMoKTsKICAgICBmb3JFYWNoTGFyZ2VB
bGxvY2F0aW9uKAogICAgICAgICBbJl0gKExhcmdlQWxsb2NhdGlvbiogYWxsb2NhdGlvbikgewog
ICAgICAgICAgICAgaWYgKGFsbG9jYXRpb24tPmlzTWFya2VkKCkpCi0gICAgICAgICAgICAgICAg
ZnVuYyhhbGxvY2F0aW9uLT5jZWxsKCksIG1fYXR0cmlidXRlcy5jZWxsS2luZCk7CisgICAgICAg
ICAgICAgICAgZnVuYyhhbGxvY2F0aW9uLT5jZWxsKCksIGF0dHJpYnV0ZXMuY2VsbEtpbmQpOwog
ICAgICAgICB9KTsKIH0KIApAQCAtMTEyLDEwICsxMTQsMTEgQEAgUmVmPFNoYXJlZFRhc2s8dm9p
ZChTbG90VmlzaXRvciYpPj4gU3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChj
b25zdAogICAgICAgICAgICAgICAgIG1fbmVlZFRvVmlzaXRMYXJnZUFsbG9jYXRpb25zID0gZmFs
c2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIENlbGxBdHRyaWJ1
dGVzIGF0dHJpYnV0ZXMgPSBtX3N1YnNwYWNlLmF0dHJpYnV0ZXMoKTsKICAgICAgICAgICAgIG1f
c3Vic3BhY2UuZm9yRWFjaExhcmdlQWxsb2NhdGlvbigKICAgICAgICAgICAgICAgICBbJl0gKExh
cmdlQWxsb2NhdGlvbiogYWxsb2NhdGlvbikgewogICAgICAgICAgICAgICAgICAgICBpZiAoYWxs
b2NhdGlvbi0+aXNNYXJrZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZnVuYyh2aXNp
dG9yLCBhbGxvY2F0aW9uLT5jZWxsKCksIG1fc3Vic3BhY2UubV9hdHRyaWJ1dGVzLmNlbGxLaW5k
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZnVuYyh2aXNpdG9yLCBhbGxvY2F0aW9uLT5j
ZWxsKCksIGF0dHJpYnV0ZXMuY2VsbEtpbmQpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAg
ICB9CiAgICAgICAgIApAQCAtMTQxLDEyICsxNDQsMTggQEAgdm9pZCBTdWJzcGFjZTo6Zm9yRWFj
aExpdmVDZWxsKGNvbnN0IEZ1bmMmIGZ1bmMpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBJ
dGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICB9
KTsKKyAgICBDZWxsQXR0cmlidXRlcyBhdHRyaWJ1dGVzID0gdGhpcy0+YXR0cmlidXRlcygpOwog
ICAgIGZvckVhY2hMYXJnZUFsbG9jYXRpb24oCiAgICAgICAgIFsmXSAoTGFyZ2VBbGxvY2F0aW9u
KiBhbGxvY2F0aW9uKSB7CiAgICAgICAgICAgICBpZiAoYWxsb2NhdGlvbi0+aXNMaXZlKCkpCi0g
ICAgICAgICAgICAgICAgZnVuYyhhbGxvY2F0aW9uLT5jZWxsKCksIG1fYXR0cmlidXRlcy5jZWxs
S2luZCk7CisgICAgICAgICAgICAgICAgZnVuYyhhbGxvY2F0aW9uLT5jZWxsKCksIGF0dHJpYnV0
ZXMuY2VsbEtpbmQpOwogICAgICAgICB9KTsKIH0KIAoraW5saW5lIGNvbnN0IENlbGxBdHRyaWJ1
dGVzJiBTdWJzcGFjZTo6YXR0cmlidXRlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faGVhcENl
bGxUeXBlLT5hdHRyaWJ1dGVzKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCg==
</data>
<flag name="review"
          id="376360"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>