<?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>66449</bug_id>
          
          <creation_ts>2011-08-17 20:44:09 -0700</creation_ts>
          <short_desc>[V8] Web IDL attributes should be implemented as getters and setters on the prototype object</short_desc>
          <delta_ts>2014-04-11 07:28:02 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>49739</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dominic Cooney">dominicc</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>arv</cc>
    
    <cc>microrffr+webkit</cc>
    
    <cc>morrita</cc>
    
    <cc>rkuroiwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>452835</commentid>
    <comment_count>0</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-08-17 20:44:09 -0700</bug_when>
    <thetext>See bug 49739 for details. I am filing this V8-specific bug to track V8-specific issues, eg &lt;http://code.google.com/p/v8/issues/detail?id=1482&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452846</commentid>
    <comment_count>1</comment_count>
      <attachid>104304</attachid>
    <who name="Rintaro Kuroiwa">rkuroiwa</who>
    <bug_when>2011-08-17 21:30:12 -0700</bug_when>
    <thetext>Created attachment 104304
WIP patch

Here are the before-after performance results.
http://dromaeo.com/?id=147347,147349</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452934</commentid>
    <comment_count>2</comment_count>
      <attachid>104317</attachid>
    <who name="Rintaro Kuroiwa">rkuroiwa</who>
    <bug_when>2011-08-18 03:35:17 -0700</bug_when>
    <thetext>Created attachment 104317
WIP patch with fixes

Several fixes to the previous patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104304</attachid>
            <date>2011-08-17 21:30:12 -0700</date>
            <delta_ts>2011-08-18 03:35:17 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>0001-WIP-prototype.patch</filename>
            <type>text/plain</type>
            <size>32805</size>
            <attacher name="Rintaro Kuroiwa">rkuroiwa</attacher>
            
              <data encoding="base64">RnJvbSAyNzRjMTk2NzljYzE0NmE1NzhhMzgzOTMwNDgzNTgwOWE5YjZlMTQyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSaW50YXJvIEt1cm9pd2EgPHJrdXJvaXdhQGdvb2dsZS5jb20+
