<?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>238804</bug_id>
          
          <creation_ts>2022-04-05 07:49:05 -0700</creation_ts>
          <short_desc>Implement faster lookup of HTML tags in the HTML parser</short_desc>
          <delta_ts>2022-04-05 13:18:18 -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>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>heycam</cc>
    
    <cc>kangil.han</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1858376</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-05 07:49:05 -0700</bug_when>
    <thetext>Implement faster lookup of HTML tags in the HTML parser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858378</commentid>
    <comment_count>1</comment_count>
      <attachid>456699</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-05 07:58:13 -0700</bug_when>
    <thetext>Created attachment 456699
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858379</commentid>
    <comment_count>2</comment_count>
      <attachid>456700</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-05 07:58:52 -0700</bug_when>
    <thetext>Created attachment 456700
Generated findHTMLTag() function to facilitate review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858405</commentid>
    <comment_count>3</comment_count>
      <attachid>456708</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-05 09:29:41 -0700</bug_when>
    <thetext>Created attachment 456708
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858504</commentid>
    <comment_count>4</comment_count>
      <attachid>456708</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-04-05 12:38:49 -0700</bug_when>
    <thetext>Comment on attachment 456708
Patch

r=me

Something I said in Slack to Chris: We might get more efficient branching if we eliminate the initial switch on length (since it does not eliminate many possibilities) and/or reorder the branches to make more likely tags like &quot;div&quot; fewer branches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858505</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-05 12:39:51 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #4)
&gt; Comment on attachment 456708 [details]
&gt; Patch
&gt; 
&gt; r=me
&gt; 
&gt; Something I said in Slack to Chris: We might get more efficient branching if
&gt; we eliminate the initial switch on length (since it does not eliminate many
&gt; possibilities) and/or reorder the branches to make more likely tags like
&gt; &quot;div&quot; fewer branches.

Yes, I will look into this and follow-up if A/B testing comes back as a further progression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858533</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-05 13:17:28 -0700</bug_when>
    <thetext>Committed r292417 (249280@main): &lt;https://commits.webkit.org/249280@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 456708.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858534</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-05 13:18:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/91311691&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456699</attachid>
            <date>2022-04-05 07:58:13 -0700</date>
            <delta_ts>2022-04-05 10:11:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238804-20220405075812.patch</filename>
            <type>text/plain</type>
            <size>11710</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzEyYjQyY2IxNDczNmVi
