<?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>136534</bug_id>
          
          <creation_ts>2014-09-04 09:57:21 -0700</creation_ts>
          <short_desc>Remove ResourceResponse::m_suggestedFilename</short_desc>
          <delta_ts>2014-09-29 16:22:55 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>136573</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>mitz</cc>
    
    <cc>psolanki</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1033226</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-09-04 09:57:21 -0700</bug_when>
    <thetext>It is complicating things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033231</commentid>
    <comment_count>1</comment_count>
      <attachid>237630</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-09-04 10:18:44 -0700</bug_when>
    <thetext>Created attachment 237630
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033232</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-04 10:19:32 -0700</bug_when>
    <thetext>Attachment 237630 did not pass style-queue:


ERROR: Source/WebCore/platform/network/ResourceResponseBase.h:135:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033236</commentid>
    <comment_count>3</comment_count>
      <attachid>237630</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-09-04 10:46:46 -0700</bug_when>
    <thetext>Comment on attachment 237630
patch

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

r=me.

&gt; Source/WebCore/platform/network/mac/ResourceResponseMac.mm:62
&gt; +    for (const auto&amp; header : m_httpHeaderFields)

I think that &quot;auto&amp;&quot; is all the rage these days, not &quot;const auto&amp;&quot;.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm:812
&gt; +    auto* headers = [NSMutableDictionary dictionaryWithObjectsAndKeys:

I think that we can and should use @{} here, there seems to be no reason for the dictionary to be mutable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033237</commentid>
    <comment_count>4</comment_count>
      <attachid>237630</attachid>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2014-09-04 10:47:55 -0700</bug_when>
    <thetext>Comment on attachment 237630
patch

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

&gt; Source/WebCore/platform/network/mac/ResourceResponseMac.mm:172
&gt; +String ResourceResponse::platformSuggestedFilename() const

You need an implementation for this function on the CFNetwork side as well. CFURLResponseCopySuggestedFilename is the function to call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033261</commentid>
    <comment_count>5</comment_count>
      <attachid>237634</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-09-04 11:48:09 -0700</bug_when>
    <thetext>Created attachment 237634
for bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033284</commentid>
    <comment_count>6</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-09-04 13:00:43 -0700</bug_when>
    <thetext>https://trac.webkit.org/r173272</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033368</commentid>
    <comment_count>7</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-09-04 17:50:57 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; https://trac.webkit.org/r173272

EFL and GTK ports have been broken since r173272.

http://build.webkit.org/builders/GTK%20Linux%2064-bit%20Debug%20%28Build%29/builds/45053</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033373</commentid>
    <comment_count>8</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2014-09-04 17:58:38 -0700</bug_when>
    <thetext>Just removing the last argument (filename) in soup/ResourceReponse.h should fix the error I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033377</commentid>
    <comment_count>9</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2014-09-04 18:10:17 -0700</bug_when>
    <thetext>Checked in a speculative build fix in https://trac.webkit.org/r173300</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033383</commentid>
    <comment_count>10</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2014-09-04 18:36:57 -0700</bug_when>
    <thetext>Another one -  https://trac.webkit.org/r173301</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033401</commentid>
    <comment_count>11</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-09-04 20:16:42 -0700</bug_when>
    <thetext>Finally I fixed build break on r173305

http://trac.webkit.org/changeset/173305</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033402</commentid>
    <comment_count>12</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-09-04 20:22:46 -0700</bug_when>
    <thetext>Two blob tests have been consistently failing after this commit:
http://build.webkit.org/results/Apple%20Mavericks%20Debug%20WK1%20(Tests)/r173272%20(7445)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033403</commentid>
    <comment_count>13</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-09-04 20:36:55 -0700</bug_when>
    <thetext>GTK port needed one more fix - http://trac.webkit.org/changeset/173306</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033442</commentid>
    <comment_count>14</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-09-05 05:20:02 -0700</bug_when>
    <thetext>Bug 136573 for the blob issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038106</commentid>
    <comment_count>15</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-09-29 16:22:55 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; https://trac.webkit.org/r173272

This caused bug 137239.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237630</attachid>
            <date>2014-09-04 10:18:44 -0700</date>
            <delta_ts>2014-09-04 11:48:09 -0700</delta_ts>
            <desc>patch</desc>
            <filename>response-suggested-filename.patch</filename>
            <type>text/plain</type>
            <size>27346</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MzI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc1IEBACisyMDE0LTA5LTA0ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUmVzb3VyY2VSZXNw
b25zZTo6bV9zdWdnZXN0ZWRGaWxlbmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTM2NTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyB3aWxsIHNpbXBsaWZ5IHRoaW5ncy4KKworICAgICAgICAq
IFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6aGFuZGxlU3Vic3RpdHV0ZURhdGFMb2Fk
Tm93KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUxvYWRFbXB0eSk6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjp3aWxsTG9hZE1lZGlhRWxlbWVudFVSTCk6CisgICAgICAgICogbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUpOgorICAgICAgICAqIGxvYWRlci9hcmNo
aXZlL0FyY2hpdmVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcmNoaXZlUmVzb3Vy
Y2U6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5k
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlc291cmNlSGFuZGxlOjpub3RpZnlSZXNw
b25zZU9uU3VjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVzb3VyY2VIYW5kbGU6Om5v
dGlmeVJlc3BvbnNlT25FcnJvcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlc3BvbnNlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFz
ZTo6UmVzb3VyY2VSZXNwb25zZUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZUJhc2U6OmFkb3B0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNl
Ojpjb3B5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c3Vn
Z2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6
Omh0dHBTdGF0dXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNl
OjpzZXRIVFRQU3RhdHVzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6aHR0cEhlYWRlckZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2VCYXNlOjpzZXRIVFRQSGVhZGVyRmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZUJhc2U6OmFkZEhUVFBIZWFkZXJGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6aHR0cEhlYWRlckZpZWxkcyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6aXNBdHRhY2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2VCYXNlOjp3YXNDYWNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZUJhc2U6OmNvbm5lY3Rpb25SZXVzZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZUJhc2U6OnNldENvbm5lY3Rpb25SZXVzZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvbm5lY3Rpb25JRCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0Q29ubmVjdGlvbklEKToKKworICAgICAgICAgICAg
UmVtb3ZlIEFsbEZpZWxkcyBpbml0aWFsaXphdGlvbi4gSXQgd2FzIG9ubHkgdXNlZCB0byBnZXQg
bV9zdWdnZXN0ZWRGaWxlbmFtZS4KKyAgICAgICAgICAgIFJlbmFtZSBDb21tb25BbmRVbmNvbW1v
bkZpZWxkcyB0byBBbGxGaWVsZHMKKworICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZUJhc2U6OnNldFN1Z2dlc3RlZEZpbGVuYW1lKTogRGVsZXRlZC4KKworICAgICAgICAgICAgTm8g
bW9yZSBzZXR0ZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9u
c2VCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6cGxhdGZv
cm1TdWdnZXN0ZWRGaWxlTmFtZSk6CisKKyAgICAgICAgICAgIEdldCB0aGUgc3VnZ2VzdGVkIGZp
bGVuYW1lIGZyb20gdGhlIHBsYXRmb3JtIGNsYXNzIG9uLWRlbWFuZC4KKworICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZSk6CisKKyAgICAgICAgICAgIFJlbW92
ZSBuZXZlci11c2VkIGZpbGUgbmFtZSBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxhenlJbml0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6aW5pdE5TVVJMUmVzcG9uc2UpOgorCisgICAgICAg
ICAgICBTeW50aGVzaXplIEhUVFAgcmVzcG9uc2UgcHJvcGVybHkgc28gaXQgY2FuIGhvbGQgQ29u
dGVudC1EaXNwb3NpdGlvbiBmb3IgZmlsZSBuYW1lIChhbmQgb3RoZXIgaGVhZGVycykuCisKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQpOgorCisg
ICAgICAgICAgICBEb24ndCBwdWxsIHRoZSBzdWdnZXN0ZWQgZmlsZW5hbWUgYW55bW9yZS4KKwor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1TdWdnZXN0ZWRGaWxl
bmFtZSk6CisKKyAgICAgICAgICAgIEdldCB0aGUgc3VnZ2VzdGVkIG5hbWUgZnJvbSB0aGUgKHBv
c3NpYmx5IHN5bnRoZXRpYykgTlNVUkxSZXF1ZXN0LgorCiAyMDE0LTA5LTA0ICBSZW5hdG8gTmFn
eSAgPHJuYWd5QGluZi51LXN6ZWdlZC5odT4KIAogICAgICAgICBSZW1vdmUgUXQgY3J1ZnQ6IE1J
TUVTbmlmZmluZy5jcHAgYW5kIE1JTUVTbmlmZmluZy5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgkocmV2aXNpb24gMTczMjU2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTg3Nyw3ICs4NzcsNiBAQCBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVz
cG9uc2VCYXNlMTdzZXRICiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTdzZXRI
VFRQU3RhdHVzVGV4dEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIwUmVzb3VyY2VSZXNw
b25zZUJhc2UxOHNldEhUVFBIZWFkZXJGaWVsZEVSS04zV1RGNlN0cmluZ0VTNF8KIF9fWk43V2Vi
Q29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UxOXNldFRleHRFbmNvZGluZ05hbWVFUktOM1dURjZT
dHJpbmdFCi1fX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMjBzZXRTdWdnZXN0ZWRG
aWxlbmFtZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJh
c2UyNHNldEV4cGVjdGVkQ29udGVudExlbmd0aEV4CiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVz
cG9uc2VCYXNlNnNldFVSTEVSS05TXzNVUkxFCiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9u
c2VCYXNlQzJFdgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CShyZXZpc2lvbiAxNzMyNTYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzIsNyArNDcyLDcgQEAgdm9pZCBEb2N1bWVudExv
YWRlcjo6aGFuZGxlU3Vic3RpdHV0ZURhdAogICAgIFVSTCB1cmwgPSBtX3N1YnN0aXR1dGVEYXRh
LnJlc3BvbnNlVVJMKCk7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHVybCA9IG1f
cmVxdWVzdC51cmwoKTsKLSAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKHVybCwgbV9zdWJz
dGl0dXRlRGF0YS5taW1lVHlwZSgpLCBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+c2l6ZSgp
LCBtX3N1YnN0aXR1dGVEYXRhLnRleHRFbmNvZGluZygpLCAiIik7CisgICAgUmVzb3VyY2VSZXNw
b25zZSByZXNwb25zZSh1cmwsIG1fc3Vic3RpdHV0ZURhdGEubWltZVR5cGUoKSwgbV9zdWJzdGl0
dXRlRGF0YS5jb250ZW50KCktPnNpemUoKSwgbV9zdWJzdGl0dXRlRGF0YS50ZXh0RW5jb2Rpbmco
KSk7CiAgICAgcmVzcG9uc2VSZWNlaXZlZCgwLCByZXNwb25zZSk7CiB9CiAKQEAgLTEzODUsNyAr
MTM4NSw3IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlTG9hZEVtcHR5KCkKICAgICBpZiAo
bV9yZXF1ZXN0LnVybCgpLmlzRW1wdHkoKSAmJiAhZnJhbWVMb2FkZXIoKS0+c3RhdGVNYWNoaW5l
KCkuY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKQogICAgICAgICBtX3JlcXVlc3Quc2V0
VVJMKGJsYW5rVVJMKCkpOwogICAgIFN0cmluZyBtaW1lVHlwZSA9IHNob3VsZExvYWRFbXB0eSA/
ICJ0ZXh0L2h0bWwiIDogZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuZ2VuZXJhdGVkTUlNRVR5cGVG
b3JVUkxTY2hlbWUobV9yZXF1ZXN0LnVybCgpLnByb3RvY29sKCkpOwotICAgIG1fcmVzcG9uc2Ug
PSBSZXNvdXJjZVJlc3BvbnNlKG1fcmVxdWVzdC51cmwoKSwgbWltZVR5cGUsIDAsIFN0cmluZygp
LCBTdHJpbmcoKSk7CisgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UobV9yZXF1ZXN0
LnVybCgpLCBtaW1lVHlwZSwgMCwgU3RyaW5nKCkpOwogICAgIGZpbmlzaGVkTG9hZGluZyhtb25v
dG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDE3MzI1NikKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
MTMsNyArMTUxMyw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OndpbGxMb2FkTWVkaWFFbGVtZW50VVIK
ICAgICB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXI7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsK
ICAgICByZXF1ZXN0RnJvbURlbGVnYXRlKHJlcXVlc3QsIGlkZW50aWZpZXIsIGVycm9yKTsKLSAg
ICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2Fk
ZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UodXJsLCBTdHJp
bmcoKSwgLTEsIFN0cmluZygpLCBTdHJpbmcoKSksIDAsIC0xLCAtMSwgZXJyb3IpOworICAgIG5v
dGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5n
ZXQoKSwgaWRlbnRpZmllciwgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSh1cmwsIFN0cmluZygp
LCAtMSwgU3RyaW5nKCkpLCAwLCAtMSwgLTEsIGVycm9yKTsKIAogICAgIHVybCA9IHJlcXVlc3Qu
dXJsKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAkocmV2aXNpb24gMTczMjU2KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTE1OSw3ICsxMTU5LDcgQEAgUGFzc1JlZlB0cjxBcHBsaWNh
dGlvbkNhY2hlPiBBcHBsaWNhdGlvbgogICAgICAgICBTdHJpbmcgbWltZVR5cGUgPSBjYWNoZVN0
YXRlbWVudC5nZXRDb2x1bW5UZXh0KDMpOwogICAgICAgICBTdHJpbmcgdGV4dEVuY29kaW5nTmFt
ZSA9IGNhY2hlU3RhdGVtZW50LmdldENvbHVtblRleHQoNCk7CiAgICAgICAgIAotICAgICAgICBS
ZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKHVybCwgbWltZVR5cGUsIHNpemUsIHRleHRFbmNvZGlu
Z05hbWUsICIiKTsKKyAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSh1cmwsIG1pbWVU
eXBlLCBzaXplLCB0ZXh0RW5jb2RpbmdOYW1lKTsKICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0
YXR1c0NvZGUoaHR0cFN0YXR1c0NvZGUpOwogCiAgICAgICAgIFN0cmluZyBoZWFkZXJzID0gY2Fj
aGVTdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCg1KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcAkocmV2aXNpb24gMTczMjU2KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4g
QXJjaGl2ZVJlc291CiAgICAgaWYgKHJlc3BvbnNlLmlzTnVsbCgpKSB7CiAgICAgICAgIHVuc2ln
bmVkIGRhdGFTaXplID0gZGF0YS0+c2l6ZSgpOwogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEFyY2hpdmVSZXNvdXJjZShkYXRhLCB1cmwsIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmcsIGZyYW1l
TmFtZSwKLSAgICAgICAgICAgIFJlc291cmNlUmVzcG9uc2UodXJsLCBtaW1lVHlwZSwgZGF0YVNp
emUsIHRleHRFbmNvZGluZywgU3RyaW5nKCkpKSk7CisgICAgICAgICAgICBSZXNvdXJjZVJlc3Bv
bnNlKHVybCwgbWltZVR5cGUsIGRhdGFTaXplLCB0ZXh0RW5jb2RpbmcpKSk7CiAgICAgfQogICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQXJjaGl2ZVJlc291cmNlKGRhdGEsIHVybCwgbWltZVR5cGUs
IHRleHRFbmNvZGluZywgZnJhbWVOYW1lLCByZXNwb25zZSkpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNw
cAkocmV2aXNpb24gMTczMjU2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVzb3VyY2VIYW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTYsNyArNTk2LDcgQEAg
dm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6Om5vdGlmeVJlc3BvbnNlTwogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAKICAgICBib29sIGlzUmFuZ2VSZXF1ZXN0ID0gbV9yYW5nZU9mZnNldCAh
PSBwb3NpdGlvbk5vdFNwZWNpZmllZDsKLSAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKGZp
cnN0UmVxdWVzdCgpLnVybCgpLCBtX2Jsb2JEYXRhLT5jb250ZW50VHlwZSgpLCBtX3RvdGFsUmVt
YWluaW5nU2l6ZSwgU3RyaW5nKCksIFN0cmluZygpKTsKKyAgICBSZXNvdXJjZVJlc3BvbnNlIHJl
c3BvbnNlKGZpcnN0UmVxdWVzdCgpLnVybCgpLCBtX2Jsb2JEYXRhLT5jb250ZW50VHlwZSgpLCBt
X3RvdGFsUmVtYWluaW5nU2l6ZSwgU3RyaW5nKCkpOwogICAgIHJlc3BvbnNlLnNldEV4cGVjdGVk
Q29udGVudExlbmd0aChtX3RvdGFsUmVtYWluaW5nU2l6ZSk7CiAgICAgcmVzcG9uc2Uuc2V0SFRU
UFN0YXR1c0NvZGUoaXNSYW5nZVJlcXVlc3QgPyBodHRwUGFydGlhbENvbnRlbnQgOiBodHRwT0sp
OwogICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0KGlzUmFuZ2VSZXF1ZXN0ID8gaHR0cFBh
cnRpYWxDb250ZW50VGV4dCA6IGh0dHBPS1RleHQpOwpAQCAtNjE3LDcgKzYxNyw3IEBAIHZvaWQg
QmxvYlJlc291cmNlSGFuZGxlOjpub3RpZnlSZXNwb25zZU8KIHsKICAgICBBU1NFUlQobV9lcnJv
ckNvZGUpOwogCi0gICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShmaXJzdFJlcXVlc3QoKS51
cmwoKSwgInRleHQvcGxhaW4iLCAwLCBTdHJpbmcoKSwgU3RyaW5nKCkpOworICAgIFJlc291cmNl
UmVzcG9uc2UgcmVzcG9uc2UoZmlyc3RSZXF1ZXN0KCkudXJsKCksICJ0ZXh0L3BsYWluIiwgMCwg
U3RyaW5nKCkpOwogICAgIHN3aXRjaCAobV9lcnJvckNvZGUpIHsKICAgICBjYXNlIHJhbmdlRXJy
b3I6CiAgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKGh0dHBSZXF1ZXN0ZWRSYW5n
ZU5vdFNhdGlzZmlhYmxlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCShyZXZpc2lvbiAxNzMyNTYp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTIgKzY3LDExIEBAIFJlc291cmNlUmVzcG9uc2VC
YXNlOjpSZXNvdXJjZVJlc3BvbnNlQmEKIHsKIH0KIAotUmVzb3VyY2VSZXNwb25zZUJhc2U6OlJl
c291cmNlUmVzcG9uc2VCYXNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFt
ZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKK1Jlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNvdXJj
ZVJlc3BvbnNlQmFzZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9u
ZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpCiAg
ICAgOiBtX3VybCh1cmwpCiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV9leHBl
Y3RlZENvbnRlbnRMZW5ndGgoZXhwZWN0ZWRMZW5ndGgpCiAgICAgLCBtX3RleHRFbmNvZGluZ05h
bWUodGV4dEVuY29kaW5nTmFtZSkKLSAgICAsIG1fc3VnZ2VzdGVkRmlsZW5hbWUoZmlsZW5hbWUp
CiAgICAgLCBtX2h0dHBTdGF0dXNDb2RlKDApCiAgICAgLCBtX2Nvbm5lY3Rpb25JRCgwKQogICAg
ICwgbV9jYWNoZUNvbnRyb2xNYXhBZ2UoMCkKQEAgLTEwMSwxMiArMTAwLDExIEBAIFBhc3NPd25Q
dHI8UmVzb3VyY2VSZXNwb25zZT4gUmVzb3VyY2VSZXMKICAgICByZXNwb25zZS0+c2V0TWltZVR5
cGUoZGF0YS0+bV9taW1lVHlwZSk7CiAgICAgcmVzcG9uc2UtPnNldEV4cGVjdGVkQ29udGVudExl
bmd0aChkYXRhLT5tX2V4cGVjdGVkQ29udGVudExlbmd0aCk7CiAgICAgcmVzcG9uc2UtPnNldFRl
eHRFbmNvZGluZ05hbWUoZGF0YS0+bV90ZXh0RW5jb2RpbmdOYW1lKTsKLSAgICByZXNwb25zZS0+
c2V0U3VnZ2VzdGVkRmlsZW5hbWUoZGF0YS0+bV9zdWdnZXN0ZWRGaWxlbmFtZSk7CiAKICAgICBy
ZXNwb25zZS0+c2V0SFRUUFN0YXR1c0NvZGUoZGF0YS0+bV9odHRwU3RhdHVzQ29kZSk7CiAgICAg
cmVzcG9uc2UtPnNldEhUVFBTdGF0dXNUZXh0KGRhdGEtPm1faHR0cFN0YXR1c1RleHQpOwogCi0g
ICAgcmVzcG9uc2UtPmxhenlJbml0KENvbW1vbkFuZFVuY29tbW9uRmllbGRzKTsKKyAgICByZXNw
b25zZS0+bGF6eUluaXQoQWxsRmllbGRzKTsKICAgICByZXNwb25zZS0+bV9odHRwSGVhZGVyRmll
bGRzLmFkb3B0KFdURjo6bW92ZShkYXRhLT5tX2h0dHBIZWFkZXJzKSk7CiAgICAgcmVzcG9uc2Ut
Pm1fcmVzb3VyY2VMb2FkVGltaW5nID0gZGF0YS0+bV9yZXNvdXJjZUxvYWRUaW1pbmc7CiAgICAg
cmVzcG9uc2UtPmRvUGxhdGZvcm1BZG9wdChkYXRhKTsKQEAgLTEyMCw3ICsxMTgsNiBAQCBQYXNz
T3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhCiAgICAgZGF0YS0+bV9taW1lVHlw
ZSA9IG1pbWVUeXBlKCkuaXNvbGF0ZWRDb3B5KCk7CiAgICAgZGF0YS0+bV9leHBlY3RlZENvbnRl
bnRMZW5ndGggPSBleHBlY3RlZENvbnRlbnRMZW5ndGgoKTsKICAgICBkYXRhLT5tX3RleHRFbmNv
ZGluZ05hbWUgPSB0ZXh0RW5jb2RpbmdOYW1lKCkuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgZGF0YS0+
bV9zdWdnZXN0ZWRGaWxlbmFtZSA9IHN1Z2dlc3RlZEZpbGVuYW1lKCkuaXNvbGF0ZWRDb3B5KCk7
CiAgICAgZGF0YS0+bV9odHRwU3RhdHVzQ29kZSA9IGh0dHBTdGF0dXNDb2RlKCk7CiAgICAgZGF0
YS0+bV9odHRwU3RhdHVzVGV4dCA9IGh0dHBTdGF0dXNUZXh0KCkuaXNvbGF0ZWRDb3B5KCk7CiAg
ICAgZGF0YS0+bV9odHRwSGVhZGVycyA9IGh0dHBIZWFkZXJGaWVsZHMoKS5jb3B5RGF0YSgpOwpA
QCAtMjA5LDIyICsyMDYsOSBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRUZXh0RW5j
b2RpCiB9CiAKIC8vIEZJWE1FIHNob3VsZCBjb21wdXRlIHRoaXMgb24gdGhlIGZseQotY29uc3Qg
U3RyaW5nJiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdAor
U3RyaW5nIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0CiB7
Ci0gICAgbGF6eUluaXQoQWxsRmllbGRzKTsKLQotICAgIHJldHVybiBtX3N1Z2dlc3RlZEZpbGVu
YW1lOwotfQotCi12b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRTdWdnZXN0ZWRGaWxlbmFt
ZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUpCi17Ci0gICAgbGF6eUluaXQoQWxsRmllbGRz
KTsKLSAgICBtX2lzTnVsbCA9IGZhbHNlOwotCi0gICAgLy8gRklYTUU6IFN1Z2dlc3RlZCBmaWxl
IG5hbWUgaXMgY2FsY3VsYXRlZCBiYXNlZCBvbiBvdGhlciBoZWFkZXJzLiBUaGVyZSBzaG91bGQg
bm90IGJlIGEgc2V0dGVyIGZvciBpdC4KLSAgICBtX3N1Z2dlc3RlZEZpbGVuYW1lID0gc3VnZ2Vz
dGVkTmFtZTsgCi0KLSAgICAvLyBGSVhNRTogU2hvdWxkIGludmFsaWRhdGUgb3IgdXBkYXRlIHBs
YXRmb3JtIHJlc3BvbnNlIGlmIHByZXNlbnQuCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IFJlc291cmNlUmVzcG9uc2UqPih0aGlzKS0+cGxhdGZvcm1TdWdnZXN0ZWRGaWxlbmFtZSgpOwog
fQogCiBpbnQgUmVzb3VyY2VSZXNwb25zZUJhc2U6Omh0dHBTdGF0dXNDb2RlKCkgY29uc3QKQEAg
LTI0NSwxNCArMjI5LDE0IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldEhUVFBTdGF0
dXMKIAogY29uc3QgU3RyaW5nJiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aHR0cFN0YXR1c1RleHQo
KSBjb25zdCAKIHsKLSAgICBsYXp5SW5pdChDb21tb25BbmRVbmNvbW1vbkZpZWxkcyk7CisgICAg
bGF6eUluaXQoQWxsRmllbGRzKTsKIAogICAgIHJldHVybiBtX2h0dHBTdGF0dXNUZXh0OyAKIH0K
IAogdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0SFRUUFN0YXR1c1RleHQoY29uc3QgU3Ry
aW5nJiBzdGF0dXNUZXh0KSAKIHsKLSAgICBsYXp5SW5pdChDb21tb25BbmRVbmNvbW1vbkZpZWxk
cyk7CisgICAgbGF6eUluaXQoQWxsRmllbGRzKTsKIAogICAgIG1faHR0cFN0YXR1c1RleHQgPSBz
dGF0dXNUZXh0OyAKIApAQCAtMjY4LDcgKzI1Miw3IEBAIFN0cmluZyBSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6aHR0cEhlYWRlckYKICAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkgICAgICAgIAogICAg
ICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICBsYXp5SW5pdChDb21tb25BbmRVbmNvbW1vbkZpZWxk
cyk7CisgICAgbGF6eUluaXQoQWxsRmllbGRzKTsKIAogICAgIHJldHVybiBtX2h0dHBIZWFkZXJG
aWVsZHMuZ2V0KG5hbWUpOyAKIH0KQEAgLTI4Miw3ICsyNjYsNyBAQCBTdHJpbmcgUmVzb3VyY2VS
ZXNwb25zZUJhc2U6Omh0dHBIZWFkZXJGCiAgICAgaWYgKCF2YWx1ZS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiB2YWx1ZTsKIAotICAgIGxhenlJbml0KENvbW1vbkFuZFVuY29tbW9uRmllbGRz
KTsKKyAgICBsYXp5SW5pdChBbGxGaWVsZHMpOwogCiAgICAgcmV0dXJuIG1faHR0cEhlYWRlckZp
ZWxkcy5nZXQobmFtZSk7IAogfQpAQCAtMzE4LDcgKzMwMiw3IEBAIHZvaWQgUmVzb3VyY2VSZXNw
b25zZUJhc2U6OnVwZGF0ZUhlYWRlclAKIAogdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0
SFRUUEhlYWRlckZpZWxkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
IHsKLSAgICBsYXp5SW5pdChDb21tb25BbmRVbmNvbW1vbkZpZWxkcyk7CisgICAgbGF6eUluaXQo
QWxsRmllbGRzKTsKIAogICAgIEhUVFBIZWFkZXJOYW1lIGhlYWRlck5hbWU7CiAgICAgaWYgKGZp
bmRIVFRQSGVhZGVyTmFtZShuYW1lLCBoZWFkZXJOYW1lKSkKQEAgLTMzMSw3ICszMTUsNyBAQCB2
b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRIVFRQSGVhZGVyCiAKIHZvaWQgUmVzb3VyY2VS
ZXNwb25zZUJhc2U6OnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZSBuYW1lLCBjb25z
dCBTdHJpbmcmIHZhbHVlKQogewotICAgIGxhenlJbml0KENvbW1vbkFuZFVuY29tbW9uRmllbGRz
KTsKKyAgICBsYXp5SW5pdChBbGxGaWVsZHMpOwogCiAgICAgdXBkYXRlSGVhZGVyUGFyc2VkU3Rh
dGUobmFtZSk7CiAKQEAgLTM0Miw3ICszMjYsNyBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNl
OjpzZXRIVFRQSGVhZGVyCiAKIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmFkZEhUVFBIZWFk
ZXJGaWVsZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAg
bGF6eUluaXQoQ29tbW9uQW5kVW5jb21tb25GaWVsZHMpOworICAgIGxhenlJbml0KEFsbEZpZWxk
cyk7CiAKICAgICBIVFRQSGVhZGVyTmFtZSBoZWFkZXJOYW1lOwogICAgIGlmIChmaW5kSFRUUEhl
YWRlck5hbWUobmFtZSwgaGVhZGVyTmFtZSkpCkBAIC0zNTMsNyArMzM3LDcgQEAgdm9pZCBSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6YWRkSFRUUEhlYWRlcgogCiBjb25zdCBIVFRQSGVhZGVyTWFwJiBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6aHR0cEhlYWRlckZpZWxkcygpIGNvbnN0CiB7Ci0gICAgbGF6
eUluaXQoQ29tbW9uQW5kVW5jb21tb25GaWVsZHMpOworICAgIGxhenlJbml0KEFsbEZpZWxkcyk7
CiAKICAgICByZXR1cm4gbV9odHRwSGVhZGVyRmllbGRzOwogfQpAQCAtNTA4LDcgKzQ5Miw3IEBA
IGRvdWJsZSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6bGFzdE1vZGlmaWUKIAogYm9vbCBSZXNvdXJj
ZVJlc3BvbnNlQmFzZTo6aXNBdHRhY2htZW50KCkgY29uc3QKIHsKLSAgICBsYXp5SW5pdChDb21t
b25BbmRVbmNvbW1vbkZpZWxkcyk7CisgICAgbGF6eUluaXQoQWxsRmllbGRzKTsKIAogICAgIFN0
cmluZyB2YWx1ZSA9IG1faHR0cEhlYWRlckZpZWxkcy5nZXQoSFRUUEhlYWRlck5hbWU6OkNvbnRl
bnREaXNwb3NpdGlvbik7CiAgICAgc2l6ZV90IGxvYyA9IHZhbHVlLmZpbmQoJzsnKTsKQEAgLTUy
MSw3ICs1MDUsNyBAQCBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjppc0F0dGFjaG1lbnQoCiAg
IAogYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6d2FzQ2FjaGVkKCkgY29uc3QKIHsKLSAgICBs
YXp5SW5pdChDb21tb25BbmRVbmNvbW1vbkZpZWxkcyk7CisgICAgbGF6eUluaXQoQWxsRmllbGRz
KTsKIAogICAgIHJldHVybiBtX3dhc0NhY2hlZDsKIH0KQEAgLTUzMywyOCArNTE3LDI4IEBAIHZv
aWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldFdhc0NhY2hlZCgKIAogYm9vbCBSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6Y29ubmVjdGlvblJldXNlZCgpIGNvbnN0CiB7Ci0gICAgbGF6eUluaXQoQ29t
bW9uQW5kVW5jb21tb25GaWVsZHMpOworICAgIGxhenlJbml0KEFsbEZpZWxkcyk7CiAKICAgICBy
ZXR1cm4gbV9jb25uZWN0aW9uUmV1c2VkOwogfQogCiB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNl
OjpzZXRDb25uZWN0aW9uUmV1c2VkKGJvb2wgY29ubmVjdGlvblJldXNlZCkKIHsKLSAgICBsYXp5
SW5pdChDb21tb25BbmRVbmNvbW1vbkZpZWxkcyk7CisgICAgbGF6eUluaXQoQWxsRmllbGRzKTsK
IAogICAgIG1fY29ubmVjdGlvblJldXNlZCA9IGNvbm5lY3Rpb25SZXVzZWQ7CiB9CiAKIHVuc2ln
bmVkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpjb25uZWN0aW9uSUQoKSBjb25zdAogewotICAgIGxh
enlJbml0KENvbW1vbkFuZFVuY29tbW9uRmllbGRzKTsKKyAgICBsYXp5SW5pdChBbGxGaWVsZHMp
OwogCiAgICAgcmV0dXJuIG1fY29ubmVjdGlvbklEOwogfQogCiB2b2lkIFJlc291cmNlUmVzcG9u
c2VCYXNlOjpzZXRDb25uZWN0aW9uSUQodW5zaWduZWQgY29ubmVjdGlvbklEKQogewotICAgIGxh
enlJbml0KENvbW1vbkFuZFVuY29tbW9uRmllbGRzKTsKKyAgICBsYXp5SW5pdChBbGxGaWVsZHMp
OwogCiAgICAgbV9jb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uSUQ7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFz
ZS5oCShyZXZpc2lvbiAxNzMyNTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVzcG9uc2VCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDExICs2Nyw2IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05h
bWUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRleHRFbmNvZGluZ05hbWUo
Y29uc3QgU3RyaW5nJiBuYW1lKTsKIAotICAgIC8vIEZJWE1FOiBTaG91bGQgY29tcHV0ZSB0aGlz
IG9uIHRoZSBmbHkuCi0gICAgLy8gVGhlcmUgc2hvdWxkIG5vdCBiZSBhIHNldHRlciBleHBvc2Vk
LCBhcyBzdWdnZXN0ZWQgZmlsZSBuYW1lIGlzIGRldGVybWluZWQgYmFzZWQgb24gb3RoZXIgaGVh
ZGVycyBpbiBhIG1hbm5lciB0aGF0IFdlYkNvcmUgZG9lcyBub3QgbmVjZXNzYXJpbHkga25vdyBh
Ym91dC4KLSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1l
KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTdWdnZXN0ZWRGaWxlbmFtZShj
b25zdCBTdHJpbmcmKTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIGludCBodHRwU3RhdHVzQ29kZSgp
IGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SFRUUFN0YXR1c0NvZGUoaW50KTsK
ICAgICAKQEAgLTk1LDYgKzkwLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNNdWx0aXBhcnQoKSBj
b25zdCB7IHJldHVybiBtaW1lVHlwZSgpID09ICJtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIjsg
fQogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0F0dGFjaG1lbnQoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdDsKICAgICAKICAg
ICAvLyBUaGVzZSBmdW5jdGlvbnMgcmV0dXJuIHBhcnNlZCB2YWx1ZXMgb2YgdGhlIGNvcnJlc3Bv
bmRpbmcgcmVzcG9uc2UgaGVhZGVycy4KICAgICAvLyBOYU4gbWVhbnMgdGhhdCB0aGUgaGVhZGVy
IHdhcyBub3QgcHJlc2VudCBvciBoYWQgaW52YWxpZCB2YWx1ZS4KQEAgLTEzMiwxNyArMTI4LDE3
IEBAIHByb3RlY3RlZDoKICAgICBlbnVtIEluaXRMZXZlbCB7CiAgICAgICAgIFVuaW5pdGlhbGl6
ZWQsCiAgICAgICAgIENvbW1vbkZpZWxkc09ubHksCi0gICAgICAgIENvbW1vbkFuZFVuY29tbW9u
RmllbGRzLAogICAgICAgICBBbGxGaWVsZHMKICAgICB9OwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
UmVzb3VyY2VSZXNwb25zZUJhc2UoKTsKLSAgICBSZXNvdXJjZVJlc3BvbnNlQmFzZShjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3Ro
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUp
OworICAgIFJlc291cmNlUmVzcG9uc2VCYXNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVu
Y29kaW5nTmFtZSk7CiAKICAgICB2b2lkIGxhenlJbml0KEluaXRMZXZlbCkgY29uc3Q7CiAKICAg
ICAvLyBUaGUgUmVzb3VyY2VSZXNwb25zZSBzdWJjbGFzcyBtYXkgInNoYWRvdyIgdGhpcyBtZXRo
b2QgdG8gbGF6aWx5IGluaXRpYWxpemUgcGxhdGZvcm0gc3BlY2lmaWMgZmllbGRzCiAgICAgdm9p
ZCBwbGF0Zm9ybUxhenlJbml0KEluaXRMZXZlbCkgeyB9CisgICAgU3RyaW5nIHBsYXRmb3JtU3Vn
Z2VzdGVkRmlsZU5hbWUoKSB7IHJldHVybiBTdHJpbmcoKTsgfQogCiAgICAgLy8gVGhlIFJlc291
cmNlUmVzcG9uc2Ugc3ViY2xhc3MgbWF5ICJzaGFkb3ciIHRoaXMgbWV0aG9kIHRvIGNvbXBhcmUg
cGxhdGZvcm0gc3BlY2lmaWMgZmllbGRzCiAgICAgc3RhdGljIGJvb2wgcGxhdGZvcm1Db21wYXJl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyByZXR1
cm4gdHJ1ZTsgfQpAQCAtMTUxLDcgKzE0Nyw2IEBAIHByb3RlY3RlZDoKICAgICBBdG9taWNTdHJp
bmcgbV9taW1lVHlwZTsKICAgICBsb25nIGxvbmcgbV9leHBlY3RlZENvbnRlbnRMZW5ndGg7CiAg
ICAgQXRvbWljU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFtZTsKLSAgICBTdHJpbmcgbV9zdWdnZXN0
ZWRGaWxlbmFtZTsKICAgICBBdG9taWNTdHJpbmcgbV9odHRwU3RhdHVzVGV4dDsKICAgICBIVFRQ
SGVhZGVyTWFwIG1faHR0cEhlYWRlckZpZWxkczsKICAgICBtdXRhYmxlIFJlc291cmNlTG9hZFRp
bWluZyBtX3Jlc291cmNlTG9hZFRpbWluZzsKQEAgLTE5OSw3ICsxOTQsNiBAQCBwdWJsaWM6CiAg
ICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgbG9uZyBsb25nIG1fZXhwZWN0ZWRDb250ZW50TGVu
Z3RoOwogICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7Ci0gICAgU3RyaW5nIG1fc3VnZ2Vz
dGVkRmlsZW5hbWU7CiAgICAgaW50IG1faHR0cFN0YXR1c0NvZGU7CiAgICAgU3RyaW5nIG1faHR0
cFN0YXR1c1RleHQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkSFRUUEhlYWRlck1h
cERhdGE+IG1faHR0cEhlYWRlcnM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAkocmV2aXNpb24gMTczMjU2KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgUmVzb3VyY2VSZXNwb25zZSA6IHB1YmxpYyBSZXNvdXJjZVJlc3BvbnNlQmFzZSB7CiBwdWJs
aWM6CiAgICAgUmVzb3VyY2VSZXNwb25zZSgpCi0gICAgICAgIDogbV9pbml0TGV2ZWwoQ29tbW9u
QW5kVW5jb21tb25GaWVsZHMpCisgICAgICAgIDogbV9pbml0TGV2ZWwoQWxsRmllbGRzKQogICAg
ICAgICAsIG1fcGxhdGZvcm1SZXNwb25zZUlzVXBUb0RhdGUodHJ1ZSkKICAgICB7CiAgICAgfQpA
QCAtNjYsOSArNjYsOSBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAKLSAgICBSZXNvdXJjZVJl
c3BvbnNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcg
ZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSkKLSAgICAgICAgOiBSZXNvdXJjZVJlc3BvbnNlQmFzZSh1cmwsIG1pbWVU
eXBlLCBleHBlY3RlZExlbmd0aCwgdGV4dEVuY29kaW5nTmFtZSwgZmlsZW5hbWUpCi0gICAgICAg
ICwgbV9pbml0TGV2ZWwoQ29tbW9uQW5kVW5jb21tb25GaWVsZHMpCisgICAgUmVzb3VyY2VSZXNw
b25zZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4
cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpCisgICAgICAgIDog
UmVzb3VyY2VSZXNwb25zZUJhc2UodXJsLCBtaW1lVHlwZSwgZXhwZWN0ZWRMZW5ndGgsIHRleHRF
bmNvZGluZ05hbWUpCisgICAgICAgICwgbV9pbml0TGV2ZWwoQWxsRmllbGRzKQogICAgICAgICAs
IG1fcGxhdGZvcm1SZXNwb25zZUlzVXBUb0RhdGUoZmFsc2UpCiAgICAgewogICAgIH0KQEAgLTEw
Myw2ICsxMDMsNyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
QmFzZTsKIAogICAgIHZvaWQgcGxhdGZvcm1MYXp5SW5pdChJbml0TGV2ZWwpOworICAgIFN0cmlu
ZyBwbGF0Zm9ybVN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3Q7CiAgICAgUGFzc093blB0cjxDcm9z
c1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBkb1BsYXRmb3JtQ29weURhdGEoUGFzc093blB0
cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBkYXRhKSBjb25zdCB7IHJldHVybiBk
YXRhOyB9CiAgICAgdm9pZCBkb1BsYXRmb3JtQWRvcHQoUGFzc093blB0cjxDcm9zc1RocmVhZFJl
c291cmNlUmVzcG9uc2VEYXRhPikgeyB9CiAjaWYgUExBVEZPUk0oQ09DT0EpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZVJlc3BvbnNlQ0ZOZXQuY3BwCShyZXZpc2lvbiAxNzMyNTYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxhenlJ
bml0KAogICAgICAgICAgICAgbV9odHRwU3RhdHVzQ29kZSA9IDA7CiAgICAgfQogCi0gICAgaWYg
KG1faW5pdExldmVsIDwgQ29tbW9uQW5kVW5jb21tb25GaWVsZHMgJiYgaW5pdExldmVsID49IENv
bW1vbkFuZFVuY29tbW9uRmllbGRzKSB7CisgICAgaWYgKG1faW5pdExldmVsIDwgQWxsRmllbGRz
KSB7CiAgICAgICAgIENGSFRUUE1lc3NhZ2VSZWYgaHR0cFJlc3BvbnNlID0gQ0ZVUkxSZXNwb25z
ZUdldEhUVFBSZXNwb25zZShtX2NmUmVzcG9uc2UuZ2V0KCkpOwogICAgICAgICBpZiAoaHR0cFJl
c3BvbnNlKSB7CiAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN0YXR1c0xpbmUg
PSBhZG9wdENGKENGSFRUUE1lc3NhZ2VDb3B5UmVzcG9uc2VTdGF0dXNMaW5lKGh0dHBSZXNwb25z
ZSkpOwpAQCAtMTA3LDExICsxMDcsNiBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3Jt
TGF6eUluaXQoCiAgICAgICAgICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRzLnNldCgoQ0ZTdHJp
bmdSZWYpa2V5c1tpXSwgKENGU3RyaW5nUmVmKXZhbHVlc1tpXSk7CiAgICAgICAgIH0KICAgICB9
Ci0gICAgCi0gICAgaWYgKG1faW5pdExldmVsIDwgQWxsRmllbGRzICYmIGluaXRMZXZlbCA+PSBB
bGxGaWVsZHMpIHsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdWdnZXN0ZWRGaWxl
bmFtZSA9IGFkb3B0Q0YoQ0ZVUkxSZXNwb25zZUNvcHlTdWdnZXN0ZWRGaWxlbmFtZShtX2NmUmVz
cG9uc2UuZ2V0KCkpKTsKLSAgICAgICAgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9IHN1Z2dlc3RlZEZp
bGVuYW1lLmdldCgpOwotICAgIH0KIAogICAgIG1faW5pdExldmVsID0gaW5pdExldmVsOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25z
ZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tCShyZXZpc2lvbiAxNzMyNTYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC00NSwxOCArNDUsMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIFJl
c291cmNlUmVzcG9uc2U6OmluaXROU1VSTFJlc3BvbnNlKCkgY29uc3QKIHsKLSAgICAvLyBXb3Jr
IGFyb3VuZCBhIG1pc3Rha2UgaW4gdGhlIE5TVVJMUmVzcG9uc2UgY2xhc3MgLSA8cmRhcjovL3By
b2JsZW0vNjg3NTIxOT4uCi0gICAgLy8gVGhlIGluaXQgZnVuY3Rpb24gdGFrZXMgYW4gTlNJbnRl
Z2VyLCBldmVuIHRob3VnaCB0aGUgYWNjZXNzb3IgcmV0dXJucyBhIGxvbmcgbG9uZy4KLSAgICAv
LyBGb3IgdmFsdWVzIHRoYXQgd29uJ3QgZml0IGluIGFuIE5TSW50ZWdlciwgcGFzcyAtMSBpbnN0
ZWFkLgotICAgIE5TSW50ZWdlciBleHBlY3RlZENvbnRlbnRMZW5ndGg7Ci0gICAgaWYgKG1fZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoIDwgMCB8fCBtX2V4cGVjdGVkQ29udGVudExlbmd0aCA+IHN0ZDo6
bnVtZXJpY19saW1pdHM8TlNJbnRlZ2VyPjo6bWF4KCkpCi0gICAgICAgIGV4cGVjdGVkQ29udGVu
dExlbmd0aCA9IC0xOwotICAgIGVsc2UKLSAgICAgICAgZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0g
c3RhdGljX2Nhc3Q8TlNJbnRlZ2VyPihtX2V4cGVjdGVkQ29udGVudExlbmd0aCk7CisgICAgaWYg
KCFtX2h0dHBTdGF0dXNDb2RlKSB7CisgICAgICAgIC8vIFdvcmsgYXJvdW5kIGEgbWlzdGFrZSBp
biB0aGUgTlNVUkxSZXNwb25zZSBjbGFzcyAtIDxyZGFyOi8vcHJvYmxlbS82ODc1MjE5Pi4KKyAg
ICAgICAgLy8gVGhlIGluaXQgZnVuY3Rpb24gdGFrZXMgYW4gTlNJbnRlZ2VyLCBldmVuIHRob3Vn
aCB0aGUgYWNjZXNzb3IgcmV0dXJucyBhIGxvbmcgbG9uZy4KKyAgICAgICAgLy8gRm9yIHZhbHVl
cyB0aGF0IHdvbid0IGZpdCBpbiBhbiBOU0ludGVnZXIsIHBhc3MgLTEgaW5zdGVhZC4KKyAgICAg
ICAgTlNJbnRlZ2VyIGV4cGVjdGVkQ29udGVudExlbmd0aDsKKyAgICAgICAgaWYgKG1fZXhwZWN0
ZWRDb250ZW50TGVuZ3RoIDwgMCB8fCBtX2V4cGVjdGVkQ29udGVudExlbmd0aCA+IHN0ZDo6bnVt
ZXJpY19saW1pdHM8TlNJbnRlZ2VyPjo6bWF4KCkpCisgICAgICAgICAgICBleHBlY3RlZENvbnRl
bnRMZW5ndGggPSAtMTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXhwZWN0ZWRDb250ZW50
TGVuZ3RoID0gc3RhdGljX2Nhc3Q8TlNJbnRlZ2VyPihtX2V4cGVjdGVkQ29udGVudExlbmd0aCk7
CiAKLSAgICAvLyBGSVhNRTogVGhpcyBjcmVhdGVzIGEgdmVyeSBpbmNvbXBsZXRlIE5TVVJMUmVz
cG9uc2UsIHdoaWNoIGRvZXMgbm90IGV2ZW4gaGF2ZSBhIHN0YXR1cyBjb2RlLgorICAgICAgICBt
X25zUmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6
bV91cmwgTUlNRVR5cGU6bV9taW1lVHlwZSBleHBlY3RlZENvbnRlbnRMZW5ndGg6LTEgdGV4dEVu
Y29kaW5nTmFtZTptX3RleHRFbmNvZGluZ05hbWVdKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBhdXRvKiBoZWFkZXJzID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeV07Cisg
ICAgZm9yIChjb25zdCBhdXRvJiBoZWFkZXIgOiBtX2h0dHBIZWFkZXJGaWVsZHMpCisgICAgICAg
IFtoZWFkZXJzIHNldE9iamVjdDooTlNTdHJpbmcgKiloZWFkZXIudmFsdWUgZm9yS2V5OihOU1N0
cmluZyAqKWhlYWRlci5rZXldOwogCi0gICAgbV9uc1Jlc3BvbnNlID0gYWRvcHROUyhbW05TVVJM
UmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOm1fdXJsIE1JTUVUeXBlOm1fbWltZVR5cGUgZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoOmV4cGVjdGVkQ29udGVudExlbmd0aCB0ZXh0RW5jb2RpbmdOYW1l
Om1fdGV4dEVuY29kaW5nTmFtZV0pOworICAgIG1fbnNSZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hU
VFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6bV91cmwgc3RhdHVzQ29kZTptX2h0dHBT
dGF0dXNDb2RlIEhUVFBWZXJzaW9uOihOU1N0cmluZyopa0NGSFRUUFZlcnNpb24xXzEgaGVhZGVy
RmllbGRzOmhlYWRlcnNdKTsKIH0KIAogI2lmIFVTRShDRk5FVFdPUkspCkBAIC0xMzksNyArMTQ1
LDcgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxhenlJbml0KAogICAgICAgICBb
cG9vbCBkcmFpbl07CiAgICAgfQogCi0gICAgaWYgKG1faW5pdExldmVsIDwgQ29tbW9uQW5kVW5j
b21tb25GaWVsZHMgJiYgaW5pdExldmVsID49IENvbW1vbkFuZFVuY29tbW9uRmllbGRzKSB7Cisg
ICAgaWYgKG1faW5pdExldmVsIDwgQWxsRmllbGRzKSB7CiAgICAgICAgIGlmIChbbV9uc1Jlc3Bv
bnNlLmdldCgpIGlzS2luZE9mQ2xhc3M6W05TSFRUUFVSTFJlc3BvbnNlIGNsYXNzXV0pIHsKICAg
ICAgICAgICAgIE5TQXV0b3JlbGVhc2VQb29sKiBwb29sID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBh
bGxvY10gaW5pdF07CiAKQEAgLTE1OSwxMyArMTY1LDE0IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25z
ZTo6cGxhdGZvcm1MYXp5SW5pdCgKICAgICAgICAgICAgIFtwb29sIGRyYWluXTsKICAgICAgICAg
fQogICAgIH0KLSAgICAgCi0gICAgaWYgKG1faW5pdExldmVsIDwgQWxsRmllbGRzICYmIGluaXRM
ZXZlbCA+PSBBbGxGaWVsZHMpCi0gICAgICAgIG1fc3VnZ2VzdGVkRmlsZW5hbWUgPSBbbV9uc1Jl
c3BvbnNlLmdldCgpIHN1Z2dlc3RlZEZpbGVuYW1lXTsKIAogICAgIG1faW5pdExldmVsID0gaW5p
dExldmVsOwogfQogCitTdHJpbmcgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1TdWdnZXN0ZWRG
aWxlbmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFtuc1VSTFJlc3BvbnNlKCkgc3VnZ2VzdGVk
RmlsZW5hbWVdOworfQogICAgIAogYm9vbCBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUNvbXBh
cmUoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYikK
IHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MzI2MSkKKysrIFNvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE0LTA5LTA0ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUmVzb3VyY2VS
ZXNwb25zZTo6bV9zdWdnZXN0ZWRGaWxlbmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2NTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZW5jb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZGVjb2RlKToK
KworICAgICAgICAgICAgTm8gbW9yZSBtX3N1Z2dlc3RlZEZpbGVuYW1lLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBE
RlBsdWdpbjo6YWRkQXJjaGl2ZVJlc291cmNlKToKKworICAgICAgICAgICAgRmFrZSB0aGUgc3Vn
Z2VzdGVkIGZpbGVuYW1lIGJ5IHVzaW5nIENvbnRlbnQtRGlzcG9zaXRpb24gaGVhZGVyLgorCiAy
MDE0LTA5LTA0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBJbml0aWFsaXplIG1fdXNlc05ldHdvcmtQcm9jZXNzIGVhcmxpZXIgaW4gV2ViUHJv
Y2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAJKHJldmlzaW9uIDE3MzI1NikKKysrIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02OTksNyArNjk5LDYgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9u
c2U+OjplbgogICAgICAgICBlbmNvZGVyIDw8IHJlc291cmNlUmVzcG9uc2UudGV4dEVuY29kaW5n
TmFtZSgpOwogICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGludDY0X3Q+KHJlc291cmNl
UmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpOwogICAgICAgICBlbmNvZGVyIDw8IHJl
c291cmNlUmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKTsKLSAgICAgICAgZW5jb2RlciA8PCByZXNv
dXJjZVJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCk7CiAgICAgfQogICAgIAogI2lmIEVOQUJM
RShXRUJfVElNSU5HKQpAQCAtNzczLDExICs3NzIsNiBAQCBib29sIEFyZ3VtZW50Q29kZXI8UmVz
b3VyY2VSZXNwb25zZT46OmRlCiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaHR0cFN0YXR1
c1RleHQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXNwb25zZS5zZXRI
VFRQU3RhdHVzVGV4dChodHRwU3RhdHVzVGV4dCk7Ci0KLSAgICAgICAgU3RyaW5nIHN1Z2dlc3Rl
ZEZpbGVuYW1lOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN1Z2dlc3RlZEZpbGVuYW1l
KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVzcG9uc2Uuc2V0U3VnZ2Vz
dGVkRmlsZW5hbWUoc3VnZ2VzdGVkRmlsZW5hbWUpOwogICAgIH0KICAgICAKICNpZiBFTkFCTEUo
V0VCX1RJTUlORykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLm1tCShyZXZpc2lvbiAxNzMyNTYpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQkod29ya2luZyBjb3B5KQpAQCAt
ODA5LDEwICs4MDksMTIgQEAgdm9pZCBQREZQbHVnaW46OmFkZEFyY2hpdmVSZXNvdXJjZSgpCiAg
ICAgLy8gRklYTUU6IEl0J3MgYSBoYWNrIHRvIGZvcmNlIGFkZCBhIHJlc291cmNlIHRvIERvY3Vt
ZW50TG9hZGVyLiBQREYgZG9jdW1lbnRzIHNob3VsZCBqdXN0IGJlIGZldGNoZWQgYXMgQ2FjaGVk
UmVzb3VyY2VzLgogCiAgICAgLy8gQWRkIGp1c3QgZW5vdWdoIGRhdGEgZm9yIGNvbnRleHQgbWVu
dSBoYW5kbGluZyBhbmQgd2ViIGFyY2hpdmVzIHRvIHdvcmsuCi0gICAgUmVzb3VyY2VSZXNwb25z
ZSBzeW50aGVzaXplZFJlc3BvbnNlOwotICAgIHN5bnRoZXNpemVkUmVzcG9uc2Uuc2V0U3VnZ2Vz
dGVkRmlsZW5hbWUobV9zdWdnZXN0ZWRGaWxlbmFtZSk7Ci0gICAgc3ludGhlc2l6ZWRSZXNwb25z
ZS5zZXRVUkwobV9zb3VyY2VVUkwpOyAvLyBOZWVkcyB0byBtYXRjaCB0aGUgSGl0VGVzdFJlc3Vs
dDo6YWJzb2x1dGVQREZVUkwuCi0gICAgc3ludGhlc2l6ZWRSZXNwb25zZS5zZXRNaW1lVHlwZSgi
YXBwbGljYXRpb24vcGRmIik7CisgICAgYXV0byogaGVhZGVycyA9IFtOU011dGFibGVEaWN0aW9u
YXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6CisgICAgICAgIChOU1N0cmluZyAqKW1f
c3VnZ2VzdGVkRmlsZW5hbWUsIEAiQ29udGVudC1EaXNwb3NpdGlvbiIsCisgICAgICAgIEAiYXBw
bGljYXRpb24vcGRmIiwgQCJDb250ZW50LVR5cGUiLAorICAgICAgICBuaWxdOworICAgIFJldGFp
blB0cjxOU1VSTFJlc3BvbnNlPiByZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25z
ZSBhbGxvY10gaW5pdFdpdGhVUkw6bV9zb3VyY2VVUkwgc3RhdHVzQ29kZToyMDAgSFRUUFZlcnNp
b246KE5TU3RyaW5nKilrQ0ZIVFRQVmVyc2lvbjFfMSBoZWFkZXJGaWVsZHM6aGVhZGVyc10pOwor
ICAgIFJlc291cmNlUmVzcG9uc2Ugc3ludGhlc2l6ZWRSZXNwb25zZShyZXNwb25zZS5nZXQoKSk7
CiAKICAgICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJj
ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6d3JhcENGRGF0YShtX2RhdGEuZ2V0KCkpLCBtX3NvdXJj
ZVVSTCwgImFwcGxpY2F0aW9uL3BkZiIsIFN0cmluZygpLCBTdHJpbmcoKSwgc3ludGhlc2l6ZWRS
ZXNwb25zZSk7CiAgICAgcGx1Z2luVmlldygpLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5sb2FkZXIo
KS0+YWRkQXJjaGl2ZVJlc291cmNlKHJlc291cmNlLnJlbGVhc2UoKSk7Cg==
</data>
<flag name="review"
          id="262360"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237634</attachid>
            <date>2014-09-04 11:48:09 -0700</date>
            <delta_ts>2014-09-04 11:48:09 -0700</delta_ts>
            <desc>for bots</desc>
            <filename>response-suggested-filename-2.patch</filename>
            <type>text/plain</type>
            <size>27766</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MzI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc1IEBACisyMDE0LTA5LTA0ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUmVzb3VyY2VSZXNw
b25zZTo6bV9zdWdnZXN0ZWRGaWxlbmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTM2NTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyB3aWxsIHNpbXBsaWZ5IHRoaW5ncy4KKworICAgICAgICAq
IFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6aGFuZGxlU3Vic3RpdHV0ZURhdGFMb2Fk
Tm93KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUxvYWRFbXB0eSk6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjp3aWxsTG9hZE1lZGlhRWxlbWVudFVSTCk6CisgICAgICAgICogbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUpOgorICAgICAgICAqIGxvYWRlci9hcmNo
aXZlL0FyY2hpdmVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcmNoaXZlUmVzb3Vy
Y2U6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5k
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlc291cmNlSGFuZGxlOjpub3RpZnlSZXNw
b25zZU9uU3VjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVzb3VyY2VIYW5kbGU6Om5v
dGlmeVJlc3BvbnNlT25FcnJvcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlc3BvbnNlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFz
ZTo6UmVzb3VyY2VSZXNwb25zZUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZUJhc2U6OmFkb3B0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNl
Ojpjb3B5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c3Vn
Z2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6
Omh0dHBTdGF0dXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNl
OjpzZXRIVFRQU3RhdHVzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6aHR0cEhlYWRlckZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2VCYXNlOjpzZXRIVFRQSGVhZGVyRmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZUJhc2U6OmFkZEhUVFBIZWFkZXJGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6aHR0cEhlYWRlckZpZWxkcyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6aXNBdHRhY2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2VCYXNlOjp3YXNDYWNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZUJhc2U6OmNvbm5lY3Rpb25SZXVzZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZUJhc2U6OnNldENvbm5lY3Rpb25SZXVzZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvbm5lY3Rpb25JRCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0Q29ubmVjdGlvbklEKToKKworICAgICAgICAgICAg
UmVtb3ZlIEFsbEZpZWxkcyBpbml0aWFsaXphdGlvbi4gSXQgd2FzIG9ubHkgdXNlZCB0byBnZXQg
bV9zdWdnZXN0ZWRGaWxlbmFtZS4KKyAgICAgICAgICAgIFJlbmFtZSBDb21tb25BbmRVbmNvbW1v
bkZpZWxkcyB0byBBbGxGaWVsZHMKKworICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZUJhc2U6OnNldFN1Z2dlc3RlZEZpbGVuYW1lKTogRGVsZXRlZC4KKworICAgICAgICAgICAgTm8g
bW9yZSBzZXR0ZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9u
c2VCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6cGxhdGZv
cm1TdWdnZXN0ZWRGaWxlTmFtZSk6CisKKyAgICAgICAgICAgIEdldCB0aGUgc3VnZ2VzdGVkIGZp
bGVuYW1lIGZyb20gdGhlIHBsYXRmb3JtIGNsYXNzIG9uLWRlbWFuZC4KKworICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZSk6CisKKyAgICAgICAgICAgIFJlbW92
ZSBuZXZlci11c2VkIGZpbGUgbmFtZSBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxhenlJbml0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6aW5pdE5TVVJMUmVzcG9uc2UpOgorCisgICAgICAg
ICAgICBTeW50aGVzaXplIEhUVFAgcmVzcG9uc2UgcHJvcGVybHkgc28gaXQgY2FuIGhvbGQgQ29u
dGVudC1EaXNwb3NpdGlvbiBmb3IgZmlsZSBuYW1lIChhbmQgb3RoZXIgaGVhZGVycykuCisKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQpOgorCisg
ICAgICAgICAgICBEb24ndCBwdWxsIHRoZSBzdWdnZXN0ZWQgZmlsZW5hbWUgYW55bW9yZS4KKwor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1TdWdnZXN0ZWRGaWxl
bmFtZSk6CisKKyAgICAgICAgICAgIEdldCB0aGUgc3VnZ2VzdGVkIG5hbWUgZnJvbSB0aGUgKHBv
c3NpYmx5IHN5bnRoZXRpYykgTlNVUkxSZXF1ZXN0LgorCiAyMDE0LTA5LTA0ICBSZW5hdG8gTmFn
eSAgPHJuYWd5QGluZi51LXN6ZWdlZC5odT4KIAogICAgICAgICBSZW1vdmUgUXQgY3J1ZnQ6IE1J
TUVTbmlmZmluZy5jcHAgYW5kIE1JTUVTbmlmZmluZy5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgkocmV2aXNpb24gMTczMjU2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTg3Nyw3ICs4NzcsNiBAQCBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVz
cG9uc2VCYXNlMTdzZXRICiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTdzZXRI
VFRQU3RhdHVzVGV4dEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIwUmVzb3VyY2VSZXNw
b25zZUJhc2UxOHNldEhUVFBIZWFkZXJGaWVsZEVSS04zV1RGNlN0cmluZ0VTNF8KIF9fWk43V2Vi
Q29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UxOXNldFRleHRFbmNvZGluZ05hbWVFUktOM1dURjZT
dHJpbmdFCi1fX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMjBzZXRTdWdnZXN0ZWRG
aWxlbmFtZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJh
c2UyNHNldEV4cGVjdGVkQ29udGVudExlbmd0aEV4CiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVz
cG9uc2VCYXNlNnNldFVSTEVSS05TXzNVUkxFCiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9u
c2VCYXNlQzJFdgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CShyZXZpc2lvbiAxNzMyNTYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzIsNyArNDcyLDcgQEAgdm9pZCBEb2N1bWVudExv
YWRlcjo6aGFuZGxlU3Vic3RpdHV0ZURhdAogICAgIFVSTCB1cmwgPSBtX3N1YnN0aXR1dGVEYXRh
LnJlc3BvbnNlVVJMKCk7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHVybCA9IG1f
cmVxdWVzdC51cmwoKTsKLSAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKHVybCwgbV9zdWJz
dGl0dXRlRGF0YS5taW1lVHlwZSgpLCBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+c2l6ZSgp
LCBtX3N1YnN0aXR1dGVEYXRhLnRleHRFbmNvZGluZygpLCAiIik7CisgICAgUmVzb3VyY2VSZXNw
b25zZSByZXNwb25zZSh1cmwsIG1fc3Vic3RpdHV0ZURhdGEubWltZVR5cGUoKSwgbV9zdWJzdGl0
dXRlRGF0YS5jb250ZW50KCktPnNpemUoKSwgbV9zdWJzdGl0dXRlRGF0YS50ZXh0RW5jb2Rpbmco
KSk7CiAgICAgcmVzcG9uc2VSZWNlaXZlZCgwLCByZXNwb25zZSk7CiB9CiAKQEAgLTEzODUsNyAr
MTM4NSw3IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlTG9hZEVtcHR5KCkKICAgICBpZiAo
bV9yZXF1ZXN0LnVybCgpLmlzRW1wdHkoKSAmJiAhZnJhbWVMb2FkZXIoKS0+c3RhdGVNYWNoaW5l
KCkuY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKQogICAgICAgICBtX3JlcXVlc3Quc2V0
VVJMKGJsYW5rVVJMKCkpOwogICAgIFN0cmluZyBtaW1lVHlwZSA9IHNob3VsZExvYWRFbXB0eSA/
ICJ0ZXh0L2h0bWwiIDogZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuZ2VuZXJhdGVkTUlNRVR5cGVG
b3JVUkxTY2hlbWUobV9yZXF1ZXN0LnVybCgpLnByb3RvY29sKCkpOwotICAgIG1fcmVzcG9uc2Ug
PSBSZXNvdXJjZVJlc3BvbnNlKG1fcmVxdWVzdC51cmwoKSwgbWltZVR5cGUsIDAsIFN0cmluZygp
LCBTdHJpbmcoKSk7CisgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UobV9yZXF1ZXN0
LnVybCgpLCBtaW1lVHlwZSwgMCwgU3RyaW5nKCkpOwogICAgIGZpbmlzaGVkTG9hZGluZyhtb25v
dG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDE3MzI1NikKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
MTMsNyArMTUxMyw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OndpbGxMb2FkTWVkaWFFbGVtZW50VVIK
ICAgICB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXI7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsK
ICAgICByZXF1ZXN0RnJvbURlbGVnYXRlKHJlcXVlc3QsIGlkZW50aWZpZXIsIGVycm9yKTsKLSAg
ICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2Fk
ZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UodXJsLCBTdHJp
bmcoKSwgLTEsIFN0cmluZygpLCBTdHJpbmcoKSksIDAsIC0xLCAtMSwgZXJyb3IpOworICAgIG5v
dGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5n
ZXQoKSwgaWRlbnRpZmllciwgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSh1cmwsIFN0cmluZygp
LCAtMSwgU3RyaW5nKCkpLCAwLCAtMSwgLTEsIGVycm9yKTsKIAogICAgIHVybCA9IHJlcXVlc3Qu
dXJsKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAkocmV2aXNpb24gMTczMjU2KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTE1OSw3ICsxMTU5LDcgQEAgUGFzc1JlZlB0cjxBcHBsaWNh
dGlvbkNhY2hlPiBBcHBsaWNhdGlvbgogICAgICAgICBTdHJpbmcgbWltZVR5cGUgPSBjYWNoZVN0
YXRlbWVudC5nZXRDb2x1bW5UZXh0KDMpOwogICAgICAgICBTdHJpbmcgdGV4dEVuY29kaW5nTmFt
ZSA9IGNhY2hlU3RhdGVtZW50LmdldENvbHVtblRleHQoNCk7CiAgICAgICAgIAotICAgICAgICBS
ZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKHVybCwgbWltZVR5cGUsIHNpemUsIHRleHRFbmNvZGlu
Z05hbWUsICIiKTsKKyAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSh1cmwsIG1pbWVU
eXBlLCBzaXplLCB0ZXh0RW5jb2RpbmdOYW1lKTsKICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0
YXR1c0NvZGUoaHR0cFN0YXR1c0NvZGUpOwogCiAgICAgICAgIFN0cmluZyBoZWFkZXJzID0gY2Fj
aGVTdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCg1KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcAkocmV2aXNpb24gMTczMjU2KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4g
QXJjaGl2ZVJlc291CiAgICAgaWYgKHJlc3BvbnNlLmlzTnVsbCgpKSB7CiAgICAgICAgIHVuc2ln
bmVkIGRhdGFTaXplID0gZGF0YS0+c2l6ZSgpOwogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEFyY2hpdmVSZXNvdXJjZShkYXRhLCB1cmwsIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmcsIGZyYW1l
TmFtZSwKLSAgICAgICAgICAgIFJlc291cmNlUmVzcG9uc2UodXJsLCBtaW1lVHlwZSwgZGF0YVNp
emUsIHRleHRFbmNvZGluZywgU3RyaW5nKCkpKSk7CisgICAgICAgICAgICBSZXNvdXJjZVJlc3Bv
bnNlKHVybCwgbWltZVR5cGUsIGRhdGFTaXplLCB0ZXh0RW5jb2RpbmcpKSk7CiAgICAgfQogICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQXJjaGl2ZVJlc291cmNlKGRhdGEsIHVybCwgbWltZVR5cGUs
IHRleHRFbmNvZGluZywgZnJhbWVOYW1lLCByZXNwb25zZSkpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNw
cAkocmV2aXNpb24gMTczMjU2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVzb3VyY2VIYW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTYsNyArNTk2LDcgQEAg
dm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6Om5vdGlmeVJlc3BvbnNlTwogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAKICAgICBib29sIGlzUmFuZ2VSZXF1ZXN0ID0gbV9yYW5nZU9mZnNldCAh
PSBwb3NpdGlvbk5vdFNwZWNpZmllZDsKLSAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKGZp
cnN0UmVxdWVzdCgpLnVybCgpLCBtX2Jsb2JEYXRhLT5jb250ZW50VHlwZSgpLCBtX3RvdGFsUmVt
YWluaW5nU2l6ZSwgU3RyaW5nKCksIFN0cmluZygpKTsKKyAgICBSZXNvdXJjZVJlc3BvbnNlIHJl
c3BvbnNlKGZpcnN0UmVxdWVzdCgpLnVybCgpLCBtX2Jsb2JEYXRhLT5jb250ZW50VHlwZSgpLCBt
X3RvdGFsUmVtYWluaW5nU2l6ZSwgU3RyaW5nKCkpOwogICAgIHJlc3BvbnNlLnNldEV4cGVjdGVk
Q29udGVudExlbmd0aChtX3RvdGFsUmVtYWluaW5nU2l6ZSk7CiAgICAgcmVzcG9uc2Uuc2V0SFRU
UFN0YXR1c0NvZGUoaXNSYW5nZVJlcXVlc3QgPyBodHRwUGFydGlhbENvbnRlbnQgOiBodHRwT0sp
OwogICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0KGlzUmFuZ2VSZXF1ZXN0ID8gaHR0cFBh
cnRpYWxDb250ZW50VGV4dCA6IGh0dHBPS1RleHQpOwpAQCAtNjE3LDcgKzYxNyw3IEBAIHZvaWQg
QmxvYlJlc291cmNlSGFuZGxlOjpub3RpZnlSZXNwb25zZU8KIHsKICAgICBBU1NFUlQobV9lcnJv
ckNvZGUpOwogCi0gICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShmaXJzdFJlcXVlc3QoKS51
cmwoKSwgInRleHQvcGxhaW4iLCAwLCBTdHJpbmcoKSwgU3RyaW5nKCkpOworICAgIFJlc291cmNl
UmVzcG9uc2UgcmVzcG9uc2UoZmlyc3RSZXF1ZXN0KCkudXJsKCksICJ0ZXh0L3BsYWluIiwgMCwg
U3RyaW5nKCkpOwogICAgIHN3aXRjaCAobV9lcnJvckNvZGUpIHsKICAgICBjYXNlIHJhbmdlRXJy
b3I6CiAgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKGh0dHBSZXF1ZXN0ZWRSYW5n
ZU5vdFNhdGlzZmlhYmxlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCShyZXZpc2lvbiAxNzMyNTYp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTIgKzY3LDExIEBAIFJlc291cmNlUmVzcG9uc2VC
YXNlOjpSZXNvdXJjZVJlc3BvbnNlQmEKIHsKIH0KIAotUmVzb3VyY2VSZXNwb25zZUJhc2U6OlJl
c291cmNlUmVzcG9uc2VCYXNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFt
ZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKK1Jlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNvdXJj
ZVJlc3BvbnNlQmFzZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9u
ZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpCiAg
ICAgOiBtX3VybCh1cmwpCiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV9leHBl
Y3RlZENvbnRlbnRMZW5ndGgoZXhwZWN0ZWRMZW5ndGgpCiAgICAgLCBtX3RleHRFbmNvZGluZ05h
bWUodGV4dEVuY29kaW5nTmFtZSkKLSAgICAsIG1fc3VnZ2VzdGVkRmlsZW5hbWUoZmlsZW5hbWUp
CiAgICAgLCBtX2h0dHBTdGF0dXNDb2RlKDApCiAgICAgLCBtX2Nvbm5lY3Rpb25JRCgwKQogICAg
ICwgbV9jYWNoZUNvbnRyb2xNYXhBZ2UoMCkKQEAgLTEwMSwxMiArMTAwLDExIEBAIFBhc3NPd25Q
dHI8UmVzb3VyY2VSZXNwb25zZT4gUmVzb3VyY2VSZXMKICAgICByZXNwb25zZS0+c2V0TWltZVR5
cGUoZGF0YS0+bV9taW1lVHlwZSk7CiAgICAgcmVzcG9uc2UtPnNldEV4cGVjdGVkQ29udGVudExl
bmd0aChkYXRhLT5tX2V4cGVjdGVkQ29udGVudExlbmd0aCk7CiAgICAgcmVzcG9uc2UtPnNldFRl
eHRFbmNvZGluZ05hbWUoZGF0YS0+bV90ZXh0RW5jb2RpbmdOYW1lKTsKLSAgICByZXNwb25zZS0+
c2V0U3VnZ2VzdGVkRmlsZW5hbWUoZGF0YS0+bV9zdWdnZXN0ZWRGaWxlbmFtZSk7CiAKICAgICBy
ZXNwb25zZS0+c2V0SFRUUFN0YXR1c0NvZGUoZGF0YS0+bV9odHRwU3RhdHVzQ29kZSk7CiAgICAg
cmVzcG9uc2UtPnNldEhUVFBTdGF0dXNUZXh0KGRhdGEtPm1faHR0cFN0YXR1c1RleHQpOwogCi0g
ICAgcmVzcG9uc2UtPmxhenlJbml0KENvbW1vbkFuZFVuY29tbW9uRmllbGRzKTsKKyAgICByZXNw
b25zZS0+bGF6eUluaXQoQWxsRmllbGRzKTsKICAgICByZXNwb25zZS0+bV9odHRwSGVhZGVyRmll
bGRzLmFkb3B0KFdURjo6bW92ZShkYXRhLT5tX2h0dHBIZWFkZXJzKSk7CiAgICAgcmVzcG9uc2Ut
Pm1fcmVzb3VyY2VMb2FkVGltaW5nID0gZGF0YS0+bV9yZXNvdXJjZUxvYWRUaW1pbmc7CiAgICAg
cmVzcG9uc2UtPmRvUGxhdGZvcm1BZG9wdChkYXRhKTsKQEAgLTEyMCw3ICsxMTgsNiBAQCBQYXNz
T3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhCiAgICAgZGF0YS0+bV9taW1lVHlw
ZSA9IG1pbWVUeXBlKCkuaXNvbGF0ZWRDb3B5KCk7CiAgICAgZGF0YS0+bV9leHBlY3RlZENvbnRl
bnRMZW5ndGggPSBleHBlY3RlZENvbnRlbnRMZW5ndGgoKTsKICAgICBkYXRhLT5tX3RleHRFbmNv
ZGluZ05hbWUgPSB0ZXh0RW5jb2RpbmdOYW1lKCkuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgZGF0YS0+
bV9zdWdnZXN0ZWRGaWxlbmFtZSA9IHN1Z2dlc3RlZEZpbGVuYW1lKCkuaXNvbGF0ZWRDb3B5KCk7
CiAgICAgZGF0YS0+bV9odHRwU3RhdHVzQ29kZSA9IGh0dHBTdGF0dXNDb2RlKCk7CiAgICAgZGF0
YS0+bV9odHRwU3RhdHVzVGV4dCA9IGh0dHBTdGF0dXNUZXh0KCkuaXNvbGF0ZWRDb3B5KCk7CiAg
ICAgZGF0YS0+bV9odHRwSGVhZGVycyA9IGh0dHBIZWFkZXJGaWVsZHMoKS5jb3B5RGF0YSgpOwpA
QCAtMjA5LDIyICsyMDYsOSBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRUZXh0RW5j
b2RpCiB9CiAKIC8vIEZJWE1FIHNob3VsZCBjb21wdXRlIHRoaXMgb24gdGhlIGZseQotY29uc3Qg
U3RyaW5nJiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdAor
U3RyaW5nIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0CiB7
Ci0gICAgbGF6eUluaXQoQWxsRmllbGRzKTsKLQotICAgIHJldHVybiBtX3N1Z2dlc3RlZEZpbGVu
YW1lOwotfQotCi12b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRTdWdnZXN0ZWRGaWxlbmFt
ZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUpCi17Ci0gICAgbGF6eUluaXQoQWxsRmllbGRz
KTsKLSAgICBtX2lzTnVsbCA9IGZhbHNlOwotCi0gICAgLy8gRklYTUU6IFN1Z2dlc3RlZCBmaWxl
IG5hbWUgaXMgY2FsY3VsYXRlZCBiYXNlZCBvbiBvdGhlciBoZWFkZXJzLiBUaGVyZSBzaG91bGQg
bm90IGJlIGEgc2V0dGVyIGZvciBpdC4KLSAgICBtX3N1Z2dlc3RlZEZpbGVuYW1lID0gc3VnZ2Vz
dGVkTmFtZTsgCi0KLSAgICAvLyBGSVhNRTogU2hvdWxkIGludmFsaWRhdGUgb3IgdXBkYXRlIHBs
YXRmb3JtIHJlc3BvbnNlIGlmIHByZXNlbnQuCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IFJlc291cmNlUmVzcG9uc2UqPih0aGlzKS0+cGxhdGZvcm1TdWdnZXN0ZWRGaWxlbmFtZSgpOwog
fQogCiBpbnQgUmVzb3VyY2VSZXNwb25zZUJhc2U6Omh0dHBTdGF0dXNDb2RlKCkgY29uc3QKQEAg
LTI0NSwxNCArMjI5LDE0IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldEhUVFBTdGF0
dXMKIAogY29uc3QgU3RyaW5nJiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aHR0cFN0YXR1c1RleHQo
KSBjb25zdCAKIHsKLSAgICBsYXp5SW5pdChDb21tb25BbmRVbmNvbW1vbkZpZWxkcyk7CisgICAg
bGF6eUluaXQoQWxsRmllbGRzKTsKIAogICAgIHJldHVybiBtX2h0dHBTdGF0dXNUZXh0OyAKIH0K
IAogdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0SFRUUFN0YXR1c1RleHQoY29uc3QgU3Ry
aW5nJiBzdGF0dXNUZXh0KSAKIHsKLSAgICBsYXp5SW5pdChDb21tb25BbmRVbmNvbW1vbkZpZWxk
cyk7CisgICAgbGF6eUluaXQoQWxsRmllbGRzKTsKIAogICAgIG1faHR0cFN0YXR1c1RleHQgPSBz
dGF0dXNUZXh0OyAKIApAQCAtMjY4LDcgKzI1Miw3IEBAIFN0cmluZyBSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6aHR0cEhlYWRlckYKICAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkgICAgICAgIAogICAg
ICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICBsYXp5SW5pdChDb21tb25BbmRVbmNvbW1vbkZpZWxk
cyk7CisgICAgbGF6eUluaXQoQWxsRmllbGRzKTsKIAogICAgIHJldHVybiBtX2h0dHBIZWFkZXJG
aWVsZHMuZ2V0KG5hbWUpOyAKIH0KQEAgLTI4Miw3ICsyNjYsNyBAQCBTdHJpbmcgUmVzb3VyY2VS
ZXNwb25zZUJhc2U6Omh0dHBIZWFkZXJGCiAgICAgaWYgKCF2YWx1ZS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiB2YWx1ZTsKIAotICAgIGxhenlJbml0KENvbW1vbkFuZFVuY29tbW9uRmllbGRz
KTsKKyAgICBsYXp5SW5pdChBbGxGaWVsZHMpOwogCiAgICAgcmV0dXJuIG1faHR0cEhlYWRlckZp
ZWxkcy5nZXQobmFtZSk7IAogfQpAQCAtMzE4LDcgKzMwMiw3IEBAIHZvaWQgUmVzb3VyY2VSZXNw
b25zZUJhc2U6OnVwZGF0ZUhlYWRlclAKIAogdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0
SFRUUEhlYWRlckZpZWxkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
IHsKLSAgICBsYXp5SW5pdChDb21tb25BbmRVbmNvbW1vbkZpZWxkcyk7CisgICAgbGF6eUluaXQo
QWxsRmllbGRzKTsKIAogICAgIEhUVFBIZWFkZXJOYW1lIGhlYWRlck5hbWU7CiAgICAgaWYgKGZp
bmRIVFRQSGVhZGVyTmFtZShuYW1lLCBoZWFkZXJOYW1lKSkKQEAgLTMzMSw3ICszMTUsNyBAQCB2
b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRIVFRQSGVhZGVyCiAKIHZvaWQgUmVzb3VyY2VS
ZXNwb25zZUJhc2U6OnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZSBuYW1lLCBjb25z
dCBTdHJpbmcmIHZhbHVlKQogewotICAgIGxhenlJbml0KENvbW1vbkFuZFVuY29tbW9uRmllbGRz
KTsKKyAgICBsYXp5SW5pdChBbGxGaWVsZHMpOwogCiAgICAgdXBkYXRlSGVhZGVyUGFyc2VkU3Rh
dGUobmFtZSk7CiAKQEAgLTM0Miw3ICszMjYsNyBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNl
OjpzZXRIVFRQSGVhZGVyCiAKIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmFkZEhUVFBIZWFk
ZXJGaWVsZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAg
bGF6eUluaXQoQ29tbW9uQW5kVW5jb21tb25GaWVsZHMpOworICAgIGxhenlJbml0KEFsbEZpZWxk
cyk7CiAKICAgICBIVFRQSGVhZGVyTmFtZSBoZWFkZXJOYW1lOwogICAgIGlmIChmaW5kSFRUUEhl
YWRlck5hbWUobmFtZSwgaGVhZGVyTmFtZSkpCkBAIC0zNTMsNyArMzM3LDcgQEAgdm9pZCBSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6YWRkSFRUUEhlYWRlcgogCiBjb25zdCBIVFRQSGVhZGVyTWFwJiBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6aHR0cEhlYWRlckZpZWxkcygpIGNvbnN0CiB7Ci0gICAgbGF6
eUluaXQoQ29tbW9uQW5kVW5jb21tb25GaWVsZHMpOworICAgIGxhenlJbml0KEFsbEZpZWxkcyk7
CiAKICAgICByZXR1cm4gbV9odHRwSGVhZGVyRmllbGRzOwogfQpAQCAtNTA4LDcgKzQ5Miw3IEBA
IGRvdWJsZSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6bGFzdE1vZGlmaWUKIAogYm9vbCBSZXNvdXJj
ZVJlc3BvbnNlQmFzZTo6aXNBdHRhY2htZW50KCkgY29uc3QKIHsKLSAgICBsYXp5SW5pdChDb21t
b25BbmRVbmNvbW1vbkZpZWxkcyk7CisgICAgbGF6eUluaXQoQWxsRmllbGRzKTsKIAogICAgIFN0
cmluZyB2YWx1ZSA9IG1faHR0cEhlYWRlckZpZWxkcy5nZXQoSFRUUEhlYWRlck5hbWU6OkNvbnRl
bnREaXNwb3NpdGlvbik7CiAgICAgc2l6ZV90IGxvYyA9IHZhbHVlLmZpbmQoJzsnKTsKQEAgLTUy
MSw3ICs1MDUsNyBAQCBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjppc0F0dGFjaG1lbnQoCiAg
IAogYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6d2FzQ2FjaGVkKCkgY29uc3QKIHsKLSAgICBs
YXp5SW5pdChDb21tb25BbmRVbmNvbW1vbkZpZWxkcyk7CisgICAgbGF6eUluaXQoQWxsRmllbGRz
KTsKIAogICAgIHJldHVybiBtX3dhc0NhY2hlZDsKIH0KQEAgLTUzMywyOCArNTE3LDI4IEBAIHZv
aWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldFdhc0NhY2hlZCgKIAogYm9vbCBSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6Y29ubmVjdGlvblJldXNlZCgpIGNvbnN0CiB7Ci0gICAgbGF6eUluaXQoQ29t
bW9uQW5kVW5jb21tb25GaWVsZHMpOworICAgIGxhenlJbml0KEFsbEZpZWxkcyk7CiAKICAgICBy
ZXR1cm4gbV9jb25uZWN0aW9uUmV1c2VkOwogfQogCiB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNl
OjpzZXRDb25uZWN0aW9uUmV1c2VkKGJvb2wgY29ubmVjdGlvblJldXNlZCkKIHsKLSAgICBsYXp5
SW5pdChDb21tb25BbmRVbmNvbW1vbkZpZWxkcyk7CisgICAgbGF6eUluaXQoQWxsRmllbGRzKTsK
IAogICAgIG1fY29ubmVjdGlvblJldXNlZCA9IGNvbm5lY3Rpb25SZXVzZWQ7CiB9CiAKIHVuc2ln
bmVkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpjb25uZWN0aW9uSUQoKSBjb25zdAogewotICAgIGxh
enlJbml0KENvbW1vbkFuZFVuY29tbW9uRmllbGRzKTsKKyAgICBsYXp5SW5pdChBbGxGaWVsZHMp
OwogCiAgICAgcmV0dXJuIG1fY29ubmVjdGlvbklEOwogfQogCiB2b2lkIFJlc291cmNlUmVzcG9u
c2VCYXNlOjpzZXRDb25uZWN0aW9uSUQodW5zaWduZWQgY29ubmVjdGlvbklEKQogewotICAgIGxh
enlJbml0KENvbW1vbkFuZFVuY29tbW9uRmllbGRzKTsKKyAgICBsYXp5SW5pdChBbGxGaWVsZHMp
OwogCiAgICAgbV9jb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uSUQ7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFz
ZS5oCShyZXZpc2lvbiAxNzMyNTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVzcG9uc2VCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDExICs2Nyw2IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05h
bWUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRleHRFbmNvZGluZ05hbWUo
Y29uc3QgU3RyaW5nJiBuYW1lKTsKIAotICAgIC8vIEZJWE1FOiBTaG91bGQgY29tcHV0ZSB0aGlz
IG9uIHRoZSBmbHkuCi0gICAgLy8gVGhlcmUgc2hvdWxkIG5vdCBiZSBhIHNldHRlciBleHBvc2Vk
LCBhcyBzdWdnZXN0ZWQgZmlsZSBuYW1lIGlzIGRldGVybWluZWQgYmFzZWQgb24gb3RoZXIgaGVh
ZGVycyBpbiBhIG1hbm5lciB0aGF0IFdlYkNvcmUgZG9lcyBub3QgbmVjZXNzYXJpbHkga25vdyBh
Ym91dC4KLSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1l
KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTdWdnZXN0ZWRGaWxlbmFtZShj
b25zdCBTdHJpbmcmKTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIGludCBodHRwU3RhdHVzQ29kZSgp
IGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SFRUUFN0YXR1c0NvZGUoaW50KTsK
ICAgICAKQEAgLTk1LDYgKzkwLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNNdWx0aXBhcnQoKSBj
b25zdCB7IHJldHVybiBtaW1lVHlwZSgpID09ICJtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIjsg
fQogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0F0dGFjaG1lbnQoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdDsKICAgICAKICAg
ICAvLyBUaGVzZSBmdW5jdGlvbnMgcmV0dXJuIHBhcnNlZCB2YWx1ZXMgb2YgdGhlIGNvcnJlc3Bv
bmRpbmcgcmVzcG9uc2UgaGVhZGVycy4KICAgICAvLyBOYU4gbWVhbnMgdGhhdCB0aGUgaGVhZGVy
IHdhcyBub3QgcHJlc2VudCBvciBoYWQgaW52YWxpZCB2YWx1ZS4KQEAgLTEzMiwxNyArMTI4LDE3
IEBAIHByb3RlY3RlZDoKICAgICBlbnVtIEluaXRMZXZlbCB7CiAgICAgICAgIFVuaW5pdGlhbGl6
ZWQsCiAgICAgICAgIENvbW1vbkZpZWxkc09ubHksCi0gICAgICAgIENvbW1vbkFuZFVuY29tbW9u
RmllbGRzLAogICAgICAgICBBbGxGaWVsZHMKICAgICB9OwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
UmVzb3VyY2VSZXNwb25zZUJhc2UoKTsKLSAgICBSZXNvdXJjZVJlc3BvbnNlQmFzZShjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3Ro
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUp
OworICAgIFJlc291cmNlUmVzcG9uc2VCYXNlKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGxvbmcgbG9uZyBleHBlY3RlZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2Rp
bmdOYW1lKTsKIAogICAgIHZvaWQgbGF6eUluaXQoSW5pdExldmVsKSBjb25zdDsKIAogICAgIC8v
IFRoZSBSZXNvdXJjZVJlc3BvbnNlIHN1YmNsYXNzIG1heSAic2hhZG93IiB0aGlzIG1ldGhvZCB0
byBsYXppbHkgaW5pdGlhbGl6ZSBwbGF0Zm9ybSBzcGVjaWZpYyBmaWVsZHMKICAgICB2b2lkIHBs
YXRmb3JtTGF6eUluaXQoSW5pdExldmVsKSB7IH0KKyAgICBTdHJpbmcgcGxhdGZvcm1TdWdnZXN0
ZWRGaWxlTmFtZSgpIHsgcmV0dXJuIFN0cmluZygpOyB9CiAKICAgICAvLyBUaGUgUmVzb3VyY2VS
ZXNwb25zZSBzdWJjbGFzcyBtYXkgInNoYWRvdyIgdGhpcyBtZXRob2QgdG8gY29tcGFyZSBwbGF0
Zm9ybSBzcGVjaWZpYyBmaWVsZHMKICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IHJldHVybiB0
cnVlOyB9CkBAIC0xNTEsNyArMTQ3LDYgQEAgcHJvdGVjdGVkOgogICAgIEF0b21pY1N0cmluZyBt
X21pbWVUeXBlOwogICAgIGxvbmcgbG9uZyBtX2V4cGVjdGVkQ29udGVudExlbmd0aDsKICAgICBB
dG9taWNTdHJpbmcgbV90ZXh0RW5jb2RpbmdOYW1lOwotICAgIFN0cmluZyBtX3N1Z2dlc3RlZEZp
bGVuYW1lOwogICAgIEF0b21pY1N0cmluZyBtX2h0dHBTdGF0dXNUZXh0OwogICAgIEhUVFBIZWFk
ZXJNYXAgbV9odHRwSGVhZGVyRmllbGRzOwogICAgIG11dGFibGUgUmVzb3VyY2VMb2FkVGltaW5n
IG1fcmVzb3VyY2VMb2FkVGltaW5nOwpAQCAtMTk5LDcgKzE5NCw2IEBAIHB1YmxpYzoKICAgICBT
dHJpbmcgbV9taW1lVHlwZTsKICAgICBsb25nIGxvbmcgbV9leHBlY3RlZENvbnRlbnRMZW5ndGg7
CiAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFtZTsKLSAgICBTdHJpbmcgbV9zdWdnZXN0ZWRG
aWxlbmFtZTsKICAgICBpbnQgbV9odHRwU3RhdHVzQ29kZTsKICAgICBTdHJpbmcgbV9odHRwU3Rh
dHVzVGV4dDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0
YT4gbV9odHRwSGVhZGVyczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VSZXNwb25zZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oCShyZXZpc2lvbiAxNzMyNTYpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlIDogcHVibGljIFJlc291cmNlUmVzcG9uc2VCYXNlIHsKIHB1YmxpYzoK
ICAgICBSZXNvdXJjZVJlc3BvbnNlKCkKLSAgICAgICAgOiBtX2luaXRMZXZlbChDb21tb25BbmRV
bmNvbW1vbkZpZWxkcykKKyAgICAgICAgOiBtX2luaXRMZXZlbChBbGxGaWVsZHMpCiAgICAgICAg
ICwgbV9wbGF0Zm9ybVJlc3BvbnNlSXNVcFRvRGF0ZSh0cnVlKQogICAgIHsKICAgICB9CkBAIC02
Niw5ICs2Niw5IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAotICAgIFJlc291cmNlUmVzcG9u
c2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBl
Y3RlZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJpbmcm
IGZpbGVuYW1lKQotICAgICAgICA6IFJlc291cmNlUmVzcG9uc2VCYXNlKHVybCwgbWltZVR5cGUs
IGV4cGVjdGVkTGVuZ3RoLCB0ZXh0RW5jb2RpbmdOYW1lLCBmaWxlbmFtZSkKLSAgICAgICAgLCBt
X2luaXRMZXZlbChDb21tb25BbmRVbmNvbW1vbkZpZWxkcykKKyAgICBSZXNvdXJjZVJlc3BvbnNl
KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0
ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSkKKyAgICAgICAgOiBSZXNv
dXJjZVJlc3BvbnNlQmFzZSh1cmwsIG1pbWVUeXBlLCBleHBlY3RlZExlbmd0aCwgdGV4dEVuY29k
aW5nTmFtZSkKKyAgICAgICAgLCBtX2luaXRMZXZlbChBbGxGaWVsZHMpCiAgICAgICAgICwgbV9w
bGF0Zm9ybVJlc3BvbnNlSXNVcFRvRGF0ZShmYWxzZSkKICAgICB7CiAgICAgfQpAQCAtMTAzLDYg
KzEwMyw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFJlc291cmNlUmVzcG9uc2VCYXNl
OwogCiAgICAgdm9pZCBwbGF0Zm9ybUxhenlJbml0KEluaXRMZXZlbCk7CisgICAgU3RyaW5nIHBs
YXRmb3JtU3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdDsKICAgICBQYXNzT3duUHRyPENyb3NzVGhy
ZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGRvUGxhdGZvcm1Db3B5RGF0YShQYXNzT3duUHRyPENy
b3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGRhdGEpIGNvbnN0IHsgcmV0dXJuIGRhdGE7
IH0KICAgICB2b2lkIGRvUGxhdGZvcm1BZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3Vy
Y2VSZXNwb25zZURhdGE+KSB7IH0KICNpZiBQTEFURk9STShDT0NPQSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVz
cG9uc2VDRk5ldC5jcHAJKHJldmlzaW9uIDE3MzI1NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTIsNyArOTIsNyBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQo
CiAgICAgICAgICAgICBtX2h0dHBTdGF0dXNDb2RlID0gMDsKICAgICB9CiAKLSAgICBpZiAobV9p
bml0TGV2ZWwgPCBDb21tb25BbmRVbmNvbW1vbkZpZWxkcyAmJiBpbml0TGV2ZWwgPj0gQ29tbW9u
QW5kVW5jb21tb25GaWVsZHMpIHsKKyAgICBpZiAobV9pbml0TGV2ZWwgPCBBbGxGaWVsZHMpIHsK
ICAgICAgICAgQ0ZIVFRQTWVzc2FnZVJlZiBodHRwUmVzcG9uc2UgPSBDRlVSTFJlc3BvbnNlR2V0
SFRUUFJlc3BvbnNlKG1fY2ZSZXNwb25zZS5nZXQoKSk7CiAgICAgICAgIGlmIChodHRwUmVzcG9u
c2UpIHsKICAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RhdHVzTGluZSA9IGFk
b3B0Q0YoQ0ZIVFRQTWVzc2FnZUNvcHlSZXNwb25zZVN0YXR1c0xpbmUoaHR0cFJlc3BvbnNlKSk7
CkBAIC0xMDcsMTUgKzEwNywxNiBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6
eUluaXQoCiAgICAgICAgICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRzLnNldCgoQ0ZTdHJpbmdS
ZWYpa2V5c1tpXSwgKENGU3RyaW5nUmVmKXZhbHVlc1tpXSk7CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgCi0gICAgaWYgKG1faW5pdExldmVsIDwgQWxsRmllbGRzICYmIGluaXRMZXZlbCA+PSBBbGxG
aWVsZHMpIHsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdWdnZXN0ZWRGaWxlbmFt
ZSA9IGFkb3B0Q0YoQ0ZVUkxSZXNwb25zZUNvcHlTdWdnZXN0ZWRGaWxlbmFtZShtX2NmUmVzcG9u
c2UuZ2V0KCkpKTsKLSAgICAgICAgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9IHN1Z2dlc3RlZEZpbGVu
YW1lLmdldCgpOwotICAgIH0KIAogICAgIG1faW5pdExldmVsID0gaW5pdExldmVsOwogfQotICAg
IAorCitTdHJpbmcgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1TdWdnZXN0ZWRGaWxlbmFtZSgp
IGNvbnN0Cit7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdWdnZXN0ZWRGaWxlbmFtZSA9
IGFkb3B0Q0YoQ0ZVUkxSZXNwb25zZUNvcHlTdWdnZXN0ZWRGaWxlbmFtZShtX2NmUmVzcG9uc2Uu
Z2V0KCkpKTsKKyAgICByZXR1cm4gc3VnZ2VzdGVkRmlsZW5hbWUuZ2V0KCk7Cit9CisKIGJvb2wg
UmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1Db21wYXJlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IGEsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGIpCiB7CiAgICAgLy8gQ0ZFcXVhbCBjcmFzaGVz
IGlmIHlvdSBwYXNzIGl0IDAgc28gZG8gYW4gZWFybHkgY2hlY2sgYmVmb3JlIGNhbGxpbmcgaXQu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3Bv
bnNlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlUmVzcG9uc2VNYWMubW0JKHJldmlzaW9uIDE3MzI1NikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVzcG9uc2VNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDE4ICs0NSwyNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQg
UmVzb3VyY2VSZXNwb25zZTo6aW5pdE5TVVJMUmVzcG9uc2UoKSBjb25zdAogewotICAgIC8vIFdv
cmsgYXJvdW5kIGEgbWlzdGFrZSBpbiB0aGUgTlNVUkxSZXNwb25zZSBjbGFzcyAtIDxyZGFyOi8v
cHJvYmxlbS82ODc1MjE5Pi4KLSAgICAvLyBUaGUgaW5pdCBmdW5jdGlvbiB0YWtlcyBhbiBOU0lu
dGVnZXIsIGV2ZW4gdGhvdWdoIHRoZSBhY2Nlc3NvciByZXR1cm5zIGEgbG9uZyBsb25nLgotICAg
IC8vIEZvciB2YWx1ZXMgdGhhdCB3b24ndCBmaXQgaW4gYW4gTlNJbnRlZ2VyLCBwYXNzIC0xIGlu
c3RlYWQuCi0gICAgTlNJbnRlZ2VyIGV4cGVjdGVkQ29udGVudExlbmd0aDsKLSAgICBpZiAobV9l
eHBlY3RlZENvbnRlbnRMZW5ndGggPCAwIHx8IG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoID4gc3Rk
OjpudW1lcmljX2xpbWl0czxOU0ludGVnZXI+OjptYXgoKSkKLSAgICAgICAgZXhwZWN0ZWRDb250
ZW50TGVuZ3RoID0gLTE7Ci0gICAgZWxzZQotICAgICAgICBleHBlY3RlZENvbnRlbnRMZW5ndGgg
PSBzdGF0aWNfY2FzdDxOU0ludGVnZXI+KG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoKTsKKyAgICBp
ZiAoIW1faHR0cFN0YXR1c0NvZGUpIHsKKyAgICAgICAgLy8gV29yayBhcm91bmQgYSBtaXN0YWtl
IGluIHRoZSBOU1VSTFJlc3BvbnNlIGNsYXNzIC0gPHJkYXI6Ly9wcm9ibGVtLzY4NzUyMTk+Lgor
ICAgICAgICAvLyBUaGUgaW5pdCBmdW5jdGlvbiB0YWtlcyBhbiBOU0ludGVnZXIsIGV2ZW4gdGhv
dWdoIHRoZSBhY2Nlc3NvciByZXR1cm5zIGEgbG9uZyBsb25nLgorICAgICAgICAvLyBGb3IgdmFs
dWVzIHRoYXQgd29uJ3QgZml0IGluIGFuIE5TSW50ZWdlciwgcGFzcyAtMSBpbnN0ZWFkLgorICAg
ICAgICBOU0ludGVnZXIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOworICAgICAgICBpZiAobV9leHBl
Y3RlZENvbnRlbnRMZW5ndGggPCAwIHx8IG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoID4gc3RkOjpu
dW1lcmljX2xpbWl0czxOU0ludGVnZXI+OjptYXgoKSkKKyAgICAgICAgICAgIGV4cGVjdGVkQ29u
dGVudExlbmd0aCA9IC0xOworICAgICAgICBlbHNlCisgICAgICAgICAgICBleHBlY3RlZENvbnRl
bnRMZW5ndGggPSBzdGF0aWNfY2FzdDxOU0ludGVnZXI+KG1fZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
KTsKIAotICAgIC8vIEZJWE1FOiBUaGlzIGNyZWF0ZXMgYSB2ZXJ5IGluY29tcGxldGUgTlNVUkxS
ZXNwb25zZSwgd2hpY2ggZG9lcyBub3QgZXZlbiBoYXZlIGEgc3RhdHVzIGNvZGUuCisgICAgICAg
IG1fbnNSZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVS
TDptX3VybCBNSU1FVHlwZTptX21pbWVUeXBlIGV4cGVjdGVkQ29udGVudExlbmd0aDotMSB0ZXh0
RW5jb2RpbmdOYW1lOm1fdGV4dEVuY29kaW5nTmFtZV0pOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIE5TTXV0YWJsZURpY3Rpb25hcnkqIGhlYWRlckRpY3Rpb25hcnkgPSBbTlNNdXRhYmxl
RGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKKyAgICBmb3IgKGF1dG8mIGhlYWRlciA6IG1faHR0cEhl
YWRlckZpZWxkcykKKyAgICAgICAgW2hlYWRlckRpY3Rpb25hcnkgc2V0T2JqZWN0OihOU1N0cmlu
ZyAqKWhlYWRlci52YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopaGVhZGVyLmtleV07CiAKLSAgICBt
X25zUmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6
bV91cmwgTUlNRVR5cGU6bV9taW1lVHlwZSBleHBlY3RlZENvbnRlbnRMZW5ndGg6ZXhwZWN0ZWRD
b250ZW50TGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bV90ZXh0RW5jb2RpbmdOYW1lXSk7CisgICAg
bV9uc1Jlc3BvbnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0
aFVSTDptX3VybCBzdGF0dXNDb2RlOm1faHR0cFN0YXR1c0NvZGUgSFRUUFZlcnNpb246KE5TU3Ry
aW5nKilrQ0ZIVFRQVmVyc2lvbjFfMSBoZWFkZXJGaWVsZHM6aGVhZGVyRGljdGlvbmFyeV0pOwog
fQogCiAjaWYgVVNFKENGTkVUV09SSykKQEAgLTEzOSw3ICsxNDUsNyBAQCB2b2lkIFJlc291cmNl
UmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQoCiAgICAgICAgIFtwb29sIGRyYWluXTsKICAgICB9
CiAKLSAgICBpZiAobV9pbml0TGV2ZWwgPCBDb21tb25BbmRVbmNvbW1vbkZpZWxkcyAmJiBpbml0
TGV2ZWwgPj0gQ29tbW9uQW5kVW5jb21tb25GaWVsZHMpIHsKKyAgICBpZiAobV9pbml0TGV2ZWwg
PCBBbGxGaWVsZHMpIHsKICAgICAgICAgaWYgKFttX25zUmVzcG9uc2UuZ2V0KCkgaXNLaW5kT2ZD
bGFzczpbTlNIVFRQVVJMUmVzcG9uc2UgY2xhc3NdXSkgewogICAgICAgICAgICAgTlNBdXRvcmVs
ZWFzZVBvb2wqIHBvb2wgPSBbW05TQXV0b3JlbGVhc2VQb29sIGFsbG9jXSBpbml0XTsKIApAQCAt
MTU5LDE0ICsxNjUsMTUgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxhenlJbml0
KAogICAgICAgICAgICAgW3Bvb2wgZHJhaW5dOwogICAgICAgICB9CiAgICAgfQotICAgICAKLSAg
ICBpZiAobV9pbml0TGV2ZWwgPCBBbGxGaWVsZHMgJiYgaW5pdExldmVsID49IEFsbEZpZWxkcykK
LSAgICAgICAgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9IFttX25zUmVzcG9uc2UuZ2V0KCkgc3VnZ2Vz
dGVkRmlsZW5hbWVdOwogCiAgICAgbV9pbml0TGV2ZWwgPSBpbml0TGV2ZWw7CiB9CiAKLSAgICAK
K1N0cmluZyBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybVN1Z2dlc3RlZEZpbGVuYW1lKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gW25zVVJMUmVzcG9uc2UoKSBzdWdnZXN0ZWRGaWxlbmFtZV07Cit9
CisKIGJvb2wgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1Db21wYXJlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGIpCiB7CiAgICAgcmV0dXJuIGEu
bnNVUkxSZXNwb25zZSgpID09IGIubnNVUkxSZXNwb25zZSgpOwpJbmRleDogU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2
aXNpb24gMTczMjYxKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjEgQEAKKzIwMTQtMDktMDQgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBw
bGUuY29tPgorCisgICAgICAgIFJlbW92ZSBSZXNvdXJjZVJlc3BvbnNlOjptX3N1Z2dlc3RlZEZp
bGVuYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzY1MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjpkZWNvZGUpOgorCisgICAgICAgICAgICBObyBtb3Jl
IG1fc3VnZ2VzdGVkRmlsZW5hbWUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjphZGRBcmNoaXZlUmVz
b3VyY2UpOgorCisgICAgICAgICAgICBGYWtlIHRoZSBzdWdnZXN0ZWQgZmlsZW5hbWUgYnkgdXNp
bmcgQ29udGVudC1EaXNwb3NpdGlvbiBoZWFkZXIuCisKIDIwMTQtMDktMDQgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIEluaXRpYWxpemUgbV91
c2VzTmV0d29ya1Byb2Nlc3MgZWFybGllciBpbiBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJv
Y2VzcygpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcAkocmV2aXNpb24gMTczMjU2KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5OSw3ICs2OTksNiBA
QCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmVuCiAgICAgICAgIGVuY29k
ZXIgPDwgcmVzb3VyY2VSZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCk7CiAgICAgICAgIGVuY29k
ZXIgPDwgc3RhdGljX2Nhc3Q8aW50NjRfdD4ocmVzb3VyY2VSZXNwb25zZS5leHBlY3RlZENvbnRl
bnRMZW5ndGgoKSk7CiAgICAgICAgIGVuY29kZXIgPDwgcmVzb3VyY2VSZXNwb25zZS5odHRwU3Rh
dHVzVGV4dCgpOwotICAgICAgICBlbmNvZGVyIDw8IHJlc291cmNlUmVzcG9uc2Uuc3VnZ2VzdGVk
RmlsZW5hbWUoKTsKICAgICB9CiAgICAgCiAjaWYgRU5BQkxFKFdFQl9USU1JTkcpCkBAIC03NzMs
MTEgKzc3Miw2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZGUKICAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShodHRwU3RhdHVzVGV4dCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0KGh0dHBTdGF0
dXNUZXh0KTsKLQotICAgICAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWU7Ci0gICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoc3VnZ2VzdGVkRmlsZW5hbWUpKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICByZXNwb25zZS5zZXRTdWdnZXN0ZWRGaWxlbmFtZShzdWdnZXN0ZWRG
aWxlbmFtZSk7CiAgICAgfQogICAgIAogI2lmIEVOQUJMRShXRUJfVElNSU5HKQpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0J
KHJldmlzaW9uIDE3MzI1NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04MDksMTAgKzgwOSw5IEBAIHZvaWQg
UERGUGx1Z2luOjphZGRBcmNoaXZlUmVzb3VyY2UoKQogICAgIC8vIEZJWE1FOiBJdCdzIGEgaGFj
ayB0byBmb3JjZSBhZGQgYSByZXNvdXJjZSB0byBEb2N1bWVudExvYWRlci4gUERGIGRvY3VtZW50
cyBzaG91bGQganVzdCBiZSBmZXRjaGVkIGFzIENhY2hlZFJlc291cmNlcy4KIAogICAgIC8vIEFk
ZCBqdXN0IGVub3VnaCBkYXRhIGZvciBjb250ZXh0IG1lbnUgaGFuZGxpbmcgYW5kIHdlYiBhcmNo
aXZlcyB0byB3b3JrLgotICAgIFJlc291cmNlUmVzcG9uc2Ugc3ludGhlc2l6ZWRSZXNwb25zZTsK
LSAgICBzeW50aGVzaXplZFJlc3BvbnNlLnNldFN1Z2dlc3RlZEZpbGVuYW1lKG1fc3VnZ2VzdGVk
RmlsZW5hbWUpOwotICAgIHN5bnRoZXNpemVkUmVzcG9uc2Uuc2V0VVJMKG1fc291cmNlVVJMKTsg
Ly8gTmVlZHMgdG8gbWF0Y2ggdGhlIEhpdFRlc3RSZXN1bHQ6OmFic29sdXRlUERGVVJMLgotICAg
IHN5bnRoZXNpemVkUmVzcG9uc2Uuc2V0TWltZVR5cGUoImFwcGxpY2F0aW9uL3BkZiIpOworICAg
IE5TRGljdGlvbmFyeSogaGVhZGVycyA9IEB7IEAiQ29udGVudC1EaXNwb3NpdGlvbiI6IChOU1N0
cmluZyAqKW1fc3VnZ2VzdGVkRmlsZW5hbWUsIEAiQ29udGVudC1UeXBlIiA6IEAiYXBwbGljYXRp
b24vcGRmIiB9OworICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiByZXNwb25zZSA9IGFkb3B0
TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6bV9zb3VyY2VVUkwgc3Rh
dHVzQ29kZToyMDAgSFRUUFZlcnNpb246KE5TU3RyaW5nKilrQ0ZIVFRQVmVyc2lvbjFfMSBoZWFk
ZXJGaWVsZHM6aGVhZGVyc10pOworICAgIFJlc291cmNlUmVzcG9uc2Ugc3ludGhlc2l6ZWRSZXNw
b25zZShyZXNwb25zZS5nZXQoKSk7CiAKICAgICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNv
dXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6d3JhcENGRGF0YSht
X2RhdGEuZ2V0KCkpLCBtX3NvdXJjZVVSTCwgImFwcGxpY2F0aW9uL3BkZiIsIFN0cmluZygpLCBT
dHJpbmcoKSwgc3ludGhlc2l6ZWRSZXNwb25zZSk7CiAgICAgcGx1Z2luVmlldygpLT5mcmFtZSgp
LT5kb2N1bWVudCgpLT5sb2FkZXIoKS0+YWRkQXJjaGl2ZVJlc291cmNlKHJlc291cmNlLnJlbGVh
c2UoKSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>