<?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>111511</bug_id>
          
          <creation_ts>2013-03-05 19:49:10 -0800</creation_ts>
          <short_desc>[Custom Elements] createElement() and createElementNS() should support type extention</short_desc>
          <delta_ts>2013-03-11 01:22:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>110436</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>110436</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Hajime Morrita">morrita</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>peter+ews</cc>
    
    <cc>webcomponents-bugzilla</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>848397</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-05 19:49:10 -0800</bug_when>
    <thetext>https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/custom/index.html#instantiating-custom-elements
Custom Element extends createElement and createElementNS() to support type extensions. This bug for implementing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850992</commentid>
    <comment_count>1</comment_count>
      <attachid>192179</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-08 01:53:35 -0800</bug_when>
    <thetext>Created attachment 192179
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850993</commentid>
    <comment_count>2</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-08 01:55:28 -0800</bug_when>
    <thetext>Need to write the ChangeLog entry. But my energy is over today :-/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850994</commentid>
    <comment_count>3</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-08 01:57:58 -0800</bug_when>
    <thetext>
I filed two bugs on Custom Elements standard. The implementation reflects it.
https://www.w3.org/Bugs/Public/show_bug.cgi?id=21219
https://www.w3.org/Bugs/Public/show_bug.cgi?id=21220</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851040</commentid>
    <comment_count>4</comment_count>
      <attachid>192179</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-03-08 02:57:15 -0800</bug_when>
    <thetext>Comment on attachment 192179
Patch

Attachment 192179 did not pass cr-android-ews (chromium-android):
Output: http://webkit-commit-queue.appspot.com/results/17009616</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851058</commentid>
    <comment_count>5</comment_count>
      <attachid>192179</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-08 03:36:07 -0800</bug_when>
    <thetext>Comment on attachment 192179
Patch

Attachment 192179 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17066410

New failing tests:
html5lib/generated/run-webkit01-data.html
fast/dom/custom/document-register-type-extensions.html
html5lib/generated/run-plain-text-unsafe-write.html
fast/dom/getElementsByTagName-localName-matching.html
html5lib/generated/run-plain-text-unsafe-data.html
html5lib/generated/run-webkit01-write.html
fast/dom/custom/document-register-basic.html
html5lib/generated/run-adoption01-write.html
html5lib/generated/run-adoption01-data.html
html5lib/webkit-resumer.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852083</commentid>
    <comment_count>6</comment_count>
      <attachid>192413</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-11 00:20:56 -0700</bug_when>
    <thetext>Created attachment 192413
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852107</commentid>
    <comment_count>7</comment_count>
      <attachid>192413</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-03-11 01:18:36 -0700</bug_when>
    <thetext>Comment on attachment 192413
Patch

Attachment 192413 did not pass cr-android-ews (chromium-android):
Output: http://webkit-commit-queue.appspot.com/results/17024137</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852108</commentid>
    <comment_count>8</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-11 01:22:02 -0700</bug_when>
    <thetext>Turned out this patch just works with the parser. Will move to 110436.

*** This bug has been marked as a duplicate of bug 110436 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192179</attachid>
            <date>2013-03-08 01:53:35 -0800</date>
            <delta_ts>2013-03-11 00:20:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111511-20130308184938.patch</filename>
            <type>text/plain</type>
            <size>43434</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDFlNWRlMzBjZTAxZmUy
