<?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>102312</bug_id>
          
          <creation_ts>2012-11-14 18:09:06 -0800</creation_ts>
          <short_desc>[V8] Kill $implClassName from CodeGeneratorV8.pm</short_desc>
          <delta_ts>2012-11-14 19:46:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>767545</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-14 18:09:06 -0800</bug_when>
    <thetext>$implClassName and $interfaceName are the same. Sometimes we are passing both $implClassName and $interfaceName to subroutines. We can kill $implClassName.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767547</commentid>
    <comment_count>1</comment_count>
      <attachid>174308</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-14 18:09:57 -0800</bug_when>
    <thetext>Created attachment 174308
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767591</commentid>
    <comment_count>2</comment_count>
      <attachid>174308</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-14 18:50:57 -0800</bug_when>
    <thetext>Comment on attachment 174308
Patch

They&apos;re not different in the case of the [InterfaceName=Window] IDL attribute?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767599</commentid>
    <comment_count>3</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-14 19:01:04 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 174308 [details])
&gt; They&apos;re not different in the case of the [InterfaceName=Window] IDL attribute?

It&apos;s managed by $visibleInterfaceName. The current situation is:

my $interfaceName = $dataNode-&gt;name;
my $implClassName = $dataNode-&gt;name;
my $visibleInterfaceName = $codeGenerator-&gt;GetVisibleInterfaceName($dataNode);

...; # Use $interfaceName and $implClassName interchangeably.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767612</commentid>
    <comment_count>4</comment_count>
      <attachid>174308</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-14 19:08:58 -0800</bug_when>
    <thetext>Comment on attachment 174308
Patch

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767616</commentid>
    <comment_count>5</comment_count>
      <attachid>174321</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-14 19:16:46 -0800</bug_when>
    <thetext>Created attachment 174321
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767634</commentid>
    <comment_count>6</comment_count>
      <attachid>174321</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-14 19:46:11 -0800</bug_when>
    <thetext>Comment on attachment 174321
patch for landing

Clearing flags on attachment: 174321

Committed r134730: &lt;http://trac.webkit.org/changeset/134730&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767635</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-14 19:46:14 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174308</attachid>
            <date>2012-11-14 18:09:57 -0800</date>
            <delta_ts>2012-11-14 19:16:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102312-20121115110755.patch</filename>
            <type>text/plain</type>
            <size>45093</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0Njg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjc4ZWYwNmU0NDYyM2Nk