CkRhdGU6IE1vbiwgMTUgQXVnIDIwMTEgMDk6NTg6MTggKzA5MDAKU3ViamVjdDogW1BBVENIXSBX
SVAgcHJvdG90eXBlCi0tLQogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0gfCAgNTY0ICsrKysrKysrKysrKysrKysrKystCiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwICAgICAgICAgICB8ICAgMTUgKwogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmggICAgICAgICAgICAgfCAgICA1ICsKIFNvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggICAgICAgIHwgICAgMSArCiA0IGZp
bGVzIGNoYW5nZWQsIDU3NSBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4
IDY1YTA2OGMuLjYzZGFmMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC03MTEsNiArNzExLDIxMSBAQCBFTkQKIEVORAog
fQogCitzdWIgR2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVyQ2FsbGJhY2sKK3sKKyAgICBteSAkYXR0
cmlidXRlID0gc2hpZnQ7CisgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CisgICAgbXkgJGltcGxD
bGFzc05hbWUgPSBzaGlmdDsKKyAgICBteSAkaW50ZXJmYWNlTmFtZSA9IHNoaWZ0OworCisgICAg
bXkgJGF0dHJFeHQgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlczsK
KyAgICBteSAkYXR0ck5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7CisgICAgbXkg
JGF0dHJUeXBlID0gR2V0VHlwZUZyb21TaWduYXR1cmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsK
KyAgICBteSAkbmF0aXZlVHlwZSA9IEdldE5hdGl2ZVR5cGVGcm9tU2lnbmF0dXJlKCRhdHRyaWJ1
dGUtPnNpZ25hdHVyZSwgLTEpOworCisgICAgbXkgJGdldHRlclN0cmluZ1VzZXNJbXAgPSAkaW1w
bENsYXNzTmFtZSBuZSAiU1ZHTnVtYmVyIjsKKyAgICBteSAkc3ZnTmF0aXZlVHlwZSA9ICRjb2Rl
R2VuZXJhdG9yLT5HZXRTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJGltcGxDbGFzc05hbWUpOworCQor
ICAgICMgR2V0dGVyCisgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gR2VuZXJhdGVDb25kaXRp
b25hbFN0cmluZygkYXR0cmlidXRlLT5zaWduYXR1cmUpOworICAgIHB1c2goQGltcGxDb250ZW50
RGVjbHMsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRpdGlvbmFsU3Ry
aW5nOworCisgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOworc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiAke2F0dHJOYW1lfUF0dHJHZXR0ZXJDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUyhcIkRPTS4kaW1wbENsYXNzTmFtZS4k
YXR0ck5hbWUuX2dldFwiKTsKK0VORAorCisgICAgaWYgKCRzdmdOYXRpdmVUeXBlKSB7CisgICAg
ICAgIG15ICRzdmdXcmFwcGVkTmF0aXZlVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRTVkdXcmFw
cGVkVHlwZU5lZWRpbmdUZWFyT2ZmKCRpbXBsQ2xhc3NOYW1lKTsKKyAgICAgICAgaWYgKCRzdmdX
cmFwcGVkTmF0aXZlVHlwZSA9fiAvTGlzdC8pIHsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50RGVjbHMsIDw8RU5EKTsKKyAgICAkc3ZnTmF0aXZlVHlwZSogaW1wID0gVjgke2ltcGxDbGFz
c05hbWV9Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKK0VORAorICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOworICAgICRzdmdOYXRp
dmVUeXBlKiB3cmFwcGVyID0gVjgke2ltcGxDbGFzc05hbWV9Ojp0b05hdGl2ZShhcmdzLkhvbGRl
cigpKTsKKyAgICAkc3ZnV3JhcHBlZE5hdGl2ZVR5cGUmIGltcEluc3RhbmNlID0gd3JhcHBlci0+
cHJvcGVydHlSZWZlcmVuY2UoKTsKK0VORAorICAgICAgICAgICAgaWYgKCRnZXR0ZXJTdHJpbmdV
c2VzSW1wKSB7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQp
OworICAgICRzdmdXcmFwcGVkTmF0aXZlVHlwZSogaW1wID0gJmltcEluc3RhbmNlOworRU5ECisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2lmICgkYXR0ckV4dC0+eyJ2OE9uUHJv
dG8ifSB8fCAkYXR0ckV4dC0+eyJWOERpc2FsbG93U2hhZG93aW5nIn0pIHsKKyAgICAgICAgaWYg
KCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7CisgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudERlY2xzLCA8PEVORCk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIg
PSBhcmdzLkhvbGRlcigpOworRU5ECisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAjIHBl
cmZvcm0gbG9va3VwIGZpcnN0CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8
PEVORCk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBWOERPTVdyYXBwZXI6
Omxvb2t1cERPTVdyYXBwZXIoVjgke2ludGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZSgpLCBhcmdz
LlRoaXMoKSk7CisgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4oKTsKK0VORAorICAgICAgICB9CisgICAgICAgIHB1c2goQGltcGxD
b250ZW50RGVjbHMsIDw8RU5EKTsKKyAgICAke2ltcGxDbGFzc05hbWV9KiBpbXAgPSBWOCR7aW1w
bENsYXNzTmFtZX06OnRvTmF0aXZlKGhvbGRlcik7CitFTkQKKyAgICB9IGVsc2UgeworICAgICAg
ICBteSAkcmVmbGVjdCA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IlJlZmxlY3QifTsKKyAgICAgICAgbXkgJHVybCA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlVSTCJ9OworICAgICAgICBpZiAoJGdldHRlclN0cmluZ1Vz
ZXNJbXAgJiYgJHJlZmxlY3QgJiYgISR1cmwgJiYgSXNOb2RlU3ViVHlwZSgkZGF0YU5vZGUpICYm
ICRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJGF0dHJUeXBlKSkgeworICAgICAgICAgICAg
IyBHZW5lcmF0ZSBzdXBlci1jb21wYWN0IGNhbGwgZm9yIHJlZ3VsYXIgYXR0cmlidXRlIGdldHRl
cjoKKyAgICAgICAgICAgIG15ICRjb250ZW50QXR0cmlidXRlTmFtZSA9ICRyZWZsZWN0IGVxICIx
IiA/IGxjICRhdHRyTmFtZSA6ICRyZWZsZWN0OworICAgICAgICAgICAgbXkgJG5hbWVzcGFjZSA9
ICRjb2RlR2VuZXJhdG9yLT5OYW1lc3BhY2VGb3JBdHRyaWJ1dGVOYW1lKCRpbnRlcmZhY2VOYW1l
LCAkY29udGVudEF0dHJpYnV0ZU5hbWUpOworICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siJHtu
YW1lc3BhY2V9LmgifSA9IDE7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAi
ICAgIHJldHVybiBnZXRFbGVtZW50U3RyaW5nQXR0ckZyb21BcmdzKGFyZ3MsICR7bmFtZXNwYWNl
fTo6JHtjb250ZW50QXR0cmlidXRlTmFtZX1BdHRyKTtcbiIpOworICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnREZWNscywgIn1cblxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dERlY2xzLCAiI2VuZGlmIC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRp
b25hbFN0cmluZzsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICMgU2tpcCB0aGUg
cmVzdCBvZiB0aGUgZnVuY3Rpb24hCisgICAgICAgIH0KKyAgICAgICAgcHVzaChAaW1wbENvbnRl
bnREZWNscywgPDxFTkQpOworICAgICR7aW1wbENsYXNzTmFtZX0qIGltcCA9IFY4JHtpbXBsQ2xh
c3NOYW1lfTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CitFTkQKKyAgICB9CisKKyAgICAjIEdl
bmVyYXRlIHNlY3VyaXR5IGNoZWNrcyBpZiBuZWNlc3NhcnkKKyAgICBpZiAoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tOb2RlU2VjdXJpdHkifSkgewor
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGlmICghVjhCaW5kaW5nU2VjdXJp
dHk6OmNoZWNrTm9kZVNlY3VyaXR5KFY4QmluZGluZ1N0YXRlOjpPbmx5KCksIGltcC0+JGF0dHJO
YW1lKCkpKVxuICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTtcblxuIik7CisgICAg
fSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hl
Y2tGcmFtZVNlY3VyaXR5In0pIHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAg
ICBpZiAoIVY4QmluZGluZ1NlY3VyaXR5OjpjaGVja05vZGVTZWN1cml0eShWOEJpbmRpbmdTdGF0
ZTo6T25seSgpLCBpbXAtPmNvbnRlbnREb2N1bWVudCgpKSlcbiAgICByZXR1cm4gdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+KCk7XG5cbiIpOworICAgIH0KKworICAgIG15ICR1c2VFeGNlcHRpb25zID0g
MSBpZiBAeyRhdHRyaWJ1dGUtPmdldHRlckV4Y2VwdGlvbnN9OworICAgIGlmICgkdXNlRXhjZXB0
aW9ucykgeworICAgICAgICAkaW1wbEluY2x1ZGVzeyJFeGNlcHRpb25Db2RlLmgifSA9IDE7Cisg
ICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
XG4iKTsKKyAgICB9CisKKyAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsidjhyZWZlcmVuY2VhdHRyIn0pIHsKKyAgICAgICAgJGF0dHJOYW1lID0gJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsidjhyZWZlcmVuY2VhdHRy
In07CisgICAgfQorCisgICAgbXkgJHJldHVyblR5cGUgPSBHZXRUeXBlRnJvbVNpZ25hdHVyZSgk
YXR0cmlidXRlLT5zaWduYXR1cmUpOworCisgICAgbXkgJGdldHRlclN0cmluZzsKKyAgICBpZiAo
JGdldHRlclN0cmluZ1VzZXNJbXApIHsKKyAgICAgICAgJGdldHRlclN0cmluZyA9ICJpbXAtPiIg
LiAkY29kZUdlbmVyYXRvci0+R2V0dGVyRXhwcmVzc2lvblByZWZpeChcJWltcGxJbmNsdWRlcywg
JGludGVyZmFjZU5hbWUsICRhdHRyaWJ1dGUpOworICAgICAgICAkZ2V0dGVyU3RyaW5nIC49ICJl
YyIgaWYgJHVzZUV4Y2VwdGlvbnM7CisgICAgICAgICRnZXR0ZXJTdHJpbmcgLj0gIikiOworICAg
IH0gZWxzZSB7CisgICAgICAgICRnZXR0ZXJTdHJpbmcgPSAiaW1wSW5zdGFuY2UiOworICAgIH0K
KworICAgIG15ICRyZXN1bHQ7CisgICAgbXkgJHdyYXBwZXI7CisKKyAgICAgICAgaWYgKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSBlcSAiRXZlbnRMaXN0ZW5lciIgJiYgJGRhdGFOb2RlLT5u
YW1lIGVxICJET01XaW5kb3ciKSB7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIg
ICAgaWYgKCFpbXAtPmRvY3VtZW50KCkpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnRE
ZWNscywgIiAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpO1xuIik7CisgICAg
fQorCisgICAgaWYgKCR1c2VFeGNlcHRpb25zKSB7CisgICAgICAgIGlmICgkbmF0aXZlVHlwZSA9
fiAvXlY4UGFyYW1ldGVyLykgeworICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIg
ICAgIiAuIENvbnZlcnRUb1Y4UGFyYW1ldGVyKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgJG5hdGl2
ZVR5cGUsICJ2IiwgJGdldHRlclN0cmluZykgLiAiO1xuIik7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAkbmF0aXZlVHlwZSB2ID0gJGdl
dHRlclN0cmluZztcbiIpOworICAgICAgICB9CisgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVj
bHMsIEdlbmVyYXRlU2V0RE9NRXhjZXB0aW9uKCIgICAgIikpOworICAgICAgICAkcmVzdWx0ID0g
InYiOworICAgICAgICAkcmVzdWx0IC49ICIucmVsZWFzZSgpIiBpZiAoSXNSZWZQdHJUeXBlKCRy
ZXR1cm5UeXBlKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgIyBDYW4gaW5saW5lIHRoZSBmdW5j
dGlvbiBjYWxsIGludG8gdGhlIHJldHVybiBzdGF0ZW1lbnQgdG8gYXZvaWQgb3ZlcmhlYWQgb2Yg
dXNpbmcgYSBSZWY8PiB0ZW1wb3JhcnkKKyAgICAgICAgJHJlc3VsdCA9ICRnZXR0ZXJTdHJpbmc7
CisgICAgICAgICMgRml4IGFtaWdpb3VzIGNvbnZlcnNpb24gcHJvYmxlbSwgYnkgY2FzdGluZyB0
byB0aGUgYmFzZSB0eXBlIGZpcnN0ICgkZ2V0dGVyU3RyaW5nIHJldHVybnMgYSB0eXBlIHRoYXQg
aW5oZXJpdHMgZnJvbSBTVkdBbmltYXRlZEVudW1lcmF0aW9uLCBub3QgdGhlIGJhc2UgY2xhc3Mg
ZGlyZWN0bHkpLgorICAgICAgICAkcmVzdWx0ID0gInN0YXRpY19wb2ludGVyX2Nhc3Q8U1ZHQW5p
bWF0ZWRFbnVtZXJhdGlvbj4oJHJlc3VsdCkiIGlmICRyZXR1cm5UeXBlIGVxICJTVkdBbmltYXRl
ZEVudW1lcmF0aW9uIjsKKyAgICB9CisgCisgICAgIyBTcGVjaWFsIGNhc2UgZm9yIHJlYWRvbmx5
IG9yIFJlcGxhY2VhYmxlIGF0dHJpYnV0ZXMgKHdpdGggYSBmZXcgZXhjZXB0aW9ucykuIFRoaXMg
YXR0ZW1wdHMgdG8gZW5zdXJlIHRoYXQgSlMgd3JhcHBlcnMgZG9uJ3QgZ2V0CisgICAgIyBnYXJi
YWdlLWNvbGxlY3RlZCBwcmVtYXR1cmVseSB3aGVuIHRoZWlyIGxpZmV0aW1lIGlzIHN0cm9uZ2x5
IHRpZWQgdG8gdGhlaXIgb3duZXIuIFdlIGFjY29tcGxpc2ggdGhpcyBieSBpbnNlcnRpbmcgYSBy
ZWZlcmVuY2UgdG8KKyAgICAjIHRoZSBuZXdseSBjcmVhdGVkIHdyYXBwZXIgaW50byBhbiBpbnRl
cm5hbCBmaWVsZCBvZiB0aGUgaG9sZGVyIG9iamVjdC4KKyAgICBpZiAoIUlzTm9kZVN1YlR5cGUo
JGRhdGFOb2RlKSAmJiAkYXR0ck5hbWUgbmUgInNlbGYiICYmIChJc1dyYXBwZXJUeXBlKCRyZXR1
cm5UeXBlKSAmJiAoJGF0dHJpYnV0ZS0+dHlwZSA9fiAvXnJlYWRvbmx5LyB8fCAkYXR0cmlidXRl
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZXBsYWNlYWJsZSJ9KQorICAgICAg
ICAmJiAkcmV0dXJuVHlwZSBuZSAiRXZlbnRUYXJnZXQiICYmICRyZXR1cm5UeXBlIG5lICJTZXJp
YWxpemVkU2NyaXB0VmFsdWUiICYmICRyZXR1cm5UeXBlIG5lICJET01XaW5kb3ciIAorICAgICAg
ICAmJiAkcmV0dXJuVHlwZSAhfiAvU1ZHLyAmJiAkcmV0dXJuVHlwZSAhfiAvSFRNTC8gJiYgIUlz
RE9NTm9kZVR5cGUoJHJldHVyblR5cGUpKSkgeworICAgICAgICBBZGRJbmNsdWRlc0ZvclR5cGUo
JHJldHVyblR5cGUpOworICAgICAgICBteSAkZG9tTWFwRnVuY3Rpb24gPSBHZXREb21NYXBGdW5j
dGlvbigwLCAkcmV0dXJuVHlwZSk7CisgICAgICAgICMgQ2hlY2sgZm9yIGEgd3JhcHBlciBpbiB0
aGUgd3JhcHBlciBjYWNoZS4gSWYgdGhlcmUgaXMgb25lLCB3ZSBrbm93IHRoYXQgYSBoaWRkZW4g
cmVmZXJlbmNlIGhhcyBhbHJlYWR5CisgICAgICAgICMgYmVlbiBjcmVhdGVkLiBJZiB3ZSBkb24n
dCBmaW5kIGEgd3JhcHBlciwgd2UgY3JlYXRlIGJvdGggYSB3cmFwcGVyIGFuZCBhIGhpZGRlbiBy
ZWZlcmVuY2UuCisgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgUmVmUHRyPCRy
ZXR1cm5UeXBlPiByZXN1bHQgPSAke2dldHRlclN0cmluZ307XG4iKTsKKyAgICAgICAgcHVzaChA
aW1wbENvbnRlbnREZWNscywgIiAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IHJl
c3VsdC5nZXQoKSA/ICR7ZG9tTWFwRnVuY3Rpb259LmdldChyZXN1bHQuZ2V0KCkpIDogdjg6Okhh
bmRsZTx2ODo6VmFsdWU+KCk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywg
IiAgICBpZiAod3JhcHBlci5Jc0VtcHR5KCkpIHtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudERlY2xzLCAiICAgICAgICB3cmFwcGVyID0gdG9WOChyZXN1bHQuZ2V0KCkpO1xuIik7Cisg
ICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAgIGlmICghd3JhcHBlci5Jc0Vt
cHR5KCkpXG4iKTsKKyAgICAgICAgaWYgKCRkYXRhTm9kZS0+bmFtZSBlcSAiRE9NV2luZG93Iikg
eworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAgICAgICAgIFY4RE9N
V3JhcHBlcjo6c2V0SGlkZGVuV2luZG93UmVmZXJlbmNlKGltcC0+ZnJhbWUoKSwgd3JhcHBlcik7
XG4iKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVj
bHMsICIgICAgICAgICAgICBWOERPTVdyYXBwZXI6OnNldEhpZGRlblJlZmVyZW5jZShhcmdzLkhv
bGRlcigpLCB3cmFwcGVyKTtcbiIpOworICAgICAgICB9CisgICAgICAgIHB1c2goQGltcGxDb250
ZW50RGVjbHMsICIgICAgfVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIg
ICAgcmV0dXJuIHdyYXBwZXI7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywg
In1cblxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIjZW5kaWYgLy8gJHtj
b25kaXRpb25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1NWR0FuaW1hdGVkVHlw
ZSgkaW1wbENsYXNzTmFtZSkgYW5kICRjb2RlR2VuZXJhdG9yLT5Jc1NWR1R5cGVOZWVkaW5nVGVh
ck9mZigkYXR0clR5cGUpKSB7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IlY4JGF0dHJUeXBlLmgi
fSA9IDE7CisgICAgICAgIG15ICRzdmdOYXRpdmVUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldFNW
R1R5cGVOZWVkaW5nVGVhck9mZigkYXR0clR5cGUpOworICAgICAgICAjIENvbnZlcnQgZnJvbSBh
YnN0cmFjdCBTVkdQcm9wZXJ0eSB0byByZWFsIHR5cGUsIHNvIHRoZSByaWdodCB0b0pTKCkgbWV0
aG9kIGNhbiBiZSBpbnZva2VkLgorICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAg
IHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PCRzdmdOYXRpdmVUeXBlKj4oJHJlc3VsdCkpO1xuIik7
CisgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPklzU1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCRh
dHRyVHlwZSkgYW5kIG5vdCAkaW1wbENsYXNzTmFtZSA9fiAvTGlzdCQvKSB7CisgICAgICAgICRp
bXBsSW5jbHVkZXN7IlY4JGF0dHJUeXBlLmgifSA9IDE7CisgICAgICAgICRpbXBsSW5jbHVkZXN7
IlNWR1Byb3BlcnR5VGVhck9mZi5oIn0gPSAxOworICAgICAgICBteSAkdGVhck9mZlR5cGUgPSAk
Y29kZUdlbmVyYXRvci0+R2V0U1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCRhdHRyVHlwZSk7CisgICAg
ICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNTVkdUeXBlV2l0aFdyaXRhYmxlUHJvcGVydGllc05l
ZWRpbmdUZWFyT2ZmKCRhdHRyVHlwZSkgYW5kIG5vdCBkZWZpbmVkICRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltbXV0YWJsZSJ9KSB7CisgICAgICAgICAgICBt
eSAkZ2V0dGVyID0gJHJlc3VsdDsKKyAgICAgICAgICAgICRnZXR0ZXIgPX4gcy9pbXAtPi8vOwor
ICAgICAgICAgICAgJGdldHRlciA9fiBzL1woXCkvLzsKKworICAgICAgICAgICAgbXkgJHVwZGF0
ZU1ldGhvZCA9ICImJHtpbXBsQ2xhc3NOYW1lfTo6dXBkYXRlIiAuICRjb2RlR2VuZXJhdG9yLT5X
S191Y2ZpcnN0KCRnZXR0ZXIpOworCisgICAgICAgICAgICBteSAkc2VsZklzVGVhck9mZlR5cGUg
PSAkY29kZUdlbmVyYXRvci0+SXNTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJGltcGxDbGFzc05hbWUp
OworICAgICAgICAgICAgaWYgKCRzZWxmSXNUZWFyT2ZmVHlwZSkgeworICAgICAgICAgICAgICAg
ICRpbXBsSW5jbHVkZXN7IlNWR1N0YXRpY1Byb3BlcnR5V2l0aFBhcmVudFRlYXJPZmYuaCJ9ID0g
MTsKKyAgICAgICAgICAgICAgICAkdGVhck9mZlR5cGUgPX4gcy9TVkdQcm9wZXJ0eVRlYXJPZmY8
L1NWR1N0YXRpY1Byb3BlcnR5V2l0aFBhcmVudFRlYXJPZmY8JGltcGxDbGFzc05hbWUsIC87CisK
KyAgICAgICAgICAgICAgICBpZiAoJHJlc3VsdCA9fiAvbWF0cml4LyBhbmQgJGltcGxDbGFzc05h
bWUgZXEgIlNWR1RyYW5zZm9ybSIpIHsKKyAgICAgICAgICAgICAgICAgICAgIyBTVkdUcmFuc2Zv
cm0gb2ZmZXJzIGEgbWF0cml4KCkgbWV0aG9kIGZvciBpbnRlcm5hbCB1c2FnZSB0aGF0IHJldHVy
bnMgYW4gQWZmaW5lVHJhbnNmb3JtCisgICAgICAgICAgICAgICAgICAgICMgYW5kIGEgc3ZnTWF0
cml4KCkgbWV0aG9kIHJldHVybmluZyBhIFNWR01hdHJpeCwgdXNlZCBmb3IgdGhlIGJpbmRpbmdz
LgorICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID1+IHMvbWF0cml4L3N2Z01hdHJpeC87Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNs
cywgIiAgICByZXR1cm4gdG9WOChXVEY6OmdldFB0cigke3RlYXJPZmZUeXBlfTo6Y3JlYXRlKHdy
YXBwZXIsICRyZXN1bHQsICR1cGRhdGVNZXRob2QpKSk7XG4iKTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siU1ZHU3RhdGljUHJvcGVydHlUZWFy
T2ZmLmgifSA9IDE7CisgICAgICAgICAgICAgICAgJHRlYXJPZmZUeXBlID1+IHMvU1ZHUHJvcGVy
dHlUZWFyT2ZmPC9TVkdTdGF0aWNQcm9wZXJ0eVRlYXJPZmY8JGltcGxDbGFzc05hbWUsIC87CisK
KyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIHJldHVybiB0b1Y4
KFdURjo6Z2V0UHRyKCR7dGVhck9mZlR5cGV9OjpjcmVhdGUoaW1wLCAkcmVzdWx0LCAkdXBkYXRl
TWV0aG9kKSkpO1xuIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzaWYgKCR0ZWFyT2Zm
VHlwZSA9fiAvU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi8pIHsKKyAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgcmV0dXJuIHRvVjgoV1RGOjpnZXRQdHIoJHt0ZWFy
T2ZmVHlwZX06OmNyZWF0ZShpbXAsICRyZXN1bHQpKSk7XG4iKTsKKyAgICAgICAgfSBlbHNpZiAo
JHRlYXJPZmZUeXBlID1+IC9TVkcoUG9pbnR8UGF0aFNlZylMaXN0LykgeworICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICByZXR1cm4gdG9WOChXVEY6OmdldFB0cigkcmVz
dWx0KSk7XG4iKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50RGVjbHMsICIgICAgcmV0dXJuIHRvVjgoV1RGOjpnZXRQdHIoJHt0ZWFyT2ZmVHlwZX06OmNy
ZWF0ZSgkcmVzdWx0KSkpO1xuIik7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBw
dXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICIgLiBSZXR1cm5OYXRpdmVUb0pTVmFsdWUoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLCAkcmVzdWx0LCAiICAgICIpLiI7XG4iKTsKKyAgICB9CisKKyAg
ICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAifVxuXG4iKTsgICMgZW5kIG9mIGdldHRlcgorICAg
IHB1c2goQGltcGxDb250ZW50RGVjbHMsICIjZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31c
blxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOworfQorCiBzdWIgR2VuZXJhdGVOb3JtYWxBdHRy
R2V0dGVyCiB7CiAgICAgbXkgJGF0dHJpYnV0ZSA9IHNoaWZ0OwpAQCAtOTE2LDYgKzExMjEsMTY1
IEBAIEVORAogICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIjZW5kaWYgLy8gJHtjb25kaXRp
b25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogfQogCitzdWIgR2VuZXJh
dGVOb3JtYWxBdHRyU2V0dGVyQ2FsbGJhY2sKK3sKKyAgICBteSAkYXR0cmlidXRlID0gc2hpZnQ7
CisgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CisgICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlm
dDsKKyAgICBteSAkaW50ZXJmYWNlTmFtZSA9IHNoaWZ0OworCisgICAgJGltcGxJbmNsdWRlc3si
VjhCaW5kaW5nTWFjcm9zLmgifSA9IDE7CisKKyAgICBteSAkYXR0ckV4dCA9ICRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzOworCisgICAgbXkgJGNvbmRpdGlvbmFsU3Ry
aW5nID0gR2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlLT5zaWduYXR1cmUpOwor
ICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cblxu
IikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOworCisgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywg
InN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHthdHRyTmFtZX1BdHRyU2V0dGVyQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncylcbntcbiIpOworICAgIHB1c2goQGltcGxDb250
ZW50RGVjbHMsICIgICAgSU5DX1NUQVRTKFwiRE9NLiRpbXBsQ2xhc3NOYW1lLiRhdHRyTmFtZS5f
c2V0XCIpO1xuIik7CisKKyAgICAjIElmIHRoZSAiU3RyaWN0VHlwZUNoZWNraW5nIiBleHRlbmRl
ZCBhdHRyaWJ1dGUgaXMgcHJlc2VudCwgYW5kIHRoZSBhdHRyaWJ1dGUncyB0eXBlIGlzIGFuCisg
ICAgIyBpbnRlcmZhY2UgdHlwZSwgdGhlbiBpZiB0aGUgaW5jb21pbmcgdmFsdWUgZG9lcyBub3Qg
aW1wbGVtZW50IHRoYXQgaW50ZXJmYWNlLCBhIFR5cGVFcnJvciBpcworICAgICMgdGhyb3duIHJh
dGhlciB0aGFuIHNpbGVudGx5IHBhc3NpbmcgTlVMTCB0byB0aGUgQysrIGNvZGUuCisgICAgIyBQ
ZXIgdGhlIFdlYiBJREwgYW5kIEVDTUFTY3JpcHQgc3BlY2lmaWNhdGlvbnMsIGluY29taW5nIHZh
bHVlcyBjYW4gYWx3YXlzIGJlIGNvbnZlcnRlZCB0byBib3RoCisgICAgIyBzdHJpbmdzIGFuZCBu
dW1iZXJzLCBzbyBkbyBub3QgdGhyb3cgVHlwZUVycm9yIGlmIHRoZSBhdHRyaWJ1dGUgaXMgb2Yg
dGhlc2UgdHlwZXMuCisgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IlN0cmljdFR5cGVDaGVja2luZyJ9KSB7CisgICAgICAgIG15ICRhcmdUeXBlID0g
R2V0VHlwZUZyb21TaWduYXR1cmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKKyAgICAgICAgaWYg
KElzV3JhcHBlclR5cGUoJGFyZ1R5cGUpKSB7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dERlY2xzLCAiICAgIGlmICghaXNVbmRlZmluZWRPck51bGwoYXJnc1swXSkgJiYgIVY4JHthcmdU
eXBlfTo6SGFzSW5zdGFuY2UoYXJnc1swXSkpIHtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnREZWNscywgIiAgICAgICAgVjhQcm94eTo6dGhyb3dUeXBlRXJyb3IoKTtcbiIpOwor
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAgICAgcmV0dXJuIHY4OjpI
YW5kbGU8djg6OlZhbHVlPigpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERl
Y2xzLCAiICAgIH1cbiIpOworICAgICAgICB9CisgICAgfQorCisgICAgbXkgJHN2Z05hdGl2ZVR5
cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0U1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCRpbXBsQ2xhc3NO
YW1lKTsKKyAgICBpZiAoJHN2Z05hdGl2ZVR5cGUpIHsKKyAgICAgICAgbXkgJHN2Z1dyYXBwZWRO
YXRpdmVUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldFNWR1dyYXBwZWRUeXBlTmVlZGluZ1RlYXJP
ZmYoJGltcGxDbGFzc05hbWUpOworICAgICAgICBpZiAoJHN2Z1dyYXBwZWROYXRpdmVUeXBlID1+
IC9MaXN0JC8pIHsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsK
KyAgICAkc3ZnTmF0aXZlVHlwZSogaW1wID0gVjgke2ltcGxDbGFzc05hbWV9Ojp0b05hdGl2ZShh
cmdzLkhvbGRlcigpKTsKK0VORAorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnREZWNscywgIiAgICAkc3ZnTmF0aXZlVHlwZSogd3JhcHBlciA9IFY4JHtpbXBs
Q2xhc3NOYW1lfTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7XG4iKTsKKyAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaWYgKHdyYXBwZXItPnJvbGUoKSA9PSBBbmltVmFs
Um9sZSkge1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICAg
ICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSKTtc
biIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAgICAgcmV0dXJu
IHY4OjpIYW5kbGU8djg6OlZhbHVlPigpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudERlY2xzLCAiICAgIH1cbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNs
cywgIiAgICAkc3ZnV3JhcHBlZE5hdGl2ZVR5cGUmIGltcEluc3RhbmNlID0gd3JhcHBlci0+cHJv
cGVydHlSZWZlcmVuY2UoKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNs
cywgIiAgICAkc3ZnV3JhcHBlZE5hdGl2ZVR5cGUqIGltcCA9ICZpbXBJbnN0YW5jZTtcbiIpOwor
ICAgICAgICB9CisgICAgfSBlbHNpZiAoJGF0dHJFeHQtPnsidjhPblByb3RvIn0pIHsKKyAgICAg
IGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IikgeworICAgICAgICBwdXNoKEBpbXBs
Q29udGVudERlY2xzLCA8PEVORCk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIg
PSBhcmdzLkhvbGRlcigpOworRU5ECisgICAgICB9IGVsc2UgeworICAgICAgICAjIHBlcmZvcm0g
bG9va3VwIGZpcnN0CisgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9N
V3JhcHBlcihWOCR7aW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKCksIGFyZ3MuVGhpcygpKTsK
KyAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6
OlZhbHVlPigpOworRU5ECisgICAgICB9CisgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxF
TkQpOworICAgICR7aW1wbENsYXNzTmFtZX0qIGltcCA9IFY4JHtpbXBsQ2xhc3NOYW1lfTo6dG9O
YXRpdmUoaG9sZGVyKTsKK0VORAorICAgIH0gZWxzZSB7CisgICAgICAgIG15ICRhdHRyVHlwZSA9
IEdldFR5cGVGcm9tU2lnbmF0dXJlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSk7CisgICAgICAgIG15
ICRyZWZsZWN0ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
UmVmbGVjdCJ9OworICAgICAgICBpZiAoJHJlZmxlY3QgJiYgSXNOb2RlU3ViVHlwZSgkZGF0YU5v
ZGUpICYmICRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJGF0dHJUeXBlKSkgeworICAgICAg
ICAgICAgIyBHZW5lcmF0ZSBzdXBlci1jb21wYWN0IGNhbGwgZm9yIHJlZ3VsYXIgYXR0cmlidXRl
IHNldHRlcjoKKyAgICAgICAgICAgIG15ICRjb250ZW50QXR0cmlidXRlTmFtZSA9ICRyZWZsZWN0
IGVxICIxIiA/IGxjICRhdHRyTmFtZSA6ICRyZWZsZWN0OworICAgICAgICAgICAgbXkgJG5hbWVz
cGFjZSA9ICRjb2RlR2VuZXJhdG9yLT5OYW1lc3BhY2VGb3JBdHRyaWJ1dGVOYW1lKCRpbnRlcmZh
Y2VOYW1lLCAkY29udGVudEF0dHJpYnV0ZU5hbWUpOworICAgICAgICAgICAgJGltcGxJbmNsdWRl
c3siJHtuYW1lc3BhY2V9LmgifSA9IDE7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERl
Y2xzLCAiICAgIHNldEVsZW1lbnRTdHJpbmdBdHRyRnJvbUFyZ3MoYXJncywgJHtuYW1lc3BhY2V9
Ojoke2NvbnRlbnRBdHRyaWJ1dGVOYW1lfUF0dHIsIGFyZ3NbMF0pO1xuIik7CisgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAicmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigp
O1xufVxuXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIjZW5kaWYg
Ly8gJHtjb25kaXRpb25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgIyBTa2lwIHRoZSByZXN0IG9mIHRoZSBmdW5j
dGlvbiEKKyAgICAgICAgfQorCisgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5E
KTsKKyAgICAke2ltcGxDbGFzc05hbWV9KiBpbXAgPSBWOCR7aW1wbENsYXNzTmFtZX06OnRvTmF0
aXZlKGFyZ3MuSG9sZGVyKCkpOworRU5ECisgICAgfQorCisgICAgbXkgJG5hdGl2ZVR5cGUgPSBH
ZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVyZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDApOworICAg
IGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgZXEgIkV2ZW50TGlzdGVuZXIiKSB7Cisg
ICAgICAgIGlmICgkZGF0YU5vZGUtPm5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKKyAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaWYgKCFpbXAtPmRvY3VtZW50KCkpXG4iKTsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAgIHJldHVybiB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4oKTtcbiIpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgbXkgJHZhbHVlID0gSlNWYWx1ZVRvTmF0aXZlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgImFy
Z3NbMF0iKTsKKyAgICAgICAgaWYgKCRuYXRpdmVUeXBlID1+IC9eVjhQYXJhbWV0ZXIvKSB7Cisg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAiIC4gQ29udmVydFRvVjhQYXJh
bWV0ZXIoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAkbmF0aXZlVHlwZSwgInYiLCAkdmFsdWUpIC4g
IlxuIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNs
cywgIiAgICAkbmF0aXZlVHlwZSB2ID0gJHZhbHVlO1xuIik7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBteSAkcmVzdWx0ID0gInYiOworICAgIG15ICRyZXR1cm5UeXBlID0gR2V0VHlwZUZyb21T
aWduYXR1cmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKKyAgICBpZiAoSXNSZWZQdHJUeXBlKCRy
ZXR1cm5UeXBlKSkgeworICAgICAgICAkcmVzdWx0ID0gIldURjo6Z2V0UHRyKCIgLiAkcmVzdWx0
IC4gIikiOworICAgIH0KKworICAgIG15ICR1c2VFeGNlcHRpb25zID0gMSBpZiBAeyRhdHRyaWJ1
dGUtPnNldHRlckV4Y2VwdGlvbnN9OworCisgICAgaWYgKCR1c2VFeGNlcHRpb25zKSB7CisgICAg
ICAgICRpbXBsSW5jbHVkZXN7IkV4Y2VwdGlvbkNvZGUuaCJ9ID0gMTsKKyAgICAgICAgcHVzaChA
aW1wbENvbnRlbnREZWNscywgIiAgICBFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpOworICAgIH0K
KworICAgIGlmICgkaW1wbENsYXNzTmFtZSBlcSAiU1ZHTnVtYmVyIikgeworICAgICAgICBwdXNo
KEBpbXBsQ29udGVudERlY2xzLCAiICAgICppbXAgPSAkcmVzdWx0O1xuIik7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSBlcSAiRXZlbnRMaXN0
ZW5lciIpIHsKKyAgICAgICAgICAgIG15ICRpbXBsU2V0dGVyRnVuY3Rpb25OYW1lID0gJGNvZGVH
ZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJOYW1lKTsKKyAgICAgICAgICAgICRpbXBsSW5jbHVk
ZXN7IlY4QWJzdHJhY3RFdmVudExpc3RlbmVyLmgifSA9IDE7CisgICAgICAgICAgICBpZiAoIUlz
Tm9kZVN1YlR5cGUoJGRhdGFOb2RlKSkgeworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50RGVjbHMsICIgICAgdHJhbnNmZXJIaWRkZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCksIGlt
cC0+JGF0dHJOYW1lKCksIGFyZ3NbMF0sIFY4JHtpbnRlcmZhY2VOYW1lfTo6ZXZlbnRMaXN0ZW5l
ckNhY2hlSW5kZXgpO1xuIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoJGludGVy
ZmFjZU5hbWUgZXEgIldvcmtlckNvbnRleHQiIGFuZCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5h
bWUgZXEgIm9uZXJyb3IiKSB7CisgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siVjhFdmVu
dExpc3RlbmVyTGlzdC5oIn0gPSAxOworICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IlY4
V29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oIn0gPSAxOworICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsICIgICAgaW1wLT5zZXQkaW1wbFNldHRlckZ1bmN0aW9uTmFtZShW
OEV2ZW50TGlzdGVuZXJMaXN0OjpmaW5kT3JDcmVhdGVXcmFwcGVyPFY4V29ya2VyQ29udGV4dEVy
cm9ySGFuZGxlcj4oYXJnc1swXSwgdHJ1ZSkiKTsKKyAgICAgICAgICAgIH0gZWxzaWYgKCRpbnRl
cmZhY2VOYW1lIGVxICJET01XaW5kb3ciIGFuZCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUg
ZXEgIm9uZXJyb3IiKSB7CisgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siVjhFdmVudExp
c3RlbmVyTGlzdC5oIn0gPSAxOworICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IlY4V2lu
ZG93RXJyb3JIYW5kbGVyLmgifSA9IDE7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnREZWNscywgIiAgICBpbXAtPnNldCRpbXBsU2V0dGVyRnVuY3Rpb25OYW1lKFY4RXZlbnRMaXN0
ZW5lckxpc3Q6OmZpbmRPckNyZWF0ZVdyYXBwZXI8VjhXaW5kb3dFcnJvckhhbmRsZXI+KGFyZ3Nb
MF0sIHRydWUpIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsICIgICAgaW1wLT5zZXQkaW1wbFNldHRlckZ1bmN0aW9uTmFtZShW
OERPTVdyYXBwZXI6OmdldEV2ZW50TGlzdGVuZXIoYXJnc1swXSwgdHJ1ZSwgTGlzdGVuZXJGaW5k
T3JDcmVhdGUpIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBteSAkc2V0dGVyRXhwcmVzc2lvblByZWZpeCA9ICRjb2RlR2VuZXJhdG9yLT5TZXR0ZXJFeHBy
ZXNzaW9uUHJlZml4KFwlaW1wbEluY2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7
CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGltcC0+JHNldHRlckV4
cHJlc3Npb25QcmVmaXgkcmVzdWx0Iik7CisgICAgICAgIH0KKyAgICAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgIiwgZWMiKSBpZiAkdXNlRXhjZXB0aW9uczsKKyAgICAgICAgcHVzaChAaW1w
bENvbnRlbnREZWNscywgIik7XG4iKTsKKyAgICB9CisKKyAgICBpZiAoJHVzZUV4Y2VwdGlvbnMp
IHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBpZiAoVU5MSUtFTFkoZWMp
KVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAgIFY4UHJveHk6
OnNldERPTUV4Y2VwdGlvbihlYyk7XG4iKTsKKyAgICB9CisKKyAgICBpZiAoJHN2Z05hdGl2ZVR5
cGUpIHsKKyAgICAgICAgaWYgKCR1c2VFeGNlcHRpb25zKSB7CisgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudERlY2xzLCAiICAgIGlmICghZWMpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50RGVjbHMsICIgICAgICAgIHdyYXBwZXItPmNvbW1pdENoYW5nZSgpO1xuIik7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAg
IHdyYXBwZXItPmNvbW1pdENoYW5nZSgpO1xuIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBw
dXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4o
KTtcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICJ9XG5cbiIpOyAgIyBlbmQgb2Yg
c2V0dGVyCisgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiNlbmRpZiAvLyAke2NvbmRpdGlv
bmFsU3RyaW5nfVxuXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Cit9CisKIHN1YiBHZW5lcmF0
ZU5vcm1hbEF0dHJTZXR0ZXIKIHsKICAgICBteSAkYXR0cmlidXRlID0gc2hpZnQ7CkBAIC0xMDc1
LDYgKzE0MzksNjggQEAgRU5ECiAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiNlbmRpZiAv
LyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiB9CiAK
K3N1YiBHZW5lcmF0ZURlZmluZVByb3BlcnR5U2NyaXB0Cit7CisJbXkgJGludGVyZmFjZU5hbWUg
PSBzaGlmdDsKKwlteSAkY2xhc3NOYW1lID0gc2hpZnQ7CisJbXkgJHBhcmVudENsYXNzVGVtcGxh
dGUgPSBzaGlmdDsKKwlwdXNoKEBpbXBsQ29udGVudCwgIDw8RU5EKTsKKwl7CisJCXY4OjpMb2Nh
bDx2ODo6Q29udGV4dD4gbXljb250ZXh0ID0gVjhQcm94eTo6Y3VycmVudENvbnRleHQoKTsKKwkJ
bXljb250ZXh0LT5FbnRlcigpOworCQl2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHNvdXJjZSA9IHY4
OjpTdHJpbmc6Ok5ldygiIgorRU5ECisJZm9yZWFjaCBteSAkbmFtZSAoQGFjY2Vzc29yRnVuY3Rp
b25OYW1lcykgeworCQlteSAkaGFzR2V0dGVyID0gJGdldHRlckZ1bmN0aW9uRXhpc3RIYXNoeyRu
YW1lfTsKKwkJbXkgJGhhc1NldHRlciA9ICRzZXR0ZXJGdW5jdGlvbkV4aXN0SGFzaHskbmFtZX07
CisJCWlmKCRoYXNHZXR0ZXIgJiYgJGhhc1NldHRlcikgeworCQkJcHVzaChAaW1wbENvbnRlbnQs
ICA8PEVORCk7CisJCQkiT2JqZWN0LmRlZmluZVByb3BlcnR5KCIKKwkJCQkiJHtpbnRlcmZhY2VO
YW1lfS5wcm90b3R5cGUsIgorCQkJCSInJHtuYW1lfScsIgorCQkJCSJ7Z2V0OiAke2ludGVyZmFj
ZU5hbWV9LnByb3RvdHlwZS4ke25hbWV9R2V0dGVyQ2FsbGJhY2ssIgorCQkJCSIgc2V0OiAke2lu
dGVyZmFjZU5hbWV9LnByb3RvdHlwZS4ke25hbWV9U2V0dGVyQ2FsbGJhY2t9KTsiCitFTkQKKwkJ
fQorCQllbHNpZiAoJGhhc0dldHRlcikgeworCQkJcHVzaChAaW1wbENvbnRlbnQsICA8PEVORCk7
CisJCQkiT2JqZWN0LmRlZmluZVByb3BlcnR5KCIKKwkJCQkiJHtpbnRlcmZhY2VOYW1lfS5wcm90
b3R5cGUsIgorCQkJCSInJHtuYW1lfScsIgorCQkJCSJ7Z2V0OiAke2ludGVyZmFjZU5hbWV9LnBy
b3RvdHlwZS4ke25hbWV9R2V0dGVyQ2FsbGJhY2t9KTsiCitFTkQKKwkJfQorCQllbHNpZiAoJGhh
c1NldHRlcikgeworCQkJcHVzaChAaW1wbENvbnRlbnQsICA8PEVORCk7CisJCQkiT2JqZWN0LmRl
ZmluZVByb3BlcnR5KCIKKwkJCQkiJHtpbnRlcmZhY2VOYW1lfS5wcm90b3R5cGUsIgorCQkJCSIn
JHtuYW1lfScsIgorCQkJCSJ7c2V0OiAke2ludGVyZmFjZU5hbWV9LnByb3RvdHlwZS4ke25hbWV9
U2V0dGVyQ2FsbGJhY2t9KTsiCitFTkQKKwkJCX0KKwkJfQorCXB1c2goQGltcGxDb250ZW50LCAg
PDxFTkQpOworCQkpOyAvLyBlbmQgb2YgSmF2YXNjcmlwdCBDb2RlCisJCXY4OjpIYW5kbGU8djg6
OlNjcmlwdD4gc2NyaXB0ID0gdjg6OlNjcmlwdDo6Q29tcGlsZShzb3VyY2UpOworCQl2ODo6VHJ5
Q2F0Y2ggdHJ5Y2F0Y2g7CisJCS8vIE11c3QgYWRkIHRoZSBpbmZvIHRvIHRoZSBpbml0aWFsaXpl
ZC1IYXNoU2V0IGJlZm9yZSBSdW5uaW5nIHRoZSBzY3JpcHQgYmVjYXVzZQorCQkvLyBydW5uaW5n
IGl0IHdpbGwgY2F1c2UgdGhlIHByb2dyYW0gdG8gY2FsbCBHZXRUZW1wbGF0ZSBpLmUuIHRoaXMg
ZnVuY3Rpb24KKwkJU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2VjID0gZ2V0U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOworCQlzZWMtPm1faW5pdGlhbGl6ZWRQcm90b3R5cGVzLmFkZCgmaW5mbyk7
CisJCXY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXMgPSBzY3JpcHQtPlJ1bigpOworCQlpZihyZXMu
SXNFbXB0eSgpKSB7CisJCQkvLyBOT1RFOiBkbyBzb21ldGhpbmcgd2hlbiBpdCBmYWlscy4KKwkJ
CXRyeWNhdGNoLkV4Y2VwdGlvbigpOworCQkJc2VjLT5tX2luaXRpYWxpemVkUHJvdG90eXBlcy5y
ZW1vdmUoJmluZm8pOworCQl9CisJCW15Y29udGV4dC0+RXhpdCgpOworCQkvLyBHbyB1cCB0aGUg
cHJvdG90eXBlIGNoYWluIGp1c3QgbGlrZSBDb25maWd1cmUke2NsYXNzTmFtZX1UZW1wbGF0ZQor
CQkkcGFyZW50Q2xhc3NUZW1wbGF0ZTsKKwl9CitFTkQKKworfQorCiBzdWIgR2V0RnVuY3Rpb25U
ZW1wbGF0ZUNhbGxiYWNrTmFtZQogewogICAgICRmdW5jdGlvbiA9IHNoaWZ0OwpAQCAtMTU2NSw3
ICsxOTkxLDM3IEBAIHN1YiBHZW5lcmF0ZVNpbmdsZUJhdGNoZWRBdHRyaWJ1dGUKICAgICAgICAg
ICAgICAgICAgICAgICAiJyBFeHRBdHRyOiAnIiAuIGpvaW4oJyAnLCBrZXlzKCV7JGF0dHJFeHR9
KSkgLiAiJykiOwogCiAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiICAgIFwvXC8g
JGNvbW1lbnRJbmZvXG4iKTsKLSAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICIgICAg
e1wiJGF0dHJOYW1lXCIsICRnZXR0ZXIsICRzZXR0ZXIsICRkYXRhLCAkYWNjZXNzQ29udHJvbCwg
c3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPigkcHJvcEF0dHIpLCAkb25fcHJvdG99
IiAuICRkZWxpbWl0ZXIgLiAiXG4iKTsKKworCSMgaGFuZCB3cml0dGVuIElzU3VidHlwZSgpIGp1
c3QgZnJvbSBpbnRlcmZhY2VuYW1lCisJIyBOT1RFOiBJdCdzIGNvbnZlbmllbnQgdG8gaGF2ZSAk
ZGF0YU5vZGUgaW4gdGhpcyBmdW5jdGlvbgorCW15ICRpc19ub2Rlc19zdWJ0eXBlID0gMDsKKwlt
eSAkcGFyZW50VHlwZSA9ICJOb2RlIjsKKyAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgJHBhcmVu
dFR5cGUpIHsKKwkJJGlzX25vZGVzX3N1YnR5cGUgPSAxOworCX0KKyAgICBmb3JlYWNoIChAYWxs
UGFyZW50cykgeworICAgICAgICBteSAkcGFyZW50ID0gJGNvZGVHZW5lcmF0b3ItPlN0cmlwTW9k
dWxlKCRfKTsKKyAgICAgICAgaWYgKCRwYXJlbnQgZXEgJHBhcmVudFR5cGUgfHwgJGlzX25vZGVz
X3N1YnR5cGUpIHsKKwkJCSRpc19ub2Rlc19zdWJ0eXBlID0gMTsKKwkJCWxhc3Q7CisJCX0KKwkJ
ZWxzZSB7CisJCQkkaXNfbm9kZXNfc3VidHlwZSA9IDA7CisJCX0KKyAgICB9CisKKwkjIERPTVdp
bmRvdyBpcyBzcGVjaWFsLiAKKwkjIFRPRE86IGNoZWNrIGlmIHJlbW92aW5nIHRoaXMgRE9NV2lu
ZG93IGNoZWNrIHdpbGwgc3RpbCB3b3JrLgorCWlmKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5k
b3ciIHx8ICEkaXNfbm9kZXNfc3VidHlwZSkgeworCQlwdXNoKEBpbXBsQ29udGVudCwgJGluZGVu
dCAuICIgICAge1wiJGF0dHJOYW1lXCIsICRnZXR0ZXIsICRzZXR0ZXIsICRkYXRhLCAkYWNjZXNz
Q29udHJvbCwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPigkcHJvcEF0dHIpLCAk
b25fcHJvdG99IiAuICRkZWxpbWl0ZXIgLiAiXG4iKTsKKwl9CisJZWxzZSB7CisJCSMgTXVzdCBj
b21lIHVwIHdpdGggYSB3YXkgdG8gcmVtb3ZlIHRoZXNlLCBiZWNhdXNlIHByb3BlcnRpZXMKKwkJ
IyBhcmUgbm93IG9uIHByb3RvdHlwZXMuCisJCSMgTm90ZSB0aGF0IGxlYXZpbmcgdGhlIGdldHRl
cnMgYW5kIHNldHRlcnMgdW51c2VkIHdpbGwgCisJCSMgY2F1c2UgYSBjb21waWxhdGlvbiBlcnJv
ci4KKwkJcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiICAgIHtcImRlcHJlY2F0ZWQkYXR0
ck5hbWVcIiwgJGdldHRlciwgJHNldHRlciwgJGRhdGEsICRhY2Nlc3NDb250cm9sLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KCRwcm9wQXR0ciksICRvbl9wcm90b30iIC4gJGRl
bGltaXRlciAuICJcbiIpOworCX0KIH0KIAogc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb25JbmRl
eGVyCkBAIC0xNzg5LDYgKzIyNDUsMTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAog
ICAgIG15ICRoYXNDb25zdHJ1Y3RvcnMgPSAwOwogICAgIG15ICRzZXJpYWxpemVkQXR0cmlidXRl
OworCSMgQm9vayBrZWVwaW5nIHRoZSBuZXdseSBhZGRlZCBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9u
cworCSMgVGhlIGhhc2hlcyBhcmUgdXNlZCBsYXRlciBmb3IgY2hlY2tpbmcgdGhlIGV4aXN0ZW5j
ZSBvZiBnZXR0ZXIvc2V0dGVyLgorCUBhY2Nlc3NvckZ1bmN0aW9uTmFtZXMgPSAoKTsKKwlAZ2V0
dGVyRnVuY3Rpb25zID0gKCk7CisJJWdldHRlckZ1bmN0aW9uRXhpc3RIYXNoID0gKCk7CisJQHNl
dHRlckZ1bmN0aW9ucyA9ICgpOworCSVzZXR0ZXJGdW5jdGlvbkV4aXN0SGFzaCA9ICgpOwogICAg
ICMgR2VuZXJhdGUgcHJvcGVydHkgYWNjZXNzb3JzIGZvciBhdHRyaWJ1dGVzLgogICAgIGZvciAo
JGluZGV4ID0gMDsgJGluZGV4IDwgQHskZGF0YU5vZGUtPmF0dHJpYnV0ZXN9OyAkaW5kZXgrKykg
ewogICAgICAgICAkYXR0cmlidXRlID0gQHskZGF0YU5vZGUtPmF0dHJpYnV0ZXN9WyRpbmRleF07
CkBAIC0xODI2LDE2ICsyMjg5LDI5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
ICAgIH0KIAogICAgICAgICAjIEdlbmVyYXRlIHRoZSBhY2Nlc3Nvci4KKwkJcHVzaChAYWNjZXNz
b3JGdW5jdGlvbk5hbWVzLCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpOwogICAgICAgICBp
ZiAoISgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21H
ZXR0ZXIifSB8fAogICAgICAgICAgICAgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiVjhDdXN0b21HZXR0ZXIifSkpIHsKLSAgICAgICAgICAgIEdlbmVyYXRlTm9y
bWFsQXR0ckdldHRlcigkYXR0cmlidXRlLCAkZGF0YU5vZGUsICRpbXBsQ2xhc3NOYW1lLCAkaW50
ZXJmYWNlTmFtZSk7CisJCQlHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIoJGF0dHJpYnV0ZSwgJGRh
dGFOb2RlLCAkaW1wbENsYXNzTmFtZSwgJGludGVyZmFjZU5hbWUpOworCQkJaWYoSXNTdWJUeXBl
KCRkYXRhTm9kZSwgIk5vZGUiKSAmJiAkaW1wbENsYXNzTmFtZSBuZSAiRE9NV2luZG93Iil7CisJ
CQkJR2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVyQ2FsbGJhY2soJGF0dHJpYnV0ZSwgJGRhdGFOb2Rl
LCAkaW1wbENsYXNzTmFtZSwgJGludGVyZmFjZU5hbWUpOworCQkJCXB1c2goQGdldHRlckZ1bmN0
aW9ucywgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lLCAKKwkJCQkJICBHZW5lcmF0ZUNvbmRp
dGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSkpOworCQkJCSRnZXR0ZXJGdW5jdGlv
bkV4aXN0SGFzaHskYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWV9ID0gMTsKKwkJCX0KICAgICAg
ICAgfQogICAgICAgICBpZiAoISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkN1c3RvbVNldHRlciJ9ICYmCiAgICAgICAgICAgICAhJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhDdXN0b21TZXR0ZXIifSAmJgogICAgICAgICAg
ICAgISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJlcGxhY2Vh
YmxlIn0gJiYKICAgICAgICAgICAgICRhdHRyaWJ1dGUtPnR5cGUgIX4gL15yZWFkb25seS8gJiYK
ICAgICAgICAgICAgICEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJWOFJlYWRPbmx5In0pIHsKLSAgICAgICAgICAgIEdlbmVyYXRlTm9ybWFsQXR0clNldHRlcigk
YXR0cmlidXRlLCAkZGF0YU5vZGUsICRpbXBsQ2xhc3NOYW1lLCAkaW50ZXJmYWNlTmFtZSk7CisJ
CQlHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXIoJGF0dHJpYnV0ZSwgJGRhdGFOb2RlLCAkaW1wbENs
YXNzTmFtZSwgJGludGVyZmFjZU5hbWUpOworCQkJaWYoSXNTdWJUeXBlKCRkYXRhTm9kZSwgIk5v
ZGUiKSAmJiAkaW1wbENsYXNzTmFtZSBuZSAiRE9NV2luZG93Iil7CisJCQkJR2VuZXJhdGVOb3Jt
YWxBdHRyU2V0dGVyQ2FsbGJhY2soJGF0dHJpYnV0ZSwgJGRhdGFOb2RlLCAkaW1wbENsYXNzTmFt
ZSwgJGludGVyZmFjZU5hbWUpOworCQkJCXB1c2goQHNldHRlckZ1bmN0aW9ucywgJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5uYW1lLCAKKwkJCQkJICBHZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZSkpOworCQkJCSRzZXR0ZXJGdW5jdGlvbkV4aXN0SGFzaHskYXR0
cmlidXRlLT5zaWduYXR1cmUtPm5hbWV9ID0gMTsKKwkJCX0KICAgICAgICAgfQogICAgIH0KIApA
QCAtMTkxMCw2ICsyMzg2LDUzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgIyBT
ZXR1cCB0YWJsZSBvZiBzdGFuZGFyZCBjYWxsYmFjayBmdW5jdGlvbnMKICAgICAkbnVtX2NhbGxi
YWNrcyA9IDA7CiAgICAgJGhhc19jYWxsYmFja3MgPSAwOworCW15ICRteV9udW1fY2FsbGJhY2tz
ID0gMDsKKwlpZihAZ2V0dGVyRnVuY3Rpb25zIHx8IEBzZXR0ZXJGdW5jdGlvbnMgfHwgJGRhdGFO
b2RlLT5mdW5jdGlvbnMpIHsKKyAgICAgICAgaWYgKCEkaGFzX2NhbGxiYWNrcykgeworICAgICAg
ICAgICAgJGhhc19jYWxsYmFja3MgPSAxOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJzdGF0aWMgY29uc3QgQmF0Y2hlZENhbGxiYWNrICR7aW50ZXJmYWNlTmFtZX1DYWxsYmFja3Nb
XSA9IHtcbiIpOworCQkJIyBhZGRpbmcgbXkgZ2V0dGVyIGNhbGxiYWNrcyBieSBoYW5kCisJCQlm
b3IobXkgJGkgPSAwICA7ICRpIDwgQGdldHRlckZ1bmN0aW9ucyA7ICRpICs9IDIpIHsKKwkJCQlt
eSAkbmFtZSA9ICRnZXR0ZXJGdW5jdGlvbnNbJGldOworCQkJCW15ICRmbmFtZSA9ICIke25hbWV9
QXR0ckdldHRlckNhbGxiYWNrIjsKKwkJCQlteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkZ2V0dGVy
RnVuY3Rpb25zWyRpKzFdOworCQkJCWlmKCRjb25kaXRpb25hbFN0cmluZykgeworCQkJCQlwdXNo
KEBpbXBsQ29udGVudCwgPDxFTkQpOworI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9CitFTkQKKwkJ
CQl9CisJCQkJcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKKyAgICB7IiR7bmFtZX1HZXR0ZXJD
YWxsYmFjayIsICR7aW50ZXJmYWNlTmFtZX1JbnRlcm5hbDo6JHtmbmFtZX19LAorRU5ECisJCQkJ
aWYoJGNvbmRpdGlvbmFsU3RyaW5nKSB7CisJCQkJCXB1c2goQGltcGxDb250ZW50LCA8PEVORCk7
CisjZW5kaWYKK0VORAorCQkJCX0KKwkJCQkkbXlfbnVtX2NhbGxiYWNrcysrOworCQkJfQorCQkJ
Zm9yKG15ICRpID0gMCAgOyAkaSA8IEBzZXR0ZXJGdW5jdGlvbnMgOyAkaSArPSAyKSB7CisJCQkJ
bXkgJG5hbWUgPSAkc2V0dGVyRnVuY3Rpb25zWyRpXTsKKwkJCQlteSAkZm5hbWUgPSAiJHtuYW1l
fUF0dHJTZXR0ZXJDYWxsYmFjayI7CisJCQkJbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJHNldHRl
ckZ1bmN0aW9uc1skaSsxXTsKKwkJCQlpZigkY29uZGl0aW9uYWxTdHJpbmcpIHsKKwkJCQkJcHVz
aChAaW1wbENvbnRlbnQsIDw8RU5EKTsKKyNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfQorRU5ECisJ
CQkJfQorCQkJCXB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CisgICAgeyIke25hbWV9U2V0dGVy
Q2FsbGJhY2siLCAke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7Zm5hbWV9fSwKK0VORAorCQkJ
CWlmKCRjb25kaXRpb25hbFN0cmluZykgeworCQkJCQlwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQp
OworI2VuZGlmCitFTkQKKwkJCQl9CisJCQkJJG15X251bV9jYWxsYmFja3MrKzsKKwkJCX0KKyAg
ICAgICAgfQorCX0KKwkjIGdlbmVyYXRlIHRoZSBbbmFtZSwgZnVuY3Rpb25dIHBhaXIKICAgICBm
b3JlYWNoIG15ICRmdW5jdGlvbiAoQHskZGF0YU5vZGUtPmZ1bmN0aW9uc30pIHsKICAgICAgICAg
IyBPbmx5IG9uZSB0YWJsZSBlbnRyeSBpcyBuZWVkZWQgZm9yIG92ZXJsb2FkZWQgbWV0aG9kczoK
ICAgICAgICAgbmV4dCBpZiAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSA+IDE7CkBAIC0xOTMy
LDEwICsyNDU1LDYgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgaWYgKCRh
dHRyRXh0LT57IkRvbnRFbnVtIn0gfHwgJGF0dHJFeHQtPnsiVjhSZWFkT25seSJ9KSB7CiAgICAg
ICAgICAgICBuZXh0OwogICAgICAgICB9Ci0gICAgICAgIGlmICghJGhhc19jYWxsYmFja3MpIHsK
LSAgICAgICAgICAgICRoYXNfY2FsbGJhY2tzID0gMTsKLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAic3RhdGljIGNvbnN0IEJhdGNoZWRDYWxsYmFjayAke2ludGVyZmFjZU5hbWV9Q2Fs
bGJhY2tzW10gPSB7XG4iKTsKLSAgICAgICAgfQogICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5uYW1lOwogICAgICAgICBteSAkY2FsbGJhY2sgPSBHZXRGdW5jdGlvblRl
bXBsYXRlQ2FsbGJhY2tOYW1lKCRmdW5jdGlvbiwgJGludGVyZmFjZU5hbWUpOwogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwpAQCAtMTk0Myw3ICsyNDYyLDEzIEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiBFTkQKICAgICAgICAgJG51bV9jYWxsYmFja3MrKzsKICAgICB9
Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICJ9O1xuIikgIGlmICRoYXNfY2FsbGJhY2tzOworCWlm
KCRudW1fY2FsbGJhY2tzfHwkbXlfbnVtX2NhbGxiYWNrcykgeworCQlwdXNoKEBpbXBsQ29udGVu
dCwgIn07XG4iKSAgaWYgJGhhc19jYWxsYmFja3M7CisJfQorCWVsc2UgeworCQlwb3AoQGltcGxD
b250ZW50KTsKKwkJJGhhc19jYWxsYmFja3MgPSAwOworCX0KIAogICAgICMgU2V0dXAgY29uc3Rh
bnRzCiAgICAgbXkgJGhhc19jb25zdGFudHMgPSAwOwpAQCAtMjIzMCwxMyArMjc1NSwzMiBAQCB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHtjbGFzc05hbWV9OjpHZXRUZW1w
bGF0ZSgpCiB7CiAgICAgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOEJpbmRpbmdQ
ZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpOwogICAgIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpU
ZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZp
bmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCisgICAg
aWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKSB7CitFTkQKKwkjIEphdmFT
Y3JpcHQgY29kZSB0byBzZXR1cCB0aGUgcHJvdG90eXBlLgorCWlmKElzU3ViVHlwZSgkZGF0YU5v
ZGUsICJOb2RlIikgJiYgJGltcGxDbGFzc05hbWUgbmUgIkRPTVdpbmRvdyIpeworCQlwdXNoKEBp
bXBsQ29udGVudCwgIDw8RU5EKTsKKwkJU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2VjID0gZ2V0
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworCQlpZighc2VjLT5tX2luaXRpYWxpemVkUHJvdG90
eXBlcy5jb250YWlucygmaW5mbykpIHsKK0VORAorCQlHZW5lcmF0ZURlZmluZVByb3BlcnR5U2Ny
aXB0KCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkcGFyZW50Q2xhc3NUZW1wbGF0ZSk7CisJ
CXB1c2goQGltcGxDb250ZW50LCAgPDxFTkQpOworCQl9IC8vIGVuZCBpbml0aWFsaXphdGlvbgor
RU5ECisJfQorCQlwdXNoKEBpbXBsQ29udGVudCwgIDw8RU5EKTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdC0+c2Vjb25kOwotCisJfQogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAg
ICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQogICAgICAgICBD
b25maWd1cmUke2NsYXNzTmFtZX1UZW1wbGF0ZShHZXRSYXdUZW1wbGF0ZSgpKTsKICAgICBkYXRh
LT50ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOworRU5ECisJIyBKYXZhU2NyaXB0IGNv
ZGUgdG8gc2V0dXAgdGhlIHByb3RvdHlwZS4KKwlpZihJc1N1YlR5cGUoJGRhdGFOb2RlLCAiTm9k
ZSIpICYmICRpbXBsQ2xhc3NOYW1lIG5lICJET01XaW5kb3ciKXsKKwkJR2VuZXJhdGVEZWZpbmVQ
cm9wZXJ0eVNjcmlwdCgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJHBhcmVudENsYXNzVGVt
cGxhdGUpOworCX0KKwlwdXNoKEBpbXBsQ29udGVudCwgIDw8RU5EKTsKICAgICByZXR1cm4gdGVt
cGw7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGlu
Zy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCmluZGV4IDE3
OTIzNzQuLjM1ZmI3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
QmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNw
cApAQCAtNjA3LDYgKzYwNywxMyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0RWxlbWVudFN0
cmluZ0F0dHIoY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbywKICAgICByZXR1cm4gdjhFeHRl
cm5hbFN0cmluZyhpbXAtPmdldEF0dHJpYnV0ZShuYW1lKSk7CiB9CiAKK3Y4OjpIYW5kbGU8djg6
OlZhbHVlPiBnZXRFbGVtZW50U3RyaW5nQXR0ckZyb21BcmdzKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSkgCit7CisgICAgRWxlbWVudCogaW1wID0gVjhFbGVtZW50Ojp0
b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhFeHRlcm5hbFN0cmluZyhpbXAt
PmdldEF0dHJpYnV0ZShuYW1lKSk7Cit9CisKIHZvaWQgc2V0RWxlbWVudFN0cmluZ0F0dHIoY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdmFsdWUpCkBAIC02MTUsNiArNjIyLDE0IEBAIHZvaWQgc2V0RWxlbWVu
dFN0cmluZ0F0dHIoY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbywKICAgICBBdG9taWNTdHJp
bmcgdiA9IHRvQXRvbWljV2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hlY2sodmFsdWUpOwogICAgIGlt
cC0+c2V0QXR0cmlidXRlKG5hbWUsIHYpOwogfQordm9pZCBzZXRFbGVtZW50U3RyaW5nQXR0ckZy
b21BcmdzKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlKQoreworICAgIEVsZW1lbnQqIGltcCA9IFY4RWxl
bWVudDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisgICAgQXRvbWljU3RyaW5nIHYgPSB0b0F0
b21pY1dlYkNvcmVTdHJpbmdXaXRoTnVsbENoZWNrKHZhbHVlKTsKKyAgICBpbXAtPnNldEF0dHJp
YnV0ZShuYW1lLCB2KTsKK30KIAogUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiB2OFZhbHVlVG9X
ZWJDb3JlRE9NU3RyaW5nTGlzdCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCmluZGV4IDUzNWQ5YzEuLjNiNDE1MDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCkBAIC0zNjQsMTAgKzM2NCwxNSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0RWxl
bWVudFN0cmluZ0F0dHIoY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0RWxlbWVudFN0cmluZ0F0dHJGcm9tQXJncyhjb25z
dCB2ODo6QXJndW1lbnRzJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZvaWQgc2V0RWxlbWVudFN0cmlu
Z0F0dHIoY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHY4OjpMb2NhbDx2ODo6VmFsdWU+KTsKIAorICAgIHZvaWQgc2V0RWxlbWVudFN0cmluZ0F0dHJG
cm9tQXJncyhjb25zdCB2ODo6QXJndW1lbnRzJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
djg6OkxvY2FsPHY4OjpWYWx1ZT4pOwogCiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OlN0cmluZz4g
Z2V0VG9TdHJpbmdOYW1lKCk7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IGdldFRvU3RyaW5nVGVtcGxhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oCmluZGV4IGEwODIyODEuLjgzMjExMzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtNjgsNiArNjgsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHsKICAgICBw
dWJsaWM6CisJCUhhc2hTZXQ8dm9pZCo+IG1faW5pdGlhbGl6ZWRQcm90b3R5cGVzOwogICAgICAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgICAgIHZpcnR1YWwgflNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKIAotLSAKMS43LjMuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104317</attachid>
            <date>2011-08-18 03:35:17 -0700</date>
            <delta_ts>2011-08-18 03:35:17 -0700</delta_ts>
            <desc>WIP patch with fixes</desc>
            <filename>0001-WIP-prototype-with-fixes.patch</filename>
            <type>text/plain</type>
            <size>33879</size>
            <attacher name="Rintaro Kuroiwa">rkuroiwa</attacher>
            
              <data encoding="base64">RnJvbSBhZmE4NzFmMDhjMDMzM2Q0NGFkMTY5YThmOWYxMDMxZmI5YjY4Y2YxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSaW50YXJvIEt1cm9pd2EgPHJrdXJvaXdhQGdvb2dsZS5jb20+
