<?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>201766</bug_id>
          
          <creation_ts>2019-09-13 10:45:34 -0700</creation_ts>
          <short_desc>[LFC] Do not create FormattingContext unless the root has child boxes.</short_desc>
          <delta_ts>2019-09-13 12:15:57 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1570629</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-09-13 10:45:34 -0700</bug_when>
    <thetext>There&apos;s no need for that. FormattingContexts are responsible to layout child content.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570630</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-13 10:46:01 -0700</bug_when>
    <thetext>&lt;rdar://problem/55344449&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570634</commentid>
    <comment_count>2</comment_count>
      <attachid>378738</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-09-13 11:08:49 -0700</bug_when>
    <thetext>Created attachment 378738
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570636</commentid>
    <comment_count>3</comment_count>
      <attachid>378738</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-09-13 11:13:13 -0700</bug_when>
    <thetext>Comment on attachment 378738
Patch

Nice</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570670</commentid>
    <comment_count>4</comment_count>
      <attachid>378738</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-13 12:15:55 -0700</bug_when>
    <thetext>Comment on attachment 378738
Patch

Clearing flags on attachment: 378738

Committed r249849: &lt;https://trac.webkit.org/changeset/249849&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570671</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-13 12:15:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378738</attachid>
            <date>2019-09-13 11:08:49 -0700</date>
            <delta_ts>2019-09-13 12:15:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201766-20190913110844.patch</filename>
            <type>text/plain</type>
            <size>53597</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5ODQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY1NjhlYTJiN2IwZjVk