MmQwZjFjNmIxYjE5ZjQ2MjI1Mjk1OWE3Yy4uZTQ2NjA3M2JlOWRiYWYyYjNlNmNmMTMwNThiY2Nk
ZDFjNjk4MDRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIyLTA0LTA1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGZhc3RlciBs
b29rdXAgb2YgSFRNTCB0YWdzIGluIHRoZSBIVE1MIHBhcnNlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4ODA0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGZhc3RlciBsb29rdXAgb2Yg
SFRNTCB0YWdzIGluIHRoZSBIVE1MIHBhcnNlciBieSBoYXZpbmcgbWFrZV9uYW1lcy5wbCBnZW5l
cmF0ZQorICAgICAgICBhIGZpbmRIVE1MVGFnIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB2ZXJ5IGVm
ZmljaWVudCB3ZWxsLWtub3duIEhUTUwgdGFnIG5hbWVzLgorCisgICAgICAgIEl0IGlzIGEgbGl0
dGxlIG1vcmUgZWZmaWNpZW50IHRoYXQgb3VyIGN1cnJlbnQgSFRNTE5hbWVDYWNoZSAoMC40JSBw
cm9ncmVzc2lvbiBvbgorICAgICAgICBTcGVlZG9tZXRlciBvbiBNYWNCb29rQWlyIDEwLDEsIG5l
dXRyYWwgb24gaU1hYzIwLDEpLiBVbmxpa2UgdGhlIEhUTUxOYW1lQ2FjaGUsIEl0IGRvZXNuJ3QK
KyAgICAgICAgcmVxdWlyZSBhbnkgaGFzaGluZyBvciBhZGRpdGlvbmFsIHN0b3JhZ2Ugc2luY2Ug
dGhlIHNldCBvZiB3ZWxsLWtub3duIEhUTUwgdGFncyBpcyBrbm93bgorICAgICAgICBhdCBjb21w
aWxlIHRpbWUuCisgICAgICAgIAorICAgICAgICAqIGRvbS9tYWtlX25hbWVzLnBsOgorICAgICAg
ICAocHJpbnROYW1lc0hlYWRlckZpbGUpOgorICAgICAgICAoZmluZE1heFRhZ0xlbmd0aCk6Cisg
ICAgICAgICh0YWdzV2l0aExlbmd0aCk6CisgICAgICAgIChnZW5lcmF0ZUZpbmRUYWdGb3JMZW5n
dGgpOgorICAgICAgICAocHJpbnROYW1lc0NwcEZpbGUpOgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L0F0b21IVE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkF0b21IVE1MVG9rZW46OkF0b21I
VE1MVG9rZW4pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxOYW1lQ2FjaGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE5hbWVDYWNoZTo6YXRvbVN0cmluZ0NhY2hlKToKKyAgICAgICAg
KiBodG1sL3BhcnNlci9IVE1MTmFtZUNhY2hlLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTmFt
ZUNhY2hlOjptYWtlQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE5hbWVD
YWNoZTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE5hbWVDYWNoZTo6bWFrZUF0b21T
dHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE5hbWVDYWNoZTo6YXRvbVN0cmluZ0NhY2hl
U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTmFtZUNhY2hlOjptYWtlVGFnTmFtZSk6IERl
bGV0ZWQuCisKIDIwMjItMDQtMDUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIEdzdENhcHNGb3JlYWNoRnVuYyByZXR1cm5z
IGEgZ2Jvb2xlYW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBs
IGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKaW5kZXggNmExNzUwY2I2N2YzMTAz
ZGFlY2JiNDM2YzBjZTJmZDI1MTcwOTg3Ni4uNDY4M2RkMTg4NmMxNjcwOTA1YTU0NzI3YTAzNTdi
YWVmY2UxNjRlOCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKQEAgLTc0Nyw2ICs3NDcsOSBA
QCBFTkQKICAgICBpZiAoa2V5cyAlYWxsVGFncykgewogICAgICAgICBwcmludCBGICJjb25zdCB1
bnNpZ25lZCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9VGFnc0NvdW50ID0gIiwgc2NhbGFyKGtleXMg
JWFsbFRhZ3MpLCAiO1xuIjsKICAgICAgICAgcHJpbnQgRiAiY29uc3QgV2ViQ29yZTo6JHBhcmFt
ZXRlcnN7bmFtZXNwYWNlfVF1YWxpZmllZE5hbWUqIGNvbnN0KiBnZXQkcGFyYW1ldGVyc3tuYW1l
c3BhY2V9VGFncygpO1xuIjsKKyAgICAgICAgaWYgKCRwYXJhbWV0ZXJze25hbWVzcGFjZX0gZXEg
IkhUTUwiKSB7CisgICAgICAgICAgICBwcmludCBGICJBdG9tU3RyaW5nIGZpbmQkcGFyYW1ldGVy
c3tuYW1lc3BhY2V9VGFnKFNwYW48Y29uc3QgVUNoYXI+KTtcbiIKKyAgICAgICAgfQogICAgIH0K
IAogICAgIGlmIChrZXlzICVhbGxBdHRycykgewpAQCAtNzU4LDYgKzc2MSw4NiBAQCBFTkQKICAg
ICBjbG9zZSBGOwogfQogCitzdWIgZmluZE1heFRhZ0xlbmd0aAoreworICAgIG15ICRhbGxUYWdz
ID0gc2hpZnQ7CisKKyAgICBteSAkbWF4TGVuZ3RoID0gMDsKKyAgICBmb3JlYWNoIG15ICR0YWdO
YW1lIChrZXlzICV7JGFsbFRhZ3N9KSB7CisgICAgICAgIG15ICR0YWdMZW5ndGggPSBsZW5ndGgo
JHRhZ05hbWUpOworICAgICAgICAkbWF4TGVuZ3RoID0gJHRhZ0xlbmd0aCBpZiAkdGFnTGVuZ3Ro
ID4gJG1heExlbmd0aDsKKyAgICB9CisgICAgcmV0dXJuICRtYXhMZW5ndGg7Cit9CisKK3N1YiB0
YWdzV2l0aExlbmd0aAoreworICAgIG15ICRhbGxBdHRycyA9IHNoaWZ0OworICAgIG15ICRleHBl
Y3RlZExlbmd0aCA9IHNoaWZ0OworCisgICAgbXkgQHRhZ3MgPSAoKTsgCisgICAgZm9yZWFjaCBt
eSAkdGFnTmFtZSAoc29ydCBrZXlzICV7JGFsbEF0dHJzfSkgeworICAgICAgICBwdXNoKEB0YWdz
LCAkdGFnTmFtZSkgaWYgbGVuZ3RoKCR0YWdOYW1lKSA9PSAkZXhwZWN0ZWRMZW5ndGg7CisgICAg
fQorICAgIHJldHVybiBAdGFnczsKK30KKworc3ViIGdlbmVyYXRlRmluZFRhZ0Zvckxlbmd0aAor
eworICAgIG15ICRpbmRlbnQgPSBzaGlmdDsKKyAgICBteSAkdGFnc1JlZiA9IHNoaWZ0OworICAg
IG15ICRsZW5ndGggPSBzaGlmdDsKKyAgICBteSAkY3VycmVudEluZGV4ID0gc2hpZnQ7CisKKyAg
ICBteSBAdGFncyA9IEB7JHRhZ3NSZWZ9OworICAgIG15ICR0YWdDb3VudCA9IEB0YWdzOworICAg
IGlmICgkdGFnQ291bnQgPT0gMSkgeworICAgICAgICBteSAkdGFnID0gJHRhZ3NbMF07CisgICAg
ICAgIG15ICRuZWVkc0lmQ2hlY2sgPSAkY3VycmVudEluZGV4IDwgJGxlbmd0aDsKKyAgICAgICAg
aWYgKCRuZWVkc0lmQ2hlY2spIHsKKyAgICAgICAgICAgIG15ICRsZW5ndGhUb0NvbXBhcmUgPSAk
bGVuZ3RoIC0gJGN1cnJlbnRJbmRleDsKKyAgICAgICAgICAgIGlmICgkbGVuZ3RoVG9Db21wYXJl
ID09IDEpIHsKKyAgICAgICAgICAgICAgICBteSAkbGV0dGVyID0gc3Vic3RyKCR0YWcsICRjdXJy
ZW50SW5kZXgsIDEpOworICAgICAgICAgICAgICAgIHByaW50IEYgIiR7aW5kZW50fWlmIChidWZm
ZXJbJGN1cnJlbnRJbmRleF0gPT0gJyRsZXR0ZXInKSB7XG4iOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBteSAkYnVmZmVyU3RhcnQgPSAkY3VycmVudEluZGV4ID4gMCA/
ICJidWZmZXIuZGF0YSgpICsgJGN1cnJlbnRJbmRleCIgOiAiYnVmZmVyLmRhdGEoKSI7CisgICAg
ICAgICAgICAgICAgcHJpbnQgRiAiJHtpbmRlbnR9c3RhdGljIGNvbnN0ZXhwciBVQ2hhciAke3Rh
Z31SZXN0W10gPSB7ICI7CisgICAgICAgICAgICAgICAgZm9yIChteSAkaW5kZXggPSAkY3VycmVu
dEluZGV4OyAkaW5kZXggPCAkbGVuZ3RoOyAkaW5kZXggPSAkaW5kZXggKyAxKSB7CisgICAgICAg
ICAgICAgICAgICAgIG15ICRsZXR0ZXIgPSBzdWJzdHIoJHRhZywgJGluZGV4LCAxKTsKKyAgICAg
ICAgICAgICAgICAgICAgcHJpbnQgRiAiJyRsZXR0ZXInLCAiOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBwcmludCBGICJ9O1xuIjsKKyAgICAgICAgICAgICAgICBwcmludCBG
ICIke2luZGVudH1pZiAoIW1lbWNtcCgkYnVmZmVyU3RhcnQsICR7dGFnfVJlc3QsICRsZW5ndGhU
b0NvbXBhcmUgKiBzaXplb2YoVUNoYXIpKSkge1xuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHByaW50IEYgIiRpbmRlbnQgICAgcmV0dXJuICR7dGFnfVRhZy0+bG9jYWxOYW1lKCk7XG4i
OworICAgICAgICAgICAgcHJpbnQgRiAiJGluZGVudH1cbiI7CisgICAgICAgICAgICBwcmludCBG
ICIke2luZGVudH1yZXR1cm4geyB9O1xuIjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHByaW50IEYgIiR7aW5kZW50fXJldHVybiAke3RhZ31UYWctPmxvY2FsTmFtZSgpO1xuIjsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZvciAobXkgJGkgPSAwOyAkaSA8
ICR0YWdDb3VudDspIHsKKyAgICAgICAgbXkgJHRhZyA9ICR0YWdzWyRpXTsKKyAgICAgICAgbXkg
JGxldHRlckF0SW5kZXggPSBzdWJzdHIoJHRhZywgJGN1cnJlbnRJbmRleCwgMSk7CisgICAgICAg
IHByaW50IEYgIiR7aW5kZW50fWlmIChidWZmZXJbJGN1cnJlbnRJbmRleF0gPT0gJyRsZXR0ZXJB
dEluZGV4Jykge1xuIjsKKyAgICAgICAgbXkgQHRhZ3NXaXRoUHJlZml4ID0gKCR0YWcpOworICAg
ICAgICBmb3IgKCRpID0gJGkgKyAxOyAkaSA8ICR0YWdDb3VudDsgJGkgPSAkaSArIDEpIHsKKyAg
ICAgICAgICAgIG15ICRuZXh0VGFnID0gJHRhZ3NbJGldOworICAgICAgICAgICAgaWYgKHN1YnN0
cigkbmV4dFRhZywgJGN1cnJlbnRJbmRleCwgMSkgZXEgJGxldHRlckF0SW5kZXgpIHsKKyAgICAg
ICAgICAgICAgICBwdXNoKEB0YWdzV2l0aFByZWZpeCwgJG5leHRUYWcpOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBsYXN0OworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIGdlbmVyYXRlRmluZFRhZ0Zvckxlbmd0aCgkaW5kZW50IC4gIiAgICAiLCBcQHRh
Z3NXaXRoUHJlZml4LCAkbGVuZ3RoLCAkY3VycmVudEluZGV4ICsgMSk7CisgICAgICAgIGlmIChz
Y2FsYXIgQHRhZ3NXaXRoUHJlZml4ID4gMSkgeworICAgICAgICAgICAgcHJpbnQgRiAiJHtpbmRl
bnR9ICAgIHJldHVybiB7IH07XG4iOworICAgICAgICB9CisgICAgICAgIHByaW50IEYgIiRpbmRl
bnR9XG4iOworICAgIH0KK30KKwogc3ViIHByaW50TmFtZXNDcHBGaWxlCiB7CiAgICAgbXkgJGNw
cFBhdGggPSBzaGlmdDsKQEAgLTc4Nyw2ICs4NzAsMjQgQEAgc3ViIHByaW50TmFtZXNDcHBGaWxl
CiAgICAgICAgIHByaW50IEYgIiAgICB9O1xuIjsKICAgICAgICAgcHJpbnQgRiAiICAgIHJldHVy
biAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9VGFncztcbiI7CiAgICAgICAgIHByaW50IEYgIn1cbiI7
CisKKyAgICAgICAgaWYgKCRwYXJhbWV0ZXJze25hbWVzcGFjZX0gZXEgIkhUTUwiKSB7CisgICAg
ICAgICAgICBwcmludCBGICJcbkF0b21TdHJpbmcgZmluZCRwYXJhbWV0ZXJze25hbWVzcGFjZX1U
YWcoU3Bhbjxjb25zdCBVQ2hhcj4gYnVmZmVyKVxue1xuIjsKKyAgICAgICAgICAgIG15ICRtYXhU
YWdMZW5ndGggPSBmaW5kTWF4VGFnTGVuZ3RoKFwlYWxsVGFncyk7CisgICAgICAgICAgICBwcmlu
dCBGICIgICAgc3dpdGNoIChidWZmZXIuc2l6ZSgpKSB7XG4iOworICAgICAgICAgICAgZm9yICht
eSAkbGVuZ3RoID0gMTsgJGxlbmd0aCA8PSAkbWF4VGFnTGVuZ3RoOyAkbGVuZ3RoID0gJGxlbmd0
aCArIDEpIHsKKyAgICAgICAgICAgICAgICBteSBAdGFncyA9IHRhZ3NXaXRoTGVuZ3RoKFwlYWxs
VGFncywgJGxlbmd0aCk7CisgICAgICAgICAgICAgICAgbmV4dCB1bmxlc3Mgc2NhbGFyIEB0YWdz
ID4gMDsKKyAgICAgICAgICAgICAgICBwcmludCBGICIgICAgY2FzZSAkbGVuZ3RoOlxuIjsKKyAg
ICAgICAgICAgICAgICBnZW5lcmF0ZUZpbmRUYWdGb3JMZW5ndGgoIiAgICAgICAgIiwgXEB0YWdz
LCAkbGVuZ3RoLCAwKTsKKyAgICAgICAgICAgICAgICBwcmludCBGICIgICAgICAgIGJyZWFrO1xu
IjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHByaW50IEYgIiAgICBkZWZhdWx0OlxuIjsK
KyAgICAgICAgICAgIHByaW50IEYgIiAgICAgICAgYnJlYWs7XG4iOworICAgICAgICAgICAgcHJp
bnQgRiAiICAgIH07XG4iOworICAgICAgICAgICAgcHJpbnQgRiAiICAgIHJldHVybiB7IH07XG4i
OworICAgICAgICAgICAgcHJpbnQgRiAifVxuIjsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlm
IChrZXlzICVhbGxBdHRycykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvQXRvbUhUTUxUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQXRvbUhUTUxU
b2tlbi5oCmluZGV4IGZkMDUwNmU0MTA0ODI2YmQwYmRlZjI4Yzg5NTQzMWIxMDhlNDc4NzAuLjQ2
NGVjMTA3NWU0M2NlM2YyODhhNzA3NmEyNmYxMWMyNDJhMjVhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21IVE1MVG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9BdG9tSFRNTFRva2VuLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiSFRNTE5hbWVDYWNoZS5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgogI2luY2x1ZGUgIkhUTUxUb2tlbi5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZ0hhc2guaD4KQEAgLTIzMCw3ICsyMzEsMTAgQEAgaW5s
aW5lIEF0b21IVE1MVG9rZW46OkF0b21IVE1MVG9rZW4oSFRNTFRva2VuJiB0b2tlbikKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEhUTUxU
b2tlbjo6RE9DVFlQRToKLSAgICAgICAgbV9uYW1lID0gSFRNTE5hbWVDYWNoZTo6bWFrZVRhZ05h
bWUodG9rZW4ubmFtZSgpKTsKKyAgICAgICAgaWYgKExJS0VMWSh0b2tlbi5uYW1lKCkuc2l6ZSgp
ID09IDQgJiYgZXF1YWwoSFRNTE5hbWVzOjpodG1sVGFnLT5sb2NhbE5hbWUoKS5pbXBsKCksIHRv
a2VuLm5hbWUoKS5kYXRhKCksIDQpKSkKKyAgICAgICAgICAgIG1fbmFtZSA9IEhUTUxOYW1lczo6
aHRtbFRhZy0+bG9jYWxOYW1lKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fbmFtZSA9
IEF0b21TdHJpbmcodG9rZW4ubmFtZSgpLmRhdGEoKSwgdG9rZW4ubmFtZSgpLnNpemUoKSk7CiAg
ICAgICAgIG1fZG9jdHlwZURhdGEgPSB0b2tlbi5yZWxlYXNlRG9jdHlwZURhdGEoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIGNhc2UgSFRNTFRva2VuOjpFbmRPZkZpbGU6CkBAIC0yMzgsNyArMjQy
LDkgQEAgaW5saW5lIEF0b21IVE1MVG9rZW46OkF0b21IVE1MVG9rZW4oSFRNTFRva2VuJiB0b2tl
bikKICAgICBjYXNlIEhUTUxUb2tlbjo6U3RhcnRUYWc6CiAgICAgY2FzZSBIVE1MVG9rZW46OkVu
ZFRhZzoKICAgICAgICAgbV9zZWxmQ2xvc2luZyA9IHRva2VuLnNlbGZDbG9zaW5nKCk7Ci0gICAg
ICAgIG1fbmFtZSA9IEhUTUxOYW1lQ2FjaGU6Om1ha2VUYWdOYW1lKHRva2VuLm5hbWUoKSk7Cisg
ICAgICAgIG1fbmFtZSA9IEhUTUxOYW1lczo6ZmluZEhUTUxUYWcodG9rZW4ubmFtZSgpKTsKKyAg
ICAgICAgaWYgKFVOTElLRUxZKG1fbmFtZS5pc051bGwoKSkpCisgICAgICAgICAgICBtX25hbWUg
PSBBdG9tU3RyaW5nKHRva2VuLm5hbWUoKS5kYXRhKCksIHRva2VuLm5hbWUoKS5zaXplKCkpOwog
ICAgICAgICBpbml0aWFsaXplQXR0cmlidXRlcyh0b2tlbi5hdHRyaWJ1dGVzKCkpOwogICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBIVE1MVG9rZW46OkNvbW1lbnQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTmFtZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxOYW1lQ2FjaGUuY3BwCmluZGV4IGE1N2Q3ZWNlNWY5N2IyMmIzZTI2
NjQ3OTg5ZjcwZWM5YzQ0ZWFhNGEuLmI4YWU5MTY0ZDg4NWE2ODAyZDc1NmQ0NTZmOGQzZWZlMWFh
MGQ5MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxOYW1lQ2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxOYW1lQ2FjaGUuY3Bw
CkBAIC0yOCwxMCArMjgsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1IVE1MTmFtZUNh
Y2hlOjpBdG9tU3RyaW5nQ2FjaGUmIEhUTUxOYW1lQ2FjaGU6OmF0b21TdHJpbmdDYWNoZShBdG9t
U3RyaW5nVHlwZSB0eXBlKQorSFRNTE5hbWVDYWNoZTo6QXRvbVN0cmluZ0NhY2hlJiBIVE1MTmFt
ZUNhY2hlOjphdG9tU3RyaW5nQ2FjaGUoKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJE
ZXN0cm95ZWQ8QXRvbVN0cmluZ0NhY2hlPiBjYWNoZXNbMl07Ci0gICAgcmV0dXJuIGNhY2hlc1tz
dGF0aWNfY2FzdDxzaXplX3Q+KHR5cGUpXS5nZXQoKTsKKyAgICBzdGF0aWMgTWFpblRocmVhZE5l
dmVyRGVzdHJveWVkPEF0b21TdHJpbmdDYWNoZT4gY2FjaGU7CisgICAgcmV0dXJuIGNhY2hlLmdl
dCgpOwogfQogCiBIVE1MTmFtZUNhY2hlOjpRdWFsaWZpZWROYW1lQ2FjaGUmIEhUTUxOYW1lQ2Fj
aGU6OnF1YWxpZmllZE5hbWVDYWNoZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MTmFtZUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
TmFtZUNhY2hlLmgKaW5kZXggOTNjZTQzZThlMTIyMTkxMTJkM2MwMjMzOWVjNjliY2IwZDk5MTA5
My4uYjM0NTUwNmJkMGNhM2U2MmI4ODY0ZjU2ZjRlOTVlNDM2NjhlNTMyMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE5hbWVDYWNoZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxOYW1lQ2FjaGUuaApAQCAtMzQsMTEgKzM0LDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MTmFtZUNhY2hlIHsKIHB1YmxpYzoKLSAgICBB
TFdBWVNfSU5MSU5FIHN0YXRpYyBBdG9tU3RyaW5nIG1ha2VUYWdOYW1lKFNwYW48Y29uc3QgVUNo
YXI+IHN0cmluZykKLSAgICB7Ci0gICAgICAgIHJldHVybiBtYWtlQXRvbVN0cmluZzxBdG9tU3Ry
aW5nVHlwZTo6VGFnTmFtZT4oc3RyaW5nKTsKLSAgICB9Ci0KICAgICBBTFdBWVNfSU5MSU5FIHN0
YXRpYyBRdWFsaWZpZWROYW1lIG1ha2VBdHRyaWJ1dGVRdWFsaWZpZWROYW1lKFNwYW48Y29uc3Qg
VUNoYXI+IHN0cmluZykKICAgICB7CiAgICAgICAgIHJldHVybiBtYWtlUXVhbGlmaWVkTmFtZShz
dHJpbmcpOwpAQCAtNDYsMjEgKzQxLDE3IEBAIHB1YmxpYzoKIAogICAgIEFMV0FZU19JTkxJTkUg
c3RhdGljIEF0b21TdHJpbmcgbWFrZUF0dHJpYnV0ZVZhbHVlKFNwYW48Y29uc3QgVUNoYXI+IHN0
cmluZykKICAgICB7Ci0gICAgICAgIHJldHVybiBtYWtlQXRvbVN0cmluZzxBdG9tU3RyaW5nVHlw
ZTo6QXR0cmlidXRlVmFsdWU+KHN0cmluZyk7CisgICAgICAgIHJldHVybiBtYWtlQXRvbVN0cmlu
ZyhzdHJpbmcpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgY2xlYXIo
KQogICAgIHsKICAgICAgICAgLy8gRklYTUUgKHdlYmtpdC5vcmcvYi8yMzAwMTkpOiBXZSBzaG91
bGQgdHJ5IHRvIGZpbmQgbW9yZSBvcHBvcnR1bml0aWVzIHRvIGNsZWFyIHRoaXMgY2FjaGUgd2l0
aG91dCBoaW5kZXJpbmcgdGhpcyBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24uCi0gICAgICAgIGF0
b21TdHJpbmdDYWNoZShBdG9tU3RyaW5nVHlwZTo6VGFnTmFtZSkuZmlsbCh7IH0pOwotICAgICAg
ICBhdG9tU3RyaW5nQ2FjaGUoQXRvbVN0cmluZ1R5cGU6OkF0dHJpYnV0ZVZhbHVlKS5maWxsKHsg
fSk7CisgICAgICAgIGF0b21TdHJpbmdDYWNoZSgpLmZpbGwoeyB9KTsKICAgICAgICAgcXVhbGlm
aWVkTmFtZUNhY2hlKCkuZmlsbCh7IH0pOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBlbnVtIGNs
YXNzIEF0b21TdHJpbmdUeXBlIDogYm9vbCB7IFRhZ05hbWUsIEF0dHJpYnV0ZVZhbHVlIH07Ci0K
LSAgICB0ZW1wbGF0ZTxIVE1MTmFtZUNhY2hlOjpBdG9tU3RyaW5nVHlwZSB0eXBlPgogICAgIEFM
V0FZU19JTkxJTkUgc3RhdGljIEF0b21TdHJpbmcgbWFrZUF0b21TdHJpbmcoU3Bhbjxjb25zdCBV
Q2hhcj4gc3RyaW5nKQogICAgIHsKICAgICAgICAgaWYgKHN0cmluZy5lbXB0eSgpKQpAQCAtNzIs
NyArNjMsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIGF1dG8gZmlyc3RDaGFyYWN0ZXIgPSBzdHJp
bmdbMF07CiAgICAgICAgIGF1dG8gbGFzdENoYXJhY3RlciA9IHN0cmluZ1tsZW5ndGggLSAxXTsK
LSAgICAgICAgYXV0byYgc2xvdCA9IGF0b21TdHJpbmdDYWNoZVNsb3QodHlwZSwgZmlyc3RDaGFy
YWN0ZXIsIGxhc3RDaGFyYWN0ZXIsIGxlbmd0aCk7CisgICAgICAgIGF1dG8mIHNsb3QgPSBhdG9t
U3RyaW5nQ2FjaGVTbG90KGZpcnN0Q2hhcmFjdGVyLCBsYXN0Q2hhcmFjdGVyLCBsZW5ndGgpOwog
ICAgICAgICBpZiAoIWVxdWFsKHNsb3QuaW1wbCgpLCBzdHJpbmcuZGF0YSgpLCBsZW5ndGgpKSB7
CiAgICAgICAgICAgICBBdG9tU3RyaW5nIHJlc3VsdChzdHJpbmcuZGF0YSgpLCBsZW5ndGgpOwog
ICAgICAgICAgICAgc2xvdCA9IHJlc3VsdDsKQEAgLTExMSwxMCArMTAyLDEwIEBAIHByaXZhdGU6
CiAgICAgICAgIHJldHVybiAoaGFzaCArIChoYXNoID4+IDYpKSAlIGNhcGFjaXR5OwogICAgIH0K
IAotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIEF0b21TdHJpbmcmIGF0b21TdHJpbmdDYWNoZVNs
b3QoQXRvbVN0cmluZ1R5cGUgdHlwZSwgVUNoYXIgZmlyc3RDaGFyYWN0ZXIsIFVDaGFyIGxhc3RD
aGFyYWN0ZXIsIFVDaGFyIGxlbmd0aCkKKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBBdG9tU3Ry
aW5nJiBhdG9tU3RyaW5nQ2FjaGVTbG90KFVDaGFyIGZpcnN0Q2hhcmFjdGVyLCBVQ2hhciBsYXN0
Q2hhcmFjdGVyLCBVQ2hhciBsZW5ndGgpCiAgICAgewogICAgICAgICBhdXRvIGluZGV4ID0gc2xv
dEluZGV4KGZpcnN0Q2hhcmFjdGVyLCBsYXN0Q2hhcmFjdGVyLCBsZW5ndGgpOwotICAgICAgICBy
ZXR1cm4gYXRvbVN0cmluZ0NhY2hlKHR5cGUpW2luZGV4XTsKKyAgICAgICAgcmV0dXJuIGF0b21T
dHJpbmdDYWNoZSgpW2luZGV4XTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBS
ZWZQdHI8UXVhbGlmaWVkTmFtZTo6UXVhbGlmaWVkTmFtZUltcGw+JiBxdWFsaWZpZWROYW1lQ2Fj
aGVTbG90KFVDaGFyIGZpcnN0Q2hhcmFjdGVyLCBVQ2hhciBsYXN0Q2hhcmFjdGVyLCBVQ2hhciBs
ZW5ndGgpCkBAIC0xMjksNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICB1c2luZyBBdG9tU3RyaW5n
Q2FjaGUgPSBzdGQ6OmFycmF5PEF0b21TdHJpbmcsIGNhcGFjaXR5PjsKICAgICB1c2luZyBRdWFs
aWZpZWROYW1lQ2FjaGUgPSBzdGQ6OmFycmF5PFJlZlB0cjxRdWFsaWZpZWROYW1lOjpRdWFsaWZp
ZWROYW1lSW1wbD4sIGNhcGFjaXR5PjsKIAotICAgIHN0YXRpYyBBdG9tU3RyaW5nQ2FjaGUmIGF0
b21TdHJpbmdDYWNoZShBdG9tU3RyaW5nVHlwZSk7CisgICAgc3RhdGljIEF0b21TdHJpbmdDYWNo
ZSYgYXRvbVN0cmluZ0NhY2hlKCk7CiAgICAgc3RhdGljIFF1YWxpZmllZE5hbWVDYWNoZSYgcXVh
bGlmaWVkTmFtZUNhY2hlKCk7CiB9OwogCg==
</data>
<flag name="commit-queue"
          id="485102"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>456700</attachid>
            <date>2022-04-05 07:58:52 -0700</date>
            <delta_ts>2022-04-05 07:58:52 -0700</delta_ts>
            <desc>Generated findHTMLTag() function to facilitate review</desc>
            <filename>findHTMLTag.cpp</filename>
            <type>text/plain</type>
            <size>37550</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">QXRvbVN0cmluZyBmaW5kSFRNTFRhZyhTcGFuPGNvbnN0IFVDaGFyPiBidWZmZXIpCnsKICAgIHN3
