<?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>89642</bug_id>
          
          <creation_ts>2012-06-21 01:12:00 -0700</creation_ts>
          <short_desc>Web Inspector: Add requestFileContent command and fileContentReceived event</short_desc>
          <delta_ts>2012-07-02 07:12:27 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>73301</dependson>
    
    <dependson>89420</dependson>
          <blocked>68203</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Taiju Tsuiki">tzik</reporter>
          <assigned_to name="Taiju Tsuiki">tzik</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>654310</commentid>
    <comment_count>0</comment_count>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-21 01:12:00 -0700</bug_when>
    <thetext>Preparing for adding FileContentView to Inspector, I&apos;d like to add a command to read file content.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654312</commentid>
    <comment_count>1</comment_count>
      <attachid>148744</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-21 01:15:44 -0700</bug_when>
    <thetext>Created attachment 148744
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656365</commentid>
    <comment_count>2</comment_count>
      <attachid>149234</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-24 20:50:27 -0700</bug_when>
    <thetext>Created attachment 149234
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659683</commentid>
    <comment_count>3</comment_count>
      <attachid>149234</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-06-28 12:19:17 -0700</bug_when>
    <thetext>Comment on attachment 149234
Patch

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

Could you please share your plans on using the data loaded as a dataURL on front-end?
Why do think dataURL is the best format for passing it to front-end?

We already have some methods for loading content (including base64 encoded) in InspectorPageAgent. Can we reuse something to make code simpler?

&gt; Source/WebCore/inspector/Inspector.json:1479
&gt; +                    { &quot;name&quot;: &quot;end&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;description&quot;: &quot;Index of the next of last byte to read.&quot; }