NTc4MGZmZDRmMjU4NDdmYTBiZTYxMjZhZi4uZDUwMzIxZTU1OGJlZjkxNzVhYjI2NWRhMzMzZTVi
NGI2M2Q1Yzg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTExLTE0ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIEtpbGwgJGlt
cGxDbGFzc05hbWUgZnJvbSBDb2RlR2VuZXJhdG9yVjgucG0KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjMxMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICRpbXBsQ2xhc3NOYW1lIGFuZCAkaW50ZXJmYWNl
TmFtZSBhcmUgdGhlIHNhbWUuCisgICAgICAgIFNvbWV0aW1lcyB3ZSBhcmUgcGFzc2luZyBib3Ro
ICRpbXBsQ2xhc3NOYW1lIGFuZCAkaW50ZXJmYWNlTmFtZSB0bworICAgICAgICBzdWJyb3V0aW5l
cy4gV2UgY2FuIGtpbGwgJGltcGxDbGFzc05hbWUuCisKKyAgICAgICAgTm8gdGVzdHMuIE5vIGNo
YW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtOgorICAgICAgICAoR2VuZXJhdGVPcGFxdWVSb290Rm9yR0MpOgorICAgICAgICAo
R2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVEb21haW5TYWZlRnVuY3Rpb25HZXR0
ZXIpOgorICAgICAgICAoR2VuZXJhdGVEb21haW5TYWZlRnVuY3Rpb25TZXR0ZXIpOgorICAgICAg
ICAoR2VuZXJhdGVDb25zdHJ1Y3RvckdldHRlcik6CisgICAgICAgIChHZW5lcmF0ZU5vcm1hbEF0
dHJHZXR0ZXIpOgorICAgICAgICAoR2VuZXJhdGVSZXBsYWNlYWJsZUF0dHJTZXR0ZXIpOgorICAg
ICAgICAoR2VuZXJhdGVOb3JtYWxBdHRyU2V0dGVyKToKKyAgICAgICAgKEdlbmVyYXRlRXZlbnRM
aXN0ZW5lckNhbGxiYWNrKToKKyAgICAgICAgKEdlbmVyYXRlT3ZlcmxvYWRlZEZ1bmN0aW9uQ2Fs
bGJhY2spOgorICAgICAgICAoR2VuZXJhdGVGdW5jdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKEdl
bmVyYXRlUGFyYW1ldGVyc0NoZWNrKToKKyAgICAgICAgKEdlbmVyYXRlT3ZlcmxvYWRlZENvbnN0
cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAoR2VuZXJhdGVTaW5nbGVDb25zdHJ1Y3RvckNhbGxi
YWNrKToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgIChH
ZW5lcmF0ZUV2ZW50Q29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgIChHZW5lcmF0ZVR5cGVk
QXJyYXlDb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKEdlbmVyYXRlTmFtZWRDb25zdHJ1
Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAg
ICAoR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcpOgorCiAyMDEyLTExLTE0ICBKb3NodWEgQmVs
bCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhlZERCOiBJbmRleGluZyB0
ZXN0cyBhcmUgZmxha3ktY3Jhc2hpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggYjJjZWEyY2YwN2I2MmMyZWE3ZTZjODJi
Y2QyNWM2NDYwN2EwYzYwZi4uYzkyYWZiOThmNTA5OWVhNWE1NjI1NzU2NTg1ZjQwOGNiZTRhMTBi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG0KQEAgLTIwMSwxNyArMjAxLDE3IEBAIHN1YiBHZXRDdXN0b21Jc1JlYWNoYWJsZQog
CiBzdWIgR2VuZXJhdGVPcGFxdWVSb290Rm9yR0MKIHsKLSAgICBteSAoJGRhdGFOb2RlLCAkaW1w
bENsYXNzTmFtZSkgPSBAXzsKKyAgICBteSAoJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSkgPSBA
XzsKIAogICAgIGlmIChHZXRDdXN0b21Jc1JlYWNoYWJsZSgkZGF0YU5vZGUpKSB7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotdm9pZCog
Vjgke2ltcGxDbGFzc05hbWV9OjpvcGFxdWVSb290Rm9yR0Modm9pZCogb2JqZWN0LCB2ODo6UGVy
c2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKQordm9pZCogVjgke2ludGVyZmFjZU5hbWV9Ojpv
cGFxdWVSb290Rm9yR0Modm9pZCogb2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3
cmFwcGVyKQogewogICAgIEFTU0VSVCghd3JhcHBlci5Jc0luZGVwZW5kZW50KCkpOwotICAgICR7
aW1wbENsYXNzTmFtZX0qIGltcGwgPSBzdGF0aWNfY2FzdDwke2ltcGxDbGFzc05hbWV9Kj4ob2Jq
ZWN0KTsKKyAgICAke2ludGVyZmFjZU5hbWV9KiBpbXBsID0gc3RhdGljX2Nhc3Q8JHtpbnRlcmZh
Y2VOYW1lfSo+KG9iamVjdCk7CiBFTkQKICAgICBpZiAoR2V0R2VuZXJhdGVJc1JlYWNoYWJsZSgk
ZGF0YU5vZGUpIGVxICAiSW1wbERvY3VtZW50IiB8fAogICAgICAgICBHZXRHZW5lcmF0ZUlzUmVh
Y2hhYmxlKCRkYXRhTm9kZSkgZXEgICJJbXBsRWxlbWVudFJvb3QiIHx8CkBAIC0yODgsNyArMjg4
LDYgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRkYXRh
Tm9kZS0+bmFtZTsKICAgICBteSAkY2xhc3NOYW1lID0gIlY4JGludGVyZmFjZU5hbWUiOwotICAg
IG15ICRpbXBsQ2xhc3NOYW1lID0gJGludGVyZmFjZU5hbWU7CiAKICAgICAjIENvcHkgY29udGVu
dHMgb2YgcGFyZW50IGNsYXNzZXMgZXhjZXB0IHRoZSBmaXJzdCBwYXJlbnQuCiAgICAgJGNvZGVH
ZW5lcmF0b3ItPkFkZE1ldGhvZHNDb25zdGFudHNBbmRBdHRyaWJ1dGVzRnJvbVBhcmVudENsYXNz
ZXMoJGRhdGFOb2RlLCBcQGFsbFBhcmVudHMsIDEpOwpAQCAtMzE2LDEwICszMTUsMTAgQEAgc3Vi
IEdlbmVyYXRlSGVhZGVyCiAgICAgJGhlYWRlckluY2x1ZGVzeyJ3dGYvSGFzaE1hcC5oIn0gPSAx
OwogICAgICRoZWFkZXJJbmNsdWRlc3sidjguaCJ9ID0gMTsKIAotICAgIG15ICRoZWFkZXJDbGFz
c0luY2x1ZGUgPSBHZXRIZWFkZXJDbGFzc0luY2x1ZGUoJGltcGxDbGFzc05hbWUpOworICAgIG15
ICRoZWFkZXJDbGFzc0luY2x1ZGUgPSBHZXRIZWFkZXJDbGFzc0luY2x1ZGUoJGludGVyZmFjZU5h
bWUpOwogICAgICRoZWFkZXJJbmNsdWRlc3skaGVhZGVyQ2xhc3NJbmNsdWRlfSA9IDEgaWYgJGhl
YWRlckNsYXNzSW5jbHVkZSBuZSAiIjsKIAotICAgIG15ICgkc3ZnUHJvcGVydHlUeXBlLCAkc3Zn
TGlzdFByb3BlcnR5VHlwZSwgJHN2Z05hdGl2ZVR5cGUpID0gR2V0U1ZHUHJvcGVydHlUeXBlcygk
aW1wbENsYXNzTmFtZSk7CisgICAgbXkgKCRzdmdQcm9wZXJ0eVR5cGUsICRzdmdMaXN0UHJvcGVy
dHlUeXBlLCAkc3ZnTmF0aXZlVHlwZSkgPSBHZXRTVkdQcm9wZXJ0eVR5cGVzKCRpbnRlcmZhY2VO
YW1lKTsKIAogICAgIGZvcmVhY2ggbXkgJGhlYWRlckluY2x1ZGUgKHNvcnQga2V5cyglaGVhZGVy
SW5jbHVkZXMpKSB7CiAgICAgICAgIGlmICgkaGVhZGVySW5jbHVkZSA9fiAvd3RmfHY4XC5oLykg
ewpAQCAtMzk2LDEzICszOTUsMTMgQEAgRU5ECiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgc3RhdGljIEFjdGl2ZURPTU9iamVjdCogdG9BY3RpdmVET01PYmplY3Qodjg6OkhhbmRs
ZTx2ODo6T2JqZWN0Pik7XG4iKTsKICAgICB9CiAKLSAgICBpZiAoJGltcGxDbGFzc05hbWUgZXEg
IkRPTVdpbmRvdyIpIHsKKyAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsK
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogICAgIHN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6T2JqZWN0VGVtcGxhdGU+IEdldFNoYWRvd09iamVjdFRlbXBsYXRlKCk7CiBF
TkQKICAgICB9CiAKLSAgICBpZiAoJGltcGxDbGFzc05hbWUgZXEgIkhUTUxEb2N1bWVudCIpIHsK
KyAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkhUTUxEb2N1bWVudCIpIHsKICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKICAgICBzdGF0aWMgdjg6OkxvY2FsPHY4OjpPYmplY3Q+
IHdyYXBJblNoYWRvd09iamVjdCh2ODo6TG9jYWw8djg6Ok9iamVjdD4gd3JhcHBlciwgTm9kZSog
aW1wbCk7CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXROYW1lZFByb3BlcnR5
KEhUTUxEb2N1bWVudCogaHRtbERvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGtleSwgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CkBAIC02
MjAsNyArNjE5LDcgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFBhc3NSZWZQ
dHI8ICR7bmF0aXZlVHlwZX0gPiBpbXBsLCB2ODo6SGFuZGxlPHYKIEVORAogCiAgICAgaWYgKCRj
b2RlR2VuZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVGVtcGxhdGUoJGRhdGFOb2RlLCAiRXZlbnQiKSkg
ewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG5ib29sIGZpbGwke2ltcGxDbGFzc05h
bWV9SW5pdCgke2ltcGxDbGFzc05hbWV9SW5pdCYsIGNvbnN0IERpY3Rpb25hcnkmKTtcbiIpOwor
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG5ib29sIGZpbGwke2ludGVyZmFjZU5hbWV9
SW5pdCgke2ludGVyZmFjZU5hbWV9SW5pdCYsIGNvbnN0IERpY3Rpb25hcnkmKTtcbiIpOwogICAg
IH0KIAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbn1cblxuIik7CkBAIC04MTEsOSArODEw
LDkgQEAgc3ViIElzUmVhZG9ubHkKIHN1YiBHZW5lcmF0ZURvbWFpblNhZmVGdW5jdGlvbkdldHRl
cgogewogICAgIG15ICRmdW5jdGlvbiA9IHNoaWZ0OwotICAgIG15ICRpbXBsQ2xhc3NOYW1lID0g
c2hpZnQ7CisgICAgbXkgJGludGVyZmFjZU5hbWUgPSBzaGlmdDsKIAotICAgIG15ICRjbGFzc05h
bWUgPSAiVjgiIC4gJGltcGxDbGFzc05hbWU7CisgICAgbXkgJGNsYXNzTmFtZSA9ICJWOCIgLiAk
aW50ZXJmYWNlTmFtZTsKICAgICBteSAkZnVuY05hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+
bmFtZTsKIAogICAgIG15ICRzaWduYXR1cmUgPSAidjg6OlNpZ25hdHVyZTo6TmV3KCIgLiAkY2xh
c3NOYW1lIC4gIjo6R2V0UmF3VGVtcGxhdGUoKSkiOwpAQCAtODIxLDEzICs4MjAsMTMgQEAgc3Vi
IEdlbmVyYXRlRG9tYWluU2FmZUZ1bmN0aW9uR2V0dGVyCiAgICAgICAgICRzaWduYXR1cmUgPSAi
djg6OkxvY2FsPHY4OjpTaWduYXR1cmU+KCkiOwogICAgIH0KIAotICAgIG15ICRuZXdUZW1wbGF0
ZVN0cmluZyA9IEdlbmVyYXRlTmV3RnVuY3Rpb25UZW1wbGF0ZSgkZnVuY3Rpb24sICRpbXBsQ2xh
c3NOYW1lLCAkc2lnbmF0dXJlKTsKKyAgICBteSAkbmV3VGVtcGxhdGVTdHJpbmcgPSBHZW5lcmF0
ZU5ld0Z1bmN0aW9uVGVtcGxhdGUoJGZ1bmN0aW9uLCAkaW50ZXJmYWNlTmFtZSwgJHNpZ25hdHVy
ZSk7CiAKICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRnJhbWUuaCIpOwogICAgIHB1c2goQGltcGxD
b250ZW50RGVjbHMsIDw8RU5EKTsKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtmdW5j
TmFtZX1BdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUyhcIkRPTS4kaW1wbENsYXNzTmFtZS4k
ZnVuY05hbWUuX2dldFwiKTsKKyAgICBJTkNfU1RBVFMoXCJET00uJGludGVyZmFjZU5hbWUuJGZ1
bmNOYW1lLl9nZXRcIik7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT46Ok5ldygkbmV3VGVtcGxhdGVTdHJpbmcpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gaG9sZGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKCR7Y2xhc3NOYW1lfTo6
R2V0VGVtcGxhdGUoKSwgaW5mby5UaGlzKCkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7
CkBAIC04MzUsNyArODM0LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke2Z1bmNO
YW1lfUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGMKICAgICAgICAgLy8g
ZG9tYWluIHNlY3VyaXR5IGNoZWNrIGFscmVhZHkKICAgICAgICAgcmV0dXJuIHByaXZhdGVUZW1w
bGF0ZS0+R2V0RnVuY3Rpb24oKTsKICAgICB9Ci0gICAgJHtpbXBsQ2xhc3NOYW1lfSogaW1wID0g
JHtjbGFzc05hbWV9Ojp0b05hdGl2ZShob2xkZXIpOworICAgICR7aW50ZXJmYWNlTmFtZX0qIGlt
cCA9ICR7Y2xhc3NOYW1lfTo6dG9OYXRpdmUoaG9sZGVyKTsKICAgICBpZiAoIUJpbmRpbmdTZWN1
cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSwg
aW1wLT5mcmFtZSgpLCBEb05vdFJlcG9ydFNlY3VyaXR5RXJyb3IpKSB7CiAgICAgICAgIHN0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUgPSB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldygkbmV3VGVtcGxhdGVTdHJp
bmcpOwogICAgICAgICByZXR1cm4gc2hhcmVkVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CkBAIC04
NTMsMTcgKzg1MiwxNyBAQCBFTkQKIAogc3ViIEdlbmVyYXRlRG9tYWluU2FmZUZ1bmN0aW9uU2V0
dGVyCiB7Ci0gICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlmdDsKLSAgICBteSAkY2xhc3NOYW1l
ID0gIlY4IiAuICRpbXBsQ2xhc3NOYW1lOworICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7
CisgICAgbXkgJGNsYXNzTmFtZSA9ICJWOCIgLiAkaW50ZXJmYWNlTmFtZTsKIAogICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKLXN0YXRpYyB2b2lkICR7aW1wbENsYXNzTmFtZX1E
b21haW5TYWZlRnVuY3Rpb25TZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorc3Rh
dGljIHZvaWQgJHtpbnRlcmZhY2VOYW1lfURvbWFpblNhZmVGdW5jdGlvblNldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uJGltcGxDbGFzc05h
bWUuX3NldCIpOworICAgIElOQ19TVEFUUygiRE9NLiRpbnRlcmZhY2VOYW1lLl9zZXQiKTsKICAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9N
V3JhcHBlcigke2NsYXNzTmFtZX06OkdldFRlbXBsYXRlKCksIGluZm8uVGhpcygpKTsKICAgICBp
ZiAoaG9sZGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgICR7aW1wbENsYXNzTmFt
ZX0qIGltcCA9ICR7Y2xhc3NOYW1lfTo6dG9OYXRpdmUoaG9sZGVyKTsKKyAgICAke2ludGVyZmFj
ZU5hbWV9KiBpbXAgPSAke2NsYXNzTmFtZX06OnRvTmF0aXZlKGhvbGRlcik7CiAgICAgaWYgKCFC
aW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShCaW5kaW5nU3RhdGU6Omlu
c3RhbmNlKCksIGltcC0+ZnJhbWUoKSkpCiAgICAgICAgIHJldHVybjsKIApAQCAtODc2LDEyICs4
NzUsMTIgQEAgRU5ECiBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckdldHRlcgogewogICAgIG15ICRk
YXRhTm9kZSA9IHNoaWZ0OwotICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gc2hpZnQ7CisgICAgbXkg
JGludGVyZmFjZU5hbWUgPSBzaGlmdDsKIAogICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8
RU5EKTsKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtpbXBsQ2xhc3NOYW1lfUNvbnN0
cnVjdG9yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke2ludGVyZmFjZU5h
bWV9Q29uc3RydWN0b3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKFwiRE9NLiRpbXBsQ2xhc3NO
YW1lLmNvbnN0cnVjdG9ycy5fZ2V0XCIpOworICAgIElOQ19TVEFUUyhcIkRPTS4kaW50ZXJmYWNl
TmFtZS5jb25zdHJ1Y3RvcnMuX2dldFwiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGF0
YSA9IGluZm8uRGF0YSgpOwogICAgIEFTU0VSVChkYXRhLT5Jc0V4dGVybmFsKCkgfHwgZGF0YS0+
SXNOdW1iZXIoKSk7CiAgICAgVjhQZXJDb250ZXh0RGF0YSogcGVyQ29udGV4dERhdGEgPSBWOFBl
ckNvbnRleHREYXRhOjpmcm9tKGluZm8uSG9sZGVyKCktPkNyZWF0aW9uQ29udGV4dCgpKTsKQEAg
LTkwOCw3ICs5MDcsNiBAQCBzdWIgR2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVyCiB7CiAgICAgbXkg
JGF0dHJpYnV0ZSA9IHNoaWZ0OwogICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OwotICAgIG15ICRp
bXBsQ2xhc3NOYW1lID0gc2hpZnQ7CiAgICAgbXkgJGludGVyZmFjZU5hbWUgPSBzaGlmdDsKIAog
ICAgIG15ICRhdHRyRXh0ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXM7CkBAIC05MTcsOCArOTE1LDggQEAgc3ViIEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlcgogICAg
ICRjb2RlR2VuZXJhdG9yLT5Bc3NlcnROb3RTZXF1ZW5jZVR5cGUoJGF0dHJUeXBlKTsKICAgICBt
eSAkbmF0aXZlVHlwZSA9IEdldE5hdGl2ZVR5cGVGcm9tU2lnbmF0dXJlKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZSwgLTEpOwogCi0gICAgbXkgJGdldHRlclN0cmluZ1VzZXNJbXAgPSAkaW1wbENsYXNz
TmFtZSBuZSAiU1ZHTnVtYmVyIjsKLSAgICBteSAkc3ZnTmF0aXZlVHlwZSA9ICRjb2RlR2VuZXJh
dG9yLT5HZXRTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJGltcGxDbGFzc05hbWUpOworICAgIG15ICRn
ZXR0ZXJTdHJpbmdVc2VzSW1wID0gJGludGVyZmFjZU5hbWUgbmUgIlNWR051bWJlciI7CisgICAg
bXkgJHN2Z05hdGl2ZVR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0U1ZHVHlwZU5lZWRpbmdUZWFy
T2ZmKCRpbnRlcmZhY2VOYW1lKTsKIAogICAgICMgR2V0dGVyCiAgICAgbXkgJGNvbmRpdGlvbmFs
U3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlKTsKQEAgLTkyNywxOSArOTI1LDE5IEBAIHN1YiBHZW5lcmF0ZU5vcm1h
bEF0dHJHZXR0ZXIKICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CiBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+ICR7YXR0ck5hbWV9QXR0ckdldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNf
U1RBVFMoIkRPTS4kaW1wbENsYXNzTmFtZS4kYXR0ck5hbWUuX2dldCIpOworICAgIElOQ19TVEFU
UygiRE9NLiRpbnRlcmZhY2VOYW1lLiRhdHRyTmFtZS5fZ2V0Iik7CiBFTkQKICAgICBwdXNoKEBp
bXBsQ29udGVudERlY2xzLCBHZW5lcmF0ZUZlYXR1cmVPYnNlcnZhdGlvbigkYXR0ckV4dC0+eyJW
OE1lYXN1cmVBcyJ9KSk7CiAKICAgICBpZiAoJHN2Z05hdGl2ZVR5cGUpIHsKLSAgICAgICAgbXkg
JHN2Z1dyYXBwZWROYXRpdmVUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldFNWR1dyYXBwZWRUeXBl
TmVlZGluZ1RlYXJPZmYoJGltcGxDbGFzc05hbWUpOworICAgICAgICBteSAkc3ZnV3JhcHBlZE5h
dGl2ZVR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0U1ZHV3JhcHBlZFR5cGVOZWVkaW5nVGVhck9m
ZigkaW50ZXJmYWNlTmFtZSk7CiAgICAgICAgIGlmICgkc3ZnV3JhcHBlZE5hdGl2ZVR5cGUgPX4g
L0xpc3QvKSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7Ci0g
ICAgJHN2Z05hdGl2ZVR5cGUqIGltcCA9IFY4JHtpbXBsQ2xhc3NOYW1lfTo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CisgICAgJHN2Z05hdGl2ZVR5cGUqIGltcCA9IFY4JHtpbnRlcmZhY2VOYW1l
fTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiBFTkQKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKLSAgICAkc3ZnTmF0aXZlVHlw
ZSogd3JhcHBlciA9IFY4JHtpbXBsQ2xhc3NOYW1lfTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7
CisgICAgJHN2Z05hdGl2ZVR5cGUqIHdyYXBwZXIgPSBWOCR7aW50ZXJmYWNlTmFtZX06OnRvTmF0
aXZlKGluZm8uSG9sZGVyKCkpOwogICAgICRzdmdXcmFwcGVkTmF0aXZlVHlwZSYgaW1wSW5zdGFu
Y2UgPSB3cmFwcGVyLT5wcm9wZXJ0eVJlZmVyZW5jZSgpOwogRU5ECiAgICAgICAgICAgICBpZiAo
JGdldHRlclN0cmluZ1VzZXNJbXApIHsKQEAgLTk2Miw3ICs5NjAsNyBAQCBFTkQKIEVORAogICAg
ICAgICB9CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKLSAgICAke2lt
cGxDbGFzc05hbWV9KiBpbXAgPSBWOCR7aW1wbENsYXNzTmFtZX06OnRvTmF0aXZlKGhvbGRlcik7
CisgICAgJHtpbnRlcmZhY2VOYW1lfSogaW1wID0gVjgke2ludGVyZmFjZU5hbWV9Ojp0b05hdGl2
ZShob2xkZXIpOwogRU5ECiAgICAgfSBlbHNlIHsKICAgICAgICAgbXkgJHJlZmxlY3QgPSAkYXR0
cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZWZsZWN0In07CkBAIC05
ODksNyArOTg3LDcgQEAgRU5ECiAgICAgICAgIH0KICAgICAgICAgaWYgKCEkYXR0cmlidXRlLT5p
c1N0YXRpYykgewogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOwot
ICAgICR7aW1wbENsYXNzTmFtZX0qIGltcCA9IFY4JHtpbXBsQ2xhc3NOYW1lfTo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CisgICAgJHtpbnRlcmZhY2VOYW1lfSogaW1wID0gVjgke2ludGVyZmFj
ZU5hbWV9Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKIEVORAogICAgICAgICB9CiAgICAgfQpA
QCAtMTAxNyw3ICsxMDE1LDcgQEAgRU5ECiAgICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMs
ICJpbXAiKSBpZiAhJGF0dHJpYnV0ZS0+aXNTdGF0aWM7CiAgICAgICAgICAgICAkZnVuY3Rpb25O
YW1lID0gIiR7aW1wbGVtZW50ZWRCeX06OiR7ZnVuY3Rpb25OYW1lfSI7CiAgICAgICAgIH0gZWxz
aWYgKCRhdHRyaWJ1dGUtPmlzU3RhdGljKSB7Ci0gICAgICAgICAgICAkZnVuY3Rpb25OYW1lID0g
IiR7aW1wbENsYXNzTmFtZX06OiR7ZnVuY3Rpb25OYW1lfSI7CisgICAgICAgICAgICAkZnVuY3Rp
b25OYW1lID0gIiR7aW50ZXJmYWNlTmFtZX06OiR7ZnVuY3Rpb25OYW1lfSI7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAkZnVuY3Rpb25OYW1lID0gImltcC0+JHtmdW5jdGlvbk5hbWV9
IjsKICAgICAgICAgfQpAQCAtMTA5MywxMiArMTA5MSwxMiBAQCBFTkQKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGlmICgoJGNvZGVHZW5lcmF0b3ItPklzU1ZHQW5pbWF0ZWRUeXBlKCRp
bXBsQ2xhc3NOYW1lKSBvciAkaW1wbENsYXNzTmFtZSBlcSAiU1ZHVmlld1NwZWMiKSBhbmQgJGNv
ZGVHZW5lcmF0b3ItPklzU1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCRhdHRyVHlwZSkpIHsKKyAgICBp
ZiAoKCRjb2RlR2VuZXJhdG9yLT5Jc1NWR0FuaW1hdGVkVHlwZSgkaW50ZXJmYWNlTmFtZSkgb3Ig
JGludGVyZmFjZU5hbWUgZXEgIlNWR1ZpZXdTcGVjIikgYW5kICRjb2RlR2VuZXJhdG9yLT5Jc1NW
R1R5cGVOZWVkaW5nVGVhck9mZigkYXR0clR5cGUpKSB7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1
ZGVzKCJWOCRhdHRyVHlwZS5oIik7CiAgICAgICAgIG15ICRzdmdOYXRpdmVUeXBlID0gJGNvZGVH
ZW5lcmF0b3ItPkdldFNWR1R5cGVOZWVkaW5nVGVhck9mZigkYXR0clR5cGUpOwogICAgICAgICAj
IENvbnZlcnQgZnJvbSBhYnN0cmFjdCBTVkdQcm9wZXJ0eSB0byByZWFsIHR5cGUsIHNvIHRoZSBy
aWdodCB0b0pTKCkgbWV0aG9kIGNhbiBiZSBpbnZva2VkLgogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudERlY2xzLCAiICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PCRzdmdOYXRpdmVUeXBlKj4o
JHJlc3VsdCksIGluZm8uSG9sZGVyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTtcbiIpOwotICAgIH0g
ZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1NWR1R5cGVOZWVkaW5nVGVhck9mZigkYXR0clR5cGUp
IGFuZCBub3QgJGltcGxDbGFzc05hbWUgPX4gL0xpc3QkLykgeworICAgIH0gZWxzaWYgKCRjb2Rl
R2VuZXJhdG9yLT5Jc1NWR1R5cGVOZWVkaW5nVGVhck9mZigkYXR0clR5cGUpIGFuZCBub3QgJGlu
dGVyZmFjZU5hbWUgPX4gL0xpc3QkLykgewogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiVjgk
YXR0clR5cGUuaCIpOwogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiU1ZHUHJvcGVydHlUZWFy
T2ZmLmgiKTsKICAgICAgICAgbXkgJHRlYXJPZmZUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldFNW
R1R5cGVOZWVkaW5nVGVhck9mZigkYXR0clR5cGUpOwpAQCAtMTEwNywxNCArMTEwNSwxNCBAQCBF
TkQKICAgICAgICAgICAgICRnZXR0ZXIgPX4gcy9pbXAtPi8vOwogICAgICAgICAgICAgJGdldHRl
ciA9fiBzL1woXCkvLzsKIAotICAgICAgICAgICAgbXkgJHVwZGF0ZU1ldGhvZCA9ICImJHtpbXBs
Q2xhc3NOYW1lfTo6dXBkYXRlIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRnZXR0ZXIp
OworICAgICAgICAgICAgbXkgJHVwZGF0ZU1ldGhvZCA9ICImJHtpbnRlcmZhY2VOYW1lfTo6dXBk
YXRlIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRnZXR0ZXIpOwogCi0gICAgICAgICAg
ICBteSAkc2VsZklzVGVhck9mZlR5cGUgPSAkY29kZUdlbmVyYXRvci0+SXNTVkdUeXBlTmVlZGlu
Z1RlYXJPZmYoJGltcGxDbGFzc05hbWUpOworICAgICAgICAgICAgbXkgJHNlbGZJc1RlYXJPZmZU
eXBlID0gJGNvZGVHZW5lcmF0b3ItPklzU1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCRpbnRlcmZhY2VO
YW1lKTsKICAgICAgICAgICAgIGlmICgkc2VsZklzVGVhck9mZlR5cGUpIHsKICAgICAgICAgICAg
ICAgICBBZGRUb0ltcGxJbmNsdWRlcygiU1ZHU3RhdGljUHJvcGVydHlXaXRoUGFyZW50VGVhck9m
Zi5oIik7Ci0gICAgICAgICAgICAgICAgJHRlYXJPZmZUeXBlID1+IHMvU1ZHUHJvcGVydHlUZWFy
T2ZmPC9TVkdTdGF0aWNQcm9wZXJ0eVdpdGhQYXJlbnRUZWFyT2ZmPCRpbXBsQ2xhc3NOYW1lLCAv
OworICAgICAgICAgICAgICAgICR0ZWFyT2ZmVHlwZSA9fiBzL1NWR1Byb3BlcnR5VGVhck9mZjwv
U1ZHU3RhdGljUHJvcGVydHlXaXRoUGFyZW50VGVhck9mZjwkaW50ZXJmYWNlTmFtZSwgLzsKIAot
ICAgICAgICAgICAgICAgIGlmICgkcmVzdWx0ID1+IC9tYXRyaXgvIGFuZCAkaW1wbENsYXNzTmFt
ZSBlcSAiU1ZHVHJhbnNmb3JtIikgeworICAgICAgICAgICAgICAgIGlmICgkcmVzdWx0ID1+IC9t
YXRyaXgvIGFuZCAkaW50ZXJmYWNlTmFtZSBlcSAiU1ZHVHJhbnNmb3JtIikgewogICAgICAgICAg
ICAgICAgICAgICAjIFNWR1RyYW5zZm9ybSBvZmZlcnMgYSBtYXRyaXgoKSBtZXRob2QgZm9yIGlu
dGVybmFsIHVzYWdlIHRoYXQgcmV0dXJucyBhbiBBZmZpbmVUcmFuc2Zvcm0KICAgICAgICAgICAg
ICAgICAgICAgIyBhbmQgYSBzdmdNYXRyaXgoKSBtZXRob2QgcmV0dXJuaW5nIGEgU1ZHTWF0cml4
LCB1c2VkIGZvciB0aGUgYmluZGluZ3MuCiAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPX4g
cy9tYXRyaXgvc3ZnTWF0cml4LzsKQEAgLTExMjMsNyArMTEyMSw3IEBAIEVORAogICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgcmV0dXJuIHRvVjgoV1RGOjpnZXRQ
dHIoJHt0ZWFyT2ZmVHlwZX06OmNyZWF0ZSh3cmFwcGVyLCAkcmVzdWx0LCAkdXBkYXRlTWV0aG9k
KSksIGluZm8uSG9sZGVyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTtcbiIpOwogICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiU1ZHU3RhdGljUHJv
cGVydHlUZWFyT2ZmLmgiKTsKLSAgICAgICAgICAgICAgICAkdGVhck9mZlR5cGUgPX4gcy9TVkdQ
cm9wZXJ0eVRlYXJPZmY8L1NWR1N0YXRpY1Byb3BlcnR5VGVhck9mZjwkaW1wbENsYXNzTmFtZSwg
LzsKKyAgICAgICAgICAgICAgICAkdGVhck9mZlR5cGUgPX4gcy9TVkdQcm9wZXJ0eVRlYXJPZmY8
L1NWR1N0YXRpY1Byb3BlcnR5VGVhck9mZjwkaW50ZXJmYWNlTmFtZSwgLzsKIAogICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgcmV0dXJuIHRvVjgoV1RGOjpnZXRQ
dHIoJHt0ZWFyT2ZmVHlwZX06OmNyZWF0ZShpbXAsICRyZXN1bHQsICR1cGRhdGVNZXRob2QpKSwg
aW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpO1xuIik7CiAgICAgICAgICAgICB9CkBA
IC0xMTcwLDE5ICsxMTY4LDE5IEBAIEVORAogc3ViIEdlbmVyYXRlUmVwbGFjZWFibGVBdHRyU2V0
dGVyCiB7CiAgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7Ci0gICAgbXkgJGltcGxDbGFzc05hbWUg
PSBzaGlmdDsKKyAgICBteSAkaW50ZXJmYWNlTmFtZSA9IHNoaWZ0OwogCiAgICAgcHVzaChAaW1w
bENvbnRlbnREZWNscywgPDxFTkQpOwotc3RhdGljIHZvaWQgJHtpbXBsQ2xhc3NOYW1lfVJlcGxh
Y2VhYmxlQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCitzdGF0aWMgdm9p
ZCAke2ludGVyZmFjZU5hbWV9UmVwbGFjZWFibGVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS4kaW1wbENsYXNzTmFtZS5yZXBsYWNl
YWJsZS5fc2V0Iik7CisgICAgSU5DX1NUQVRTKCJET00uJGludGVyZmFjZU5hbWUucmVwbGFjZWFi
bGUuX3NldCIpOwogRU5ECiAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgR2VuZXJhdGVGZWF0
dXJlT2JzZXJ2YXRpb24oJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhNZWFzdXJl
QXMifSkpOwogCi0gICAgaWYgKCRpbXBsQ2xhc3NOYW1lIGVxICJET01XaW5kb3ciIHx8ICRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2VjdXJpdHkifSkgeworICAgIGlmICgk
aW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IiB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDaGVja1NlY3VyaXR5In0pIHsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkZy
YW1lLmgiKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOwotICAgICR7
aW1wbENsYXNzTmFtZX0qIGltcCA9IFY4JHtpbXBsQ2xhc3NOYW1lfTo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7CisgICAgJHtpbnRlcmZhY2VOYW1lfSogaW1wID0gVjgke2ludGVyZmFjZU5hbWV9
Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hv
dWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSwgaW1wLT5mcmFt
ZSgpKSkKICAgICAgICAgcmV0dXJuOwogRU5ECkBAIC0xMTk5LDcgKzExOTcsNiBAQCBzdWIgR2Vu
ZXJhdGVOb3JtYWxBdHRyU2V0dGVyCiB7CiAgICAgbXkgJGF0dHJpYnV0ZSA9IHNoaWZ0OwogICAg
IG15ICRkYXRhTm9kZSA9IHNoaWZ0OwotICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gc2hpZnQ7CiAg
ICAgbXkgJGludGVyZmFjZU5hbWUgPSBzaGlmdDsKIAogICAgIG15ICRhdHRyTmFtZSA9ICRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsKQEAgLTEyMDksNyArMTIwNiw3IEBAIHN1YiBHZW5lcmF0
ZU5vcm1hbEF0dHJTZXR0ZXIKICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiI2lmICR7Y29u
ZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKIAogICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsICJzdGF0aWMgdm9pZCAke2F0dHJOYW1lfUF0dHJTZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKVxue1xuIik7Ci0gICAgcHVzaChAaW1wbENvbnRlbnRE
ZWNscywgIiAgICBJTkNfU1RBVFMoXCJET00uJGltcGxDbGFzc05hbWUuJGF0dHJOYW1lLl9zZXRc
Iik7XG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIElOQ19TVEFUUyhcIkRP
TS4kaW50ZXJmYWNlTmFtZS4kYXR0ck5hbWUuX3NldFwiKTtcbiIpOwogICAgIHB1c2goQGltcGxD
b250ZW50RGVjbHMsIEdlbmVyYXRlRmVhdHVyZU9ic2VydmF0aW9uKCRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4TWVhc3VyZUFzIn0pKTsKIAogICAgICMgSWYg
dGhlICJTdHJpY3RUeXBlQ2hlY2tpbmciIGV4dGVuZGVkIGF0dHJpYnV0ZSBpcyBwcmVzZW50LCBh
bmQgdGhlIGF0dHJpYnV0ZSdzIHR5cGUgaXMgYW4KQEAgLTEyMjcsMTYgKzEyMjQsMTYgQEAgc3Vi
IEdlbmVyYXRlTm9ybWFsQXR0clNldHRlcgogICAgICAgICB9CiAgICAgfQogCi0gICAgbXkgJHN2
Z05hdGl2ZVR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0U1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCRp
bXBsQ2xhc3NOYW1lKTsKKyAgICBteSAkc3ZnTmF0aXZlVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5H
ZXRTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJGludGVyZmFjZU5hbWUpOwogICAgIGlmICgkc3ZnTmF0
aXZlVHlwZSkgewotICAgICAgICBteSAkc3ZnV3JhcHBlZE5hdGl2ZVR5cGUgPSAkY29kZUdlbmVy
YXRvci0+R2V0U1ZHV3JhcHBlZFR5cGVOZWVkaW5nVGVhck9mZigkaW1wbENsYXNzTmFtZSk7Cisg
ICAgICAgIG15ICRzdmdXcmFwcGVkTmF0aXZlVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRTVkdX
cmFwcGVkVHlwZU5lZWRpbmdUZWFyT2ZmKCRpbnRlcmZhY2VOYW1lKTsKICAgICAgICAgaWYgKCRz
dmdXcmFwcGVkTmF0aXZlVHlwZSA9fiAvTGlzdCQvKSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudERlY2xzLCA8PEVORCk7Ci0gICAgJHN2Z05hdGl2ZVR5cGUqIGltcCA9IFY4JHtpbXBs
Q2xhc3NOYW1lfTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgJHN2Z05hdGl2ZVR5cGUq
IGltcCA9IFY4JHtpbnRlcmZhY2VOYW1lfTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiBFTkQK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJFeGNlcHRp
b25Db2RlLmgiKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgJHN2
Z05hdGl2ZVR5cGUqIHdyYXBwZXIgPSBWOCR7aW1wbENsYXNzTmFtZX06OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAg
ICRzdmdOYXRpdmVUeXBlKiB3cmFwcGVyID0gVjgke2ludGVyZmFjZU5hbWV9Ojp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywg
IiAgICBpZiAod3JhcHBlci0+aXNSZWFkT25seSgpKSB7XG4iKTsKICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsICIgICAgICAgIHNldERPTUV4Y2VwdGlvbihOT19NT0RJRklDQVRJ
T05fQUxMT1dFRF9FUlIsIGluZm8uR2V0SXNvbGF0ZSgpKTtcbiIpOwogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnREZWNscywgIiAgICAgICAgcmV0dXJuO1xuIik7CkBAIC0xMjQ2LDcgKzEy
NDMsNyBAQCBFTkQKICAgICAgICAgfQogICAgIH0gZWxzaWYgKCRhdHRyRXh0LT57IlY4T25Qcm90
byJ9KSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKLSAgICAke2lt
cGxDbGFzc05hbWV9KiBpbXAgPSBWOCR7aW1wbENsYXNzTmFtZX06OnRvTmF0aXZlKGluZm8uSG9s
ZGVyKCkpOworICAgICR7aW50ZXJmYWNlTmFtZX0qIGltcCA9IFY4JHtpbnRlcmZhY2VOYW1lfTo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiBFTkQKICAgICB9IGVsc2UgewogICAgICAgICBteSAk
YXR0clR5cGUgPSBHZXRUeXBlRnJvbVNpZ25hdHVyZSgkYXR0cmlidXRlLT5zaWduYXR1cmUpOwpA
QCAtMTI2Nyw3ICsxMjY0LDcgQEAgRU5ECiAKICAgICAgICAgaWYgKCEkYXR0cmlidXRlLT5pc1N0
YXRpYykgewogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOwotICAg
ICR7aW1wbENsYXNzTmFtZX0qIGltcCA9IFY4JHtpbXBsQ2xhc3NOYW1lfTo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CisgICAgJHtpbnRlcmZhY2VOYW1lfSogaW1wID0gVjgke2ludGVyZmFjZU5h
bWV9Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKIEVORAogICAgICAgICB9CiAgICAgfQpAQCAt
MTMwNCw3ICsxMzAxLDcgQEAgRU5ECiAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7XG4iKTsKICAgICB9CiAKLSAgICBpZiAoJGltcGxDbGFz
c05hbWUgZXEgIlNWR051bWJlciIpIHsKKyAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIlNWR051
bWJlciIpIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAqaW1wID0gJHJl
c3VsdDtcbiIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1
cmUtPnR5cGUgZXEgIkV2ZW50TGlzdGVuZXIiKSB7CkBAIC0xNDA2LDcgKzE0MDMsNyBAQCBzdWIg
R2VuZXJhdGVOZXdGdW5jdGlvblRlbXBsYXRlCiAKIHN1YiBHZW5lcmF0ZUV2ZW50TGlzdGVuZXJD
YWxsYmFjawogewotICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gc2hpZnQ7CisgICAgbXkgJGludGVy
ZmFjZU5hbWUgPSBzaGlmdDsKICAgICBteSAkcmVxdWlyZXNIaWRkZW5EZXBlbmRlbmN5ID0gc2hp
ZnQ7CiAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9IHNoaWZ0OwogICAgIG15ICRsb29rdXBUeXBlID0g
KCRmdW5jdGlvbk5hbWUgZXEgImFkZCIpID8gIk9yQ3JlYXRlIiA6ICJPbmx5IjsKQEAgLTE0MTYs
MTQgKzE0MTMsMTQgQEAgc3ViIEdlbmVyYXRlRXZlbnRMaXN0ZW5lckNhbGxiYWNrCiAgICAgcHVz
aChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiAke2Z1bmN0aW9uTmFtZX1FdmVudExpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS4ke2ltcGxDbGFzc05hbWV9LiR7ZnVuY3Rp
b25OYW1lfUV2ZW50TGlzdGVuZXIoKSIpOworICAgIElOQ19TVEFUUygiRE9NLiR7aW50ZXJmYWNl
TmFtZX0uJHtmdW5jdGlvbk5hbWV9RXZlbnRMaXN0ZW5lcigpIik7CiAgICAgUmVmUHRyPEV2ZW50
TGlzdGVuZXI+IGxpc3RlbmVyID0gVjhET01XcmFwcGVyOjpnZXRFdmVudExpc3RlbmVyKGFyZ3Nb
MV0sIGZhbHNlLCBMaXN0ZW5lckZpbmQke2xvb2t1cFR5cGV9KTsKICAgICBpZiAobGlzdGVuZXIp
IHsKLSAgICAgICAgVjgke2ltcGxDbGFzc05hbWV9Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKS0+
JHtmdW5jdGlvbk5hbWV9RXZlbnRMaXN0ZW5lcih0b1dlYkNvcmVBdG9taWNTdHJpbmcoYXJnc1sw
XSksIGxpc3RlbmVyJHtwYXNzUmVmUHRySGFuZGxpbmd9LCBhcmdzWzJdLT5Cb29sZWFuVmFsdWUo
KSk7CisgICAgICAgIFY4JHtpbnRlcmZhY2VOYW1lfTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSkt
PiR7ZnVuY3Rpb25OYW1lfUV2ZW50TGlzdGVuZXIodG9XZWJDb3JlQXRvbWljU3RyaW5nKGFyZ3Nb
MF0pLCBsaXN0ZW5lciR7cGFzc1JlZlB0ckhhbmRsaW5nfSwgYXJnc1syXS0+Qm9vbGVhblZhbHVl
KCkpOwogRU5ECiAgICAgaWYgKCRyZXF1aXJlc0hpZGRlbkRlcGVuZGVuY3kpIHsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOwotICAgICAgICAke2hpZGRlbkRlcGVuZGVu
Y3lBY3Rpb259SGlkZGVuRGVwZW5kZW5jeShhcmdzLkhvbGRlcigpLCBhcmdzWzFdLCBWOCR7aW1w
bENsYXNzTmFtZX06OmV2ZW50TGlzdGVuZXJDYWNoZUluZGV4KTsKKyAgICAgICAgJHtoaWRkZW5E
ZXBlbmRlbmN5QWN0aW9ufUhpZGRlbkRlcGVuZGVuY3koYXJncy5Ib2xkZXIoKSwgYXJnc1sxXSwg
Vjgke2ludGVyZmFjZU5hbWV9OjpldmVudExpc3RlbmVyQ2FjaGVJbmRleCk7CiBFTkQKICAgICB9
CiAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOwpAQCAtMTUxMCw3ICsxNTA3LDcg
QEAgc3ViIEdlbmVyYXRlT3ZlcmxvYWRlZEZ1bmN0aW9uQ2FsbGJhY2sKIHsKICAgICBteSAkZnVu
Y3Rpb24gPSBzaGlmdDsKICAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKLSAgICBteSAkaW1wbENs
YXNzTmFtZSA9IHNoaWZ0OworICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7CiAKICAgICAj
IEdlbmVyYXRlIGNvZGUgZm9yIGNob29zaW5nIHRoZSBjb3JyZWN0IG92ZXJsb2FkIHRvIGNhbGwu
IE92ZXJsb2FkcyBhcmUKICAgICAjIGNob3NlbiBiYXNlZCBvbiB0aGUgdG90YWwgbnVtYmVyIG9m
IGFyZ3VtZW50cyBwYXNzZWQgYW5kIHRoZSB0eXBlIG9mCkBAIC0xNTI1LDcgKzE1MjIsNyBAQCBz
dWIgR2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rpb25DYWxsYmFjawogICAgIHB1c2goQGltcGxDb250
ZW50RGVjbHMsIDw8RU5EKTsKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtuYW1lfUNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKFwiRE9N
LiRpbXBsQ2xhc3NOYW1lLiRuYW1lXCIpOworICAgIElOQ19TVEFUUyhcIkRPTS4kaW50ZXJmYWNl
TmFtZS4kbmFtZVwiKTsKIEVORAogICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIEdlbmVyYXRl
RmVhdHVyZU9ic2VydmF0aW9uKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiVjhNZWFzdXJlQXMifSkpOwogCkBAIC0xNTUwLDcgKzE1NDcsNyBAQCBzdWIgR2VuZXJh
dGVGdW5jdGlvbkNhbGxiYWNrCiB7CiAgICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CiAgICAgbXkg
JGRhdGFOb2RlID0gc2hpZnQ7Ci0gICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlmdDsKKyAgICBt
eSAkaW50ZXJmYWNlTmFtZSA9IHNoaWZ0OwogCiAgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkZGF0
YU5vZGUtPm5hbWU7CiAgICAgbXkgJG5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsK
QEAgLTE1NjQsMTAgKzE1NjEsMTAgQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb25DYWxsYmFjawogICAg
ICMgYnV0IHRoZXkgYXJlIGV4dHJlbWVseSBjb25zaXN0ZW50IGFjcm9zcyB0aGUgdmFyaW91cyBj
bGFzc2VzIHRoYXQgdGFrZSBldmVudCBsaXN0ZW5lcnMsCiAgICAgIyBzbyB3ZSBjYW4gZ2VuZXJh
dGUgdGhlbSBhcyBhICJzcGVjaWFsIGNhc2UiLgogICAgIGlmICgkbmFtZSBlcSAiYWRkRXZlbnRM
aXN0ZW5lciIpIHsKLSAgICAgICAgR2VuZXJhdGVFdmVudExpc3RlbmVyQ2FsbGJhY2soJGltcGxD
bGFzc05hbWUsICFJc05vZGVTdWJUeXBlKCRkYXRhTm9kZSksICJhZGQiKTsKKyAgICAgICAgR2Vu
ZXJhdGVFdmVudExpc3RlbmVyQ2FsbGJhY2soJGludGVyZmFjZU5hbWUsICFJc05vZGVTdWJUeXBl
KCRkYXRhTm9kZSksICJhZGQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzaWYgKCRuYW1l
IGVxICJyZW1vdmVFdmVudExpc3RlbmVyIikgewotICAgICAgICBHZW5lcmF0ZUV2ZW50TGlzdGVu
ZXJDYWxsYmFjaygkaW1wbENsYXNzTmFtZSwgIUlzTm9kZVN1YlR5cGUoJGRhdGFOb2RlKSwgInJl
bW92ZSIpOworICAgICAgICBHZW5lcmF0ZUV2ZW50TGlzdGVuZXJDYWxsYmFjaygkaW50ZXJmYWNl
TmFtZSwgIUlzTm9kZVN1YlR5cGUoJGRhdGFOb2RlKSwgInJlbW92ZSIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0xNTc2LDcgKzE1NzMsNyBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbkNh
bGxiYWNrCiAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOwogc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiAke25hbWV9Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKLSAgICBJTkNfU1RBVFMoXCJET00uJGltcGxDbGFzc05hbWUuJG5hbWVcIik7CisgICAg
SU5DX1NUQVRTKFwiRE9NLiRpbnRlcmZhY2VOYW1lLiRuYW1lXCIpOwogRU5ECiAgICAgcHVzaChA
aW1wbENvbnRlbnREZWNscywgR2VuZXJhdGVGZWF0dXJlT2JzZXJ2YXRpb24oJGZ1bmN0aW9uLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOE1lYXN1cmVBcyJ9KSk7CiAKQEAgLTE1
ODUsMzEgKzE1ODIsMzEgQEAgRU5ECiAgICAgaWYgKCRuYW1lIGVxICJzZXQiIGFuZCAkZGF0YU5v
ZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJUeXBlZEFycmF5In0pIHsKICAgICAgICAgQWRkVG9J
bXBsSW5jbHVkZXMoIlY4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmgiKTsKICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnREZWNscywgPDxFTkQpOwotICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVy
PCRpbXBsQ2xhc3NOYW1lLCBWOCR7aW1wbENsYXNzTmFtZX0+KGFyZ3MpOworICAgIHJldHVybiBz
ZXRXZWJHTEFycmF5SGVscGVyPCRpbnRlcmZhY2VOYW1lLCBWOCR7aW50ZXJmYWNlTmFtZX0+KGFy
Z3MpOwogfQogCiBFTkQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG15ICgkc3ZnUHJv
cGVydHlUeXBlLCAkc3ZnTGlzdFByb3BlcnR5VHlwZSwgJHN2Z05hdGl2ZVR5cGUpID0gR2V0U1ZH
UHJvcGVydHlUeXBlcygkaW1wbENsYXNzTmFtZSk7CisgICAgbXkgKCRzdmdQcm9wZXJ0eVR5cGUs
ICRzdmdMaXN0UHJvcGVydHlUeXBlLCAkc3ZnTmF0aXZlVHlwZSkgPSBHZXRTVkdQcm9wZXJ0eVR5
cGVzKCRpbnRlcmZhY2VOYW1lKTsKIAogICAgIGlmICgkc3ZnTmF0aXZlVHlwZSkgewotICAgICAg
ICBteSAkbmF0aXZlQ2xhc3NOYW1lID0gR2V0TmF0aXZlVHlwZSgkaW1wbENsYXNzTmFtZSk7IAot
ICAgICAgICBpZiAoJGltcGxDbGFzc05hbWUgPX4gL0xpc3QkLykgewotICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnREZWNscywgIiAgICAkbmF0aXZlQ2xhc3NOYW1lIGltcCA9IFY4JHtpbXBs
Q2xhc3NOYW1lfTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7XG4iKTsKKyAgICAgICAgbXkgJG5h
dGl2ZUNsYXNzTmFtZSA9IEdldE5hdGl2ZVR5cGUoJGludGVyZmFjZU5hbWUpOyAKKyAgICAgICAg
aWYgKCRpbnRlcmZhY2VOYW1lID1+IC9MaXN0JC8pIHsKKyAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50RGVjbHMsICIgICAgJG5hdGl2ZUNsYXNzTmFtZSBpbXAgPSBWOCR7aW50ZXJmYWNlTmFt
ZX06OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpO1xuIik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRXhjZXB0aW9uQ29kZS5oIik7Ci0gICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICRuYXRpdmVDbGFzc05hbWUgd3JhcHBlciA9
IFY4JHtpbXBsQ2xhc3NOYW1lfTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7XG4iKTsKKyAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgJG5hdGl2ZUNsYXNzTmFtZSB3cmFw
cGVyID0gVjgke2ludGVyZmFjZU5hbWV9Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTtcbiIpOwog
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBpZiAod3JhcHBlci0+aXNS
ZWFkT25seSgpKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAg
ICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiwg
YXJncy5HZXRJc29sYXRlKCkpO1xuIik7Ci0gICAgICAgICAgICBteSAkc3ZnV3JhcHBlZE5hdGl2
ZVR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0U1ZHV3JhcHBlZFR5cGVOZWVkaW5nVGVhck9mZigk
aW1wbENsYXNzTmFtZSk7CisgICAgICAgICAgICBteSAkc3ZnV3JhcHBlZE5hdGl2ZVR5cGUgPSAk
Y29kZUdlbmVyYXRvci0+R2V0U1ZHV3JhcHBlZFR5cGVOZWVkaW5nVGVhck9mZigkaW50ZXJmYWNl
TmFtZSk7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICRzdmdXcmFw
cGVkTmF0aXZlVHlwZSYgaW1wSW5zdGFuY2UgPSB3cmFwcGVyLT5wcm9wZXJ0eVJlZmVyZW5jZSgp
O1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICRzdmdXcmFw
cGVkTmF0aXZlVHlwZSogaW1wID0gJmltcEluc3RhbmNlO1xuIik7CiAgICAgICAgIH0KICAgICB9
IGVsc2lmICghJGZ1bmN0aW9uLT5pc1N0YXRpYykgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dERlY2xzLCA8PEVORCk7Ci0gICAgJHtpbXBsQ2xhc3NOYW1lfSogaW1wID0gVjgke2ltcGxDbGFz
c05hbWV9Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICAke2ludGVyZmFjZU5hbWV9KiBp
bXAgPSBWOCR7aW50ZXJmYWNlTmFtZX06OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogRU5ECiAg
ICAgfQogCkBAIC0xNjQ5LDExICsxNjQ2LDExIEBAIEVORAogRU5ECiAgICAgfQogCi0gICAgbXkg
KCRwYXJhbWV0ZXJDaGVja1N0cmluZywgJHBhcmFtSW5kZXgsICVyZXBsYWNlbWVudHMpID0gR2Vu
ZXJhdGVQYXJhbWV0ZXJzQ2hlY2soJGZ1bmN0aW9uLCAkaW1wbENsYXNzTmFtZSk7CisgICAgbXkg
KCRwYXJhbWV0ZXJDaGVja1N0cmluZywgJHBhcmFtSW5kZXgsICVyZXBsYWNlbWVudHMpID0gR2Vu
ZXJhdGVQYXJhbWV0ZXJzQ2hlY2soJGZ1bmN0aW9uLCAkaW50ZXJmYWNlTmFtZSk7CiAgICAgcHVz
aChAaW1wbENvbnRlbnREZWNscywgJHBhcmFtZXRlckNoZWNrU3RyaW5nKTsKIAogICAgICMgQnVp
bGQgdGhlIGZ1bmN0aW9uIGNhbGwgc3RyaW5nLgotICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMs
IEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nKCRmdW5jdGlvbiwgJHBhcmFtSW5kZXgsICIgICAg
IiwgJGltcGxDbGFzc05hbWUsICVyZXBsYWNlbWVudHMpKTsKKyAgICBwdXNoKEBpbXBsQ29udGVu
dERlY2xzLCBHZW5lcmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZygkZnVuY3Rpb24sICRwYXJhbUluZGV4
LCAiICAgICIsICRpbnRlcmZhY2VOYW1lLCAlcmVwbGFjZW1lbnRzKSk7CiAKICAgICBpZiAoJHJh
aXNlc0V4Y2VwdGlvbnMpIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICB9
XG4iKTsKQEAgLTE3NDgsNyArMTc0NSw3IEBAIHN1YiBHZXRJbmRleE9mCiBzdWIgR2VuZXJhdGVQ
YXJhbWV0ZXJzQ2hlY2sKIHsKICAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKLSAgICBteSAkaW1w
bENsYXNzTmFtZSA9IHNoaWZ0OworICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7CiAKICAg
ICBteSAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgPSAiIjsKICAgICBteSAkcGFyYW1JbmRleCA9IDA7
CkBAIC0xNzY1LDcgKzE3NjIsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAg
ICAgbXkgJG9wdGlvbmFsID0gJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9wdGlv
bmFsIn07CiAgICAgICAgIGlmICgkb3B0aW9uYWwgJiYgJG9wdGlvbmFsIG5lICJEZWZhdWx0SXNV
bmRlZmluZWQiICYmICRvcHRpb25hbCBuZSAiRGVmYXVsdElzTnVsbFN0cmluZyIgJiYgJG5hdGl2
ZVR5cGUgbmUgIkRpY3Rpb25hcnkiICYmICEkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ2FsbGJhY2sifSkgewogICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIg
ICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPD0gJHBhcmFtSW5kZXgpIHtcbiI7Ci0gICAgICAgICAgICBt
eSAkZnVuY3Rpb25DYWxsID0gR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcoJGZ1bmN0aW9uLCAk
cGFyYW1JbmRleCwgIiAgICAiIHggMiwgJGltcGxDbGFzc05hbWUsICVyZXBsYWNlbWVudHMpOwor
ICAgICAgICAgICAgbXkgJGZ1bmN0aW9uQ2FsbCA9IEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5n
KCRmdW5jdGlvbiwgJHBhcmFtSW5kZXgsICIgICAgIiB4IDIsICRpbnRlcmZhY2VOYW1lLCAlcmVw
bGFjZW1lbnRzKTsKICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAkZnVuY3Rp
b25DYWxsOwogICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgfVxuIjsK
ICAgICAgICAgfQpAQCAtMTkwNywxMiArMTkwNCwxMiBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJz
Q2hlY2sKIHN1YiBHZW5lcmF0ZU92ZXJsb2FkZWRDb25zdHJ1Y3RvckNhbGxiYWNrCiB7CiAgICAg
bXkgJGRhdGFOb2RlID0gc2hpZnQ7Ci0gICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlmdDsKKyAg
ICBteSAkaW50ZXJmYWNlTmFtZSA9IHNoaWZ0OwogICAgIAogICAgIHB1c2goQGltcGxDb250ZW50
LCA8PEVORCk7Ci12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjgke2ltcGxDbGFzc05hbWV9Ojpjb25z
dHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjgke2ludGVyZmFjZU5hbWV9Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uJHtpbXBsQ2xhc3NOYW1l
fS5Db25zdHJ1Y3RvciIpOworICAgIElOQ19TVEFUUygiRE9NLiR7aW50ZXJmYWNlTmFtZX0uQ29u
c3RydWN0b3IiKTsKICAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCiAgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2Fs
bGVkIGFzIGEgZnVuY3Rpb24uIik7CiAKQEAgLTE5NDIsNyArMTkzOSw3IEBAIEVORAogc3ViIEdl
bmVyYXRlU2luZ2xlQ29uc3RydWN0b3JDYWxsYmFjawogewogICAgIG15ICRkYXRhTm9kZSA9IHNo
aWZ0OwotICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gc2hpZnQ7CisgICAgbXkgJGludGVyZmFjZU5h
bWUgPSBzaGlmdDsKICAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKIAogICAgIG15ICRvdmVybG9h
ZGVkSW5kZXhTdHJpbmcgPSAiIjsKQEAgLTE5NjcsOSArMTk2NCw5IEBAIHN1YiBHZW5lcmF0ZVNp
bmdsZUNvbnN0cnVjdG9yQ2FsbGJhY2sKICAgICBteSBAYmVmb3JlQXJndW1lbnRMaXN0OwogICAg
IG15IEBhZnRlckFyZ3VtZW50TGlzdDsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwot
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4JHtpbXBsQ2xhc3NOYW1lfTo6Y29uc3RydWN0b3Ike292
ZXJsb2FkZWRJbmRleFN0cmluZ31DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQor
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4JHtpbnRlcmZhY2VOYW1lfTo6Y29uc3RydWN0b3Ike292
ZXJsb2FkZWRJbmRleFN0cmluZ31DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewotICAgIElOQ19TVEFUUygiRE9NLiR7aW1wbENsYXNzTmFtZX0uQ29uc3RydWN0b3Ike292ZXJs
b2FkZWRJbmRleFN0cmluZ30iKTsKKyAgICBJTkNfU1RBVFMoIkRPTS4ke2ludGVyZmFjZU5hbWV9
LkNvbnN0cnVjdG9yJHtvdmVybG9hZGVkSW5kZXhTdHJpbmd9Iik7CiAgICAgJHttYXliZU9ic2Vy
dmVGZWF0dXJlfQogRU5ECiAKQEAgLTE5OTIsNyArMTk4OSw3IEBAIEVORAogCiAgICAgIyBGSVhN
RTogQ3VycmVudGx5IFtDb25zdHJ1Y3RvciguLi4pXSBkb2VzIG5vdCB5ZXQgc3VwcG9ydCBbT3B0
aW9uYWxdIGFyZ3VtZW50cy4KICAgICAjIEl0IGp1c3Qgc3VwcG9ydHMgW09wdGlvbmFsPURlZmF1
bHRJc1VuZGVmaW5lZF0gb3IgW09wdGlvbmFsPURlZmF1bHRJc051bGxTdHJpbmddLgotICAgIG15
ICgkcGFyYW1ldGVyQ2hlY2tTdHJpbmcsICRwYXJhbUluZGV4LCAlcmVwbGFjZW1lbnRzKSA9IEdl
bmVyYXRlUGFyYW1ldGVyc0NoZWNrKCRmdW5jdGlvbiwgJGltcGxDbGFzc05hbWUpOworICAgIG15
ICgkcGFyYW1ldGVyQ2hlY2tTdHJpbmcsICRwYXJhbUluZGV4LCAlcmVwbGFjZW1lbnRzKSA9IEdl
bmVyYXRlUGFyYW1ldGVyc0NoZWNrKCRmdW5jdGlvbiwgJGludGVyZmFjZU5hbWUpOwogICAgIHB1
c2goQGltcGxDb250ZW50LCAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcpOwogCiAgICAgaWYgKCRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn0gJiYgJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifSBlcSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dCIp
IHsKQEAgLTIwMjEsNyArMjAxOCw3IEBAIEVORAogCiAgICAgbXkgJGFyZ3VtZW50U3RyaW5nID0g
am9pbigiLCAiLCBAYmVmb3JlQXJndW1lbnRMaXN0LCBAYXJndW1lbnRMaXN0LCBAYWZ0ZXJBcmd1
bWVudExpc3QpOwogICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsKLSAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBSZWZQdHI8JHtpbXBsQ2xhc3NOYW1lfT4gaW1wbCA9ICR7aW1wbENsYXNz
TmFtZX06OmNyZWF0ZSgke2FyZ3VtZW50U3RyaW5nfSk7XG4iKTsKKyAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBSZWZQdHI8JHtpbnRlcmZhY2VOYW1lfT4gaW1wbCA9ICR7aW50ZXJmYWNlTmFt
ZX06OmNyZWF0ZSgke2FyZ3VtZW50U3RyaW5nfSk7XG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpO1xu
Iik7CiAKICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0
b3JSYWlzZXNFeGNlcHRpb24ifSkgewpAQCAtMjA0NywyOCArMjA0NCwyOCBAQCBFTkQKIHN1YiBH
ZW5lcmF0ZUNvbnN0cnVjdG9yQ2FsbGJhY2sKIHsKICAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsK
LSAgICBteSAkaW1wbENsYXNzTmFtZSA9IHNoaWZ0OworICAgIG15ICRpbnRlcmZhY2VOYW1lID0g
c2hpZnQ7CiAKICAgICBpZiAoQHskZGF0YU5vZGUtPmNvbnN0cnVjdG9yc30gPT0gMSkgewotICAg
ICAgICBHZW5lcmF0ZVNpbmdsZUNvbnN0cnVjdG9yQ2FsbGJhY2soJGRhdGFOb2RlLCAkaW1wbENs
YXNzTmFtZSwgQHskZGF0YU5vZGUtPmNvbnN0cnVjdG9yc31bMF0pOworICAgICAgICBHZW5lcmF0
ZVNpbmdsZUNvbnN0cnVjdG9yQ2FsbGJhY2soJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSwgQHsk
ZGF0YU5vZGUtPmNvbnN0cnVjdG9yc31bMF0pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGZvcmVh
Y2ggbXkgJGNvbnN0cnVjdG9yIChAeyRkYXRhTm9kZS0+Y29uc3RydWN0b3JzfSkgewotICAgICAg
ICAgICAgR2VuZXJhdGVTaW5nbGVDb25zdHJ1Y3RvckNhbGxiYWNrKCRkYXRhTm9kZSwgJGltcGxD
bGFzc05hbWUsICRjb25zdHJ1Y3Rvcik7CisgICAgICAgICAgICBHZW5lcmF0ZVNpbmdsZUNvbnN0
cnVjdG9yQ2FsbGJhY2soJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSwgJGNvbnN0cnVjdG9yKTsK
ICAgICAgICAgfQotICAgICAgICBHZW5lcmF0ZU92ZXJsb2FkZWRDb25zdHJ1Y3RvckNhbGxiYWNr
KCRkYXRhTm9kZSwgJGltcGxDbGFzc05hbWUpOworICAgICAgICBHZW5lcmF0ZU92ZXJsb2FkZWRD
b25zdHJ1Y3RvckNhbGxiYWNrKCRkYXRhTm9kZSwgJGludGVyZmFjZU5hbWUpOwogICAgIH0KIH0K
IAogc3ViIEdlbmVyYXRlRXZlbnRDb25zdHJ1Y3RvckNhbGxiYWNrCiB7CiAgICAgbXkgJGRhdGFO
b2RlID0gc2hpZnQ7Ci0gICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlmdDsKKyAgICBteSAkaW50
ZXJmYWNlTmFtZSA9IHNoaWZ0OwogCiAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkRpY3Rpb25hcnku
aCIpOwogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci12ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjgke2ltcGxDbGFzc05hbWV9Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjgke2ludGVyZmFjZU5hbWV9Ojpj
b25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5D
X1NUQVRTKCJET00uJHtpbXBsQ2xhc3NOYW1lfS5Db25zdHJ1Y3RvciIpOworICAgIElOQ19TVEFU
UygiRE9NLiR7aW50ZXJmYWNlTmFtZX0uQ29uc3RydWN0b3IiKTsKIAogICAgIGlmICghYXJncy5J
c0NvbnN0cnVjdENhbGwoKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCJET00gb2Jq
ZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iKTsKQEAgLTIw
ODAsMjEgKzIwNzcsMjEgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4JHtpbXBsQ2xhc3NOYW1l
fTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnQKICAgICAgICAgcmV0dXJu
IHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogCiAgICAg
U1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFBhcmFtZXRlcjw+LCB0eXBl
LCBhcmdzWzBdKTsKLSAgICAke2ltcGxDbGFzc05hbWV9SW5pdCBldmVudEluaXQ7CisgICAgJHtp
bnRlcmZhY2VOYW1lfUluaXQgZXZlbnRJbml0OwogICAgIGlmIChhcmdzLkxlbmd0aCgpID49IDIp
IHsKICAgICAgICAgRVhDRVBUSU9OX0JMT0NLKERpY3Rpb25hcnksIG9wdGlvbnMsIERpY3Rpb25h
cnkoYXJnc1sxXSwgYXJncy5HZXRJc29sYXRlKCkpKTsKLSAgICAgICAgaWYgKCFmaWxsJHtpbXBs
Q2xhc3NOYW1lfUluaXQoZXZlbnRJbml0LCBvcHRpb25zKSkKKyAgICAgICAgaWYgKCFmaWxsJHtp
bnRlcmZhY2VOYW1lfUluaXQoZXZlbnRJbml0LCBvcHRpb25zKSkKICAgICAgICAgICAgIHJldHVy
biB2OFVuZGVmaW5lZCgpOwogICAgIH0KIAotICAgIFJlZlB0cjwke2ltcGxDbGFzc05hbWV9PiBl
dmVudCA9ICR7aW1wbENsYXNzTmFtZX06OmNyZWF0ZSh0eXBlLCBldmVudEluaXQpOworICAgIFJl
ZlB0cjwke2ludGVyZmFjZU5hbWV9PiBldmVudCA9ICR7aW50ZXJmYWNlTmFtZX06OmNyZWF0ZSh0
eXBlLCBldmVudEluaXQpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0g
YXJncy5Ib2xkZXIoKTsKICAgICBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIoZXZlbnQu
cmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgIHJldHVy
biB3cmFwcGVyOwogfQogCi1ib29sIGZpbGwke2ltcGxDbGFzc05hbWV9SW5pdCgke2ltcGxDbGFz
c05hbWV9SW5pdCYgZXZlbnRJbml0LCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zKQorYm9vbCBm
aWxsJHtpbnRlcmZhY2VOYW1lfUluaXQoJHtpbnRlcmZhY2VOYW1lfUluaXQmIGV2ZW50SW5pdCwg
Y29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucykKIHsKIEVORAogCkBAIC0yMTI0LDE2ICsyMTIxLDE2
IEBAIEVORAogc3ViIEdlbmVyYXRlVHlwZWRBcnJheUNvbnN0cnVjdG9yQ2FsbGJhY2sKIHsKICAg
ICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKLSAgICBteSAkaW1wbENsYXNzTmFtZSA9IHNoaWZ0Owor
ICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7CiAgICAgbXkgJHZpZXdUeXBlID0gR2V0VHlw
ZU5hbWVPZkV4dGVybmFsVHlwZWRBcnJheSgkZGF0YU5vZGUpOwogICAgIG15ICR0eXBlID0gJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVHlwZWRBcnJheSJ9OwogICAgIEFkZFRvSW1w
bEluY2x1ZGVzKCJWOEFycmF5QnVmZmVyVmlld0N1c3RvbS5oIik7CiAKICAgICBwdXNoKEBpbXBs
Q29udGVudCwgPDxFTkQpOwotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4JHtpbXBsQ2xhc3NOYW1l
fTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4JHtpbnRlcmZhY2VOYW1lfTo6Y29uc3RydWN0b3JDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLiR7aW1wbENs
YXNzTmFtZX0uQ29udHJ1Y3RvciIpOwotICAgIHJldHVybiBjb25zdHJ1Y3RXZWJHTEFycmF5PCRp
bXBsQ2xhc3NOYW1lLCBWOCR7aW1wbENsYXNzTmFtZX0sICR0eXBlPihhcmdzLCAmaW5mbywgJHZp
ZXdUeXBlKTsKKyAgICBJTkNfU1RBVFMoIkRPTS4ke2ludGVyZmFjZU5hbWV9LkNvbnRydWN0b3Ii
KTsKKyAgICByZXR1cm4gY29uc3RydWN0V2ViR0xBcnJheTwkaW50ZXJmYWNlTmFtZSwgVjgke2lu
dGVyZmFjZU5hbWV9LCAkdHlwZT4oYXJncywgJmluZm8sICR2aWV3VHlwZSk7CiB9CiAKIEVORApA
QCAtMjE0Myw3ICsyMTQwLDcgQEAgc3ViIEdlbmVyYXRlTmFtZWRDb25zdHJ1Y3RvckNhbGxiYWNr
CiB7CiAgICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CiAgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7
Ci0gICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlmdDsKKyAgICBteSAkaW50ZXJmYWNlTmFtZSA9
IHNoaWZ0OwogCiAgICAgbXkgJHJhaXNlc0V4Y2VwdGlvbnMgPSBAeyRmdW5jdGlvbi0+cmFpc2Vz
RXhjZXB0aW9uc307CiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNv
bnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9uIn0pIHsKQEAgLTIxNjQsMTYgKzIxNjEsMTYgQEAgc3Vi
IEdlbmVyYXRlTmFtZWRDb25zdHJ1Y3RvckNhbGxiYWNrCiAKICAgICBteSAkdG9BY3RpdmVET01P
YmplY3QgPSAiMCI7CiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkFj
dGl2ZURPTU9iamVjdCJ9KSB7Ci0gICAgICAgICR0b0FjdGl2ZURPTU9iamVjdCA9ICJWOCR7aW1w
bENsYXNzTmFtZX06OnRvQWN0aXZlRE9NT2JqZWN0IjsKKyAgICAgICAgJHRvQWN0aXZlRE9NT2Jq
ZWN0ID0gIlY4JHtpbnRlcmZhY2VOYW1lfTo6dG9BY3RpdmVET01PYmplY3QiOwogICAgIH0KICAg
ICBBZGRUb0ltcGxJbmNsdWRlcygiRnJhbWUuaCIpOwogCiAgICAgcHVzaChAaW1wbENvbnRlbnQs
IDw8RU5EKTsKLVdyYXBwZXJUeXBlSW5mbyBWOCR7aW1wbENsYXNzTmFtZX1Db25zdHJ1Y3Rvcjo6
aW5mbyA9IHsgVjgke2ltcGxDbGFzc05hbWV9Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlLCBWOCR7
aW1wbENsYXNzTmFtZX06OmRlcmVmT2JqZWN0LCAke3RvQWN0aXZlRE9NT2JqZWN0fSwgMCwgVjgk
e2ltcGxDbGFzc05hbWV9OjppbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMsIDAs
IFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlIH07CitXcmFwcGVyVHlwZUluZm8gVjgke2ludGVy
ZmFjZU5hbWV9Q29uc3RydWN0b3I6OmluZm8gPSB7IFY4JHtpbnRlcmZhY2VOYW1lfUNvbnN0cnVj
dG9yOjpHZXRUZW1wbGF0ZSwgVjgke2ludGVyZmFjZU5hbWV9OjpkZXJlZk9iamVjdCwgJHt0b0Fj
dGl2ZURPTU9iamVjdH0sIDAsIFY4JHtpbnRlcmZhY2VOYW1lfTo6aW5zdGFsbFBlckNvbnRleHRQ
cm90b3R5cGVQcm9wZXJ0aWVzLCAwLCBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSB9OwogCi1z
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4JHtpbXBsQ2xhc3NOYW1lfUNvbnN0cnVjdG9y
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjgke2ludGVyZmFjZU5hbWV9Q29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLiR7aW1wbENsYXNzTmFtZX0u
Q29uc3RydWN0b3IiKTsKKyAgICBJTkNfU1RBVFMoIkRPTS4ke2ludGVyZmFjZU5hbWV9LkNvbnN0
cnVjdG9yIik7CiAgICAgJHttYXliZU9ic2VydmVGZWF0dXJlfQogICAgIGlmICghYXJncy5Jc0Nv
bnN0cnVjdENhbGwoKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCJET00gb2JqZWN0
IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iKTsKQEAgLTIxODMs
NyArMjE4MCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjgke2ltcGxDbGFzc05h
bWV9Q29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJnCiAKICAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBjdXJyZW50RG9jdW1lbnQoQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpKTsKIAotICAg
IC8vIE1ha2Ugc3VyZSB0aGUgZG9jdW1lbnQgaXMgYWRkZWQgdG8gdGhlIERPTSBOb2RlIG1hcC4g
T3RoZXJ3aXNlLCB0aGUgJHtpbXBsQ2xhc3NOYW1lfSBpbnN0YW5jZQorICAgIC8vIE1ha2Ugc3Vy
ZSB0aGUgZG9jdW1lbnQgaXMgYWRkZWQgdG8gdGhlIERPTSBOb2RlIG1hcC4gT3RoZXJ3aXNlLCB0
aGUgJHtpbnRlcmZhY2VOYW1lfSBpbnN0YW5jZQogICAgIC8vIG1heSBlbmQgdXAgYmVpbmcgdGhl
IG9ubHkgbm9kZSBpbiB0aGUgbWFwIGFuZCBnZXQgZ2FyYmFnZS1jb2xsZWN0ZWQgcHJlbWF0dXJl
bHkuCiAgICAgdG9WOChkb2N1bWVudCwgYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRlKCkp
OwogCkBAIC0yMTk3LDcgKzIxOTQsNyBAQCBFTkQKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7XG4iKTsKICAgICB9CiAKLSAgICBteSAoJHBhcmFt
ZXRlckNoZWNrU3RyaW5nLCAkcGFyYW1JbmRleCwgJXJlcGxhY2VtZW50cykgPSBHZW5lcmF0ZVBh
cmFtZXRlcnNDaGVjaygkZnVuY3Rpb24sICRpbXBsQ2xhc3NOYW1lKTsKKyAgICBteSAoJHBhcmFt
ZXRlckNoZWNrU3RyaW5nLCAkcGFyYW1JbmRleCwgJXJlcGxhY2VtZW50cykgPSBHZW5lcmF0ZVBh
cmFtZXRlcnNDaGVjaygkZnVuY3Rpb24sICRpbnRlcmZhY2VOYW1lKTsKICAgICBwdXNoKEBpbXBs
Q29udGVudCwgJHBhcmFtZXRlckNoZWNrU3RyaW5nKTsKIAogICAgIHB1c2goQGJlZm9yZUFyZ3Vt
ZW50TGlzdCwgImRvY3VtZW50Iik7CkBAIC0yMjIwLDcgKzIyMTcsNyBAQCBFTkQKIAogICAgIG15
ICRhcmd1bWVudFN0cmluZyA9IGpvaW4oIiwgIiwgQGJlZm9yZUFyZ3VtZW50TGlzdCwgQGFyZ3Vt
ZW50TGlzdCwgQGFmdGVyQXJndW1lbnRMaXN0KTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxu
Iik7Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgUmVmUHRyPCR7aW1wbENsYXNzTmFtZX0+
IGltcGwgPSAke2ltcGxDbGFzc05hbWV9OjpjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKCR7YXJndW1l
bnRTdHJpbmd9KTtcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFJlZlB0cjwke2lu
dGVyZmFjZU5hbWV9PiBpbXBsID0gJHtpbnRlcmZhY2VOYW1lfTo6Y3JlYXRlRm9ySlNDb25zdHJ1
Y3Rvcigke2FyZ3VtZW50U3RyaW5nfSk7XG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpO1xuIik7CiAK
ICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JSYWlz
ZXNFeGNlcHRpb24ifSkgewpAQCAtMjIzMCw3ICsyMjI3LDcgQEAgRU5ECiAKICAgICBwdXNoKEBp
bXBsQ29udGVudCwgPDxFTkQpOwogCi0gICAgVjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVy
KGltcGwucmVsZWFzZSgpLCAmVjgke2ltcGxDbGFzc05hbWV9Q29uc3RydWN0b3I6OmluZm8sIHdy
YXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdy
YXBwZXIoaW1wbC5yZWxlYXNlKCksICZWOCR7aW50ZXJmYWNlTmFtZX1Db25zdHJ1Y3Rvcjo6aW5m
bywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgIHJldHVybiB3cmFwcGVyOwogRU5E
CiAKQEAgLTIyNDMsMTkgKzIyNDAsMTkgQEAgRU5ECiAKICAgICBwdXNoKEBpbXBsQ29udGVudCwg
PDxFTkQpOwogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjgke2ltcGxD
bGFzc05hbWV9Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKCkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBWOCR7aW50ZXJmYWNlTmFtZX1Db25zdHJ1Y3Rvcjo6R2V0VGVtcGxh
dGUoKQogewogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
Y2FjaGVkVGVtcGxhdGU7CiAgICAgaWYgKCFjYWNoZWRUZW1wbGF0ZS5Jc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBjYWNoZWRUZW1wbGF0ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsK
LSAgICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHJlc3VsdCA9IHY4OjpGdW5jdGlv
blRlbXBsYXRlOjpOZXcoVjgke2ltcGxDbGFzc05hbWV9Q29uc3RydWN0b3JDYWxsYmFjayk7Cisg
ICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvblRlbXBsYXRlPiByZXN1bHQgPSB2ODo6RnVuY3Rpb25U
ZW1wbGF0ZTo6TmV3KFY4JHtpbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yQ2FsbGJhY2spOwogCiAg
ICAgdjg6OkxvY2FsPHY4OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFuY2UgPSByZXN1bHQtPkluc3Rh
bmNlVGVtcGxhdGUoKTsKLSAgICBpbnN0YW5jZS0+U2V0SW50ZXJuYWxGaWVsZENvdW50KFY4JHtp
bXBsQ2xhc3NOYW1lfTo6aW50ZXJuYWxGaWVsZENvdW50KTsKLSAgICByZXN1bHQtPlNldENsYXNz
TmFtZSh2ODo6U3RyaW5nOjpOZXdTeW1ib2woIiR7aW1wbENsYXNzTmFtZX0iKSk7Ci0gICAgcmVz
dWx0LT5Jbmhlcml0KFY4JHtpbXBsQ2xhc3NOYW1lfTo6R2V0VGVtcGxhdGUoKSk7CisgICAgaW5z
dGFuY2UtPlNldEludGVybmFsRmllbGRDb3VudChWOCR7aW50ZXJmYWNlTmFtZX06OmludGVybmFs
RmllbGRDb3VudCk7CisgICAgcmVzdWx0LT5TZXRDbGFzc05hbWUodjg6OlN0cmluZzo6TmV3U3lt
Ym9sKCIke2ludGVyZmFjZU5hbWV9IikpOworICAgIHJlc3VsdC0+SW5oZXJpdChWOCR7aW50ZXJm
YWNlTmFtZX06OkdldFRlbXBsYXRlKCkpOwogCiAgICAgY2FjaGVkVGVtcGxhdGUgPSB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhyZXN1bHQpOwogICAgIHJldHVybiBj
YWNoZWRUZW1wbGF0ZTsKQEAgLTI2NzAsNyArMjY2Nyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkZGF0YU5vZGUtPm5hbWU7CiAgICAgbXkg
JHZpc2libGVJbnRlcmZhY2VOYW1lID0gJGNvZGVHZW5lcmF0b3ItPkdldFZpc2libGVJbnRlcmZh
Y2VOYW1lKCRkYXRhTm9kZSk7CiAgICAgbXkgJGNsYXNzTmFtZSA9ICJWOCRpbnRlcmZhY2VOYW1l
IjsKLSAgICBteSAkaW1wbENsYXNzTmFtZSA9ICRpbnRlcmZhY2VOYW1lOworICAgIG15ICRpbnRl
cmZhY2VOYW1lID0gJGludGVyZmFjZU5hbWU7CiAgICAgbXkgJG5hdGl2ZVR5cGUgPSBHZXROYXRp
dmVUeXBlRm9yQ29udmVyc2lvbnMoJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7CiAKICAgICAj
IC0gQWRkIGRlZmF1bHQgaGVhZGVyIHRlbXBsYXRlCkBAIC0yNzQzLDcgKzI3NDAsNyBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAjIEdlbmVyYXRlIHRoZSBhY2Nlc3Nvci4K
ICAgICAgICAgaWYgKCEoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ3VzdG9tR2V0dGVyIn0gfHwKICAgICAgICAgICAgICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tR2V0dGVyIn0pKSB7Ci0gICAgICAgICAgICBH
ZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIoJGF0dHJpYnV0ZSwgJGRhdGFOb2RlLCAkaW1wbENsYXNz
TmFtZSwgJGludGVyZmFjZU5hbWUpOworICAgICAgICAgICAgR2VuZXJhdGVOb3JtYWxBdHRyR2V0
dGVyKCRhdHRyaWJ1dGUsICRkYXRhTm9kZSwgJGludGVyZmFjZU5hbWUpOwogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IlJlcGxhY2VhYmxlIn0pIHsKQEAgLTI3NTEsMjkgKzI3NDgsMjkgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICAgICAgfSBlbHNpZiAoISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVNldHRlciJ9ICYmCiAgICAgICAgICAgICAhJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhDdXN0b21TZXR0ZXIifSAm
JgogICAgICAgICAgICAgIUlzUmVhZG9ubHkoJGF0dHJpYnV0ZSkpIHsKLSAgICAgICAgICAgIEdl
bmVyYXRlTm9ybWFsQXR0clNldHRlcigkYXR0cmlidXRlLCAkZGF0YU5vZGUsICRpbXBsQ2xhc3NO
YW1lLCAkaW50ZXJmYWNlTmFtZSk7CisgICAgICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0
ZXIoJGF0dHJpYnV0ZSwgJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7CiAgICAgICAgIH0KICAg
ICB9CiAKICAgICBpZiAoJGhhc0NvbnN0cnVjdG9ycykgewotICAgICAgICBHZW5lcmF0ZUNvbnN0
cnVjdG9yR2V0dGVyKCRkYXRhTm9kZSwgJGltcGxDbGFzc05hbWUpOworICAgICAgICBHZW5lcmF0
ZUNvbnN0cnVjdG9yR2V0dGVyKCRkYXRhTm9kZSwgJGludGVyZmFjZU5hbWUpOwogICAgIH0KIAog
ICAgIGlmICgkaGFzQ29uc3RydWN0b3JzIHx8ICRoYXNSZXBsYWNlYWJsZSkgewotICAgICAgICBH
ZW5lcmF0ZVJlcGxhY2VhYmxlQXR0clNldHRlcigkZGF0YU5vZGUsICRpbXBsQ2xhc3NOYW1lKTsK
KyAgICAgICAgR2VuZXJhdGVSZXBsYWNlYWJsZUF0dHJTZXR0ZXIoJGRhdGFOb2RlLCAkaW50ZXJm
YWNlTmFtZSk7CiAgICAgfQogCiAgICAgaWYgKE5lZWRzQ3VzdG9tT3BhcXVlUm9vdEZvckdDKCRk
YXRhTm9kZSkpIHsKLSAgICAgICAgR2VuZXJhdGVPcGFxdWVSb290Rm9yR0MoJGRhdGFOb2RlLCAk
aW1wbENsYXNzTmFtZSk7CisgICAgICAgIEdlbmVyYXRlT3BhcXVlUm9vdEZvckdDKCRkYXRhTm9k
ZSwgJGludGVyZmFjZU5hbWUpOwogICAgIH0KIAogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJUeXBlZEFycmF5In0pIHsKICAgICAgICAgbXkgJHZpZXdUeXBlID0gR2V0
VHlwZU5hbWVPZkV4dGVybmFsVHlwZWRBcnJheSgkZGF0YU5vZGUpOwogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgPDxFTkQpOwotdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOCR7aW1wbENsYXNz
TmFtZX06OmRpc3BhdGNoV3JhcEN1c3RvbSgkaW1wbENsYXNzTmFtZSogaW1wbCwgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQordjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBWOCR7aW50ZXJmYWNlTmFtZX06OmRpc3BhdGNoV3JhcEN1c3Rv
bSgkaW50ZXJmYWNlTmFtZSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNv
bnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIEFTU0VSVChpbXBsKTsKLSAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOCR7aW1wbENsYXNzTmFtZX06OndyYXBT
bG93KGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3cmFwcGVyID0gVjgke2ludGVyZmFjZU5hbWV9Ojp3cmFwU2xvdyhpbXBsLCBjcmVh
dGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCiAgICAg
ICAgIHdyYXBwZXItPlNldEluZGV4ZWRQcm9wZXJ0aWVzVG9FeHRlcm5hbEFycmF5RGF0YShpbXBs
LT5iYXNlQWRkcmVzcygpLCAkdmlld1R5cGUsIGltcGwtPmxlbmd0aCgpKTsKICAgICByZXR1cm4g
d3JhcHBlcjsKQEAgLTI3OTEsOSArMjc4OCw5IEBAIEVORAogICAgIGZvcmVhY2ggbXkgJGZ1bmN0
aW9uIChAeyRkYXRhTm9kZS0+ZnVuY3Rpb25zfSkgewogICAgICAgICBteSAkaXNDdXN0b20gPSAk
ZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbSJ9IHx8ICRm
dW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhDdXN0b20ifTsKICAg
ICAgICAgaWYgKCEkaXNDdXN0b20pIHsKLSAgICAgICAgICAgIEdlbmVyYXRlRnVuY3Rpb25DYWxs
YmFjaygkZnVuY3Rpb24sICRkYXRhTm9kZSwgJGltcGxDbGFzc05hbWUpOworICAgICAgICAgICAg
R2VuZXJhdGVGdW5jdGlvbkNhbGxiYWNrKCRmdW5jdGlvbiwgJGRhdGFOb2RlLCAkaW50ZXJmYWNl
TmFtZSk7CiAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gPiAxICYm
ICRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9ID09IEB7JGZ1bmN0aW9uLT57b3ZlcmxvYWRzfX0p
IHsKLSAgICAgICAgICAgICAgICBHZW5lcmF0ZU92ZXJsb2FkZWRGdW5jdGlvbkNhbGxiYWNrKCRm
dW5jdGlvbiwgJGRhdGFOb2RlLCAkaW1wbENsYXNzTmFtZSk7CisgICAgICAgICAgICAgICAgR2Vu
ZXJhdGVPdmVybG9hZGVkRnVuY3Rpb25DYWxsYmFjaygkZnVuY3Rpb24sICRkYXRhTm9kZSwgJGlu
dGVyZmFjZU5hbWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTI4MTAsNyArMjgw
Nyw3IEBAIEVORAogICAgICAgICAjIGZvciBkaWZmZXJlbnQgY2FsbGluZyBjb250ZXh0LgogICAg
ICAgICBpZiAoKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2VjdXJpdHki
fSB8fCAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpKSAmJiAkZnVuY3Rpb24tPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tTZWN1cml0eSJ9KSB7CiAgICAg
ICAgICAgICBpZiAoISRpc0N1c3RvbSB8fCAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSA9PSAx
KSB7Ci0gICAgICAgICAgICAgICAgR2VuZXJhdGVEb21haW5TYWZlRnVuY3Rpb25HZXR0ZXIoJGZ1
bmN0aW9uLCAkaW1wbENsYXNzTmFtZSk7CisgICAgICAgICAgICAgICAgR2VuZXJhdGVEb21haW5T
YWZlRnVuY3Rpb25HZXR0ZXIoJGZ1bmN0aW9uLCAkaW50ZXJmYWNlTmFtZSk7CiAgICAgICAgICAg
ICAgICAgJG5lZWRzRG9tYWluU2FmZUZ1bmN0aW9uU2V0dGVyID0gMTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQpAQCAtMjgyNCw3ICsyODIxLDcgQEAgRU5ECiAgICAgfQogCiAgICAgaWYgKCRu
ZWVkc0RvbWFpblNhZmVGdW5jdGlvblNldHRlcikgewotICAgICAgICBHZW5lcmF0ZURvbWFpblNh
ZmVGdW5jdGlvblNldHRlcigkaW1wbENsYXNzTmFtZSk7CisgICAgICAgIEdlbmVyYXRlRG9tYWlu
U2FmZUZ1bmN0aW9uU2V0dGVyKCRpbnRlcmZhY2VOYW1lKTsKICAgICB9CiAKICAgICAjIEF0dHJp
YnV0ZXMKQEAgLTI5NDUsNyArMjk0Miw3IEBAIEVORAogCiAgICAgIyBGb3IgdGhlIERPTVdpbmRv
dyBpbnRlcmZhY2UsIGdlbmVyYXRlIHRoZSBzaGFkb3cgb2JqZWN0IHRlbXBsYXRlCiAgICAgIyBj
b25maWd1cmF0aW9uIG1ldGhvZC4KLSAgICBpZiAoJGltcGxDbGFzc05hbWUgZXEgIkRPTVdpbmRv
dyIpIHsKKyAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6T2Jq
ZWN0VGVtcGxhdGU+IENvbmZpZ3VyZVNoYWRvd09iamVjdFRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50
PHY4OjpPYmplY3RUZW1wbGF0ZT4gdGVtcGwpCiB7CkBAIC0zMjI0LDcgKzMyMjEsNyBAQCBBY3Rp
dmVET01PYmplY3QqICR7Y2xhc3NOYW1lfTo6dG9BY3RpdmVET01PYmplY3Qodjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBvYmplY3QpCiBFTkQKICAgICB9CiAKLSAgICBpZiAoJGltcGxDbGFzc05hbWUg
ZXEgIkRPTVdpbmRvdyIpIHsKKyAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIp
IHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKIHY4OjpQZXJzaXN0ZW50PHY4
OjpPYmplY3RUZW1wbGF0ZT4gVjhET01XaW5kb3c6OkdldFNoYWRvd09iamVjdFRlbXBsYXRlKCkK
IHsKQEAgLTM1NTgsNyArMzU1NSw3IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZygp
CiAgICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CiAgICAgbXkgJG51bWJlck9mUGFyYW1ldGVycyA9
IHNoaWZ0OwogICAgIG15ICRpbmRlbnQgPSBzaGlmdDsKLSAgICBteSAkaW1wbENsYXNzTmFtZSA9
IHNoaWZ0OworICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7CiAgICAgbXkgJXJlcGxhY2Vt
ZW50cyA9IEBfOwogCiAgICAgbXkgJG5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsK
QEAgLTM1NjYsNyArMzU2Myw3IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZygpCiAg
ICAgbXkgJG5hdGl2ZVJldHVyblR5cGUgPSBHZXROYXRpdmVUeXBlKCRyZXR1cm5UeXBlLCAwKTsK
ICAgICBteSAkcmVzdWx0ID0gIiI7CiAKLSAgICBteSAkaXNTVkdUZWFyT2ZmVHlwZSA9ICgkY29k
ZUdlbmVyYXRvci0+SXNTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJHJldHVyblR5cGUpIGFuZCBub3Qg
JGltcGxDbGFzc05hbWUgPX4gL0xpc3QkLyk7CisgICAgbXkgJGlzU1ZHVGVhck9mZlR5cGUgPSAo
JGNvZGVHZW5lcmF0b3ItPklzU1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCRyZXR1cm5UeXBlKSBhbmQg
bm90ICRpbnRlcmZhY2VOYW1lID1+IC9MaXN0JC8pOwogICAgICRuYXRpdmVSZXR1cm5UeXBlID0g
JGNvZGVHZW5lcmF0b3ItPkdldFNWR1dyYXBwZWRUeXBlTmVlZGluZ1RlYXJPZmYoJHJldHVyblR5
cGUpIGlmICRpc1NWR1RlYXJPZmZUeXBlOwogCiAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRBcyJ9KSB7CkBAIC0zNTg0LDcgKzM1
ODEsNyBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcoKQogICAgICAgICB1bnNoaWZ0
KEBhcmd1bWVudHMsICJpbXAiKSBpZiAhJGZ1bmN0aW9uLT5pc1N0YXRpYzsKICAgICAgICAgJGZ1
bmN0aW9uTmFtZSA9ICIke2ltcGxlbWVudGVkQnl9Ojoke25hbWV9IjsKICAgICB9IGVsc2lmICgk
ZnVuY3Rpb24tPmlzU3RhdGljKSB7Ci0gICAgICAgICRmdW5jdGlvbk5hbWUgPSAiJHtpbXBsQ2xh
c3NOYW1lfTo6JHtuYW1lfSI7CisgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiJHtpbnRlcmZhY2VO
YW1lfTo6JHtuYW1lfSI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJp
bXAtPiR7bmFtZX0iOwogICAgIH0KQEAgLTM2MDgsMTEgKzM2MDUsMTEgQEAgc3ViIEdlbmVyYXRl
RnVuY3Rpb25DYWxsU3RyaW5nKCkKICAgICAgICAgICAgIHB1c2ggQGFyZ3VtZW50cywgJHJlcGxh
Y2VtZW50c3skcGFyYW1OYW1lfTsKICAgICAgICAgfSBlbHNpZiAoJHBhcmFtZXRlci0+dHlwZSBl
cSAiSURCS2V5IiB8fCAkcGFyYW1ldGVyLT50eXBlIGVxICJOb2RlRmlsdGVyIiB8fCAkcGFyYW1l
dGVyLT50eXBlIGVxICJYUGF0aE5TUmVzb2x2ZXIiKSB7CiAgICAgICAgICAgICBwdXNoIEBhcmd1
bWVudHMsICIkcGFyYW1OYW1lLmdldCgpIjsKLSAgICAgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0
b3ItPklzU1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCRwYXJhbWV0ZXItPnR5cGUpIGFuZCBub3QgJGlt
cGxDbGFzc05hbWUgPX4gL0xpc3QkLykgeworICAgICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRv
ci0+SXNTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJHBhcmFtZXRlci0+dHlwZSkgYW5kIG5vdCAkaW50
ZXJmYWNlTmFtZSA9fiAvTGlzdCQvKSB7CiAgICAgICAgICAgICBwdXNoIEBhcmd1bWVudHMsICIk
cGFyYW1OYW1lLT5wcm9wZXJ0eVJlZmVyZW5jZSgpIjsKICAgICAgICAgICAgICRyZXN1bHQgLj0g
JGluZGVudCAuICJpZiAoISRwYXJhbU5hbWUpXG4iOwogICAgICAgICAgICAgJHJlc3VsdCAuPSAk
aW5kZW50IC4gIiAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKFdlYkNvcmU6OlRZUEVfTUlTTUFU
Q0hfRVJSLCBhcmdzLkdldElzb2xhdGUoKSk7XG4iOwotICAgICAgICB9IGVsc2lmICgkcGFyYW1l
dGVyLT50eXBlIGVxICJTVkdNYXRyaXgiIGFuZCAkaW1wbENsYXNzTmFtZSBlcSAiU1ZHVHJhbnNm
b3JtTGlzdCIpIHsKKyAgICAgICAgfSBlbHNpZiAoJHBhcmFtZXRlci0+dHlwZSBlcSAiU1ZHTWF0
cml4IiBhbmQgJGludGVyZmFjZU5hbWUgZXEgIlNWR1RyYW5zZm9ybUxpc3QiKSB7CiAgICAgICAg
ICAgICBwdXNoIEBhcmd1bWVudHMsICIkcGFyYW1OYW1lLmdldCgpIjsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIHB1c2ggQGFyZ3VtZW50cywgJHBhcmFtTmFtZTsKQEAgLTM2MzgsNyAr
MzYzNSw3IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZygpCiAgICAgICAgICRyZXR1
cm4gPSAkZnVuY3Rpb25TdHJpbmc7CiAgICAgICAgICRyZXR1cm5Jc1JlZiA9IDA7CiAKLSAgICAg
ICAgaWYgKCRpbXBsQ2xhc3NOYW1lIGVxICJTVkdUcmFuc2Zvcm1MaXN0IiBhbmQgSXNSZWZQdHJU
eXBlKCRyZXR1cm5UeXBlKSkgeworICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIlNWR1Ry
YW5zZm9ybUxpc3QiIGFuZCBJc1JlZlB0clR5cGUoJHJldHVyblR5cGUpKSB7CiAgICAgICAgICAg
ICAkcmV0dXJuID0gIldURjo6Z2V0UHRyKCIgLiAkcmV0dXJuIC4gIikiOwogICAgICAgICB9CiAg
ICAgfQpAQCAtMzY2Miw3ICszNjU5LDcgQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5n
KCkKICAgICB9CiAKICAgICAjIElmIHRoZSBpbXBsZW1lbnRpbmcgY2xhc3MgaXMgYSBQT0QgdHlw
ZSwgY29tbWl0IGNoYW5nZXMKLSAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU1ZHVHlwZU5lZWRp
bmdUZWFyT2ZmKCRpbXBsQ2xhc3NOYW1lKSBhbmQgbm90ICRpbXBsQ2xhc3NOYW1lID1+IC9MaXN0
JC8pIHsKKyAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCRp
bnRlcmZhY2VOYW1lKSBhbmQgbm90ICRpbnRlcmZhY2VOYW1lID1+IC9MaXN0JC8pIHsKICAgICAg
ICAgJHJlc3VsdCAuPSAkaW5kZW50IC4gIndyYXBwZXItPmNvbW1pdENoYW5nZSgpO1xuIjsKICAg
ICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174321</attachid>
            <date>2012-11-14 19:16:46 -0800</date>
            <delta_ts>2012-11-14 19:46:11 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>bug-102312-20121115121443.patch</filename>
            <type>text/plain</type>
            <size>45053</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0NzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGNiY2U2YzQyZmZiMjhm