aXRjaCAoYnVmZmVyLnNpemUoKSkgewogICAgY2FzZSAxOgogICAgICAgIGlmIChidWZmZXJbMF0g
PT0gJ2EnKSB7CiAgICAgICAgICAgIHJldHVybiBhVGFnLT5sb2NhbE5hbWUoKTsKICAgICAgICB9
CiAgICAgICAgaWYgKGJ1ZmZlclswXSA9PSAnYicpIHsKICAgICAgICAgICAgcmV0dXJuIGJUYWct
PmxvY2FsTmFtZSgpOwogICAgICAgIH0KICAgICAgICBpZiAoYnVmZmVyWzBdID09ICdpJykgewog
ICAgICAgICAgICByZXR1cm4gaVRhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAgfQogICAgICAgIGlm
IChidWZmZXJbMF0gPT0gJ3AnKSB7CiAgICAgICAgICAgIHJldHVybiBwVGFnLT5sb2NhbE5hbWUo
KTsKICAgICAgICB9CiAgICAgICAgaWYgKGJ1ZmZlclswXSA9PSAncScpIHsKICAgICAgICAgICAg
cmV0dXJuIHFUYWctPmxvY2FsTmFtZSgpOwogICAgICAgIH0KICAgICAgICBpZiAoYnVmZmVyWzBd
ID09ICdzJykgewogICAgICAgICAgICByZXR1cm4gc1RhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAg
fQogICAgICAgIGlmIChidWZmZXJbMF0gPT0gJ3UnKSB7CiAgICAgICAgICAgIHJldHVybiB1VGFn
LT5sb2NhbE5hbWUoKTsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CiAgICBjYXNlIDI6CiAgICAg
ICAgaWYgKGJ1ZmZlclswXSA9PSAnYicpIHsKICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAn
cicpIHsKICAgICAgICAgICAgICAgIHJldHVybiBiclRhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAg
ICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICB9CiAgICAgICAgaWYgKGJ1ZmZl
clswXSA9PSAnZCcpIHsKICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAnZCcpIHsKICAgICAg
ICAgICAgICAgIHJldHVybiBkZFRhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgIH0KICAgICAg
ICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAnbCcpIHsKICAgICAgICAgICAgICAgIHJldHVybiBkbFRh
Zy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9
PSAndCcpIHsKICAgICAgICAgICAgICAgIHJldHVybiBkdFRhZy0+bG9jYWxOYW1lKCk7CiAgICAg
ICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICB9CiAgICAgICAgaWYgKGJ1
ZmZlclswXSA9PSAnZScpIHsKICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAnbScpIHsKICAg
ICAgICAgICAgICAgIHJldHVybiBlbVRhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgIH0KICAg
ICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICB9CiAgICAgICAgaWYgKGJ1ZmZlclswXSA9PSAn
aCcpIHsKICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAnMScpIHsKICAgICAgICAgICAgICAg
IHJldHVybiBoMVRhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYg
KGJ1ZmZlclsxXSA9PSAnMicpIHsKICAgICAgICAgICAgICAgIHJldHVybiBoMlRhZy0+bG9jYWxO
YW1lKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAnMycpIHsK
ICAgICAgICAgICAgICAgIHJldHVybiBoM1RhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgIH0K
ICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAnNCcpIHsKICAgICAgICAgICAgICAgIHJldHVy
biBoNFRhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGJ1ZmZl
clsxXSA9PSAnNScpIHsKICAgICAgICAgICAgICAgIHJldHVybiBoNVRhZy0+bG9jYWxOYW1lKCk7
CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAnNicpIHsKICAgICAg
ICAgICAgICAgIHJldHVybiBoNlRhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgIH0KICAgICAg
ICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAncicpIHsKICAgICAgICAgICAgICAgIHJldHVybiBoclRh
Zy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICAgICB9CiAgICAgICAgaWYgKGJ1ZmZlclswXSA9PSAnbCcpIHsKICAgICAgICAgICAgaWYgKGJ1
ZmZlclsxXSA9PSAnaScpIHsKICAgICAgICAgICAgICAgIHJldHVybiBsaVRhZy0+bG9jYWxOYW1l
KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICB9CiAgICAg
ICAgaWYgKGJ1ZmZlclswXSA9PSAnbycpIHsKICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAn
bCcpIHsKICAgICAgICAgICAgICAgIHJldHVybiBvbFRhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAg
ICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICB9CiAgICAgICAgaWYgKGJ1ZmZl
clswXSA9PSAncicpIHsKICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAnYicpIHsKICAgICAg
ICAgICAgICAgIHJldHVybiByYlRhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgIH0KICAgICAg
ICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAncCcpIHsKICAgICAgICAgICAgICAgIHJldHVybiBycFRh
Zy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9
PSAndCcpIHsKICAgICAgICAgICAgICAgIHJldHVybiBydFRhZy0+bG9jYWxOYW1lKCk7CiAgICAg
ICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICB9CiAgICAgICAgaWYgKGJ1
ZmZlclswXSA9PSAndCcpIHsKICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAnZCcpIHsKICAg
ICAgICAgICAgICAgIHJldHVybiB0ZFRhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgIH0KICAg
ICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAnaCcpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0
aFRhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGJ1ZmZlclsx
XSA9PSAncicpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0clRhZy0+bG9jYWxOYW1lKCk7CiAg
ICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAndCcpIHsKICAgICAgICAg
ICAgICAgIHJldHVybiB0dFRhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgIH0KICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICAgICB9CiAgICAgICAgaWYgKGJ1ZmZlclswXSA9PSAndScpIHsK
ICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAnbCcpIHsKICAgICAgICAgICAgICAgIHJldHVy
biB1bFRhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CiAgICBjYXNlIDM6CiAgICAgICAgaWYgKGJ1ZmZl
clswXSA9PSAnYicpIHsKICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAnZCcpIHsKICAgICAg
ICAgICAgICAgIGlmIChidWZmZXJbMl0gPT0gJ2knKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGJkaVRhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICBpZiAoYnVmZmVyWzJdID09ICdvJykgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBiZG9U
YWctPmxvY2FsTmFtZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJu
IHsgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoYnVmZmVyWzFdID09ICdpJykgewog
ICAgICAgICAgICAgICAgaWYgKGJ1ZmZlclsyXSA9PSAnZycpIHsKICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gYmlnVGFnLT5sb2NhbE5hbWUoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICAgICB9CiAgICAgICAgaWYgKGJ1ZmZlclswXSA9PSAnYycpIHsKICAgICAgICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBVQ2hhciBjb2xSZXN0W10gPSB7ICdvJywgJ2wnLCB9OwogICAgICAgICAg
ICBpZiAoIW1lbWNtcChidWZmZXIuZGF0YSgpICsgMSwgY29sUmVzdCwgMiAqIHNpemVvZihVQ2hh
cikpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gY29sVGFnLT5sb2NhbE5hbWUoKTsKICAgICAg
ICAgICAgfQogICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgIH0KICAgICAgICBpZiAoYnVm
ZmVyWzBdID09ICdkJykgewogICAgICAgICAgICBpZiAoYnVmZmVyWzFdID09ICdlJykgewogICAg
ICAgICAgICAgICAgaWYgKGJ1ZmZlclsyXSA9PSAnbCcpIHsKICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZGVsVGFnLT5sb2NhbE5hbWUoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgIHJldHVybiB7IH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9
PSAnZicpIHsKICAgICAgICAgICAgICAgIGlmIChidWZmZXJbMl0gPT0gJ24nKSB7CiAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGRmblRhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlm
IChidWZmZXJbMV0gPT0gJ2knKSB7CiAgICAgICAgICAgICAgICBpZiAoYnVmZmVyWzJdID09ICdy
JykgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBkaXJUYWctPmxvY2FsTmFtZSgpOwogICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGJ1ZmZlclsyXSA9PSAndicpIHsKICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZGl2VGFnLT5sb2NhbE5hbWUoKTsKICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgIH0KICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICAgICB9CiAgICAgICAgaWYgKGJ1ZmZlclswXSA9PSAnaScpIHsK
ICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAnbScpIHsKICAgICAgICAgICAgICAgIGlmIChi
dWZmZXJbMl0gPT0gJ2cnKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGltZ1RhZy0+bG9j
YWxOYW1lKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4geyB9Owog
ICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChidWZmZXJbMV0gPT0gJ24nKSB7CiAgICAgICAg
ICAgICAgICBpZiAoYnVmZmVyWzJdID09ICdzJykgewogICAgICAgICAgICAgICAgICAgIHJldHVy
biBpbnNUYWctPmxvY2FsTmFtZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
cmV0dXJuIHsgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAg
IH0KICAgICAgICBpZiAoYnVmZmVyWzBdID09ICdrJykgewogICAgICAgICAgICBzdGF0aWMgY29u
c3RleHByIFVDaGFyIGtiZFJlc3RbXSA9IHsgJ2InLCAnZCcsIH07CiAgICAgICAgICAgIGlmICgh
bWVtY21wKGJ1ZmZlci5kYXRhKCkgKyAxLCBrYmRSZXN0LCAyICogc2l6ZW9mKFVDaGFyKSkpIHsK
ICAgICAgICAgICAgICAgIHJldHVybiBrYmRUYWctPmxvY2FsTmFtZSgpOwogICAgICAgICAgICB9
CiAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgfQogICAgICAgIGlmIChidWZmZXJbMF0g
PT0gJ20nKSB7CiAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVUNoYXIgbWFwUmVzdFtdID0g
eyAnYScsICdwJywgfTsKICAgICAgICAgICAgaWYgKCFtZW1jbXAoYnVmZmVyLmRhdGEoKSArIDEs
IG1hcFJlc3QsIDIgKiBzaXplb2YoVUNoYXIpKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG1h
cFRhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICAgICB9CiAgICAgICAgaWYgKGJ1ZmZlclswXSA9PSAnbicpIHsKICAgICAgICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBVQ2hhciBuYXZSZXN0W10gPSB7ICdhJywgJ3YnLCB9OwogICAgICAgICAg
ICBpZiAoIW1lbWNtcChidWZmZXIuZGF0YSgpICsgMSwgbmF2UmVzdCwgMiAqIHNpemVvZihVQ2hh
cikpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbmF2VGFnLT5sb2NhbE5hbWUoKTsKICAgICAg
ICAgICAgfQogICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgIH0KICAgICAgICBpZiAoYnVm
ZmVyWzBdID09ICdwJykgewogICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFVDaGFyIHByZVJl
c3RbXSA9IHsgJ3InLCAnZScsIH07CiAgICAgICAgICAgIGlmICghbWVtY21wKGJ1ZmZlci5kYXRh
KCkgKyAxLCBwcmVSZXN0LCAyICogc2l6ZW9mKFVDaGFyKSkpIHsKICAgICAgICAgICAgICAgIHJl
dHVybiBwcmVUYWctPmxvY2FsTmFtZSgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVy
biB7IH07CiAgICAgICAgfQogICAgICAgIGlmIChidWZmZXJbMF0gPT0gJ3InKSB7CiAgICAgICAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgVUNoYXIgcnRjUmVzdFtdID0geyAndCcsICdjJywgfTsKICAg
ICAgICAgICAgaWYgKCFtZW1jbXAoYnVmZmVyLmRhdGEoKSArIDEsIHJ0Y1Jlc3QsIDIgKiBzaXpl
b2YoVUNoYXIpKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHJ0Y1RhZy0+bG9jYWxOYW1lKCk7
CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICB9CiAgICAgICAg
aWYgKGJ1ZmZlclswXSA9PSAncycpIHsKICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAndScp
IHsKICAgICAgICAgICAgICAgIGlmIChidWZmZXJbMl0gPT0gJ2InKSB7CiAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHN1YlRhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICBpZiAoYnVmZmVyWzJdID09ICdwJykgewogICAgICAgICAgICAgICAgICAgIHJl
dHVybiBzdXBUYWctPmxvY2FsTmFtZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyB9OwogICAg
ICAgIH0KICAgICAgICBpZiAoYnVmZmVyWzBdID09ICd2JykgewogICAgICAgICAgICBzdGF0aWMg
Y29uc3RleHByIFVDaGFyIHZhclJlc3RbXSA9IHsgJ2EnLCAncicsIH07CiAgICAgICAgICAgIGlm
ICghbWVtY21wKGJ1ZmZlci5kYXRhKCkgKyAxLCB2YXJSZXN0LCAyICogc2l6ZW9mKFVDaGFyKSkp
IHsKICAgICAgICAgICAgICAgIHJldHVybiB2YXJUYWctPmxvY2FsTmFtZSgpOwogICAgICAgICAg
ICB9CiAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgfQogICAgICAgIGlmIChidWZmZXJb
MF0gPT0gJ3cnKSB7CiAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVUNoYXIgd2JyUmVzdFtd
ID0geyAnYicsICdyJywgfTsKICAgICAgICAgICAgaWYgKCFtZW1jbXAoYnVmZmVyLmRhdGEoKSAr
IDEsIHdiclJlc3QsIDIgKiBzaXplb2YoVUNoYXIpKSkgewogICAgICAgICAgICAgICAgcmV0dXJu
IHdiclRhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICAgICB9CiAgICAgICAgaWYgKGJ1ZmZlclswXSA9PSAneCcpIHsKICAgICAgICAgICAg
c3RhdGljIGNvbnN0ZXhwciBVQ2hhciB4bXBSZXN0W10gPSB7ICdtJywgJ3AnLCB9OwogICAgICAg
ICAgICBpZiAoIW1lbWNtcChidWZmZXIuZGF0YSgpICsgMSwgeG1wUmVzdCwgMiAqIHNpemVvZihV
Q2hhcikpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4geG1wVGFnLT5sb2NhbE5hbWUoKTsKICAg
ICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgIH0KICAgICAgICBicmVh
azsKICAgIGNhc2UgNDoKICAgICAgICBpZiAoYnVmZmVyWzBdID09ICdhJykgewogICAgICAgICAg
ICBpZiAoYnVmZmVyWzFdID09ICdiJykgewogICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBVQ2hhciBhYmJyUmVzdFtdID0geyAnYicsICdyJywgfTsKICAgICAgICAgICAgICAgIGlmICgh
bWVtY21wKGJ1ZmZlci5kYXRhKCkgKyAyLCBhYmJyUmVzdCwgMiAqIHNpemVvZihVQ2hhcikpKSB7
CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFiYnJUYWctPmxvY2FsTmFtZSgpOwogICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgfQogICAg
ICAgICAgICBpZiAoYnVmZmVyWzFdID09ICdyJykgewogICAgICAgICAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciBVQ2hhciBhcmVhUmVzdFtdID0geyAnZScsICdhJywgfTsKICAgICAgICAgICAgICAg
IGlmICghbWVtY21wKGJ1ZmZlci5kYXRhKCkgKyAyLCBhcmVhUmVzdCwgMiAqIHNpemVvZihVQ2hh
cikpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFyZWFUYWctPmxvY2FsTmFtZSgpOwog
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAg
fQogICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgIH0KICAgICAgICBpZiAoYnVmZmVyWzBd
ID09ICdiJykgewogICAgICAgICAgICBpZiAoYnVmZmVyWzFdID09ICdhJykgewogICAgICAgICAg
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBVQ2hhciBiYXNlUmVzdFtdID0geyAncycsICdlJywgfTsK
ICAgICAgICAgICAgICAgIGlmICghbWVtY21wKGJ1ZmZlci5kYXRhKCkgKyAyLCBiYXNlUmVzdCwg
MiAqIHNpemVvZihVQ2hhcikpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJhc2VUYWct
PmxvY2FsTmFtZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoYnVmZmVyWzFdID09ICdvJykgewogICAg
ICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBVQ2hhciBib2R5UmVzdFtdID0geyAnZCcsICd5
JywgfTsKICAgICAgICAgICAgICAgIGlmICghbWVtY21wKGJ1ZmZlci5kYXRhKCkgKyAyLCBib2R5
UmVzdCwgMiAqIHNpemVvZihVQ2hhcikpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJv
ZHlUYWctPmxvY2FsTmFtZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0
dXJuIHsgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgIH0K
ICAgICAgICBpZiAoYnVmZmVyWzBdID09ICdjJykgewogICAgICAgICAgICBpZiAoYnVmZmVyWzFd
ID09ICdpJykgewogICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBVQ2hhciBjaXRlUmVz
dFtdID0geyAndCcsICdlJywgfTsKICAgICAgICAgICAgICAgIGlmICghbWVtY21wKGJ1ZmZlci5k
YXRhKCkgKyAyLCBjaXRlUmVzdCwgMiAqIHNpemVvZihVQ2hhcikpKSB7CiAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGNpdGVUYWctPmxvY2FsTmFtZSgpOwogICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoYnVm
ZmVyWzFdID09ICdvJykgewogICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBVQ2hhciBj
b2RlUmVzdFtdID0geyAnZCcsICdlJywgfTsKICAgICAgICAgICAgICAgIGlmICghbWVtY21wKGJ1
ZmZlci5kYXRhKCkgKyAyLCBjb2RlUmVzdCwgMiAqIHNpemVvZihVQ2hhcikpKSB7CiAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNvZGVUYWctPmxvY2FsTmFtZSgpOwogICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBy
ZXR1cm4geyB9OwogICAgICAgIH0KICAgICAgICBpZiAoYnVmZmVyWzBdID09ICdkJykgewogICAg
ICAgICAgICBzdGF0aWMgY29uc3RleHByIFVDaGFyIGRhdGFSZXN0W10gPSB7ICdhJywgJ3QnLCAn
YScsIH07CiAgICAgICAgICAgIGlmICghbWVtY21wKGJ1ZmZlci5kYXRhKCkgKyAxLCBkYXRhUmVz
dCwgMyAqIHNpemVvZihVQ2hhcikpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YVRhZy0+
bG9jYWxOYW1lKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAg
ICB9CiAgICAgICAgaWYgKGJ1ZmZlclswXSA9PSAnZicpIHsKICAgICAgICAgICAgaWYgKGJ1ZmZl
clsxXSA9PSAnbycpIHsKICAgICAgICAgICAgICAgIGlmIChidWZmZXJbMl0gPT0gJ24nKSB7CiAg
ICAgICAgICAgICAgICAgICAgaWYgKGJ1ZmZlclszXSA9PSAndCcpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZvbnRUYWctPmxvY2FsTmFtZSgpOwogICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgaWYgKGJ1ZmZlclsyXSA9PSAncicpIHsKICAgICAgICAgICAgICAgICAgICBp
ZiAoYnVmZmVyWzNdID09ICdtJykgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm9y
bVRhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4g
eyB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgfQogICAg
ICAgIGlmIChidWZmZXJbMF0gPT0gJ2gnKSB7CiAgICAgICAgICAgIGlmIChidWZmZXJbMV0gPT0g
J2UnKSB7CiAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFVDaGFyIGhlYWRSZXN0W10g
PSB7ICdhJywgJ2QnLCB9OwogICAgICAgICAgICAgICAgaWYgKCFtZW1jbXAoYnVmZmVyLmRhdGEo
KSArIDIsIGhlYWRSZXN0LCAyICogc2l6ZW9mKFVDaGFyKSkpIHsKICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gaGVhZFRhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChidWZmZXJb
MV0gPT0gJ3QnKSB7CiAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFVDaGFyIGh0bWxS
ZXN0W10gPSB7ICdtJywgJ2wnLCB9OwogICAgICAgICAgICAgICAgaWYgKCFtZW1jbXAoYnVmZmVy
LmRhdGEoKSArIDIsIGh0bWxSZXN0LCAyICogc2l6ZW9mKFVDaGFyKSkpIHsKICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gaHRtbFRhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVy
biB7IH07CiAgICAgICAgfQogICAgICAgIGlmIChidWZmZXJbMF0gPT0gJ2wnKSB7CiAgICAgICAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgVUNoYXIgbGlua1Jlc3RbXSA9IHsgJ2knLCAnbicsICdrJywg
fTsKICAgICAgICAgICAgaWYgKCFtZW1jbXAoYnVmZmVyLmRhdGEoKSArIDEsIGxpbmtSZXN0LCAz
ICogc2l6ZW9mKFVDaGFyKSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBsaW5rVGFnLT5sb2Nh
bE5hbWUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgIH0K
ICAgICAgICBpZiAoYnVmZmVyWzBdID09ICdtJykgewogICAgICAgICAgICBpZiAoYnVmZmVyWzFd
ID09ICdhJykgewogICAgICAgICAgICAgICAgaWYgKGJ1ZmZlclsyXSA9PSAnaScpIHsKICAgICAg
ICAgICAgICAgICAgICBpZiAoYnVmZmVyWzNdID09ICduJykgewogICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbWFpblRhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICBpZiAoYnVmZmVyWzJdID09ICdyJykgewogICAgICAgICAgICAgICAgICAgIGlmIChi
dWZmZXJbM10gPT0gJ2snKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXJrVGFn
LT5sb2NhbE5hbWUoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHsgfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiB7IH07
CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAnZScpIHsKICAgICAg
ICAgICAgICAgIGlmIChidWZmZXJbMl0gPT0gJ24nKSB7CiAgICAgICAgICAgICAgICAgICAgaWYg
KGJ1ZmZlclszXSA9PSAndScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lbnVU
YWctPmxvY2FsTmFtZSgpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICByZXR1cm4geyB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGJ1ZmZl
clsyXSA9PSAndCcpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoYnVmZmVyWzNdID09ICdhJykg
ewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWV0YVRhZy0+bG9jYWxOYW1lKCk7CiAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICB9CiAg
ICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgfQogICAgICAgIGlmIChidWZmZXJbMF0gPT0g
J24nKSB7CiAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVUNoYXIgbm9iclJlc3RbXSA9IHsg
J28nLCAnYicsICdyJywgfTsKICAgICAgICAgICAgaWYgKCFtZW1jbXAoYnVmZmVyLmRhdGEoKSAr
IDEsIG5vYnJSZXN0LCAzICogc2l6ZW9mKFVDaGFyKSkpIHsKICAgICAgICAgICAgICAgIHJldHVy
biBub2JyVGFnLT5sb2NhbE5hbWUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4g
eyB9OwogICAgICAgIH0KICAgICAgICBpZiAoYnVmZmVyWzBdID09ICdyJykgewogICAgICAgICAg
ICBzdGF0aWMgY29uc3RleHByIFVDaGFyIHJ1YnlSZXN0W10gPSB7ICd1JywgJ2InLCAneScsIH07
CiAgICAgICAgICAgIGlmICghbWVtY21wKGJ1ZmZlci5kYXRhKCkgKyAxLCBydWJ5UmVzdCwgMyAq
IHNpemVvZihVQ2hhcikpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcnVieVRhZy0+bG9jYWxO
YW1lKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICB9CiAg
ICAgICAgaWYgKGJ1ZmZlclswXSA9PSAncycpIHsKICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9
PSAnYScpIHsKICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVUNoYXIgc2FtcFJlc3Rb
XSA9IHsgJ20nLCAncCcsIH07CiAgICAgICAgICAgICAgICBpZiAoIW1lbWNtcChidWZmZXIuZGF0
YSgpICsgMiwgc2FtcFJlc3QsIDIgKiBzaXplb2YoVUNoYXIpKSkgewogICAgICAgICAgICAgICAg
ICAgIHJldHVybiBzYW1wVGFnLT5sb2NhbE5hbWUoKTsKICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGJ1ZmZl
clsxXSA9PSAnbCcpIHsKICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVUNoYXIgc2xv
dFJlc3RbXSA9IHsgJ28nLCAndCcsIH07CiAgICAgICAgICAgICAgICBpZiAoIW1lbWNtcChidWZm
ZXIuZGF0YSgpICsgMiwgc2xvdFJlc3QsIDIgKiBzaXplb2YoVUNoYXIpKSkgewogICAgICAgICAg
ICAgICAgICAgIHJldHVybiBzbG90VGFnLT5sb2NhbE5hbWUoKTsKICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYg
KGJ1ZmZlclsxXSA9PSAncCcpIHsKICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVUNo
YXIgc3BhblJlc3RbXSA9IHsgJ2EnLCAnbicsIH07CiAgICAgICAgICAgICAgICBpZiAoIW1lbWNt
cChidWZmZXIuZGF0YSgpICsgMiwgc3BhblJlc3QsIDIgKiBzaXplb2YoVUNoYXIpKSkgewogICAg
ICAgICAgICAgICAgICAgIHJldHVybiBzcGFuVGFnLT5sb2NhbE5hbWUoKTsKICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgIH0KICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICAgICB9CiAgICAgICAgaWYgKGJ1ZmZlclswXSA9PSAndCcpIHsK
ICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBVQ2hhciB0aW1lUmVzdFtdID0geyAnaScsICdt
JywgJ2UnLCB9OwogICAgICAgICAgICBpZiAoIW1lbWNtcChidWZmZXIuZGF0YSgpICsgMSwgdGlt
ZVJlc3QsIDMgKiBzaXplb2YoVUNoYXIpKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRpbWVU
YWctPmxvY2FsTmFtZSgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB7IH07CiAg
ICAgICAgfQogICAgICAgIGJyZWFrOwogICAgY2FzZSA1OgogICAgICAgIGlmIChidWZmZXJbMF0g
PT0gJ2EnKSB7CiAgICAgICAgICAgIGlmIChidWZmZXJbMV0gPT0gJ3MnKSB7CiAgICAgICAgICAg
ICAgICBzdGF0aWMgY29uc3RleHByIFVDaGFyIGFzaWRlUmVzdFtdID0geyAnaScsICdkJywgJ2Un
LCB9OwogICAgICAgICAgICAgICAgaWYgKCFtZW1jbXAoYnVmZmVyLmRhdGEoKSArIDIsIGFzaWRl
UmVzdCwgMyAqIHNpemVvZihVQ2hhcikpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFz
aWRlVGFnLT5sb2NhbE5hbWUoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAndScp
IHsKICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVUNoYXIgYXVkaW9SZXN0W10gPSB7
ICdkJywgJ2knLCAnbycsIH07CiAgICAgICAgICAgICAgICBpZiAoIW1lbWNtcChidWZmZXIuZGF0
YSgpICsgMiwgYXVkaW9SZXN0LCAzICogc2l6ZW9mKFVDaGFyKSkpIHsKICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gYXVkaW9UYWctPmxvY2FsTmFtZSgpOwogICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4g
eyB9OwogICAgICAgIH0KICAgICAgICBpZiAoYnVmZmVyWzBdID09ICdlJykgewogICAgICAgICAg
ICBzdGF0aWMgY29uc3RleHByIFVDaGFyIGVtYmVkUmVzdFtdID0geyAnbScsICdiJywgJ2UnLCAn
ZCcsIH07CiAgICAgICAgICAgIGlmICghbWVtY21wKGJ1ZmZlci5kYXRhKCkgKyAxLCBlbWJlZFJl
c3QsIDQgKiBzaXplb2YoVUNoYXIpKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGVtYmVkVGFn
LT5sb2NhbE5hbWUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyB9OwogICAg
ICAgIH0KICAgICAgICBpZiAoYnVmZmVyWzBdID09ICdmJykgewogICAgICAgICAgICBzdGF0aWMg
Y29uc3RleHByIFVDaGFyIGZyYW1lUmVzdFtdID0geyAncicsICdhJywgJ20nLCAnZScsIH07CiAg
ICAgICAgICAgIGlmICghbWVtY21wKGJ1ZmZlci5kYXRhKCkgKyAxLCBmcmFtZVJlc3QsIDQgKiBz
aXplb2YoVUNoYXIpKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1lVGFnLT5sb2NhbE5h
bWUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgIH0KICAg
ICAgICBpZiAoYnVmZmVyWzBdID09ICdpJykgewogICAgICAgICAgICBpZiAoYnVmZmVyWzFdID09
ICdtJykgewogICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBVQ2hhciBpbWFnZVJlc3Rb
XSA9IHsgJ2EnLCAnZycsICdlJywgfTsKICAgICAgICAgICAgICAgIGlmICghbWVtY21wKGJ1ZmZl
ci5kYXRhKCkgKyAyLCBpbWFnZVJlc3QsIDMgKiBzaXplb2YoVUNoYXIpKSkgewogICAgICAgICAg
ICAgICAgICAgIHJldHVybiBpbWFnZVRhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlm
IChidWZmZXJbMV0gPT0gJ24nKSB7CiAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFVD
aGFyIGlucHV0UmVzdFtdID0geyAncCcsICd1JywgJ3QnLCB9OwogICAgICAgICAgICAgICAgaWYg
KCFtZW1jbXAoYnVmZmVyLmRhdGEoKSArIDIsIGlucHV0UmVzdCwgMyAqIHNpemVvZihVQ2hhcikp
KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlucHV0VGFnLT5sb2NhbE5hbWUoKTsKICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgIH0K
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICB9CiAgICAgICAgaWYgKGJ1ZmZlclswXSA9
PSAnbCcpIHsKICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAnYScpIHsKICAgICAgICAgICAg
ICAgIGlmIChidWZmZXJbMl0gPT0gJ2InKSB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciBVQ2hhciBsYWJlbFJlc3RbXSA9IHsgJ2UnLCAnbCcsIH07CiAgICAgICAgICAgICAg
ICAgICAgaWYgKCFtZW1jbXAoYnVmZmVyLmRhdGEoKSArIDMsIGxhYmVsUmVzdCwgMiAqIHNpemVv
ZihVQ2hhcikpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsYWJlbFRhZy0+bG9j
YWxOYW1lKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVy
biB7IH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoYnVmZmVyWzJdID09
ICd5JykgewogICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVUNoYXIgbGF5ZXJS
ZXN0W10gPSB7ICdlJywgJ3InLCB9OwogICAgICAgICAgICAgICAgICAgIGlmICghbWVtY21wKGJ1
ZmZlci5kYXRhKCkgKyAzLCBsYXllclJlc3QsIDIgKiBzaXplb2YoVUNoYXIpKSkgewogICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbGF5ZXJUYWctPmxvY2FsTmFtZSgpOwogICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgfQogICAgICAgICAg
ICByZXR1cm4geyB9OwogICAgICAgIH0KICAgICAgICBpZiAoYnVmZmVyWzBdID09ICdtJykgewog
ICAgICAgICAgICBpZiAoYnVmZmVyWzFdID09ICdlJykgewogICAgICAgICAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBVQ2hhciBtZXRlclJlc3RbXSA9IHsgJ3QnLCAnZScsICdyJywgfTsKICAgICAg
ICAgICAgICAgIGlmICghbWVtY21wKGJ1ZmZlci5kYXRhKCkgKyAyLCBtZXRlclJlc3QsIDMgKiBz
aXplb2YoVUNoYXIpKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBtZXRlclRhZy0+bG9j
YWxOYW1lKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4geyB9Owog
ICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChidWZmZXJbMV0gPT0gJ28nKSB7CiAgICAgICAg
ICAgICAgICBzdGF0aWMgY29uc3RleHByIFVDaGFyIG1vZGVsUmVzdFtdID0geyAnZCcsICdlJywg
J2wnLCB9OwogICAgICAgICAgICAgICAgaWYgKCFtZW1jbXAoYnVmZmVyLmRhdGEoKSArIDIsIG1v
ZGVsUmVzdCwgMyAqIHNpemVvZihVQ2hhcikpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG1vZGVsVGFnLT5sb2NhbE5hbWUoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
IHJldHVybiB7IH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAg
ICB9CiAgICAgICAgaWYgKGJ1ZmZlclswXSA9PSAncCcpIHsKICAgICAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciBVQ2hhciBwYXJhbVJlc3RbXSA9IHsgJ2EnLCAncicsICdhJywgJ20nLCB9OwogICAg
ICAgICAgICBpZiAoIW1lbWNtcChidWZmZXIuZGF0YSgpICsgMSwgcGFyYW1SZXN0LCA0ICogc2l6
ZW9mKFVDaGFyKSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBwYXJhbVRhZy0+bG9jYWxOYW1l
KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICB9CiAgICAg
ICAgaWYgKGJ1ZmZlclswXSA9PSAncycpIHsKICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAn
bScpIHsKICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVUNoYXIgc21hbGxSZXN0W10g
PSB7ICdhJywgJ2wnLCAnbCcsIH07CiAgICAgICAgICAgICAgICBpZiAoIW1lbWNtcChidWZmZXIu
ZGF0YSgpICsgMiwgc21hbGxSZXN0LCAzICogc2l6ZW9mKFVDaGFyKSkpIHsKICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gc21hbGxUYWctPmxvY2FsTmFtZSgpOwogICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAo
YnVmZmVyWzFdID09ICd0JykgewogICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBVQ2hh
ciBzdHlsZVJlc3RbXSA9IHsgJ3knLCAnbCcsICdlJywgfTsKICAgICAgICAgICAgICAgIGlmICgh
bWVtY21wKGJ1ZmZlci5kYXRhKCkgKyAyLCBzdHlsZVJlc3QsIDMgKiBzaXplb2YoVUNoYXIpKSkg
ewogICAgICAgICAgICAgICAgICAgIHJldHVybiBzdHlsZVRhZy0+bG9jYWxOYW1lKCk7CiAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICB9CiAg
ICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgfQogICAgICAgIGlmIChidWZmZXJbMF0gPT0g
J3QnKSB7CiAgICAgICAgICAgIGlmIChidWZmZXJbMV0gPT0gJ2EnKSB7CiAgICAgICAgICAgICAg
ICBzdGF0aWMgY29uc3RleHByIFVDaGFyIHRhYmxlUmVzdFtdID0geyAnYicsICdsJywgJ2UnLCB9
OwogICAgICAgICAgICAgICAgaWYgKCFtZW1jbXAoYnVmZmVyLmRhdGEoKSArIDIsIHRhYmxlUmVz
dCwgMyAqIHNpemVvZihVQ2hhcikpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRhYmxl
VGFnLT5sb2NhbE5hbWUoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVy
biB7IH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAnYicpIHsK
ICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVUNoYXIgdGJvZHlSZXN0W10gPSB7ICdv
JywgJ2QnLCAneScsIH07CiAgICAgICAgICAgICAgICBpZiAoIW1lbWNtcChidWZmZXIuZGF0YSgp
ICsgMiwgdGJvZHlSZXN0LCAzICogc2l6ZW9mKFVDaGFyKSkpIHsKICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdGJvZHlUYWctPmxvY2FsTmFtZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoYnVmZmVy
WzFdID09ICdmJykgewogICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBVQ2hhciB0Zm9v
dFJlc3RbXSA9IHsgJ28nLCAnbycsICd0JywgfTsKICAgICAgICAgICAgICAgIGlmICghbWVtY21w
KGJ1ZmZlci5kYXRhKCkgKyAyLCB0Zm9vdFJlc3QsIDMgKiBzaXplb2YoVUNoYXIpKSkgewogICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0Zm9vdFRhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICB9CiAgICAgICAg
ICAgIGlmIChidWZmZXJbMV0gPT0gJ2gnKSB7CiAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Rl
eHByIFVDaGFyIHRoZWFkUmVzdFtdID0geyAnZScsICdhJywgJ2QnLCB9OwogICAgICAgICAgICAg
ICAgaWYgKCFtZW1jbXAoYnVmZmVyLmRhdGEoKSArIDIsIHRoZWFkUmVzdCwgMyAqIHNpemVvZihV
Q2hhcikpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoZWFkVGFnLT5sb2NhbE5hbWUo
KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAg
ICAgIH0KICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAnaScpIHsKICAgICAgICAgICAgICAg
IHN0YXRpYyBjb25zdGV4cHIgVUNoYXIgdGl0bGVSZXN0W10gPSB7ICd0JywgJ2wnLCAnZScsIH07
CiAgICAgICAgICAgICAgICBpZiAoIW1lbWNtcChidWZmZXIuZGF0YSgpICsgMiwgdGl0bGVSZXN0
LCAzICogc2l6ZW9mKFVDaGFyKSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGl0bGVU
YWctPmxvY2FsTmFtZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJu
IHsgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoYnVmZmVyWzFdID09ICdyJykgewog
ICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBVQ2hhciB0cmFja1Jlc3RbXSA9IHsgJ2En
LCAnYycsICdrJywgfTsKICAgICAgICAgICAgICAgIGlmICghbWVtY21wKGJ1ZmZlci5kYXRhKCkg
KyAyLCB0cmFja1Jlc3QsIDMgKiBzaXplb2YoVUNoYXIpKSkgewogICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cmFja1RhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB7IH07
CiAgICAgICAgfQogICAgICAgIGlmIChidWZmZXJbMF0gPT0gJ3YnKSB7CiAgICAgICAgICAgIHN0
YXRpYyBjb25zdGV4cHIgVUNoYXIgdmlkZW9SZXN0W10gPSB7ICdpJywgJ2QnLCAnZScsICdvJywg
fTsKICAgICAgICAgICAgaWYgKCFtZW1jbXAoYnVmZmVyLmRhdGEoKSArIDEsIHZpZGVvUmVzdCwg
NCAqIHNpemVvZihVQ2hhcikpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdmlkZW9UYWctPmxv
Y2FsTmFtZSgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAg
fQogICAgICAgIGJyZWFrOwogICAgY2FzZSA2OgogICAgICAgIGlmIChidWZmZXJbMF0gPT0gJ2En
KSB7CiAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVUNoYXIgYXBwbGV0UmVzdFtdID0geyAn
cCcsICdwJywgJ2wnLCAnZScsICd0JywgfTsKICAgICAgICAgICAgaWYgKCFtZW1jbXAoYnVmZmVy
LmRhdGEoKSArIDEsIGFwcGxldFJlc3QsIDUgKiBzaXplb2YoVUNoYXIpKSkgewogICAgICAgICAg
ICAgICAgcmV0dXJuIGFwcGxldFRhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgIH0KICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICAgICB9CiAgICAgICAgaWYgKGJ1ZmZlclswXSA9PSAnYicp
IHsKICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBVQ2hhciBidXR0b25SZXN0W10gPSB7ICd1
JywgJ3QnLCAndCcsICdvJywgJ24nLCB9OwogICAgICAgICAgICBpZiAoIW1lbWNtcChidWZmZXIu
ZGF0YSgpICsgMSwgYnV0dG9uUmVzdCwgNSAqIHNpemVvZihVQ2hhcikpKSB7CiAgICAgICAgICAg
ICAgICByZXR1cm4gYnV0dG9uVGFnLT5sb2NhbE5hbWUoKTsKICAgICAgICAgICAgfQogICAgICAg
ICAgICByZXR1cm4geyB9OwogICAgICAgIH0KICAgICAgICBpZiAoYnVmZmVyWzBdID09ICdjJykg
ewogICAgICAgICAgICBpZiAoYnVmZmVyWzFdID09ICdhJykgewogICAgICAgICAgICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBVQ2hhciBjYW52YXNSZXN0W10gPSB7ICduJywgJ3YnLCAnYScsICdzJywg
fTsKICAgICAgICAgICAgICAgIGlmICghbWVtY21wKGJ1ZmZlci5kYXRhKCkgKyAyLCBjYW52YXNS
ZXN0LCA0ICogc2l6ZW9mKFVDaGFyKSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2Fu
dmFzVGFnLT5sb2NhbE5hbWUoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAnZScp
IHsKICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVUNoYXIgY2VudGVyUmVzdFtdID0g
eyAnbicsICd0JywgJ2UnLCAncicsIH07CiAgICAgICAgICAgICAgICBpZiAoIW1lbWNtcChidWZm
ZXIuZGF0YSgpICsgMiwgY2VudGVyUmVzdCwgNCAqIHNpemVvZihVQ2hhcikpKSB7CiAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNlbnRlclRhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICB9CiAgICAgICAgICAg
IHJldHVybiB7IH07CiAgICAgICAgfQogICAgICAgIGlmIChidWZmZXJbMF0gPT0gJ2QnKSB7CiAg
ICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVUNoYXIgZGlhbG9nUmVzdFtdID0geyAnaScsICdh
JywgJ2wnLCAnbycsICdnJywgfTsKICAgICAgICAgICAgaWYgKCFtZW1jbXAoYnVmZmVyLmRhdGEo
KSArIDEsIGRpYWxvZ1Jlc3QsIDUgKiBzaXplb2YoVUNoYXIpKSkgewogICAgICAgICAgICAgICAg
cmV0dXJuIGRpYWxvZ1RhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAg
cmV0dXJuIHsgfTsKICAgICAgICB9CiAgICAgICAgaWYgKGJ1ZmZlclswXSA9PSAnZicpIHsKICAg
ICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAnaScpIHsKICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgVUNoYXIgZmlndXJlUmVzdFtdID0geyAnZycsICd1JywgJ3InLCAnZScsIH07CiAg
ICAgICAgICAgICAgICBpZiAoIW1lbWNtcChidWZmZXIuZGF0YSgpICsgMiwgZmlndXJlUmVzdCwg
NCAqIHNpemVvZihVQ2hhcikpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpZ3VyZVRh
Zy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4g
eyB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChidWZmZXJbMV0gPT0gJ28nKSB7CiAg
ICAgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFVDaGFyIGZvb3RlclJlc3RbXSA9IHsgJ28n
LCAndCcsICdlJywgJ3InLCB9OwogICAgICAgICAgICAgICAgaWYgKCFtZW1jbXAoYnVmZmVyLmRh
dGEoKSArIDIsIGZvb3RlclJlc3QsIDQgKiBzaXplb2YoVUNoYXIpKSkgewogICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmb290ZXJUYWctPmxvY2FsTmFtZSgpOwogICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1
cm4geyB9OwogICAgICAgIH0KICAgICAgICBpZiAoYnVmZmVyWzBdID09ICdoJykgewogICAgICAg
ICAgICBpZiAoYnVmZmVyWzFdID09ICdlJykgewogICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0
ZXhwciBVQ2hhciBoZWFkZXJSZXN0W10gPSB7ICdhJywgJ2QnLCAnZScsICdyJywgfTsKICAgICAg
ICAgICAgICAgIGlmICghbWVtY21wKGJ1ZmZlci5kYXRhKCkgKyAyLCBoZWFkZXJSZXN0LCA0ICog
c2l6ZW9mKFVDaGFyKSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGVhZGVyVGFnLT5s
b2NhbE5hbWUoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiB7IH07
CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAnZycpIHsKICAgICAg
ICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVUNoYXIgaGdyb3VwUmVzdFtdID0geyAncicsICdv
JywgJ3UnLCAncCcsIH07CiAgICAgICAgICAgICAgICBpZiAoIW1lbWNtcChidWZmZXIuZGF0YSgp
ICsgMiwgaGdyb3VwUmVzdCwgNCAqIHNpemVvZihVQ2hhcikpKSB7CiAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGhncm91cFRhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB7
IH07CiAgICAgICAgfQogICAgICAgIGlmIChidWZmZXJbMF0gPT0gJ2knKSB7CiAgICAgICAgICAg
IHN0YXRpYyBjb25zdGV4cHIgVUNoYXIgaWZyYW1lUmVzdFtdID0geyAnZicsICdyJywgJ2EnLCAn
bScsICdlJywgfTsKICAgICAgICAgICAgaWYgKCFtZW1jbXAoYnVmZmVyLmRhdGEoKSArIDEsIGlm
cmFtZVJlc3QsIDUgKiBzaXplb2YoVUNoYXIpKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGlm
cmFtZVRhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICAgICB9CiAgICAgICAgaWYgKGJ1ZmZlclswXSA9PSAnaycpIHsKICAgICAgICAgICAg
c3RhdGljIGNvbnN0ZXhwciBVQ2hhciBrZXlnZW5SZXN0W10gPSB7ICdlJywgJ3knLCAnZycsICdl
JywgJ24nLCB9OwogICAgICAgICAgICBpZiAoIW1lbWNtcChidWZmZXIuZGF0YSgpICsgMSwga2V5
Z2VuUmVzdCwgNSAqIHNpemVvZihVQ2hhcikpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4ga2V5
Z2VuVGFnLT5sb2NhbE5hbWUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyB9
OwogICAgICAgIH0KICAgICAgICBpZiAoYnVmZmVyWzBdID09ICdsJykgewogICAgICAgICAgICBz
dGF0aWMgY29uc3RleHByIFVDaGFyIGxlZ2VuZFJlc3RbXSA9IHsgJ2UnLCAnZycsICdlJywgJ24n
LCAnZCcsIH07CiAgICAgICAgICAgIGlmICghbWVtY21wKGJ1ZmZlci5kYXRhKCkgKyAxLCBsZWdl
bmRSZXN0LCA1ICogc2l6ZW9mKFVDaGFyKSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBsZWdl
bmRUYWctPmxvY2FsTmFtZSgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB7IH07
CiAgICAgICAgfQogICAgICAgIGlmIChidWZmZXJbMF0gPT0gJ28nKSB7CiAgICAgICAgICAgIGlm
IChidWZmZXJbMV0gPT0gJ2InKSB7CiAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFVD
aGFyIG9iamVjdFJlc3RbXSA9IHsgJ2onLCAnZScsICdjJywgJ3QnLCB9OwogICAgICAgICAgICAg
ICAgaWYgKCFtZW1jbXAoYnVmZmVyLmRhdGEoKSArIDIsIG9iamVjdFJlc3QsIDQgKiBzaXplb2Yo
VUNoYXIpKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3RUYWctPmxvY2FsTmFt
ZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAg
ICAgICAgfQogICAgICAgICAgICBpZiAoYnVmZmVyWzFdID09ICdwJykgewogICAgICAgICAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBVQ2hhciBvcHRpb25SZXN0W10gPSB7ICd0JywgJ2knLCAnbycs
ICduJywgfTsKICAgICAgICAgICAgICAgIGlmICghbWVtY21wKGJ1ZmZlci5kYXRhKCkgKyAyLCBv
cHRpb25SZXN0LCA0ICogc2l6ZW9mKFVDaGFyKSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1
cm4gb3B0aW9uVGFnLT5sb2NhbE5hbWUoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgIHJldHVybiB7IH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9
PSAndScpIHsKICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVUNoYXIgb3V0cHV0UmVz
dFtdID0geyAndCcsICdwJywgJ3UnLCAndCcsIH07CiAgICAgICAgICAgICAgICBpZiAoIW1lbWNt
cChidWZmZXIuZGF0YSgpICsgMiwgb3V0cHV0UmVzdCwgNCAqIHNpemVvZihVQ2hhcikpKSB7CiAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG91dHB1dFRhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICB9CiAgICAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgICAgfQogICAgICAgIGlmIChidWZmZXJbMF0gPT0gJ3Mn
KSB7CiAgICAgICAgICAgIGlmIChidWZmZXJbMV0gPT0gJ2MnKSB7CiAgICAgICAgICAgICAgICBz
dGF0aWMgY29uc3RleHByIFVDaGFyIHNjcmlwdFJlc3RbXSA9IHsgJ3InLCAnaScsICdwJywgJ3Qn
LCB9OwogICAgICAgICAgICAgICAgaWYgKCFtZW1jbXAoYnVmZmVyLmRhdGEoKSArIDIsIHNjcmlw
dFJlc3QsIDQgKiBzaXplb2YoVUNoYXIpKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBz
Y3JpcHRUYWctPmxvY2FsTmFtZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
cmV0dXJuIHsgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoYnVmZmVyWzFdID09ICdl
JykgewogICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBVQ2hhciBzZWxlY3RSZXN0W10g
PSB7ICdsJywgJ2UnLCAnYycsICd0JywgfTsKICAgICAgICAgICAgICAgIGlmICghbWVtY21wKGJ1
ZmZlci5kYXRhKCkgKyAyLCBzZWxlY3RSZXN0LCA0ICogc2l6ZW9mKFVDaGFyKSkpIHsKICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0VGFnLT5sb2NhbE5hbWUoKTsKICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgIH0KICAgICAgICAg
ICAgaWYgKGJ1ZmZlclsxXSA9PSAnbycpIHsKICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4
cHIgVUNoYXIgc291cmNlUmVzdFtdID0geyAndScsICdyJywgJ2MnLCAnZScsIH07CiAgICAgICAg
ICAgICAgICBpZiAoIW1lbWNtcChidWZmZXIuZGF0YSgpICsgMiwgc291cmNlUmVzdCwgNCAqIHNp
emVvZihVQ2hhcikpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNvdXJjZVRhZy0+bG9j
YWxOYW1lKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4geyB9Owog
ICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChidWZmZXJbMV0gPT0gJ3QnKSB7CiAgICAgICAg
ICAgICAgICBpZiAoYnVmZmVyWzJdID09ICdyJykgewogICAgICAgICAgICAgICAgICAgIGlmIChi
dWZmZXJbM10gPT0gJ2knKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4
cHIgVUNoYXIgc3RyaWtlUmVzdFtdID0geyAnaycsICdlJywgfTsKICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFtZW1jbXAoYnVmZmVyLmRhdGEoKSArIDQsIHN0cmlrZVJlc3QsIDIgKiBzaXpl
b2YoVUNoYXIpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0cmlrZVRh
Zy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgaWYgKGJ1ZmZlclszXSA9PSAnbycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBVQ2hhciBzdHJvbmdSZXN0W10gPSB7ICduJywgJ2cnLCB9OwogICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIW1lbWNtcChidWZmZXIuZGF0YSgpICsgNCwgc3Ryb25nUmVz
dCwgMiAqIHNpemVvZihVQ2hhcikpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gc3Ryb25nVGFnLT5sb2NhbE5hbWUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyB9Owog
ICAgICAgIH0KICAgICAgICBicmVhazsKICAgIGNhc2UgNzoKICAgICAgICBpZiAoYnVmZmVyWzBd
ID09ICdhJykgewogICAgICAgICAgICBpZiAoYnVmZmVyWzFdID09ICdjJykgewogICAgICAgICAg
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBVQ2hhciBhY3JvbnltUmVzdFtdID0geyAncicsICdvJywg
J24nLCAneScsICdtJywgfTsKICAgICAgICAgICAgICAgIGlmICghbWVtY21wKGJ1ZmZlci5kYXRh
KCkgKyAyLCBhY3JvbnltUmVzdCwgNSAqIHNpemVvZihVQ2hhcikpKSB7CiAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGFjcm9ueW1UYWctPmxvY2FsTmFtZSgpOwogICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAo
YnVmZmVyWzFdID09ICdkJykgewogICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBVQ2hh
ciBhZGRyZXNzUmVzdFtdID0geyAnZCcsICdyJywgJ2UnLCAncycsICdzJywgfTsKICAgICAgICAg
ICAgICAgIGlmICghbWVtY21wKGJ1ZmZlci5kYXRhKCkgKyAyLCBhZGRyZXNzUmVzdCwgNSAqIHNp
emVvZihVQ2hhcikpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFkZHJlc3NUYWctPmxv
Y2FsTmFtZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoYnVmZmVyWzFdID09ICdyJykgewogICAgICAg
ICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBVQ2hhciBhcnRpY2xlUmVzdFtdID0geyAndCcsICdp
JywgJ2MnLCAnbCcsICdlJywgfTsKICAgICAgICAgICAgICAgIGlmICghbWVtY21wKGJ1ZmZlci5k
YXRhKCkgKyAyLCBhcnRpY2xlUmVzdCwgNSAqIHNpemVvZihVQ2hhcikpKSB7CiAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGFydGljbGVUYWctPmxvY2FsTmFtZSgpOwogICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBy
ZXR1cm4geyB9OwogICAgICAgIH0KICAgICAgICBpZiAoYnVmZmVyWzBdID09ICdiJykgewogICAg
ICAgICAgICBzdGF0aWMgY29uc3RleHByIFVDaGFyIGJnc291bmRSZXN0W10gPSB7ICdnJywgJ3Mn
LCAnbycsICd1JywgJ24nLCAnZCcsIH07CiAgICAgICAgICAgIGlmICghbWVtY21wKGJ1ZmZlci5k
YXRhKCkgKyAxLCBiZ3NvdW5kUmVzdCwgNiAqIHNpemVvZihVQ2hhcikpKSB7CiAgICAgICAgICAg
ICAgICByZXR1cm4gYmdzb3VuZFRhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgIH0KICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICAgICB9CiAgICAgICAgaWYgKGJ1ZmZlclswXSA9PSAnYycp
IHsKICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAnYScpIHsKICAgICAgICAgICAgICAgIHN0
YXRpYyBjb25zdGV4cHIgVUNoYXIgY2FwdGlvblJlc3RbXSA9IHsgJ3AnLCAndCcsICdpJywgJ28n
LCAnbicsIH07CiAgICAgICAgICAgICAgICBpZiAoIW1lbWNtcChidWZmZXIuZGF0YSgpICsgMiwg
Y2FwdGlvblJlc3QsIDUgKiBzaXplb2YoVUNoYXIpKSkgewogICAgICAgICAgICAgICAgICAgIHJl
dHVybiBjYXB0aW9uVGFnLT5sb2NhbE5hbWUoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGJ1ZmZlclsx
XSA9PSAnbycpIHsKICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVUNoYXIgY29tbWFu
ZFJlc3RbXSA9IHsgJ20nLCAnbScsICdhJywgJ24nLCAnZCcsIH07CiAgICAgICAgICAgICAgICBp
ZiAoIW1lbWNtcChidWZmZXIuZGF0YSgpICsgMiwgY29tbWFuZFJlc3QsIDUgKiBzaXplb2YoVUNo
YXIpKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21tYW5kVGFnLT5sb2NhbE5hbWUo
KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAg
ICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICB9CiAgICAgICAgaWYgKGJ1ZmZl
clswXSA9PSAnZCcpIHsKICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBVQ2hhciBkZXRhaWxz
UmVzdFtdID0geyAnZScsICd0JywgJ2EnLCAnaScsICdsJywgJ3MnLCB9OwogICAgICAgICAgICBp
ZiAoIW1lbWNtcChidWZmZXIuZGF0YSgpICsgMSwgZGV0YWlsc1Jlc3QsIDYgKiBzaXplb2YoVUNo
YXIpKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGRldGFpbHNUYWctPmxvY2FsTmFtZSgpOwog
ICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgfQogICAgICAgIGlm
IChidWZmZXJbMF0gPT0gJ2wnKSB7CiAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVUNoYXIg
bGlzdGluZ1Jlc3RbXSA9IHsgJ2knLCAncycsICd0JywgJ2knLCAnbicsICdnJywgfTsKICAgICAg
ICAgICAgaWYgKCFtZW1jbXAoYnVmZmVyLmRhdGEoKSArIDEsIGxpc3RpbmdSZXN0LCA2ICogc2l6
ZW9mKFVDaGFyKSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBsaXN0aW5nVGFnLT5sb2NhbE5h
bWUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgIH0KICAg
ICAgICBpZiAoYnVmZmVyWzBdID09ICdtJykgewogICAgICAgICAgICBzdGF0aWMgY29uc3RleHBy
IFVDaGFyIG1hcnF1ZWVSZXN0W10gPSB7ICdhJywgJ3InLCAncScsICd1JywgJ2UnLCAnZScsIH07
CiAgICAgICAgICAgIGlmICghbWVtY21wKGJ1ZmZlci5kYXRhKCkgKyAxLCBtYXJxdWVlUmVzdCwg
NiAqIHNpemVvZihVQ2hhcikpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbWFycXVlZVRhZy0+
bG9jYWxOYW1lKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAg
ICB9CiAgICAgICAgaWYgKGJ1ZmZlclswXSA9PSAnbicpIHsKICAgICAgICAgICAgaWYgKGJ1ZmZl
clsxXSA9PSAnbycpIHsKICAgICAgICAgICAgICAgIGlmIChidWZmZXJbMl0gPT0gJ2UnKSB7CiAg
ICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBVQ2hhciBub2VtYmVkUmVzdFtdID0g
eyAnbScsICdiJywgJ2UnLCAnZCcsIH07CiAgICAgICAgICAgICAgICAgICAgaWYgKCFtZW1jbXAo
YnVmZmVyLmRhdGEoKSArIDMsIG5vZW1iZWRSZXN0LCA0ICogc2l6ZW9mKFVDaGFyKSkpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZW1iZWRUYWctPmxvY2FsTmFtZSgpOwogICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGJ1ZmZlclsyXSA9PSAnbCcpIHsKICAgICAg
ICAgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFVDaGFyIG5vbGF5ZXJSZXN0W10gPSB7ICdh
JywgJ3knLCAnZScsICdyJywgfTsKICAgICAgICAgICAgICAgICAgICBpZiAoIW1lbWNtcChidWZm
ZXIuZGF0YSgpICsgMywgbm9sYXllclJlc3QsIDQgKiBzaXplb2YoVUNoYXIpKSkgewogICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbm9sYXllclRhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICB9CiAgICAgICAg
ICAgIHJldHVybiB7IH07CiAgICAgICAgfQogICAgICAgIGlmIChidWZmZXJbMF0gPT0gJ3AnKSB7
CiAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVUNoYXIgcGljdHVyZVJlc3RbXSA9IHsgJ2kn
LCAnYycsICd0JywgJ3UnLCAncicsICdlJywgfTsKICAgICAgICAgICAgaWYgKCFtZW1jbXAoYnVm
ZmVyLmRhdGEoKSArIDEsIHBpY3R1cmVSZXN0LCA2ICogc2l6ZW9mKFVDaGFyKSkpIHsKICAgICAg
ICAgICAgICAgIHJldHVybiBwaWN0dXJlVGFnLT5sb2NhbE5hbWUoKTsKICAgICAgICAgICAgfQog
ICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgIH0KICAgICAgICBpZiAoYnVmZmVyWzBdID09
ICdzJykgewogICAgICAgICAgICBpZiAoYnVmZmVyWzFdID09ICdlJykgewogICAgICAgICAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBVQ2hhciBzZWN0aW9uUmVzdFtdID0geyAnYycsICd0JywgJ2kn
LCAnbycsICduJywgfTsKICAgICAgICAgICAgICAgIGlmICghbWVtY21wKGJ1ZmZlci5kYXRhKCkg
KyAyLCBzZWN0aW9uUmVzdCwgNSAqIHNpemVvZihVQ2hhcikpKSB7CiAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHNlY3Rpb25UYWctPmxvY2FsTmFtZSgpOwogICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoYnVm
ZmVyWzFdID09ICd1JykgewogICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBVQ2hhciBz
dW1tYXJ5UmVzdFtdID0geyAnbScsICdtJywgJ2EnLCAncicsICd5JywgfTsKICAgICAgICAgICAg
ICAgIGlmICghbWVtY21wKGJ1ZmZlci5kYXRhKCkgKyAyLCBzdW1tYXJ5UmVzdCwgNSAqIHNpemVv
ZihVQ2hhcikpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1bW1hcnlUYWctPmxvY2Fs
TmFtZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgIH0KICAgICAgICBicmVh
azsKICAgIGNhc2UgODoKICAgICAgICBpZiAoYnVmZmVyWzBdID09ICdiJykgewogICAgICAgICAg
ICBzdGF0aWMgY29uc3RleHByIFVDaGFyIGJhc2Vmb250UmVzdFtdID0geyAnYScsICdzJywgJ2Un
LCAnZicsICdvJywgJ24nLCAndCcsIH07CiAgICAgICAgICAgIGlmICghbWVtY21wKGJ1ZmZlci5k
YXRhKCkgKyAxLCBiYXNlZm9udFJlc3QsIDcgKiBzaXplb2YoVUNoYXIpKSkgewogICAgICAgICAg
ICAgICAgcmV0dXJuIGJhc2Vmb250VGFnLT5sb2NhbE5hbWUoKTsKICAgICAgICAgICAgfQogICAg
ICAgICAgICByZXR1cm4geyB9OwogICAgICAgIH0KICAgICAgICBpZiAoYnVmZmVyWzBdID09ICdj
JykgewogICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFVDaGFyIGNvbGdyb3VwUmVzdFtdID0g
eyAnbycsICdsJywgJ2cnLCAncicsICdvJywgJ3UnLCAncCcsIH07CiAgICAgICAgICAgIGlmICgh
bWVtY21wKGJ1ZmZlci5kYXRhKCkgKyAxLCBjb2xncm91cFJlc3QsIDcgKiBzaXplb2YoVUNoYXIp
KSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGNvbGdyb3VwVGFnLT5sb2NhbE5hbWUoKTsKICAg
ICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgIH0KICAgICAgICBpZiAo
YnVmZmVyWzBdID09ICdkJykgewogICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFVDaGFyIGRh
dGFsaXN0UmVzdFtdID0geyAnYScsICd0JywgJ2EnLCAnbCcsICdpJywgJ3MnLCAndCcsIH07CiAg
ICAgICAgICAgIGlmICghbWVtY21wKGJ1ZmZlci5kYXRhKCkgKyAxLCBkYXRhbGlzdFJlc3QsIDcg
KiBzaXplb2YoVUNoYXIpKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFsaXN0VGFnLT5s
b2NhbE5hbWUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAg
IH0KICAgICAgICBpZiAoYnVmZmVyWzBdID09ICdmJykgewogICAgICAgICAgICBpZiAoYnVmZmVy
WzFdID09ICdpJykgewogICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBVQ2hhciBmaWVs
ZHNldFJlc3RbXSA9IHsgJ2UnLCAnbCcsICdkJywgJ3MnLCAnZScsICd0JywgfTsKICAgICAgICAg
ICAgICAgIGlmICghbWVtY21wKGJ1ZmZlci5kYXRhKCkgKyAyLCBmaWVsZHNldFJlc3QsIDYgKiBz
aXplb2YoVUNoYXIpKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWVsZHNldFRhZy0+
bG9jYWxOYW1lKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4geyB9
OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChidWZmZXJbMV0gPT0gJ3InKSB7CiAgICAg
ICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFVDaGFyIGZyYW1lc2V0UmVzdFtdID0geyAnYScs
ICdtJywgJ2UnLCAncycsICdlJywgJ3QnLCB9OwogICAgICAgICAgICAgICAgaWYgKCFtZW1jbXAo
YnVmZmVyLmRhdGEoKSArIDIsIGZyYW1lc2V0UmVzdCwgNiAqIHNpemVvZihVQ2hhcikpKSB7CiAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1lc2V0VGFnLT5sb2NhbE5hbWUoKTsKICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgIH0KICAg
ICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICB9CiAgICAgICAgaWYgKGJ1ZmZlclswXSA9PSAn
bScpIHsKICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBVQ2hhciBtZW51aXRlbVJlc3RbXSA9
IHsgJ2UnLCAnbicsICd1JywgJ2knLCAndCcsICdlJywgJ20nLCB9OwogICAgICAgICAgICBpZiAo
IW1lbWNtcChidWZmZXIuZGF0YSgpICsgMSwgbWVudWl0ZW1SZXN0LCA3ICogc2l6ZW9mKFVDaGFy
KSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBtZW51aXRlbVRhZy0+bG9jYWxOYW1lKCk7CiAg
ICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICB9CiAgICAgICAgaWYg
KGJ1ZmZlclswXSA9PSAnbicpIHsKICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAnbycpIHsK
ICAgICAgICAgICAgICAgIGlmIChidWZmZXJbMl0gPT0gJ2YnKSB7CiAgICAgICAgICAgICAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBVQ2hhciBub2ZyYW1lc1Jlc3RbXSA9IHsgJ3InLCAnYScsICdt
JywgJ2UnLCAncycsIH07CiAgICAgICAgICAgICAgICAgICAgaWYgKCFtZW1jbXAoYnVmZmVyLmRh
dGEoKSArIDMsIG5vZnJhbWVzUmVzdCwgNSAqIHNpemVvZihVQ2hhcikpKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBub2ZyYW1lc1RhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICBpZiAoYnVmZmVyWzJdID09ICdzJykgewogICAgICAgICAgICAg
ICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVUNoYXIgbm9zY3JpcHRSZXN0W10gPSB7ICdjJywgJ3In
LCAnaScsICdwJywgJ3QnLCB9OwogICAgICAgICAgICAgICAgICAgIGlmICghbWVtY21wKGJ1ZmZl
ci5kYXRhKCkgKyAzLCBub3NjcmlwdFJlc3QsIDUgKiBzaXplb2YoVUNoYXIpKSkgewogICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbm9zY3JpcHRUYWctPmxvY2FsTmFtZSgpOwogICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgfQogICAgICAg
ICAgICByZXR1cm4geyB9OwogICAgICAgIH0KICAgICAgICBpZiAoYnVmZmVyWzBdID09ICdvJykg
ewogICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFVDaGFyIG9wdGdyb3VwUmVzdFtdID0geyAn
cCcsICd0JywgJ2cnLCAncicsICdvJywgJ3UnLCAncCcsIH07CiAgICAgICAgICAgIGlmICghbWVt
Y21wKGJ1ZmZlci5kYXRhKCkgKyAxLCBvcHRncm91cFJlc3QsIDcgKiBzaXplb2YoVUNoYXIpKSkg
ewogICAgICAgICAgICAgICAgcmV0dXJuIG9wdGdyb3VwVGFnLT5sb2NhbE5hbWUoKTsKICAgICAg
ICAgICAgfQogICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgIH0KICAgICAgICBpZiAoYnVm
ZmVyWzBdID09ICdwJykgewogICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFVDaGFyIHByb2dy
ZXNzUmVzdFtdID0geyAncicsICdvJywgJ2cnLCAncicsICdlJywgJ3MnLCAncycsIH07CiAgICAg
ICAgICAgIGlmICghbWVtY21wKGJ1ZmZlci5kYXRhKCkgKyAxLCBwcm9ncmVzc1Jlc3QsIDcgKiBz
aXplb2YoVUNoYXIpKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHByb2dyZXNzVGFnLT5sb2Nh
bE5hbWUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgIH0K
ICAgICAgICBpZiAoYnVmZmVyWzBdID09ICd0JykgewogICAgICAgICAgICBpZiAoYnVmZmVyWzFd
ID09ICdlJykgewogICAgICAgICAgICAgICAgaWYgKGJ1ZmZlclsyXSA9PSAnbScpIHsKICAgICAg
ICAgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFVDaGFyIHRlbXBsYXRlUmVzdFtdID0geyAn
cCcsICdsJywgJ2EnLCAndCcsICdlJywgfTsKICAgICAgICAgICAgICAgICAgICBpZiAoIW1lbWNt
cChidWZmZXIuZGF0YSgpICsgMywgdGVtcGxhdGVSZXN0LCA1ICogc2l6ZW9mKFVDaGFyKSkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRlbXBsYXRlVGFnLT5sb2NhbE5hbWUoKTsK
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChidWZmZXJbMl0gPT0gJ3gnKSB7CiAg
ICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBVQ2hhciB0ZXh0YXJlYVJlc3RbXSA9
IHsgJ3QnLCAnYScsICdyJywgJ2UnLCAnYScsIH07CiAgICAgICAgICAgICAgICAgICAgaWYgKCFt
ZW1jbXAoYnVmZmVyLmRhdGEoKSArIDMsIHRleHRhcmVhUmVzdCwgNSAqIHNpemVvZihVQ2hhcikp
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0YXJlYVRhZy0+bG9jYWxOYW1l
KCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB7IH07
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAg
ICB9CiAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgfQogICAgICAgIGJyZWFrOwogICAg
Y2FzZSA5OgogICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVUNoYXIgcGxhaW50ZXh0UmVzdFtdID0g
eyAncCcsICdsJywgJ2EnLCAnaScsICduJywgJ3QnLCAnZScsICd4JywgJ3QnLCB9OwogICAgICAg
IGlmICghbWVtY21wKGJ1ZmZlci5kYXRhKCksIHBsYWludGV4dFJlc3QsIDkgKiBzaXplb2YoVUNo
YXIpKSkgewogICAgICAgICAgICByZXR1cm4gcGxhaW50ZXh0VGFnLT5sb2NhbE5hbWUoKTsKICAg
ICAgICB9CiAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICBicmVhazsKICAgIGNhc2UgMTA6CiAg
ICAgICAgaWYgKGJ1ZmZlclswXSA9PSAnYScpIHsKICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBVQ2hhciBhdHRhY2htZW50UmVzdFtdID0geyAndCcsICd0JywgJ2EnLCAnYycsICdoJywgJ20n
LCAnZScsICduJywgJ3QnLCB9OwogICAgICAgICAgICBpZiAoIW1lbWNtcChidWZmZXIuZGF0YSgp
ICsgMSwgYXR0YWNobWVudFJlc3QsIDkgKiBzaXplb2YoVUNoYXIpKSkgewogICAgICAgICAgICAg
ICAgcmV0dXJuIGF0dGFjaG1lbnRUYWctPmxvY2FsTmFtZSgpOwogICAgICAgICAgICB9CiAgICAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgICAgfQogICAgICAgIGlmIChidWZmZXJbMF0gPT0gJ2In
KSB7CiAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVUNoYXIgYmxvY2txdW90ZVJlc3RbXSA9
IHsgJ2wnLCAnbycsICdjJywgJ2snLCAncScsICd1JywgJ28nLCAndCcsICdlJywgfTsKICAgICAg
ICAgICAgaWYgKCFtZW1jbXAoYnVmZmVyLmRhdGEoKSArIDEsIGJsb2NrcXVvdGVSZXN0LCA5ICog
c2l6ZW9mKFVDaGFyKSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBibG9ja3F1b3RlVGFnLT5s
b2NhbE5hbWUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAg
IH0KICAgICAgICBpZiAoYnVmZmVyWzBdID09ICdmJykgewogICAgICAgICAgICBzdGF0aWMgY29u
c3RleHByIFVDaGFyIGZpZ2NhcHRpb25SZXN0W10gPSB7ICdpJywgJ2cnLCAnYycsICdhJywgJ3An
LCAndCcsICdpJywgJ28nLCAnbicsIH07CiAgICAgICAgICAgIGlmICghbWVtY21wKGJ1ZmZlci5k
YXRhKCkgKyAxLCBmaWdjYXB0aW9uUmVzdCwgOSAqIHNpemVvZihVQ2hhcikpKSB7CiAgICAgICAg
ICAgICAgICByZXR1cm4gZmlnY2FwdGlvblRhZy0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgIH0K
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CiAgICBkZWZh
dWx0OgogICAgICAgIGJyZWFrOwogICAgfTsKICAgIHJldHVybiB7IH07Cn0=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456708</attachid>
            <date>2022-04-05 09:29:41 -0700</date>
            <delta_ts>2022-04-05 13:17:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238804-20220405092940.patch</filename>
            <type>text/plain</type>
            <size>11748</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzEyYjQyY2IxNDczNmVi
