<?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>67435</bug_id>
          
          <creation_ts>2011-09-01 13:48:35 -0700</creation_ts>
          <short_desc>Don&apos;t include unnecessary headers in V8 bindings</short_desc>
          <delta_ts>2011-09-01 16:28:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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="Patrick R. Gansterer">paroga</reporter>
          <assigned_to name="Patrick R. Gansterer">paroga</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>460758</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2011-09-01 13:48:35 -0700</bug_when>
    <thetext>Don&apos;t include unnecessary headers in V8 bindings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460762</commentid>
    <comment_count>1</comment_count>
      <attachid>106025</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2011-09-01 13:55:00 -0700</bug_when>
    <thetext>Created attachment 106025
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460901</commentid>
    <comment_count>2</comment_count>
      <attachid>106025</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-01 16:28:13 -0700</bug_when>
    <thetext>Comment on attachment 106025
Patch

Clearing flags on attachment: 106025

Committed r94360: &lt;http://trac.webkit.org/changeset/94360&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460902</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-01 16:28:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106025</attachid>
            <date>2011-09-01 13:55:00 -0700</date>
            <delta_ts>2011-09-01 16:28:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67435-20110901225458.patch</filename>
            <type>text/plain</type>
            <size>43556</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQzMzUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2YzgwMmE3MGI2MzQ3YTM2
