<?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>169841</bug_id>
          
          <creation_ts>2017-03-17 17:36:57 -0700</creation_ts>
          <short_desc>Add libwebrtc backend support for RTCRtpSender::replaceTrack</short_desc>
          <delta_ts>2017-03-24 11:01:26 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>169662</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jonlee</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1289215</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-03-17 17:36:57 -0700</bug_when>
    <thetext>replaceTrack might be handy in various cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289216</commentid>
    <comment_count>1</comment_count>
      <attachid>304840</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-03-17 17:38:36 -0700</bug_when>
    <thetext>Created attachment 304840
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290169</commentid>
    <comment_count>2</comment_count>
      <attachid>305119</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-03-22 12:57:25 -0700</bug_when>
    <thetext>Created attachment 305119
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290229</commentid>
    <comment_count>3</comment_count>
      <attachid>305119</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-03-22 15:39:01 -0700</bug_when>
    <thetext>Comment on attachment 305119
Patch

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

&gt; Source/WebCore/Modules/mediastream/RTCRtpSender.idl:42
&gt; -    [MayThrowException] Promise&lt;void&gt; replaceTrack(MediaStreamTrack withTrack);
&gt; +    [MayThrowException] Promise&lt;void&gt; replaceTrack(MediaStreamTrack? withTrack);

Why are we deviating from the spec here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290232</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-03-22 15:43:58 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #3)
&gt; Comment on attachment 305119 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=305119&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/RTCRtpSender.idl:42
&gt; &gt; -    [MayThrowException] Promise&lt;void&gt; replaceTrack(MediaStreamTrack withTrack);
&gt; &gt; +    [MayThrowException] Promise&lt;void&gt; replaceTrack(MediaStreamTrack? withTrack);
&gt; 
&gt; Why are we deviating from the spec here?

Probably a typo, I need to file an issue.
Description at https://www.w3.org/TR/webrtc/#dom-rtcrtpsender-replacetrack expects withTrack to be nullable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290335</commentid>
    <comment_count>5</comment_count>
      <attachid>305119</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2017-03-22 20:17:51 -0700</bug_when>
    <thetext>Comment on attachment 305119
Patch

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

