<?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>205985</bug_id>
          
          <creation_ts>2020-01-08 20:47:48 -0800</creation_ts>
          <short_desc>[LFC] Decouple UsedHorizontal(Vertical)Values and Horizontal(Vertical)Constraints</short_desc>
          <delta_ts>2020-01-09 10:31:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>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>1604489</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-01-08 20:47:48 -0800</bug_when>
    <thetext>Some functions don&apos;t need the actual used values but only the constraints.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604490</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-08 20:48:10 -0800</bug_when>
    <thetext>&lt;rdar://problem/58431985&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604491</commentid>
    <comment_count>2</comment_count>
      <attachid>387185</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-01-08 20:59:08 -0800</bug_when>
    <thetext>Created attachment 387185
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604702</commentid>
    <comment_count>3</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-01-09 10:31:02 -0800</bug_when>
    <thetext>Committed r254272: &lt;https://trac.webkit.org/changeset/254272&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387185</attachid>
            <date>2020-01-08 20:59:08 -0800</date>
            <delta_ts>2020-01-09 07:26:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205985-20200108205907.patch</filename>
            <type>text/plain</type>
            <size>66468</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTI4YjAxZWQ4MjkwNWEx
OWViNDliMWM0Nzg1ZTk4MjVkMjU3MDA1MS4uODE0MjQzMDUwNzQyNWU0ODUwNGU5ZWFhYzA2NTRh
OTUwZmFhN2FiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIwLTAxLTA4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gRGVjb3VwbGUgVXNl
ZEhvcml6b250YWwoVmVydGljYWwpVmFsdWVzIGFuZCBIb3Jpem9udGFsKFZlcnRpY2FsKUNvbnN0
cmFpbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDU5ODUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4NDMxOTg1PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNvbWUgZ2VvbWV0cnkgZnVuY3Rpb25z
IG5lZWQgb25seSB0aGUgY29uc3RyYWludCB2YWx1ZXMgYW5kIHNvbWUgbmVlZCBib3RoIHRoZSBj
b25zdHJhaW50IGFuZCB0aGUgdXNlZCB2YWx1ZXMuCisKKyAgICAgICAgSW5mbG93OgorICAgICAg
ICAgIGhvcml6b250YWw6CisgICAgICAgICAgICB3aWR0aCBhbmQgbWFyZ2luOiBuZWVkcyBob3Jp
em9udGFsIGNvbnN0cmFpbnQgKGNvbnRhaW5pbmcgYmxvY2sgd2lkdGgpIGFuZCB0aGUgdXNlZCB2
YWx1ZXMgKG1pbi9tYXggd2lkdGgpLgorICAgICAgICAgICAgcG9zaXRpb246IG5lZWRzIGhvcml6
b250YWwgY29uc3RyYWludCAoY29udGFpbmluZyBibG9jaydzIGNvbnRlbnQgYm94IGxlZnQpLgor
ICAgICAgICAgIHZlcnRpY2FsOgorICAgICAgICAgICAgaGVpZ2h0IGFuZCBtYXJnaW46IG5lZWRz
IGhvcml6b250YWwgY29uc3RyYWludCB0byByZXNvbHZlIG1hcmdpbiB2YWx1ZXMgYW5kIHRoZSB1
c2VkIHZhbHVlcyAobWluL21heCBoZWlnaHQpLgorICAgICAgICAgICAgcG9zaXRpb246IG5lZWRz
IHZlcnRpY2FsIGNvbnN0cmFpbnQgKGNvbnRhaW5pbmcgYmxvY2sncyBjb250ZW50IGJveCB0b3Ap
LgorCisgICAgICAgIE91dC1vZi1mbG93OgorICAgICAgICAgIGhvcml6b250YWwgZ2VvbWV0cnk6
IGhvcml6b250YWwgY29uc3RyYWludCBhbmQgdGhlIHVzZWQgdmFsdWUuCisgICAgICAgICAgdmVy
dGljYWwgZ2VvbWV0cnk6IGhvcml6b250YWwgYW5kIHZlcnRpY2FsIGNvbnN0cmFpbnQgYW5kIHRo
ZSB2ZXJ0aWNhbCB1c2VkIHZhbHVlLgorCisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmNv
bXB1dGVPdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZU91dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0T3V0
T2ZGbG93Q29udGVudCk6CisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0Lmg6Cisg
ICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05v
blJlcGxhY2VkVmVydGljYWxHZW9tZXRyeSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jp
em9udGFsR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkVmVydGljYWxHZW9tZXRyeSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
b3V0T2ZGbG93UmVwbGFjZWRIb3Jpem9udGFsR2VvbWV0cnkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nTm9uUmVw
bGFjZWRXaWR0aEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdSZXBsYWNlZEhlaWdodEFuZE1hcmdpbiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6ZmxvYXRpbmdSZXBsYWNlZFdpZHRoQW5kTWFyZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dWZXJ0aWNh
bEdlb21ldHJ5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nV2lk
dGhBbmRNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVS
ZXBsYWNlZFdpZHRoQW5kTWFyZ2luIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvTGF5b3V0VW5p
dHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VXNlZEhvcml6b250YWxWYWx1ZXM6OlVz
ZWRIb3Jpem9udGFsVmFsdWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
VXNlZFZlcnRpY2FsVmFsdWVzOjpVc2VkVmVydGljYWxWYWx1ZXMpOiBEZWxldGVkLgorICAgICAg
ICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dElu
Rmxvd0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJvb3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRXN0aW1hdGVkVmVydGljYWxQ
b3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6OmNvbXB1dGVXaWR0aEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4pOgorICAgICAgICAq
IGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAg
ICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05v
blJlcGxhY2VkV2lkdGhBbmRNYXJnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93UmVwbGFjZWRXaWR0aEFu
ZE1hcmdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dIZWlnaHRBbmRNYXJnaW4pOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93V2lk
dGhBbmRNYXJnaW4pOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZv
cm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRS
b290KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmNvbXB1dGVIb3Jpem9udGFsQW5kVmVydGljYWxHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lkdGhBbmRNYXJnaW4p
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29t
cHV0ZUhlaWdodEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZv
cm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lkdGhBbmRIZWlnaHRGb3JSZXBsYWNlZElubGluZUJv
eCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuaDoKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVCbG9ja1dpZHRoQW5kTWFyZ2luKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjppbmxpbmVCbG9ja0hlaWdodEFuZE1hcmdpbiBjb25zdCk6CisKIDIwMjAtMDEtMDggIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBVc2UgSG9yaXpv
bnRhbC9WZXJ0aWNhbENvbnN0cmFpbnRzIHdoZXJldmVyIHBvc3NpYmxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCBmNDg0ODk1MjM5YjQwOTAwYzNl
YzY4NDlmNTU0MzU2YWJhZDIyYWUyLi5iZWUyNzQ1ZDc1N2ZjYmYzMzc3Y2Y0MzFiMWZmZTE3YmZk
MmMzODQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAK
QEAgLTY2LDEyICs2NiwxMSBAQCBMYXlvdXRTdGF0ZSYgRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91
dFN0YXRlKCkgY29uc3QKICAgICByZXR1cm4gbV9mb3JtYXR0aW5nU3RhdGUubGF5b3V0U3RhdGUo
KTsKIH0KIAotdm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZU91dE9mRmxvd0hvcml6b250
YWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFp
bnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMmIHZl
cnRpY2FsQ29uc3RyYWludHMpCit2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0T2ZG
bG93SG9yaXpvbnRhbEdlb21ldHJ5KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem9u
dGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cykKIHsKICAgICBBU1NFUlQobGF5
b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKTsKICAgICBhdXRvIGNvbXB1dGUgPSBbJl0o
T3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZFdpZHRoKSB7Ci0gICAgICAgIGF1dG8gdXNlZEhvcml6
b250YWxWYWx1ZXMgPSBVc2VkSG9yaXpvbnRhbFZhbHVlcyB7IGhvcml6b250YWxDb25zdHJhaW50
cywgdXNlZFdpZHRoLCB7IH0gfTsKLSAgICAgICAgcmV0dXJuIGdlb21ldHJ5KCkub3V0T2ZGbG93
SG9yaXpvbnRhbEdlb21ldHJ5KGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMsIHZlcnRp
Y2FsQ29uc3RyYWludHMpOworICAgICAgICByZXR1cm4gZ2VvbWV0cnkoKS5vdXRPZkZsb3dIb3Jp
em9udGFsR2VvbWV0cnkobGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMsIHsgdXNlZFdp
ZHRoIH0pOwogICAgIH07CiAKICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gaG9yaXpv
bnRhbENvbnN0cmFpbnRzLmxvZ2ljYWxXaWR0aDsKQEAgLTk5LDggKzk4LDcgQEAgdm9pZCBGb3Jt
YXR0aW5nQ29udGV4dDo6Y29tcHV0ZU91dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkoY29uc3QgQm94
JiBsYXlvdXRCb3gsIGMKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRp
b25lZCgpKTsKICAgICBhdXRvIGNvbXB1dGUgPSBbJl0oT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNl
ZEhlaWdodCkgewotICAgICAgICBhdXRvIHVzZWRWZXJ0aWNhbFZhbHVlcyA9IFVzZWRWZXJ0aWNh
bFZhbHVlcyB7IHZlcnRpY2FsQ29uc3RyYWludHMsIHVzZWRIZWlnaHQgfTsKLSAgICAgICAgcmV0
dXJuIGdlb21ldHJ5KCkub3V0T2ZGbG93VmVydGljYWxHZW9tZXRyeShsYXlvdXRCb3gsIGhvcml6
b250YWxDb25zdHJhaW50cywgdXNlZFZlcnRpY2FsVmFsdWVzKTsKKyAgICAgICAgcmV0dXJuIGdl
b21ldHJ5KCkub3V0T2ZGbG93VmVydGljYWxHZW9tZXRyeShsYXlvdXRCb3gsIGhvcml6b250YWxD
b25zdHJhaW50cywgdmVydGljYWxDb25zdHJhaW50cywgeyB1c2VkSGVpZ2h0IH0pOwogICAgIH07
CiAKICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9ICp2ZXJ0aWNhbENvbnN0cmFpbnRz
LmxvZ2ljYWxIZWlnaHQ7CkBAIC0xNjQsNyArMTYyLDcgQEAgdm9pZCBGb3JtYXR0aW5nQ29udGV4
dDo6bGF5b3V0T3V0T2ZGbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYgaW52YWxpZGF0aW9u
U3QKICAgICAgICAgLy8gQm9yZGVycyBhbmQgcGFkZGluZ3MgYXJlIHJlc29sdmVkIGFnYWluc3Qg
dGhlIGNvbnRhaW5pbmcgYmxvY2sncyBjb250ZW50IGJveCBsaWtlIGlmIHRoaXMgYm94IHdhcyBh
biBpbi1mbG93IGJveC4KICAgICAgICAgYXV0byYgb3V0T2ZGbG93Um9vdERpc3BsYXlCb3ggPSBn
ZW9tZXRyeUZvckJveCgqb3V0T2ZGbG93Qm94KTsKICAgICAgICAgY29tcHV0ZUJvcmRlckFuZFBh
ZGRpbmcoKm91dE9mRmxvd0JveCwgR2VvbWV0cnk6Omhvcml6b250YWxDb25zdHJhaW50c0Zvcklu
RmxvdyhvdXRPZkZsb3dSb290RGlzcGxheUJveCkpOwotICAgICAgICBjb21wdXRlT3V0T2ZGbG93
SG9yaXpvbnRhbEdlb21ldHJ5KCpvdXRPZkZsb3dCb3gsIGhvcml6b250YWxDb25zdHJhaW50cywg
dmVydGljYWxDb25zdHJhaW50cyk7CisgICAgICAgIGNvbXB1dGVPdXRPZkZsb3dIb3Jpem9udGFs
R2VvbWV0cnkoKm91dE9mRmxvd0JveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzKTsKICAgICAgICAg
aWYgKGlzPENvbnRhaW5lcj4oKm91dE9mRmxvd0JveCkpIHsKICAgICAgICAgICAgIGF1dG8mIG91
dE9mRmxvd1Jvb3RDb250YWluZXIgPSBkb3duY2FzdDxDb250YWluZXI+KCpvdXRPZkZsb3dCb3gp
OwogICAgICAgICAgICAgYXV0byBmb3JtYXR0aW5nQ29udGV4dCA9IExheW91dENvbnRleHQ6OmNy
ZWF0ZUZvcm1hdHRpbmdDb250ZXh0KG91dE9mRmxvd1Jvb3RDb250YWluZXIsIGxheW91dFN0YXRl
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCBhMGIy
OTk2ODZmMGMxNGY5OTYwNzZhZTE0MTBiMDIyZDg1MzkyOGQzLi41ZmJhNWJjMWFkOGYxY2E2ZDU0
ZDlmY2M4NjljNmQxMTNmZmM1NTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Rm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGlu
Z0NvbnRleHQuaApAQCAtMTA5LDE0ICsxMDksMTQgQEAgcHJvdGVjdGVkOgogICAgIC8vIFRoaXMg
Y2xhc3MgaW1wbGVtZW50cyBnZW5lcmljIHBvc2l0aW9uaW5nIGFuZCBzaXppbmcuCiAgICAgY2xh
c3MgR2VvbWV0cnkgewogICAgIHB1YmxpYzoKLSAgICAgICAgVmVydGljYWxHZW9tZXRyeSBvdXRP
ZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJh
aW50cyYsIGNvbnN0IFVzZWRWZXJ0aWNhbFZhbHVlcyYpIGNvbnN0OwotICAgICAgICBIb3Jpem9u
dGFsR2VvbWV0cnkgb3V0T2ZGbG93SG9yaXpvbnRhbEdlb21ldHJ5KGNvbnN0IEJveCYsIGNvbnN0
IFVzZWRIb3Jpem9udGFsVmFsdWVzJiwgY29uc3QgVmVydGljYWxDb25zdHJhaW50cyYpOworICAg
ICAgICBWZXJ0aWNhbEdlb21ldHJ5IG91dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkoY29uc3QgQm94
JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgVmVydGljYWxDb25zdHJhaW50
cyYsIGNvbnN0IFVzZWRWZXJ0aWNhbFZhbHVlcyYpIGNvbnN0OworICAgICAgICBIb3Jpem9udGFs
R2VvbWV0cnkgb3V0T2ZGbG93SG9yaXpvbnRhbEdlb21ldHJ5KGNvbnN0IEJveCYsIGNvbnN0IEhv
cml6b250YWxDb25zdHJhaW50cyYsIGNvbnN0IFVzZWRIb3Jpem9udGFsVmFsdWVzJik7CiAKICAg
ICAgICAgQ29udGVudEhlaWdodEFuZE1hcmdpbiBmbG9hdGluZ0hlaWdodEFuZE1hcmdpbihjb25z
dCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25zdCBVc2VkVmVydGljYWxW
YWx1ZXMmKSBjb25zdDsKLSAgICAgICAgQ29udGVudFdpZHRoQW5kTWFyZ2luIGZsb2F0aW5nV2lk
dGhBbmRNYXJnaW4oY29uc3QgQm94JiwgY29uc3QgVXNlZEhvcml6b250YWxWYWx1ZXMmKTsKKyAg
ICAgICAgQ29udGVudFdpZHRoQW5kTWFyZ2luIGZsb2F0aW5nV2lkdGhBbmRNYXJnaW4oY29uc3Qg
Qm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgVXNlZEhvcml6b250YWxW
YWx1ZXMmKTsKIAotICAgICAgICBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIGlubGluZVJlcGxhY2Vk
SGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYs
IGNvbnN0IFVzZWRWZXJ0aWNhbFZhbHVlcyYpIGNvbnN0OwotICAgICAgICBDb250ZW50V2lkdGhB
bmRNYXJnaW4gaW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBV
c2VkSG9yaXpvbnRhbFZhbHVlcyYsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMmKSBjb25zdDsK
KyAgICAgICAgQ29udGVudEhlaWdodEFuZE1hcmdpbiBpbmxpbmVSZXBsYWNlZEhlaWdodEFuZE1h
cmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBPcHRpb25hbDxW
ZXJ0aWNhbENvbnN0cmFpbnRzPiwgY29uc3QgVXNlZFZlcnRpY2FsVmFsdWVzJikgY29uc3Q7Cisg
ICAgICAgIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBpbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2lu
KGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYsIGNvbnN0IFVzZWRIb3Jp
em9udGFsVmFsdWVzJikgY29uc3Q7CiAKICAgICAgICAgTGF5b3V0U2l6ZSBpbkZsb3dQb3NpdGlv
bmVkUG9zaXRpb25PZmZzZXQoY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRz
JikgY29uc3Q7CiAKQEAgLTE2MSwxNiArMTYxLDE2IEBAIHByb3RlY3RlZDoKICAgICAgICAgY29u
c3QgRm9ybWF0dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4g
bV9mb3JtYXR0aW5nQ29udGV4dDsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgVmVydGljYWxH
ZW9tZXRyeSBvdXRPZkZsb3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoY29uc3QgQm94JiwgY29u
c3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgVXNlZFZlcnRpY2FsVmFsdWVzJikgY29u
c3Q7Ci0gICAgICAgIEhvcml6b250YWxHZW9tZXRyeSBvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250
YWxHZW9tZXRyeShjb25zdCBCb3gmLCBjb25zdCBVc2VkSG9yaXpvbnRhbFZhbHVlcyYsIGNvbnN0
IFZlcnRpY2FsQ29uc3RyYWludHMmKSBjb25zdDsKKyAgICAgICAgVmVydGljYWxHZW9tZXRyeSBv
dXRPZkZsb3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoY29uc3QgQm94JiwgY29uc3QgSG9yaXpv
bnRhbENvbnN0cmFpbnRzJiwgY29uc3QgVmVydGljYWxDb25zdHJhaW50cyYsIGNvbnN0IFVzZWRW
ZXJ0aWNhbFZhbHVlcyYpIGNvbnN0OworICAgICAgICBIb3Jpem9udGFsR2VvbWV0cnkgb3V0T2ZG
bG93UmVwbGFjZWRIb3Jpem9udGFsR2VvbWV0cnkoY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRh
bENvbnN0cmFpbnRzJiwgY29uc3QgVXNlZEhvcml6b250YWxWYWx1ZXMmKSBjb25zdDsKIAotICAg
ICAgICBWZXJ0aWNhbEdlb21ldHJ5IG91dE9mRmxvd05vblJlcGxhY2VkVmVydGljYWxHZW9tZXRy
eShjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25zdCBVc2VkVmVy
dGljYWxWYWx1ZXMmKSBjb25zdDsKLSAgICAgICAgSG9yaXpvbnRhbEdlb21ldHJ5IG91dE9mRmxv
d05vblJlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5KGNvbnN0IEJveCYsIGNvbnN0IFVzZWRIb3Jp
em9udGFsVmFsdWVzJik7CisgICAgICAgIFZlcnRpY2FsR2VvbWV0cnkgb3V0T2ZGbG93Tm9uUmVw
bGFjZWRWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJh
aW50cyYsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMmLCBjb25zdCBVc2VkVmVydGljYWxWYWx1
ZXMmKSBjb25zdDsKKyAgICAgICAgSG9yaXpvbnRhbEdlb21ldHJ5IG91dE9mRmxvd05vblJlcGxh
Y2VkSG9yaXpvbnRhbEdlb21ldHJ5KGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJh
aW50cyYsIGNvbnN0IFVzZWRIb3Jpem9udGFsVmFsdWVzJik7CiAKICAgICAgICAgQ29udGVudEhl
aWdodEFuZE1hcmdpbiBmbG9hdGluZ1JlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYs
IGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYsIGNvbnN0IFVzZWRWZXJ0aWNhbFZhbHVlcyYp
IGNvbnN0OwotICAgICAgICBDb250ZW50V2lkdGhBbmRNYXJnaW4gZmxvYXRpbmdSZXBsYWNlZFdp
ZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IFVzZWRIb3Jpem9udGFsVmFsdWVzJikgY29u
c3Q7CisgICAgICAgIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBmbG9hdGluZ1JlcGxhY2VkV2lkdGhB
bmRNYXJnaW4oY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3Qg
VXNlZEhvcml6b250YWxWYWx1ZXMmKSBjb25zdDsKIAotICAgICAgICBDb250ZW50V2lkdGhBbmRN
YXJnaW4gZmxvYXRpbmdOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0
IFVzZWRIb3Jpem9udGFsVmFsdWVzJik7CisgICAgICAgIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBm
bG9hdGluZ05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiwgY29uc3QgSG9yaXpv
bnRhbENvbnN0cmFpbnRzJiwgY29uc3QgVXNlZEhvcml6b250YWxWYWx1ZXMmKTsKIAogICAgICAg
ICBMYXlvdXRVbml0IHN0YXRpY1ZlcnRpY2FsUG9zaXRpb25Gb3JPdXRPZkZsb3dQb3NpdGlvbmVk
KGNvbnN0IEJveCYsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMmKSBjb25zdDsKICAgICAgICAg
TGF5b3V0VW5pdCBzdGF0aWNIb3Jpem9udGFsUG9zaXRpb25Gb3JPdXRPZkZsb3dQb3NpdGlvbmVk
KGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYpIGNvbnN0OwpAQCAtMTk4
LDcgKzE5OCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdm9pZCBjb2xsZWN0T3V0T2ZG
bG93RGVzY2VuZGFudHNJZk5lZWRlZCgpOwogICAgIHZvaWQgY29tcHV0ZU91dE9mRmxvd1ZlcnRp
Y2FsR2VvbWV0cnkoY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29u
c3QgVmVydGljYWxDb25zdHJhaW50cyYpOwotICAgIHZvaWQgY29tcHV0ZU91dE9mRmxvd0hvcml6
b250YWxHZW9tZXRyeShjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBj
b25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJik7CisgICAgdm9pZCBjb21wdXRlT3V0T2ZGbG93SG9y
aXpvbnRhbEdlb21ldHJ5KGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYp
OwogCiAgICAgV2Vha1B0cjxjb25zdCBDb250YWluZXI+IG1fcm9vdDsKICAgICBGb3JtYXR0aW5n
U3RhdGUmIG1fZm9ybWF0dGluZ1N0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IDRhOTEwZTFiNmU1NjdjZmFhNjk2
NTFlODIxMWY2YTcyMTJiYzA5OTQuLmVhYTNkMjY3ZDQzYTQ2ZWQyYzZkNjFlNThjZGNjMWJlMDU5
OTRlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4
dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRl
eHRHZW9tZXRyeS5jcHAKQEAgLTI5NSwxMCArMjk1LDEwIEBAIExheW91dFVuaXQgRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjpzaHJpbmtUb0ZpdFdpZHRoKGNvbnN0IEJveCYgZm9ybWF0dGlu
Z1JvCiAgICAgcmV0dXJuIHN0ZDo6bWluKHN0ZDo6bWF4KGludHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHMubWluaW11bSwgYXZhaWxhYmxlV2lkdGgpLCBpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzLm1h
eGltdW0pOwogfQogCi1WZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IEJveCYgbGF5b3V0
Qm94LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywg
Y29uc3QgVXNlZFZlcnRpY2FsVmFsdWVzJiB1c2VkVmVydGljYWxWYWx1ZXMpIGNvbnN0CitWZXJ0
aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVw
bGFjZWRWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem9u
dGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgVmVydGljYWxDb25z
dHJhaW50cyYgdmVydGljYWxDb25zdHJhaW50cywgY29uc3QgVXNlZFZlcnRpY2FsVmFsdWVzJiB1
c2VkVmVydGljYWxWYWx1ZXMpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc091dE9m
Rmxvd1Bvc2l0aW9uZWQoKSAmJiAhbGF5b3V0Qm94LnJlcGxhY2VkKCkpOwotICAgIEFTU0VSVCh1
c2VkVmVydGljYWxWYWx1ZXMuY29uc3RyYWludHMubG9naWNhbEhlaWdodCk7CisgICAgQVNTRVJU
KHZlcnRpY2FsQ29uc3RyYWludHMubG9naWNhbEhlaWdodCk7CiAKICAgICAvLyAxMC42LjQgQWJz
b2x1dGVseSBwb3NpdGlvbmVkLCBub24tcmVwbGFjZWQgZWxlbWVudHMKICAgICAvLwpAQCAtMzI3
LDcgKzMyNyw3IEBAIFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjpvdXRPZkZsb3dOb25SZXBsYWNlZFZlcnRpY2FsR2VvbWV0CiAgICAgYXV0byYgZm9ybWF0dGlu
Z0NvbnRleHQgPSB0aGlzLT5mb3JtYXR0aW5nQ29udGV4dCgpOwogICAgIGF1dG8mIHN0eWxlID0g
bGF5b3V0Qm94LnN0eWxlKCk7CiAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29u
dGV4dC5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpOwotICAgIGF1dG8gY29udGFpbmluZ0Jsb2Nr
SGVpZ2h0ID0gKnVzZWRWZXJ0aWNhbFZhbHVlcy5jb25zdHJhaW50cy5sb2dpY2FsSGVpZ2h0Owor
ICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrSGVpZ2h0ID0gKnZlcnRpY2FsQ29uc3RyYWludHMubG9n
aWNhbEhlaWdodDsKICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gaG9yaXpvbnRhbENv
bnN0cmFpbnRzLmxvZ2ljYWxXaWR0aDsKIAogICAgIGF1dG8gdG9wID0gY29tcHV0ZWRWYWx1ZUlm
Tm90QXV0byhzdHlsZS5sb2dpY2FsVG9wKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKQEAgLTM0
MSw3ICszNDEsNyBAQCBWZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21ldAogICAgIGF1dG8gYm9yZGVyQm90
dG9tID0gYm94R2VvbWV0cnkuYm9yZGVyQm90dG9tKCk7CiAKICAgICBpZiAoIXRvcCAmJiAhaGVp
Z2h0ICYmICFib3R0b20pCi0gICAgICAgIHRvcCA9IHN0YXRpY1ZlcnRpY2FsUG9zaXRpb25Gb3JP
dXRPZkZsb3dQb3NpdGlvbmVkKGxheW91dEJveCwgdXNlZFZlcnRpY2FsVmFsdWVzLmNvbnN0cmFp
bnRzKTsKKyAgICAgICAgdG9wID0gc3RhdGljVmVydGljYWxQb3NpdGlvbkZvck91dE9mRmxvd1Bv
c2l0aW9uZWQobGF5b3V0Qm94LCB2ZXJ0aWNhbENvbnN0cmFpbnRzKTsKIAogICAgIGlmICh0b3Ag
JiYgaGVpZ2h0ICYmIGJvdHRvbSkgewogICAgICAgICBpZiAoIWNvbXB1dGVkVmVydGljYWxNYXJn
aW4uYmVmb3JlICYmICFjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVyKSB7CkBAIC0zNzAsNyAr
MzcwLDcgQEAgVmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91
dE9mRmxvd05vblJlcGxhY2VkVmVydGljYWxHZW9tZXQKIAogICAgIGlmICghdG9wICYmICFib3R0
b20gJiYgaGVpZ2h0KSB7CiAgICAgICAgIC8vICMyCi0gICAgICAgIHRvcCA9IHN0YXRpY1ZlcnRp
Y2FsUG9zaXRpb25Gb3JPdXRPZkZsb3dQb3NpdGlvbmVkKGxheW91dEJveCwgdXNlZFZlcnRpY2Fs
VmFsdWVzLmNvbnN0cmFpbnRzKTsKKyAgICAgICAgdG9wID0gc3RhdGljVmVydGljYWxQb3NpdGlv
bkZvck91dE9mRmxvd1Bvc2l0aW9uZWQobGF5b3V0Qm94LCB2ZXJ0aWNhbENvbnN0cmFpbnRzKTsK
ICAgICAgICAgdXNlZFZlcnRpY2FsTWFyZ2luID0geyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJl
Zm9yZS52YWx1ZU9yKDApLCBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlT3IoMCkg
fTsKICAgICAgICAgYm90dG9tID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyB1c2Vk
VmVydGljYWxNYXJnaW4uYmVmb3JlICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCArICpoZWlnaHQg
KyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgdXNlZFZlcnRpY2FsTWFyZ2luLmFmdGVy
KTsKICAgICB9CkBAIC00MDYsNyArNDA2LDcgQEAgVmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkVmVydGljYWxHZW9tZXQKIAog
ICAgIC8vIEZvciBvdXQtb2YtZmxvdyBlbGVtZW50cyB0aGUgY29udGFpbmluZyBibG9jayBpcyBm
b3JtZWQgYnkgdGhlIHBhZGRpbmcgZWRnZSBvZiB0aGUgYW5jZXN0b3IuCiAgICAgLy8gQXQgdGhp
cyBwb2ludCB0aGUgcG9zaXRpb25lZCB2YWx1ZSBpcyBpbiB0aGUgY29vcmRpbmF0ZSBzeXN0ZW0g
b2YgdGhlIHBhZGRpbmcgYm94LiBMZXQncyBjb252ZXJ0IGl0IHRvIGJvcmRlciBib3ggY29vcmRp
bmF0ZSBzeXN0ZW0uCi0gICAgYXV0byBjb250YWluaW5nQmxvY2tQYWRkaW5nVmVydGljYWxFZGdl
ID0gdXNlZFZlcnRpY2FsVmFsdWVzLmNvbnN0cmFpbnRzLmxvZ2ljYWxUb3A7CisgICAgYXV0byBj
b250YWluaW5nQmxvY2tQYWRkaW5nVmVydGljYWxFZGdlID0gdmVydGljYWxDb25zdHJhaW50cy5s
b2dpY2FsVG9wOwogICAgICp0b3AgKz0gY29udGFpbmluZ0Jsb2NrUGFkZGluZ1ZlcnRpY2FsRWRn
ZTsKICAgICAqYm90dG9tICs9IGNvbnRhaW5pbmdCbG9ja1BhZGRpbmdWZXJ0aWNhbEVkZ2U7CiAK
QEAgLTQxNCw3ICs0MTQsNyBAQCBWZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21ldAogICAgIHJldHVybiB7
ICp0b3AsICpib3R0b20sIHsgKmhlaWdodCwgdXNlZFZlcnRpY2FsTWFyZ2luIH0gfTsKIH0KIAot
SG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93
Tm9uUmVwbGFjZWRIb3Jpem9udGFsR2VvbWV0cnkoY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0
IFVzZWRIb3Jpem9udGFsVmFsdWVzJiB1c2VkSG9yaXpvbnRhbFZhbHVlcykKK0hvcml6b250YWxH
ZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2Vk
SG9yaXpvbnRhbEdlb21ldHJ5KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem9udGFs
Q29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgVXNlZEhvcml6b250YWxW
YWx1ZXMmIHVzZWRIb3Jpem9udGFsVmFsdWVzKQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNP
dXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIWxheW91dEJveC5yZXBsYWNlZCgpKTsKICAgICAKQEAg
LTQ0NywxMyArNDQ3LDEzIEBAIEhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkSG9yaXpvbnRhbEdlCiAgICAgYXV0byYgZm9y
bWF0dGluZ0NvbnRleHQgPSB0aGlzLT5mb3JtYXR0aW5nQ29udGV4dCgpOwogICAgIGF1dG8mIHN0
eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7CiAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0
aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpOwotICAgIGF1dG8gY29udGFpbmlu
Z0Jsb2NrV2lkdGggPSB1c2VkSG9yaXpvbnRhbFZhbHVlcy5jb25zdHJhaW50cy5sb2dpY2FsV2lk
dGg7CisgICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGhvcml6b250YWxDb25zdHJhaW50
cy5sb2dpY2FsV2lkdGg7CiAgICAgYXV0byBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uID0gbGF5b3V0
Qm94LmNvbnRhaW5pbmdCbG9jaygpLT5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsK
ICAgICAKICAgICBhdXRvIGxlZnQgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2lj
YWxMZWZ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKICAgICBhdXRvIHJpZ2h0ID0gY29tcHV0
ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsUmlnaHQoKSwgY29udGFpbmluZ0Jsb2NrV2lk
dGgpOwogICAgIGF1dG8gd2lkdGggPSB1c2VkSG9yaXpvbnRhbFZhbHVlcy53aWR0aCA/IHVzZWRI
b3Jpem9udGFsVmFsdWVzLndpZHRoIDogY29tcHV0ZWRDb250ZW50V2lkdGgobGF5b3V0Qm94LCBj
b250YWluaW5nQmxvY2tXaWR0aCk7Ci0gICAgYXV0byBjb21wdXRlZEhvcml6b250YWxNYXJnaW4g
PSBHZW9tZXRyeTo6Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luKGxheW91dEJveCwgdXNlZEhvcml6
b250YWxWYWx1ZXMuY29uc3RyYWludHMpOworICAgIGF1dG8gY29tcHV0ZWRIb3Jpem9udGFsTWFy
Z2luID0gR2VvbWV0cnk6OmNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbihsYXlvdXRCb3gsIGhvcml6
b250YWxDb25zdHJhaW50cyk7CiAgICAgVXNlZEhvcml6b250YWxNYXJnaW4gdXNlZEhvcml6b250
YWxNYXJnaW47CiAgICAgYXV0byBwYWRkaW5nTGVmdCA9IGJveEdlb21ldHJ5LnBhZGRpbmdMZWZ0
KCkudmFsdWVPcigwKTsKICAgICBhdXRvIHBhZGRpbmdSaWdodCA9IGJveEdlb21ldHJ5LnBhZGRp
bmdSaWdodCgpLnZhbHVlT3IoMCk7CkBAIC00NjUsNyArNDY1LDcgQEAgSG9yaXpvbnRhbEdlb21l
dHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jp
em9udGFsR2UKICAgICAgICAgLy8gcG9zaXRpb24gYW5kIGFwcGx5IHJ1bGUgbnVtYmVyIHRocmVl
IGJlbG93OyBvdGhlcndpc2UsIHNldCAncmlnaHQnIHRvIHRoZSBzdGF0aWMgcG9zaXRpb24gYW5k
IGFwcGx5IHJ1bGUgbnVtYmVyIG9uZSBiZWxvdy4KICAgICAgICAgdXNlZEhvcml6b250YWxNYXJn
aW4gPSB7IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZU9yKDApLCBjb21wdXRl
ZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlT3IoMCkgfTsKIAotICAgICAgICBhdXRvIHN0YXRp
Y0hvcml6b250YWxQb3NpdGlvbiA9IHN0YXRpY0hvcml6b250YWxQb3NpdGlvbkZvck91dE9mRmxv
d1Bvc2l0aW9uZWQobGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcy5jb25zdHJhaW50cyk7
CisgICAgICAgIGF1dG8gc3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uID0gc3RhdGljSG9yaXpvbnRh
bFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25lZChsYXlvdXRCb3gsIGhvcml6b250YWxDb25z
dHJhaW50cyk7CiAgICAgICAgIGlmIChpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKQogICAgICAgICAg
ICAgbGVmdCA9IHN0YXRpY0hvcml6b250YWxQb3NpdGlvbjsKICAgICAgICAgZWxzZQpAQCAtNTE3
LDcgKzUxNyw3IEBAIEhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6Om91dE9mRmxvd05vblJlcGxhY2VkSG9yaXpvbnRhbEdlCiAgICAgICAgIGxlZnQgPSBjb250
YWluaW5nQmxvY2tXaWR0aCAtICh1c2VkSG9yaXpvbnRhbE1hcmdpbi5zdGFydCArIGJvcmRlckxl
ZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCAgKyBib3JkZXJSaWdodCAr
IHVzZWRIb3Jpem9udGFsTWFyZ2luLmVuZCArICpyaWdodCk7CiAgICAgfSBlbHNlIGlmICghbGVm
dCAmJiAhcmlnaHQgJiYgd2lkdGgpIHsKICAgICAgICAgLy8gIzIKLSAgICAgICAgYXV0byBzdGF0
aWNIb3Jpem9udGFsUG9zaXRpb24gPSBzdGF0aWNIb3Jpem9udGFsUG9zaXRpb25Gb3JPdXRPZkZs
b3dQb3NpdGlvbmVkKGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMuY29uc3RyYWludHMp
OworICAgICAgICBhdXRvIHN0YXRpY0hvcml6b250YWxQb3NpdGlvbiA9IHN0YXRpY0hvcml6b250
YWxQb3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0aW9uZWQobGF5b3V0Qm94LCBob3Jpem9udGFsQ29u
c3RyYWludHMpOwogICAgICAgICBpZiAoaXNMZWZ0VG9SaWdodERpcmVjdGlvbikgewogICAgICAg
ICAgICAgbGVmdCA9IHN0YXRpY0hvcml6b250YWxQb3NpdGlvbjsKICAgICAgICAgICAgIHJpZ2h0
ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKmxlZnQgKyB1c2VkSG9yaXpvbnRhbE1hcmdpbi5z
dGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCAr
IGJvcmRlclJpZ2h0ICsgdXNlZEhvcml6b250YWxNYXJnaW4uZW5kKTsKQEAgLTU0OSw3ICs1NDks
NyBAQCBIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRP
ZkZsb3dOb25SZXBsYWNlZEhvcml6b250YWxHZQogCiAgICAgLy8gRm9yIG91dC1vZi1mbG93IGVs
ZW1lbnRzIHRoZSBjb250YWluaW5nIGJsb2NrIGlzIGZvcm1lZCBieSB0aGUgcGFkZGluZyBlZGdl
IG9mIHRoZSBhbmNlc3Rvci4KICAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBwb3NpdGlvbmVkIHZh
bHVlIGlzIGluIHRoZSBjb29yZGluYXRlIHN5c3RlbSBvZiB0aGUgcGFkZGluZyBib3guIExldCdz
IGNvbnZlcnQgaXQgdG8gYm9yZGVyIGJveCBjb29yZGluYXRlIHN5c3RlbS4KLSAgICBhdXRvIGNv
bnRhaW5pbmdCbG9ja1BhZGRpbmdWZXJ0aWNhbEVkZ2UgPSB1c2VkSG9yaXpvbnRhbFZhbHVlcy5j
b25zdHJhaW50cy5sb2dpY2FsTGVmdDsKKyAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1BhZGRpbmdW
ZXJ0aWNhbEVkZ2UgPSBob3Jpem9udGFsQ29uc3RyYWludHMubG9naWNhbExlZnQ7CiAgICAgKmxl
ZnQgKz0gY29udGFpbmluZ0Jsb2NrUGFkZGluZ1ZlcnRpY2FsRWRnZTsKICAgICAqcmlnaHQgKz0g
Y29udGFpbmluZ0Jsb2NrUGFkZGluZ1ZlcnRpY2FsRWRnZTsKIApAQCAtNTU3LDEwICs1NTcsMTAg
QEAgSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZG
bG93Tm9uUmVwbGFjZWRIb3Jpem9udGFsR2UKICAgICByZXR1cm4geyAqbGVmdCwgKnJpZ2h0LCB7
ICp3aWR0aCwgdXNlZEhvcml6b250YWxNYXJnaW4sIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiB9
IH07CiB9CiAKLVZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpv
dXRPZkZsb3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoY29uc3QgQm94JiBsYXlvdXRCb3gsIGNv
bnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBV
c2VkVmVydGljYWxWYWx1ZXMmIHVzZWRWZXJ0aWNhbFZhbHVlcykgY29uc3QKK1ZlcnRpY2FsR2Vv
bWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFZlcnRp
Y2FsR2VvbWV0cnkoY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJh
aW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJiB2
ZXJ0aWNhbENvbnN0cmFpbnRzLCBjb25zdCBVc2VkVmVydGljYWxWYWx1ZXMmIHVzZWRWZXJ0aWNh
bFZhbHVlcykgY29uc3QKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRp
b25lZCgpICYmIGxheW91dEJveC5yZXBsYWNlZCgpKTsKLSAgICBBU1NFUlQodXNlZFZlcnRpY2Fs
VmFsdWVzLmNvbnN0cmFpbnRzLmxvZ2ljYWxIZWlnaHQpOworICAgIEFTU0VSVCh2ZXJ0aWNhbENv
bnN0cmFpbnRzLmxvZ2ljYWxIZWlnaHQpOwogCiAgICAgLy8gMTAuNi41IEFic29sdXRlbHkgcG9z
aXRpb25lZCwgcmVwbGFjZWQgZWxlbWVudHMKICAgICAvLwpAQCAtNTc1LDEyICs1NzUsMTIgQEAg
VmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1Jl
cGxhY2VkVmVydGljYWxHZW9tZXRyeSgKICAgICBhdXRvJiBmb3JtYXR0aW5nQ29udGV4dCA9IHRo
aXMtPmZvcm1hdHRpbmdDb250ZXh0KCk7CiAgICAgYXV0byYgc3R5bGUgPSBsYXlvdXRCb3guc3R5
bGUoKTsKICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5
Rm9yQm94KGxheW91dEJveCk7Ci0gICAgYXV0byBjb250YWluaW5nQmxvY2tIZWlnaHQgPSAqdXNl
ZFZlcnRpY2FsVmFsdWVzLmNvbnN0cmFpbnRzLmxvZ2ljYWxIZWlnaHQ7CisgICAgYXV0byBjb250
YWluaW5nQmxvY2tIZWlnaHQgPSAqdmVydGljYWxDb25zdHJhaW50cy5sb2dpY2FsSGVpZ2h0Owog
ICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBob3Jpem9udGFsQ29uc3RyYWludHMubG9n
aWNhbFdpZHRoOwogCiAgICAgYXV0byB0b3AgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxl
LmxvZ2ljYWxUb3AoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogICAgIGF1dG8gYm90dG9tID0g
Y29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsQm90dG9tKCksIGNvbnRhaW5pbmdC
bG9ja1dpZHRoKTsKLSAgICBhdXRvIGhlaWdodCA9IGlubGluZVJlcGxhY2VkSGVpZ2h0QW5kTWFy
Z2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB1c2VkVmVydGljYWxWYWx1ZXMp
LmNvbnRlbnRIZWlnaHQ7CisgICAgYXV0byBoZWlnaHQgPSBpbmxpbmVSZXBsYWNlZEhlaWdodEFu
ZE1hcmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cywgdmVydGljYWxDb25zdHJh
aW50cywgdXNlZFZlcnRpY2FsVmFsdWVzKS5jb250ZW50SGVpZ2h0OwogICAgIGF1dG8gY29tcHV0
ZWRWZXJ0aWNhbE1hcmdpbiA9IEdlb21ldHJ5Ojpjb21wdXRlZFZlcnRpY2FsTWFyZ2luKGxheW91
dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzKTsKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiB1
c2VkTWFyZ2luQmVmb3JlID0gY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmU7CiAgICAgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gdXNlZE1hcmdpbkFmdGVyID0gY29tcHV0ZWRWZXJ0aWNhbE1hcmdp
bi5hZnRlcjsKQEAgLTU5MSw3ICs1OTEsNyBAQCBWZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KAogCiAg
ICAgaWYgKCF0b3AgJiYgIWJvdHRvbSkgewogICAgICAgICAvLyAjMQotICAgICAgICB0b3AgPSBz
dGF0aWNWZXJ0aWNhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25lZChsYXlvdXRCb3gsIHVz
ZWRWZXJ0aWNhbFZhbHVlcy5jb25zdHJhaW50cyk7CisgICAgICAgIHRvcCA9IHN0YXRpY1ZlcnRp
Y2FsUG9zaXRpb25Gb3JPdXRPZkZsb3dQb3NpdGlvbmVkKGxheW91dEJveCwgdmVydGljYWxDb25z
dHJhaW50cyk7CiAgICAgfQogCiAgICAgaWYgKCFib3R0b20pIHsKQEAgLTYyNyw3ICs2MjcsNyBA
QCBWZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93
UmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KAogCiAgICAgLy8gRm9yIG91dC1vZi1mbG93IGVsZW1l
bnRzIHRoZSBjb250YWluaW5nIGJsb2NrIGlzIGZvcm1lZCBieSB0aGUgcGFkZGluZyBlZGdlIG9m
IHRoZSBhbmNlc3Rvci4KICAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBwb3NpdGlvbmVkIHZhbHVl
IGlzIGluIHRoZSBjb29yZGluYXRlIHN5c3RlbSBvZiB0aGUgcGFkZGluZyBib3guIExldCdzIGNv
bnZlcnQgaXQgdG8gYm9yZGVyIGJveCBjb29yZGluYXRlIHN5c3RlbS4KLSAgICBhdXRvIGNvbnRh
aW5pbmdCbG9ja1BhZGRpbmdWZXJ0aWNhbEVkZ2UgPSB1c2VkVmVydGljYWxWYWx1ZXMuY29uc3Ry
YWludHMubG9naWNhbFRvcDsKKyAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1BhZGRpbmdWZXJ0aWNh
bEVkZ2UgPSB2ZXJ0aWNhbENvbnN0cmFpbnRzLmxvZ2ljYWxUb3A7CiAgICAgKnRvcCArPSBjb250
YWluaW5nQmxvY2tQYWRkaW5nVmVydGljYWxFZGdlOwogICAgICpib3R0b20gKz0gY29udGFpbmlu
Z0Jsb2NrUGFkZGluZ1ZlcnRpY2FsRWRnZTsKIApAQCAtNjM5LDcgKzYzOSw3IEBAIFZlcnRpY2Fs
R2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFZl
cnRpY2FsR2VvbWV0cnkoCiAgICAgcmV0dXJuIHsgKnRvcCwgKmJvdHRvbSwgeyBoZWlnaHQsIHsg
KnVzZWRNYXJnaW5CZWZvcmUsICp1c2VkTWFyZ2luQWZ0ZXIgfSB9IH07CiB9CiAKLUhvcml6b250
YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2Vk
SG9yaXpvbnRhbEdlb21ldHJ5KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBVc2VkSG9yaXpv
bnRhbFZhbHVlcyYgdXNlZEhvcml6b250YWxWYWx1ZXMsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWlu
dHMmIHZlcnRpY2FsQ29uc3RyYWludHMpIGNvbnN0CitIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9tZXRy
eShjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jp
em9udGFsQ29uc3RyYWludHMsIGNvbnN0IFVzZWRIb3Jpem9udGFsVmFsdWVzJiB1c2VkSG9yaXpv
bnRhbFZhbHVlcykgY29uc3QKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9z
aXRpb25lZCgpICYmIGxheW91dEJveC5yZXBsYWNlZCgpKTsKIApAQCAtNjYwLDE1ICs2NjAsMTUg
QEAgSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZG
bG93UmVwbGFjZWRIb3Jpem9udGFsR2VvbWUKICAgICBhdXRvJiBmb3JtYXR0aW5nQ29udGV4dCA9
IHRoaXMtPmZvcm1hdHRpbmdDb250ZXh0KCk7CiAgICAgYXV0byYgc3R5bGUgPSBsYXlvdXRCb3gu
c3R5bGUoKTsKICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21l
dHJ5Rm9yQm94KGxheW91dEJveCk7Ci0gICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IHVz
ZWRIb3Jpem9udGFsVmFsdWVzLmNvbnN0cmFpbnRzLmxvZ2ljYWxXaWR0aDsKKyAgICBhdXRvIGNv
bnRhaW5pbmdCbG9ja1dpZHRoID0gaG9yaXpvbnRhbENvbnN0cmFpbnRzLmxvZ2ljYWxXaWR0aDsK
ICAgICBhdXRvIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24gPSBsYXlvdXRCb3guY29udGFpbmluZ0Js
b2NrKCktPnN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpOwogCiAgICAgYXV0byBsZWZ0
ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsTGVmdCgpLCBjb250YWluaW5n
QmxvY2tXaWR0aCk7CiAgICAgYXV0byByaWdodCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5
bGUubG9naWNhbFJpZ2h0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKLSAgICBhdXRvIGNvbXB1
dGVkSG9yaXpvbnRhbE1hcmdpbiA9IEdlb21ldHJ5Ojpjb21wdXRlZEhvcml6b250YWxNYXJnaW4o
bGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcy5jb25zdHJhaW50cyk7CisgICAgYXV0byBj
b21wdXRlZEhvcml6b250YWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWRIb3Jpem9udGFsTWFy
Z2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzKTsKICAgICBPcHRpb25hbDxMYXlv
dXRVbml0PiB1c2VkTWFyZ2luU3RhcnQgPSBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQ7
CiAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZE1hcmdpbkVuZCA9IGNvbXB1dGVkSG9yaXpv
bnRhbE1hcmdpbi5lbmQ7Ci0gICAgYXV0byB3aWR0aCA9IGlubGluZVJlcGxhY2VkV2lkdGhBbmRN
YXJnaW4obGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcywgdmVydGljYWxDb25zdHJhaW50
cykuY29udGVudFdpZHRoOworICAgIGF1dG8gd2lkdGggPSBpbmxpbmVSZXBsYWNlZFdpZHRoQW5k
TWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB1c2VkSG9yaXpvbnRhbFZh
bHVlcykuY29udGVudFdpZHRoOwogICAgIGF1dG8gcGFkZGluZ0xlZnQgPSBib3hHZW9tZXRyeS5w
YWRkaW5nTGVmdCgpLnZhbHVlT3IoMCk7CiAgICAgYXV0byBwYWRkaW5nUmlnaHQgPSBib3hHZW9t
ZXRyeS5wYWRkaW5nUmlnaHQoKS52YWx1ZU9yKDApOwogICAgIGF1dG8gYm9yZGVyTGVmdCA9IGJv
eEdlb21ldHJ5LmJvcmRlckxlZnQoKTsKQEAgLTY3Niw3ICs2NzYsNyBAQCBIb3Jpem9udGFsR2Vv
bWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZEhvcml6
b250YWxHZW9tZQogCiAgICAgaWYgKCFsZWZ0ICYmICFyaWdodCkgewogICAgICAgICAvLyAjMQot
ICAgICAgICBhdXRvIHN0YXRpY0hvcml6b250YWxQb3NpdGlvbiA9IHN0YXRpY0hvcml6b250YWxQ
b3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0aW9uZWQobGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZh
bHVlcy5jb25zdHJhaW50cyk7CisgICAgICAgIGF1dG8gc3RhdGljSG9yaXpvbnRhbFBvc2l0aW9u
ID0gc3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25lZChsYXlvdXRC
b3gsIGhvcml6b250YWxDb25zdHJhaW50cyk7CiAgICAgICAgIGlmIChpc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKQogICAgICAgICAgICAgbGVmdCA9IHN0YXRpY0hvcml6b250YWxQb3NpdGlvbjsKICAg
ICAgICAgZWxzZQpAQCAtNzM1LDcgKzczNSw3IEBAIEhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRhbEdlb21lCiAK
ICAgICAvLyBGb3Igb3V0LW9mLWZsb3cgZWxlbWVudHMgdGhlIGNvbnRhaW5pbmcgYmxvY2sgaXMg
Zm9ybWVkIGJ5IHRoZSBwYWRkaW5nIGVkZ2Ugb2YgdGhlIGFuY2VzdG9yLgogICAgIC8vIEF0IHRo
aXMgcG9pbnQgdGhlIHBvc2l0aW9uZWQgdmFsdWUgaXMgaW4gdGhlIGNvb3JkaW5hdGUgc3lzdGVt
IG9mIHRoZSBwYWRkaW5nIGJveC4gTGV0J3MgY29udmVydCBpdCB0byBib3JkZXIgYm94IGNvb3Jk
aW5hdGUgc3lzdGVtLgotICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrUGFkZGluZ1ZlcnRpY2FsRWRn
ZSA9IHVzZWRIb3Jpem9udGFsVmFsdWVzLmNvbnN0cmFpbnRzLmxvZ2ljYWxMZWZ0OworICAgIGF1
dG8gY29udGFpbmluZ0Jsb2NrUGFkZGluZ1ZlcnRpY2FsRWRnZSA9IGhvcml6b250YWxDb25zdHJh
aW50cy5sb2dpY2FsTGVmdDsKICAgICAqbGVmdCArPSBjb250YWluaW5nQmxvY2tQYWRkaW5nVmVy
dGljYWxFZGdlOwogICAgICpyaWdodCArPSBjb250YWluaW5nQmxvY2tQYWRkaW5nVmVydGljYWxF
ZGdlOwogCkBAIC03NzQsNyArNzc0LDcgQEAgQ29udGVudEhlaWdodEFuZE1hcmdpbiBGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXBsaWNhdGVkQ2FzZXMoY29uc3QgQm94JgogICAgIHJl
dHVybiBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIHsgKmhlaWdodCwgdXNlZFZlcnRpY2FsTWFyZ2lu
IH07CiB9CiAKLUNvbnRlbnRXaWR0aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OmZsb2F0aW5nTm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJv
eCwgY29uc3QgVXNlZEhvcml6b250YWxWYWx1ZXMmIHVzZWRIb3Jpem9udGFsVmFsdWVzKQorQ29u
dGVudFdpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdO
b25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jp
em9udGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgVXNlZEhvcml6
b250YWxWYWx1ZXMmIHVzZWRIb3Jpem9udGFsVmFsdWVzKQogewogICAgIEFTU0VSVChsYXlvdXRC
b3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSAmJiAhbGF5b3V0Qm94LnJlcGxhY2VkKCkpOwogCkBA
IC03ODMsMTQgKzc4MywxNCBAQCBDb250ZW50V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjpmbG9hdGluZ05vblJlcGxhY2VkV2lkdGhBbmRNYQogICAgIC8vIDEuIElm
ICdtYXJnaW4tbGVmdCcsIG9yICdtYXJnaW4tcmlnaHQnIGFyZSBjb21wdXRlZCBhcyAnYXV0bycs
IHRoZWlyIHVzZWQgdmFsdWUgaXMgJzAnLgogICAgIC8vIDIuIElmICd3aWR0aCcgaXMgY29tcHV0
ZWQgYXMgJ2F1dG8nLCB0aGUgdXNlZCB2YWx1ZSBpcyB0aGUgInNocmluay10by1maXQiIHdpZHRo
LgogCi0gICAgYXV0byBjb21wdXRlZEhvcml6b250YWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0
ZWRIb3Jpem9udGFsTWFyZ2luKGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMuY29uc3Ry
YWludHMpOworICAgIGF1dG8gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luID0gR2VvbWV0cnk6OmNv
bXB1dGVkSG9yaXpvbnRhbE1hcmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cyk7
CiAKICAgICAvLyAjMQogICAgIGF1dG8gdXNlZEhvcml6b250YWxsTWFyZ2luID0gVXNlZEhvcml6
b250YWxNYXJnaW4geyBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQudmFsdWVPcigwKSwg
Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVuZC52YWx1ZU9yKDApIH07CiAgICAgLy8gIzIKLSAg
ICBhdXRvIHdpZHRoID0gdXNlZEhvcml6b250YWxWYWx1ZXMud2lkdGggPyB1c2VkSG9yaXpvbnRh
bFZhbHVlcy53aWR0aCA6IGNvbXB1dGVkQ29udGVudFdpZHRoKGxheW91dEJveCwgdXNlZEhvcml6
b250YWxWYWx1ZXMuY29uc3RyYWludHMubG9naWNhbFdpZHRoKTsKKyAgICBhdXRvIHdpZHRoID0g
dXNlZEhvcml6b250YWxWYWx1ZXMud2lkdGggPyB1c2VkSG9yaXpvbnRhbFZhbHVlcy53aWR0aCA6
IGNvbXB1dGVkQ29udGVudFdpZHRoKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLmxv
Z2ljYWxXaWR0aCk7CiAgICAgaWYgKCF3aWR0aCkKLSAgICAgICAgd2lkdGggPSBzaHJpbmtUb0Zp
dFdpZHRoKGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMuY29uc3RyYWludHMubG9naWNh
bFdpZHRoKTsKKyAgICAgICAgd2lkdGggPSBzaHJpbmtUb0ZpdFdpZHRoKGxheW91dEJveCwgaG9y
aXpvbnRhbENvbnN0cmFpbnRzLmxvZ2ljYWxXaWR0aCk7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0o
Rm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW1dpZHRoXVtNYXJnaW5dIC0+IGZs
b2F0aW5nIG5vbi1yZXBsYWNlZCAtPiB3aWR0aCgiIDw8ICp3aWR0aCA8PCAicHgpIG1hcmdpbigi
IDw8IHVzZWRIb3Jpem9udGFsbE1hcmdpbi5zdGFydCA8PCAicHgsICIgPDwgdXNlZEhvcml6b250
YWxsTWFyZ2luLmVuZCA8PCAicHgpIC0+IGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIiki
KTsKICAgICByZXR1cm4gQ29udGVudFdpZHRoQW5kTWFyZ2luIHsgKndpZHRoLCB1c2VkSG9yaXpv
bnRhbGxNYXJnaW4sIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiB9OwpAQCAtODAzLDEwICs4MDMs
MTAgQEAgQ29udGVudEhlaWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
OmZsb2F0aW5nUmVwbGFjZWRIZWlnaHRBbmRNYXIKICAgICAvLyAxMC42LjIgSW5saW5lIHJlcGxh
Y2VkIGVsZW1lbnRzLCBibG9jay1sZXZlbCByZXBsYWNlZCBlbGVtZW50cyBpbiBub3JtYWwgZmxv
dywgJ2lubGluZS1ibG9jaycKICAgICAvLyByZXBsYWNlZCBlbGVtZW50cyBpbiBub3JtYWwgZmxv
dyBhbmQgZmxvYXRpbmcgcmVwbGFjZWQgZWxlbWVudHMKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9y
bWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW0hlaWdodF1bTWFyZ2luXSAtPiBmbG9h
dGluZyByZXBsYWNlZCAtPiByZWRpcmVjdGVkIHRvIGlubGluZSByZXBsYWNlZCIpOwotICAgIHJl
dHVybiBpbmxpbmVSZXBsYWNlZEhlaWdodEFuZE1hcmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxD
b25zdHJhaW50cywgdXNlZFZlcnRpY2FsVmFsdWVzKTsKKyAgICByZXR1cm4gaW5saW5lUmVwbGFj
ZWRIZWlnaHRBbmRNYXJnaW4obGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMsIHsgfSwg
dXNlZFZlcnRpY2FsVmFsdWVzKTsKIH0KIAotQ29udGVudFdpZHRoQW5kTWFyZ2luIEZvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0
IEJveCYgbGF5b3V0Qm94LCBjb25zdCBVc2VkSG9yaXpvbnRhbFZhbHVlcyYgdXNlZEhvcml6b250
YWxWYWx1ZXMpIGNvbnN0CitDb250ZW50V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5OjpmbG9hdGluZ1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlv
dXRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRz
LCBjb25zdCBVc2VkSG9yaXpvbnRhbFZhbHVlcyYgdXNlZEhvcml6b250YWxWYWx1ZXMpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpICYmIGxheW91
dEJveC5yZXBsYWNlZCgpKTsKIApAQCAtODE0LDI5ICs4MTQsMjkgQEAgQ29udGVudFdpZHRoQW5k
TWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdSZXBsYWNlZFdpZHRo
QW5kTWFyZ2kKICAgICAvLwogICAgIC8vIDEuIElmICdtYXJnaW4tbGVmdCcgb3IgJ21hcmdpbi1y
aWdodCcgYXJlIGNvbXB1dGVkIGFzICdhdXRvJywgdGhlaXIgdXNlZCB2YWx1ZSBpcyAnMCcuCiAg
ICAgLy8gMi4gVGhlIHVzZWQgdmFsdWUgb2YgJ3dpZHRoJyBpcyBkZXRlcm1pbmVkIGFzIGZvciBp
bmxpbmUgcmVwbGFjZWQgZWxlbWVudHMuCi0gICAgYXV0byBjb21wdXRlZEhvcml6b250YWxNYXJn
aW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luKGxheW91dEJveCwgdXNlZEhv
cml6b250YWxWYWx1ZXMuY29uc3RyYWludHMpOworICAgIGF1dG8gY29tcHV0ZWRIb3Jpem9udGFs
TWFyZ2luID0gR2VvbWV0cnk6OmNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbihsYXlvdXRCb3gsIGhv
cml6b250YWxDb25zdHJhaW50cyk7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0Nv
bnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW0hlaWdodF1bTWFyZ2luXSAtPiBmbG9hdGluZyByZXBs
YWNlZCAtPiByZWRpcmVjdGVkIHRvIGlubGluZSByZXBsYWNlZCIpOwogICAgIGF1dG8gdXNlZE1h
cmdpbiA9IFVzZWRIb3Jpem9udGFsTWFyZ2luIHsgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0
YXJ0LnZhbHVlT3IoMCksIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVPcigwKSB9
OwotICAgIHJldHVybiBpbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dEJveCwgVXNl
ZEhvcml6b250YWxWYWx1ZXMgeyB1c2VkSG9yaXpvbnRhbFZhbHVlcy5jb25zdHJhaW50cywgdXNl
ZEhvcml6b250YWxWYWx1ZXMud2lkdGgsIHVzZWRNYXJnaW4gfSwgeyB9KTsKKyAgICByZXR1cm4g
aW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJh
aW50cywgeyB1c2VkSG9yaXpvbnRhbFZhbHVlcy53aWR0aCwgdXNlZE1hcmdpbiB9KTsKIH0KIAot
VmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1Zl
cnRpY2FsR2VvbWV0cnkoY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6b250YWxDb25z
dHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBVc2VkVmVydGljYWxWYWx1ZXMm
IHVzZWRWZXJ0aWNhbFZhbHVlcykgY29uc3QKK1ZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IEJveCYgbGF5
b3V0Qm94LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50
cywgY29uc3QgVmVydGljYWxDb25zdHJhaW50cyYgdmVydGljYWxDb25zdHJhaW50cywgY29uc3Qg
VXNlZFZlcnRpY2FsVmFsdWVzJiB1c2VkVmVydGljYWxWYWx1ZXMpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSk7CiAKICAgICBpZiAoIWxheW91
dEJveC5yZXBsYWNlZCgpKQotICAgICAgICByZXR1cm4gb3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0
aWNhbEdlb21ldHJ5KGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB1c2VkVmVydGlj
YWxWYWx1ZXMpOwotICAgIHJldHVybiBvdXRPZkZsb3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnko
bGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMsIHVzZWRWZXJ0aWNhbFZhbHVlcyk7Cisg
ICAgICAgIHJldHVybiBvdXRPZkZsb3dOb25SZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkobGF5b3V0
Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMsIHZlcnRpY2FsQ29uc3RyYWludHMsIHVzZWRWZXJ0
aWNhbFZhbHVlcyk7CisgICAgcmV0dXJuIG91dE9mRmxvd1JlcGxhY2VkVmVydGljYWxHZW9tZXRy
eShsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cywgdmVydGljYWxDb25zdHJhaW50cywg
dXNlZFZlcnRpY2FsVmFsdWVzKTsKIH0KIAotSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93SG9yaXpvbnRhbEdlb21ldHJ5KGNvbnN0IEJveCYg
bGF5b3V0Qm94LCBjb25zdCBVc2VkSG9yaXpvbnRhbFZhbHVlcyYgdXNlZEhvcml6b250YWxWYWx1
ZXMsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMmIHZlcnRpY2FsQ29uc3RyYWludHMpCitIb3Jp
em9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dIb3Jp
em9udGFsR2VvbWV0cnkoY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6b250YWxDb25z
dHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBVc2VkSG9yaXpvbnRhbFZhbHVl
cyYgdXNlZEhvcml6b250YWxWYWx1ZXMpCiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc091dE9m
Rmxvd1Bvc2l0aW9uZWQoKSk7CiAKICAgICBpZiAoIWxheW91dEJveC5yZXBsYWNlZCgpKQotICAg
ICAgICByZXR1cm4gb3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jpem9udGFsR2VvbWV0cnkobGF5b3V0
Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcyk7Ci0gICAgcmV0dXJuIG91dE9mRmxvd1JlcGxhY2Vk
SG9yaXpvbnRhbEdlb21ldHJ5KGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMsIHZlcnRp
Y2FsQ29uc3RyYWludHMpOworICAgICAgICByZXR1cm4gb3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jp
em9udGFsR2VvbWV0cnkobGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMsIHVzZWRIb3Jp
em9udGFsVmFsdWVzKTsKKyAgICByZXR1cm4gb3V0T2ZGbG93UmVwbGFjZWRIb3Jpem9udGFsR2Vv
bWV0cnkobGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMsIHVzZWRIb3Jpem9udGFsVmFs
dWVzKTsKIH0KIAogQ29udGVudEhlaWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OmZsb2F0aW5nSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25z
dCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgVXNl
ZFZlcnRpY2FsVmFsdWVzJiB1c2VkVmVydGljYWxWYWx1ZXMpIGNvbnN0CkBAIC04NDgsMTYgKzg0
OCwxNiBAQCBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6ZmxvYXRpbmdIZWlnaHRBbmRNYXJnaW4oY29ucwogICAgIHJldHVybiBmbG9hdGluZ1JlcGxh
Y2VkSGVpZ2h0QW5kTWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB1c2Vk
VmVydGljYWxWYWx1ZXMpOwogfQogCi1Db250ZW50V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ1dpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0
Qm94LCBjb25zdCBVc2VkSG9yaXpvbnRhbFZhbHVlcyYgdXNlZEhvcml6b250YWxWYWx1ZXMpCitD
b250ZW50V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGlu
Z1dpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem9udGFsQ29u
c3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgVXNlZEhvcml6b250YWxWYWx1
ZXMmIHVzZWRIb3Jpem9udGFsVmFsdWVzKQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNGbG9h
dGluZ1Bvc2l0aW9uZWQoKSk7CiAKICAgICBpZiAoIWxheW91dEJveC5yZXBsYWNlZCgpKQotICAg
ICAgICByZXR1cm4gZmxvYXRpbmdOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dEJveCwg
dXNlZEhvcml6b250YWxWYWx1ZXMpOwotICAgIHJldHVybiBmbG9hdGluZ1JlcGxhY2VkV2lkdGhB
bmRNYXJnaW4obGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcyk7CisgICAgICAgIHJldHVy
biBmbG9hdGluZ05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0Qm94LCBob3Jpem9udGFs
Q29uc3RyYWludHMsIHVzZWRIb3Jpem9udGFsVmFsdWVzKTsKKyAgICByZXR1cm4gZmxvYXRpbmdS
ZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB1
c2VkSG9yaXpvbnRhbFZhbHVlcyk7CiB9CiAKLUNvbnRlbnRIZWlnaHRBbmRNYXJnaW4gRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNlZEhlaWdodEFuZE1hcmdpbihjb25z
dCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFs
Q29uc3RyYWludHMsIGNvbnN0IFVzZWRWZXJ0aWNhbFZhbHVlcyYgdXNlZFZlcnRpY2FsVmFsdWVz
KSBjb25zdAorQ29udGVudEhlaWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OmlubGluZVJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBj
b25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgT3B0aW9u
YWw8VmVydGljYWxDb25zdHJhaW50cz4gdmVydGljYWxDb25zdHJhaW50cywgY29uc3QgVXNlZFZl
cnRpY2FsVmFsdWVzJiB1c2VkVmVydGljYWxWYWx1ZXMpIGNvbnN0CiB7CiAgICAgQVNTRVJUKChs
YXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgfHwgbGF5b3V0Qm94LmlzRmxvYXRpbmdQ
b3NpdGlvbmVkKCkgfHwgbGF5b3V0Qm94LmlzSW5GbG93KCkpICYmIGxheW91dEJveC5yZXBsYWNl
ZCgpKTsKIApAQCAtODc4LDcgKzg3OCw3IEBAIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNlZEhlaWdodEFuZE1hcmdpCiAgICAg
YXV0byYgc3R5bGUgPSBsYXlvdXRCb3guc3R5bGUoKTsKICAgICBhdXRvIHJlcGxhY2VkID0gbGF5
b3V0Qm94LnJlcGxhY2VkKCk7CiAKLSAgICBhdXRvIGhlaWdodCA9IHVzZWRWZXJ0aWNhbFZhbHVl
cy5oZWlnaHQgPyB1c2VkVmVydGljYWxWYWx1ZXMuaGVpZ2h0LnZhbHVlKCkgOiBjb21wdXRlZENv
bnRlbnRIZWlnaHQobGF5b3V0Qm94LCB1c2VkVmVydGljYWxWYWx1ZXMuY29uc3RyYWludHMubG9n
aWNhbEhlaWdodCk7CisgICAgYXV0byBoZWlnaHQgPSB1c2VkVmVydGljYWxWYWx1ZXMuaGVpZ2h0
ID8gdXNlZFZlcnRpY2FsVmFsdWVzLmhlaWdodC52YWx1ZSgpIDogY29tcHV0ZWRDb250ZW50SGVp
Z2h0KGxheW91dEJveCwgdmVydGljYWxDb25zdHJhaW50cyA/IHZlcnRpY2FsQ29uc3RyYWludHMt
PmxvZ2ljYWxIZWlnaHQgOiBXVEY6Om51bGxvcHQpOwogICAgIGF1dG8gaGVpZ2h0SXNBdXRvID0g
IXVzZWRWZXJ0aWNhbFZhbHVlcy5oZWlnaHQgJiYgaXNIZWlnaHRBdXRvKGxheW91dEJveCk7CiAg
ICAgYXV0byB3aWR0aElzQXV0byA9IHN0eWxlLmxvZ2ljYWxXaWR0aCgpLmlzQXV0bygpOwogCkBA
IC05MDMsNyArOTAzLDcgQEAgQ29udGVudEhlaWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2kKICAgICByZXR1cm4geyAq
aGVpZ2h0LCB1c2VkVmVydGljYWxNYXJnaW4gfTsKIH0KIAotQ29udGVudFdpZHRoQW5kTWFyZ2lu
IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdp
bihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgVXNlZEhvcml6b250YWxWYWx1ZXMmIHVzZWRI
b3Jpem9udGFsVmFsdWVzLCBjb25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJiB2ZXJ0aWNhbENvbnN0
cmFpbnRzKSBjb25zdAorQ29udGVudFdpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJv
eCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNv
bnN0IFVzZWRIb3Jpem9udGFsVmFsdWVzJiB1c2VkSG9yaXpvbnRhbFZhbHVlcykgY29uc3QKIHsK
ICAgICBBU1NFUlQoKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRC
b3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRCb3guaXNJbkZsb3coKSkgJiYgbGF5
b3V0Qm94LnJlcGxhY2VkKCkpOwogCkBAIC05MjYsNyArOTI2LDcgQEAgQ29udGVudFdpZHRoQW5k
TWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRXaWR0aEFu
ZE1hcmdpbigKICAgICAvLyA1LiBPdGhlcndpc2UsIGlmICd3aWR0aCcgaGFzIGEgY29tcHV0ZWQg
dmFsdWUgb2YgJ2F1dG8nLCBidXQgbm9uZSBvZiB0aGUgY29uZGl0aW9ucyBhYm92ZSBhcmUgbWV0
LCB0aGVuIHRoZSB1c2VkIHZhbHVlIG9mICd3aWR0aCcgYmVjb21lcyAzMDBweC4KICAgICAvLyAg
ICBJZiAzMDBweCBpcyB0b28gd2lkZSB0byBmaXQgdGhlIGRldmljZSwgVUFzIHNob3VsZCB1c2Ug
dGhlIHdpZHRoIG9mIHRoZSBsYXJnZXN0IHJlY3RhbmdsZSB0aGF0IGhhcyBhIDI6MSByYXRpbyBh
bmQgZml0cyB0aGUgZGV2aWNlIGluc3RlYWQuCiAKLSAgICBhdXRvIGNvbXB1dGVkSG9yaXpvbnRh
bE1hcmdpbiA9IEdlb21ldHJ5Ojpjb21wdXRlZEhvcml6b250YWxNYXJnaW4obGF5b3V0Qm94LCB1
c2VkSG9yaXpvbnRhbFZhbHVlcy5jb25zdHJhaW50cyk7CisgICAgYXV0byBjb21wdXRlZEhvcml6
b250YWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luKGxheW91dEJv
eCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzKTsKIAogICAgIGF1dG8gdXNlZE1hcmdpblN0YXJ0ID0g
WyZdIHsKICAgICAgICAgaWYgKHVzZWRIb3Jpem9udGFsVmFsdWVzLm1hcmdpbikKQEAgLTk0Myw5
ICs5NDMsOSBAQCBDb250ZW50V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjppbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKAogICAgIGF1dG8gcmVwbGFjZWQgPSBs
YXlvdXRCb3gucmVwbGFjZWQoKTsKICAgICBBU1NFUlQocmVwbGFjZWQpOwogCi0gICAgYXV0byB3
aWR0aCA9IHVzZWRIb3Jpem9udGFsVmFsdWVzLndpZHRoID8gdXNlZEhvcml6b250YWxWYWx1ZXMu
d2lkdGggOiBjb21wdXRlZENvbnRlbnRXaWR0aChsYXlvdXRCb3gsIHVzZWRIb3Jpem9udGFsVmFs
dWVzLmNvbnN0cmFpbnRzLmxvZ2ljYWxXaWR0aCk7CisgICAgYXV0byB3aWR0aCA9IHVzZWRIb3Jp
em9udGFsVmFsdWVzLndpZHRoID8gdXNlZEhvcml6b250YWxWYWx1ZXMud2lkdGggOiBjb21wdXRl
ZENvbnRlbnRXaWR0aChsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cy5sb2dpY2FsV2lk
dGgpOwogICAgIGF1dG8gaGVpZ2h0SXNBdXRvID0gaXNIZWlnaHRBdXRvKGxheW91dEJveCk7Ci0g
ICAgYXV0byBoZWlnaHQgPSBjb21wdXRlZENvbnRlbnRIZWlnaHQobGF5b3V0Qm94LCB2ZXJ0aWNh
bENvbnN0cmFpbnRzLmxvZ2ljYWxIZWlnaHQpOworICAgIGF1dG8gaGVpZ2h0ID0gY29tcHV0ZWRD
b250ZW50SGVpZ2h0KGxheW91dEJveCk7CiAKICAgICBpZiAoIXdpZHRoICYmIGhlaWdodElzQXV0
byAmJiByZXBsYWNlZC0+aGFzSW50cmluc2ljV2lkdGgoKSkgewogICAgICAgICAvLyAjMQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFVuaXRzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvTGF5b3V0VW5pdHMuaAppbmRleCA1ZTVlMTAzYWQ2YjJlNWE2MjAyZjE5NWVi
ZWI5OGZhZWM2OWYyZGRlLi4zODkxYjQ1NmViOWUwY2ZjZWJhYmVkODJkMWJmNjA3NzBiYTRkYjk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0VW5pdHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0VW5pdHMuaApAQCAtMTYyLDMxICsxNjIsMTIgQEAg
c3RydWN0IFZlcnRpY2FsQ29uc3RyYWludHMgewogfTsKIAogc3RydWN0IFVzZWRIb3Jpem9udGFs
VmFsdWVzIHsKLSAgICBleHBsaWNpdCBVc2VkSG9yaXpvbnRhbFZhbHVlcyhIb3Jpem9udGFsQ29u
c3RyYWludHMgY29uc3RyYWludHMpCi0gICAgICAgIDogY29uc3RyYWludHMoY29uc3RyYWludHMp
Ci0gICAgewotICAgIH0KLQotICAgIGV4cGxpY2l0IFVzZWRIb3Jpem9udGFsVmFsdWVzKEhvcml6
b250YWxDb25zdHJhaW50cyBjb25zdHJhaW50cywgT3B0aW9uYWw8TGF5b3V0VW5pdD4gd2lkdGgs
IE9wdGlvbmFsPFVzZWRIb3Jpem9udGFsTWFyZ2luPiBtYXJnaW4pCi0gICAgICAgIDogY29uc3Ry
YWludHMoY29uc3RyYWludHMpCi0gICAgICAgICwgd2lkdGgod2lkdGgpCi0gICAgICAgICwgbWFy
Z2luKG1hcmdpbikKLSAgICB7Ci0gICAgfQotCi0gICAgSG9yaXpvbnRhbENvbnN0cmFpbnRzIGNv
bnN0cmFpbnRzOwogICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IHdpZHRoOwogICAgIE9wdGlvbmFs
PFVzZWRIb3Jpem9udGFsTWFyZ2luPiBtYXJnaW47CiB9OwogCiBzdHJ1Y3QgVXNlZFZlcnRpY2Fs
VmFsdWVzIHsKLSAgICBleHBsaWNpdCBVc2VkVmVydGljYWxWYWx1ZXMoVmVydGljYWxDb25zdHJh
aW50cyBjb25zdHJhaW50cywgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0ID0geyB9KQotICAg
ICAgICA6IGNvbnN0cmFpbnRzKGNvbnN0cmFpbnRzKQotICAgICAgICAsIGhlaWdodChoZWlnaHQp
Ci0gICAgewotICAgIH0KLQotICAgIFZlcnRpY2FsQ29uc3RyYWludHMgY29uc3RyYWludHM7Cisg
ICAgLy8gQ29uc2lkZXIgY29sbGFwc2luZyBpdC4KICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBo
ZWlnaHQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3Jt
YXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCA5NzgyMDc5
ODYwZDIzZGE5ZjY5YTk5MTU4NmViMDNhMTU3NjY0N2E1Li5lOWRjZDk0NmRhOTRiNjdjZjNhNGYw
ODU4N2ExMjk3NWQ5OTBmMmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxv
Y2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAg
LTEzOCwxMCArMTM4LDkgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZs
b3dDb250ZW50KEludmFsaWRhdGlvblN0YXRlJiBpbnZhbGlkYXRpb24KICAgICAgICAgICAgIC8v
IEFsbCBpbmZsb3cgZGVzY2VuZGFudHMgKGlmIHRoZXJlIGFyZSBhbnkpIGFyZSBsYWlkIG91dCBi
eSBub3cuIExldCdzIGNvbXB1dGUgdGhlIGJveCdzIGhlaWdodC4KICAgICAgICAgICAgIGF1dG8m
IGxheW91dEJveCA9ICpsYXlvdXRRdWV1ZS50YWtlTGFzdCgpOwogICAgICAgICAgICAgYXV0byBo
b3Jpem9udGFsQ29uc3RyYWludHMgPSBob3Jpem9udGFsQ29uc3RyYWludHNGb3JMYXlvdXRCb3go
bGF5b3V0Qm94KTsKLSAgICAgICAgICAgIGF1dG8gdmVydGljYWxDb25zdHJhaW50cyA9IHZlcnRp
Y2FsQ29uc3RyYWludHNGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKICAgICAgICAgICAgIC8vIEZv
cm1hdHRpbmcgcm9vdCBib3hlcyBhcmUgc3BlY2lhbC1jYXNlZCBhbmQgdGhleSBkb24ndCBjb21l
IGhlcmUuCiAgICAgICAgICAgICBBU1NFUlQoIWxheW91dEJveC5lc3RhYmxpc2hlc0Zvcm1hdHRp
bmdDb250ZXh0KCkpOwotICAgICAgICAgICAgY29tcHV0ZUhlaWdodEFuZE1hcmdpbihsYXlvdXRC
b3gsIGhvcml6b250YWxDb25zdHJhaW50cywgdmVydGljYWxDb25zdHJhaW50cyk7CisgICAgICAg
ICAgICBjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFp
bnRzKTsKICAgICAgICAgICAgIC8vIE1vdmUgaW4tZmxvdyBwb3NpdGlvbmVkIGNoaWxkcmVuIHRv
IHRoZWlyIGZpbmFsIHBvc2l0aW9uLgogICAgICAgICAgICAgcGxhY2VJbkZsb3dQb3NpdGlvbmVk
Q2hpbGRyZW4obGF5b3V0Qm94KTsKICAgICAgICAgICAgIGlmIChhcHBlbmROZXh0VG9MYXlvdXRR
dWV1ZShsYXlvdXRCb3gsIExheW91dERpcmVjdGlvbjo6U2libGluZykpCkBAIC0yMDksMTMgKzIw
OCwxMyBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEZvcm1hdHRpbmdDb250
ZXh0Um9vdChjb25zdCBCb3gmIGxheW91dEJveCwgRgogICAgICAgICBhdXRvIGZvcm1hdHRpbmdD
b250ZXh0ID0gTGF5b3V0Q29udGV4dDo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQocm9vdENvbnRh
aW5lciwgbGF5b3V0U3RhdGUoKSk7CiAgICAgICAgIGZvcm1hdHRpbmdDb250ZXh0LT5sYXlvdXRJ
bkZsb3dDb250ZW50KGludmFsaWRhdGlvblN0YXRlLCBHZW9tZXRyeTo6aG9yaXpvbnRhbENvbnN0
cmFpbnRzRm9ySW5GbG93KHJvb3RDb250YWluZXJEaXNwbGF5Qm94KSwgR2VvbWV0cnk6OnZlcnRp
Y2FsQ29uc3RyYWludHNGb3JJbkZsb3cocm9vdENvbnRhaW5lckRpc3BsYXlCb3gpKTsKICAgICAg
ICAgLy8gQ29tZSBiYWNrIGFuZCBmaW5hbGl6ZSB0aGUgcm9vdCdzIGdlb21ldHJ5LgotICAgICAg
ICBjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKHJvb3RDb250YWluZXIsIGFkanVzdGVkSG9yaXpvbnRh
bENvbnN0cmFpbnRzLCB2ZXJ0aWNhbENvbnN0cmFpbnRzKTsKKyAgICAgICAgY29tcHV0ZUhlaWdo
dEFuZE1hcmdpbihyb290Q29udGFpbmVyLCBhZGp1c3RlZEhvcml6b250YWxDb25zdHJhaW50cyk7
CiAgICAgICAgIC8vIE5vdyB0aGF0IHdlIGNvbXB1dGVkIHRoZSByb290J3MgaGVpZ2h0LCB3ZSBj
YW4gZ28gYmFjayBhbmQgbGF5b3V0IHRoZSBvdXQtb2YtZmxvdyBjb250ZW50LgogICAgICAgICBh
dXRvIGhvcml6b250YWxDb25zdHJhaW50c0Zvck91dE9mRmxvdyA9ICBHZW9tZXRyeTo6aG9yaXpv
bnRhbENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93KHJvb3RDb250YWluZXJEaXNwbGF5Qm94KTsKICAg
ICAgICAgYXV0byB2ZXJ0aWNhbENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93ID0gR2VvbWV0cnk6OnZl
cnRpY2FsQ29uc3RyYWludHNGb3JPdXRPZkZsb3cocm9vdENvbnRhaW5lckRpc3BsYXlCb3gpOwog
ICAgICAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0T3V0T2ZGbG93Q29udGVudChpbnZhbGlk
YXRpb25TdGF0ZSwgaG9yaXpvbnRhbENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93LCB2ZXJ0aWNhbENv
bnN0cmFpbnRzRm9yT3V0T2ZGbG93KTsKICAgICB9IGVsc2UKLSAgICAgICAgY29tcHV0ZUhlaWdo
dEFuZE1hcmdpbihsYXlvdXRCb3gsIGFkanVzdGVkSG9yaXpvbnRhbENvbnN0cmFpbnRzLCB2ZXJ0
aWNhbENvbnN0cmFpbnRzKTsKKyAgICAgICAgY29tcHV0ZUhlaWdodEFuZE1hcmdpbihsYXlvdXRC
b3gsIGFkanVzdGVkSG9yaXpvbnRhbENvbnN0cmFpbnRzKTsKICAgICAvLyBGbG9hdCByZWxhdGVk
IGZpbmFsIHBvc2l0aW9uaW5nLgogICAgIGlmIChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9u
ZWQoKSkgewogICAgICAgICBjb21wdXRlRmxvYXRpbmdQb3NpdGlvbihmbG9hdGluZ0NvbnRleHQs
IGxheW91dEJveCk7CkBAIC0yNjMsOCArMjYyLDggQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0Ojpjb21wdXRlU3RhdGljUG9zaXRpb24oY29uc3QgRmxvYXRpbmdDb250ZXh0JiBmbG9hdGkK
IAogdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRXN0aW1hdGVkVmVydGljYWxQ
b3NpdGlvbihjb25zdCBCb3gmIGxheW91dEJveCkKIHsKLSAgICBhdXRvIHVzZWRIb3Jpem9udGFs
VmFsdWVzID0gVXNlZEhvcml6b250YWxWYWx1ZXMgeyBHZW9tZXRyeTo6aG9yaXpvbnRhbENvbnN0
cmFpbnRzRm9ySW5GbG93KGdlb21ldHJ5Rm9yQm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2Nr
KCkpKSB9OwotICAgIGF1dG8gY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbiA9IGdlb21ldHJ5KCkuY29t
cHV0ZWRWZXJ0aWNhbE1hcmdpbihsYXlvdXRCb3gsIHVzZWRIb3Jpem9udGFsVmFsdWVzLmNvbnN0
cmFpbnRzKTsKKyAgICBhdXRvIGhvcml6b250YWxDb25zdHJhaW50cyA9IEdlb21ldHJ5Ojpob3Jp
em9udGFsQ29uc3RyYWludHNGb3JJbkZsb3coZ2VvbWV0cnlGb3JCb3goKmxheW91dEJveC5jb250
YWluaW5nQmxvY2soKSkpOworICAgIGF1dG8gY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbiA9IGdlb21l
dHJ5KCkuY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJh
aW50cyk7CiAgICAgYXV0byB1c2VkTm9uQ29sbGFwc2VkTWFyZ2luID0gVXNlZFZlcnRpY2FsTWFy
Z2luOjpOb25Db2xsYXBzZWRWYWx1ZXMgeyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52
YWx1ZU9yKDApLCBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlT3IoMCkgfTsKICAg
ICBhdXRvIGVzdGltYXRlZE1hcmdpbkJlZm9yZSA9IG1hcmdpbkNvbGxhcHNlKCkuZXN0aW1hdGVk
TWFyZ2luQmVmb3JlKGxheW91dEJveCwgdXNlZE5vbkNvbGxhcHNlZE1hcmdpbik7CiAgICAgc2V0
RXN0aW1hdGVkTWFyZ2luQmVmb3JlKGxheW91dEJveCwgZXN0aW1hdGVkTWFyZ2luQmVmb3JlKTsK
QEAgLTM4MiwxMiArMzgxLDExIEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0
ZVBvc2l0aW9uVG9Bdm9pZEZsb2F0cyhjb25zdCBGbG9hdGluZ0NvbnRleHQmCiB2b2lkIEJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91
dEJveCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMp
CiB7CiAgICAgYXV0byBjb21wdXRlID0gWyZdKE9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRXaWR0
aCkgLT4gQ29udGVudFdpZHRoQW5kTWFyZ2luIHsKLSAgICAgICAgYXV0byB1c2VkVmFsdWVzID0g
VXNlZEhvcml6b250YWxWYWx1ZXMgeyBob3Jpem9udGFsQ29uc3RyYWludHMsIHVzZWRXaWR0aCwg
eyB9IH07CiAgICAgICAgIGlmIChsYXlvdXRCb3guaXNJbkZsb3coKSkKLSAgICAgICAgICAgIHJl
dHVybiBnZW9tZXRyeSgpLmluRmxvd1dpZHRoQW5kTWFyZ2luKGxheW91dEJveCwgdXNlZFZhbHVl
cyk7CisgICAgICAgICAgICByZXR1cm4gZ2VvbWV0cnkoKS5pbkZsb3dXaWR0aEFuZE1hcmdpbihs
YXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cywgeyB1c2VkV2lkdGggfSk7CiAKICAgICAg
ICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQotICAgICAgICAgICAgcmV0
dXJuIGdlb21ldHJ5KCkuZmxvYXRpbmdXaWR0aEFuZE1hcmdpbihsYXlvdXRCb3gsIHVzZWRWYWx1
ZXMpOworICAgICAgICAgICAgcmV0dXJuIGdlb21ldHJ5KCkuZmxvYXRpbmdXaWR0aEFuZE1hcmdp
bihsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cywgeyB1c2VkV2lkdGggfSk7CiAKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiB7IH07CkBAIC00MTMs
MTUgKzQxMSwxNCBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVXaWR0aEFu
ZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSAogICAgIGRpc3BsYXlCb3guc2V0
SG9yaXpvbnRhbENvbXB1dGVkTWFyZ2luKGNvbnRlbnRXaWR0aEFuZE1hcmdpbi5jb21wdXRlZE1h
cmdpbik7CiB9CiAKLXZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdodEFu
ZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRz
JiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMmIHZlcnRp
Y2FsQ29uc3RyYWludHMpCit2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWln
aHRBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJh
aW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzKQogewogICAgIGF1dG8gY29tcHV0ZSA9IFsmXShP
cHRpb25hbDxMYXlvdXRVbml0PiB1c2VkSGVpZ2h0KSAtPiBDb250ZW50SGVpZ2h0QW5kTWFyZ2lu
IHsKLSAgICAgICAgYXV0byB1c2VkVmVydGljYWxWYWx1ZXMgPSBVc2VkVmVydGljYWxWYWx1ZXMg
eyB2ZXJ0aWNhbENvbnN0cmFpbnRzLCB1c2VkSGVpZ2h0IH07CiAgICAgICAgIGlmIChsYXlvdXRC
b3guaXNJbkZsb3coKSkKLSAgICAgICAgICAgIHJldHVybiBnZW9tZXRyeSgpLmluRmxvd0hlaWdo
dEFuZE1hcmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cywgdXNlZFZlcnRpY2Fs
VmFsdWVzKTsKKyAgICAgICAgICAgIHJldHVybiBnZW9tZXRyeSgpLmluRmxvd0hlaWdodEFuZE1h
cmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cywgeyB1c2VkSGVpZ2h0IH0pOwog
CiAgICAgICAgIGlmIChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKLSAgICAgICAg
ICAgIHJldHVybiBnZW9tZXRyeSgpLmZsb2F0aW5nSGVpZ2h0QW5kTWFyZ2luKGxheW91dEJveCwg
aG9yaXpvbnRhbENvbnN0cmFpbnRzLCB1c2VkVmVydGljYWxWYWx1ZXMpOworICAgICAgICAgICAg
cmV0dXJuIGdlb21ldHJ5KCkuZmxvYXRpbmdIZWlnaHRBbmRNYXJnaW4obGF5b3V0Qm94LCBob3Jp
em9udGFsQ29uc3RyYWludHMsIHsgdXNlZEhlaWdodCB9KTsKIAogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0
LmgKaW5kZXggOWFiOGRkYWY1NTYxNGRhOWZhNmU2NDY3MTQ4ZWM3MTk5NjExYjQ5Ni4uZDYyMzlj
OTQ5NzYyNTQ3OTQzMTIxY2JmZTY4MmJjY2JiNzdhOGY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdD
b250ZXh0LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYWNlSW5GbG93
UG9zaXRpb25lZENoaWxkcmVuKGNvbnN0IEJveCYsIE9wdGlvbmFsPEhvcml6b250YWxDb25zdHJh
aW50cz4gPSBXVEY6Om51bGxvcHQpOwogCiAgICAgdm9pZCBjb21wdXRlV2lkdGhBbmRNYXJnaW4o
Y29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJik7Ci0gICAgdm9pZCBjb21w
dXRlSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50
cyYsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMmKTsKKyAgICB2b2lkIGNvbXB1dGVIZWlnaHRB
bmRNYXJnaW4oY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJik7CiAKICAg
ICB2b2lkIGNvbXB1dGVTdGF0aWNIb3Jpem9udGFsUG9zaXRpb24oY29uc3QgQm94JiwgY29uc3Qg
SG9yaXpvbnRhbENvbnN0cmFpbnRzJik7CiAgICAgdm9pZCBjb21wdXRlU3RhdGljVmVydGljYWxQ
b3NpdGlvbihjb25zdCBGbG9hdGluZ0NvbnRleHQmLCBjb25zdCBCb3gmLCBjb25zdCBWZXJ0aWNh
bENvbnN0cmFpbnRzJik7CkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgR2Vv
bWV0cnkgOiBwdWJsaWMgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5IHsKICAgICBwdWJsaWM6
CiAgICAgICAgIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gaW5GbG93SGVpZ2h0QW5kTWFyZ2luKGNv
bnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYsIGNvbnN0IFVzZWRWZXJ0aWNh
bFZhbHVlcyYpOwotICAgICAgICBDb250ZW50V2lkdGhBbmRNYXJnaW4gaW5GbG93V2lkdGhBbmRN
YXJnaW4oY29uc3QgQm94JiwgY29uc3QgVXNlZEhvcml6b250YWxWYWx1ZXMmKTsKKyAgICAgICAg
Q29udGVudFdpZHRoQW5kTWFyZ2luIGluRmxvd1dpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYsIGNv
bnN0IEhvcml6b250YWxDb25zdHJhaW50cyYsIGNvbnN0IFVzZWRIb3Jpem9udGFsVmFsdWVzJik7
CiAKICAgICAgICAgUG9pbnQgc3RhdGljUG9zaXRpb24oY29uc3QgQm94JiwgY29uc3QgSG9yaXpv
bnRhbENvbnN0cmFpbnRzJiwgY29uc3QgVmVydGljYWxDb25zdHJhaW50cyYpIGNvbnN0OwogICAg
ICAgICBMYXlvdXRVbml0IHN0YXRpY1ZlcnRpY2FsUG9zaXRpb24oY29uc3QgQm94JiwgY29uc3Qg
VmVydGljYWxDb25zdHJhaW50cyYpIGNvbnN0OwpAQCAtODgsOCArODgsOCBAQCBwcml2YXRlOgog
ICAgICAgICBHZW9tZXRyeShjb25zdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Jik7CiAKICAgICAg
ICAgQ29udGVudEhlaWdodEFuZE1hcmdpbiBpbkZsb3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmdp
bihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25zdCBVc2VkVmVy
dGljYWxWYWx1ZXMmKTsKLSAgICAgICAgQ29udGVudFdpZHRoQW5kTWFyZ2luIGluRmxvd05vblJl
cGxhY2VkV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiwgY29uc3QgVXNlZEhvcml6b250YWxWYWx1
ZXMmKSBjb25zdDsKLSAgICAgICAgQ29udGVudFdpZHRoQW5kTWFyZ2luIGluRmxvd1JlcGxhY2Vk
V2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiwgY29uc3QgVXNlZEhvcml6b250YWxWYWx1ZXMmKSBj
b25zdDsKKyAgICAgICAgQ29udGVudFdpZHRoQW5kTWFyZ2luIGluRmxvd05vblJlcGxhY2VkV2lk
dGhBbmRNYXJnaW4oY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29u
c3QgVXNlZEhvcml6b250YWxWYWx1ZXMmKSBjb25zdDsKKyAgICAgICAgQ29udGVudFdpZHRoQW5k
TWFyZ2luIGluRmxvd1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiwgY29uc3QgSG9y
aXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgVXNlZEhvcml6b250YWxWYWx1ZXMmKSBjb25zdDsK
ICAgICAgICAgUG9pbnQgc3RhdGljUG9zaXRpb25Gb3JPdXRPZkZsb3dQb3NpdGlvbmVkKGNvbnN0
IEJveCYpIGNvbnN0OwogCiAgICAgICAgIGNvbnN0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQmIGZv
cm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8QmxvY2tGb3JtYXR0aW5n
Q29udGV4dD4oRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpmb3JtYXR0aW5nQ29udGV4dCgp
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9C
bG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4
IDY3ZGU4MzNjYmUyM2ZlYWQyYjVkYzAzY2FiOWM5YzE4NTBiOWI4MzUuLjc0MjhhOWE3NTdkNmJi
NDRkYmMzZGY3NGFkYTA4ZDA3NDllOTJkYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTEwMywxMSArMTAzLDExIEBAIENvbnRlbnRIZWlnaHRB
bmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxh
Y2VkSGVpZ2h0CiAgICAgLy8gMTAuNi43ICdBdXRvJyBoZWlnaHRzIGZvciBibG9jayBmb3JtYXR0
aW5nIGNvbnRleHQgcm9vdHMKICAgICBhdXRvIGlzQXV0b0hlaWdodCA9ICF1c2VkVmVydGljYWxW
YWx1ZXMuaGVpZ2h0ICYmICFjb21wdXRlZENvbnRlbnRIZWlnaHQobGF5b3V0Qm94KTsKICAgICBp
ZiAoaXNBdXRvSGVpZ2h0ICYmIGxheW91dEJveC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0Nv
bnRleHQoKSkKLSAgICAgICAgcmV0dXJuIGNvbXB1dGUoIFVzZWRWZXJ0aWNhbFZhbHVlcyB7IHVz
ZWRWZXJ0aWNhbFZhbHVlcy5jb25zdHJhaW50cywgY29udGVudEhlaWdodEZvckZvcm1hdHRpbmdD
b250ZXh0Um9vdChsYXlvdXRCb3gpIH0pOworICAgICAgICByZXR1cm4gY29tcHV0ZSggVXNlZFZl
cnRpY2FsVmFsdWVzIHsgY29udGVudEhlaWdodEZvckZvcm1hdHRpbmdDb250ZXh0Um9vdChsYXlv
dXRCb3gpIH0pOwogICAgIHJldHVybiBjb21wdXRlKHVzZWRWZXJ0aWNhbFZhbHVlcyk7CiB9CiAK
LUNvbnRlbnRXaWR0aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
aW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgY29u
c3QgVXNlZEhvcml6b250YWxWYWx1ZXMmIHVzZWRIb3Jpem9udGFsVmFsdWVzKSBjb25zdAorQ29u
dGVudFdpZHRoQW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZs
b3dOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBI
b3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgVXNlZEhv
cml6b250YWxWYWx1ZXMmIHVzZWRIb3Jpem9udGFsVmFsdWVzKSBjb25zdAogewogICAgIEFTU0VS
VChsYXlvdXRCb3guaXNJbkZsb3coKSk7CiAKQEAgLTEzNCwxMSArMTM0LDExIEBAIENvbnRlbnRX
aWR0aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9u
UmVwbGFjZWRXaWR0aEFuCiAgICAgICAgIC8vIDUuIElmIGJvdGggJ21hcmdpbi1sZWZ0JyBhbmQg
J21hcmdpbi1yaWdodCcgYXJlICdhdXRvJywgdGhlaXIgdXNlZCB2YWx1ZXMgYXJlIGVxdWFsLiBU
aGlzIGhvcml6b250YWxseSBjZW50ZXJzIHRoZSBlbGVtZW50IHdpdGggcmVzcGVjdCB0byB0aGUK
ICAgICAgICAgLy8gICAgZWRnZXMgb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2suCiAKLSAgICAgICAg
YXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IHVzZWRIb3Jpem9udGFsVmFsdWVzLmNvbnN0cmFp
bnRzLmxvZ2ljYWxXaWR0aDsKKyAgICAgICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGhv
cml6b250YWxDb25zdHJhaW50cy5sb2dpY2FsV2lkdGg7CiAgICAgICAgIGF1dG8mIGJveEdlb21l
dHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpOwogCiAg
ICAgICAgIGF1dG8gd2lkdGggPSB1c2VkSG9yaXpvbnRhbFZhbHVlcy53aWR0aCA/IHVzZWRIb3Jp
em9udGFsVmFsdWVzLndpZHRoIDogY29tcHV0ZWRDb250ZW50V2lkdGgobGF5b3V0Qm94LCBjb250
YWluaW5nQmxvY2tXaWR0aCk7Ci0gICAgICAgIGF1dG8gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2lu
ID0gR2VvbWV0cnk6OmNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbihsYXlvdXRCb3gsIHVzZWRIb3Jp
em9udGFsVmFsdWVzLmNvbnN0cmFpbnRzKTsKKyAgICAgICAgYXV0byBjb21wdXRlZEhvcml6b250
YWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luKGxheW91dEJveCwg
aG9yaXpvbnRhbENvbnN0cmFpbnRzKTsKICAgICAgICAgVXNlZEhvcml6b250YWxNYXJnaW4gdXNl
ZEhvcml6b250YWxNYXJnaW47CiAgICAgICAgIGF1dG8gYm9yZGVyTGVmdCA9IGJveEdlb21ldHJ5
LmJvcmRlckxlZnQoKTsKICAgICAgICAgYXV0byBib3JkZXJSaWdodCA9IGJveEdlb21ldHJ5LmJv
cmRlclJpZ2h0KCk7CkBAIC0xOTcsNyArMTk3LDcgQEAgQ29udGVudFdpZHRoQW5kTWFyZ2luIEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZFdpZHRoQW4K
ICAgICByZXR1cm4gY29udGVudFdpZHRoQW5kTWFyZ2luOwogfQogCi1Db250ZW50V2lkdGhBbmRN
YXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd1JlcGxhY2VkV2lk
dGhBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IFVzZWRIb3Jpem9udGFsVmFs
dWVzJiB1c2VkSG9yaXpvbnRhbFZhbHVlcykgY29uc3QKK0NvbnRlbnRXaWR0aEFuZE1hcmdpbiBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93UmVwbGFjZWRXaWR0aEFuZE1h
cmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBo
b3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IFVzZWRIb3Jpem9udGFsVmFsdWVzJiB1c2VkSG9y
aXpvbnRhbFZhbHVlcykgY29uc3QKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzSW5GbG93KCkg
JiYgbGF5b3V0Qm94LnJlcGxhY2VkKCkpOwogCkBAIC0yMDcsOSArMjA3LDkgQEAgQ29udGVudFdp
ZHRoQW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dSZXBs
YWNlZFdpZHRoQW5kTWEKICAgICAvLyAyLiBUaGVuIHRoZSBydWxlcyBmb3Igbm9uLXJlcGxhY2Vk
IGJsb2NrLWxldmVsIGVsZW1lbnRzIGFyZSBhcHBsaWVkIHRvIGRldGVybWluZSB0aGUgbWFyZ2lu
cy4KIAogICAgIC8vICMxCi0gICAgYXV0byB1c2VkV2lkdGggPSBpbmxpbmVSZXBsYWNlZFdpZHRo
QW5kTWFyZ2luKGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMsIHsgfSkuY29udGVudFdp
ZHRoOworICAgIGF1dG8gdXNlZFdpZHRoID0gaW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihs
YXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cywgdXNlZEhvcml6b250YWxWYWx1ZXMpLmNv
bnRlbnRXaWR0aDsKICAgICAvLyAjMgotICAgIGF1dG8gbm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdp
biA9IGluRmxvd05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0Qm94LCBVc2VkSG9yaXpv
bnRhbFZhbHVlcyB7IHVzZWRIb3Jpem9udGFsVmFsdWVzLmNvbnN0cmFpbnRzLCB1c2VkV2lkdGgs
IHVzZWRIb3Jpem9udGFsVmFsdWVzLm1hcmdpbiB9KTsKKyAgICBhdXRvIG5vblJlcGxhY2VkV2lk
dGhBbmRNYXJnaW4gPSBpbkZsb3dOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dEJveCwg
aG9yaXpvbnRhbENvbnN0cmFpbnRzLCBVc2VkSG9yaXpvbnRhbFZhbHVlcyB7IHVzZWRXaWR0aCwg
dXNlZEhvcml6b250YWxWYWx1ZXMubWFyZ2luIH0pOwogCiAgICAgTE9HX1dJVEhfU1RSRUFNKEZv
cm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltXaWR0aF1bTWFyZ2luXSAtPiBpbmZs
b3cgcmVwbGFjZWQgLT4gd2lkdGgoIiA8PCB1c2VkV2lkdGggIDw8ICJweCkgbWFyZ2luKCIgPDwg
bm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbi51c2VkTWFyZ2luLnN0YXJ0IDw8ICJweCwgIiA8PCBu
b25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luLnVzZWRNYXJnaW4uZW5kIDw8ICJweCkgLT4gbGF5b3V0
Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwogICAgIHJldHVybiB7IHVzZWRXaWR0aCwgbm9u
UmVwbGFjZWRXaWR0aEFuZE1hcmdpbi51c2VkTWFyZ2luLCBub25SZXBsYWNlZFdpZHRoQW5kTWFy
Z2luLmNvbXB1dGVkTWFyZ2luIH07CkBAIC0yNDcsNyArMjQ3LDcgQEAgQ29udGVudEhlaWdodEFu
ZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93SGVpZ2h0QW5k
TWFyZ2luKGMKICAgICAvLyAxMC42LjIgSW5saW5lIHJlcGxhY2VkIGVsZW1lbnRzLCBibG9jay1s
ZXZlbCByZXBsYWNlZCBlbGVtZW50cyBpbiBub3JtYWwgZmxvdywgJ2lubGluZS1ibG9jaycKICAg
ICAvLyByZXBsYWNlZCBlbGVtZW50cyBpbiBub3JtYWwgZmxvdyBhbmQgZmxvYXRpbmcgcmVwbGFj
ZWQgZWxlbWVudHMKICAgICBpZiAobGF5b3V0Qm94LnJlcGxhY2VkKCkpCi0gICAgICAgIHJldHVy
biBpbmxpbmVSZXBsYWNlZEhlaWdodEFuZE1hcmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxDb25z
dHJhaW50cywgdXNlZFZlcnRpY2FsVmFsdWVzKTsKKyAgICAgICAgcmV0dXJuIGlubGluZVJlcGxh
Y2VkSGVpZ2h0QW5kTWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB7IH0s
IHVzZWRWZXJ0aWNhbFZhbHVlcyk7CiAKICAgICBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIGNvbnRl
bnRIZWlnaHRBbmRNYXJnaW47CiAgICAgLy8gRklYTUU6IExldCdzIHNwZWNpYWwgY2FzZSB0aGUg
dGFibGUgaGVpZ2h0IGNvbXB1dGF0aW9uIGZvciBub3cgLT4gZmlndXJlIG91dCB3aGV0aGVyIHRh
YmxlcyBmYWxsIGludG8gdGhlICJpbkZsb3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmdpbiIgY2F0
ZWdvcnkuCkBAIC0yNzIsMTkgKzI3MiwxOSBAQCBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIEJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dIZWlnaHRBbmRNYXJnaW4oYwogICAg
IHJldHVybiBjb250ZW50SGVpZ2h0QW5kTWFyZ2luOwogfQogCi1Db250ZW50V2lkdGhBbmRNYXJn
aW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd1dpZHRoQW5kTWFyZ2lu
KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBVc2VkSG9yaXpvbnRhbFZhbHVlcyYgdXNlZEhv
cml6b250YWxWYWx1ZXMpCitDb250ZW50V2lkdGhBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6OmluRmxvd1dpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94
LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29u
c3QgVXNlZEhvcml6b250YWxWYWx1ZXMmIHVzZWRIb3Jpem9udGFsVmFsdWVzKQogewogICAgIEFT
U0VSVChsYXlvdXRCb3guaXNJbkZsb3coKSk7CiAKICAgICBpZiAoIWxheW91dEJveC5yZXBsYWNl
ZCgpKSB7CiAgICAgICAgIGlmICghbGF5b3V0Qm94LmVzdGFibGlzaGVzVGFibGVGb3JtYXR0aW5n
Q29udGV4dCgpKQotICAgICAgICAgICAgcmV0dXJuIGluRmxvd05vblJlcGxhY2VkV2lkdGhBbmRN
YXJnaW4obGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcyk7CisgICAgICAgICAgICByZXR1
cm4gaW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxD
b25zdHJhaW50cywgdXNlZEhvcml6b250YWxWYWx1ZXMpOwogICAgICAgICAvLyBUaGlzIGlzIGEg
c3BlY2lhbCB0YWJsZSAiZml0LWNvbnRlbnQgc2l6ZSIgYmVoYXZpb3IgaGFuZGxpbmcuIE5vdCBp
biB0aGUgc3BlYyB0aG91Z2guCiAgICAgICAgIC8vIFRhYmxlIHJldHVybnMgaXRzIGZpbmFsIHdp
ZHRoIGFzIG1pbi9tYXguIFVzZSB0aGlzIGZpbmFsIHdpZHRoIHZhbHVlIHRvIGNvbXB1dGVkIGhv
cml6b250YWwgbWFyZ2lucyBldGMuCi0gICAgICAgIGF1dG8gdXNlZFdpZHRoID0gdXNlZEhvcml6
b250YWxWYWx1ZXMud2lkdGggPyB1c2VkSG9yaXpvbnRhbFZhbHVlcy53aWR0aCA6IHNocmlua1Rv
Rml0V2lkdGgobGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcy5jb25zdHJhaW50cy5sb2dp
Y2FsV2lkdGgpOwotICAgICAgICByZXR1cm4gaW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdp
bihsYXlvdXRCb3gsIFVzZWRIb3Jpem9udGFsVmFsdWVzIHsgdXNlZEhvcml6b250YWxWYWx1ZXMu
Y29uc3RyYWludHMsIHVzZWRXaWR0aCwgdXNlZEhvcml6b250YWxWYWx1ZXMubWFyZ2luIH0pOwor
ICAgICAgICBhdXRvIHVzZWRXaWR0aCA9IHVzZWRIb3Jpem9udGFsVmFsdWVzLndpZHRoID8gdXNl
ZEhvcml6b250YWxWYWx1ZXMud2lkdGggOiBzaHJpbmtUb0ZpdFdpZHRoKGxheW91dEJveCwgaG9y
aXpvbnRhbENvbnN0cmFpbnRzLmxvZ2ljYWxXaWR0aCk7CisgICAgICAgIHJldHVybiBpbkZsb3dO
b25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRz
LCBVc2VkSG9yaXpvbnRhbFZhbHVlcyB7IHVzZWRXaWR0aCwgdXNlZEhvcml6b250YWxWYWx1ZXMu
bWFyZ2luIH0pOwogICAgIH0KLSAgICByZXR1cm4gaW5GbG93UmVwbGFjZWRXaWR0aEFuZE1hcmdp
bihsYXlvdXRCb3gsIHVzZWRIb3Jpem9udGFsVmFsdWVzKTsKKyAgICByZXR1cm4gaW5GbG93UmVw
bGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cywgdXNl
ZEhvcml6b250YWxWYWx1ZXMpOwogfQogCiBGb3JtYXR0aW5nQ29udGV4dDo6SW50cmluc2ljV2lk
dGhDb25zdHJhaW50cyBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW50cmluc2lj
V2lkdGhDb25zdHJhaW50cyhjb25zdCBCb3gmIGxheW91dEJveCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0LmNwcAppbmRleCA1NjliOTVmZGUyNmE4MTdiNjczY2FiYWUzZmU4ZWEzZWNk
ODY1M2U1Li5lYjBjN2NiOTkzODA5MGFmODgyOWNkNDYyMTc3NWNkYzJjOTBhNTgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3Rh
dGUmIGludmFsaWRhdGlvCiAgICAgICAgIGlmIChsYXlvdXRCb3gtPmVzdGFibGlzaGVzRm9ybWF0
dGluZ0NvbnRleHQoKSkKICAgICAgICAgICAgIGxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9vdCgq
bGF5b3V0Qm94LCBpbnZhbGlkYXRpb25TdGF0ZSwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB2ZXJ0
aWNhbENvbnN0cmFpbnRzKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29tcHV0ZUhvcml6
b250YWxBbmRWZXJ0aWNhbEdlb21ldHJ5KCpsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50
cywgdmVydGljYWxDb25zdHJhaW50cyk7CisgICAgICAgICAgICBjb21wdXRlSG9yaXpvbnRhbEFu
ZFZlcnRpY2FsR2VvbWV0cnkoKmxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzKTsKICAg
ICAgICAgbGF5b3V0Qm94ID0gbmV4dEluUHJlT3JkZXIoKmxheW91dEJveCwgcm9vdCgpKTsKICAg
ICB9CiAKQEAgLTEzOSwxNyArMTM5LDE3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9vdChjb25zdCBCb3gmIGZvcm1hdHRpbmdDCiAgICAg
ICAgIGF1dG8gZm9ybWF0dGluZ0NvbnRleHQgPSBMYXlvdXRDb250ZXh0OjpjcmVhdGVGb3JtYXR0
aW5nQ29udGV4dChyb290Q29udGFpbmVyLCBsYXlvdXRTdGF0ZSgpKTsKICAgICAgICAgZm9ybWF0
dGluZ0NvbnRleHQtPmxheW91dEluRmxvd0NvbnRlbnQoaW52YWxpZGF0aW9uU3RhdGUsIGhvcml6
b250YWxDb25zdHJhaW50cywgdmVydGljYWxDb25zdHJhaW50cyk7CiAgICAgICAgIC8vIENvbWUg
YmFjayBhbmQgZmluYWxpemUgdGhlIHJvb3QncyBoZWlnaHQgYW5kIG1hcmdpbi4KLSAgICAgICAg
Y29tcHV0ZUhlaWdodEFuZE1hcmdpbihyb290Q29udGFpbmVyLCBob3Jpem9udGFsQ29uc3RyYWlu
dHMsIHZlcnRpY2FsQ29uc3RyYWludHMpOworICAgICAgICBjb21wdXRlSGVpZ2h0QW5kTWFyZ2lu
KHJvb3RDb250YWluZXIsIGhvcml6b250YWxDb25zdHJhaW50cyk7CiAgICAgICAgIC8vIE5vdyB0
aGF0IHdlIGNvbXB1dGVkIHRoZSByb290J3MgaGVpZ2h0LCB3ZSBjYW4gZ28gYmFjayBhbmQgbGF5
b3V0IHRoZSBvdXQtb2YtZmxvdyBjb250ZW50LgogICAgICAgICBhdXRvJiByb290Q29udGFpbmVy
RGlzcGxheUJveCA9IGdlb21ldHJ5Rm9yQm94KHJvb3RDb250YWluZXIpOwogICAgICAgICBhdXRv
IGhvcml6b250YWxDb25zdHJhaW50c0Zvck91dE9mRmxvdyA9IEdlb21ldHJ5Ojpob3Jpem9udGFs
Q29uc3RyYWludHNGb3JPdXRPZkZsb3cocm9vdENvbnRhaW5lckRpc3BsYXlCb3gpOwogICAgICAg
ICBhdXRvIHZlcnRpY2FsQ29uc3RyYWludHNGb3JPdXRPZkZsb3cgPSBHZW9tZXRyeTo6dmVydGlj
YWxDb25zdHJhaW50c0Zvck91dE9mRmxvdyhyb290Q29udGFpbmVyRGlzcGxheUJveCk7CiAgICAg
ICAgIGZvcm1hdHRpbmdDb250ZXh0LT5sYXlvdXRPdXRPZkZsb3dDb250ZW50KGludmFsaWRhdGlv
blN0YXRlLCBob3Jpem9udGFsQ29uc3RyYWludHNGb3JPdXRPZkZsb3csIHZlcnRpY2FsQ29uc3Ry
YWludHNGb3JPdXRPZkZsb3cpOwogICAgIH0gZWxzZQotICAgICAgICBjb21wdXRlSGVpZ2h0QW5k
TWFyZ2luKGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB2ZXJ0
aWNhbENvbnN0cmFpbnRzKTsKKyAgICAgICAgY29tcHV0ZUhlaWdodEFuZE1hcmdpbihmb3JtYXR0
aW5nQ29udGV4dFJvb3QsIGhvcml6b250YWxDb25zdHJhaW50cyk7CiB9CiAKLXZvaWQgSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIb3Jpem9udGFsQW5kVmVydGljYWxHZW9tZXRyeShj
b25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9u
dGFsQ29uc3RyYWludHMsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMmIHZlcnRpY2FsQ29uc3Ry
YWludHMpCit2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSG9yaXpvbnRhbEFu
ZFZlcnRpY2FsR2VvbWV0cnkoY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6b250YWxD
b25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzKQogewogICAgIGlmIChpczxDb250YWlu
ZXI+KGxheW91dEJveCkpIHsKICAgICAgICAgLy8gSW5saW5lIGNvbnRhaW5lcnMgKDxzcGFuPikg
Y2FuJ3QgZ2V0IHNpemVkL3Bvc2l0aW9uZWQgeWV0LiBBdCB0aGlzIHBvaW50IHdlIGNhbiBvbmx5
IGNvbXB1dGUgdGhlaXIgbWFyZ2lucywgYm9yZGVycyBhbmQgcGFkZGluZ3MuCkBAIC0xNjQsNyAr
MTY0LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUhvcml6b250YWxB
bmRWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IEJveCYgbGEKICAgICAgICAgLy8gUmVwbGFjZWQgZWxl
bWVudHMgKGltZywgdmlkZW8pIGNhbiBiZSBzaXplZCBidXQgbm90IHlldCBwb3NpdGlvbmVkLgog
ICAgICAgICBjb21wdXRlQm9yZGVyQW5kUGFkZGluZyhsYXlvdXRCb3gsIGhvcml6b250YWxDb25z
dHJhaW50cyk7CiAgICAgICAgIGNvbXB1dGVXaWR0aEFuZE1hcmdpbihsYXlvdXRCb3gsIGhvcml6
b250YWxDb25zdHJhaW50cyk7Ci0gICAgICAgIGNvbXB1dGVIZWlnaHRBbmRNYXJnaW4obGF5b3V0
Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMsIHZlcnRpY2FsQ29uc3RyYWludHMpOworICAgICAg
ICBjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRz
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjc2LDE1ICsyNzYsMTUgQEAgdm9pZCBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUhvcml6b250YWxNYXJnaW4oY29uc3QgQm94
JiBsYXlvdXRCb3gsIGNvbnMKIAogdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0
ZVdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem9udGFsQ29u
c3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cykKIHsKLSAgICAvLyBGSVhNRTogQWRkIHN1
cHBvcnQgZm9yIG1pbi9tYXgtd2lkdGguCi0gICAgYXV0byB1c2VkSG9yaXpvbnRhbFZhbHVlcyA9
IFVzZWRIb3Jpem9udGFsVmFsdWVzIHsgaG9yaXpvbnRhbENvbnN0cmFpbnRzIH07IAogICAgIENv
bnRlbnRXaWR0aEFuZE1hcmdpbiBjb250ZW50V2lkdGhBbmRNYXJnaW47CisgICAgLy8gRklYTUU6
IEFkZCBzdXBwb3J0IGZvciBtaW4vbWF4LXdpZHRoLgorICAgIGF1dG8gdXNlZFdpZHRoID0gVXNl
ZEhvcml6b250YWxWYWx1ZXMgeyB9OyAKICAgICBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3Np
dGlvbmVkKCkpCi0gICAgICAgIGNvbnRlbnRXaWR0aEFuZE1hcmdpbiA9IGdlb21ldHJ5KCkuZmxv
YXRpbmdXaWR0aEFuZE1hcmdpbihsYXlvdXRCb3gsIHVzZWRIb3Jpem9udGFsVmFsdWVzKTsKKyAg
ICAgICAgY29udGVudFdpZHRoQW5kTWFyZ2luID0gZ2VvbWV0cnkoKS5mbG9hdGluZ1dpZHRoQW5k
TWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB1c2VkV2lkdGgpOwogICAg
IGVsc2UgaWYgKGxheW91dEJveC5pc0lubGluZUJsb2NrQm94KCkpCi0gICAgICAgIGNvbnRlbnRX
aWR0aEFuZE1hcmdpbiA9IGdlb21ldHJ5KCkuaW5saW5lQmxvY2tXaWR0aEFuZE1hcmdpbihsYXlv
dXRCb3gsIHVzZWRIb3Jpem9udGFsVmFsdWVzKTsKKyAgICAgICAgY29udGVudFdpZHRoQW5kTWFy
Z2luID0gZ2VvbWV0cnkoKS5pbmxpbmVCbG9ja1dpZHRoQW5kTWFyZ2luKGxheW91dEJveCwgaG9y
aXpvbnRhbENvbnN0cmFpbnRzLCB1c2VkV2lkdGgpOwogICAgIGVsc2UgaWYgKGxheW91dEJveC5y
ZXBsYWNlZCgpKQotICAgICAgICBjb250ZW50V2lkdGhBbmRNYXJnaW4gPSBnZW9tZXRyeSgpLmlu
bGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVl
cywgeyB9KTsKKyAgICAgICAgY29udGVudFdpZHRoQW5kTWFyZ2luID0gZ2VvbWV0cnkoKS5pbmxp
bmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRz
LCB1c2VkV2lkdGgpOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAK
QEAgLTI5NCwxNyArMjk0LDE3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1
dGVXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QKICAgICBkaXNwbGF5
Qm94LnNldEhvcml6b250YWxDb21wdXRlZE1hcmdpbihjb250ZW50V2lkdGhBbmRNYXJnaW4uY29t
cHV0ZWRNYXJnaW4pOwogfQogCi12b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRl
SGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem9udGFsQ29u
c3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgVmVydGljYWxDb25zdHJhaW50
cyYgdmVydGljYWxDb25zdHJhaW50cykKK3ZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNv
bXB1dGVIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6b250
YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzKQogewotICAgIC8vIEZJWE1FOiBB
ZGQgbWluL21heC1oZWlnaHQgc3VwcG9ydC4KICAgICBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIGNv
bnRlbnRIZWlnaHRBbmRNYXJnaW47Ci0gICAgYXV0byB1c2VkVmVydGljYWxWYWx1ZXMgPSBVc2Vk
VmVydGljYWxWYWx1ZXMgeyB2ZXJ0aWNhbENvbnN0cmFpbnRzIH07CisgICAgLy8gRklYTUU6IEFk
ZCBtaW4vbWF4LWhlaWdodCBzdXBwb3J0LgorICAgIGF1dG8gdXNlZEhlaWdodCA9IFVzZWRWZXJ0
aWNhbFZhbHVlcyB7IH07CiAgICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgp
KQotICAgICAgICBjb250ZW50SGVpZ2h0QW5kTWFyZ2luID0gZ2VvbWV0cnkoKS5mbG9hdGluZ0hl
aWdodEFuZE1hcmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cywgdXNlZFZlcnRp
Y2FsVmFsdWVzKTsKKyAgICAgICAgY29udGVudEhlaWdodEFuZE1hcmdpbiA9IGdlb21ldHJ5KCku
ZmxvYXRpbmdIZWlnaHRBbmRNYXJnaW4obGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMs
IHVzZWRIZWlnaHQpOwogICAgIGVsc2UgaWYgKGxheW91dEJveC5pc0lubGluZUJsb2NrQm94KCkp
Ci0gICAgICAgIGNvbnRlbnRIZWlnaHRBbmRNYXJnaW4gPSBnZW9tZXRyeSgpLmlubGluZUJsb2Nr
SGVpZ2h0QW5kTWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB1c2VkVmVy
dGljYWxWYWx1ZXMpOworICAgICAgICBjb250ZW50SGVpZ2h0QW5kTWFyZ2luID0gZ2VvbWV0cnko
KS5pbmxpbmVCbG9ja0hlaWdodEFuZE1hcmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJh
aW50cywgdXNlZEhlaWdodCk7CiAgICAgZWxzZSBpZiAobGF5b3V0Qm94LnJlcGxhY2VkKCkpCi0g
ICAgICAgIGNvbnRlbnRIZWlnaHRBbmRNYXJnaW4gPSBnZW9tZXRyeSgpLmlubGluZVJlcGxhY2Vk
SGVpZ2h0QW5kTWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB1c2VkVmVy
dGljYWxWYWx1ZXMpOworICAgICAgICBjb250ZW50SGVpZ2h0QW5kTWFyZ2luID0gZ2VvbWV0cnko
KS5pbmxpbmVSZXBsYWNlZEhlaWdodEFuZE1hcmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxDb25z
dHJhaW50cywgeyB9LCB1c2VkSGVpZ2h0KTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogCkBAIC0zMTMsNyArMzEzLDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QK
ICAgICBkaXNwbGF5Qm94LnNldFZlcnRpY2FsTWFyZ2luKHsgY29udGVudEhlaWdodEFuZE1hcmdp
bi5ub25Db2xsYXBzZWRNYXJnaW4sIHsgfSB9KTsKIH0KIAotdm9pZCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kSGVpZ2h0Rm9yUmVwbGFjZWRJbmxpbmVCb3goY29uc3Qg
Qm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENv
bnN0cmFpbnRzLCBjb25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJiB2ZXJ0aWNhbENvbnN0cmFpbnRz
KQordm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kSGVpZ2h0Rm9y
UmVwbGFjZWRJbmxpbmVCb3goY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6b250YWxD
b25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzKQogewogICAgIEFTU0VSVCghbGF5b3V0
Qm94LmlzQ29udGFpbmVyKCkpOwogICAgIEFTU0VSVCghbGF5b3V0Qm94LmVzdGFibGlzaGVzRm9y
bWF0dGluZ0NvbnRleHQoKSk7CkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kSGVpZ2h0Rm9yUmVwbGFjZWRJbmxpbmVCb3goY29u
c3QgQm8KIAogICAgIGNvbXB1dGVCb3JkZXJBbmRQYWRkaW5nKGxheW91dEJveCwgaG9yaXpvbnRh
bENvbnN0cmFpbnRzKTsKICAgICBjb21wdXRlV2lkdGhBbmRNYXJnaW4obGF5b3V0Qm94LCBob3Jp
em9udGFsQ29uc3RyYWludHMpOwotICAgIGNvbXB1dGVIZWlnaHRBbmRNYXJnaW4obGF5b3V0Qm94
LCBob3Jpem9udGFsQ29uc3RyYWludHMsIHZlcnRpY2FsQ29uc3RyYWludHMpOworICAgIGNvbXB1
dGVIZWlnaHRBbmRNYXJnaW4obGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMpOwogfQog
CiB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0SW5saW5lQ29udGVudElmTmVl
ZGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IGJkZjVjNTliNjBlNDFj
MTY4MDhkNzI0NWNjYzA5NDc5NzZjODUyOGYuLjE2MWMxOGY0YjQ3YzBmZjU5OGIxNDk4MzBkNmI5
N2ZiZWQ5MTkxNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNjUsNyAr
NjUsNyBAQCBwcml2YXRlOgogICAgIGNsYXNzIEdlb21ldHJ5IDogcHVibGljIEZvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeSB7CiAgICAgcHVibGljOgogICAgICAgICBDb250ZW50SGVpZ2h0QW5k
TWFyZ2luIGlubGluZUJsb2NrSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IEhvcml6
b250YWxDb25zdHJhaW50cyYsIGNvbnN0IFVzZWRWZXJ0aWNhbFZhbHVlcyYpIGNvbnN0OwotICAg
ICAgICBDb250ZW50V2lkdGhBbmRNYXJnaW4gaW5saW5lQmxvY2tXaWR0aEFuZE1hcmdpbihjb25z
dCBCb3gmLCBjb25zdCBVc2VkSG9yaXpvbnRhbFZhbHVlcyYpOworICAgICAgICBDb250ZW50V2lk
dGhBbmRNYXJnaW4gaW5saW5lQmxvY2tXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBI
b3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25zdCBVc2VkSG9yaXpvbnRhbFZhbHVlcyYpOwogICAg
ICAgICBPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBjb21wdXRlZFRleHRJbmRlbnQoY29uc3Qg
Q29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGNvbnN0IEhvcml6b250YWxDb25zdHJh
aW50cyYpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKQEAgLTc5LDE0ICs3OSwxNCBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBsaW5lTGF5b3V0KGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYpOwog
ICAgIHZvaWQgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRSb290KGNvbnN0IEJveCYsIEludmFsaWRh
dGlvblN0YXRlJiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgVmVydGljYWxD
b25zdHJhaW50cyYpOwotICAgIHZvaWQgY29tcHV0ZUhvcml6b250YWxBbmRWZXJ0aWNhbEdlb21l
dHJ5KGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYsIGNvbnN0IFZlcnRp
Y2FsQ29uc3RyYWludHMmKTsKKyAgICB2b2lkIGNvbXB1dGVIb3Jpem9udGFsQW5kVmVydGljYWxH
ZW9tZXRyeShjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmKTsKIAogICAg
IHZvaWQgY29tcHV0ZUludHJpbnNpY1dpZHRoRm9yRm9ybWF0dGluZ1Jvb3QoY29uc3QgQm94Jiwg
Y29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJik7Ci0gICAgdm9pZCBjb21wdXRlV2lkdGhBbmRI
ZWlnaHRGb3JSZXBsYWNlZElubGluZUJveChjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29u
c3RyYWludHMmLCBjb25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJik7CisgICAgdm9pZCBjb21wdXRl
V2lkdGhBbmRIZWlnaHRGb3JSZXBsYWNlZElubGluZUJveChjb25zdCBCb3gmLCBjb25zdCBIb3Jp
em9udGFsQ29uc3RyYWludHMmKTsKICAgICBJbmxpbmVMYXlvdXRVbml0IGNvbXB1dGVkSW50cmlu
c2ljV2lkdGhGb3JDb25zdHJhaW50KGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYpIGNvbnN0
OwogCiAgICAgdm9pZCBjb21wdXRlSG9yaXpvbnRhbE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBI
b3Jpem9udGFsQ29uc3RyYWludHMmKTsKLSAgICB2b2lkIGNvbXB1dGVIZWlnaHRBbmRNYXJnaW4o
Y29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgVmVydGljYWxD
b25zdHJhaW50cyYpOworICAgIHZvaWQgY29tcHV0ZUhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gm
LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmKTsKICAgICB2b2lkIGNvbXB1dGVXaWR0aEFu
ZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmKTsKIAogICAg
IHZvaWQgY29sbGVjdElubGluZUNvbnRlbnRJZk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRH
ZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCA5YWM2NTVhNTY1ZjI1NWU5MzM4
YWI2NjM3YmMyODY2NjdmNGNjNWY1Li5kNmI1ZDc2MWRhNDc5NDM0Nzc1MDg2MTU1ZWNhOGNhOGEw
NzY3M2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5
LmNwcApAQCAtMzYsNyArMzYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExh
eW91dCB7CiAKLUNvbnRlbnRXaWR0aEFuZE1hcmdpbiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6OmlubGluZUJsb2NrV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiBmb3JtYXR0aW5n
Q29udGV4dFJvb3QsIGNvbnN0IFVzZWRIb3Jpem9udGFsVmFsdWVzJiB1c2VkSG9yaXpvbnRhbFZh
bHVlcykKK0NvbnRlbnRXaWR0aEFuZE1hcmdpbiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OmlubGluZUJsb2NrV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiBmb3JtYXR0aW5nQ29u
dGV4dFJvb3QsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFp
bnRzLCBjb25zdCBVc2VkSG9yaXpvbnRhbFZhbHVlcyYgdXNlZEhvcml6b250YWxWYWx1ZXMpCiB7
CiAgICAgQVNTRVJUKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5pc0luRmxvdygpKTsKIApAQCAtNDQs
MTkgKzQ0LDE5IEBAIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmlubGluZUJsb2NrV2lkdGhBbmRNYXJnCiAKICAgICAvLyBFeGFjdGx5IGFz
IGlubGluZSByZXBsYWNlZCBlbGVtZW50cy4KICAgICBpZiAoZm9ybWF0dGluZ0NvbnRleHRSb290
LnJlcGxhY2VkKCkpCi0gICAgICAgIHJldHVybiBpbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2lu
KGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgdXNlZEhvcml6b250YWxWYWx1ZXMsIHsgfSk7CisgICAg
ICAgIHJldHVybiBpbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGZvcm1hdHRpbmdDb250ZXh0
Um9vdCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB1c2VkSG9yaXpvbnRhbFZhbHVlcyk7CiAKICAg
ICAvLyAxMC4zLjkgJ0lubGluZS1ibG9jaycsIG5vbi1yZXBsYWNlZCBlbGVtZW50cyBpbiBub3Jt
YWwgZmxvdwogCiAgICAgLy8gSWYgJ3dpZHRoJyBpcyAnYXV0bycsIHRoZSB1c2VkIHZhbHVlIGlz
IHRoZSBzaHJpbmstdG8tZml0IHdpZHRoIGFzIGZvciBmbG9hdGluZyBlbGVtZW50cy4KICAgICAv
LyBBIGNvbXB1dGVkIHZhbHVlIG9mICdhdXRvJyBmb3IgJ21hcmdpbi1sZWZ0JyBvciAnbWFyZ2lu
LXJpZ2h0JyBiZWNvbWVzIGEgdXNlZCB2YWx1ZSBvZiAnMCcuCiAgICAgLy8gIzEKLSAgICBhdXRv
IHdpZHRoID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhmb3JtYXR0aW5nQ29udGV4dFJvb3Quc3R5
bGUoKS5sb2dpY2FsV2lkdGgoKSwgdXNlZEhvcml6b250YWxWYWx1ZXMuY29uc3RyYWludHMubG9n
aWNhbFdpZHRoKTsKKyAgICBhdXRvIHdpZHRoID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhmb3Jt
YXR0aW5nQ29udGV4dFJvb3Quc3R5bGUoKS5sb2dpY2FsV2lkdGgoKSwgaG9yaXpvbnRhbENvbnN0
cmFpbnRzLmxvZ2ljYWxXaWR0aCk7CiAgICAgaWYgKCF3aWR0aCkKLSAgICAgICAgd2lkdGggPSBz
aHJpbmtUb0ZpdFdpZHRoKGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgdXNlZEhvcml6b250YWxWYWx1
ZXMuY29uc3RyYWludHMubG9naWNhbFdpZHRoKTsKKyAgICAgICAgd2lkdGggPSBzaHJpbmtUb0Zp
dFdpZHRoKGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLmxvZ2lj
YWxXaWR0aCk7CiAKICAgICAvLyAjMgotICAgIGF1dG8gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2lu
ID0gR2VvbWV0cnk6OmNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbihmb3JtYXR0aW5nQ29udGV4dFJv
b3QsIHVzZWRIb3Jpem9udGFsVmFsdWVzLmNvbnN0cmFpbnRzKTsKKyAgICBhdXRvIGNvbXB1dGVk
SG9yaXpvbnRhbE1hcmdpbiA9IEdlb21ldHJ5Ojpjb21wdXRlZEhvcml6b250YWxNYXJnaW4oZm9y
bWF0dGluZ0NvbnRleHRSb290LCBob3Jpem9udGFsQ29uc3RyYWludHMpOwogCiAgICAgcmV0dXJu
IENvbnRlbnRXaWR0aEFuZE1hcmdpbiB7ICp3aWR0aCwgeyBjb21wdXRlZEhvcml6b250YWxNYXJn
aW4uc3RhcnQudmFsdWVPcigwX2x1KSwgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVuZC52YWx1
ZU9yKDBfbHUpIH0sIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiB9OwogfQpAQCAtNjcsNyArNjcs
NyBAQCBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6aW5saW5lQmxvY2tIZWlnaHRBbmRNYQogCiAgICAgLy8gMTAuNi4yIElubGluZSByZXBs
YWNlZCBlbGVtZW50cywgYmxvY2stbGV2ZWwgcmVwbGFjZWQgZWxlbWVudHMgaW4gbm9ybWFsIGZs
b3csICdpbmxpbmUtYmxvY2snIHJlcGxhY2VkIGVsZW1lbnRzIGluIG5vcm1hbCBmbG93IGFuZCBm
bG9hdGluZyByZXBsYWNlZCBlbGVtZW50cwogICAgIGlmIChsYXlvdXRCb3gucmVwbGFjZWQoKSkK
LSAgICAgICAgcmV0dXJuIGlubGluZVJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKGxheW91dEJveCwg
aG9yaXpvbnRhbENvbnN0cmFpbnRzLCB1c2VkVmVydGljYWxWYWx1ZXMpOworICAgICAgICByZXR1
cm4gaW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4obGF5b3V0Qm94LCBob3Jpem9udGFsQ29u
c3RyYWludHMsIHsgfSwgdXNlZFZlcnRpY2FsVmFsdWVzKTsKIAogICAgIC8vIDEwLjYuNiBDb21w
bGljYXRlZCBjYXNlcwogICAgIC8vIC0gJ0lubGluZS1ibG9jaycsIG5vbi1yZXBsYWNlZCBlbGVt
ZW50cy4K
</data>
<flag name="review"
          id="402969"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>