CkRhdGU6IE1vbiwgMTUgQXVnIDIwMTEgMDk6NTg6MTggKzA5MDAKU3ViamVjdDogW1BBVENIXSBX
SVAgcHJvdG90eXBlIHdpdGggZml4ZXMKLS0tCiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbSB8ICA1NjkgKysrKysrKysrKysrKysrKysrKy0KIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAgICAgICAgICAgIHwgICAxNSArCiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaCAgICAgICAgICAgICB8ICAgIDUg
KwogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCAgICAgICAgfCAg
ICAxICsKIDQgZmlsZXMgY2hhbmdlZCwgNTgyIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0p
CgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JW
OC5wbQppbmRleCA2NWEwNjhjLi5jNzdmM2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtNzExLDYgKzcxMSwyMTEgQEAg
RU5ECiBFTkQKIH0KIAorc3ViIEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlckNhbGxiYWNrCit7Cisg
ICAgbXkgJGF0dHJpYnV0ZSA9IHNoaWZ0OworICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OworICAg
IG15ICRpbXBsQ2xhc3NOYW1lID0gc2hpZnQ7CisgICAgbXkgJGludGVyZmFjZU5hbWUgPSBzaGlm
dDsKKworICAgIG15ICRhdHRyRXh0ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXM7CisgICAgbXkgJGF0dHJOYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1l
OworICAgIG15ICRhdHRyVHlwZSA9IEdldFR5cGVGcm9tU2lnbmF0dXJlKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZSk7CisgICAgbXkgJG5hdGl2ZVR5cGUgPSBHZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVy
ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIC0xKTsKKworICAgIG15ICRnZXR0ZXJTdHJpbmdVc2Vz
SW1wID0gJGltcGxDbGFzc05hbWUgbmUgIlNWR051bWJlciI7CisgICAgbXkgJHN2Z05hdGl2ZVR5
cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0U1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCRpbXBsQ2xhc3NO
YW1lKTsKKyAgICAKKyAgICAjIEdldHRlcgorICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9IEdl
bmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKKyAgICBwdXNo
KEBpbXBsQ29udGVudERlY2xzLCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRj
b25kaXRpb25hbFN0cmluZzsKKworICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsK
K3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHthdHRyTmFtZX1BdHRyR2V0dGVyQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoXCJET00uJGlt
cGxDbGFzc05hbWUuJGF0dHJOYW1lLl9nZXRcIik7CitFTkQKKworICAgIGlmICgkc3ZnTmF0aXZl
VHlwZSkgeworICAgICAgICBteSAkc3ZnV3JhcHBlZE5hdGl2ZVR5cGUgPSAkY29kZUdlbmVyYXRv
ci0+R2V0U1ZHV3JhcHBlZFR5cGVOZWVkaW5nVGVhck9mZigkaW1wbENsYXNzTmFtZSk7CisgICAg
ICAgIGlmICgkc3ZnV3JhcHBlZE5hdGl2ZVR5cGUgPX4gL0xpc3QvKSB7CisgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CisgICAgJHN2Z05hdGl2ZVR5cGUqIGltcCA9
IFY4JHtpbXBsQ2xhc3NOYW1lfTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CitFTkQKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsK
KyAgICAkc3ZnTmF0aXZlVHlwZSogd3JhcHBlciA9IFY4JHtpbXBsQ2xhc3NOYW1lfTo6dG9OYXRp
dmUoYXJncy5Ib2xkZXIoKSk7CisgICAgJHN2Z1dyYXBwZWROYXRpdmVUeXBlJiBpbXBJbnN0YW5j
ZSA9IHdyYXBwZXItPnByb3BlcnR5UmVmZXJlbmNlKCk7CitFTkQKKyAgICAgICAgICAgIGlmICgk
Z2V0dGVyU3RyaW5nVXNlc0ltcCkgeworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
RGVjbHMsIDw8RU5EKTsKKyAgICAkc3ZnV3JhcHBlZE5hdGl2ZVR5cGUqIGltcCA9ICZpbXBJbnN0
YW5jZTsKK0VORAorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNpZiAoJGF0dHJF
eHQtPnsidjhPblByb3RvIn0gfHwgJGF0dHJFeHQtPnsiVjhEaXNhbGxvd1NoYWRvd2luZyJ9KSB7
CisgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IikgeworICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOworICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gaG9sZGVyID0gYXJncy5Ib2xkZXIoKTsKK0VORAorICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgIyBwZXJmb3JtIGxvb2t1cCBmaXJzdAorICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgPDxFTkQpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0g
VjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4JHtpbnRlcmZhY2VOYW1lfTo6R2V0VGVt
cGxhdGUoKSwgYXJncy5UaGlzKCkpOworICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CitFTkQKKyAgICAgICAgfQorICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CisgICAgJHtpbXBsQ2xhc3NOYW1lfSog
aW1wID0gVjgke2ltcGxDbGFzc05hbWV9Ojp0b05hdGl2ZShob2xkZXIpOworRU5ECisgICAgfSBl
bHNlIHsKKyAgICAgICAgbXkgJHJlZmxlY3QgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJSZWZsZWN0In07CisgICAgICAgIG15ICR1cmwgPSAkYXR0cmlidXRl
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJVUkwifTsKKyAgICAgICAgaWYgKCRn
ZXR0ZXJTdHJpbmdVc2VzSW1wICYmICRyZWZsZWN0ICYmICEkdXJsICYmIElzTm9kZVN1YlR5cGUo
JGRhdGFOb2RlKSAmJiAkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCRhdHRyVHlwZSkpIHsK
KyAgICAgICAgICAgICMgR2VuZXJhdGUgc3VwZXItY29tcGFjdCBjYWxsIGZvciByZWd1bGFyIGF0
dHJpYnV0ZSBnZXR0ZXI6CisgICAgICAgICAgICBteSAkY29udGVudEF0dHJpYnV0ZU5hbWUgPSAk
cmVmbGVjdCBlcSAiMSIgPyBsYyAkYXR0ck5hbWUgOiAkcmVmbGVjdDsKKyAgICAgICAgICAgIG15
ICRuYW1lc3BhY2UgPSAkY29kZUdlbmVyYXRvci0+TmFtZXNwYWNlRm9yQXR0cmlidXRlTmFtZSgk
aW50ZXJmYWNlTmFtZSwgJGNvbnRlbnRBdHRyaWJ1dGVOYW1lKTsKKyAgICAgICAgICAgICRpbXBs
SW5jbHVkZXN7IiR7bmFtZXNwYWNlfS5oIn0gPSAxOworICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgIiAgICByZXR1cm4gZ2V0RWxlbWVudFN0cmluZ0F0dHJGcm9tQXJncyhhcmdz
LCAke25hbWVzcGFjZX06OiR7Y29udGVudEF0dHJpYnV0ZU5hbWV9QXR0cik7XG4iKTsKKyAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICJ9XG5cbiIpOworICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnREZWNscywgIiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuXG4i
KSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAjIFNraXAgdGhlIHJlc3Qgb2YgdGhlIGZ1bmN0aW9uIQorICAgICAgICB9CisgICAgICAgIHB1
c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKKyAgICAke2ltcGxDbGFzc05hbWV9KiBpbXAg
PSBWOCR7aW1wbENsYXNzTmFtZX06OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworRU5ECisgICAg
fQorCisgICAgIyBHZW5lcmF0ZSBzZWN1cml0eSBjaGVja3MgaWYgbmVjZXNzYXJ5CisgICAgaWYg
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrTm9kZVNl
Y3VyaXR5In0pIHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBpZiAoIVY4
QmluZGluZ1NlY3VyaXR5OjpjaGVja05vZGVTZWN1cml0eShWOEJpbmRpbmdTdGF0ZTo6T25seSgp
LCBpbXAtPiRhdHRyTmFtZSgpKSlcbiAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7
XG5cbiIpOworICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkNoZWNrRnJhbWVTZWN1cml0eSJ9KSB7CisgICAgICAgIHB1c2goQGltcGxDb250
ZW50RGVjbHMsICIgICAgaWYgKCFWOEJpbmRpbmdTZWN1cml0eTo6Y2hlY2tOb2RlU2VjdXJpdHko
VjhCaW5kaW5nU3RhdGU6Ok9ubHkoKSwgaW1wLT5jb250ZW50RG9jdW1lbnQoKSkpXG4gICAgcmV0
dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpO1xuXG4iKTsKKyAgICB9CisKKyAgICBteSAkdXNl
RXhjZXB0aW9ucyA9IDEgaWYgQHskYXR0cmlidXRlLT5nZXR0ZXJFeGNlcHRpb25zfTsKKyAgICBp
ZiAoJHVzZUV4Y2VwdGlvbnMpIHsKKyAgICAgICAgJGltcGxJbmNsdWRlc3siRXhjZXB0aW9uQ29k
ZS5oIn0gPSAxOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwO1xuIik7CisgICAgfQorCisgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57InY4cmVmZXJlbmNlYXR0ciJ9KSB7CisgICAgICAgICRh
dHRyTmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57InY4
cmVmZXJlbmNlYXR0ciJ9OworICAgIH0KKworICAgIG15ICRyZXR1cm5UeXBlID0gR2V0VHlwZUZy
b21TaWduYXR1cmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKKworICAgIG15ICRnZXR0ZXJTdHJp
bmc7CisgICAgaWYgKCRnZXR0ZXJTdHJpbmdVc2VzSW1wKSB7CisgICAgICAgICRnZXR0ZXJTdHJp
bmcgPSAiaW1wLT4iIC4gJGNvZGVHZW5lcmF0b3ItPkdldHRlckV4cHJlc3Npb25QcmVmaXgoXCVp
bXBsSW5jbHVkZXMsICRpbnRlcmZhY2VOYW1lLCAkYXR0cmlidXRlKTsKKyAgICAgICAgJGdldHRl
clN0cmluZyAuPSAiZWMiIGlmICR1c2VFeGNlcHRpb25zOworICAgICAgICAkZ2V0dGVyU3RyaW5n
IC49ICIpIjsKKyAgICB9IGVsc2UgeworICAgICAgICAkZ2V0dGVyU3RyaW5nID0gImltcEluc3Rh
bmNlIjsKKyAgICB9CisKKyAgICBteSAkcmVzdWx0OworICAgIG15ICR3cmFwcGVyOworCisgICAg
ICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgZXEgIkV2ZW50TGlzdGVuZXIiICYm
ICRkYXRhTm9kZS0+bmFtZSBlcSAiRE9NV2luZG93IikgeworICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudERlY2xzLCAiICAgIGlmICghaW1wLT5kb2N1bWVudCgpKVxuIik7CisgICAgICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsICIgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4o
KTtcbiIpOworICAgIH0KKworICAgIGlmICgkdXNlRXhjZXB0aW9ucykgeworICAgICAgICBpZiAo
JG5hdGl2ZVR5cGUgPX4gL15WOFBhcmFtZXRlci8pIHsKKyAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudERlY2xzLCAiICAgICIgLiBDb252ZXJ0VG9WOFBhcmFtZXRlcigkYXR0cmlidXRlLT5zaWdu
YXR1cmUsICRuYXRpdmVUeXBlLCAidiIsICRnZXR0ZXJTdHJpbmcpIC4gIjtcbiIpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgJG5hdGl2
ZVR5cGUgdiA9ICRnZXR0ZXJTdHJpbmc7XG4iKTsKKyAgICAgICAgfQorICAgICAgICBwdXNoKEBp
bXBsQ29udGVudERlY2xzLCBHZW5lcmF0ZVNldERPTUV4Y2VwdGlvbigiICAgICIpKTsKKyAgICAg
ICAgJHJlc3VsdCA9ICJ2IjsKKyAgICAgICAgJHJlc3VsdCAuPSAiLnJlbGVhc2UoKSIgaWYgKElz
UmVmUHRyVHlwZSgkcmV0dXJuVHlwZSkpOworICAgIH0gZWxzZSB7CisgICAgICAgICMgQ2FuIGlu
bGluZSB0aGUgZnVuY3Rpb24gY2FsbCBpbnRvIHRoZSByZXR1cm4gc3RhdGVtZW50IHRvIGF2b2lk
IG92ZXJoZWFkIG9mIHVzaW5nIGEgUmVmPD4gdGVtcG9yYXJ5CisgICAgICAgICRyZXN1bHQgPSAk
Z2V0dGVyU3RyaW5nOworICAgICAgICAjIEZpeCBhbWlnaW91cyBjb252ZXJzaW9uIHByb2JsZW0s
IGJ5IGNhc3RpbmcgdG8gdGhlIGJhc2UgdHlwZSBmaXJzdCAoJGdldHRlclN0cmluZyByZXR1cm5z
IGEgdHlwZSB0aGF0IGluaGVyaXRzIGZyb20gU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiwgbm90IHRo
ZSBiYXNlIGNsYXNzIGRpcmVjdGx5KS4KKyAgICAgICAgJHJlc3VsdCA9ICJzdGF0aWNfcG9pbnRl
cl9jYXN0PFNWR0FuaW1hdGVkRW51bWVyYXRpb24+KCRyZXN1bHQpIiBpZiAkcmV0dXJuVHlwZSBl
cSAiU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiI7CisgICAgfQorIAorICAgICMgU3BlY2lhbCBjYXNl
IGZvciByZWFkb25seSBvciBSZXBsYWNlYWJsZSBhdHRyaWJ1dGVzICh3aXRoIGEgZmV3IGV4Y2Vw
dGlvbnMpLiBUaGlzIGF0dGVtcHRzIHRvIGVuc3VyZSB0aGF0IEpTIHdyYXBwZXJzIGRvbid0IGdl
dAorICAgICMgZ2FyYmFnZS1jb2xsZWN0ZWQgcHJlbWF0dXJlbHkgd2hlbiB0aGVpciBsaWZldGlt
ZSBpcyBzdHJvbmdseSB0aWVkIHRvIHRoZWlyIG93bmVyLiBXZSBhY2NvbXBsaXNoIHRoaXMgYnkg
aW5zZXJ0aW5nIGEgcmVmZXJlbmNlIHRvCisgICAgIyB0aGUgbmV3bHkgY3JlYXRlZCB3cmFwcGVy
IGludG8gYW4gaW50ZXJuYWwgZmllbGQgb2YgdGhlIGhvbGRlciBvYmplY3QuCisgICAgaWYgKCFJ
c05vZGVTdWJUeXBlKCRkYXRhTm9kZSkgJiYgJGF0dHJOYW1lIG5lICJzZWxmIiAmJiAoSXNXcmFw
cGVyVHlwZSgkcmV0dXJuVHlwZSkgJiYgKCRhdHRyaWJ1dGUtPnR5cGUgPX4gL15yZWFkb25seS8g
fHwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVwbGFjZWFi
bGUifSkKKyAgICAgICAgJiYgJHJldHVyblR5cGUgbmUgIkV2ZW50VGFyZ2V0IiAmJiAkcmV0dXJu
VHlwZSBuZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIiAmJiAkcmV0dXJuVHlwZSBuZSAiRE9NV2lu
ZG93IiAKKyAgICAgICAgJiYgJHJldHVyblR5cGUgIX4gL1NWRy8gJiYgJHJldHVyblR5cGUgIX4g
L0hUTUwvICYmICFJc0RPTU5vZGVUeXBlKCRyZXR1cm5UeXBlKSkpIHsKKyAgICAgICAgQWRkSW5j
bHVkZXNGb3JUeXBlKCRyZXR1cm5UeXBlKTsKKyAgICAgICAgbXkgJGRvbU1hcEZ1bmN0aW9uID0g
R2V0RG9tTWFwRnVuY3Rpb24oMCwgJHJldHVyblR5cGUpOworICAgICAgICAjIENoZWNrIGZvciBh
IHdyYXBwZXIgaW4gdGhlIHdyYXBwZXIgY2FjaGUuIElmIHRoZXJlIGlzIG9uZSwgd2Uga25vdyB0
aGF0IGEgaGlkZGVuIHJlZmVyZW5jZSBoYXMgYWxyZWFkeQorICAgICAgICAjIGJlZW4gY3JlYXRl
ZC4gSWYgd2UgZG9uJ3QgZmluZCBhIHdyYXBwZXIsIHdlIGNyZWF0ZSBib3RoIGEgd3JhcHBlciBh
bmQgYSBoaWRkZW4gcmVmZXJlbmNlLgorICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAi
ICAgIFJlZlB0cjwkcmV0dXJuVHlwZT4gcmVzdWx0ID0gJHtnZXR0ZXJTdHJpbmd9O1xuIik7Cisg
ICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHdyYXBwZXIgPSByZXN1bHQuZ2V0KCkgPyAke2RvbU1hcEZ1bmN0aW9ufS5nZXQocmVzdWx0Lmdl
dCgpKSA6IHY4OjpIYW5kbGU8djg6OlZhbHVlPigpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxD
b250ZW50RGVjbHMsICIgICAgaWYgKHdyYXBwZXIuSXNFbXB0eSgpKSB7XG4iKTsKKyAgICAgICAg
cHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAgICAgd3JhcHBlciA9IHRvVjgocmVzdWx0Lmdl
dCgpKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICAgICBpZiAo
IXdyYXBwZXIuSXNFbXB0eSgpKVxuIik7CisgICAgICAgIGlmICgkZGF0YU5vZGUtPm5hbWUgZXEg
IkRPTVdpbmRvdyIpIHsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAg
ICAgICAgICBWOERPTVdyYXBwZXI6OnNldEhpZGRlbldpbmRvd1JlZmVyZW5jZShpbXAtPmZyYW1l
KCksIHdyYXBwZXIpO1xuIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudERlY2xzLCAiICAgICAgICAgICAgVjhET01XcmFwcGVyOjpzZXRIaWRkZW5SZWZl
cmVuY2UoYXJncy5Ib2xkZXIoKSwgd3JhcHBlcik7XG4iKTsKKyAgICAgICAgfQorICAgICAgICBw
dXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIH1cbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudERlY2xzLCAiICAgIHJldHVybiB3cmFwcGVyO1xuIik7CisgICAgICAgIHB1c2goQGltcGxD
b250ZW50RGVjbHMsICJ9XG5cbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAi
I2VuZGlmIC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25hbFN0cmlu
ZzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNT
VkdBbmltYXRlZFR5cGUoJGltcGxDbGFzc05hbWUpIGFuZCAkY29kZUdlbmVyYXRvci0+SXNTVkdU
eXBlTmVlZGluZ1RlYXJPZmYoJGF0dHJUeXBlKSkgeworICAgICAgICAkaW1wbEluY2x1ZGVzeyJW
OCRhdHRyVHlwZS5oIn0gPSAxOworICAgICAgICBteSAkc3ZnTmF0aXZlVHlwZSA9ICRjb2RlR2Vu
ZXJhdG9yLT5HZXRTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJGF0dHJUeXBlKTsKKyAgICAgICAgIyBD
b252ZXJ0IGZyb20gYWJzdHJhY3QgU1ZHUHJvcGVydHkgdG8gcmVhbCB0eXBlLCBzbyB0aGUgcmln
aHQgdG9KUygpIG1ldGhvZCBjYW4gYmUgaW52b2tlZC4KKyAgICAgICAgcHVzaChAaW1wbENvbnRl
bnREZWNscywgIiAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDwkc3ZnTmF0aXZlVHlwZSo+KCRy
ZXN1bHQpKTtcbiIpOworICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1NWR1R5cGVOZWVk
aW5nVGVhck9mZigkYXR0clR5cGUpIGFuZCBub3QgJGltcGxDbGFzc05hbWUgPX4gL0xpc3QkLykg
eworICAgICAgICAkaW1wbEluY2x1ZGVzeyJWOCRhdHRyVHlwZS5oIn0gPSAxOworICAgICAgICAk
aW1wbEluY2x1ZGVzeyJTVkdQcm9wZXJ0eVRlYXJPZmYuaCJ9ID0gMTsKKyAgICAgICAgbXkgJHRl
YXJPZmZUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldFNWR1R5cGVOZWVkaW5nVGVhck9mZigkYXR0
clR5cGUpOworICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU1ZHVHlwZVdpdGhXcml0YWJs
ZVByb3BlcnRpZXNOZWVkaW5nVGVhck9mZigkYXR0clR5cGUpIGFuZCBub3QgZGVmaW5lZCAkYXR0
cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbW11dGFibGUifSkgewor
ICAgICAgICAgICAgbXkgJGdldHRlciA9ICRyZXN1bHQ7CisgICAgICAgICAgICAkZ2V0dGVyID1+
IHMvaW1wLT4vLzsKKyAgICAgICAgICAgICRnZXR0ZXIgPX4gcy9cKFwpLy87CisKKyAgICAgICAg
ICAgIG15ICR1cGRhdGVNZXRob2QgPSAiJiR7aW1wbENsYXNzTmFtZX06OnVwZGF0ZSIgLiAkY29k
ZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZ2V0dGVyKTsKKworICAgICAgICAgICAgbXkgJHNlbGZJ
c1RlYXJPZmZUeXBlID0gJGNvZGVHZW5lcmF0b3ItPklzU1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCRp
bXBsQ2xhc3NOYW1lKTsKKyAgICAgICAgICAgIGlmICgkc2VsZklzVGVhck9mZlR5cGUpIHsKKyAg
ICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJTVkdTdGF0aWNQcm9wZXJ0eVdpdGhQYXJlbnRU
ZWFyT2ZmLmgifSA9IDE7CisgICAgICAgICAgICAgICAgJHRlYXJPZmZUeXBlID1+IHMvU1ZHUHJv
cGVydHlUZWFyT2ZmPC9TVkdTdGF0aWNQcm9wZXJ0eVdpdGhQYXJlbnRUZWFyT2ZmPCRpbXBsQ2xh
c3NOYW1lLCAvOworCisgICAgICAgICAgICAgICAgaWYgKCRyZXN1bHQgPX4gL21hdHJpeC8gYW5k
ICRpbXBsQ2xhc3NOYW1lIGVxICJTVkdUcmFuc2Zvcm0iKSB7CisgICAgICAgICAgICAgICAgICAg
ICMgU1ZHVHJhbnNmb3JtIG9mZmVycyBhIG1hdHJpeCgpIG1ldGhvZCBmb3IgaW50ZXJuYWwgdXNh
Z2UgdGhhdCByZXR1cm5zIGFuIEFmZmluZVRyYW5zZm9ybQorICAgICAgICAgICAgICAgICAgICAj
IGFuZCBhIHN2Z01hdHJpeCgpIG1ldGhvZCByZXR1cm5pbmcgYSBTVkdNYXRyaXgsIHVzZWQgZm9y
IHRoZSBiaW5kaW5ncy4KKyAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9fiBzL21hdHJpeC9z
dmdNYXRyaXgvOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50RGVjbHMsICIgICAgcmV0dXJuIHRvVjgoV1RGOjpnZXRQdHIoJHt0ZWFyT2ZmVHlw
ZX06OmNyZWF0ZSh3cmFwcGVyLCAkcmVzdWx0LCAkdXBkYXRlTWV0aG9kKSkpO1xuIik7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IlNWR1N0YXRp
Y1Byb3BlcnR5VGVhck9mZi5oIn0gPSAxOworICAgICAgICAgICAgICAgICR0ZWFyT2ZmVHlwZSA9
fiBzL1NWR1Byb3BlcnR5VGVhck9mZjwvU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmPCRpbXBsQ2xh
c3NOYW1lLCAvOworCisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAg
ICByZXR1cm4gdG9WOChXVEY6OmdldFB0cigke3RlYXJPZmZUeXBlfTo6Y3JlYXRlKGltcCwgJHJl
c3VsdCwgJHVwZGF0ZU1ldGhvZCkpKTtcbiIpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVs
c2lmICgkdGVhck9mZlR5cGUgPX4gL1NWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYvKSB7Cisg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIHJldHVybiB0b1Y4KFdURjo6
Z2V0UHRyKCR7dGVhck9mZlR5cGV9OjpjcmVhdGUoaW1wLCAkcmVzdWx0KSkpO1xuIik7CisgICAg
ICAgIH0gZWxzaWYgKCR0ZWFyT2ZmVHlwZSA9fiAvU1ZHKFBvaW50fFBhdGhTZWcpTGlzdC8pIHsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgcmV0dXJuIHRvVjgoV1RG
OjpnZXRQdHIoJHJlc3VsdCkpO1xuIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIHJldHVybiB0b1Y4KFdURjo6Z2V0UHRyKCR7dGVh
ck9mZlR5cGV9OjpjcmVhdGUoJHJlc3VsdCkpKTtcbiIpOworICAgICAgICB9CisgICAgfSBlbHNl
IHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAiIC4gUmV0dXJuTmF0aXZl
VG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgJHJlc3VsdCwgIiAgICAiKS4iO1xuIik7
CisgICAgfQorCisgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIn1cblxuIik7ICAjIGVuZCBv
ZiBnZXR0ZXIKKyAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiI2VuZGlmIC8vICR7Y29uZGl0
aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKK30KKwogc3ViIEdlbmVy
YXRlTm9ybWFsQXR0ckdldHRlcgogewogICAgIG15ICRhdHRyaWJ1dGUgPSBzaGlmdDsKQEAgLTkx
Niw2ICsxMTIxLDE2NSBAQCBFTkQKICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiI2VuZGlm
IC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKIH0K
IAorc3ViIEdlbmVyYXRlTm9ybWFsQXR0clNldHRlckNhbGxiYWNrCit7CisgICAgbXkgJGF0dHJp
YnV0ZSA9IHNoaWZ0OworICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OworICAgIG15ICRpbXBsQ2xh
c3NOYW1lID0gc2hpZnQ7CisgICAgbXkgJGludGVyZmFjZU5hbWUgPSBzaGlmdDsKKworICAgICRp
bXBsSW5jbHVkZXN7IlY4QmluZGluZ01hY3Jvcy5oIn0gPSAxOworCisgICAgbXkgJGF0dHJFeHQg
PSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlczsKKworICAgIG15ICRj
b25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiI2lmICR7Y29uZGl0aW9u
YWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKKworICAgIHB1c2goQGltcGxD
b250ZW50RGVjbHMsICJzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICR7YXR0ck5hbWV9QXR0
clNldHRlckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpXG57XG4iKTsKKyAgICBw
dXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIElOQ19TVEFUUyhcIkRPTS4kaW1wbENsYXNzTmFt
ZS4kYXR0ck5hbWUuX3NldFwiKTtcbiIpOworCisgICAgIyBJZiB0aGUgIlN0cmljdFR5cGVDaGVj
a2luZyIgZXh0ZW5kZWQgYXR0cmlidXRlIGlzIHByZXNlbnQsIGFuZCB0aGUgYXR0cmlidXRlJ3Mg
dHlwZSBpcyBhbgorICAgICMgaW50ZXJmYWNlIHR5cGUsIHRoZW4gaWYgdGhlIGluY29taW5nIHZh
bHVlIGRvZXMgbm90IGltcGxlbWVudCB0aGF0IGludGVyZmFjZSwgYSBUeXBlRXJyb3IgaXMKKyAg
ICAjIHRocm93biByYXRoZXIgdGhhbiBzaWxlbnRseSBwYXNzaW5nIE5VTEwgdG8gdGhlIEMrKyBj
b2RlLgorICAgICMgUGVyIHRoZSBXZWIgSURMIGFuZCBFQ01BU2NyaXB0IHNwZWNpZmljYXRpb25z
LCBpbmNvbWluZyB2YWx1ZXMgY2FuIGFsd2F5cyBiZSBjb252ZXJ0ZWQgdG8gYm90aAorICAgICMg
c3RyaW5ncyBhbmQgbnVtYmVycywgc28gZG8gbm90IHRocm93IFR5cGVFcnJvciBpZiB0aGUgYXR0
cmlidXRlIGlzIG9mIHRoZXNlIHR5cGVzLgorICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJTdHJpY3RUeXBlQ2hlY2tpbmcifSkgeworICAgICAgICBt
eSAkYXJnVHlwZSA9IEdldFR5cGVGcm9tU2lnbmF0dXJlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSk7
CisgICAgICAgIGlmIChJc1dyYXBwZXJUeXBlKCRhcmdUeXBlKSkgeworICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnREZWNscywgIiAgICBpZiAoIWlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMF0p
ICYmICFWOCR7YXJnVHlwZX06Okhhc0luc3RhbmNlKGFyZ3NbMF0pKSB7XG4iKTsKKyAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAgIFY4UHJveHk6OnRocm93VHlwZUVy
cm9yKCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAg
IHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTtcbiIpOworICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnREZWNscywgIiAgICB9XG4iKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG15
ICRzdmdOYXRpdmVUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldFNWR1R5cGVOZWVkaW5nVGVhck9m
ZigkaW1wbENsYXNzTmFtZSk7CisgICAgaWYgKCRzdmdOYXRpdmVUeXBlKSB7CisgICAgICAgIG15
ICRzdmdXcmFwcGVkTmF0aXZlVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRTVkdXcmFwcGVkVHlw
ZU5lZWRpbmdUZWFyT2ZmKCRpbXBsQ2xhc3NOYW1lKTsKKyAgICAgICAgaWYgKCRzdmdXcmFwcGVk
TmF0aXZlVHlwZSA9fiAvTGlzdCQvKSB7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERl
Y2xzLCA8PEVORCk7CisgICAgJHN2Z05hdGl2ZVR5cGUqIGltcCA9IFY4JHtpbXBsQ2xhc3NOYW1l
fTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CitFTkQKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgJHN2Z05hdGl2ZVR5cGUqIHdyYXBw
ZXIgPSBWOCR7aW1wbENsYXNzTmFtZX06OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpO1xuIik7Cisg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGlmICh3cmFwcGVyLT5yb2xl
KCkgPT0gQW5pbVZhbFJvbGUpIHtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRE
ZWNscywgIiAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKE5PX01PRElGSUNBVElPTl9B
TExPV0VEX0VSUik7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIg
ICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTtcbiIpOworICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICB9XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50RGVjbHMsICIgICAgJHN2Z1dyYXBwZWROYXRpdmVUeXBlJiBpbXBJbnN0YW5jZSA9
IHdyYXBwZXItPnByb3BlcnR5UmVmZXJlbmNlKCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50RGVjbHMsICIgICAgJHN2Z1dyYXBwZWROYXRpdmVUeXBlKiBpbXAgPSAmaW1wSW5z
dGFuY2U7XG4iKTsKKyAgICAgICAgfQorICAgIH0gZWxzaWYgKCRhdHRyRXh0LT57InY4T25Qcm90
byJ9KSB7CisgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKKyAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOworICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gaG9sZGVyID0gYXJncy5Ib2xkZXIoKTsKK0VORAorICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgIyBwZXJmb3JtIGxvb2t1cCBmaXJzdAorICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xz
LCA8PEVORCk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBWOERPTVdyYXBw
ZXI6Omxvb2t1cERPTVdyYXBwZXIoVjgke2ludGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZSgpLCBh
cmdzLlRoaXMoKSk7CisgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKK0VORAorICAgICAgfQorICAgIHB1c2goQGltcGxDb250
ZW50RGVjbHMsIDw8RU5EKTsKKyAgICAke2ltcGxDbGFzc05hbWV9KiBpbXAgPSBWOCR7aW1wbENs
YXNzTmFtZX06OnRvTmF0aXZlKGhvbGRlcik7CitFTkQKKyAgICB9IGVsc2UgeworICAgICAgICBt
eSAkYXR0clR5cGUgPSBHZXRUeXBlRnJvbVNpZ25hdHVyZSgkYXR0cmlidXRlLT5zaWduYXR1cmUp
OworICAgICAgICBteSAkcmVmbGVjdCA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IlJlZmxlY3QifTsKKyAgICAgICAgaWYgKCRyZWZsZWN0ICYmIElzTm9kZVN1
YlR5cGUoJGRhdGFOb2RlKSAmJiAkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCRhdHRyVHlw
ZSkpIHsKKyAgICAgICAgICAgICMgR2VuZXJhdGUgc3VwZXItY29tcGFjdCBjYWxsIGZvciByZWd1
bGFyIGF0dHJpYnV0ZSBzZXR0ZXI6CisgICAgICAgICAgICBteSAkY29udGVudEF0dHJpYnV0ZU5h
bWUgPSAkcmVmbGVjdCBlcSAiMSIgPyBsYyAkYXR0ck5hbWUgOiAkcmVmbGVjdDsKKyAgICAgICAg
ICAgIG15ICRuYW1lc3BhY2UgPSAkY29kZUdlbmVyYXRvci0+TmFtZXNwYWNlRm9yQXR0cmlidXRl
TmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNvbnRlbnRBdHRyaWJ1dGVOYW1lKTsKKyAgICAgICAgICAg
ICRpbXBsSW5jbHVkZXN7IiR7bmFtZXNwYWNlfS5oIn0gPSAxOworICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnREZWNscywgIiAgICBzZXRFbGVtZW50U3RyaW5nQXR0ckZyb21BcmdzKGFyZ3Ms
ICR7bmFtZXNwYWNlfTo6JHtjb250ZW50QXR0cmlidXRlTmFtZX1BdHRyLCBhcmdzWzBdKTtcbiIp
OworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgInJldHVybiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4oKTtcbn1cblxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERl
Y2xzLCAiI2VuZGlmIC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25h
bFN0cmluZzsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICMgU2tpcCB0aGUgcmVz
dCBvZiB0aGUgZnVuY3Rpb24hCisgICAgICAgIH0KKworICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dERlY2xzLCA8PEVORCk7CisgICAgJHtpbXBsQ2xhc3NOYW1lfSogaW1wID0gVjgke2ltcGxDbGFz
c05hbWV9Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKK0VORAorICAgIH0KKworICAgIG15ICRu
YXRpdmVUeXBlID0gR2V0TmF0aXZlVHlwZUZyb21TaWduYXR1cmUoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLCAwKTsKKyAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlIGVxICJFdmVudExp
c3RlbmVyIikgeworICAgICAgICBpZiAoJGRhdGFOb2RlLT5uYW1lIGVxICJET01XaW5kb3ciKSB7
CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGlmICghaW1wLT5kb2N1
bWVudCgpKVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICAg
ICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7XG4iKTsKKyAgICAgICAgfQorICAgIH0g
ZWxzZSB7CisgICAgICAgIG15ICR2YWx1ZSA9IEpTVmFsdWVUb05hdGl2ZSgkYXR0cmlidXRlLT5z
aWduYXR1cmUsICJhcmdzWzBdIik7CisgICAgICAgIGlmICgkbmF0aXZlVHlwZSA9fiAvXlY4UGFy
YW1ldGVyLykgeworICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgIiAuIENv
bnZlcnRUb1Y4UGFyYW1ldGVyKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgJG5hdGl2ZVR5cGUsICJ2
IiwgJHZhbHVlKSAuICJcbiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50RGVjbHMsICIgICAgJG5hdGl2ZVR5cGUgdiA9ICR2YWx1ZTtcbiIpOworICAgICAg
ICB9CisgICAgfQorCisgICAgbXkgJHJlc3VsdCA9ICJ2IjsKKyAgICBteSAkcmV0dXJuVHlwZSA9
IEdldFR5cGVGcm9tU2lnbmF0dXJlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSk7CisgICAgaWYgKElz
UmVmUHRyVHlwZSgkcmV0dXJuVHlwZSkpIHsKKyAgICAgICAgJHJlc3VsdCA9ICJXVEY6OmdldFB0
cigiIC4gJHJlc3VsdCAuICIpIjsKKyAgICB9CisKKyAgICBteSAkdXNlRXhjZXB0aW9ucyA9IDEg
aWYgQHskYXR0cmlidXRlLT5zZXR0ZXJFeGNlcHRpb25zfTsKKworICAgIGlmICgkdXNlRXhjZXB0
aW9ucykgeworICAgICAgICAkaW1wbEluY2x1ZGVzeyJFeGNlcHRpb25Db2RlLmgifSA9IDE7Cisg
ICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
XG4iKTsKKyAgICB9CisKKyAgICBpZiAoJGltcGxDbGFzc05hbWUgZXEgIlNWR051bWJlciIpIHsK
KyAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAqaW1wID0gJHJlc3VsdDtcbiIp
OworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUg
ZXEgIkV2ZW50TGlzdGVuZXIiKSB7CisgICAgICAgICAgICBteSAkaW1wbFNldHRlckZ1bmN0aW9u
TmFtZSA9ICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyTmFtZSk7CisgICAgICAgICAg
ICAkaW1wbEluY2x1ZGVzeyJWOEFic3RyYWN0RXZlbnRMaXN0ZW5lci5oIn0gPSAxOworICAgICAg
ICAgICAgaWYgKCFJc05vZGVTdWJUeXBlKCRkYXRhTm9kZSkpIHsKKyAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIHRyYW5zZmVySGlkZGVuRGVwZW5kZW5jeShhcmdz
LkhvbGRlcigpLCBpbXAtPiRhdHRyTmFtZSgpLCBhcmdzWzBdLCBWOCR7aW50ZXJmYWNlTmFtZX06
OmV2ZW50TGlzdGVuZXJDYWNoZUluZGV4KTtcbiIpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJXb3JrZXJDb250ZXh0IiBhbmQgJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5uYW1lIGVxICJvbmVycm9yIikgeworICAgICAgICAgICAgICAgICRpbXBsSW5j
bHVkZXN7IlY4RXZlbnRMaXN0ZW5lckxpc3QuaCJ9ID0gMTsKKyAgICAgICAgICAgICAgICAkaW1w
bEluY2x1ZGVzeyJWOFdvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuaCJ9ID0gMTsKKyAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGltcC0+c2V0JGltcGxTZXR0ZXJG
dW5jdGlvbk5hbWUoVjhFdmVudExpc3RlbmVyTGlzdDo6ZmluZE9yQ3JlYXRlV3JhcHBlcjxWOFdv
cmtlckNvbnRleHRFcnJvckhhbmRsZXI+KGFyZ3NbMF0sIHRydWUpIik7CisgICAgICAgICAgICB9
IGVsc2lmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IiBhbmQgJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5uYW1lIGVxICJvbmVycm9yIikgeworICAgICAgICAgICAgICAgICRpbXBsSW5jbHVk
ZXN7IlY4RXZlbnRMaXN0ZW5lckxpc3QuaCJ9ID0gMTsKKyAgICAgICAgICAgICAgICAkaW1wbElu
Y2x1ZGVzeyJWOFdpbmRvd0Vycm9ySGFuZGxlci5oIn0gPSAxOworICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaW1wLT5zZXQkaW1wbFNldHRlckZ1bmN0aW9uTmFt
ZShWOEV2ZW50TGlzdGVuZXJMaXN0OjpmaW5kT3JDcmVhdGVXcmFwcGVyPFY4V2luZG93RXJyb3JI
YW5kbGVyPihhcmdzWzBdLCB0cnVlKSIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGltcC0+c2V0JGltcGxTZXR0ZXJG
dW5jdGlvbk5hbWUoVjhET01XcmFwcGVyOjpnZXRFdmVudExpc3RlbmVyKGFyZ3NbMF0sIHRydWUs
IExpc3RlbmVyRmluZE9yQ3JlYXRlKSIpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgbXkgJHNldHRlckV4cHJlc3Npb25QcmVmaXggPSAkY29kZUdlbmVyYXRv
ci0+U2V0dGVyRXhwcmVzc2lvblByZWZpeChcJWltcGxJbmNsdWRlcywgJGludGVyZmFjZU5hbWUs
ICRhdHRyaWJ1dGUpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBp
bXAtPiRzZXR0ZXJFeHByZXNzaW9uUHJlZml4JHJlc3VsdCIpOworICAgICAgICB9CisgICAgICAg
IHB1c2goQGltcGxDb250ZW50RGVjbHMsICIsIGVjIikgaWYgJHVzZUV4Y2VwdGlvbnM7CisgICAg
ICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIpO1xuIik7CisgICAgfQorCisgICAgaWYgKCR1
c2VFeGNlcHRpb25zKSB7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaWYg
KFVOTElLRUxZKGVjKSlcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAg
ICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMpO1xuIik7CisgICAgfQorCisgICAgaWYg
KCRzdmdOYXRpdmVUeXBlKSB7CisgICAgICAgIGlmICgkdXNlRXhjZXB0aW9ucykgeworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBpZiAoIWVjKVxuIik7CisgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICAgICB3cmFwcGVyLT5jb21taXRDaGFu
Z2UoKTtcbiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnREZWNscywgIiAgICB3cmFwcGVyLT5jb21taXRDaGFuZ2UoKTtcbiIpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICByZXR1cm4gdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+KCk7XG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAifVxuXG4i
KTsgICMgZW5kIG9mIHNldHRlcgorICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIjZW5kaWYg
Ly8gJHtjb25kaXRpb25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOworfQor
CiBzdWIgR2VuZXJhdGVOb3JtYWxBdHRyU2V0dGVyCiB7CiAgICAgbXkgJGF0dHJpYnV0ZSA9IHNo
aWZ0OwpAQCAtMTA3NSw2ICsxNDM5LDY2IEBAIEVORAogICAgIHB1c2goQGltcGxDb250ZW50RGVj
bHMsICIjZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRpdGlvbmFs
U3RyaW5nOwogfQogCitzdWIgR2VuZXJhdGVEZWZpbmVQcm9wZXJ0eVNjcmlwdAoreworICAgIG15
ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7CisgICAgbXkgJGNsYXNzTmFtZSA9IHNoaWZ0OworICAg
IG15ICRwYXJlbnRDbGFzc1RlbXBsYXRlID0gc2hpZnQ7CisgICAgcHVzaChAaW1wbENvbnRlbnQs
ICA8PEVORCk7CisgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBteWNvbnRleHQgPSBWOFByb3h5
OjpjdXJyZW50Q29udGV4dCgpOworICAgIG15Y29udGV4dC0+RW50ZXIoKTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpTdHJpbmc+IHNvdXJjZSA9IHY4OjpTdHJpbmc6Ok5ldygiIgorRU5ECisgICAgZm9y
ZWFjaCBteSAkbmFtZSAoQGFjY2Vzc29yRnVuY3Rpb25OYW1lcykgeworICAgICAgICBteSAkaGFz
R2V0dGVyID0gJGdldHRlckZ1bmN0aW9uRXhpc3RIYXNoeyRuYW1lfTsKKyAgICAgICAgbXkgJGhh
c1NldHRlciA9ICRzZXR0ZXJGdW5jdGlvbkV4aXN0SGFzaHskbmFtZX07CisgICAgICAgIGlmKCRo
YXNHZXR0ZXIgJiYgJGhhc1NldHRlcikgeworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICA8PEVORCk7CisgICAgICAgICJPYmplY3QuZGVmaW5lUHJvcGVydHkoIgorICAgICAgICAgICAg
IiR7aW50ZXJmYWNlTmFtZX0ucHJvdG90eXBlLCIKKyAgICAgICAgICAgICInJHtuYW1lfScsIgor
ICAgICAgICAgICAgIntnZXQ6ICR7aW50ZXJmYWNlTmFtZX0ucHJvdG90eXBlLiR7bmFtZX1HZXR0
ZXJDYWxsYmFjaywiCisgICAgICAgICAgICAiIHNldDogJHtpbnRlcmZhY2VOYW1lfS5wcm90b3R5
cGUuJHtuYW1lfVNldHRlckNhbGxiYWNrfSk7IgorRU5ECisgICAgICAgIH0KKyAgICAgICAgZWxz
aWYgKCRoYXNHZXR0ZXIpIHsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAgPDxFTkQp
OworICAgICAgICAiT2JqZWN0LmRlZmluZVByb3BlcnR5KCIKKyAgICAgICAgICAgICIke2ludGVy
ZmFjZU5hbWV9LnByb3RvdHlwZSwiCisgICAgICAgICAgICAiJyR7bmFtZX0nLCIKKyAgICAgICAg
ICAgICJ7Z2V0OiAke2ludGVyZmFjZU5hbWV9LnByb3RvdHlwZS4ke25hbWV9R2V0dGVyQ2FsbGJh
Y2t9KTsiCitFTkQKKyAgICAgICAgfQorICAgICAgICBlbHNpZiAoJGhhc1NldHRlcikgeworICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICA8PEVORCk7CisgICAgICAgICJPYmplY3QuZGVm
aW5lUHJvcGVydHkoIgorICAgICAgICAgICAgIiR7aW50ZXJmYWNlTmFtZX0ucHJvdG90eXBlLCIK
KyAgICAgICAgICAgICInJHtuYW1lfScsIgorICAgICAgICAgICAgIntzZXQ6ICR7aW50ZXJmYWNl
TmFtZX0ucHJvdG90eXBlLiR7bmFtZX1TZXR0ZXJDYWxsYmFja30pOyIKK0VORAorICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgcHVzaChAaW1wbENvbnRlbnQsICA8PEVORCk7CisgICAgKTsg
Ly8gZW5kIG9mIEphdmFzY3JpcHQgQ29kZQorICAgIHY4OjpIYW5kbGU8djg6OlNjcmlwdD4gc2Ny
aXB0ID0gdjg6OlNjcmlwdDo6Q29tcGlsZShzb3VyY2UpOworICAgIHY4OjpUcnlDYXRjaCB0cnlj
YXRjaDsKKyAgICAvLyBNdXN0IGFkZCB0aGUgaW5mbyB0byB0aGUgaW5pdGlhbGl6ZWQtSGFzaFNl
dCBiZWZvcmUgUnVubmluZyB0aGUgc2NyaXB0IGJlY2F1c2UKKyAgICAvLyBydW5uaW5nIGl0IHdp
bGwgY2F1c2UgdGhlIHByb2dyYW0gdG8gY2FsbCBHZXRUZW1wbGF0ZSBpLmUuIHRoaXMgZnVuY3Rp
b24KKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzZWMgPSBnZXRTY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7CisgICAgc2VjLT5tX2luaXRpYWxpemVkUHJvdG90eXBlcy5hZGQoJldlYkNvcmU6
OiR7Y2xhc3NOYW1lfTo6aW5mbyk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlcyA9IHNj
cmlwdC0+UnVuKCk7CisgICAgaWYocmVzLklzRW1wdHkoKSkgeworICAgICAgICAvLyBOT1RFOiBk
byBzb21ldGhpbmcgd2hlbiBpdCBmYWlscy4KKyAgICAgICAgdHJ5Y2F0Y2guRXhjZXB0aW9uKCk7
CisgICAgICAgIHNlYy0+bV9pbml0aWFsaXplZFByb3RvdHlwZXMucmVtb3ZlKCZXZWJDb3JlOjok
e2NsYXNzTmFtZX06OmluZm8pOworICAgIH0KKyAgICBteWNvbnRleHQtPkV4aXQoKTsKKyAgICAv
LyBHbyB1cCB0aGUgcHJvdG90eXBlIGNoYWluIGp1c3QgbGlrZSBDb25maWd1cmUke2NsYXNzTmFt
ZX1UZW1wbGF0ZQorICAgICRwYXJlbnRDbGFzc1RlbXBsYXRlOworRU5ECisKK30KKwogc3ViIEdl
dEZ1bmN0aW9uVGVtcGxhdGVDYWxsYmFja05hbWUKIHsKICAgICAkZnVuY3Rpb24gPSBzaGlmdDsK
QEAgLTE1NjUsNyArMTk4OSwzNyBAQCBzdWIgR2VuZXJhdGVTaW5nbGVCYXRjaGVkQXR0cmlidXRl
CiAgICAgICAgICAgICAgICAgICAgICAgIicgRXh0QXR0cjogJyIgLiBqb2luKCcgJywga2V5cygl
eyRhdHRyRXh0fSkpIC4gIicpIjsKIAogICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4g
IiAgICBcL1wvICRjb21tZW50SW5mb1xuIik7Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRl
bnQgLiAiICAgIHtcIiRhdHRyTmFtZVwiLCAkZ2V0dGVyLCAkc2V0dGVyLCAkZGF0YSwgJGFjY2Vz
c0NvbnRyb2wsIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4oJHByb3BBdHRyKSwg
JG9uX3Byb3RvfSIgLiAkZGVsaW1pdGVyIC4gIlxuIik7CisKKyAgICAjIGhhbmQgd3JpdHRlbiBJ
c1N1YnR5cGUoKSBqdXN0IGZyb20gaW50ZXJmYWNlbmFtZQorICAgICMgTk9URTogSXQncyBjb252
ZW5pZW50IHRvIGhhdmUgJGRhdGFOb2RlIGluIHRoaXMgZnVuY3Rpb24KKyAgICBteSAkaXNfbm9k
ZXNfc3VidHlwZSA9IDA7CisgICAgbXkgJHBhcmVudFR5cGUgPSAiTm9kZSI7CisgICAgaWYgKCRp
bnRlcmZhY2VOYW1lIGVxICRwYXJlbnRUeXBlKSB7CisgICAgICAgICRpc19ub2Rlc19zdWJ0eXBl
ID0gMTsKKyAgICB9CisgICAgZm9yZWFjaCAoQGFsbFBhcmVudHMpIHsKKyAgICAgICAgbXkgJHBh
cmVudCA9ICRjb2RlR2VuZXJhdG9yLT5TdHJpcE1vZHVsZSgkXyk7CisgICAgICAgIGlmICgkcGFy
ZW50IGVxICRwYXJlbnRUeXBlIHx8ICRpc19ub2Rlc19zdWJ0eXBlKSB7CisgICAgICAgICAgICAk
aXNfbm9kZXNfc3VidHlwZSA9IDE7CisgICAgICAgICAgICBsYXN0OworICAgICAgICB9CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgJGlzX25vZGVzX3N1YnR5cGUgPSAwOworICAgICAgICB9
CisgICAgfQorCisgICAgIyBET01XaW5kb3cgaXMgc3BlY2lhbC4gCisgICAgIyBUT0RPOiBjaGVj
ayBpZiByZW1vdmluZyB0aGlzIERPTVdpbmRvdyBjaGVjayB3aWxsIHN0aWwgd29yay4KKyAgICBp
ZigkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IiB8fCAhJGlzX25vZGVzX3N1YnR5cGUpIHsK
KyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiICAgIHtcIiRhdHRyTmFtZVwi
LCAkZ2V0dGVyLCAkc2V0dGVyLCAkZGF0YSwgJGFjY2Vzc0NvbnRyb2wsIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4oJHByb3BBdHRyKSwgJG9uX3Byb3RvfSIgLiAkZGVsaW1pdGVy
IC4gIlxuIik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAjIE11c3QgY29tZSB1cCB3aXRo
IGEgd2F5IHRvIHJlbW92ZSB0aGVzZSwgYmVjYXVzZSBwcm9wZXJ0aWVzCisgICAgICAgICMgYXJl
IG5vdyBvbiBwcm90b3R5cGVzLgorICAgICAgICAjIE5vdGUgdGhhdCBsZWF2aW5nIHRoZSBnZXR0
ZXJzIGFuZCBzZXR0ZXJzIHVudXNlZCB3aWxsIAorICAgICAgICAjIGNhdXNlIGEgY29tcGlsYXRp
b24gZXJyb3IuCisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIiAgICB7XCJk
ZXByZWNhdGVkJGF0dHJOYW1lXCIsICRnZXR0ZXIsICRzZXR0ZXIsICRkYXRhLCAkYWNjZXNzQ29u
dHJvbCwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPigkcHJvcEF0dHIpLCAkb25f
cHJvdG99IiAuICRkZWxpbWl0ZXIgLiAiXG4iKTsKKyAgICB9CiB9CiAKIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uSW5kZXhlcgpAQCAtMTc4OSw2ICsyMjQzLDEzIEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAKICAgICBteSAkaGFzQ29uc3RydWN0b3JzID0gMDsKICAgICBteSAkc2Vy
aWFsaXplZEF0dHJpYnV0ZTsKKyAgICAjIEJvb2sga2VlcGluZyB0aGUgbmV3bHkgYWRkZWQgZ2V0
dGVyL3NldHRlciBmdW5jdGlvbnMKKyAgICAjIFRoZSBoYXNoZXMgYXJlIHVzZWQgbGF0ZXIgZm9y
IGNoZWNraW5nIHRoZSBleGlzdGVuY2Ugb2YgZ2V0dGVyL3NldHRlci4KKyAgICBAYWNjZXNzb3JG
dW5jdGlvbk5hbWVzID0gKCk7CisgICAgQGdldHRlckZ1bmN0aW9ucyA9ICgpOworICAgICVnZXR0
ZXJGdW5jdGlvbkV4aXN0SGFzaCA9ICgpOworICAgIEBzZXR0ZXJGdW5jdGlvbnMgPSAoKTsKKyAg
ICAlc2V0dGVyRnVuY3Rpb25FeGlzdEhhc2ggPSAoKTsKICAgICAjIEdlbmVyYXRlIHByb3BlcnR5
IGFjY2Vzc29ycyBmb3IgYXR0cmlidXRlcy4KICAgICBmb3IgKCRpbmRleCA9IDA7ICRpbmRleCA8
IEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfTsgJGluZGV4KyspIHsKICAgICAgICAgJGF0dHJpYnV0
ZSA9IEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfVskaW5kZXhdOwpAQCAtMTgyNiw5ICsyMjg3LDE2
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIH0KIAogICAgICAgICAjIEdl
bmVyYXRlIHRoZSBhY2Nlc3Nvci4KKyAgICAgICAgcHVzaChAYWNjZXNzb3JGdW5jdGlvbk5hbWVz
LCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpOwogICAgICAgICBpZiAoISgkYXR0cmlidXRl
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21HZXR0ZXIifSB8fAogICAg
ICAgICAgICAgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhD
dXN0b21HZXR0ZXIifSkpIHsKICAgICAgICAgICAgIEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlcigk
YXR0cmlidXRlLCAkZGF0YU5vZGUsICRpbXBsQ2xhc3NOYW1lLCAkaW50ZXJmYWNlTmFtZSk7Cisg
ICAgICAgICAgICBpZihJc1N1YlR5cGUoJGRhdGFOb2RlLCAiTm9kZSIpICYmICRpbXBsQ2xhc3NO
YW1lIG5lICJET01XaW5kb3ciKXsKKyAgICAgICAgICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJH
ZXR0ZXJDYWxsYmFjaygkYXR0cmlidXRlLCAkZGF0YU5vZGUsICRpbXBsQ2xhc3NOYW1lLCAkaW50
ZXJmYWNlTmFtZSk7CisgICAgICAgICAgICAgICAgcHVzaChAZ2V0dGVyRnVuY3Rpb25zLCAkYXR0
cmlidXRlLT5zaWduYXR1cmUtPm5hbWUsIAorICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRl
Q29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKSk7CisgICAgICAgICAgICAg
ICAgJGdldHRlckZ1bmN0aW9uRXhpc3RIYXNoeyRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZX0g
PSAxOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmICghJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tU2V0dGVyIn0gJiYKICAgICAg
ICAgICAgICEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOEN1
c3RvbVNldHRlciJ9ICYmCkBAIC0xODM2LDYgKzIzMDQsMTIgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICAgICAgICAgICRhdHRyaWJ1dGUtPnR5cGUgIX4gL15yZWFkb25seS8gJiYK
ICAgICAgICAgICAgICEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJWOFJlYWRPbmx5In0pIHsKICAgICAgICAgICAgIEdlbmVyYXRlTm9ybWFsQXR0clNldHRlcigk
YXR0cmlidXRlLCAkZGF0YU5vZGUsICRpbXBsQ2xhc3NOYW1lLCAkaW50ZXJmYWNlTmFtZSk7Cisg
ICAgICAgICAgICBpZihJc1N1YlR5cGUoJGRhdGFOb2RlLCAiTm9kZSIpICYmICRpbXBsQ2xhc3NO
YW1lIG5lICJET01XaW5kb3ciKXsKKyAgICAgICAgICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJT
ZXR0ZXJDYWxsYmFjaygkYXR0cmlidXRlLCAkZGF0YU5vZGUsICRpbXBsQ2xhc3NOYW1lLCAkaW50
ZXJmYWNlTmFtZSk7CisgICAgICAgICAgICAgICAgcHVzaChAc2V0dGVyRnVuY3Rpb25zLCAkYXR0
cmlidXRlLT5zaWduYXR1cmUtPm5hbWUsIAorICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRl
Q29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKSk7CisgICAgICAgICAgICAg
ICAgJHNldHRlckZ1bmN0aW9uRXhpc3RIYXNoeyRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZX0g
PSAxOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCkBAIC0xOTEwLDYgKzIzODQs
NTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAjIFNldHVwIHRhYmxlIG9mIHN0
YW5kYXJkIGNhbGxiYWNrIGZ1bmN0aW9ucwogICAgICRudW1fY2FsbGJhY2tzID0gMDsKICAgICAk
aGFzX2NhbGxiYWNrcyA9IDA7CisgICAgbXkgJG15X251bV9jYWxsYmFja3MgPSAwOworICAgIGlm
KEBnZXR0ZXJGdW5jdGlvbnMgfHwgQHNldHRlckZ1bmN0aW9ucyB8fCAkZGF0YU5vZGUtPmZ1bmN0
aW9ucykgeworICAgICAgICBpZiAoISRoYXNfY2FsbGJhY2tzKSB7CisgICAgICAgICAgICAkaGFz
X2NhbGxiYWNrcyA9IDE7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBj
b25zdCBCYXRjaGVkQ2FsbGJhY2sgJHtpbnRlcmZhY2VOYW1lfUNhbGxiYWNrc1tdID0ge1xuIik7
CisgICAgICAgICAgICAjIGFkZGluZyBteSBnZXR0ZXIgY2FsbGJhY2tzIGJ5IGhhbmQKKyAgICAg
ICAgICAgIGZvcihteSAkaSA9IDAgIDsgJGkgPCBAZ2V0dGVyRnVuY3Rpb25zIDsgJGkgKz0gMikg
eworICAgICAgICAgICAgICAgIG15ICRuYW1lID0gJGdldHRlckZ1bmN0aW9uc1skaV07CisgICAg
ICAgICAgICAgICAgbXkgJGZuYW1lID0gIiR7bmFtZX1BdHRyR2V0dGVyQ2FsbGJhY2siOworICAg
ICAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRnZXR0ZXJGdW5jdGlvbnNbJGkr
MV07CisgICAgICAgICAgICAgICAgaWYoJGNvbmRpdGlvbmFsU3RyaW5nKSB7CisgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CisjaWYgJHtjb25kaXRpb25hbFN0
cmluZ30KK0VORAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgPDxFTkQpOworICAgIHsiJHtuYW1lfUdldHRlckNhbGxiYWNrIiwgJHtpbnRlcmZh
Y2VOYW1lfUludGVybmFsOjoke2ZuYW1lfX0sCitFTkQKKyAgICAgICAgICAgICAgICBpZigkY29u
ZGl0aW9uYWxTdHJpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
IDw8RU5EKTsKKyNlbmRpZgorRU5ECisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICRteV9udW1fY2FsbGJhY2tzKys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IobXkg
JGkgPSAwICA7ICRpIDwgQHNldHRlckZ1bmN0aW9ucyA7ICRpICs9IDIpIHsKKyAgICAgICAgICAg
ICAgICBteSAkbmFtZSA9ICRzZXR0ZXJGdW5jdGlvbnNbJGldOworICAgICAgICAgICAgICAgIG15
ICRmbmFtZSA9ICIke25hbWV9QXR0clNldHRlckNhbGxiYWNrIjsKKyAgICAgICAgICAgICAgICBt
eSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkc2V0dGVyRnVuY3Rpb25zWyRpKzFdOworICAgICAgICAg
ICAgICAgIGlmKCRjb25kaXRpb25hbFN0cmluZykgeworICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgPDxFTkQpOworI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9CitFTkQKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5E
KTsKKyAgICB7IiR7bmFtZX1TZXR0ZXJDYWxsYmFjayIsICR7aW50ZXJmYWNlTmFtZX1JbnRlcm5h
bDo6JHtmbmFtZX19LAorRU5ECisgICAgICAgICAgICAgICAgaWYoJGNvbmRpdGlvbmFsU3RyaW5n
KSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CisjZW5k
aWYKK0VORAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAkbXlfbnVtX2NhbGxi
YWNrcysrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgICMgZ2VuZXJhdGUg
dGhlIFtuYW1lLCBmdW5jdGlvbl0gcGFpcgogICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRk
YXRhTm9kZS0+ZnVuY3Rpb25zfSkgewogICAgICAgICAjIE9ubHkgb25lIHRhYmxlIGVudHJ5IGlz
IG5lZWRlZCBmb3Igb3ZlcmxvYWRlZCBtZXRob2RzOgogICAgICAgICBuZXh0IGlmICRmdW5jdGlv
bi0+e292ZXJsb2FkSW5kZXh9ID4gMTsKQEAgLTE5MzIsMTAgKzI0NTMsNiBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBpZiAoJGF0dHJFeHQtPnsiRG9udEVudW0ifSB8fCAk
YXR0ckV4dC0+eyJWOFJlYWRPbmx5In0pIHsKICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgIH0K
LSAgICAgICAgaWYgKCEkaGFzX2NhbGxiYWNrcykgewotICAgICAgICAgICAgJGhhc19jYWxsYmFj
a3MgPSAxOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgY29uc3QgQmF0
Y2hlZENhbGxiYWNrICR7aW50ZXJmYWNlTmFtZX1DYWxsYmFja3NbXSA9IHtcbiIpOwotICAgICAg
ICB9CiAgICAgICAgIG15ICRuYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CiAgICAg
ICAgIG15ICRjYWxsYmFjayA9IEdldEZ1bmN0aW9uVGVtcGxhdGVDYWxsYmFja05hbWUoJGZ1bmN0
aW9uLCAkaW50ZXJmYWNlTmFtZSk7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7
CkBAIC0xOTQzLDcgKzI0NjAsMTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIEVORAog
ICAgICAgICAkbnVtX2NhbGxiYWNrcysrOwogICAgIH0KLSAgICBwdXNoKEBpbXBsQ29udGVudCwg
In07XG4iKSAgaWYgJGhhc19jYWxsYmFja3M7CisgICAgaWYoJG51bV9jYWxsYmFja3N8fCRteV9u
dW1fY2FsbGJhY2tzKSB7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifTtcbiIpICBpZiAk
aGFzX2NhbGxiYWNrczsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHBvcChAaW1wbENvbnRl
bnQpOworICAgICAgICAkaGFzX2NhbGxiYWNrcyA9IDA7CisgICAgfQogCiAgICAgIyBTZXR1cCBj
b25zdGFudHMKICAgICBteSAkaGFzX2NvbnN0YW50cyA9IDA7CkBAIC0yMjI2LDE3ICsyNzQ5LDQ3
IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAke2NsYXNzTmFtZX06Okdl
dFJhd1RlbXBsYXRlKCkKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKK0VORAorCisgICAgaWYoSXNT
dWJUeXBlKCRkYXRhTm9kZSwgIk5vZGUiKSAmJiAkaW1wbENsYXNzTmFtZSBuZSAiRE9NV2luZG93
Iil7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAgPDxFTkQpOworc3RhdGljIHZvaWQgJHtp
bnRlcmZhY2VOYW1lfURlZmluZVByb3RvdHlwZVByb3BlcnRpZXMoKSB7CitFTkQKKyAgICBHZW5l
cmF0ZURlZmluZVByb3BlcnR5U2NyaXB0KCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkcGFy
ZW50Q2xhc3NUZW1wbGF0ZSk7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICA8PEVORCk7Cit9CitF
TkQKKyAgICB9CisgICAgcHVzaChAaW1wbENvbnRlbnQsICA8PEVORCk7CisKIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAke2NsYXNzTmFtZX06OkdldFRlbXBsYXRlKCkKIHsK
ICAgICBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4QmluZGluZ1Blcklzb2xhdGVE
YXRhOjpjdXJyZW50KCk7CiAgICAgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFw
OjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwotICAg
IGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKKyAgICBpZiAocmVzdWx0
ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpIHsKK0VORAorICAgIGlmKElzU3ViVHlwZSgk
ZGF0YU5vZGUsICJOb2RlIikgJiYgJGltcGxDbGFzc05hbWUgbmUgIkRPTVdpbmRvdyIpeworICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIDw8RU5EKTsKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2VjID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgICAgICBpZigh
c2VjLT5tX2luaXRpYWxpemVkUHJvdG90eXBlcy5jb250YWlucygmaW5mbykpIHsKKyAgICAgICAg
ICAgICR7aW50ZXJmYWNlTmFtZX1EZWZpbmVQcm90b3R5cGVQcm9wZXJ0aWVzKCk7CisgICAgICAg
IH0gCitFTkQKKyAgICB9CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAgPDxFTkQpOwogICAg
ICAgICByZXR1cm4gcmVzdWx0LT5zZWNvbmQ7Ci0KKyAgICB9CiAgICAgdjg6OkhhbmRsZVNjb3Bl
IGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0
ZW1wbCA9CiAgICAgICAgIENvbmZpZ3VyZSR7Y2xhc3NOYW1lfVRlbXBsYXRlKEdldFJhd1RlbXBs
YXRlKCkpOwogICAgIGRhdGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CitFTkQK
KyAgICBpZihJc1N1YlR5cGUoJGRhdGFOb2RlLCAiTm9kZSIpICYmICRpbXBsQ2xhc3NOYW1lIG5l
ICJET01XaW5kb3ciKXsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICA8PEVORCk7CisgICAg
JHtpbnRlcmZhY2VOYW1lfURlZmluZVByb3RvdHlwZVByb3BlcnRpZXMoKTsKK0VORAorICAgIH0K
KyAgICBwdXNoKEBpbXBsQ29udGVudCwgIDw8RU5EKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCmluZGV4IDE3OTIzNzQuLjM1
ZmI3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcApAQCAtNjA3
LDYgKzYwNywxMyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0RWxlbWVudFN0cmluZ0F0dHIo
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbywKICAgICByZXR1cm4gdjhFeHRlcm5hbFN0cmlu
ZyhpbXAtPmdldEF0dHJpYnV0ZShuYW1lKSk7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBn
ZXRFbGVtZW50U3RyaW5nQXR0ckZyb21BcmdzKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSkgCit7CisgICAgRWxlbWVudCogaW1wID0gVjhFbGVtZW50Ojp0b05hdGl2ZShh
cmdzLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhFeHRlcm5hbFN0cmluZyhpbXAtPmdldEF0dHJp
YnV0ZShuYW1lKSk7Cit9CisKIHZvaWQgc2V0RWxlbWVudFN0cmluZ0F0dHIoY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdmFsdWUpCkBAIC02MTUsNiArNjIyLDE0IEBAIHZvaWQgc2V0RWxlbWVudFN0cmluZ0F0
dHIoY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbywKICAgICBBdG9taWNTdHJpbmcgdiA9IHRv
QXRvbWljV2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hlY2sodmFsdWUpOwogICAgIGltcC0+c2V0QXR0
cmlidXRlKG5hbWUsIHYpOwogfQordm9pZCBzZXRFbGVtZW50U3RyaW5nQXR0ckZyb21BcmdzKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlKQoreworICAgIEVsZW1lbnQqIGltcCA9IFY4RWxlbWVudDo6dG9O
YXRpdmUoYXJncy5Ib2xkZXIoKSk7CisgICAgQXRvbWljU3RyaW5nIHYgPSB0b0F0b21pY1dlYkNv
cmVTdHJpbmdXaXRoTnVsbENoZWNrKHZhbHVlKTsKKyAgICBpbXAtPnNldEF0dHJpYnV0ZShuYW1l
LCB2KTsKK30KIAogUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiB2OFZhbHVlVG9XZWJDb3JlRE9N
U3RyaW5nTGlzdCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4QmluZGluZy5oCmluZGV4IDUzNWQ5YzEuLjNiNDE1MDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCkBAIC0zNjQsMTAgKzM2NCwxNSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0RWxlbWVudFN0cmlu
Z0F0dHIoY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gZ2V0RWxlbWVudFN0cmluZ0F0dHJGcm9tQXJncyhjb25zdCB2ODo6QXJn
dW1lbnRzJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZvaWQgc2V0RWxlbWVudFN0cmluZ0F0dHIoY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBRdWFsaWZpZWROYW1lJiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+KTsKIAorICAgIHZvaWQgc2V0RWxlbWVudFN0cmluZ0F0dHJGcm9tQXJncyhj
b25zdCB2ODo6QXJndW1lbnRzJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFF1YWxpZmllZE5hbWUmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4pOwogCiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OlN0cmluZz4gZ2V0VG9TdHJp
bmdOYW1lKCk7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGdldFRv
U3RyaW5nVGVtcGxhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oCmluZGV4IGEwODIyODEuLjgzMjExMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtNjgsNiArNjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHsKICAgICBwdWJsaWM6CisJ
CUhhc2hTZXQ8dm9pZCo+IG1faW5pdGlhbGl6ZWRQcm90b3R5cGVzOwogICAgICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7CiAgICAgICAgIHZpcnR1YWwgflNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKIAotLSAKMS43LjMuMQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>