N2Y1OGZiY2Q0MzBjZmVmNjdmMDFmZjAzMS4uMGQxYzU2OWQ0ZTQ4M2Q0OTBhMDg4MmRhMjg5OGQw
YzI5OTg0NTEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDE5LTA5LTEzICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gRG8gbm90IGNyZWF0
ZSBGb3JtYXR0aW5nQ29udGV4dCB1bmxlc3MgdGhlIHJvb3QgaGFzIGNoaWxkIGJveGVzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNzY2CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81NTM0NDQ0OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBKdXN0IGJlY2F1c2UgYSBib3ggZXN0YWJsaXNoZXMgYSBm
b3JtYXR0aW5nIGNvbnRleHQsIGl0IGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4gd2UgbmVlZCB0
byBjcmVhdGUgYSBmb3JtYXR0aW5nIGNvbnRleHQgb2JqZWN0IGZvciBpdC4KKyAgICAgICAgVGhl
IGVzdGFibGlzaGVkIGZvcm1hdHRpbmcgY29udGV4dCBpcyByZXNwb25zaWJsZSBmb3IgbGF5aW5n
IG91dCB0aGUgZGVzY2VuZGFudCBjb250ZW50LiBUaGUgZm9ybWF0dGluZyBjb250ZXh0IHJvb3Qg
aXRzZWxmIGlzCisgICAgICAgIGxhaWQgb3V0IGluIHRoZSBmb3JtYXR0aW5nIGNvbnRleHQgaXQg
bGl2ZXMgaW4uIFNvIGlmIHRoZXJlJ3Mgbm8gZGVzY2VuZGVudCBjb250ZW50LCB3ZSBkb24ndCBu
ZWVkIHRvIGNvbnN0cnVjdCB0aGUgY29udGV4dCBvYmplY3RzLgorCisgICAgICAgIDxib2R5Pjxk
aXYgc3R5bGU9ImZsb2F0OiBsZWZ0OyI+PC9kaXY+PC9ib2R5PiA8LSB0aGlzIGRpdiBlc3RhYmxp
c2hlcyBhIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCAoZmxvYXQpIGJ1dCBpdCBkb2VzIG5vdCBo
YXZlIGFueSBjb250ZW50IHNvIGxheWluZworICAgICAgICBpdCBvdXQgc2ltcGx5IG1lYW5zIHNp
emluZyBhbmQgcG9zaXRpb25pbmcgaXQgaW4gdGhlIGluaXRpYWwgYmxvY2sgZm9ybWF0dGluZyBj
b250ZXh0LgorCisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OkZvcm1hdHRpbmdDb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dE91
dE9mRmxvd0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29u
dGV4dDo6bWFwVG9wVG9Gb3JtYXR0aW5nQ29udGV4dFJvb3QgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6bWFwTGVmdFRvRm9ybWF0dGluZ0NvbnRl
eHRSb290IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRl
eHQ6Om1hcFJpZ2h0VG9Gb3JtYXR0aW5nQ29udGV4dFJvb3QgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6dmFsaWRhdGVHZW9tZXRyeUNvbnN0cmFp
bnRzQWZ0ZXJMYXlvdXQgY29uc3QpOgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4
dC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6cm9vdCBj
b25zdCk6CisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNv
bnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnNocmlua1RvRml0V2lk
dGgpOgorICAgICAgICAqIGxheW91dC9MYXlvdXRTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkxheW91dFN0YXRlOjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFN1YnRyZWUpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6ZXN0YWJsaXNoZWRGb3JtYXR0
aW5nU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6
Y3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dCk6
CisgICAgICAgICogbGF5b3V0L0xheW91dFN0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkxheW91dFN0YXRlOjpoYXNGb3JtYXR0aW5nU3RhdGUgY29uc3QpOgorICAgICAgICAqIGxh
eW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OkJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0OjpsYXlvdXRJbkZsb3dDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6dXNlZEF2YWlsYWJsZVdpZHRoRm9yRmxvYXRBdm9pZGVyIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
bGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRz
KToKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQuaDoKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0Nv
bnRleHRHZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmdpbik6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjppbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKToKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tm
b3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luc0NvbGxh
cHNlVGhyb3VnaCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRl
eHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6RmxvYXRpbmdDb250ZXh0Ojpyb290IGNv
bnN0KToKKyAgICAgICAgKiBsYXlvdXQvZmxvYXRzL0Zsb2F0aW5nU3RhdGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdGluZ1N0YXRlOjpGbG9hdGluZ1N0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6RmxvYXRpbmdTdGF0ZTo6Ym90dG9tIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6RmxvYXRpbmdTdGF0ZTo6dG9wIGNvbnN0KToKKyAgICAgICAg
KiBsYXlvdXQvZmxvYXRzL0Zsb2F0aW5nU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6RmxvYXRpbmdTdGF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rmxv
YXRpbmdTdGF0ZTo6cm9vdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0
aW5nU3RhdGU6OmxlZnRCb3R0b20gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpG
bG9hdGluZ1N0YXRlOjpyaWdodEJvdHRvbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkZsb2F0aW5nU3RhdGU6OmJvdHRvbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkZsb2F0aW5nU3RhdGU6OkZsb2F0SXRlbTo6aXNEZXNjZW5kYW50T2ZGb3JtYXR0aW5nUm9v
dCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRl
ZEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUludHJpbnNpY1dpZHRoRm9yRm9ybWF0dGlu
Z1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDo6bGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50IGNvbnN0KToK
KyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4
dC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
SW5saW5lTGF5b3V0Ojpmb3JtYXR0aW5nUm9vdCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpsaW5l
RGVzY2VudE5lZWRzQ29sbGFwc2luZyBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6
OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZTo6YWRqdXN0QmFzZWxpbmVB
bmRMaW5lSGVpZ2h0KToKKyAgICAgICAgKiBsYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9y
bWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1h
dHRpbmdDb250ZXh0OjpUYWJsZUZvcm1hdHRpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6VGFibGVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0VGFibGVDZWxsQm94KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVGb3JtYXR0aW5nQ29udGV4dDo6c2V0Q29tcHV0
ZWRHZW9tZXRyeUZvclNlY3Rpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVG
b3JtYXR0aW5nQ29udGV4dDo6ZW5zdXJlVGFibGVHcmlkKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6VGFibGVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVByZWZlcnJlZFdpZHRoRm9yQ29s
dW1ucyk6CisgICAgICAgICogbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdD
b250ZXh0Lmg6CisKIDIwMTktMDktMTMgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgW0ZUV10gSW1hZ2VCdWZmZXIvSW1hZ2VCdWZmZXJEYXRhIGlzIGhpZ2hs
eSBpbmVmZmljaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRp
bmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5j
cHAKaW5kZXggMWZkZjE4MGU1NzFhNTg2MDEyYWZiNGI3MDM0MjUxNjE0NmRhZDdlYS4uZWI5MDIw
ZTNiNWRhYzUzZWRiZDg0YmUxZGY4NTcwNWFhZDU2YTQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBM
YXlvdXQgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRm9ybWF0dGluZ0NvbnRleHQp
OwogCi1Gb3JtYXR0aW5nQ29udGV4dDo6Rm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQm94JiBmb3Jt
YXR0aW5nQ29udGV4dFJvb3QsIEZvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlKQorRm9y
bWF0dGluZ0NvbnRleHQ6OkZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IENvbnRhaW5lciYgZm9ybWF0
dGluZ0NvbnRleHRSb290LCBGb3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSkKICAgICA6
IG1fcm9vdChtYWtlV2Vha1B0cihmb3JtYXR0aW5nQ29udGV4dFJvb3QpKQogICAgICwgbV9mb3Jt
YXR0aW5nU3RhdGUoZm9ybWF0dGluZ1N0YXRlKQogewpAQCAtMTM4LDExICsxMzgsMTMgQEAgdm9p
ZCBGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0T3V0T2ZGbG93Q29udGVudCgpCiAKICAgICAgICAg
Y29tcHV0ZUJvcmRlckFuZFBhZGRpbmcoKm91dE9mRmxvd0JveCk7CiAgICAgICAgIGNvbXB1dGVP
dXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkoKm91dE9mRmxvd0JveCk7Ci0KLSAgICAgICAgYXV0
byBmb3JtYXR0aW5nQ29udGV4dCA9IGxheW91dFN0YXRlKCkuY3JlYXRlRm9ybWF0dGluZ0NvbnRl
eHQoKm91dE9mRmxvd0JveCk7Ci0gICAgICAgIGZvcm1hdHRpbmdDb250ZXh0LT5sYXlvdXRJbkZs
b3dDb250ZW50KCk7Ci0gICAgICAgIGNvbXB1dGVPdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KCpv
dXRPZkZsb3dCb3gpOwotICAgICAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0T3V0T2ZGbG93
Q29udGVudCgpOworICAgICAgICBpZiAoaXM8Q29udGFpbmVyPigqb3V0T2ZGbG93Qm94KSkgewor
ICAgICAgICAgICAgYXV0byBmb3JtYXR0aW5nQ29udGV4dCA9IGxheW91dFN0YXRlKCkuY3JlYXRl
Rm9ybWF0dGluZ0NvbnRleHQoZG93bmNhc3Q8Q29udGFpbmVyPigqb3V0T2ZGbG93Qm94KSk7Cisg
ICAgICAgICAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0SW5GbG93Q29udGVudCgpOworICAg
ICAgICAgICAgY29tcHV0ZU91dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkoKm91dE9mRmxvd0JveCk7
CisgICAgICAgICAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0T3V0T2ZGbG93Q29udGVudCgp
OyAgICAgICAgICAgIAorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGNvbXB1dGVPdXRPZkZs
b3dWZXJ0aWNhbEdlb21ldHJ5KCpvdXRPZkZsb3dCb3gpOwogICAgIH0KICAgICBMT0dfV0lUSF9T
VFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiRW5kOiBsYXlvdXQgb3V0
LW9mLWZsb3cgY29udGVudCAtPiBjb250ZXh0OiAiIDw8ICZsYXlvdXRTdGF0ZSgpIDw8ICIgcm9v
dDogIiA8PCAmcm9vdCgpKTsKIH0KQEAgLTE2Miw3ICsxNjQsNyBAQCBzdGF0aWMgTGF5b3V0VW5p
dCBtYXBIb3Jpem9udGFsUG9zaXRpb25Ub0FuY2VzdG9yKGNvbnN0IEZvcm1hdHRpbmdDb250ZXh0
JiBmb3JtYQogTGF5b3V0VW5pdCBGb3JtYXR0aW5nQ29udGV4dDo6bWFwVG9wVG9Gb3JtYXR0aW5n
Q29udGV4dFJvb3QoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGxh
eW91dEJveC5jb250YWluaW5nQmxvY2soKSk7Ci0gICAgYXV0byYgZm9ybWF0dGluZ0NvbnRleHRS
b290ID0gZG93bmNhc3Q8Q29udGFpbmVyPihyb290KCkpOworICAgIGF1dG8mIGZvcm1hdHRpbmdD
b250ZXh0Um9vdCA9IHJvb3QoKTsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzQ29udGFpbmluZ0Js
b2NrRGVzY2VuZGFudE9mKGZvcm1hdHRpbmdDb250ZXh0Um9vdCkpOwogICAgIGF1dG8gdG9wID0g
Z2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KS50b3AoKTsKICAgICBmb3IgKGF1dG8qIGNvbnRhaW5l
ciA9IGxheW91dEJveC5jb250YWluaW5nQmxvY2soKTsgY29udGFpbmVyICYmIGNvbnRhaW5lciAh
PSAmZm9ybWF0dGluZ0NvbnRleHRSb290OyBjb250YWluZXIgPSBjb250YWluZXItPmNvbnRhaW5p
bmdCbG9jaygpKQpAQCAtMTczLDEzICsxNzUsMTMgQEAgTGF5b3V0VW5pdCBGb3JtYXR0aW5nQ29u
dGV4dDo6bWFwVG9wVG9Gb3JtYXR0aW5nQ29udGV4dFJvb3QoY29uc3QgQm94JiBsYXlvdXRCb3gK
IExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Om1hcExlZnRUb0Zvcm1hdHRpbmdDb250ZXh0
Um9vdChjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94
LmNvbnRhaW5pbmdCbG9jaygpKTsKLSAgICByZXR1cm4gbWFwSG9yaXpvbnRhbFBvc2l0aW9uVG9B
bmNlc3RvcigqdGhpcywgZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KS5sZWZ0KCksICpsYXlvdXRC
b3guY29udGFpbmluZ0Jsb2NrKCksIGRvd25jYXN0PENvbnRhaW5lcj4ocm9vdCgpKSk7CisgICAg
cmV0dXJuIG1hcEhvcml6b250YWxQb3NpdGlvblRvQW5jZXN0b3IoKnRoaXMsIGdlb21ldHJ5Rm9y
Qm94KGxheW91dEJveCkubGVmdCgpLCAqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpLCByb290
KCkpOwogfQogCiBMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjptYXBSaWdodFRvRm9ybWF0
dGluZ0NvbnRleHRSb290KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogewogICAgIEFTU0VS
VChsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpOwotICAgIHJldHVybiBtYXBIb3Jpem9udGFs
UG9zaXRpb25Ub0FuY2VzdG9yKCp0aGlzLCBnZW9tZXRyeUZvckJveChsYXlvdXRCb3gpLnJpZ2h0
KCksICpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCksIGRvd25jYXN0PENvbnRhaW5lcj4ocm9v
dCgpKSk7CisgICAgcmV0dXJuIG1hcEhvcml6b250YWxQb3NpdGlvblRvQW5jZXN0b3IoKnRoaXMs
IGdlb21ldHJ5Rm9yQm94KGxheW91dEJveCkucmlnaHQoKSwgKmxheW91dEJveC5jb250YWluaW5n
QmxvY2soKSwgcm9vdCgpKTsKIH0KIAogY29uc3QgRGlzcGxheTo6Qm94JiBGb3JtYXR0aW5nQ29u
dGV4dDo6Z2VvbWV0cnlGb3JCb3goY29uc3QgQm94JiBsYXlvdXRCb3gsIE9wdGlvbmFsPEVzY2Fw
ZVR5cGU+IGVzY2FwZVR5cGUpIGNvbnN0CkBAIC0yNDIsOSArMjQ0LDcgQEAgY29uc3QgRGlzcGxh
eTo6Qm94JiBGb3JtYXR0aW5nQ29udGV4dDo6Z2VvbWV0cnlGb3JCb3goY29uc3QgQm94JiBsYXlv
dXRCb3gsIE9wdGkKICNpZm5kZWYgTkRFQlVHCiB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojp2YWxp
ZGF0ZUdlb21ldHJ5Q29uc3RyYWludHNBZnRlckxheW91dCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFp
czxDb250YWluZXI+KHJvb3QoKSkpCi0gICAgICAgIHJldHVybjsKLSAgICBhdXRvJiBmb3JtYXR0
aW5nQ29udGV4dFJvb3QgPSBkb3duY2FzdDxDb250YWluZXI+KHJvb3QoKSk7CisgICAgYXV0byYg
Zm9ybWF0dGluZ0NvbnRleHRSb290ID0gcm9vdCgpOwogICAgIC8vIEZJWE1FOiBhZGQgYSBkZXNj
ZW5kYW50c09mVHlwZTw+IGZsYXZvciB0aGF0IHN0b3BzIGF0IG5lc3RlZCBmb3JtYXR0aW5nIGNv
bnRleHRzCiAgICAgZm9yIChhdXRvJiBsYXlvdXRCb3ggOiBkZXNjZW5kYW50c09mVHlwZTxCb3g+
KGZvcm1hdHRpbmdDb250ZXh0Um9vdCkpIHsKICAgICAgICAgaWYgKCZsYXlvdXRCb3guZm9ybWF0
dGluZ0NvbnRleHRSb290KCkgIT0gJmZvcm1hdHRpbmdDb250ZXh0Um9vdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggZDk3YThiODUyNzQzY2Y2YjBmOWY5
MDkwMjhkYzY0OTc0NTA5Yjc1MC4uM2YxZWE4MzU0OGJhYWZiMDE5MDYzN2FmN2E2M2Y5OGRjMjE0
YjM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTQ2
LDcgKzQ2LDcgQEAgY2xhc3MgRm9ybWF0dGluZ1N0YXRlOwogY2xhc3MgRm9ybWF0dGluZ0NvbnRl
eHQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoRm9ybWF0dGluZ0NvbnRleHQpOwogcHVi
bGljOgotICAgIEZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IEJveCYgZm9ybWF0dGluZ0NvbnRleHRS
b290LCBGb3JtYXR0aW5nU3RhdGUmKTsKKyAgICBGb3JtYXR0aW5nQ29udGV4dChjb25zdCBDb250
YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgRm9ybWF0dGluZ1N0YXRlJik7CiAgICAgdmly
dHVhbCB+Rm9ybWF0dGluZ0NvbnRleHQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXRJbkZs
b3dDb250ZW50KCkgPSAwOwpAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICBj
b25zdCBEaXNwbGF5OjpCb3gmIGdlb21ldHJ5Rm9yQm94KGNvbnN0IEJveCYsIE9wdGlvbmFsPEVz
Y2FwZVR5cGU+ID0gV1RGOjpudWxsb3B0KSBjb25zdDsKIAotICAgIGNvbnN0IEJveCYgcm9vdCgp
IGNvbnN0IHsgcmV0dXJuICptX3Jvb3Q7IH0KKyAgICBjb25zdCBDb250YWluZXImIHJvb3QoKSBj
b25zdCB7IHJldHVybiAqbV9yb290OyB9CiAKIHByb3RlY3RlZDoKICAgICB1c2luZyBMYXlvdXRR
dWV1ZSA9IFZlY3Rvcjxjb25zdCBCb3gqPjsKQEAgLTE3MSw3ICsxNzEsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY29tcHV0ZU91dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkoY29uc3QgQm94Jik7CiAg
ICAgdm9pZCBjb21wdXRlT3V0T2ZGbG93SG9yaXpvbnRhbEdlb21ldHJ5KGNvbnN0IEJveCYpOwog
Ci0gICAgV2Vha1B0cjxjb25zdCBCb3g+IG1fcm9vdDsKKyAgICBXZWFrUHRyPGNvbnN0IENvbnRh
aW5lcj4gbV9yb290OwogICAgIEZvcm1hdHRpbmdTdGF0ZSYgbV9mb3JtYXR0aW5nU3RhdGU7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRH
ZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9t
ZXRyeS5jcHAKaW5kZXggMGFhNTc4NmUyNmIwZDhmZjZjZTQ1OWY4NTc5YWMxMGUzOTRjOGRhZi4u
ZTBjZWQ0YTg2NGMxYmI4OWQ1MmNjMWUyMWE2MGRhZTFkOGM3MzM4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAtMTEz
LDEyICsxMTMsMTIgQEAgTGF5b3V0VW5pdCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNv
bnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QoY28KICAgICBhdXRvIGJvdHRvbSA9
IGJvcmRlckFuZFBhZGRpbmdUb3A7CiAgICAgYXV0byYgZm9ybWF0dGluZ1Jvb3RDb250YWluZXIg
PSBkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCk7CiAgICAgaWYgKGZvcm1hdHRpbmdSb290
Q29udGFpbmVyLmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSkgewotICAgICAg
ICBhdXRvJiBsaW5lQm94ZXMgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGxheW91
dFN0YXRlLmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGxheW91dEJveCkpLmxpbmVCb3hlcygp
OworICAgICAgICBhdXRvJiBsaW5lQm94ZXMgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3Rh
dGU+KGxheW91dFN0YXRlLmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGZvcm1hdHRpbmdSb290
Q29udGFpbmVyKSkubGluZUJveGVzKCk7CiAgICAgICAgIC8vIEV2ZW4gZW1wdHkgY29udGFpbmVy
cyBnZW5lcmF0ZSBvbmUgbGluZS4gCiAgICAgICAgIEFTU0VSVCghbGluZUJveGVzLmlzRW1wdHko
KSk7CiAgICAgICAgIHRvcCA9IGxpbmVCb3hlcy5maXJzdCgpLmxvZ2ljYWxUb3AoKTsKICAgICAg
ICAgYm90dG9tID0gbGluZUJveGVzLmxhc3QoKS5sb2dpY2FsQm90dG9tKCk7Ci0gICAgfSBlbHNl
IGlmIChmb3JtYXR0aW5nUm9vdENvbnRhaW5lci5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0Nv
bnRleHQoKSB8fCBmb3JtYXR0aW5nUm9vdENvbnRhaW5lci5lc3RhYmxpc2hlc1RhYmxlRm9ybWF0
dGluZ0NvbnRleHQoKSB8fCBsYXlvdXRCb3guaXNEb2N1bWVudEJveCgpKSB7CisgICAgfSBlbHNl
IGlmIChmb3JtYXR0aW5nUm9vdENvbnRhaW5lci5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0Nv
bnRleHQoKSB8fCBmb3JtYXR0aW5nUm9vdENvbnRhaW5lci5lc3RhYmxpc2hlc1RhYmxlRm9ybWF0
dGluZ0NvbnRleHQoKSB8fCBmb3JtYXR0aW5nUm9vdENvbnRhaW5lci5pc0RvY3VtZW50Qm94KCkp
IHsKICAgICAgICAgaWYgKGZvcm1hdHRpbmdSb290Q29udGFpbmVyLmhhc0luRmxvd0NoaWxkKCkp
IHsKICAgICAgICAgICAgIGF1dG8mIGZpcnN0Qm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4
dC5nZW9tZXRyeUZvckJveCgqZm9ybWF0dGluZ1Jvb3RDb250YWluZXIuZmlyc3RJbkZsb3dDaGls
ZCgpLCBFc2NhcGVUeXBlOjpBY2Nlc3NDaGlsZEZvcm1hdHRpbmdDb250ZXh0KTsKICAgICAgICAg
ICAgIGF1dG8mIGxhc3RCb3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9y
Qm94KCpmb3JtYXR0aW5nUm9vdENvbnRhaW5lci5sYXN0SW5GbG93Q2hpbGQoKSwgRXNjYXBlVHlw
ZTo6QWNjZXNzQ2hpbGRGb3JtYXR0aW5nQ29udGV4dCk7CkBAIC0xMjgsNyArMTI4LDcgQEAgTGF5
b3V0VW5pdCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbnRlbnRIZWlnaHRGb3JGb3Jt
YXR0aW5nQ29udGV4dFJvb3QoY28KICAgICB9IGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAKLSAgICBhdXRvKiBmb3JtYXR0aW5nQ29udGV4dFJvb3QgPSAmbGF5b3V0Qm94Owor
ICAgIGF1dG8qIGZvcm1hdHRpbmdDb250ZXh0Um9vdCA9ICZmb3JtYXR0aW5nUm9vdENvbnRhaW5l
cjsKICAgICAvLyBUT0RPOiBUaGUgZG9jdW1lbnQgcmVuZGVyZXIgaXMgbm90IGEgZm9ybWF0dGlu
ZyBjb250ZXh0IHJvb3QgYnkgZGVmYXVsdCBhdCBhbGwuIE5lZWQgdG8gZmluZCBvdXQgd2hhdCBp
dCBpcy4KICAgICBpZiAoIWxheW91dEJveC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkp
IHsKICAgICAgICAgQVNTRVJUKGxheW91dEJveC5pc0RvY3VtZW50Qm94KCkpOwpAQCAtMjU3LDEz
ICsyNTcsMTggQEAgTGF5b3V0VW5pdCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnNocmlu
a1RvRml0V2lkdGgoY29uc3QgQm94JiBmb3JtYXR0aW5nUm8KICAgICAvLyAncGFkZGluZy1sZWZ0
JywgJ3BhZGRpbmctcmlnaHQnLCAnYm9yZGVyLXJpZ2h0LXdpZHRoJywgJ21hcmdpbi1yaWdodCcs
IGFuZCB0aGUgd2lkdGhzIG9mIGFueSByZWxldmFudCBzY3JvbGwgYmFycy4KIAogICAgIC8vIFRo
ZW4gdGhlIHNocmluay10by1maXQgd2lkdGggaXM6IG1pbihtYXgocHJlZmVycmVkIG1pbmltdW0g
d2lkdGgsIGF2YWlsYWJsZSB3aWR0aCksIHByZWZlcnJlZCB3aWR0aCkuCi0gICAgYXV0byYgbGF5
b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwotICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0
ZUZvclJvb3QgPSBsYXlvdXRTdGF0ZS5jcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5n
Um9vdElmTmVlZGVkKGZvcm1hdHRpbmdSb290KTsKLSAgICBhdXRvIGludHJpbnNpY1dpZHRoQ29u
c3RyYWludHMgPSBmb3JtYXR0aW5nU3RhdGVGb3JSb290LmludHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHMoKTsKLSAgICBpZiAoIWludHJpbnNpY1dpZHRoQ29uc3RyYWludHMpCi0gICAgICAgIGludHJp
bnNpY1dpZHRoQ29uc3RyYWludHMgPSBsYXlvdXRTdGF0ZS5jcmVhdGVGb3JtYXR0aW5nQ29udGV4
dChmb3JtYXR0aW5nUm9vdCktPmNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cygpOwor
ICAgIGF1dG8gaW50cmluc2ljV2lkdGhDb25zdHJhaW50cyA9IEludHJpbnNpY1dpZHRoQ29uc3Ry
YWludHMgeyB9OworICAgIGlmIChpczxDb250YWluZXI+KGZvcm1hdHRpbmdSb290KSkgeworICAg
ICAgICBhdXRvJiByb290ID0gZG93bmNhc3Q8Q29udGFpbmVyPihmb3JtYXR0aW5nUm9vdCk7Cisg
ICAgICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZUZvclJvb3QgPSBsYXlvdXRTdGF0ZSgpLmNyZWF0
ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQocm9vdCk7CisgICAgICAg
IGF1dG8gcHJlY29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzID0gZm9ybWF0dGluZ1N0
YXRlRm9yUm9vdC5pbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCk7CisgICAgICAgIGlmICghcHJl
Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKQorICAgICAgICAgICAgaW50cmluc2lj
V2lkdGhDb25zdHJhaW50cyA9IGxheW91dFN0YXRlKCkuY3JlYXRlRm9ybWF0dGluZ0NvbnRleHQo
cm9vdCktPmNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cygpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzID0gKnByZWNvbXB1dGVkSW50
cmluc2ljV2lkdGhDb25zdHJhaW50czsKKyAgICB9CiAgICAgYXV0byBhdmFpbGFibGVXaWR0aCA9
ICp1c2VkVmFsdWVzLmNvbnRhaW5pbmdCbG9ja1dpZHRoOwotICAgIHJldHVybiBzdGQ6Om1pbihz
dGQ6Om1heChpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzLT5taW5pbXVtLCBhdmFpbGFibGVXaWR0
aCksIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMtPm1heGltdW0pOworICAgIHJldHVybiBzdGQ6
Om1pbihzdGQ6Om1heChpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzLm1pbmltdW0sIGF2YWlsYWJs
ZVdpZHRoKSwgaW50cmluc2ljV2lkdGhDb25zdHJhaW50cy5tYXhpbXVtKTsKIH0KIAogVmVydGlj
YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxh
Y2VkVmVydGljYWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJveCwgVXNlZFZlcnRpY2FsVmFs
dWVzIHVzZWRWYWx1ZXMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
TGF5b3V0U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcApp
bmRleCBjN2MzNWVjNDMxZDlkMzczZWNlYzQxZWU2ZDg2ZjM2ODhmZjdlMGU0Li42ZjJjMWIzNzhk
ZWIyMjg5NDZkMGYxYzc1YWRlY2RmODUxYzU3MTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlv
dXRTdGF0ZS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBMYXlvdXRTdGF0ZTo6dXBkYXRlTGF5
b3V0KCkKICAgICBtX2Zvcm1hdHRpbmdDb250ZXh0Um9vdExpc3RGb3JMYXlvdXQuY2xlYXIoKTsK
IH0KIAotdm9pZCBMYXlvdXRTdGF0ZTo6bGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRTdWJ0cmVlKGNv
bnN0IEJveCYgbGF5b3V0Um9vdCkKK3ZvaWQgTGF5b3V0U3RhdGU6OmxheW91dEZvcm1hdHRpbmdD
b250ZXh0U3VidHJlZShjb25zdCBDb250YWluZXImIGxheW91dFJvb3QpCiB7CiAgICAgUkVMRUFT
RV9BU1NFUlQobGF5b3V0Um9vdC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpOwogICAg
IGF1dG8gZm9ybWF0dGluZ0NvbnRleHQgPSBjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChsYXlvdXRS
b290KTsKQEAgLTEwNCwxNCArMTA0LDE0IEBAIEZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6
OmZvcm1hdHRpbmdTdGF0ZUZvckJveChjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKICAgICBy
ZXR1cm4gKm1fZm9ybWF0dGluZ1N0YXRlcy5nZXQoJnJvb3QpOwogfQogCi1Gb3JtYXR0aW5nU3Rh
dGUmIExheW91dFN0YXRlOjplc3RhYmxpc2hlZEZvcm1hdHRpbmdTdGF0ZShjb25zdCBCb3gmIGZv
cm1hdHRpbmdSb290KSBjb25zdAorRm9ybWF0dGluZ1N0YXRlJiBMYXlvdXRTdGF0ZTo6ZXN0YWJs
aXNoZWRGb3JtYXR0aW5nU3RhdGUoY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nUm9vdCkgY29u
c3QKIHsKICAgICBBU1NFUlQoZm9ybWF0dGluZ1Jvb3QuZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29u
dGV4dCgpKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm1hdHRpbmdTdGF0ZXMuY29udGFpbnMo
JmZvcm1hdHRpbmdSb290KSk7CiAgICAgcmV0dXJuICptX2Zvcm1hdHRpbmdTdGF0ZXMuZ2V0KCZm
b3JtYXR0aW5nUm9vdCk7CiB9CiAKLUZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmNyZWF0
ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoY29uc3QgQm94JiBmb3Jt
YXR0aW5nUm9vdCkKK0Zvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRp
bmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0
aW5nUm9vdCkKIHsKICAgICBBU1NFUlQoZm9ybWF0dGluZ1Jvb3QuZXN0YWJsaXNoZXNGb3JtYXR0
aW5nQ29udGV4dCgpKTsKIApAQCAtMTUxLDcgKzE1MSw3IEBAIEZvcm1hdHRpbmdTdGF0ZSYgTGF5
b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQo
Y29uCiAgICAgQ1JBU0goKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvcm1hdHRpbmdDb250ZXh0
PiBMYXlvdXRTdGF0ZTo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQm94JiBmb3JtYXR0
aW5nQ29udGV4dFJvb3QpCitzdGQ6OnVuaXF1ZV9wdHI8Rm9ybWF0dGluZ0NvbnRleHQ+IExheW91
dFN0YXRlOjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChjb25zdCBDb250YWluZXImIGZvcm1hdHRp
bmdDb250ZXh0Um9vdCkKIHsKICAgICBBU1NFUlQoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFi
bGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSk7CiAgICAgaWYgKGZvcm1hdHRpbmdDb250ZXh0Um9v
dC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L0xheW91dFN0YXRlLmgKaW5kZXggYTUxM2JlMjE1OGJjZjRhYzU0NzBjYWI0MTZhYmQ3YTY0OTg3
NmU0My4uNDgzYjU5OGY5ZWYzMzQ5Y2Y4NWQyZTA1NDIwYWFjZWU5YmU5MGMyNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0xheW91dFN0YXRlLmgKQEAgLTc2LDExICs3NiwxMSBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBuZWVkc1VwZGF0ZShjb25zdCBCb3gmKSBjb25zdDsKIAogICAgIEZvcm1hdHRpbmdTdGF0
ZSYgZm9ybWF0dGluZ1N0YXRlRm9yQm94KGNvbnN0IEJveCYpIGNvbnN0OwotICAgIEZvcm1hdHRp
bmdTdGF0ZSYgZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUoY29uc3QgQm94JiBmb3JtYXR0aW5n
Um9vdCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNGb3JtYXR0aW5nU3RhdGUoY29uc3QgQm94JiBmb3Jt
YXR0aW5nUm9vdCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXR0aW5nU3RhdGVzLmNvbnRhaW5zKCZm
b3JtYXR0aW5nUm9vdCk7IH0KLSAgICBGb3JtYXR0aW5nU3RhdGUmIGNyZWF0ZUZvcm1hdHRpbmdT
dGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoY29uc3QgQm94JiBmb3JtYXR0aW5nUm9vdCk7
CisgICAgRm9ybWF0dGluZ1N0YXRlJiBlc3RhYmxpc2hlZEZvcm1hdHRpbmdTdGF0ZShjb25zdCBD
b250YWluZXImIGZvcm1hdHRpbmdSb290KSBjb25zdDsKKyAgICBib29sIGhhc0Zvcm1hdHRpbmdT
dGF0ZShjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdSb290KSBjb25zdCB7IHJldHVybiBtX2Zv
cm1hdHRpbmdTdGF0ZXMuY29udGFpbnMoJmZvcm1hdHRpbmdSb290KTsgfQorICAgIEZvcm1hdHRp
bmdTdGF0ZSYgY3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChj
b25zdCBDb250YWluZXImIGZvcm1hdHRpbmdSb290KTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxG
b3JtYXR0aW5nQ29udGV4dD4gY3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQm94JiBmb3Jt
YXR0aW5nQ29udGV4dFJvb3QpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxGb3JtYXR0aW5nQ29udGV4
dD4gY3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29u
dGV4dFJvb3QpOwogI2lmbmRlZiBOREVCVUcKICAgICB2b2lkIHJlZ2lzdGVyRm9ybWF0dGluZ0Nv
bnRleHQoY29uc3QgRm9ybWF0dGluZ0NvbnRleHQmKTsKICAgICB2b2lkIGRlcmVnaXN0ZXJGb3Jt
YXR0aW5nQ29udGV4dChjb25zdCBGb3JtYXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQp
IHsgbV9mb3JtYXR0aW5nQ29udGV4dExpc3QucmVtb3ZlKCZmb3JtYXR0aW5nQ29udGV4dCk7IH0K
QEAgLTk2LDEwICs5NiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCB2ZXJpZnlBbmRPdXRwdXRNaXNt
YXRjaGluZ0xheW91dFRyZWUoY29uc3QgUmVuZGVyVmlldyYsIGNvbnN0IENvbnRhaW5lciYgaW5p
dGlhbENvbnRhaW5pbmdCbG9jaykgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBsYXlvdXRG
b3JtYXR0aW5nQ29udGV4dFN1YnRyZWUoY29uc3QgQm94Jik7CisgICAgdm9pZCBsYXlvdXRGb3Jt
YXR0aW5nQ29udGV4dFN1YnRyZWUoY29uc3QgQ29udGFpbmVyJik7CiAKICAgICBIYXNoU2V0PGNv
bnN0IENvbnRhaW5lcio+IG1fZm9ybWF0dGluZ0NvbnRleHRSb290TGlzdEZvckxheW91dDsKLSAg
ICBIYXNoTWFwPGNvbnN0IEJveCosIHN0ZDo6dW5pcXVlX3B0cjxGb3JtYXR0aW5nU3RhdGU+PiBt
X2Zvcm1hdHRpbmdTdGF0ZXM7CisgICAgSGFzaE1hcDxjb25zdCBDb250YWluZXIqLCBzdGQ6OnVu
aXF1ZV9wdHI8Rm9ybWF0dGluZ1N0YXRlPj4gbV9mb3JtYXR0aW5nU3RhdGVzOwogI2lmbmRlZiBO
REVCVUcKICAgICBIYXNoU2V0PGNvbnN0IEZvcm1hdHRpbmdDb250ZXh0Kj4gbV9mb3JtYXR0aW5n
Q29udGV4dExpc3Q7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9i
bG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4
IDZkMTQxOWFmNWMyMjhjNzAwZDUxYTMyYjhjY2Y2ZTFlOTVkODc5YTMuLmRjYTAwYzJlM2EyZTNk
NDQzZmQzZGEzYmMxZWM5YzgxMzA2Mzc2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0
LmNwcApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgTGF5b3V0IHsKIAogV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKEJsb2NrRm9ybWF0dGluZ0NvbnRleHQpOwogCi1CbG9ja0Zvcm1hdHRp
bmdDb250ZXh0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KGNvbnN0IEJveCYgZm9ybWF0dGluZ0Nv
bnRleHRSb290LCBCbG9ja0Zvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlKQorQmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dChjb25zdCBDb250YWluZXIm
IGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgQmxvY2tGb3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdT
dGF0ZSkKICAgICA6IEZvcm1hdHRpbmdDb250ZXh0KGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgZm9y
bWF0dGluZ1N0YXRlKQogewogfQpAQCAtNTUsMTIgKzU1LDkgQEAgdm9pZCBCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0OjpsYXlvdXRJbkZsb3dDb250ZW50KCkKICAgICAvLyBJbiBhIGJsb2NrIGZvcm1h
dHRpbmcgY29udGV4dCwgYm94ZXMgYXJlIGxhaWQgb3V0IG9uZSBhZnRlciB0aGUgb3RoZXIsIHZl
cnRpY2FsbHksIGJlZ2lubmluZyBhdCB0aGUgdG9wIG9mIGEgY29udGFpbmluZyBibG9jay4KICAg
ICAvLyBUaGUgdmVydGljYWwgZGlzdGFuY2UgYmV0d2VlbiB0d28gc2libGluZyBib3hlcyBpcyBk
ZXRlcm1pbmVkIGJ5IHRoZSAnbWFyZ2luJyBwcm9wZXJ0aWVzLgogICAgIC8vIFZlcnRpY2FsIG1h
cmdpbnMgYmV0d2VlbiBhZGphY2VudCBibG9jay1sZXZlbCBib3hlcyBpbiBhIGJsb2NrIGZvcm1h
dHRpbmcgY29udGV4dCBjb2xsYXBzZS4KLSAgICBpZiAoIWlzPENvbnRhaW5lcj4ocm9vdCgpKSkK
LSAgICAgICAgcmV0dXJuOwotCiAgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0
TGF5b3V0LCBzdHJlYW0gPDwgIltTdGFydF0gLT4gYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0IC0+
IGZvcm1hdHRpbmcgcm9vdCgiIDw8ICZyb290KCkgPDwgIikiKTsKIAotICAgIGF1dG8mIGZvcm1h
dHRpbmdSb290ID0gZG93bmNhc3Q8Q29udGFpbmVyPihyb290KCkpOworICAgIGF1dG8mIGZvcm1h
dHRpbmdSb290ID0gcm9vdCgpOwogICAgIExheW91dFF1ZXVlIGxheW91dFF1ZXVlOwogICAgIGF1
dG8gZmxvYXRpbmdDb250ZXh0ID0gRmxvYXRpbmdDb250ZXh0IHsgKnRoaXMsIGZvcm1hdHRpbmdT
dGF0ZSgpLmZsb2F0aW5nU3RhdGUoKSB9OwogICAgIC8vIFRoaXMgaXMgYSBwb3N0LW9yZGVyIHRy
ZWUgdHJhdmVyc2FsIGxheW91dC4KQEAgLTEyNiwxOCArMTIzLDE3IEBAIE9wdGlvbmFsPExheW91
dFVuaXQ+IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OnVzZWRBdmFpbGFibGVXaWR0aEZvckZsb2F0
QXZvaWRlcihjCiAgICAgaWYgKGZsb2F0aW5nQ29udGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgLy8gVmVydGljYWwgc3RhdGljIHBvc2l0aW9uIGlzIG5vdCBjb21wdXRl
ZCB5ZXQsIHNvIGxldCdzIGp1c3QgZXN0aW1hdGUgaXQgZm9yIG5vdy4KLSAgICBhdXRvJiBmb3Jt
YXR0aW5nUm9vdCA9IGRvd25jYXN0PENvbnRhaW5lcj4ocm9vdCgpKTsKICAgICBhdXRvIHZlcnRp
Y2FsUG9zaXRpb24gPSBtYXBUb3BUb0Zvcm1hdHRpbmdDb250ZXh0Um9vdChsYXlvdXRCb3gpOwog
ICAgIGF1dG8gY29uc3RyYWludHMgPSBmbG9hdGluZ0NvbnRleHQuY29uc3RyYWludHMoeyB2ZXJ0
aWNhbFBvc2l0aW9uIH0pOwogICAgIGlmICghY29uc3RyYWludHMubGVmdCAmJiAhY29uc3RyYWlu
dHMucmlnaHQpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgYXV0byYgY29udGFpbmluZ0Jsb2Nr
ID0gZG93bmNhc3Q8Q29udGFpbmVyPigqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKTsKKyAg
ICBhdXRvJiBjb250YWluaW5nQmxvY2sgPSAqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpOwog
ICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9ja0dlb21ldHJ5ID0gZ2VvbWV0cnlGb3JCb3goY29udGFp
bmluZ0Jsb2NrKTsKICAgICBhdXRvIGF2YWlsYWJsZVdpZHRoID0gY29udGFpbmluZ0Jsb2NrR2Vv
bWV0cnkuY29udGVudEJveFdpZHRoKCk7CiAKICAgICBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9j
a0xlZnQ7CiAgICAgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tSaWdodCA9IGNvbnRhaW5pbmdC
bG9ja0dlb21ldHJ5LnJpZ2h0KCk7Ci0gICAgaWYgKCZjb250YWluaW5nQmxvY2sgIT0gJmZvcm1h
dHRpbmdSb290KSB7CisgICAgaWYgKCZjb250YWluaW5nQmxvY2sgIT0gJnJvb3QoKSkgewogICAg
ICAgICAvLyBNb3ZlIGNvbnRhaW5pbmcgYmxvY2sgbGVmdC9yaWdodCB0byB0aGUgcm9vdCdzIGNv
b3JkaW5hdGUgc3lzdGVtLgogICAgICAgICBjb250YWluaW5nQmxvY2tMZWZ0ID0gbWFwTGVmdFRv
Rm9ybWF0dGluZ0NvbnRleHRSb290KGNvbnRhaW5pbmdCbG9jayk7CiAgICAgICAgIGNvbnRhaW5p
bmdCbG9ja1JpZ2h0ID0gbWFwUmlnaHRUb0Zvcm1hdHRpbmdDb250ZXh0Um9vdChjb250YWluaW5n
QmxvY2spOwpAQCAtMTY3LDE1ICsxNjMsMTYgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
OjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJvb3QoRmxvYXRpbmdDb250ZXh0JiBmbG9hdGkKICAg
ICAgICAgdXNlZEF2YWlsYWJsZVdpZHRoRm9yRmxvYXRBdm9pZGVyID0gdGhpcy0+dXNlZEF2YWls
YWJsZVdpZHRoRm9yRmxvYXRBdm9pZGVyKGZsb2F0aW5nQ29udGV4dCwgbGF5b3V0Qm94KTsKICAg
ICBjb21wdXRlV2lkdGhBbmRNYXJnaW4obGF5b3V0Qm94LCB1c2VkQXZhaWxhYmxlV2lkdGhGb3JG
bG9hdEF2b2lkZXIpOwogICAgIGNvbXB1dGVTdGF0aWNIb3Jpem9udGFsUG9zaXRpb24obGF5b3V0
Qm94KTsKLSAgICAvLyBTd2ljaCBvdmVyIHRvIHRoZSBuZXcgZm9ybWF0dGluZyBjb250ZXh0ICh0
aGUgb25lIHRoYXQgdGhlIHJvb3QgY3JlYXRlcykuCi0gICAgYXV0byBmb3JtYXR0aW5nQ29udGV4
dCA9IGxheW91dFN0YXRlKCkuY3JlYXRlRm9ybWF0dGluZ0NvbnRleHQobGF5b3V0Qm94KTsKLSAg
ICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0SW5GbG93Q29udGVudCgpOwotICAgIC8vIENvbWUg
YmFjayBhbmQgZmluYWxpemUgdGhlIHJvb3QncyBnZW9tZXRyeS4KLSAgICBMT0dfV0lUSF9TVFJF
QU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW0NvbXB1dGVdIC0+IFtIZWln
aHRdW01hcmdpbl0gLT4gZm9yIGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKLSAg
ICBjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKGxheW91dEJveCk7Ci0gICAgLy8gTm93IHRoYXQgd2Ug
Y29tcHV0ZWQgdGhlIHJvb3QncyBoZWlnaHQsIHdlIGNhbiBnbyBiYWNrIGFuZCBsYXlvdXQgdGhl
IG91dC1vZi1mbG93IGNvbnRlbnQuCi0gICAgZm9ybWF0dGluZ0NvbnRleHQtPmxheW91dE91dE9m
Rmxvd0NvbnRlbnQoKTsKLQorICAgIGlmIChpczxDb250YWluZXI+KGxheW91dEJveCkpIHsKKyAg
ICAgICAgLy8gU3dpY2ggb3ZlciB0byB0aGUgbmV3IGZvcm1hdHRpbmcgY29udGV4dCAodGhlIG9u
ZSB0aGF0IHRoZSByb290IGNyZWF0ZXMpLgorICAgICAgICBhdXRvIGZvcm1hdHRpbmdDb250ZXh0
ID0gbGF5b3V0U3RhdGUoKS5jcmVhdGVGb3JtYXR0aW5nQ29udGV4dChkb3duY2FzdDxDb250YWlu
ZXI+KGxheW91dEJveCkpOworICAgICAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0SW5GbG93
Q29udGVudCgpOworICAgICAgICAvLyBDb21lIGJhY2sgYW5kIGZpbmFsaXplIHRoZSByb290J3Mg
Z2VvbWV0cnkuCisgICAgICAgIGNvbXB1dGVIZWlnaHRBbmRNYXJnaW4obGF5b3V0Qm94KTsKKyAg
ICAgICAgLy8gTm93IHRoYXQgd2UgY29tcHV0ZWQgdGhlIHJvb3QncyBoZWlnaHQsIHdlIGNhbiBn
byBiYWNrIGFuZCBsYXlvdXQgdGhlIG91dC1vZi1mbG93IGNvbnRlbnQuCisgICAgICAgIGZvcm1h
dHRpbmdDb250ZXh0LT5sYXlvdXRPdXRPZkZsb3dDb250ZW50KCk7CisgICAgfSBlbHNlCisgICAg
ICAgIGNvbXB1dGVIZWlnaHRBbmRNYXJnaW4obGF5b3V0Qm94KTsKICAgICAvLyBGbG9hdCByZWxh
dGVkIGZpbmFsIHBvc2l0aW9uaW5nLgogICAgIGlmIChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0
aW9uZWQoKSkgewogICAgICAgICBjb21wdXRlRmxvYXRpbmdQb3NpdGlvbihmbG9hdGluZ0NvbnRl
eHQsIGxheW91dEJveCk7CkBAIC00NDYsNyArNDQzLDYgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94KQogCiBG
b3JtYXR0aW5nQ29udGV4dDo6SW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0Ojpjb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoKQogewotICAgIGF1
dG8mIGZvcm1hdHRpbmdSb290ID0gcm9vdCgpOwogICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9
IHRoaXMtPmZvcm1hdHRpbmdTdGF0ZSgpOwogICAgIEFTU0VSVCghZm9ybWF0dGluZ1N0YXRlLmlu
dHJpbnNpY1dpZHRoQ29uc3RyYWludHMoKSk7CiAKQEAgLTQ1Niw4ICs0NTIsOCBAQCBGb3JtYXR0
aW5nQ29udGV4dDo6SW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0Ojpjb21wdXRlZEludAogICAgIC8vIDMuIEFzIHdlIGNsaW1iIGJhY2sgb24gdGhlIHRyZWUs
IGNvbXB1dGUgbWluL21heCBpbnRyaW5zaWMgd2lkdGgKICAgICAvLyAoQW55IHN1YnRyZWVzIHdp
dGggbmV3IGZvcm1hdHRpbmcgY29udGV4dHMgbmVlZCB0byBsYXlvdXQgc3luY2hyb25vdXNseSkK
ICAgICBWZWN0b3I8Y29uc3QgQm94Kj4gcXVldWU7Ci0gICAgaWYgKGlzPENvbnRhaW5lcj4oZm9y
bWF0dGluZ1Jvb3QpICYmIGRvd25jYXN0PENvbnRhaW5lcj4oZm9ybWF0dGluZ1Jvb3QpLmhhc0lu
Rmxvd09yRmxvYXRpbmdDaGlsZCgpKQotICAgICAgICBxdWV1ZS5hcHBlbmQoZG93bmNhc3Q8Q29u
dGFpbmVyPihmb3JtYXR0aW5nUm9vdCkuZmlyc3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSk7Cisg
ICAgaWYgKHJvb3QoKS5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkKKyAgICAgICAgcXVldWUu
YXBwZW5kKHJvb3QoKS5maXJzdEluRmxvd09yRmxvYXRpbmdDaGlsZCgpKTsKIAogICAgIEludHJp
bnNpY1dpZHRoQ29uc3RyYWludHMgY29uc3RyYWludHM7CiAgICAgd2hpbGUgKCFxdWV1ZS5pc0Vt
cHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRp
bmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2Nr
Zm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggZGQ2ZjU0OThjOGQyYmQ4
ODI3ODlmZjRmYzFjY2I5ZGU3ZGJlZWQ3My4uM2EwZmZlYzZhZDQ5MjRjMDQwNmI2MWEzNjBjZjc4
NmNkZWFjNzBkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0
dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTQ3LDcgKzQ3LDcg
QEAgY2xhc3MgRmxvYXRpbmdDb250ZXh0OwogY2xhc3MgQmxvY2tGb3JtYXR0aW5nQ29udGV4dCA6
IHB1YmxpYyBGb3JtYXR0aW5nQ29udGV4dCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0KTsKIHB1YmxpYzoKLSAgICBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0KGNvbnN0IEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBCbG9ja0Zvcm1hdHRpbmdTdGF0
ZSYpOworICAgIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0
aW5nQ29udGV4dFJvb3QsIEJsb2NrRm9ybWF0dGluZ1N0YXRlJik7CiAKICAgICB2b2lkIGxheW91
dEluRmxvd0NvbnRlbnQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdD
b250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IGM0ODczMWI1MzA0OTg5NmQ5OTFlMWRmZWEyZWI4NzU0
MDlkNWVmYmIuLmRmY2YxOWU5ZWNkNTBiNzFlYTY5ZjJkZDg1ZmYxMmU5NWFmOThmZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0
aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tm
b3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTc2LDE1ICs3
NiwxNiBAQCBIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZwogICAgICAgICAgICAgcmV0dXJuIHsgMCwg
bm9uQ29sbGFwc2VkTWFyZ2luIH07CiAKICAgICAgICAgLy8gMS4gdGhlIGJvdHRvbSBlZGdlIG9m
IHRoZSBsYXN0IGxpbmUgYm94LCBpZiB0aGUgYm94IGVzdGFibGlzaGVzIGEgaW5saW5lIGZvcm1h
dHRpbmcgY29udGV4dCB3aXRoIG9uZSBvciBtb3JlIGxpbmVzCi0gICAgICAgIGlmIChsYXlvdXRC
b3guZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpKSB7Ci0gICAgICAgICAgICBh
dXRvJiBsaW5lQm94ZXMgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGxheW91dFN0
YXRlLmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGxheW91dEJveCkpLmxpbmVCb3hlcygpOwor
ICAgICAgICBhdXRvJiBsYXlvdXRDb250YWluZXIgPSBkb3duY2FzdDxDb250YWluZXI+KGxheW91
dEJveCk7CisgICAgICAgIGlmIChsYXlvdXRDb250YWluZXIuZXN0YWJsaXNoZXNJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dCgpKSB7CisgICAgICAgICAgICBhdXRvJiBsaW5lQm94ZXMgPSBkb3duY2Fz
dDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGxheW91dFN0YXRlLmVzdGFibGlzaGVkRm9ybWF0dGlu
Z1N0YXRlKGxheW91dENvbnRhaW5lcikpLmxpbmVCb3hlcygpOwogICAgICAgICAgICAgLy8gRXZl
biBlbXB0eSBjb250YWluZXJzIGdlbmVyYXRlIG9uZSBsaW5lLiAKICAgICAgICAgICAgIEFTU0VS
VCghbGluZUJveGVzLmlzRW1wdHkoKSk7CiAgICAgICAgICAgICByZXR1cm4geyBsaW5lQm94ZXMu
bGFzdCgpLmxvZ2ljYWxCb3R0b20oKSAtIGJvcmRlckFuZFBhZGRpbmdUb3AsIG5vbkNvbGxhcHNl
ZE1hcmdpbiB9OwogICAgICAgICB9CiAKICAgICAgICAgLy8gMi4gdGhlIGJvdHRvbSBlZGdlIG9m
IHRoZSBib3R0b20gKHBvc3NpYmx5IGNvbGxhcHNlZCkgbWFyZ2luIG9mIGl0cyBsYXN0IGluLWZs
b3cgY2hpbGQsIGlmIHRoZSBjaGlsZCdzIGJvdHRvbSBtYXJnaW4uLi4KLSAgICAgICAgYXV0byog
bGFzdEluRmxvd0NoaWxkID0gZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmxhc3RJbkZs
b3dDaGlsZCgpOworICAgICAgICBhdXRvKiBsYXN0SW5GbG93Q2hpbGQgPSBsYXlvdXRDb250YWlu
ZXIubGFzdEluRmxvd0NoaWxkKCk7CiAgICAgICAgIEFTU0VSVChsYXN0SW5GbG93Q2hpbGQpOwog
ICAgICAgICBhdXRvIG1hcmdpbkNvbGxhcHNlID0gTWFyZ2luQ29sbGFwc2UoZm9ybWF0dGluZ0Nv
bnRleHQpOwogICAgICAgICBpZiAoIW1hcmdpbkNvbGxhcHNlLm1hcmdpbkFmdGVyQ29sbGFwc2Vz
V2l0aFBhcmVudE1hcmdpbkFmdGVyKCpsYXN0SW5GbG93Q2hpbGQpKSB7CkBAIC0zMjgsOCArMzI5
LDggQEAgRm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgQmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmkKICAgICAgICAgICAgIHJldHVybiB7IH07CiAg
ICAgICAgIH0KIAotICAgICAgICBpZiAobGF5b3V0Qm94LmVzdGFibGlzaGVzRm9ybWF0dGluZ0Nv
bnRleHQoKSkKLSAgICAgICAgICAgIHJldHVybiBsYXlvdXRTdGF0ZSgpLmNyZWF0ZUZvcm1hdHRp
bmdDb250ZXh0KGxheW91dEJveCktPmNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cygp
OworICAgICAgICBpZiAobGF5b3V0Qm94LmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSAm
JiBpczxDb250YWluZXI+KGxheW91dEJveCkpCisgICAgICAgICAgICByZXR1cm4gbGF5b3V0U3Rh
dGUoKS5jcmVhdGVGb3JtYXR0aW5nQ29udGV4dChkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJv
eCkpLT5jb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoKTsKIAogICAgICAgICBpZiAo
IWlzPENvbnRhaW5lcj4obGF5b3V0Qm94KSB8fCAhZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRC
b3gpLmhhc0luRmxvd09yRmxvYXRpbmdDaGlsZCgpKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tN
YXJnaW5Db2xsYXBzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5n
L0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCmluZGV4IGY2NmEzMDI3NjE0OWVjMGM5ODNhY2U3NGM2
OTI0M2Q0NWNiNmQxYzguLmE4ZTAyODQ5N2Y5NzNmYjg5ZGI4NGVkMGE4MWM5YmRiMzVmNWUzMTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tN
YXJnaW5Db2xsYXBzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0
dGluZy9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcApAQCAtMzk5LDE1ICszOTksMTYgQEAgYm9vbCBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luc0NvbGxhcHNlVGhy
b3VnaChjb25zdCBCb3gmIGwKICAgICAgICAgICAgIGF1dG8mIGxheW91dFN0YXRlID0gdGhpcy0+
bGF5b3V0U3RhdGUoKTsKICAgICAgICAgICAgIC8vIElmIHdlIGdldCBoZXJlIHRocm91Z2ggbWFy
Z2luIGVzdGltYXRpb24sIHdlIGRvbid0IG5lY2Vzc2FyaWx5IGhhdmUgYW4gYWN0dWFsIHN0YXRl
IGZvciB0aGlzIGxheW91dCBib3ggc2luY2UKICAgICAgICAgICAgIC8vIHdlIGhhdmVuJ3Qgc3Rh
cnRlZCBsYXlpbmcgaXQgb3V0IHlldC4KLSAgICAgICAgICAgIGlmICghbGF5b3V0U3RhdGUuaGFz
Rm9ybWF0dGluZ1N0YXRlKGxheW91dEJveCkpCisgICAgICAgICAgICBhdXRvJiBsYXlvdXRDb250
YWluZXIgPSBkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCk7CisgICAgICAgICAgICBpZiAo
IWxheW91dFN0YXRlLmhhc0Zvcm1hdHRpbmdTdGF0ZShsYXlvdXRDb250YWluZXIpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0
ZSA9IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUuZXN0YWJsaXNo
ZWRGb3JtYXR0aW5nU3RhdGUobGF5b3V0Qm94KSk7CisgICAgICAgICAgICBhdXRvJiBmb3JtYXR0
aW5nU3RhdGUgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGxheW91dFN0YXRlLmVz
dGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGxheW91dENvbnRhaW5lcikpOwogICAgICAgICAgICAg
aWYgKCFmb3JtYXR0aW5nU3RhdGUuaW5saW5lUnVucygpLmlzRW1wdHkoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAvLyBBbnkgZmxvYXQgYm94IGluIHRoaXMg
Zm9ybWF0dGluZyBjb250ZXh0IHByZXZlbnRzIGNvbGxhcHNpbmcgdGhyb3VnaC4KICAgICAgICAg
ICAgIGF1dG8mIGZsb2F0cyA9IGZvcm1hdHRpbmdTdGF0ZS5mbG9hdGluZ1N0YXRlKCkuZmxvYXRz
KCk7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGZsb2F0SXRlbSA6IGZsb2F0cykgewotICAgICAg
ICAgICAgICAgIGlmIChmbG9hdEl0ZW0uaXNEZXNjZW5kYW50T2ZGb3JtYXR0aW5nUm9vdChkb3du
Y2FzdDxDb250YWluZXI+KGxheW91dEJveCkpKQorICAgICAgICAgICAgICAgIGlmIChmbG9hdEl0
ZW0uaXNEZXNjZW5kYW50T2ZGb3JtYXR0aW5nUm9vdChsYXlvdXRDb250YWluZXIpKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxv
YXRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29u
dGV4dC5oCmluZGV4IGI5YmJmOTU1YmM3YWJjOWY4MjA1M2Y0OTIyZWFiNmMyMDZhYTYwOTYuLmU0
OTY3MzlhZDEwMGQyZWE3YmY3NzExYTNkZDA2ODc5MmVkZDc5YmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuaApAQCAtNzMsNyArNzMsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZmxvYXRpbmdTdGF0ZS5sYXlvdXRTdGF0ZSgpOyB9CiAgICAgY29uc3QgRm9ybWF0
dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXR0
aW5nQ29udGV4dDsgfQotICAgIGNvbnN0IENvbnRhaW5lciYgcm9vdCgpIGNvbnN0IHsgcmV0dXJu
IGRvd25jYXN0PENvbnRhaW5lcj4oZm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCkpOyB9CisgICAg
Y29uc3QgQ29udGFpbmVyJiByb290KCkgY29uc3QgeyByZXR1cm4gZm9ybWF0dGluZ0NvbnRleHQo
KS5yb290KCk7IH0KIAogICAgIHZvaWQgZmluZFBvc2l0aW9uRm9yRmxvYXRCb3goRmxvYXRCb3gm
KSBjb25zdDsKICAgICB2b2lkIGZpbmRQb3NpdGlvbkZvckZvcm1hdHRpbmdDb250ZXh0Um9vdChG
bG9hdEF2b2lkZXImKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
bG9hdHMvRmxvYXRpbmdTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zs
b2F0aW5nU3RhdGUuY3BwCmluZGV4IGFjNGZjNGZkZjc1NjNhYmM1MzU4NDY5NmNkNmIwNmZmOTc4
ZmNhZjEuLmE1NTE1OGUwZTQ1NjdhNTJiMWFhMmY2ZWRjNjY2OWY2YTQ2ZjU5ZmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdTdGF0ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmNwcApAQCAtNDUsNyAr
NDUsNyBAQCBGbG9hdGluZ1N0YXRlOjpGbG9hdEl0ZW06OkZsb2F0SXRlbShjb25zdCBCb3gmIGxh
eW91dEJveCwgRGlzcGxheTo6Qm94IGFic29sdXRlRAogewogfQogCi1GbG9hdGluZ1N0YXRlOjpG
bG9hdGluZ1N0YXRlKExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBmb3JtYXR0
aW5nQ29udGV4dFJvb3QpCitGbG9hdGluZ1N0YXRlOjpGbG9hdGluZ1N0YXRlKExheW91dFN0YXRl
JiBsYXlvdXRTdGF0ZSwgY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpCiAg
ICAgOiBtX2xheW91dFN0YXRlKGxheW91dFN0YXRlKQogICAgICwgbV9mb3JtYXR0aW5nQ29udGV4
dFJvb3QobWFrZVdlYWtQdHIoZm9ybWF0dGluZ0NvbnRleHRSb290KSkKIHsKQEAgLTkxLDcgKzkx
LDcgQEAgdm9pZCBGbG9hdGluZ1N0YXRlOjphcHBlbmQoRmxvYXRJdGVtIGZsb2F0SXRlbSkKICAg
ICByZXR1cm4gbV9mbG9hdHMuaW5zZXJ0KDAsIGZsb2F0SXRlbSk7CiB9CiAKLU9wdGlvbmFsPFBv
c2l0aW9uSW5Db250ZXh0Um9vdD4gRmxvYXRpbmdTdGF0ZTo6Ym90dG9tKGNvbnN0IEJveCYgZm9y
bWF0dGluZ0NvbnRleHRSb290LCBDbGVhciB0eXBlKSBjb25zdAorT3B0aW9uYWw8UG9zaXRpb25J
bkNvbnRleHRSb290PiBGbG9hdGluZ1N0YXRlOjpib3R0b20oY29uc3QgQ29udGFpbmVyJiBmb3Jt
YXR0aW5nQ29udGV4dFJvb3QsIENsZWFyIHR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKG1fZmxvYXRz
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTExOCw3ICsxMTgsNyBAQCBPcHRp
b25hbDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+IEZsb2F0aW5nU3RhdGU6OmJvdHRvbShjb25zdCBC
b3gmIGZvcm1hdHRpbmdDb250ZQogICAgIHJldHVybiBib3R0b207CiB9CiAKLU9wdGlvbmFsPFBv
c2l0aW9uSW5Db250ZXh0Um9vdD4gRmxvYXRpbmdTdGF0ZTo6dG9wKGNvbnN0IEJveCYgZm9ybWF0
dGluZ0NvbnRleHRSb290KSBjb25zdAorT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PiBG
bG9hdGluZ1N0YXRlOjp0b3AoY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJvb3Qp
IGNvbnN0CiB7CiAgICAgaWYgKG1fZmxvYXRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdTdGF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmgKaW5kZXgg
MDQ1Y2Q3NzViNGY3NDRiOWViMWVjY2JjYjNkNTZlZTU4MTNiY2I0Yi4uZDIwMzU2MGI2MDEzMjYx
NGQzOTU4OGY4ZGI0M2RmYTc0MDRjN2FlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zs
b2F0cy9GbG9hdGluZ1N0YXRlLmgKQEAgLTQ2LDE0ICs0NiwxNCBAQCBjbGFzcyBMYXlvdXRTdGF0
ZTsKIGNsYXNzIEZsb2F0aW5nU3RhdGUgOiBwdWJsaWMgUmVmQ291bnRlZDxGbG9hdGluZ1N0YXRl
PiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChGbG9hdGluZ1N0YXRlKTsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPEZsb2F0aW5nU3RhdGU+IGNyZWF0ZShMYXlvdXRTdGF0ZSYgbGF5b3V0
U3RhdGUsIGNvbnN0IEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290KSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IEZsb2F0aW5nU3RhdGUobGF5b3V0U3RhdGUsIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkp
OyB9CisgICAgc3RhdGljIFJlZjxGbG9hdGluZ1N0YXRlPiBjcmVhdGUoTGF5b3V0U3RhdGUmIGxh
eW91dFN0YXRlLCBjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBGbG9hdGluZ1N0YXRlKGxheW91dFN0YXRlLCBmb3JtYXR0aW5nQ29u
dGV4dFJvb3QpKTsgfQogCi0gICAgY29uc3QgQm94JiByb290KCkgY29uc3QgeyByZXR1cm4gKm1f
Zm9ybWF0dGluZ0NvbnRleHRSb290OyB9CisgICAgY29uc3QgQ29udGFpbmVyJiByb290KCkgY29u
c3QgeyByZXR1cm4gKm1fZm9ybWF0dGluZ0NvbnRleHRSb290OyB9CiAKLSAgICBPcHRpb25hbDxQ
b3NpdGlvbkluQ29udGV4dFJvb3Q+IHRvcChjb25zdCBCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9v
dCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PiBsZWZ0Qm90dG9t
KGNvbnN0IEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290KSBjb25zdDsKLSAgICBPcHRpb25hbDxQ
b3NpdGlvbkluQ29udGV4dFJvb3Q+IHJpZ2h0Qm90dG9tKGNvbnN0IEJveCYgZm9ybWF0dGluZ0Nv
bnRleHRSb290KSBjb25zdDsKLSAgICBPcHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+IGJv
dHRvbShjb25zdCBCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkgY29uc3Q7CisgICAgT3B0aW9u
YWw8UG9zaXRpb25JbkNvbnRleHRSb290PiB0b3AoY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5n
Q29udGV4dFJvb3QpIGNvbnN0OworICAgIE9wdGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9vdD4g
bGVmdEJvdHRvbShjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkgY29uc3Q7
CisgICAgT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PiByaWdodEJvdHRvbShjb25zdCBD
b250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkgY29uc3Q7CisgICAgT3B0aW9uYWw8UG9z
aXRpb25JbkNvbnRleHRSb290PiBib3R0b20oY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29u
dGV4dFJvb3QpIGNvbnN0OwogCiAgICAgY2xhc3MgRmxvYXRJdGVtIHsKICAgICBwdWJsaWM6CkBA
IC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJv
eCYgbGF5b3V0Qm94KSBjb25zdCB7IHJldHVybiBtX2xheW91dEJveC5nZXQoKSA9PSAmbGF5b3V0
Qm94OyB9CiAKICAgICAgICAgYm9vbCBpc0xlZnRQb3NpdGlvbmVkKCkgY29uc3QgeyByZXR1cm4g
bV9sYXlvdXRCb3gtPmlzTGVmdEZsb2F0aW5nUG9zaXRpb25lZCgpOyB9Ci0gICAgICAgIGJvb2wg
aXNEZXNjZW5kYW50T2ZGb3JtYXR0aW5nUm9vdChjb25zdCBCb3gmKSBjb25zdDsKKyAgICAgICAg
Ym9vbCBpc0Rlc2NlbmRhbnRPZkZvcm1hdHRpbmdSb290KGNvbnN0IENvbnRhaW5lciYpIGNvbnN0
OwogCiAgICAgICAgIERpc3BsYXk6OlJlY3QgcmVjdFdpdGhNYXJnaW4oKSBjb25zdCB7IHJldHVy
biBtX2Fic29sdXRlRGlzcGxheUJveC5yZWN0V2l0aE1hcmdpbigpOyB9CiAgICAgICAgIFVzZWRI
b3Jpem9udGFsTWFyZ2luIGhvcml6b250YWxNYXJnaW4oKSBjb25zdCB7IHJldHVybiBtX2Fic29s
dXRlRGlzcGxheUJveC5ob3Jpem9udGFsTWFyZ2luKCk7IH0KQEAgLTc4LDQzICs3OCw0MSBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEZsb2F0aW5nQ29udGV4dDsKLSAg
ICBGbG9hdGluZ1N0YXRlKExheW91dFN0YXRlJiwgY29uc3QgQm94JiBmb3JtYXR0aW5nQ29udGV4
dFJvb3QpOworICAgIEZsb2F0aW5nU3RhdGUoTGF5b3V0U3RhdGUmLCBjb25zdCBDb250YWluZXIm
IGZvcm1hdHRpbmdDb250ZXh0Um9vdCk7CiAKICAgICB2b2lkIGFwcGVuZChGbG9hdEl0ZW0pOwog
ICAgIHZvaWQgcmVtb3ZlKGNvbnN0IEJveCYgbGF5b3V0Qm94KTsKIAogICAgIExheW91dFN0YXRl
JiBsYXlvdXRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0U3RhdGU7IH0KIAotICAgIE9w
dGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9vdD4gYm90dG9tKGNvbnN0IEJveCYgZm9ybWF0dGlu
Z0NvbnRleHRSb290LCBDbGVhcikgY29uc3Q7CisgICAgT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRl
eHRSb290PiBib3R0b20oY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJvb3QsIENs
ZWFyKSBjb25zdDsKIAogICAgIExheW91dFN0YXRlJiBtX2xheW91dFN0YXRlOwotICAgIFdlYWtQ
dHI8Y29uc3QgQm94PiBtX2Zvcm1hdHRpbmdDb250ZXh0Um9vdDsKKyAgICBXZWFrUHRyPGNvbnN0
IENvbnRhaW5lcj4gbV9mb3JtYXR0aW5nQ29udGV4dFJvb3Q7CiAgICAgRmxvYXRMaXN0IG1fZmxv
YXRzOwogfTsKIAotaW5saW5lIE9wdGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9vdD4gRmxvYXRp
bmdTdGF0ZTo6bGVmdEJvdHRvbShjb25zdCBCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkgY29u
c3QKK2lubGluZSBPcHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+IEZsb2F0aW5nU3RhdGU6
OmxlZnRCb3R0b20oY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpIGNvbnN0
CiB7IAogICAgIEFTU0VSVChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNGb3JtYXR0
aW5nQ29udGV4dCgpKTsKICAgICByZXR1cm4gYm90dG9tKGZvcm1hdHRpbmdDb250ZXh0Um9vdCwg
Q2xlYXI6OkxlZnQpOwogfQogCi1pbmxpbmUgT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290
PiBGbG9hdGluZ1N0YXRlOjpyaWdodEJvdHRvbShjb25zdCBCb3gmIGZvcm1hdHRpbmdDb250ZXh0
Um9vdCkgY29uc3QKK2lubGluZSBPcHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+IEZsb2F0
aW5nU3RhdGU6OnJpZ2h0Qm90dG9tKGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRS
b290KSBjb25zdAogewogICAgIEFTU0VSVChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNo
ZXNGb3JtYXR0aW5nQ29udGV4dCgpKTsKICAgICByZXR1cm4gYm90dG9tKGZvcm1hdHRpbmdDb250
ZXh0Um9vdCwgQ2xlYXI6OlJpZ2h0KTsKIH0KIAotaW5saW5lIE9wdGlvbmFsPFBvc2l0aW9uSW5D
b250ZXh0Um9vdD4gRmxvYXRpbmdTdGF0ZTo6Ym90dG9tKGNvbnN0IEJveCYgZm9ybWF0dGluZ0Nv
bnRleHRSb290KSBjb25zdAoraW5saW5lIE9wdGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9vdD4g
RmxvYXRpbmdTdGF0ZTo6Ym90dG9tKGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRS
b290KSBjb25zdAogewogICAgIEFTU0VSVChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNo
ZXNGb3JtYXR0aW5nQ29udGV4dCgpKTsKICAgICByZXR1cm4gYm90dG9tKGZvcm1hdHRpbmdDb250
ZXh0Um9vdCwgQ2xlYXI6OkJvdGgpOwogfQogCi1pbmxpbmUgYm9vbCBGbG9hdGluZ1N0YXRlOjpG
bG9hdEl0ZW06OmlzRGVzY2VuZGFudE9mRm9ybWF0dGluZ1Jvb3QoY29uc3QgQm94JiBmb3JtYXR0
aW5nQ29udGV4dFJvb3QpIGNvbnN0CitpbmxpbmUgYm9vbCBGbG9hdGluZ1N0YXRlOjpGbG9hdEl0
ZW06OmlzRGVzY2VuZGFudE9mRm9ybWF0dGluZ1Jvb3QoY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0
aW5nQ29udGV4dFJvb3QpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGZvcm1hdHRpbmdDb250ZXh0Um9v
dC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpOwotICAgIGlmICghaXM8Q29udGFpbmVy
Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0
dXJuIG1fbGF5b3V0Qm94LT5pc0NvbnRhaW5pbmdCbG9ja0Rlc2NlbmRhbnRPZihkb3duY2FzdDxD
b250YWluZXI+KGZvcm1hdHRpbmdDb250ZXh0Um9vdCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dC5jcHAKaW5kZXggYmE1YWVjMTMwM2IxYmVmYjA2MmQ1MzM3NTg4MWU3ZjQx
YTNhODY4Yi4uZjliYTk3ZmNmOGE4MTAxOGQwNWQ3ODJiZjUxNDAwYmE3NGYzMzZjMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3Bh
Y2UgTGF5b3V0IHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKElubGluZUZvcm1hdHRp
bmdDb250ZXh0KTsKIAotSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUZvcm1hdHRpbmdD
b250ZXh0KGNvbnN0IEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBJbmxpbmVGb3JtYXR0aW5n
U3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSkKK0lubGluZUZvcm1hdHRpbmdDb250ZXh0OjpJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dChjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwg
SW5saW5lRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGUpCiAgICAgOiBGb3JtYXR0aW5n
Q29udGV4dChmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGZvcm1hdHRpbmdTdGF0ZSkKIHsKIH0KQEAg
LTY0LDE3ICs2NCwxMyBAQCBzdGF0aWMgaW5saW5lIGNvbnN0IEJveCogbmV4dEluUHJlT3JkZXIo
Y29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IENvbnRhaW5lciYgcwogCiB2b2lkIElubGluZUZv
cm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZsb3dDb250ZW50KCkKIHsKLSAgICBpZiAoIWlzPENv
bnRhaW5lcj4ocm9vdCgpKSkKKyAgICBpZiAoIXJvb3QoKS5oYXNJbkZsb3dPckZsb2F0aW5nQ2hp
bGQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byYgcm9vdCA9IGRvd25jYXN0PENvbnRh
aW5lcj4odGhpcy0+cm9vdCgpKTsKLSAgICBpZiAoIXJvb3QuaGFzSW5GbG93T3JGbG9hdGluZ0No
aWxkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5n
Q29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbU3RhcnRdIC0+IGlubGluZSBmb3JtYXR0aW5nIGNv
bnRleHQgLT4gZm9ybWF0dGluZyByb290KCIgPDwgJnJvb3QgPDwgIikiKTsKLSAgICBhdXRvIGF2
YWlsYWJsZVdpZHRoID0gZ2VvbWV0cnlGb3JCb3gocm9vdCkuY29udGVudEJveFdpZHRoKCk7Cisg
ICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltT
dGFydF0gLT4gaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dCAtPiBmb3JtYXR0aW5nIHJvb3QoIiA8
PCAmcm9vdCgpIDw8ICIpIik7CisgICAgYXV0byBhdmFpbGFibGVXaWR0aCA9IGdlb21ldHJ5Rm9y
Qm94KHJvb3QoKSkuY29udGVudEJveFdpZHRoKCk7CiAgICAgYXV0byB1c2VkVmFsdWVzID0gVXNl
ZEhvcml6b250YWxWYWx1ZXMgeyBhdmFpbGFibGVXaWR0aCB9OwotICAgIGF1dG8qIGxheW91dEJv
eCA9IHJvb3QuZmlyc3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKTsKKyAgICBhdXRvKiBsYXlvdXRC
b3ggPSByb290KCkuZmlyc3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKTsKICAgICAvLyBDb21wdXRl
IHdpZHRoL2hlaWdodCBmb3Igbm9uLXRleHQgY29udGVudCBhbmQgbWFyZ2luL2JvcmRlci9wYWRk
aW5nIGZvciBpbmxpbmUgY29udGFpbmVycy4KICAgICB3aGlsZSAobGF5b3V0Qm94KSB7CiAgICAg
ICAgIGlmIChsYXlvdXRCb3gtPmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSkKQEAgLTg3
LDcgKzgzLDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29u
dGVudCgpCiAgICAgICAgICAgICBBU1NFUlQobGF5b3V0Qm94LT5pc0lubGluZUxldmVsQm94KCkp
OwogICAgICAgICAgICAgaW5pdGlhbGl6ZU1hcmdpbkJvcmRlckFuZFBhZGRpbmdGb3JHZW5lcmlj
SW5saW5lQm94KCpsYXlvdXRCb3gpOwogICAgICAgICB9Ci0gICAgICAgIGxheW91dEJveCA9IG5l
eHRJblByZU9yZGVyKCpsYXlvdXRCb3gsIHJvb3QpOworICAgICAgICBsYXlvdXRCb3ggPSBuZXh0
SW5QcmVPcmRlcigqbGF5b3V0Qm94LCByb290KCkpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBU
aGlzIGlzIHN1Y2ggYSB3YXN0ZSB3aGVuIGludHJpbnNpYyB3aWR0aCBjb21wdXRhdGlvbiBhbHJl
YWR5IGNvbGxlY3RlZCB0aGUgaW5saW5lIGl0ZW1zLgpAQCAtOTYsNyArOTIsNyBAQCB2b2lkIElu
bGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZsb3dDb250ZW50KCkKIAogICAgIGNvbGxl
Y3RJbmxpbmVDb250ZW50KCk7CiAgICAgSW5saW5lTGF5b3V0KCp0aGlzKS5sYXlvdXQoZm9ybWF0
dGluZ1N0YXRlKCkuaW5saW5lSXRlbXMoKSwgYXZhaWxhYmxlV2lkdGgpOwotICAgIExPR19XSVRI
X1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbRW5kXSAtPiBpbmxp
bmUgZm9ybWF0dGluZyBjb250ZXh0IC0+IGZvcm1hdHRpbmcgcm9vdCgiIDw8ICZyb290IDw8ICIp
Iik7CisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0g
PDwgIltFbmRdIC0+IGlubGluZSBmb3JtYXR0aW5nIGNvbnRleHQgLT4gZm9ybWF0dGluZyByb290
KCIgPDwgJnJvb3QoKSA8PCAiKSIpOwogfQogCiBGb3JtYXR0aW5nQ29udGV4dDo6SW50cmluc2lj
V2lkdGhDb25zdHJhaW50cyBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRJbnRyaW5z
aWNXaWR0aENvbnN0cmFpbnRzKCkKQEAgLTEwNCwxNiArMTAwLDE1IEBAIEZvcm1hdHRpbmdDb250
ZXh0OjpJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpj
b21wdXRlZEluCiAgICAgYXV0byYgbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwog
ICAgIEFTU0VSVCghZm9ybWF0dGluZ1N0YXRlKCkuaW50cmluc2ljV2lkdGhDb25zdHJhaW50cygp
KTsKIAotICAgIGlmICghaXM8Q29udGFpbmVyPihyb290KCkpIHx8ICFkb3duY2FzdDxDb250YWlu
ZXI+KHJvb3QoKSkuaGFzSW5GbG93T3JGbG9hdGluZ0NoaWxkKCkpIHsKKyAgICBpZiAoIXJvb3Qo
KS5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkgewogICAgICAgICBhdXRvIGNvbnN0cmFpbnRz
ID0gZ2VvbWV0cnkoKS5jb25zdHJhaW5CeU1pbk1heFdpZHRoKHJvb3QoKSwgeyB9KTsKICAgICAg
ICAgZm9ybWF0dGluZ1N0YXRlKCkuc2V0SW50cmluc2ljV2lkdGhDb25zdHJhaW50cyhjb25zdHJh
aW50cyk7CiAgICAgICAgIHJldHVybiBjb25zdHJhaW50czsKICAgICB9CiAKLSAgICBhdXRvJiBy
b290ID0gZG93bmNhc3Q8Q29udGFpbmVyPih0aGlzLT5yb290KCkpOwogICAgIFZlY3Rvcjxjb25z
dCBCb3gqPiBmb3JtYXR0aW5nQ29udGV4dFJvb3RMaXN0OwogICAgIGF1dG8gdXNlZFZhbHVlcyA9
IFVzZWRIb3Jpem9udGFsVmFsdWVzIHsgfTsKLSAgICBhdXRvKiBsYXlvdXRCb3ggPSByb290LmZp
cnN0SW5GbG93T3JGbG9hdGluZ0NoaWxkKCk7CisgICAgYXV0byogbGF5b3V0Qm94ID0gcm9vdCgp
LmZpcnN0SW5GbG93T3JGbG9hdGluZ0NoaWxkKCk7CiAgICAgd2hpbGUgKGxheW91dEJveCkgewog
ICAgICAgICBpZiAobGF5b3V0Qm94LT5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpIHsK
ICAgICAgICAgICAgIGZvcm1hdHRpbmdDb250ZXh0Um9vdExpc3QuYXBwZW5kKGxheW91dEJveCk7
CkBAIC0xMjksNyArMTI0LDcgQEAgRm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29u
c3RyYWludHMgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVkSW4KICAgICAgICAgICAg
ICAgICBjb21wdXRlSG9yaXpvbnRhbE1hcmdpbigqbGF5b3V0Qm94LCB1c2VkVmFsdWVzKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBsYXlvdXRCb3ggPSBuZXh0SW5QcmVPcmRl
cigqbGF5b3V0Qm94LCByb290KTsKKyAgICAgICAgbGF5b3V0Qm94ID0gbmV4dEluUHJlT3JkZXIo
KmxheW91dEJveCwgcm9vdCgpKTsKICAgICB9CiAKICAgICBjb2xsZWN0SW5saW5lQ29udGVudCgp
OwpAQCAtMTQ1LDcgKzE0MCw3IEBAIEZvcm1hdHRpbmdDb250ZXh0OjpJbnRyaW5zaWNXaWR0aENv
bnN0cmFpbnRzIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlZEluCiAgICAgICAgIHJl
dHVybiBJbmxpbmVMYXlvdXQoKnRoaXMpLmNvbXB1dGVkSW50cmluc2ljV2lkdGgoZm9ybWF0dGlu
Z1N0YXRlKCkuaW5saW5lSXRlbXMoKSwgYXZhaWxhYmxlV2lkdGgpOwogICAgIH07CiAKLSAgICBh
dXRvIGNvbnN0cmFpbnRzID0gZ2VvbWV0cnkoKS5jb25zdHJhaW5CeU1pbk1heFdpZHRoKHJvb3Qs
IHsgbWF4aW11bUxpbmVXaWR0aCgwKSwgbWF4aW11bUxpbmVXaWR0aChMYXlvdXRVbml0OjptYXgo
KSkgfSk7CisgICAgYXV0byBjb25zdHJhaW50cyA9IGdlb21ldHJ5KCkuY29uc3RyYWluQnlNaW5N
YXhXaWR0aChyb290KCksIHsgbWF4aW11bUxpbmVXaWR0aCgwKSwgbWF4aW11bUxpbmVXaWR0aChM
YXlvdXRVbml0OjptYXgoKSkgfSk7CiAgICAgZm9ybWF0dGluZ1N0YXRlKCkuc2V0SW50cmluc2lj
V2lkdGhDb25zdHJhaW50cyhjb25zdHJhaW50cyk7CiAgICAgcmV0dXJuIGNvbnN0cmFpbnRzOwog
fQpAQCAtMTc3LDExICsxNzIsMTEgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29t
cHV0ZUludHJpbnNpY1dpZHRoRm9yRm9ybWF0dGluZ1Jvb3QoY29uc3QgQm94JgogICAgIGNvbXB1
dGVCb3JkZXJBbmRQYWRkaW5nKGZvcm1hdHRpbmdSb290LCB1c2VkVmFsdWVzKTsKICAgICBjb21w
dXRlSG9yaXpvbnRhbE1hcmdpbihmb3JtYXR0aW5nUm9vdCwgdXNlZFZhbHVlcyk7CiAKLSAgICBJ
bnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGNvbnN0cmFpbnRzOworICAgIGF1dG8gY29uc3RyYWlu
dHMgPSBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIHsgfTsKICAgICBpZiAoYXV0byBmaXhlZFdp
ZHRoID0gZ2VvbWV0cnkoKS5maXhlZFZhbHVlKGZvcm1hdHRpbmdSb290LnN0eWxlKCkubG9naWNh
bFdpZHRoKCkpKQogICAgICAgICBjb25zdHJhaW50cyA9IHsgKmZpeGVkV2lkdGgsICpmaXhlZFdp
ZHRoIH07Ci0gICAgZWxzZQotICAgICAgICBjb25zdHJhaW50cyA9IGxheW91dFN0YXRlKCkuY3Jl
YXRlRm9ybWF0dGluZ0NvbnRleHQoZm9ybWF0dGluZ1Jvb3QpLT5jb21wdXRlZEludHJpbnNpY1dp
ZHRoQ29uc3RyYWludHMoKTsKKyAgICBlbHNlIGlmIChpczxDb250YWluZXI+KGZvcm1hdHRpbmdS
b290KSkKKyAgICAgICAgY29uc3RyYWludHMgPSBsYXlvdXRTdGF0ZSgpLmNyZWF0ZUZvcm1hdHRp
bmdDb250ZXh0KGRvd25jYXN0PENvbnRhaW5lcj4oZm9ybWF0dGluZ1Jvb3QpKS0+Y29tcHV0ZWRJ
bnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCk7CiAgICAgY29uc3RyYWludHMgPSBnZW9tZXRyeSgp
LmNvbnN0cmFpbkJ5TWluTWF4V2lkdGgoZm9ybWF0dGluZ1Jvb3QsIGNvbnN0cmFpbnRzKTsKICAg
ICBjb25zdHJhaW50cy5leHBhbmQoZ2VvbWV0cnlGb3JCb3goZm9ybWF0dGluZ1Jvb3QpLmhvcml6
b250YWxNYXJnaW5Cb3JkZXJBbmRQYWRkaW5nKCkpOwogICAgIGZvcm1hdHRpbmdTdGF0ZSgpLnNl
dEludHJpbnNpY1dpZHRoQ29uc3RyYWludHNGb3JCb3goZm9ybWF0dGluZ1Jvb3QsIGNvbnN0cmFp
bnRzKTsKQEAgLTI0MCwxMiArMjM1LDE1IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9vdChjb25zdCBCb3gmIHJvb3QsIFVzZWRICiAgICAg
Ly8gVGhpcyBpcyBzaW1pbGFyIHRvIHN0YXRpYyBwb3NpdGlvbmluZyBpbiBibG9jayBmb3JtYXR0
aW5nIGNvbnRleHQuIFdlIGp1c3QgbmVlZCB0byBpbml0aWFsaXplIHRoZSB0b3AgbGVmdCBwb3Np
dGlvbi4KICAgICBmb3JtYXR0aW5nU3RhdGUoKS5kaXNwbGF5Qm94KHJvb3QpLnNldFRvcExlZnQo
eyAwLCAwIH0pOwogICAgIC8vIFN3aWNoIG92ZXIgdG8gdGhlIG5ldyBmb3JtYXR0aW5nIGNvbnRl
eHQgKHRoZSBvbmUgdGhhdCB0aGUgcm9vdCBjcmVhdGVzKS4KLSAgICBhdXRvIGZvcm1hdHRpbmdD
b250ZXh0ID0gbGF5b3V0U3RhdGUoKS5jcmVhdGVGb3JtYXR0aW5nQ29udGV4dChyb290KTsKLSAg
ICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0SW5GbG93Q29udGVudCgpOwotICAgIC8vIENvbWUg
YmFjayBhbmQgZmluYWxpemUgdGhlIHJvb3QncyBoZWlnaHQgYW5kIG1hcmdpbi4KLSAgICBjb21w
dXRlSGVpZ2h0QW5kTWFyZ2luKHJvb3QpOwotICAgIC8vIE5vdyB0aGF0IHdlIGNvbXB1dGVkIHRo
ZSByb290J3MgaGVpZ2h0LCB3ZSBjYW4gZ28gYmFjayBhbmQgbGF5b3V0IHRoZSBvdXQtb2YtZmxv
dyBjb250ZW50LgotICAgIGZvcm1hdHRpbmdDb250ZXh0LT5sYXlvdXRPdXRPZkZsb3dDb250ZW50
KCk7CisgICAgaWYgKGlzPENvbnRhaW5lcj4ocm9vdCkpIHsKKyAgICAgICAgYXV0byBmb3JtYXR0
aW5nQ29udGV4dCA9IGxheW91dFN0YXRlKCkuY3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoZG93bmNh
c3Q8Q29udGFpbmVyPihyb290KSk7CisgICAgICAgIGZvcm1hdHRpbmdDb250ZXh0LT5sYXlvdXRJ
bkZsb3dDb250ZW50KCk7CisgICAgICAgIC8vIENvbWUgYmFjayBhbmQgZmluYWxpemUgdGhlIHJv
b3QncyBoZWlnaHQgYW5kIG1hcmdpbi4KKyAgICAgICAgY29tcHV0ZUhlaWdodEFuZE1hcmdpbihy
b290KTsKKyAgICAgICAgLy8gTm93IHRoYXQgd2UgY29tcHV0ZWQgdGhlIHJvb3QncyBoZWlnaHQs
IHdlIGNhbiBnbyBiYWNrIGFuZCBsYXlvdXQgdGhlIG91dC1vZi1mbG93IGNvbnRlbnQuCisgICAg
ICAgIGZvcm1hdHRpbmdDb250ZXh0LT5sYXlvdXRPdXRPZkZsb3dDb250ZW50KCk7CisgICAgfSBl
bHNlCisgICAgICAgIGNvbXB1dGVIZWlnaHRBbmRNYXJnaW4ocm9vdCk7CiB9CiAKIHZvaWQgSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVXaWR0aEFuZEhlaWdodEZvclJlcGxhY2VkSW5s
aW5lQm94KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBVc2VkSG9yaXpvbnRhbFZhbHVlcyB1c2VkVmFs
dWVzKQpAQCAtMjYyLDEyICsyNjAsMTIgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
Y29tcHV0ZVdpZHRoQW5kSGVpZ2h0Rm9yUmVwbGFjZWRJbmxpbmVCb3goY29uc3QgQm8KIAogdm9p
ZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnQoKSBjb25zdAog
ewotICAgIGF1dG8mIHJvb3QgPSBkb3duY2FzdDxDb250YWluZXI+KHRoaXMtPnJvb3QoKSk7CiAg
ICAgLy8gVHJhdmVyc2UgdGhlIHRyZWUgYW5kIGNyZWF0ZSBpbmxpbmUgaXRlbXMgb3V0IG9mIGNv
bnRhaW5lcnMgYW5kIGxlYWYgbm9kZXMuIFRoaXMgZXNzZW50aWFsbHkgdHVybnMgdGhlIHRyZWUg
aW5saW5lIHN0cnVjdHVyZSBpbnRvIGEgZmxhdCBvbmUuCiAgICAgLy8gPHNwYW4+dGV4dDxzcGFu
Pjwvc3Bhbj48aW1nPjwvc3Bhbj4gLT4gW0NvbnRhaW5lclN0YXJ0XVtJbmxpbmVCb3hdW0NvbnRh
aW5lclN0YXJ0XVtDb250YWluZXJFbmRdW0lubGluZUJveF1bQ29udGFpbmVyRW5kXQogICAgIGF1
dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IHRoaXMtPmZvcm1hdHRpbmdTdGF0ZSgpOwogICAgIExheW91
dFF1ZXVlIGxheW91dFF1ZXVlOwotICAgIGxheW91dFF1ZXVlLmFwcGVuZChyb290LmZpcnN0SW5G
bG93T3JGbG9hdGluZ0NoaWxkKCkpOworICAgIGlmIChyb290KCkuaGFzSW5GbG93T3JGbG9hdGlu
Z0NoaWxkKCkpCisgICAgICAgIGxheW91dFF1ZXVlLmFwcGVuZChyb290KCkuZmlyc3RJbkZsb3dP
ckZsb2F0aW5nQ2hpbGQoKSk7CiAgICAgd2hpbGUgKCFsYXlvdXRRdWV1ZS5pc0VtcHR5KCkpIHsK
ICAgICAgICAgYXV0byB0cmVhdEFzSW5saW5lQ29udGFpbmVyID0gW10oYXV0byYgbGF5b3V0Qm94
KSB7CiAgICAgICAgICAgICByZXR1cm4gaXM8Q29udGFpbmVyPihsYXlvdXRCb3gpICYmICFsYXlv
dXRCb3guZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0LmgKaW5kZXggOTc3OTkzNjliNmZhZjY0MDg1ZmZlOWI4NjcyMTc3ZmY5OTZmZDhm
NC4uZjA1NGJlYmZmYTU4MzljYjM2ODllNTFhNWMwNTA2ZDQ3MGNiZWUzYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC00NSw3ICs0NSw3IEBAIHN0cnVjdCBMaW5lSW5wdXQ7
CiBjbGFzcyBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCA6IHB1YmxpYyBGb3JtYXR0aW5nQ29udGV4
dCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCk7
CiBwdWJsaWM6Ci0gICAgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQm94JiBmb3JtYXR0
aW5nQ29udGV4dFJvb3QsIElubGluZUZvcm1hdHRpbmdTdGF0ZSYpOworICAgIElubGluZUZvcm1h
dHRpbmdDb250ZXh0KGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBJbmxp
bmVGb3JtYXR0aW5nU3RhdGUmKTsKICAgICB2b2lkIGxheW91dEluRmxvd0NvbnRlbnQoKSBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKQEAgLTYwLDcgKzYwLDcgQEAgcHJpdmF0ZToKICAgICBwcml2YXRl
OgogICAgICAgICBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2lu
bGluZUZvcm1hdHRpbmdDb250ZXh0LmxheW91dFN0YXRlKCk7IH0KICAgICAgICAgY29uc3QgSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4g
bV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dDsgfQotICAgICAgICBjb25zdCBDb250YWluZXImIGZv
cm1hdHRpbmdSb290KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8Q29udGFpbmVyPihtX2lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0LnJvb3QoKSk7IH0KKyAgICAgICAgY29uc3QgQ29udGFpbmVyJiBm
b3JtYXR0aW5nUm9vdCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
cm9vdCgpOyB9CiAgICAgICAgIExpbmVDb250ZW50IHBsYWNlSW5saW5lSXRlbXMoY29uc3QgTGlu
ZUlucHV0JikgY29uc3Q7CiAgICAgICAgIHZvaWQgY3JlYXRlRGlzcGxheVJ1bnMoY29uc3QgTGlu
ZTo6Q29udGVudCYsIGNvbnN0IFZlY3RvcjxXZWFrUHRyPElubGluZUl0ZW0+PiYgZmxvYXRzLCBM
YXlvdXRVbml0IHdpZHRoQ29uc3RyYWludCkgY29uc3Q7CiAgICAgICAgIHZvaWQgYWxpZ25SdW5z
KFRleHRBbGlnbk1vZGUsIElubGluZVJ1bnMmLCB1bnNpZ25lZCBmaXJzdFJ1bkluZGV4LCBMYXlv
dXRVbml0IGF2YWlsYWJsZVdpZHRoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0UXVpcmtzLmNwcAppbmRleCAwOGRlM2Q0Y2IzZGM2ODNkY2VlYWMxMmVmMTMxNWMx
ZDAwNzZkYjk3Li4wMTFhNThhMTUyZmNhMmI2NTIzMDQ4MmU2OWVkMDM2NjZmYTllODQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCkBAIC02Niw3ICs2
Niw3IEBAIGJvb2wgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6bGluZURlc2NlbnRO
ZWVkc0NvbGxhcHNpbmcoY29uc3QgTGluZTo6Q29uCiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBJbmxpbmVJdGVtOjpUeXBlOjpCb3g6IHsKICAgICAgICAgICAgIGlmIChsYXlvdXRC
b3guaXNJbmxpbmVCbG9ja0JveCgpICYmIGxheW91dEJveC5lc3RhYmxpc2hlc0lubGluZUZvcm1h
dHRpbmdDb250ZXh0KCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUg
PSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGxheW91dFN0YXRlLmVzdGFibGlzaGVk
Rm9ybWF0dGluZ1N0YXRlKGxheW91dEJveCkpOworICAgICAgICAgICAgICAgIGF1dG8mIGZvcm1h
dHRpbmdTdGF0ZSA9IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUu
ZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUoZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gp
KSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFmb3JtYXR0aW5nU3RhdGUubGluZUJveGVzKCku
aXNFbXB0eSgpKTsKICAgICAgICAgICAgICAgICBhdXRvIGlubGluZUJsb2NrQmFzZWxpbmUgPSBm
b3JtYXR0aW5nU3RhdGUubGluZUJveGVzKCkubGFzdCgpLmJhc2VsaW5lKCk7CiAgICAgICAgICAg
ICAgICAgaWYgKGlubGluZUJsb2NrQmFzZWxpbmUuZGVzY2VudCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5jcHAKaW5kZXggMDRh
OTkyMTIxMDZjNWVhYjM1MmE0ODk0NjU3ZDI1YTFiYTExYjliMi4uNmEwMWExOTY0ZjZmMTM0Yjc0
YjQwZTU5YTNmZmJmZDgwNDk1NGY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8TGluZTo6Q29udGVudD4gTGluZTo6Y2xvc2UoKQogICAgICAgICAgICAg
ICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9y
Qm94KGxheW91dEJveCk7CiAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBiYXNlbGlu
ZU9mZnNldCgpIC0gYXNjZW50IC0gYm94R2VvbWV0cnkuYm9yZGVyVG9wKCkgLSBib3hHZW9tZXRy
eS5wYWRkaW5nVG9wKCkudmFsdWVPcigwKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxh
eW91dEJveC5pc0lubGluZUJsb2NrQm94KCkgJiYgbGF5b3V0Qm94LmVzdGFibGlzaGVzSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvJiBmb3JtYXR0
aW5nU3RhdGUgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGxheW91dFN0YXRlLmVz
dGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGxheW91dEJveCkpOworICAgICAgICAgICAgICAgICAg
ICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+
KGxheW91dFN0YXRlLmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGRvd25jYXN0PENvbnRhaW5l
cj4obGF5b3V0Qm94KSkpOwogICAgICAgICAgICAgICAgICAgICAvLyBTcGVjIG1ha2VzIHVzIGdl
bmVyYXRlIGF0IGxlYXN0IG9uZSBsaW5lIC1ldmVuIGlmIGl0IGlzIGVtcHR5LgogICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoIWZvcm1hdHRpbmdTdGF0ZS5saW5lQm94ZXMoKS5pc0VtcHR5KCkp
OwogICAgICAgICAgICAgICAgICAgICBhdXRvIGlubGluZUJsb2NrQmFzZWxpbmUgPSBmb3JtYXR0
aW5nU3RhdGUubGluZUJveGVzKCkubGFzdCgpLmJhc2VsaW5lKCk7CkBAIC0zNzQsNyArMzc0LDcg
QEAgdm9pZCBMaW5lOjphZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQoY29uc3QgSW5saW5lSXRl
bSYgaW5saW5lSXRlbSwgTGF5b3V0VW5pdAogICAgICAgICAgICAgYXV0byBuZXdCYXNlbGluZUNh
bmRpZGF0ZSA9IExpbmVCb3g6OkJhc2VsaW5lIHsgcnVuSGVpZ2h0LCAwIH07CiAgICAgICAgICAg
ICBpZiAobGF5b3V0Qm94LmlzSW5saW5lQmxvY2tCb3goKSAmJiBsYXlvdXRCb3guZXN0YWJsaXNo
ZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gSW5saW5l
LWJsb2NrcyB3aXRoIGlubGluZSBjb250ZW50IGFsd2F5cyBoYXZlIGJhc2VsaW5lcy4KLSAgICAg
ICAgICAgICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0
aW5nU3RhdGU+KGxheW91dFN0YXRlKCkuZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUobGF5b3V0
Qm94KSk7CisgICAgICAgICAgICAgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8
SW5saW5lRm9ybWF0dGluZ1N0YXRlPihsYXlvdXRTdGF0ZSgpLmVzdGFibGlzaGVkRm9ybWF0dGlu
Z1N0YXRlKGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KSkpOwogICAgICAgICAgICAgICAg
IC8vIFNwZWMgbWFrZXMgdXMgZ2VuZXJhdGUgYXQgbGVhc3Qgb25lIGxpbmUgLWV2ZW4gaWYgaXQg
aXMgZW1wdHkuCiAgICAgICAgICAgICAgICAgQVNTRVJUKCFmb3JtYXR0aW5nU3RhdGUubGluZUJv
eGVzKCkuaXNFbXB0eSgpKTsKICAgICAgICAgICAgICAgICBuZXdCYXNlbGluZUNhbmRpZGF0ZSA9
IGZvcm1hdHRpbmdTdGF0ZS5saW5lQm94ZXMoKS5sYXN0KCkuYmFzZWxpbmUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5n
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxl
Rm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDZiMTVkOWIyNmE0MTcwOWVjODMyNTcxYjRjNzhl
Yzg2M2MxYTU2MjEuLjcxZjVjMmRhZjBkOTlkZmUyNmJmNmZlY2FkYWRhMDY5ZmE2ZTVlNjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3Jt
YXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0
dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtNTIsNyArNTIsNyBAQCB2b2lkIFRh
YmxlRm9ybWF0dGluZ0NvbnRleHQ6OmluaXRpYWxpemVEaXNwbGF5Qm94VG9CbGFuayhEaXNwbGF5
OjpCb3gmIGRpc3BsYXlCbwogfQogCiAvLyBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXRhYmxl
cy0zLyN0YWJsZS1sYXlvdXQtYWxnb3JpdGhtCi1UYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpUYWJs
ZUZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBUYWJs
ZUZvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlKQorVGFibGVGb3JtYXR0aW5nQ29udGV4
dDo6VGFibGVGb3JtYXR0aW5nQ29udGV4dChjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250
ZXh0Um9vdCwgVGFibGVGb3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSkKICAgICA6IEZv
cm1hdHRpbmdDb250ZXh0KGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgZm9ybWF0dGluZ1N0YXRlKQog
ewogfQpAQCAtOTYsNyArOTYsOCBAQCB2b2lkIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91
dFRhYmxlQ2VsbEJveChjb25zdCBCb3gmIGNlbGxMYXlvdXRCb3gsIGNvbnN0CiAgICAgY2VsbERp
c3BsYXlCb3guc2V0Q29udGVudEJveFdpZHRoKGNvbHVtbi5sb2dpY2FsV2lkdGgoKSAtIGNlbGxE
aXNwbGF5Qm94Lmhvcml6b250YWxNYXJnaW5Cb3JkZXJBbmRQYWRkaW5nKCkpOwogCiAgICAgQVNT
RVJUKGNlbGxMYXlvdXRCb3guZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkpOwot
ICAgIGxheW91dFN0YXRlKCkuY3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoY2VsbExheW91dEJveCkt
PmxheW91dEluRmxvd0NvbnRlbnQoKTsKKyAgICBpZiAoaXM8Q29udGFpbmVyPihjZWxsTGF5b3V0
Qm94KSkKKyAgICAgICAgbGF5b3V0U3RhdGUoKS5jcmVhdGVGb3JtYXR0aW5nQ29udGV4dChkb3du
Y2FzdDxDb250YWluZXI+KGNlbGxMYXlvdXRCb3gpKS0+bGF5b3V0SW5GbG93Q29udGVudCgpOwog
ICAgIGNlbGxEaXNwbGF5Qm94LnNldFZlcnRpY2FsTWFyZ2luKHsgeyB9LCB7IH0gfSk7CiAgICAg
Y2VsbERpc3BsYXlCb3guc2V0Q29udGVudEJveEhlaWdodChnZW9tZXRyeSgpLnRhYmxlQ2VsbEhl
aWdodEFuZE1hcmdpbihjZWxsTGF5b3V0Qm94KS5oZWlnaHQpOwogICAgIC8vIEZJWE1FOiBDaGVj
ayB3aGF0IHRvIGRvIHdpdGggb3V0LW9mLWZsb3cgY29udGVudC4KQEAgLTEzNCw3ICsxMzUsNyBA
QCB2b2lkIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OnNldENvbXB1dGVkR2VvbWV0cnlGb3JTZWN0
aW9ucygpCiAgICAgYXV0byYgZ3JpZCA9IGZvcm1hdHRpbmdTdGF0ZSgpLnRhYmxlR3JpZCgpOwog
ICAgIGF1dG8gc2VjdGlvbldpZHRoID0gZ3JpZC5jb2x1bW5zQ29udGV4dCgpLmxvZ2ljYWxXaWR0
aCgpICsgMiAqIGdyaWQuaG9yaXpvbnRhbFNwYWNpbmcoKTsKIAotICAgIGZvciAoYXV0byYgc2Vj
dGlvbiA6IGNoaWxkcmVuT2ZUeXBlPEJveD4oZG93bmNhc3Q8Q29udGFpbmVyPihyb290KCkpKSkg
eworICAgIGZvciAoYXV0byYgc2VjdGlvbiA6IGNoaWxkcmVuT2ZUeXBlPEJveD4ocm9vdCgpKSkg
ewogICAgICAgICBhdXRvJiBzZWN0aW9uRGlzcGxheUJveCA9IGZvcm1hdHRpbmdTdGF0ZSgpLmRp
c3BsYXlCb3goc2VjdGlvbik7CiAgICAgICAgIGluaXRpYWxpemVEaXNwbGF5Qm94VG9CbGFuayhz
ZWN0aW9uRGlzcGxheUJveCk7CiAgICAgICAgIC8vIEZJWE1FOiBTaXplIHRhYmxlIHNlY3Rpb25z
IHByb3Blcmx5LgpAQCAtMTYyLDcgKzE2Myw3IEBAIEZvcm1hdHRpbmdDb250ZXh0OjpJbnRyaW5z
aWNXaWR0aENvbnN0cmFpbnRzIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVkSW50CiAK
IHZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6ZW5zdXJlVGFibGVHcmlkKCkKIHsKLSAgICBh
dXRvJiB0YWJsZVdyYXBwZXJCb3ggPSBkb3duY2FzdDxDb250YWluZXI+KHJvb3QoKSk7CisgICAg
YXV0byYgdGFibGVXcmFwcGVyQm94ID0gcm9vdCgpOwogICAgIGF1dG8mIHRhYmxlR3JpZCA9IGZv
cm1hdHRpbmdTdGF0ZSgpLnRhYmxlR3JpZCgpOwogICAgIHRhYmxlR3JpZC5zZXRIb3Jpem9udGFs
U3BhY2luZyhMYXlvdXRVbml0IHsgdGFibGVXcmFwcGVyQm94LnN0eWxlKCkuaG9yaXpvbnRhbEJv
cmRlclNwYWNpbmcoKSB9KTsKICAgICB0YWJsZUdyaWQuc2V0VmVydGljYWxTcGFjaW5nKExheW91
dFVuaXQgeyB0YWJsZVdyYXBwZXJCb3guc3R5bGUoKS52ZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSB9
KTsKQEAgLTE5Myw3ICsxOTQsOSBAQCB2b2lkIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1
dGVQcmVmZXJyZWRXaWR0aEZvckNvbHVtbnMoKQogCiAgICAgICAgIGF1dG8gaW50cmluc2ljV2lk
dGggPSBmb3JtYXR0aW5nU3RhdGUuaW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckJveCh0YWJs
ZUNlbGxCb3gpOwogICAgICAgICBpZiAoIWludHJpbnNpY1dpZHRoKSB7Ci0gICAgICAgICAgICBp
bnRyaW5zaWNXaWR0aCA9IGxheW91dFN0YXRlKCkuY3JlYXRlRm9ybWF0dGluZ0NvbnRleHQodGFi
bGVDZWxsQm94KS0+Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCk7CisgICAgICAg
ICAgICBpbnRyaW5zaWNXaWR0aCA9IEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgeyB9OworICAg
ICAgICAgICAgaWYgKGlzPENvbnRhaW5lcj4odGFibGVDZWxsQm94KSkKKyAgICAgICAgICAgICAg
ICBpbnRyaW5zaWNXaWR0aCA9IGxheW91dFN0YXRlKCkuY3JlYXRlRm9ybWF0dGluZ0NvbnRleHQo
ZG93bmNhc3Q8Q29udGFpbmVyPih0YWJsZUNlbGxCb3gpKS0+Y29tcHV0ZWRJbnRyaW5zaWNXaWR0
aENvbnN0cmFpbnRzKCk7CiAgICAgICAgICAgICBpbnRyaW5zaWNXaWR0aCA9IGdlb21ldHJ5KCku
Y29uc3RyYWluQnlNaW5NYXhXaWR0aCh0YWJsZUNlbGxCb3gsICppbnRyaW5zaWNXaWR0aCk7CiAg
ICAgICAgICAgICBhdXRvIGJvcmRlciA9IGdlb21ldHJ5KCkuY29tcHV0ZWRCb3JkZXIodGFibGVD
ZWxsQm94KTsKICAgICAgICAgICAgIGF1dG8gcGFkZGluZyA9ICpnZW9tZXRyeSgpLmNvbXB1dGVk
UGFkZGluZyh0YWJsZUNlbGxCb3gsIFVzZWRIb3Jpem9udGFsVmFsdWVzKHsgfSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRp
bmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxl
Rm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCBiMGNhMjUyZDczYzExNWJjMWM1N2MzMjk2N2QyZmM1
MjZlNTRjMTVmLi45N2ExNDQ2MjA5OWQ3NzI5YjQwYjJjZmIzNWYzMGFlYTNkOGEyOGYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0
dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5n
L1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgTGF5
b3V0IHsKIGNsYXNzIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQgOiBwdWJsaWMgRm9ybWF0dGluZ0Nv
bnRleHQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoVGFibGVGb3JtYXR0aW5nQ29udGV4
dCk7CiBwdWJsaWM6Ci0gICAgVGFibGVGb3JtYXR0aW5nQ29udGV4dChjb25zdCBCb3gmIGZvcm1h
dHRpbmdDb250ZXh0Um9vdCwgVGFibGVGb3JtYXR0aW5nU3RhdGUmKTsKKyAgICBUYWJsZUZvcm1h
dHRpbmdDb250ZXh0KGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBUYWJs
ZUZvcm1hdHRpbmdTdGF0ZSYpOwogICAgIHZvaWQgbGF5b3V0SW5GbG93Q29udGVudCgpIG92ZXJy
aWRlOwogCiBwcml2YXRlOgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>