<?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>174617</bug_id>
          
          <creation_ts>2017-07-18 00:44:42 -0700</creation_ts>
          <short_desc>WebDriver: add a javascript atom to get the visible text</short_desc>
          <delta_ts>2024-03-13 11:26:33 -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>WebDriver</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=238335</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=270215</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>166679</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annulen</cc>
    
    <cc>aperez</cc>
    
    <cc>bburg</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>pangle</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1329928</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-07-18 00:44:42 -0700</bug_when>
    <thetext>We are currently returning innerText with whitespaces cleaned, but the spec says we should return someting more complex, equivalent to what the selenium atoms do.

&quot;Let rendered text be the result of performing implementation-specific steps that are exactly analogous to the result of a [[Call]] to bot.dom.getVisibleText, providing null as the this value, and element as the argument.&quot;

https://www.w3.org/TR/webdriver/#get-element-text</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330507</commentid>
    <comment_count>1</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-07-19 15:09:33 -0700</bug_when>
    <thetext>&lt;rdar://problem/32307461&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837332</commentid>
    <comment_count>2</comment_count>
      <attachid>450885</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-02-04 06:13:02 -0800</bug_when>
    <thetext>Created attachment 450885
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837335</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-02-04 06:14:06 -0800</bug_when>
    <thetext>*** Bug 184964 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838195</commentid>
    <comment_count>4</comment_count>
      <attachid>450885</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-02-07 09:00:55 -0800</bug_when>
    <thetext>Comment on attachment 450885
Patch

Approach looks go to me as well until we can move to JS Built-ins for these scripts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839110</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-02-09 05:49:23 -0800</bug_when>
    <thetext>Committed r289467 (247010@trunk): &lt;https://commits.webkit.org/247010@trunk&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450885</attachid>
            <date>2022-02-04 06:13:02 -0800</date>
            <delta_ts>2022-02-04 07:34:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wd-get-visible-text.diff</filename>
            <type>text/plain</type>
            <size>39861</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2Vi