next of last?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660232</commentid>
    <comment_count>4</comment_count>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-29 00:38:43 -0700</bug_when>
    <thetext>I (In reply to comment #3)
&gt; (From update of attachment 149234 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=149234&amp;action=review
&gt; 
&gt; Could you please share your plans on using the data loaded as a dataURL on front-end?
&gt; Why do think dataURL is the best format for passing it to front-end?
&gt; 
&gt; We already have some methods for loading content (including base64 encoded) in InspectorPageAgent. Can we reuse something to make code simpler?
&gt; 

OK.
I&apos;d like to preview text files, images and fonts on Inspector, like other resources in initial version.
And also as a next step, I want to add &quot;save as&quot;. Considering remote debugging, we need to store whole file content in front-end to implement it, because filesystem: URL is available only on back-end.
I&apos;ll use sliced retrieving to avoid blocking channel to backend.

I don&apos;t have strong opinion for what format we should use. It&apos;s OK for me to use base64.
# Of course, it&apos;s best to use binary format if we could.
Data URL was from a old code when I tried to read it with XHR in earlier version, which not allowed in WebKit.

InspectorPageAgent::getResourceContent() looks nice, but it can load only a resource on the frame, can&apos;t it?
For my use, I need to load other resources, not already loaded nor on cache.

&gt; &gt; Source/WebCore/inspector/Inspector.json:1479
&gt; &gt; +                    { &quot;name&quot;: &quot;end&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;description&quot;: &quot;Index of the next of last byte to read.&quot; }
&gt; 
&gt; next of last?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660233</commentid>
    <comment_count>5</comment_count>
      <attachid>149234</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-29 00:39:13 -0700</bug_when>
    <thetext>Comment on attachment 149234
Patch

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

&gt;&gt; Source/WebCore/inspector/Inspector.json:1479
&gt;&gt; +                    { &quot;name&quot;: &quot;end&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;description&quot;: &quot;Index of the next of last byte to read.&quot; }
&gt; 
&gt; next of last?

I mean, the range to read does not include end&apos;th byte, as {String,Array,Blob}.slice do.
I&apos;ll replace it with &quot;Specifies the end of range to read exclusively.&quot; in next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661269</commentid>
    <comment_count>6</comment_count>
      <attachid>150361</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-07-01 23:19:03 -0700</bug_when>
    <thetext>Created attachment 150361
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661400</commentid>
    <comment_count>7</comment_count>
      <attachid>150361</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-07-02 04:56:57 -0700</bug_when>
    <thetext>Comment on attachment 150361
Patch

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

&gt; Source/WebCore/inspector/InspectorFileSystemAgent.cpp:528
&gt; +    String encodedResult = base64Encode(static_cast&lt;char*&gt;(result-&gt;data()), result-&gt;byteLength());

I think we will need to use FileReader::getAsText to deal with text files encodings at some point, but we can add it later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661468</commentid>
    <comment_count>8</comment_count>
      <attachid>150361</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-02 07:12:22 -0700</bug_when>
    <thetext>Comment on attachment 150361
Patch

Clearing flags on attachment: 150361

Committed r121676: &lt;http://trac.webkit.org/changeset/121676&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661469</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-02 07:12:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148744</attachid>
            <date>2012-06-21 01:15:44 -0700</date>
            <delta_ts>2012-06-24 20:50:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89642-20120621171544.patch</filename>
            <type>text/plain</type>
            <size>18269</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwOTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzdmN2I4YTk1NWUwODE1
MmE2OGMzNDI2MjBkYTgxZjg5NjY2MGQzMC4uODgyM2U2NGJmZWVjODdhNWFlNzI2ODU4MmViOTJi
NmI1YTJkZTM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMzIEBACiAyMDEyLTA2LTIxICBUYWlq
dSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KIAorICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgcmVxdWVzdEZpbGVDb250ZW50IGNvbW1hbmQgYW5kIGZpbGVDb250ZW50UmVjZWl2ZWQgZXZl
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NjQy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDog
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZWFkLWZpbGUuaHRtbAorCisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JGaWxlU3lzdGVtQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlcXVlc3RGaWxlQ29udGVudCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oOgorICAgICAgICAoSW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0Zp
bGVTeXN0ZW1Nb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwu
cHJvdG90eXBlLnJlcXVlc3RNZXRhZGF0YSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbU1vZGVsLnByb3RvdHlwZS5yZXF1ZXN0RmlsZUNvbnRlbnQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlLnByb3RvdHlwZS5nZXQgcmVzb3VyY2VUeXBlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZS5wcm90b3R5cGUucmVx
dWVzdEZpbGVDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVz
dE1hbmFnZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdl
ci5wcm90b3R5cGUuX21ldGFkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUucmVxdWVzdEZpbGVDb250ZW50LnJlcXVl
c3RBY2NlcHRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5h
Z2VyLnByb3RvdHlwZS5yZXF1ZXN0RmlsZUNvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUuX2ZpbGVDb250ZW50UmVjZWl2ZWQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1EaXNwYXRjaGVyLnByb3RvdHlwZS5t
ZXRhZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlzcGF0
Y2hlci5wcm90b3R5cGUuZmlsZUNvbnRlbnRSZWNlaXZlZCk6CisKKzIwMTItMDYtMjEgIFRhaWp1
IFRzdWlraSAgPHR6aWtAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1v
dmUgcmVxdWVzdElkIGFsbG9jYXRpb24gZnJvbSBGaWxlU3lzdGVtIGZyb250ZW5kIHRvIGJhY2tl
bmQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NTU1
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCBmYTIyNzgzNWRj
NWZkZTBmNDI4Nzg3MDU4MmYwZDBlNzQyZTMyM2M5Li5mOTQ0YTBhM2FmOWM5YjIxZTEwZDk1YmU0
ZWEyNTlhOTQxZDlhOGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29u
CkBAIC0xNDcwLDYgKzE0NzAsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJy
ZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdCBp
ZGVudGlmaWVyLiBDb3JyZXNwb25kaW5nIG1ldGFkYXRhUmVjZWl2ZWQgZXZlbnQgc2hvdWxkIGhh
dmUgc2FtZSByZXF1ZXN0SWQgd2l0aCB0aGlzLiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAg
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMgbWV0YWRhdGEgb2YgdGhlIGVudHJ5
IGFzIG1ldGFkYXRhUmVjZWl2ZWQgZXZlbnQuIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJyZXF1ZXN0RmlsZUNvbnRlbnQiLAorICAgICAg
ICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InVybCIsICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJzdGFydCIsICJ0eXBlIjogImludGVnZXIiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiZW5kIiwgInR5cGUiOiAiaW50ZWdlciIgfQorICAgICAgICAgICAgICAgIF0sCisgICAg
ICAgICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
cmVxdWVzdElkIiwgIiRyZWYiOiAiUmVxdWVzdElkIn0KKyAgICAgICAgICAgICAgICBdCiAgICAg
ICAgICAgICB9CiAgICAgICAgIF0sCiAgICAgICAgICJldmVudHMiOiBbCkBAIC0xNDk5LDYgKzE1
MTAsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJtZXRhZGF0YSIsICIkcmVm
IjogIkZpbGVTeXN0ZW0uTWV0YWRhdGEiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24i
OiAiQ29udGFpbnMgbWV0YWRhdGEgb2YgdGhlIGVudHJ5IGlmIHRoZSBjb21tYW5kIGNvbXBsZXRl
ZCBzdWNjZXNzZnVsbHkuIiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiQ29tcGxldGlvbiBldmVudCBvZiBnZXRNZXRhZGF0YSBjb21tYW5kLiIK
KyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAi
ZmlsZUNvbnRlbnRSZWNlaXZlZCIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgInR5cGUiOiAiaW50ZWdl
ciIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlcnJvckNvZGUiLCAidHlwZSI6
ICJpbnRlZ2VyIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRhdGFVUkwiLCAi
dHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlIH0KKyAgICAgICAgICAgICAgICBdCiAg
ICAgICAgICAgICB9CiAgICAgICAgIF0KICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcAppbmRleCBmNzQ4MjRkMDVk
NGVjYmJmNWFjMjdjNGVhODQ0ZmQ0MDk3NGMxNzQ5Li41MjljNDRiYjE3NGU3ZmFhNTg4MWYyMmVk
NmMzM2JhMTQzOWZjMDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcApAQCAtMzksMTAgKzM5LDE0IEBACiAjaW5jbHVk
ZSAiRGlyZWN0b3J5UmVhZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJF
bnRyaWVzQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJFbnRyeS5oIgogI2luY2x1ZGUgIkVudHJ5QXJy
YXkuaCIKICNpbmNsdWRlICJFbnRyeUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRXJyb3JDYWxsYmFj
ay5oIgorI2luY2x1ZGUgIkZpbGVDYWxsYmFjay5oIgorI2luY2x1ZGUgIkZpbGVFbnRyeS5oIgog
I2luY2x1ZGUgIkZpbGVFcnJvci5oIgorI2luY2x1ZGUgIkZpbGVSZWFkZXIuaCIKICNpbmNsdWRl
ICJGaWxlU3lzdGVtQ2FsbGJhY2suaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2tzLmgi
CiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTU0LDYgKzU4LDcgQEAKICNpbmNsdWRlICJNSU1FVHlw
ZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTWV0YWRhdGEuaCIKICNpbmNsdWRlICJNZXRhZGF0YUNh
bGxiYWNrLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luLmgiCiAKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJheTsK
QEAgLTEyMiw2ICsxMjcsMzUgQEAgcHJpdmF0ZToKICAgICBIYW5kbGluZ01ldGhvZCBtX2hhbmRs
aW5nTWV0aG9kOwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgSGFuZGxlcj4KK2NsYXNzIEV2ZW50
RGlzcGF0Y2hlciA6IHB1YmxpYyBFdmVudExpc3RlbmVyIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IHZvaWQgKEhhbmRsZXI6OipIYW5kbGluZ01ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IEV2ZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RXZlbnREaXNwYXRjaGVyPiBjcmVhdGUo
UGFzc1JlZlB0cjxIYW5kbGVyPiBoYW5kbGVyLCBIYW5kbGluZ01ldGhvZCBoYW5kbGluZ01ldGhv
ZCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXZlbnREaXNwYXRjaGVyKGhh
bmRsZXIsIGhhbmRsaW5nTWV0aG9kKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGhhbmRs
ZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEV2
ZW50KiBldmVudCkKKyAgICB7CisgICAgICAgIChtX2hhbmRsZXIuZ2V0KCktPiptX2hhbmRsaW5n
TWV0aG9kKShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBldmVudCk7CisgICAgfQorCisgICAgdmly
dHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgZXZlbnRMaXN0ZW5lcikg
T1ZFUlJJREUKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzID09ICZldmVudExpc3RlbmVyOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBFdmVudERpc3BhdGNoZXIoUGFzc1JlZlB0cjxIYW5kbGVy
PiBoYW5kbGVyLCBIYW5kbGluZ01ldGhvZCBoYW5kbGluZ01ldGhvZCkKKyAgICAgICAgOiBFdmVu
dExpc3RlbmVyKEV2ZW50TGlzdGVuZXI6OkNQUEV2ZW50TGlzdGVuZXJUeXBlKQorICAgICAgICAs
IG1faGFuZGxlcihoYW5kbGVyKQorICAgICAgICAsIG1faGFuZGxpbmdNZXRob2QoaGFuZGxpbmdN
ZXRob2QpIHsgfQorCisgICAgUmVmUHRyPEhhbmRsZXI+IG1faGFuZGxlcjsKKyAgICBIYW5kbGlu
Z01ldGhvZCBtX2hhbmRsaW5nTWV0aG9kOworfTsKKwogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVj
dCBUeXBlUGFyYW0geyB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCYXNlQ2FsbGJhY2ssIHR5cGVu
YW1lIEhhbmRsZXIsIHR5cGVuYW1lIFJlc3VsdCwgdHlwZW5hbWUgQXJndW1lbnQ+CkBAIC0xMzAs
NiArMTY0LDEyIEBAIFBhc3NSZWZQdHI8QmFzZUNhbGxiYWNrPiBjcmVhdGVDYWxsYmFja0Rpc3Bh
dGNoZXIoVHlwZVBhcmFtPEJhc2VDYWxsYmFjaz4sIEhhbmRsCiAgICAgcmV0dXJuIENhbGxiYWNr
RGlzcGF0Y2hlcjxCYXNlQ2FsbGJhY2ssIEhhbmRsZXIsIFJlc3VsdCwgQXJndW1lbnQ+OjpjcmVh
dGUoaGFuZGxlciwgaGFuZGxpbmdNZXRob2QpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBIYW5k
bGVyPgorUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBjcmVhdGVFdmVudERpc3BhdGNoZXIoSGFu
ZGxlciogaGFuZGxlciwgdm9pZCAoSGFuZGxlcjo6KmhhbmRsaW5nTWV0aG9kKShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgRXZlbnQqKSkKK3sKKyAgICByZXR1cm4gRXZlbnREaXNwYXRjaGVyPEhh
bmRsZXI+OjpjcmVhdGUoaGFuZGxlciwgaGFuZGxpbmdNZXRob2QpOworfQorCiBjbGFzcyBHZXRG
aWxlU3lzdGVtUm9vdFRhc2sgOiBwdWJsaWMgUmVmQ291bnRlZDxHZXRGaWxlU3lzdGVtUm9vdFRh
c2s+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHZXRGaWxlU3lzdGVtUm9vdFRhc2spOwog
cHVibGljOgpAQCAtMzk4LDYgKzQzOCwxMjAgQEAgYm9vbCBHZXRNZXRhZGF0YVRhc2s6OmRpZEdl
dE1ldGFkYXRhKE1ldGFkYXRhKiBtZXRhZGF0YSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorY2xh
c3MgUmVhZEZpbGVUYXNrIDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZEZpbGVUYXNrPiB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoUmVhZEZpbGVUYXNrKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxSZWFkRmlsZVRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPEZyb250ZW5kUHJvdmlk
ZXI+IGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgdXJsLCBp
bnQgc3RhcnQsIGludCBlbmQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJl
YWRGaWxlVGFzayhmcm9udGVuZFByb3ZpZGVyLCByZXF1ZXN0SWQsIHVybCwgc3RhcnQsIGVuZCkp
OworICAgIH0KKworICAgIHZpcnR1YWwgflJlYWRGaWxlVGFzaygpCisgICAgeworICAgICAgICBy
ZXBvcnRSZXN1bHQoRmlsZUVycm9yOjpBQk9SVF9FUlIsIDApOworICAgIH0KKworICAgIHZvaWQg
c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworCitwcml2YXRlOgorICAgIGJvb2wgZGlk
SGl0RXJyb3IoRmlsZUVycm9yKiBlcnJvcikKKyAgICB7CisgICAgICAgIHJlcG9ydFJlc3VsdChl
cnJvci0+Y29kZSgpLCAwKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgdm9p
ZCBkaWRIaXRFcnJvckV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCopCisgICAg
eworICAgICAgICBpZiAobV9yZWFkZXIpCisgICAgICAgICAgICByZXBvcnRSZXN1bHQobV9yZWFk
ZXItPmVycm9yKCktPmNvZGUoKSwgMCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlcG9y
dFJlc3VsdChGaWxlRXJyb3I6OklOVkFMSURfU1RBVEVfRVJSLCAwKTsKKyAgICB9CisKKyAgICBi
b29sIGRpZEdldEVudHJ5KEVudHJ5Kik7CisgICAgYm9vbCBkaWRHZXRGaWxlKEZpbGUqKTsKKyAg
ICB2b2lkIGRpZFJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50Kik7CisKKyAgICB2
b2lkIHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6OkVycm9yQ29kZSBlcnJvckNvZGUsIGNvbnN0IFN0
cmluZyogZGF0YVVSTCkKKyAgICB7CisgICAgICAgIGlmICghbV9mcm9udGVuZFByb3ZpZGVyIHx8
ICFtX2Zyb250ZW5kUHJvdmlkZXItPmZyb250ZW5kKCkpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIG1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKS0+ZmlsZUNvbnRlbnRSZWNlaXZl
ZChtX3JlcXVlc3RJZCwgc3RhdGljX2Nhc3Q8aW50PihlcnJvckNvZGUpLCBkYXRhVVJMKTsKKyAg
ICAgICAgbV9mcm9udGVuZFByb3ZpZGVyID0gMDsKKyAgICB9CisKKyAgICBSZWFkRmlsZVRhc2so
UGFzc1JlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVz
dElkLCBjb25zdCBTdHJpbmcmIHVybCwgaW50IHN0YXJ0LCBpbnQgZW5kKQorICAgICAgICA6IG1f
ZnJvbnRlbmRQcm92aWRlcihmcm9udGVuZFByb3ZpZGVyKQorICAgICAgICAsIG1fcmVxdWVzdElk
KHJlcXVlc3RJZCkKKyAgICAgICAgLCBtX3VybChQYXJzZWRVUkxTdHJpbmcsIHVybCkKKyAgICAg
ICAgLCBtX3N0YXJ0KHN0YXJ0KQorICAgICAgICAsIG1fZW5kKGVuZCkKKyAgICAgICAgLCBtX2N1
cnJlbnQoc3RhcnQpIHsgfQorCisgICAgUmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+IG1fZnJvbnRl
bmRQcm92aWRlcjsKKyAgICBpbnQgbV9yZXF1ZXN0SWQ7CisgICAgS1VSTCBtX3VybDsKKyAgICBp
bnQgbV9zdGFydDsKKyAgICBpbnQgbV9lbmQ7CisgICAgaW50IG1fY3VycmVudDsKKworICAgIFJl
ZlB0cjxGaWxlUmVhZGVyPiBtX3JlYWRlcjsKK307CisKK3ZvaWQgUmVhZEZpbGVUYXNrOjpzdGFy
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQoreworICAg
IEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKworICAgIEZpbGVTeXN0ZW1UeXBlIHR5
cGU7CisgICAgU3RyaW5nIHBhdGg7CisgICAgaWYgKCFET01GaWxlU3lzdGVtQmFzZTo6Y3JhY2tG
aWxlU3lzdGVtVVJMKG1fdXJsLCB0eXBlLCBwYXRoKSkgeworICAgICAgICByZXBvcnRSZXN1bHQo
RmlsZUVycm9yOjpTWU5UQVhfRVJSLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IFJlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSBjcmVhdGVDYWxsYmFja0Rp
c3BhdGNoZXIoVHlwZVBhcmFtPEVudHJ5Q2FsbGJhY2s+KCksIHRoaXMsICZSZWFkRmlsZVRhc2s6
OmRpZEdldEVudHJ5KTsKKyAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9
IGNyZWF0ZUNhbGxiYWNrRGlzcGF0Y2hlcihUeXBlUGFyYW08RXJyb3JDYWxsYmFjaz4oKSwgdGhp
cywgJlJlYWRGaWxlVGFzazo6ZGlkSGl0RXJyb3IpOworICAgIE93blB0cjxSZXNvbHZlVVJJQ2Fs
bGJhY2tzPiBmaWxlU3lzdGVtQ2FsbGJhY2tzID0gUmVzb2x2ZVVSSUNhbGxiYWNrczo6Y3JlYXRl
KHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
dHlwZSwgcGF0aCk7CisKKyAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpLnJl
YWRGaWxlU3lzdGVtKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHR5cGUsIGZpbGVTeXN0ZW1DYWxs
YmFja3MucmVsZWFzZSgpKTt9CisKK2Jvb2wgUmVhZEZpbGVUYXNrOjpkaWRHZXRFbnRyeShFbnRy
eSogZW50cnkpCit7CisgICAgaWYgKGVudHJ5LT5pc0RpcmVjdG9yeSgpKSB7CisgICAgICAgIHJl
cG9ydFJlc3VsdChGaWxlRXJyb3I6OlRZUEVfTUlTTUFUQ0hfRVJSLCAwKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKCFlbnRyeS0+ZmlsZXN5c3RlbSgpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpIHsKKyAgICAgICAgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6QUJP
UlRfRVJSLCAwKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgUmVmUHRyPEZp
bGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gY3JlYXRlQ2FsbGJhY2tEaXNwYXRjaGVyKFR5
cGVQYXJhbTxGaWxlQ2FsbGJhY2s+KCksIHRoaXMsICZSZWFkRmlsZVRhc2s6OmRpZEdldEZpbGUp
OworICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gY3JlYXRlQ2FsbGJh
Y2tEaXNwYXRjaGVyKFR5cGVQYXJhbTxFcnJvckNhbGxiYWNrPigpLCB0aGlzLCAmUmVhZEZpbGVU
YXNrOjpkaWRIaXRFcnJvcik7CisgICAgc3RhdGljX2Nhc3Q8RmlsZUVudHJ5Kj4oZW50cnkpLT5m
aWxlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7CisKKyAgICBtX3JlYWRlciA9IEZp
bGVSZWFkZXI6OmNyZWF0ZShlbnRyeS0+ZmlsZXN5c3RlbSgpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFJlYWRGaWxlVGFzazo6ZGlkR2V0
RmlsZShGaWxlKiBmaWxlKQoreworICAgIFJlZlB0cjxCbG9iPiBibG9iID0gZmlsZS0+c2xpY2Uo
bV9zdGFydCwgbV9lbmQpOworICAgIG1fcmVhZGVyLT5zZXRPbmxvYWQoY3JlYXRlRXZlbnREaXNw
YXRjaGVyKHRoaXMsICZSZWFkRmlsZVRhc2s6OmRpZFJlYWQpKTsKKyAgICBtX3JlYWRlci0+c2V0
T25lcnJvcihjcmVhdGVFdmVudERpc3BhdGNoZXIodGhpcywgJlJlYWRGaWxlVGFzazo6ZGlkSGl0
RXJyb3JFdmVudCkpOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgbV9yZWFkZXIt
PnJlYWRBc0RhdGFVUkwoYmxvYi5nZXQoKSwgZWMpOworICAgIHJldHVybiB0cnVlOworfQorCit2
b2lkIFJlYWRGaWxlVGFzazo6ZGlkUmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQq
KQoreworICAgIFN0cmluZyByZXN1bHQgPSBtX3JlYWRlci0+c3RyaW5nUmVzdWx0KCk7CisgICAg
cmVwb3J0UmVzdWx0KHN0YXRpY19jYXN0PEZpbGVFcnJvcjo6RXJyb3JDb2RlPigwKSwgJnJlc3Vs
dCk7Cit9CisKIH0KIAogLy8gc3RhdGljCkBAIC00NzAsNiArNjI0LDIwIEBAIHZvaWQgSW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50OjpyZXF1ZXN0TWV0YWRhdGEoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIHVybCwKICAgICAgICAgbV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpLT5tZXRh
ZGF0YVJlY2VpdmVkKCpyZXF1ZXN0SWQsIHN0YXRpY19jYXN0PGludD4oRmlsZUVycm9yOjpBQk9S
VF9FUlIpLCAwKTsKIH0KIAordm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlcXVlc3RG
aWxlQ29udGVudChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgc3RhcnQsIGlu
dCBlbmQsIGludCogcmVxdWVzdElkKQoreworICAgIGlmICghbV9lbmFibGVkIHx8ICFtX2Zyb250
ZW5kUHJvdmlkZXIpCisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQobV9mcm9udGVuZFByb3Zp
ZGVyLT5mcm9udGVuZCgpKTsKKworICAgICpyZXF1ZXN0SWQgPSBtX25leHRSZXF1ZXN0SWQrKzsK
KworICAgIGlmIChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZvck9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
RnJvbVN0cmluZyh1cmwpLmdldCgpKSkKKyAgICAgICAgUmVhZEZpbGVUYXNrOjpjcmVhdGUobV9m
cm9udGVuZFByb3ZpZGVyLCAqcmVxdWVzdElkLCB1cmwsIHN0YXJ0LCBlbmQpLT5zdGFydChzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBlbHNlCisgICAgICAgIG1fZnJvbnRlbmRQcm92aWRl
ci0+ZnJvbnRlbmQoKS0+ZmlsZUNvbnRlbnRSZWNlaXZlZCgqcmVxdWVzdElkLCBzdGF0aWNfY2Fz
dDxpbnQ+KEZpbGVFcnJvcjo6QUJPUlRfRVJSKSwgMCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yRmls
ZVN5c3RlbUFnZW50OjpzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiB7
CiAgICAgQVNTRVJUKGZyb250ZW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaAppbmRleCA4MmY5NWM0YjZmZThmZDMxYjg3OTIx
YjUzN2ZjNzNmMGU3YTVjYzcwLi4zZmQ0NWI2ODY3ZjhiNmZmZWFhNDllYjY3ZWNhNWQ1NDNlZjJj
NTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVT
eXN0ZW1BZ2VudC5oCkBAIC02Miw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
cmVxdWVzdEZpbGVTeXN0ZW1Sb290KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvcmlnaW4s
IGNvbnN0IFN0cmluZyYgdHlwZSwgaW50KiByZXF1ZXN0SWQpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0RGlyZWN0b3J5Q29udGVudChFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgdXJsLCBpbnQqIHJlcXVlc3RJZCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVl
c3RNZXRhZGF0YShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQqIHJlcXVlc3RJ
ZCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RGaWxlQ29udGVudChFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgc3RhcnQsIGludCBlbmQsIGludCogcmVxdWVz
dElkKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9udGVuZChJbnNwZWN0b3JG
cm9udGVuZCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyb250ZW5kKCkgT1ZF
UlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Zp
bGVTeXN0ZW1Nb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmls
ZVN5c3RlbU1vZGVsLmpzCmluZGV4IDE2NDM1NzliNjkwZmUyMTMxZDY3YjMzYmQ3Nzg1N2Y5YTVi
MTdmZTUuLmUzYjQ5MTk1OTY5YTZjZmU3ZjAzMzM5Mzg5YmZjMjg5M2I2N2EwZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVs
LmpzCkBAIC0yNDAsNiArMjQwLDExIEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJv
dG90eXBlID0gewogICAgIHJlcXVlc3RNZXRhZGF0YTogZnVuY3Rpb24oZW50cnksIGNhbGxiYWNr
KQogICAgIHsKICAgICAgICAgdGhpcy5fYWdlbnRXcmFwcGVyLnJlcXVlc3RNZXRhZGF0YShlbnRy
eS51cmwsIGNhbGxiYWNrKTsKKyAgICB9LAorCisgICAgcmVxdWVzdEZpbGVDb250ZW50OiBmdW5j
dGlvbihmaWxlLCBzdGFydCwgZW5kLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHRoaXMuX2Fn
ZW50V3JhcHBlci5yZXF1ZXN0RmlsZUNvbnRlbnQoZmlsZS51cmwsIHN0YXJ0LCBlbmQsIGNhbGxi
YWNrKTsKICAgICB9CiB9CiAKQEAgLTM2NSw3ICszNzAsMTIgQEAgV2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1Nb2RlbC5GaWxlID0gZnVuY3Rpb24oZmlsZVN5c3RlbU1vZGVsLCBmaWxlU3lzdGVtLCBi
YWNrZW4KIAogV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlLnByb3RvdHlwZSA9IHsK
ICAgICBnZXQgbWltZVR5cGUoKSB7IHJldHVybiB0aGlzLl9taW1lVHlwZTsgfSwKLSAgICBnZXQg
cmVzb3VyY2VUeXBlKCkgeyByZXR1cm4gdGhpcy5fcmVzb3VyY2VUeXBlOyB9CisgICAgZ2V0IHJl
c291cmNlVHlwZSgpIHsgcmV0dXJuIHRoaXMuX3Jlc291cmNlVHlwZTsgfSwKKworICAgIHJlcXVl
c3RGaWxlQ29udGVudDogZnVuY3Rpb24oc3RhcnQsIGVuZCwgY2FsbGJhY2spCisgICAgeworICAg
ICAgICB0aGlzLmZpbGVTeXN0ZW1Nb2RlbC5yZXF1ZXN0RmlsZUNvbnRlbnQodGhpcywgc3RhcnQs
IGVuZCwgY2FsbGJhY2spOworICAgIH0KIH0KIAogV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2Rl
bC5GaWxlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVs
LkVudHJ5LnByb3RvdHlwZTsKQEAgLTM3OCw2ICszODgsNyBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbVJlcXVlc3RNYW5hZ2VyID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX3BlbmRpbmdGaWxlU3lz
dGVtUm9vdFJlcXVlc3RzID0ge307CiAgICAgdGhpcy5fcGVuZGluZ0RpcmVjdG9yeUNvbnRlbnRS
ZXF1ZXN0cyA9IHt9OwogICAgIHRoaXMuX3BlbmRpbmdNZXRhZGF0YVJlcXVlc3RzID0ge307Cisg
ICAgdGhpcy5fcGVuZGluZ0ZpbGVDb250ZW50UmVxdWVzdHMgPSB7fTsKIAogICAgIEluc3BlY3Rv
ckJhY2tlbmQucmVnaXN0ZXJGaWxlU3lzdGVtRGlzcGF0Y2hlcihuZXcgV2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1EaXNwYXRjaGVyKHRoaXMpKTsKICAgICBGaWxlU3lzdGVtQWdlbnQuZW5hYmxlKCk7
CkBAIC00NjgsNiArNDc5LDM4IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVzdE1hbmFn
ZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBkZWxldGUgdGhp
cy5fcGVuZGluZ01ldGFkYXRhUmVxdWVzdHNbcmVxdWVzdElkXTsKICAgICAgICAgY2FsbGJhY2so
ZXJyb3JDb2RlLCBtZXRhZGF0YSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
c3RyaW5nfSB1cmwKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnQKKyAgICAgKiBAcGFyYW0g
e251bWJlcn0gZW5kCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihudW1iZXIsIHN0cmluZyl9IGNh
bGxiYWNrCisgICAgICovCisgICAgcmVxdWVzdEZpbGVDb250ZW50OiBmdW5jdGlvbih1cmwsIHN0
YXJ0LCBlbmQsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdmFyIHN0b3JlID0gdGhpcy5fcGVu
ZGluZ0ZpbGVDb250ZW50UmVxdWVzdHM7CisgICAgICAgIEZpbGVTeXN0ZW1BZ2VudC5yZXF1ZXN0
RmlsZUNvbnRlbnQodXJsLCBzdGFydCwgZW5kLCByZXF1ZXN0QWNjZXB0ZWQpOworCisgICAgICAg
IGZ1bmN0aW9uIHJlcXVlc3RBY2NlcHRlZChlcnJvciwgcmVxdWVzdElkKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoIWVycm9yKQorICAgICAgICAgICAgICAgIHN0b3JlW3JlcXVlc3RJZF0g
PSBjYWxsYmFjazsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e251bWJlcn0gcmVxdWVzdElkCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGVycm9yQ29kZQorICAg
ICAqIEBwYXJhbSB7c3RyaW5nPX0gZGF0YVVSTAorICAgICAqLworICAgIF9maWxlQ29udGVudFJl
Y2VpdmVkOiBmdW5jdGlvbihyZXF1ZXN0SWQsIGVycm9yQ29kZSwgZGF0YVVSTCkKKyAgICB7Cisg
ICAgICAgIHZhciBjYWxsYmFjayA9IC8qKiBAdHlwZSB7ZnVuY3Rpb24obnVtYmVyLCBzdHJpbmc9
KX0gKi8gdGhpcy5fcGVuZGluZ0ZpbGVDb250ZW50UmVxdWVzdHNbcmVxdWVzdElkXTsKKyAgICAg
ICAgaWYgKCFjYWxsYmFjaykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZGVsZXRlIHRo
aXMuX3BlbmRpbmdGaWxlQ29udGVudFJlcXVlc3RzW3JlcXVlc3RJZF07CisgICAgICAgIGNhbGxi
YWNrKGVycm9yQ29kZSwgZGF0YVVSTCk7CiAgICAgfQogfQogCkBAIC01MTAsNSArNTUzLDE1IEBA
IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7CiAgICAgbWV0
YWRhdGFSZWNlaXZlZDogZnVuY3Rpb24ocmVxdWVzdElkLCBlcnJvckNvZGUsIG1ldGFkYXRhKQog
ICAgIHsKICAgICAgICAgdGhpcy5fYWdlbnRXcmFwcGVyLl9tZXRhZGF0YVJlY2VpdmVkKHJlcXVl
c3RJZCwgZXJyb3JDb2RlLCBtZXRhZGF0YSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSByZXF1ZXN0SWQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZXJyb3JDb2Rl
CisgICAgICogQHBhcmFtIHtzdHJpbmc9fSBkYXRhVVJMCisgICAgICovCisgICAgZmlsZUNvbnRl
bnRSZWNlaXZlZDogZnVuY3Rpb24ocmVxdWVzdElkLCBlcnJvckNvZGUsIGRhdGFVUkwpCisgICAg
eworICAgICAgICB0aGlzLl9hZ2VudFdyYXBwZXIuX2ZpbGVDb250ZW50UmVjZWl2ZWQocmVxdWVz
dElkLCBlcnJvckNvZGUsIGRhdGFVUkwpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4OTUzMDM1MTM3ODk0
MDBiZWVjZTMyOTJkMTdmN2UzMGQ2NzAwOTQ2Li42OWY5NWY1MmZiZDVmZjI3NTMyZTk5YzViNDE5
YjdlZDI4NTk3NmYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTUgQEAKIDIwMTItMDYtMjEgIFRhaWp1IFRz
dWlraSAgPHR6aWtAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBy
ZXF1ZXN0RmlsZUNvbnRlbnQgY29tbWFuZCBhbmQgZmlsZUNvbnRlbnRSZWNlaXZlZCBldmVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk2NDIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVz
dHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVhZC1maWxlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZWFkLWZpbGUuaHRtbDog
QWRkZWQuCisKKzIwMTItMDYtMjEgIFRhaWp1IFRzdWlraSAgPHR6aWtAY2hyb21pdW0ub3JnPgor
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBnZXRNZXRhZGF0YSBjb21tYW5kIGFuZCBnb3RN
ZXRhZGF0YSBldmVudCB0byBGaWxlU3lzdGVtCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04Nzg1NgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlYWQtZmlsZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlYWQtZmlsZS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjA2NDUzZjc4OTFhNzkwY2RkMTBjOWVlMWYwOTg0MDdlZTQ1ZmI2
NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2Zp
bGVzeXN0ZW0vcmVhZC1maWxlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1Rlc3RzIHJl
YWRGaWxlLgorCitlcnJvckNvZGUgPSAwCitkYXRhVVJMID0gZGF0YTo7YmFzZTY0LGVXOD0KKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9y
ZWFkLWZpbGUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0
ZW0vcmVhZC1maWxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWVmZjhkNGRiZjY0MTMyNzBjNWU4NDA0YWQ5
Y2MyZTU5N2JiY2JhNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVhZC1maWxlLmh0bWwKQEAgLTAsMCArMSw0NCBAQAorPCFE
T0NUWVBFIGh0bWw+PG1ldGEgY2hhcnNldD0iVVRGLTgiPgorPHNjcmlwdCBzcmM9Ii4uL2luc3Bl
Y3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJmaWxlc3lzdGVtLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD4KK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRl
bnRMb2FkZWQiLCBydW5UZXN0KTsKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciByZXF1ZXN0
TWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyKCk7Cisg
ICAgSW5zcGVjdG9yVGVzdC5jbGVhckZpbGVTeXN0ZW0oc3RlcDEpOworCisgICAgZnVuY3Rpb24g
c3RlcDEoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVEaXJlY3RvcnkoIi9o
b2dlIiwgc3RlcDIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICB7CisgICAg
ICAgIEluc3BlY3RvclRlc3Qud3JpdGVGaWxlKCIvaG9nZS9mdWdhIiwgInBpeW8iLCBzdGVwMyk7
CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDMoKQorICAgIHsKKyAgICAgICAgcmVxdWVzdE1h
bmFnZXIucmVxdWVzdEZpbGVDb250ZW50KCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC90ZW1wb3JhcnkvaG9nZS9mdWdhIiwgMiwgNCwgc3RlcDQpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHN0ZXA0KGVycm9yQ29kZSwgZGF0YVVSTCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCJlcnJvckNvZGUgPSAiICsgZXJyb3JDb2RlKTsKKyAgICAgICAgaWYgKGRh
dGFVUkwpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZGF0YVVSTCA9ICIg
KyBkYXRhVVJMKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoImRhdGFVUkwgPSAobnVsbCkiKTsKKworICAgICAgICBJbnNwZWN0b3JUZXN0LmNsZWFy
RmlsZVN5c3RlbShzdGVwNSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDUoKQorICAgIHsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICB9Cit9CisKKzwvc2Ny
aXB0PgorPHA+VGVzdHMgcmVhZEZpbGUuPC9wPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149234</attachid>
            <date>2012-06-24 20:50:27 -0700</date>
            <delta_ts>2012-07-01 23:18:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89642-20120625125026.patch</filename>
            <type>text/plain</type>
            <size>18081</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDk2MWMxY2ZjNDM3MWI3
N2Y5MTdmZDI4MWFiYzZjMGYzY2MyNzY3Yy4uM2YzN2I1ZWI2Yzk5MjMyMTgyZmJiNDU3NTk1YTFl
MWI0N2YwZDRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTA2LTI0ICBUYWlq
dSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgcmVxdWVzdEZpbGVDb250ZW50IGNvbW1hbmQgYW5kIGZpbGVDb250ZW50UmVjZWl2ZWQgZXZl
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NjQy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDog
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZWFkLWZpbGUuaHRtbAorCisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JGaWxlU3lzdGVtQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlcXVlc3RGaWxlQ29udGVudCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oOgorICAgICAgICAoSW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0Zp
bGVTeXN0ZW1Nb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwu
cHJvdG90eXBlLnJlcXVlc3RNZXRhZGF0YSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbU1vZGVsLkZpbGUucHJvdG90eXBlLmdldCBtaW1lVHlwZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGUucHJvdG90eXBlLnJlcXVlc3RGaWxlQ29udGVudCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnByb3RvdHlw
ZS5yZXF1ZXN0TWV0YWRhdGEucmVxdWVzdEFjY2VwdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucHJvdG90eXBlLnJlcXVlc3RNZXRhZGF0YSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnByb3RvdHlwZS5f
bWV0YWRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVl
c3RNYW5hZ2VyLnByb3RvdHlwZS5yZXF1ZXN0RmlsZUNvbnRlbnQucmVxdWVzdEFjY2VwdGVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucHJvdG90eXBl
LnJlcXVlc3RGaWxlQ29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbURp
c3BhdGNoZXIucHJvdG90eXBlLmRpcmVjdG9yeUNvbnRlbnRSZWNlaXZlZCk6CisKIDIwMTItMDYt
MjQgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjExMDYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yLmpzb24KaW5kZXggMGY2NDQ4MzQ5MWUwYTAwNjdjNmY5OTE0NmUzODU1NmMxY2M2
ZmJmZi4uMjI5MDk4MDFiM2FhYzllMjZmMzEwODg2NTg1ZTAzNWIyYzhiZjU1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMTQ3MCw2ICsxNDcwLDE4IEBACiAg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAiUmVxdWVz
dElkIiwgImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgaWRlbnRpZmllci4gQ29ycmVzcG9uZGluZyBt
ZXRhZGF0YVJlY2VpdmVkIGV2ZW50IHNob3VsZCBoYXZlIHNhbWUgcmVxdWVzdElkIHdpdGggdGhp
cy4iIH0KICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJSZXR1cm5zIG1ldGFkYXRhIG9mIHRoZSBlbnRyeSBhcyBtZXRhZGF0YVJlY2VpdmVkIGV2ZW50
LiIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUi
OiAicmVxdWVzdEZpbGVDb250ZW50IiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsK
KyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1cmwiLCAidHlwZSI6ICJzdHJpbmciLCAi
ZGVzY3JpcHRpb24iOiAiVVJMIG9mIHRoZSBmaWxlIHRoYXQgdGhlIGZyb250ZW5kIGlzIHJlcXVl
c3RpbmcgdG8gcmVhZCBmcm9tLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJz
dGFydCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiSW5kZXggb2YgdGhlIGZp
cnN0IGJ5dGUgdG8gcmVhZC4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZW5k
IiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJJbmRleCBvZiB0aGUgbmV4dCBv
ZiBsYXN0IGJ5dGUgdG8gcmVhZC4iIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAg
ICAgICJyZXR1cm5zIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJ
ZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0IGlkZW50aWZp
ZXIuIENvcnJlc3BvbmRpbmcgZmlsZUNvbnRlbnRSZWNlaXZlZCBldmVudCBzaG91bGQgaGF2ZSBz
YW1lIHJlcXVlc3RJZCB3aXRoIHRoaXMuIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBjb250ZW50IG9mIHRoZSBmaWxlIGFzIGZp
bGVDb250ZW50UmVjZWl2ZWQgZXZlbnQuIFJlc3VsdCBzaG91bGQgYmUgc2xpY2VkIGludG8gW3N0
YXJ0LCBlbmQpLiIKICAgICAgICAgICAgIH0KICAgICAgICAgXSwKICAgICAgICAgImV2ZW50cyI6
IFsKQEAgLTE0OTQsMTEgKzE1MDYsMjAgQEAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAibmFtZSI6ICJtZXRhZGF0YVJlY2VpdmVkIiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVy
cyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAidHlwZSI6
ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgSWRlbnRpZmllciB0aGF0IHdhcyBy
ZXR1cm5lZCBpbiByZXNwb25zZSB0byB0aGUgY29ycmVzcG9uZGluZyBnZXRNZXRhZGF0YSByZXF1
ZXN0LiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAidHlw
ZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgSWRlbnRpZmllciB0aGF0IHdh
cyByZXR1cm5lZCBpbiByZXNwb25zZSB0byB0aGUgY29ycmVzcG9uZGluZyByZXF1ZXN0TWV0YWRh
dGEgY29tbWFuZC4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZXJyb3JDb2Rl
IiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICIwLCBpZiBubyBlcnJvci4gT3Ro
ZXJ3aXNlLCBlcnJvckNvZGUgaXMgc2V0IHRvIEZpbGVFcnJvcjo6RXJyb3JDb2RlIHZhbHVlLiIg
fSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJtZXRhZGF0YSIsICIkcmVmIjogIkZp
bGVTeXN0ZW0uTWV0YWRhdGEiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiQ29u
dGFpbnMgbWV0YWRhdGEgb2YgdGhlIGVudHJ5IGlmIHRoZSBjb21tYW5kIGNvbXBsZXRlZCBzdWNj
ZXNzZnVsbHkuIiB9CiAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiQ29tcGxldGlvbiBldmVudCBvZiBnZXRNZXRhZGF0YSBjb21tYW5kLiIKKyAgICAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29tcGxldGlvbiBldmVudCBvZiByZXF1ZXN0TWV0
YWRhdGEgY29tbWFuZC4iCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICJuYW1lIjogImZpbGVDb250ZW50UmVjZWl2ZWQiLAorICAgICAgICAgICAgICAgICJw
YXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIs
ICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdCBJZGVudGlmaWVyIHRo
YXQgd2FzIHJldHVybmVkIGluIHJlc3BvbnNlIHRvIHRoZSBjb3JyZXNwb25kaW5nIHJlcXVlc3RG
aWxlQ29udGVudCBjb21tYW5kLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJl
cnJvckNvZGUiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIjAsIGlmIG5vIGVy
cm9yLiBPdGhlcndpc2UsIGVycm9yQ29kZSBpcyBzZXQgdG8gRmlsZUVycm9yOjpFcnJvckNvZGUg
dmFsdWUuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRhdGFVUkwiLCAidHlw
ZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiQ29udGFpbnMg
Y29udGVudCBvZiB0aGUgZmlsZSBhcyBkYXRhIHNjaGVtZSBVUkwuIiB9CisgICAgICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29tcGxldGlvbiBldmVudCBv
ZiByZXF1ZXN0RmlsZUNvbnRlbnQgY29tbWFuZC4iCiAgICAgICAgICAgICB9CiAgICAgICAgIF0K
ICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZp
bGVTeXN0ZW1BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmls
ZVN5c3RlbUFnZW50LmNwcAppbmRleCAwNjIwNmRlMjYzZDY2MTg3OTliYzlkY2YwOTYxZDE3ZjMz
NDgyY2Y2Li4yNDI1NDU4OTlmOWMzODlkYjEzYTk1Yjg4NjI3M2FjMjUzMjU1NmI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50
LmNwcApAQCAtMzksMTAgKzM5LDE0IEBACiAjaW5jbHVkZSAiRGlyZWN0b3J5UmVhZGVyLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbnRyaWVzQ2FsbGJhY2suaCIKKyNpbmNs
dWRlICJFbnRyeS5oIgogI2luY2x1ZGUgIkVudHJ5QXJyYXkuaCIKICNpbmNsdWRlICJFbnRyeUNh
bGxiYWNrLmgiCiAjaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgorI2luY2x1ZGUgIkZpbGVDYWxs
YmFjay5oIgorI2luY2x1ZGUgIkZpbGVFbnRyeS5oIgogI2luY2x1ZGUgIkZpbGVFcnJvci5oIgor
I2luY2x1ZGUgIkZpbGVSZWFkZXIuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2suaCIK
ICNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAg
LTU0LDYgKzU4LDcgQEAKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAi
TWV0YWRhdGEuaCIKICNpbmNsdWRlICJNZXRhZGF0YUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAKIHVz
aW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJheTsKQEAgLTQwMCw2ICs0MDUsMTI4IEBAIGJv
b2wgR2V0TWV0YWRhdGFUYXNrOjpkaWRHZXRNZXRhZGF0YShNZXRhZGF0YSogbWV0YWRhdGEpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKK2NsYXNzIFJlYWRGaWxlVGFzayA6IHB1YmxpYyBFdmVudExp
c3RlbmVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZWFkRmlsZVRhc2spOworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlYWRGaWxlVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8
RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92aWRlciwgaW50IHJlcXVlc3RJZCwgY29uc3Qg
U3RyaW5nJiB1cmwsIGludCBzdGFydCwgaW50IGVuZCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgUmVhZEZpbGVUYXNrKGZyb250ZW5kUHJvdmlkZXIsIHJlcXVlc3RJZCwgdXJs
LCBzdGFydCwgZW5kKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+UmVhZEZpbGVUYXNrKCkKKyAg
ICB7CisgICAgICAgIHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6OkFCT1JUX0VSUiwgMCk7CisgICAg
fQorCisgICAgdm9pZCBzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisKKworICAgIHZp
cnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKSBPVkVSUklE
RQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMgPT0gJm90aGVyOworICAgIH0KKworICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqIGV2
ZW50KSBPVkVSUklERQorICAgIHsKKyAgICAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLmxvYWRFdmVudCkKKyAgICAgICAgICAgIGRpZFJlYWQoKTsKKyAgICAgICAgZWxzZSBp
ZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuZXJyb3JFdmVudCkKKyAgICAgICAgICAg
IGRpZEhpdEVycm9yKG1fcmVhZGVyLT5lcnJvcigpLmdldCgpKTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgYm9vbCBkaWRIaXRFcnJvcihGaWxlRXJyb3IqIGVycm9yKQorICAgIHsKKyAgICAgICAg
cmVwb3J0UmVzdWx0KGVycm9yLT5jb2RlKCksIDApOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICBib29sIGRpZEdldEVudHJ5KEVudHJ5Kik7CisgICAgYm9vbCBkaWRHZXRGaWxl
KEZpbGUqKTsKKyAgICB2b2lkIGRpZFJlYWQoKTsKKworICAgIHZvaWQgcmVwb3J0UmVzdWx0KEZp
bGVFcnJvcjo6RXJyb3JDb2RlIGVycm9yQ29kZSwgY29uc3QgU3RyaW5nKiBkYXRhVVJMKQorICAg
IHsKKyAgICAgICAgaWYgKCFtX2Zyb250ZW5kUHJvdmlkZXIgfHwgIW1fZnJvbnRlbmRQcm92aWRl
ci0+ZnJvbnRlbmQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9mcm9udGVuZFBy
b3ZpZGVyLT5mcm9udGVuZCgpLT5maWxlQ29udGVudFJlY2VpdmVkKG1fcmVxdWVzdElkLCBzdGF0
aWNfY2FzdDxpbnQ+KGVycm9yQ29kZSksIGRhdGFVUkwpOworICAgICAgICBtX2Zyb250ZW5kUHJv
dmlkZXIgPSAwOworICAgIH0KKworICAgIFJlYWRGaWxlVGFzayhQYXNzUmVmUHRyPEZyb250ZW5k
UHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYg
dXJsLCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAgICAgIDogRXZlbnRMaXN0ZW5lcihFdmVudExp
c3RlbmVyOjpDUFBFdmVudExpc3RlbmVyVHlwZSkKKyAgICAgICAgLCBtX2Zyb250ZW5kUHJvdmlk
ZXIoZnJvbnRlbmRQcm92aWRlcikKKyAgICAgICAgLCBtX3JlcXVlc3RJZChyZXF1ZXN0SWQpCisg
ICAgICAgICwgbV91cmwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpCisgICAgICAgICwgbV9zdGFydChz
dGFydCkKKyAgICAgICAgLCBtX2VuZChlbmQpCisgICAgICAgICwgbV9jdXJyZW50KHN0YXJ0KSB7
IH0KKworICAgIFJlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBtX2Zyb250ZW5kUHJvdmlkZXI7Cisg
ICAgaW50IG1fcmVxdWVzdElkOworICAgIEtVUkwgbV91cmw7CisgICAgaW50IG1fc3RhcnQ7Cisg
ICAgaW50IG1fZW5kOworICAgIGludCBtX2N1cnJlbnQ7CisKKyAgICBSZWZQdHI8RmlsZVJlYWRl
cj4gbV9yZWFkZXI7Cit9OworCit2b2lkIFJlYWRGaWxlVGFzazo6c3RhcnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKK3sKKyAgICBBU1NFUlQoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCk7CisKKyAgICBGaWxlU3lzdGVtVHlwZSB0eXBlOworICAgIFN0cmlu
ZyBwYXRoOworICAgIGlmICghRE9NRmlsZVN5c3RlbUJhc2U6OmNyYWNrRmlsZVN5c3RlbVVSTCht
X3VybCwgdHlwZSwgcGF0aCkpIHsKKyAgICAgICAgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6U1lO
VEFYX0VSUiwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8RW50cnlD
YWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVyRmFjdG9yeTxFbnRy
eUNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZSZWFkRmlsZVRhc2s6OmRpZEdldEVudHJ5KTsKKyAg
ICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hl
ckZhY3Rvcnk8RXJyb3JDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAmUmVhZEZpbGVUYXNrOjpkaWRI
aXRFcnJvcik7CisgICAgT3duUHRyPFJlc29sdmVVUklDYWxsYmFja3M+IGZpbGVTeXN0ZW1DYWxs
YmFja3MgPSBSZXNvbHZlVVJJQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJv
ckNhbGxiYWNrLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0eXBlLCBwYXRoKTsKKworICAgIExv
Y2FsRmlsZVN5c3RlbTo6bG9jYWxGaWxlU3lzdGVtKCkucmVhZEZpbGVTeXN0ZW0oc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgdHlwZSwgZmlsZVN5c3RlbUNhbGxiYWNrcy5yZWxlYXNlKCkpOworfQor
Citib29sIFJlYWRGaWxlVGFzazo6ZGlkR2V0RW50cnkoRW50cnkqIGVudHJ5KQoreworICAgIGlm
IChlbnRyeS0+aXNEaXJlY3RvcnkoKSkgeworICAgICAgICByZXBvcnRSZXN1bHQoRmlsZUVycm9y
OjpUWVBFX01JU01BVENIX0VSUiwgMCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIGlmICghZW50cnktPmZpbGVzeXN0ZW0oKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7
CisgICAgICAgIHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6OkFCT1JUX0VSUiwgMCk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIFJlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3ND
YWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RmlsZUNhbGxiYWNrPjo6Y3JlYXRl
KHRoaXMsICZSZWFkRmlsZVRhc2s6OmRpZEdldEZpbGUpOworICAgIFJlZlB0cjxFcnJvckNhbGxi
YWNrPiBlcnJvckNhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVyRmFjdG9yeTxFcnJvckNhbGxi
YWNrPjo6Y3JlYXRlKHRoaXMsICZSZWFkRmlsZVRhc2s6OmRpZEhpdEVycm9yKTsKKyAgICBzdGF0
aWNfY2FzdDxGaWxlRW50cnkqPihlbnRyeSktPmZpbGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNh
bGxiYWNrKTsKKworICAgIG1fcmVhZGVyID0gRmlsZVJlYWRlcjo6Y3JlYXRlKGVudHJ5LT5maWxl
c3lzdGVtKCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgUmVhZEZpbGVUYXNrOjpkaWRHZXRGaWxlKEZpbGUqIGZpbGUpCit7CisgICAgUmVm
UHRyPEJsb2I+IGJsb2IgPSBmaWxlLT5zbGljZShtX3N0YXJ0LCBtX2VuZCk7CisgICAgbV9yZWFk
ZXItPnNldE9ubG9hZCh0aGlzKTsKKyAgICBtX3JlYWRlci0+c2V0T25lcnJvcih0aGlzKTsKKwor
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIG1fcmVhZGVyLT5yZWFkQXNEYXRhVVJMKGJs
b2IuZ2V0KCksIGVjKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBSZWFkRmlsZVRhc2s6
OmRpZFJlYWQoKQoreworICAgIFN0cmluZyByZXN1bHQgPSBtX3JlYWRlci0+c3RyaW5nUmVzdWx0
KCk7CisgICAgcmVwb3J0UmVzdWx0KHN0YXRpY19jYXN0PEZpbGVFcnJvcjo6RXJyb3JDb2RlPigw
KSwgJnJlc3VsdCk7Cit9CisKIH0KIAogLy8gc3RhdGljCkBAIC00NzgsNiArNjA1LDIyIEBAIHZv
aWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpyZXF1ZXN0TWV0YWRhdGEoRXJyb3JTdHJpbmcq
IGVycm9yLCBjb25zdCBTdHJpbmcmCiAgICAgICAgIG1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRl
bmQoKS0+bWV0YWRhdGFSZWNlaXZlZCgqcmVxdWVzdElkLCBzdGF0aWNfY2FzdDxpbnQ+KEZpbGVF
cnJvcjo6QUJPUlRfRVJSKSwgMCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50
OjpyZXF1ZXN0RmlsZUNvbnRlbnQoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHVy
bCwgaW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQqIHJlcXVlc3RJZCkKK3sKKyAgICBpZiAoIW1fZW5h
YmxlZCB8fCAhbV9mcm9udGVuZFByb3ZpZGVyKSB7CisgICAgICAgICplcnJvciA9ICJGaWxlU3lz
dGVtIGFnZW50IGlzIG5vdCBlbmFibGVkIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBB
U1NFUlQobV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpKTsKKworICAgICpyZXF1ZXN0SWQg
PSBtX25leHRSZXF1ZXN0SWQrKzsKKworICAgIGlmIChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZvck9yaWdpbihT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyh1cmwpLmdldCgpKSkKKyAgICAgICAgUmVh
ZEZpbGVUYXNrOjpjcmVhdGUobV9mcm9udGVuZFByb3ZpZGVyLCAqcmVxdWVzdElkLCB1cmwsIHN0
YXJ0LCBlbmQpLT5zdGFydChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBlbHNlCisgICAg
ICAgIG1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKS0+ZmlsZUNvbnRlbnRSZWNlaXZlZCgq
cmVxdWVzdElkLCBzdGF0aWNfY2FzdDxpbnQ+KEZpbGVFcnJvcjo6QUJPUlRfRVJSKSwgMCk7Cit9
CisKIHZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpzZXRGcm9udGVuZChJbnNwZWN0b3JG
cm9udGVuZCogZnJvbnRlbmQpCiB7CiAgICAgQVNTRVJUKGZyb250ZW5kKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaAppbmRleCA4
MmY5NWM0YjZmZThmZDMxYjg3OTIxYjUzN2ZjNzNmMGU3YTVjYzcwLi4zZmQ0NWI2ODY3ZjhiNmZm
ZWFhNDllYjY3ZWNhNWQ1NDNlZjJjNTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oCkBAIC02Miw2ICs2Miw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEZpbGVTeXN0ZW1Sb290KEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgdHlwZSwgaW50KiByZXF1ZXN0SWQp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGlyZWN0b3J5Q29udGVudChFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQqIHJlcXVlc3RJZCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RNZXRhZGF0YShFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgdXJsLCBpbnQqIHJlcXVlc3RJZCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlcXVl
c3RGaWxlQ29udGVudChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgc3RhcnQs
IGludCBlbmQsIGludCogcmVxdWVzdElkKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBz
ZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBjbGVhckZyb250ZW5kKCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCmluZGV4IGVkYjY0N2ZhNzU4MWI0
ZWQ4ZGQ5YWU5MjMwNjIyNDZlNDk2YWY2ODIuLmU2YmMzZTU5ZmE2ODQ3NjBjYmZkODY5OTlhODlj
NTFhMTQ2ZWFkMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRmlsZVN5c3RlbU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCkBAIC0yMzcsOSArMjM3LDI0IEBAIFdlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICBjYWxsYmFjayhlcnJvckNv
ZGUsIGVudHJpZXMpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnl9IGVudHJ5CisgICAgICogQHBhcmFtIHtmdW5jdGlv
bihudW1iZXIsIEZpbGVTeXN0ZW1BZ2VudC5NZXRhZGF0YT0pfSBjYWxsYmFjaworICAgICAqLwog
ICAgIHJlcXVlc3RNZXRhZGF0YTogZnVuY3Rpb24oZW50cnksIGNhbGxiYWNrKQogICAgIHsKICAg
ICAgICAgdGhpcy5fYWdlbnRXcmFwcGVyLnJlcXVlc3RNZXRhZGF0YShlbnRyeS51cmwsIGNhbGxi
YWNrKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbU1vZGVsLkZpbGV9IGZpbGUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnQKKyAg
ICAgKiBAcGFyYW0ge251bWJlcn0gZW5kCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihudW1iZXIs
IHN0cmluZz0pfSBjYWxsYmFjaworICAgICAqLworICAgIHJlcXVlc3RGaWxlQ29udGVudDogZnVu
Y3Rpb24oZmlsZSwgc3RhcnQsIGVuZCwgY2FsbGJhY2spCisgICAgeworICAgICAgICB0aGlzLl9h
Z2VudFdyYXBwZXIucmVxdWVzdEZpbGVDb250ZW50KGZpbGUudXJsLCBzdGFydCwgZW5kLCBjYWxs
YmFjayk7CiAgICAgfQogfQogCkBAIC0zOTUsNiArNDEwLDE2IEBAIFdlYkluc3BlY3Rvci5GaWxl
U3lzdGVtTW9kZWwuRmlsZS5wcm90b3R5cGUgPSB7CiAgICAgZ2V0IHJlc291cmNlVHlwZSgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VUeXBlOworICAgIH0sCisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0g
ZW5kCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihudW1iZXIsIHN0cmluZz0pfSBjYWxsYmFjawor
ICAgICAqLworICAgIHJlcXVlc3RGaWxlQ29udGVudDogZnVuY3Rpb24oc3RhcnQsIGVuZCwgY2Fs
bGJhY2spCisgICAgeworICAgICAgICB0aGlzLmZpbGVTeXN0ZW1Nb2RlbC5yZXF1ZXN0RmlsZUNv
bnRlbnQodGhpcywgc3RhcnQsIGVuZCwgY2FsbGJhY2spOwogICAgIH0KIH0KIApAQCAtNDA4LDYg
KzQzMyw3IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIgPSBmdW5jdGlv
bigpCiAgICAgdGhpcy5fcGVuZGluZ0ZpbGVTeXN0ZW1Sb290UmVxdWVzdHMgPSB7fTsKICAgICB0
aGlzLl9wZW5kaW5nRGlyZWN0b3J5Q29udGVudFJlcXVlc3RzID0ge307CiAgICAgdGhpcy5fcGVu
ZGluZ01ldGFkYXRhUmVxdWVzdHMgPSB7fTsKKyAgICB0aGlzLl9wZW5kaW5nRmlsZUNvbnRlbnRS
ZXF1ZXN0cyA9IHt9OwogCiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckZpbGVTeXN0ZW1E
aXNwYXRjaGVyKG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbURpc3BhdGNoZXIodGhpcykpOwog
ICAgIEZpbGVTeXN0ZW1BZ2VudC5lbmFibGUoKTsKQEAgLTQ5OCw2ICs1MjQsMzggQEAgV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9wZW5kaW5nTWV0YWRhdGFSZXF1ZXN0c1ty
ZXF1ZXN0SWRdOwogICAgICAgICBjYWxsYmFjayhlcnJvckNvZGUsIG1ldGFkYXRhKTsKKyAgICB9
LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHVybAorICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBzdGFydAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQKKyAgICAgKiBAcGFyYW0g
e2Z1bmN0aW9uKG51bWJlciwgc3RyaW5nKX0gY2FsbGJhY2sKKyAgICAgKi8KKyAgICByZXF1ZXN0
RmlsZUNvbnRlbnQ6IGZ1bmN0aW9uKHVybCwgc3RhcnQsIGVuZCwgY2FsbGJhY2spCisgICAgewor
ICAgICAgICB2YXIgc3RvcmUgPSB0aGlzLl9wZW5kaW5nRmlsZUNvbnRlbnRSZXF1ZXN0czsKKyAg
ICAgICAgRmlsZVN5c3RlbUFnZW50LnJlcXVlc3RGaWxlQ29udGVudCh1cmwsIHN0YXJ0LCBlbmQs
IHJlcXVlc3RBY2NlcHRlZCk7CisKKyAgICAgICAgZnVuY3Rpb24gcmVxdWVzdEFjY2VwdGVkKGVy
cm9yLCByZXF1ZXN0SWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghZXJyb3IpCisgICAg
ICAgICAgICAgICAgc3RvcmVbcmVxdWVzdElkXSA9IGNhbGxiYWNrOworICAgICAgICB9CisgICAg
fSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSByZXF1ZXN0SWQKKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gZXJyb3JDb2RlCisgICAgICogQHBhcmFtIHtzdHJpbmc9fSBkYXRhVVJM
CisgICAgICovCisgICAgX2ZpbGVDb250ZW50UmVjZWl2ZWQ6IGZ1bmN0aW9uKHJlcXVlc3RJZCwg
ZXJyb3JDb2RlLCBkYXRhVVJMKQorICAgIHsKKyAgICAgICAgdmFyIGNhbGxiYWNrID0gLyoqIEB0
eXBlIHtmdW5jdGlvbihudW1iZXIsIHN0cmluZz0pfSAqLyB0aGlzLl9wZW5kaW5nRmlsZUNvbnRl
bnRSZXF1ZXN0c1tyZXF1ZXN0SWRdOworICAgICAgICBpZiAoIWNhbGxiYWNrKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBkZWxldGUgdGhpcy5fcGVuZGluZ0ZpbGVDb250ZW50UmVxdWVz
dHNbcmVxdWVzdElkXTsKKyAgICAgICAgY2FsbGJhY2soZXJyb3JDb2RlLCBkYXRhVVJMKTsKICAg
ICB9CiB9CiAKQEAgLTU0MCw1ICs1OTgsMTUgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1EaXNw
YXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICBtZXRhZGF0YVJlY2VpdmVkOiBmdW5jdGlvbihyZXF1
ZXN0SWQsIGVycm9yQ29kZSwgbWV0YWRhdGEpCiAgICAgewogICAgICAgICB0aGlzLl9hZ2VudFdy
YXBwZXIuX21ldGFkYXRhUmVjZWl2ZWQocmVxdWVzdElkLCBlcnJvckNvZGUsIG1ldGFkYXRhKTsK
KyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHJlcXVlc3RJZAorICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSBlcnJvckNvZGUKKyAgICAgKiBAcGFyYW0ge3N0cmluZz19IGRh
dGFVUkwKKyAgICAgKi8KKyAgICBmaWxlQ29udGVudFJlY2VpdmVkOiBmdW5jdGlvbihyZXF1ZXN0
SWQsIGVycm9yQ29kZSwgZGF0YVVSTCkKKyAgICB7CisgICAgICAgIHRoaXMuX2FnZW50V3JhcHBl
ci5fZmlsZUNvbnRlbnRSZWNlaXZlZChyZXF1ZXN0SWQsIGVycm9yQ29kZSwgZGF0YVVSTCk7CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDdmNjQ5MTUzOWRkOTAyYzlmMGZmMzNkZTEwYjg4ODFhMTkzZGFkN2Qu
Ljk4YzZkN2IzMzJkNjVlMjFhMWEyZDQ1NThmYmU2NjIxYTcyY2QwOGMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxMi0wNi0yNCAgVGFpanUgVHN1aWtpICA8dHppa0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHJlcXVlc3RGaWxlQ29udGVudCBjb21tYW5kIGFu
ZCBmaWxlQ29udGVudFJlY2VpdmVkIGV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04OTY0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZWFk
LWZpbGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rv
ci9maWxlc3lzdGVtL3JlYWQtZmlsZS5odG1sOiBBZGRlZC4KKwogMjAxMi0wNi0yNCAgT2xpIExh
biAgPG9saWxhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWZ0ZXIgRWRpdG9yOjpzZXRDb21w
b3NpdGlvbiBpcyBjYWxsZWQsIGlucHV0IHNob3VsZCBzY3JvbGwgdG8gdGhlIGVuZCBvZiB0aGUg
Y29tcG9zaXRpb24uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9maWxlc3lzdGVtL3JlYWQtZmlsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlYWQtZmlsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjA2NDUzZjc4OTFhNzkwY2RkMTBjOWVlMWYwOTg0MDdlZTQ1ZmI2NwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVhZC1m
aWxlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1Rlc3RzIHJlYWRGaWxlLgorCitlcnJv
ckNvZGUgPSAwCitkYXRhVVJMID0gZGF0YTo7YmFzZTY0LGVXOD0KKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZWFkLWZpbGUuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVhZC1maWxlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGUyYTU4YjFmMDE5YzMxOWIxMzVhZTAxNTdjZDdlZmE3N2Q1MTJmMgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVz
eXN0ZW0vcmVhZC1maWxlLmh0bWwKQEAgLTAsMCArMSw0MyBAQAorPCFET0NUWVBFIGh0bWw+PG1l
dGEgY2hhcnNldD0iVVRGLTgiPgorPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJmaWxlc3lzdGVtLXRlc3QuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD4KK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBydW5U
ZXN0KTsKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciByZXF1ZXN0TWFuYWdlciA9IG5ldyBX
ZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyKCk7CisgICAgSW5zcGVjdG9yVGVz
dC5jbGVhckZpbGVTeXN0ZW0oc3RlcDEpOworCisgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgIHsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVEaXJlY3RvcnkoIi9ob2dlIiwgc3RlcDIpOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRl
c3Qud3JpdGVGaWxlKCIvaG9nZS9mdWdhIiwgInBpeW8iLCBzdGVwMyk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gc3RlcDMoKQorICAgIHsKKyAgICAgICAgcmVxdWVzdE1hbmFnZXIucmVxdWVzdEZp
bGVDb250ZW50KCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvaG9n
ZS9mdWdhIiwgMiwgNCwgc3RlcDQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXA0KGVycm9y
Q29kZSwgZGF0YVVSTCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJl
cnJvckNvZGUgPSAiICsgZXJyb3JDb2RlKTsKKyAgICAgICAgaWYgKGRhdGFVUkwpCisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZGF0YVVSTCA9ICIgKyBkYXRhVVJMKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImRhdGFVUkwg
PSAobnVsbCkiKTsKKworICAgICAgICBJbnNwZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbShzdGVw
NSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDUoKQorICAgIHsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzxwPlRlc3RzIHJl
YWRGaWxlLjwvcD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150361</attachid>
            <date>2012-07-01 23:19:03 -0700</date>
            <delta_ts>2012-07-02 07:12:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89642-20120702151901.patch</filename>
            <type>text/plain</type>
            <size>18744</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxNjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTFjMGQyMmRlZmFmYjE5
M2JiOTI2NmUxNGY4ZmUxMjVmM2ExMjk4MS4uMTA1OWI0MDA0MTMzMjBkMDMyZjc3ZDU2NjAxMmQ1
M2JkNTBhOWRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA3LTAxICBUYWlq
dSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgcmVxdWVzdEZpbGVDb250ZW50IGNvbW1hbmQgYW5kIGZpbGVDb250ZW50UmVjZWl2ZWQgZXZl
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NjQy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDog
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZWFkLWZpbGUuaHRtbAorCisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JGaWxlU3lzdGVtQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlcXVlc3RGaWxlQ29udGVudCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oOgorICAgICAgICAoSW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0Zp
bGVTeXN0ZW1Nb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwu
cHJvdG90eXBlLnJlcXVlc3RNZXRhZGF0YSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbU1vZGVsLnByb3RvdHlwZS5yZXF1ZXN0RmlsZUNvbnRlbnQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlLnByb3RvdHlwZS5nZXQgcmVzb3VyY2VUeXBlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZS5wcm90b3R5cGUucmVx
dWVzdEZpbGVDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVz
dE1hbmFnZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdl
ci5wcm90b3R5cGUuX21ldGFkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUucmVxdWVzdEZpbGVDb250ZW50LnJlcXVl
c3RBY2NlcHRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5h
Z2VyLnByb3RvdHlwZS5yZXF1ZXN0RmlsZUNvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUuX2ZpbGVDb250ZW50UmVjZWl2ZWQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1EaXNwYXRjaGVyLnByb3RvdHlwZS5t
ZXRhZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlzcGF0
Y2hlci5wcm90b3R5cGUuZmlsZUNvbnRlbnRSZWNlaXZlZCk6CisKIDIwMTItMDctMDEgIFRpbW90
aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgdGhlICJJbnNw
ZWN0IEVsZW1lbnQiIGNvbnRleHQgbWVudSBpdGVtIGFwcGVhciBpbiBuaWdodGx5IGJ1aWxkcyBh
Z2Fpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNv
biBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCA4NTE2MDZl
YzgwYjY0MDk1ZmYzZjcxNGQ1MmEwMzQ1NmY5NjczMjM3Li4zNzExY2YzZjMyYTgwZDcxNmRhMzY3
M2NmODQwZDliNjcxYzdlZjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5q
c29uCkBAIC0xNDcxLDYgKzE0NzEsMTggQEAKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiUmVxdWVz
dCBpZGVudGlmaWVyLiBDb3JyZXNwb25kaW5nIG1ldGFkYXRhUmVjZWl2ZWQgZXZlbnQgc2hvdWxk
IGhhdmUgc2FtZSByZXF1ZXN0SWQgd2l0aCB0aGlzLiIgfQogICAgICAgICAgICAgICAgIF0sCiAg
ICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMgbWV0YWRhdGEgb2YgdGhlIGVu
dHJ5IGFzIG1ldGFkYXRhUmVjZWl2ZWQgZXZlbnQuIgorICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJyZXF1ZXN0RmlsZUNvbnRlbnQiLAorICAg
ICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInVybCIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJVUkwgb2YgdGhlIGZp
bGUgdGhhdCB0aGUgZnJvbnRlbmQgaXMgcmVxdWVzdGluZyB0byByZWFkIGZyb20uIiB9LAorICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YXJ0IiwgInR5cGUiOiAiaW50ZWdlciIsICJv
cHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJTcGVjaWZpZXMgdGhlIHN0YXJ0IG9mIHJh
bmdlIHRvIHJlYWQuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVuZCIsICJ0
eXBlIjogImludGVnZXIiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiU3BlY2lm
aWVzIHRoZSBlbmQgb2YgcmFuZ2UgdG8gcmVhZCBleGNsdXNpdmVseS4iIH0KKyAgICAgICAgICAg
ICAgICBdLAorICAgICAgICAgICAgICAgICJyZXR1cm5zIjogWworICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlv
biI6ICJSZXF1ZXN0IGlkZW50aWZpZXIuIENvcnJlc3BvbmRpbmcgZmlsZUNvbnRlbnRSZWNlaXZl
ZCBldmVudCBzaG91bGQgaGF2ZSBzYW1lIHJlcXVlc3RJZCB3aXRoIHRoaXMuIiB9CisgICAgICAg
ICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBjb250
ZW50IG9mIHRoZSBmaWxlIGFzIGZpbGVDb250ZW50UmVjZWl2ZWQgZXZlbnQuIFJlc3VsdCBzaG91
bGQgYmUgc2xpY2VkIGludG8gW3N0YXJ0LCBlbmQpLiIKICAgICAgICAgICAgIH0KICAgICAgICAg
XSwKICAgICAgICAgImV2ZW50cyI6IFsKQEAgLTE0OTUsMTEgKzE1MDcsMjAgQEAKICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJtZXRhZGF0YVJlY2VpdmVkIiwKICAgICAg
ICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJyZXF1ZXN0SWQiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlJlcXVlc3Qg
SWRlbnRpZmllciB0aGF0IHdhcyByZXR1cm5lZCBpbiByZXNwb25zZSB0byB0aGUgY29ycmVzcG9u
ZGluZyBnZXRNZXRhZGF0YSByZXF1ZXN0LiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJyZXF1ZXN0SWQiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlJlcXVl
c3QgSWRlbnRpZmllciB0aGF0IHdhcyByZXR1cm5lZCBpbiByZXNwb25zZSB0byB0aGUgY29ycmVz
cG9uZGluZyByZXF1ZXN0TWV0YWRhdGEgY29tbWFuZC4iIH0sCiAgICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiZXJyb3JDb2RlIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6
ICIwLCBpZiBubyBlcnJvci4gT3RoZXJ3aXNlLCBlcnJvckNvZGUgaXMgc2V0IHRvIEZpbGVFcnJv
cjo6RXJyb3JDb2RlIHZhbHVlLiIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJt
ZXRhZGF0YSIsICIkcmVmIjogIkZpbGVTeXN0ZW0uTWV0YWRhdGEiLCAib3B0aW9uYWwiOiB0cnVl
LCAiZGVzY3JpcHRpb24iOiAiQ29udGFpbnMgbWV0YWRhdGEgb2YgdGhlIGVudHJ5IGlmIHRoZSBj
b21tYW5kIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuIiB9CiAgICAgICAgICAgICAgICAgXSwKLSAg
ICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29tcGxldGlvbiBldmVudCBvZiBnZXRNZXRh
ZGF0YSBjb21tYW5kLiIKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29tcGxldGlv
biBldmVudCBvZiByZXF1ZXN0TWV0YWRhdGEgY29tbWFuZC4iCisgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogImZpbGVDb250ZW50UmVjZWl2ZWQi
LAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInJlcXVlc3RJZCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAi
UmVxdWVzdCBJZGVudGlmaWVyIHRoYXQgd2FzIHJldHVybmVkIGluIHJlc3BvbnNlIHRvIHRoZSBj
b3JyZXNwb25kaW5nIHJlcXVlc3RGaWxlQ29udGVudCBjb21tYW5kLiIgfSwKKyAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJlcnJvckNvZGUiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2Ny
aXB0aW9uIjogIjAsIGlmIG5vIGVycm9yLiBPdGhlcndpc2UsIGVycm9yQ29kZSBpcyBzZXQgdG8g
RmlsZUVycm9yOjpFcnJvckNvZGUgdmFsdWUuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImNvbnRlbnQiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVz
Y3JpcHRpb24iOiAiQ29udGFpbnMgY29udGVudCBvZiB0aGUgZmlsZSBhcyBiYXNlNjQgZW5jb2Rl
ZCBzdHJpbmcuIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiQ29tcGxldGlvbiBldmVudCBvZiByZXF1ZXN0RmlsZUNvbnRlbnQgY29tbWFuZC4i
CiAgICAgICAgICAgICB9CiAgICAgICAgIF0KICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcAppbmRleCAwNjIwNmRl
MjYzZDY2MTg3OTliYzlkY2YwOTYxZDE3ZjMzNDgyY2Y2Li5hZGFmZWVhN2ZhZjVlNGE0YTc3MTkx
ODAyYmU5ZTIxZDhhMDQ0ODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcApAQCAtMzQsMTUgKzM0LDIwIEBACiAKICNp
bmNsdWRlICJJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCIKIAorI2luY2x1ZGUgIkJhc2U2NC5o
IgogI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeS5o
IgogI2luY2x1ZGUgIkRpcmVjdG9yeVJlYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiRW50cmllc0NhbGxiYWNrLmgiCisjaW5jbHVkZSAiRW50cnkuaCIKICNpbmNsdWRl
ICJFbnRyeUFycmF5LmgiCiAjaW5jbHVkZSAiRW50cnlDYWxsYmFjay5oIgogI2luY2x1ZGUgIkVy
cm9yQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJGaWxlQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJGaWxl
RW50cnkuaCIKICNpbmNsdWRlICJGaWxlRXJyb3IuaCIKKyNpbmNsdWRlICJGaWxlUmVhZGVyLmgi
CiAjaW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbUNh
bGxiYWNrcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC01NCw2ICs1OSw3IEBACiAjaW5jbHVk
ZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAi
TWV0YWRhdGFDYWxsYmFjay5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogCiB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRl
cjo6QXJyYXk7CkBAIC00MDAsNiArNDA2LDEyOSBAQCBib29sIEdldE1ldGFkYXRhVGFzazo6ZGlk
R2V0TWV0YWRhdGEoTWV0YWRhdGEqIG1ldGFkYXRhKQogICAgIHJldHVybiB0cnVlOwogfQogCitj
bGFzcyBSZWFkRmlsZVRhc2sgOiBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoUmVhZEZpbGVUYXNrKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxSZWFkRmlsZVRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+IGZyb250
ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgdXJsLCBsb25nIGxvbmcg
c3RhcnQsIGxvbmcgbG9uZyBlbmQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFJlYWRGaWxlVGFzayhmcm9udGVuZFByb3ZpZGVyLCByZXF1ZXN0SWQsIHVybCwgc3RhcnQsIGVu
ZCkpOworICAgIH0KKworICAgIHZpcnR1YWwgflJlYWRGaWxlVGFzaygpCisgICAgeworICAgICAg
ICByZXBvcnRSZXN1bHQoRmlsZUVycm9yOjpBQk9SVF9FUlIsIDApOworICAgIH0KKworICAgIHZv
aWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworCisKKyAgICB2aXJ0dWFsIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgT1ZFUlJJREUKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzID09ICZvdGhlcjsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQg
aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50KiBldmVudCkgT1ZFUlJJ
REUKKyAgICB7CisgICAgICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5sb2Fk
RXZlbnQpCisgICAgICAgICAgICBkaWRSZWFkKCk7CisgICAgICAgIGVsc2UgaWYgKGV2ZW50LT50
eXBlKCkgPT0gZXZlbnROYW1lcygpLmVycm9yRXZlbnQpCisgICAgICAgICAgICBkaWRIaXRFcnJv
cihtX3JlYWRlci0+ZXJyb3IoKS5nZXQoKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIGJvb2wg
ZGlkSGl0RXJyb3IoRmlsZUVycm9yKiBlcnJvcikKKyAgICB7CisgICAgICAgIHJlcG9ydFJlc3Vs
dChlcnJvci0+Y29kZSgpLCAwKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
Ym9vbCBkaWRHZXRFbnRyeShFbnRyeSopOworICAgIGJvb2wgZGlkR2V0RmlsZShGaWxlKik7Cisg
ICAgdm9pZCBkaWRSZWFkKCk7CisKKyAgICB2b2lkIHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6OkVy
cm9yQ29kZSBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyogcmVzdWx0KQorICAgIHsKKyAgICAgICAg
aWYgKCFtX2Zyb250ZW5kUHJvdmlkZXIgfHwgIW1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQo
KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9mcm9udGVuZFByb3ZpZGVyLT5mcm9u
dGVuZCgpLT5maWxlQ29udGVudFJlY2VpdmVkKG1fcmVxdWVzdElkLCBzdGF0aWNfY2FzdDxpbnQ+
KGVycm9yQ29kZSksIHJlc3VsdCk7CisgICAgICAgIG1fZnJvbnRlbmRQcm92aWRlciA9IDA7Cisg
ICAgfQorCisgICAgUmVhZEZpbGVUYXNrKFBhc3NSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gZnJv
bnRlbmRQcm92aWRlciwgaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGxvbmcgbG9u
ZyBzdGFydCwgbG9uZyBsb25nIGVuZCkKKyAgICAgICAgOiBFdmVudExpc3RlbmVyKEV2ZW50TGlz
dGVuZXI6OkNQUEV2ZW50TGlzdGVuZXJUeXBlKQorICAgICAgICAsIG1fZnJvbnRlbmRQcm92aWRl
cihmcm9udGVuZFByb3ZpZGVyKQorICAgICAgICAsIG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKKyAg
ICAgICAgLCBtX3VybChQYXJzZWRVUkxTdHJpbmcsIHVybCkKKyAgICAgICAgLCBtX3N0YXJ0KHN0
YXJ0KQorICAgICAgICAsIG1fZW5kKGVuZCkKKyAgICAgICAgLCBtX2N1cnJlbnQoc3RhcnQpIHsg
fQorCisgICAgUmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+IG1fZnJvbnRlbmRQcm92aWRlcjsKKyAg
ICBpbnQgbV9yZXF1ZXN0SWQ7CisgICAgS1VSTCBtX3VybDsKKyAgICBpbnQgbV9zdGFydDsKKyAg
ICBsb25nIGxvbmcgbV9lbmQ7CisgICAgbG9uZyBsb25nIG1fY3VycmVudDsKKworICAgIFJlZlB0
cjxGaWxlUmVhZGVyPiBtX3JlYWRlcjsKK307CisKK3ZvaWQgUmVhZEZpbGVUYXNrOjpzdGFydChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQoreworICAgIEFT
U0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKworICAgIEZpbGVTeXN0ZW1UeXBlIHR5cGU7
CisgICAgU3RyaW5nIHBhdGg7CisgICAgaWYgKCFET01GaWxlU3lzdGVtQmFzZTo6Y3JhY2tGaWxl
U3lzdGVtVVJMKG1fdXJsLCB0eXBlLCBwYXRoKSkgeworICAgICAgICByZXBvcnRSZXN1bHQoRmls
ZUVycm9yOjpTWU5UQVhfRVJSLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJl
ZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJG
YWN0b3J5PEVudHJ5Q2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJlJlYWRGaWxlVGFzazo6ZGlkR2V0
RW50cnkpOworICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gQ2FsbGJh
Y2tEaXNwYXRjaGVyRmFjdG9yeTxFcnJvckNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZSZWFkRmls
ZVRhc2s6OmRpZEhpdEVycm9yKTsKKyAgICBPd25QdHI8UmVzb2x2ZVVSSUNhbGxiYWNrcz4gZmls
ZVN5c3RlbUNhbGxiYWNrcyA9IFJlc29sdmVVUklDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2Fs
bGJhY2ssIGVycm9yQ2FsbGJhY2ssIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHR5cGUsIHBhdGgp
OworCisgICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZWFkRmlsZVN5c3Rl
bShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0eXBlLCBmaWxlU3lzdGVtQ2FsbGJhY2tzLnJlbGVh
c2UoKSk7Cit9CisKK2Jvb2wgUmVhZEZpbGVUYXNrOjpkaWRHZXRFbnRyeShFbnRyeSogZW50cnkp
Cit7CisgICAgaWYgKGVudHJ5LT5pc0RpcmVjdG9yeSgpKSB7CisgICAgICAgIHJlcG9ydFJlc3Vs
dChGaWxlRXJyb3I6OlRZUEVfTUlTTUFUQ0hfRVJSLCAwKTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCisgICAgaWYgKCFlbnRyeS0+ZmlsZXN5c3RlbSgpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpIHsKKyAgICAgICAgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6QUJPUlRfRVJSLCAw
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgUmVmUHRyPEZpbGVDYWxsYmFj
az4gc3VjY2Vzc0NhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVyRmFjdG9yeTxGaWxlQ2FsbGJh
Y2s+OjpjcmVhdGUodGhpcywgJlJlYWRGaWxlVGFzazo6ZGlkR2V0RmlsZSk7CisgICAgUmVmUHRy
PEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5
PEVycm9yQ2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJlJlYWRGaWxlVGFzazo6ZGlkSGl0RXJyb3Ip
OworICAgIHN0YXRpY19jYXN0PEZpbGVFbnRyeSo+KGVudHJ5KS0+ZmlsZShzdWNjZXNzQ2FsbGJh
Y2ssIGVycm9yQ2FsbGJhY2spOworCisgICAgbV9yZWFkZXIgPSBGaWxlUmVhZGVyOjpjcmVhdGUo
ZW50cnktPmZpbGVzeXN0ZW0oKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBSZWFkRmlsZVRhc2s6OmRpZEdldEZpbGUoRmlsZSogZmlsZSkK
K3sKKyAgICBSZWZQdHI8QmxvYj4gYmxvYiA9IGZpbGUtPnNsaWNlKG1fc3RhcnQsIG1fZW5kKTsK
KyAgICBtX3JlYWRlci0+c2V0T25sb2FkKHRoaXMpOworICAgIG1fcmVhZGVyLT5zZXRPbmVycm9y
KHRoaXMpOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgbV9yZWFkZXItPnJlYWRB
c0FycmF5QnVmZmVyKGJsb2IuZ2V0KCksIGVjKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9p
ZCBSZWFkRmlsZVRhc2s6OmRpZFJlYWQoKQoreworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gcmVz
dWx0ID0gbV9yZWFkZXItPmFycmF5QnVmZmVyUmVzdWx0KCk7CisgICAgU3RyaW5nIGVuY29kZWRS
ZXN1bHQgPSBiYXNlNjRFbmNvZGUoc3RhdGljX2Nhc3Q8Y2hhcio+KHJlc3VsdC0+ZGF0YSgpKSwg
cmVzdWx0LT5ieXRlTGVuZ3RoKCkpOworICAgIHJlcG9ydFJlc3VsdChzdGF0aWNfY2FzdDxGaWxl
RXJyb3I6OkVycm9yQ29kZT4oMCksICZlbmNvZGVkUmVzdWx0KTsKK30KKwogfQogCiAvLyBzdGF0
aWMKQEAgLTQ3OCw2ICs2MDcsMjIgQEAgdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJl
cXVlc3RNZXRhZGF0YShFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYKICAgICAgICAg
bV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpLT5tZXRhZGF0YVJlY2VpdmVkKCpyZXF1ZXN0
SWQsIHN0YXRpY19jYXN0PGludD4oRmlsZUVycm9yOjpBQk9SVF9FUlIpLCAwKTsKIH0KIAordm9p
ZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlcXVlc3RGaWxlQ29udGVudChFcnJvclN0cmlu
ZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBpbnQqIHN0YXJ0LCBjb25zdCBpbnQq
IGVuZCwgaW50KiByZXF1ZXN0SWQpCit7CisgICAgaWYgKCFtX2VuYWJsZWQgfHwgIW1fZnJvbnRl
bmRQcm92aWRlcikgeworICAgICAgICAqZXJyb3IgPSAiRmlsZVN5c3RlbSBhZ2VudCBpcyBub3Qg
ZW5hYmxlZCI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUKG1fZnJvbnRlbmRQ
cm92aWRlci0+ZnJvbnRlbmQoKSk7CisKKyAgICAqcmVxdWVzdElkID0gbV9uZXh0UmVxdWVzdElk
Kys7CisKKyAgICBpZiAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZUZyb21TdHJpbmcodXJsKS5nZXQoKSkpCisgICAgICAgIFJlYWRGaWxlVGFzazo6Y3JlYXRl
KG1fZnJvbnRlbmRQcm92aWRlciwgKnJlcXVlc3RJZCwgdXJsLCBzdGFydCA/ICpzdGFydCA6IDAs
IGVuZCA/ICplbmQgOiBzdGQ6Om51bWVyaWNfbGltaXRzPGxvbmcgbG9uZz46Om1heCgpKS0+c3Rh
cnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgZWxzZQorICAgICAgICBtX2Zyb250ZW5k
UHJvdmlkZXItPmZyb250ZW5kKCktPmZpbGVDb250ZW50UmVjZWl2ZWQoKnJlcXVlc3RJZCwgc3Rh
dGljX2Nhc3Q8aW50PihGaWxlRXJyb3I6OkFCT1JUX0VSUiksIDApOworfQorCiB2b2lkIEluc3Bl
Y3RvckZpbGVTeXN0ZW1BZ2VudDo6c2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250
ZW5kKQogewogICAgIEFTU0VSVChmcm9udGVuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmgKaW5kZXggODJmOTVjNGI2ZmU4ZmQz
MWI4NzkyMWI1MzdmYzczZjBlN2E1Y2M3MC4uMGU1NmIzOGY5OTM5MWU5YjhiNzM3YWJkMDFhMDFi
NjQxZTRlOWE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZpbGVTeXN0ZW1BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGaWxlU3lzdGVtQWdlbnQuaApAQCAtNjIsNiArNjIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHJlcXVlc3RGaWxlU3lzdGVtUm9vdChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
b3JpZ2luLCBjb25zdCBTdHJpbmcmIHR5cGUsIGludCogcmVxdWVzdElkKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERpcmVjdG9yeUNvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIHVybCwgaW50KiByZXF1ZXN0SWQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCByZXF1ZXN0TWV0YWRhdGEoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVybCwgaW50KiBy
ZXF1ZXN0SWQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RmlsZUNvbnRlbnQo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgaW50KiBzdGFydCwgY29uc3Qg
aW50KiBlbmQsIGludCogcmVxdWVzdElkKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBz
ZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBjbGVhckZyb250ZW5kKCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCmluZGV4IDhiYTU5MWZjNGVmMDZi
MWRmZGFkNTRmYjliNDc3OGNlMWM4OTUxNGYuLjQxOTM5ZWVhMjZiNDJlYWMxZDlmOTliOWRlZmM1
ODU4YjNjN2U5NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRmlsZVN5c3RlbU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCkBAIC0yMzcsOSArMjM3LDI0IEBAIFdlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICBjYWxsYmFjayhlcnJvckNv
ZGUsIGVudHJpZXMpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnl9IGVudHJ5CisgICAgICogQHBhcmFtIHtmdW5jdGlv
bihudW1iZXIsIEZpbGVTeXN0ZW1BZ2VudC5NZXRhZGF0YT0pfSBjYWxsYmFjaworICAgICAqLwog
ICAgIHJlcXVlc3RNZXRhZGF0YTogZnVuY3Rpb24oZW50cnksIGNhbGxiYWNrKQogICAgIHsKICAg
ICAgICAgdGhpcy5fYWdlbnRXcmFwcGVyLnJlcXVlc3RNZXRhZGF0YShlbnRyeS51cmwsIGNhbGxi
YWNrKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbU1vZGVsLkZpbGV9IGZpbGUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnQKKyAg
ICAgKiBAcGFyYW0ge251bWJlcn0gZW5kCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihudW1iZXIs
IHN0cmluZz0pfSBjYWxsYmFjaworICAgICAqLworICAgIHJlcXVlc3RGaWxlQ29udGVudDogZnVu
Y3Rpb24oZmlsZSwgc3RhcnQsIGVuZCwgY2FsbGJhY2spCisgICAgeworICAgICAgICB0aGlzLl9h
Z2VudFdyYXBwZXIucmVxdWVzdEZpbGVDb250ZW50KGZpbGUudXJsLCBzdGFydCwgZW5kLCBjYWxs
YmFjayk7CiAgICAgfQogfQogCkBAIC00MDcsNiArNDIyLDE2IEBAIFdlYkluc3BlY3Rvci5GaWxl
U3lzdGVtTW9kZWwuRmlsZS5wcm90b3R5cGUgPSB7CiAgICAgZ2V0IHJlc291cmNlVHlwZSgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VUeXBlOworICAgIH0sCisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0g
ZW5kCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihudW1iZXIsIHN0cmluZz0pfSBjYWxsYmFjawor
ICAgICAqLworICAgIHJlcXVlc3RGaWxlQ29udGVudDogZnVuY3Rpb24oc3RhcnQsIGVuZCwgY2Fs
bGJhY2spCisgICAgeworICAgICAgICB0aGlzLmZpbGVTeXN0ZW1Nb2RlbC5yZXF1ZXN0RmlsZUNv
bnRlbnQodGhpcywgc3RhcnQsIGVuZCwgY2FsbGJhY2spOwogICAgIH0KIH0KIApAQCAtNDIwLDYg
KzQ0NSw3IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIgPSBmdW5jdGlv
bigpCiAgICAgdGhpcy5fcGVuZGluZ0ZpbGVTeXN0ZW1Sb290UmVxdWVzdHMgPSB7fTsKICAgICB0
aGlzLl9wZW5kaW5nRGlyZWN0b3J5Q29udGVudFJlcXVlc3RzID0ge307CiAgICAgdGhpcy5fcGVu
ZGluZ01ldGFkYXRhUmVxdWVzdHMgPSB7fTsKKyAgICB0aGlzLl9wZW5kaW5nRmlsZUNvbnRlbnRS
ZXF1ZXN0cyA9IHt9OwogCiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckZpbGVTeXN0ZW1E
aXNwYXRjaGVyKG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbURpc3BhdGNoZXIodGhpcykpOwog
ICAgIEZpbGVTeXN0ZW1BZ2VudC5lbmFibGUoKTsKQEAgLTUxMCw2ICs1MzYsMzggQEAgV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9wZW5kaW5nTWV0YWRhdGFSZXF1ZXN0c1ty
ZXF1ZXN0SWRdOwogICAgICAgICBjYWxsYmFjayhlcnJvckNvZGUsIG1ldGFkYXRhKTsKKyAgICB9
LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHVybAorICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBzdGFydAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQKKyAgICAgKiBAcGFyYW0g
e2Z1bmN0aW9uKG51bWJlciwgc3RyaW5nKX0gY2FsbGJhY2sKKyAgICAgKi8KKyAgICByZXF1ZXN0
RmlsZUNvbnRlbnQ6IGZ1bmN0aW9uKHVybCwgc3RhcnQsIGVuZCwgY2FsbGJhY2spCisgICAgewor
ICAgICAgICB2YXIgc3RvcmUgPSB0aGlzLl9wZW5kaW5nRmlsZUNvbnRlbnRSZXF1ZXN0czsKKyAg
ICAgICAgRmlsZVN5c3RlbUFnZW50LnJlcXVlc3RGaWxlQ29udGVudCh1cmwsIHN0YXJ0LCBlbmQs
IHJlcXVlc3RBY2NlcHRlZCk7CisKKyAgICAgICAgZnVuY3Rpb24gcmVxdWVzdEFjY2VwdGVkKGVy
cm9yLCByZXF1ZXN0SWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghZXJyb3IpCisgICAg
ICAgICAgICAgICAgc3RvcmVbcmVxdWVzdElkXSA9IGNhbGxiYWNrOworICAgICAgICB9CisgICAg
fSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSByZXF1ZXN0SWQKKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gZXJyb3JDb2RlCisgICAgICogQHBhcmFtIHtzdHJpbmc9fSBjb250ZW50
CisgICAgICovCisgICAgX2ZpbGVDb250ZW50UmVjZWl2ZWQ6IGZ1bmN0aW9uKHJlcXVlc3RJZCwg
ZXJyb3JDb2RlLCBjb250ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGNhbGxiYWNrID0gLyoqIEB0
eXBlIHtmdW5jdGlvbihudW1iZXIsIHN0cmluZz0pfSAqLyB0aGlzLl9wZW5kaW5nRmlsZUNvbnRl
bnRSZXF1ZXN0c1tyZXF1ZXN0SWRdOworICAgICAgICBpZiAoIWNhbGxiYWNrKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBkZWxldGUgdGhpcy5fcGVuZGluZ0ZpbGVDb250ZW50UmVxdWVz
dHNbcmVxdWVzdElkXTsKKyAgICAgICAgY2FsbGJhY2soZXJyb3JDb2RlLCBjb250ZW50KTsKICAg
ICB9CiB9CiAKQEAgLTU1Miw1ICs2MTAsMTUgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1EaXNw
YXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICBtZXRhZGF0YVJlY2VpdmVkOiBmdW5jdGlvbihyZXF1
ZXN0SWQsIGVycm9yQ29kZSwgbWV0YWRhdGEpCiAgICAgewogICAgICAgICB0aGlzLl9hZ2VudFdy
YXBwZXIuX21ldGFkYXRhUmVjZWl2ZWQocmVxdWVzdElkLCBlcnJvckNvZGUsIG1ldGFkYXRhKTsK
KyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHJlcXVlc3RJZAorICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSBlcnJvckNvZGUKKyAgICAgKiBAcGFyYW0ge3N0cmluZz19IGNv
bnRlbnQKKyAgICAgKi8KKyAgICBmaWxlQ29udGVudFJlY2VpdmVkOiBmdW5jdGlvbihyZXF1ZXN0
SWQsIGVycm9yQ29kZSwgY29udGVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX2FnZW50V3JhcHBl
ci5fZmlsZUNvbnRlbnRSZWNlaXZlZChyZXF1ZXN0SWQsIGVycm9yQ29kZSwgY29udGVudCk7CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDc5MWEyN2VhMWJmMzYwODIwM2M5OTRkYWQyYTU3MGFhNzRhMWMyYjcu
LmI0NTVkMWVlZjllY2JjYTc0ODcxNmU5MTZlMWRmYTBhNmNiNDVlZDggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxMi0wNy0wMSAgVGFpanUgVHN1aWtpICA8dHppa0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHJlcXVlc3RGaWxlQ29udGVudCBjb21tYW5kIGFu
ZCBmaWxlQ29udGVudFJlY2VpdmVkIGV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04OTY0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZWFk
LWZpbGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rv
ci9maWxlc3lzdGVtL3JlYWQtZmlsZS5odG1sOiBBZGRlZC4KKwogMjAxMi0wNy0wMSAgRGFuIEJl
cm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMTc4
NTc0Mz4gW21hY10gTm9uLUJNUCBjaGFyYWN0ZXJzIGluIHZlcnRpY2FsIHRleHQgYXBwZWFyIGFz
IG1pc3NpbmcgZ2x5cGhzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9maWxlc3lzdGVtL3JlYWQtZmlsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlYWQtZmlsZS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDM4OTc3NDk4M2E1MmJjODA4YTJiMGJlODAyYmEyOGI1Mjg1MGUwYwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVh
ZC1maWxlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1Rlc3RzIHJlYWRGaWxlLgorCitl
cnJvckNvZGUgPSAwCitjb250ZW50ID0gIlVFRlRVdz09IiBbUEFTU10KKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZWFkLWZpbGUuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVhZC1maWxl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzQzNDFkOGJjNjg2MjM5Y2U4NmRjZTIxZTQ5MmVjOWUyMzBjYzcx
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2Zp
bGVzeXN0ZW0vcmVhZC1maWxlLmh0bWwKQEAgLTAsMCArMSw1MCBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorPHNjcmlwdCBzcmM9Ii4u
L2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJmaWxlc3lzdGVtLXRl
c3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRP
TUNvbnRlbnRMb2FkZWQiLCBydW5UZXN0KTsKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciBy
ZXF1ZXN0TWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2Vy
KCk7CisgICAgSW5zcGVjdG9yVGVzdC5jbGVhckZpbGVTeXN0ZW0oc3RlcDEpOworCisgICAgZnVu
Y3Rpb24gc3RlcDEoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVEaXJlY3Rv
cnkoIi9ob2dlIiwgc3RlcDIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICB7
CisgICAgICAgIEluc3BlY3RvclRlc3Qud3JpdGVGaWxlKCIvaG9nZS9mdWdhIiwgInBpUEFTU3lv
Iiwgc3RlcDMpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAzKCkKKyAgICB7CisgICAgICAg
IHJlcXVlc3RNYW5hZ2VyLnJlcXVlc3RGaWxlQ29udGVudCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3
LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2hvZ2UvZnVnYSIsIDIsIDYsIHN0ZXA0KTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBzdGVwNChlcnJvckNvZGUsIGNvbnRlbnQpCisgICAgeworICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZXJyb3JDb2RlID0gIiArIGVycm9yQ29kZSk7CisgICAg
ICAgIGlmIChjb250ZW50KQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImNv
bnRlbnQgPSBcIiIgKyBjb250ZW50ICsgIlwiIFsiICsgYXRvYihjb250ZW50KSArICJdIik7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJjb250ZW50
ID0gKG51bGwpIik7CisKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGVhckZpbGVTeXN0ZW0oc3Rl
cDUpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXA1KCkKKyAgICB7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxwPlRlc3RzIHJlYWRGaWxlLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>