N2M2Y2MwN2NkYWY2ODFiY2VhM2RlYWZkMy4uOWI3YmM4ZjIwNTA2YTY1NDczMTFjYzkzZjVlYWJh
ZjhjNGEyYjU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTExLTE0ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIEtpbGwgJGlt
cGxDbGFzc05hbWUgZnJvbSBDb2RlR2VuZXJhdG9yVjgucG0KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjMxMgorCisgICAgICAgIFJldmlld2VkIGJ5
IEFkYW0gQmFydGguCisKKyAgICAgICAgJGltcGxDbGFzc05hbWUgYW5kICRpbnRlcmZhY2VOYW1l
IGFyZSB0aGUgc2FtZS4KKyAgICAgICAgU29tZXRpbWVzIHdlIGFyZSBwYXNzaW5nIGJvdGggJGlt
cGxDbGFzc05hbWUgYW5kICRpbnRlcmZhY2VOYW1lIHRvCisgICAgICAgIHN1YnJvdXRpbmVzLiBX
ZSBjYW4ga2lsbCAkaW1wbENsYXNzTmFtZS4KKworICAgICAgICBObyB0ZXN0cy4gTm8gY2hhbmdl
IGluIGJlaGF2aW9yLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG06CisgICAgICAgIChHZW5lcmF0ZU9wYXF1ZVJvb3RGb3JHQyk6CisgICAgICAgIChHZW5l
cmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZURvbWFpblNhZmVGdW5jdGlvbkdldHRlcik6
CisgICAgICAgIChHZW5lcmF0ZURvbWFpblNhZmVGdW5jdGlvblNldHRlcik6CisgICAgICAgIChH
ZW5lcmF0ZUNvbnN0cnVjdG9yR2V0dGVyKToKKyAgICAgICAgKEdlbmVyYXRlTm9ybWFsQXR0ckdl
dHRlcik6CisgICAgICAgIChHZW5lcmF0ZVJlcGxhY2VhYmxlQXR0clNldHRlcik6CisgICAgICAg
IChHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXIpOgorICAgICAgICAoR2VuZXJhdGVFdmVudExpc3Rl
bmVyQ2FsbGJhY2spOgorICAgICAgICAoR2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rpb25DYWxsYmFj
ayk6CisgICAgICAgIChHZW5lcmF0ZUZ1bmN0aW9uQ2FsbGJhY2spOgorICAgICAgICAoR2VuZXJh
dGVQYXJhbWV0ZXJzQ2hlY2spOgorICAgICAgICAoR2VuZXJhdGVPdmVybG9hZGVkQ29uc3RydWN0
b3JDYWxsYmFjayk6CisgICAgICAgIChHZW5lcmF0ZVNpbmdsZUNvbnN0cnVjdG9yQ2FsbGJhY2sp
OgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKEdlbmVy
YXRlRXZlbnRDb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKEdlbmVyYXRlVHlwZWRBcnJh
eUNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAoR2VuZXJhdGVOYW1lZENvbnN0cnVjdG9y
Q2FsbGJhY2spOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChH
ZW5lcmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZyk6CisKIDIwMTItMTEtMTQgIEVyaWsgQXJ2aWRzc29u
ICA8YXJ2QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVcGRhdGUgRE9NRXhjZXB0aW9uIG5hbWU6
IEludmFsaWRNb2RpZmljYXRpb25FcnJvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBkMTI5ZTg5MDdjOWY0MWM3NjI5NmM5
MDc1M2I5MTNkNDc3OWE4NWIxLi5jZDlmOTM4MDdmZjBkOGY2NTRkMmJkNGI0ODg5NDJjNjZlOWY4
MjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JWOC5wbQpAQCAtMjAxLDE3ICsyMDEsMTcgQEAgc3ViIEdldEN1c3RvbUlzUmVhY2hhYmxl
CiAKIHN1YiBHZW5lcmF0ZU9wYXF1ZVJvb3RGb3JHQwogewotICAgIG15ICgkZGF0YU5vZGUsICRp
bXBsQ2xhc3NOYW1lKSA9IEBfOworICAgIG15ICgkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1lKSA9
IEBfOwogCiAgICAgaWYgKEdldEN1c3RvbUlzUmVhY2hhYmxlKCRkYXRhTm9kZSkpIHsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci12b2lk
KiBWOCR7aW1wbENsYXNzTmFtZX06Om9wYXF1ZVJvb3RGb3JHQyh2b2lkKiBvYmplY3QsIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCit2b2lkKiBWOCR7aW50ZXJmYWNlTmFtZX06
Om9wYXF1ZVJvb3RGb3JHQyh2b2lkKiBvYmplY3QsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+
IHdyYXBwZXIpCiB7CiAgICAgQVNTRVJUKCF3cmFwcGVyLklzSW5kZXBlbmRlbnQoKSk7Ci0gICAg
JHtpbXBsQ2xhc3NOYW1lfSogaW1wbCA9IHN0YXRpY19jYXN0PCR7aW1wbENsYXNzTmFtZX0qPihv
YmplY3QpOworICAgICR7aW50ZXJmYWNlTmFtZX0qIGltcGwgPSBzdGF0aWNfY2FzdDwke2ludGVy
ZmFjZU5hbWV9Kj4ob2JqZWN0KTsKIEVORAogICAgIGlmIChHZXRHZW5lcmF0ZUlzUmVhY2hhYmxl
KCRkYXRhTm9kZSkgZXEgICJJbXBsRG9jdW1lbnQiIHx8CiAgICAgICAgIEdldEdlbmVyYXRlSXNS
ZWFjaGFibGUoJGRhdGFOb2RlKSBlcSAgIkltcGxFbGVtZW50Um9vdCIgfHwKQEAgLTI4OCw3ICsy
ODgsNiBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGRh
dGFOb2RlLT5uYW1lOwogICAgIG15ICRjbGFzc05hbWUgPSAiVjgkaW50ZXJmYWNlTmFtZSI7Ci0g
ICAgbXkgJGltcGxDbGFzc05hbWUgPSAkaW50ZXJmYWNlTmFtZTsKIAogICAgICMgQ29weSBjb250
ZW50cyBvZiBwYXJlbnQgY2xhc3NlcyBleGNlcHQgdGhlIGZpcnN0IHBhcmVudC4KICAgICAkY29k
ZUdlbmVyYXRvci0+QWRkTWV0aG9kc0NvbnN0YW50c0FuZEF0dHJpYnV0ZXNGcm9tUGFyZW50Q2xh
c3NlcygkZGF0YU5vZGUsIFxAYWxsUGFyZW50cywgMSk7CkBAIC0zMTYsMTAgKzMxNSwxMCBAQCBz
dWIgR2VuZXJhdGVIZWFkZXIKICAgICAkaGVhZGVySW5jbHVkZXN7Ind0Zi9IYXNoTWFwLmgifSA9
IDE7CiAgICAgJGhlYWRlckluY2x1ZGVzeyJ2OC5oIn0gPSAxOwogCi0gICAgbXkgJGhlYWRlckNs
YXNzSW5jbHVkZSA9IEdldEhlYWRlckNsYXNzSW5jbHVkZSgkaW1wbENsYXNzTmFtZSk7CisgICAg
bXkgJGhlYWRlckNsYXNzSW5jbHVkZSA9IEdldEhlYWRlckNsYXNzSW5jbHVkZSgkaW50ZXJmYWNl
TmFtZSk7CiAgICAgJGhlYWRlckluY2x1ZGVzeyRoZWFkZXJDbGFzc0luY2x1ZGV9ID0gMSBpZiAk
aGVhZGVyQ2xhc3NJbmNsdWRlIG5lICIiOwogCi0gICAgbXkgKCRzdmdQcm9wZXJ0eVR5cGUsICRz
dmdMaXN0UHJvcGVydHlUeXBlLCAkc3ZnTmF0aXZlVHlwZSkgPSBHZXRTVkdQcm9wZXJ0eVR5cGVz
KCRpbXBsQ2xhc3NOYW1lKTsKKyAgICBteSAoJHN2Z1Byb3BlcnR5VHlwZSwgJHN2Z0xpc3RQcm9w
ZXJ0eVR5cGUsICRzdmdOYXRpdmVUeXBlKSA9IEdldFNWR1Byb3BlcnR5VHlwZXMoJGludGVyZmFj
ZU5hbWUpOwogCiAgICAgZm9yZWFjaCBteSAkaGVhZGVySW5jbHVkZSAoc29ydCBrZXlzKCVoZWFk
ZXJJbmNsdWRlcykpIHsKICAgICAgICAgaWYgKCRoZWFkZXJJbmNsdWRlID1+IC93dGZ8djhcLmgv
KSB7CkBAIC0zOTYsMTMgKzM5NSwxMyBAQCBFTkQKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICBzdGF0aWMgQWN0aXZlRE9NT2JqZWN0KiB0b0FjdGl2ZURPTU9iamVjdCh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+KTtcbiIpOwogICAgIH0KIAotICAgIGlmICgkaW1wbENsYXNzTmFtZSBl
cSAiRE9NV2luZG93IikgeworICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93Iikg
ewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiAgICAgc3RhdGljIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3RUZW1wbGF0ZT4gR2V0U2hhZG93T2JqZWN0VGVtcGxhdGUoKTsK
IEVORAogICAgIH0KIAotICAgIGlmICgkaW1wbENsYXNzTmFtZSBlcSAiSFRNTERvY3VtZW50Iikg
eworICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTERvY3VtZW50IikgewogICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogICAgIHN0YXRpYyB2ODo6TG9jYWw8djg6Ok9iamVj
dD4gd3JhcEluU2hhZG93T2JqZWN0KHY4OjpMb2NhbDx2ODo6T2JqZWN0PiB3cmFwcGVyLCBOb2Rl
KiBpbXBsKTsKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGdldE5hbWVkUHJvcGVy
dHkoSFRNTERvY3VtZW50KiBodG1sRG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYga2V5LCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKQEAg
LTYyOSw3ICs2MjgsNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoUGFzc1Jl
ZlB0cjwgJHtuYXRpdmVUeXBlfSA+IGltcGwsIHY4OjpIYW5kbGU8dgogRU5ECiAKICAgICBpZiAo
JGNvZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0b3JUZW1wbGF0ZSgkZGF0YU5vZGUsICJFdmVudCIp
KSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbmJvb2wgZmlsbCR7aW1wbENsYXNz
TmFtZX1Jbml0KCR7aW1wbENsYXNzTmFtZX1Jbml0JiwgY29uc3QgRGljdGlvbmFyeSYpO1xuIik7
CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbmJvb2wgZmlsbCR7aW50ZXJmYWNlTmFt
ZX1Jbml0KCR7aW50ZXJmYWNlTmFtZX1Jbml0JiwgY29uc3QgRGljdGlvbmFyeSYpO1xuIik7CiAg
ICAgfQogCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxufVxuXG4iKTsKQEAgLTgyMCw5ICs4
MTksOSBAQCBzdWIgSXNSZWFkb25seQogc3ViIEdlbmVyYXRlRG9tYWluU2FmZUZ1bmN0aW9uR2V0
dGVyCiB7CiAgICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7Ci0gICAgbXkgJGltcGxDbGFzc05hbWUg
PSBzaGlmdDsKKyAgICBteSAkaW50ZXJmYWNlTmFtZSA9IHNoaWZ0OwogCi0gICAgbXkgJGNsYXNz
TmFtZSA9ICJWOCIgLiAkaW1wbENsYXNzTmFtZTsKKyAgICBteSAkY2xhc3NOYW1lID0gIlY4IiAu
ICRpbnRlcmZhY2VOYW1lOwogICAgIG15ICRmdW5jTmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJl
LT5uYW1lOwogCiAgICAgbXkgJHNpZ25hdHVyZSA9ICJ2ODo6U2lnbmF0dXJlOjpOZXcoIiAuICRj
bGFzc05hbWUgLiAiOjpHZXRSYXdUZW1wbGF0ZSgpKSI7CkBAIC04MzAsMTMgKzgyOSwxMyBAQCBz
dWIgR2VuZXJhdGVEb21haW5TYWZlRnVuY3Rpb25HZXR0ZXIKICAgICAgICAgJHNpZ25hdHVyZSA9
ICJ2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4oKSI7CiAgICAgfQogCi0gICAgbXkgJG5ld1RlbXBs
YXRlU3RyaW5nID0gR2VuZXJhdGVOZXdGdW5jdGlvblRlbXBsYXRlKCRmdW5jdGlvbiwgJGltcGxD
bGFzc05hbWUsICRzaWduYXR1cmUpOworICAgIG15ICRuZXdUZW1wbGF0ZVN0cmluZyA9IEdlbmVy
YXRlTmV3RnVuY3Rpb25UZW1wbGF0ZSgkZnVuY3Rpb24sICRpbnRlcmZhY2VOYW1lLCAkc2lnbmF0
dXJlKTsKIAogICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJGcmFtZS5oIik7CiAgICAgcHVzaChAaW1w
bENvbnRlbnREZWNscywgPDxFTkQpOwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke2Z1
bmNOYW1lfUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NUQVRTKFwiRE9NLiRpbXBsQ2xhc3NOYW1l
LiRmdW5jTmFtZS5fZ2V0XCIpOworICAgIElOQ19TVEFUUyhcIkRPTS4kaW50ZXJmYWNlTmFtZS4k
ZnVuY05hbWUuX2dldFwiKTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPjo6TmV3KCRuZXdUZW1wbGF0ZVN0cmluZyk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBob2xkZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoJHtjbGFzc05hbWV9
OjpHZXRUZW1wbGF0ZSgpLCBpbmZvLlRoaXMoKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkp
IHsKQEAgLTg0NCw3ICs4NDMsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICR7ZnVu
Y05hbWV9QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgYwogICAgICAgICAv
LyBkb21haW4gc2VjdXJpdHkgY2hlY2sgYWxyZWFkeQogICAgICAgICByZXR1cm4gcHJpdmF0ZVRl
bXBsYXRlLT5HZXRGdW5jdGlvbigpOwogICAgIH0KLSAgICAke2ltcGxDbGFzc05hbWV9KiBpbXAg
PSAke2NsYXNzTmFtZX06OnRvTmF0aXZlKGhvbGRlcik7CisgICAgJHtpbnRlcmZhY2VOYW1lfSog
aW1wID0gJHtjbGFzc05hbWV9Ojp0b05hdGl2ZShob2xkZXIpOwogICAgIGlmICghQmluZGluZ1Nl
Y3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoQmluZGluZ1N0YXRlOjppbnN0YW5jZSgp
LCBpbXAtPmZyYW1lKCksIERvTm90UmVwb3J0U2VjdXJpdHlFcnJvcikpIHsKICAgICAgICAgc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KCRuZXdUZW1wbGF0ZVN0
cmluZyk7CiAgICAgICAgIHJldHVybiBzaGFyZWRUZW1wbGF0ZS0+R2V0RnVuY3Rpb24oKTsKQEAg
LTg2MiwxNyArODYxLDE3IEBAIEVORAogCiBzdWIgR2VuZXJhdGVEb21haW5TYWZlRnVuY3Rpb25T
ZXR0ZXIKIHsKLSAgICBteSAkaW1wbENsYXNzTmFtZSA9IHNoaWZ0OwotICAgIG15ICRjbGFzc05h
bWUgPSAiVjgiIC4gJGltcGxDbGFzc05hbWU7CisgICAgbXkgJGludGVyZmFjZU5hbWUgPSBzaGlm
dDsKKyAgICBteSAkY2xhc3NOYW1lID0gIlY4IiAuICRpbnRlcmZhY2VOYW1lOwogCiAgICAgcHVz
aChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOwotc3RhdGljIHZvaWQgJHtpbXBsQ2xhc3NOYW1l
fURvbWFpblNhZmVGdW5jdGlvblNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCitz
dGF0aWMgdm9pZCAke2ludGVyZmFjZU5hbWV9RG9tYWluU2FmZUZ1bmN0aW9uU2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS4kaW1wbENsYXNz
TmFtZS5fc2V0Iik7CisgICAgSU5DX1NUQVRTKCJET00uJGludGVyZmFjZU5hbWUuX3NldCIpOwog
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBE
T01XcmFwcGVyKCR7Y2xhc3NOYW1lfTo6R2V0VGVtcGxhdGUoKSwgaW5mby5UaGlzKCkpOwogICAg
IGlmIChob2xkZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgJHtpbXBsQ2xhc3NO
YW1lfSogaW1wID0gJHtjbGFzc05hbWV9Ojp0b05hdGl2ZShob2xkZXIpOworICAgICR7aW50ZXJm
YWNlTmFtZX0qIGltcCA9ICR7Y2xhc3NOYW1lfTo6dG9OYXRpdmUoaG9sZGVyKTsKICAgICBpZiAo
IUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEJpbmRpbmdTdGF0ZTo6
aW5zdGFuY2UoKSwgaW1wLT5mcmFtZSgpKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC04ODUsMTIg
Kzg4NCwxMiBAQCBFTkQKIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yR2V0dGVyCiB7CiAgICAgbXkg
JGRhdGFOb2RlID0gc2hpZnQ7Ci0gICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlmdDsKKyAgICBt
eSAkaW50ZXJmYWNlTmFtZSA9IHNoaWZ0OwogCiAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywg
PDxFTkQpOwotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke2ltcGxDbGFzc05hbWV9Q29u
c3RydWN0b3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICR7aW50ZXJmYWNl
TmFtZX1Db25zdHJ1Y3RvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoXCJET00uJGltcGxDbGFz
c05hbWUuY29uc3RydWN0b3JzLl9nZXRcIik7CisgICAgSU5DX1NUQVRTKFwiRE9NLiRpbnRlcmZh
Y2VOYW1lLmNvbnN0cnVjdG9ycy5fZ2V0XCIpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBk
YXRhID0gaW5mby5EYXRhKCk7CiAgICAgQVNTRVJUKGRhdGEtPklzRXh0ZXJuYWwoKSB8fCBkYXRh
LT5Jc051bWJlcigpKTsKICAgICBWOFBlckNvbnRleHREYXRhKiBwZXJDb250ZXh0RGF0YSA9IFY4
UGVyQ29udGV4dERhdGE6OmZyb20oaW5mby5Ib2xkZXIoKS0+Q3JlYXRpb25Db250ZXh0KCkpOwpA
QCAtOTE3LDcgKzkxNiw2IEBAIHN1YiBHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIKIHsKICAgICBt
eSAkYXR0cmlidXRlID0gc2hpZnQ7CiAgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7Ci0gICAgbXkg
JGltcGxDbGFzc05hbWUgPSBzaGlmdDsKICAgICBteSAkaW50ZXJmYWNlTmFtZSA9IHNoaWZ0Owog
CiAgICAgbXkgJGF0dHJFeHQgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlczsKQEAgLTkyNiw4ICs5MjQsOCBAQCBzdWIgR2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVyCiAg
ICAgJGNvZGVHZW5lcmF0b3ItPkFzc2VydE5vdFNlcXVlbmNlVHlwZSgkYXR0clR5cGUpOwogICAg
IG15ICRuYXRpdmVUeXBlID0gR2V0TmF0aXZlVHlwZUZyb21TaWduYXR1cmUoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLCAtMSk7CiAKLSAgICBteSAkZ2V0dGVyU3RyaW5nVXNlc0ltcCA9ICRpbXBsQ2xh
c3NOYW1lIG5lICJTVkdOdW1iZXIiOwotICAgIG15ICRzdmdOYXRpdmVUeXBlID0gJGNvZGVHZW5l
cmF0b3ItPkdldFNWR1R5cGVOZWVkaW5nVGVhck9mZigkaW1wbENsYXNzTmFtZSk7CisgICAgbXkg
JGdldHRlclN0cmluZ1VzZXNJbXAgPSAkaW50ZXJmYWNlTmFtZSBuZSAiU1ZHTnVtYmVyIjsKKyAg
ICBteSAkc3ZnTmF0aXZlVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRTVkdUeXBlTmVlZGluZ1Rl
YXJPZmYoJGludGVyZmFjZU5hbWUpOwogCiAgICAgIyBHZXR0ZXIKICAgICBteSAkY29uZGl0aW9u
YWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0
cmlidXRlLT5zaWduYXR1cmUpOwpAQCAtOTM2LDE5ICs5MzQsMTkgQEAgc3ViIEdlbmVyYXRlTm9y
bWFsQXR0ckdldHRlcgogICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHthdHRyTmFtZX1BdHRyR2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIElO
Q19TVEFUUygiRE9NLiRpbXBsQ2xhc3NOYW1lLiRhdHRyTmFtZS5fZ2V0Iik7CisgICAgSU5DX1NU
QVRTKCJET00uJGludGVyZmFjZU5hbWUuJGF0dHJOYW1lLl9nZXQiKTsKIEVORAogICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsIEdlbmVyYXRlRmVhdHVyZU9ic2VydmF0aW9uKCRhdHRyRXh0LT57
IlY4TWVhc3VyZUFzIn0pKTsKIAogICAgIGlmICgkc3ZnTmF0aXZlVHlwZSkgewotICAgICAgICBt
eSAkc3ZnV3JhcHBlZE5hdGl2ZVR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0U1ZHV3JhcHBlZFR5
cGVOZWVkaW5nVGVhck9mZigkaW1wbENsYXNzTmFtZSk7CisgICAgICAgIG15ICRzdmdXcmFwcGVk
TmF0aXZlVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRTVkdXcmFwcGVkVHlwZU5lZWRpbmdUZWFy
T2ZmKCRpbnRlcmZhY2VOYW1lKTsKICAgICAgICAgaWYgKCRzdmdXcmFwcGVkTmF0aXZlVHlwZSA9
fiAvTGlzdC8pIHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsK
LSAgICAkc3ZnTmF0aXZlVHlwZSogaW1wID0gVjgke2ltcGxDbGFzc05hbWV9Ojp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKKyAgICAkc3ZnTmF0aXZlVHlwZSogaW1wID0gVjgke2ludGVyZmFjZU5h
bWV9Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKIEVORAogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOwotICAgICRzdmdOYXRpdmVU
eXBlKiB3cmFwcGVyID0gVjgke2ltcGxDbGFzc05hbWV9Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigp
KTsKKyAgICAkc3ZnTmF0aXZlVHlwZSogd3JhcHBlciA9IFY4JHtpbnRlcmZhY2VOYW1lfTo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgJHN2Z1dyYXBwZWROYXRpdmVUeXBlJiBpbXBJbnN0
YW5jZSA9IHdyYXBwZXItPnByb3BlcnR5UmVmZXJlbmNlKCk7CiBFTkQKICAgICAgICAgICAgIGlm
ICgkZ2V0dGVyU3RyaW5nVXNlc0ltcCkgewpAQCAtOTcxLDcgKzk2OSw3IEBAIEVORAogRU5ECiAg
ICAgICAgIH0KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOwotICAgICR7
aW1wbENsYXNzTmFtZX0qIGltcCA9IFY4JHtpbXBsQ2xhc3NOYW1lfTo6dG9OYXRpdmUoaG9sZGVy
KTsKKyAgICAke2ludGVyZmFjZU5hbWV9KiBpbXAgPSBWOCR7aW50ZXJmYWNlTmFtZX06OnRvTmF0
aXZlKGhvbGRlcik7CiBFTkQKICAgICB9IGVsc2UgewogICAgICAgICBteSAkcmVmbGVjdCA9ICRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJlZmxlY3QifTsKQEAg
LTk5OCw3ICs5OTYsNyBAQCBFTkQKICAgICAgICAgfQogICAgICAgICBpZiAoISRhdHRyaWJ1dGUt
PmlzU3RhdGljKSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7
Ci0gICAgJHtpbXBsQ2xhc3NOYW1lfSogaW1wID0gVjgke2ltcGxDbGFzc05hbWV9Ojp0b05hdGl2
ZShpbmZvLkhvbGRlcigpKTsKKyAgICAke2ludGVyZmFjZU5hbWV9KiBpbXAgPSBWOCR7aW50ZXJm
YWNlTmFtZX06OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogRU5ECiAgICAgICAgIH0KICAgICB9
CkBAIC0xMDI2LDcgKzEwMjQsNyBAQCBFTkQKICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50
cywgImltcCIpIGlmICEkYXR0cmlidXRlLT5pc1N0YXRpYzsKICAgICAgICAgICAgICRmdW5jdGlv
bk5hbWUgPSAiJHtpbXBsZW1lbnRlZEJ5fTo6JHtmdW5jdGlvbk5hbWV9IjsKICAgICAgICAgfSBl
bHNpZiAoJGF0dHJpYnV0ZS0+aXNTdGF0aWMpIHsKLSAgICAgICAgICAgICRmdW5jdGlvbk5hbWUg
PSAiJHtpbXBsQ2xhc3NOYW1lfTo6JHtmdW5jdGlvbk5hbWV9IjsKKyAgICAgICAgICAgICRmdW5j
dGlvbk5hbWUgPSAiJHtpbnRlcmZhY2VOYW1lfTo6JHtmdW5jdGlvbk5hbWV9IjsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiaW1wLT4ke2Z1bmN0aW9uTmFt
ZX0iOwogICAgICAgICB9CkBAIC0xMTAyLDEyICsxMTAwLDEyIEBAIEVORAogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgaWYgKCgkY29kZUdlbmVyYXRvci0+SXNTVkdBbmltYXRlZFR5cGUo
JGltcGxDbGFzc05hbWUpIG9yICRpbXBsQ2xhc3NOYW1lIGVxICJTVkdWaWV3U3BlYyIpIGFuZCAk
Y29kZUdlbmVyYXRvci0+SXNTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJGF0dHJUeXBlKSkgeworICAg
IGlmICgoJGNvZGVHZW5lcmF0b3ItPklzU1ZHQW5pbWF0ZWRUeXBlKCRpbnRlcmZhY2VOYW1lKSBv
ciAkaW50ZXJmYWNlTmFtZSBlcSAiU1ZHVmlld1NwZWMiKSBhbmQgJGNvZGVHZW5lcmF0b3ItPklz
U1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCRhdHRyVHlwZSkpIHsKICAgICAgICAgQWRkVG9JbXBsSW5j
bHVkZXMoIlY4JGF0dHJUeXBlLmgiKTsKICAgICAgICAgbXkgJHN2Z05hdGl2ZVR5cGUgPSAkY29k
ZUdlbmVyYXRvci0+R2V0U1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCRhdHRyVHlwZSk7CiAgICAgICAg
ICMgQ29udmVydCBmcm9tIGFic3RyYWN0IFNWR1Byb3BlcnR5IHRvIHJlYWwgdHlwZSwgc28gdGhl
IHJpZ2h0IHRvSlMoKSBtZXRob2QgY2FuIGJlIGludm9rZWQuCiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50RGVjbHMsICIgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8JHN2Z05hdGl2ZVR5cGUq
PigkcmVzdWx0KSwgaW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpO1xuIik7Ci0gICAg
fSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPklzU1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCRhdHRyVHlw
ZSkgYW5kIG5vdCAkaW1wbENsYXNzTmFtZSA9fiAvTGlzdCQvKSB7CisgICAgfSBlbHNpZiAoJGNv
ZGVHZW5lcmF0b3ItPklzU1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCRhdHRyVHlwZSkgYW5kIG5vdCAk
aW50ZXJmYWNlTmFtZSA9fiAvTGlzdCQvKSB7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJW
OCRhdHRyVHlwZS5oIik7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTVkdQcm9wZXJ0eVRl
YXJPZmYuaCIpOwogICAgICAgICBteSAkdGVhck9mZlR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0
U1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCRhdHRyVHlwZSk7CkBAIC0xMTE2LDE0ICsxMTE0LDE0IEBA
IEVORAogICAgICAgICAgICAgJGdldHRlciA9fiBzL2ltcC0+Ly87CiAgICAgICAgICAgICAkZ2V0
dGVyID1+IHMvXChcKS8vOwogCi0gICAgICAgICAgICBteSAkdXBkYXRlTWV0aG9kID0gIiYke2lt
cGxDbGFzc05hbWV9Ojp1cGRhdGUiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGdldHRl
cik7CisgICAgICAgICAgICBteSAkdXBkYXRlTWV0aG9kID0gIiYke2ludGVyZmFjZU5hbWV9Ojp1
cGRhdGUiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGdldHRlcik7CiAKLSAgICAgICAg
ICAgIG15ICRzZWxmSXNUZWFyT2ZmVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5Jc1NWR1R5cGVOZWVk
aW5nVGVhck9mZigkaW1wbENsYXNzTmFtZSk7CisgICAgICAgICAgICBteSAkc2VsZklzVGVhck9m
ZlR5cGUgPSAkY29kZUdlbmVyYXRvci0+SXNTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJGludGVyZmFj
ZU5hbWUpOwogICAgICAgICAgICAgaWYgKCRzZWxmSXNUZWFyT2ZmVHlwZSkgewogICAgICAgICAg
ICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTVkdTdGF0aWNQcm9wZXJ0eVdpdGhQYXJlbnRUZWFy
T2ZmLmgiKTsKLSAgICAgICAgICAgICAgICAkdGVhck9mZlR5cGUgPX4gcy9TVkdQcm9wZXJ0eVRl
YXJPZmY8L1NWR1N0YXRpY1Byb3BlcnR5V2l0aFBhcmVudFRlYXJPZmY8JGltcGxDbGFzc05hbWUs
IC87CisgICAgICAgICAgICAgICAgJHRlYXJPZmZUeXBlID1+IHMvU1ZHUHJvcGVydHlUZWFyT2Zm
PC9TVkdTdGF0aWNQcm9wZXJ0eVdpdGhQYXJlbnRUZWFyT2ZmPCRpbnRlcmZhY2VOYW1lLCAvOwog
Ci0gICAgICAgICAgICAgICAgaWYgKCRyZXN1bHQgPX4gL21hdHJpeC8gYW5kICRpbXBsQ2xhc3NO
YW1lIGVxICJTVkdUcmFuc2Zvcm0iKSB7CisgICAgICAgICAgICAgICAgaWYgKCRyZXN1bHQgPX4g
L21hdHJpeC8gYW5kICRpbnRlcmZhY2VOYW1lIGVxICJTVkdUcmFuc2Zvcm0iKSB7CiAgICAgICAg
ICAgICAgICAgICAgICMgU1ZHVHJhbnNmb3JtIG9mZmVycyBhIG1hdHJpeCgpIG1ldGhvZCBmb3Ig
aW50ZXJuYWwgdXNhZ2UgdGhhdCByZXR1cm5zIGFuIEFmZmluZVRyYW5zZm9ybQogICAgICAgICAg
ICAgICAgICAgICAjIGFuZCBhIHN2Z01hdHJpeCgpIG1ldGhvZCByZXR1cm5pbmcgYSBTVkdNYXRy
aXgsIHVzZWQgZm9yIHRoZSBiaW5kaW5ncy4KICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9
fiBzL21hdHJpeC9zdmdNYXRyaXgvOwpAQCAtMTEzMiw3ICsxMTMwLDcgQEAgRU5ECiAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICByZXR1cm4gdG9WOChXVEY6Omdl
dFB0cigke3RlYXJPZmZUeXBlfTo6Y3JlYXRlKHdyYXBwZXIsICRyZXN1bHQsICR1cGRhdGVNZXRo
b2QpKSwgaW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpO1xuIik7CiAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTVkdTdGF0aWNQ
cm9wZXJ0eVRlYXJPZmYuaCIpOwotICAgICAgICAgICAgICAgICR0ZWFyT2ZmVHlwZSA9fiBzL1NW
R1Byb3BlcnR5VGVhck9mZjwvU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmPCRpbXBsQ2xhc3NOYW1l
LCAvOworICAgICAgICAgICAgICAgICR0ZWFyT2ZmVHlwZSA9fiBzL1NWR1Byb3BlcnR5VGVhck9m
ZjwvU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmPCRpbnRlcmZhY2VOYW1lLCAvOwogCiAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICByZXR1cm4gdG9WOChXVEY6Omdl
dFB0cigke3RlYXJPZmZUeXBlfTo6Y3JlYXRlKGltcCwgJHJlc3VsdCwgJHVwZGF0ZU1ldGhvZCkp
LCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7XG4iKTsKICAgICAgICAgICAgIH0K
QEAgLTExNzksMTkgKzExNzcsMTkgQEAgRU5ECiBzdWIgR2VuZXJhdGVSZXBsYWNlYWJsZUF0dHJT
ZXR0ZXIKIHsKICAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKLSAgICBteSAkaW1wbENsYXNzTmFt
ZSA9IHNoaWZ0OworICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7CiAKICAgICBwdXNoKEBp
bXBsQ29udGVudERlY2xzLCA8PEVORCk7Ci1zdGF0aWMgdm9pZCAke2ltcGxDbGFzc05hbWV9UmVw
bGFjZWFibGVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3N0YXRpYyB2
b2lkICR7aW50ZXJmYWNlTmFtZX1SZXBsYWNlYWJsZUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQogewotICAgIElOQ19TVEFUUygiRE9NLiRpbXBsQ2xhc3NOYW1lLnJlcGxh
Y2VhYmxlLl9zZXQiKTsKKyAgICBJTkNfU1RBVFMoIkRPTS4kaW50ZXJmYWNlTmFtZS5yZXBsYWNl
YWJsZS5fc2V0Iik7CiBFTkQKICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCBHZW5lcmF0ZUZl
YXR1cmVPYnNlcnZhdGlvbigkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOE1lYXN1
cmVBcyJ9KSk7CiAKLSAgICBpZiAoJGltcGxDbGFzc05hbWUgZXEgIkRPTVdpbmRvdyIgfHwgJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1cml0eSJ9KSB7CisgICAgaWYg
KCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciIHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkNoZWNrU2VjdXJpdHkifSkgewogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygi
RnJhbWUuaCIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7Ci0gICAg
JHtpbXBsQ2xhc3NOYW1lfSogaW1wID0gVjgke2ltcGxDbGFzc05hbWV9Ojp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKKyAgICAke2ludGVyZmFjZU5hbWV9KiBpbXAgPSBWOCR7aW50ZXJmYWNlTmFt
ZX06OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIGlmICghQmluZGluZ1NlY3VyaXR5Ojpz
aG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpLCBpbXAtPmZy
YW1lKCkpKQogICAgICAgICByZXR1cm47CiBFTkQKQEAgLTEyMDgsNyArMTIwNiw2IEBAIHN1YiBH
ZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXIKIHsKICAgICBteSAkYXR0cmlidXRlID0gc2hpZnQ7CiAg
ICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7Ci0gICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlmdDsK
ICAgICBteSAkaW50ZXJmYWNlTmFtZSA9IHNoaWZ0OwogCiAgICAgbXkgJGF0dHJOYW1lID0gJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lOwpAQCAtMTIxOCw3ICsxMjE1LDcgQEAgc3ViIEdlbmVy
YXRlTm9ybWFsQXR0clNldHRlcgogICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIjaWYgJHtj
b25kaXRpb25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogCiAgICAgcHVz
aChAaW1wbENvbnRlbnREZWNscywgInN0YXRpYyB2b2lkICR7YXR0ck5hbWV9QXR0clNldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pXG57XG4iKTsKLSAgICBwdXNoKEBpbXBsQ29udGVu
dERlY2xzLCAiICAgIElOQ19TVEFUUyhcIkRPTS4kaW1wbENsYXNzTmFtZS4kYXR0ck5hbWUuX3Nl
dFwiKTtcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgSU5DX1NUQVRTKFwi
RE9NLiRpbnRlcmZhY2VOYW1lLiRhdHRyTmFtZS5fc2V0XCIpO1xuIik7CiAgICAgcHVzaChAaW1w
bENvbnRlbnREZWNscywgR2VuZXJhdGVGZWF0dXJlT2JzZXJ2YXRpb24oJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhNZWFzdXJlQXMifSkpOwogCiAgICAgIyBJ
ZiB0aGUgIlN0cmljdFR5cGVDaGVja2luZyIgZXh0ZW5kZWQgYXR0cmlidXRlIGlzIHByZXNlbnQs
IGFuZCB0aGUgYXR0cmlidXRlJ3MgdHlwZSBpcyBhbgpAQCAtMTIzNiwxNiArMTIzMywxNiBAQCBz
dWIgR2VuZXJhdGVOb3JtYWxBdHRyU2V0dGVyCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBteSAk
c3ZnTmF0aXZlVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRTVkdUeXBlTmVlZGluZ1RlYXJPZmYo
JGltcGxDbGFzc05hbWUpOworICAgIG15ICRzdmdOYXRpdmVUeXBlID0gJGNvZGVHZW5lcmF0b3It
PkdldFNWR1R5cGVOZWVkaW5nVGVhck9mZigkaW50ZXJmYWNlTmFtZSk7CiAgICAgaWYgKCRzdmdO
YXRpdmVUeXBlKSB7Ci0gICAgICAgIG15ICRzdmdXcmFwcGVkTmF0aXZlVHlwZSA9ICRjb2RlR2Vu
ZXJhdG9yLT5HZXRTVkdXcmFwcGVkVHlwZU5lZWRpbmdUZWFyT2ZmKCRpbXBsQ2xhc3NOYW1lKTsK
KyAgICAgICAgbXkgJHN2Z1dyYXBwZWROYXRpdmVUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldFNW
R1dyYXBwZWRUeXBlTmVlZGluZ1RlYXJPZmYoJGludGVyZmFjZU5hbWUpOwogICAgICAgICBpZiAo
JHN2Z1dyYXBwZWROYXRpdmVUeXBlID1+IC9MaXN0JC8pIHsKICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50RGVjbHMsIDw8RU5EKTsKLSAgICAkc3ZnTmF0aXZlVHlwZSogaW1wID0gVjgke2lt
cGxDbGFzc05hbWV9Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICAkc3ZnTmF0aXZlVHlw
ZSogaW1wID0gVjgke2ludGVyZmFjZU5hbWV9Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKIEVO
RAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkV4Y2Vw
dGlvbkNvZGUuaCIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAk
c3ZnTmF0aXZlVHlwZSogd3JhcHBlciA9IFY4JHtpbXBsQ2xhc3NOYW1lfTo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIg
ICAgJHN2Z05hdGl2ZVR5cGUqIHdyYXBwZXIgPSBWOCR7aW50ZXJmYWNlTmFtZX06OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xz
LCAiICAgIGlmICh3cmFwcGVyLT5pc1JlYWRPbmx5KCkpIHtcbiIpOwogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnREZWNscywgIiAgICAgICAgc2V0RE9NRXhjZXB0aW9uKE5PX01PRElGSUNB
VElPTl9BTExPV0VEX0VSUiwgaW5mby5HZXRJc29sYXRlKCkpO1xuIik7CiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICAgICByZXR1cm47XG4iKTsKQEAgLTEyNTUsNyAr
MTI1Miw3IEBAIEVORAogICAgICAgICB9CiAgICAgfSBlbHNpZiAoJGF0dHJFeHQtPnsiVjhPblBy
b3RvIn0pIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOwotICAgICR7
aW1wbENsYXNzTmFtZX0qIGltcCA9IFY4JHtpbXBsQ2xhc3NOYW1lfTo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7CisgICAgJHtpbnRlcmZhY2VOYW1lfSogaW1wID0gVjgke2ludGVyZmFjZU5hbWV9
Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKIEVORAogICAgIH0gZWxzZSB7CiAgICAgICAgIG15
ICRhdHRyVHlwZSA9IEdldFR5cGVGcm9tU2lnbmF0dXJlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSk7
CkBAIC0xMjc2LDcgKzEyNzMsNyBAQCBFTkQKIAogICAgICAgICBpZiAoISRhdHRyaWJ1dGUtPmlz
U3RhdGljKSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7Ci0g
ICAgJHtpbXBsQ2xhc3NOYW1lfSogaW1wID0gVjgke2ltcGxDbGFzc05hbWV9Ojp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKKyAgICAke2ludGVyZmFjZU5hbWV9KiBpbXAgPSBWOCR7aW50ZXJmYWNl
TmFtZX06OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogRU5ECiAgICAgICAgIH0KICAgICB9CkBA
IC0xMzEzLDcgKzEzMTAsNyBAQCBFTkQKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywg
IiAgICBFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpOwogICAgIH0KIAotICAgIGlmICgkaW1wbENs
YXNzTmFtZSBlcSAiU1ZHTnVtYmVyIikgeworICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiU1ZH
TnVtYmVyIikgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICppbXAgPSAk
cmVzdWx0O1xuIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+dHlwZSBlcSAiRXZlbnRMaXN0ZW5lciIpIHsKQEAgLTE0MTUsNyArMTQxMiw3IEBAIHN1
YiBHZW5lcmF0ZU5ld0Z1bmN0aW9uVGVtcGxhdGUKIAogc3ViIEdlbmVyYXRlRXZlbnRMaXN0ZW5l
ckNhbGxiYWNrCiB7Ci0gICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlmdDsKKyAgICBteSAkaW50
ZXJmYWNlTmFtZSA9IHNoaWZ0OwogICAgIG15ICRyZXF1aXJlc0hpZGRlbkRlcGVuZGVuY3kgPSBz
aGlmdDsKICAgICBteSAkZnVuY3Rpb25OYW1lID0gc2hpZnQ7CiAgICAgbXkgJGxvb2t1cFR5cGUg
PSAoJGZ1bmN0aW9uTmFtZSBlcSAiYWRkIikgPyAiT3JDcmVhdGUiIDogIk9ubHkiOwpAQCAtMTQy
NSwxNCArMTQyMiwxNCBAQCBzdWIgR2VuZXJhdGVFdmVudExpc3RlbmVyQ2FsbGJhY2sKICAgICBw
dXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+ICR7ZnVuY3Rpb25OYW1lfUV2ZW50TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLiR7aW1wbENsYXNzTmFtZX0uJHtmdW5j
dGlvbk5hbWV9RXZlbnRMaXN0ZW5lcigpIik7CisgICAgSU5DX1NUQVRTKCJET00uJHtpbnRlcmZh
Y2VOYW1lfS4ke2Z1bmN0aW9uTmFtZX1FdmVudExpc3RlbmVyKCkiKTsKICAgICBSZWZQdHI8RXZl
bnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBWOERPTVdyYXBwZXI6OmdldEV2ZW50TGlzdGVuZXIoYXJn
c1sxXSwgZmFsc2UsIExpc3RlbmVyRmluZCR7bG9va3VwVHlwZX0pOwogICAgIGlmIChsaXN0ZW5l
cikgewotICAgICAgICBWOCR7aW1wbENsYXNzTmFtZX06OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkp
LT4ke2Z1bmN0aW9uTmFtZX1FdmVudExpc3RlbmVyKHRvV2ViQ29yZUF0b21pY1N0cmluZyhhcmdz
WzBdKSwgbGlzdGVuZXIke3Bhc3NSZWZQdHJIYW5kbGluZ30sIGFyZ3NbMl0tPkJvb2xlYW5WYWx1
ZSgpKTsKKyAgICAgICAgVjgke2ludGVyZmFjZU5hbWV9Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KS0+JHtmdW5jdGlvbk5hbWV9RXZlbnRMaXN0ZW5lcih0b1dlYkNvcmVBdG9taWNTdHJpbmcoYXJn
c1swXSksIGxpc3RlbmVyJHtwYXNzUmVmUHRySGFuZGxpbmd9LCBhcmdzWzJdLT5Cb29sZWFuVmFs
dWUoKSk7CiBFTkQKICAgICBpZiAoJHJlcXVpcmVzSGlkZGVuRGVwZW5kZW5jeSkgewogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7Ci0gICAgICAgICR7aGlkZGVuRGVwZW5k
ZW5jeUFjdGlvbn1IaWRkZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCksIGFyZ3NbMV0sIFY4JHtp
bXBsQ2xhc3NOYW1lfTo6ZXZlbnRMaXN0ZW5lckNhY2hlSW5kZXgpOworICAgICAgICAke2hpZGRl
bkRlcGVuZGVuY3lBY3Rpb259SGlkZGVuRGVwZW5kZW5jeShhcmdzLkhvbGRlcigpLCBhcmdzWzFd
LCBWOCR7aW50ZXJmYWNlTmFtZX06OmV2ZW50TGlzdGVuZXJDYWNoZUluZGV4KTsKIEVORAogICAg
IH0KICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CkBAIC0xNTE5LDcgKzE1MTYs
NyBAQCBzdWIgR2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rpb25DYWxsYmFjawogewogICAgIG15ICRm
dW5jdGlvbiA9IHNoaWZ0OwogICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OwotICAgIG15ICRpbXBs
Q2xhc3NOYW1lID0gc2hpZnQ7CisgICAgbXkgJGludGVyZmFjZU5hbWUgPSBzaGlmdDsKIAogICAg
ICMgR2VuZXJhdGUgY29kZSBmb3IgY2hvb3NpbmcgdGhlIGNvcnJlY3Qgb3ZlcmxvYWQgdG8gY2Fs
bC4gT3ZlcmxvYWRzIGFyZQogICAgICMgY2hvc2VuIGJhc2VkIG9uIHRoZSB0b3RhbCBudW1iZXIg
b2YgYXJndW1lbnRzIHBhc3NlZCBhbmQgdGhlIHR5cGUgb2YKQEAgLTE1MzQsNyArMTUzMSw3IEBA
IHN1YiBHZW5lcmF0ZU92ZXJsb2FkZWRGdW5jdGlvbkNhbGxiYWNrCiAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgPDxFTkQpOwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke25hbWV9
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoXCJE
T00uJGltcGxDbGFzc05hbWUuJG5hbWVcIik7CisgICAgSU5DX1NUQVRTKFwiRE9NLiRpbnRlcmZh
Y2VOYW1lLiRuYW1lXCIpOwogRU5ECiAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgR2VuZXJh
dGVGZWF0dXJlT2JzZXJ2YXRpb24oJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJWOE1lYXN1cmVBcyJ9KSk7CiAKQEAgLTE1NTksNyArMTU1Niw3IEBAIHN1YiBHZW5l
cmF0ZUZ1bmN0aW9uQ2FsbGJhY2sKIHsKICAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKICAgICBt
eSAkZGF0YU5vZGUgPSBzaGlmdDsKLSAgICBteSAkaW1wbENsYXNzTmFtZSA9IHNoaWZ0OworICAg
IG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7CiAKICAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRk
YXRhTm9kZS0+bmFtZTsKICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1l
OwpAQCAtMTU3MywxMCArMTU3MCwxMCBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhbGxiYWNrCiAg
ICAgIyBidXQgdGhleSBhcmUgZXh0cmVtZWx5IGNvbnNpc3RlbnQgYWNyb3NzIHRoZSB2YXJpb3Vz
IGNsYXNzZXMgdGhhdCB0YWtlIGV2ZW50IGxpc3RlbmVycywKICAgICAjIHNvIHdlIGNhbiBnZW5l
cmF0ZSB0aGVtIGFzIGEgInNwZWNpYWwgY2FzZSIuCiAgICAgaWYgKCRuYW1lIGVxICJhZGRFdmVu
dExpc3RlbmVyIikgewotICAgICAgICBHZW5lcmF0ZUV2ZW50TGlzdGVuZXJDYWxsYmFjaygkaW1w
bENsYXNzTmFtZSwgIUlzTm9kZVN1YlR5cGUoJGRhdGFOb2RlKSwgImFkZCIpOworICAgICAgICBH
ZW5lcmF0ZUV2ZW50TGlzdGVuZXJDYWxsYmFjaygkaW50ZXJmYWNlTmFtZSwgIUlzTm9kZVN1YlR5
cGUoJGRhdGFOb2RlKSwgImFkZCIpOwogICAgICAgICByZXR1cm47CiAgICAgfSBlbHNpZiAoJG5h
bWUgZXEgInJlbW92ZUV2ZW50TGlzdGVuZXIiKSB7Ci0gICAgICAgIEdlbmVyYXRlRXZlbnRMaXN0
ZW5lckNhbGxiYWNrKCRpbXBsQ2xhc3NOYW1lLCAhSXNOb2RlU3ViVHlwZSgkZGF0YU5vZGUpLCAi
cmVtb3ZlIik7CisgICAgICAgIEdlbmVyYXRlRXZlbnRMaXN0ZW5lckNhbGxiYWNrKCRpbnRlcmZh
Y2VOYW1lLCAhSXNOb2RlU3ViVHlwZSgkZGF0YU5vZGUpLCAicmVtb3ZlIik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTE1ODUsNyArMTU4Miw3IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9u
Q2FsbGJhY2sKICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CiBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+ICR7bmFtZX1DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewotICAgIElOQ19TVEFUUyhcIkRPTS4kaW1wbENsYXNzTmFtZS4kbmFtZVwiKTsKKyAg
ICBJTkNfU1RBVFMoXCJET00uJGludGVyZmFjZU5hbWUuJG5hbWVcIik7CiBFTkQKICAgICBwdXNo
KEBpbXBsQ29udGVudERlY2xzLCBHZW5lcmF0ZUZlYXR1cmVPYnNlcnZhdGlvbigkZnVuY3Rpb24t
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4TWVhc3VyZUFzIn0pKTsKIApAQCAt
MTU5NCwzMSArMTU5MSwzMSBAQCBFTkQKICAgICBpZiAoJG5hbWUgZXEgInNldCIgYW5kICRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlR5cGVkQXJyYXkifSkgewogICAgICAgICBBZGRU
b0ltcGxJbmNsdWRlcygiVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaCIpOwogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7Ci0gICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxw
ZXI8JGltcGxDbGFzc05hbWUsIFY4JHtpbXBsQ2xhc3NOYW1lfT4oYXJncyk7CisgICAgcmV0dXJu
IHNldFdlYkdMQXJyYXlIZWxwZXI8JGludGVyZmFjZU5hbWUsIFY4JHtpbnRlcmZhY2VOYW1lfT4o
YXJncyk7CiB9CiAKIEVORAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbXkgKCRzdmdQ
cm9wZXJ0eVR5cGUsICRzdmdMaXN0UHJvcGVydHlUeXBlLCAkc3ZnTmF0aXZlVHlwZSkgPSBHZXRT
VkdQcm9wZXJ0eVR5cGVzKCRpbXBsQ2xhc3NOYW1lKTsKKyAgICBteSAoJHN2Z1Byb3BlcnR5VHlw
ZSwgJHN2Z0xpc3RQcm9wZXJ0eVR5cGUsICRzdmdOYXRpdmVUeXBlKSA9IEdldFNWR1Byb3BlcnR5
VHlwZXMoJGludGVyZmFjZU5hbWUpOwogCiAgICAgaWYgKCRzdmdOYXRpdmVUeXBlKSB7Ci0gICAg
ICAgIG15ICRuYXRpdmVDbGFzc05hbWUgPSBHZXROYXRpdmVUeXBlKCRpbXBsQ2xhc3NOYW1lKTsg
Ci0gICAgICAgIGlmICgkaW1wbENsYXNzTmFtZSA9fiAvTGlzdCQvKSB7Ci0gICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICRuYXRpdmVDbGFzc05hbWUgaW1wID0gVjgke2lt
cGxDbGFzc05hbWV9Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTtcbiIpOworICAgICAgICBteSAk
bmF0aXZlQ2xhc3NOYW1lID0gR2V0TmF0aXZlVHlwZSgkaW50ZXJmYWNlTmFtZSk7IAorICAgICAg
ICBpZiAoJGludGVyZmFjZU5hbWUgPX4gL0xpc3QkLykgeworICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnREZWNscywgIiAgICAkbmF0aXZlQ2xhc3NOYW1lIGltcCA9IFY4JHtpbnRlcmZhY2VO
YW1lfTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7XG4iKTsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJFeGNlcHRpb25Db2RlLmgiKTsKLSAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgJG5hdGl2ZUNsYXNzTmFtZSB3cmFwcGVy
ID0gVjgke2ltcGxDbGFzc05hbWV9Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTtcbiIpOworICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAkbmF0aXZlQ2xhc3NOYW1lIHdy
YXBwZXIgPSBWOCR7aW50ZXJmYWNlTmFtZX06OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpO1xuIik7
CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGlmICh3cmFwcGVyLT5p
c1JlYWRPbmx5KCkpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIg
ICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJS
LCBhcmdzLkdldElzb2xhdGUoKSk7XG4iKTsKLSAgICAgICAgICAgIG15ICRzdmdXcmFwcGVkTmF0
aXZlVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRTVkdXcmFwcGVkVHlwZU5lZWRpbmdUZWFyT2Zm
KCRpbXBsQ2xhc3NOYW1lKTsKKyAgICAgICAgICAgIG15ICRzdmdXcmFwcGVkTmF0aXZlVHlwZSA9
ICRjb2RlR2VuZXJhdG9yLT5HZXRTVkdXcmFwcGVkVHlwZU5lZWRpbmdUZWFyT2ZmKCRpbnRlcmZh
Y2VOYW1lKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgJHN2Z1dy
YXBwZWROYXRpdmVUeXBlJiBpbXBJbnN0YW5jZSA9IHdyYXBwZXItPnByb3BlcnR5UmVmZXJlbmNl
KCk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgJHN2Z1dy
YXBwZWROYXRpdmVUeXBlKiBpbXAgPSAmaW1wSW5zdGFuY2U7XG4iKTsKICAgICAgICAgfQogICAg
IH0gZWxzaWYgKCEkZnVuY3Rpb24tPmlzU3RhdGljKSB7CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50RGVjbHMsIDw8RU5EKTsKLSAgICAke2ltcGxDbGFzc05hbWV9KiBpbXAgPSBWOCR7aW1wbENs
YXNzTmFtZX06OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgICR7aW50ZXJmYWNlTmFtZX0q
IGltcCA9IFY4JHtpbnRlcmZhY2VOYW1lfTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiBFTkQK
ICAgICB9CiAKQEAgLTE2NTgsMTEgKzE2NTUsMTEgQEAgRU5ECiBFTkQKICAgICB9CiAKLSAgICBt
eSAoJHBhcmFtZXRlckNoZWNrU3RyaW5nLCAkcGFyYW1JbmRleCwgJXJlcGxhY2VtZW50cykgPSBH
ZW5lcmF0ZVBhcmFtZXRlcnNDaGVjaygkZnVuY3Rpb24sICRpbXBsQ2xhc3NOYW1lKTsKKyAgICBt
eSAoJHBhcmFtZXRlckNoZWNrU3RyaW5nLCAkcGFyYW1JbmRleCwgJXJlcGxhY2VtZW50cykgPSBH
ZW5lcmF0ZVBhcmFtZXRlcnNDaGVjaygkZnVuY3Rpb24sICRpbnRlcmZhY2VOYW1lKTsKICAgICBw
dXNoKEBpbXBsQ29udGVudERlY2xzLCAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcpOwogCiAgICAgIyBC
dWlsZCB0aGUgZnVuY3Rpb24gY2FsbCBzdHJpbmcuCi0gICAgcHVzaChAaW1wbENvbnRlbnREZWNs
cywgR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcoJGZ1bmN0aW9uLCAkcGFyYW1JbmRleCwgIiAg
ICAiLCAkaW1wbENsYXNzTmFtZSwgJXJlcGxhY2VtZW50cykpOworICAgIHB1c2goQGltcGxDb250
ZW50RGVjbHMsIEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nKCRmdW5jdGlvbiwgJHBhcmFtSW5k
ZXgsICIgICAgIiwgJGludGVyZmFjZU5hbWUsICVyZXBsYWNlbWVudHMpKTsKIAogICAgIGlmICgk
cmFpc2VzRXhjZXB0aW9ucykgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAg
IH1cbiIpOwpAQCAtMTc1Nyw3ICsxNzU0LDcgQEAgc3ViIEdldEluZGV4T2YKIHN1YiBHZW5lcmF0
ZVBhcmFtZXRlcnNDaGVjawogewogICAgIG15ICRmdW5jdGlvbiA9IHNoaWZ0OwotICAgIG15ICRp
bXBsQ2xhc3NOYW1lID0gc2hpZnQ7CisgICAgbXkgJGludGVyZmFjZU5hbWUgPSBzaGlmdDsKIAog
ICAgIG15ICRwYXJhbWV0ZXJDaGVja1N0cmluZyA9ICIiOwogICAgIG15ICRwYXJhbUluZGV4ID0g
MDsKQEAgLTE3NzQsNyArMTc3MSw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAg
ICAgICBteSAkb3B0aW9uYWwgPSAkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT3B0
aW9uYWwifTsKICAgICAgICAgaWYgKCRvcHRpb25hbCAmJiAkb3B0aW9uYWwgbmUgIkRlZmF1bHRJ
c1VuZGVmaW5lZCIgJiYgJG9wdGlvbmFsIG5lICJEZWZhdWx0SXNOdWxsU3RyaW5nIiAmJiAkbmF0
aXZlVHlwZSBuZSAiRGljdGlvbmFyeSIgJiYgISRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDYWxsYmFjayJ9KSB7CiAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0g
IiAgICBpZiAoYXJncy5MZW5ndGgoKSA8PSAkcGFyYW1JbmRleCkge1xuIjsKLSAgICAgICAgICAg
IG15ICRmdW5jdGlvbkNhbGwgPSBHZW5lcmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZygkZnVuY3Rpb24s
ICRwYXJhbUluZGV4LCAiICAgICIgeCAyLCAkaW1wbENsYXNzTmFtZSwgJXJlcGxhY2VtZW50cyk7
CisgICAgICAgICAgICBteSAkZnVuY3Rpb25DYWxsID0gR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJp
bmcoJGZ1bmN0aW9uLCAkcGFyYW1JbmRleCwgIiAgICAiIHggMiwgJGludGVyZmFjZU5hbWUsICVy
ZXBsYWNlbWVudHMpOwogICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICRmdW5j
dGlvbkNhbGw7CiAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICB9XG4i
OwogICAgICAgICB9CkBAIC0xOTE2LDEyICsxOTEzLDEyIEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRl
cnNDaGVjawogc3ViIEdlbmVyYXRlT3ZlcmxvYWRlZENvbnN0cnVjdG9yQ2FsbGJhY2sKIHsKICAg
ICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKLSAgICBteSAkaW1wbENsYXNzTmFtZSA9IHNoaWZ0Owor
ICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7CiAgICAgCiAgICAgcHVzaChAaW1wbENvbnRl
bnQsIDw8RU5EKTsKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOCR7aW1wbENsYXNzTmFtZX06OmNv
bnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOCR7aW50ZXJmYWNlTmFtZX06OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS4ke2ltcGxDbGFzc05h
bWV9LkNvbnN0cnVjdG9yIik7CisgICAgSU5DX1NUQVRTKCJET00uJHtpbnRlcmZhY2VOYW1lfS5D
b25zdHJ1Y3RvciIpOwogICAgIGlmICghYXJncy5Jc0NvbnN0cnVjdENhbGwoKSkKICAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKCJET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBj
YWxsZWQgYXMgYSBmdW5jdGlvbi4iKTsKIApAQCAtMTk1MSw3ICsxOTQ4LDcgQEAgRU5ECiBzdWIg
R2VuZXJhdGVTaW5nbGVDb25zdHJ1Y3RvckNhbGxiYWNrCiB7CiAgICAgbXkgJGRhdGFOb2RlID0g
c2hpZnQ7Ci0gICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlmdDsKKyAgICBteSAkaW50ZXJmYWNl
TmFtZSA9IHNoaWZ0OwogICAgIG15ICRmdW5jdGlvbiA9IHNoaWZ0OwogCiAgICAgbXkgJG92ZXJs
b2FkZWRJbmRleFN0cmluZyA9ICIiOwpAQCAtMTk3Niw5ICsxOTczLDkgQEAgc3ViIEdlbmVyYXRl
U2luZ2xlQ29uc3RydWN0b3JDYWxsYmFjawogICAgIG15IEBiZWZvcmVBcmd1bWVudExpc3Q7CiAg
ICAgbXkgQGFmdGVyQXJndW1lbnRMaXN0OwogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7
Ci12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjgke2ltcGxDbGFzc05hbWV9Ojpjb25zdHJ1Y3RvciR7
b3ZlcmxvYWRlZEluZGV4U3RyaW5nfUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjgke2ludGVyZmFjZU5hbWV9Ojpjb25zdHJ1Y3RvciR7
b3ZlcmxvYWRlZEluZGV4U3RyaW5nfUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiB7Ci0gICAgSU5DX1NUQVRTKCJET00uJHtpbXBsQ2xhc3NOYW1lfS5Db25zdHJ1Y3RvciR7b3Zl
cmxvYWRlZEluZGV4U3RyaW5nfSIpOworICAgIElOQ19TVEFUUygiRE9NLiR7aW50ZXJmYWNlTmFt
ZX0uQ29uc3RydWN0b3Ike292ZXJsb2FkZWRJbmRleFN0cmluZ30iKTsKICAgICAke21heWJlT2Jz
ZXJ2ZUZlYXR1cmV9CiBFTkQKIApAQCAtMjAwMSw3ICsxOTk4LDcgQEAgRU5ECiAKICAgICAjIEZJ
WE1FOiBDdXJyZW50bHkgW0NvbnN0cnVjdG9yKC4uLildIGRvZXMgbm90IHlldCBzdXBwb3J0IFtP
cHRpb25hbF0gYXJndW1lbnRzLgogICAgICMgSXQganVzdCBzdXBwb3J0cyBbT3B0aW9uYWw9RGVm
YXVsdElzVW5kZWZpbmVkXSBvciBbT3B0aW9uYWw9RGVmYXVsdElzTnVsbFN0cmluZ10uCi0gICAg
bXkgKCRwYXJhbWV0ZXJDaGVja1N0cmluZywgJHBhcmFtSW5kZXgsICVyZXBsYWNlbWVudHMpID0g
R2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2soJGZ1bmN0aW9uLCAkaW1wbENsYXNzTmFtZSk7CisgICAg
bXkgKCRwYXJhbWV0ZXJDaGVja1N0cmluZywgJHBhcmFtSW5kZXgsICVyZXBsYWNlbWVudHMpID0g
R2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2soJGZ1bmN0aW9uLCAkaW50ZXJmYWNlTmFtZSk7CiAgICAg
cHVzaChAaW1wbENvbnRlbnQsICRwYXJhbWV0ZXJDaGVja1N0cmluZyk7CiAKICAgICBpZiAoJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifSAmJiAkZGF0YU5vZGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9IGVxICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
IikgewpAQCAtMjAzMCw3ICsyMDI3LDcgQEAgRU5ECiAKICAgICBteSAkYXJndW1lbnRTdHJpbmcg
PSBqb2luKCIsICIsIEBiZWZvcmVBcmd1bWVudExpc3QsIEBhcmd1bWVudExpc3QsIEBhZnRlckFy
Z3VtZW50TGlzdCk7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIpOwotICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIFJlZlB0cjwke2ltcGxDbGFzc05hbWV9PiBpbXBsID0gJHtpbXBsQ2xh
c3NOYW1lfTo6Y3JlYXRlKCR7YXJndW1lbnRTdHJpbmd9KTtcbiIpOworICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIFJlZlB0cjwke2ludGVyZmFjZU5hbWV9PiBpbXBsID0gJHtpbnRlcmZhY2VO
YW1lfTo6Y3JlYXRlKCR7YXJndW1lbnRTdHJpbmd9KTtcbiIpOwogICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7
XG4iKTsKIAogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1
Y3RvclJhaXNlc0V4Y2VwdGlvbiJ9KSB7CkBAIC0yMDU2LDI4ICsyMDUzLDI4IEBAIEVORAogc3Vi
IEdlbmVyYXRlQ29uc3RydWN0b3JDYWxsYmFjawogewogICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0
OwotICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gc2hpZnQ7CisgICAgbXkgJGludGVyZmFjZU5hbWUg
PSBzaGlmdDsKIAogICAgIGlmIChAeyRkYXRhTm9kZS0+Y29uc3RydWN0b3JzfSA9PSAxKSB7Ci0g
ICAgICAgIEdlbmVyYXRlU2luZ2xlQ29uc3RydWN0b3JDYWxsYmFjaygkZGF0YU5vZGUsICRpbXBs
Q2xhc3NOYW1lLCBAeyRkYXRhTm9kZS0+Y29uc3RydWN0b3JzfVswXSk7CisgICAgICAgIEdlbmVy
YXRlU2luZ2xlQ29uc3RydWN0b3JDYWxsYmFjaygkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1lLCBA
eyRkYXRhTm9kZS0+Y29uc3RydWN0b3JzfVswXSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9y
ZWFjaCBteSAkY29uc3RydWN0b3IgKEB7JGRhdGFOb2RlLT5jb25zdHJ1Y3RvcnN9KSB7Ci0gICAg
ICAgICAgICBHZW5lcmF0ZVNpbmdsZUNvbnN0cnVjdG9yQ2FsbGJhY2soJGRhdGFOb2RlLCAkaW1w
bENsYXNzTmFtZSwgJGNvbnN0cnVjdG9yKTsKKyAgICAgICAgICAgIEdlbmVyYXRlU2luZ2xlQ29u
c3RydWN0b3JDYWxsYmFjaygkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1lLCAkY29uc3RydWN0b3Ip
OwogICAgICAgICB9Ci0gICAgICAgIEdlbmVyYXRlT3ZlcmxvYWRlZENvbnN0cnVjdG9yQ2FsbGJh
Y2soJGRhdGFOb2RlLCAkaW1wbENsYXNzTmFtZSk7CisgICAgICAgIEdlbmVyYXRlT3ZlcmxvYWRl
ZENvbnN0cnVjdG9yQ2FsbGJhY2soJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7CiAgICAgfQog
fQogCiBzdWIgR2VuZXJhdGVFdmVudENvbnN0cnVjdG9yQ2FsbGJhY2sKIHsKICAgICBteSAkZGF0
YU5vZGUgPSBzaGlmdDsKLSAgICBteSAkaW1wbENsYXNzTmFtZSA9IHNoaWZ0OworICAgIG15ICRp
bnRlcmZhY2VOYW1lID0gc2hpZnQ7CiAKICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRGljdGlvbmFy
eS5oIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKLXY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOCR7aW1wbENsYXNzTmFtZX06OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOCR7aW50ZXJmYWNlTmFtZX06
OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJ
TkNfU1RBVFMoIkRPTS4ke2ltcGxDbGFzc05hbWV9LkNvbnN0cnVjdG9yIik7CisgICAgSU5DX1NU
QVRTKCJET00uJHtpbnRlcmZhY2VOYW1lfS5Db25zdHJ1Y3RvciIpOwogCiAgICAgaWYgKCFhcmdz
LklzQ29uc3RydWN0Q2FsbCgpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoIkRPTSBv
YmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIpOwpAQCAt
MjA4OSwyMSArMjA4NiwyMSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjgke2ltcGxDbGFzc05h
bWV9Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudAogICAgICAgICByZXR1
cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAKICAg
ICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4sIHR5
cGUsIGFyZ3NbMF0pOwotICAgICR7aW1wbENsYXNzTmFtZX1Jbml0IGV2ZW50SW5pdDsKKyAgICAk
e2ludGVyZmFjZU5hbWV9SW5pdCBldmVudEluaXQ7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPj0g
MikgewogICAgICAgICBFWENFUFRJT05fQkxPQ0soRGljdGlvbmFyeSwgb3B0aW9ucywgRGljdGlv
bmFyeShhcmdzWzFdLCBhcmdzLkdldElzb2xhdGUoKSkpOwotICAgICAgICBpZiAoIWZpbGwke2lt
cGxDbGFzc05hbWV9SW5pdChldmVudEluaXQsIG9wdGlvbnMpKQorICAgICAgICBpZiAoIWZpbGwk
e2ludGVyZmFjZU5hbWV9SW5pdChldmVudEluaXQsIG9wdGlvbnMpKQogICAgICAgICAgICAgcmV0
dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgfQogCi0gICAgUmVmUHRyPCR7aW1wbENsYXNzTmFtZX0+
IGV2ZW50ID0gJHtpbXBsQ2xhc3NOYW1lfTo6Y3JlYXRlKHR5cGUsIGV2ZW50SW5pdCk7CisgICAg
UmVmUHRyPCR7aW50ZXJmYWNlTmFtZX0+IGV2ZW50ID0gJHtpbnRlcmZhY2VOYW1lfTo6Y3JlYXRl
KHR5cGUsIGV2ZW50SW5pdCk7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIg
PSBhcmdzLkhvbGRlcigpOwogICAgIFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihldmVu
dC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgcmV0
dXJuIHdyYXBwZXI7CiB9CiAKLWJvb2wgZmlsbCR7aW1wbENsYXNzTmFtZX1Jbml0KCR7aW1wbENs
YXNzTmFtZX1Jbml0JiBldmVudEluaXQsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMpCitib29s
IGZpbGwke2ludGVyZmFjZU5hbWV9SW5pdCgke2ludGVyZmFjZU5hbWV9SW5pdCYgZXZlbnRJbml0
LCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zKQogewogRU5ECiAKQEAgLTIxMzMsMTYgKzIxMzAs
MTYgQEAgRU5ECiBzdWIgR2VuZXJhdGVUeXBlZEFycmF5Q29uc3RydWN0b3JDYWxsYmFjawogewog
ICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OwotICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gc2hpZnQ7
CisgICAgbXkgJGludGVyZmFjZU5hbWUgPSBzaGlmdDsKICAgICBteSAkdmlld1R5cGUgPSBHZXRU
eXBlTmFtZU9mRXh0ZXJuYWxUeXBlZEFycmF5KCRkYXRhTm9kZSk7CiAgICAgbXkgJHR5cGUgPSAk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJUeXBlZEFycmF5In07CiAgICAgQWRkVG9J
bXBsSW5jbHVkZXMoIlY4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmgiKTsKIAogICAgIHB1c2goQGlt
cGxDb250ZW50LCA8PEVORCk7Ci12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjgke2ltcGxDbGFzc05h
bWV9Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjgke2ludGVyZmFjZU5hbWV9Ojpjb25zdHJ1Y3RvckNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uJHtpbXBs
Q2xhc3NOYW1lfS5Db250cnVjdG9yIik7Ci0gICAgcmV0dXJuIGNvbnN0cnVjdFdlYkdMQXJyYXk8
JGltcGxDbGFzc05hbWUsIFY4JHtpbXBsQ2xhc3NOYW1lfSwgJHR5cGU+KGFyZ3MsICZpbmZvLCAk
dmlld1R5cGUpOworICAgIElOQ19TVEFUUygiRE9NLiR7aW50ZXJmYWNlTmFtZX0uQ29udHJ1Y3Rv
ciIpOworICAgIHJldHVybiBjb25zdHJ1Y3RXZWJHTEFycmF5PCRpbnRlcmZhY2VOYW1lLCBWOCR7
aW50ZXJmYWNlTmFtZX0sICR0eXBlPihhcmdzLCAmaW5mbywgJHZpZXdUeXBlKTsKIH0KIAogRU5E
CkBAIC0yMTUyLDcgKzIxNDksNyBAQCBzdWIgR2VuZXJhdGVOYW1lZENvbnN0cnVjdG9yQ2FsbGJh
Y2sKIHsKICAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKICAgICBteSAkZGF0YU5vZGUgPSBzaGlm
dDsKLSAgICBteSAkaW1wbENsYXNzTmFtZSA9IHNoaWZ0OworICAgIG15ICRpbnRlcmZhY2VOYW1l
ID0gc2hpZnQ7CiAKICAgICBteSAkcmFpc2VzRXhjZXB0aW9ucyA9IEB7JGZ1bmN0aW9uLT5yYWlz
ZXNFeGNlcHRpb25zfTsKICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q29uc3RydWN0b3JSYWlzZXNFeGNlcHRpb24ifSkgewpAQCAtMjE3MywxNiArMjE3MCwxNiBAQCBz
dWIgR2VuZXJhdGVOYW1lZENvbnN0cnVjdG9yQ2FsbGJhY2sKIAogICAgIG15ICR0b0FjdGl2ZURP
TU9iamVjdCA9ICIwIjsKICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
QWN0aXZlRE9NT2JqZWN0In0pIHsKLSAgICAgICAgJHRvQWN0aXZlRE9NT2JqZWN0ID0gIlY4JHtp
bXBsQ2xhc3NOYW1lfTo6dG9BY3RpdmVET01PYmplY3QiOworICAgICAgICAkdG9BY3RpdmVET01P
YmplY3QgPSAiVjgke2ludGVyZmFjZU5hbWV9Ojp0b0FjdGl2ZURPTU9iamVjdCI7CiAgICAgfQog
ICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJGcmFtZS5oIik7CiAKICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgPDxFTkQpOwotV3JhcHBlclR5cGVJbmZvIFY4JHtpbXBsQ2xhc3NOYW1lfUNvbnN0cnVjdG9y
OjppbmZvID0geyBWOCR7aW1wbENsYXNzTmFtZX1Db25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUsIFY4
JHtpbXBsQ2xhc3NOYW1lfTo6ZGVyZWZPYmplY3QsICR7dG9BY3RpdmVET01PYmplY3R9LCAwLCBW
OCR7aW1wbENsYXNzTmFtZX06Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcywg
MCwgV3JhcHBlclR5cGVPYmplY3RQcm90b3R5cGUgfTsKK1dyYXBwZXJUeXBlSW5mbyBWOCR7aW50
ZXJmYWNlTmFtZX1Db25zdHJ1Y3Rvcjo6aW5mbyA9IHsgVjgke2ludGVyZmFjZU5hbWV9Q29uc3Ry
dWN0b3I6OkdldFRlbXBsYXRlLCBWOCR7aW50ZXJmYWNlTmFtZX06OmRlcmVmT2JqZWN0LCAke3Rv
QWN0aXZlRE9NT2JqZWN0fSwgMCwgVjgke2ludGVyZmFjZU5hbWV9OjppbnN0YWxsUGVyQ29udGV4
dFByb3RvdHlwZVByb3BlcnRpZXMsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlIH07CiAK
LXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjgke2ltcGxDbGFzc05hbWV9Q29uc3RydWN0
b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOCR7aW50ZXJmYWNlTmFtZX1Db25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uJHtpbXBsQ2xhc3NOYW1l
fS5Db25zdHJ1Y3RvciIpOworICAgIElOQ19TVEFUUygiRE9NLiR7aW50ZXJmYWNlTmFtZX0uQ29u
c3RydWN0b3IiKTsKICAgICAke21heWJlT2JzZXJ2ZUZlYXR1cmV9CiAgICAgaWYgKCFhcmdzLklz
Q29uc3RydWN0Q2FsbCgpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoIkRPTSBvYmpl
Y3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIpOwpAQCAtMjE5
Miw3ICsyMTg5LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOCR7aW1wbENsYXNz
TmFtZX1Db25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmcKIAogICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IGN1cnJlbnREb2N1bWVudChCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCkpOwogCi0g
ICAgLy8gTWFrZSBzdXJlIHRoZSBkb2N1bWVudCBpcyBhZGRlZCB0byB0aGUgRE9NIE5vZGUgbWFw
LiBPdGhlcndpc2UsIHRoZSAke2ltcGxDbGFzc05hbWV9IGluc3RhbmNlCisgICAgLy8gTWFrZSBz
dXJlIHRoZSBkb2N1bWVudCBpcyBhZGRlZCB0byB0aGUgRE9NIE5vZGUgbWFwLiBPdGhlcndpc2Us
IHRoZSAke2ludGVyZmFjZU5hbWV9IGluc3RhbmNlCiAgICAgLy8gbWF5IGVuZCB1cCBiZWluZyB0
aGUgb25seSBub2RlIGluIHRoZSBtYXAgYW5kIGdldCBnYXJiYWdlLWNvbGxlY3RlZCBwcmVtYXR1
cmVseS4KICAgICB0b1Y4KGRvY3VtZW50LCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUo
KSk7CiAKQEAgLTIyMDYsNyArMjIwMyw3IEBAIEVORAogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpOwogICAgIH0KIAotICAgIG15ICgkcGFy
YW1ldGVyQ2hlY2tTdHJpbmcsICRwYXJhbUluZGV4LCAlcmVwbGFjZW1lbnRzKSA9IEdlbmVyYXRl
UGFyYW1ldGVyc0NoZWNrKCRmdW5jdGlvbiwgJGltcGxDbGFzc05hbWUpOworICAgIG15ICgkcGFy
YW1ldGVyQ2hlY2tTdHJpbmcsICRwYXJhbUluZGV4LCAlcmVwbGFjZW1lbnRzKSA9IEdlbmVyYXRl
UGFyYW1ldGVyc0NoZWNrKCRmdW5jdGlvbiwgJGludGVyZmFjZU5hbWUpOwogICAgIHB1c2goQGlt
cGxDb250ZW50LCAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcpOwogCiAgICAgcHVzaChAYmVmb3JlQXJn
dW1lbnRMaXN0LCAiZG9jdW1lbnQiKTsKQEAgLTIyMjksNyArMjIyNiw3IEBAIEVORAogCiAgICAg
bXkgJGFyZ3VtZW50U3RyaW5nID0gam9pbigiLCAiLCBAYmVmb3JlQXJndW1lbnRMaXN0LCBAYXJn
dW1lbnRMaXN0LCBAYWZ0ZXJBcmd1bWVudExpc3QpOwogICAgIHB1c2goQGltcGxDb250ZW50LCAi
XG4iKTsKLSAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBSZWZQdHI8JHtpbXBsQ2xhc3NOYW1l
fT4gaW1wbCA9ICR7aW1wbENsYXNzTmFtZX06OmNyZWF0ZUZvckpTQ29uc3RydWN0b3IoJHthcmd1
bWVudFN0cmluZ30pO1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgUmVmUHRyPCR7
aW50ZXJmYWNlTmFtZX0+IGltcGwgPSAke2ludGVyZmFjZU5hbWV9OjpjcmVhdGVGb3JKU0NvbnN0
cnVjdG9yKCR7YXJndW1lbnRTdHJpbmd9KTtcbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7XG4iKTsK
IAogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvclJh
aXNlc0V4Y2VwdGlvbiJ9KSB7CkBAIC0yMjM5LDcgKzIyMzYsNyBAQCBFTkQKIAogICAgIHB1c2go
QGltcGxDb250ZW50LCA8PEVORCk7CiAKLSAgICBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBw
ZXIoaW1wbC5yZWxlYXNlKCksICZWOCR7aW1wbENsYXNzTmFtZX1Db25zdHJ1Y3Rvcjo6aW5mbywg
d3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9N
V3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJlY4JHtpbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yOjpp
bmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiBF
TkQKIApAQCAtMjI1MiwxOSArMjI0OSwxOSBAQCBFTkQKIAogICAgIHB1c2goQGltcGxDb250ZW50
LCA8PEVORCk7CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOCR7aW1w
bENsYXNzTmFtZX1Db25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUoKQordjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IFY4JHtpbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yOjpHZXRUZW1w
bGF0ZSgpCiB7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBjYWNoZWRUZW1wbGF0ZTsKICAgICBpZiAoIWNhY2hlZFRlbXBsYXRlLklzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIGNhY2hlZFRlbXBsYXRlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3Bl
OwotICAgIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcmVzdWx0ID0gdjg6OkZ1bmN0
aW9uVGVtcGxhdGU6Ok5ldyhWOCR7aW1wbENsYXNzTmFtZX1Db25zdHJ1Y3RvckNhbGxiYWNrKTsK
KyAgICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHJlc3VsdCA9IHY4OjpGdW5jdGlv
blRlbXBsYXRlOjpOZXcoVjgke2ludGVyZmFjZU5hbWV9Q29uc3RydWN0b3JDYWxsYmFjayk7CiAK
ICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSA9IHJlc3VsdC0+SW5z
dGFuY2VUZW1wbGF0ZSgpOwotICAgIGluc3RhbmNlLT5TZXRJbnRlcm5hbEZpZWxkQ291bnQoVjgk
e2ltcGxDbGFzc05hbWV9OjppbnRlcm5hbEZpZWxkQ291bnQpOwotICAgIHJlc3VsdC0+U2V0Q2xh
c3NOYW1lKHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiJHtpbXBsQ2xhc3NOYW1lfSIpKTsKLSAgICBy
ZXN1bHQtPkluaGVyaXQoVjgke2ltcGxDbGFzc05hbWV9OjpHZXRUZW1wbGF0ZSgpKTsKKyAgICBp
bnN0YW5jZS0+U2V0SW50ZXJuYWxGaWVsZENvdW50KFY4JHtpbnRlcmZhY2VOYW1lfTo6aW50ZXJu
YWxGaWVsZENvdW50KTsKKyAgICByZXN1bHQtPlNldENsYXNzTmFtZSh2ODo6U3RyaW5nOjpOZXdT
eW1ib2woIiR7aW50ZXJmYWNlTmFtZX0iKSk7CisgICAgcmVzdWx0LT5Jbmhlcml0KFY4JHtpbnRl
cmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUoKSk7CiAKICAgICBjYWNoZWRUZW1wbGF0ZSA9IHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KHJlc3VsdCk7CiAgICAgcmV0dXJu
IGNhY2hlZFRlbXBsYXRlOwpAQCAtMjY3OSw3ICsyNjc2LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRkYXRhTm9kZS0+bmFtZTsKICAgICBt
eSAkdmlzaWJsZUludGVyZmFjZU5hbWUgPSAkY29kZUdlbmVyYXRvci0+R2V0VmlzaWJsZUludGVy
ZmFjZU5hbWUoJGRhdGFOb2RlKTsKICAgICBteSAkY2xhc3NOYW1lID0gIlY4JGludGVyZmFjZU5h
bWUiOwotICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gJGludGVyZmFjZU5hbWU7CisgICAgbXkgJGlu
dGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlTmFtZTsKICAgICBteSAkbmF0aXZlVHlwZSA9IEdldE5h
dGl2ZVR5cGVGb3JDb252ZXJzaW9ucygkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1lKTsKIAogICAg
ICMgLSBBZGQgZGVmYXVsdCBoZWFkZXIgdGVtcGxhdGUKQEAgLTI3NTIsNyArMjc0OSw3IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICMgR2VuZXJhdGUgdGhlIGFjY2Vzc29y
LgogICAgICAgICBpZiAoISgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDdXN0b21HZXR0ZXIifSB8fAogICAgICAgICAgICAgJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhDdXN0b21HZXR0ZXIifSkpIHsKLSAgICAgICAgICAg
IEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlcigkYXR0cmlidXRlLCAkZGF0YU5vZGUsICRpbXBsQ2xh
c3NOYW1lLCAkaW50ZXJmYWNlTmFtZSk7CisgICAgICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJH
ZXR0ZXIoJGF0dHJpYnV0ZSwgJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiUmVwbGFjZWFibGUifSkgewpAQCAtMjc2MCwyOSArMjc1NywyOSBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICB9IGVsc2lmICghJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tU2V0dGVyIn0gJiYKICAgICAgICAgICAgICEkYXR0
cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOEN1c3RvbVNldHRlciJ9
ICYmCiAgICAgICAgICAgICAhSXNSZWFkb25seSgkYXR0cmlidXRlKSkgewotICAgICAgICAgICAg
R2VuZXJhdGVOb3JtYWxBdHRyU2V0dGVyKCRhdHRyaWJ1dGUsICRkYXRhTm9kZSwgJGltcGxDbGFz
c05hbWUsICRpbnRlcmZhY2VOYW1lKTsKKyAgICAgICAgICAgIEdlbmVyYXRlTm9ybWFsQXR0clNl
dHRlcigkYXR0cmlidXRlLCAkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlTmFt
ZSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoJGhhc0NvbnN0cnVjdG9ycykgewotICAg
ICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yR2V0dGVyKCRkYXRhTm9kZSwgJGltcGxDbGFzc05hbWUp
OworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yR2V0dGVyKCRkYXRhTm9kZSwgJGludGVyZmFj
ZU5hbWUpOwogICAgIH0KIAogICAgIGlmICgkaGFzQ29uc3RydWN0b3JzIHx8ICRoYXNSZXBsYWNl
YWJsZSkgewotICAgICAgICBHZW5lcmF0ZVJlcGxhY2VhYmxlQXR0clNldHRlcigkZGF0YU5vZGUs
ICRpbXBsQ2xhc3NOYW1lKTsKKyAgICAgICAgR2VuZXJhdGVSZXBsYWNlYWJsZUF0dHJTZXR0ZXIo
JGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7CiAgICAgfQogCiAgICAgaWYgKE5lZWRzQ3VzdG9t
T3BhcXVlUm9vdEZvckdDKCRkYXRhTm9kZSkpIHsKLSAgICAgICAgR2VuZXJhdGVPcGFxdWVSb290
Rm9yR0MoJGRhdGFOb2RlLCAkaW1wbENsYXNzTmFtZSk7CisgICAgICAgIEdlbmVyYXRlT3BhcXVl
Um9vdEZvckdDKCRkYXRhTm9kZSwgJGludGVyZmFjZU5hbWUpOwogICAgIH0KIAogICAgIGlmICgk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJUeXBlZEFycmF5In0pIHsKICAgICAgICAg
bXkgJHZpZXdUeXBlID0gR2V0VHlwZU5hbWVPZkV4dGVybmFsVHlwZWRBcnJheSgkZGF0YU5vZGUp
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiB3cmFwKCRpbXBsQ2xhc3NOYW1lKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNy
ZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IHdyYXAoJGludGVyZmFjZU5hbWUqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Jl
YXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICBBU1NFUlQoaW1wbCk7
Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjgke2ltcGxDbGFzc05hbWV9
OjpjcmVhdGVXcmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjgke2ludGVyZmFjZU5hbWV9OjpjcmVhdGVX
cmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAgaWYgKCF3cmFwcGVy
LklzRW1wdHkoKSkKICAgICAgICAgd3JhcHBlci0+U2V0SW5kZXhlZFByb3BlcnRpZXNUb0V4dGVy
bmFsQXJyYXlEYXRhKGltcGwtPmJhc2VBZGRyZXNzKCksICR2aWV3VHlwZSwgaW1wbC0+bGVuZ3Ro
KCkpOwogICAgIHJldHVybiB3cmFwcGVyOwpAQCAtMjgwMCw5ICsyNzk3LDkgQEAgRU5ECiAgICAg
Zm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGRhdGFOb2RlLT5mdW5jdGlvbnN9KSB7CiAgICAgICAg
IG15ICRpc0N1c3RvbSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ3VzdG9tIn0gfHwgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJWOEN1c3RvbSJ9OwogICAgICAgICBpZiAoISRpc0N1c3RvbSkgewotICAgICAgICAgICAgR2Vu
ZXJhdGVGdW5jdGlvbkNhbGxiYWNrKCRmdW5jdGlvbiwgJGRhdGFOb2RlLCAkaW1wbENsYXNzTmFt
ZSk7CisgICAgICAgICAgICBHZW5lcmF0ZUZ1bmN0aW9uQ2FsbGJhY2soJGZ1bmN0aW9uLCAkZGF0
YU5vZGUsICRpbnRlcmZhY2VOYW1lKTsKICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPntvdmVy
bG9hZEluZGV4fSA+IDEgJiYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gPT0gQHskZnVuY3Rp
b24tPntvdmVybG9hZHN9fSkgewotICAgICAgICAgICAgICAgIEdlbmVyYXRlT3ZlcmxvYWRlZEZ1
bmN0aW9uQ2FsbGJhY2soJGZ1bmN0aW9uLCAkZGF0YU5vZGUsICRpbXBsQ2xhc3NOYW1lKTsKKyAg
ICAgICAgICAgICAgICBHZW5lcmF0ZU92ZXJsb2FkZWRGdW5jdGlvbkNhbGxiYWNrKCRmdW5jdGlv
biwgJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
IApAQCAtMjgxOSw3ICsyODE2LDcgQEAgRU5ECiAgICAgICAgICMgZm9yIGRpZmZlcmVudCBjYWxs
aW5nIGNvbnRleHQuCiAgICAgICAgIGlmICgoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ2hlY2tTZWN1cml0eSJ9IHx8ICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IikpICYm
ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRG9Ob3RDaGVja1Nl
Y3VyaXR5In0pIHsKICAgICAgICAgICAgIGlmICghJGlzQ3VzdG9tIHx8ICRmdW5jdGlvbi0+e292
ZXJsb2FkSW5kZXh9ID09IDEpIHsKLSAgICAgICAgICAgICAgICBHZW5lcmF0ZURvbWFpblNhZmVG
dW5jdGlvbkdldHRlcigkZnVuY3Rpb24sICRpbXBsQ2xhc3NOYW1lKTsKKyAgICAgICAgICAgICAg
ICBHZW5lcmF0ZURvbWFpblNhZmVGdW5jdGlvbkdldHRlcigkZnVuY3Rpb24sICRpbnRlcmZhY2VO
YW1lKTsKICAgICAgICAgICAgICAgICAkbmVlZHNEb21haW5TYWZlRnVuY3Rpb25TZXR0ZXIgPSAx
OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yODMzLDcgKzI4MzAsNyBAQCBFTkQKICAg
ICB9CiAKICAgICBpZiAoJG5lZWRzRG9tYWluU2FmZUZ1bmN0aW9uU2V0dGVyKSB7Ci0gICAgICAg
IEdlbmVyYXRlRG9tYWluU2FmZUZ1bmN0aW9uU2V0dGVyKCRpbXBsQ2xhc3NOYW1lKTsKKyAgICAg
ICAgR2VuZXJhdGVEb21haW5TYWZlRnVuY3Rpb25TZXR0ZXIoJGludGVyZmFjZU5hbWUpOwogICAg
IH0KIAogICAgICMgQXR0cmlidXRlcwpAQCAtMjk1NCw3ICsyOTUxLDcgQEAgRU5ECiAKICAgICAj
IEZvciB0aGUgRE9NV2luZG93IGludGVyZmFjZSwgZ2VuZXJhdGUgdGhlIHNoYWRvdyBvYmplY3Qg
dGVtcGxhdGUKICAgICAjIGNvbmZpZ3VyYXRpb24gbWV0aG9kLgotICAgIGlmICgkaW1wbENsYXNz
TmFtZSBlcSAiRE9NV2luZG93IikgeworICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2lu
ZG93IikgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogc3RhdGljIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3RUZW1wbGF0ZT4gQ29uZmlndXJlU2hhZG93T2JqZWN0VGVtcGxh
dGUodjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdFRlbXBsYXRlPiB0ZW1wbCkKIHsKQEAgLTMyMzMs
NyArMzIzMCw3IEBAIEFjdGl2ZURPTU9iamVjdCogJHtjbGFzc05hbWV9Ojp0b0FjdGl2ZURPTU9i
amVjdCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKIEVORAogICAgIH0KIAotICAgIGlm
ICgkaW1wbENsYXNzTmFtZSBlcSAiRE9NV2luZG93IikgeworICAgIGlmICgkaW50ZXJmYWNlTmFt
ZSBlcSAiRE9NV2luZG93IikgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwog
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdFRlbXBsYXRlPiBWOERPTVdpbmRvdzo6R2V0U2hhZG93
T2JqZWN0VGVtcGxhdGUoKQogewpAQCAtMzU2Nyw3ICszNTY0LDcgQEAgc3ViIEdlbmVyYXRlRnVu
Y3Rpb25DYWxsU3RyaW5nKCkKICAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKICAgICBteSAkbnVt
YmVyT2ZQYXJhbWV0ZXJzID0gc2hpZnQ7CiAgICAgbXkgJGluZGVudCA9IHNoaWZ0OwotICAgIG15
ICRpbXBsQ2xhc3NOYW1lID0gc2hpZnQ7CisgICAgbXkgJGludGVyZmFjZU5hbWUgPSBzaGlmdDsK
ICAgICBteSAlcmVwbGFjZW1lbnRzID0gQF87CiAKICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+
c2lnbmF0dXJlLT5uYW1lOwpAQCAtMzU3NSw3ICszNTcyLDcgQEAgc3ViIEdlbmVyYXRlRnVuY3Rp
b25DYWxsU3RyaW5nKCkKICAgICBteSAkbmF0aXZlUmV0dXJuVHlwZSA9IEdldE5hdGl2ZVR5cGUo
JHJldHVyblR5cGUsIDApOwogICAgIG15ICRyZXN1bHQgPSAiIjsKIAotICAgIG15ICRpc1NWR1Rl
YXJPZmZUeXBlID0gKCRjb2RlR2VuZXJhdG9yLT5Jc1NWR1R5cGVOZWVkaW5nVGVhck9mZigkcmV0
dXJuVHlwZSkgYW5kIG5vdCAkaW1wbENsYXNzTmFtZSA9fiAvTGlzdCQvKTsKKyAgICBteSAkaXNT
VkdUZWFyT2ZmVHlwZSA9ICgkY29kZUdlbmVyYXRvci0+SXNTVkdUeXBlTmVlZGluZ1RlYXJPZmYo
JHJldHVyblR5cGUpIGFuZCBub3QgJGludGVyZmFjZU5hbWUgPX4gL0xpc3QkLyk7CiAgICAgJG5h
dGl2ZVJldHVyblR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0U1ZHV3JhcHBlZFR5cGVOZWVkaW5n
VGVhck9mZigkcmV0dXJuVHlwZSkgaWYgJGlzU1ZHVGVhck9mZlR5cGU7CiAKICAgICBpZiAoJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEFzIn0p
IHsKQEAgLTM1OTMsNyArMzU5MCw3IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZygp
CiAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgImltcCIpIGlmICEkZnVuY3Rpb24tPmlzU3Rh
dGljOwogICAgICAgICAkZnVuY3Rpb25OYW1lID0gIiR7aW1wbGVtZW50ZWRCeX06OiR7bmFtZX0i
OwogICAgIH0gZWxzaWYgKCRmdW5jdGlvbi0+aXNTdGF0aWMpIHsKLSAgICAgICAgJGZ1bmN0aW9u
TmFtZSA9ICIke2ltcGxDbGFzc05hbWV9Ojoke25hbWV9IjsKKyAgICAgICAgJGZ1bmN0aW9uTmFt
ZSA9ICIke2ludGVyZmFjZU5hbWV9Ojoke25hbWV9IjsKICAgICB9IGVsc2UgewogICAgICAgICAk
ZnVuY3Rpb25OYW1lID0gImltcC0+JHtuYW1lfSI7CiAgICAgfQpAQCAtMzYxNywxMSArMzYxNCwx
MSBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcoKQogICAgICAgICAgICAgcHVzaCBA
YXJndW1lbnRzLCAkcmVwbGFjZW1lbnRzeyRwYXJhbU5hbWV9OwogICAgICAgICB9IGVsc2lmICgk
cGFyYW1ldGVyLT50eXBlIGVxICJJREJLZXkiIHx8ICRwYXJhbWV0ZXItPnR5cGUgZXEgIk5vZGVG
aWx0ZXIiIHx8ICRwYXJhbWV0ZXItPnR5cGUgZXEgIlhQYXRoTlNSZXNvbHZlciIpIHsKICAgICAg
ICAgICAgIHB1c2ggQGFyZ3VtZW50cywgIiRwYXJhbU5hbWUuZ2V0KCkiOwotICAgICAgICB9IGVs
c2lmICgkY29kZUdlbmVyYXRvci0+SXNTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJHBhcmFtZXRlci0+
dHlwZSkgYW5kIG5vdCAkaW1wbENsYXNzTmFtZSA9fiAvTGlzdCQvKSB7CisgICAgICAgIH0gZWxz
aWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1NWR1R5cGVOZWVkaW5nVGVhck9mZigkcGFyYW1ldGVyLT50
eXBlKSBhbmQgbm90ICRpbnRlcmZhY2VOYW1lID1+IC9MaXN0JC8pIHsKICAgICAgICAgICAgIHB1
c2ggQGFyZ3VtZW50cywgIiRwYXJhbU5hbWUtPnByb3BlcnR5UmVmZXJlbmNlKCkiOwogICAgICAg
ICAgICAgJHJlc3VsdCAuPSAkaW5kZW50IC4gImlmICghJHBhcmFtTmFtZSlcbiI7CiAgICAgICAg
ICAgICAkcmVzdWx0IC49ICRpbmRlbnQgLiAiICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oV2Vi
Q29yZTo6VFlQRV9NSVNNQVRDSF9FUlIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTtcbiI7Ci0gICAgICAg
IH0gZWxzaWYgKCRwYXJhbWV0ZXItPnR5cGUgZXEgIlNWR01hdHJpeCIgYW5kICRpbXBsQ2xhc3NO
YW1lIGVxICJTVkdUcmFuc2Zvcm1MaXN0IikgeworICAgICAgICB9IGVsc2lmICgkcGFyYW1ldGVy
LT50eXBlIGVxICJTVkdNYXRyaXgiIGFuZCAkaW50ZXJmYWNlTmFtZSBlcSAiU1ZHVHJhbnNmb3Jt
TGlzdCIpIHsKICAgICAgICAgICAgIHB1c2ggQGFyZ3VtZW50cywgIiRwYXJhbU5hbWUuZ2V0KCki
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHVzaCBAYXJndW1lbnRzLCAkcGFyYW1O
YW1lOwpAQCAtMzY0Nyw3ICszNjQ0LDcgQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5n
KCkKICAgICAgICAgJHJldHVybiA9ICRmdW5jdGlvblN0cmluZzsKICAgICAgICAgJHJldHVybklz
UmVmID0gMDsKIAotICAgICAgICBpZiAoJGltcGxDbGFzc05hbWUgZXEgIlNWR1RyYW5zZm9ybUxp
c3QiIGFuZCBJc1JlZlB0clR5cGUoJHJldHVyblR5cGUpKSB7CisgICAgICAgIGlmICgkaW50ZXJm
YWNlTmFtZSBlcSAiU1ZHVHJhbnNmb3JtTGlzdCIgYW5kIElzUmVmUHRyVHlwZSgkcmV0dXJuVHlw
ZSkpIHsKICAgICAgICAgICAgICRyZXR1cm4gPSAiV1RGOjpnZXRQdHIoIiAuICRyZXR1cm4gLiAi
KSI7CiAgICAgICAgIH0KICAgICB9CkBAIC0zNjcxLDcgKzM2NjgsNyBAQCBzdWIgR2VuZXJhdGVG
dW5jdGlvbkNhbGxTdHJpbmcoKQogICAgIH0KIAogICAgICMgSWYgdGhlIGltcGxlbWVudGluZyBj
bGFzcyBpcyBhIFBPRCB0eXBlLCBjb21taXQgY2hhbmdlcwotICAgIGlmICgkY29kZUdlbmVyYXRv
ci0+SXNTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJGltcGxDbGFzc05hbWUpIGFuZCBub3QgJGltcGxD
bGFzc05hbWUgPX4gL0xpc3QkLykgeworICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNTVkdUeXBl
TmVlZGluZ1RlYXJPZmYoJGludGVyZmFjZU5hbWUpIGFuZCBub3QgJGludGVyZmFjZU5hbWUgPX4g
L0xpc3QkLykgewogICAgICAgICAkcmVzdWx0IC49ICRpbmRlbnQgLiAid3JhcHBlci0+Y29tbWl0
Q2hhbmdlKCk7XG4iOwogICAgIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>