RHJpdmVyL0NNYWtlTGlzdHMudHh0CmluZGV4IDg2NjI2ZGQxMjdjNC4uNjA0MDJlZWEwMmIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9X
ZWJEcml2ZXIvQ01ha2VMaXN0cy50eHQKQEAgLTI2LDE1ICsyNiwzMyBAQCBlbmRpZiAoKQogCiAK
IHNldChXZWJEcml2ZXJfU0NSSVBUUwotICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0F1dG9t
YXRpb24vYXRvbXMvRWxlbWVudEF0dHJpYnV0ZS5qcwotICAgICR7V0VCS0lUX0RJUn0vVUlQcm9j
ZXNzL0F1dG9tYXRpb24vYXRvbXMvRWxlbWVudERpc3BsYXllZC5qcwotICAgICR7V0VCS0lUX0RJ
Un0vVUlQcm9jZXNzL0F1dG9tYXRpb24vYXRvbXMvRWxlbWVudEVuYWJsZWQuanMKLSAgICAke1dF
QktJVF9ESVJ9L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2F0b21zL0VudGVyRnVsbHNjcmVlbi5qcwot
ICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0F1dG9tYXRpb24vYXRvbXMvRmluZE5vZGVzLmpz
Ci0gICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQXV0b21hdGlvbi9hdG9tcy9Gb3JtRWxlbWVu
dENsZWFyLmpzCi0gICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQXV0b21hdGlvbi9hdG9tcy9G
b3JtU3VibWl0LmpzCisgICAgJHtXZWJEcml2ZXJfREVSSVZFRF9TT1VSQ0VTX0RJUn0vRWxlbWVu
dEF0dHJpYnV0ZS5qcworICAgICR7V2ViRHJpdmVyX0RFUklWRURfU09VUkNFU19ESVJ9L0VsZW1l
bnREaXNwbGF5ZWQuanMKKyAgICAke1dlYkRyaXZlcl9ERVJJVkVEX1NPVVJDRVNfRElSfS9FbGVt
ZW50RW5hYmxlZC5qcworICAgICR7V2ViRHJpdmVyX0RFUklWRURfU09VUkNFU19ESVJ9L0VsZW1l
bnRUZXh0LmpzCisgICAgJHtXZWJEcml2ZXJfREVSSVZFRF9TT1VSQ0VTX0RJUn0vRW50ZXJGdWxs
c2NyZWVuLmpzCisgICAgJHtXZWJEcml2ZXJfREVSSVZFRF9TT1VSQ0VTX0RJUn0vRmluZE5vZGVz
LmpzCisgICAgJHtXZWJEcml2ZXJfREVSSVZFRF9TT1VSQ0VTX0RJUn0vRm9ybUVsZW1lbnRDbGVh
ci5qcworICAgICR7V2ViRHJpdmVyX0RFUklWRURfU09VUkNFU19ESVJ9L0Zvcm1TdWJtaXQuanMK
ICkKIAorbWFjcm8oR0VORVJBVEVfQVRPTVMgX2lucHV0cykKKyAgICBmb3JlYWNoIChfZmlsZSBJ
TiBJVEVNUyAke19pbnB1dHN9KQorICAgICAgICBnZXRfZmlsZW5hbWVfY29tcG9uZW50KF9uYW1l
ICR7X2ZpbGV9IE5BTUUpCisgICAgICAgIGFkZF9jdXN0b21fY29tbWFuZCgKKyAgICAgICAgICAg
IE9VVFBVVCAke19maWxlfQorICAgICAgICAgICAgTUFJTl9ERVBFTkRFTkNZICR7V0VCS0lUX0RJ
Un0vU2NyaXB0cy9nZW5lcmF0ZS1hdXRvbWF0aW9uLWF0b20ucHkKKyAgICAgICAgICAgIERFUEVO
RFMKKyAgICAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2F0
b21zLyR7X25hbWV9CisgICAgICAgICAgICAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQXV0
b21hdGlvbi9hdG9tcy91dGlscy5qcworICAgICAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVD
VVRBQkxFfSAke1dFQktJVF9ESVJ9L1NjcmlwdHMvZ2VuZXJhdGUtYXV0b21hdGlvbi1hdG9tLnB5
ICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0F1dG9tYXRpb24vYXRvbXMvJHtfbmFtZX0gJHtfZmls
ZX0KKyAgICAgICAgICAgIFZFUkJBVElNCisgICAgICAgICkKKyAgICBlbmRmb3JlYWNoICgpCitl
bmRtYWNybygpCisKK0dFTkVSQVRFX0FUT01TKCIke1dlYkRyaXZlcl9TQ1JJUFRTfSIpCisKIE1B
S0VfSlNfRklMRV9BUlJBWVMoCiAgICAgJHtXZWJEcml2ZXJfREVSSVZFRF9TT1VSQ0VTX0RJUn0v
V2ViRHJpdmVyQXRvbXMuY3BwCiAgICAgJHtXZWJEcml2ZXJfREVSSVZFRF9TT1VSQ0VTX0RJUn0v
V2ViRHJpdmVyQXRvbXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwppbmRleCAxZjY5NzhiZDZiY2MuLjRjNGUwZWFm
MTY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkRyaXZlci9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMi0wMi0wNCAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgV2ViRHJpdmVy
OiBhZGQgYSBqYXZhc2NyaXB0IGF0b20gdG8gZ2V0IHRoZSB2aXNpYmxlIHRleHQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDYxNworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzIzMDc0NjE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgR2VuZXJhdGUgdGhlIEphdmFTY3JpcHQgYXRvbXMgdXNpbmcgdGhl
IG5ldyBjb21tYW5kIGFuZCB1c2UgdGhlIG5ldyBhdG9tIHRvIGdldCBlbGVtZW50IHRleHQuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBTZXNzaW9uLmNwcDoKKyAgICAg
ICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6Z2V0RWxlbWVudFRleHQpOgorCiAyMDIyLTAyLTAyICBZ
b3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGFyaWZ5IHRoYXQg
c29tZSBVVUlEIHJvdXRpbmVzIGFyZSBkZWRpY2F0ZWQgdG8gVVVJRCB2NApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5j
cHAKaW5kZXggMDNjNTZlNDRjZmI3Li45MTU1MmQ0ODk5N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApA
QCAtMTI3OCw3ICsxMjc4LDcgQEAgdm9pZCBTZXNzaW9uOjpnZXRFbGVtZW50VGV4dChjb25zdCBT
dHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3UKICAgICAgICAgaWYg
KG1fY3VycmVudEJyb3dzaW5nQ29udGV4dCkKICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0
cmluZygiZnJhbWVIYW5kbGUiX3MsIG1fY3VycmVudEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsK
ICAgICAgICAgLy8gRklYTUU6IEFkZCBhbiBhdG9tIHRvIHByb3Blcmx5IGltcGxlbWVudCB0aGlz
IGluc3RlYWQgb2YganVzdCB1c2luZyBpbm5lclRleHQuCi0gICAgICAgIHBhcmFtZXRlcnMtPnNl
dFN0cmluZygiZnVuY3Rpb24iX3MsICJmdW5jdGlvbihlbGVtZW50KSB7IHJldHVybiBlbGVtZW50
LmlubmVyVGV4dC5yZXBsYWNlKC9eW15cXFNcXHhhMF0rfFteXFxTXFx4YTBdKyQvZywgJycpIH0i
X3MpOworICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImZ1bmN0aW9uIl9zLCBTdHJpbmdJ
bXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhFbGVtZW50VGV4dEphdmFTY3JpcHQsIHNpemVvZihF
bGVtZW50VGV4dEphdmFTY3JpcHQpKSk7CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldEFycmF5KCJh
cmd1bWVudHMiX3MsIFdURk1vdmUoYXJndW1lbnRzKSk7CiAgICAgICAgIG1faG9zdC0+c2VuZENv
bW1hbmRUb0JhY2tlbmQoImV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uIl9zLCBXVEZNb3ZlKHBh
cmFtZXRlcnMpLCBbcHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNl
KSB7CiAgICAgICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvciB8fCAhcmVzcG9uc2UucmVzcG9u
c2VPYmplY3QpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOGJjNzM1YzUwNDA3Li5hY2M5NjVjZTQ5YTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMjItMDItMDQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8
Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFdlYkRyaXZlcjogYWRkIGEgamF2YXNjcmlw
dCBhdG9tIHRvIGdldCB0aGUgdmlzaWJsZSB0ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ2MTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMy
MzA3NDYxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBhIG5ldyBKYXZhU2NyaXB0IGF0b20gdG8gZ2V0IHRoZSB2aXNpYmxlIHRleHQgYWNjb3Jk
aW5nIHRvIHRoZSBzcGVjLiBUaGUgbmV3IGF0b20gdXNlcyBjb2RlIGZyb20gb3RoZXIgYXRvbXMK
KyAgICAgICAgbGlrZSBFbGVtZW50RGlzcGxheWVkIGFuZCBpdCdzIGFsc28gdXNlZCBub3cgYnkg
RmluZE5vZGVzIG9uZS4gVGhlIGF0b21zIGFyZSBub3cgYXV0b2dlbmVyYXRlZCB1c2luZyBhIHNj
cmlwdCB0bworICAgICAgICBpbmNsdWRlIHRoZSBkdXBsaWNhdGVkIGNvZGUgZnJvbSBhIGNvbW1v
biBzb3VyY2UgdXRpbHMuanMuCisKKyAgICAgICAgKiBTY3JpcHRzL2dlbmVyYXRlLWF1dG9tYXRp
b24tYXRvbS5weTogQWRkZWQuCisgICAgICAgIChjb2xsZWN0X3V0aWxzKToKKyAgICAgICAgKHBh
cnNlX3V0aWxzKToKKyAgICAgICAgKGFwcGVuZF9mdW5jdGlvbnMpOgorICAgICAgICAobWFpbik6
CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vYXRvbXMvRWxlbWVudERpc3BsYXllZC5q
czoKKyAgICAgICAgKGlzU2hvd24ubm9kZUlzRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChp
c1Nob3duLnBhcmVudEVsZW1lbnRGb3JFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKGlzU2hv
d24uZW5jbG9zaW5nTm9kZU9yU2VsZk1hdGNoaW5nUHJlZGljYXRlKTogRGVsZXRlZC4KKyAgICAg
ICAgKGlzU2hvd24uZW5jbG9zaW5nRWxlbWVudE9yU2VsZk1hdGNoaW5nUHJlZGljYXRlKTogRGVs
ZXRlZC4KKyAgICAgICAgKGlzU2hvd24uY2FzY2FkZWRTdHlsZVByb3BlcnR5Rm9yRWxlbWVudCk6
IERlbGV0ZWQuCisgICAgICAgIChpc1Nob3duLmVsZW1lbnRTdWJ0cmVlSGFzTm9uWmVyb0RpbWVu
c2lvbnMpOiBEZWxldGVkLgorICAgICAgICAoaXNTaG93bik6IERlbGV0ZWQuCisgICAgICAgIChp
c1Nob3duLmlzRWxlbWVudFN1YnRyZWVIaWRkZW5CeU92ZXJmbG93KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9hdG9tcy9FbGVtZW50VGV4dC5qczogQWRkZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vYXRvbXMvRmluZE5vZGVzLmpzOgorICAgICAg
ICAodHJ5VG9GaW5kTm9kZSk6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vYXRvbXMv
dXRpbHMuanM6IEFkZGVkLgorICAgICAgICAodXRpbHMubm9kZUlzRWxlbWVudCk6CisgICAgICAg
ICh1dGlscy5lbmNsb3NpbmdOb2RlT3JTZWxmTWF0Y2hpbmdQcmVkaWNhdGUpOgorICAgICAgICAo
dXRpbHMucGFyZW50RWxlbWVudEZvckVsZW1lbnQpOgorICAgICAgICAodXRpbHMuY2FzY2FkZWRT
dHlsZVByb3BlcnR5Rm9yRWxlbWVudCk6CisgICAgICAgIChlbGVtZW50U3VidHJlZUhhc05vblpl
cm9EaW1lbnNpb25zKToKKyAgICAgICAgKGlzRWxlbWVudFN1YnRyZWVIaWRkZW5CeU92ZXJmbG93
KToKKyAgICAgICAgKHV0aWxzLmlzU2hvd24pOgorICAgICAgICAoYXBwZW5kTGluZXMuY3VycmVu
dExpbmUpOgorICAgICAgICAoYXBwZW5kTGluZXMpOgorICAgICAgICAodXRpbHMuZ2V0VGV4dCk6
CisKIDIwMjItMDItMDMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFNhbXBsZUJ1ZmZlckRpcGxheUxheWVyIHNob3VsZCBub3QgbmVlZCB0byBjcmVhdGUgSU9T
dXJmYWNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL2dlbmVyYXRlLWF1dG9t
YXRpb24tYXRvbS5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy9nZW5lcmF0ZS1hdXRvbWF0aW9u
LWF0b20ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44YjgyMmQ4
YzQwMmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvZ2VuZXJhdGUt
YXV0b21hdGlvbi1hdG9tLnB5CkBAIC0wLDAgKzEsOTUgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhv
bjMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDIyIElnYWxpYSBTLkwuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisj
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQg
c3lzCisKKworZGVmIGNvbGxlY3RfdXRpbHMoZGF0YSk6CisgICAgbWF0Y2ggPSByZS5maW5kYWxs
KHInKD9QPGRlc3RpbmF0aW9uPnV0aWxzXC5bQS1aYS16XzAtOV0rKScsIGRhdGEpCisgICAgcmV0
dXJuIHNldChtYXRjaCkKKworCitkZWYgcGFyc2VfdXRpbHModXRpbHMpOgorICAgIGZ1bmN0aW9u
cyA9IHt9CisgICAgY3VycmVudF9mdW5jdGlvbiA9IE5vbmUKKyAgICB3aXRoIG9wZW4odXRpbHMs
ICJyIikgYXMgZmQ6CisgICAgICAgIGZvciBsaW5lIGluIGZkLnJlYWRsaW5lcygpOgorICAgICAg
ICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCJ1dGlscy4iKToKKyAgICAgICAgICAgICAgICBjdXJy
ZW50X2Z1bmN0aW9uID0gbGluZS5zcGxpdCgiICIsIDEpWzBdCisgICAgICAgICAgICAgICAgZnVu
Y3Rpb25zLnNldGRlZmF1bHQoY3VycmVudF9mdW5jdGlvbiwgIiIpCisgICAgICAgICAgICBlbGlm
IGxpbmUuc3RhcnRzd2l0aCgifSIpOgorICAgICAgICAgICAgICAgIGZ1bmN0aW9uc1tjdXJyZW50
X2Z1bmN0aW9uXSArPSBsaW5lCisgICAgICAgICAgICAgICAgY3VycmVudF9mdW5jdGlvbiA9IE5v
bmUKKworICAgICAgICAgICAgaWYgY3VycmVudF9mdW5jdGlvbiBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgICAgICBmdW5jdGlvbnNbY3VycmVudF9mdW5jdGlvbl0gKz0gbGluZQorICAgIHJldHVy
biBmdW5jdGlvbnMKKworCitkZWYgYXBwZW5kX2Z1bmN0aW9ucyh1dGlsc19kYXRhLCB1dGlsX2Z1
bmN0aW9ucywgdXRpbF9mdW5jdGlvbnNfaW1wbCwgZnVuY3Rpb25zX3dyaXR0ZW4pOgorICAgIGZv
ciBmdW5jdGlvbiBpbiB1dGlsX2Z1bmN0aW9uczoKKyAgICAgICAgaWYgZnVuY3Rpb24gaW4gZnVu
Y3Rpb25zX3dyaXR0ZW46CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIGZ1bmN0aW9u
X2ltcGwgPSB1dGlsX2Z1bmN0aW9uc19pbXBsW2Z1bmN0aW9uXQorICAgICAgICBkZXBlbmRlbmNp
ZXMgPSBjb2xsZWN0X3V0aWxzKGZ1bmN0aW9uX2ltcGwpCisgICAgICAgIGlmIGZ1bmN0aW9uIGlu
IGRlcGVuZGVuY2llczoKKyAgICAgICAgICAgIGRlcGVuZGVuY2llcy5yZW1vdmUoZnVuY3Rpb24p
CisgICAgICAgIGFwcGVuZF9mdW5jdGlvbnModXRpbHNfZGF0YSwgZGVwZW5kZW5jaWVzLCB1dGls
X2Z1bmN0aW9uc19pbXBsLCBmdW5jdGlvbnNfd3JpdHRlbikKKworICAgICAgICBmb3IgbGluZSBp
biBmdW5jdGlvbl9pbXBsLnNwbGl0KCJcbiIpOgorICAgICAgICAgICAgaWYgbm90IGxpbmUuc3Ry
aXAoKToKKyAgICAgICAgICAgICAgICB1dGlsc19kYXRhLmFwcGVuZChsaW5lKQorICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICB1dGlsc19kYXRhLmFwcGVuZCgiICAgICIgKyBsaW5l
KQorICAgICAgICBmdW5jdGlvbnNfd3JpdHRlbi5hcHBlbmQoZnVuY3Rpb24pCisKKworZGVmIG1h
aW4oYXJncyk6CisgICAgaW5wdXQgPSBhcmdzWzBdCisgICAgb3V0cHV0ID0gYXJnc1sxXQorICAg
IHV0aWxzID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShpbnB1dCksICJ1dGlscy5qcyIp
CisKKyAgICB3aXRoIG9wZW4oaW5wdXQsICJyIikgYXMgZmQ6CisgICAgICAgIGlucHV0X2RhdGEg
PSBmZC5yZWFkKCkKKworICAgIHV0aWxfZnVuY3Rpb25zID0gY29sbGVjdF91dGlscyhpbnB1dF9k
YXRhKQorCisgICAgaWYgdXRpbF9mdW5jdGlvbnM6CisgICAgICAgIHV0aWxzX2RhdGEgPSBbIiAg
ICB2YXIgdXRpbHMgPSB7IH07IiwgIiJdCisgICAgICAgIHV0aWxfZnVuY3Rpb25zX2ltcGwgPSBw
YXJzZV91dGlscyh1dGlscykKKyAgICAgICAgZnVuY3Rpb25zX3dyaXR0ZW4gPSBbXQorICAgICAg
ICBhcHBlbmRfZnVuY3Rpb25zKHV0aWxzX2RhdGEsIHV0aWxfZnVuY3Rpb25zLCB1dGlsX2Z1bmN0
aW9uc19pbXBsLCBmdW5jdGlvbnNfd3JpdHRlbikKKyAgICAgICAgaW5wdXRfZGF0YSA9IGlucHV0
X2RhdGEucmVwbGFjZSgnInVzZSBzdHJpY3QiO1xuJywgJyJ1c2Ugc3RyaWN0IjtcblxuJyArICJc
biIuam9pbih1dGlsc19kYXRhKSkKKworICAgIHdpdGggb3BlbihvdXRwdXQsICJ3IikgYXMgZmQ6
CisgICAgICAgIGZkLndyaXRlKGlucHV0X2RhdGEpCisKKyAgICByZXR1cm4gMAorCisKK2lmIF9f
bmFtZV9fID09ICdfX21haW5fXyc6CisgICAgc3lzLmV4aXQobWFpbihzeXMuYXJndlsxOl0pKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9hdG9tcy9FbGVt
ZW50RGlzcGxheWVkLmpzIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9hdG9t
cy9FbGVtZW50RGlzcGxheWVkLmpzCmluZGV4IGEyZGJiMzgyZTdkMi4uMTQwODhmMWE5MGY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2F0b21zL0VsZW1l
bnREaXNwbGF5ZWQuanMKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9h
dG9tcy9FbGVtZW50RGlzcGxheWVkLmpzCkBAIC0yMywxNzggKzIzLDggQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1mdW5jdGlvbiBpc1Nob3duKGVsZW1lbnQp
IHsKK2Z1bmN0aW9uKGVsZW1lbnQpIHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICBmdW5jdGlv
biBub2RlSXNFbGVtZW50KG5vZGUpIHsKLSAgICAgICAgcmV0dXJuICEhbm9kZSAmJiBub2RlLm5v
ZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERTsKLSAgICAgICAgCi0gICAgfQotCi0gICAgZnVu
Y3Rpb24gcGFyZW50RWxlbWVudEZvckVsZW1lbnQoZWxlbWVudCkgewotICAgICAgICBpZiAoIWVs
ZW1lbnQpCi0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLQotICAgICAgICByZXR1cm4gZW5jbG9z
aW5nTm9kZU9yU2VsZk1hdGNoaW5nUHJlZGljYXRlKGVsZW1lbnQucGFyZW50Tm9kZSwgbm9kZUlz
RWxlbWVudCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZW5jbG9zaW5nTm9kZU9yU2VsZk1hdGNo
aW5nUHJlZGljYXRlKHRhcmdldE5vZGUsIHByZWRpY2F0ZSkgewotICAgICAgICBmb3IgKGxldCBu
b2RlID0gdGFyZ2V0Tm9kZTsgbm9kZSAmJiBub2RlICE9PSB0YXJnZXROb2RlLmdldFJvb3ROb2Rl
KCk7IG5vZGUgPSBub2RlLnBhcmVudE5vZGUpCi0gICAgICAgICAgICBpZiAocHJlZGljYXRlKG5v
ZGUpKQotICAgICAgICAgICAgICAgIHJldHVybiBub2RlOwotCi0gICAgICAgIHJldHVybiBudWxs
OwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGVuY2xvc2luZ0VsZW1lbnRPclNlbGZNYXRjaGluZ1By
ZWRpY2F0ZSh0YXJnZXRFbGVtZW50LCBwcmVkaWNhdGUpIHsKLSAgICAgICAgZm9yIChsZXQgZWxl
bWVudCA9IHRhcmdldEVsZW1lbnQ7IGVsZW1lbnQgJiYgZWxlbWVudCAhPT0gdGFyZ2V0RWxlbWVu
dC5nZXRSb290Tm9kZSgpOyBlbGVtZW50ID0gcGFyZW50RWxlbWVudEZvckVsZW1lbnQoZWxlbWVu
dCkpCi0gICAgICAgICAgICBpZiAocHJlZGljYXRlKGVsZW1lbnQpKQotICAgICAgICAgICAgICAg
IHJldHVybiBlbGVtZW50OwotCi0gICAgICAgIHJldHVybiBudWxsOwotICAgIH0KLQotICAgIGZ1
bmN0aW9uIGNhc2NhZGVkU3R5bGVQcm9wZXJ0eUZvckVsZW1lbnQoZWxlbWVudCwgcHJvcGVydHkp
IHsKLSAgICAgICAgaWYgKCFlbGVtZW50IHx8ICFwcm9wZXJ0eSkKLSAgICAgICAgICAgIHJldHVy
biBudWxsOwotCi0gICAgICAgIGxldCBjb21wdXRlZFN0eWxlID0gd2luZG93LmdldENvbXB1dGVk
U3R5bGUoZWxlbWVudCk7Ci0gICAgICAgIGxldCBjb21wdXRlZFN0eWxlUHJvcGVydHkgPSBjb21w
dXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUocHJvcGVydHkpOwotICAgICAgICBpZiAoY29tcHV0
ZWRTdHlsZVByb3BlcnR5ICYmIGNvbXB1dGVkU3R5bGVQcm9wZXJ0eSAhPT0gImluaGVyaXQiKQot
ICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVkU3R5bGVQcm9wZXJ0eTsKLQotICAgICAgICAvLyBJ
ZGVhbGx5IGdldFByb3BlcnR5VmFsdWUgd291bGQgcmV0dXJuIHRoZSAndXNlZCcgb3IgJ2FjdHVh
bCcgdmFsdWUsIGJ1dAotICAgICAgICAvLyBpdCBkb2Vzbid0IGZvciBsZWdhY3kgcmVhc29ucy4g
U28gd2UgbmVlZCB0byBkbyBvdXIgb3duIHBvb3IgbWFuJ3MgY2FzY2FkZS4KLSAgICAgICAgLy8g
RmFsbCBiYWNrIHRvIHRoZSBmaXJzdCBub24tJ2luaGVyaXQnIHZhbHVlIGZvdW5kIGluIGFuIGFu
Y2VzdG9yLgotICAgICAgICAvLyBJbiBhbnkgY2FzZSwgZ2V0UHJvcGVydHlWYWx1ZSB3aWxsIG5v
dCByZXR1cm4gJ2luaXRpYWwnLgotCi0gICAgICAgIC8vIEZJWE1FOiB3aWxsIHRoaXMgaW5jb3Jy
ZWN0bHkgaW5oZXJpdCBub24taW5oZXJpdGFibGUgQ1NTIHByb3BlcnRpZXM/Ci0gICAgICAgIC8v
IEkgdGhpbmsgYWxsIGltcG9ydGFudCBub24taW5oZXJpdGFibGUgcHJvcGVydGllcyAod2lkdGgs
IGhlaWdodCwgZXRjLikKLSAgICAgICAgLy8gZm9yIG91ciBwdXJwb3NlcyBoZXJlIGFyZSBzcGVj
aWFsbHkgcmVzb2x2ZWQsIHNvIHRoaXMgbWF5IG5vdCBiZSBhbiBpc3N1ZS4KLSAgICAgICAgLy8g
U3BlY2lmaWNhdGlvbiBpcyBoZXJlOiBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI3Jl
c29sdmVkLXZhbHVlcwotICAgICAgICBsZXQgcGFyZW50RWxlbWVudCA9IHBhcmVudEVsZW1lbnRG
b3JFbGVtZW50KGVsZW1lbnQpOwotICAgICAgICByZXR1cm4gY2FzY2FkZWRTdHlsZVByb3BlcnR5
Rm9yRWxlbWVudChwYXJlbnRFbGVtZW50LCBwcm9wZXJ0eSk7Ci0gICAgfQotCi0gICAgZnVuY3Rp
b24gZWxlbWVudFN1YnRyZWVIYXNOb25aZXJvRGltZW5zaW9ucyhlbGVtZW50KSB7Ci0gICAgICAg
IGxldCBib3VuZGluZ0JveCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Ci0gICAg
ICAgIGlmIChib3VuZGluZ0JveC53aWR0aCA+IDAgJiYgYm91bmRpbmdCb3guaGVpZ2h0ID4gMCkK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIC8vIFBhdGhzIGNhbiBoYXZlIGEg
emVybyB3aWR0aCBvciBoZWlnaHQuIFRyZWF0IHRoZW0gYXMgc2hvd24gaWYgdGhlIHN0cm9rZSB3
aWR0aCBpcyBwb3NpdGl2ZS4KLSAgICAgICAgaWYgKGVsZW1lbnQudGFnTmFtZS50b1VwcGVyQ2Fz
ZSgpID09PSAiUEFUSCIgJiYgYm91bmRpbmdCb3gud2lkdGggKyBib3VuZGluZ0JveC5oZWlnaHQg
PiAwKSB7Ci0gICAgICAgICAgICBsZXQgc3Ryb2tlV2lkdGggPSBjYXNjYWRlZFN0eWxlUHJvcGVy
dHlGb3JFbGVtZW50KGVsZW1lbnQsICJzdHJva2Utd2lkdGgiKTsKLSAgICAgICAgICAgIHJldHVy
biAhIXN0cm9rZVdpZHRoICYmIChwYXJzZUludChzdHJva2VXaWR0aCwgMTApID4gMCk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBsZXQgY2FzY2FkZWRPdmVyZmxvdyA9IGNhc2NhZGVkU3R5bGVQcm9w
ZXJ0eUZvckVsZW1lbnQoZWxlbWVudCwgIm92ZXJmbG93Iik7Ci0gICAgICAgIGlmIChjYXNjYWRl
ZE92ZXJmbG93ID09PSAiaGlkZGVuIikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
ICAgICAvLyBJZiB0aGUgY29udGFpbmVyJ3Mgb3ZlcmZsb3cgaXMgbm90IGhpZGRlbiBhbmQgaXQg
aGFzIHplcm8gc2l6ZSwgY29uc2lkZXIgdGhlCi0gICAgICAgIC8vIGNvbnRhaW5lciB0byBoYXZl
IG5vbi16ZXJvIGRpbWVuc2lvbnMgaWYgYSBjaGlsZCBub2RlIGhhcyBub24temVybyBkaW1lbnNp
b25zLgotICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShlbGVtZW50LmNoaWxkTm9kZXMpLnNvbWUo
KGNoaWxkTm9kZSkgPT4gewotICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5ub2RlVHlwZSA9PT0g
Tm9kZS5URVhUX05PREUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAg
ICAgIGlmIChub2RlSXNFbGVtZW50KGNoaWxkTm9kZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IGVsZW1lbnRTdWJ0cmVlSGFzTm9uWmVyb0RpbWVuc2lvbnMoY2hpbGROb2RlKTsKLQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBl
bGVtZW50T3ZlcmZsb3dzQ29udGFpbmVyKGVsZW1lbnQpIHsKLSAgICAgICAgbGV0IGNhc2NhZGVk
T3ZlcmZsb3cgPSBjYXNjYWRlZFN0eWxlUHJvcGVydHlGb3JFbGVtZW50KGVsZW1lbnQsICJvdmVy
ZmxvdyIpOwotICAgICAgICBpZiAoY2FzY2FkZWRPdmVyZmxvdyAhPT0gImhpZGRlbiIpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgLy8gRklYTUU6IHRoaXMgbmVlZHMgdG8g
dGFrZSBpbnRvIGFjY291bnQgdGhlIHNjcm9sbCBwb3NpdGlvbiBvZiB0aGUgZWxlbWVudCwKLSAg
ICAgICAgLy8gdGhlIGRpc3BsYXkgbW9kZXMgb2YgaXQgYW5kIGl0cyBhbmNlc3RvcnMsIGFuZCB0
aGUgY29udGFpbmVyIGl0IG92ZXJmbG93cy4KLSAgICAgICAgLy8gU2VlIFNlbGVuaXVtJ3MgYm90
LmRvbS5nZXRPdmVyZmxvd1N0YXRlIGF0b20gZm9yIGFuIGV4aGF1c3RpdmUgbGlzdCBvZiBlZGdl
IGNhc2VzLgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBpc0Vs
ZW1lbnRTdWJ0cmVlSGlkZGVuQnlPdmVyZmxvdyhlbGVtZW50KSB7Ci0gICAgICAgIGlmICghZWxl
bWVudCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAoIWVsZW1lbnRP
dmVyZmxvd3NDb250YWluZXIoZWxlbWVudCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICAgICAgaWYgKCFlbGVtZW50LmNoaWxkTm9kZXMubGVuZ3RoKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgICAgIC8vIFRoaXMgZWxlbWVudCdzIHN1YnRyZWUgaXMgaGlkZGVu
IGJ5IG92ZXJmbG93IGlmIGFsbCBjaGlsZCBzdWJ0cmVlcyBhcmUgYXMgd2VsbC4KLSAgICAgICAg
cmV0dXJuIEFycmF5LmZyb20oZWxlbWVudC5jaGlsZE5vZGVzKS5ldmVyeSgoY2hpbGROb2RlKSA9
PiB7Ci0gICAgICAgICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGNoaWxkIG5vZGUgaXMgb3Zl
cmZsb3dlZCBvciBvdGhlcndpc2UgaGlkZGVuLgotICAgICAgICAgICAgLy8gQmFzZSBjYXNlOiBu
b3QgYW4gZWxlbWVudCwgaGFzIHplcm8gc2l6ZSwgc2Nyb2xsZWQgb3V0LCBvciBkb2Vzbid0IG92
ZXJmbG93IGNvbnRhaW5lci4KLSAgICAgICAgICAgIGlmICghbm9kZUlzRWxlbWVudChjaGlsZE5v
ZGUpKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgICAgICBpZiAoIWVs
ZW1lbnRTdWJ0cmVlSGFzTm9uWmVyb0RpbWVuc2lvbnMoY2hpbGROb2RlKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgICAgLy8gUmVjdXJzZS4KLSAgICAgICAgICAg
IHJldHVybiBpc0VsZW1lbnRTdWJ0cmVlSGlkZGVuQnlPdmVyZmxvdyhjaGlsZE5vZGUpOwotICAg
ICAgICB9KTsKLSAgICB9Ci0KLSAgICAvLyBUaGlzIGlzIGEgcGFydGlhbCByZWltcGxlbWVudGF0
aW9uIG9mIFNlbGVuaXVtJ3MgImVsZW1lbnQgaXMgZGlzcGxheWVkIiBhbGdvcml0aG0uCi0gICAg
Ly8gV2hlbiB0aGUgVzNDIHNwZWNpZmljYXRpb24ncyBhbGdvcml0aG0gc3RhYmlsaXplcywgd2Ug
c2hvdWxkIGltcGxlbWVudCB0aGF0LgotCi0gICAgaWYgKCEoZWxlbWVudCBpbnN0YW5jZW9mIEVs
ZW1lbnQpKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBjaGVjayB0aGUgZGlzcGxh
eWVkbmVzcyBvZiBhIG5vbi1FbGVtZW50IGFyZ3VtZW50LiIpOwotCi0gICAgLy8gSWYgdGhpcyBj
b21tYW5kIGlzIG1pc2RpcmVjdGVkIHRvIHRoZSB3cm9uZyBkb2N1bWVudCwgdHJlYXQgaXQgYXMg
bm90IHNob3duLgotICAgIGlmICghZG9jdW1lbnQuY29udGFpbnMoZWxlbWVudCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIC8vIFNwZWNpYWwgY2FzZXMgZm9yIHNwZWNpZmljIHRhZyBu
YW1lcy4KLSAgICBzd2l0Y2ggKGVsZW1lbnQudGFnTmFtZS50b1VwcGVyQ2FzZSgpKSB7Ci0gICAg
Y2FzZSAiQk9EWSI6Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgY2FzZSAiU0NSSVBUIjoK
LSAgICBjYXNlICJOT1NDUklQVCI6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGNhc2Ug
Ik9QVEdST1VQIjoKLSAgICBjYXNlICJPUFRJT04iOgotICAgICAgICAvLyBPcHRpb24vb3B0Z3Jv
dXAgYXJlIGNvbnNpZGVyZWQgc2hvd24gaWYgdGhlIGNvbnRhaW5pbmcgPHNlbGVjdD4gaXMgc2hv
d24uCi0gICAgICAgIGxldCBlbmNsb3NpbmdTZWxlY3RFbGVtZW50ID0gZW5jbG9zaW5nTm9kZU9y
U2VsZk1hdGNoaW5nUHJlZGljYXRlKGVsZW1lbnQsIChlKSA9PiBlLnRhZ05hbWUudG9VcHBlckNh
c2UoKSA9PT0gIlNFTEVDVCIpOwotICAgICAgICByZXR1cm4gaXNTaG93bihlbmNsb3NpbmdTZWxl
Y3RFbGVtZW50KTsKLQotICAgIGNhc2UgIklOUFVUIjoKLSAgICAgICAgLy8gPGlucHV0IHR5cGU9
ImhpZGRlbiI+IGlzIGNvbnNpZGVyZWQgbm90IHNob3duLgotICAgICAgICBpZiAoZWxlbWVudC50
eXBlID09PSAiaGlkZGVuIikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgYnJl
YWs7Ci0KLSAgICBjYXNlICJNQVAiOgotICAgICAgICAvLyBGSVhNRTogU2VsZW5pdW0gaGFzIHNw
ZWNpYWwgaGFuZGxpbmcgZm9yIDxtYXA+IGVsZW1lbnRzLiBXZSBkb24ndCBkbyBhbnl0aGluZyBu
b3cuCi0KLSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBpZiAoY2Fz
Y2FkZWRTdHlsZVByb3BlcnR5Rm9yRWxlbWVudChlbGVtZW50LCAidmlzaWJpbGl0eSIpICE9PSAi
dmlzaWJsZSIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGxldCBoYXNBbmNlc3Rvcldp
dGhaZXJvT3BhY2l0eSA9ICEhZW5jbG9zaW5nRWxlbWVudE9yU2VsZk1hdGNoaW5nUHJlZGljYXRl
KGVsZW1lbnQsIChlKSA9PiB7Ci0gICAgICAgIHJldHVybiBOdW1iZXIoY2FzY2FkZWRTdHlsZVBy
b3BlcnR5Rm9yRWxlbWVudChlLCAib3BhY2l0eSIpKSA9PT0gMDsKLSAgICB9KTsKLSAgICBsZXQg
aGFzQW5jZXN0b3JXaXRoRGlzcGxheU5vbmUgPSAhIWVuY2xvc2luZ0VsZW1lbnRPclNlbGZNYXRj
aGluZ1ByZWRpY2F0ZShlbGVtZW50LCAoZSkgPT4gewotICAgICAgICByZXR1cm4gY2FzY2FkZWRT
dHlsZVByb3BlcnR5Rm9yRWxlbWVudChlLCAiZGlzcGxheSIpID09PSAibm9uZSI7Ci0gICAgfSk7
Ci0gICAgaWYgKGhhc0FuY2VzdG9yV2l0aFplcm9PcGFjaXR5IHx8IGhhc0FuY2VzdG9yV2l0aERp
c3BsYXlOb25lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWVsZW1lbnRTdWJ0
cmVlSGFzTm9uWmVyb0RpbWVuc2lvbnMoZWxlbWVudCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGlmIChpc0VsZW1lbnRTdWJ0cmVlSGlkZGVuQnlPdmVyZmxvdyhlbGVtZW50KSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIHV0aWxz
LmlzU2hvd24oZWxlbWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL2F0b21zL0VsZW1lbnRUZXh0LmpzIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV0b21hdGlvbi9hdG9tcy9FbGVtZW50VGV4dC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjU4NDE2ZTc3ZGY3YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vYXRvbXMvRWxlbWVudFRleHQuanMKQEAgLTAs
MCArMSwzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBJZ2FsaWEgUy5MLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCitmdW5jdGlvbihlbGVtZW50KSB7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJu
IHV0aWxzLmdldFRleHQoZWxlbWVudCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL2F0b21zL0ZpbmROb2Rlcy5qcyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vYXRvbXMvRmluZE5vZGVzLmpzCmluZGV4IGUzNmExNGZiNDdmMi4u
ODg4YzI4YzE4NDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL2F0b21zL0ZpbmROb2Rlcy5qcworKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL2F0b21zL0ZpbmROb2Rlcy5qcwpAQCAtMjQsNiArMjQsOCBAQAogICovCiAKIGZ1bmN0
aW9uKHN0cmF0ZWd5LCBhbmNlc3RvckVsZW1lbnQsIHF1ZXJ5LCBmaXJzdFJlc3VsdE9ubHksIHRp
bWVvdXREdXJhdGlvbiwgY2FsbGJhY2spIHsKKyAgICAidXNlIHN0cmljdCI7CisKICAgICBhbmNl
c3RvckVsZW1lbnQgPSBhbmNlc3RvckVsZW1lbnQgfHwgZG9jdW1lbnQ7CiAKICAgICBzd2l0Y2gg
KHN0cmF0ZWd5KSB7CkBAIC02Nyw3ICs2OSw3IEBAIGZ1bmN0aW9uKHN0cmF0ZWd5LCBhbmNlc3Rv
ckVsZW1lbnQsIHF1ZXJ5LCBmaXJzdFJlc3VsdE9ubHksIHRpbWVvdXREdXJhdGlvbiwgY2FsCiAg
ICAgICAgICAgICBjYXNlICJsaW5rIHRleHQiOgogICAgICAgICAgICAgICAgIGxldCBsaW5rVGV4
dFJlc3VsdCA9IFtdOwogICAgICAgICAgICAgICAgIGZvciAobGV0IGxpbmsgb2YgYW5jZXN0b3JF
bGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhIikpIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKGxpbmsudGV4dC50cmltKCkgPT0gcXVlcnkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KHV0aWxzLmdldFRleHQobGluaykudHJpbSgpID09IHF1ZXJ5KSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBsaW5rVGV4dFJlc3VsdC5wdXNoKGxpbmspOwogICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGZpcnN0UmVzdWx0T25seSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKQEAgLTgwLDcgKzgyLDcgQEAgZnVuY3Rpb24oc3RyYXRlZ3ksIGFuY2VzdG9yRWxlbWVudCwg
cXVlcnksIGZpcnN0UmVzdWx0T25seSwgdGltZW91dER1cmF0aW9uLCBjYWwKICAgICAgICAgICAg
IGNhc2UgInBhcnRpYWwgbGluayB0ZXh0IjoKICAgICAgICAgICAgICAgICBsZXQgcGFydGlhbExp
bmtSZXN1bHQgPSBbXTsKICAgICAgICAgICAgICAgICBmb3IgKGxldCBsaW5rIG9mIGFuY2VzdG9y
RWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChsaW5rLnRleHQuaW5jbHVkZXMocXVlcnkpKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
ICh1dGlscy5nZXRUZXh0KGxpbmspLmluY2x1ZGVzKHF1ZXJ5KSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgcGFydGlhbExpbmtSZXN1bHQucHVzaChsaW5rKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChmaXJzdFJlc3VsdE9ubHkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2F0
b21zL3V0aWxzLmpzIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9hdG9tcy91
dGlscy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmYyYmM0ZmE4
NTM3MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRp
b24vYXRvbXMvdXRpbHMuanMKQEAgLTAsMCArMSwzMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK3ZhciB1dGlscyA9IHsgfTsKKwordXRpbHMubm9k
ZUlzRWxlbWVudCA9IGZ1bmN0aW9uKG5vZGUpIHsKKyAgICByZXR1cm4gISFub2RlICYmIG5vZGUu
bm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFOworfQorCit1dGlscy5lbmNsb3NpbmdOb2Rl
T3JTZWxmTWF0Y2hpbmdQcmVkaWNhdGUgPSBmdW5jdGlvbih0YXJnZXROb2RlLCBwcmVkaWNhdGUp
IHsKKyAgICBmb3IgKGxldCBub2RlID0gdGFyZ2V0Tm9kZTsgbm9kZSAmJiBub2RlICE9PSB0YXJn
ZXROb2RlLmdldFJvb3ROb2RlKCk7IG5vZGUgPSBub2RlLnBhcmVudE5vZGUpCisgICAgICAgIGlm
IChwcmVkaWNhdGUobm9kZSkpCisgICAgICAgICAgICByZXR1cm4gbm9kZTsKKworICAgIHJldHVy
biBudWxsOworfQorCit1dGlscy5wYXJlbnRFbGVtZW50Rm9yRWxlbWVudCA9IGZ1bmN0aW9uKGVs
ZW1lbnQpIHsKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiBudWxsOworCisgICAg
cmV0dXJuIHV0aWxzLmVuY2xvc2luZ05vZGVPclNlbGZNYXRjaGluZ1ByZWRpY2F0ZShlbGVtZW50
LnBhcmVudE5vZGUsIHV0aWxzLm5vZGVJc0VsZW1lbnQpOworfQorCit1dGlscy5jYXNjYWRlZFN0
eWxlUHJvcGVydHlGb3JFbGVtZW50ID0gZnVuY3Rpb24oZWxlbWVudCwgcHJvcGVydHkpIHsKKyAg
ICBpZiAoIWVsZW1lbnQgfHwgIXByb3BlcnR5KQorICAgICAgICByZXR1cm4gbnVsbDsKKworICAg
IGxldCBjb21wdXRlZFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7Cisg
ICAgbGV0IGNvbXB1dGVkU3R5bGVQcm9wZXJ0eSA9IGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlW
YWx1ZShwcm9wZXJ0eSk7CisgICAgaWYgKGNvbXB1dGVkU3R5bGVQcm9wZXJ0eSAmJiBjb21wdXRl
ZFN0eWxlUHJvcGVydHkgIT09ICJpbmhlcml0IikKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVkU3R5
bGVQcm9wZXJ0eTsKKworICAgIC8vIElkZWFsbHkgZ2V0UHJvcGVydHlWYWx1ZSB3b3VsZCByZXR1
cm4gdGhlICd1c2VkJyBvciAnYWN0dWFsJyB2YWx1ZSwgYnV0CisgICAgLy8gaXQgZG9lc24ndCBm
b3IgbGVnYWN5IHJlYXNvbnMuIFNvIHdlIG5lZWQgdG8gZG8gb3VyIG93biBwb29yIG1hbidzIGNh
c2NhZGUuCisgICAgLy8gRmFsbCBiYWNrIHRvIHRoZSBmaXJzdCBub24tJ2luaGVyaXQnIHZhbHVl
IGZvdW5kIGluIGFuIGFuY2VzdG9yLgorICAgIC8vIEluIGFueSBjYXNlLCBnZXRQcm9wZXJ0eVZh
bHVlIHdpbGwgbm90IHJldHVybiAnaW5pdGlhbCcuCisKKyAgICAvLyBGSVhNRTogd2lsbCB0aGlz
IGluY29ycmVjdGx5IGluaGVyaXQgbm9uLWluaGVyaXRhYmxlIENTUyBwcm9wZXJ0aWVzPworICAg
IC8vIEkgdGhpbmsgYWxsIGltcG9ydGFudCBub24taW5oZXJpdGFibGUgcHJvcGVydGllcyAod2lk
dGgsIGhlaWdodCwgZXRjLikKKyAgICAvLyBmb3Igb3VyIHB1cnBvc2VzIGhlcmUgYXJlIHNwZWNp
YWxseSByZXNvbHZlZCwgc28gdGhpcyBtYXkgbm90IGJlIGFuIGlzc3VlLgorICAgIC8vIFNwZWNp
ZmljYXRpb24gaXMgaGVyZTogaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLyNyZXNvbHZl
ZC12YWx1ZXMKKyAgICBsZXQgcGFyZW50RWxlbWVudCA9IHV0aWxzLnBhcmVudEVsZW1lbnRGb3JF
bGVtZW50KGVsZW1lbnQpOworICAgIHJldHVybiB1dGlscy5jYXNjYWRlZFN0eWxlUHJvcGVydHlG
b3JFbGVtZW50KHBhcmVudEVsZW1lbnQsIHByb3BlcnR5KTsKK30KKwordXRpbHMuaXNTaG93biA9
IGZ1bmN0aW9uKGVsZW1lbnQpIHsKKyAgICBmdW5jdGlvbiBlbmNsb3NpbmdFbGVtZW50T3JTZWxm
TWF0Y2hpbmdQcmVkaWNhdGUodGFyZ2V0RWxlbWVudCwgcHJlZGljYXRlKSB7CisgICAgICAgIGZv
ciAobGV0IGVsZW1lbnQgPSB0YXJnZXRFbGVtZW50OyBlbGVtZW50ICYmIGVsZW1lbnQgIT09IHRh
cmdldEVsZW1lbnQuZ2V0Um9vdE5vZGUoKTsgZWxlbWVudCA9IHV0aWxzLnBhcmVudEVsZW1lbnRG
b3JFbGVtZW50KGVsZW1lbnQpKQorICAgICAgICAgICAgaWYgKHByZWRpY2F0ZShlbGVtZW50KSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKKworICAgICAgICByZXR1cm4gbnVsbDsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBlbGVtZW50U3VidHJlZUhhc05vblplcm9EaW1lbnNpb25z
KGVsZW1lbnQpIHsKKyAgICAgICAgbGV0IGJvdW5kaW5nQm94ID0gZWxlbWVudC5nZXRCb3VuZGlu
Z0NsaWVudFJlY3QoKTsKKyAgICAgICAgaWYgKGJvdW5kaW5nQm94LndpZHRoID4gMCAmJiBib3Vu
ZGluZ0JveC5oZWlnaHQgPiAwKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAg
Ly8gUGF0aHMgY2FuIGhhdmUgYSB6ZXJvIHdpZHRoIG9yIGhlaWdodC4gVHJlYXQgdGhlbSBhcyBz
aG93biBpZiB0aGUgc3Ryb2tlIHdpZHRoIGlzIHBvc2l0aXZlLgorICAgICAgICBpZiAoZWxlbWVu
dC50YWdOYW1lLnRvVXBwZXJDYXNlKCkgPT09ICJQQVRIIiAmJiBib3VuZGluZ0JveC53aWR0aCAr
IGJvdW5kaW5nQm94LmhlaWdodCA+IDApIHsKKyAgICAgICAgICAgIGxldCBzdHJva2VXaWR0aCA9
IHV0aWxzLmNhc2NhZGVkU3R5bGVQcm9wZXJ0eUZvckVsZW1lbnQoZWxlbWVudCwgInN0cm9rZS13
aWR0aCIpOworICAgICAgICAgICAgcmV0dXJuICEhc3Ryb2tlV2lkdGggJiYgKHBhcnNlSW50KHN0
cm9rZVdpZHRoLCAxMCkgPiAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGxldCBjYXNjYWRlZE92
ZXJmbG93ID0gdXRpbHMuY2FzY2FkZWRTdHlsZVByb3BlcnR5Rm9yRWxlbWVudChlbGVtZW50LCAi
b3ZlcmZsb3ciKTsKKyAgICAgICAgaWYgKGNhc2NhZGVkT3ZlcmZsb3cgPT09ICJoaWRkZW4iKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIC8vIElmIHRoZSBjb250YWluZXIn
cyBvdmVyZmxvdyBpcyBub3QgaGlkZGVuIGFuZCBpdCBoYXMgemVybyBzaXplLCBjb25zaWRlciB0
aGUKKyAgICAgICAgLy8gY29udGFpbmVyIHRvIGhhdmUgbm9uLXplcm8gZGltZW5zaW9ucyBpZiBh
IGNoaWxkIG5vZGUgaGFzIG5vbi16ZXJvIGRpbWVuc2lvbnMuCisgICAgICAgIHJldHVybiBBcnJh
eS5mcm9tKGVsZW1lbnQuY2hpbGROb2Rlcykuc29tZSgoY2hpbGROb2RlKSA9PiB7CisgICAgICAg
ICAgICBpZiAoY2hpbGROb2RlLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKHV0aWxzLm5vZGVJc0VsZW1l
bnQoY2hpbGROb2RlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudFN1YnRyZWVIYXNO
b25aZXJvRGltZW5zaW9ucyhjaGlsZE5vZGUpOworCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIGVsZW1lbnRPdmVyZmxvd3NDb250
YWluZXIoZWxlbWVudCkgeworICAgICAgICBsZXQgY2FzY2FkZWRPdmVyZmxvdyA9IHV0aWxzLmNh
c2NhZGVkU3R5bGVQcm9wZXJ0eUZvckVsZW1lbnQoZWxlbWVudCwgIm92ZXJmbG93Iik7CisgICAg
ICAgIGlmIChjYXNjYWRlZE92ZXJmbG93ICE9PSAiaGlkZGVuIikKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICAvLyBGSVhNRTogdGhpcyBuZWVkcyB0byB0YWtlIGludG8gYWNj
b3VudCB0aGUgc2Nyb2xsIHBvc2l0aW9uIG9mIHRoZSBlbGVtZW50LAorICAgICAgICAvLyB0aGUg
ZGlzcGxheSBtb2RlcyBvZiBpdCBhbmQgaXRzIGFuY2VzdG9ycywgYW5kIHRoZSBjb250YWluZXIg
aXQgb3ZlcmZsb3dzLgorICAgICAgICAvLyBTZWUgU2VsZW5pdW0ncyBib3QuZG9tLmdldE92ZXJm
bG93U3RhdGUgYXRvbSBmb3IgYW4gZXhoYXVzdGl2ZSBsaXN0IG9mIGVkZ2UgY2FzZXMuCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGZ1bmN0aW9uIGlzRWxlbWVudFN1YnRyZWVI
aWRkZW5CeU92ZXJmbG93KGVsZW1lbnQpIHsKKyAgICAgICAgaWYgKCFlbGVtZW50KQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmICghZWxlbWVudE92ZXJmbG93c0NvbnRh
aW5lcihlbGVtZW50KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAo
IWVsZW1lbnQuY2hpbGROb2Rlcy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgLy8gVGhpcyBlbGVtZW50J3Mgc3VidHJlZSBpcyBoaWRkZW4gYnkgb3ZlcmZsb3cg
aWYgYWxsIGNoaWxkIHN1YnRyZWVzIGFyZSBhcyB3ZWxsLgorICAgICAgICByZXR1cm4gQXJyYXku
ZnJvbShlbGVtZW50LmNoaWxkTm9kZXMpLmV2ZXJ5KChjaGlsZE5vZGUpID0+IHsKKyAgICAgICAg
ICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY2hpbGQgbm9kZSBpcyBvdmVyZmxvd2VkIG9yIG90
aGVyd2lzZSBoaWRkZW4uCisgICAgICAgICAgICAvLyBCYXNlIGNhc2U6IG5vdCBhbiBlbGVtZW50
LCBoYXMgemVybyBzaXplLCBzY3JvbGxlZCBvdXQsIG9yIGRvZXNuJ3Qgb3ZlcmZsb3cgY29udGFp
bmVyLgorICAgICAgICAgICAgaWYgKCF1dGlscy5ub2RlSXNFbGVtZW50KGNoaWxkTm9kZSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgIGlmICghZWxlbWVudFN1
YnRyZWVIYXNOb25aZXJvRGltZW5zaW9ucyhjaGlsZE5vZGUpKQorICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgICAgICAgICAvLyBSZWN1cnNlLgorICAgICAgICAgICAgcmV0dXJu
IGlzRWxlbWVudFN1YnRyZWVIaWRkZW5CeU92ZXJmbG93KGNoaWxkTm9kZSk7CisgICAgICAgIH0p
OworICAgIH0KKworICAgIC8vIFRoaXMgaXMgYSBwYXJ0aWFsIHJlaW1wbGVtZW50YXRpb24gb2Yg
U2VsZW5pdW0ncyAiZWxlbWVudCBpcyBkaXNwbGF5ZWQiIGFsZ29yaXRobS4KKyAgICAvLyBXaGVu
IHRoZSBXM0Mgc3BlY2lmaWNhdGlvbidzIGFsZ29yaXRobSBzdGFiaWxpemVzLCB3ZSBzaG91bGQg
aW1wbGVtZW50IHRoYXQuCisKKyAgICBpZiAoIShlbGVtZW50IGluc3RhbmNlb2YgRWxlbWVudCkp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQ2Fubm90IGNoZWNrIHRoZSBkaXNwbGF5ZWRuZXNz
IG9mIGEgbm9uLUVsZW1lbnQgYXJndW1lbnQuIik7CisKKyAgICAvLyBJZiB0aGlzIGNvbW1hbmQg
aXMgbWlzZGlyZWN0ZWQgdG8gdGhlIHdyb25nIGRvY3VtZW50LCB0cmVhdCBpdCBhcyBub3Qgc2hv
d24uCisgICAgaWYgKCFkb2N1bWVudC5jb250YWlucyhlbGVtZW50KSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgLy8gU3BlY2lhbCBjYXNlcyBmb3Igc3BlY2lmaWMgdGFnIG5hbWVzLgor
ICAgIHN3aXRjaCAoZWxlbWVudC50YWdOYW1lLnRvVXBwZXJDYXNlKCkpIHsKKyAgICBjYXNlICJC
T0RZIjoKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjYXNlICJTQ1JJUFQiOgorICAgIGNh
c2UgIk5PU0NSSVBUIjoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY2FzZSAiT1BUR1JP
VVAiOgorICAgIGNhc2UgIk9QVElPTiI6CisgICAgICAgIC8vIE9wdGlvbi9vcHRncm91cCBhcmUg
Y29uc2lkZXJlZCBzaG93biBpZiB0aGUgY29udGFpbmluZyA8c2VsZWN0PiBpcyBzaG93bi4KKyAg
ICAgICAgbGV0IGVuY2xvc2luZ1NlbGVjdEVsZW1lbnQgPSB1dGlscy5lbmNsb3NpbmdOb2RlT3JT
ZWxmTWF0Y2hpbmdQcmVkaWNhdGUoZWxlbWVudCwgKGUpID0+IGUudGFnTmFtZS50b1VwcGVyQ2Fz
ZSgpID09PSAiU0VMRUNUIik7CisgICAgICAgIHJldHVybiB1dGlscy5pc1Nob3duKGVuY2xvc2lu
Z1NlbGVjdEVsZW1lbnQpOworCisgICAgY2FzZSAiSU5QVVQiOgorICAgICAgICAvLyA8aW5wdXQg
dHlwZT0iaGlkZGVuIj4gaXMgY29uc2lkZXJlZCBub3Qgc2hvd24uCisgICAgICAgIGlmIChlbGVt
ZW50LnR5cGUgPT09ICJoaWRkZW4iKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBicmVhazsKKworICAgIGNhc2UgIk1BUCI6CisgICAgICAgIC8vIEZJWE1FOiBTZWxlbml1bSBo
YXMgc3BlY2lhbCBoYW5kbGluZyBmb3IgPG1hcD4gZWxlbWVudHMuIFdlIGRvbid0IGRvIGFueXRo
aW5nIG5vdy4KKworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlm
ICh1dGlscy5jYXNjYWRlZFN0eWxlUHJvcGVydHlGb3JFbGVtZW50KGVsZW1lbnQsICJ2aXNpYmls
aXR5IikgIT09ICJ2aXNpYmxlIikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbGV0IGhh
c0FuY2VzdG9yV2l0aFplcm9PcGFjaXR5ID0gISFlbmNsb3NpbmdFbGVtZW50T3JTZWxmTWF0Y2hp
bmdQcmVkaWNhdGUoZWxlbWVudCwgKGUpID0+IHsKKyAgICAgICAgcmV0dXJuIE51bWJlcih1dGls
cy5jYXNjYWRlZFN0eWxlUHJvcGVydHlGb3JFbGVtZW50KGUsICJvcGFjaXR5IikpID09PSAwOwor
ICAgIH0pOworICAgIGxldCBoYXNBbmNlc3RvcldpdGhEaXNwbGF5Tm9uZSA9ICEhZW5jbG9zaW5n
RWxlbWVudE9yU2VsZk1hdGNoaW5nUHJlZGljYXRlKGVsZW1lbnQsIChlKSA9PiB7CisgICAgICAg
IHJldHVybiB1dGlscy5jYXNjYWRlZFN0eWxlUHJvcGVydHlGb3JFbGVtZW50KGUsICJkaXNwbGF5
IikgPT09ICJub25lIjsKKyAgICB9KTsKKyAgICBpZiAoaGFzQW5jZXN0b3JXaXRoWmVyb09wYWNp
dHkgfHwgaGFzQW5jZXN0b3JXaXRoRGlzcGxheU5vbmUpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICghZWxlbWVudFN1YnRyZWVIYXNOb25aZXJvRGltZW5zaW9ucyhlbGVtZW50KSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGlzRWxlbWVudFN1YnRyZWVIaWRkZW5C
eU92ZXJmbG93KGVsZW1lbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwordXRpbHMuZ2V0VGV4dCA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKKyAgICB2YXIg
bGluZXMgPSBbXTsKKworICAgIGZ1bmN0aW9uIGFwcGVuZExpbmVzRnJvbVRleHROb2RlKHRleHRO
b2RlLCB3aGl0ZXNwYWNlLCB0ZXh0VHJhbnNmb3JtKSB7CisgICAgICAgIC8vIFJlbW92ZSB6ZXJv
LXdpZHRoIGNoYXJhY3RlcnMuCisgICAgICAgIGxldCB0ZXh0ID0gdGV4dE5vZGUubm9kZVZhbHVl
LnJlcGxhY2UoL1tcdTIwMGJcdTIwMGVcdTIwMGZdL2csICcnKTsKKworICAgICAgICAvLyBDYW5v
bmljYWxpemUgdGhlIG5ldyBsaW5lcy4KKyAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSgvKFxy
XG58XHJ8XG4pL2csICdcbicpOworCisgICAgICAgIGxldCBjb2xsYXBzZUFsbCA9IHRydWU7Cisg
ICAgICAgIHN3aXRjaCAod2hpdGVzcGFjZSkgeworICAgICAgICBjYXNlICJub3JtYWwiOgorICAg
ICAgICBjYXNlICJub3dyYXAiOgorICAgICAgICAgICAgLy8gQ29sbGFwc2UgbmV3IGxpbmVzLgor
ICAgICAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSgvXG4vZywgJyAnKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlICJwcmUiOgorICAgICAgICBjYXNlICJwcmUtd3JhcCI6Cisg
ICAgICAgICAgICAvLyBDb252ZXJ0IGFsbCBicmVha2luZyBzcGFjZXMgdG8gYmUgbm9uLWJyZWFr
aW5nLgorICAgICAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSgvWyBcZlx0XHZcdTIwMjhcdTIw
MjldL2csICdceGEwJyk7CisgICAgICAgICAgICBjb2xsYXBzZUFsbCA9IGZhbHNlOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29sbGFwc2VBbGwpIHsKKyAg
ICAgICAgICAgIC8vIENvbGxhcHNlIGFsbCBicmVha2luZyBzcGFjZXMuCisgICAgICAgICAgICB0
ZXh0ID0gdGV4dC5yZXBsYWNlKC9bXCBcZlx0XHZcdTIwMjhcdTIwMjldKy9nLCAnICcpOworICAg
ICAgICB9CisKKyAgICAgICAgc3dpdGNoICh0ZXh0VHJhbnNmb3JtKSB7CisgICAgICAgIGNhc2Ug
ImNhcGl0YWxpemUiOgorICAgICAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSgvKF58W15cZFxw
e0x9XHB7U31dKShbXHB7TGx9fFxwe1N9XSkvZ3UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgIHJldHVybiBhcmd1bWVudHNbMV0gKyBhcmd1bWVudHNbMl0udG9VcHBlckNhc2UoKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgInVwcGVyY2Fz
ZSI6CisgICAgICAgICAgICB0ZXh0ID0gdGV4dC50b1VwcGVyQ2FzZSgpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgImxvd2VyY2FzZSI6CisgICAgICAgICAgICB0ZXh0ID0gdGV4
dC50b0xvd2VyQ2FzZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAg
ICBsZXQgY3VycmVudExpbmUgPSBsaW5lcy5wb3AoKSB8fCAnJzsKKyAgICAgICAgaWYgKGN1cnJl
bnRMaW5lLmVuZHNXaXRoKCcgJykgJiYgdGV4dC5zdGFydHNXaXRoKCcgJykpCisgICAgICAgICAg
ICB0ZXh0ID0gdGV4dC5zdWJzdHIoMSk7CisgICAgICAgIGxpbmVzLnB1c2goY3VycmVudExpbmUg
KyB0ZXh0KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhcHBlbmRMaW5lcyhlbGVtZW50KSB7Cisg
ICAgICAgIGZ1bmN0aW9uIGN1cnJlbnRMaW5lKCkgeworICAgICAgICAgICAgcmV0dXJuIGxpbmVz
W2xpbmVzLmxlbmd0aCAtIDFdIHx8ICcnOworICAgICAgICB9CisKKyAgICAgICAgbGV0IGlzVGFi
bGVDZWxsID0gZmFsc2UsIGRpc3BsYXkgPSBudWxsLCBpc0Jsb2NrID0gZmFsc2U7CisgICAgICAg
IGlmIChlbGVtZW50LnRhZ05hbWUudG9VcHBlckNhc2UoKSA9PT0gIkJSIikKKyAgICAgICAgICAg
IGxpbmVzLnB1c2goJycpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlzVGFibGVDZWxs
ID0gZWxlbWVudC50YWdOYW1lLnRvVXBwZXJDYXNlKCkgPT09ICJURCI7CisgICAgICAgICAgICBk
aXNwbGF5ID0gdXRpbHMuY2FzY2FkZWRTdHlsZVByb3BlcnR5Rm9yRWxlbWVudChlbGVtZW50LCAi
ZGlzcGxheSIpOworICAgICAgICAgICAgaXNCbG9jayA9ICFpc1RhYmxlQ2VsbAorICAgICAgICAg
ICAgICAgICYmICEoZGlzcGxheSA9PT0gImlubGluZSIKKyAgICAgICAgICAgICAgICAgICAgIHx8
IGRpc3BsYXkgPT09ICJpbmxpbmUtYmxvY2siCisgICAgICAgICAgICAgICAgICAgICB8fCBkaXNw
bGF5ID09PSAiaW5saW5lLXRhYmxlIgorICAgICAgICAgICAgICAgICAgICAgfHwgZGlzcGxheSA9
PT0gIm5vbmUiCisgICAgICAgICAgICAgICAgICAgICB8fCBkaXNwbGF5ID09PSAidGFibGUtY2Vs
bCIKKyAgICAgICAgICAgICAgICAgICAgIHx8IGRpc3BsYXkgPT09ICJ0YWJsZS1jb2x1bW4iCisg
ICAgICAgICAgICAgICAgICAgICB8fCBkaXNwbGF5ID09PSAidGFibGUtY29sdW1uLWdyb3VwIik7
CisgICAgICAgICAgICBsZXQgcHJldmlvdXNFbGVtZW50U2libGluZyA9IGVsZW1lbnQucHJldmlv
dXNFbGVtZW50U2libGluZzsKKyAgICAgICAgICAgIGxldCBwcmV2aW91c0Rpc3BsYXkgPSBwcmV2
aW91c0VsZW1lbnRTaWJsaW5nID8gdXRpbHMuY2FzY2FkZWRTdHlsZVByb3BlcnR5Rm9yRWxlbWVu
dChwcmV2aW91c0VsZW1lbnRTaWJsaW5nLCAiZGlzcGxheSIpIDogJyc7CisgICAgICAgICAgICBs
ZXQgZWxlbWVudEZsb2F0ID0gdXRpbHMuY2FzY2FkZWRTdHlsZVByb3BlcnR5Rm9yRWxlbWVudChl
bGVtZW50LCAiZmxvYXQiKSB8fCB1dGlscy5jYXNjYWRlZFN0eWxlUHJvcGVydHlGb3JFbGVtZW50
KGVsZW1lbnQsICJjc3NGbG9hdCIpOworICAgICAgICAgICAgbGV0IHJ1bkludG9UaGlzID0gcHJl
dmlvdXNEaXNwbGF5ID09ICJydW4taW4iICYmIGVsZW1lbnRGbG9hdCA9PSAibm9uZSI7CisgICAg
ICAgICAgICBpZiAoaXNCbG9jayAmJiAhcnVuSW50b1RoaXMgJiYgL15bXHNceGEwXSokLy50ZXN0
KGN1cnJlbnRMaW5lKCkpKQorICAgICAgICAgICAgICAgIGxpbmVzLnB1c2goJycpOworICAgICAg
ICB9CisKKyAgICAgICAgbGV0IHNob3duID0gdXRpbHMuaXNTaG93bihlbGVtZW50KTsKKyAgICAg
ICAgbGV0IHdoaXRlc3BhY2UgPSBudWxsLCB0ZXh0VHJhbnNmb3JtID0gbnVsbDsKKyAgICAgICAg
aWYgKHNob3duKSB7CisgICAgICAgICAgICB3aGl0ZXNwYWNlID0gdXRpbHMuY2FzY2FkZWRTdHls
ZVByb3BlcnR5Rm9yRWxlbWVudChlbGVtZW50LCAid2hpdGUtc3BhY2UiKTsKKyAgICAgICAgICAg
IHRleHRUcmFuc2Zvcm0gPSB1dGlscy5jYXNjYWRlZFN0eWxlUHJvcGVydHlGb3JFbGVtZW50KGVs
ZW1lbnQsICJ0ZXh0LXRyYW5zZm9ybSIpOworICAgICAgICB9CisKKyAgICAgICAgQXJyYXkuZnJv
bShlbGVtZW50LmNoaWxkTm9kZXMpLmZvckVhY2goKGNoaWxkTm9kZSkgPT4geworICAgICAgICAg
ICAgc3dpdGNoIChjaGlsZE5vZGUubm9kZVR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgTm9kZS5U
RVhUX05PREU6CisgICAgICAgICAgICAgICAgaWYgKHNob3duKQorICAgICAgICAgICAgICAgICAg
ICBhcHBlbmRMaW5lc0Zyb21UZXh0Tm9kZShjaGlsZE5vZGUsIHdoaXRlc3BhY2UsIHRleHRUcmFu
c2Zvcm0pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBOb2RlLkVM
RU1FTlRfTk9ERToKKyAgICAgICAgICAgICAgICBhcHBlbmRMaW5lcyhjaGlsZE5vZGUpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKworICAgICAg
ICBsZXQgbGluZSA9IGN1cnJlbnRMaW5lKCk7CisgICAgICAgIGlmICgoaXNUYWJsZUNlbGwgfHwg
ZGlzcGxheSA9PSAidGFibGUtY2VsbCIpICYmIGxpbmUgJiYgbGluZS5lbmRzV2l0aCgnICcpKQor
ICAgICAgICAgICAgbGluZXNbbGluZXMubGVuZ3RoIC0gMV0gKz0gJyAnOworCisgICAgICAgIGlm
IChpc0Jsb2NrICYmIGRpc3BsYXkgIT0gInJ1bi1pbiIgJiYgL15bXHNceGEwXSokLy50ZXN0KGxp
bmUpKQorICAgICAgICAgICAgbGluZXMucHVzaCgnJyk7CisgICAgfQorCisgICAgYXBwZW5kTGlu
ZXMoZWxlbWVudCk7CisKKyAgICBsaW5lcyA9IGxpbmVzLm1hcCgoc3RyKSA9PiBzdHIucmVwbGFj
ZSgvXlteXFNceGEwXSt8W15cU1x4YTBdKyQvZywgJycpKTsKKyAgICBsZXQgdHJpbW1lZCA9IGxp
bmVzLmpvaW4oJ1xuJykucmVwbGFjZSgvXlteXFNceGEwXSt8W15cU1x4YTBdKyQvZywgJycpOwor
CisgICAgLy8gUmVwbGFjZSBub24tYnJlYWthYmxlIHNwYWNlcyB3aXRoIHJlZ3VsYXIgb25lcy4K
KyAgICByZXR1cm4gdHJpbW1lZC5yZXBsYWNlKC9ceGEwL2csICcgJyk7Cit9CmRpZmYgLS1naXQg
YS9XZWJEcml2ZXJUZXN0cy9DaGFuZ2VMb2cgYi9XZWJEcml2ZXJUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggNjk5MjQ5OWQ3YTk4Li5iYzgwMzJlNDY4YTIgMTAwNjQ0Ci0tLSBhL1dlYkRyaXZlclRlc3Rz
L0NoYW5nZUxvZworKysgYi9XZWJEcml2ZXJUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAyMi0wMi0wNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+
CisKKyAgICAgICAgV2ViRHJpdmVyOiBhZGQgYSBqYXZhc2NyaXB0IGF0b20gdG8gZ2V0IHRoZSB2
aXNpYmxlIHRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3NDYxNworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzIzMDc0NjE+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGV4cGVjdGF0aW9u
cyBvZiB0ZXN0cyB0aGF0IGFyZSBub3cgcGFzc2luZy4KKworICAgICAgICAqIFRlc3RFeHBlY3Rh
dGlvbnMuanNvbjoKKwogMjAyMi0wMi0wMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lh
QGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQWRkIGFub3RoZXIgbWlzc2luZyBm
aWxlIGFmdGVyIHIyODg4NzEuCmRpZmYgLS1naXQgYS9XZWJEcml2ZXJUZXN0cy9UZXN0RXhwZWN0
YXRpb25zLmpzb24gYi9XZWJEcml2ZXJUZXN0cy9UZXN0RXhwZWN0YXRpb25zLmpzb24KaW5kZXgg
MzE4NTUzMDIzNTI3Li45YTVkZTc5M2U0YmQgMTAwNjQ0Ci0tLSBhL1dlYkRyaXZlclRlc3RzL1Rl
c3RFeHBlY3RhdGlvbnMuanNvbgorKysgYi9XZWJEcml2ZXJUZXN0cy9UZXN0RXhwZWN0YXRpb25z
Lmpzb24KQEAgLTEzMyw5ICsxMzMsNiBAQAogICAgIH0sCiAgICAgImltcG9ydGVkL3NlbGVuaXVt
L3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9zZWxlY3RfY2xhc3NfdGVzdHMucHki
OiB7CiAgICAgICAgICJzdWJ0ZXN0cyI6IHsKLSAgICAgICAgICAgICJ0ZXN0U2VsZWN0QnlWaXNp
YmxlVGV4dFNob3VsZE5vcm1hbGl6ZVNwYWNlcyI6IHsKLSAgICAgICAgICAgICAgICAiZXhwZWN0
ZWQiOiB7ImFsbCI6IHsic3RhdHVzIjogWyJGQUlMIl0sICJidWciOiAid2Via2l0Lm9yZy9iLzE3
NDYxNyJ9fQotICAgICAgICAgICAgfSwKICAgICAgICAgICAgICJ0ZXN0U2VsZWN0QnlJbmRleE11
bHRpcGxlIjogewogICAgICAgICAgICAgICAgICJleHBlY3RlZCI6IHsiYWxsIjogeyJzbG93Ijog
dHJ1ZX19CiAgICAgICAgICAgICB9LApAQCAtMTQ5LDIwICsxNDYsMTEgQEAKICAgICB9LAogICAg
ICJpbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vdGV4
dF9oYW5kbGluZ190ZXN0cy5weSI6IHsKICAgICAgICAgInN1YnRlc3RzIjogewotICAgICAgICAg
ICAgInRlc3RTaG91bGRDb252ZXJ0QU5vbkJyZWFraW5nU3BhY2VJbnRvQU5vcm1hbFNwYWNlQ2hh
cmFjdGVyIjogewotICAgICAgICAgICAgICAgICJleHBlY3RlZCI6IHsiYWxsIjogeyJzdGF0dXMi
OiBbIkZBSUwiXSwgImJ1ZyI6ICJ3ZWJraXQub3JnL2IvMTc0NjE3In19Ci0gICAgICAgICAgICB9
LAotICAgICAgICAgICAgInRlc3RTaG91bGRUcmVhdEFOb25CcmVha2luZ1NwYWNlQXNBbnlPdGhl
cldoaXRlc3BhY2VDaGFyYWN0ZXJXaGVuQ29sbGFwc2luZ1doaXRlc3BhY2UiOiB7Ci0gICAgICAg
ICAgICAgICAgImV4cGVjdGVkIjogeyJhbGwiOiB7InN0YXR1cyI6IFsiRkFJTCJdLCAiYnVnIjog
IndlYmtpdC5vcmcvYi8xNzQ2MTcifX0KLSAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAidGVz
dFNob3VsZEJlQWJsZVRvU2V0TW9yZVRoYW5PbmVMaW5lT2ZUZXh0SW5BVGV4dEFyZWEiOiB7CiAg
ICAgICAgICAgICAgICAgImV4cGVjdGVkIjogeyJhbGwiOiB7InN0YXR1cyI6IFsiRkFJTCJdLCAi
YnVnIjogIndlYmtpdC5vcmcvYi8xNzQ2MTcifX0KICAgICAgICAgICAgIH0sCiAgICAgICAgICAg
ICAidGVzdFNob3VsZEhhbmRsZVNpYmxpbmdCbG9ja0xldmVsRWxlbWVudHMiOiB7CiAgICAgICAg
ICAgICAgICAgImV4cGVjdGVkIjogeyJhbGwiOiB7InN0YXR1cyI6IFsiRkFJTCJdLCAiYnVnIjog
IndlYmtpdC5vcmcvYi8xNzQ2MTcifX0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAidGVz
dFNob3VsZE9ubHlJbmNsdWRlVmlzaWJsZVRleHQiOiB7Ci0gICAgICAgICAgICAgICAgImV4cGVj
dGVkIjogeyJhbGwiOiB7InN0YXR1cyI6IFsiRkFJTCJdLCAiYnVnIjogIndlYmtpdC5vcmcvYi8x
NzQ2MTcifX0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0sCkBAIC04MzksMTggKzgy
Nyw2IEBACiAgICAgfSwKICAgICAiaW1wb3J0ZWQvdzNjL3dlYmRyaXZlci90ZXN0cy9maW5kX2Vs
ZW1lbnQvZmluZC5weSI6IHsKICAgICAgICAgInN1YnRlc3RzIjogewotICAgICAgICAgICAgInRl
c3RfZmluZF9lbGVtZW50X2xpbmtfdGV4dFs8YSBocmVmPSM+bGluazxicj50ZXh0PC9hPi1saW5r
XFxudGV4dF0iOiB7Ci0gICAgICAgICAgICAgICAgImV4cGVjdGVkIjogeyJhbGwiOiB7InN0YXR1
cyI6IFsiRkFJTCJdLCAiYnVnIjogIndlYmtpdC5vcmcvYi8xODQ5NjQifX0KLSAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICAidGVzdF9maW5kX2VsZW1lbnRfbGlua190ZXh0WzxhIGhyZWY9IyBz
dHlsZT0ndGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZSc+bGluayB0ZXh0PC9hPi1MSU5LIFRFWFRd
IjogewotICAgICAgICAgICAgICAgICJleHBlY3RlZCI6IHsiYWxsIjogeyJzdGF0dXMiOiBbIkZB
SUwiXSwgImJ1ZyI6ICJ3ZWJraXQub3JnL2IvMTg0OTY0In19Ci0gICAgICAgICAgICB9LAotICAg
ICAgICAgICAgInRlc3RfZmluZF9lbGVtZW50X3BhcnRpYWxfbGlua190ZXh0WzxhIGhyZWY9Iz5w
YXJ0aWFsIGxpbms8YnI+dGV4dDwvYT4ta1xcbnRdIjogewotICAgICAgICAgICAgICAgICJleHBl
Y3RlZCI6IHsiYWxsIjogeyJzdGF0dXMiOiBbIkZBSUwiXSwgImJ1ZyI6ICJ3ZWJraXQub3JnL2Iv
MTg0OTY0In19Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgInRlc3RfZmluZF9lbGVtZW50
X3BhcnRpYWxfbGlua190ZXh0WzxhIGhyZWY9IyBzdHlsZT0ndGV4dC10cmFuc2Zvcm06IHVwcGVy
Y2FzZSc+cGFydGlhbCBsaW5rIHRleHQ8L2E+LUxJTktdIjogewotICAgICAgICAgICAgICAgICJl
eHBlY3RlZCI6IHsiYWxsIjogeyJzdGF0dXMiOiBbIkZBSUwiXSwgImJ1ZyI6ICJ3ZWJraXQub3Jn
L2IvMTg0OTY0In19Ci0gICAgICAgICAgICB9LAogICAgICAgICAgICAgInRlc3Rfbm9fdG9wX2Jy
b3dzaW5nX2NvbnRleHQiOiB7CiAgICAgICAgICAgICAgICAgImV4cGVjdGVkIjogeyJ3cGUiOiB7
InN0YXR1cyI6IFsiRkFJTCJdLCAiYnVnIjogIndlYmtpdC5vcmcvYi8yMTI5NTAifX0KICAgICAg
ICAgICAgIH0sCkBAIC04NjEsMTggKzgzNyw2IEBACiAgICAgfSwKICAgICAiaW1wb3J0ZWQvdzNj
L3dlYmRyaXZlci90ZXN0cy9maW5kX2VsZW1lbnRzL2ZpbmQucHkiOiB7CiAgICAgICAgICJzdWJ0
ZXN0cyI6IHsKLSAgICAgICAgICAgICJ0ZXN0X2ZpbmRfZWxlbWVudHNfbGlua190ZXh0WzxhIGhy
ZWY9Iz5saW5rPGJyPnRleHQ8L2E+LWxpbmtcXG50ZXh0XSI6IHsKLSAgICAgICAgICAgICAgICAi
ZXhwZWN0ZWQiOiB7ImFsbCI6IHsic3RhdHVzIjogWyJGQUlMIl0sICJidWciOiAid2Via2l0Lm9y
Zy9iLzE4NDk2NCJ9fQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJ0ZXN0X2ZpbmRfZWxl
bWVudHNfbGlua190ZXh0WzxhIGhyZWY9IyBzdHlsZT0ndGV4dC10cmFuc2Zvcm06IHVwcGVyY2Fz
ZSc+bGluayB0ZXh0PC9hPi1MSU5LIFRFWFRdIjogewotICAgICAgICAgICAgICAgICJleHBlY3Rl
ZCI6IHsiYWxsIjogeyJzdGF0dXMiOiBbIkZBSUwiXSwgImJ1ZyI6ICJ3ZWJraXQub3JnL2IvMTg0
OTY0In19Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgInRlc3RfZmluZF9lbGVtZW50c19w
YXJ0aWFsX2xpbmtfdGV4dFs8YSBocmVmPSM+cGFydGlhbCBsaW5rPGJyPnRleHQ8L2E+LWtcXG50
XSI6IHsKLSAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiB7ImFsbCI6IHsic3RhdHVzIjogWyJG
QUlMIl0sICJidWciOiAid2Via2l0Lm9yZy9iLzE4NDk2NCJ9fQotICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICJ0ZXN0X2ZpbmRfZWxlbWVudHNfcGFydGlhbF9saW5rX3RleHRbPGEgaHJlZj0j
IHN0eWxlPSd0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlJz5wYXJ0aWFsIGxpbmsgdGV4dDwvYT4t
TElOS10iOiB7Ci0gICAgICAgICAgICAgICAgImV4cGVjdGVkIjogeyJhbGwiOiB7InN0YXR1cyI6
IFsiRkFJTCJdLCAiYnVnIjogIndlYmtpdC5vcmcvYi8xODQ5NjQifX0KLSAgICAgICAgICAgIH0s
CiAgICAgICAgICAgICAidGVzdF9ub190b3BfYnJvd3NpbmdfY29udGV4dCI6IHsKICAgICAgICAg
ICAgICAgICAiZXhwZWN0ZWQiOiB7IndwZSI6IHsic3RhdHVzIjogWyJGQUlMIl0sICJidWciOiAi
d2Via2l0Lm9yZy9iLzIxMjk1MCJ9fQogICAgICAgICAgICAgfSwKQEAgLTg4MywxOCArODQ3LDYg
QEAKICAgICB9LAogICAgICJpbXBvcnRlZC93M2Mvd2ViZHJpdmVyL3Rlc3RzL2ZpbmRfZWxlbWVu
dHNfZnJvbV9lbGVtZW50L2ZpbmQucHkiOiB7CiAgICAgICAgICJzdWJ0ZXN0cyI6IHsKLSAgICAg
ICAgICAgICJ0ZXN0X2ZpbmRfZWxlbWVudHNfbGlua190ZXh0WzxhIGhyZWY9Iz5saW5rPGJyPnRl
eHQ8L2E+LWxpbmtcXG50ZXh0XSI6IHsKLSAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiB7ImFs
bCI6IHsic3RhdHVzIjogWyJGQUlMIl0sICJidWciOiAid2Via2l0Lm9yZy9iLzE4NDk2NCJ9fQot
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJ0ZXN0X2ZpbmRfZWxlbWVudHNfbGlua190ZXh0
WzxhIGhyZWY9IyBzdHlsZT0ndGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZSc+bGluayB0ZXh0PC9h
Pi1MSU5LIFRFWFRdIjogewotICAgICAgICAgICAgICAgICJleHBlY3RlZCI6IHsiYWxsIjogeyJz
dGF0dXMiOiBbIkZBSUwiXSwgImJ1ZyI6ICJ3ZWJraXQub3JnL2IvMTg0OTY0In19Ci0gICAgICAg
ICAgICB9LAotICAgICAgICAgICAgInRlc3RfZmluZF9lbGVtZW50c19wYXJ0aWFsX2xpbmtfdGV4
dFs8YSBocmVmPSM+cGFydGlhbCBsaW5rPGJyPnRleHQ8L2E+LWtcXG50XSI6IHsKLSAgICAgICAg
ICAgICAgICAiZXhwZWN0ZWQiOiB7ImFsbCI6IHsic3RhdHVzIjogWyJGQUlMIl0sICJidWciOiAi
d2Via2l0Lm9yZy9iLzE4NDk2NCJ9fQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJ0ZXN0
X2ZpbmRfZWxlbWVudHNfcGFydGlhbF9saW5rX3RleHRbPGEgaHJlZj0jIHN0eWxlPSd0ZXh0LXRy
YW5zZm9ybTogdXBwZXJjYXNlJz5wYXJ0aWFsIGxpbmsgdGV4dDwvYT4tTElOS10iOiB7Ci0gICAg
ICAgICAgICAgICAgImV4cGVjdGVkIjogeyJhbGwiOiB7InN0YXR1cyI6IFsiRkFJTCJdLCAiYnVn
IjogIndlYmtpdC5vcmcvYi8xODQ5NjQifX0KLSAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAi
dGVzdF9wYXJlbnRfb2ZfZG9jdW1lbnRfbm9kZV9lcnJvcnMiOiB7CiAgICAgICAgICAgICAgICAg
ImV4cGVjdGVkIjogeyJhbGwiOiB7InN0YXR1cyI6IFsiRkFJTCJdLCAiYnVnIjogIndlYmtpdC5v
cmcvYi8xODQ5NjQifX0KICAgICAgICAgICAgIH0sCkBAIC05MDgsMTggKzg2MCw2IEBACiAgICAg
fSwKICAgICAiaW1wb3J0ZWQvdzNjL3dlYmRyaXZlci90ZXN0cy9maW5kX2VsZW1lbnRfZnJvbV9l
bGVtZW50L2ZpbmQucHkiOiB7CiAgICAgICAgICJzdWJ0ZXN0cyI6IHsKLSAgICAgICAgICAgICJ0
ZXN0X2ZpbmRfZWxlbWVudF9saW5rX3RleHRbPGEgaHJlZj0jPmxpbms8YnI+dGV4dDwvYT4tbGlu
a1xcbnRleHRdIjogewotICAgICAgICAgICAgICAgICJleHBlY3RlZCI6IHsiYWxsIjogeyJzdGF0
dXMiOiBbIkZBSUwiXSwgImJ1ZyI6ICJ3ZWJraXQub3JnL2IvMTg0OTY0In19Ci0gICAgICAgICAg
ICB9LAotICAgICAgICAgICAgInRlc3RfZmluZF9lbGVtZW50X2xpbmtfdGV4dFs8YSBocmVmPSMg
c3R5bGU9J3RleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UnPmxpbmsgdGV4dDwvYT4tTElOSyBURVhU
XSI6IHsKLSAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiB7ImFsbCI6IHsic3RhdHVzIjogWyJG
QUlMIl0sICJidWciOiAid2Via2l0Lm9yZy9iLzE4NDk2NCJ9fQotICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICJ0ZXN0X2ZpbmRfZWxlbWVudF9wYXJ0aWFsX2xpbmtfdGV4dFs8YSBocmVmPSM+
cGFydGlhbCBsaW5rPGJyPnRleHQ8L2E+LWtcXG50XSI6IHsKLSAgICAgICAgICAgICAgICAiZXhw
ZWN0ZWQiOiB7ImFsbCI6IHsic3RhdHVzIjogWyJGQUlMIl0sICJidWciOiAid2Via2l0Lm9yZy9i
LzE4NDk2NCJ9fQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJ0ZXN0X2ZpbmRfZWxlbWVu
dF9wYXJ0aWFsX2xpbmtfdGV4dFs8YSBocmVmPSMgc3R5bGU9J3RleHQtdHJhbnNmb3JtOiB1cHBl
cmNhc2UnPnBhcnRpYWwgbGluayB0ZXh0PC9hPi1MSU5LXSI6IHsKLSAgICAgICAgICAgICAgICAi
ZXhwZWN0ZWQiOiB7ImFsbCI6IHsic3RhdHVzIjogWyJGQUlMIl0sICJidWciOiAid2Via2l0Lm9y
Zy9iLzE4NDk2NCJ9fQotICAgICAgICAgICAgfSwKICAgICAgICAgICAgICJ0ZXN0X3BhcmVudF9v
Zl9kb2N1bWVudF9ub2RlX2Vycm9ycyI6IHsKICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiB7
ImFsbCI6IHsic3RhdHVzIjogWyJGQUlMIl0sICJidWciOiAid2Via2l0Lm9yZy9iLzE4NDk2NCJ9
fQogICAgICAgICAgICAgfSwK
</data>
<flag name="review"
          id="477405"
          type_id="1"
          status="+"
          setter="aperez"
    />
    <flag name="commit-queue"
          id="477416"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>