MmQwZjFjNmIxYjE5ZjQ2MjI1Mjk1OWE3Yy4uZTQ2NjA3M2JlOWRiYWYyYjNlNmNmMTMwNThiY2Nk
ZDFjNjk4MDRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIyLTA0LTA1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGZhc3RlciBs
b29rdXAgb2YgSFRNTCB0YWdzIGluIHRoZSBIVE1MIHBhcnNlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4ODA0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGZhc3RlciBsb29rdXAgb2Yg
SFRNTCB0YWdzIGluIHRoZSBIVE1MIHBhcnNlciBieSBoYXZpbmcgbWFrZV9uYW1lcy5wbCBnZW5l
cmF0ZQorICAgICAgICBhIGZpbmRIVE1MVGFnIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB2ZXJ5IGVm
ZmljaWVudCB3ZWxsLWtub3duIEhUTUwgdGFnIG5hbWVzLgorCisgICAgICAgIEl0IGlzIGEgbGl0
dGxlIG1vcmUgZWZmaWNpZW50IHRoYXQgb3VyIGN1cnJlbnQgSFRNTE5hbWVDYWNoZSAoMC40JSBw
cm9ncmVzc2lvbiBvbgorICAgICAgICBTcGVlZG9tZXRlciBvbiBNYWNCb29rQWlyIDEwLDEsIG5l
dXRyYWwgb24gaU1hYzIwLDEpLiBVbmxpa2UgdGhlIEhUTUxOYW1lQ2FjaGUsIEl0IGRvZXNuJ3QK
KyAgICAgICAgcmVxdWlyZSBhbnkgaGFzaGluZyBvciBhZGRpdGlvbmFsIHN0b3JhZ2Ugc2luY2Ug
dGhlIHNldCBvZiB3ZWxsLWtub3duIEhUTUwgdGFncyBpcyBrbm93bgorICAgICAgICBhdCBjb21w
aWxlIHRpbWUuCisgICAgICAgIAorICAgICAgICAqIGRvbS9tYWtlX25hbWVzLnBsOgorICAgICAg
ICAocHJpbnROYW1lc0hlYWRlckZpbGUpOgorICAgICAgICAoZmluZE1heFRhZ0xlbmd0aCk6Cisg
ICAgICAgICh0YWdzV2l0aExlbmd0aCk6CisgICAgICAgIChnZW5lcmF0ZUZpbmRUYWdGb3JMZW5n
dGgpOgorICAgICAgICAocHJpbnROYW1lc0NwcEZpbGUpOgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L0F0b21IVE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkF0b21IVE1MVG9rZW46OkF0b21I
VE1MVG9rZW4pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxOYW1lQ2FjaGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE5hbWVDYWNoZTo6YXRvbVN0cmluZ0NhY2hlKToKKyAgICAgICAg
KiBodG1sL3BhcnNlci9IVE1MTmFtZUNhY2hlLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTmFt
ZUNhY2hlOjptYWtlQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE5hbWVD
YWNoZTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE5hbWVDYWNoZTo6bWFrZUF0b21T
dHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE5hbWVDYWNoZTo6YXRvbVN0cmluZ0NhY2hl
U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTmFtZUNhY2hlOjptYWtlVGFnTmFtZSk6IERl
bGV0ZWQuCisKIDIwMjItMDQtMDUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIEdzdENhcHNGb3JlYWNoRnVuYyByZXR1cm5z
IGEgZ2Jvb2xlYW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBs
IGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKaW5kZXggNmExNzUwY2I2N2YzMTAz
ZGFlY2JiNDM2YzBjZTJmZDI1MTcwOTg3Ni4uNDljNWNkOWRjOTBjYmQwZGQ3MzI5NjlhYTIxMzBk
YTJhOTc2NWU1NyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKQEAgLTc0Nyw2ICs3NDcsOSBA
QCBFTkQKICAgICBpZiAoa2V5cyAlYWxsVGFncykgewogICAgICAgICBwcmludCBGICJjb25zdCB1
bnNpZ25lZCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9VGFnc0NvdW50ID0gIiwgc2NhbGFyKGtleXMg
JWFsbFRhZ3MpLCAiO1xuIjsKICAgICAgICAgcHJpbnQgRiAiY29uc3QgV2ViQ29yZTo6JHBhcmFt
ZXRlcnN7bmFtZXNwYWNlfVF1YWxpZmllZE5hbWUqIGNvbnN0KiBnZXQkcGFyYW1ldGVyc3tuYW1l
c3BhY2V9VGFncygpO1xuIjsKKyAgICAgICAgaWYgKCRwYXJhbWV0ZXJze25hbWVzcGFjZX0gZXEg
IkhUTUwiKSB7CisgICAgICAgICAgICBwcmludCBGICJBdG9tU3RyaW5nIGZpbmQkcGFyYW1ldGVy
c3tuYW1lc3BhY2V9VGFnKFNwYW48Y29uc3QgVUNoYXI+KTtcbiIKKyAgICAgICAgfQogICAgIH0K
IAogICAgIGlmIChrZXlzICVhbGxBdHRycykgewpAQCAtNzU4LDYgKzc2MSw4NiBAQCBFTkQKICAg
ICBjbG9zZSBGOwogfQogCitzdWIgZmluZE1heFRhZ0xlbmd0aAoreworICAgIG15ICRhbGxUYWdz
ID0gc2hpZnQ7CisKKyAgICBteSAkbWF4TGVuZ3RoID0gMDsKKyAgICBmb3JlYWNoIG15ICR0YWdO
YW1lIChrZXlzICV7JGFsbFRhZ3N9KSB7CisgICAgICAgIG15ICR0YWdMZW5ndGggPSBsZW5ndGgo
JHRhZ05hbWUpOworICAgICAgICAkbWF4TGVuZ3RoID0gJHRhZ0xlbmd0aCBpZiAkdGFnTGVuZ3Ro
ID4gJG1heExlbmd0aDsKKyAgICB9CisgICAgcmV0dXJuICRtYXhMZW5ndGg7Cit9CisKK3N1YiB0
YWdzV2l0aExlbmd0aAoreworICAgIG15ICRhbGxBdHRycyA9IHNoaWZ0OworICAgIG15ICRleHBl
Y3RlZExlbmd0aCA9IHNoaWZ0OworCisgICAgbXkgQHRhZ3MgPSAoKTsgCisgICAgZm9yZWFjaCBt
eSAkdGFnTmFtZSAoc29ydCBrZXlzICV7JGFsbEF0dHJzfSkgeworICAgICAgICBwdXNoKEB0YWdz
LCAkdGFnTmFtZSkgaWYgbGVuZ3RoKCR0YWdOYW1lKSA9PSAkZXhwZWN0ZWRMZW5ndGg7CisgICAg
fQorICAgIHJldHVybiBAdGFnczsKK30KKworc3ViIGdlbmVyYXRlRmluZFRhZ0Zvckxlbmd0aAor
eworICAgIG15ICRpbmRlbnQgPSBzaGlmdDsKKyAgICBteSAkdGFnc1JlZiA9IHNoaWZ0OworICAg
IG15ICRsZW5ndGggPSBzaGlmdDsKKyAgICBteSAkY3VycmVudEluZGV4ID0gc2hpZnQ7CisKKyAg
ICBteSBAdGFncyA9IEB7JHRhZ3NSZWZ9OworICAgIG15ICR0YWdDb3VudCA9IEB0YWdzOworICAg
IGlmICgkdGFnQ291bnQgPT0gMSkgeworICAgICAgICBteSAkdGFnID0gJHRhZ3NbMF07CisgICAg
ICAgIG15ICRuZWVkc0lmQ2hlY2sgPSAkY3VycmVudEluZGV4IDwgJGxlbmd0aDsKKyAgICAgICAg
aWYgKCRuZWVkc0lmQ2hlY2spIHsKKyAgICAgICAgICAgIG15ICRsZW5ndGhUb0NvbXBhcmUgPSAk
bGVuZ3RoIC0gJGN1cnJlbnRJbmRleDsKKyAgICAgICAgICAgIGlmICgkbGVuZ3RoVG9Db21wYXJl
ID09IDEpIHsKKyAgICAgICAgICAgICAgICBteSAkbGV0dGVyID0gc3Vic3RyKCR0YWcsICRjdXJy
ZW50SW5kZXgsIDEpOworICAgICAgICAgICAgICAgIHByaW50IEYgIiR7aW5kZW50fWlmIChidWZm
ZXJbJGN1cnJlbnRJbmRleF0gPT0gJyRsZXR0ZXInKSB7XG4iOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBteSAkYnVmZmVyU3RhcnQgPSAkY3VycmVudEluZGV4ID4gMCA/
ICJidWZmZXIuZGF0YSgpICsgJGN1cnJlbnRJbmRleCIgOiAiYnVmZmVyLmRhdGEoKSI7CisgICAg
ICAgICAgICAgICAgcHJpbnQgRiAiJHtpbmRlbnR9c3RhdGljIGNvbnN0ZXhwciBVQ2hhciAke3Rh
Z31SZXN0W10gPSB7ICI7CisgICAgICAgICAgICAgICAgZm9yIChteSAkaW5kZXggPSAkY3VycmVu
dEluZGV4OyAkaW5kZXggPCAkbGVuZ3RoOyAkaW5kZXggPSAkaW5kZXggKyAxKSB7CisgICAgICAg
ICAgICAgICAgICAgIG15ICRsZXR0ZXIgPSBzdWJzdHIoJHRhZywgJGluZGV4LCAxKTsKKyAgICAg
ICAgICAgICAgICAgICAgcHJpbnQgRiAiJyRsZXR0ZXInLCAiOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBwcmludCBGICJ9O1xuIjsKKyAgICAgICAgICAgICAgICBwcmludCBG
ICIke2luZGVudH1pZiAoIW1lbWNtcCgkYnVmZmVyU3RhcnQsICR7dGFnfVJlc3QsICRsZW5ndGhU
b0NvbXBhcmUgKiBzaXplb2YoVUNoYXIpKSkge1xuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHByaW50IEYgIiRpbmRlbnQgICAgcmV0dXJuICR7dGFnfVRhZy0+bG9jYWxOYW1lKCk7XG4i
OworICAgICAgICAgICAgcHJpbnQgRiAiJGluZGVudH1cbiI7CisgICAgICAgICAgICBwcmludCBG
ICIke2luZGVudH1yZXR1cm4geyB9O1xuIjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHByaW50IEYgIiR7aW5kZW50fXJldHVybiAke3RhZ31UYWctPmxvY2FsTmFtZSgpO1xuIjsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZvciAobXkgJGkgPSAwOyAkaSA8
ICR0YWdDb3VudDspIHsKKyAgICAgICAgbXkgJHRhZyA9ICR0YWdzWyRpXTsKKyAgICAgICAgbXkg
JGxldHRlckF0SW5kZXggPSBzdWJzdHIoJHRhZywgJGN1cnJlbnRJbmRleCwgMSk7CisgICAgICAg
IHByaW50IEYgIiR7aW5kZW50fWlmIChidWZmZXJbJGN1cnJlbnRJbmRleF0gPT0gJyRsZXR0ZXJB
dEluZGV4Jykge1xuIjsKKyAgICAgICAgbXkgQHRhZ3NXaXRoUHJlZml4ID0gKCR0YWcpOworICAg
ICAgICBmb3IgKCRpID0gJGkgKyAxOyAkaSA8ICR0YWdDb3VudDsgJGkgPSAkaSArIDEpIHsKKyAg
ICAgICAgICAgIG15ICRuZXh0VGFnID0gJHRhZ3NbJGldOworICAgICAgICAgICAgaWYgKHN1YnN0
cigkbmV4dFRhZywgJGN1cnJlbnRJbmRleCwgMSkgZXEgJGxldHRlckF0SW5kZXgpIHsKKyAgICAg
ICAgICAgICAgICBwdXNoKEB0YWdzV2l0aFByZWZpeCwgJG5leHRUYWcpOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBsYXN0OworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIGdlbmVyYXRlRmluZFRhZ0Zvckxlbmd0aCgkaW5kZW50IC4gIiAgICAiLCBcQHRh
Z3NXaXRoUHJlZml4LCAkbGVuZ3RoLCAkY3VycmVudEluZGV4ICsgMSk7CisgICAgICAgIGlmIChz
Y2FsYXIgQHRhZ3NXaXRoUHJlZml4ID4gMSkgeworICAgICAgICAgICAgcHJpbnQgRiAiJHtpbmRl
bnR9ICAgIHJldHVybiB7IH07XG4iOworICAgICAgICB9CisgICAgICAgIHByaW50IEYgIiRpbmRl
bnR9XG4iOworICAgIH0KK30KKwogc3ViIHByaW50TmFtZXNDcHBGaWxlCiB7CiAgICAgbXkgJGNw
cFBhdGggPSBzaGlmdDsKQEAgLTc4Nyw2ICs4NzAsMjUgQEAgc3ViIHByaW50TmFtZXNDcHBGaWxl
CiAgICAgICAgIHByaW50IEYgIiAgICB9O1xuIjsKICAgICAgICAgcHJpbnQgRiAiICAgIHJldHVy
biAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9VGFncztcbiI7CiAgICAgICAgIHByaW50IEYgIn1cbiI7
CisKKyAgICAgICAgaWYgKCRwYXJhbWV0ZXJze25hbWVzcGFjZX0gZXEgIkhUTUwiKSB7CisgICAg
ICAgICAgICBwcmludCBGICJcbkF0b21TdHJpbmcgZmluZCRwYXJhbWV0ZXJze25hbWVzcGFjZX1U
YWcoU3Bhbjxjb25zdCBVQ2hhcj4gYnVmZmVyKVxue1xuIjsKKyAgICAgICAgICAgIG15ICRtYXhU
YWdMZW5ndGggPSBmaW5kTWF4VGFnTGVuZ3RoKFwlYWxsVGFncyk7CisgICAgICAgICAgICBwcmlu
dCBGICIgICAgc3dpdGNoIChidWZmZXIuc2l6ZSgpKSB7XG4iOworICAgICAgICAgICAgZm9yICht
eSAkbGVuZ3RoID0gMTsgJGxlbmd0aCA8PSAkbWF4VGFnTGVuZ3RoOyAkbGVuZ3RoID0gJGxlbmd0
aCArIDEpIHsKKyAgICAgICAgICAgICAgICBteSBAdGFncyA9IHRhZ3NXaXRoTGVuZ3RoKFwlYWxs
VGFncywgJGxlbmd0aCk7CisgICAgICAgICAgICAgICAgbmV4dCB1bmxlc3Mgc2NhbGFyIEB0YWdz
ID4gMDsKKyAgICAgICAgICAgICAgICBwcmludCBGICIgICAgY2FzZSAkbGVuZ3RoOiB7XG4iOwor
ICAgICAgICAgICAgICAgIGdlbmVyYXRlRmluZFRhZ0Zvckxlbmd0aCgiICAgICAgICAiLCBcQHRh
Z3MsICRsZW5ndGgsIDApOworICAgICAgICAgICAgICAgIHByaW50IEYgIiAgICAgICAgYnJlYWs7
XG4iOworICAgICAgICAgICAgICAgIHByaW50IEYgIiAgICB9XG4iOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgcHJpbnQgRiAiICAgIGRlZmF1bHQ6XG4iOworICAgICAgICAgICAgcHJpbnQg
RiAiICAgICAgICBicmVhaztcbiI7CisgICAgICAgICAgICBwcmludCBGICIgICAgfTtcbiI7Cisg
ICAgICAgICAgICBwcmludCBGICIgICAgcmV0dXJuIHsgfTtcbiI7CisgICAgICAgICAgICBwcmlu
dCBGICJ9XG4iOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKGtleXMgJWFsbEF0dHJzKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9BdG9tSFRNTFRva2VuLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9BdG9tSFRNTFRva2VuLmgKaW5kZXggZmQwNTA2
ZTQxMDQ4MjZiZDBiZGVmMjhjODk1NDMxYjEwOGU0Nzg3MC4uNDY0ZWMxMDc1ZTQzY2UzZjI4OGE3
MDc2YTI2ZjExYzI0MmEyNWFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvQXRvbUhUTUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21I
VE1MVG9rZW4uaApAQCAtMjcsNiArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJI
VE1MTmFtZUNhY2hlLmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFRv
a2VuLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
U3RyaW5nSGFzaC5oPgpAQCAtMjMwLDcgKzIzMSwxMCBAQCBpbmxpbmUgQXRvbUhUTUxUb2tlbjo6
QXRvbUhUTUxUb2tlbihIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSFRNTFRva2VuOjpET0NUWVBFOgotICAg
ICAgICBtX25hbWUgPSBIVE1MTmFtZUNhY2hlOjptYWtlVGFnTmFtZSh0b2tlbi5uYW1lKCkpOwor
ICAgICAgICBpZiAoTElLRUxZKHRva2VuLm5hbWUoKS5zaXplKCkgPT0gNCAmJiBlcXVhbChIVE1M
TmFtZXM6Omh0bWxUYWctPmxvY2FsTmFtZSgpLmltcGwoKSwgdG9rZW4ubmFtZSgpLmRhdGEoKSwg
NCkpKQorICAgICAgICAgICAgbV9uYW1lID0gSFRNTE5hbWVzOjpodG1sVGFnLT5sb2NhbE5hbWUo
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9uYW1lID0gQXRvbVN0cmluZyh0b2tlbi5u
YW1lKCkuZGF0YSgpLCB0b2tlbi5uYW1lKCkuc2l6ZSgpKTsKICAgICAgICAgbV9kb2N0eXBlRGF0
YSA9IHRva2VuLnJlbGVhc2VEb2N0eXBlRGF0YSgpOwogICAgICAgICByZXR1cm47CiAgICAgY2Fz
ZSBIVE1MVG9rZW46OkVuZE9mRmlsZToKQEAgLTIzOCw3ICsyNDIsOSBAQCBpbmxpbmUgQXRvbUhU
TUxUb2tlbjo6QXRvbUhUTUxUb2tlbihIVE1MVG9rZW4mIHRva2VuKQogICAgIGNhc2UgSFRNTFRv
a2VuOjpTdGFydFRhZzoKICAgICBjYXNlIEhUTUxUb2tlbjo6RW5kVGFnOgogICAgICAgICBtX3Nl
bGZDbG9zaW5nID0gdG9rZW4uc2VsZkNsb3NpbmcoKTsKLSAgICAgICAgbV9uYW1lID0gSFRNTE5h
bWVDYWNoZTo6bWFrZVRhZ05hbWUodG9rZW4ubmFtZSgpKTsKKyAgICAgICAgbV9uYW1lID0gSFRN
TE5hbWVzOjpmaW5kSFRNTFRhZyh0b2tlbi5uYW1lKCkpOworICAgICAgICBpZiAoVU5MSUtFTFko
bV9uYW1lLmlzTnVsbCgpKSkKKyAgICAgICAgICAgIG1fbmFtZSA9IEF0b21TdHJpbmcodG9rZW4u
bmFtZSgpLmRhdGEoKSwgdG9rZW4ubmFtZSgpLnNpemUoKSk7CiAgICAgICAgIGluaXRpYWxpemVB
dHRyaWJ1dGVzKHRva2VuLmF0dHJpYnV0ZXMoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNl
IEhUTUxUb2tlbjo6Q29tbWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxOYW1lQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE5h
bWVDYWNoZS5jcHAKaW5kZXggYTU3ZDdlY2U1Zjk3YjIyYjNlMjY2NDc5ODlmNzBlYzljNDRlYWE0
YS4uYjhhZTkxNjRkODg1YTY4MDJkNzU2ZDQ1NmY4ZDNlZmUxYWEwZDkwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE5hbWVDYWNoZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE5hbWVDYWNoZS5jcHAKQEAgLTI4LDEwICsyOCwxMCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUhUTUxOYW1lQ2FjaGU6OkF0b21TdHJpbmdDYWNo
ZSYgSFRNTE5hbWVDYWNoZTo6YXRvbVN0cmluZ0NhY2hlKEF0b21TdHJpbmdUeXBlIHR5cGUpCitI
VE1MTmFtZUNhY2hlOjpBdG9tU3RyaW5nQ2FjaGUmIEhUTUxOYW1lQ2FjaGU6OmF0b21TdHJpbmdD
YWNoZSgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5n
Q2FjaGU+IGNhY2hlc1syXTsKLSAgICByZXR1cm4gY2FjaGVzW3N0YXRpY19jYXN0PHNpemVfdD4o
dHlwZSldLmdldCgpOworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8QXRvbVN0
cmluZ0NhY2hlPiBjYWNoZTsKKyAgICByZXR1cm4gY2FjaGUuZ2V0KCk7CiB9CiAKIEhUTUxOYW1l
Q2FjaGU6OlF1YWxpZmllZE5hbWVDYWNoZSYgSFRNTE5hbWVDYWNoZTo6cXVhbGlmaWVkTmFtZUNh
Y2hlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxOYW1lQ2Fj
aGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxOYW1lQ2FjaGUuaAppbmRleCA5
M2NlNDNlOGUxMjIxOTExMmQzYzAyMzM5ZWM2OWJjYjBkOTkxMDkzLi5iMzQ1NTA2YmQwY2EzZTYy
Yjg4NjRmNTZmNGU5NWU0MzY2OGU1MzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MTmFtZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTE5hbWVDYWNoZS5oCkBAIC0zNCwxMSArMzQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEhUTUxOYW1lQ2FjaGUgewogcHVibGljOgotICAgIEFMV0FZU19JTkxJTkUgc3RhdGlj
IEF0b21TdHJpbmcgbWFrZVRhZ05hbWUoU3Bhbjxjb25zdCBVQ2hhcj4gc3RyaW5nKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1ha2VBdG9tU3RyaW5nPEF0b21TdHJpbmdUeXBlOjpUYWdOYW1lPihz
dHJpbmcpOwotICAgIH0KLQogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFF1YWxpZmllZE5hbWUg
bWFrZUF0dHJpYnV0ZVF1YWxpZmllZE5hbWUoU3Bhbjxjb25zdCBVQ2hhcj4gc3RyaW5nKQogICAg
IHsKICAgICAgICAgcmV0dXJuIG1ha2VRdWFsaWZpZWROYW1lKHN0cmluZyk7CkBAIC00NiwyMSAr
NDEsMTcgQEAgcHVibGljOgogCiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgQXRvbVN0cmluZyBt
YWtlQXR0cmlidXRlVmFsdWUoU3Bhbjxjb25zdCBVQ2hhcj4gc3RyaW5nKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1ha2VBdG9tU3RyaW5nPEF0b21TdHJpbmdUeXBlOjpBdHRyaWJ1dGVWYWx1ZT4o
c3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIG1ha2VBdG9tU3RyaW5nKHN0cmluZyk7CiAgICAgfQog
CiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBjbGVhcigpCiAgICAgewogICAgICAgICAv
LyBGSVhNRSAod2Via2l0Lm9yZy9iLzIzMDAxOSk6IFdlIHNob3VsZCB0cnkgdG8gZmluZCBtb3Jl
IG9wcG9ydHVuaXRpZXMgdG8gY2xlYXIgdGhpcyBjYWNoZSB3aXRob3V0IGhpbmRlcmluZyB0aGlz
IHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbi4KLSAgICAgICAgYXRvbVN0cmluZ0NhY2hlKEF0b21T
dHJpbmdUeXBlOjpUYWdOYW1lKS5maWxsKHsgfSk7Ci0gICAgICAgIGF0b21TdHJpbmdDYWNoZShB
dG9tU3RyaW5nVHlwZTo6QXR0cmlidXRlVmFsdWUpLmZpbGwoeyB9KTsKKyAgICAgICAgYXRvbVN0
cmluZ0NhY2hlKCkuZmlsbCh7IH0pOwogICAgICAgICBxdWFsaWZpZWROYW1lQ2FjaGUoKS5maWxs
KHsgfSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIGVudW0gY2xhc3MgQXRvbVN0cmluZ1R5cGUg
OiBib29sIHsgVGFnTmFtZSwgQXR0cmlidXRlVmFsdWUgfTsKLQotICAgIHRlbXBsYXRlPEhUTUxO
YW1lQ2FjaGU6OkF0b21TdHJpbmdUeXBlIHR5cGU+CiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMg
QXRvbVN0cmluZyBtYWtlQXRvbVN0cmluZyhTcGFuPGNvbnN0IFVDaGFyPiBzdHJpbmcpCiAgICAg
ewogICAgICAgICBpZiAoc3RyaW5nLmVtcHR5KCkpCkBAIC03Miw3ICs2Myw3IEBAIHByaXZhdGU6
CiAKICAgICAgICAgYXV0byBmaXJzdENoYXJhY3RlciA9IHN0cmluZ1swXTsKICAgICAgICAgYXV0
byBsYXN0Q2hhcmFjdGVyID0gc3RyaW5nW2xlbmd0aCAtIDFdOwotICAgICAgICBhdXRvJiBzbG90
ID0gYXRvbVN0cmluZ0NhY2hlU2xvdCh0eXBlLCBmaXJzdENoYXJhY3RlciwgbGFzdENoYXJhY3Rl
ciwgbGVuZ3RoKTsKKyAgICAgICAgYXV0byYgc2xvdCA9IGF0b21TdHJpbmdDYWNoZVNsb3QoZmly
c3RDaGFyYWN0ZXIsIGxhc3RDaGFyYWN0ZXIsIGxlbmd0aCk7CiAgICAgICAgIGlmICghZXF1YWwo
c2xvdC5pbXBsKCksIHN0cmluZy5kYXRhKCksIGxlbmd0aCkpIHsKICAgICAgICAgICAgIEF0b21T
dHJpbmcgcmVzdWx0KHN0cmluZy5kYXRhKCksIGxlbmd0aCk7CiAgICAgICAgICAgICBzbG90ID0g
cmVzdWx0OwpAQCAtMTExLDEwICsxMDIsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuICho
YXNoICsgKGhhc2ggPj4gNikpICUgY2FwYWNpdHk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElO
RSBzdGF0aWMgQXRvbVN0cmluZyYgYXRvbVN0cmluZ0NhY2hlU2xvdChBdG9tU3RyaW5nVHlwZSB0
eXBlLCBVQ2hhciBmaXJzdENoYXJhY3RlciwgVUNoYXIgbGFzdENoYXJhY3RlciwgVUNoYXIgbGVu
Z3RoKQorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIEF0b21TdHJpbmcmIGF0b21TdHJpbmdDYWNo
ZVNsb3QoVUNoYXIgZmlyc3RDaGFyYWN0ZXIsIFVDaGFyIGxhc3RDaGFyYWN0ZXIsIFVDaGFyIGxl
bmd0aCkKICAgICB7CiAgICAgICAgIGF1dG8gaW5kZXggPSBzbG90SW5kZXgoZmlyc3RDaGFyYWN0
ZXIsIGxhc3RDaGFyYWN0ZXIsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybiBhdG9tU3RyaW5nQ2Fj
aGUodHlwZSlbaW5kZXhdOworICAgICAgICByZXR1cm4gYXRvbVN0cmluZ0NhY2hlKClbaW5kZXhd
OwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZlB0cjxRdWFsaWZpZWROYW1l
OjpRdWFsaWZpZWROYW1lSW1wbD4mIHF1YWxpZmllZE5hbWVDYWNoZVNsb3QoVUNoYXIgZmlyc3RD
aGFyYWN0ZXIsIFVDaGFyIGxhc3RDaGFyYWN0ZXIsIFVDaGFyIGxlbmd0aCkKQEAgLTEyOSw3ICsx
MjAsNyBAQCBwcml2YXRlOgogICAgIHVzaW5nIEF0b21TdHJpbmdDYWNoZSA9IHN0ZDo6YXJyYXk8
QXRvbVN0cmluZywgY2FwYWNpdHk+OwogICAgIHVzaW5nIFF1YWxpZmllZE5hbWVDYWNoZSA9IHN0
ZDo6YXJyYXk8UmVmUHRyPFF1YWxpZmllZE5hbWU6OlF1YWxpZmllZE5hbWVJbXBsPiwgY2FwYWNp
dHk+OwogCi0gICAgc3RhdGljIEF0b21TdHJpbmdDYWNoZSYgYXRvbVN0cmluZ0NhY2hlKEF0b21T
dHJpbmdUeXBlKTsKKyAgICBzdGF0aWMgQXRvbVN0cmluZ0NhY2hlJiBhdG9tU3RyaW5nQ2FjaGUo
KTsKICAgICBzdGF0aWMgUXVhbGlmaWVkTmFtZUNhY2hlJiBxdWFsaWZpZWROYW1lQ2FjaGUoKTsK
IH07CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>