NDhmZGQwNjUyMzE0ZTFhZGZhZTYzZGE5Li5kZGI2NjQxZDAwYjBkNzNhNGFmMzVjZTFiMjgzZWFm
ZmQ5NWZkZGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjUgQEAKIDIwMTEtMDktMDEgIFBhdHJp
Y2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgRG9uJ3QgaW5jbHVk
ZSB1bm5lY2Vzc2FyeSBoZWFkZXJzIGluIFY4IGJpbmRpbmdzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzQzNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gYW4gSURMIGF0dHJpYnVlIGlzIENvbmRp
dG9uYWwgdGhlIGNvcnJlc3BvbmRpbmcgaGVhZGVycworICAgICAgICBuZWVkIHRvIGJlIHN1cnJv
dW5kZWQgd2l0aCB0aGUgY29ycmVjdCAjaWYgRU5BQkxFKCkuCisKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0
T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5t
bToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHA6CisKKzIwMTEtMDktMDEg
IFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CisKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjk0Mjg0LgogICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC85NDI4NAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjUwNTAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0KaW5kZXggM2ZjYjcyZDg0YjM3ZDUyOTA2MjMyZGI5ZmQ4ZmY1OGMw
ZmYzZjI4ZC4uY2YyYWI0MTA5MDAwYjZmMDU3YzE1NjdkMmE3ZTkwNzEwYjRhNWU4YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
QEAgLTEyNyw2ICsxMjcsMjggQEAgc3ViIEdlbmVyYXRlTW9kdWxlCiAgICAgJG1vZHVsZSA9ICRk
YXRhTm9kZS0+bW9kdWxlOwogfQogCitzdWIgQWRkVG9JbXBsSW5jbHVkZXMKK3sKKyAgICBteSAk
aGVhZGVyID0gc2hpZnQ7CisgICAgbXkgJGNvbmRpdGlvbmFsID0gc2hpZnQ7CisKKyAgICBpZiAo
bm90ICRjb25kaXRpb25hbCkgeworICAgICAgICAkaW1wbEluY2x1ZGVzeyRoZWFkZXJ9ID0gMTsK
KyAgICB9IGVsc2lmIChub3QgZXhpc3RzKCRpbXBsSW5jbHVkZXN7JGhlYWRlcn0pKSB7CisgICAg
ICAgICRpbXBsSW5jbHVkZXN7JGhlYWRlcn0gPSAkY29uZGl0aW9uYWw7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgbXkgJG9sZFZhbHVlID0gJGltcGxJbmNsdWRlc3skaGVhZGVyfTsKKyAgICAgICAg
aWYgKCRvbGRWYWx1ZSBuZSAxKSB7CisgICAgICAgICAgICBteSAlbmV3VmFsdWUgPSAoKTsKKyAg
ICAgICAgICAgICRuZXdWYWx1ZXskY29uZGl0aW9uYWx9ID0gMTsKKyAgICAgICAgICAgIGZvcmVh
Y2ggbXkgJGNvbmRpdGlvbiAoc3BsaXQoL1x8LywgJG9sZFZhbHVlKSkgeworICAgICAgICAgICAg
ICAgICRuZXdWYWx1ZXskY29uZGl0aW9ufSA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAkaW1wbEluY2x1ZGVzeyRoZWFkZXJ9ID0gam9pbigifCIsIHNvcnQga2V5cyAlbmV3VmFsdWUp
OworICAgICAgICB9CisgICAgfQorfQorCiBzdWIgQWRkSW5jbHVkZXNGb3JUeXBlCiB7CiAgICAg
bXkgJHR5cGUgPSAkY29kZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoc2hpZnQpOwpAQCAtMTM1LDUw
ICsxNTcsNTYgQEAgc3ViIEFkZEluY2x1ZGVzRm9yVHlwZQogICAgICMgcmVvcmdhbml6YXRpb24s
IHdlIHdvbid0IG5lZWQgdGhlc2Ugc3BlY2lhbCBjYXNlcy4KICAgICBpZiAoISRjb2RlR2VuZXJh
dG9yLT5Jc1ByaW1pdGl2ZVR5cGUoJHR5cGUpIGFuZCAhJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5n
VHlwZSgkdHlwZSkgYW5kICEkY29kZUdlbmVyYXRvci0+QXZvaWRJbmNsdXNpb25PZlR5cGUoJHR5
cGUpIGFuZCAkdHlwZSBuZSAiRGF0ZSIpIHsKICAgICAgICAgIyBkZWZhdWx0LCBpbmNsdWRlIHRo
ZSBzYW1lIG5hbWVkIGZpbGUKLSAgICAgICAgJGltcGxJbmNsdWRlc3tHZXRWOEhlYWRlck5hbWUo
JHt0eXBlfSl9ID0gMTsKKyAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoR2V0VjhIZWFkZXJOYW1l
KCR7dHlwZX0pKTsKIAogICAgICAgICBpZiAoJHR5cGUgPX4gL1NWR1BhdGhTZWcvKSB7CiAgICAg
ICAgICAgICBteSAkam9pbmVkTmFtZSA9ICR0eXBlOwogICAgICAgICAgICAgJGpvaW5lZE5hbWUg
PX4gcy9BYnN8UmVsLy87Ci0gICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyIke2pvaW5lZE5hbWV9
LmgifSA9IDE7CisgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiJHtqb2luZWROYW1lfS5o
Iik7CiAgICAgICAgIH0KICAgICB9CiAKICAgICAjIGFkZGl0aW9uYWwgaW5jbHVkZXMgKHRoaW5n
cyBuZWVkZWQgdG8gY29tcGlsZSB0aGUgYmluZGluZ3MgYnV0IG5vdCB0aGUgaGVhZGVyKQogCiAg
ICAgaWYgKCR0eXBlIGVxICJDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQiKSB7Ci0gICAgICAgICRp
bXBsSW5jbHVkZXN7IkNhbnZhc0dyYWRpZW50LmgifSA9IDE7Ci0gICAgICAgICRpbXBsSW5jbHVk
ZXN7IkNhbnZhc1BhdHRlcm4uaCJ9ID0gMTsKLSAgICAgICAgJGltcGxJbmNsdWRlc3siQ2FudmFz
U3R5bGUuaCJ9ID0gMTsKKyAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkNhbnZhc0dyYWRpZW50
LmgiKTsKKyAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkNhbnZhc1BhdHRlcm4uaCIpOworICAg
ICAgICBBZGRUb0ltcGxJbmNsdWRlcygiQ2FudmFzU3R5bGUuaCIpOwogICAgIH0KIAogICAgIGlm
ICgkdHlwZSBlcSAiQ2FudmFzR3JhZGllbnQiIG9yICR0eXBlIGVxICJYUGF0aE5TUmVzb2x2ZXIi
KSB7Ci0gICAgICAgICRpbXBsSW5jbHVkZXN7IlBsYXRmb3JtU3RyaW5nLmgifSA9IDE7CisgICAg
ICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJQbGF0Zm9ybVN0cmluZy5oIik7CiAgICAgfQogCiAgICAg
aWYgKCR0eXBlIGVxICJDU1NTdHlsZURlY2xhcmF0aW9uIikgewotICAgICAgICAkaW1wbEluY2x1
ZGVzeyJDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oIn0gPSAxOworICAgICAgICBBZGRUb0lt
cGxJbmNsdWRlcygiQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaCIpOwogICAgIH0KIAogICAg
IGlmICgkdHlwZSBlcSAiUGx1Z2luIiBvciAkdHlwZSBlcSAiUGx1Z2luQXJyYXkiIG9yICR0eXBl
IGVxICJNaW1lVHlwZUFycmF5IikgewogICAgICAgICAjIFNvIHdlIGNhbiBnZXQgU3RyaW5nIC0+
IEF0b21pY1N0cmluZyBjb252ZXJzaW9uIGZvciBuYW1lZEl0ZW0oKS4KLSAgICAgICAgJGltcGxJ
bmNsdWRlc3sid3RmL3RleHQvQXRvbWljU3RyaW5nLmgifSA9IDE7CisgICAgICAgIEFkZFRvSW1w
bEluY2x1ZGVzKCJ3dGYvdGV4dC9BdG9taWNTdHJpbmcuaCIpOwogICAgIH0KIH0KIAogIyBJZiB0
aGUgbm9kZSBoYXMgYSBbQ29uZGl0aW9uYWw9WFhYXSBhdHRyaWJ1dGUsIHJldHVybnMgYW4gIkVO
QUJMRShYWFgpIiBzdHJpbmcgZm9yIHVzZSBpbiBhbiAjaWYuCitzdWIgR2VuZXJhdGVDb25kaXRp
b25hbFN0cmluZ0Zyb21BdHRyaWJ1dGVWYWx1ZQoreworICAgIG15ICRjb25kaXRpb25hbCA9IHNo
aWZ0OworICAgIGlmICgkY29uZGl0aW9uYWwgPX4gLyYvKSB7CisgICAgICAgIHJldHVybiAiRU5B
QkxFKCIgLiBqb2luKCIpICYmIEVOQUJMRSgiLCBzcGxpdCgvJi8sICRjb25kaXRpb25hbCkpIC4g
IikiOworICAgIH0gZWxzaWYgKCRjb25kaXRpb25hbCA9fiAvXHwvKSB7CisgICAgICAgIHJldHVy
biAiRU5BQkxFKCIgLiBqb2luKCIpIHx8IEVOQUJMRSgiLCBzcGxpdCgvXHwvLCAkY29uZGl0aW9u
YWwpKSAuICIpIjsKKyAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gIkVOQUJMRSgiIC4gJGNv
bmRpdGlvbmFsIC4gIikiOworICAgIH0KK30KKwogc3ViIEdlbmVyYXRlQ29uZGl0aW9uYWxTdHJp
bmcKIHsKICAgICBteSAkbm9kZSA9IHNoaWZ0OwogICAgIG15ICRjb25kaXRpb25hbCA9ICRub2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwifTsKICAgICBpZiAoJGNvbmRpdGlv
bmFsKSB7Ci0gICAgICAgIGlmICgkY29uZGl0aW9uYWwgPX4gLyYvKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gIkVOQUJMRSgiIC4gam9pbigiKSAmJiBFTkFCTEUoIiwgc3BsaXQoLyYvLCAkY29uZGl0
aW9uYWwpKSAuICIpIjsKLSAgICAgICAgfSBlbHNpZiAoJGNvbmRpdGlvbmFsID1+IC9cfC8pIHsK
LSAgICAgICAgICAgIHJldHVybiAiRU5BQkxFKCIgLiBqb2luKCIpIHx8IEVOQUJMRSgiLCBzcGxp
dCgvXHwvLCAkY29uZGl0aW9uYWwpKSAuICIpIjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIHJldHVybiAiRU5BQkxFKCIgLiAkY29uZGl0aW9uYWwgLiAiKSI7Ci0gICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIEdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmdGcm9tQXR0cmlidXRlVmFsdWUo
JGNvbmRpdGlvbmFsKTsKICAgICB9IGVsc2UgewogICAgICAgICByZXR1cm4gIiI7CiAgICAgfQpA
QCAtMjAzLDcgKzIzMSw3IEBAIHN1YiBHZXRTVkdQcm9wZXJ0eVR5cGVzCiAgICAgbXkgJHN2Z1dy
YXBwZWROYXRpdmVUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldFNWR1dyYXBwZWRUeXBlTmVlZGlu
Z1RlYXJPZmYoJGltcGxUeXBlKTsKICAgICBpZiAoJHN2Z05hdGl2ZVR5cGUgPX4gL1NWR1Byb3Bl
cnR5VGVhck9mZi8pIHsKICAgICAgICAgJHN2Z1Byb3BlcnR5VHlwZSA9ICRzdmdXcmFwcGVkTmF0
aXZlVHlwZTsKLSAgICAgICAgJGltcGxJbmNsdWRlc3siU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJP
ZmYuaCJ9ID0gMTsKKyAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlNWR0FuaW1hdGVkUHJvcGVy
dHlUZWFyT2ZmLmgiKTsKICAgICB9IGVsc2lmICgkc3ZnTmF0aXZlVHlwZSA9fiAvU1ZHTGlzdFBy
b3BlcnR5VGVhck9mZi8gb3IgJHN2Z05hdGl2ZVR5cGUgPX4gL1NWR1N0YXRpY0xpc3RQcm9wZXJ0
eVRlYXJPZmYvKSB7CiAgICAgICAgICRzdmdMaXN0UHJvcGVydHlUeXBlID0gJHN2Z1dyYXBwZWRO
YXRpdmVUeXBlOwogICAgICAgICAkaGVhZGVySW5jbHVkZXN7IlNWR0FuaW1hdGVkTGlzdFByb3Bl
cnR5VGVhck9mZi5oIn0gPSAxOwpAQCAtNzgxLDcgKzgwOSw3IEBAIEVORAogICAgICAgICAgICAg
IyBHZW5lcmF0ZSBzdXBlci1jb21wYWN0IGNhbGwgZm9yIHJlZ3VsYXIgYXR0cmlidXRlIGdldHRl
cjoKICAgICAgICAgICAgIG15ICRjb250ZW50QXR0cmlidXRlTmFtZSA9ICRyZWZsZWN0IGVxICIx
IiA/IGxjICRhdHRyTmFtZSA6ICRyZWZsZWN0OwogICAgICAgICAgICAgbXkgJG5hbWVzcGFjZSA9
ICRjb2RlR2VuZXJhdG9yLT5OYW1lc3BhY2VGb3JBdHRyaWJ1dGVOYW1lKCRpbnRlcmZhY2VOYW1l
LCAkY29udGVudEF0dHJpYnV0ZU5hbWUpOwotICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siJHtu
YW1lc3BhY2V9LmgifSA9IDE7CisgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiJHtuYW1l
c3BhY2V9LmgiKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgcmV0
dXJuIGdldEVsZW1lbnRTdHJpbmdBdHRyKGluZm8sICR7bmFtZXNwYWNlfTo6JHtjb250ZW50QXR0
cmlidXRlTmFtZX1BdHRyKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNs
cywgIn1cblxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiI2VuZGlm
IC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKQEAg
LTgwMiw3ICs4MzAsNyBAQCBFTkQKIAogICAgIG15ICR1c2VFeGNlcHRpb25zID0gMSBpZiBAeyRh
dHRyaWJ1dGUtPmdldHRlckV4Y2VwdGlvbnN9OwogICAgIGlmICgkdXNlRXhjZXB0aW9ucykgewot
ICAgICAgICAkaW1wbEluY2x1ZGVzeyJFeGNlcHRpb25Db2RlLmgifSA9IDE7CisgICAgICAgIEFk
ZFRvSW1wbEluY2x1ZGVzKCJFeGNlcHRpb25Db2RlLmgiKTsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgIiAgICBFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpOwogICAgIH0KIApAQCAt
ODczLDEzICs5MDEsMTMgQEAgRU5ECiAgICAgfQogCiAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5J
c1NWR0FuaW1hdGVkVHlwZSgkaW1wbENsYXNzTmFtZSkgYW5kICRjb2RlR2VuZXJhdG9yLT5Jc1NW
R1R5cGVOZWVkaW5nVGVhck9mZigkYXR0clR5cGUpKSB7Ci0gICAgICAgICRpbXBsSW5jbHVkZXN7
IlY4JGF0dHJUeXBlLmgifSA9IDE7CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJWOCRhdHRy
VHlwZS5oIik7CiAgICAgICAgIG15ICRzdmdOYXRpdmVUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdl
dFNWR1R5cGVOZWVkaW5nVGVhck9mZigkYXR0clR5cGUpOwogICAgICAgICAjIENvbnZlcnQgZnJv
bSBhYnN0cmFjdCBTVkdQcm9wZXJ0eSB0byByZWFsIHR5cGUsIHNvIHRoZSByaWdodCB0b0pTKCkg
bWV0aG9kIGNhbiBiZSBpbnZva2VkLgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAi
ICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PCRzdmdOYXRpdmVUeXBlKj4oJHJlc3VsdCkpO1xu
Iik7CiAgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPklzU1ZHVHlwZU5lZWRpbmdUZWFyT2Zm
KCRhdHRyVHlwZSkgYW5kIG5vdCAkaW1wbENsYXNzTmFtZSA9fiAvTGlzdCQvKSB7Ci0gICAgICAg
ICRpbXBsSW5jbHVkZXN7IlY4JGF0dHJUeXBlLmgifSA9IDE7Ci0gICAgICAgICRpbXBsSW5jbHVk
ZXN7IlNWR1Byb3BlcnR5VGVhck9mZi5oIn0gPSAxOworICAgICAgICBBZGRUb0ltcGxJbmNsdWRl
cygiVjgkYXR0clR5cGUuaCIpOworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiU1ZHUHJvcGVy
dHlUZWFyT2ZmLmgiKTsKICAgICAgICAgbXkgJHRlYXJPZmZUeXBlID0gJGNvZGVHZW5lcmF0b3It
PkdldFNWR1R5cGVOZWVkaW5nVGVhck9mZigkYXR0clR5cGUpOwogICAgICAgICBpZiAoJGNvZGVH
ZW5lcmF0b3ItPklzU1ZHVHlwZVdpdGhXcml0YWJsZVByb3BlcnRpZXNOZWVkaW5nVGVhck9mZigk
YXR0clR5cGUpIGFuZCBub3QgZGVmaW5lZCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJJbW11dGFibGUifSkgewogICAgICAgICAgICAgbXkgJGdldHRlciA9ICRy
ZXN1bHQ7CkBAIC04OTAsNyArOTE4LDcgQEAgRU5ECiAKICAgICAgICAgICAgIG15ICRzZWxmSXNU
ZWFyT2ZmVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5Jc1NWR1R5cGVOZWVkaW5nVGVhck9mZigkaW1w
bENsYXNzTmFtZSk7CiAgICAgICAgICAgICBpZiAoJHNlbGZJc1RlYXJPZmZUeXBlKSB7Ci0gICAg
ICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siU1ZHU3RhdGljUHJvcGVydHlXaXRoUGFyZW50VGVh
ck9mZi5oIn0gPSAxOworICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTVkdTdGF0
aWNQcm9wZXJ0eVdpdGhQYXJlbnRUZWFyT2ZmLmgiKTsKICAgICAgICAgICAgICAgICAkdGVhck9m
ZlR5cGUgPX4gcy9TVkdQcm9wZXJ0eVRlYXJPZmY8L1NWR1N0YXRpY1Byb3BlcnR5V2l0aFBhcmVu
dFRlYXJPZmY8JGltcGxDbGFzc05hbWUsIC87CiAKICAgICAgICAgICAgICAgICBpZiAoJHJlc3Vs
dCA9fiAvbWF0cml4LyBhbmQgJGltcGxDbGFzc05hbWUgZXEgIlNWR1RyYW5zZm9ybSIpIHsKQEAg
LTkwMSw3ICs5MjksNyBAQCBFTkQKIAogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
RGVjbHMsICIgICAgcmV0dXJuIHRvVjgoV1RGOjpnZXRQdHIoJHt0ZWFyT2ZmVHlwZX06OmNyZWF0
ZSh3cmFwcGVyLCAkcmVzdWx0LCAkdXBkYXRlTWV0aG9kKSkpO1xuIik7CiAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IlNWR1N0YXRpY1Byb3BlcnR5
VGVhck9mZi5oIn0gPSAxOworICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTVkdT
dGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCIpOwogICAgICAgICAgICAgICAgICR0ZWFyT2ZmVHlwZSA9
fiBzL1NWR1Byb3BlcnR5VGVhck9mZjwvU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmPCRpbXBsQ2xh
c3NOYW1lLCAvOwogCiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAg
ICByZXR1cm4gdG9WOChXVEY6OmdldFB0cigke3RlYXJPZmZUeXBlfTo6Y3JlYXRlKGltcCwgJHJl
c3VsdCwgJHVwZGF0ZU1ldGhvZCkpKTtcbiIpOwpAQCAtOTI4LDcgKzk1Niw3IEBAIHN1YiBHZW5l
cmF0ZU5vcm1hbEF0dHJTZXR0ZXIKICAgICBteSAkaW1wbENsYXNzTmFtZSA9IHNoaWZ0OwogICAg
IG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7CiAKLSAgICAkaW1wbEluY2x1ZGVzeyJWOEJpbmRp
bmdNYWNyb3MuaCJ9ID0gMTsKKyAgICBBZGRUb0ltcGxJbmNsdWRlcygiVjhCaW5kaW5nTWFjcm9z
LmgiKTsKIAogICAgIG15ICRhdHRyTmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsK
ICAgICBteSAkYXR0ckV4dCA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzOwpAQCAtOTkzLDcgKzEwMjEsNyBAQCBFTkQKICAgICAgICAgICAgICMgR2VuZXJhdGUgc3Vw
ZXItY29tcGFjdCBjYWxsIGZvciByZWd1bGFyIGF0dHJpYnV0ZSBzZXR0ZXI6CiAgICAgICAgICAg
ICBteSAkY29udGVudEF0dHJpYnV0ZU5hbWUgPSAkcmVmbGVjdCBlcSAiMSIgPyBsYyAkYXR0ck5h
bWUgOiAkcmVmbGVjdDsKICAgICAgICAgICAgIG15ICRuYW1lc3BhY2UgPSAkY29kZUdlbmVyYXRv
ci0+TmFtZXNwYWNlRm9yQXR0cmlidXRlTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNvbnRlbnRBdHRy
aWJ1dGVOYW1lKTsKLSAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IiR7bmFtZXNwYWNlfS5oIn0g
PSAxOworICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIiR7bmFtZXNwYWNlfS5oIik7CiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIHNldEVsZW1lbnRTdHJpbmdB
dHRyKGluZm8sICR7bmFtZXNwYWNlfTo6JHtjb250ZW50QXR0cmlidXRlTmFtZX1BdHRyLCB2YWx1
ZSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICJ9XG5cbiIpOwog
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiNlbmRpZiAvLyAke2NvbmRpdGlv
bmFsU3RyaW5nfVxuXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CkBAIC0xMDMwLDcgKzEwNTgs
NyBAQCBFTkQKICAgICBteSAkdXNlRXhjZXB0aW9ucyA9IDEgaWYgQHskYXR0cmlidXRlLT5zZXR0
ZXJFeGNlcHRpb25zfTsKIAogICAgIGlmICgkdXNlRXhjZXB0aW9ucykgewotICAgICAgICAkaW1w
bEluY2x1ZGVzeyJFeGNlcHRpb25Db2RlLmgifSA9IDE7CisgICAgICAgIEFkZFRvSW1wbEluY2x1
ZGVzKCJFeGNlcHRpb25Db2RlLmgiKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywg
IiAgICBFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpOwogICAgIH0KIApAQCAtMTAzOSwxNyArMTA2
NywxNyBAQCBFTkQKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT50eXBlIGVxICJFdmVudExpc3RlbmVyIikgewogICAgICAgICAgICAgbXkgJGltcGxTZXR0
ZXJGdW5jdGlvbk5hbWUgPSAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0ck5hbWUpOwot
ICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIuaCJ9ID0g
MTsKKyAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJWOEFic3RyYWN0RXZlbnRMaXN0ZW5l
ci5oIik7CiAgICAgICAgICAgICBpZiAoIUlzTm9kZVN1YlR5cGUoJGRhdGFOb2RlKSkgewogICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgdHJhbnNmZXJIaWRkZW5E
ZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIGltcC0+JGF0dHJOYW1lKCksIHZhbHVlLCBWOCR7aW50
ZXJmYWNlTmFtZX06OmV2ZW50TGlzdGVuZXJDYWNoZUluZGV4KTtcbiIpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJXb3JrZXJDb250ZXh0IiBhbmQg
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lIGVxICJvbmVycm9yIikgewotICAgICAgICAgICAg
ICAgICRpbXBsSW5jbHVkZXN7IlY4RXZlbnRMaXN0ZW5lckxpc3QuaCJ9ID0gMTsKLSAgICAgICAg
ICAgICAgICAkaW1wbEluY2x1ZGVzeyJWOFdvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuaCJ9ID0g
MTsKKyAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiVjhFdmVudExpc3RlbmVyTGlz
dC5oIik7CisgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlY4V29ya2VyQ29udGV4
dEVycm9ySGFuZGxlci5oIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNs
cywgIiAgICBpbXAtPnNldCRpbXBsU2V0dGVyRnVuY3Rpb25OYW1lKFY4RXZlbnRMaXN0ZW5lckxp
c3Q6OmZpbmRPckNyZWF0ZVdyYXBwZXI8VjhXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyPih2YWx1
ZSwgdHJ1ZSkiKTsKICAgICAgICAgICAgIH0gZWxzaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01X
aW5kb3ciIGFuZCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUgZXEgIm9uZXJyb3IiKSB7Ci0g
ICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siVjhFdmVudExpc3RlbmVyTGlzdC5oIn0gPSAx
OwotICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IlY4V2luZG93RXJyb3JIYW5kbGVyLmgi
fSA9IDE7CisgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlY4RXZlbnRMaXN0ZW5l
ckxpc3QuaCIpOworICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJWOFdpbmRvd0Vy
cm9ySGFuZGxlci5oIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywg
IiAgICBpbXAtPnNldCRpbXBsU2V0dGVyRnVuY3Rpb25OYW1lKFY4RXZlbnRMaXN0ZW5lckxpc3Q6
OmZpbmRPckNyZWF0ZVdyYXBwZXI8VjhXaW5kb3dFcnJvckhhbmRsZXI+KHZhbHVlLCB0cnVlKSIp
OwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dERlY2xzLCAiICAgIGltcC0+c2V0JGltcGxTZXR0ZXJGdW5jdGlvbk5hbWUoVjhET01XcmFwcGVy
OjpnZXRFdmVudExpc3RlbmVyKHZhbHVlLCB0cnVlLCBMaXN0ZW5lckZpbmRPckNyZWF0ZSkiKTsK
QEAgLTEyOTgsNyArMTMyNiw3IEBAIEVORAogICAgIH0KIAogICAgIGlmICgkcmFpc2VzRXhjZXB0
aW9ucykgewotICAgICAgICAkaW1wbEluY2x1ZGVzeyJFeGNlcHRpb25Db2RlLmgifSA9IDE7Cisg
ICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJFeGNlcHRpb25Db2RlLmgiKTsKICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnREZWNscywgIiAgICBFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpOwogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIHtcbiIpOwogICAgICAgICAjIFRoZSBi
cmFjZSBoZXJlIGlzIG5lZWRlZCB0byBwcmV2ZW50IHRoZSBlbnN1aW5nICdnb3RvIGZhaWwncyBm
cm9tIGp1bXBpbmcgcGFzdCBjb25zdHJ1Y3RvcnMKQEAgLTEzMTQsOSArMTM0Miw5IEBAIEVORAog
ICAgIGlmICghY2FsbFN0YWNrKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogRU5E
Ci0gICAgICAgICRpbXBsSW5jbHVkZXN7IlNjcmlwdEFyZ3VtZW50cy5oIn0gPSAxOwotICAgICAg
ICAkaW1wbEluY2x1ZGVzeyJTY3JpcHRDYWxsU3RhY2suaCJ9ID0gMTsKLSAgICAgICAgJGltcGxJ
bmNsdWRlc3siU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIn0gPSAxOworICAgICAgICBBZGRUb0lt
cGxJbmNsdWRlcygiU2NyaXB0QXJndW1lbnRzLmgiKTsKKyAgICAgICAgQWRkVG9JbXBsSW5jbHVk
ZXMoIlNjcmlwdENhbGxTdGFjay5oIik7CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTY3Jp
cHRDYWxsU3RhY2tGYWN0b3J5LmgiKTsKICAgICB9CiAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiU1ZHQ2hlY2tTZWN1cml0eURvY3VtZW50In0pIHsK
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOwpAQCAtMTM5OCwxMSArMTQy
NiwxMSBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICRwYXJhbWV0
ZXJDaGVja1N0cmluZyAuPSAiICAgIH1cbiI7CiAgICAgICAgIH0KIAotICAgICAgICAkaW1wbElu
Y2x1ZGVzeyJFeGNlcHRpb25Db2RlLmgifSA9IDE7CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVz
KCJFeGNlcHRpb25Db2RlLmgiKTsKICAgICAgICAgbXkgJG5hdGl2ZVR5cGUgPSBHZXROYXRpdmVU
eXBlRnJvbVNpZ25hdHVyZSgkcGFyYW1ldGVyLCAkcGFyYW1JbmRleCk7CiAgICAgICAgIGlmICgk
cGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbGJhY2sifSkgewogICAgICAgICAg
ICAgbXkgJGNsYXNzTmFtZSA9IEdldENhbGxiYWNrQ2xhc3NOYW1lKCRwYXJhbWV0ZXItPnR5cGUp
OwotICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siJGNsYXNzTmFtZS5oIn0gPSAxOworICAgICAg
ICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIiRjbGFzc05hbWUuaCIpOwogICAgICAgICAgICAgaWYg
KCRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9KSB7CiAgICAgICAg
ICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgUmVmUHRyPCIgLiAkcGFyYW1l
dGVyLT50eXBlIC4gIj4gJHBhcmFtZXRlck5hbWU7XG4iOwogICAgICAgICAgICAgICAgICRwYXJh
bWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIGlmIChhcmdzLkxlbmd0aCgpID4gJHBhcmFtSW5kZXgg
JiYgIWFyZ3NbJHBhcmFtSW5kZXhdLT5Jc051bGwoKSAmJiAhYXJnc1skcGFyYW1JbmRleF0tPklz
VW5kZWZpbmVkKCkpIHtcbiI7CkBAIC0xNDE2LDcgKzE0NDQsNyBAQCBzdWIgR2VuZXJhdGVQYXJh
bWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAg
ICBSZWZQdHI8IiAuICRwYXJhbWV0ZXItPnR5cGUgLiAiPiAkcGFyYW1ldGVyTmFtZSA9ICR7Y2xh
c3NOYW1lfTo6Y3JlYXRlKGFyZ3NbJHBhcmFtSW5kZXhdLCBnZXRTY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpO1xuIjsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNpZiAoJHBhcmFtZXRlci0+
dHlwZSBlcSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIikgewotICAgICAgICAgICAgJGltcGxJbmNs
dWRlc3siU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgifSA9IDE7CisgICAgICAgICAgICBBZGRUb0lt
cGxJbmNsdWRlcygiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiKTsKICAgICAgICAgICAgICRwYXJh
bWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIGJvb2wgJHtwYXJhbWV0ZXJOYW1lfURpZFRocm93ID0g
ZmFsc2U7XG4iOwogICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgJG5h
dGl2ZVR5cGUgJHBhcmFtZXRlck5hbWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShh
cmdzWyRwYXJhbUluZGV4XSwgJHtwYXJhbWV0ZXJOYW1lfURpZFRocm93KTtcbiI7CiAgICAgICAg
ICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBpZiAoJHtwYXJhbWV0ZXJOYW1lfURp
ZFRocm93KVxuIjsKQEAgLTE0MzIsNyArMTQ2MCw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnND
aGVjawogICAgICAgICAgICAgbXkgJHZhbHVlID0gSlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIs
ICJhcmdzWyRwYXJhbUluZGV4XSIpOwogICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5n
IC49ICIgICAgIiAuIENvbnZlcnRUb1Y4UGFyYW1ldGVyKCRwYXJhbWV0ZXIsICRuYXRpdmVUeXBl
LCAkcGFyYW1ldGVyTmFtZSwgJHZhbHVlKSAuICJcbiI7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAkaW1wbEluY2x1ZGVzeyJWOEJpbmRpbmdNYWNyb3MuaCJ9ID0gMTsKKyAgICAgICAg
ICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJWOEJpbmRpbmdNYWNyb3MuaCIpOwogICAgICAgICAgICAg
IyBJZiB0aGUgIlN0cmljdFR5cGVDaGVja2luZyIgZXh0ZW5kZWQgYXR0cmlidXRlIGlzIHByZXNl
bnQsIGFuZCB0aGUgYXJndW1lbnQncyB0eXBlIGlzIGFuCiAgICAgICAgICAgICAjIGludGVyZmFj
ZSB0eXBlLCB0aGVuIGlmIHRoZSBpbmNvbWluZyB2YWx1ZSBkb2VzIG5vdCBpbXBsZW1lbnQgdGhh
dCBpbnRlcmZhY2UsIGEgVHlwZUVycm9yCiAgICAgICAgICAgICAjIGlzIHRocm93biByYXRoZXIg
dGhhbiBzaWxlbnRseSBwYXNzaW5nIE5VTEwgdG8gdGhlIEMrKyBjb2RlLgpAQCAtMTQ5Nyw3ICsx
NTI1LDcgQEAgRU5ECiAgICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlQXJndW1lbnRzQ291
bnRDaGVjaygkZnVuY3Rpb24sICRkYXRhTm9kZSkpOwogCiAgICAgaWYgKCRyYWlzZXNFeGNlcHRp
b25zKSB7Ci0gICAgICAgICRpbXBsSW5jbHVkZXN7IkV4Y2VwdGlvbkNvZGUuaCJ9ID0gMTsKKyAg
ICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkV4Y2VwdGlvbkNvZGUuaCIpOwogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIlxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIik7CiAgICAgfQpAQCAtMTYzMCw3ICsxNjU4LDcgQEAgc3Vi
IEdlbmVyYXRlU2luZ2xlQmF0Y2hlZEF0dHJpYnV0ZQogICAgIGlmICgkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8pIHsKICAgICAgICAgbXkgJGNvbnN0cnVjdG9y
VHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5TdHJpcE1vZHVsZSgkYXR0cmlidXRlLT5zaWduYXR1cmUt
PnR5cGUpOwogICAgICAgICAkY29uc3RydWN0b3JUeXBlID1+IHMvQ29uc3RydWN0b3IkLy87Ci0g
ICAgICAgICRpbXBsSW5jbHVkZXN7IlY4JHtjb25zdHJ1Y3RvclR5cGV9LmgifSA9IDE7CisgICAg
ICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJWOCR7Y29uc3RydWN0b3JUeXBlfS5oIiwgJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwifSk7CiAgICAg
ICAgIGlmICgkY3VzdG9tQWNjZXNzb3IpIHsKICAgICAgICAgICAgICRnZXR0ZXIgPSAiVjgke2N1
c3RvbUFjY2Vzc29yfUFjY2Vzc29yR2V0dGVyIjsKICAgICAgICAgfSBlbHNlIHsKQEAgLTE3MTUs
NyArMTc0Myw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uSW5kZXhlcgogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgJGltcGxJbmNsdWRlc3siVjhDb2xsZWN0aW9uLmgifSA9IDE7
CisgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlY4Q29sbGVjdGlvbi5oIik7CiAKICAgICBteSAkaW5k
ZXhlclR5cGUgPSAkaW5kZXhlciA/ICRpbmRleGVyLT50eXBlIDogMDsKIApAQCAtMTc0OCw3ICsx
Nzc2LDcgQEAgRU5ECiAgICAgc2V0Q29sbGVjdGlvbkluZGV4ZWRHZXR0ZXI8JHtpbnRlcmZhY2VO
YW1lfSwgJHtpbmRleGVyVHlwZX0+KGRlc2MpOwogRU5ECiAgICAgICAgICAgICAjIEluY2x1ZGUg
dGhlIGhlYWRlciBmb3IgdGhpcyBpbmRleGVyIHR5cGUsIGJlY2F1c2Ugc2V0Q29sbGVjdGlvbklu
ZGV4ZWRHZXR0ZXIoKSByZXF1aXJlcyB0b1Y4KCkgZm9yIHRoaXMgdHlwZS4KLSAgICAgICAgICAg
ICRpbXBsSW5jbHVkZXN7IlY4JHtpbmRleGVyVHlwZX0uaCJ9ID0gMTsKKyAgICAgICAgICAgIEFk
ZFRvSW1wbEluY2x1ZGVzKCJWOCR7aW5kZXhlclR5cGV9LmgiKTsKICAgICAgICAgfQogCiAgICAg
ICAgIHJldHVybjsKQEAgLTE4MDMsNyArMTgzMSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uTmFtZWRQcm9wZXJ0eUdldHRlcgogICAgIH0KIAogICAgIGlmICgkbmFtZWRQcm9wZXJ0eUdl
dHRlciAmJiAkbmFtZWRQcm9wZXJ0eUdldHRlci0+dHlwZSBuZSAiTm9kZSIgJiYgISRuYW1lZFBy
b3BlcnR5R2V0dGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tIn0gJiYgISRoYXNDdXN0
b21HZXR0ZXIpIHsKLSAgICAgICAgJGltcGxJbmNsdWRlc3siVjhDb2xsZWN0aW9uLmgifSA9IDE7
CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJWOENvbGxlY3Rpb24uaCIpOwogICAgICAgICBt
eSAkdHlwZSA9ICRuYW1lZFByb3BlcnR5R2V0dGVyLT50eXBlOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgPDxFTkQpOwogICAgIHNldENvbGxlY3Rpb25OYW1lZEdldHRlcjwke2ludGVyZmFj
ZU5hbWV9LCAke3R5cGV9PihkZXNjKTsKQEAgLTE4NzQsMTIgKzE5MDIsMTIgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICAjIC0gQWRkIGRlZmF1bHQgaGVhZGVyIHRlbXBsYXRlCiAg
ICAgcHVzaChAaW1wbEZpeGVkSGVhZGVyLCBHZW5lcmF0ZUltcGxlbWVudGF0aW9uQ29udGVudEhl
YWRlcigkZGF0YU5vZGUpKTsKICAgICAgICAgIAotICAgICRpbXBsSW5jbHVkZXN7IlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXMuaCJ9ID0gMTsKLSAgICAkaW1wbEluY2x1ZGVzeyJWOFByb3h5LmgifSA9
IDE7Ci0gICAgJGltcGxJbmNsdWRlc3siVjhCaW5kaW5nLmgifSA9IDE7Ci0gICAgJGltcGxJbmNs
dWRlc3siVjhCaW5kaW5nU3RhdGUuaCJ9ID0gMTsKLSAgICAkaW1wbEluY2x1ZGVzeyJWOERPTVdy
YXBwZXIuaCJ9ID0gMTsKLSAgICAkaW1wbEluY2x1ZGVzeyJWOElzb2xhdGVkQ29udGV4dC5oIn0g
PSAxOworICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiKTsK
KyAgICBBZGRUb0ltcGxJbmNsdWRlcygiVjhQcm94eS5oIik7CisgICAgQWRkVG9JbXBsSW5jbHVk
ZXMoIlY4QmluZGluZy5oIik7CisgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlY4QmluZGluZ1N0YXRl
LmgiKTsKKyAgICBBZGRUb0ltcGxJbmNsdWRlcygiVjhET01XcmFwcGVyLmgiKTsKKyAgICBBZGRU
b0ltcGxJbmNsdWRlcygiVjhJc29sYXRlZENvbnRleHQuaCIpOwogCiAgICAgQWRkSW5jbHVkZXNG
b3JUeXBlKCRpbnRlcmZhY2VOYW1lKTsKIApAQCAtMTg5Myw3ICsxOTIxLDcgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgaWYgKCRwYXJlbnQgZXEgIkV2ZW50VGFyZ2V0Iikg
ewogICAgICAgICAgICAgbmV4dDsKICAgICAgICAgfQotICAgICAgICAkaW1wbEluY2x1ZGVzeyJW
OCR7cGFyZW50fS5oIn0gPSAxOworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiVjgke3BhcmVu
dH0uaCIpOwogICAgICAgICAkcGFyZW50Q2xhc3MgPSAiVjgiIC4gJHBhcmVudDsKICAgICAgICAg
JHBhcmVudENsYXNzVGVtcGxhdGUgPSAkcGFyZW50Q2xhc3MgLiAiOjpHZXRUZW1wbGF0ZSgpIjsK
ICAgICAgICAgbGFzdDsKQEAgLTE5MjgsNyArMTk1Niw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgICAgICMgY29uc3RydWN0b3IgYW5kIGRvbid0IHJlcXVpcmUgY2FsbGJhY2tz
LgogICAgICAgICBpZiAoJGF0dHJUeXBlIGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiKSB7CiAg
ICAgICAgICAgICBkaWUgIk9ubHkgb25lIGF0dHJpYnV0ZSBvZiB0eXBlIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSBzdXBwb3J0ZWQiIGlmICRzZXJpYWxpemVkQXR0cmlidXRlOwotICAgICAgICAgICAg
JGltcGxJbmNsdWRlc3siU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgifSA9IDE7CisgICAgICAgICAg
ICBBZGRUb0ltcGxJbmNsdWRlcygiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiKTsKICAgICAgICAg
ICAgICRzZXJpYWxpemVkQXR0cmlidXRlID0gJGF0dHJpYnV0ZTsKICAgICAgICAgICAgIG5leHQ7
CiAgICAgICAgIH0KQEAgLTIxNjAsNyArMjE4OCw3IEBAIEVORAogICAgICAgICAwLCAwKTsKICAg
ICBVTlVTRURfUEFSQU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdp
bGwgbm90IGJlIHVzZWQuCiBFTkQKLSAgICAgICAgJGltcGxJbmNsdWRlc3sid3RmL1VudXNlZFBh
cmFtLmgifSA9IDE7CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJ3dGYvVW51c2VkUGFyYW0u
aCIpOwogICAgIH0KIAogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
YW5CZUNvbnN0cnVjdGVkIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3Vz
dG9tQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOEN1
c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29u
c3RydWN0ZXIifSkgewpAQCAtMjUzNywxMCArMjU2NSwxMCBAQCBzdWIgR2VuZXJhdGVDYWxsYmFj
a0ltcGxlbWVudGF0aW9uCiAgICAgIyAtIEFkZCBkZWZhdWx0IGhlYWRlciB0ZW1wbGF0ZQogICAg
IHB1c2goQGltcGxGaXhlZEhlYWRlciwgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkNvbnRlbnRIZWFk
ZXIoJGRhdGFOb2RlKSk7CiAgICAgICAgICAKLSAgICAkaW1wbEluY2x1ZGVzeyJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgifSA9IDE7Ci0gICAgJGltcGxJbmNsdWRlc3siVjhCaW5kaW5nLmgifSA9
IDE7Ci0gICAgJGltcGxJbmNsdWRlc3siVjhDdXN0b21Wb2lkQ2FsbGJhY2suaCJ9ID0gMTsKLSAg
ICAkaW1wbEluY2x1ZGVzeyJWOFByb3h5LmgifSA9IDE7CisgICAgQWRkVG9JbXBsSW5jbHVkZXMo
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIpOworICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJWOEJp
bmRpbmcuaCIpOworICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJWOEN1c3RvbVZvaWRDYWxsYmFjay5o
Iik7CisgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlY4UHJveHkuaCIpOwogCiAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD5cblxuIik7CiAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJuYW1lc3BhY2UgV2ViQ29yZSB7XG5cbiIpOwpAQCAtMjg5OCw3ICsyOTI2
LDcgQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nKCkKICAgICAgICAgJGZ1bmN0aW9u
U3RyaW5nIC49ICIsICIgaWYgJGluZGV4OwogICAgICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gIlNj
cmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpIjsKICAgICAgICAgJGluZGV4
Kys7Ci0gICAgICAgICRpbXBsSW5jbHVkZXN7IlNjcmlwdENvbnRyb2xsZXIuaCJ9ID0gMTsKKyAg
ICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlNjcmlwdENvbnRyb2xsZXIuaCIpOwogICAgIH0KIAog
ICAgIGlmIChAeyRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9uc30pIHsKQEAgLTI5MzYsOCArMjk2
NCw4IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZygpCiAgICAgfQogCiAgICAgaWYg
KCRpc1NWR1RlYXJPZmZUeXBlKSB7Ci0gICAgICAgICRpbXBsSW5jbHVkZXN7IlY4JHJldHVyblR5
cGUuaCJ9ID0gMTsKLSAgICAgICAgJGltcGxJbmNsdWRlc3siU1ZHUHJvcGVydHlUZWFyT2ZmLmgi
fSA9IDE7CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJWOCRyZXR1cm5UeXBlLmgiKTsKKyAg
ICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlNWR1Byb3BlcnR5VGVhck9mZi5oIik7CiAgICAgICAg
IG15ICRzdmdOYXRpdmVUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldFNWR1R5cGVOZWVkaW5nVGVh
ck9mZigkcmV0dXJuVHlwZSk7CiAgICAgICAgICRyZXN1bHQgLj0gJGluZGVudCAuICJyZXR1cm4g
dG9WOChXVEY6OmdldFB0cigke3N2Z05hdGl2ZVR5cGV9OjpjcmVhdGUoJHJldHVybikpKTtcbiI7
CiAgICAgICAgIHJldHVybiAkcmVzdWx0OwpAQCAtMzA5MSw3ICszMTE5LDcgQEAgc3ViIFR5cGVD
YW5GYWlsQ29udmVyc2lvbgogCiAgICAgbXkgJHR5cGUgPSBHZXRUeXBlRnJvbVNpZ25hdHVyZSgk
c2lnbmF0dXJlKTsKIAotICAgICRpbXBsSW5jbHVkZXN7IkV4Y2VwdGlvbkNvZGUuaCJ9ID0gMSBp
ZiAkdHlwZSBlcSAiQXR0ciI7CisgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkV4Y2VwdGlvbkNvZGUu
aCIpIGlmICR0eXBlIGVxICJBdHRyIjsKICAgICByZXR1cm4gMSBpZiAkdHlwZSBlcSAiQXR0ciI7
CiAgICAgcmV0dXJuIDEgaWYgJHR5cGUgZXEgIlZvaWRDYWxsYmFjayI7CiAgICAgcmV0dXJuIDEg
aWYgJHR5cGUgZXEgIklEQktleSI7CkBAIC0zMTIzLDE4ICszMTUxLDE4IEBAIHN1YiBKU1ZhbHVl
VG9OYXRpdmUKICAgICBkaWUgIlVuZXhwZWN0ZWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlIiBpZiAk
dHlwZSBlcSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIjsKIAogICAgIGlmICgkdHlwZSBlcSAiSURC
S2V5IikgewotICAgICAgICAkaW1wbEluY2x1ZGVzeyJJREJCaW5kaW5nVXRpbGl0aWVzLmgifSA9
IDE7Ci0gICAgICAgICRpbXBsSW5jbHVkZXN7IklEQktleS5oIn0gPSAxOworICAgICAgICBBZGRU
b0ltcGxJbmNsdWRlcygiSURCQmluZGluZ1V0aWxpdGllcy5oIik7CisgICAgICAgIEFkZFRvSW1w
bEluY2x1ZGVzKCJJREJLZXkuaCIpOwogICAgICAgICByZXR1cm4gImNyZWF0ZUlEQktleUZyb21W
YWx1ZSgkdmFsdWUpIjsKICAgICB9CiAKICAgICBpZiAoJHR5cGUgZXEgIk9wdGlvbnNPYmplY3Qi
KSB7Ci0gICAgICAgICRpbXBsSW5jbHVkZXN7Ik9wdGlvbnNPYmplY3QuaCJ9ID0gMTsKKyAgICAg
ICAgQWRkVG9JbXBsSW5jbHVkZXMoIk9wdGlvbnNPYmplY3QuaCIpOwogICAgICAgICByZXR1cm4g
JHZhbHVlOwogICAgIH0KIAogICAgIGlmICgkdHlwZSBlcSAiRE9NT2JqZWN0IikgewotICAgICAg
ICAkaW1wbEluY2x1ZGVzeyJTY3JpcHRWYWx1ZS5oIn0gPSAxOworICAgICAgICBBZGRUb0ltcGxJ
bmNsdWRlcygiU2NyaXB0VmFsdWUuaCIpOwogICAgICAgICByZXR1cm4gIlNjcmlwdFZhbHVlKCR2
YWx1ZSkiOwogICAgIH0KIApAQCAtMzE0MywxMyArMzE3MSwxMyBAQCBzdWIgSlNWYWx1ZVRvTmF0
aXZlCiAgICAgfQogCiAgICAgaWYgKCR0eXBlIGVxICJNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIikg
ewotICAgICAgICAkaW1wbEluY2x1ZGVzeyJNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgifSA9IDE7
CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgiKTsK
ICAgICAgICAgcmV0dXJuICJNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpjcmVhdGUoIiAuICR2YWx1
ZSAuICIpIjsKICAgICB9CiAKICAgICAjIERlZmF1bHQsIGFzc3VtZSBhdXRvZ2VuZXJhdGVkIHR5
cGUgY29udmVyc2lvbiByb3V0aW5lcwogICAgIGlmICgkdHlwZSBlcSAiRXZlbnRUYXJnZXQiKSB7
Ci0gICAgICAgICRpbXBsSW5jbHVkZXN7IlY4Tm9kZS5oIn0gPSAxOworICAgICAgICBBZGRUb0lt
cGxJbmNsdWRlcygiVjhOb2RlLmgiKTsKIAogICAgICAgICAjIEV2ZW50VGFyZ2V0IGlzIG5vdCBp
biBET00gaGllcmFyY2h5LCBidXQgYWxsIE5vZGVzIGFyZSBFdmVudFRhcmdldC4KICAgICAgICAg
cmV0dXJuICJWOE5vZGU6Okhhc0luc3RhbmNlKCR2YWx1ZSkgPyBWOE5vZGU6OnRvTmF0aXZlKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoJHZhbHVlKSkgOiAwIjsKQEAgLTMxNjIsMTMgKzMx
OTAsMTMgQEAgc3ViIEpTVmFsdWVUb05hdGl2ZQogICAgIEFkZEluY2x1ZGVzRm9yVHlwZSgkdHlw
ZSk7CiAKICAgICBpZiAoSXNET01Ob2RlVHlwZSgkdHlwZSkpIHsKLSAgICAgICAgJGltcGxJbmNs
dWRlc3siVjgke3R5cGV9LmgifSA9IDE7CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJWOCR7
dHlwZX0uaCIpOwogCiAgICAgICAgICMgUGVyZm9ybSB0eXBlIGNoZWNrcyBvbiB0aGUgcGFyYW1l
dGVyLCBpZiBpdCBpcyBleHBlY3RlZCBOb2RlIHR5cGUsCiAgICAgICAgICMgcmV0dXJuIE5VTEwu
CiAgICAgICAgIHJldHVybiAiVjgke3R5cGV9OjpIYXNJbnN0YW5jZSgkdmFsdWUpID8gVjgke3R5
cGV9Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KCR2YWx1ZSkpIDogMCI7
CiAgICAgfSBlbHNlIHsKLSAgICAgICAgJGltcGxJbmNsdWRlc3siVjgkdHlwZS5oIn0gPSAxOwor
ICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiVjgkdHlwZS5oIik7CiAKICAgICAgICAgIyBQZXJm
b3JtIHR5cGUgY2hlY2tzIG9uIHRoZSBwYXJhbWV0ZXIsIGlmIGl0IGlzIGV4cGVjdGVkIE5vZGUg
dHlwZSwKICAgICAgICAgIyByZXR1cm4gTlVMTC4KQEAgLTMyMDYsNyArMzIzNCw3IEBAIHN1YiBD
cmVhdGVDdXN0b21TaWduYXR1cmUKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgbXkgJHR5cGUgPSAkcGFyYW1ldGVyLT50eXBlOwogICAgICAgICAgICAgICAgIG15ICRoZWFk
ZXIgPSBHZXRWOEhlYWRlck5hbWUoJHR5cGUpOwotICAgICAgICAgICAgICAgICRpbXBsSW5jbHVk
ZXN7JGhlYWRlcn0gPSAxOworICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCRoZWFk
ZXIpOwogICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gIlY4JHt0eXBlfTo6R2V0UmF3VGVtcGxh
dGUoKSI7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CkBAIC0zMzczLDE4ICszNDAx
LDE4IEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUKICAgICB9CiAKICAgICBpZiAoJHR5cGUgZXEgIkV2
ZW50TGlzdGVuZXIiKSB7Ci0gICAgICAgICRpbXBsSW5jbHVkZXN7IlY4QWJzdHJhY3RFdmVudExp
c3RlbmVyLmgifSA9IDE7CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJWOEFic3RyYWN0RXZl
bnRMaXN0ZW5lci5oIik7CiAgICAgICAgIHJldHVybiAiJHt2YWx1ZX0gPyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4oc3RhdGljX2Nhc3Q8VjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIqPigke3ZhbHVlfSkt
PmdldExpc3RlbmVyT2JqZWN0KGltcC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkgOiB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4odjg6Ok51bGwoKSkiOwogICAgIH0KIAogICAgIGlmICgkdHlwZSBl
cSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIikgewotICAgICAgICAkaW1wbEluY2x1ZGVzeyIkdHlw
ZS5oIn0gPSAxOworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiJHR5cGUuaCIpOwogICAgICAg
ICByZXR1cm4gIiR2YWx1ZS0+ZGVzZXJpYWxpemUoKSI7CiAgICAgfQogCi0gICAgJGltcGxJbmNs
dWRlc3sid3RmL1JlZkNvdW50ZWQuaCJ9ID0gMTsKLSAgICAkaW1wbEluY2x1ZGVzeyJ3dGYvUmVm
UHRyLmgifSA9IDE7Ci0gICAgJGltcGxJbmNsdWRlc3sid3RmL0dldFB0ci5oIn0gPSAxOworICAg
IEFkZFRvSW1wbEluY2x1ZGVzKCJ3dGYvUmVmQ291bnRlZC5oIik7CisgICAgQWRkVG9JbXBsSW5j
bHVkZXMoInd0Zi9SZWZQdHIuaCIpOworICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJ3dGYvR2V0UHRy
LmgiKTsKIAogICAgIHJldHVybiAidG9WOCgkdmFsdWUpIjsKIH0KQEAgLTM0MDMsMTUgKzM0MzEs
MzUgQEAgc3ViIFdyaXRlRGF0YQogCiAgICAgICAgIHByaW50ICRJTVBMIEBpbXBsRml4ZWRIZWFk
ZXI7CiAKLSAgICAgICAgZm9yZWFjaCBteSAkaW1wbEluY2x1ZGUgKHNvcnQga2V5cyglaW1wbElu
Y2x1ZGVzKSkgewotICAgICAgICAgICAgbXkgJGNoZWNrVHlwZSA9ICRpbXBsSW5jbHVkZTsKKyAg
ICAgICAgbXkgQGluY2x1ZGVzID0gKCk7CisgICAgICAgIG15ICVpbXBsSW5jbHVkZUNvbmRpdGlv
bnMgPSAoKTsKKyAgICAgICAgZm9yZWFjaCBteSAkaW5jbHVkZSAoa2V5cyAlaW1wbEluY2x1ZGVz
KSB7CisgICAgICAgICAgICBteSAkY29uZGl0aW9uID0gJGltcGxJbmNsdWRlc3skaW5jbHVkZX07
CisgICAgICAgICAgICBteSAkY2hlY2tUeXBlID0gJGluY2x1ZGU7CiAgICAgICAgICAgICAkY2hl
Y2tUeXBlID1+IHMvXC5oLy87CisgICAgICAgICAgICBuZXh0IGlmICRjb2RlR2VuZXJhdG9yLT5J
c1NWR0FuaW1hdGVkVHlwZSgkY2hlY2tUeXBlKTsKKworICAgICAgICAgICAgaWYgKCRpbmNsdWRl
ID1+IC93dGYvKSB7CisgICAgICAgICAgICAgICAgJGluY2x1ZGUgPSAiXDwkaW5jbHVkZVw+IjsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgJGluY2x1ZGUgPSAiXCIkaW5j
bHVkZVwiIjsKKyAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCRpbXBsSW5jbHVkZSA9
fiAvd3RmLykgewotICAgICAgICAgICAgICAgIHByaW50ICRJTVBMICIjaW5jbHVkZSBcPCRpbXBs
SW5jbHVkZVw+XG4iOworICAgICAgICAgICAgaWYgKCRjb25kaXRpb24gZXEgMSkgeworICAgICAg
ICAgICAgICAgIHB1c2ggQGluY2x1ZGVzLCAkaW5jbHVkZTsKICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgcHJpbnQgJElNUEwgIiNpbmNsdWRlIFwiJGltcGxJbmNsdWRlXCJc
biIgdW5sZXNzICRjb2RlR2VuZXJhdG9yLT5Jc1NWR0FuaW1hdGVkVHlwZSgkY2hlY2tUeXBlKTsK
KyAgICAgICAgICAgICAgICBwdXNoIEB7JGltcGxJbmNsdWRlQ29uZGl0aW9uc3skY29uZGl0aW9u
fX0sICRpbmNsdWRlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZvcmVhY2gg
bXkgJGluY2x1ZGUgKHNvcnQgQGluY2x1ZGVzKSB7CisgICAgICAgICAgICBwcmludCAkSU1QTCAi
I2luY2x1ZGUgJGluY2x1ZGVcbiI7CisgICAgICAgIH0KKyAgICAgICAgZm9yZWFjaCBteSAkY29u
ZGl0aW9uIChzb3J0IGtleXMgJWltcGxJbmNsdWRlQ29uZGl0aW9ucykgeworICAgICAgICAgICAg
cHJpbnQgJElNUEwgIlxuI2lmICIgLiBHZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nRnJvbUF0dHJp
YnV0ZVZhbHVlKCRjb25kaXRpb24pIC4gIlxuIjsKKyAgICAgICAgICAgIGZvcmVhY2ggbXkgJGlu
Y2x1ZGUgKHNvcnQgQHskaW1wbEluY2x1ZGVDb25kaXRpb25zeyRjb25kaXRpb259fSkgeworICAg
ICAgICAgICAgICAgIHByaW50ICRJTVBMICIjaW5jbHVkZSAkaW5jbHVkZVxuIjsKICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHByaW50ICRJTVBMICIjZW5kaWZcbiI7CiAgICAgICAgIH0KIAog
ICAgICAgICBwcmludCAkSU1QTCAiXG4iOwpAQCAtMzQ2NCw3ICszNTEyLDcgQEAgc3ViIENvbnZl
cnRUb1Y4UGFyYW1ldGVyCiAKICAgICBkaWUgIldyb25nIG5hdGl2ZSB0eXBlIHBhc3NlZDogJG5h
dGl2ZVR5cGUiIHVubGVzcyAkbmF0aXZlVHlwZSA9fiAvXlY4UGFyYW1ldGVyLzsKICAgICBpZiAo
JHNpZ25hdHVyZS0+dHlwZSBlcSAiRE9NU3RyaW5nIikgewotICAgICAgICAkaW1wbEluY2x1ZGVz
eyJWOEJpbmRpbmdNYWNyb3MuaCJ9ID0gMTsKKyAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlY4
QmluZGluZ01hY3Jvcy5oIik7CiAgICAgICAgIG15ICRtYWNybyA9ICJTVFJJTkdfVE9fVjhQQVJB
TUVURVJfRVhDRVBUSU9OX0JMT0NLIjsKICAgICAgICAgJG1hY3JvIC49ICJfJHN1ZmZpeCIgaWYg
JHN1ZmZpeDsKICAgICAgICAgcmV0dXJuICIkbWFjcm8oJG5hdGl2ZVR5cGUsICR2YXJpYWJsZU5h
bWUsICR2YWx1ZSk7IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKaW5kZXggNjVlNWJmM2U2MDJjYTQzOTg1
NzY0MzMwMzYwOGI0MGUzMmZkZWQ0Ny4uY2I5ZGJhYzFhOThjYWFmMjFjZGRmYzY2YWI4YmM5NWU3
YjIyMjc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0NQUC9XZWJET01UZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwCkBAIC01NjUsNiArNTY1LDYwIEBAIHZvaWQg
V2ViRE9NVGVzdE9iajo6c2V0Q29uZGl0aW9uYWxBdHRyMyhpbnQgbmV3Q29uZGl0aW9uYWxBdHRy
MykKIH0KIAogI2VuZGlmCisjaWYgRU5BQkxFKENvbmRpdGlvbjEpCitXZWJET01UZXN0T2JqZWN0
QUNvbnN0cnVjdG9yIFdlYkRPTVRlc3RPYmo6OmNvbmRpdGlvbmFsQXR0cjQoKSBjb25zdAorewor
ICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm4gV2ViRE9NVGVzdE9iamVjdEFDb25zdHJ1
Y3RvcigpOworCisgICAgcmV0dXJuIHRvV2ViS2l0KFdURjo6Z2V0UHRyKGltcGwoKS0+Y29uZGl0
aW9uYWxBdHRyNCgpKSk7Cit9CisKK3ZvaWQgV2ViRE9NVGVzdE9iajo6c2V0Q29uZGl0aW9uYWxB
dHRyNChjb25zdCBXZWJET01UZXN0T2JqZWN0QUNvbnN0cnVjdG9yJiBuZXdDb25kaXRpb25hbEF0
dHI0KQoreworICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpbXBsKCkt
PnNldENvbmRpdGlvbmFsQXR0cjQodG9XZWJDb3JlKG5ld0NvbmRpdGlvbmFsQXR0cjQpKTsKK30K
KworI2VuZGlmCisjaWYgRU5BQkxFKENvbmRpdGlvbjEpICYmIEVOQUJMRShDb25kaXRpb24yKQor
V2ViRE9NVGVzdE9iamVjdEJDb25zdHJ1Y3RvciBXZWJET01UZXN0T2JqOjpjb25kaXRpb25hbEF0
dHI1KCkgY29uc3QKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuIFdlYkRPTVRl
c3RPYmplY3RCQ29uc3RydWN0b3IoKTsKKworICAgIHJldHVybiB0b1dlYktpdChXVEY6OmdldFB0
cihpbXBsKCktPmNvbmRpdGlvbmFsQXR0cjUoKSkpOworfQorCit2b2lkIFdlYkRPTVRlc3RPYmo6
OnNldENvbmRpdGlvbmFsQXR0cjUoY29uc3QgV2ViRE9NVGVzdE9iamVjdEJDb25zdHJ1Y3RvciYg
bmV3Q29uZGl0aW9uYWxBdHRyNSkKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaW1wbCgpLT5zZXRDb25kaXRpb25hbEF0dHI1KHRvV2ViQ29yZShuZXdDb25kaXRp
b25hbEF0dHI1KSk7Cit9CisKKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMikKK1dlYkRPTVRlc3RPYmplY3RDQ29uc3RydWN0b3IgV2ViRE9NVGVzdE9i
ajo6Y29uZGl0aW9uYWxBdHRyNigpIGNvbnN0Cit7CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAg
IHJldHVybiBXZWJET01UZXN0T2JqZWN0Q0NvbnN0cnVjdG9yKCk7CisKKyAgICByZXR1cm4gdG9X
ZWJLaXQoV1RGOjpnZXRQdHIoaW1wbCgpLT5jb25kaXRpb25hbEF0dHI2KCkpKTsKK30KKwordm9p
ZCBXZWJET01UZXN0T2JqOjpzZXRDb25kaXRpb25hbEF0dHI2KGNvbnN0IFdlYkRPTVRlc3RPYmpl
Y3RDQ29uc3RydWN0b3ImIG5ld0NvbmRpdGlvbmFsQXR0cjYpCit7CisgICAgaWYgKCFpbXBsKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGltcGwoKS0+c2V0Q29uZGl0aW9uYWxBdHRyNih0b1dl
YkNvcmUobmV3Q29uZGl0aW9uYWxBdHRyNikpOworfQorCisjZW5kaWYKIGludCBXZWJET01UZXN0
T2JqOjpkZXNjcmlwdGlvbigpIGNvbnN0CiB7CiAgICAgaWYgKCFpbXBsKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmou
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9i
ai5oCmluZGV4IGFiYmJmMmYwNzY5MWNjYzYxOTRiMTQ2NTc1ODhmNWM3YjQzNzY5YzIuLmQ5OTJj
ZjZjMmZkMTAwODA0ZWNmMzYyN2Q2NzI5NjEyNjM1ZTY5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCkBA
IC0zNSw2ICszNSw5IEBAIGNsYXNzIFdlYkRPTUlEQktleTsKIGNsYXNzIFdlYkRPTU9wdGlvbnNP
YmplY3Q7CiBjbGFzcyBXZWJET01TdHJpbmc7CiBjbGFzcyBXZWJET01UZXN0T2JqOworY2xhc3Mg
V2ViRE9NVGVzdE9iamVjdEFDb25zdHJ1Y3RvcjsKK2NsYXNzIFdlYkRPTVRlc3RPYmplY3RCQ29u
c3RydWN0b3I7CitjbGFzcyBXZWJET01UZXN0T2JqZWN0Q0NvbnN0cnVjdG9yOwogCiBjbGFzcyBX
ZWJET01UZXN0T2JqIDogcHVibGljIFdlYkRPTU9iamVjdCB7CiBwdWJsaWM6CkBAIC0xMjQsNiAr
MTI3LDE4IEBAIHB1YmxpYzoKICAgICBpbnQgY29uZGl0aW9uYWxBdHRyMygpIGNvbnN0OwogICAg
IHZvaWQgc2V0Q29uZGl0aW9uYWxBdHRyMyhpbnQpOwogI2VuZGlmCisjaWYgRU5BQkxFKENvbmRp
dGlvbjEpCisgICAgV2ViRE9NVGVzdE9iamVjdEFDb25zdHJ1Y3RvciBjb25kaXRpb25hbEF0dHI0
KCkgY29uc3Q7CisgICAgdm9pZCBzZXRDb25kaXRpb25hbEF0dHI0KGNvbnN0IFdlYkRPTVRlc3RP
YmplY3RBQ29uc3RydWN0b3ImKTsKKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24xKSAmJiBF
TkFCTEUoQ29uZGl0aW9uMikKKyAgICBXZWJET01UZXN0T2JqZWN0QkNvbnN0cnVjdG9yIGNvbmRp
dGlvbmFsQXR0cjUoKSBjb25zdDsKKyAgICB2b2lkIHNldENvbmRpdGlvbmFsQXR0cjUoY29uc3Qg
V2ViRE9NVGVzdE9iamVjdEJDb25zdHJ1Y3RvciYpOworI2VuZGlmCisjaWYgRU5BQkxFKENvbmRp
dGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQorICAgIFdlYkRPTVRlc3RPYmplY3RDQ29uc3Ry
dWN0b3IgY29uZGl0aW9uYWxBdHRyNigpIGNvbnN0OworICAgIHZvaWQgc2V0Q29uZGl0aW9uYWxB
dHRyNihjb25zdCBXZWJET01UZXN0T2JqZWN0Q0NvbnN0cnVjdG9yJik7CisjZW5kaWYKICAgICBp
bnQgZGVzY3JpcHRpb24oKSBjb25zdDsKICAgICBpbnQgaWQoKSBjb25zdDsKICAgICB2b2lkIHNl
dElkKGludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGZmZDIzYTg5YWQ0MzA4YWJhMDIxMDM4NWEzOGM1YjFi
YTZiNzQ5ZmUuLjBjZmE3MGVjZGJiZDFmMDNmNzMwYmY4ZjRlMGNjNDM0Njg0ZTg2NDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwCkBAIC00Miw2ICs0MiwxOCBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKKyNpbmNs
dWRlICJKU1Rlc3RPYmplY3RBLmgiCisjZW5kaWYKKworI2lmIEVOQUJMRShDb25kaXRpb24xKSAm
JiBFTkFCTEUoQ29uZGl0aW9uMikKKyNpbmNsdWRlICJKU1Rlc3RPYmplY3RCLmgiCisjZW5kaWYK
KworI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKKyNpbmNsdWRl
ICJKU1Rlc3RPYmplY3RDLmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtOTUsNiArMTA3LDE1IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFi
bGVWYWx1ZSBKU1Rlc3RPYmpUYWJsZVZhbHVlc1tdID0KICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkg
fHwgRU5BQkxFKENvbmRpdGlvbjIpCiAgICAgeyAiY29uZGl0aW9uYWxBdHRyMyIsIERvbnREZWxl
dGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0T2JqQ29uZGl0aW9uYWxBdHRyMyksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpDb25kaXRpb25h
bEF0dHIzIFRIVU5LX0dFTkVSQVRPUigwKSB9LAogI2VuZGlmCisjaWYgRU5BQkxFKENvbmRpdGlv
bjEpCisgICAgeyAiY29uZGl0aW9uYWxBdHRyNCIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQ29uZGl0aW9uYWxB
dHRyNENvbnN0cnVjdG9yKSwgKGludHB0cl90KXNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjRD
b25zdHJ1Y3RvciBUSFVOS19HRU5FUkFUT1IoMCkgfSwKKyNlbmRpZgorI2lmIEVOQUJMRShDb25k
aXRpb24xKSAmJiBFTkFCTEUoQ29uZGl0aW9uMikKKyAgICB7ICJjb25kaXRpb25hbEF0dHI1Iiwg
RG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHI1Q29uc3RydWN0b3IpLCAoaW50cHRyX3Qpc2V0
SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNUNvbnN0cnVjdG9yIFRIVU5LX0dFTkVSQVRPUigwKSB9
LAorI2VuZGlmCisjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQor
ICAgIHsgImNvbmRpdGlvbmFsQXR0cjYiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjZD
b25zdHJ1Y3RvciksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI2Q29uc3Ry
dWN0b3IgVEhVTktfR0VORVJBVE9SKDApIH0sCisjZW5kaWYKICAgICB7ICJkZXNjcmlwdGlvbiIs
IERvbnREZWxldGUgfCBSZWFkT25seSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpEZXNjcmlwdGlvbiksIChpbnRwdHJfdCkwIFRIVU5L
X0dFTkVSQVRPUigwKSB9LAogICAgIHsgImlkIiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpJZCksIChpbnRwdHJf
dClzZXRKU1Rlc3RPYmpJZCBUSFVOS19HRU5FUkFUT1IoMCkgfSwKICAgICB7ICJoYXNoIiwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakhhc2gpLCAoaW50cHRyX3QpMCBUSFVOS19HRU5FUkFUT1Io
MCkgfSwKQEAgLTEwMyw3ICsxMjQsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNU
ZXN0T2JqVGFibGVWYWx1ZXNbXSA9CiB9OwogCiAjdW5kZWYgVEhVTktfR0VORVJBVE9SCi1zdGF0
aWMgSlNDX0NPTlNUX0hBU0hUQUJMRSBIYXNoVGFibGUgSlNUZXN0T2JqVGFibGUgPSB7IDEzMywg
MTI3LCBKU1Rlc3RPYmpUYWJsZVZhbHVlcywgMCB9Oworc3RhdGljIEpTQ19DT05TVF9IQVNIVEFC
TEUgSGFzaFRhYmxlIEpTVGVzdE9ialRhYmxlID0geyAxMzQsIDEyNywgSlNUZXN0T2JqVGFibGVW
YWx1ZXMsIDAgfTsKIC8qIEhhc2ggdGFibGUgZm9yIGNvbnN0cnVjdG9yICovCiAjaWYgRU5BQkxF
KEpJVCkKICNkZWZpbmUgVEhVTktfR0VORVJBVE9SKGdlbmVyYXRvcikgLCBnZW5lcmF0b3IKQEAg
LTYxMiw2ICs2MzMsMzMgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIzKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnQKIAogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoQ29uZGl0aW9uMSkKK0pTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNENv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRp
ZmllciYpCit7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0
T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICByZXR1cm4gSlNUZXN0T2JqZWN0QTo6Z2V0
Q29uc3RydWN0b3IoZXhlYywgY2FzdGVkVGhpcyk7Cit9CisKKyNlbmRpZgorCisjaWYgRU5BQkxF
KENvbmRpdGlvbjEpICYmIEVOQUJMRShDb25kaXRpb24yKQorSlNWYWx1ZSBqc1Rlc3RPYmpDb25k
aXRpb25hbEF0dHI1Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNl
LCBjb25zdCBJZGVudGlmaWVyJikKK3sKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0
aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOworICAgIHJldHVybiBKU1Rl
c3RPYmplY3RCOjpnZXRDb25zdHJ1Y3RvcihleGVjLCBjYXN0ZWRUaGlzKTsKK30KKworI2VuZGlm
CisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCitKU1ZhbHVl
IGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjZDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQoreworICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7Cisg
ICAgcmV0dXJuIEpTVGVzdE9iamVjdEM6OmdldENvbnN0cnVjdG9yKGV4ZWMsIGNhc3RlZFRoaXMp
OworfQorCisjZW5kaWYKKwogSlNWYWx1ZSBqc1Rlc3RPYmpEZXNjcmlwdGlvbihFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQogewogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RC
YXNlKSk7CkBAIC04OTAsNiArOTM4LDMzIEBAIHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxB
dHRyMyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlCiAKICNl
bmRpZgogCisjaWYgRU5BQkxFKENvbmRpdGlvbjEpCit2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlv
bmFsQXR0cjRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVj
dG9yCisgICAgc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4odGhpc09iamVjdCktPnB1dERpcmVjdChl
eGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgImNvbmRpdGlvbmFsQXR0cjQiKSwg
dmFsdWUpOworfQorCisjZW5kaWYKKworI2lmIEVOQUJMRShDb25kaXRpb24xKSAmJiBFTkFCTEUo
Q29uZGl0aW9uMikKK3ZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNUNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7
CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKKyAgICBzdGF0aWNfY2Fz
dDxKU1Rlc3RPYmoqPih0aGlzT2JqZWN0KS0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
SWRlbnRpZmllcihleGVjLCAiY29uZGl0aW9uYWxBdHRyNSIpLCB2YWx1ZSk7Cit9CisKKyNlbmRp
ZgorCisjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQordm9pZCBz
ZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI2Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICAvLyBTaGFkb3dpbmcg
YSBidWlsdC1pbiBjb25zdHJ1Y3RvcgorICAgIHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KHRoaXNP
YmplY3QpLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJj
b25kaXRpb25hbEF0dHI2IiksIHZhbHVlKTsKK30KKworI2VuZGlmCisKIHZvaWQgc2V0SlNUZXN0
T2JqSWQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoq
Pih0aGlzT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouaAppbmRleCBhMTA0NDQ5YjE1YmFmOTAxNDBmNzMwYzNlOWRiMjA0
Y2ViYWRmZDI2Li40ZWExNmE0ZWE3MDFmYTdlNDE2OWY4YWQ1ZDdjYjExMjc2ZmFmZWU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5oCkBAIC0xOTIsNiArMTkyLDEyIEBAIEpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25h
bEF0dHIyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6CiB2b2lkIHNl
dEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0
KiwgSlNDOjpKU1ZhbHVlKTsKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIz
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsK
IHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUpOworSlNDOjpKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlv
bmFsQXR0cjRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJik7Cit2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjRDb25z
dHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUpOwor
SlNDOjpKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjVDb25zdHJ1Y3RvcihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7Cit2b2lkIHNl
dEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjVDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUpOworSlNDOjpKU1ZhbHVlIGpzVGVzdE9iakNvbmRp
dGlvbmFsQXR0cjZDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29u
c3QgSlNDOjpJZGVudGlmaWVyJik7Cit2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjZD
b25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUp
OwogSlNDOjpKU1ZhbHVlIGpzVGVzdE9iakRlc2NyaXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RP
YmpJZChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVy
Jik7CiB2b2lkIHNldEpTVGVzdE9iaklkKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCos
IEpTQzo6SlNWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmgKaW5kZXggYzZhYjM2ODVmNjRmNjQ0MjdlMTZmZGUy
ZTk0MWM5MDc2ODc3NmZiMy4uOGRlOWE5YzM3YmQwYzMzODQzMzc0MWQzNTJlYTU0OGJhZWEwZjM1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMv
RE9NVGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9P
YmpDL0RPTVRlc3RPYmouaApAQCAtMzEsNiArMzEsOSBAQAogQGNsYXNzIERPTUlEQktleTsKIEBj
bGFzcyBET01PcHRpb25zT2JqZWN0OwogQGNsYXNzIERPTVRlc3RPYmo7CitAY2xhc3MgRE9NVGVz
dE9iamVjdEFDb25zdHJ1Y3RvcjsKK0BjbGFzcyBET01UZXN0T2JqZWN0QkNvbnN0cnVjdG9yOwor
QGNsYXNzIERPTVRlc3RPYmplY3RDQ29uc3RydWN0b3I7CiBAY2xhc3MgRE9NbG9nOwogQGNsYXNz
IE5TU3RyaW5nOwogQHByb3RvY29sIERPTUV2ZW50TGlzdGVuZXI7CkBAIC0xMTYsNiArMTE5LDE4
IEBAIGVudW0gewogLSAoaW50KWNvbmRpdGlvbmFsQXR0cjM7CiAtICh2b2lkKXNldENvbmRpdGlv
bmFsQXR0cjM6KGludCluZXdDb25kaXRpb25hbEF0dHIzOwogI2VuZGlmCisjaWYgRU5BQkxFKENv
bmRpdGlvbjEpCistIChET01UZXN0T2JqZWN0QUNvbnN0cnVjdG9yICopY29uZGl0aW9uYWxBdHRy
NDsKKy0gKHZvaWQpc2V0Q29uZGl0aW9uYWxBdHRyNDooRE9NVGVzdE9iamVjdEFDb25zdHJ1Y3Rv
ciAqKW5ld0NvbmRpdGlvbmFsQXR0cjQ7CisjZW5kaWYKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMSkg
JiYgRU5BQkxFKENvbmRpdGlvbjIpCistIChET01UZXN0T2JqZWN0QkNvbnN0cnVjdG9yICopY29u
ZGl0aW9uYWxBdHRyNTsKKy0gKHZvaWQpc2V0Q29uZGl0aW9uYWxBdHRyNTooRE9NVGVzdE9iamVj
dEJDb25zdHJ1Y3RvciAqKW5ld0NvbmRpdGlvbmFsQXR0cjU7CisjZW5kaWYKKyNpZiBFTkFCTEUo
Q29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCistIChET01UZXN0T2JqZWN0Q0NvbnN0
cnVjdG9yICopY29uZGl0aW9uYWxBdHRyNjsKKy0gKHZvaWQpc2V0Q29uZGl0aW9uYWxBdHRyNjoo
RE9NVGVzdE9iamVjdENDb25zdHJ1Y3RvciAqKW5ld0NvbmRpdGlvbmFsQXR0cjY7CisjZW5kaWYK
IC0gKGludClkZXNjcmlwdGlvbk5hbWU7CiAtIChpbnQpaWROYW1lOwogLSAodm9pZClzZXRJZE5h
bWU6KGludCluZXdJZE5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQppbmRleCBmNDNmNThhMWM3Yjc4NGY2Mjg0
OTFlODQyNjM0NjRiMjYxOWNhNWM1Li5lNDQ0MjFmNTU3N2ZkZTM0OWQxM2ZjYzYwNjc5ZmQ3NTU1
OWIzMWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
T2JqQy9ET01UZXN0T2JqLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RPYmoubW0KQEAgLTM4LDYgKzM4LDkgQEAKICNpbXBvcnQgIkRPTU9w
dGlvbnNPYmplY3RJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NU3R5bGVTaGVldEludGVybmFsLmgi
CiAjaW1wb3J0ICJET01UZXN0T2JqSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTVRlc3RPYmplY3RB
Q29uc3RydWN0b3JJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NVGVzdE9iamVjdEJDb25zdHJ1Y3Rv
ckludGVybmFsLmgiCisjaW1wb3J0ICJET01UZXN0T2JqZWN0Q0NvbnN0cnVjdG9ySW50ZXJuYWwu
aCIKICNpbXBvcnQgIkRPTWxvZ0ludGVybmFsLmgiCiAjaW1wb3J0ICJFdmVudExpc3RlbmVyLmgi
CiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgpAQCAtNDksNiArNTIsOSBAQAogI2ltcG9y
dCAiT3B0aW9uc09iamVjdC5oIgogI2ltcG9ydCAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAj
aW1wb3J0ICJUZXN0T2JqLmgiCisjaW1wb3J0ICJUZXN0T2JqZWN0QUNvbnN0cnVjdG9yLmgiCisj
aW1wb3J0ICJUZXN0T2JqZWN0QkNvbnN0cnVjdG9yLmgiCisjaW1wb3J0ICJUZXN0T2JqZWN0Q0Nv
bnN0cnVjdG9yLmgiCiAjaW1wb3J0ICJUaHJlYWRDaGVjay5oIgogI2ltcG9ydCAiV2ViQ29yZU9i
akNFeHRyYXMuaCIKICNpbXBvcnQgIldlYlNjcmlwdE9iamVjdFByaXZhdGUuaCIKQEAgLTQ2MCw2
ICs0NjYsNTQgQEAKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKENvbmRpdGlvbjEpCistIChET01U
ZXN0T2JqZWN0QUNvbnN0cnVjdG9yICopY29uZGl0aW9uYWxBdHRyNAoreworICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRy
KElNUEwtPmNvbmRpdGlvbmFsQXR0cjQoKSkpOworfQorCistICh2b2lkKXNldENvbmRpdGlvbmFs
QXR0cjQ6KERPTVRlc3RPYmplY3RBQ29uc3RydWN0b3IgKiluZXdDb25kaXRpb25hbEF0dHI0Cit7
CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIEFTU0VSVChu
ZXdDb25kaXRpb25hbEF0dHI0KTsKKworICAgIElNUEwtPnNldENvbmRpdGlvbmFsQXR0cjQoY29y
ZShuZXdDb25kaXRpb25hbEF0dHI0KSk7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShDb25kaXRp
b24xKSAmJiBFTkFCTEUoQ29uZGl0aW9uMikKKy0gKERPTVRlc3RPYmplY3RCQ29uc3RydWN0b3Ig
Kiljb25kaXRpb25hbEF0dHI1Cit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOworICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Y29uZGl0aW9uYWxBdHRy
NSgpKSk7Cit9CisKKy0gKHZvaWQpc2V0Q29uZGl0aW9uYWxBdHRyNTooRE9NVGVzdE9iamVjdEJD
b25zdHJ1Y3RvciAqKW5ld0NvbmRpdGlvbmFsQXR0cjUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgQVNTRVJUKG5ld0NvbmRpdGlvbmFsQXR0cjUpOwor
CisgICAgSU1QTC0+c2V0Q29uZGl0aW9uYWxBdHRyNShjb3JlKG5ld0NvbmRpdGlvbmFsQXR0cjUp
KTsKK30KKyNlbmRpZgorCisjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRp
b24yKQorLSAoRE9NVGVzdE9iamVjdENDb25zdHJ1Y3RvciAqKWNvbmRpdGlvbmFsQXR0cjYKK3sK
KyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIGtp
dChXVEY6OmdldFB0cihJTVBMLT5jb25kaXRpb25hbEF0dHI2KCkpKTsKK30KKworLSAodm9pZClz
ZXRDb25kaXRpb25hbEF0dHI2OihET01UZXN0T2JqZWN0Q0NvbnN0cnVjdG9yICopbmV3Q29uZGl0
aW9uYWxBdHRyNgoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
KyAgICBBU1NFUlQobmV3Q29uZGl0aW9uYWxBdHRyNik7CisKKyAgICBJTVBMLT5zZXRDb25kaXRp
b25hbEF0dHI2KGNvcmUobmV3Q29uZGl0aW9uYWxBdHRyNikpOworfQorI2VuZGlmCisKIC0gKGlu
dClkZXNjcmlwdGlvbk5hbWUKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9i
ai5pZGwKaW5kZXggZmEwZDgwODJmNzQ4MmM4N2FhM2VmMjA5MDlkYTIwM2RhM2VhMzlhNS4uZGVi
ZWEwN2ZhN2EyYzYzYjc1OTE4NzJlY2YwNTBiMmU0MDg4MWI0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtMTM2LDYgKzEzNiwx
MCBAQCBtb2R1bGUgdGVzdCB7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9Q29uZGl0
aW9uMSZDb25kaXRpb24yXSBsb25nIGNvbmRpdGlvbmFsQXR0cjI7CiAgICAgICAgIGF0dHJpYnV0
ZSBbQ29uZGl0aW9uYWw9Q29uZGl0aW9uMXxDb25kaXRpb24yXSBsb25nIGNvbmRpdGlvbmFsQXR0
cjM7CiAKKyAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1Db25kaXRpb24xXSBUZXN0T2Jq
ZWN0QUNvbnN0cnVjdG9yIGNvbmRpdGlvbmFsQXR0cjQ7CisgICAgICAgIGF0dHJpYnV0ZSBbQ29u
ZGl0aW9uYWw9Q29uZGl0aW9uMSZDb25kaXRpb24yXSBUZXN0T2JqZWN0QkNvbnN0cnVjdG9yIGNv
bmRpdGlvbmFsQXR0cjU7CisgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9Q29uZGl0aW9u
MXxDb25kaXRpb24yXSBUZXN0T2JqZWN0Q0NvbnN0cnVjdG9yIGNvbmRpdGlvbmFsQXR0cjY7CisK
ICNpZiBkZWZpbmVkKFRFU1RJTkdfVjgpIHx8IGRlZmluZWQoVEVTVElOR19KUykKICAgICAgICAg
Ly8gT3ZlcmxvYWRzCiAgICAgICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChpbiBUZXN0T2Jq
IG9iakFyZywgaW4gRE9NU3RyaW5nIHN0ckFyZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCmluZGV4IDMzZDFhNDAyOGFk
MjdkZDE3NTkyNzAzMWUwY2JhNGU2NzZhZGYyNGIuLjJmOWIzNzRjODJlYmIzYTc0NzIxZjljYjZh
NzE5ZDg0MmY1NDVhOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCkBAIC00NSw2ICs0NSwxOCBAQAogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCisjaWYgRU5BQkxF
KENvbmRpdGlvbjEpCisjaW5jbHVkZSAiVjhUZXN0T2JqZWN0QS5oIgorI2VuZGlmCisKKyNpZiBF
TkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCisjaW5jbHVkZSAiVjhUZXN0
T2JqZWN0Qi5oIgorI2VuZGlmCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENv
bmRpdGlvbjIpCisjaW5jbHVkZSAiVjhUZXN0T2JqZWN0Qy5oIgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogV3JhcHBlclR5cGVJbmZvIFY4VGVzdE9iajo6aW5mbyA9IHsgVjhUZXN0
T2JqOjpHZXRUZW1wbGF0ZSwgVjhUZXN0T2JqOjpkZXJlZk9iamVjdCwgMCwgMCB9OwpAQCAtNjMw
LDYgKzY0MiwxNCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGhhc2hBdHRyR2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2OAogICAgIHJldHVybiB2OFN0cmlu
ZyhpbXAtPmhhc2goKSk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVGVzdE9i
akNvbnN0cnVjdG9yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouY29uc3Ry
dWN0b3JzLl9nZXQiKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGF0YSA9IGluZm8uRGF0
YSgpOworICAgIEFTU0VSVChkYXRhLT5Jc0V4dGVybmFsKCkgfHwgZGF0YS0+SXNOdW1iZXIoKSk7
CisgICAgV3JhcHBlclR5cGVJbmZvKiB0eXBlID0gV3JhcHBlclR5cGVJbmZvOjp1bndyYXAoZGF0
YSk7CisgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpO30KKwogc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB2b2lkTWV0aG9kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnZvaWRNZXRob2QiKTsKQEAgLTEy
MjIsNiArMTI0MiwxOCBAQCBzdGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSBUZXN0T2JqQXR0
cnNbXSA9IHsKICAgICAvLyBBdHRyaWJ1dGUgJ2NvbmRpdGlvbmFsQXR0cjMnIChUeXBlOiAnYXR0
cmlidXRlJyBFeHRBdHRyOiAnQ29uZGl0aW9uYWwnKQogICAgIHsiY29uZGl0aW9uYWxBdHRyMyIs
IFRlc3RPYmpJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRyM0F0dHJHZXR0ZXIsIFRlc3RPYmpJbnRl
cm5hbDo6Y29uZGl0aW9uYWxBdHRyM0F0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGlj
X2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlBy
b3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogI2VuZGlm
IC8vIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKKyNpZiBFTkFCTEUo
Q29uZGl0aW9uMSkKKyAgICAvLyBBdHRyaWJ1dGUgJ2NvbmRpdGlvbmFsQXR0cjQnIChUeXBlOiAn
YXR0cmlidXRlJyBFeHRBdHRyOiAnQ29uZGl0aW9uYWwnKQorICAgIHsiY29uZGl0aW9uYWxBdHRy
NCIsIFRlc3RPYmpJbnRlcm5hbDo6VGVzdE9iakNvbnN0cnVjdG9yR2V0dGVyLCAwLCAmVjhUZXN0
T2JqZWN0QTo6aW5mbywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxU
KSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6UmVhZE9ubHkpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkKKyNpZiBFTkFC
TEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCisgICAgLy8gQXR0cmlidXRlICdj
b25kaXRpb25hbEF0dHI1JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NvbmRpdGlvbmFs
JykKKyAgICB7ImNvbmRpdGlvbmFsQXR0cjUiLCBUZXN0T2JqSW50ZXJuYWw6OlRlc3RPYmpDb25z
dHJ1Y3RvckdldHRlciwgMCwgJlY4VGVzdE9iamVjdEI6OmluZm8sIHN0YXRpY19jYXN0PHY4OjpB
Y2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZT4odjg6OlJlYWRPbmx5KSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisjZW5kaWYgLy8gRU5B
QkxFKENvbmRpdGlvbjEpICYmIEVOQUJMRShDb25kaXRpb24yKQorI2lmIEVOQUJMRShDb25kaXRp
b24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKKyAgICAvLyBBdHRyaWJ1dGUgJ2NvbmRpdGlvbmFs
QXR0cjYnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ29uZGl0aW9uYWwnKQorICAgIHsi
Y29uZGl0aW9uYWxBdHRyNiIsIFRlc3RPYmpJbnRlcm5hbDo6VGVzdE9iakNvbnN0cnVjdG9yR2V0
dGVyLCAwLCAmVjhUZXN0T2JqZWN0Qzo6aW5mbywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRy
b2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6
UmVhZE9ubHkpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0
aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiAgICAgLy8gQXR0cmlidXRlICdkZXNjcmlwdGlv
bicgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQogICAgIHsiZGVzY3Jp
cHRpb24iLCBUZXN0T2JqSW50ZXJuYWw6OmRlc2NyaXB0aW9uQXR0ckdldHRlciwgMCwgMCAvKiBu
byBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBz
dGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0
YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdpZCcgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0
dHI6ICcnKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>