MjU4ZThhMjU3YTVjMGNmNDJhYjU5NzBkMC4uZDUxYzJlYThmMDIwZGE1MWYyZWFiYzM5NGRmZjgw
MGFlNjM5ZTVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDEzLTAzLTA4ICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBbQ3VzdG9tIEVsZW1l
bnRzXSBjcmVhdGVFbGVtZW50KCkgYW5kIGNyZWF0ZUVsZW1lbnROUygpIHNob3VsZCBzdXBwb3J0
IHR5cGUgZXh0ZW50aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTE1MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzICJ0eXBlIGV4dGVuc2lvbiIgY29uY2VwdCBv
ZiBjdXN0b20gZWxlbWVudHMsCisgICAgICAgIGluIHdoaWNoIGVsZW1lbnQgZGVmaW5pdGlvbnMg
YXJlIGtleWVkIGJ5IChlbGVtZW50IG5hbWUsIGxvY2FsIG5hbWUpIHBhaXIsIGluc3RlYWQgb2YK
KyAgICAgICAgZWxlbWVudCBuYW1lIGl0c2VsZi4gU2VlIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6
Q29uc3RydWN0b3JNYXAuCisKKyAgICAgICAgV2l0aCB0aGUgdHlwZSBleHRlbnNpb24sIGVhY2gg
Y3VzdG9tIGVsZW1lbnRzIGFyZSBhYmxlIHRvIGluaGVyaXQKKyAgICAgICAgZnJvbSBub3Qgb25s
eSBIVE1MRWxlbWVudCwgYnV0IGFsc28gYW55IEhUTUwgZWxlbWVudC4gVG8gbWFrZSBpdCB3b3Jr
LAorICAgICAgICB0aGlzIGNoYW5nZSBleHRlbmRzIHRoZSBwbHVtYmluZy4KKworICAgICAgICBU
T0RPOiBleHRlbmQgZGVzY3JpcHRpb24uCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vY3VzdG9t
L2RvY3VtZW50LXJlZ2lzdGVyLXR5cGUtZXh0ZW5zaW9ucy5odG1sCisKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVy
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpoYXNWYWxpZFByb3RvdHlwZUNoYWluKToKKyAgICAgICAgKFdlYkNvcmU6
OkN1c3RvbUVsZW1lbnRIZWxwZXJzOjppc1ZhbGlkUHJvdG90eXBlUGFyYW1ldGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRIZWxwZXJzOjpmaW5kTG9jYWxOYW1lKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudEhlbHBlcnM6OmZp
bmRXcmFwcGVyVHlwZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvQ3VzdG9tRWxlbWVudEhlbHBl
cnMuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ3VzdG9tRWxlbWVudEhlbHBlcnMp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4Q3VzdG9tRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWOEN1c3RvbUVsZW1lbnQ6OmNyZWF0ZVdyYXBwZXIpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4Q3VzdG9tRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChW
OEN1c3RvbUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6VjhDdXN0b21FbGVtZW50Ojp3cmFw
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4Q3VzdG9tRWxlbWVudDo6Y29uc3RydWN0b3JPZik6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdyYXBwZXJUeXBlVHJhaXRzKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhDdXN0b21FbGVtZW50Q29uc3RydWN0b3JDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VjhDdXN0b21FbGVtZW50Q29uc3RydWN0b3I6OmNhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sp
OgorICAgICAgICAqIGRvbS9DdXN0b21FbGVtZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjpDdXN0b21FbGVtZW50Q29uc3RydWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjpjcmVhdGVFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Om1hcmtBc0V4dGVuZGVkQ3VzdG9tRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9y
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rv
cik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50Q29uc3RydWN0b3I6OmxvY2FsTmFt
ZSk6CisgICAgICAgICogZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpuYW1lSW5jbHVkZXNIeXBoZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxl
bWVudFJlZ2lzdHJ5Ojppc1ZhbGlkTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVt
ZW50UmVnaXN0cnk6OnJlZ2lzdGVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21F
bGVtZW50UmVnaXN0cnk6OmZpbmRGb3IpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDdXN0b21FbGVtZW50UmVnaXN0cnk6OmZpbmQpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpjcmVhdGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6Y3JlYXRlQ3VzdG9tT3JVbmtub3duRWxlbWVudCk6Cisg
ICAgICAgICogZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5oOgorICAgICAgICAoQ3VzdG9tRWxl
bWVudFJlZ2lzdHJ5KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlRWxlbWVudE5TKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpyZWdpc3RlckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnJlZ2lzdHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjplbnN1cmVSZWdpc3Ry
eSk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChEb2N1bWVudCk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBkb20vbWFrZV9uYW1lcy5wbDoKKyAg
ICAgICAgKHByaW50RmFjdG9yeUNwcEZpbGUpOgorICAgICAgICAocHJpbnRXcmFwcGVyRmFjdG9y
eUNwcEZpbGUpOgorICAgICAgICAocHJpbnRXcmFwcGVyRmFjdG9yeUhlYWRlckZpbGUpOgorICAg
ICAgICAqIGh0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluOgorCiAyMDEzLTAzLTA3ICBIYWppbWUg
TW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBDdXN0b20gRWxlbWVudHM6
IEN1c3RvbUVsZW1lbnQgY29uc3RydWN0b3Igc2hvdWxkbid0IHNoYXJlIGZ1bmN0aW9uIGluc3Rh
bmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtCmluZGV4IGUzOGFmNGQxNTY1ZGQ5YmU1ZGY0YmY1MDdmM2YyOGY2ZGZjMDE0M2MuLjE1
ZTk3YTA5YWY2MWJkODIwNWI4MTY0MTgyYWQ2MTZjZjcxMTNlMmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC01MTUsNiAr
NTE1LDEyIEBAIEVORAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKIH07CiAKK3Rl
bXBsYXRlPD4KK2NsYXNzIFdyYXBwZXJUeXBlVHJhaXRzPCR7bmF0aXZlVHlwZX0gPiB7CitwdWJs
aWM6CisgICAgc3RhdGljIFdyYXBwZXJUeXBlSW5mbyogaW5mbygpIHsgcmV0dXJuICYke3Y4SW50
ZXJmYWNlTmFtZX06OmluZm87IH0KK307CisKIEVORAogCiAgICAgbXkgJGN1c3RvbVdyYXAgPSAh
ISgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tVG9KU09iamVjdCJ9IG9y
ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOEN1c3RvbVRvSlNPYmplY3QifSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9DdXN0b21FbGVtZW50SGVs
cGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVy
cy5jcHAKaW5kZXggNTQ4YTY0N2ExOWU1MmMzMzg3ZTY0OTViY2ZiNGY0OGRhNTJjZjg0ZS4uYjUy
OGU5NjRiNzFlMWEzM2UyMGQ1YjVmOTgwZDAzZGQ4OTI5YWE0MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvQ3VzdG9tRWxlbWVudEhlbHBlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmNwcApAQCAtMzMsNiAr
MzMsNyBAQAogCiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiVjhDdXN0
b21FbGVtZW50Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJWOEhUTUxFbGVtZW50V3JhcHBlckZh
Y3RvcnkuaCIKICNpbmNsdWRlICJWOEhUTUxQYXJhZ3JhcGhFbGVtZW50LmgiCiAjaW5jbHVkZSAi
VjhIVE1MU3BhbkVsZW1lbnQuaCIKIApAQCAtNjMsMTcgKzY0LDEzIEBAIGJvb2wgQ3VzdG9tRWxl
bWVudEhlbHBlcnM6OmluaXRpYWxpemVDb25zdHJ1Y3RvcldyYXBwZXIoQ3VzdG9tRWxlbWVudENv
bnN0cnVjdG9yCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLS8vIFNlZSBGSVhNRSBvbiB0aGUgY2Fs
bGVyIHNpZGUgY29tbWVudC4KLXN0YXRpYyBib29sIGhhc05vQnVpbHRpbnNJblByb3RvdHlwZSh2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGh0bWxQcm90b3R5cGUsIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBjaGFpbikKK3N0YXRpYyBib29sIGhhc1ZhbGlkUHJvdG90eXBlQ2hhaW4odjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiByZXF1aXJlZEFzY2VuZGFudCwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNoYWlu
KQogewogICAgIHdoaWxlICghY2hhaW4uSXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChjaGFpbiA9
PSBodG1sUHJvdG90eXBlKQorICAgICAgICBpZiAoY2hhaW4gPT0gcmVxdWlyZWRBc2NlbmRhbnQp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKCFjaGFpbi0+SXNPYmplY3Qo
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgLy8gVGhlIGludGVybmFsIGZp
ZWxkIGNvdW50IGluZGljYXRlcyB0aGUgb2JqZWN0IG1pZ2h0IGJlIGEgbmF0aXZlIGJhY2tlZCwg
YnVpbHQtaW4gb2JqZWN0LgotICAgICAgICBpZiAodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dChjaGFpbiktPkludGVybmFsRmllbGRDb3VudCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICBjaGFpbiA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoY2hhaW4pLT5H
ZXRQcm90b3R5cGUoKTsKICAgICB9CiAKQEAgLTkwLDIwICs4NywxNCBAQCBib29sIEN1c3RvbUVs
ZW1lbnRIZWxwZXJzOjppc1ZhbGlkUHJvdG90eXBlUGFyYW1ldGVyKGNvbnN0IFNjcmlwdFZhbHVl
JiBwcm90b3R5cAogICAgIGlmIChwcm90b3R5cGVPYmplY3QtPkhhc093blByb3BlcnR5KHY4U3Ry
aW5nKCJjb25zdHJ1Y3RvciIsIHN0YXRlLT5jb250ZXh0KCktPkdldElzb2xhdGUoKSkpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgVjhQZXJDb250ZXh0RGF0YSogcGVyQ29udGV4dERhdGEg
PSBWOFBlckNvbnRleHREYXRhOjpmcm9tKHN0YXRlLT5jb250ZXh0KCkpOwotICAgIC8vCi0gICAg
Ly8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA0MzYK
LSAgICAvLyAgIGRvY3VtZW50LnJlZ2lzdGVyKCkgc2hvdWxkIGFsbG93IGFyYml0cmFyeSBIVE1M
RWxlbWVudCBzdWJjbGFzc3Nlcy4KLSAgICAvLyAgIEN1cnJlbnRseSBpdCBzdXBwb3J0cyBjdXN0
b20gZWxlbWVudHMgd2hpY2ggYXJlCi0gICAgLy8gICAtIGRpcmVjdCBzdWJjbGFzc2VzIG9mIEhU
TUxFbGVtZW50IG9yCi0gICAgLy8gICAtIHN1YmNsYXNzZXMgb2Ygb3RoZXIgY3VzdG9tIGVsZW1l
bnRzCi0gICAgLy8KKyAgICAvLyBGSVhNRTogbm9uLUhUTUwgc3ViY2xhc3NlcyBzaG91bGQgYmUg
YWxzbyBzdXBwb3J0ZWQ6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTE2OTMKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGh0bWxDb25zdHJ1Y3RvciA9IHY4OjpI
YW5kbGU8djg6Ok9iamVjdD46OkNhc3QocGVyQ29udGV4dERhdGEtPmNvbnN0cnVjdG9yRm9yVHlw
ZSgmVjhIVE1MRWxlbWVudDo6aW5mbykpOwogICAgIGlmIChodG1sQ29uc3RydWN0b3IuSXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBo
dG1sUHJvdG90eXBlID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChodG1sQ29uc3RydWN0
b3ItPkdldCh2OFN0cmluZygicHJvdG90eXBlIiwgc3RhdGUtPmNvbnRleHQoKS0+R2V0SXNvbGF0
ZSgpKSkpOwogICAgIGlmIChodG1sUHJvdG90eXBlLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmICghaGFzTm9CdWlsdGluc0luUHJvdG90eXBlKGh0bWxQcm90b3R5cGUs
IHByb3RvdHlwZU9iamVjdCkpCisgICAgaWYgKCFoYXNWYWxpZFByb3RvdHlwZUNoYWluKGh0bWxQ
cm90b3R5cGUsIHByb3RvdHlwZU9iamVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KQEAgLTEyMCw2ICsxMTEsMzQgQEAgYm9vbCBDdXN0b21FbGVtZW50SGVs
cGVyczo6aXNGZWF0dXJlQWxsb3dlZCh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQog
ICAgIHJldHVybiB0cnVlOwogfQogCitjb25zdCBRdWFsaWZpZWROYW1lKiBDdXN0b21FbGVtZW50
SGVscGVyczo6ZmluZExvY2FsTmFtZShjb25zdCBTY3JpcHRWYWx1ZSYgcHJvdG90eXBlKQorewor
ICAgIGlmIChwcm90b3R5cGUudjhWYWx1ZSgpLklzRW1wdHkoKSB8fCAhcHJvdG90eXBlLnY4VmFs
dWUoKS0+SXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGZpbmRMb2Nh
bE5hbWUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChwcm90b3R5cGUudjhWYWx1ZSgpKSk7
Cit9CisKK1dyYXBwZXJUeXBlSW5mbyogQ3VzdG9tRWxlbWVudEhlbHBlcnM6OmZpbmRXcmFwcGVy
VHlwZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2hhaW4pCit7CisgICAgd2hpbGUgKCFjaGFpbi5J
c0VtcHR5KCkgJiYgY2hhaW4tPklzT2JqZWN0KCkpIHsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBjaGFpbk9iamVjdCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoY2hhaW4p
OworICAgICAgICAvLyBPbmx5IHByb3RvdHlwZSBvYmplY3RzIG9mIG5hdGl2ZS1iYWNrZWQgdHlw
ZXMgaGF2ZSB0aGUgZXh0cmEgaW50ZXJuYWwgZmllbGQgc3RvcmluZyBXcmFwcGVyVHlwZUluZm8u
CisgICAgICAgIGlmICh2OFByb3RvdHlwZUludGVybmFsRmllbGRjb3VudCA9PSBjaGFpbk9iamVj
dC0+SW50ZXJuYWxGaWVsZENvdW50KCkpCisgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxXcmFwcGVyVHlwZUluZm8qPihjaGFpbk9iamVjdC0+R2V0QWxpZ25lZFBvaW50ZXJGcm9t
SW50ZXJuYWxGaWVsZCh2OFByb3RvdHlwZVR5cGVJbmRleCkpOworICAgICAgICBjaGFpbiA9IGNo
YWluT2JqZWN0LT5HZXRQcm90b3R5cGUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKwor
Ly8gVGhpcyBjYW4gcmV0dXJuIG51bGwuIEluIHRoYXQgY2FzZSwgd2Ugc2hvdWxkIHRha2UgdGhl
IGVsZW1lbnQgbmFtZSBhcyBpdHMgbG9jYWwgbmFtZS4KK2NvbnN0IFF1YWxpZmllZE5hbWUqIEN1
c3RvbUVsZW1lbnRIZWxwZXJzOjpmaW5kTG9jYWxOYW1lKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y2hhaW4pCit7CisgICAgV3JhcHBlclR5cGVJbmZvKiB0eXBlID0gQ3VzdG9tRWxlbWVudEhlbHBl
cnM6OmZpbmRXcmFwcGVyVHlwZShjaGFpbik7CisgICAgaWYgKCF0eXBlKQorICAgICAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gZmluZEhUTUxUYWdOYW1lT2ZWOFR5cGUodHlwZSk7Cit9CiAKICNl
bmRpZiAvLyBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvQ3VzdG9tRWxlbWVudEhlbHBlcnMuaAppbmRleCAwOGQxYmNiYzE4OTU2OTVk
ZGFhYmRhZDBmYmYzZjhiOWQzMWFiYmE1Li5mMjkwZjU0ODgwZDA5NzQyNTcyYTlkZDRmODQyOTcw
ZWMwYmI1MTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9DdXN0b21F
bGVtZW50SGVscGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0N1c3RvbUVs
ZW1lbnRIZWxwZXJzLmgKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lm
IEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCiAKIGNsYXNzIEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rv
cjsKK2NsYXNzIFF1YWxpZmllZE5hbWU7CiBjbGFzcyBTY3JpcHRTdGF0ZTsKIAogY2xhc3MgQ3Vz
dG9tRWxlbWVudEhlbHBlcnMgewpAQCAtNDYsOCArNDcsMTEgQEAgcHVibGljOgogICAgIHN0YXRp
YyBib29sIGluaXRpYWxpemVDb25zdHJ1Y3RvcldyYXBwZXIoQ3VzdG9tRWxlbWVudENvbnN0cnVj
dG9yKiwgY29uc3QgU2NyaXB0VmFsdWUmIHByb3RvdHlwZSwgU2NyaXB0U3RhdGUqKTsKICAgICBz
dGF0aWMgYm9vbCBpc1ZhbGlkUHJvdG90eXBlUGFyYW1ldGVyKGNvbnN0IFNjcmlwdFZhbHVlJiwg
U2NyaXB0U3RhdGUqKTsKICAgICBzdGF0aWMgYm9vbCBpc0ZlYXR1cmVBbGxvd2VkKFNjcmlwdFN0
YXRlKik7CisgICAgc3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUqIGZpbmRMb2NhbE5hbWUoY29u
c3QgU2NyaXB0VmFsdWUmIHByb3RvdHlwZSk7CiAKICAgICBzdGF0aWMgYm9vbCBpc0ZlYXR1cmVB
bGxvd2VkKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KTsKKyAgICBzdGF0aWMgV3JhcHBlclR5cGVJ
bmZvKiBmaW5kV3JhcHBlclR5cGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNoYWluKTsKKyAgICBz
dGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSogZmluZExvY2FsTmFtZSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGNoYWluKTsKIH07CiAKICNlbmRpZiAvLyBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDdXN0b21FbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q3VzdG9tRWxlbWVudC5jcHAKaW5kZXgg
ZTViMzRiZWI3ODA2YjUyZjIyZTY0MjdmYmRlMWJhYmM5Mzk1ODhlOS4uZjBhMTVkZDg5ZGUzOGZi
MWNlMWU2Yzk3ZGQwMzAxODIyZGRkODQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhDdXN0b21FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOEN1c3RvbUVsZW1lbnQuY3BwCkBAIC00MiwyOSArNDIsMTAgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1zdGF0aWMgV3JhcHBlclR5cGVJbmZvKiBmaW5kV3JhcHBlclR5cGVPZih2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2hhaW4pCi17Ci0gICAgd2hpbGUgKCFjaGFpbi5Jc0VtcHR5
KCkgJiYgY2hhaW4tPklzT2JqZWN0KCkpIHsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBjaGFpbk9iamVjdCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoY2hhaW4pOwotICAg
ICAgICBpZiAodjhQcm90b3R5cGVJbnRlcm5hbEZpZWxkY291bnQgPT0gY2hhaW5PYmplY3QtPklu
dGVybmFsRmllbGRDb3VudCgpKQotICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
V3JhcHBlclR5cGVJbmZvKj4oY2hhaW5PYmplY3QtPkdldEFsaWduZWRQb2ludGVyRnJvbUludGVy
bmFsRmllbGQodjhQcm90b3R5cGVUeXBlSW5kZXgpKTsKLSAgICAgICAgY2hhaW4gPSBjaGFpbk9i
amVjdC0+R2V0UHJvdG90eXBlKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLXY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gVjhDdXN0b21FbGVtZW50OjpjcmVhdGVXcmFwcGVyKFBhc3NSZWZQ
dHI8RWxlbWVudD4gaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQs
IHY4OjpJc29sYXRlKiBpc29sYXRlKQordjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOEN1c3RvbUVs
ZW1lbnQ6OmNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxFbGVtZW50PiBpbXBsLCB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29u
c3RydWN0b3I+IGNvbnN0cnVjdG9yLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICBBU1NF
UlQoaW1wbCk7Ci0KLSAgICBSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBjb25zdHJ1
Y3RvciA9IEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6Y29uc3RydWN0b3JPZihpbXBsLmdldCgpKTsK
LSAgICBpZiAoIWNvbnN0cnVjdG9yKSB7Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3
cmFwcGVyVmFsdWUgPSBXZWJDb3JlOjp0b1Y4KHRvSFRNTFVua25vd25FbGVtZW50KHRvSFRNTEVs
ZW1lbnQoaW1wbC5nZXQoKSkpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwotICAgICAgICBp
ZiAoIXdyYXBwZXJWYWx1ZS5Jc0VtcHR5KCkgJiYgd3JhcHBlclZhbHVlLT5Jc09iamVjdCgpKQot
ICAgICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qod3JhcHBlclZh
bHVlKTsKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsKLSAgICB9Cisg
ICAgUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gcHJvdGVjdGVkQ29uc3RydWN0b3Io
Y29uc3RydWN0b3IpOwogCiAgICAgLy8gVGhlIGNvbnN0cnVjdG9yIGFuZCByZWdpc3RlcmVkIGxp
ZmVjeWNsZSBjYWxsYmFja3Mgc2hvdWxkIGJlIHZpc2libGUgb25seSBmcm9tIG1haW4gd29ybGQu
CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkbid0IGJlIG5lZWRlZCBvbmNlIGVhY2ggY3VzdG9t
IGVsZW1lbnQgaGFzIGl0cyBvd24gRnVuY3Rpb25UZW1wbGF0ZQpAQCAtNzYsMTIgKzU3LDEyIEBA
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhDdXN0b21FbGVtZW50OjpjcmVhdGVXcmFwcGVyKFBh
c3NSZWZQdHI8RWxlbWVudD4gaW1wbCwKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfQog
Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yVmFsdWUgPSBXZWJDb3JlOjp0
b1Y4KGNvbnN0cnVjdG9yLmdldCgpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvclZhbHVlID0gV2ViQ29yZTo6dG9WOChwcm90
ZWN0ZWRDb25zdHJ1Y3Rvci5nZXQoKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICAgICBp
ZiAoY29uc3RydWN0b3JWYWx1ZS5Jc0VtcHR5KCkgfHwgIWNvbnN0cnVjdG9yVmFsdWUtPklzT2Jq
ZWN0KCkpCiAgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCk7CiAgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBjb25zdHJ1Y3RvcldhcHBlciA9IHY4OjpIYW5kbGU8djg6Ok9i
amVjdD46OkNhc3QoY29uc3RydWN0b3JWYWx1ZSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBwcm90b3R5cGUgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGNvbnN0cnVjdG9yV2Fw
cGVyLT5HZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJwcm90b3R5cGUiKSkpOwotICAgIFdyYXBw
ZXJUeXBlSW5mbyogdHlwZUluZm8gPSBmaW5kV3JhcHBlclR5cGVPZihwcm90b3R5cGUpOworICAg
IFdyYXBwZXJUeXBlSW5mbyogdHlwZUluZm8gPSBDdXN0b21FbGVtZW50SGVscGVyczo6ZmluZFdy
YXBwZXJUeXBlKHByb3RvdHlwZSk7CiAgICAgaWYgKCF0eXBlSW5mbykKICAgICAgICAgcmV0dXJu
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhDdXN0b21FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEN1c3RvbUVsZW1lbnQuaAppbmRleCA3MDBkOGI1MTk5YWI0MmI2ZGNhZmI5ODA4MTQ0NzY2
ZGE5NjZkMDM2Li5mNzc3N2M1ZGE0MjliYTBmZGZiNWNmMDZiOWFiYTk4MGJhNGM3MTNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEN1c3RvbUVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEN1c3RvbUVsZW1lbnQuaApAQCAtMzEsNiAr
MzEsOSBAQAogI2lmbmRlZiBWOEN1c3RvbUVsZW1lbnRfaAogI2RlZmluZSBWOEN1c3RvbUVsZW1l
bnRfaAogCisjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAi
Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKICNpbmNsdWRlICJWOEhU
TUxFbGVtZW50LmgiCkBAIC00MCw0NSArNDMsMzEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRWxlbWVudDsKK2NsYXNzIEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvcjsKIAogI2lmIEVO
QUJMRShDVVNUT01fRUxFTUVOVFMpCiAKIGNsYXNzIFY4Q3VzdG9tRWxlbWVudCB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KEVsZW1lbnQqLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4o
KSwgdjg6Oklzb2xhdGUqID0gMCk7Ci0gICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcChFbGVtZW50Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4
OjpJc29sYXRlKik7CisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChFbGVt
ZW50Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIFBhc3NSZWZQdHI8
Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiwgdjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGNvbnN0cnVjdG9yT2YoRWxlbWVudCop
OwogCiBwcml2YXRlOgotICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZVdy
YXBwZXIoUGFzc1JlZlB0cjxFbGVtZW50Piwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklz
b2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGVXcmFwcGVy
KFBhc3NSZWZQdHI8RWxlbWVudD4sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFBhc3NSZWZQdHI8
Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiwgdjg6Oklzb2xhdGUqKTsKIH07CiAKLWlubGluZSB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b21FbGVtZW50Ojp0b1Y4KEVsZW1lbnQqIGltcGws
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNv
bGF0ZSkKLXsKLSAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQotICAgICAgICByZXR1cm4gdjhOdWxs
V2l0aENoZWNrKGlzb2xhdGUpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9
IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlcihpbXBsLCBpc29sYXRlKTsKLSAgICBpZiAoIXdyYXBw
ZXIuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gd3JhcHBlcjsKLSAgICByZXR1cm4gVjhDdXN0
b21FbGVtZW50Ojp3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Ci19Ci0KLWlu
bGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4Q3VzdG9tRWxlbWVudDo6d3JhcChFbGVtZW50
KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUpCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOEN1c3RvbUVsZW1l
bnQ6OndyYXAoRWxlbWVudCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNv
bnRleHQsIFBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBjb25zdHJ1Y3Rvciwg
djg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7CiAgICAgQVNTRVJUKGltcGwpOwogICAgIEFTU0VSVChE
T01EYXRhU3RvcmU6OmdldFdyYXBwZXIoaW1wbCwgaXNvbGF0ZSkuSXNFbXB0eSgpKTsKLSAgICBy
ZXR1cm4gVjhDdXN0b21FbGVtZW50OjpjcmVhdGVXcmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4
dCwgaXNvbGF0ZSk7CisgICAgcmV0dXJuIFY4Q3VzdG9tRWxlbWVudDo6Y3JlYXRlV3JhcHBlcihp
bXBsLCBjcmVhdGlvbkNvbnRleHQsIGNvbnN0cnVjdG9yLCBpc29sYXRlKTsKIH0KIAotI2Vsc2Ug
Ly8gRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKLQotY2xhc3MgVjhDdXN0b21FbGVtZW50IHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKEVsZW1lbnQqLCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4oKSwgdjg6Oklzb2xhdGUqID0gMCk7Ci19OwotCi1pbmxpbmUgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBIVE1MQ3VzdG9tRWxlbWVudDo6d3JhcChFbGVtZW50KiBpbXBsLCB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCitpbmxp
bmUgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IFY4Q3VzdG9tRWxlbWVudDo6
Y29uc3RydWN0b3JPZihFbGVtZW50KiBlbGVtZW50KQogewotICAgIHJldHVybiB3cmFwKHRvSFRN
TFVua25vd25FbGVtZW50KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgIGlm
IChDdXN0b21FbGVtZW50UmVnaXN0cnkqIHJlZ2lzdHJ5ID0gZWxlbWVudC0+ZG9jdW1lbnQoKS0+
cmVnaXN0cnkoKSkKKyAgICAgICAgcmV0dXJuIHJlZ2lzdHJ5LT5maW5kRm9yKGVsZW1lbnQpOwor
ICAgIHJldHVybiAwOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dyYXBwZXJUeXBlSW5mby5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmgKaW5kZXggNDU2ZTAw
MjAxOWZmYWI1NDJmZGViNWZjYWU3Njg4Zjc5NTBhYTM1Ni4uOTVjZTc3YWYxNTA5YzlkZDFkMTRl
MTkwZTIxNzU0MGI5OWQ1N2NiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvV3JhcHBlclR5cGVJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3Jh
cHBlclR5cGVJbmZvLmgKQEAgLTE3OCw2ICsxNzgsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBXcmFwcGVyQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0ge3Y4RE9NTm9kZUNs
YXNzSWQsIGxpZmV0aW1lfTsKICAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiAgICAgfQor
CisgICAgdGVtcGxhdGU8Y2xhc3MgRWxlbWVudFR5cGU+CisgICAgY2xhc3MgV3JhcHBlclR5cGVU
cmFpdHMgeworICAgICAgICAvLyBzcGVjaWFsaXplZCBjbGFzc2VzIGhhdmUgdGhpZXIgb3duIGZ1
bmN0aW9ucywgd2hpY2ggYXJlIGdlbmVyYXRlZCBieSBiaW5kaW5nIGdlbmVyYXRvci4KKyAgICB9
OwogfQogCiAjZW5kaWYgLy8gV3JhcHBlclR5cGVJbmZvX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvckN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21FbGVtZW50
Q29uc3RydWN0b3JDdXN0b20uY3BwCmluZGV4IDhlZDc5Yjg1ZTA2ODViZTEwNDA5Yzc1YzUzYTUw
MjM4ZWU4MmZjNjkuLjU1ZTM4Y2U5OTVmOTNmZmU2YTUyZDJlY2VmNGRlZjA5NjRmOTU2MmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUVsZW1l
bnRDb25zdHJ1Y3RvckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yQ3VzdG9tLmNwcApAQCAtNDgsNyArNDgs
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b21FbGVtZW50Q29uc3RydWN0b3I6OmNh
bGxBc0Z1bmN0aW9uQ2FsbGJhY2soY29uc3QgdgogICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50
ID0gaW1wbC0+Y3JlYXRlRWxlbWVudCgpOwogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0
dXJuIHY4VW5kZWZpbmVkKCk7Ci0gICAgcmV0dXJuIFY4Q3VzdG9tRWxlbWVudDo6dG9WOChlbGVt
ZW50LmdldCgpLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJu
IFY4Q3VzdG9tRWxlbWVudDo6d3JhcChlbGVtZW50LmdldCgpLCBhcmdzLkhvbGRlcigpLCBpbXBs
LCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50Q29uc3RydWN0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYzk3
NWQ2YzUzMjJmNDVmMjY1YWIyZDdiN2JjOTUzMjE0Y2UxMDE2OC4uODQ0OGUyNDNiZDUxOTFhYjNh
ODg2ZTQ5ZDYwODg4YTM4YjAyYmNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1
c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3Rv
bUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTM3LDIxICszNywyNSBAQAogI2luY2x1ZGUgIkN1
c3RvbUVsZW1lbnRIZWxwZXJzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxDdXN0b21FbGVt
ZW50Q29uc3RydWN0b3I+IEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFNjcmlwdFN0
YXRlKiBzdGF0ZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBjb25zdCBTY3JpcHRWYWx1ZSYgcHJvdG90eXBlKQorUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50
Q29uc3RydWN0b3I+IEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFNjcmlwdFN0YXRl
KiBzdGF0ZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBRdWFsaWZpZWROYW1lJiBsb2NhbE5hbWUsIGNvbnN0IFNjcmlwdFZhbHVlJiBwcm90b3R5
cGUpCiB7Ci0gICAgUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY3JlYXRlZCA9IGFk
b3B0UmVmKG5ldyBDdXN0b21FbGVtZW50Q29uc3RydWN0b3IoZG9jdW1lbnQsIG5hbWUpKTsKKyAg
ICBBU1NFUlQoQ3VzdG9tRWxlbWVudEhlbHBlcnM6OmlzVmFsaWRQcm90b3R5cGVQYXJhbWV0ZXIo
cHJvdG90eXBlLCBzdGF0ZSkpOworICAgIEFTU0VSVChsb2NhbE5hbWUgPT0gbmFtZSB8fCBsb2Nh
bE5hbWUgPT0gKkN1c3RvbUVsZW1lbnRIZWxwZXJzOjpmaW5kTG9jYWxOYW1lKHByb3RvdHlwZSkp
OworICAgIFJlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGNyZWF0ZWQgPSBhZG9wdFJl
ZihuZXcgQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yKGRvY3VtZW50LCBuYW1lLCBsb2NhbE5hbWUp
KTsKICAgICBpZiAoIUN1c3RvbUVsZW1lbnRIZWxwZXJzOjppbml0aWFsaXplQ29uc3RydWN0b3JX
cmFwcGVyKGNyZWF0ZWQuZ2V0KCksIHByb3RvdHlwZSwgc3RhdGUpKQogICAgICAgICByZXR1cm4g
MDsKICAgICByZXR1cm4gY3JlYXRlZC5yZWxlYXNlKCk7CiB9CiAKLUN1c3RvbUVsZW1lbnRDb25z
dHJ1Y3Rvcjo6Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yKERvY3VtZW50KiBkb2N1bWVudCwgY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKK0N1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcjo6Q3VzdG9t
RWxlbWVudENvbnN0cnVjdG9yKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbG9jYWxOYW1lKQogICAgIDogQ29udGV4dERl
c3RydWN0aW9uT2JzZXJ2ZXIoZG9jdW1lbnQpCiAgICAgLCBtX25hbWUobmFtZSkKKyAgICAsIG1f
bG9jYWxOYW1lKGxvY2FsTmFtZSkKIHsKIH0KIApAQCAtNjMsOSArNjcsMTggQEAgUGFzc1JlZlB0
cjxFbGVtZW50PiBDdXN0b21FbGVtZW50Q29uc3RydWN0b3I6OmNyZWF0ZUVsZW1lbnQoKSBjb25z
dAogewogICAgIGlmICghZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKG1f
bG9jYWxOYW1lICE9IG1fbmFtZSkKKyAgICAgICAgcmV0dXJuIG1hcmtBc0V4dGVuZGVkQ3VzdG9t
RWxlbWVudChkb2N1bWVudCgpLT5jcmVhdGVFbGVtZW50KG1fbG9jYWxOYW1lLCBkb2N1bWVudCgp
KSwgbV9uYW1lLmxvY2FsTmFtZSgpKTsKICAgICByZXR1cm4gSFRNTEVsZW1lbnQ6OmNyZWF0ZSht
X25hbWUsIGRvY3VtZW50KCkpOwogfQogCitQYXNzUmVmUHRyPEVsZW1lbnQ+IG1hcmtBc0V4dGVu
ZGVkQ3VzdG9tRWxlbWVudChQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQsIGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZUV4dGVuc2lvbikKK3sKKyAgICBpZiAoIXR5cGVFeHRlbnNpb24uaXNFbXB0
eSgpKQorICAgICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjppc0F0dHIsIHR5
cGVFeHRlbnNpb24pOworICAgIHJldHVybiBlbGVtZW50OworfQorCiB9CiAKICNlbmRpZiAvLyBF
TkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1
c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1l
bnRDb25zdHJ1Y3Rvci5oCmluZGV4IDg0NGUwZThiM2Q5OWYyMjlmY2MyZjIzMzRkNDAzNTI1NGI1
NjQwODMuLmU1MGUwZGM4YTliMWI3NTQzZWRlNTM1OWI3NjcyNGE3NjZmZjNiM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50Q29uc3RydWN0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmgKQEAgLTQ4LDIxICs0
OCwyNSBAQCBjbGFzcyBFbGVtZW50OwogY2xhc3MgU2NyaXB0U3RhdGU7CiBjbGFzcyBTY3JpcHRW
YWx1ZTsKIAorUGFzc1JlZlB0cjxFbGVtZW50PiBtYXJrQXNFeHRlbmRlZEN1c3RvbUVsZW1lbnQo
UGFzc1JlZlB0cjxFbGVtZW50PiwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlRXh0ZW5zaW9uKTsK
KwogY2xhc3MgQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8Q3Vz
dG9tRWxlbWVudENvbnN0cnVjdG9yPiAsIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZl
ciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVj
dG9yPiBjcmVhdGUoU2NyaXB0U3RhdGUqLCBEb2N1bWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBTY3JpcHRWYWx1ZSYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1c3RvbUVsZW1l
bnRDb25zdHJ1Y3Rvcj4gY3JlYXRlKFNjcmlwdFN0YXRlKiwgRG9jdW1lbnQqLCBjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbG9jYWxOYW1lLCBjb25zdCBTY3JpcHRW
YWx1ZSYpOwogCiAgICAgdmlydHVhbCB+Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yKCk7CiAKICAg
ICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxEb2N1bWVu
dCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7IH0KICAgICBjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbG9jYWxOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbE5hbWU7IH0KIAogICAgIFBhc3NS
ZWZQdHI8RWxlbWVudD4gY3JlYXRlRWxlbWVudCgpIGNvbnN0OwotICAgIAorCiBwcml2YXRlOgot
ICAgIEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvcihEb2N1bWVudCosIGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKKyAgICBDdXN0b21FbGVtZW50Q29uc3RydWN0b3IoRG9jdW1lbnQqLCBjb25zdCBRdWFs
aWZpZWROYW1lJiBlbGVtZW50TmFtZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbG9jYWxOYW1lKTsK
IAogICAgIFF1YWxpZmllZE5hbWUgbV9uYW1lOworICAgIFF1YWxpZmllZE5hbWUgbV9sb2NhbE5h
bWU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVu
dFJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnku
Y3BwCmluZGV4IGQ4YjBjZDkwNTUwNjVmMzc4ZGE2NzgxYWViMjAxN2QzYjNhN2E2ZmEuLjdiZjI2
NjM3M2JjZDIxNDViOWYzYjA3ZmMzYzY4NjU3NDFkMmYwNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCisjaW5jbHVkZSAiSFRNTFVua25vd25FbGVtZW50LmgiCiAjaW5jbHVkZSAiUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAKQEAgLTYyLDE4
ICs2MywxNSBAQCBDdXN0b21FbGVtZW50UmVnaXN0cnk6On5DdXN0b21FbGVtZW50UmVnaXN0cnko
KQogewogfQogCi1QYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gQ3VzdG9tRWxl
bWVudFJlZ2lzdHJ5Ojpjb25zdHJ1Y3Rvck9mKEVsZW1lbnQqIGVsZW1lbnQpCitzdGF0aWMgaW5s
aW5lIGJvb2wgbmFtZUluY2x1ZGVzSHlwaGVuKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsK
LSAgICBSZWZQdHI8Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5PiBzZWxmID0gZWxlbWVudC0+ZG9jdW1l
bnQoKS0+cmVnaXN0cnkoKTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiAwOwotICAg
IHJldHVybiBzZWxmLT5maW5kKGVsZW1lbnQtPnRhZ1FOYW1lKCkpOworICAgIHNpemVfdCBoeXBo
ZW5Qb3NpdGlvbiA9IG5hbWUuZmluZCgnLScpOworICAgIHJldHVybiAoaHlwaGVuUG9zaXRpb24g
IT0gbm90Rm91bmQpOwogfQogCiBib29sIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6aXNWYWxpZE5h
bWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogewotICAgIHNpemVfdCBoeXBoZW5Qb3NpdGlv
biA9IG5hbWUuZmluZCgnLScpOwotICAgIGlmIChoeXBoZW5Qb3NpdGlvbiA9PSBub3RGb3VuZCkK
KyAgICBpZiAoIW5hbWVJbmNsdWRlc0h5cGhlbihuYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChWZWN0b3I8QXRvbWljU3RyaW5nPiwgcmVzZXJ2
ZWROYW1lcywgKCkpOwpAQCAtMTEyLDExICsxMTAsNiBAQCBQYXNzUmVmUHRyPEN1c3RvbUVsZW1l
bnRDb25zdHJ1Y3Rvcj4gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpyZWdpc3RlckVsZW1lbnQoU2Ny
aQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgICAgIAotICAgIGlmIChmaW5kKG5ld05h
bWUpKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgIHJldHVybiAw
OwotICAgIH0KLQogICAgIFNjcmlwdFZhbHVlIHByb3RvdHlwZVZhbHVlOwogICAgIGlmICghb3B0
aW9ucy5nZXQoInByb3RvdHlwZSIsIHByb3RvdHlwZVZhbHVlKSkgewogICAgICAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHRoZSBkZWZhdWx0IHZhbHVlIGhhbmRsaW5nLgpAQCAtMTMyLDM2ICsxMjUs
ODQgQEAgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IEN1c3RvbUVsZW1lbnRS
ZWdpc3RyeTo6cmVnaXN0ZXJFbGVtZW50KFNjcmkKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRF
X0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorCisgICAgaWYgKG1fbmFtZXMuY29udGFp
bnMobmV3TmFtZSkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorCisgICAgY29uc3QgUXVhbGlmaWVkTmFtZSogbG9jYWxOYW1lRm91
bmQgPSBDdXN0b21FbGVtZW50SGVscGVyczo6ZmluZExvY2FsTmFtZShwcm90b3R5cGVWYWx1ZSk7
CisgICAgUXVhbGlmaWVkTmFtZSBsb2NhbE5hbWVUb1VzZSA9IGxvY2FsTmFtZUZvdW5kID8gKmxv
Y2FsTmFtZUZvdW5kIDogbmV3TmFtZTsKKyAgICBpZiAoZmluZChuZXdOYW1lLCBsb2NhbE5hbWVU
b1VzZSkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQogICAgIAotICAgIC8vIEFuIHNjcmlwdCBleGVjdXRpb24gY291bGQgaGFwcGVu
IGluIGlzVmFsaWRQcm90b3R5cGVQYXJhbWV0ZXIoKSwgd2hpY2gga2lsbHMgdGhlIGRvY3VtZW50
LgorICAgIC8vIEEgc2NyaXB0IGV4ZWN1dGlvbiBjb3VsZCBoYXBwZW4gaW4gaXNWYWxpZFByb3Rv
dHlwZVBhcmFtZXRlcigpLCB3aGljaCBraWxscyB0aGUgZG9jdW1lbnQuCiAgICAgaWYgKCFkb2N1
bWVudCgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KIAotICAgIFJlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGNvbnN0
cnVjdG9yID0gQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjpjcmVhdGUoc3RhdGUsIGRvY3VtZW50
KCksIG5ld05hbWUsIHByb3RvdHlwZVZhbHVlKTsKKyAgICBSZWZQdHI8Q3VzdG9tRWxlbWVudENv
bnN0cnVjdG9yPiBjb25zdHJ1Y3RvciA9IEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRl
KHN0YXRlLCBkb2N1bWVudCgpLCBuZXdOYW1lLCBsb2NhbE5hbWVUb1VzZSwgcHJvdG90eXBlVmFs
dWUpOwogICAgIGlmICghY29uc3RydWN0b3IpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRF
X0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgICAgICAKLSAgICBtX2NvbnN0cnVj
dG9ycy5hZGQoY29uc3RydWN0b3ItPm5hbWUoKS5pbXBsKCksIGNvbnN0cnVjdG9yKTsKKyAgICBt
X2NvbnN0cnVjdG9ycy5hZGQoc3RkOjptYWtlX3BhaXIoY29uc3RydWN0b3ItPm5hbWUoKSwgY29u
c3RydWN0b3ItPmxvY2FsTmFtZSgpKSwgY29uc3RydWN0b3IpOworICAgIG1fbmFtZXMuYWRkKGNv
bnN0cnVjdG9yLT5uYW1lKCkpOworCiAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogfQogCi1QYXNz
UmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Ojpm
aW5kKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CitQYXNzUmVmUHRyPEN1c3RvbUVs
ZW1lbnRDb25zdHJ1Y3Rvcj4gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpmaW5kRm9yKEVsZW1lbnQq
IGVsZW1lbnQpIGNvbnN0Cit7CisgICAgQVNTRVJUKGVsZW1lbnQtPmRvY3VtZW50KCktPnJlZ2lz
dHJ5KCkgPT0gdGhpcyk7CisKKyAgICAvLyBNb3N0IGVsZW1lbnRzIGNhbiBiZSByZWplY3RlZCB0
aGlzIGZhc3Qgc2NyZWVuaW5nLgorICAgIGlmICghbmFtZUluY2x1ZGVzSHlwaGVuKGVsZW1lbnQt
PnRhZ05hbWUoKSkgJiYgIWVsZW1lbnQtPmhhc0F0dHJpYnV0ZShIVE1MTmFtZXM6OmlzQXR0cikp
CisgICAgICAgIHJldHVybiAwOworCisgICAgUXVhbGlmaWVkTmFtZSBpZFZhbHVlKG51bGxBdG9t
LCBlbGVtZW50LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjppc0F0dHIpLCBIVE1MTmFtZXM6Onho
dG1sTmFtZXNwYWNlVVJJKTsKKyAgICByZXR1cm4gZmluZChpZFZhbHVlLCBlbGVtZW50LT50YWdR
TmFtZSgpKTsKK30KKworUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IEN1c3Rv
bUVsZW1lbnRSZWdpc3RyeTo6ZmluZChjb25zdCBRdWFsaWZpZWROYW1lJiBlbGVtZW50TmFtZSwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbG9jYWxOYW1lKSBjb25zdAogewotICAgIENvbnN0cnVjdG9y
TWFwOjpjb25zdF9pdGVyYXRvciBmb3VuZCA9IG1fY29uc3RydWN0b3JzLmZpbmQobmFtZS5pbXBs
KCkpOwotICAgIHJldHVybiAoZm91bmQgIT0gbV9jb25zdHJ1Y3RvcnMuZW5kKCkpID8gZm91bmQt
PnZhbHVlIDogMDsKKyAgICBDb25zdHJ1Y3Rvck1hcDo6Y29uc3RfaXRlcmF0b3IgZm91bmQgPSBt
X2NvbnN0cnVjdG9ycy5lbmQoKTsKKyAgICBpZiAoIWVsZW1lbnROYW1lLmxvY2FsTmFtZSgpLmlz
RW1wdHkoKSkKKyAgICAgICAgZm91bmQgPSBtX2NvbnN0cnVjdG9ycy5maW5kKHN0ZDo6bWFrZV9w
YWlyKGVsZW1lbnROYW1lLCBsb2NhbE5hbWUpKTsKKyAgICBpZiAoZm91bmQgPT0gbV9jb25zdHJ1
Y3RvcnMuZW5kKCkpCisgICAgICAgIGZvdW5kID0gbV9jb25zdHJ1Y3RvcnMuZmluZChzdGQ6Om1h
a2VfcGFpcihsb2NhbE5hbWUsIGxvY2FsTmFtZSkpOworICAgIGlmIChmb3VuZCA9PSBtX2NvbnN0
cnVjdG9ycy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGZvdW5kLT52YWx1
ZTsKIH0KIAotUGFzc1JlZlB0cjxFbGVtZW50PiBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmNyZWF0
ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKK1Bhc3NSZWZQdHI8RWxl
bWVudD4gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpjcmVhdGVFbGVtZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlRXh0ZW5zaW9uKSBjb25zdAogewotICAgIGlmIChSZWZQdHI8Q3Vz
dG9tRWxlbWVudENvbnN0cnVjdG9yPiBmb3VuZCA9IGZpbmQobmFtZSkpCi0gICAgICAgIHJldHVy
biBmb3VuZC0+Y3JlYXRlRWxlbWVudCgpOworICAgIGlmIChSZWZQdHI8Q3VzdG9tRWxlbWVudENv
bnN0cnVjdG9yPiBmb3VuZAorICAgICAgICA9IGZpbmQoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwg
dHlwZUV4dGVuc2lvbiwgbmFtZXNwYWNlVVJJKSwgUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbG9j
YWxOYW1lLCBuYW1lc3BhY2VVUkkpKSkgeworICAgICAgICBSZWZQdHI8RWxlbWVudD4gY3JlYXRl
ZCA9IGZvdW5kLT5jcmVhdGVFbGVtZW50KCk7CisgICAgICAgIGlmICghdHlwZUV4dGVuc2lvbi5p
c0VtcHR5KCkgJiYgbG9jYWxOYW1lICE9IHR5cGVFeHRlbnNpb24pCisgICAgICAgICAgICByZXR1
cm4gbWFya0FzRXh0ZW5kZWRDdXN0b21FbGVtZW50KGNyZWF0ZWQsIHR5cGVFeHRlbnNpb24pOwor
ICAgICAgICByZXR1cm4gY3JlYXRlZC5yZWxlYXNlKCk7CisgICAgfQorCiAgICAgcmV0dXJuIDA7
CiB9CiAKK1Bhc3NSZWZQdHI8RWxlbWVudD4gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpjcmVhdGVD
dXN0b21PclVua25vd25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlRXh0ZW5zaW9uLCBib29sKQorewor
ICAgIGlmIChkb2N1bWVudC0+cmVnaXN0cnkoKSkgeworICAgICAgICBpZiAoUGFzc1JlZlB0cjxF
bGVtZW50PiBjcmVhdGVkID0gZG9jdW1lbnQtPnJlZ2lzdHJ5KCktPmNyZWF0ZUVsZW1lbnQobmFt
ZS5uYW1lc3BhY2VVUkkoKSwgbmFtZS5sb2NhbE5hbWUoKSwgdHlwZUV4dGVuc2lvbikpCisgICAg
ICAgICAgICByZXR1cm4gY3JlYXRlZDsKKyAgICB9CisKKyAgICByZXR1cm4gbWFya0FzRXh0ZW5k
ZWRDdXN0b21FbGVtZW50KEhUTUxVbmtub3duRWxlbWVudDo6Y3JlYXRlKFF1YWxpZmllZE5hbWUo
bnVsbEF0b20sIG5hbWUubG9jYWxOYW1lKCksIG5hbWUubmFtZXNwYWNlVVJJKCkpLCBkb2N1bWVu
dCksIHR5cGVFeHRlbnNpb24pOworfQorCiBpbmxpbmUgRG9jdW1lbnQqIEN1c3RvbUVsZW1lbnRS
ZWdpc3RyeTo6ZG9jdW1lbnQoKSBjb25zdAogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxEb2N1
bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3Vz
dG9tRWxlbWVudFJlZ2lzdHJ5LmgKaW5kZXggMjA4MmNkNzYyMmNmNjJlYWJlMTM2ZDZhZmIyN2E0
ZGFhNjJlNzI3YS4uZDg3MDk1ZmQzOThmZjg2M2YwYzk3OTI5YmY4ZDdhNmRiMDYzYTg4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaApAQCAtMzksNiArMzks
NyBAQAogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUu
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTU5LDE4ICs2MCwyMiBAQCBwdWJsaWM6CiAgICAg
fkN1c3RvbUVsZW1lbnRSZWdpc3RyeSgpOwogCiAgICAgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50
Q29uc3RydWN0b3I+IHJlZ2lzdGVyRWxlbWVudChXZWJDb3JlOjpTY3JpcHRTdGF0ZSosIGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0aW9u
Q29kZSYpOwotICAgIFBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBmaW5kKGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8Q3Vz
dG9tRWxlbWVudENvbnN0cnVjdG9yPiBmaW5kRm9yKEVsZW1lbnQqKSBjb25zdDsKKyAgICBQYXNz
UmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gZmluZChjb25zdCBRdWFsaWZpZWROYW1l
JiBlbGVtZW50TmFtZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbG9jYWxOYW1lKSBjb25zdDsKKyAg
ICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGVFeHRlbnNpb24pIGNvbnN0OworCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkg
Y29uc3Q7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+
IGNvbnN0cnVjdG9yT2YoRWxlbWVudCopOwotICAgIAorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEVs
ZW1lbnQ+IGNyZWF0ZUN1c3RvbU9yVW5rbm93bkVsZW1lbnQoRG9jdW1lbnQqLCBjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVFeHRlbnNpb24sIGJv
b2wgY3JlYXRlZEJ5UGFyc2VyKTsKKwogcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlk
TmFtZShjb25zdCBBdG9taWNTdHJpbmcmKTsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxRdWFsaWZp
ZWROYW1lOjpRdWFsaWZpZWROYW1lSW1wbCosIFJlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0
b3I+ID5Db25zdHJ1Y3Rvck1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8c3RkOjpwYWlyPFF1YWxp
ZmllZE5hbWUsIFF1YWxpZmllZE5hbWU+LCBSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9y
PiA+IENvbnN0cnVjdG9yTWFwOworICAgIHR5cGVkZWYgSGFzaFNldDxRdWFsaWZpZWROYW1lPiBO
YW1lU2V0OwogCiAgICAgQ29uc3RydWN0b3JNYXAgbV9jb25zdHJ1Y3RvcnM7CisgICAgTmFtZVNl
dCBtX25hbWVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKaW5kZXggMjZmMWNkYmRkODE4OTMyOWQ4MGI0MTNkNDllYzc5Njk2MjA3NjQwZi4uNzgy
Mjk2M2Q0Yjc0NmMyYTMyODA5Mjk5NjY1ZWM3YTRlNDdjZjY2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCkBAIC04MzMsNiArODMzLDI5IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gRG9jdW1lbnQ6
OmNyZWF0ZUVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25DCiB9CiAK
ICNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorUGFzc1JlZlB0cjxFbGVtZW50PiBEb2N1bWVu
dDo6Y3JlYXRlRWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlRXh0ZW5zaW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAo
bV9yZWdpc3RyeSkgeworICAgICAgICBpZiAoUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVkID0g
bV9yZWdpc3RyeS0+Y3JlYXRlRWxlbWVudCh4aHRtbE5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lLCB0
eXBlRXh0ZW5zaW9uKSkKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVkOworICAgIH0KKworICAg
IHJldHVybiBtYXJrQXNFeHRlbmRlZEN1c3RvbUVsZW1lbnQoY3JlYXRlRWxlbWVudChsb2NhbE5h
bWUsIGVjKSwgdHlwZUV4dGVuc2lvbik7IC8vICBGSVhNRTogdGFrZSBjYXJlIG9mIEBpcworfQor
CitQYXNzUmVmUHRyPEVsZW1lbnQ+IERvY3VtZW50OjpjcmVhdGVFbGVtZW50TlMoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlRXh0ZW5zaW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAg
ICBTdHJpbmcgcHJlZml4LCBsb2NhbE5hbWU7CisgICAgaWYgKCFwYXJzZVF1YWxpZmllZE5hbWUo
cXVhbGlmaWVkTmFtZSwgcHJlZml4LCBsb2NhbE5hbWUsIGVjKSkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgaWYgKG1fcmVnaXN0cnkpIHsKKyAgICAgICAgaWYgKFBhc3NSZWZQdHI8RWxlbWVudD4g
Y3JlYXRlZCA9IG1fcmVnaXN0cnktPmNyZWF0ZUVsZW1lbnQobmFtZXNwYWNlVVJJLCBsb2NhbE5h
bWUsIHR5cGVFeHRlbnNpb24pKQorICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZWQ7CisgICAgfQor
CisgICAgcmV0dXJuIG1hcmtBc0V4dGVuZGVkQ3VzdG9tRWxlbWVudChjcmVhdGVFbGVtZW50TlMo
bmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lLCBlYyksIHR5cGVFeHRlbnNpb24pOworfQorCiBQ
YXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gRG9jdW1lbnQ6OnJlZ2lzdGVyRWxl
bWVudChXZWJDb3JlOjpTY3JpcHRTdGF0ZSogc3RhdGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgcmV0dXJuIHJlZ2lzdGVyRWxlbWVudChzdGF0
ZSwgbmFtZSwgRGljdGlvbmFyeSgpLCBlYyk7CkBAIC04NDUsMTQgKzg2OCwxOSBAQCBQYXNzUmVm
UHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gRG9jdW1lbnQ6OnJlZ2lzdGVyRWxlbWVudChX
ZWJDb3JlOjpTY3JpcHRTdAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoIW1f
cmVnaXN0cnkpCi0gICAgICAgIG1fcmVnaXN0cnkgPSBhZG9wdFJlZihuZXcgQ3VzdG9tRWxlbWVu
dFJlZ2lzdHJ5KHRoaXMpKTsKLSAgICByZXR1cm4gbV9yZWdpc3RyeS0+cmVnaXN0ZXJFbGVtZW50
KHN0YXRlLCBuYW1lLCBvcHRpb25zLCBlYyk7CisgICAgcmV0dXJuIGVuc3VyZVJlZ2lzdHJ5KCkt
PnJlZ2lzdGVyRWxlbWVudChzdGF0ZSwgbmFtZSwgb3B0aW9ucywgZWMpOwogfQogCi1QYXNzUmVm
UHRyPEN1c3RvbUVsZW1lbnRSZWdpc3RyeT4gRG9jdW1lbnQ6OnJlZ2lzdHJ5KCkgY29uc3QKK0N1
c3RvbUVsZW1lbnRSZWdpc3RyeSogRG9jdW1lbnQ6OnJlZ2lzdHJ5KCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9yZWdpc3RyeTsKKyAgICByZXR1cm4gbV9yZWdpc3RyeS5nZXQoKTsKK30KKworQ3Vz
dG9tRWxlbWVudFJlZ2lzdHJ5KiBEb2N1bWVudDo6ZW5zdXJlUmVnaXN0cnkoKQoreworICAgIGlm
ICghbV9yZWdpc3RyeSkKKyAgICAgICAgbV9yZWdpc3RyeSA9IGFkb3B0UmVmKG5ldyBDdXN0b21F
bGVtZW50UmVnaXN0cnkodGhpcykpOworICAgIHJldHVybiBtX3JlZ2lzdHJ5LmdldCgpOwogfQog
I2VuZGlmIC8vIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5k
ZXggMWVmMDMzODUwMzdlODMwYjgwNWFkODA0MGJjYzY4YTMwNzlmYTBiZi4uM2NhMjRhNjY0YTE5
ODkyZmMyYmYxZjJiZmU5MjE5NjdkYWI3ZDVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEx
NDYsOSArMTE0NiwxMiBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDVVNUT01fRUxF
TUVOVFMpCisgICAgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVFeHRlbnNpb24sIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnROUyhj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBxdWFsaWZpZWRO
YW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVFeHRlbnNpb24sIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgICBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gcmVnaXN0ZXJFbGVtZW50
KFdlYkNvcmU6OlNjcmlwdFN0YXRlKiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBFeGNlcHRp
b25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IHJlZ2lz
dGVyRWxlbWVudChXZWJDb3JlOjpTY3JpcHRTdGF0ZSosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NS
ZWZQdHI8Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5PiByZWdpc3RyeSgpIGNvbnN0OworICAgIEN1c3Rv
bUVsZW1lbnRSZWdpc3RyeSogcmVnaXN0cnkoKSBjb25zdDsKKyAgICBDdXN0b21FbGVtZW50UmVn
aXN0cnkqIGVuc3VyZVJlZ2lzdHJ5KCk7CiAjZW5kaWYKIAogICAgIHZvaWQgYWRqdXN0RmxvYXRR
dWFkc0ZvclNjcm9sbEFuZEFic29sdXRlWm9vbUFuZEZyYW1lU2NhbGUoVmVjdG9yPEZsb2F0UXVh
ZD4mLCBSZW5kZXJPYmplY3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCmluZGV4IDBlMDZmYzdm
MmQ4MTkxNmY4NTI1NTAwOGIyNzliY2M1NWNkM2MwOGUuLjdlMjc4OGRlYjBlY2M0ZWYyZjY3ZjBh
Njk4NDczOTUwNmZmMWE4MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbApAQCAtMzU5LDYgKzM1
OSw5IEBACiAjaWYgZGVmaW5lZChFTkFCTEVfQ1VTVE9NX0VMRU1FTlRTKSAmJiBFTkFCTEVfQ1VT
VE9NX0VMRU1FTlRTCiAgICAgW1Y4RW5hYmxlZEF0UnVudGltZT1jdXN0b21ET01FbGVtZW50cywg
Q29uZGl0aW9uYWw9Q1VTVE9NX0VMRU1FTlRTLCBJbXBsZW1lbnRlZEFzPXJlZ2lzdGVyRWxlbWVu
dCwgQ2FsbFdpdGg9U2NyaXB0U3RhdGVdCiAgICAgQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yIHdl
YmtpdFJlZ2lzdGVyKGluIERPTVN0cmluZyBuYW1lLCBpbiBbT3B0aW9uYWxdIERpY3Rpb25hcnkg
b3B0aW9ucykgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgW1JldHVybk5ld09iamVjdF0gRWxl
bWVudCBjcmVhdGVFbGVtZW50KGluIERPTVN0cmluZyBsb2NhbE5hbWUsIGluIFtUcmVhdE51bGxB
cz1OdWxsU3RyaW5nXSBET01TdHJpbmcgdHlwZUV4dGVuc2lvbikgcmFpc2VzIChET01FeGNlcHRp
b24pOworICAgIFtSZXR1cm5OZXdPYmplY3RdIEVsZW1lbnQgY3JlYXRlRWxlbWVudE5TKGluIFtU
cmVhdE51bGxBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLCBpbiBET01TdHJp
bmcgcXVhbGlmaWVkTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIHR5cGVFeHRlbnNp
b24pIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICNlbmRpZgogCiAjaWYgZGVmaW5lZChMQU5HVUFH
RV9DUFApICYmIExBTkdVQUdFX0NQUApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL21h
a2VfbmFtZXMucGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAppbmRleCAwNDNh
MzgyNDA4Y2M0MTcwMTZjZjQwMmY2NDcyMTQ5ZmI5NWNjZDk2Li45NjI5MDE0NTYzNGRmYThjZjli
M2YzNGE5MDc4ZWMzMmM5MDFkOTExIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFr
ZV9uYW1lcy5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbApAQCAtODIz
LDYgKzgyMywxMCBAQCBwcmludCBGIDw8RU5ECiAjaW5jbHVkZSAiQ29udGV4dEZlYXR1cmVzLmgi
CiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogCisjaWYgRU5BQkxFKENVU1RP
TV9FTEVNRU5UUykKKyNpbmNsdWRlICJDdXN0b21FbGVtZW50UmVnaXN0cnkuaCIKKyNlbmRpZgor
CiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBFTkFCTEUoVklERU8pCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtOTEyLDYgKzkxNiwxMiBA
QCBpZiAoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBlcSAiSFRNTCIpIHsKIHByaW50IEYgPDxFTkQK
ICAgICB9CiAKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorICAgIGlmIChQYXNzUmVmUHRy
PEVsZW1lbnQ+IGVsZW1lbnQgPSBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmNyZWF0ZUN1c3RvbU9y
VW5rbm93bkVsZW1lbnQoZG9jdW1lbnQsIHFOYW1lLCBudWxsQXRvbSwgY3JlYXRlZEJ5UGFyc2Vy
KSkgeworICAgICAgICBBU1NFUlQoZWxlbWVudC0+aXMkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxl
bWVudCgpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8JHBhcmFtZXRlcnN7
bmFtZXNwYWNlfUVsZW1lbnQ+KGVsZW1lbnQpOworICAgIH0KKyNlbmRpZgogRU5ECiA7CiBwcmlu
dCBGICIgICAgcmV0dXJuICRwYXJhbWV0ZXJze2ZhbGxiYWNrSW50ZXJmYWNlTmFtZX06OmNyZWF0
ZShxTmFtZSwgZG9jdW1lbnQpO1xuIjsKQEAgLTExNzIsOSArMTE4MiwxMiBAQCBFTkQKIDsKICAg
ICB9IGVsc2lmICgkd3JhcHBlckZhY3RvcnlUeXBlIGVxICJWOCIpIHsKICAgICAgICAgcHJpbnQg
RiA8PEVORAotI2luY2x1ZGUgIlY4Q3VzdG9tRWxlbWVudC5oIgogI2luY2x1ZGUgIlY4JHBhcmFt
ZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQuaCIKIAorI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMp
CisjaW5jbHVkZSAiVjhDdXN0b21FbGVtZW50LmgiCisjZW5kaWYKKwogI2luY2x1ZGUgPHY4Lmg+
CiBFTkQKIDsKQEAgLTEyNDQsNiArMTI1NywxOSBAQCBFTkQKIAogICAgIHByaW50IEYgPDxFTkQK
ICAgICB9CitFTkQKKzsKKyAgICBpZiAoJHdyYXBwZXJGYWN0b3J5VHlwZSBlcSAiVjgiKSB7Cisg
ICAgICAgIHByaW50IEYgPDxFTkQKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorICAgIGlm
IChQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY29uc3RydWN0b3IgPSBWOEN1
c3RvbUVsZW1lbnQ6OmNvbnN0cnVjdG9yT2YoZWxlbWVudCkpCisgICAgICAgIHJldHVybiBWOEN1
c3RvbUVsZW1lbnQ6OndyYXAoZWxlbWVudCwgY3JlYXRpb25Db250ZXh0LCBjb25zdHJ1Y3Rvciwg
aXNvbGF0ZSk7CisjZW5kaWYKK0VORAorOworICAgIH0KKworICAgIHByaW50IEYgPDxFTkQKICAg
ICBDcmVhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudFdyYXBwZXJGdW5jdGlvbiBjcmVh
dGVXcmFwcGVyRnVuY3Rpb24gPSBtYXAuZ2V0KGVsZW1lbnQtPmxvY2FsTmFtZSgpLmltcGwoKSk7
CiAgICAgaWYgKGNyZWF0ZVdyYXBwZXJGdW5jdGlvbikKIEVORApAQCAtMTI3NSwxMSArMTMwMSw2
IEBAIEVORAogICAgIHJldHVybiBWOFNWR0VsZW1lbnQ6OmNyZWF0ZVdyYXBwZXIoZWxlbWVudCwg
Y3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIEVORAogOwotICAgICAgICB9IGVsc2lmICgkcGFy
YW1ldGVyc3tuYW1lc3BhY2V9IGVxICJIVE1MIikgewotICAgICAgICAgICAgcHJpbnQgRiA8PEVO
RAotICAgIHJldHVybiBWOEN1c3RvbUVsZW1lbnQ6OndyYXAoZWxlbWVudCwgY3JlYXRpb25Db250
ZXh0LCBpc29sYXRlKTsKLUVORAotOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHJp
bnQgRiA8PEVORAogICAgIHJldHVybiB3cmFwKHRvJHBhcmFtZXRlcnN7ZmFsbGJhY2tJbnRlcmZh
Y2VOYW1lfShlbGVtZW50KSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKQEAgLTEyODksMTIg
KzEzMTAsMzggQEAgRU5ECiAgICAgfQogICAgIHByaW50IEYgPDxFTkQKIH0KK0VORAorOworCisg
ICAgaWYgKCR3cmFwcGVyRmFjdG9yeVR5cGUgZXEgIlY4IikgeworICAgICAgICBwcmludCBGIDw8
RU5ECisKK2NvbnN0IFF1YWxpZmllZE5hbWUqIGZpbmQkcGFyYW1ldGVyc3tuYW1lc3BhY2V9VGFn
TmFtZU9mVjhUeXBlKGNvbnN0IFdyYXBwZXJUeXBlSW5mbyogdHlwZSkKK3sKKyAgICB0eXBlZGVm
IEhhc2hNYXA8Y29uc3QgV3JhcHBlclR5cGVJbmZvKiwgY29uc3QgUXVhbGlmaWVkTmFtZSo+IFR5
cGVOYW1lTWFwOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoVHlwZU5hbWVNYXAsIG1hcCwgKCkp
OworICAgIGlmIChtYXAuaXNFbXB0eSgpKSB7CitFTkQKKzsKKworICAgICAgICBmb3IgbXkgJHRh
Z05hbWUgKHNvcnQga2V5cyAlZW5hYmxlZFRhZ3MpIHsKKyAgICAgICAgICAgIGlmICghdXNlc0Rl
ZmF1bHRKU1dyYXBwZXIoJHRhZ05hbWUpKSB7CisgICAgICAgICAgICAgICAgbXkgJEpTSW50ZXJm
YWNlTmFtZSA9ICRlbmFibGVkVGFnc3skdGFnTmFtZX17SlNJbnRlcmZhY2VOYW1lfTsKKyAgICAg
ICAgICAgICAgICBwcmludCBGICIgICAgICAgbWFwLnNldChXcmFwcGVyVHlwZVRyYWl0czwke0pT
SW50ZXJmYWNlTmFtZX0+OjppbmZvKCksICYke3RhZ05hbWV9VGFnKTtcbiI7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KIAorICAgICAgICBwcmludCBGIDw8RU5ECisgICAgfQorCisgICAgcmV0
dXJuIG1hcC5nZXQodHlwZSk7CiB9CiAKIEVORAogOworICAgIH0KIAorICAgIHByaW50IEYgIn1c
blxuIjsKICAgICBwcmludCBGICIjZW5kaWZcbiIgaWYgJHBhcmFtZXRlcnN7Z3VhcmRGYWN0b3J5
V2l0aH07CiAKICAgICBjbG9zZSBGOwpAQCAtMTM0NSw2ICsxMzkyLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgY2xhc3MgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ7CiAKKyAg
ICBjb25zdCBRdWFsaWZpZWROYW1lKiBmaW5kJHBhcmFtZXRlcnN7bmFtZXNwYWNlfVRhZ05hbWVP
ZlY4VHlwZShjb25zdCBXcmFwcGVyVHlwZUluZm8qKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNyZWF0ZVY4JHBhcmFtZXRlcnN7bmFtZXNwYWNlfVdyYXBwZXIoJHBhcmFtZXRlcnN7bmFt
ZXNwYWNlfUVsZW1lbnQqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwg
djg6Oklzb2xhdGUqKTsKICAgICBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGVW
OCRwYXJhbWV0ZXJze25hbWVzcGFjZX1EaXJlY3RXcmFwcGVyKCRwYXJhbWV0ZXJze25hbWVzcGFj
ZX1FbGVtZW50KiBlbGVtZW50LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4
dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
dHRyaWJ1dGVOYW1lcy5pbgppbmRleCAxNTRjMDMzNDlmYTY0NWNjYjI2MTVkZjJiYjk0ZWVhMzQ4
MzdlZWM1Li42YzY3NTdkMTRhNzg4MmQxZjllMDlmM2Q5Y2I3MDcwNTkyM2MyN2NlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgpAQCAtMTI2LDYgKzEyNiw3IEBA
IGh0dHBfZXF1aXYKIGlkCiBpbmNyZW1lbnRhbAogaW5kZXRlcm1pbmF0ZQoraXMKIGlzbWFwCiBp
dGVtaWQKIGl0ZW1wcm9wCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzVhZTg5MmJiY2E3YWEyNTE1MThmZDg5MzhhYTIxNzEz
ZjkwYjNjZS4uYzQ3N2I3NGMwNmRhMzgyZGU3MWRjMGEzMWQ4YzllMWM4MDZmZThhMyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEyIEBACisyMDEzLTAzLTA4ICBIYWppbWUgTW9ycml0YSAgPG1vcnJpdGFAZ29v
Z2xlLmNvbT4KKworICAgICAgICBbQ3VzdG9tIEVsZW1lbnRzXSBjcmVhdGVFbGVtZW50KCkgYW5k
IGNyZWF0ZUVsZW1lbnROUygpIHNob3VsZCBzdXBwb3J0IHR5cGUgZXh0ZW50aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE1MTEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL2N1c3Rv
bS9kb2N1bWVudC1yZWdpc3Rlci10eXBlLWV4dGVuc2lvbnMuaHRtbDogQWRkZWQuCisKIDIwMTMt
MDMtMDcgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIEN1
c3RvbSBFbGVtZW50czogQ3VzdG9tRWxlbWVudCBjb25zdHJ1Y3RvciBzaG91bGRuJ3Qgc2hhcmUg
ZnVuY3Rpb24gaW5zdGFuY2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3Rv
bS9kb2N1bWVudC1yZWdpc3Rlci10eXBlLWV4dGVuc2lvbnMuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL2N1c3RvbS9kb2N1bWVudC1yZWdpc3Rlci10eXBlLWV4dGVuc2lvbnMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iM2U0NTIxNGI5OTM1ZWE0M2NlNjM3YWQ0ZDBkNDk0NDkxMjRjNzgxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVy
LXR5cGUtZXh0ZW5zaW9ucy5odG1sCkBAIC0wLDAgKzEsMTQwIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29udGFpbmVyIj48
L2Rpdj4KKzxmb3JtIGlkPSJ0ZXN0Rm9ybSI+PC9mb3JtPgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9u
KCJUZXN0aW5nIGRvY3VtZW50LnJlZ2lzdGVyKCkgdHlwZSBleHRlbnNpb24gYmVoYXZpb3VycyB0
aHJvdWdoIGNyZWF0ZUVsZW1lbnQoKS4iKTsKKworZnVuY3Rpb24gaXNGb3JtQ29udHJvbChlbGVt
ZW50KQoreworICAgIHRlc3RGb3JtLmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIHJldHVybiBl
bGVtZW50LmZvcm0gPT0gdGVzdEZvcm07Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKK2RvY3VtZW50LnJlZ2lzdGVyID0gZG9jdW1lbnQu
cmVnaXN0ZXIgfHwgZG9jdW1lbnQud2Via2l0UmVnaXN0ZXI7CisKKy8vCisvLyBJbmhlcml0YW5j
ZSBoZXJlIGlzIHNoYXBlZCBsaWtlIHRoaXM6CisvLworLy8gSFRNTEVsZW1lbnQgPC0gaW5wdXQg
PC0geC1iYXIgPC0geC1xdXgKKy8vICAgICAgICAgICAgIDwtIHgtZm9vIDwtIHgtYmF6CisvLwor
Citmb29Db25zdHJ1Y3RvciA9IGRvY3VtZW50LnJlZ2lzdGVyKCd4LWZvbycsIHsgcHJvdG90eXBl
OiBPYmplY3QuY3JlYXRlKEhUTUxFbGVtZW50LnByb3RvdHlwZSkgfSk7CitiYXJDb25zdHJ1Y3Rv
ciA9IGRvY3VtZW50LnJlZ2lzdGVyKCd4LWJhcicsIHsgcHJvdG90eXBlOiBPYmplY3QuY3JlYXRl
KEhUTUxJbnB1dEVsZW1lbnQucHJvdG90eXBlKSB9KTsKK2JhekNvbnN0cnVjdG9yID0gZG9jdW1l
bnQucmVnaXN0ZXIoJ3gtYmF6JywgeyBwcm90b3R5cGU6IE9iamVjdC5jcmVhdGUoZm9vQ29uc3Ry
dWN0b3IucHJvdG90eXBlKSB9KTsKK3F1eENvbnN0cnVjdG9yID0gZG9jdW1lbnQucmVnaXN0ZXIo
J3gtcXV4JywgeyBwcm90b3R5cGU6IE9iamVjdC5jcmVhdGUoYmFyQ29uc3RydWN0b3IucHJvdG90
eXBlKSB9KTsKKworLy8gU2FtZSBuYW1lLCBkaWZmZXJlbnQgbG9jYWwgbmFtZQorc2hvdWxkVGhy
b3coImRvY3VtZW50LnJlZ2lzdGVyKCd4LWZvbycsIHsgcHJvdG90eXBlOiBPYmplY3QuY3JlYXRl
KEhUTUxEaXZFbGVtZW50LnByb3RvdHlwZSkgfSkiLCAiJ0Vycm9yOiBJbnZhbGlkU3RhdGVFcnJv
cjogRE9NIEV4Y2VwdGlvbiAxMSciKTsKKworLy8KKy8vIEdlbmVyYXRlZCBjb25zdHJ1Y3RvcnMK
Ky8vCisKK2Zvb05ld2VkID0gbmV3IGZvb0NvbnN0cnVjdG9yKCk7Citmb29PdXRlckhUTUwgPSAi
Jzx4LWZvbz48L3gtZm9vPiciOworc2hvdWxkQmUoImZvb05ld2VkLm91dGVySFRNTCIsIGZvb091
dGVySFRNTCk7CitzaG91bGRCZVRydWUoImZvb05ld2VkIGluc3RhbmNlb2YgZm9vQ29uc3RydWN0
b3IgJiYgZm9vTmV3ZWQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCIpOworc2hvdWxkQmVGYWxzZSgi
Zm9vTmV3ZWQgaW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1lbnQiKTsKKworYmFyTmV3ZWQgPSBu
ZXcgYmFyQ29uc3RydWN0b3IoKTsKK2Jhck91dGVySFRNTCA9ICInPGlucHV0IGlzPVwieC1iYXJc
Ij4nIjsKK3Nob3VsZEJlKCJiYXJOZXdlZC5vdXRlckhUTUwiLCBiYXJPdXRlckhUTUwpOworc2hv
dWxkQmVUcnVlKCJiYXJOZXdlZCBpbnN0YW5jZW9mIGJhckNvbnN0cnVjdG9yICYmIGJhck5ld2Vk
IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCIpOworc2hvdWxkQmVUcnVlKCJpc0Zvcm1Db250
cm9sKGJhck5ld2VkKSIpOworCitiYXpOZXdlZCA9IG5ldyBiYXpDb25zdHJ1Y3RvcigpOworYmF6
T3V0ZXJIVE1MID0gIic8eC1iYXo+PC94LWJhej4nIjsKK3Nob3VsZEJlKCJiYXpOZXdlZC5vdXRl
ckhUTUwiLCBiYXpPdXRlckhUTUwpOworc2hvdWxkQmVUcnVlKCJiYXpOZXdlZCBpbnN0YW5jZW9m
IGJhekNvbnN0cnVjdG9yICYmIGJhek5ld2VkIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQiKTsKK3No
b3VsZEJlRmFsc2UoImJhek5ld2VkIGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50Iik7CisK
K3F1eE5ld2VkID0gbmV3IHF1eENvbnN0cnVjdG9yKCk7CitxdXhPdXRlckhUTUwgPSAiJzxpbnB1
dCBpcz1cIngtcXV4XCI+JyI7CitzaG91bGRCZVRydWUoInF1eE5ld2VkIGluc3RhbmNlb2YgcXV4
Q29uc3RydWN0b3IgJiYgcXV4TmV3ZWQgaW5zdGFuY2VvZiBiYXJDb25zdHJ1Y3RvciAmJiBxdXhO
ZXdlZCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQiKTsKK3Nob3VsZEJlKCJxdXhOZXdlZC5v
dXRlckhUTUwiLCBxdXhPdXRlckhUTUwpOworc2hvdWxkQmVUcnVlKCJpc0Zvcm1Db250cm9sKHF1
eE5ld2VkKSIpOworCisvLworLy8gU2luZ2xlIHBhcmFtZXRlciBjcmVhdGVFbGVtZW50KCkKKy8v
CisKK2Zvb0NyZWF0ZWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ4LWZvbyIpOworc2hvdWxk
QmUoImZvb0NyZWF0ZWQub3V0ZXJIVE1MIiwgZm9vT3V0ZXJIVE1MKTsKK3Nob3VsZEJlVHJ1ZSgi
Zm9vQ3JlYXRlZCBpbnN0YW5jZW9mIGZvb0NvbnN0cnVjdG9yIik7CisKK2JhckNyZWF0ZWQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJ4LWJhciIpOworc2hvdWxkQmUoImJhckNyZWF0ZWQub3V0
ZXJIVE1MIiwgIic8eC1iYXI+PC94LWJhcj4nIik7CitzaG91bGRCZUZhbHNlKCJiYXJDcmVhdGVk
IGluc3RhbmNlb2YgYmFyQ29uc3RydWN0b3IiKTsKK3Nob3VsZEJlVHJ1ZSgiYmFyQ3JlYXRlZCBp
bnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudCIpOworCitiYXpDcmVhdGVkID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgieC1iYXoiKTsKK3Nob3VsZEJlKCJiYXpDcmVhdGVkLm91dGVySFRNTCIs
ICInPHgtYmF6PjwveC1iYXo+JyIpOworc2hvdWxkQmVUcnVlKCJiYXpDcmVhdGVkIGluc3RhbmNl
b2YgYmF6Q29uc3RydWN0b3IiKTsKK3Nob3VsZEJlRmFsc2UoImJhekNyZWF0ZWQgaW5zdGFuY2Vv
ZiBIVE1MVW5rbm93bkVsZW1lbnQiKTsKKworcXV4Q3JlYXRlZCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoIngtcXV4Iik7CitzaG91bGRCZSgicXV4Q3JlYXRlZC5vdXRlckhUTUwiLCAiJzx4LXF1
eD48L3gtcXV4PiciKTsKK3Nob3VsZEJlRmFsc2UoInF1eENyZWF0ZWQgaW5zdGFuY2VvZiBxdXhD
b25zdHJ1Y3RvciIpOworc2hvdWxkQmVUcnVlKCJxdXhDcmVhdGVkIGluc3RhbmNlb2YgSFRNTFVu
a25vd25FbGVtZW50Iik7CisKKy8vCisvLyBjcmVhdGVFbGVtZW50KCkgd2l0aCB0eXBlIGV4dGVu
c2lvbnMKKy8vCisKK2RpdkZvb0NyZWF0ZWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
LCAieC1mb28iKTsKK3Nob3VsZEJlKCJkaXZGb29DcmVhdGVkLm91dGVySFRNTCIsICInPGRpdiBp
cz1cIngtZm9vXCI+PC9kaXY+JyIpOworc2hvdWxkQmVGYWxzZSgiZGl2Rm9vQ3JlYXRlZCBpbnN0
YW5jZW9mIGJhckNvbnN0cnVjdG9yIik7CitzaG91bGRCZVRydWUoImRpdkZvb0NyZWF0ZWQgaW5z
dGFuY2VvZiBIVE1MRGl2RWxlbWVudCIpOworCitpbnB1dEJhckNyZWF0ZWQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJpbnB1dCIsICJ4LWJhciIpOworc2hvdWxkQmUoImlucHV0QmFyQ3JlYXRl
ZC5vdXRlckhUTUwiLCBiYXJPdXRlckhUTUwpOworc2hvdWxkQmVUcnVlKCJpbnB1dEJhckNyZWF0
ZWQgaW5zdGFuY2VvZiBiYXJDb25zdHJ1Y3RvciIpOworc2hvdWxkQmVGYWxzZSgiaW5wdXRCYXJD
cmVhdGVkIGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50Iik7CitzaG91bGRCZVRydWUoImlz
Rm9ybUNvbnRyb2woaW5wdXRCYXJDcmVhdGVkKSIpOworCitkaXZCYXJDcmVhdGVkID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2IiwgIngtYmFyIik7CitzaG91bGRCZSgiZGl2QmFyQ3JlYXRl
ZC5vdXRlckhUTUwiLCAiJzxkaXYgaXM9XCJ4LWJhclwiPjwvZGl2PiciKTsKK3Nob3VsZEJlRmFs
c2UoImRpdkJhckNyZWF0ZWQgaW5zdGFuY2VvZiBiYXJDb25zdHJ1Y3RvciIpOworc2hvdWxkQmVU
cnVlKCJkaXZCYXJDcmVhdGVkIGluc3RhbmNlb2YgSFRNTERpdkVsZW1lbnQiKTsKKworZm9vQmFy
Q3JlYXRlZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIngtZm9vIiwgIngtYmFyIik7CitzaG91
bGRCZSgiZm9vQmFyQ3JlYXRlZC5vdXRlckhUTUwiLCAiJzx4LWZvbyBpcz1cIngtYmFyXCI+PC94
LWZvbz4nIik7CitzaG91bGRCZVRydWUoImZvb0JhckNyZWF0ZWQgaW5zdGFuY2VvZiBmb29Db25z
dHJ1Y3RvciIpOworCitiYXJGb29DcmVhdGVkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgieC1i
YXIiLCAieC1mb28iKTsKK3Nob3VsZEJlKCJiYXJGb29DcmVhdGVkLm91dGVySFRNTCIsICInPHgt
YmFyIGlzPVwieC1mb29cIj48L3gtYmFyPiciKTsKK3Nob3VsZEJlVHJ1ZSgiYmFyRm9vQ3JlYXRl
ZCBpbnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudCIpOworCitmb29DcmVhdGVkTnVsbCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoIngtZm9vIiwgbnVsbCk7CitzaG91bGRCZSgiZm9vQ3JlYXRl
ZE51bGwub3V0ZXJIVE1MIiwgZm9vT3V0ZXJIVE1MKTsKK3Nob3VsZEJlVHJ1ZSgiZm9vQ3JlYXRl
ZE51bGwgaW5zdGFuY2VvZiBmb29Db25zdHJ1Y3RvciIpOworCitmb29DcmVhdGVkRW1wdHkgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJ4LWZvbyIsICIiKTsKK3Nob3VsZEJlKCJmb29DcmVhdGVk
RW1wdHkub3V0ZXJIVE1MIiwgZm9vT3V0ZXJIVE1MKTsKK3Nob3VsZEJlVHJ1ZSgiZm9vQ3JlYXRl
ZEVtcHR5IGluc3RhbmNlb2YgZm9vQ29uc3RydWN0b3IiKTsKKworLy8KKy8vIGNyZWF0ZUVsZW1l
bnROUygpIHdpdGggdHlwZSBleHRlbnNpb25zCisvLworCitmb29DcmVhdGVkTlMgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCAieC1mb28i
LCBudWxsKTsKK3Nob3VsZEJlKCJmb29DcmVhdGVkTlMub3V0ZXJIVE1MIiwgZm9vT3V0ZXJIVE1M
KTsKK3Nob3VsZEJlVHJ1ZSgiZm9vQ3JlYXRlZE5TIGluc3RhbmNlb2YgZm9vQ29uc3RydWN0b3Ii
KTsKKworYmFyQ3JlYXRlZE5TID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hodG1sIiwgImlucHV0IiwgIngtYmFyIik7CitzaG91bGRCZSgiYmFyQ3Jl
YXRlZE5TLm91dGVySFRNTCIsIGJhck91dGVySFRNTCk7CitzaG91bGRCZVRydWUoImJhckNyZWF0
ZWROUyBpbnN0YW5jZW9mIGJhckNvbnN0cnVjdG9yIik7CitzaG91bGRCZVRydWUoImlzRm9ybUNv
bnRyb2woYmFyQ3JlYXRlZE5TKSIpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192413</attachid>
            <date>2013-03-11 00:20:56 -0700</date>
            <delta_ts>2013-03-11 01:22:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111511-20130311161656.patch</filename>
            <type>text/plain</type>
            <size>51155</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDFlNWRlMzBjZTAxZmUy
MjU4ZThhMjU3YTVjMGNmNDJhYjU5NzBkMC4uZDFhNDExNzE5MTUxMmUyZDUyZjBhNjYyZWY4Yzky
Y2ZhZTNhMGZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMCBAQAorMjAxMy0wMy0xMCAgSGFq
aW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgW0N1c3RvbSBFbGVt
ZW50c10gY3JlYXRlRWxlbWVudCgpIGFuZCBjcmVhdGVFbGVtZW50TlMoKSBzaG91bGQgc3VwcG9y
dCB0eXBlIGV4dGVudGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTExNTExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBjaGFuZ2UgaW50cm9kdWNlcyAidHlwZSBleHRlbnNpb24iIGNvbmNlcHQg
b2YgY3VzdG9tIGVsZW1lbnRzLgorICAgICAgICBXaXRoIHRoZSB0eXBlIGV4dGVuc2lvbiwgZWFj
aCBjdXN0b20gZWxlbWVudHMgYXJlIGFibGUgdG8gaW5oZXJpdAorICAgICAgICBmcm9tIG5vdCBv
bmx5IEhUTUxFbGVtZW50LCBidXQgYWxzbyBhbnkgSFRNTCBlbGVtZW50LiBUbyBtYWtlIGl0IHdv
cmssCisgICAgICAgIHRoaXMgY2hhbmdlIGV4dGVuZHMgdGhlIHBsdW1iaW5nLgorCisgICAgICAg
IFRoaXMgY2hhbmdlIGRvZXMgZm9sbG93aW5nIGNoYW5nZXM6CisKKyAgICAgICAgPSBEYXRhIHN0
cnVjdHVyZToKKworICAgICAgICAtIExldCBDdXN0b21FbGVtZW50Q29uc3RydWN0b3Igb2JqZWN0
cyBiZWluZyBrZXllZCBieSBwYWlyIG9mIChlbGVtZW50CisgICAgICAgICAgbmFtZSwgbG9jYWwg
bmFtZSkgYXMgdGhlIHN0YW5kYXJkIHJlcXVyaWVzLCBpbnN0ZWFkIG9mIGp1c3QgdXNpbmcKKyAg
ICAgICAgICBzaW5nbGUgbmFtZS4gU2VlIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6Q29uc3RydWN0
b3JNYXAgYW5kIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZmluZCgpLgorCisgICAgICAgIC0gQ3Jl
YXRlcyBtYXBwaW5nIGZyb20gV3JhcHBlclR5cGVJbmZvIHRvIGVsZW1lbnQgbmFtZS4gIFRoaXMg
bWFwCisgICAgICAgICAgY2FuIGJlIGxvb2tlZC11cCBieSBnZW5lcmF0ZWQgZnVuY3Rpb25zIGxp
a2UKKyAgICAgICAgICBmaW5kSFRNTFRhZ05hbWVPZlY4VHlwZSgpLiAgV2l0aCB0aGlzIHRhYmxl
LCBXZWJLaXQgY2FuIGRldGVybWluZQorICAgICAgICAgIHRoZSBjdXN0b20gZWxlbWVudCBsb2Nh
bCBuYW1lIG9mIGdpdmVuIHByb3RvdHlwZSBvYmplY3QuIFNlZSAgbWFrZV9uYW1lcy5wbC4KKyAg
ICAgICAgICBOb3RlIHRoYXQgVjggcHJvdG90eXBlIG9iamVjdCBrbm93cyBhc3NvY2lhdGVkIFdy
YXBwZXJUeXBlSW5mby4gU2VlIHIxNDQ4NjUuCisKKyAgICAgICAgPSBIb29raW5nIHVwIGVsZW1l
bnQgbGlmZWN5bGU6CisKKyAgICAgICAgLSBDcmVhdGUgYXBwcm9wcmlhdGUgQysrIGluc3RhbmNl
IGZvciBlYWNoIGN1c3RvbSBlbGVtZW50LiAgQmVmb3JlCisgICAgICAgICAgdGhpcyBjaGFuZ2Us
IHRoZSBDKysgYmFja2VuZCBvZiBjdXN0b20gZWxlbWVudHMgd2VyZSBhbHdhc3kKKyAgICAgICAg
ICBIVE1MVW5rbm93bkVsZW1lbnRzIG9yIEhUTUxFbGVtZW50LiAgU2VlCisgICAgICAgICAgQ3Vz
dG9tRWxlbWVudENvbnN0cnVjdG9yOjpjcmVhdGVFbGVtZW50KCkgYW5kIEVsZW1lbnRGYWN0b3Jp
ZXMgaW4KKyAgICAgICAgICBtYWtlX25hbWVzLnBsLgorCisgICAgICAgIC0gSG9va3MgdXAgZWxl
bWVudCBjb25zdHJ1Y3Rpb24gYW5kIGVsZW1lbnQgd3JhcHBlciBjcmVhdGlvbiBmb3IKKyAgICAg
ICAgICBjdXN0b20gZWxlbWVudCAiYmVmb3JlIiBub24tY3VzdG9tIGNhc2UgaW5zdGVhZCBvZiAi
YWZ0ZXIiCisgICAgICAgICAgdGhhdC4gV2UgZG8gdGhpcyBiZWNhdXNlIGN1c3RvbSBlbGVtZW50
IG5lZWRzIHRvCisgICAgICAgICAgb3ZlcnJpZGUgbm9uLWN1c3RvbSBjYXNlIHdoZW4gQGlzIGF0
dHJpYnV0ZSBpcyBnaXZlbiBmb3IKKyAgICAgICAgICBvdGhlcndpc2Utbm9uLWN1c3RvbSBlbGVt
ZW50cyBsaWtlIDxkaXYgaXM9eC1iYXI+LgorICAgICAgICAgIFNlZSBtYWtlX25hbWVzLnBsLgor
CisgICAgICAgIC0gR2l2ZXMgQGlzIGF0dHJpYnV0ZXMgdG8gZWxlbWVudHMgaWYgbmVlZGVkLiBT
ZWUgbWFya0FzRXh0ZW5kZWRDdXN0b21FbGVtZW50KCkgY2FsbCBzaXRlcworICAgICAgICAgIGxp
a2UgRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnQoKSwgRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnR0TlMo
KSBhbmQgQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjpjcmVhdGVFbGVtZW50dCgpCisKKyAgICAg
ICAgVGhpcyBjaGFuZ2UgZG9lc24ndCB0YWtlIGNhcmUgb2YgSFRNTCBwYXJzaW5nLCB3aGljaCB3
aWxsIGJlIGFkZHJlc3NlZCBhdCBjb21pbmcgY2hhbmdlcy4KKworICAgICAgICBUZXN0OiBmYXN0
L2RvbS9jdXN0b20vZG9jdW1lbnQtcmVnaXN0ZXItdHlwZS1leHRlbnNpb25zLmh0bWwKKworICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2Vu
ZXJhdGVIZWFkZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omhhc1ZhbGlkUHJvdG90eXBlQ2hhaW4pOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudEhlbHBlcnM6OmlzVmFsaWRQcm90b3R5cGVQYXJhbWV0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudEhlbHBlcnM6OmZpbmRMb2NhbE5h
bWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50
SGVscGVyczo6ZmluZFdyYXBwZXJUeXBlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9DdXN0b21F
bGVtZW50SGVscGVycy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDdXN0b21FbGVt
ZW50SGVscGVycyk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhDdXN0b21FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4Q3VzdG9tRWxlbWVudDo6Y3JlYXRlV3JhcHBlcik6CisgICAg
ICAgICogYmluZGluZ3MvdjgvVjhDdXN0b21FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFY4Q3VzdG9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpWOEN1c3RvbUVs
ZW1lbnQ6OndyYXApOgorICAgICAgICAoV2ViQ29yZTo6VjhDdXN0b21FbGVtZW50Ojpjb25zdHJ1
Y3Rvck9mKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV3JhcHBlclR5cGVUcmFpdHMpOiBBZGRlZC4KKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21FbGVtZW50Q29uc3RydWN0b3JDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhDdXN0b21FbGVtZW50Q29uc3RydWN0b3I6OmNhbGxB
c0Z1bmN0aW9uQ2FsbGJhY2spOgorICAgICAgICAqIGRvbS9DdXN0b21FbGVtZW50Q29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjpDdXN0b21F
bGVtZW50Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudENvbnN0
cnVjdG9yOjpjcmVhdGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6bWFya0FzRXh0ZW5kZWRDdXN0b21FbGVtZW50KToKKyAgICAgICAgKiBkb20vQ3VzdG9t
RWxlbWVudENvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEN1c3Rv
bUVsZW1lbnRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50Q29u
c3RydWN0b3I6OmVsZW1lbnROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRD
b25zdHJ1Y3Rvcjo6bG9jYWxOYW1lKToKKyAgICAgICAgKiBkb20vQ3VzdG9tRWxlbWVudFJlZ2lz
dHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5hbWVJbmNsdWRlc0h5cGhlbik6CisgICAgICAg
IChXZWJDb3JlOjpDdXN0b21FbGVtZW50UmVnaXN0cnk6OmlzVmFsaWROYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6cmVnaXN0ZXJFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZmluZEZvcik6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZmluZCk6
CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50UmVnaXN0cnk6OmNyZWF0ZUVsZW1lbnQp
OgorICAgICAgICAqIGRvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaDoKKyAgICAgICAgKEN1c3Rv
bUVsZW1lbnRSZWdpc3RyeSk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnROUyk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6cmVnaXN0ZXJFbGVtZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuaDoKKyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpy
ZWdpc3RyeSk6IE1vdmVkIGZyb20gRG9jdW1lbnQuY3BwIHRvIGJlIGlubGluZWQuCisgICAgICAg
ICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBkb20vbWFrZV9uYW1lcy5wbDoKKyAgICAg
ICAgKHByaW50RmFjdG9yeUNwcEZpbGUpOgorICAgICAgICAocHJpbnRXcmFwcGVyRmFjdG9yeUNw
cEZpbGUpOgorICAgICAgICAocHJpbnRXcmFwcGVyRmFjdG9yeUhlYWRlckZpbGUpOgorICAgICAg
ICAqIGh0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluOiBBZGRlZCBAaXMgYXR0cmlidXRlCisKIDIw
MTMtMDMtMDcgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAg
IEN1c3RvbSBFbGVtZW50czogQ3VzdG9tRWxlbWVudCBjb25zdHJ1Y3RvciBzaG91bGRuJ3Qgc2hh
cmUgZnVuY3Rpb24gaW5zdGFuY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggZTM4YWY0ZDE1NjVkZDliZTVkZjRiZjUwN2Yz
ZjI4ZjZkZmMwMTQzYy4uMTVlOTdhMDlhZjYxYmQ4MjA1YjgxNjQxODJhZDYxNmNmNzExM2UyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0KQEAgLTUxNSw2ICs1MTUsMTIgQEAgRU5ECiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
PDxFTkQpOwogfTsKIAordGVtcGxhdGU8PgorY2xhc3MgV3JhcHBlclR5cGVUcmFpdHM8JHtuYXRp
dmVUeXBlfSA+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvKiBpbmZvKCkg
eyByZXR1cm4gJiR7djhJbnRlcmZhY2VOYW1lfTo6aW5mbzsgfQorfTsKKwogRU5ECiAKICAgICBt
eSAkY3VzdG9tV3JhcCA9ICEhKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0
b21Ub0pTT2JqZWN0In0gb3IgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3Vz
dG9tVG9KU09iamVjdCJ9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0N1
c3RvbUVsZW1lbnRIZWxwZXJzLmNwcAppbmRleCA1NDhhNjQ3YTE5ZTUyYzMzODdlNjQ5NWJjZmI0
ZjQ4ZGE1MmNmODRlLi5iNTI4ZTk2NGI3MWUxYTMzZTIwZDViNWY5ODBkMDNkZDg5MjlhYTQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQ3VzdG9tRWxlbWVudEhlbHBl
cnMuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIK
ICNpbmNsdWRlICJWOEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIlY4SFRN
TEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5oIgogI2luY2x1ZGUgIlY4SFRNTFBhcmFncmFwaEVsZW1l
bnQuaCIKICNpbmNsdWRlICJWOEhUTUxTcGFuRWxlbWVudC5oIgogCkBAIC02MywxNyArNjQsMTMg
QEAgYm9vbCBDdXN0b21FbGVtZW50SGVscGVyczo6aW5pdGlhbGl6ZUNvbnN0cnVjdG9yV3JhcHBl
cihDdXN0b21FbGVtZW50Q29uc3RydWN0b3IKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotLy8gU2Vl
IEZJWE1FIG9uIHRoZSBjYWxsZXIgc2lkZSBjb21tZW50Lgotc3RhdGljIGJvb2wgaGFzTm9CdWls
dGluc0luUHJvdG90eXBlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaHRtbFByb3RvdHlwZSwgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGNoYWluKQorc3RhdGljIGJvb2wgaGFzVmFsaWRQcm90b3R5cGVD
aGFpbih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHJlcXVpcmVkQXNjZW5kYW50LCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gY2hhaW4pCiB7CiAgICAgd2hpbGUgKCFjaGFpbi5Jc0VtcHR5KCkpIHsKLSAg
ICAgICAgaWYgKGNoYWluID09IGh0bWxQcm90b3R5cGUpCisgICAgICAgIGlmIChjaGFpbiA9PSBy
ZXF1aXJlZEFzY2VuZGFudCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAo
IWNoYWluLT5Jc09iamVjdCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAv
LyBUaGUgaW50ZXJuYWwgZmllbGQgY291bnQgaW5kaWNhdGVzIHRoZSBvYmplY3QgbWlnaHQgYmUg
YSBuYXRpdmUgYmFja2VkLCBidWlsdC1pbiBvYmplY3QuCi0gICAgICAgIGlmICh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+OjpDYXN0KGNoYWluKS0+SW50ZXJuYWxGaWVsZENvdW50KCkpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGNoYWluID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pjo6Q2FzdChjaGFpbiktPkdldFByb3RvdHlwZSgpOwogICAgIH0KIApAQCAtOTAsMjAgKzg3LDE0
IEBAIGJvb2wgQ3VzdG9tRWxlbWVudEhlbHBlcnM6OmlzVmFsaWRQcm90b3R5cGVQYXJhbWV0ZXIo
Y29uc3QgU2NyaXB0VmFsdWUmIHByb3RvdHlwCiAgICAgaWYgKHByb3RvdHlwZU9iamVjdC0+SGFz
T3duUHJvcGVydHkodjhTdHJpbmcoImNvbnN0cnVjdG9yIiwgc3RhdGUtPmNvbnRleHQoKS0+R2V0
SXNvbGF0ZSgpKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBWOFBlckNvbnRleHREYXRh
KiBwZXJDb250ZXh0RGF0YSA9IFY4UGVyQ29udGV4dERhdGE6OmZyb20oc3RhdGUtPmNvbnRleHQo
KSk7Ci0gICAgLy8KLSAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExMDQzNgotICAgIC8vICAgZG9jdW1lbnQucmVnaXN0ZXIoKSBzaG91bGQgYWxs
b3cgYXJiaXRyYXJ5IEhUTUxFbGVtZW50IHN1YmNsYXNzc2VzLgotICAgIC8vICAgQ3VycmVudGx5
IGl0IHN1cHBvcnRzIGN1c3RvbSBlbGVtZW50cyB3aGljaCBhcmUKLSAgICAvLyAgIC0gZGlyZWN0
IHN1YmNsYXNzZXMgb2YgSFRNTEVsZW1lbnQgb3IKLSAgICAvLyAgIC0gc3ViY2xhc3NlcyBvZiBv
dGhlciBjdXN0b20gZWxlbWVudHMKLSAgICAvLworICAgIC8vIEZJWE1FOiBub24tSFRNTCBzdWJj
bGFzc2VzIHNob3VsZCBiZSBhbHNvIHN1cHBvcnRlZDogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExMTY5MwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaHRtbENv
bnN0cnVjdG9yID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChwZXJDb250ZXh0RGF0YS0+
Y29uc3RydWN0b3JGb3JUeXBlKCZWOEhUTUxFbGVtZW50OjppbmZvKSk7CiAgICAgaWYgKGh0bWxD
b25zdHJ1Y3Rvci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGh0bWxQcm90b3R5cGUgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpD
YXN0KGh0bWxDb25zdHJ1Y3Rvci0+R2V0KHY4U3RyaW5nKCJwcm90b3R5cGUiLCBzdGF0ZS0+Y29u
dGV4dCgpLT5HZXRJc29sYXRlKCkpKSk7CiAgICAgaWYgKGh0bWxQcm90b3R5cGUuSXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFoYXNOb0J1aWx0aW5zSW5Qcm90b3R5
cGUoaHRtbFByb3RvdHlwZSwgcHJvdG90eXBlT2JqZWN0KSkKKyAgICBpZiAoIWhhc1ZhbGlkUHJv
dG90eXBlQ2hhaW4oaHRtbFByb3RvdHlwZSwgcHJvdG90eXBlT2JqZWN0KSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTIwLDYgKzExMSwzNCBAQCBib29s
IEN1c3RvbUVsZW1lbnRIZWxwZXJzOjppc0ZlYXR1cmVBbGxvd2VkKHY4OjpIYW5kbGU8djg6OkNv
bnRleHQ+IGNvbnRleHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2NvbnN0IFF1YWxpZmllZE5h
bWUqIEN1c3RvbUVsZW1lbnRIZWxwZXJzOjpmaW5kTG9jYWxOYW1lKGNvbnN0IFNjcmlwdFZhbHVl
JiBwcm90b3R5cGUpCit7CisgICAgaWYgKHByb3RvdHlwZS52OFZhbHVlKCkuSXNFbXB0eSgpIHx8
ICFwcm90b3R5cGUudjhWYWx1ZSgpLT5Jc09iamVjdCgpKQorICAgICAgICByZXR1cm4gMDsKKyAg
ICByZXR1cm4gZmluZExvY2FsTmFtZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHByb3Rv
dHlwZS52OFZhbHVlKCkpKTsKK30KKworV3JhcHBlclR5cGVJbmZvKiBDdXN0b21FbGVtZW50SGVs
cGVyczo6ZmluZFdyYXBwZXJUeXBlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjaGFpbikKK3sKKyAg
ICB3aGlsZSAoIWNoYWluLklzRW1wdHkoKSAmJiBjaGFpbi0+SXNPYmplY3QoKSkgeworICAgICAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNoYWluT2JqZWN0ID0gdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0Pjo6Q2FzdChjaGFpbik7CisgICAgICAgIC8vIE9ubHkgcHJvdG90eXBlIG9iamVjdHMgb2Yg
bmF0aXZlLWJhY2tlZCB0eXBlcyBoYXZlIHRoZSBleHRyYSBpbnRlcm5hbCBmaWVsZCBzdG9yaW5n
IFdyYXBwZXJUeXBlSW5mby4KKyAgICAgICAgaWYgKHY4UHJvdG90eXBlSW50ZXJuYWxGaWVsZGNv
dW50ID09IGNoYWluT2JqZWN0LT5JbnRlcm5hbEZpZWxkQ291bnQoKSkKKyAgICAgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PFdyYXBwZXJUeXBlSW5mbyo+KGNoYWluT2JqZWN0LT5HZXRB
bGlnbmVkUG9pbnRlckZyb21JbnRlcm5hbEZpZWxkKHY4UHJvdG90eXBlVHlwZUluZGV4KSk7Cisg
ICAgICAgIGNoYWluID0gY2hhaW5PYmplY3QtPkdldFByb3RvdHlwZSgpOworICAgIH0KKworICAg
IHJldHVybiAwOworfQorCisvLyBUaGlzIGNhbiByZXR1cm4gbnVsbC4gSW4gdGhhdCBjYXNlLCB3
ZSBzaG91bGQgdGFrZSB0aGUgZWxlbWVudCBuYW1lIGFzIGl0cyBsb2NhbCBuYW1lLgorY29uc3Qg
UXVhbGlmaWVkTmFtZSogQ3VzdG9tRWxlbWVudEhlbHBlcnM6OmZpbmRMb2NhbE5hbWUodjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBjaGFpbikKK3sKKyAgICBXcmFwcGVyVHlwZUluZm8qIHR5cGUgPSBD
dXN0b21FbGVtZW50SGVscGVyczo6ZmluZFdyYXBwZXJUeXBlKGNoYWluKTsKKyAgICBpZiAoIXR5
cGUpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBmaW5kSFRNTFRhZ05hbWVPZlY4VHlw
ZSh0eXBlKTsKK30KIAogI2VuZGlmIC8vIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5oCmluZGV4
IDA4ZDFiY2JjMTg5NTY5NWRkYWFiZGFkMGZiZjNmOGI5ZDMxYWJiYTUuLmYyOTBmNTQ4ODBkMDk3
NDI1NzJhOWRkNGY4NDI5NzBlYzBiYjUxMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvQ3VzdG9tRWxlbWVudEhlbHBlcnMuaApAQCAtMzksNiArMzksNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKIAogY2xhc3MgQ3VzdG9t
RWxlbWVudENvbnN0cnVjdG9yOworY2xhc3MgUXVhbGlmaWVkTmFtZTsKIGNsYXNzIFNjcmlwdFN0
YXRlOwogCiBjbGFzcyBDdXN0b21FbGVtZW50SGVscGVycyB7CkBAIC00Niw4ICs0NywxMSBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZUNvbnN0cnVjdG9yV3JhcHBlcihDdXN0
b21FbGVtZW50Q29uc3RydWN0b3IqLCBjb25zdCBTY3JpcHRWYWx1ZSYgcHJvdG90eXBlLCBTY3Jp
cHRTdGF0ZSopOwogICAgIHN0YXRpYyBib29sIGlzVmFsaWRQcm90b3R5cGVQYXJhbWV0ZXIoY29u
c3QgU2NyaXB0VmFsdWUmLCBTY3JpcHRTdGF0ZSopOwogICAgIHN0YXRpYyBib29sIGlzRmVhdHVy
ZUFsbG93ZWQoU2NyaXB0U3RhdGUqKTsKKyAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSog
ZmluZExvY2FsTmFtZShjb25zdCBTY3JpcHRWYWx1ZSYgcHJvdG90eXBlKTsKIAogICAgIHN0YXRp
YyBib29sIGlzRmVhdHVyZUFsbG93ZWQodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4pOworICAgIHN0
YXRpYyBXcmFwcGVyVHlwZUluZm8qIGZpbmRXcmFwcGVyVHlwZSh2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gY2hhaW4pOworICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lKiBmaW5kTG9jYWxOYW1l
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY2hhaW4pOwogfTsKIAogI2VuZGlmIC8vIEVOQUJMRShD
VVNUT01fRUxFTUVOVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEN1c3RvbUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDdXN0b21F
bGVtZW50LmNwcAppbmRleCBlNWIzNGJlYjc4MDZiNTJmMjJlNjQyN2ZiZGUxYmFiYzkzOTU4OGU5
Li5mMGExNWRkODlkZTM4ZmIxY2UxZTZjOTdkZDAzMDE4MjJkZGQ4NDMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEN1c3RvbUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q3VzdG9tRWxlbWVudC5jcHAKQEAgLTQyLDI5ICs0Miwx
MCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBXcmFwcGVyVHlwZUluZm8qIGZp
bmRXcmFwcGVyVHlwZU9mKHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjaGFpbikKLXsKLSAgICB3aGls
ZSAoIWNoYWluLklzRW1wdHkoKSAmJiBjaGFpbi0+SXNPYmplY3QoKSkgewotICAgICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNoYWluT2JqZWN0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6
Q2FzdChjaGFpbik7Ci0gICAgICAgIGlmICh2OFByb3RvdHlwZUludGVybmFsRmllbGRjb3VudCA9
PSBjaGFpbk9iamVjdC0+SW50ZXJuYWxGaWVsZENvdW50KCkpCi0gICAgICAgICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxXcmFwcGVyVHlwZUluZm8qPihjaGFpbk9iamVjdC0+R2V0QWxpZ25l
ZFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZCh2OFByb3RvdHlwZVR5cGVJbmRleCkpOwotICAgICAg
ICBjaGFpbiA9IGNoYWluT2JqZWN0LT5HZXRQcm90b3R5cGUoKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gMDsKLX0KLQotdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOEN1c3RvbUVsZW1lbnQ6OmNyZWF0
ZVdyYXBwZXIoUGFzc1JlZlB0cjxFbGVtZW50PiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IFY4Q3VzdG9tRWxlbWVudDo6Y3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPEVsZW1lbnQ+
IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCBQYXNzUmVmUHRy
PEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY29uc3RydWN0b3IsIHY4OjpJc29sYXRlKiBpc29s
YXRlKQogewogICAgIEFTU0VSVChpbXBsKTsKLQotICAgIFJlZlB0cjxDdXN0b21FbGVtZW50Q29u
c3RydWN0b3I+IGNvbnN0cnVjdG9yID0gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Ojpjb25zdHJ1Y3Rv
ck9mKGltcGwuZ2V0KCkpOwotICAgIGlmICghY29uc3RydWN0b3IpIHsKLSAgICAgICAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHdyYXBwZXJWYWx1ZSA9IFdlYkNvcmU6OnRvVjgodG9IVE1MVW5rbm93
bkVsZW1lbnQodG9IVE1MRWxlbWVudChpbXBsLmdldCgpKSksIGNyZWF0aW9uQ29udGV4dCwgaXNv
bGF0ZSk7Ci0gICAgICAgIGlmICghd3JhcHBlclZhbHVlLklzRW1wdHkoKSAmJiB3cmFwcGVyVmFs
dWUtPklzT2JqZWN0KCkpCi0gICAgICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pjo6Q2FzdCh3cmFwcGVyVmFsdWUpOwotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PigpOwotICAgIH0KKyAgICBSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBwcm90
ZWN0ZWRDb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rvcik7CiAKICAgICAvLyBUaGUgY29uc3RydWN0b3Ig
YW5kIHJlZ2lzdGVyZWQgbGlmZWN5Y2xlIGNhbGxiYWNrcyBzaG91bGQgYmUgdmlzaWJsZSBvbmx5
IGZyb20gbWFpbiB3b3JsZC4KICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGRuJ3QgYmUgbmVlZGVk
IG9uY2UgZWFjaCBjdXN0b20gZWxlbWVudCBoYXMgaXRzIG93biBGdW5jdGlvblRlbXBsYXRlCkBA
IC03NiwxMiArNTcsMTIgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOEN1c3RvbUVsZW1lbnQ6
OmNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxFbGVtZW50PiBpbXBsLAogICAgICAgICByZXR1cm4g
d3JhcHBlcjsKICAgICB9CiAKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3JW
YWx1ZSA9IFdlYkNvcmU6OnRvVjgoY29uc3RydWN0b3IuZ2V0KCksIGNyZWF0aW9uQ29udGV4dCwg
aXNvbGF0ZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yVmFsdWUgPSBX
ZWJDb3JlOjp0b1Y4KHByb3RlY3RlZENvbnN0cnVjdG9yLmdldCgpLCBjcmVhdGlvbkNvbnRleHQs
IGlzb2xhdGUpOwogICAgIGlmIChjb25zdHJ1Y3RvclZhbHVlLklzRW1wdHkoKSB8fCAhY29uc3Ry
dWN0b3JWYWx1ZS0+SXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4oKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNvbnN0cnVjdG9yV2FwcGVyID0g
djg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChjb25zdHJ1Y3RvclZhbHVlKTsKICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHByb3RvdHlwZSA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNh
c3QoY29uc3RydWN0b3JXYXBwZXItPkdldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInByb3RvdHlw
ZSIpKSk7Ci0gICAgV3JhcHBlclR5cGVJbmZvKiB0eXBlSW5mbyA9IGZpbmRXcmFwcGVyVHlwZU9m
KHByb3RvdHlwZSk7CisgICAgV3JhcHBlclR5cGVJbmZvKiB0eXBlSW5mbyA9IEN1c3RvbUVsZW1l
bnRIZWxwZXJzOjpmaW5kV3JhcHBlclR5cGUocHJvdG90eXBlKTsKICAgICBpZiAoIXR5cGVJbmZv
KQogICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEN1c3RvbUVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q3VzdG9tRWxlbWVudC5oCmluZGV4IDcwMGQ4YjUxOTlhYjQy
YjZkY2FmYjk4MDgxNDQ3NjZkYTk2NmQwMzYuLmY3Nzc3YzVkYTQyOWJhMGZkZmI1Y2YwNmI5YWJh
OTgwYmE0YzcxM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q3Vz
dG9tRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q3VzdG9tRWxl
bWVudC5oCkBAIC0zMSw2ICszMSw5IEBACiAjaWZuZGVmIFY4Q3VzdG9tRWxlbWVudF9oCiAjZGVm
aW5lIFY4Q3VzdG9tRWxlbWVudF9oCiAKKyNpbmNsdWRlICJDdXN0b21FbGVtZW50Q29uc3RydWN0
b3IuaCIKKyNpbmNsdWRlICJDdXN0b21FbGVtZW50UmVnaXN0cnkuaCIKKyNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5o
IgogI2luY2x1ZGUgIlY4SFRNTEVsZW1lbnQuaCIKQEAgLTQwLDQ1ICs0MywzMSBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBFbGVtZW50OworY2xhc3MgQ3VzdG9tRWxlbWVudENvbnN0
cnVjdG9yOwogCiAjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKIAogY2xhc3MgVjhDdXN0b21F
bGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgo
RWxlbWVudCosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogPSAwKTsKLSAgICBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwKEVsZW1lbnQqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNy
ZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3cmFwKEVsZW1lbnQqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29u
dGV4dCwgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+LCB2ODo6SXNvbGF0ZSop
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY29uc3Ry
dWN0b3JPZihFbGVtZW50Kik7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gY3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPEVsZW1lbnQ+LCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxFbGVtZW50Piwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiwgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+LCB2ODo6SXNvbGF0ZSop
OwogfTsKIAotaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEN1c3RvbUVsZW1lbnQ6OnRv
VjgoRWxlbWVudCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQs
IHY4OjpJc29sYXRlKiBpc29sYXRlKQotewotICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCi0gICAg
ICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyKGltcGwsIGlzb2xhdGUp
OwotICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB3cmFwcGVyOwot
ICAgIHJldHVybiBWOEN1c3RvbUVsZW1lbnQ6OndyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBp
c29sYXRlKTsKLX0KLQotaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhDdXN0b21FbGVt
ZW50Ojp3cmFwKEVsZW1lbnQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25D
b250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IFY4Q3VzdG9tRWxlbWVudDo6d3JhcChFbGVtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0
b3I+IGNvbnN0cnVjdG9yLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICBBU1NFUlQoaW1w
bCk7CiAgICAgQVNTRVJUKERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlcihpbXBsLCBpc29sYXRlKS5J
c0VtcHR5KCkpOwotICAgIHJldHVybiBWOEN1c3RvbUVsZW1lbnQ6OmNyZWF0ZVdyYXBwZXIoaW1w
bCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICByZXR1cm4gVjhDdXN0b21FbGVtZW50
OjpjcmVhdGVXcmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgY29uc3RydWN0b3IsIGlzb2xh
dGUpOwogfQogCi0jZWxzZSAvLyBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQotCi1jbGFzcyBWOEN1
c3RvbUVsZW1lbnQgewotcHVibGljOgotICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IHdyYXAoRWxlbWVudCosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0g
djg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogPSAwKTsKLX07Ci0KLWlubGlu
ZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IEhUTUxDdXN0b21FbGVtZW50Ojp3cmFwKEVsZW1lbnQq
IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSkKK2lubGluZSBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4g
VjhDdXN0b21FbGVtZW50Ojpjb25zdHJ1Y3Rvck9mKEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAg
cmV0dXJuIHdyYXAodG9IVE1MVW5rbm93bkVsZW1lbnQoaW1wbCksIGNyZWF0aW9uQ29udGV4dCwg
aXNvbGF0ZSk7CisgICAgaWYgKEN1c3RvbUVsZW1lbnRSZWdpc3RyeSogcmVnaXN0cnkgPSBlbGVt
ZW50LT5kb2N1bWVudCgpLT5yZWdpc3RyeSgpKQorICAgICAgICByZXR1cm4gcmVnaXN0cnktPmZp
bmRGb3IoZWxlbWVudCk7CisgICAgcmV0dXJuIDA7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQ1VT
VE9NX0VMRU1FTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3Jh
cHBlclR5cGVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUlu
Zm8uaAppbmRleCA0NTZlMDAyMDE5ZmZhYjU0MmZkZWI1ZmNhZTc2ODhmNzk1MGFhMzU2Li45NWNl
NzdhZjE1MDljOWRkMWQxNGUxOTBlMjE3NTQwYjk5ZDU3Y2IxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaApAQCAtMTc4LDYgKzE3OCwxMSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdyYXBwZXJDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRp
b24gPSB7djhET01Ob2RlQ2xhc3NJZCwgbGlmZXRpbWV9OwogICAgICAgICByZXR1cm4gY29uZmln
dXJhdGlvbjsKICAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbGVtZW50VHlwZT4KKyAgICBj
bGFzcyBXcmFwcGVyVHlwZVRyYWl0cyB7CisgICAgICAgIC8vIHNwZWNpYWxpemVkIGNsYXNzZXMg
aGF2ZSB0aGllciBvd24gZnVuY3Rpb25zLCB3aGljaCBhcmUgZ2VuZXJhdGVkIGJ5IGJpbmRpbmcg
Z2VuZXJhdG9yLgorICAgIH07CiB9CiAKICNlbmRpZiAvLyBXcmFwcGVyVHlwZUluZm9faApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tRWxlbWVu
dENvbnN0cnVjdG9yQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvckN1c3RvbS5jcHAKaW5kZXggOGVkNzliODVlMDY4
NWJlMTA0MDljNzVjNTNhNTAyMzhlZTgyZmM2OS4uNTVlMzhjZTk5NWY5M2ZmZTZhNTJkMmVjZWY0
ZGVmMDk2NGY5NTYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21FbGVtZW50Q29uc3RydWN0b3JDdXN0b20u
Y3BwCkBAIC00OCw3ICs0OCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEN1c3RvbUVsZW1l
bnRDb25zdHJ1Y3Rvcjo6Y2FsbEFzRnVuY3Rpb25DYWxsYmFjayhjb25zdCB2CiAgICAgUmVmUHRy
PEVsZW1lbnQ+IGVsZW1lbnQgPSBpbXBsLT5jcmVhdGVFbGVtZW50KCk7CiAgICAgaWYgKCFlbGVt
ZW50KQogICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKLSAgICByZXR1cm4gVjhDdXN0b21F
bGVtZW50Ojp0b1Y4KGVsZW1lbnQuZ2V0KCksIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0
ZSgpKTsKKyAgICByZXR1cm4gVjhDdXN0b21FbGVtZW50Ojp3cmFwKGVsZW1lbnQuZ2V0KCksIGFy
Z3MuSG9sZGVyKCksIGltcGwsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudENvbnN0cnVj
dG9yLmNwcAppbmRleCBjOTc1ZDZjNTMyMmY0NWYyNjVhYjJkN2I3YmM5NTMyMTRjZTEwMTY4Li5h
YThkYTM1NGZiNmYxNzdmY2E0ZTQzYTk1YmZjNTdjNDg0MDZkMzdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmNwcApAQCAtMzcsMjEgKzM3LDI1
IEBACiAjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudEhlbHBlcnMuaCIKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAj
aW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNz
UmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9y
OjpjcmVhdGUoU2NyaXB0U3RhdGUqIHN0YXRlLCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IFNjcmlwdFZhbHVlJiBwcm90b3R5cGUpCitQYXNzUmVm
UHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjpj
cmVhdGUoU2NyaXB0U3RhdGUqIHN0YXRlLCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGVsZW1lbnROYW1lLCBjb25zdCBRdWFsaWZpZWROYW1lJiBsb2NhbE5hbWUsIGNv
bnN0IFNjcmlwdFZhbHVlJiBwcm90b3R5cGUpCiB7Ci0gICAgUmVmUHRyPEN1c3RvbUVsZW1lbnRD
b25zdHJ1Y3Rvcj4gY3JlYXRlZCA9IGFkb3B0UmVmKG5ldyBDdXN0b21FbGVtZW50Q29uc3RydWN0
b3IoZG9jdW1lbnQsIG5hbWUpKTsKKyAgICBBU1NFUlQoQ3VzdG9tRWxlbWVudEhlbHBlcnM6Omlz
VmFsaWRQcm90b3R5cGVQYXJhbWV0ZXIocHJvdG90eXBlLCBzdGF0ZSkpOworICAgIEFTU0VSVChs
b2NhbE5hbWUgPT0gZWxlbWVudE5hbWUgfHwgbG9jYWxOYW1lID09ICpDdXN0b21FbGVtZW50SGVs
cGVyczo6ZmluZExvY2FsTmFtZShwcm90b3R5cGUpKTsKKyAgICBSZWZQdHI8Q3VzdG9tRWxlbWVu
dENvbnN0cnVjdG9yPiBjcmVhdGVkID0gYWRvcHRSZWYobmV3IEN1c3RvbUVsZW1lbnRDb25zdHJ1
Y3Rvcihkb2N1bWVudCwgZWxlbWVudE5hbWUsIGxvY2FsTmFtZSkpOwogICAgIGlmICghQ3VzdG9t
RWxlbWVudEhlbHBlcnM6OmluaXRpYWxpemVDb25zdHJ1Y3RvcldyYXBwZXIoY3JlYXRlZC5nZXQo
KSwgcHJvdG90eXBlLCBzdGF0ZSkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBjcmVh
dGVkLnJlbGVhc2UoKTsKIH0KIAotQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjpDdXN0b21FbGVt
ZW50Q29uc3RydWN0b3IoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lKQorQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjpDdXN0b21FbGVtZW50Q29uc3RydWN0b3Io
RG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBlbGVtZW50TmFtZSwgY29u
c3QgUXVhbGlmaWVkTmFtZSYgbG9jYWxOYW1lKQogICAgIDogQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXIoZG9jdW1lbnQpCi0gICAgLCBtX25hbWUobmFtZSkKKyAgICAsIG1fZWxlbWVudE5hbWUo
ZWxlbWVudE5hbWUpCisgICAgLCBtX2xvY2FsTmFtZShsb2NhbE5hbWUpCiB7CiB9CiAKQEAgLTYz
LDcgKzY3LDE2IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9y
OjpjcmVhdGVFbGVtZW50KCkgY29uc3QKIHsKICAgICBpZiAoIWRvY3VtZW50KCkpCiAgICAgICAg
IHJldHVybiAwOwotICAgIHJldHVybiBIVE1MRWxlbWVudDo6Y3JlYXRlKG1fbmFtZSwgZG9jdW1l
bnQoKSk7CisgICAgaWYgKG1fbG9jYWxOYW1lICE9IG1fZWxlbWVudE5hbWUpCisgICAgICAgIHJl
dHVybiBtYXJrQXNFeHRlbmRlZEN1c3RvbUVsZW1lbnQoZG9jdW1lbnQoKS0+Y3JlYXRlRWxlbWVu
dChtX2xvY2FsTmFtZSwgZG9jdW1lbnQoKSksIG1fZWxlbWVudE5hbWUubG9jYWxOYW1lKCkpOwor
ICAgIHJldHVybiBIVE1MRWxlbWVudDo6Y3JlYXRlKG1fZWxlbWVudE5hbWUsIGRvY3VtZW50KCkp
OworfQorCitQYXNzUmVmUHRyPEVsZW1lbnQ+IG1hcmtBc0V4dGVuZGVkQ3VzdG9tRWxlbWVudChQ
YXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZUV4dGVu
c2lvbikKK3sKKyAgICBpZiAoIXR5cGVFeHRlbnNpb24uaXNFbXB0eSgpKQorICAgICAgICBlbGVt
ZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjppc0F0dHIsIHR5cGVFeHRlbnNpb24pOworICAg
IHJldHVybiBlbGVtZW50OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxl
bWVudENvbnN0cnVjdG9yLmgKaW5kZXggODQ0ZTBlOGIzZDk5ZjIyOWZjYzJmMjMzNGQ0MDM1MjU0
YjU2NDA4My4uNWY0Y2YzN2Q2MjdhMGU4Y2MzNjk2NjFmOTQyNjI2MzQyZjUyYjM0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50Q29uc3RydWN0b3IuaApAQCAtNDgsMjEg
KzQ4LDI1IEBAIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBTY3JpcHRTdGF0ZTsKIGNsYXNzIFNjcmlw
dFZhbHVlOwogCitQYXNzUmVmUHRyPEVsZW1lbnQ+IG1hcmtBc0V4dGVuZGVkQ3VzdG9tRWxlbWVu
dChQYXNzUmVmUHRyPEVsZW1lbnQ+LCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVFeHRlbnNpb24p
OworCiBjbGFzcyBDdXN0b21FbGVtZW50Q29uc3RydWN0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxD
dXN0b21FbGVtZW50Q29uc3RydWN0b3I+ICwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2Vy
dmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3Ry
dWN0b3I+IGNyZWF0ZShTY3JpcHRTdGF0ZSosIERvY3VtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IFNjcmlwdFZhbHVlJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q3VzdG9tRWxl
bWVudENvbnN0cnVjdG9yPiBjcmVhdGUoU2NyaXB0U3RhdGUqLCBEb2N1bWVudCosIGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBRdWFsaWZpZWROYW1lJiBsb2NhbE5hbWUsIGNvbnN0IFNjcmlw
dFZhbHVlJik7CiAKICAgICB2aXJ0dWFsIH5DdXN0b21FbGVtZW50Q29uc3RydWN0b3IoKTsKIAog
ICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PERvY3Vt
ZW50Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsgfQotICAgIGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICBjb25zdCBRdWFsaWZpZWRO
YW1lJiBlbGVtZW50TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudE5hbWU7IH0KKyAgICBj
b25zdCBRdWFsaWZpZWROYW1lJiBsb2NhbE5hbWUoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsTmFt
ZTsgfQogCiAgICAgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50KCkgY29uc3Q7Ci0g
ICAgCisKIHByaXZhdGU6Ci0gICAgQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yKERvY3VtZW50Kiwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvcihEb2N1
bWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGVsZW1lbnROYW1lLCBjb25zdCBRdWFsaWZpZWRO
YW1lJiBsb2NhbE5hbWUpOwogCi0gICAgUXVhbGlmaWVkTmFtZSBtX25hbWU7CisgICAgUXVhbGlm
aWVkTmFtZSBtX2VsZW1lbnROYW1lOworICAgIFF1YWxpZmllZE5hbWUgbV9sb2NhbE5hbWU7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lz
dHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCmlu
ZGV4IGQ4YjBjZDkwNTUwNjVmMzc4ZGE2NzgxYWViMjAxN2QzYjNhN2E2ZmEuLmYwN2JkZGY0OWY0
Yzc0MzQ1YmJmYzk0ZDQ5ZDRhMTY4N2IzYmQ5YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
dXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisj
aW5jbHVkZSAiSFRNTFVua25vd25FbGVtZW50LmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAKQEAgLTYyLDE4ICs2Mywx
NSBAQCBDdXN0b21FbGVtZW50UmVnaXN0cnk6On5DdXN0b21FbGVtZW50UmVnaXN0cnkoKQogewog
fQogCi1QYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gQ3VzdG9tRWxlbWVudFJl
Z2lzdHJ5Ojpjb25zdHJ1Y3Rvck9mKEVsZW1lbnQqIGVsZW1lbnQpCitzdGF0aWMgaW5saW5lIGJv
b2wgbmFtZUluY2x1ZGVzSHlwaGVuKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKLSAgICBS
ZWZQdHI8Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5PiBzZWxmID0gZWxlbWVudC0+ZG9jdW1lbnQoKS0+
cmVnaXN0cnkoKTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVy
biBzZWxmLT5maW5kKGVsZW1lbnQtPnRhZ1FOYW1lKCkpOworICAgIHNpemVfdCBoeXBoZW5Qb3Np
dGlvbiA9IG5hbWUuZmluZCgnLScpOworICAgIHJldHVybiAoaHlwaGVuUG9zaXRpb24gIT0gbm90
Rm91bmQpOwogfQogCiBib29sIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6aXNWYWxpZE5hbWUoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lKQogewotICAgIHNpemVfdCBoeXBoZW5Qb3NpdGlvbiA9IG5h
bWUuZmluZCgnLScpOwotICAgIGlmIChoeXBoZW5Qb3NpdGlvbiA9PSBub3RGb3VuZCkKKyAgICBp
ZiAoIW5hbWVJbmNsdWRlc0h5cGhlbihuYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChWZWN0b3I8QXRvbWljU3RyaW5nPiwgcmVzZXJ2ZWROYW1l
cywgKCkpOwpAQCAtMTEyLDExICsxMTAsNiBAQCBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25z
dHJ1Y3Rvcj4gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpyZWdpc3RlckVsZW1lbnQoU2NyaQogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgICAgIAotICAgIGlmIChmaW5kKG5ld05hbWUpKSB7
Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAg
IH0KLQogICAgIFNjcmlwdFZhbHVlIHByb3RvdHlwZVZhbHVlOwogICAgIGlmICghb3B0aW9ucy5n
ZXQoInByb3RvdHlwZSIsIHByb3RvdHlwZVZhbHVlKSkgewogICAgICAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHRoZSBkZWZhdWx0IHZhbHVlIGhhbmRsaW5nLgpAQCAtMTMyLDMzICsxMjUsNzEgQEAg
UGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IEN1c3RvbUVsZW1lbnRSZWdpc3Ry
eTo6cmVnaXN0ZXJFbGVtZW50KFNjcmkKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorCisgICAgaWYgKG1fbmFtZXMuY29udGFpbnMobmV3
TmFtZSkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQorCisgICAgY29uc3QgUXVhbGlmaWVkTmFtZSogbG9jYWxOYW1lRm91bmQgPSBD
dXN0b21FbGVtZW50SGVscGVyczo6ZmluZExvY2FsTmFtZShwcm90b3R5cGVWYWx1ZSk7CisgICAg
UXVhbGlmaWVkTmFtZSBsb2NhbE5hbWVUb1VzZSA9IGxvY2FsTmFtZUZvdW5kID8gKmxvY2FsTmFt
ZUZvdW5kIDogbmV3TmFtZTsKKyAgICBpZiAoZmluZChuZXdOYW1lLCBsb2NhbE5hbWVUb1VzZSkp
IHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQogICAgIAotICAgIC8vIEFuIHNjcmlwdCBleGVjdXRpb24gY291bGQgaGFwcGVuIGluIGlz
VmFsaWRQcm90b3R5cGVQYXJhbWV0ZXIoKSwgd2hpY2gga2lsbHMgdGhlIGRvY3VtZW50LgorICAg
IC8vIEEgc2NyaXB0IGV4ZWN1dGlvbiBjb3VsZCBoYXBwZW4gaW4gaXNWYWxpZFByb3RvdHlwZVBh
cmFtZXRlcigpLCB3aGljaCBraWxscyB0aGUgZG9jdW1lbnQuCiAgICAgaWYgKCFkb2N1bWVudCgp
KSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KIAotICAgIFJlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGNvbnN0cnVjdG9y
ID0gQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjpjcmVhdGUoc3RhdGUsIGRvY3VtZW50KCksIG5l
d05hbWUsIHByb3RvdHlwZVZhbHVlKTsKKyAgICBSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVj
dG9yPiBjb25zdHJ1Y3RvciA9IEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHN0YXRl
LCBkb2N1bWVudCgpLCBuZXdOYW1lLCBsb2NhbE5hbWVUb1VzZSwgcHJvdG90eXBlVmFsdWUpOwog
ICAgIGlmICghY29uc3RydWN0b3IpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgICAgICAKLSAgICBtX2NvbnN0cnVjdG9ycy5h
ZGQoY29uc3RydWN0b3ItPm5hbWUoKS5pbXBsKCksIGNvbnN0cnVjdG9yKTsKKyAgICBtX2NvbnN0
cnVjdG9ycy5hZGQoc3RkOjptYWtlX3BhaXIoY29uc3RydWN0b3ItPmVsZW1lbnROYW1lKCksIGNv
bnN0cnVjdG9yLT5sb2NhbE5hbWUoKSksIGNvbnN0cnVjdG9yKTsKKyAgICBtX25hbWVzLmFkZChj
b25zdHJ1Y3Rvci0+ZWxlbWVudE5hbWUoKSk7CisKICAgICByZXR1cm4gY29uc3RydWN0b3I7CiB9
CiAKLVBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBDdXN0b21FbGVtZW50UmVn
aXN0cnk6OmZpbmQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKK1Bhc3NSZWZQdHI8
Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmZpbmRGb3Io
RWxlbWVudCogZWxlbWVudCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZWxlbWVudC0+ZG9jdW1lbnQo
KS0+cmVnaXN0cnkoKSA9PSB0aGlzKTsKKworICAgIC8vIE1vc3QgZWxlbWVudHMgY2FuIGJlIHJl
amVjdGVkIHRoaXMgcXVpY2sgc2NyZWVuaW5nLgorICAgIGlmICghbmFtZUluY2x1ZGVzSHlwaGVu
KGVsZW1lbnQtPnRhZ05hbWUoKSkgJiYgIWVsZW1lbnQtPmhhc0F0dHJpYnV0ZShIVE1MTmFtZXM6
OmlzQXR0cikpCisgICAgICAgIHJldHVybiAwOworCisgICAgUXVhbGlmaWVkTmFtZSBpZFZhbHVl
KG51bGxBdG9tLCBlbGVtZW50LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjppc0F0dHIpLCBIVE1M
TmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJKTsKKyAgICByZXR1cm4gZmluZChpZFZhbHVlLCBlbGVt
ZW50LT50YWdRTmFtZSgpKTsKK30KKworUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0
b3I+IEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZmluZChjb25zdCBRdWFsaWZpZWROYW1lJiBlbGVt
ZW50TmFtZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbG9jYWxOYW1lKSBjb25zdAogewotICAgIENv
bnN0cnVjdG9yTWFwOjpjb25zdF9pdGVyYXRvciBmb3VuZCA9IG1fY29uc3RydWN0b3JzLmZpbmQo
bmFtZS5pbXBsKCkpOwotICAgIHJldHVybiAoZm91bmQgIT0gbV9jb25zdHJ1Y3RvcnMuZW5kKCkp
ID8gZm91bmQtPnZhbHVlIDogMDsKKyAgICBDb25zdHJ1Y3Rvck1hcDo6Y29uc3RfaXRlcmF0b3Ig
Zm91bmQgPSBtX2NvbnN0cnVjdG9ycy5lbmQoKTsKKyAgICBpZiAoIWVsZW1lbnROYW1lLmxvY2Fs
TmFtZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgZm91bmQgPSBtX2NvbnN0cnVjdG9ycy5maW5kKHN0
ZDo6bWFrZV9wYWlyKGVsZW1lbnROYW1lLCBsb2NhbE5hbWUpKTsKKyAgICBpZiAoZm91bmQgPT0g
bV9jb25zdHJ1Y3RvcnMuZW5kKCkpCisgICAgICAgIGZvdW5kID0gbV9jb25zdHJ1Y3RvcnMuZmlu
ZChzdGQ6Om1ha2VfcGFpcihsb2NhbE5hbWUsIGxvY2FsTmFtZSkpOworICAgIGlmIChmb3VuZCA9
PSBtX2NvbnN0cnVjdG9ycy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGZv
dW5kLT52YWx1ZTsKIH0KIAotUGFzc1JlZlB0cjxFbGVtZW50PiBDdXN0b21FbGVtZW50UmVnaXN0
cnk6OmNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKK1Bhc3NS
ZWZQdHI8RWxlbWVudD4gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpjcmVhdGVFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlRXh0ZW5z
aW9uKSBjb25zdAogewotICAgIGlmIChSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBm
b3VuZCA9IGZpbmQobmFtZSkpCi0gICAgICAgIHJldHVybiBmb3VuZC0+Y3JlYXRlRWxlbWVudCgp
OworICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGVsZW1lbnROYW1lID0gUXVhbGlmaWVkTmFtZShu
dWxsQXRvbSwgdHlwZUV4dGVuc2lvbiwgbG9jYWxOYW1lLm5hbWVzcGFjZVVSSSgpKTsKKyAgICBp
ZiAoUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gZm91bmQgPSBmaW5kKGVsZW1lbnRO
YW1lLCBsb2NhbE5hbWUpKSB7CisgICAgICAgIFJlZlB0cjxFbGVtZW50PiBjcmVhdGVkID0gZm91
bmQtPmNyZWF0ZUVsZW1lbnQoKTsKKyAgICAgICAgaWYgKCFlbGVtZW50TmFtZS5sb2NhbE5hbWUo
KS5pc0VtcHR5KCkgJiYgbG9jYWxOYW1lICE9IGVsZW1lbnROYW1lKQorICAgICAgICAgICAgcmV0
dXJuIG1hcmtBc0V4dGVuZGVkQ3VzdG9tRWxlbWVudChjcmVhdGVkLCB0eXBlRXh0ZW5zaW9uKTsK
KyAgICAgICAgcmV0dXJuIGNyZWF0ZWQucmVsZWFzZSgpOworICAgIH0KKwogICAgIHJldHVybiAw
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lz
dHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgKaW5kZXgg
MjA4MmNkNzYyMmNmNjJlYWJlMTM2ZDZhZmIyN2E0ZGFhNjJlNzI3YS4uMTAyYWEzZGUzOGMyMTE2
OGUwYzdiNzBjNjUyOGEyYTFhOTFkZTRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21F
bGVtZW50UmVnaXN0cnkuaApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIlNjcmlwdFZhbHVl
LmgiCiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAg
LTU5LDE4ICs2MCwyMCBAQCBwdWJsaWM6CiAgICAgfkN1c3RvbUVsZW1lbnRSZWdpc3RyeSgpOwog
CiAgICAgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IHJlZ2lzdGVyRWxlbWVu
dChXZWJDb3JlOjpTY3JpcHRTdGF0ZSosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3Qg
RGljdGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8Q3Vz
dG9tRWxlbWVudENvbnN0cnVjdG9yPiBmaW5kKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsK
LSAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBmaW5k
Rm9yKEVsZW1lbnQqKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1
Y3Rvcj4gZmluZChjb25zdCBRdWFsaWZpZWROYW1lJiBlbGVtZW50TmFtZSwgY29uc3QgUXVhbGlm
aWVkTmFtZSYgbG9jYWxOYW1lKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbG9jYWxOYW1lLCBjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGVFeHRlbnNpb24pIGNvbnN0OworCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29u
c3Q7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGNv
bnN0cnVjdG9yT2YoRWxlbWVudCopOwotICAgIAogcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBp
c1ZhbGlkTmFtZShjb25zdCBBdG9taWNTdHJpbmcmKTsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxR
dWFsaWZpZWROYW1lOjpRdWFsaWZpZWROYW1lSW1wbCosIFJlZlB0cjxDdXN0b21FbGVtZW50Q29u
c3RydWN0b3I+ID5Db25zdHJ1Y3Rvck1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8c3RkOjpwYWly
PFF1YWxpZmllZE5hbWUsIFF1YWxpZmllZE5hbWU+LCBSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0
cnVjdG9yPiA+IENvbnN0cnVjdG9yTWFwOworICAgIHR5cGVkZWYgSGFzaFNldDxRdWFsaWZpZWRO
YW1lPiBOYW1lU2V0OwogCiAgICAgQ29uc3RydWN0b3JNYXAgbV9jb25zdHJ1Y3RvcnM7CisgICAg
TmFtZVNldCBtX25hbWVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKaW5kZXggMjZmMWNkYmRkODE4OTMyOWQ4MGI0MTNkNDllYzc5Njk2MjA3NjQw
Zi4uNGE0OWQ0MmU2ZTg5YTQ3YzQyMjkxYmNjZWE2Y2E3OWI4ZGYyNzMwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCkBAIC04MzMsNiArODMzLDQxIEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gRG9j
dW1lbnQ6OmNyZWF0ZUVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25D
CiB9CiAKICNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorUGFzc1JlZlB0cjxFbGVtZW50PiBE
b2N1bWVudDo6Y3JlYXRlRWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlRXh0ZW5zaW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAg
ICBpZiAoIWlzVmFsaWROYW1lKGxvY2FsTmFtZSkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0NI
QVJBQ1RFUl9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmIChtX3JlZ2lz
dHJ5KSB7CisgICAgICAgIGlmIChQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZWQgPSBtX3JlZ2lz
dHJ5LT5jcmVhdGVFbGVtZW50KFF1YWxpZmllZE5hbWUobnVsbEF0b20sIGxvY2FsTmFtZSwgeGh0
bWxOYW1lc3BhY2VVUkkpLCB0eXBlRXh0ZW5zaW9uKSkKKyAgICAgICAgICAgIHJldHVybiBjcmVh
dGVkOworICAgIH0KKworICAgIHJldHVybiBtYXJrQXNFeHRlbmRlZEN1c3RvbUVsZW1lbnQoY3Jl
YXRlRWxlbWVudChsb2NhbE5hbWUsIGVjKSwgdHlwZUV4dGVuc2lvbik7IC8vICBGSVhNRTogdGFr
ZSBjYXJlIG9mIEBpcworfQorCitQYXNzUmVmUHRyPEVsZW1lbnQ+IERvY3VtZW50OjpjcmVhdGVF
bGVtZW50TlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYg
cXVhbGlmaWVkTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlRXh0ZW5zaW9uLCBFeGNlcHRp
b25Db2RlJiBlYykKK3sKKyAgICBTdHJpbmcgcHJlZml4LCBsb2NhbE5hbWU7CisgICAgaWYgKCFw
YXJzZVF1YWxpZmllZE5hbWUocXVhbGlmaWVkTmFtZSwgcHJlZml4LCBsb2NhbE5hbWUsIGVjKSkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBRdWFsaWZpZWROYW1lIHFOYW1lKHByZWZpeCwgbG9j
YWxOYW1lLCBuYW1lc3BhY2VVUkkpOworICAgIGlmICghaGFzVmFsaWROYW1lc3BhY2VGb3JFbGVt
ZW50cyhxTmFtZSkpIHsKKyAgICAgICAgZWMgPSBOQU1FU1BBQ0VfRVJSOworICAgICAgICByZXR1
cm4gMDsKKyAgICB9CisKKyAgICBpZiAobV9yZWdpc3RyeSkgeworICAgICAgICBpZiAoUGFzc1Jl
ZlB0cjxFbGVtZW50PiBjcmVhdGVkID0gbV9yZWdpc3RyeS0+Y3JlYXRlRWxlbWVudChxTmFtZSwg
dHlwZUV4dGVuc2lvbikpCisgICAgICAgICAgICByZXR1cm4gY3JlYXRlZDsKKyAgICB9CisKKyAg
ICByZXR1cm4gbWFya0FzRXh0ZW5kZWRDdXN0b21FbGVtZW50KGNyZWF0ZUVsZW1lbnROUyhuYW1l
c3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIGVjKSwgdHlwZUV4dGVuc2lvbik7Cit9CisKIFBhc3NS
ZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBEb2N1bWVudDo6cmVnaXN0ZXJFbGVtZW50
KFdlYkNvcmU6OlNjcmlwdFN0YXRlKiBzdGF0ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKICAgICByZXR1cm4gcmVnaXN0ZXJFbGVtZW50KHN0YXRlLCBu
YW1lLCBEaWN0aW9uYXJ5KCksIGVjKTsKQEAgLTg0OSwxMSArODg0LDYgQEAgUGFzc1JlZlB0cjxD
dXN0b21FbGVtZW50Q29uc3RydWN0b3I+IERvY3VtZW50OjpyZWdpc3RlckVsZW1lbnQoV2ViQ29y
ZTo6U2NyaXB0U3QKICAgICAgICAgbV9yZWdpc3RyeSA9IGFkb3B0UmVmKG5ldyBDdXN0b21FbGVt
ZW50UmVnaXN0cnkodGhpcykpOwogICAgIHJldHVybiBtX3JlZ2lzdHJ5LT5yZWdpc3RlckVsZW1l
bnQoc3RhdGUsIG5hbWUsIG9wdGlvbnMsIGVjKTsKIH0KLQotUGFzc1JlZlB0cjxDdXN0b21FbGVt
ZW50UmVnaXN0cnk+IERvY3VtZW50OjpyZWdpc3RyeSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
cmVnaXN0cnk7Ci19CiAjZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKIAogUGFzc1Jl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDFlZjAzMzg1MDM3ZTgzMGI4MDVhZDgwNDBiY2M2OGEz
MDc5ZmEwYmYuLmE0MDNkYWEzNWE2OGUyMjY0OWU4OGJmMWQ4ODdlMzliODkxMmYyZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCkBAIC0xMTQ2LDkgKzExNDYsMTEgQEAgcHVibGljOgogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gY3Jl
YXRlRWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlRXh0ZW5zaW9uLCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxFbGVt
ZW50PiBjcmVhdGVFbGVtZW50TlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNv
bnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlRXh0ZW5z
aW9uLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3Ry
dWN0b3I+IHJlZ2lzdGVyRWxlbWVudChXZWJDb3JlOjpTY3JpcHRTdGF0ZSosIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8Q3VzdG9tRWxl
bWVudENvbnN0cnVjdG9yPiByZWdpc3RlckVsZW1lbnQoV2ViQ29yZTo6U2NyaXB0U3RhdGUqLCBj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIEV4Y2Vw
dGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRSZWdpc3RyeT4gcmVnaXN0
cnkoKSBjb25zdDsKKyAgICBDdXN0b21FbGVtZW50UmVnaXN0cnkqIHJlZ2lzdHJ5KCkgY29uc3Qg
eyByZXR1cm4gbV9yZWdpc3RyeS5nZXQoKTsgfQogI2VuZGlmCiAKICAgICB2b2lkIGFkanVzdEZs
b2F0UXVhZHNGb3JTY3JvbGxBbmRBYnNvbHV0ZVpvb21BbmRGcmFtZVNjYWxlKFZlY3RvcjxGbG9h
dFF1YWQ+JiwgUmVuZGVyT2JqZWN0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAppbmRleCAwZTA2
ZmM3ZjJkODE5MTZmODUyNTUwMDhiMjc5YmNjNTVjZDNjMDhlLi43ZTI3ODhkZWIwZWNjNGVmMmY2
N2YwYTY5ODQ3Mzk1MDZmZjFhODFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKQEAgLTM1OSw2
ICszNTksOSBAQAogI2lmIGRlZmluZWQoRU5BQkxFX0NVU1RPTV9FTEVNRU5UUykgJiYgRU5BQkxF
X0NVU1RPTV9FTEVNRU5UUwogICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWU9Y3VzdG9tRE9NRWxlbWVu
dHMsIENvbmRpdGlvbmFsPUNVU1RPTV9FTEVNRU5UUywgSW1wbGVtZW50ZWRBcz1yZWdpc3RlckVs
ZW1lbnQsIENhbGxXaXRoPVNjcmlwdFN0YXRlXQogICAgIEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rv
ciB3ZWJraXRSZWdpc3RlcihpbiBET01TdHJpbmcgbmFtZSwgaW4gW09wdGlvbmFsXSBEaWN0aW9u
YXJ5IG9wdGlvbnMpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgIFtSZXR1cm5OZXdPYmplY3Rd
IEVsZW1lbnQgY3JlYXRlRWxlbWVudChpbiBET01TdHJpbmcgbG9jYWxOYW1lLCBpbiBbVHJlYXRO
dWxsQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIHR5cGVFeHRlbnNpb24pIHJhaXNlcyAoRE9NRXhj
ZXB0aW9uKTsKKyAgICBbUmV0dXJuTmV3T2JqZWN0XSBFbGVtZW50IGNyZWF0ZUVsZW1lbnROUyhp
biBbVHJlYXROdWxsQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwgaW4gRE9N
U3RyaW5nIHF1YWxpZmllZE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmddIERPTVN0cmluZyB0eXBlRXh0
ZW5zaW9uKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoTEFO
R1VBR0VfQ1BQKSAmJiBMQU5HVUFHRV9DUFAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9tYWtlX25hbWVzLnBsIGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKaW5kZXgg
MDQzYTM4MjQwOGNjNDE3MDE2Y2Y0MDJmNjQ3MjE0OWZiOTVjY2Q5Ni4uMDkzN2M4ZWQ3MGI3ZTM5
NzNlZmFiMTUyMzIzNmRiZjRlNWZjMDY1ZSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L21ha2VfbmFtZXMucGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKQEAg
LTgyMyw2ICs4MjMsMTEgQEAgcHJpbnQgRiA8PEVORAogI2luY2x1ZGUgIkNvbnRleHRGZWF0dXJl
cy5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKIAorI2lmIEVOQUJMRShD
VVNUT01fRUxFTUVOVFMpCisjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmgiCisj
aW5jbHVkZSAiQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShE
QVNIQk9BUkRfU1VQUE9SVCkgfHwgRU5BQkxFKFZJREVPKQogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTg5Niw2ICs5MDEsMTYgQEAgRU5ECiB9CiAKIHBy
aW50IEYgPDxFTkQKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorICAgIGlmIChkb2N1bWVu
dC0+cmVnaXN0cnkoKSkgeworICAgICAgICBpZiAoUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1
Y3Rvcj4gY29uc3RydWN0b3IgPSBkb2N1bWVudC0+cmVnaXN0cnkoKS0+ZmluZChudWxsUU5hbWUo
KSwgcU5hbWUpKSB7CisgICAgICAgICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IGNvbnN0
cnVjdG9yLT5jcmVhdGVFbGVtZW50KCk7CisgICAgICAgICAgICBBU1NFUlQoZWxlbWVudC0+aXMk
cGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudCgpKTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0
aWNfcG9pbnRlcl9jYXN0PCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PihlbGVtZW50LnJl
bGVhc2UoKSk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKwogICAgIGlmICghZ0Z1bmN0aW9u
TWFwKQogICAgICAgICBjcmVhdGVGdW5jdGlvbk1hcCgpOwogICAgIGlmIChDb25zdHJ1Y3RvckZ1
bmN0aW9uIGZ1bmN0aW9uID0gZ0Z1bmN0aW9uTWFwLT5nZXQocU5hbWUubG9jYWxOYW1lKCkuaW1w
bCgpKSkgewpAQCAtOTEyLDExICs5MjcsNyBAQCBpZiAoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBl
cSAiSFRNTCIpIHsKIHByaW50IEYgPDxFTkQKICAgICB9CiAKLUVORAotOwotcHJpbnQgRiAiICAg
IHJldHVybiAkcGFyYW1ldGVyc3tmYWxsYmFja0ludGVyZmFjZU5hbWV9OjpjcmVhdGUocU5hbWUs
IGRvY3VtZW50KTtcbiI7Ci0KLXByaW50IEYgPDxFTkQKKyAgICByZXR1cm4gJHBhcmFtZXRlcnN7
ZmFsbGJhY2tJbnRlcmZhY2VOYW1lfTo6Y3JlYXRlKHFOYW1lLCBkb2N1bWVudCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKQEAgLTExNzIsOSArMTE4MywxMiBAQCBFTkQKIDsKICAgICB9
IGVsc2lmICgkd3JhcHBlckZhY3RvcnlUeXBlIGVxICJWOCIpIHsKICAgICAgICAgcHJpbnQgRiA8
PEVORAotI2luY2x1ZGUgIlY4Q3VzdG9tRWxlbWVudC5oIgogI2luY2x1ZGUgIlY4JHBhcmFtZXRl
cnN7bmFtZXNwYWNlfUVsZW1lbnQuaCIKIAorI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCisj
aW5jbHVkZSAiVjhDdXN0b21FbGVtZW50LmgiCisjZW5kaWYKKwogI2luY2x1ZGUgPHY4Lmg+CiBF
TkQKIDsKQEAgLTEyNDQsNiArMTI1OCwxOSBAQCBFTkQKIAogICAgIHByaW50IEYgPDxFTkQKICAg
ICB9CitFTkQKKzsKKyAgICBpZiAoJHdyYXBwZXJGYWN0b3J5VHlwZSBlcSAiVjgiKSB7CisgICAg
ICAgIHByaW50IEYgPDxFTkQKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorICAgIGlmIChQ
YXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY29uc3RydWN0b3IgPSBWOEN1c3Rv
bUVsZW1lbnQ6OmNvbnN0cnVjdG9yT2YoZWxlbWVudCkpCisgICAgICAgIHJldHVybiBWOEN1c3Rv
bUVsZW1lbnQ6OndyYXAoZWxlbWVudCwgY3JlYXRpb25Db250ZXh0LCBjb25zdHJ1Y3RvciwgaXNv
bGF0ZSk7CisjZW5kaWYKK0VORAorOworICAgIH0KKworICAgIHByaW50IEYgPDxFTkQKICAgICBD
cmVhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudFdyYXBwZXJGdW5jdGlvbiBjcmVhdGVX
cmFwcGVyRnVuY3Rpb24gPSBtYXAuZ2V0KGVsZW1lbnQtPmxvY2FsTmFtZSgpLmltcGwoKSk7CiAg
ICAgaWYgKGNyZWF0ZVdyYXBwZXJGdW5jdGlvbikKIEVORApAQCAtMTI3NSwxMSArMTMwMiw2IEBA
IEVORAogICAgIHJldHVybiBWOFNWR0VsZW1lbnQ6OmNyZWF0ZVdyYXBwZXIoZWxlbWVudCwgY3Jl
YXRpb25Db250ZXh0LCBpc29sYXRlKTsKIEVORAogOwotICAgICAgICB9IGVsc2lmICgkcGFyYW1l
dGVyc3tuYW1lc3BhY2V9IGVxICJIVE1MIikgewotICAgICAgICAgICAgcHJpbnQgRiA8PEVORAot
ICAgIHJldHVybiBWOEN1c3RvbUVsZW1lbnQ6OndyYXAoZWxlbWVudCwgY3JlYXRpb25Db250ZXh0
LCBpc29sYXRlKTsKLUVORAotOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHJpbnQg
RiA8PEVORAogICAgIHJldHVybiB3cmFwKHRvJHBhcmFtZXRlcnN7ZmFsbGJhY2tJbnRlcmZhY2VO
YW1lfShlbGVtZW50KSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKQEAgLTEyODksMTIgKzEz
MTEsMzggQEAgRU5ECiAgICAgfQogICAgIHByaW50IEYgPDxFTkQKIH0KK0VORAorOworCisgICAg
aWYgKCR3cmFwcGVyRmFjdG9yeVR5cGUgZXEgIlY4IikgeworICAgICAgICBwcmludCBGIDw8RU5E
CiAKK2NvbnN0IFF1YWxpZmllZE5hbWUqIGZpbmQkcGFyYW1ldGVyc3tuYW1lc3BhY2V9VGFnTmFt
ZU9mVjhUeXBlKGNvbnN0IFdyYXBwZXJUeXBlSW5mbyogdHlwZSkKK3sKKyAgICB0eXBlZGVmIEhh
c2hNYXA8Y29uc3QgV3JhcHBlclR5cGVJbmZvKiwgY29uc3QgUXVhbGlmaWVkTmFtZSo+IFR5cGVO
YW1lTWFwOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoVHlwZU5hbWVNYXAsIG1hcCwgKCkpOwor
ICAgIGlmIChtYXAuaXNFbXB0eSgpKSB7CitFTkQKKzsKKworICAgICAgICBmb3IgbXkgJHRhZ05h
bWUgKHNvcnQga2V5cyAlZW5hYmxlZFRhZ3MpIHsKKyAgICAgICAgICAgIGlmICghdXNlc0RlZmF1
bHRKU1dyYXBwZXIoJHRhZ05hbWUpKSB7CisgICAgICAgICAgICAgICAgbXkgJEpTSW50ZXJmYWNl
TmFtZSA9ICRlbmFibGVkVGFnc3skdGFnTmFtZX17SlNJbnRlcmZhY2VOYW1lfTsKKyAgICAgICAg
ICAgICAgICBwcmludCBGICIgICAgICAgbWFwLnNldChXcmFwcGVyVHlwZVRyYWl0czwke0pTSW50
ZXJmYWNlTmFtZX0+OjppbmZvKCksICYke3RhZ05hbWV9VGFnKTtcbiI7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICBwcmludCBGIDw8RU5ECisgICAgfQorCisgICAgcmV0dXJu
IG1hcC5nZXQodHlwZSk7CiB9CiAKIEVORAogOworICAgIH0KIAorICAgIHByaW50IEYgIn1cblxu
IjsKICAgICBwcmludCBGICIjZW5kaWZcbiIgaWYgJHBhcmFtZXRlcnN7Z3VhcmRGYWN0b3J5V2l0
aH07CiAKICAgICBjbG9zZSBGOwpAQCAtMTM0NSw2ICsxMzkzLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgY2xhc3MgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ7CiAKKyAgICBj
b25zdCBRdWFsaWZpZWROYW1lKiBmaW5kJHBhcmFtZXRlcnN7bmFtZXNwYWNlfVRhZ05hbWVPZlY4
VHlwZShjb25zdCBXcmFwcGVyVHlwZUluZm8qKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGNyZWF0ZVY4JHBhcmFtZXRlcnN7bmFtZXNwYWNlfVdyYXBwZXIoJHBhcmFtZXRlcnN7bmFtZXNw
YWNlfUVsZW1lbnQqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6
Oklzb2xhdGUqKTsKICAgICBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGVWOCRw
YXJhbWV0ZXJze25hbWVzcGFjZX1EaXJlY3RXcmFwcGVyKCRwYXJhbWV0ZXJze25hbWVzcGFjZX1F
bGVtZW50KiBlbGVtZW50LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwg
djg6Oklzb2xhdGUqIGlzb2xhdGUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRy
aWJ1dGVOYW1lcy5pbgppbmRleCAxNTRjMDMzNDlmYTY0NWNjYjI2MTVkZjJiYjk0ZWVhMzQ4Mzdl
ZWM1Li42YzY3NTdkMTRhNzg4MmQxZjllMDlmM2Q5Y2I3MDcwNTkyM2MyN2NlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgpAQCAtMTI2LDYgKzEyNiw3IEBAIGh0
dHBfZXF1aXYKIGlkCiBpbmNyZW1lbnRhbAogaW5kZXRlcm1pbmF0ZQoraXMKIGlzbWFwCiBpdGVt
aWQKIGl0ZW1wcm9wCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzVhZTg5MmJiY2E3YWEyNTE1MThmZDg5MzhhYTIxNzEzZjkw
YjNjZS4uNDk4ZDdiMGI3NDIzMWYwNjQ4M2U4ZmFiY2Q1NjI2MmI3OTk1OTg5ZCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDEzLTAzLTEwICBIYWppbWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xl
LmNvbT4KKworICAgICAgICBbQ3VzdG9tIEVsZW1lbnRzXSBjcmVhdGVFbGVtZW50KCkgYW5kIGNy
ZWF0ZUVsZW1lbnROUygpIHNob3VsZCBzdXBwb3J0IHR5cGUgZXh0ZW50aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE1MTEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL2N1c3RvbS9k
b2N1bWVudC1yZWdpc3Rlci1iYXNpYy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20v
Y3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLWJhc2ljLmh0bWw6CisgICAgICAgICogZmFzdC9kb20v
Y3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLXR5cGUtZXh0ZW5zaW9ucy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2N1c3RvbS9kb2N1bWVudC1yZWdpc3Rlci10eXBlLWV4
dGVuc2lvbnMuaHRtbDogQWRkZWQuCisKIDIwMTMtMDMtMDcgIEhhamltZSBNb3JyaXRhICA8bW9y
cml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIEN1c3RvbSBFbGVtZW50czogQ3VzdG9tRWxlbWVu
dCBjb25zdHJ1Y3RvciBzaG91bGRuJ3Qgc2hhcmUgZnVuY3Rpb24gaW5zdGFuY2UKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9kb2N1bWVudC1yZWdpc3Rlci1iYXNpYy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vZG9jdW1lbnQtcmVnaXN0
ZXItYmFzaWMtZXhwZWN0ZWQudHh0CmluZGV4IGZmYjUyODNkYWMyYTdkZWZiNjFjNTc3ZThhNGYx
YjljYWViNmYyYzcuLjFjNDkyMmYzMDA3ZGM2ZDQ5MTVkZTViZWVjNzg1ZDk0Mjg4MmJkOTYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9kb2N1bWVudC1yZWdpc3Rlci1i
YXNpYy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2RvY3Vt
ZW50LXJlZ2lzdGVyLWJhc2ljLWV4cGVjdGVkLnR4dApAQCAtMTQsNyArMTQsNiBAQCBQQVNTIGRv
Y3VtZW50LnJlZ2lzdGVyKCdYLUZPTycsIGNyZWF0ZVJlZ2lzdGVyUGFyYW10ZXJzKCkpIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcgogUEFTUyBkb2N1bWVudC5yZWdpc3RlcigneC1iYWQtYScsIHsgcHJv
dG90eXBlOiBIVE1MRWxlbWVudC5wcm90b3R5cGUgfSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJ
bnZhbGlkU3RhdGVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMS4KIFBBU1MgZG9jdW1lbnQucmVnaXN0
ZXIoJ3gtYmFkLWInLCB7IHByb3RvdHlwZToge30gfSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJ
bnZhbGlkU3RhdGVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMS4KIFBBU1MgZG9jdW1lbnQucmVnaXN0
ZXIoJ3gtYmFkLWMnLCB7IHByb3RvdHlwZTogT2JqZWN0LmNyZWF0ZShEb2N1bWVudC5wcm90b3R5
cGUpIH0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSW52YWxpZFN0YXRlRXJyb3I6IERPTSBFeGNl
cHRpb24gMTEuCi1QQVNTIGRvY3VtZW50LnJlZ2lzdGVyKCd4LWJhZC1kJywgeyBwcm90b3R5cGU6
IE9iamVjdC5jcmVhdGUoSFRNTFNwYW5FbGVtZW50LnByb3RvdHlwZSkgfSkgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBJbnZhbGlkU3RhdGVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMS4KIFBBU1MgZm9v
Q29uc3RydWN0b3IoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBET00gb2JqZWN0IGNvbnN0
cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4uCiBQQVNTIGNyZWF0ZWRGb28u
X19wcm90b19fIGlzIGZvb0NvbnN0cnVjdG9yLnByb3RvdHlwZQogUEFTUyBjcmVhdGVkRm9vLmNv
bnN0cnVjdG9yIGlzIGZvb0NvbnN0cnVjdG9yCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9jdXN0b20vZG9jdW1lbnQtcmVnaXN0ZXItYmFzaWMuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL2N1c3RvbS9kb2N1bWVudC1yZWdpc3Rlci1iYXNpYy5odG1sCmluZGV4IGY1Yjc2OTlk
ZjgzZjUwYmFmZjk1NTIyODNmMzhlYTNmOWNhNGQ1NzAuLmI1ODhjZmU5ZjdmOTMxNDBmMTdiY2Ey
ZTc5ODBkYzEzOTc2ZjA2MzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3Rv
bS9kb2N1bWVudC1yZWdpc3Rlci1iYXNpYy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L2N1c3RvbS9kb2N1bWVudC1yZWdpc3Rlci1iYXNpYy5odG1sCkBAIC0zOSw4ICszOSw2IEBAIHNo
b3VsZFRocm93KCJkb2N1bWVudC5yZWdpc3RlcigneC1iYWQtYScsIHsgcHJvdG90eXBlOiBIVE1M
RWxlbWVudC5wcm90b3R5cGUgfSkiCiBzaG91bGRUaHJvdygiZG9jdW1lbnQucmVnaXN0ZXIoJ3gt
YmFkLWInLCB7IHByb3RvdHlwZToge30gfSkiLCAiJ0Vycm9yOiBJbnZhbGlkU3RhdGVFcnJvcjog
RE9NIEV4Y2VwdGlvbiAxMSciKTsKIC8vIEJhZCBwcm90b3R5cGU6IHdyb25nIF9fcHJvdG9fXwog
c2hvdWxkVGhyb3coImRvY3VtZW50LnJlZ2lzdGVyKCd4LWJhZC1jJywgeyBwcm90b3R5cGU6IE9i
amVjdC5jcmVhdGUoRG9jdW1lbnQucHJvdG90eXBlKSB9KSIsICInRXJyb3I6IEludmFsaWRTdGF0
ZUVycm9yOiBET00gRXhjZXB0aW9uIDExJyIpOwotLy8gQnVnIDExMDQzNiAtIEVsZW1lbnRzIG90
aGVyIHRoYW4gSFRNTEVtZW1lbnQgc2hvdWxkIGJlIGFsbG93ZWQgYXMgYSBzdXBlcmNsYXNzLgot
c2hvdWxkVGhyb3coImRvY3VtZW50LnJlZ2lzdGVyKCd4LWJhZC1kJywgeyBwcm90b3R5cGU6IE9i
amVjdC5jcmVhdGUoSFRNTFNwYW5FbGVtZW50LnByb3RvdHlwZSkgfSkiLCAiJ0Vycm9yOiBJbnZh
bGlkU3RhdGVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMSciKTsKIC8vIENhbGwgYXMgZnVuY3Rpb24K
IHNob3VsZFRocm93KCJmb29Db25zdHJ1Y3RvcigpIiwgIidUeXBlRXJyb3I6IERPTSBvYmplY3Qg
Y29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiciKQogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vZG9jdW1lbnQtcmVnaXN0ZXItdHlwZS1l
eHRlbnNpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9kb2N1
bWVudC1yZWdpc3Rlci10eXBlLWV4dGVuc2lvbnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3
NTIxYzA0Yjg2ZjBjNWI2NmNiOTQ2YjdhNTlhN2M1ZjM4MmZhNzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vZG9jdW1lbnQtcmVnaXN0ZXItdHlwZS1leHRl
bnNpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDU4IEBACitUZXN0aW5nIGRvY3VtZW50LnJl
Z2lzdGVyKCkgdHlwZSBleHRlbnNpb24gYmVoYXZpb3VycyB0aHJvdWdoIGNyZWF0ZUVsZW1lbnQo
KS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZG9jdW1lbnQucmVnaXN0
ZXIoJ3gtZm9vJywgeyBwcm90b3R5cGU6IE9iamVjdC5jcmVhdGUoSFRNTERpdkVsZW1lbnQucHJv
dG90eXBlKSB9KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IEludmFsaWRTdGF0ZUVycm9yOiBET00g
RXhjZXB0aW9uIDExLgorUEFTUyBmb29OZXdlZC5vdXRlckhUTUwgaXMgJzx4LWZvbz48L3gtZm9v
PicKK1BBU1MgZm9vTmV3ZWQgaW5zdGFuY2VvZiBmb29Db25zdHJ1Y3RvciAmJiBmb29OZXdlZCBp
bnN0YW5jZW9mIEhUTUxFbGVtZW50IGlzIHRydWUKK1BBU1MgZm9vTmV3ZWQgaW5zdGFuY2VvZiBI
VE1MVW5rbm93bkVsZW1lbnQgaXMgZmFsc2UKK1BBU1MgYmFyTmV3ZWQub3V0ZXJIVE1MIGlzICc8
aW5wdXQgaXM9IngtYmFyIj4nCitQQVNTIGJhck5ld2VkIGluc3RhbmNlb2YgYmFyQ29uc3RydWN0
b3IgJiYgYmFyTmV3ZWQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50IGlzIHRydWUKK1BBU1Mg
aXNGb3JtQ29udHJvbChiYXJOZXdlZCkgaXMgdHJ1ZQorUEFTUyBiYXpOZXdlZC5vdXRlckhUTUwg
aXMgJzx4LWJhej48L3gtYmF6PicKK1BBU1MgYmF6TmV3ZWQgaW5zdGFuY2VvZiBiYXpDb25zdHJ1
Y3RvciAmJiBiYXpOZXdlZCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50IGlzIHRydWUKK1BBU1MgYmF6
TmV3ZWQgaW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1lbnQgaXMgZmFsc2UKK1BBU1MgcXV4TmV3
ZWQgaW5zdGFuY2VvZiBxdXhDb25zdHJ1Y3RvciAmJiBxdXhOZXdlZCBpbnN0YW5jZW9mIGJhckNv
bnN0cnVjdG9yICYmIHF1eE5ld2VkIGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCBpcyB0cnVl
CitQQVNTIHF1eE5ld2VkLm91dGVySFRNTCBpcyAnPGlucHV0IGlzPSJ4LXF1eCI+JworUEFTUyBp
c0Zvcm1Db250cm9sKHF1eE5ld2VkKSBpcyB0cnVlCitQQVNTIGZvb0NyZWF0ZWQub3V0ZXJIVE1M
IGlzICc8eC1mb28+PC94LWZvbz4nCitQQVNTIGZvb0NyZWF0ZWQgaW5zdGFuY2VvZiBmb29Db25z
dHJ1Y3RvciBpcyB0cnVlCitQQVNTIGJhckNyZWF0ZWQub3V0ZXJIVE1MIGlzICc8eC1iYXI+PC94
LWJhcj4nCitQQVNTIGJhckNyZWF0ZWQgaW5zdGFuY2VvZiBiYXJDb25zdHJ1Y3RvciBpcyBmYWxz
ZQorUEFTUyBiYXJDcmVhdGVkIGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50IGlzIHRydWUK
K1BBU1MgYmF6Q3JlYXRlZC5vdXRlckhUTUwgaXMgJzx4LWJhej48L3gtYmF6PicKK1BBU1MgYmF6
Q3JlYXRlZCBpbnN0YW5jZW9mIGJhekNvbnN0cnVjdG9yIGlzIHRydWUKK1BBU1MgYmF6Q3JlYXRl
ZCBpbnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudCBpcyBmYWxzZQorUEFTUyBxdXhDcmVhdGVk
Lm91dGVySFRNTCBpcyAnPHgtcXV4PjwveC1xdXg+JworUEFTUyBxdXhDcmVhdGVkIGluc3RhbmNl
b2YgcXV4Q29uc3RydWN0b3IgaXMgZmFsc2UKK1BBU1MgcXV4Q3JlYXRlZCBpbnN0YW5jZW9mIEhU
TUxVbmtub3duRWxlbWVudCBpcyB0cnVlCitQQVNTIGRpdkZvb0NyZWF0ZWQub3V0ZXJIVE1MIGlz
ICc8ZGl2IGlzPSJ4LWZvbyI+PC9kaXY+JworUEFTUyBkaXZGb29DcmVhdGVkIGluc3RhbmNlb2Yg
YmFyQ29uc3RydWN0b3IgaXMgZmFsc2UKK1BBU1MgZGl2Rm9vQ3JlYXRlZCBpbnN0YW5jZW9mIEhU
TUxEaXZFbGVtZW50IGlzIHRydWUKK1BBU1MgaW5wdXRCYXJDcmVhdGVkLm91dGVySFRNTCBpcyAn
PGlucHV0IGlzPSJ4LWJhciI+JworUEFTUyBpbnB1dEJhckNyZWF0ZWQgaW5zdGFuY2VvZiBiYXJD
b25zdHJ1Y3RvciBpcyB0cnVlCitQQVNTIGlucHV0QmFyQ3JlYXRlZCBpbnN0YW5jZW9mIEhUTUxV
bmtub3duRWxlbWVudCBpcyBmYWxzZQorUEFTUyBpc0Zvcm1Db250cm9sKGlucHV0QmFyQ3JlYXRl
ZCkgaXMgdHJ1ZQorUEFTUyBkaXZCYXJDcmVhdGVkLm91dGVySFRNTCBpcyAnPGRpdiBpcz0ieC1i
YXIiPjwvZGl2PicKK1BBU1MgZGl2QmFyQ3JlYXRlZCBpbnN0YW5jZW9mIGJhckNvbnN0cnVjdG9y
IGlzIGZhbHNlCitQQVNTIGRpdkJhckNyZWF0ZWQgaW5zdGFuY2VvZiBIVE1MRGl2RWxlbWVudCBp
cyB0cnVlCitQQVNTIGZvb0JhckNyZWF0ZWQub3V0ZXJIVE1MIGlzICc8eC1mb28gaXM9IngtYmFy
Ij48L3gtZm9vPicKK1BBU1MgZm9vQmFyQ3JlYXRlZCBpbnN0YW5jZW9mIGZvb0NvbnN0cnVjdG9y
IGlzIHRydWUKK1BBU1MgYmFyRm9vQ3JlYXRlZC5vdXRlckhUTUwgaXMgJzx4LWJhciBpcz0ieC1m
b28iPjwveC1iYXI+JworUEFTUyBiYXJGb29DcmVhdGVkIGluc3RhbmNlb2YgSFRNTFVua25vd25F
bGVtZW50IGlzIHRydWUKK1BBU1MgZm9vQ3JlYXRlZE51bGwub3V0ZXJIVE1MIGlzICc8eC1mb28+
PC94LWZvbz4nCitQQVNTIGZvb0NyZWF0ZWROdWxsIGluc3RhbmNlb2YgZm9vQ29uc3RydWN0b3Ig
aXMgdHJ1ZQorUEFTUyBmb29DcmVhdGVkRW1wdHkub3V0ZXJIVE1MIGlzICc8eC1mb28+PC94LWZv
bz4nCitQQVNTIGZvb0NyZWF0ZWRFbXB0eSBpbnN0YW5jZW9mIGZvb0NvbnN0cnVjdG9yIGlzIHRy
dWUKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnQGludmFsaWQnLCAneC1iYXInKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IEludmFsaWRDaGFyYWN0ZXJFcnJvcjogRE9NIEV4Y2VwdGlvbiA1
LgorUEFTUyBmb29DcmVhdGVkTlMub3V0ZXJIVE1MIGlzICc8eC1mb28+PC94LWZvbz4nCitQQVNT
IGZvb0NyZWF0ZWROUyBpbnN0YW5jZW9mIGZvb0NvbnN0cnVjdG9yIGlzIHRydWUKK1BBU1MgYmFy
Q3JlYXRlZE5TLm91dGVySFRNTCBpcyAnPGlucHV0IGlzPSJ4LWJhciI+JworUEFTUyBiYXJDcmVh
dGVkTlMgaW5zdGFuY2VvZiBiYXJDb25zdHJ1Y3RvciBpcyB0cnVlCitQQVNTIGlzRm9ybUNvbnRy
b2woYmFyQ3JlYXRlZE5TKSBpcyB0cnVlCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygn
aHR0cDovL2V4YW1wbGUuY29tLzIwMTMvbm8tc3VjaC1uYW1lc3BhY2UnLCAneG1sOmxhbmcnLCAn
eC1iYXInKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5hbWVzcGFjZUVycm9yOiBET00gRXhjZXB0
aW9uIDE0LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9kb2N1bWVudC1yZWdp
c3Rlci10eXBlLWV4dGVuc2lvbnMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9k
b2N1bWVudC1yZWdpc3Rlci10eXBlLWV4dGVuc2lvbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NmYwMzY0
YTgxNWQ0OGY5ZGMzOTJhYzQwZWU3YTRlNDlmNmFkMDhiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLXR5cGUtZXh0ZW5zaW9u
cy5odG1sCkBAIC0wLDAgKzEsMTQ0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29udGFpbmVyIj48L2Rpdj4KKzxmb3JtIGlk
PSJ0ZXN0Rm9ybSI+PC9mb3JtPgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0aW5nIGRvY3Vt
ZW50LnJlZ2lzdGVyKCkgdHlwZSBleHRlbnNpb24gYmVoYXZpb3VycyB0aHJvdWdoIGNyZWF0ZUVs
ZW1lbnQoKS4iKTsKKworZnVuY3Rpb24gaXNGb3JtQ29udHJvbChlbGVtZW50KQoreworICAgIHRl
c3RGb3JtLmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIHJldHVybiBlbGVtZW50LmZvcm0gPT0g
dGVzdEZvcm07Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKK2RvY3VtZW50LnJlZ2lzdGVyID0gZG9jdW1lbnQucmVnaXN0ZXIgfHwgZG9j
dW1lbnQud2Via2l0UmVnaXN0ZXI7CisKKy8vCisvLyBJbmhlcml0YW5jZSBoZXJlIGlzIHNoYXBl
ZCBsaWtlIHRoaXM6CisvLworLy8gSFRNTEVsZW1lbnQgPC0gaW5wdXQgPC0geC1iYXIgPC0geC1x
dXgKKy8vICAgICAgICAgICAgIDwtIHgtZm9vIDwtIHgtYmF6CisvLworCitmb29Db25zdHJ1Y3Rv
ciA9IGRvY3VtZW50LnJlZ2lzdGVyKCd4LWZvbycsIHsgcHJvdG90eXBlOiBPYmplY3QuY3JlYXRl
KEhUTUxFbGVtZW50LnByb3RvdHlwZSkgfSk7CitiYXJDb25zdHJ1Y3RvciA9IGRvY3VtZW50LnJl
Z2lzdGVyKCd4LWJhcicsIHsgcHJvdG90eXBlOiBPYmplY3QuY3JlYXRlKEhUTUxJbnB1dEVsZW1l
bnQucHJvdG90eXBlKSB9KTsKK2JhekNvbnN0cnVjdG9yID0gZG9jdW1lbnQucmVnaXN0ZXIoJ3gt
YmF6JywgeyBwcm90b3R5cGU6IE9iamVjdC5jcmVhdGUoZm9vQ29uc3RydWN0b3IucHJvdG90eXBl
KSB9KTsKK3F1eENvbnN0cnVjdG9yID0gZG9jdW1lbnQucmVnaXN0ZXIoJ3gtcXV4JywgeyBwcm90
b3R5cGU6IE9iamVjdC5jcmVhdGUoYmFyQ29uc3RydWN0b3IucHJvdG90eXBlKSB9KTsKKworLy8g
U2FtZSBuYW1lLCBkaWZmZXJlbnQgbG9jYWwgbmFtZQorc2hvdWxkVGhyb3coImRvY3VtZW50LnJl
Z2lzdGVyKCd4LWZvbycsIHsgcHJvdG90eXBlOiBPYmplY3QuY3JlYXRlKEhUTUxEaXZFbGVtZW50
LnByb3RvdHlwZSkgfSkiLCAiJ0Vycm9yOiBJbnZhbGlkU3RhdGVFcnJvcjogRE9NIEV4Y2VwdGlv
biAxMSciKTsKKworLy8KKy8vIEdlbmVyYXRlZCBjb25zdHJ1Y3RvcnMKKy8vCisKK2Zvb05ld2Vk
ID0gbmV3IGZvb0NvbnN0cnVjdG9yKCk7Citmb29PdXRlckhUTUwgPSAiJzx4LWZvbz48L3gtZm9v
PiciOworc2hvdWxkQmUoImZvb05ld2VkLm91dGVySFRNTCIsIGZvb091dGVySFRNTCk7CitzaG91
bGRCZVRydWUoImZvb05ld2VkIGluc3RhbmNlb2YgZm9vQ29uc3RydWN0b3IgJiYgZm9vTmV3ZWQg
aW5zdGFuY2VvZiBIVE1MRWxlbWVudCIpOworc2hvdWxkQmVGYWxzZSgiZm9vTmV3ZWQgaW5zdGFu
Y2VvZiBIVE1MVW5rbm93bkVsZW1lbnQiKTsKKworYmFyTmV3ZWQgPSBuZXcgYmFyQ29uc3RydWN0
b3IoKTsKK2Jhck91dGVySFRNTCA9ICInPGlucHV0IGlzPVwieC1iYXJcIj4nIjsKK3Nob3VsZEJl
KCJiYXJOZXdlZC5vdXRlckhUTUwiLCBiYXJPdXRlckhUTUwpOworc2hvdWxkQmVUcnVlKCJiYXJO
ZXdlZCBpbnN0YW5jZW9mIGJhckNvbnN0cnVjdG9yICYmIGJhck5ld2VkIGluc3RhbmNlb2YgSFRN
TElucHV0RWxlbWVudCIpOworc2hvdWxkQmVUcnVlKCJpc0Zvcm1Db250cm9sKGJhck5ld2VkKSIp
OworCitiYXpOZXdlZCA9IG5ldyBiYXpDb25zdHJ1Y3RvcigpOworYmF6T3V0ZXJIVE1MID0gIic8
eC1iYXo+PC94LWJhej4nIjsKK3Nob3VsZEJlKCJiYXpOZXdlZC5vdXRlckhUTUwiLCBiYXpPdXRl
ckhUTUwpOworc2hvdWxkQmVUcnVlKCJiYXpOZXdlZCBpbnN0YW5jZW9mIGJhekNvbnN0cnVjdG9y
ICYmIGJhek5ld2VkIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQiKTsKK3Nob3VsZEJlRmFsc2UoImJh
ek5ld2VkIGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50Iik7CisKK3F1eE5ld2VkID0gbmV3
IHF1eENvbnN0cnVjdG9yKCk7CitxdXhPdXRlckhUTUwgPSAiJzxpbnB1dCBpcz1cIngtcXV4XCI+
JyI7CitzaG91bGRCZVRydWUoInF1eE5ld2VkIGluc3RhbmNlb2YgcXV4Q29uc3RydWN0b3IgJiYg
cXV4TmV3ZWQgaW5zdGFuY2VvZiBiYXJDb25zdHJ1Y3RvciAmJiBxdXhOZXdlZCBpbnN0YW5jZW9m
IEhUTUxJbnB1dEVsZW1lbnQiKTsKK3Nob3VsZEJlKCJxdXhOZXdlZC5vdXRlckhUTUwiLCBxdXhP
dXRlckhUTUwpOworc2hvdWxkQmVUcnVlKCJpc0Zvcm1Db250cm9sKHF1eE5ld2VkKSIpOworCisv
LworLy8gU2luZ2xlIHBhcmFtZXRlciBjcmVhdGVFbGVtZW50KCkKKy8vCisKK2Zvb0NyZWF0ZWQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ4LWZvbyIpOworc2hvdWxkQmUoImZvb0NyZWF0ZWQu
b3V0ZXJIVE1MIiwgZm9vT3V0ZXJIVE1MKTsKK3Nob3VsZEJlVHJ1ZSgiZm9vQ3JlYXRlZCBpbnN0
YW5jZW9mIGZvb0NvbnN0cnVjdG9yIik7CisKK2JhckNyZWF0ZWQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJ4LWJhciIpOworc2hvdWxkQmUoImJhckNyZWF0ZWQub3V0ZXJIVE1MIiwgIic8eC1i
YXI+PC94LWJhcj4nIik7CitzaG91bGRCZUZhbHNlKCJiYXJDcmVhdGVkIGluc3RhbmNlb2YgYmFy
Q29uc3RydWN0b3IiKTsKK3Nob3VsZEJlVHJ1ZSgiYmFyQ3JlYXRlZCBpbnN0YW5jZW9mIEhUTUxV
bmtub3duRWxlbWVudCIpOworCitiYXpDcmVhdGVkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
eC1iYXoiKTsKK3Nob3VsZEJlKCJiYXpDcmVhdGVkLm91dGVySFRNTCIsICInPHgtYmF6PjwveC1i
YXo+JyIpOworc2hvdWxkQmVUcnVlKCJiYXpDcmVhdGVkIGluc3RhbmNlb2YgYmF6Q29uc3RydWN0
b3IiKTsKK3Nob3VsZEJlRmFsc2UoImJhekNyZWF0ZWQgaW5zdGFuY2VvZiBIVE1MVW5rbm93bkVs
ZW1lbnQiKTsKKworcXV4Q3JlYXRlZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIngtcXV4Iik7
CitzaG91bGRCZSgicXV4Q3JlYXRlZC5vdXRlckhUTUwiLCAiJzx4LXF1eD48L3gtcXV4PiciKTsK
K3Nob3VsZEJlRmFsc2UoInF1eENyZWF0ZWQgaW5zdGFuY2VvZiBxdXhDb25zdHJ1Y3RvciIpOwor
c2hvdWxkQmVUcnVlKCJxdXhDcmVhdGVkIGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50Iik7
CisKKy8vCisvLyBjcmVhdGVFbGVtZW50KCkgd2l0aCB0eXBlIGV4dGVuc2lvbnMKKy8vCisKK2Rp
dkZvb0NyZWF0ZWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiLCAieC1mb28iKTsKK3No
b3VsZEJlKCJkaXZGb29DcmVhdGVkLm91dGVySFRNTCIsICInPGRpdiBpcz1cIngtZm9vXCI+PC9k
aXY+JyIpOworc2hvdWxkQmVGYWxzZSgiZGl2Rm9vQ3JlYXRlZCBpbnN0YW5jZW9mIGJhckNvbnN0
cnVjdG9yIik7CitzaG91bGRCZVRydWUoImRpdkZvb0NyZWF0ZWQgaW5zdGFuY2VvZiBIVE1MRGl2
RWxlbWVudCIpOworCitpbnB1dEJhckNyZWF0ZWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJp
bnB1dCIsICJ4LWJhciIpOworc2hvdWxkQmUoImlucHV0QmFyQ3JlYXRlZC5vdXRlckhUTUwiLCBi
YXJPdXRlckhUTUwpOworc2hvdWxkQmVUcnVlKCJpbnB1dEJhckNyZWF0ZWQgaW5zdGFuY2VvZiBi
YXJDb25zdHJ1Y3RvciIpOworc2hvdWxkQmVGYWxzZSgiaW5wdXRCYXJDcmVhdGVkIGluc3RhbmNl
b2YgSFRNTFVua25vd25FbGVtZW50Iik7CitzaG91bGRCZVRydWUoImlzRm9ybUNvbnRyb2woaW5w
dXRCYXJDcmVhdGVkKSIpOworCitkaXZCYXJDcmVhdGVkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2IiwgIngtYmFyIik7CitzaG91bGRCZSgiZGl2QmFyQ3JlYXRlZC5vdXRlckhUTUwiLCAi
JzxkaXYgaXM9XCJ4LWJhclwiPjwvZGl2PiciKTsKK3Nob3VsZEJlRmFsc2UoImRpdkJhckNyZWF0
ZWQgaW5zdGFuY2VvZiBiYXJDb25zdHJ1Y3RvciIpOworc2hvdWxkQmVUcnVlKCJkaXZCYXJDcmVh
dGVkIGluc3RhbmNlb2YgSFRNTERpdkVsZW1lbnQiKTsKKworZm9vQmFyQ3JlYXRlZCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoIngtZm9vIiwgIngtYmFyIik7CitzaG91bGRCZSgiZm9vQmFyQ3Jl
YXRlZC5vdXRlckhUTUwiLCAiJzx4LWZvbyBpcz1cIngtYmFyXCI+PC94LWZvbz4nIik7CitzaG91
bGRCZVRydWUoImZvb0JhckNyZWF0ZWQgaW5zdGFuY2VvZiBmb29Db25zdHJ1Y3RvciIpOworCiti
YXJGb29DcmVhdGVkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgieC1iYXIiLCAieC1mb28iKTsK
K3Nob3VsZEJlKCJiYXJGb29DcmVhdGVkLm91dGVySFRNTCIsICInPHgtYmFyIGlzPVwieC1mb29c
Ij48L3gtYmFyPiciKTsKK3Nob3VsZEJlVHJ1ZSgiYmFyRm9vQ3JlYXRlZCBpbnN0YW5jZW9mIEhU
TUxVbmtub3duRWxlbWVudCIpOworCitmb29DcmVhdGVkTnVsbCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoIngtZm9vIiwgbnVsbCk7CitzaG91bGRCZSgiZm9vQ3JlYXRlZE51bGwub3V0ZXJIVE1M
IiwgZm9vT3V0ZXJIVE1MKTsKK3Nob3VsZEJlVHJ1ZSgiZm9vQ3JlYXRlZE51bGwgaW5zdGFuY2Vv
ZiBmb29Db25zdHJ1Y3RvciIpOworCitmb29DcmVhdGVkRW1wdHkgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJ4LWZvbyIsICIiKTsKK3Nob3VsZEJlKCJmb29DcmVhdGVkRW1wdHkub3V0ZXJIVE1M
IiwgZm9vT3V0ZXJIVE1MKTsKK3Nob3VsZEJlVHJ1ZSgiZm9vQ3JlYXRlZEVtcHR5IGluc3RhbmNl
b2YgZm9vQ29uc3RydWN0b3IiKTsKKworc2hvdWxkVGhyb3coImRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ0BpbnZhbGlkJywgJ3gtYmFyJykiLCAiJ0Vycm9yOiBJbnZhbGlkQ2hhcmFjdGVyRXJyb3I6
IERPTSBFeGNlcHRpb24gNSciKTsKKworLy8KKy8vIGNyZWF0ZUVsZW1lbnROUygpIHdpdGggdHlw
ZSBleHRlbnNpb25zCisvLworCitmb29DcmVhdGVkTlMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCAieC1mb28iLCBudWxsKTsKK3Nob3Vs
ZEJlKCJmb29DcmVhdGVkTlMub3V0ZXJIVE1MIiwgZm9vT3V0ZXJIVE1MKTsKK3Nob3VsZEJlVHJ1
ZSgiZm9vQ3JlYXRlZE5TIGluc3RhbmNlb2YgZm9vQ29uc3RydWN0b3IiKTsKKworYmFyQ3JlYXRl
ZE5TID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3ho
dG1sIiwgImlucHV0IiwgIngtYmFyIik7CitzaG91bGRCZSgiYmFyQ3JlYXRlZE5TLm91dGVySFRN
TCIsIGJhck91dGVySFRNTCk7CitzaG91bGRCZVRydWUoImJhckNyZWF0ZWROUyBpbnN0YW5jZW9m
IGJhckNvbnN0cnVjdG9yIik7CitzaG91bGRCZVRydWUoImlzRm9ybUNvbnRyb2woYmFyQ3JlYXRl
ZE5TKSIpOworCitzaG91bGRUaHJvdygiZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8v
ZXhhbXBsZS5jb20vMjAxMy9uby1zdWNoLW5hbWVzcGFjZScsICd4bWw6bGFuZycsICd4LWJhcicp
IiwgIidFcnJvcjogTmFtZXNwYWNlRXJyb3I6IERPTSBFeGNlcHRpb24gMTQnIik7CisKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="commit-queue"
          id="213645"
          type_id="3"
          status="-"
          setter="peter+ews"
    />
          </attachment>
      

    </bug>

</bugzilla>