&gt; Source/WebCore/Modules/mediastream/RTCRtpSender.cpp:69
&gt;  {

Are we missing step 4 of replaceTrack?

&gt; Source/WebCore/Modules/mediastream/RTCRtpSender.cpp:75
&gt; +    if (!withTrack) {

shouldn&apos;t this be &quot;if (withTrack)&quot;?

&gt; Source/WebCore/Modules/mediastream/RTCRtpSender.cpp:85
&gt;          return Exception { TypeError };

Should this be promise.reject(TypeError) instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290462</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-03-23 09:25:22 -0700</bug_when>
    <thetext>(In reply to Jon Lee from comment #5)
&gt; Comment on attachment 305119 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=305119&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/RTCRtpSender.cpp:69
&gt; &gt;  {
&gt; 
&gt; Are we missing step 4 of replaceTrack?

The implementation order is not matching the spec order.
It is true that it might cause subtle differences between implementation.

&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/RTCRtpSender.cpp:75
&gt; &gt; +    if (!withTrack) {
&gt; 
&gt; shouldn&apos;t this be &quot;if (withTrack)&quot;?

Again, we are not matching the spec step by step.
It seems to me the spec should branch early on when withTrack is null.
That would be more readable and easier to implement anyway.

&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/RTCRtpSender.cpp:85
&gt; &gt;          return Exception { TypeError };
&gt; 
&gt; Should this be promise.reject(TypeError) instead?

Oh, that is a left over when we were catching exceptions and rejecting promises.
replaceTrack should not have MayThrowException anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290573</commentid>
    <comment_count>7</comment_count>
      <attachid>305221</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-03-23 13:28:16 -0700</bug_when>
    <thetext>Created attachment 305221
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290866</commentid>
    <comment_count>8</comment_count>
      <attachid>305221</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-24 11:01:21 -0700</bug_when>
    <thetext>Comment on attachment 305221
Patch

Clearing flags on attachment: 305221

Committed r214357: &lt;http://trac.webkit.org/changeset/214357&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290867</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-24 11:01:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304840</attachid>
            <date>2017-03-17 17:38:36 -0700</date>
            <delta_ts>2017-03-22 12:57:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169841-20170317173835.patch</filename>
            <type>text/plain</type>
            <size>10809</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0MDgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDFlNDM3YmRhMzZkYjMy
MWYwZDkwMzMxNmQ5YmQyMmY4NTAxYmFmMS4uZTFhMzBiY2RkZjU0NjBiM2ZmZGVhNTM1YmU5MjQ5
ZDAzODg4MWUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI4IEBACiAyMDE3LTAzLTE3ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBBZGQgbGlid2VicnRjIGJh
Y2tlbmQgc3VwcG9ydCBmb3IgUlRDUnRwU2VuZGVyOjpyZXBsYWNlVHJhY2sKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTg0MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEp
LgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UlRDUnRwU2VuZGVyOjpyZXBsYWNlVHJhY2spOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTZW5kZXIuaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnJlcGxhY2VUcmFjayk6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91
dGdvaW5nQXVkaW9Tb3VyY2U6OnNldFNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpzZXRTb3VyY2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9T
b3VyY2UuaDoKKworMjAxNy0wMy0xNyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CisKICAgICAgICAgSW1wbGVtZW50IGluY29taW5nIHdlYnJ0YyBkYXRhIGJhc2VkIG9uIHRyYWNr
c0N1cnIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
OTgzNgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFNlbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFNlbmRlci5jcHAKaW5kZXggOTY4MDU0M2NkOTczMDRlNjJmZjQwZGU5NDg3OTdlMmY4OGZhMTE5
YS4uNzc5Zjc2YjAzMDNmYzNhZDRiZmI2MzY0MDQ2MDE2YzcyMWRhZmQ5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcApAQCAt
NjUsMTYgKzY1LDMxIEBAIHZvaWQgUlRDUnRwU2VuZGVyOjpzZXRUcmFjayhSZWY8TWVkaWFTdHJl
YW1UcmFjaz4mJiB0cmFjaykKICAgICBtX3RyYWNrID0gV1RGTW92ZSh0cmFjayk7CiB9CiAKLUV4
Y2VwdGlvbk9yPHZvaWQ+IFJUQ1J0cFNlbmRlcjo6cmVwbGFjZVRyYWNrKFJlZjxNZWRpYVN0cmVh
bVRyYWNrPiYmIHdpdGhUcmFjaywgRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2UpCitFeGNlcHRp
b25Pcjx2b2lkPiBSVENSdHBTZW5kZXI6OnJlcGxhY2VUcmFjayhSZWZQdHI8TWVkaWFTdHJlYW1U
cmFjaz4mJiB3aXRoVHJhY2ssIERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQogewogICAgIGlm
IChpc1N0b3BwZWQoKSkgewogICAgICAgICBwcm9taXNlLnJlamVjdChJTlZBTElEX1NUQVRFX0VS
Uik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCisgICAgaWYgKCF3aXRoVHJhY2spIHsK
KyAgICAgICAgaWYgKG1fdHJhY2spIHsKKyAgICAgICAgICAgIG1fdHJhY2stPnN0b3BQcm9kdWNp
bmdEYXRhKCk7CisgICAgICAgICAgICBtX3RyYWNrID0gbnVsbHB0cjsKKyAgICAgICAgfQorICAg
ICAgICBwcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlm
IChtX3RyYWNrS2luZCAhPSB3aXRoVHJhY2stPmtpbmQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFR5cGVFcnJvciB9OwogCisgICAgaWYgKCFtX3RyYWNrKSB7CisgICAgICAgIHNldFRy
YWNrKFdURk1vdmUodHJhY2spKTsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKICAgICBtX2NsaWVudC0+cmVwbGFjZVRyYWNrKCp0aGlzLCBXVEZN
b3ZlKHdpdGhUcmFjayksIFdURk1vdmUocHJvbWlzZSkpOwogCiAgICAgcmV0dXJuIHsgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oCmlu
ZGV4IDViMDMyZDczYjRhN2VhNjA1YjUzZGU1OTJiMGQxMDU0MWY2NWNiNWUuLmFlMjEyZTM0ODZk
MTA2Yjg2OGUyZWZkYTI0Yjc3ZDg3YWY5MjA2NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaApAQCAtNTksNyArNTksNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzdG9wKCkgeyBtX2NsaWVudCA9IG51bGxwdHI7IH0KICAgICB2b2lkIHNl
dFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmKTsKIAotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IHJlcGxhY2VUcmFjayhSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZTx2b2lkPiYm
KTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiByZXBsYWNlVHJhY2soUmVmUHRyPE1lZGlhU3RyZWFt
VHJhY2s+JiYsIERPTVByb21pc2U8dm9pZD4mJik7CiAKIHByaXZhdGU6CiAgICAgUlRDUnRwU2Vu
ZGVyKGNvbnN0IFN0cmluZyYgdHJhY2tLaW5kLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFt
SWRzLCBSVENSdHBTZW5kZXJDbGllbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmlkbAppbmRleCAwNzg2NzQ2OTU4ZmM5ODI2YmRl
YWU5ZTY0ODlmZjZjODJiZmNhMGRjLi5kOTM2Y2ZjYmZmNzc0N2YzNjcyYTcwMmNhZGQwNzFmMTRm
YWZmOGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFNlbmRlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTZW5kZXIuaWRsCkBAIC0zOSw1ICszOSw1IEBACiAgICAgLy8gRklYTUUgMTY5NjYyOiBt
aXNzaW5nIGdldENhcGFiaWxpdGllcwogICAgIC8vIEZJWE1FIDE2OTY2MjogbWlzc2luZyBzZXRQ
YXJhbWV0ZXJzCiAgICAgLy8gRklYTUUgMTY5NjYyOiBtaXNzaW5nIGdldFBhcmFtZXRlcnMKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIFByb21pc2U8dm9pZD4gcmVwbGFjZVRyYWNrKE1lZGlhU3Ry
ZWFtVHJhY2sgd2l0aFRyYWNrKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFByb21pc2U8dm9p
ZD4gcmVwbGFjZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2s/IHdpdGhUcmFjayk7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKaW5k
ZXggOGI1ZGU5ZWRmNjA0NzVlNjYxMjAzZTZmYmVhYTc2ZTFiMmZlZDlhNy4uMWE0MGYzODE2ZjI5
MmJmMGE2MTEyZmVjMjgzMTE0OWI2MzE0YjYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNr
ZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAj
aWYgVVNFKExJQldFQlJUQykKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkljZUNhbmRpZGF0ZS5oIgogI2luY2x1ZGUgIkpTUlRD
U3RhdHNSZXBvcnQuaCIKICNpbmNsdWRlICJMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCIK
QEAgLTMxOSw2ICszMjAsNDcgQEAgdm9pZCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6
OmFkZFJlbW90ZVN0cmVhbShSZWY8TWVkaWFTdHJlYW0+JiYgbWVkaWFTdHIKICAgICBtX3JlbW90
ZVN0cmVhbXMuYXBwZW5kKFdURk1vdmUobWVkaWFTdHJlYW0pKTsKIH0KIAordm9pZCBMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImIHNlbmRl
ciwgUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ssIERPTVByb21pc2U8dm9pZD4mJiBwcm9t
aXNlKQoreworICAgIEFTU0VSVChzZW5kZXIudHJhY2soKSk7CisgICAgYXV0byogY3VycmVudFRy
YWNrID0gc2VuZGVyLnRyYWNrKCk7CisKKyAgICBBU1NFUlQoY3VycmVudFRyYWNrLT5zb3VyY2Uo
KS50eXBlKCkgPT0gdHJhY2stPnNvdXJjZSgpLnR5cGUoKSk7CisgICAgc3dpdGNoKGN1cnJlbnRU
cmFjay0+c291cmNlKCkudHlwZSgpKSB7CisgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpU
eXBlOjpOb25lOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcHJvbWlz
ZS5yZWplY3QoSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTsKKyAgICBjYXNlIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGU6OkF1ZGlvOiB7CisgICAgICAgIGZvciAoYXV0byYgYXVkaW9Tb3VyY2Ug
OiBtX2F1ZGlvU291cmNlcykgeworICAgICAgICAgICAgaWYgKCZhdWRpb1NvdXJjZS0+c291cmNl
KCkgPT0gJmN1cnJlbnRUcmFjay0+c291cmNlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWF1
ZGlvU291cmNlLT5zZXRTb3VyY2UodHJhY2stPnNvdXJjZSgpKSkgeworICAgICAgICAgICAgICAg
ICAgICBwcm9taXNlLnJlamVjdChJTlZBTElEX01PRElGSUNBVElPTl9FUlIpOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHBy
b21pc2UucmVzb2x2ZSgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICBwcm9taXNlLnJlamVjdChJTlZBTElEX01PRElGSUNBVElPTl9F
UlIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNl
OjpUeXBlOjpWaWRlbzogeworICAgICAgICBmb3IgKGF1dG8mIHZpZGVvU291cmNlIDogbV92aWRl
b1NvdXJjZXMpIHsKKyAgICAgICAgICAgIGlmICgmdmlkZW9Tb3VyY2UtPnNvdXJjZSgpID09ICZj
dXJyZW50VHJhY2stPnNvdXJjZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKCF2aWRlb1NvdXJj
ZS0+c2V0U291cmNlKHRyYWNrLT5zb3VyY2UoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJv
bWlzZS5yZWplY3QoSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwcm9taXNlLnJl
c29sdmUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKaW5kZXggMjU5ODYzOTAwNjczMjIxNTYzMGJmZDEy
NTI5Yjc2NjY3NjlmMzliZS4uMzRjOWJmZjFhODgzZTkwM2RjMGY5ZDkxYjU4Y2JmYTA0ZGIyYjdh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNr
ZW5kLmgKQEAgLTY5LDggKzY5LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRl
c2NyaXB0aW9uPiBjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbDsKICAgICBS
ZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBwZW5kaW5nUmVtb3RlRGVzY3JpcHRpb24oKSBj
b25zdCBmaW5hbDsKIAotICAgIC8vIEZJWE1FOiBBUEkgdG8gaW1wbGVtZW50IGZvciByZWFsCi0g
ICAgdm9pZCByZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmPE1lZGlhU3RyZWFtVHJhY2s+
JiYsIERPTVByb21pc2U8dm9pZD4mJikgZmluYWwgeyB9CisgICAgdm9pZCByZXBsYWNlVHJhY2so
UlRDUnRwU2VuZGVyJiwgUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVByb21pc2U8dm9pZD4m
JikgZmluYWw7CiAKICAgICB2b2lkIGVtdWxhdGVQbGF0Zm9ybUV2ZW50KGNvbnN0IFN0cmluZyYp
IGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3Bw
CmluZGV4IGJmM2MxZThhMTJhM2JiNmMwNzhmNDBjYWM2NWI0ZTE0MDU5NmExZWMuLjE1YTVlZmFk
Y2NkYWY1NDE5MmQ1MzE0ZThlZTExYTJmY2RhY2EzODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC01MSw2ICs1MSwxNCBAQCBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2U6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZShSZWY8UmVhbHRpbWVN
ZWRpYVNvdXJjZQogICAgIG1fYXVkaW9Tb3VyY2UtPmFkZE9ic2VydmVyKCp0aGlzKTsKIH0KIAor
Ym9vbCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNldFNvdXJjZShSZWY8UmVhbHRpbWVN
ZWRpYVNvdXJjZT4mJiBuZXdTb3VyY2UpCit7CisgICAgbV9hdWRpb1NvdXJjZS0+cmVtb3ZlT2Jz
ZXJ2ZXIoKnRoaXMpOworICAgIG1fYXVkaW9Tb3VyY2UgPSBXVEZNb3ZlKG5ld1NvdXJjZSk7Cisg
ICAgbV9hdWRpb1NvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOworICAgIHJldHVybiB0cnVlOwor
fQorCiB2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c3RvcCgpCiB7CiAgICAgbV9h
dWRpb1NvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZS5oCmluZGV4IDI2ZWU5YTMyNmY2NmFlNDkzNjdmMGMwMmY5M2I5ZGMy
NmVmNzhkY2UuLjMyZDQ5ZTVkYmUzY2JmYTkxNzhkNzRmOTY4ZWQ5Y2NhYTY2OTNlN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91
dGdvaW5nQXVkaW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKQEAgLTUxLDYgKzUxLDkgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0VHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVk
aW9UcmFja0ludGVyZmFjZT4mJiB0cmFjaykgeyBtX3RyYWNrID0gV1RGTW92ZSh0cmFjayk7IH0K
ICAgICB2b2lkIHN0b3AoKTsKIAorICAgIGJvb2wgc2V0U291cmNlKFJlZjxSZWFsdGltZU1lZGlh
U291cmNlPiYmKTsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlJiBzb3VyY2UoKSBjb25zdCB7IHJl
dHVybiBtX2F1ZGlvU291cmNlLmdldCgpOyB9CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgUmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcAppbmRleCA2MTMxMmY5
NGY2YjJkZGRiODk0MzIwMzk3Zjk1YTgwYjQ0NDIxZTEzLi42NWIxOGJjOGFlMzcwMTRkMGVkNWRk
NTcyMGU3YTgzNmYyN2YyMzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVv
U291cmNlLmNwcApAQCAtNDYsNiArNDYsMjAgQEAgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
OjpSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UoUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2UKICAg
ICBtX3ZpZGVvU291cmNlLT5hZGRPYnNlcnZlcigqdGhpcyk7CiB9CiAKK2Jvb2wgUmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlOjpzZXRTb3VyY2UoUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYg
bmV3U291cmNlKQoreworICAgIGF1dG8gY3VycmVudFNldHRpbmdzID0gbV92aWRlb1NvdXJjZS0+
c2V0dGluZ3MoKTsKKyAgICBhdXRvIG5ld1NldHRpbmdzID0gbmV3U291cmNlLT5zZXR0aW5ncygp
OworICAgIAorICAgIGlmIChjdXJyZW50U2V0dGluZ3Mud2lkdGgoKSA8IG5ld1NldHRpbmdzLndp
ZHRoKCkgfHwgY3VycmVudFNldHRpbmdzLmhlaWdodCgpIDwgbmV3U2V0dGluZ3MuaGVpZ2h0KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fdmlkZW9Tb3VyY2UtPnJlbW92ZU9ic2Vy
dmVyKCp0aGlzKTsKKyAgICBtX3ZpZGVvU291cmNlID0gV1RGTW92ZShuZXdTb3VyY2UpOworICAg
IG1fdmlkZW9Tb3VyY2UtPmFkZE9ic2VydmVyKCp0aGlzKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kwogdm9pZCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OnN0b3AoKQogewogICAgIG1fdmlk
ZW9Tb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdv
aW5nVmlkZW9Tb3VyY2UuaAppbmRleCA4YmIyMmFlNTllNmViZjU0NzllNmYyYzg0MGI3MzZhMDJj
ZmZlZjc1Li40MmM4OGE3Y2VhY2ZkZjI5MTEzYjkxNDBjNjhhN2EwZDg0ZDZmNTNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRn
b2luZ1ZpZGVvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5oCkBAIC00Niw2ICs0Niw4IEBAIHB1
YmxpYzoKICAgICB+UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlKCkgeyBzdG9wKCk7IH0KIAog
ICAgIHZvaWQgc3RvcCgpOworICAgIGJvb2wgc2V0U291cmNlKFJlZjxSZWFsdGltZU1lZGlhU291
cmNlPiYmKTsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlJiBzb3VyY2UoKSBjb25zdCB7IHJldHVy
biBtX3ZpZGVvU291cmNlLmdldCgpOyB9CiAKICAgICBpbnQgQWRkUmVmKCkgY29uc3QgZmluYWwg
eyByZWYoKTsgcmV0dXJuIHJlZkNvdW50KCk7IH0KICAgICBpbnQgUmVsZWFzZSgpIGNvbnN0IGZp
bmFsIHsgZGVyZWYoKTsgcmV0dXJuIHJlZkNvdW50KCk7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305119</attachid>
            <date>2017-03-22 12:57:25 -0700</date>
            <delta_ts>2017-03-23 13:28:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169841-20170322125724.patch</filename>
            <type>text/plain</type>
            <size>24916</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0MjUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDk1MzE3MDk0MmMzZmY0
MTM1MWZiMTdiNzkxNjI0NjY5ZTQ2ODU1My4uZjQ0YTcyMDE2NjhjOWM3NWJhZTYxZGJkODNkNDI4
ZTA2MmFhYTRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE3LTAzLTIyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgbGlid2VicnRjIGJh
Y2tlbmQgc3VwcG9ydCBmb3IgUlRDUnRwU2VuZGVyOjpyZXBsYWNlVHJhY2sKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTg0MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiB3ZWJydGMvYXVkaW8t
cmVwbGFjZS10cmFjay5odG1sCisgICAgICAgICAgICAgICB3ZWJydGMvdmlkZW8tcmVwbGFjZS10
cmFjay5odG1sCisKKyAgICAgICAgQWRkaW5nIHN1cHBvcnQgZm9yIHJlcGxhY2VUcmFjayBmb3Ig
YXVkaW8gYW5kIHZpZGVvIHNvdXJjZXMuCisgICAgICAgIFJlcGxhY2luZyB0cmFja3Mgd2lsbCBh
bHdheXMgc3VjY2VlZCBmb3IgYXVkaW8gc291cmNlcy4KKyAgICAgICAgRm9yIHZpZGVvIHRyYWNr
cywgaXQgd2lsbCBvbmx5IHN1Y2NlZWQgaWYgdGhlIHZpZGVvIHJlc29sdXRpb24gaXMgbm90IGdy
ZWF0ZXIuCisgICAgICAgIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCB3aWxsIGRlbGVn
YXRlIHRoZSB0cmFjayByZXBsYWNpbmcgYnkgcmVwbGFjaW5nIHRoZSBzb3VyY2Ugb2YgdGhlIG91
dGdvaW5nIHNvdXJjZXMgd2l0aCB0aGUgc291cmNlIHdyYXBwZWQgaW4gdGhlIHJlcGxhY2luZyB0
cmFjay4KKworICAgICAgICBWaWRlbyB0ZXN0IGlzIG5vdCBmdWxseSBwYXNzaW5nIGFzIHNpemUg
Y29uc3RyYWludHMgZm9yIG1vY2sgdmlkZW8gc291cmNlcyBhcmUgbm90IHByb3ZpZGluZyB0aGUg
cmlnaHQgdmlkZW8gc3RyZWFtIHJlc29sdXRpb24uCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFNlbmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTZW5kZXI6
OnJlcGxhY2VUcmFjayk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5k
ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5pZGw6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZDo6cmVwbGFjZVRyYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
T3V0Z29pbmdWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdv
aW5nVmlkZW9Tb3VyY2U6OnNldFNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmRyYXdUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tS
ZWFsdGltZVZpZGVvU291cmNlOjpnZW5lcmF0ZUZyYW1lKToKKwogMjAxNy0wMy0yMSAgU2VyZ2lv
IFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbU291cF0gIk9u
bHkgZnJvbSB3ZWJzaXRlcyBJIHZpc2l0IiBjb29raWUgcG9saWN5IGlzIGJyb2tlbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCmlu
ZGV4IDk2ODA1NDNjZDk3MzA0ZTYyZmY0MGRlOTQ4Nzk3ZTJmODhmYTExOWEuLjg0NWZlYzZlNTQw
ZWMzMjY5MmZjZThlZWE5MDRjZTlhMmIzMTE3OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKQEAgLTY1LDE3ICs2NSwzMiBA
QCB2b2lkIFJUQ1J0cFNlbmRlcjo6c2V0VHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJh
Y2spCiAgICAgbV90cmFjayA9IFdURk1vdmUodHJhY2spOwogfQogCi1FeGNlcHRpb25Pcjx2b2lk
PiBSVENSdHBTZW5kZXI6OnJlcGxhY2VUcmFjayhSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB3aXRo
VHJhY2ssIERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQorRXhjZXB0aW9uT3I8dm9pZD4gUlRD
UnRwU2VuZGVyOjpyZXBsYWNlVHJhY2soUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYgd2l0aFRy
YWNrLCBET01Qcm9taXNlPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoaXNTdG9wcGVkKCkp
IHsKICAgICAgICAgcHJvbWlzZS5yZWplY3QoSU5WQUxJRF9TVEFURV9FUlIpOwogICAgICAgICBy
ZXR1cm4geyB9OwogICAgIH0KIAorICAgIGlmICghd2l0aFRyYWNrKSB7CisgICAgICAgIGlmICht
X3RyYWNrKSB7CisgICAgICAgICAgICBtX3RyYWNrLT5zdG9wUHJvZHVjaW5nRGF0YSgpOworICAg
ICAgICAgICAgbV90cmFjayA9IG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgcHJvbWlzZS5y
ZXNvbHZlKCk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCiAgICAgaWYgKG1fdHJhY2tL
aW5kICE9IHdpdGhUcmFjay0+a2luZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlw
ZUVycm9yIH07CiAKLSAgICBtX2NsaWVudC0+cmVwbGFjZVRyYWNrKCp0aGlzLCBXVEZNb3ZlKHdp
dGhUcmFjayksIFdURk1vdmUocHJvbWlzZSkpOworICAgIGlmICghbV90cmFjaykgeworICAgICAg
ICBzZXRUcmFjayh3aXRoVHJhY2sucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIHByb21pc2Uu
cmVzb2x2ZSgpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIG1fY2xpZW50LT5y
ZXBsYWNlVHJhY2soKnRoaXMsIHdpdGhUcmFjay5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKHBy
b21pc2UpKTsKIAogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaAppbmRleCA1YjAzMmQ3M2I0YTdlYTYwNWI1
M2RlNTkyYjBkMTA1NDFmNjVjYjVlLi5hZTIxMmUzNDg2ZDEwNmI4NjhlMmVmZGEyNGI3N2Q4N2Fm
OTIwNjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFNlbmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU2VuZGVyLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcCgpIHsg
bV9jbGllbnQgPSBudWxscHRyOyB9CiAgICAgdm9pZCBzZXRUcmFjayhSZWY8TWVkaWFTdHJlYW1U
cmFjaz4mJik7CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiByZXBsYWNlVHJhY2soUmVmPE1lZGlh
U3RyZWFtVHJhY2s+JiYsIERPTVByb21pc2U8dm9pZD4mJik7CisgICAgRXhjZXB0aW9uT3I8dm9p
ZD4gcmVwbGFjZVRyYWNrKFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlPHZv
aWQ+JiYpOwogCiBwcml2YXRlOgogICAgIFJUQ1J0cFNlbmRlcihjb25zdCBTdHJpbmcmIHRyYWNr
S2luZCwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgUlRDUnRwU2VuZGVyQ2xpZW50
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFNlbmRlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNl
bmRlci5pZGwKaW5kZXggMDc4Njc0Njk1OGZjOTgyNmJkZWFlOWU2NDg5ZmY2YzgyYmZjYTBkYy4u
ZDkzNmNmY2JmZjc3NDdmMzY3MmE3MDJjYWRkMDcxZjE0ZmFmZjhmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmlkbApAQCAtMzks
NSArMzksNSBAQAogICAgIC8vIEZJWE1FIDE2OTY2MjogbWlzc2luZyBnZXRDYXBhYmlsaXRpZXMK
ICAgICAvLyBGSVhNRSAxNjk2NjI6IG1pc3Npbmcgc2V0UGFyYW1ldGVycwogICAgIC8vIEZJWE1F
IDE2OTY2MjogbWlzc2luZyBnZXRQYXJhbWV0ZXJzCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBQ
cm9taXNlPHZvaWQ+IHJlcGxhY2VUcmFjayhNZWRpYVN0cmVhbVRyYWNrIHdpdGhUcmFjayk7Cisg
ICAgW01heVRocm93RXhjZXB0aW9uXSBQcm9taXNlPHZvaWQ+IHJlcGxhY2VUcmFjayhNZWRpYVN0
cmVhbVRyYWNrPyB3aXRoVHJhY2spOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDI1MzBiMTA3MjVhMzNmNTY3NGUw
OTFhNTczYmViMWEyM2ZjNGRmMTIuLjliN2E4MjJkNDdlNTY3NWMxZDU3MGM3NDk4YzZlMTVlY2Ew
ZTM4YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rp
b25CYWNrZW5kLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2lmIFVTRShMSUJXRUJSVEMpCiAKICNp
bmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRl
ICJJY2VDYW5kaWRhdGUuaCIKICNpbmNsdWRlICJKU1JUQ1N0YXRzUmVwb3J0LmgiCiAjaW5jbHVk
ZSAiTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgiCkBAIC0zMjEsNiArMzIyLDUwIEBAIHZv
aWQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRSZW1vdGVTdHJlYW0oUmVmPE1l
ZGlhU3RyZWFtPiYmIG1lZGlhU3RyCiAgICAgbV9yZW1vdGVTdHJlYW1zLmFwcGVuZChXVEZNb3Zl
KG1lZGlhU3RyZWFtKSk7CiB9CiAKK3ZvaWQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5k
OjpyZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiBzZW5kZXIsIFJlZjxNZWRpYVN0cmVhbVRyYWNr
PiYmIHRyYWNrLCBET01Qcm9taXNlPHZvaWQ+JiYgcHJvbWlzZSkKK3sKKyAgICBBU1NFUlQoc2Vu
ZGVyLnRyYWNrKCkpOworICAgIGF1dG8qIGN1cnJlbnRUcmFjayA9IHNlbmRlci50cmFjaygpOwor
CisgICAgQVNTRVJUKGN1cnJlbnRUcmFjay0+c291cmNlKCkudHlwZSgpID09IHRyYWNrLT5zb3Vy
Y2UoKS50eXBlKCkpOworICAgIHN3aXRjaCAoY3VycmVudFRyYWNrLT5zb3VyY2UoKS50eXBlKCkp
IHsKKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6Ok5vbmU6CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBwcm9taXNlLnJlamVjdChJTlZBTElEX01PRElG
SUNBVElPTl9FUlIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGU6OkF1ZGlvOiB7CisgICAgICAgIGZvciAoYXV0byYgYXVkaW9Tb3VyY2UgOiBtX2F1
ZGlvU291cmNlcykgeworICAgICAgICAgICAgaWYgKCZhdWRpb1NvdXJjZS0+c291cmNlKCkgPT0g
JmN1cnJlbnRUcmFjay0+c291cmNlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWF1ZGlvU291
cmNlLT5zZXRTb3VyY2UodHJhY2stPnNvdXJjZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBw
cm9taXNlLnJlamVjdChJTlZBTElEX01PRElGSUNBVElPTl9FUlIpOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNlbmRlci5z
ZXRUcmFjayhXVEZNb3ZlKHRyYWNrKSk7CisgICAgICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZl
KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIHByb21pc2UucmVqZWN0KElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUik7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVv
OiB7CisgICAgICAgIGZvciAoYXV0byYgdmlkZW9Tb3VyY2UgOiBtX3ZpZGVvU291cmNlcykgewor
ICAgICAgICAgICAgaWYgKCZ2aWRlb1NvdXJjZS0+c291cmNlKCkgPT0gJmN1cnJlbnRUcmFjay0+
c291cmNlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXZpZGVvU291cmNlLT5zZXRTb3VyY2Uo
dHJhY2stPnNvdXJjZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChJ
TlZBTElEX01PRElGSUNBVElPTl9FUlIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNlbmRlci5zZXRUcmFjayhXVEZNb3Zl
KHRyYWNrKSk7CisgICAgICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHByb21pc2Uu
cmVqZWN0KElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUik7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShMSUJX
RUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZC5oCmluZGV4IDg1NDI2Y2NmNjg5OTJkZjFjNTJhNTAwZjFhMjc2MWJlNDE2M2UxNTIuLmI2
MzJkOGY0NDliMzAzMDAxOTQ4ZmIxNWFlMTBjNjk4M2NjNjQxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCkBAIC02OSw4ICs2OSw3
IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gY3VycmVudFJl
bW90ZURlc2NyaXB0aW9uKCkgY29uc3QgZmluYWw7CiAgICAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNj
cmlwdGlvbj4gcGVuZGluZ1JlbW90ZURlc2NyaXB0aW9uKCkgY29uc3QgZmluYWw7CiAKLSAgICAv
LyBGSVhNRTogQVBJIHRvIGltcGxlbWVudCBmb3IgcmVhbAotICAgIHZvaWQgcmVwbGFjZVRyYWNr
KFJUQ1J0cFNlbmRlciYsIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlPHZvaWQ+
JiYpIGZpbmFsIHsgfQorICAgIHZvaWQgcmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYsIFJlZjxN
ZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlPHZvaWQ+JiYpIGZpbmFsOwogCiAgICAgdm9p
ZCBlbXVsYXRlUGxhdGZvcm1FdmVudChjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcAppbmRleCAzNjg3YTIwODM2NGQ5
YTJkYzMyODZhMzEwOTkwMTczNTBhZGFmMjk3Li5jNTQ0ZTBiM2JhMGMyYTc2NWU0YjMxYjVjZGMw
ZDhiMjE2NDVhYjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmNwcApAQCAtNTEsNiArNTEsMTQgQEAgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpSZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2UoUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2UKICAgICBtX2F1
ZGlvU291cmNlLT5hZGRPYnNlcnZlcigqdGhpcyk7CiB9CiAKK2Jvb2wgUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlOjpzZXRTb3VyY2UoUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgbmV3U291
cmNlKQoreworICAgIG1fYXVkaW9Tb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKKyAgICBt
X2F1ZGlvU291cmNlID0gV1RGTW92ZShuZXdTb3VyY2UpOworICAgIG1fYXVkaW9Tb3VyY2UtPmFk
ZE9ic2VydmVyKCp0aGlzKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBSZWFsdGltZU91
dGdvaW5nQXVkaW9Tb3VyY2U6OnN0b3AoKQogewogICAgIG1fYXVkaW9Tb3VyY2UtPnJlbW92ZU9i
c2VydmVyKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaApp
bmRleCAyNmVlOWEzMjZmNjZhZTQ5MzY3ZjBjMDJmOTNiOWRjMjZlZjc4ZGNlLi4zMmQ0OWU1ZGJl
M2NiZmE5MTc4ZDc0Zjk2OGVkOWNjYWE2NjkzZTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZS5oCkBAIC01MSw2ICs1MSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFRyYWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYg
dHJhY2spIHsgbV90cmFjayA9IFdURk1vdmUodHJhY2spOyB9CiAgICAgdm9pZCBzdG9wKCk7CiAK
KyAgICBib29sIHNldFNvdXJjZShSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJik7CisgICAgUmVh
bHRpbWVNZWRpYVNvdXJjZSYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb1NvdXJjZS5n
ZXQoKTsgfQorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZShSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
T3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAKaW5kZXggYzExZjllMjVmNGQwZTljMTg5Y2YzMTM5OWZh
NTNmMDI0NDJkMmVkMC4uOTI2ZWYwYjIyNDhkN2Y2MWY1Yjk2NmRkZjQ1Mjk2ZWQ2N2M2OTg5OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAKQEAgLTQ2LDYg
KzQ2LDIyIEBAIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6UmVhbHRpbWVPdXRnb2luZ1Zp
ZGVvU291cmNlKFJlZjxSZWFsdGltZU1lZGlhU291cmNlCiAgICAgbV92aWRlb1NvdXJjZS0+YWRk
T2JzZXJ2ZXIoKnRoaXMpOwogfQogCitib29sIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6
c2V0U291cmNlKFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIG5ld1NvdXJjZSkKK3sKKyAgICBp
ZiAoIW1faW5pdGlhbFNldHRpbmdzKQorICAgICAgICBtX2luaXRpYWxTZXR0aW5ncyA9IG1fdmlk
ZW9Tb3VyY2UtPnNldHRpbmdzKCk7CisKKyAgICBhdXRvIG5ld1NldHRpbmdzID0gbmV3U291cmNl
LT5zZXR0aW5ncygpOworCisgICAgaWYgKG1faW5pdGlhbFNldHRpbmdzLT53aWR0aCgpIDwgbmV3
U2V0dGluZ3Mud2lkdGgoKSB8fCBtX2luaXRpYWxTZXR0aW5ncy0+aGVpZ2h0KCkgPCBuZXdTZXR0
aW5ncy5oZWlnaHQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV92aWRlb1NvdXJj
ZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOworICAgIG1fdmlkZW9Tb3VyY2UgPSBXVEZNb3ZlKG5l
d1NvdXJjZSk7CisgICAgbV92aWRlb1NvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOworICAgIHJl
dHVybiB0cnVlOworfQorCiB2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6c3RvcCgp
CiB7CiAgICAgbV92aWRlb1NvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29p
bmdWaWRlb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5oCmluZGV4IDZjZjAyMDhlMTNhNTU0N2RmNjRj
NmZmNGNmNDg1NGMxM2FjMTE5ZTUuLmMyMDBlYzY1OWVlYzBiOWQwZDNiOWRiMzlmZDA3Yjk5ZWE4
MDA1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmgKQEAgLTM2
LDYgKzM2LDcgQEAKICNpbmNsdWRlIDx3ZWJydGMvYmFzZS9vcHRpb25hbC5oPgogI2luY2x1ZGUg
PHdlYnJ0Yy9jb21tb25fdmlkZW8vaW5jbHVkZS9pNDIwX2J1ZmZlcl9wb29sLmg+CiAjaW5jbHVk
ZSA8d2VicnRjL21lZGlhL2Jhc2UvdmlkZW9zaW5raW50ZXJmYWNlLmg+CisjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ2LDYgKzQ3LDggQEAgcHVibGljOgogICAgIH5SZWFsdGlt
ZU91dGdvaW5nVmlkZW9Tb3VyY2UoKSB7IHN0b3AoKTsgfQogCiAgICAgdm9pZCBzdG9wKCk7Cisg
ICAgYm9vbCBzZXRTb3VyY2UoUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYpOworICAgIFJlYWx0
aW1lTWVkaWFTb3VyY2UmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9Tb3VyY2UuZ2V0
KCk7IH0KIAogICAgIGludCBBZGRSZWYoKSBjb25zdCBmaW5hbCB7IHJlZigpOyByZXR1cm4gcmVm
Q291bnQoKTsgfQogICAgIGludCBSZWxlYXNlKCkgY29uc3QgZmluYWwgeyBkZXJlZigpOyByZXR1
cm4gcmVmQ291bnQoKTsgfQpAQCAtODIsNiArODUsNyBAQCBwcml2YXRlOgogICAgIFJlZjxSZWFs
dGltZU1lZGlhU291cmNlPiBtX3ZpZGVvU291cmNlOwogICAgIGJvb2wgbV9lbmFibGVkIHsgdHJ1
ZSB9OwogICAgIGJvb2wgbV9tdXRlZCB7IGZhbHNlIH07CisgICAgc3RkOjpvcHRpb25hbDxSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3M+IG1faW5pdGlhbFNldHRpbmdzOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAppbmRleCA1NGYzMDIxNGUxNDJkNzRjYTBj
MDVhNTM3MjkzZmViMmY4NGFkZGQ3Li5iMTdkODk5ZTNiOTc2NjcwMjdiYjVmYjI5MmU0ZmVkN2I5
NTdhOTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZVZpZGVvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZVZpZGVvU291cmNlLmNwcApAQCAtMzI3LDExICszMjcsMTEgQEAgdm9pZCBNb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQog
ICAgIEZsb2F0UG9pbnQgYmlwQm9wTG9jYXRpb24oc2l6ZS53aWR0aCgpICogLjYsIHNpemUuaGVp
Z2h0KCkgKiAuNik7CiAgICAgdW5zaWduZWQgZnJhbWVNb2QgPSBtX2ZyYW1lTnVtYmVyICUgNjA7
CiAgICAgaWYgKGZyYW1lTW9kIDw9IDE1KSB7Ci0gICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9y
KENvbG9yOjpncmF5KTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmN5YW4p
OwogICAgICAgICBTdHJpbmcgYmlwKEFTQ0lJTGl0ZXJhbCgiQmlwIikpOwogICAgICAgICBjb250
ZXh0LmRyYXdUZXh0KG1fYmlwQm9wRm9udCwgVGV4dFJ1bihTdHJpbmdWaWV3KGJpcCkpLCBiaXBC
b3BMb2NhdGlvbik7CiAgICAgfSBlbHNlIGlmIChmcmFtZU1vZCA+IDMwICYmIGZyYW1lTW9kIDw9
IDQ1KSB7Ci0gICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSk7CisgICAg
ICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp5ZWxsb3cpOwogICAgICAgICBTdHJpbmcg
Ym9wKEFTQ0lJTGl0ZXJhbCgiQm9wIikpOwogICAgICAgICBjb250ZXh0LmRyYXdUZXh0KG1fYmlw
Qm9wRm9udCwgVGV4dFJ1bihTdHJpbmdWaWV3KGJvcCkpLCBiaXBCb3BMb2NhdGlvbik7CiAgICAg
fQpAQCAtMzQ4LDcgKzM0OCw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmdlbmVy
YXRlRnJhbWUoKQogCiAgICAgSW50U2l6ZSBzaXplID0gdGhpcy0+c2l6ZSgpOwogICAgIEZsb2F0
UmVjdCBmcmFtZVJlY3QoRmxvYXRQb2ludCgpLCBzaXplKTsKLSAgICBjb250ZXh0LmZpbGxSZWN0
KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUpLCBDb2xvcjo6YmxhY2spOworICAgIGNvbnRl
eHQuZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSksIGZhY2luZ01vZGUoKSA9
PSAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVc2VyID8gQ29sb3I6OmJsYWNrIDogQ29s
b3I6OmdyYXkpOwogCiAgICAgaWYgKCFtX211dGVkICYmIG1fZW5hYmxlZCkgewogICAgICAgICBk
cmF3VGV4dChjb250ZXh0KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzZjJiYjcxZGU1ZGEwMDZiYmNiYzJkNzMzNzg2MTcz
MDExMzkyNTU4Li5kYjlmMjQ5Nzg5NDcwMmM3NzcyNDIzOTg3YmRlZjM2OGJmZTBjNWVhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMDMtMjIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBsaWJ3ZWJydGMgYmFja2VuZCBzdXBwb3J0IGZvciBSVENS
dHBTZW5kZXI6OnJlcGxhY2VUcmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTY5ODQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiB3ZWJydGMvYXVkaW8tcmVwbGFjZS10cmFjay1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHdlYnJ0Yy9hdWRpby1yZXBsYWNlLXRyYWNrLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHdlYnJ0Yy92aWRlby1yZXBsYWNlLXRyYWNrLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogd2VicnRjL3ZpZGVvLXJlcGxhY2UtdHJhY2suaHRtbDogQWRkZWQuCisK
IDIwMTctMDMtMjIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQgR1RLKyBnYXJkZW5pbmcuIFJlYmFzZWxpbmUgZmFzdC90ZXh0
L2h5cGhlbmF0ZS1saW1pdC1saW5lcy5odG1sLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
cnRjL2F1ZGlvLXJlcGxhY2UtdHJhY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2VicnRj
L2F1ZGlvLXJlcGxhY2UtdHJhY2stZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3YjliODFmOThl
MDI4ZTA3NDkyZTljYWExNmU0YWY3NmFkYTQzYjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJydGMvYXVkaW8tcmVwbGFjZS10cmFjay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwz
IEBACisKK1BBU1MgUmVwbGFjaW5nIGF1ZGlvIHRyYWNrIGZyb20gYSBwZWVyIGNvbm5lY3Rpb24g
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9hdWRpby1yZXBsYWNlLXRyYWNrLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJydGMvYXVkaW8tcmVwbGFjZS10cmFjay5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmEzZmU0YmM3NThiNzA3Mzk0MDdmNjJmMWVkOTZjNTEyNjRmYzIyOGEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMvYXVkaW8tcmVwbGFjZS10cmFjay5odG1sCkBAIC0w
LDAgKzEsNTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+CisgICAgPHRpdGxlPlRlc3RpbmcgbG9jYWwgYXVkaW8gY2FwdHVyZSBw
bGF5YmFjayBjYXVzZXMgInBsYXlpbmciIGV2ZW50IHRvIGZpcmU8L3RpdGxlPgorICAgIDxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjID0icm91dGluZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAg
cHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlck1lZGlhUGVybWlzc2lvbih0cnVlKTsKKwor
ICAgICAgICB2YXIgc2VuZGVyOworICAgICAgICB2YXIgZmlyc1N0cmVhbTsKKyAgICAgICAgdmFy
IHNlY29uZFN0cmVhbTsKKyAgICAgICAgdmFyIHJlbW90ZVN0cmVhbTsKKyAgICAgICAgcmV0dXJu
IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgYXVkaW86IHsgc2FtcGxlUmF0
ZTogeyBleGFjdDogNDgwMDAgfSB9IH0pLnRoZW4oKHN0cmVhbSkgPT4geworICAgICAgICAgICAg
Zmlyc3RTdHJlYW0gPSBzdHJlYW07CisgICAgICAgICAgICByZXR1cm4gbmF2aWdhdG9yLm1lZGlh
RGV2aWNlcy5nZXRVc2VyTWVkaWEoeyBhdWRpbzogeyBzYW1wbGVSYXRlOiB7IGV4YWN0OiA0ODAw
MCB9IH0gfSk7CisgICAgICAgIH0pLnRoZW4oKHN0cmVhbSkgPT4geworICAgICAgICAgICAgc2Vj
b25kU3RyZWFtID0gc3RyZWFtOworICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgICAgICAgICAgICAgaW50ZXJuYWxzLnVzZU1vY2tSVENQZWVyQ29ubmVjdGlvbkZhY3Rvcnko
IlR3b1JlYWxQZWVyQ29ubmVjdGlvbnMiKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlz
ZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAgICAgICAgY3JlYXRlQ29ubmVjdGlv
bnMoKGZpcnN0Q29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgICAgICAgICBzZW5kZXIgPSBm
aXJzdENvbm5lY3Rpb24uYWRkVHJhY2soZmlyc3RTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXSwg
Zmlyc3RTdHJlYW0pOworICAgICAgICAgICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9uKSA9PiB7
CisgICAgICAgICAgICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24ub250cmFjayA9ICh0cmFja0V2
ZW50KSA9PiB7IHJlc29sdmUodHJhY2tFdmVudC5zdHJlYW1zWzBdKTsgfTsKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdCgiVGVzdCB0
aW1lZCBvdXQiKSwgNTAwMCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSkudGhlbigoc3Ry
ZWFtKSA9PiB7CisgICAgICAgICAgICByZW1vdGVTdHJlYW0gPSBzdHJlYW07CisgICAgICAgICAg
ICByZXR1cm4gYW5hbHlzZUF1ZGlvKHJlbW90ZVN0cmVhbSwgMTAwMCk7CisgICAgICAgIH0pLnRo
ZW4oKHJlc3VsdHMpID0+IHsKKyAgICAgICAgICAgIGFzc2VydF90cnVlKHJlc3VsdHMuaGVhcmRI
dW0sICJoZWFyZCBodW0iKTsKKyAgICAgICAgICAgIHJldHVybiBzZW5kZXIucmVwbGFjZVRyYWNr
KHNlY29uZFN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdLCBzZWNvbmRTdHJlYW0pOworICAgICAg
ICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIGFzc2VydF90cnVlKHNlbmRlci50cmFjayA9
PT0gc2Vjb25kU3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF0pOworICAgICAgICAgICAgcmV0dXJu
IHdhaXRGb3IoNTAwKTsKKyAgICAgICAgfSkudGhlbigocmVzdWx0cykgPT4geworICAgICAgICAg
ICAgcmV0dXJuIGFuYWx5c2VBdWRpbyhyZW1vdGVTdHJlYW0sIDEwMDApOworICAgICAgICB9KS50
aGVuKChyZXN1bHRzKSA9PiB7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZShyZXN1bHRzLmhlYXJk
SHVtLCAiaGVhcmQgaHVtIik7CisgICAgICAgIH0pOworICAgIH0sICJSZXBsYWNpbmcgYXVkaW8g
dHJhY2sgZnJvbSBhIHBlZXIgY29ubmVjdGlvbiIpOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMv
dmlkZW8tcmVwbGFjZS10cmFjay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJydGMvdmlk
ZW8tcmVwbGFjZS10cmFjay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODM1OTkxMzljODg0MTNi
N2E5YmVhMWZiOGRiYzkzOTFjYTlmMWM5MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYnJ0Yy92aWRlby1yZXBsYWNlLXRyYWNrLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAK
KworUEFTUyBTd2l0Y2hpbmcgZnJvbSBmcm9udCB0byBiYWNrIGNhbWVyYSAKK0ZBSUwgU3dpdGNo
aW5nIGZyb20gZnJvbnQgdG8gYmFjayBjYW1lcmEsIHdpdGggbG93ZXIgcmVzb2x1dGlvbiBhc3Nl
cnRfdHJ1ZTogYmFja1N0cmVhbSBzaG91bGQgYmUgc21hbGxlciBleHBlY3RlZCB0cnVlIGdvdCBm
YWxzZQorRkFJTCBTd2l0Y2hpbmcgZnJvbSBmcm9udCB0byBiYWNrIGNhbWVyYSwgd2l0aCBoaWdo
ZXIgcmVzb2x1dGlvbiBhc3NlcnRfdHJ1ZTogZnJvbnQgc3RyZWFtIHNob3VsZCBiZSBzbWFsbGVy
IGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0
Yy92aWRlby1yZXBsYWNlLXRyYWNrLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tcmVw
bGFjZS10cmFjay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmYzMxNWJkY2I4YjYzZjMzMTVjMjhiM2ZlZTA0
NmQ3YmMzMmU4ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8t
cmVwbGFjZS10cmFjay5odG1sCkBAIC0wLDAgKzEsMTc4IEBACis8IWRvY3R5cGUgaHRtbD4KKzxo
dG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgICAg
IDx0aXRsZT5UZXN0aW5nIGJhc2ljIHZpZGVvIGV4Y2hhbmdlIGZyb20gb2ZmZXJlciB0byByZWNl
aXZlcjwvdGl0bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+Cis8ZGl2
IGlkPSJsb2ciPjwvZGl2PgorICAgICAgICA8dmlkZW8gaWQ9InZpZGVvIiBhdXRvcGxheT0iIj48
L3ZpZGVvPgorICAgICAgICA8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI2NDAiIGhlaWdodD0i
NDgwIj48L2NhbnZhcz4KKyAgICAgICAgPHNjcmlwdCBzcmMgPSJyb3V0aW5lcy5qcyI+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQ+Cit2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2
aWRlbyIpOworY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOworCitm
dW5jdGlvbiBncmFiSW1hZ2VQaXhlbHMoKQoreworICAgIGNhbnZhcy53aWR0aCA9IHZpZGVvLnZp
ZGVvV2lkdGg7CisgICAgY2FudmFzLmhlaWdodCA9IHZpZGVvLnZpZGVvSGVpZ2h0OworICAgIGNh
bnZhcy5nZXRDb250ZXh0KCcyZCcpLmRyYXdJbWFnZSh2aWRlbywgMCwgMCwgY2FudmFzLndpZHRo
LCBjYW52YXMuaGVpZ2h0KTsKKworICAgIGltYWdlRGF0YSA9IGNhbnZhcy5nZXRDb250ZXh0KCcy
ZCcpLmdldEltYWdlRGF0YSgyMCwgMjAsIDIsIDIpOworICAgIHJldHVybiBpbWFnZURhdGEuZGF0
YTsKKyB9CisKK2Z1bmN0aW9uIHRlc3RGcm9udENhbWVyYUltYWdlKCkKK3sKKyAgICBkYXRhID0g
Z3JhYkltYWdlUGl4ZWxzKCk7CisKKyAgICBhc3NlcnRfdHJ1ZShkYXRhWzBdIDwgMjApOworICAg
IGFzc2VydF90cnVlKGRhdGFbMV0gPCAyMCk7CisgICAgYXNzZXJ0X3RydWUoZGF0YVsyXSA8IDIw
KTsKK30KKworZnVuY3Rpb24gdGVzdEJhY2tDYW1lcmFJbWFnZSgpCit7CisgICAgZGF0YSA9IGdy
YWJJbWFnZVBpeGVscygpOworCisgICAgYXNzZXJ0X3RydWUoZGF0YVswXSA+IDEwMCk7CisgICAg
YXNzZXJ0X3RydWUoZGF0YVsxXSA+IDEwMCk7CisgICAgYXNzZXJ0X3RydWUoZGF0YVsyXSA+IDEw
MCk7CisKKyAgICBhc3NlcnRfdHJ1ZShkYXRhWzBdIDwgMjAwKTsKKyAgICBhc3NlcnRfdHJ1ZShk
YXRhWzFdIDwgMjAwKTsKKyAgICBhc3NlcnRfdHJ1ZShkYXRhWzJdIDwgMjAwKTsKK30KKworcHJv
bWlzZV90ZXN0KCh0ZXN0KSA9PiB7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICB0ZXN0UnVubmVyLnNldFVzZXJNZWRpYVBlcm1pc3Npb24odHJ1ZSk7CisKKyAgICB2YXIgc2Vu
ZGVyOworICAgIHZhciBmcm9udFN0cmVhbTsKKyAgICB2YXIgYmFja1N0cmVhbTsKKyAgICByZXR1
cm4gbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoeyB2aWRlbzogeyBmYWNpbmdN
b2RlOiB7IGV4YWN0OiBbInVzZXIiXSB9IH0gfSkudGhlbigoc3RyZWFtKSA9PiB7CisgICAgICAg
IGZyb250U3RyZWFtID0gc3RyZWFtOworICAgICAgICByZXR1cm4gbmF2aWdhdG9yLm1lZGlhRGV2
aWNlcy5nZXRVc2VyTWVkaWEoeyB2aWRlbzogeyBmYWNpbmdNb2RlOiB7IGV4YWN0OiBbImVudmly
b25tZW50Il0gfSB9IH0pOworICAgIH0pLnRoZW4oKHN0cmVhbSkgPT4geworICAgICAgICBiYWNr
U3RyZWFtID0gc3RyZWFtOworICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICByZXR1cm4gbmV3
IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpCisgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnVzZU1vY2tSVENQZWVyQ29ubmVj
dGlvbkZhY3RvcnkoIlR3b1JlYWxQZWVyQ29ubmVjdGlvbnMiKTsKKworICAgICAgICAgICAgY3Jl
YXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgICAgIHNl
bmRlciA9IGZpcnN0Q29ubmVjdGlvbi5hZGRUcmFjayhmcm9udFN0cmVhbS5nZXRWaWRlb1RyYWNr
cygpWzBdLCBmcm9udFN0cmVhbSk7CisgICAgICAgICAgICB9LCAoc2Vjb25kQ29ubmVjdGlvbikg
PT4geworICAgICAgICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24ub250cmFjayA9ICh0cmFja0V2
ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJhY2tFdmVudC5zdHJlYW1z
WzBdKTsKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBz
ZXRUaW1lb3V0KCgpID0+IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQiKSwgNTAwMCk7CisgICAgICAg
IH0pOworICAgIH0pLnRoZW4oKHJlbW90ZVN0cmVhbSkgPT4geworICAgICAgICB2aWRlby5zcmNP
YmplY3QgPSByZW1vdGVTdHJlYW07CisgICAgICAgIHJldHVybiB2aWRlby5wbGF5KCk7CisgICAg
fSkudGhlbigoKSA9PiB7CisgICAgICAgIHRlc3RGcm9udENhbWVyYUltYWdlKCk7CisgICAgfSku
dGhlbigoKSA9PiB7CisgICAgICAgIHJldHVybiBzZW5kZXIucmVwbGFjZVRyYWNrKGJhY2tTdHJl
YW0uZ2V0VmlkZW9UcmFja3MoKVswXSk7CisgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgIGFz
c2VydF90cnVlKHNlbmRlci50cmFjayA9PT0gYmFja1N0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBd
KTsKKyAgICAgICAgcmV0dXJuIHdhaXRGb3IoNTAwKTsKKyAgICB9KS50aGVuKCgpID0+IHsKKyAg
ICAgICAgdGVzdEJhY2tDYW1lcmFJbWFnZSgpOworICAgIH0pOworfSwgIlN3aXRjaGluZyBmcm9t
IGZyb250IHRvIGJhY2sgY2FtZXJhIik7CisKK3Byb21pc2VfdGVzdCgodGVzdCkgPT4geworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRVc2VyTWVkaWFQ
ZXJtaXNzaW9uKHRydWUpOworCisgICAgdmFyIHNlbmRlcjsKKyAgICB2YXIgZnJvbnRTdHJlYW07
CisgICAgdmFyIGJhY2tTdHJlYW07CisKKyAgICByZXR1cm4gbmF2aWdhdG9yLm1lZGlhRGV2aWNl
cy5nZXRVc2VyTWVkaWEoeyB2aWRlbzogeyBoZWlnaHQ6IHsgbWluOiA0MDAgfSwgZmFjaW5nTW9k
ZTogeyBleGFjdDogWyJ1c2VyIl0gfSB9IH0pLnRoZW4oKHN0cmVhbSkgPT4geworICAgICAgICBm
cm9udFN0cmVhbSA9IHN0cmVhbTsKKyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5tZWRpYURldmlj
ZXMuZ2V0VXNlck1lZGlhKHsgdmlkZW86IHsgaGVpZ2h0OiB7IG1heDogNDAwIH0sIGZhY2luZ01v
ZGU6IHsgZXhhY3Q6IFsiZW52aXJvbm1lbnQiXSB9IH0gfSk7CisgICAgfSkudGhlbigoc3RyZWFt
KSA9PiB7CisgICAgICAgIGJhY2tTdHJlYW0gPSBzdHJlYW07CisgICAgICAgIGFzc2VydF90cnVl
KGZyb250U3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0uZ2V0U2V0dGluZ3MoKS5oZWlnaHQgPj0g
NDAwLCAiZnJvbnRTdHJlYW0gc2hvdWxkIGJlIGJpZ2dlciIpOworICAgICAgICBhc3NlcnRfdHJ1
ZShiYWNrU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0uZ2V0U2V0dGluZ3MoKS5oZWlnaHQgPCA0
MDAsICJiYWNrU3RyZWFtIHNob3VsZCBiZSBzbWFsbGVyIik7CisgICAgfSkudGhlbigoKSA9PiB7
CisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAg
ICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMu
dXNlTW9ja1JUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeSgiVHdvUmVhbFBlZXJDb25uZWN0aW9ucyIp
OworCisgICAgICAgICAgICBjcmVhdGVDb25uZWN0aW9ucygoZmlyc3RDb25uZWN0aW9uKSA9PiB7
CisgICAgICAgICAgICAgICAgc2VuZGVyID0gZmlyc3RDb25uZWN0aW9uLmFkZFRyYWNrKGZyb250
U3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0sIGZyb250U3RyZWFtKTsKKyAgICAgICAgICAgIH0s
IChzZWNvbmRDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlv
bi5vbnRyYWNrID0gKHRyYWNrRXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgcmVzb2x2
ZSh0cmFja0V2ZW50LnN0cmVhbXNbMF0pOworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0IHRpbWVkIG91
dCIpLCA1MDAwKTsKKyAgICAgICAgfSk7CisgICAgfSkudGhlbigocmVtb3RlU3RyZWFtKSA9PiB7
CisgICAgICAgIHZpZGVvLnNyY09iamVjdCA9IHJlbW90ZVN0cmVhbTsKKyAgICAgICAgcmV0dXJu
IHZpZGVvLnBsYXkoKTsKKyAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgdGVzdEZyb250Q2Ft
ZXJhSW1hZ2UoKTsKKyAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgcmV0dXJuIHNlbmRlci5y
ZXBsYWNlVHJhY2soYmFja1N0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdKTsKKyAgICB9KS50aGVu
KCgpID0+IHsKKyAgICAgICAgcmV0dXJuIHdhaXRGb3IoNTAwKTsKKyAgICB9KS50aGVuKCgpID0+
IHsKKyAgICAgICAgdGVzdEJhY2tDYW1lcmFJbWFnZSgpOworICAgIH0pOworfSwgIlN3aXRjaGlu
ZyBmcm9tIGZyb250IHRvIGJhY2sgY2FtZXJhLCB3aXRoIGxvd2VyIHJlc29sdXRpb24iKTsKKwor
cHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLnNldFVzZXJNZWRpYVBlcm1pc3Npb24odHJ1ZSk7CisKKyAgICB2YXIg
c2VuZGVyOworICAgIHZhciBmcm9udFN0cmVhbTsKKyAgICB2YXIgYmFja1N0cmVhbTsKKworICAg
IHJldHVybiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7IHZpZGVvOiB7IGhl
aWdodDogeyBtYXg6IDQwMCB9LCBmYWNpbmdNb2RlOiB7IGV4YWN0OiBbInVzZXIiXSB9IH0gfSku
dGhlbigoc3RyZWFtKSA9PiB7CisgICAgICAgIGZyb250U3RyZWFtID0gc3RyZWFtOworICAgICAg
ICByZXR1cm4gbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoeyB2aWRlbzogeyBo
ZWlnaHQ6IHsgbWluOiA0MDAgfSwgZmFjaW5nTW9kZTogeyBleGFjdDogWyJlbnZpcm9ubWVudCJd
IH0gfSB9KTsKKyAgICB9KS50aGVuKChzdHJlYW0pID0+IHsKKyAgICAgICAgYmFja1N0cmVhbSA9
IHN0cmVhbTsKKyAgICAgICAgYXNzZXJ0X3RydWUoZnJvbnRTdHJlYW0uZ2V0VmlkZW9UcmFja3Mo
KVswXS5nZXRTZXR0aW5ncygpLmhlaWdodCA8IDQwMCwgImZyb250IHN0cmVhbSBzaG91bGQgYmUg
c21hbGxlciIpOworICAgICAgICBhc3NlcnRfdHJ1ZShiYWNrU3RyZWFtLmdldFZpZGVvVHJhY2tz
KClbMF0uZ2V0U2V0dGluZ3MoKS5oZWlnaHQgPj0gNDAwLCAiYmFjayBzdHJlYW0gc2hvdWxkIGJl
IGJpZ2dlciIpOworICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICByZXR1cm4gbmV3IFByb21p
c2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpCisgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnVzZU1vY2tSVENQZWVyQ29ubmVjdGlvbkZh
Y3RvcnkoIlR3b1JlYWxQZWVyQ29ubmVjdGlvbnMiKTsKKworICAgICAgICAgICAgY3JlYXRlQ29u
bmVjdGlvbnMoKGZpcnN0Q29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgICAgIHNlbmRlciA9
IGZpcnN0Q29ubmVjdGlvbi5hZGRUcmFjayhmcm9udFN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBd
LCBmcm9udFN0cmVhbSk7CisgICAgICAgICAgICB9LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4gewor
ICAgICAgICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24ub250cmFjayA9ICh0cmFja0V2ZW50KSA9
PiB7CisgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJhY2tFdmVudC5zdHJlYW1zWzBdKTsK
KyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBzZXRUaW1l
b3V0KCgpID0+IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQiKSwgNTAwMCk7CisgICAgICAgIH0pOwor
ICAgIH0pLnRoZW4oKHJlbW90ZVN0cmVhbSkgPT4geworICAgICAgICB2aWRlby5zcmNPYmplY3Qg
PSByZW1vdGVTdHJlYW07CisgICAgICAgIHJldHVybiB2aWRlby5wbGF5KCk7CisgICAgfSkudGhl
bigoKSA9PiB7CisgICAgICAgIHRlc3RGcm9udENhbWVyYUltYWdlKCk7CisgICAgfSkudGhlbigo
KSA9PiB7CisgICAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgIkludmFsaWRNb2Rp
ZmljYXRpb25FcnJvciIsIHNlbmRlci5yZXBsYWNlVHJhY2soYmFja1N0cmVhbS5nZXRWaWRlb1Ry
YWNrcygpWzBdKSk7CisgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgIHJldHVybiB3YWl0Rm9y
KDUwMCk7CisgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgIHRlc3RCYWNrQ2FtZXJhSW1hZ2Uo
KTsKKyAgICB9KTsKK30sICJTd2l0Y2hpbmcgZnJvbSBmcm9udCB0byBiYWNrIGNhbWVyYSwgd2l0
aCBoaWdoZXIgcmVzb2x1dGlvbiIpOworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8
L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305221</attachid>
            <date>2017-03-23 13:28:16 -0700</date>
            <delta_ts>2017-03-24 11:01:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169841-20170323132816.patch</filename>
            <type>text/plain</type>
            <size>32241</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0MzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjZmNjE3ZTEyMGU1ZGMz
NTI0MGUxNjMxZjI1NDBkYjIxN2ZhNTVhYS4uNDc2ZmMwZDA0Y2QxZjE0OTRhODI2YjBjODUyNGNl
N2Y0OGM5ZDllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE3LTAzLTIzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgbGlid2VicnRjIGJh
Y2tlbmQgc3VwcG9ydCBmb3IgUlRDUnRwU2VuZGVyOjpyZXBsYWNlVHJhY2sKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTg0MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiB3ZWJydGMvYXVkaW8t
cmVwbGFjZS10cmFjay5odG1sCisgICAgICAgICAgICAgICB3ZWJydGMvdmlkZW8tcmVwbGFjZS10
cmFjay5odG1sCisKKyAgICAgICAgQWRkaW5nIHN1cHBvcnQgZm9yIHJlcGxhY2VUcmFjayBmb3Ig
YXVkaW8gYW5kIHZpZGVvIHNvdXJjZXMuCisgICAgICAgIFJlcGxhY2luZyB0cmFja3Mgd2lsbCBh
bHdheXMgc3VjY2VlZCBmb3IgYXVkaW8gc291cmNlcy4KKyAgICAgICAgRm9yIHZpZGVvIHRyYWNr
cywgaXQgd2lsbCBvbmx5IHN1Y2NlZWQgaWYgdGhlIHZpZGVvIHJlc29sdXRpb24gaXMgbm90IGdy
ZWF0ZXIuCisgICAgICAgIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCB3aWxsIGRlbGVn
YXRlIHRoZSB0cmFjayByZXBsYWNpbmcgYnkgcmVwbGFjaW5nIHRoZSBzb3VyY2Ugb2YgdGhlIG91
dGdvaW5nIHNvdXJjZXMgd2l0aCB0aGUgc291cmNlIHdyYXBwZWQgaW4gdGhlIHJlcGxhY2luZyB0
cmFjay4KKworICAgICAgICBWaWRlbyB0ZXN0IGlzIG5vdCBmdWxseSBwYXNzaW5nIGFzIHNpemUg
Y29uc3RyYWludHMgZm9yIG1vY2sgdmlkZW8gc291cmNlcyBhcmUgbm90IHByb3ZpZGluZyB0aGUg
cmlnaHQgdmlkZW8gc3RyZWFtIHJlc29sdXRpb24uCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFNlbmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTZW5kZXI6
OnJlcGxhY2VUcmFjayk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5k
ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5pZGw6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZDo6cmVwbGFjZVRyYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
T3V0Z29pbmdWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdv
aW5nVmlkZW9Tb3VyY2U6OnNldFNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmRyYXdUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tS
ZWFsdGltZVZpZGVvU291cmNlOjpnZW5lcmF0ZUZyYW1lKToKKwogMjAxNy0wMy0yMyAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVkaWFTdHJlYW1d
IE1ha2UgbW9jayB2aWRlbyBzb3VyY2Ugd29yayBvbiBpT1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKaW5kZXgg
ODIyY2I0M2RjZDJlMDJhNTZhYmM3MDlmNTdkNWEwZDM5YTMyYjk4NS4uZjMxNDU4MWZmYmE0NDUy
ZGRkNTk4NGMzNzdmZDJlNzAxYjM3NzFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTUwOSw5ICs1
MDksMzAgQEAgdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6ZmlyZUV2ZW50KEV2ZW50JiBldmVudCkK
ICAgICBkaXNwYXRjaEV2ZW50KGV2ZW50KTsKIH0KIAotdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6
cmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4m
JiB3aXRoVHJhY2ssIERPTVByb21pc2U8dm9pZD4mJiBwcm9taXNlKQordm9pZCBSVENQZWVyQ29u
bmVjdGlvbjo6ZW5xdWV1ZVJlcGxhY2VUcmFja1Rhc2soUlRDUnRwU2VuZGVyJiBzZW5kZXIsIFJl
ZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHdpdGhUcmFjaywgRE9NUHJvbWlzZTx2b2lkPiYmIHByb21p
c2UpCiB7Ci0gICAgbV9iYWNrZW5kLT5yZXBsYWNlVHJhY2soc2VuZGVyLCBXVEZNb3ZlKHdpdGhU
cmFjayksIFdURk1vdmUocHJvbWlzZSkpOworICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
cG9zdFRhc2soW3Byb3RlY3RlZFNlbmRlciA9IG1ha2VSZWYoc2VuZGVyKSwgcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSksIHdpdGhUcmFjayA9IFdURk1vdmUod2l0aFRyYWNrKV0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpIG11dGFibGUgeworICAgICAgICBwcm90ZWN0ZWRTZW5kZXItPnNldFRy
YWNrKFdURk1vdmUod2l0aFRyYWNrKSk7CisgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOworICAg
IH0pOworfQorCit2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpyZXBsYWNlVHJhY2soUlRDUnRwU2Vu
ZGVyJiBzZW5kZXIsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHdpdGhUcmFjaywgRE9NUHJv
bWlzZTx2b2lkPiYmIHByb21pc2UpCit7CisgICAgaWYgKCF3aXRoVHJhY2spIHsKKyAgICAgICAg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhbcHJvdGVjdGVkU2VuZGVyID0gbWFr
ZVJlZihzZW5kZXIpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpIG11dGFibGUgeworICAgICAgICAgICAgcHJvdGVjdGVkU2VuZGVyLT5zZXRUcmFj
a1RvTnVsbCgpOworICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIH0pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmICghc2VuZGVyLnRyYWNrKCkpIHsK
KyAgICAgICAgZW5xdWV1ZVJlcGxhY2VUcmFja1Rhc2soc2VuZGVyLCB3aXRoVHJhY2sucmVsZWFz
ZU5vbk51bGwoKSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBtX2JhY2tlbmQtPnJlcGxhY2VUcmFjayhzZW5kZXIsIHdpdGhUcmFjay5yZWxlYXNlTm9u
TnVsbCgpLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi5oCmluZGV4IDg2Mzc2M2ZhYjg2MjFjMzdmMTU3ZDc1MzZjNmYwNjRjNGRkN2Q1N2Yu
Ljk1YWY2MTM2MTZmODMxNjg3YzYzNWVjMjUzYTgyOWU4ZmQxYjVhMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgK
QEAgLTE0MCw2ICsxNDAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNhYmxlSUNFQ2FuZGlkYXRl
RmlsdGVyaW5nKCkgeyBtX2JhY2tlbmQtPmRpc2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoKTsg
fQogICAgIHZvaWQgZW5hYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCkgeyBtX2JhY2tlbmQtPmVu
YWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpOyB9CiAKKyAgICB2b2lkIGVucXVldWVSZXBsYWNl
VHJhY2tUYXNrKFJUQ1J0cFNlbmRlciYsIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9t
aXNlPHZvaWQ+JiYpOworCiBwcml2YXRlOgogICAgIFJUQ1BlZXJDb25uZWN0aW9uKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKTsKIApAQCAtMTU5LDcgKzE2MSw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QgZmluYWw7CiAKICAgICAv
LyBSVENSdHBTZW5kZXJDbGllbnQKLSAgICB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXIm
LCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZTx2b2lkPiYmKSBmaW5hbDsKKyAg
ICB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFj
az4mJiwgRE9NUHJvbWlzZTx2b2lkPiYmKSBmaW5hbDsKIAogICAgIHZvaWQgdXBkYXRlQ29ubmVj
dGlvblN0YXRlKCk7CiAgICAgYm9vbCBkb0Nsb3NlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKaW5kZXggOTY4MDU0M2NkOTcz
MDRlNjJmZjQwZGU5NDg3OTdlMmY4OGZhMTE5YS4uZmVmZjIxYWI1NzEyMjhiODgzYjNmYmFiOWIz
MWQxZWQ0ZmEyMDc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwU2VuZGVyLmNwcApAQCAtNTcsMjcgKzU3LDM3IEBAIFJUQ1J0cFNlbmRlcjo6
UlRDUnRwU2VuZGVyKGNvbnN0IFN0cmluZyYgdHJhY2tLaW5kLCBWZWN0b3I8U3RyaW5nPiYmIG1l
ZGlhU3RyZWFtCiB7CiB9CiAKK3ZvaWQgUlRDUnRwU2VuZGVyOjpzZXRUcmFja1RvTnVsbCgpCit7
CisgICAgQVNTRVJUKG1fdHJhY2spOworICAgIG1fdHJhY2tJZCA9IHsgfTsKKyAgICBtX3RyYWNr
ID0gbnVsbHB0cjsKK30KKwogdm9pZCBSVENSdHBTZW5kZXI6OnNldFRyYWNrKFJlZjxNZWRpYVN0
cmVhbVRyYWNrPiYmIHRyYWNrKQogewogICAgIEFTU0VSVCghaXNTdG9wcGVkKCkpOwotICAgIEFT
U0VSVCghbV90cmFjayk7Ci0gICAgbV90cmFja0lkID0gdHJhY2stPmlkKCk7CisgICAgaWYgKCFt
X3RyYWNrKQorICAgICAgICBtX3RyYWNrSWQgPSB0cmFjay0+aWQoKTsKICAgICBtX3RyYWNrID0g
V1RGTW92ZSh0cmFjayk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1J0cFNlbmRlcjo6cmVw
bGFjZVRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHdpdGhUcmFjaywgRE9NUHJvbWlzZTx2
b2lkPiYmIHByb21pc2UpCit2b2lkIFJUQ1J0cFNlbmRlcjo6cmVwbGFjZVRyYWNrKFJlZlB0cjxN
ZWRpYVN0cmVhbVRyYWNrPiYmIHdpdGhUcmFjaywgRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2Up
CiB7CiAgICAgaWYgKGlzU3RvcHBlZCgpKSB7CiAgICAgICAgIHByb21pc2UucmVqZWN0KElOVkFM
SURfU1RBVEVfRVJSKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmIChtX3RyYWNrS2luZCAhPSB3aXRoVHJhY2stPmtpbmQoKSkKLSAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OworICAgIGlmICh3aXRoVHJhY2sgJiYgbV90
cmFja0tpbmQgIT0gd2l0aFRyYWNrLT5raW5kKCkpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3Qo
VHlwZUVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIG1fY2xpZW50LT5yZXBs
YWNlVHJhY2soKnRoaXMsIFdURk1vdmUod2l0aFRyYWNrKSwgV1RGTW92ZShwcm9taXNlKSk7Cisg
ICAgaWYgKCF3aXRoVHJhY2sgJiYgbV90cmFjaykKKyAgICAgICAgbV90cmFjay0+c3RvcFByb2R1
Y2luZ0RhdGEoKTsKIAotICAgIHJldHVybiB7IH07CisgICAgbV9jbGllbnQtPnJlcGxhY2VUcmFj
aygqdGhpcywgV1RGTW92ZSh3aXRoVHJhY2spLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwU2VuZGVyLmgKaW5kZXggNWIwMzJkNzNiNGE3ZWE2MDViNTNkZTU5MmIwZDEw
NTQxZjY1Y2I1ZS4uMTI0Yzk1N2U0YzZkYTk3NzNjMWFjZmU1MWE5ZTY5ZDgyYzAwOTE4NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5o
CkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUlRDUnRwU2Vu
ZGVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgcmVwbGFjZVRyYWNrKFJUQ1J0
cFNlbmRlciYsIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlPHZvaWQ+JiYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYsIFJlZlB0cjxN
ZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlPHZvaWQ+JiYpID0gMDsKIAogICAgIHZpcnR1
YWwgflJUQ1J0cFNlbmRlckNsaWVudCgpIHsgfQogfTsKQEAgLTU4LDggKzU4LDkgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNTdG9wcGVkKCkgY29uc3QgeyByZXR1cm4gIW1fY2xpZW50OyB9CiAgICAg
dm9pZCBzdG9wKCkgeyBtX2NsaWVudCA9IG51bGxwdHI7IH0KICAgICB2b2lkIHNldFRyYWNrKFJl
ZjxNZWRpYVN0cmVhbVRyYWNrPiYmKTsKKyAgICB2b2lkIHNldFRyYWNrVG9OdWxsKCk7CiAKLSAg
ICBFeGNlcHRpb25Pcjx2b2lkPiByZXBsYWNlVHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYs
IERPTVByb21pc2U8dm9pZD4mJik7CisgICAgdm9pZCByZXBsYWNlVHJhY2soUmVmUHRyPE1lZGlh
U3RyZWFtVHJhY2s+JiYsIERPTVByb21pc2U8dm9pZD4mJik7CiAKIHByaXZhdGU6CiAgICAgUlRD
UnRwU2VuZGVyKGNvbnN0IFN0cmluZyYgdHJhY2tLaW5kLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlh
U3RyZWFtSWRzLCBSVENSdHBTZW5kZXJDbGllbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmlkbAppbmRleCAwNzg2NzQ2OTU4ZmM5
ODI2YmRlYWU5ZTY0ODlmZjZjODJiZmNhMGRjLi43NjIzZWVkNmY0NjUxNThmOTg0NmViYjA5YTU0
Y2YwYThiNTE5NTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFNlbmRlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTZW5kZXIuaWRsCkBAIC0zOSw1ICszOSw1IEBACiAgICAgLy8gRklYTUUgMTY5
NjYyOiBtaXNzaW5nIGdldENhcGFiaWxpdGllcwogICAgIC8vIEZJWE1FIDE2OTY2MjogbWlzc2lu
ZyBzZXRQYXJhbWV0ZXJzCiAgICAgLy8gRklYTUUgMTY5NjYyOiBtaXNzaW5nIGdldFBhcmFtZXRl
cnMKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFByb21pc2U8dm9pZD4gcmVwbGFjZVRyYWNrKE1l
ZGlhU3RyZWFtVHJhY2sgd2l0aFRyYWNrKTsKKyAgICBQcm9taXNlPHZvaWQ+IHJlcGxhY2VUcmFj
ayhNZWRpYVN0cmVhbVRyYWNrPyB3aXRoVHJhY2spOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDI1MzBiMTA3MjVh
MzNmNTY3NGUwOTFhNTczYmViMWEyM2ZjNGRmMTIuLmVjZTNmNGEzMWNlYjAwMjU3ZGY5ZjIyMjI3
MzU1MjhhMzg0N2RjM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2lmIFVTRShMSUJXRUJS
VEMpCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
ICNpbmNsdWRlICJJY2VDYW5kaWRhdGUuaCIKICNpbmNsdWRlICJKU1JUQ1N0YXRzUmVwb3J0Lmgi
CiAjaW5jbHVkZSAiTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgiCkBAIC0zMjEsNiArMzIy
LDQ4IEBAIHZvaWQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRSZW1vdGVTdHJl
YW0oUmVmPE1lZGlhU3RyZWFtPiYmIG1lZGlhU3RyCiAgICAgbV9yZW1vdGVTdHJlYW1zLmFwcGVu
ZChXVEZNb3ZlKG1lZGlhU3RyZWFtKSk7CiB9CiAKK3ZvaWQgTGliV2ViUlRDUGVlckNvbm5lY3Rp
b25CYWNrZW5kOjpyZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiBzZW5kZXIsIFJlZjxNZWRpYVN0
cmVhbVRyYWNrPiYmIHRyYWNrLCBET01Qcm9taXNlPHZvaWQ+JiYgcHJvbWlzZSkKK3sKKyAgICBB
U1NFUlQoc2VuZGVyLnRyYWNrKCkpOworICAgIGF1dG8qIGN1cnJlbnRUcmFjayA9IHNlbmRlci50
cmFjaygpOworCisgICAgQVNTRVJUKGN1cnJlbnRUcmFjay0+c291cmNlKCkudHlwZSgpID09IHRy
YWNrLT5zb3VyY2UoKS50eXBlKCkpOworICAgIHN3aXRjaCAoY3VycmVudFRyYWNrLT5zb3VyY2Uo
KS50eXBlKCkpIHsKKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6Ok5vbmU6Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBwcm9taXNlLnJlamVjdChJTlZB
TElEX01PRElGSUNBVElPTl9FUlIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvOiB7CisgICAgICAgIGZvciAoYXV0byYgYXVkaW9Tb3Vy
Y2UgOiBtX2F1ZGlvU291cmNlcykgeworICAgICAgICAgICAgaWYgKCZhdWRpb1NvdXJjZS0+c291
cmNlKCkgPT0gJmN1cnJlbnRUcmFjay0+c291cmNlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAo
IWF1ZGlvU291cmNlLT5zZXRTb3VyY2UodHJhY2stPnNvdXJjZSgpKSkgeworICAgICAgICAgICAg
ICAgICAgICBwcm9taXNlLnJlamVjdChJTlZBTElEX01PRElGSUNBVElPTl9FUlIpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGNvbm5lY3Rpb24oKS5lbnF1ZXVlUmVwbGFjZVRyYWNrVGFzayhzZW5kZXIsIFdURk1vdmUodHJh
Y2spLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSU5WQUxJRF9NT0RJRklD
QVRJT05fRVJSKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VHlwZTo6VmlkZW86IHsKKyAgICAgICAgZm9yIChhdXRvJiB2aWRlb1NvdXJjZSA6
IG1fdmlkZW9Tb3VyY2VzKSB7CisgICAgICAgICAgICBpZiAoJnZpZGVvU291cmNlLT5zb3VyY2Uo
KSA9PSAmY3VycmVudFRyYWNrLT5zb3VyY2UoKSkgeworICAgICAgICAgICAgICAgIGlmICghdmlk
ZW9Tb3VyY2UtPnNldFNvdXJjZSh0cmFjay0+c291cmNlKCkpKSB7CisgICAgICAgICAgICAgICAg
ICAgIHByb21pc2UucmVqZWN0KElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUik7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY29u
bmVjdGlvbigpLmVucXVldWVSZXBsYWNlVHJhY2tUYXNrKHNlbmRlciwgV1RGTW92ZSh0cmFjayks
IFdURk1vdmUocHJvbWlzZSkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICBwcm9taXNlLnJlamVjdChJTlZBTElEX01PRElGSUNBVElP
Tl9FUlIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAppbmRleCA4NTQyNmNjZjY4OTky
ZGYxYzUyYTUwMGYxYTI3NjFiZTQxNjNlMTUyLi5iNjMyZDhmNDQ5YjMwMzAwMTk0OGZiMTVhZTEw
YzY5ODNjYzY0MTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuaApAQCAtNjksOCArNjksNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxS
VENTZXNzaW9uRGVzY3JpcHRpb24+IGN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbigpIGNvbnN0IGZp
bmFsOwogICAgIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IHBlbmRpbmdSZW1vdGVEZXNj
cmlwdGlvbigpIGNvbnN0IGZpbmFsOwogCi0gICAgLy8gRklYTUU6IEFQSSB0byBpbXBsZW1lbnQg
Zm9yIHJlYWwKLSAgICB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImLCBSZWY8TWVkaWFT
dHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZTx2b2lkPiYmKSBmaW5hbCB7IH0KKyAgICB2b2lkIHJl
cGxhY2VUcmFjayhSVENSdHBTZW5kZXImLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJv
bWlzZTx2b2lkPiYmKSBmaW5hbDsKIAogICAgIHZvaWQgZW11bGF0ZVBsYXRmb3JtRXZlbnQoY29u
c3QgU3RyaW5nJikgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRp
b1NvdXJjZS5jcHAKaW5kZXggMzY4N2EyMDgzNjRkOWEyZGMzMjg2YTMxMDk5MDE3MzUwYWRhZjI5
Ny4uYzU0NGUwYjNiYTBjMmE3NjVlNGIzMWI1Y2RjMGQ4YjIxNjQ1YWIzNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAKQEAgLTUxLDYgKzUxLDE0IEBAIFJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFJl
ZjxSZWFsdGltZU1lZGlhU291cmNlCiAgICAgbV9hdWRpb1NvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRo
aXMpOwogfQogCitib29sIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNlKFJl
ZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIG5ld1NvdXJjZSkKK3sKKyAgICBtX2F1ZGlvU291cmNl
LT5yZW1vdmVPYnNlcnZlcigqdGhpcyk7CisgICAgbV9hdWRpb1NvdXJjZSA9IFdURk1vdmUobmV3
U291cmNlKTsKKyAgICBtX2F1ZGlvU291cmNlLT5hZGRPYnNlcnZlcigqdGhpcyk7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKIHZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzdG9wKCkK
IHsKICAgICBtX2F1ZGlvU291cmNlLT5yZW1vdmVPYnNlcnZlcigqdGhpcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKaW5kZXggMjZlZTlhMzI2ZjY2YWU0OTM2N2Yw
YzAyZjkzYjlkYzI2ZWY3OGRjZS4uMzJkNDllNWRiZTNjYmZhOTE3OGQ3NGY5NjhlZDljY2FhNjY5
M2U3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaApAQCAtNTEs
NiArNTEsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8
d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmIHRyYWNrKSB7IG1fdHJhY2sgPSBXVEZNb3Zl
KHRyYWNrKTsgfQogICAgIHZvaWQgc3RvcCgpOwogCisgICAgYm9vbCBzZXRTb3VyY2UoUmVmPFJl
YWx0aW1lTWVkaWFTb3VyY2U+JiYpOworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2UmIHNvdXJjZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Tb3VyY2UuZ2V0KCk7IH0KKwogcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UoUmVmPFJlYWx0aW1lTWVkaWFTb3Vy
Y2U+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwCmlu
ZGV4IGMxMWY5ZTI1ZjRkMGU5YzE4OWNmMzEzOTlmYTUzZjAyNDQyZDJlZDAuLjkyNmVmMGIyMjQ4
ZDdmNjFmNWI5NjZkZGY0NTI5NmVkNjdjNjk4OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91
dGdvaW5nVmlkZW9Tb3VyY2UuY3BwCkBAIC00Niw2ICs0NiwyMiBAQCBSZWFsdGltZU91dGdvaW5n
VmlkZW9Tb3VyY2U6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZShSZWY8UmVhbHRpbWVNZWRp
YVNvdXJjZQogICAgIG1fdmlkZW9Tb3VyY2UtPmFkZE9ic2VydmVyKCp0aGlzKTsKIH0KIAorYm9v
bCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OnNldFNvdXJjZShSZWY8UmVhbHRpbWVNZWRp
YVNvdXJjZT4mJiBuZXdTb3VyY2UpCit7CisgICAgaWYgKCFtX2luaXRpYWxTZXR0aW5ncykKKyAg
ICAgICAgbV9pbml0aWFsU2V0dGluZ3MgPSBtX3ZpZGVvU291cmNlLT5zZXR0aW5ncygpOworCisg
ICAgYXV0byBuZXdTZXR0aW5ncyA9IG5ld1NvdXJjZS0+c2V0dGluZ3MoKTsKKworICAgIGlmICht
X2luaXRpYWxTZXR0aW5ncy0+d2lkdGgoKSA8IG5ld1NldHRpbmdzLndpZHRoKCkgfHwgbV9pbml0
aWFsU2V0dGluZ3MtPmhlaWdodCgpIDwgbmV3U2V0dGluZ3MuaGVpZ2h0KCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIG1fdmlkZW9Tb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsK
KyAgICBtX3ZpZGVvU291cmNlID0gV1RGTW92ZShuZXdTb3VyY2UpOworICAgIG1fdmlkZW9Tb3Vy
Y2UtPmFkZE9ic2VydmVyKCp0aGlzKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBSZWFs
dGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OnN0b3AoKQogewogICAgIG1fdmlkZW9Tb3VyY2UtPnJl
bW92ZU9ic2VydmVyKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3Vy
Y2UuaAppbmRleCA2Y2YwMjA4ZTEzYTU1NDdkZjY0YzZmZjRjZjQ4NTRjMTNhYzExOWU1Li5jMjAw
ZWM2NTllZWMwYjlkMGQzYjlkYjM5ZmQwN2I5OWVhODAwNWIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291
cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8d2Vi
cnRjL2Jhc2Uvb3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3ZWJydGMvY29tbW9uX3ZpZGVvL2luY2x1
ZGUvaTQyMF9idWZmZXJfcG9vbC5oPgogI2luY2x1ZGUgPHdlYnJ0Yy9tZWRpYS9iYXNlL3ZpZGVv
c2lua2ludGVyZmFjZS5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Niw2
ICs0Nyw4IEBAIHB1YmxpYzoKICAgICB+UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlKCkgeyBz
dG9wKCk7IH0KIAogICAgIHZvaWQgc3RvcCgpOworICAgIGJvb2wgc2V0U291cmNlKFJlZjxSZWFs
dGltZU1lZGlhU291cmNlPiYmKTsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlJiBzb3VyY2UoKSBj
b25zdCB7IHJldHVybiBtX3ZpZGVvU291cmNlLmdldCgpOyB9CiAKICAgICBpbnQgQWRkUmVmKCkg
Y29uc3QgZmluYWwgeyByZWYoKTsgcmV0dXJuIHJlZkNvdW50KCk7IH0KICAgICBpbnQgUmVsZWFz
ZSgpIGNvbnN0IGZpbmFsIHsgZGVyZWYoKTsgcmV0dXJuIHJlZkNvdW50KCk7IH0KQEAgLTgyLDYg
Kzg1LDcgQEAgcHJpdmF0ZToKICAgICBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4gbV92aWRlb1Nv
dXJjZTsKICAgICBib29sIG1fZW5hYmxlZCB7IHRydWUgfTsKICAgICBib29sIG1fbXV0ZWQgeyBm
YWxzZSB9OworICAgIHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzPiBt
X2luaXRpYWxTZXR0aW5nczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZS5jcHAKaW5kZXggNTRmMzAyMTRlMTQyZDc0Y2EwYzA1YTUzNzI5M2ZlYjJmODRhZGRkNy4uYjE3
ZDg5OWUzYjk3NjY3MDI3YmI1ZmIyOTJlNGZlZDdiOTU3YTkwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAK
QEAgLTMyNywxMSArMzI3LDExIEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmRyYXdU
ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICBGbG9hdFBvaW50IGJpcEJvcExvY2F0
aW9uKHNpemUud2lkdGgoKSAqIC42LCBzaXplLmhlaWdodCgpICogLjYpOwogICAgIHVuc2lnbmVk
IGZyYW1lTW9kID0gbV9mcmFtZU51bWJlciAlIDYwOwogICAgIGlmIChmcmFtZU1vZCA8PSAxNSkg
ewotICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6Z3JheSk7CisgICAgICAgIGNv
bnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpjeWFuKTsKICAgICAgICAgU3RyaW5nIGJpcChBU0NJ
SUxpdGVyYWwoIkJpcCIpKTsKICAgICAgICAgY29udGV4dC5kcmF3VGV4dChtX2JpcEJvcEZvbnQs
IFRleHRSdW4oU3RyaW5nVmlldyhiaXApKSwgYmlwQm9wTG9jYXRpb24pOwogICAgIH0gZWxzZSBp
ZiAoZnJhbWVNb2QgPiAzMCAmJiBmcmFtZU1vZCA8PSA0NSkgewotICAgICAgICBjb250ZXh0LnNl
dEZpbGxDb2xvcihDb2xvcjo6d2hpdGUpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihD
b2xvcjo6eWVsbG93KTsKICAgICAgICAgU3RyaW5nIGJvcChBU0NJSUxpdGVyYWwoIkJvcCIpKTsK
ICAgICAgICAgY29udGV4dC5kcmF3VGV4dChtX2JpcEJvcEZvbnQsIFRleHRSdW4oU3RyaW5nVmll
dyhib3ApKSwgYmlwQm9wTG9jYXRpb24pOwogICAgIH0KQEAgLTM0OCw3ICszNDgsNyBAQCB2b2lk
IE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpnZW5lcmF0ZUZyYW1lKCkKIAogICAgIEludFNpemUg
c2l6ZSA9IHRoaXMtPnNpemUoKTsKICAgICBGbG9hdFJlY3QgZnJhbWVSZWN0KEZsb2F0UG9pbnQo
KSwgc2l6ZSk7Ci0gICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBz
aXplKSwgQ29sb3I6OmJsYWNrKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChGbG9h
dFBvaW50KCksIHNpemUpLCBmYWNpbmdNb2RlKCkgPT0gIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5nczo6VXNlciA/IENvbG9yOjpibGFjayA6IENvbG9yOjpncmF5KTsKIAogICAgIGlmICghbV9t
dXRlZCAmJiBtX2VuYWJsZWQpIHsKICAgICAgICAgZHJhd1RleHQoY29udGV4dCk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
OWM1NDg0OTFlY2M1NDlmOGIwZjFhZDMxYTcxZTRhOTM1MjE1NDkzYS4uMTljMTBkNWZkNDI3MGUx
MmZlYzM3ZjJjZjIzNDU4M2RjNjJhYmU3NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE3LTAz
LTIzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgbGli
d2VicnRjIGJhY2tlbmQgc3VwcG9ydCBmb3IgUlRDUnRwU2VuZGVyOjpyZXBsYWNlVHJhY2sKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTg0MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2VicnRjL2F1
ZGlvLXJlcGxhY2UtdHJhY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJydGMv
YXVkaW8tcmVwbGFjZS10cmFjay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJydGMvdmlkZW8t
cmVwbGFjZS10cmFjay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYnJ0Yy92aWRl
by1yZXBsYWNlLXRyYWNrLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYnJ0Yy92aWRlby1yZXBs
YWNlLXRyYWNrLXRvLW51bGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJydGMv
dmlkZW8tcmVwbGFjZS10cmFjay10by1udWxsLmh0bWw6IEFkZGVkLgorCiAyMDE3LTAzLTIzICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkIEdUSysgZ2FyZGVuaW5nLiBNYXJrIHdlYnJ0Yy9jb25uZWN0aW9uLXN0YXRlLmh0bWwg
YXMgZmFpbGluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9hdWRpby1yZXBsYWNl
LXRyYWNrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYnJ0Yy9hdWRpby1yZXBsYWNlLXRy
YWNrLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40N2I5YjgxZjk4ZTAyOGUwNzQ5MmU5Y2FhMTZl
NGFmNzZhZGE0M2I2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL2F1ZGlv
LXJlcGxhY2UtdHJhY2stZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFJlcGxh
Y2luZyBhdWRpbyB0cmFjayBmcm9tIGEgcGVlciBjb25uZWN0aW9uIAorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJydGMvYXVkaW8tcmVwbGFjZS10cmFjay5odG1sIGIvTGF5b3V0VGVzdHMv
d2VicnRjL2F1ZGlvLXJlcGxhY2UtdHJhY2suaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hM2ZlNGJjNzU4Yjcw
NzM5NDA3ZjYyZjFlZDk2YzUxMjY0ZmMyMjhhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2VicnRjL2F1ZGlvLXJlcGxhY2UtdHJhY2suaHRtbApAQCAtMCwwICsxLDUyIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
ICAgIDx0aXRsZT5UZXN0aW5nIGxvY2FsIGF1ZGlvIGNhcHR1cmUgcGxheWJhY2sgY2F1c2VzICJw
bGF5aW5nIiBldmVudCB0byBmaXJlPC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYyA9InJv
dXRpbmVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIHByb21pc2VfdGVzdCgodGVz
dCkgPT4geworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0
UnVubmVyLnNldFVzZXJNZWRpYVBlcm1pc3Npb24odHJ1ZSk7CisKKyAgICAgICAgdmFyIHNlbmRl
cjsKKyAgICAgICAgdmFyIGZpcnNTdHJlYW07CisgICAgICAgIHZhciBzZWNvbmRTdHJlYW07Cisg
ICAgICAgIHZhciByZW1vdGVTdHJlYW07CisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IubWVkaWFE
ZXZpY2VzLmdldFVzZXJNZWRpYSh7IGF1ZGlvOiB7IHNhbXBsZVJhdGU6IHsgZXhhY3Q6IDQ4MDAw
IH0gfSB9KS50aGVuKChzdHJlYW0pID0+IHsKKyAgICAgICAgICAgIGZpcnN0U3RyZWFtID0gc3Ry
ZWFtOworICAgICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1l
ZGlhKHsgYXVkaW86IHsgc2FtcGxlUmF0ZTogeyBleGFjdDogNDgwMDAgfSB9IH0pOworICAgICAg
ICB9KS50aGVuKChzdHJlYW0pID0+IHsKKyAgICAgICAgICAgIHNlY29uZFN0cmVhbSA9IHN0cmVh
bTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgICAgIGlu
dGVybmFscy51c2VNb2NrUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5KCJUd29SZWFsUGVlckNvbm5l
Y3Rpb25zIik7CisgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVj
dCkgPT4geworICAgICAgICAgICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKChmaXJzdENvbm5lY3Rp
b24pID0+IHsKKyAgICAgICAgICAgICAgICAgICAgc2VuZGVyID0gZmlyc3RDb25uZWN0aW9uLmFk
ZFRyYWNrKGZpcnN0U3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF0sIGZpcnN0U3RyZWFtKTsKKyAg
ICAgICAgICAgICAgICB9LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgICAg
ICAgICBzZWNvbmRDb25uZWN0aW9uLm9udHJhY2sgPSAodHJhY2tFdmVudCkgPT4geyByZXNvbHZl
KHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7IH07CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QoIlRlc3QgdGltZWQgb3V0IiksIDUwMDAp
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pLnRoZW4oKHN0cmVhbSkgPT4geworICAgICAg
ICAgICAgcmVtb3RlU3RyZWFtID0gc3RyZWFtOworICAgICAgICAgICAgcmV0dXJuIGFuYWx5c2VB
dWRpbyhyZW1vdGVTdHJlYW0sIDEwMDApOworICAgICAgICB9KS50aGVuKChyZXN1bHRzKSA9PiB7
CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZShyZXN1bHRzLmhlYXJkSHVtLCAiaGVhcmQgaHVtIik7
CisgICAgICAgICAgICByZXR1cm4gc2VuZGVyLnJlcGxhY2VUcmFjayhzZWNvbmRTdHJlYW0uZ2V0
QXVkaW9UcmFja3MoKVswXSwgc2Vjb25kU3RyZWFtKTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7
CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZShzZW5kZXIudHJhY2sgPT09IHNlY29uZFN0cmVhbS5n
ZXRBdWRpb1RyYWNrcygpWzBdKTsKKyAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yKDUwMCk7Cisg
ICAgICAgIH0pLnRoZW4oKHJlc3VsdHMpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBhbmFseXNl
QXVkaW8ocmVtb3RlU3RyZWFtLCAxMDAwKTsKKyAgICAgICAgfSkudGhlbigocmVzdWx0cykgPT4g
eworICAgICAgICAgICAgYXNzZXJ0X3RydWUocmVzdWx0cy5oZWFyZEh1bSwgImhlYXJkIGh1bSIp
OworICAgICAgICB9KTsKKyAgICB9LCAiUmVwbGFjaW5nIGF1ZGlvIHRyYWNrIGZyb20gYSBwZWVy
IGNvbm5lY3Rpb24iKTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXJlcGxhY2UtdHJh
Y2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXJlcGxhY2UtdHJhY2st
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzNTk5MTM5Yzg4NDEzYjdhOWJlYTFmYjhkYmM5Mzkx
Y2E5ZjFjOTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tcmVw
bGFjZS10cmFjay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACisKK1BBU1MgU3dpdGNoaW5n
IGZyb20gZnJvbnQgdG8gYmFjayBjYW1lcmEgCitGQUlMIFN3aXRjaGluZyBmcm9tIGZyb250IHRv
IGJhY2sgY2FtZXJhLCB3aXRoIGxvd2VyIHJlc29sdXRpb24gYXNzZXJ0X3RydWU6IGJhY2tTdHJl
YW0gc2hvdWxkIGJlIHNtYWxsZXIgZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK0ZBSUwgU3dpdGNo
aW5nIGZyb20gZnJvbnQgdG8gYmFjayBjYW1lcmEsIHdpdGggaGlnaGVyIHJlc29sdXRpb24gYXNz
ZXJ0X3RydWU6IGZyb250IHN0cmVhbSBzaG91bGQgYmUgc21hbGxlciBleHBlY3RlZCB0cnVlIGdv
dCBmYWxzZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tcmVwbGFjZS10
cmFjay10by1udWxsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby1yZXBs
YWNlLXRyYWNrLXRvLW51bGwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4Y2FkMDFjY2QzMzZh
ZTgyYjQ5NWFlZmM1Nzc4ZTUyNGFmNTA2MWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJydGMvdmlkZW8tcmVwbGFjZS10cmFjay10by1udWxsLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDMgQEAKKworUEFTUyBTdG9wcGluZyBzZW5kaW5nIHZpZGVvIHVzaW5nIHJlcGxhY2VUcmFj
ayAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXJlcGxhY2UtdHJhY2st
dG8tbnVsbC5odG1sIGIvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXJlcGxhY2UtdHJhY2stdG8t
bnVsbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5MDRkMWM3ZmVhZGQzNmFhMjMyNDlkYWM4YTgyMDY2Y2Y4
YjkxOTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tcmVwbGFj
ZS10cmFjay10by1udWxsLmh0bWwKQEAgLTAsMCArMSwxMDMgQEAKKzwhZG9jdHlwZSBodG1sPgor
PGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICAg
ICAgPHRpdGxlPlRlc3RpbmcgYmFzaWMgdmlkZW8gZXhjaGFuZ2UgZnJvbSBvZmZlcmVyIHRvIHJl
Y2VpdmVyPC90aXRsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKzxk
aXYgaWQ9ImxvZyI+PC9kaXY+CisgICAgICAgIDx2aWRlbyBpZD0idmlkZW8iIGF1dG9wbGF5PSIi
PjwvdmlkZW8+CisgICAgICAgIDxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjY0MCIgaGVpZ2h0
PSI0ODAiPjwvY2FudmFzPgorICAgICAgICA8c2NyaXB0IHNyYyA9InJvdXRpbmVzLmpzIj48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdD4KK3ZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InZpZGVvIik7CitjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7CisK
K2Z1bmN0aW9uIGdyYWJJbWFnZVBpeGVscygpCit7CisgICAgY2FudmFzLndpZHRoID0gdmlkZW8u
dmlkZW9XaWR0aDsKKyAgICBjYW52YXMuaGVpZ2h0ID0gdmlkZW8udmlkZW9IZWlnaHQ7CisgICAg
Y2FudmFzLmdldENvbnRleHQoJzJkJykuZHJhd0ltYWdlKHZpZGVvLCAwLCAwLCBjYW52YXMud2lk
dGgsIGNhbnZhcy5oZWlnaHQpOworCisgICAgaW1hZ2VEYXRhID0gY2FudmFzLmdldENvbnRleHQo
JzJkJykuZ2V0SW1hZ2VEYXRhKDIwLCAyMCwgMTAwLCAxMDApOworICAgIHJldHVybiBpbWFnZURh
dGEuZGF0YTsKKyB9CisKK3ZhciBmaXJzdEZyYW1lRGF0YTsKKworZnVuY3Rpb24gc3RvcmVGcmFt
ZSgpCit7CisgICAgZmlyc3RGcmFtZURhdGEgPSBncmFiSW1hZ2VQaXhlbHMoKTsKK30KKworZnVu
Y3Rpb24gdGVzdENhbWVyYUltYWdlKCkKK3sKKyAgICBkYXRhID0gZ3JhYkltYWdlUGl4ZWxzKCk7
CisKKyAgICBhc3NlcnRfdHJ1ZShkYXRhWzBdIDwgMjApOworICAgIGFzc2VydF90cnVlKGRhdGFb
MV0gPCAyMCk7CisgICAgYXNzZXJ0X3RydWUoZGF0YVsyXSA8IDIwKTsKKworICAgIHZhciBzYW1l
ID0gdHJ1ZTsKKyAgICBmb3IgKHZhciBjcHRyID0gMDsgY3B0ciA8IGRhdGEubGVuZ3RoOyArK2Nw
dHIpIHsKKyAgICAgICAgaWYgKGRhdGFbY3B0cl0gIT0gZmlyc3RGcmFtZURhdGFbY3B0cl0pIHsK
KyAgICAgICAgICAgIHNhbWUgPSBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgfQorICAgIGFzc2VydF9mYWxzZShzYW1lKTsKK30KKworZnVuY3Rpb24gdGVzdFN0b3Bw
ZWRJbWFnZSgpCit7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhncmFiSW1hZ2VQaXhlbHMoKSwg
Zmlyc3RGcmFtZURhdGEpOworfQorCitwcm9taXNlX3Rlc3QoKHRlc3QpID0+IHsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlck1lZGlhUGVybWlz
c2lvbih0cnVlKTsKKworICAgIHZhciBzZW5kZXI7CisgICAgdmFyIGZyb250U3RyZWFtOworICAg
IHJldHVybiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7IHZpZGVvOiB0cnVl
IH0pLnRoZW4oKHN0cmVhbSkgPT4geworICAgICAgICBmcm9udFN0cmVhbSA9IHN0cmVhbTsKKyAg
ICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCBy
ZWplY3QpID0+IHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAg
ICAgICAgIGludGVybmFscy51c2VNb2NrUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5KCJUd29SZWFs
UGVlckNvbm5lY3Rpb25zIik7CisKKyAgICAgICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKChmaXJz
dENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgICAgICBzZW5kZXIgPSBmaXJzdENvbm5lY3Rp
b24uYWRkVHJhY2soZnJvbnRTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXSwgZnJvbnRTdHJlYW0p
OworICAgICAgICAgICAgfSwgKHNlY29uZENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgICAg
ICBzZWNvbmRDb25uZWN0aW9uLm9udHJhY2sgPSAodHJhY2tFdmVudCkgPT4geworICAgICAgICAg
ICAgICAgICAgICByZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7CisgICAgICAgICAgICAg
ICAgfTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWpl
Y3QoIlRlc3QgdGltZWQgb3V0IiksIDUwMDApOworICAgICAgICB9KTsKKyAgICB9KS50aGVuKChy
ZW1vdGVTdHJlYW0pID0+IHsKKyAgICAgICAgdmlkZW8uc3JjT2JqZWN0ID0gcmVtb3RlU3RyZWFt
OworICAgICAgICByZXR1cm4gdmlkZW8ucGxheSgpOworICAgIH0pLnRoZW4oKCkgPT4geworICAg
ICAgICBzdG9yZUZyYW1lKCk7CisgICAgICAgIHJldHVybiB3YWl0Rm9yKDEwMCk7CisgICAgfSku
dGhlbigoKSA9PiB7CisgICAgICAgIHRlc3RDYW1lcmFJbWFnZSgpOworICAgIH0pLnRoZW4oKCkg
PT4geworICAgICAgICBwcm9taXNlID0gc2VuZGVyLnJlcGxhY2VUcmFjayhudWxsKTsKKyAgICAg
ICAgYXNzZXJ0X3RydWUoISFzZW5kZXIudHJhY2spOworICAgICAgICByZXR1cm4gcHJvbWlzZTsK
KyAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgcmV0dXJuIHdhaXRGb3IoMTAwKTsKKyAgICB9
KS50aGVuKCgpID0+IHsKKyAgICAgICAgc3RvcmVGcmFtZSgpOworICAgICAgICByZXR1cm4gd2Fp
dEZvcigxMDApOworICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICB0ZXN0U3RvcHBlZEltYWdl
KCk7CisgICAgfSk7Cit9LCAiU3RvcHBpbmcgc2VuZGluZyB2aWRlbyB1c2luZyByZXBsYWNlVHJh
Y2siKTsKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXJlcGxhY2UtdHJhY2suaHRtbCBiL0xheW91dFRl
c3RzL3dlYnJ0Yy92aWRlby1yZXBsYWNlLXRyYWNrLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmZkOGE3Y2E3
NzY1ZWE1ZGNjZDEzMTE4OTliMDM5NWE5OGE3YWJiOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYnJ0Yy92aWRlby1yZXBsYWNlLXRyYWNrLmh0bWwKQEAgLTAsMCArMSwxODEgQEAK
KzwhZG9jdHlwZSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKyAgICAgICAgPHRpdGxlPlRlc3RpbmcgYmFzaWMgdmlkZW8gZXhjaGFuZ2Ug
ZnJvbSBvZmZlcmVyIHRvIHJlY2VpdmVyPC90aXRsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICAgIDwvaGVh
ZD4KKyAgICA8Ym9keT4KKzxkaXYgaWQ9ImxvZyI+PC9kaXY+CisgICAgICAgIDx2aWRlbyBpZD0i
dmlkZW8iIGF1dG9wbGF5PSIiPjwvdmlkZW8+CisgICAgICAgIDxjYW52YXMgaWQ9ImNhbnZhcyIg
d2lkdGg9IjY0MCIgaGVpZ2h0PSI0ODAiPjwvY2FudmFzPgorICAgICAgICA8c2NyaXB0IHNyYyA9
InJvdXRpbmVzLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KK3ZpZGVvID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvIik7CitjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY2FudmFzIik7CisKK2Z1bmN0aW9uIGdyYWJJbWFnZVBpeGVscygpCit7CisgICAgY2Fu
dmFzLndpZHRoID0gdmlkZW8udmlkZW9XaWR0aDsKKyAgICBjYW52YXMuaGVpZ2h0ID0gdmlkZW8u
dmlkZW9IZWlnaHQ7CisgICAgY2FudmFzLmdldENvbnRleHQoJzJkJykuZHJhd0ltYWdlKHZpZGVv
LCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOworCisgICAgaW1hZ2VEYXRhID0g
Y2FudmFzLmdldENvbnRleHQoJzJkJykuZ2V0SW1hZ2VEYXRhKDIwLCAyMCwgMiwgMik7CisgICAg
cmV0dXJuIGltYWdlRGF0YS5kYXRhOworIH0KKworZnVuY3Rpb24gdGVzdEZyb250Q2FtZXJhSW1h
Z2UoKQoreworICAgIGRhdGEgPSBncmFiSW1hZ2VQaXhlbHMoKTsKKworICAgIGFzc2VydF90cnVl
KGRhdGFbMF0gPCAyMCk7CisgICAgYXNzZXJ0X3RydWUoZGF0YVsxXSA8IDIwKTsKKyAgICBhc3Nl
cnRfdHJ1ZShkYXRhWzJdIDwgMjApOworfQorCitmdW5jdGlvbiB0ZXN0QmFja0NhbWVyYUltYWdl
KCkKK3sKKyAgICBkYXRhID0gZ3JhYkltYWdlUGl4ZWxzKCk7CisKKyAgICBhc3NlcnRfdHJ1ZShk
YXRhWzBdID4gMTAwKTsKKyAgICBhc3NlcnRfdHJ1ZShkYXRhWzFdID4gMTAwKTsKKyAgICBhc3Nl
cnRfdHJ1ZShkYXRhWzJdID4gMTAwKTsKKworICAgIGFzc2VydF90cnVlKGRhdGFbMF0gPCAyMDAp
OworICAgIGFzc2VydF90cnVlKGRhdGFbMV0gPCAyMDApOworICAgIGFzc2VydF90cnVlKGRhdGFb
Ml0gPCAyMDApOworfQorCitwcm9taXNlX3Rlc3QoKHRlc3QpID0+IHsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlck1lZGlhUGVybWlzc2lvbih0
cnVlKTsKKworICAgIHZhciBzZW5kZXI7CisgICAgdmFyIGZyb250U3RyZWFtOworICAgIHZhciBi
YWNrU3RyZWFtOworICAgIHJldHVybiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRp
YSh7IHZpZGVvOiB7IGZhY2luZ01vZGU6IHsgZXhhY3Q6IFsidXNlciJdIH0gfSB9KS50aGVuKChz
dHJlYW0pID0+IHsKKyAgICAgICAgZnJvbnRTdHJlYW0gPSBzdHJlYW07CisgICAgICAgIHJldHVy
biBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7IHZpZGVvOiB7IGZhY2luZ01v
ZGU6IHsgZXhhY3Q6IFsiZW52aXJvbm1lbnQiXSB9IH0gfSk7CisgICAgfSkudGhlbigoc3RyZWFt
KSA9PiB7CisgICAgICAgIGJhY2tTdHJlYW0gPSBzdHJlYW07CisgICAgfSkudGhlbigoKSA9PiB7
CisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAg
ICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMu
dXNlTW9ja1JUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeSgiVHdvUmVhbFBlZXJDb25uZWN0aW9ucyIp
OworCisgICAgICAgICAgICBjcmVhdGVDb25uZWN0aW9ucygoZmlyc3RDb25uZWN0aW9uKSA9PiB7
CisgICAgICAgICAgICAgICAgc2VuZGVyID0gZmlyc3RDb25uZWN0aW9uLmFkZFRyYWNrKGZyb250
U3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0sIGZyb250U3RyZWFtKTsKKyAgICAgICAgICAgIH0s
IChzZWNvbmRDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlv
bi5vbnRyYWNrID0gKHRyYWNrRXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgcmVzb2x2
ZSh0cmFja0V2ZW50LnN0cmVhbXNbMF0pOworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0IHRpbWVkIG91
dCIpLCA1MDAwKTsKKyAgICAgICAgfSk7CisgICAgfSkudGhlbigocmVtb3RlU3RyZWFtKSA9PiB7
CisgICAgICAgIHZpZGVvLnNyY09iamVjdCA9IHJlbW90ZVN0cmVhbTsKKyAgICAgICAgcmV0dXJu
IHZpZGVvLnBsYXkoKTsKKyAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgdGVzdEZyb250Q2Ft
ZXJhSW1hZ2UoKTsKKyAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgdmFyIGN1cnJlbnRUcmFj
ayA9IHNlbmRlci50cmFjazsKKyAgICAgICAgcHJvbWlzZSA9IHNlbmRlci5yZXBsYWNlVHJhY2so
YmFja1N0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoY3Vy
cmVudFRyYWNrID09PSBzZW5kZXIudHJhY2spOworICAgICAgICByZXR1cm4gcHJvbWlzZTsKKyAg
ICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X3RydWUoc2VuZGVyLnRyYWNrID09PSBi
YWNrU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0pOworICAgICAgICByZXR1cm4gd2FpdEZvcig1
MDApOworICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICB0ZXN0QmFja0NhbWVyYUltYWdlKCk7
CisgICAgfSk7Cit9LCAiU3dpdGNoaW5nIGZyb20gZnJvbnQgdG8gYmFjayBjYW1lcmEiKTsKKwor
cHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLnNldFVzZXJNZWRpYVBlcm1pc3Npb24odHJ1ZSk7CisKKyAgICB2YXIg
c2VuZGVyOworICAgIHZhciBmcm9udFN0cmVhbTsKKyAgICB2YXIgYmFja1N0cmVhbTsKKworICAg
IHJldHVybiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7IHZpZGVvOiB7IGhl
aWdodDogeyBtaW46IDQwMCB9LCBmYWNpbmdNb2RlOiB7IGV4YWN0OiBbInVzZXIiXSB9IH0gfSku
dGhlbigoc3RyZWFtKSA9PiB7CisgICAgICAgIGZyb250U3RyZWFtID0gc3RyZWFtOworICAgICAg
ICByZXR1cm4gbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoeyB2aWRlbzogeyBo
ZWlnaHQ6IHsgbWF4OiA0MDAgfSwgZmFjaW5nTW9kZTogeyBleGFjdDogWyJlbnZpcm9ubWVudCJd
IH0gfSB9KTsKKyAgICB9KS50aGVuKChzdHJlYW0pID0+IHsKKyAgICAgICAgYmFja1N0cmVhbSA9
IHN0cmVhbTsKKyAgICAgICAgYXNzZXJ0X3RydWUoZnJvbnRTdHJlYW0uZ2V0VmlkZW9UcmFja3Mo
KVswXS5nZXRTZXR0aW5ncygpLmhlaWdodCA+PSA0MDAsICJmcm9udFN0cmVhbSBzaG91bGQgYmUg
YmlnZ2VyIik7CisgICAgICAgIGFzc2VydF90cnVlKGJhY2tTdHJlYW0uZ2V0VmlkZW9UcmFja3Mo
KVswXS5nZXRTZXR0aW5ncygpLmhlaWdodCA8IDQwMCwgImJhY2tTdHJlYW0gc2hvdWxkIGJlIHNt
YWxsZXIiKTsKKyAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNl
KChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxz
KQorICAgICAgICAgICAgICAgIGludGVybmFscy51c2VNb2NrUlRDUGVlckNvbm5lY3Rpb25GYWN0
b3J5KCJUd29SZWFsUGVlckNvbm5lY3Rpb25zIik7CisKKyAgICAgICAgICAgIGNyZWF0ZUNvbm5l
Y3Rpb25zKChmaXJzdENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgICAgICBzZW5kZXIgPSBm
aXJzdENvbm5lY3Rpb24uYWRkVHJhY2soZnJvbnRTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXSwg
ZnJvbnRTdHJlYW0pOworICAgICAgICAgICAgfSwgKHNlY29uZENvbm5lY3Rpb24pID0+IHsKKyAg
ICAgICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9uLm9udHJhY2sgPSAodHJhY2tFdmVudCkgPT4g
eworICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7Cisg
ICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgc2V0VGltZW91
dCgoKSA9PiByZWplY3QoIlRlc3QgdGltZWQgb3V0IiksIDUwMDApOworICAgICAgICB9KTsKKyAg
ICB9KS50aGVuKChyZW1vdGVTdHJlYW0pID0+IHsKKyAgICAgICAgdmlkZW8uc3JjT2JqZWN0ID0g
cmVtb3RlU3RyZWFtOworICAgICAgICByZXR1cm4gdmlkZW8ucGxheSgpOworICAgIH0pLnRoZW4o
KCkgPT4geworICAgICAgICB0ZXN0RnJvbnRDYW1lcmFJbWFnZSgpOworICAgIH0pLnRoZW4oKCkg
PT4geworICAgICAgICByZXR1cm4gc2VuZGVyLnJlcGxhY2VUcmFjayhiYWNrU3RyZWFtLmdldFZp
ZGVvVHJhY2tzKClbMF0pOworICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICByZXR1cm4gd2Fp
dEZvcig1MDApOworICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICB0ZXN0QmFja0NhbWVyYUlt
YWdlKCk7CisgICAgfSk7Cit9LCAiU3dpdGNoaW5nIGZyb20gZnJvbnQgdG8gYmFjayBjYW1lcmEs
IHdpdGggbG93ZXIgcmVzb2x1dGlvbiIpOworCitwcm9taXNlX3Rlc3QoKHRlc3QpID0+IHsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlck1lZGlh
UGVybWlzc2lvbih0cnVlKTsKKworICAgIHZhciBzZW5kZXI7CisgICAgdmFyIGZyb250U3RyZWFt
OworICAgIHZhciBiYWNrU3RyZWFtOworCisgICAgcmV0dXJuIG5hdmlnYXRvci5tZWRpYURldmlj
ZXMuZ2V0VXNlck1lZGlhKHsgdmlkZW86IHsgaGVpZ2h0OiB7IG1heDogNDAwIH0sIGZhY2luZ01v
ZGU6IHsgZXhhY3Q6IFsidXNlciJdIH0gfSB9KS50aGVuKChzdHJlYW0pID0+IHsKKyAgICAgICAg
ZnJvbnRTdHJlYW0gPSBzdHJlYW07CisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IubWVkaWFEZXZp
Y2VzLmdldFVzZXJNZWRpYSh7IHZpZGVvOiB7IGhlaWdodDogeyBtaW46IDQwMCB9LCBmYWNpbmdN
b2RlOiB7IGV4YWN0OiBbImVudmlyb25tZW50Il0gfSB9IH0pOworICAgIH0pLnRoZW4oKHN0cmVh
bSkgPT4geworICAgICAgICBiYWNrU3RyZWFtID0gc3RyZWFtOworICAgICAgICBhc3NlcnRfdHJ1
ZShmcm9udFN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLmdldFNldHRpbmdzKCkuaGVpZ2h0IDwg
NDAwLCAiZnJvbnQgc3RyZWFtIHNob3VsZCBiZSBzbWFsbGVyIik7CisgICAgICAgIGFzc2VydF90
cnVlKGJhY2tTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5nZXRTZXR0aW5ncygpLmhlaWdodCA+
PSA0MDAsICJiYWNrIHN0cmVhbSBzaG91bGQgYmUgYmlnZ2VyIik7CisgICAgfSkudGhlbigoKSA9
PiB7CisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Cisg
ICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgICAgICBpbnRlcm5h
bHMudXNlTW9ja1JUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeSgiVHdvUmVhbFBlZXJDb25uZWN0aW9u
cyIpOworCisgICAgICAgICAgICBjcmVhdGVDb25uZWN0aW9ucygoZmlyc3RDb25uZWN0aW9uKSA9
PiB7CisgICAgICAgICAgICAgICAgc2VuZGVyID0gZmlyc3RDb25uZWN0aW9uLmFkZFRyYWNrKGZy
b250U3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0sIGZyb250U3RyZWFtKTsKKyAgICAgICAgICAg
IH0sIChzZWNvbmRDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICAgICAgc2Vjb25kQ29ubmVj
dGlvbi5vbnRyYWNrID0gKHRyYWNrRXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgcmVz
b2x2ZSh0cmFja0V2ZW50LnN0cmVhbXNbMF0pOworICAgICAgICAgICAgICAgIH07CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0IHRpbWVk
IG91dCIpLCA1MDAwKTsKKyAgICAgICAgfSk7CisgICAgfSkudGhlbigocmVtb3RlU3RyZWFtKSA9
PiB7CisgICAgICAgIHZpZGVvLnNyY09iamVjdCA9IHJlbW90ZVN0cmVhbTsKKyAgICAgICAgcmV0
dXJuIHZpZGVvLnBsYXkoKTsKKyAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgdGVzdEZyb250
Q2FtZXJhSW1hZ2UoKTsKKyAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgcmV0dXJuIHByb21p
c2VfcmVqZWN0cyh0ZXN0LCAiSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yIiwgc2VuZGVyLnJlcGxh
Y2VUcmFjayhiYWNrU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0pKTsKKyAgICB9KS50aGVuKCgp
ID0+IHsKKyAgICAgICAgcmV0dXJuIHdhaXRGb3IoNTAwKTsKKyAgICB9KS50aGVuKCgpID0+IHsK
KyAgICAgICAgdGVzdEJhY2tDYW1lcmFJbWFnZSgpOworICAgIH0pOworfSwgIlN3aXRjaGluZyBm
cm9tIGZyb250IHRvIGJhY2sgY2FtZXJhLCB3aXRoIGhpZ2hlciByZXNvbHV0aW9uIik7CisgICAg
ICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>