<?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>217657</bug_id>
          
          <creation_ts>2020-10-13 09:31:37 -0700</creation_ts>
          <short_desc>[LFC] Use the term overridden instead of override to indicate priority values</short_desc>
          <delta_ts>2020-10-14 07:01:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>darin</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>1697280</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-10-13 09:31:37 -0700</bug_when>
    <thetext>When a particular geometry value should be used instead of the computed value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697284</commentid>
    <comment_count>1</comment_count>
      <attachid>411227</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-10-13 09:36:36 -0700</bug_when>
    <thetext>Created attachment 411227
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697692</commentid>
    <comment_count>2</comment_count>
      <attachid>411227</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-10-14 06:36:03 -0700</bug_when>
    <thetext>Comment on attachment 411227
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=411227&amp;action=review

&gt; Source/WebCore/ChangeLog:8
&gt; +        The OverriddenHorizontal/Vertical structures are used to pass in priority values (e.g. use the &quot;max-height&quot; value instead of the computed &quot;height&quot; value) to geometry computation functions.

Overridden is still bit vague. Like why? Maybe there are more descriptive terms that could be used for these?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697693</commentid>
    <comment_count>3</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-10-14 06:38:58 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #2)
&gt; Comment on attachment 411227 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=411227&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        The OverriddenHorizontal/Vertical structures are used to pass in priority values (e.g. use the &quot;max-height&quot; value instead of the computed &quot;height&quot; value) to geometry computation functions.
&gt; 
&gt; Overridden is still bit vague. Like why? Maybe there are more descriptive
&gt; terms that could be used for these?
Yeah, I agree. Can&apos;t think of anything descriptive (and less than 1024 characters long) name right now though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697694</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-10-14 06:45:28 -0700</bug_when>
    <thetext>(In reply to zalan from comment #3)
&gt; (In reply to Antti Koivisto from comment #2)
&gt; &gt; Comment on attachment 411227 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=411227&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; &gt; +        The OverriddenHorizontal/Vertical structures are used to pass in priority values (e.g. use the &quot;max-height&quot; value instead of the computed &quot;height&quot; value) to geometry computation functions.
&gt; &gt; 
&gt; &gt; Overridden is still bit vague. Like why? Maybe there are more descriptive
&gt; &gt; terms that could be used for these?
&gt; Yeah, I agree. Can&apos;t think of anything descriptive (and less than 1024
&gt; characters long) name right now though.
The long name would be something like UseTheseValuesForCertainPropertiesInsteadOfTheirComputedValues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697698</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-14 07:00:53 -0700</bug_when>
    <thetext>Committed r268456: &lt;https://trac.webkit.org/changeset/268456&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 411227.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697699</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-14 07:01:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/70291022&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411227</attachid>
            <date>2020-10-13 09:36:36 -0700</date>
            <delta_ts>2020-10-14 07:00:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217657-20201013093635.patch</filename>
            <type>text/plain</type>
            <size>50522</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4Mzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGRmMmI5MmRjMmM2ODMx
ZDFlNTYxYTg2MTNhZDA2ZWM5MjQwOTRjMC4uZDA4MmM5MjVjMzI5MTYwZDI2MDllY2NiOTJlNTYw
MjI5YTVhMmY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIwLTEwLTEzICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gVXNlIHRoZSB0ZXJt
IG92ZXJyaWRkZW4gaW5zdGVhZCBvZiBvdmVycmlkZSB0byBpbmRpY2F0ZSBwcmlvcml0eSB2YWx1
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzY1
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBP
dmVycmlkZGVuSG9yaXpvbnRhbC9WZXJ0aWNhbCBzdHJ1Y3R1cmVzIGFyZSB1c2VkIHRvIHBhc3Mg
aW4gcHJpb3JpdHkgdmFsdWVzIChlLmcuIHVzZSB0aGUgIm1heC1oZWlnaHQiIHZhbHVlIGluc3Rl
YWQgb2YgdGhlIGNvbXB1dGVkICJoZWlnaHQiIHZhbHVlKSB0byBnZW9tZXRyeSBjb21wdXRhdGlv
biBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaDoKKyAg
ICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9u
UmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZEhvcml6
b250YWxHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpv
dXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcGxpY2F0ZWRDYXNlcyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6ZmxvYXRpbmdOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ1JlcGxhY2VkSGVp
Z2h0QW5kTWFyZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9m
Rmxvd1ZlcnRpY2FsR2VvbWV0cnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd0hvcml6b250YWxHZW9tZXRyeSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
ZmxvYXRpbmdIZWlnaHRBbmRNYXJnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nV2lkdGhBbmRNYXJnaW4pOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Omlu
bGluZVJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNlZFdpZHRoQW5k
TWFyZ2luKToKKyAgICAgICAgKiBsYXlvdXQvTGF5b3V0VW5pdHMuaDoKKyAgICAgICAgKiBsYXlv
dXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBs
YXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjppbkZsb3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBs
YWNlZFdpZHRoQW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6aW5GbG93SGVpZ2h0QW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd1dpZHRoQW5kTWFyZ2luKToKKyAg
ICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFi
bGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kTWFyZ2luRm9y
VGFibGVCb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZVdyYXBwZXJCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2luRm9yVGFibGVCb3gpOgorICAg
ICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJs
b2NrRm9ybWF0dGluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5n
L3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6UXVpcmtzOjpvdmVycmlkZGVuVGFibGVIZWlnaHQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpUYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWly
a3M6Om92ZXJyaWRlVGFibGVIZWlnaHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAgICog
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6aW5saW5lQmxvY2tXaWR0aEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lQmxvY2tIZWln
aHRBbmRNYXJnaW4gY29uc3QpOgorCiAyMDIwLTEwLTEzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KIAogICAgICAgICBJbXByb3ZlIGNvbXB1dGF0aW9uIG9mIGRlZmF1bHQgYXVk
aW8gaW5wdXQgYW5kIG91dHB1dCBkZXZpY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0
aW5nQ29udGV4dC5oCmluZGV4IDhlMTVmZGM5MjFiMDJmNTNlZTU4Yjk4Yzk3NzVjYjczNThlNjRl
ZWMuLjBlNTRhMDdhZjgxMzUwYWQ3Yjc0MmMxMTJkZjk5NTAwZWQwMzNkMTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oCkBAIC01Miw4ICs1Miw4IEBAIGNsYXNz
IEZvcm1hdHRpbmdTdGF0ZTsKIHN0cnVjdCBIb3Jpem9udGFsR2VvbWV0cnk7CiBjbGFzcyBJbnZh
bGlkYXRpb25TdGF0ZTsKIGNsYXNzIExheW91dFN0YXRlOwotc3RydWN0IE92ZXJyaWRlSG9yaXpv
bnRhbFZhbHVlczsKLXN0cnVjdCBPdmVycmlkZVZlcnRpY2FsVmFsdWVzOworc3RydWN0IE92ZXJy
aWRkZW5Ib3Jpem9udGFsVmFsdWVzOworc3RydWN0IE92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlczsK
IHN0cnVjdCBWZXJ0aWNhbEdlb21ldHJ5OwogCiBjbGFzcyBGb3JtYXR0aW5nQ29udGV4dCB7CkBA
IC0xMjMsMTggKzEyMywxOCBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gVGhpcyBjbGFzcyBpbXBsZW1l
bnRzIGdlbmVyaWMgcG9zaXRpb25pbmcgYW5kIHNpemluZy4KICAgICBjbGFzcyBHZW9tZXRyeSB7
CiAgICAgcHVibGljOgotICAgICAgICBWZXJ0aWNhbEdlb21ldHJ5IG91dE9mRmxvd1ZlcnRpY2Fs
R2VvbWV0cnkoY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3Qg
VmVydGljYWxDb25zdHJhaW50cyYsIGNvbnN0IE92ZXJyaWRlVmVydGljYWxWYWx1ZXMmKSBjb25z
dDsKLSAgICAgICAgSG9yaXpvbnRhbEdlb21ldHJ5IG91dE9mRmxvd0hvcml6b250YWxHZW9tZXRy
eShjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25zdCBWZXJ0aWNh
bENvbnN0cmFpbnRzJiwgY29uc3QgT3ZlcnJpZGVIb3Jpem9udGFsVmFsdWVzJik7CisgICAgICAg
IFZlcnRpY2FsR2VvbWV0cnkgb3V0T2ZGbG93VmVydGljYWxHZW9tZXRyeShjb25zdCBCb3gmLCBj
b25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJiwg
Y29uc3QgT3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzJikgY29uc3Q7CisgICAgICAgIEhvcml6b250
YWxHZW9tZXRyeSBvdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkoY29uc3QgQm94JiwgY29uc3Qg
SG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgVmVydGljYWxDb25zdHJhaW50cyYsIGNvbnN0
IE92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzJik7CiAKLSAgICAgICAgQ29udGVudEhlaWdodEFu
ZE1hcmdpbiBmbG9hdGluZ0hlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9u
dGFsQ29uc3RyYWludHMmLCBjb25zdCBPdmVycmlkZVZlcnRpY2FsVmFsdWVzJikgY29uc3Q7Ci0g
ICAgICAgIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBmbG9hdGluZ1dpZHRoQW5kTWFyZ2luKGNvbnN0
IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYsIGNvbnN0IE92ZXJyaWRlSG9yaXpv
bnRhbFZhbHVlcyYpOworICAgICAgICBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIGZsb2F0aW5nSGVp
Z2h0QW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYsIGNv
bnN0IE92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcyYpIGNvbnN0OworICAgICAgICBDb250ZW50V2lk
dGhBbmRNYXJnaW4gZmxvYXRpbmdXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jp
em9udGFsQ29uc3RyYWludHMmLCBjb25zdCBPdmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcyYpOwog
Ci0gICAgICAgIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gaW5saW5lUmVwbGFjZWRIZWlnaHRBbmRN
YXJnaW4oY29uc3QgUmVwbGFjZWRCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBP
cHRpb25hbDxWZXJ0aWNhbENvbnN0cmFpbnRzPiwgY29uc3QgT3ZlcnJpZGVWZXJ0aWNhbFZhbHVl
cyYpIGNvbnN0OwotICAgICAgICBDb250ZW50V2lkdGhBbmRNYXJnaW4gaW5saW5lUmVwbGFjZWRX
aWR0aEFuZE1hcmdpbihjb25zdCBSZXBsYWNlZEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJh
aW50cyYsIE9wdGlvbmFsPFZlcnRpY2FsQ29uc3RyYWludHM+LCBjb25zdCBPdmVycmlkZUhvcml6
b250YWxWYWx1ZXMmKTsKKyAgICAgICAgQ29udGVudEhlaWdodEFuZE1hcmdpbiBpbmxpbmVSZXBs
YWNlZEhlaWdodEFuZE1hcmdpbihjb25zdCBSZXBsYWNlZEJveCYsIGNvbnN0IEhvcml6b250YWxD
b25zdHJhaW50cyYsIE9wdGlvbmFsPFZlcnRpY2FsQ29uc3RyYWludHM+LCBjb25zdCBPdmVycmlk
ZGVuVmVydGljYWxWYWx1ZXMmKSBjb25zdDsKKyAgICAgICAgQ29udGVudFdpZHRoQW5kTWFyZ2lu
IGlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4oY29uc3QgUmVwbGFjZWRCb3gmLCBjb25zdCBI
b3Jpem9udGFsQ29uc3RyYWludHMmLCBPcHRpb25hbDxWZXJ0aWNhbENvbnN0cmFpbnRzPiwgY29u
c3QgT3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMmKTsKIAogICAgICAgICBMYXlvdXRTaXplIGlu
Rmxvd1Bvc2l0aW9uZWRQb3NpdGlvbk9mZnNldChjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFs
Q29uc3RyYWludHMmKSBjb25zdDsKIAotICAgICAgICBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIGNv
bXBsaWNhdGVkQ2FzZXMoY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwg
Y29uc3QgT3ZlcnJpZGVWZXJ0aWNhbFZhbHVlcyYpIGNvbnN0OworICAgICAgICBDb250ZW50SGVp
Z2h0QW5kTWFyZ2luIGNvbXBsaWNhdGVkQ2FzZXMoY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRh
bENvbnN0cmFpbnRzJiwgY29uc3QgT3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzJikgY29uc3Q7CiAg
ICAgICAgIExheW91dFVuaXQgc2hyaW5rVG9GaXRXaWR0aChjb25zdCBCb3gmLCBMYXlvdXRVbml0
IGF2YWlsYWJsZVdpZHRoKTsKIAogICAgICAgICBFZGdlcyBjb21wdXRlZEJvcmRlcihjb25zdCBC
b3gmKSBjb25zdDsKQEAgLTE3MSwxNiArMTcxLDE2IEBAIHByb3RlY3RlZDoKICAgICAgICAgY29u
c3QgRm9ybWF0dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4g
bV9mb3JtYXR0aW5nQ29udGV4dDsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgVmVydGljYWxH
ZW9tZXRyeSBvdXRPZkZsb3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoY29uc3QgUmVwbGFjZWRC
b3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25zdCBWZXJ0aWNhbENvbnN0cmFp
bnRzJiwgY29uc3QgT3ZlcnJpZGVWZXJ0aWNhbFZhbHVlcyYpIGNvbnN0OwotICAgICAgICBIb3Jp
em9udGFsR2VvbWV0cnkgb3V0T2ZGbG93UmVwbGFjZWRIb3Jpem9udGFsR2VvbWV0cnkoY29uc3Qg
UmVwbGFjZWRCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25zdCBWZXJ0aWNh
bENvbnN0cmFpbnRzJiwgY29uc3QgT3ZlcnJpZGVIb3Jpem9udGFsVmFsdWVzJik7CisgICAgICAg
IFZlcnRpY2FsR2VvbWV0cnkgb3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0
IFJlcGxhY2VkQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgVmVydGlj
YWxDb25zdHJhaW50cyYsIGNvbnN0IE92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcyYpIGNvbnN0Owor
ICAgICAgICBIb3Jpem9udGFsR2VvbWV0cnkgb3V0T2ZGbG93UmVwbGFjZWRIb3Jpem9udGFsR2Vv
bWV0cnkoY29uc3QgUmVwbGFjZWRCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBj
b25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJiwgY29uc3QgT3ZlcnJpZGRlbkhvcml6b250YWxWYWx1
ZXMmKTsKIAotICAgICAgICBWZXJ0aWNhbEdlb21ldHJ5IG91dE9mRmxvd05vblJlcGxhY2VkVmVy
dGljYWxHZW9tZXRyeShjb25zdCBDb250YWluZXJCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3Ry
YWludHMmLCBjb25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJiwgY29uc3QgT3ZlcnJpZGVWZXJ0aWNh
bFZhbHVlcyYpIGNvbnN0OwotICAgICAgICBIb3Jpem9udGFsR2VvbWV0cnkgb3V0T2ZGbG93Tm9u
UmVwbGFjZWRIb3Jpem9udGFsR2VvbWV0cnkoY29uc3QgQ29udGFpbmVyQm94JiwgY29uc3QgSG9y
aXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgT3ZlcnJpZGVIb3Jpem9udGFsVmFsdWVzJik7Cisg
ICAgICAgIFZlcnRpY2FsR2VvbWV0cnkgb3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21l
dHJ5KGNvbnN0IENvbnRhaW5lckJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYsIGNv
bnN0IFZlcnRpY2FsQ29uc3RyYWludHMmLCBjb25zdCBPdmVycmlkZGVuVmVydGljYWxWYWx1ZXMm
KSBjb25zdDsKKyAgICAgICAgSG9yaXpvbnRhbEdlb21ldHJ5IG91dE9mRmxvd05vblJlcGxhY2Vk
SG9yaXpvbnRhbEdlb21ldHJ5KGNvbnN0IENvbnRhaW5lckJveCYsIGNvbnN0IEhvcml6b250YWxD
b25zdHJhaW50cyYsIGNvbnN0IE92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzJik7CiAKLSAgICAg
ICAgQ29udGVudEhlaWdodEFuZE1hcmdpbiBmbG9hdGluZ1JlcGxhY2VkSGVpZ2h0QW5kTWFyZ2lu
KGNvbnN0IFJlcGxhY2VkQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3Qg
T3ZlcnJpZGVWZXJ0aWNhbFZhbHVlcyYpIGNvbnN0OwotICAgICAgICBDb250ZW50V2lkdGhBbmRN
YXJnaW4gZmxvYXRpbmdSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IFJlcGxhY2VkQm94Jiwg
Y29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgT3ZlcnJpZGVIb3Jpem9udGFsVmFs
dWVzJik7CisgICAgICAgIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gZmxvYXRpbmdSZXBsYWNlZEhl
aWdodEFuZE1hcmdpbihjb25zdCBSZXBsYWNlZEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJh
aW50cyYsIGNvbnN0IE92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcyYpIGNvbnN0OworICAgICAgICBD
b250ZW50V2lkdGhBbmRNYXJnaW4gZmxvYXRpbmdSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0
IFJlcGxhY2VkQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgT3ZlcnJp
ZGRlbkhvcml6b250YWxWYWx1ZXMmKTsKIAotICAgICAgICBDb250ZW50V2lkdGhBbmRNYXJnaW4g
ZmxvYXRpbmdOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IEhvcml6
b250YWxDb25zdHJhaW50cyYsIGNvbnN0IE92ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcyYpOworICAg
ICAgICBDb250ZW50V2lkdGhBbmRNYXJnaW4gZmxvYXRpbmdOb25SZXBsYWNlZFdpZHRoQW5kTWFy
Z2luKGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYsIGNvbnN0IE92ZXJy
aWRkZW5Ib3Jpem9udGFsVmFsdWVzJik7CiAKICAgICAgICAgTGF5b3V0VW5pdCBzdGF0aWNWZXJ0
aWNhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25lZChjb25zdCBCb3gmLCBjb25zdCBWZXJ0
aWNhbENvbnN0cmFpbnRzJikgY29uc3Q7CiAgICAgICAgIExheW91dFVuaXQgc3RhdGljSG9yaXpv
bnRhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25lZChjb25zdCBCb3gmLCBjb25zdCBIb3Jp
em9udGFsQ29uc3RyYWludHMmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCBmMWQ3ZjU1YmNhMThiMWY0ZWRk
YWEwYTk0MDZkYTIyZWU2YTNmYzE0Li4zMTI2YTAzY2IzNWEwZGZkZjU2ZGY1M2Q4M2Q5Yzg1MmI2
MGJhNzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRl
eHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250
ZXh0R2VvbWV0cnkuY3BwCkBAIC0zNTIsNyArMzUyLDcgQEAgTGF5b3V0VW5pdCBGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6OnNocmlua1RvRml0V2lkdGgoY29uc3QgQm94JiBmb3JtYXR0aW5n
Um8KICAgICByZXR1cm4gc3RkOjptaW4oc3RkOjptYXgoaW50cmluc2ljV2lkdGhDb25zdHJhaW50
cy5taW5pbXVtLCBhdmFpbGFibGVXaWR0aCksIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMubWF4
aW11bSk7CiB9CiAKLVZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjpvdXRPZkZsb3dOb25SZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoY29uc3QgQ29udGFpbmVyQm94
JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0
cmFpbnRzLCBjb25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJiB2ZXJ0aWNhbENvbnN0cmFpbnRzLCBj
b25zdCBPdmVycmlkZVZlcnRpY2FsVmFsdWVzJiBvdmVycmlkZVZlcnRpY2FsVmFsdWVzKSBjb25z
dAorVmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxv
d05vblJlcGxhY2VkVmVydGljYWxHZW9tZXRyeShjb25zdCBDb250YWluZXJCb3gmIGxheW91dEJv
eCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNv
bnN0IFZlcnRpY2FsQ29uc3RyYWludHMmIHZlcnRpY2FsQ29uc3RyYWludHMsIGNvbnN0IE92ZXJy
aWRkZW5WZXJ0aWNhbFZhbHVlcyYgb3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzKSBjb25zdAogewog
ICAgIEFTU0VSVChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIWxheW91dEJv
eC5pc1JlcGxhY2VkQm94KCkpOwogICAgIEFTU0VSVCh2ZXJ0aWNhbENvbnN0cmFpbnRzLmxvZ2lj
YWxIZWlnaHQpOwpAQCAtMzg5LDcgKzM4OSw3IEBAIFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZFZlcnRpY2FsR2VvbWV0CiAK
ICAgICBhdXRvIHRvcCA9IGNvbXB1dGVkVmFsdWUoc3R5bGUubG9naWNhbFRvcCgpLCBjb250YWlu
aW5nQmxvY2tXaWR0aCk7CiAgICAgYXV0byBib3R0b20gPSBjb21wdXRlZFZhbHVlKHN0eWxlLmxv
Z2ljYWxCb3R0b20oKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwotICAgIGF1dG8gaGVpZ2h0ID0g
b3ZlcnJpZGVWZXJ0aWNhbFZhbHVlcy5oZWlnaHQgPyBvdmVycmlkZVZlcnRpY2FsVmFsdWVzLmhl
aWdodC52YWx1ZSgpIDogY29tcHV0ZWRIZWlnaHQobGF5b3V0Qm94LCBjb250YWluaW5nQmxvY2tI
ZWlnaHQpOworICAgIGF1dG8gaGVpZ2h0ID0gb3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzLmhlaWdo
dCA/IG92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcy5oZWlnaHQudmFsdWUoKSA6IGNvbXB1dGVkSGVp
Z2h0KGxheW91dEJveCwgY29udGFpbmluZ0Jsb2NrSGVpZ2h0KTsKICAgICBhdXRvIGNvbXB1dGVk
VmVydGljYWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWRWZXJ0aWNhbE1hcmdpbihsYXlvdXRC
b3gsIGhvcml6b250YWxDb25zdHJhaW50cyk7CiAgICAgVXNlZFZlcnRpY2FsTWFyZ2luOjpOb25D
b2xsYXBzZWRWYWx1ZXMgdXNlZFZlcnRpY2FsTWFyZ2luOyAKICAgICBhdXRvIHBhZGRpbmdUb3Ag
PSBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVPcigwKTsKQEAgLTQ3MSw3ICs0NzEsNyBA
QCBWZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93
Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21ldAogICAgIHJldHVybiB7ICp0b3AsICpib3R0b20sIHsg
KmhlaWdodCwgdXNlZFZlcnRpY2FsTWFyZ2luIH0gfTsKIH0KIAotSG9yaXpvbnRhbEdlb21ldHJ5
IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jpem9u
dGFsR2VvbWV0cnkoY29uc3QgQ29udGFpbmVyQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6b250
YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBPdmVycmlkZUhvcml6
b250YWxWYWx1ZXMmIG92ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcykKK0hvcml6b250YWxHZW9tZXRy
eSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkSG9yaXpv
bnRhbEdlb21ldHJ5KGNvbnN0IENvbnRhaW5lckJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem9u
dGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgT3ZlcnJpZGRlbkhv
cml6b250YWxWYWx1ZXMmIG92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzKQogewogICAgIEFTU0VS
VChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIWxheW91dEJveC5pc1JlcGxh
Y2VkQm94KCkpOwogICAgIApAQCAtNTA5LDcgKzUwOSw3IEBAIEhvcml6b250YWxHZW9tZXRyeSBG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkSG9yaXpvbnRh
bEdlCiAgICAgCiAgICAgYXV0byBsZWZ0ID0gY29tcHV0ZWRWYWx1ZShzdHlsZS5sb2dpY2FsTGVm
dCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAgYXV0byByaWdodCA9IGNvbXB1dGVkVmFs
dWUoc3R5bGUubG9naWNhbFJpZ2h0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKLSAgICBhdXRv
IHdpZHRoID0gb3ZlcnJpZGVIb3Jpem9udGFsVmFsdWVzLndpZHRoID8gb3ZlcnJpZGVIb3Jpem9u
dGFsVmFsdWVzLndpZHRoIDogY29tcHV0ZWRXaWR0aChsYXlvdXRCb3gsIGNvbnRhaW5pbmdCbG9j
a1dpZHRoKTsKKyAgICBhdXRvIHdpZHRoID0gb3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMud2lk
dGggPyBvdmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcy53aWR0aCA6IGNvbXB1dGVkV2lkdGgobGF5
b3V0Qm94LCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAgYXV0byBjb21wdXRlZEhvcml6b250
YWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luKGxheW91dEJveCwg
aG9yaXpvbnRhbENvbnN0cmFpbnRzKTsKICAgICBVc2VkSG9yaXpvbnRhbE1hcmdpbiB1c2VkSG9y
aXpvbnRhbE1hcmdpbjsKICAgICBhdXRvIHBhZGRpbmdMZWZ0ID0gYm94R2VvbWV0cnkucGFkZGlu
Z0xlZnQoKS52YWx1ZU9yKDApOwpAQCAtNjE0LDcgKzYxNCw3IEBAIEhvcml6b250YWxHZW9tZXRy
eSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkSG9yaXpv
bnRhbEdlCiAgICAgcmV0dXJuIHsgKmxlZnQsICpyaWdodCwgeyAqd2lkdGgsIHVzZWRIb3Jpem9u
dGFsTWFyZ2luIH0gfTsKIH0KIAotVmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkVmVydGljYWxHZW9tZXRyeShjb25zdCBSZXBsYWNl
ZEJveCYgcmVwbGFjZWRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRh
bENvbnN0cmFpbnRzLCBjb25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJiB2ZXJ0aWNhbENvbnN0cmFp
bnRzLCBjb25zdCBPdmVycmlkZVZlcnRpY2FsVmFsdWVzJiBvdmVycmlkZVZlcnRpY2FsVmFsdWVz
KSBjb25zdAorVmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91
dE9mRmxvd1JlcGxhY2VkVmVydGljYWxHZW9tZXRyeShjb25zdCBSZXBsYWNlZEJveCYgcmVwbGFj
ZWRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRz
LCBjb25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJiB2ZXJ0aWNhbENvbnN0cmFpbnRzLCBjb25zdCBP
dmVycmlkZGVuVmVydGljYWxWYWx1ZXMmIG92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcykgY29uc3QK
IHsKICAgICBBU1NFUlQocmVwbGFjZWRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpOwogICAg
IEFTU0VSVCh2ZXJ0aWNhbENvbnN0cmFpbnRzLmxvZ2ljYWxIZWlnaHQpOwpAQCAtNjM3LDcgKzYz
Nyw3IEBAIFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRP
ZkZsb3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoCiAKICAgICBhdXRvIHRvcCA9IGNvbXB1dGVk
VmFsdWUoc3R5bGUubG9naWNhbFRvcCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAgYXV0
byBib3R0b20gPSBjb21wdXRlZFZhbHVlKHN0eWxlLmxvZ2ljYWxCb3R0b20oKSwgY29udGFpbmlu
Z0Jsb2NrV2lkdGgpOwotICAgIGF1dG8gaGVpZ2h0ID0gaW5saW5lUmVwbGFjZWRIZWlnaHRBbmRN
YXJnaW4ocmVwbGFjZWRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cywgdmVydGljYWxDb25zdHJh
aW50cywgb3ZlcnJpZGVWZXJ0aWNhbFZhbHVlcykuY29udGVudEhlaWdodDsKKyAgICBhdXRvIGhl
aWdodCA9IGlubGluZVJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKHJlcGxhY2VkQm94LCBob3Jpem9u
dGFsQ29uc3RyYWludHMsIHZlcnRpY2FsQ29uc3RyYWludHMsIG92ZXJyaWRkZW5WZXJ0aWNhbFZh
bHVlcykuY29udGVudEhlaWdodDsKICAgICBhdXRvIGNvbXB1dGVkVmVydGljYWxNYXJnaW4gPSBH
ZW9tZXRyeTo6Y29tcHV0ZWRWZXJ0aWNhbE1hcmdpbihyZXBsYWNlZEJveCwgaG9yaXpvbnRhbENv
bnN0cmFpbnRzKTsKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkTWFyZ2luQmVmb3JlID0g
Y29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmU7CiAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
dXNlZE1hcmdpbkFmdGVyID0gY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlcjsKQEAgLTY5Niw3
ICs2OTYsNyBAQCBWZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
b3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KAogICAgIHJldHVybiB7ICp0b3AsICpi
b3R0b20sIHsgaGVpZ2h0LCB7ICp1c2VkTWFyZ2luQmVmb3JlLCAqdXNlZE1hcmdpbkFmdGVyIH0g
fSB9OwogfQogCi1Ib3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjpvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeShjb25zdCBSZXBsYWNlZEJveCYg
cmVwbGFjZWRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0
cmFpbnRzLCBjb25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJiB2ZXJ0aWNhbENvbnN0cmFpbnRzLCBj
b25zdCBPdmVycmlkZUhvcml6b250YWxWYWx1ZXMmIG92ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcykK
K0hvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxv
d1JlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5KGNvbnN0IFJlcGxhY2VkQm94JiByZXBsYWNlZEJv
eCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNv
bnN0IFZlcnRpY2FsQ29uc3RyYWludHMmIHZlcnRpY2FsQ29uc3RyYWludHMsIGNvbnN0IE92ZXJy
aWRkZW5Ib3Jpem9udGFsVmFsdWVzJiBvdmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcykKIHsKICAg
ICBBU1NFUlQocmVwbGFjZWRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpOwogCkBAIC03MjUs
NyArNzI1LDcgQEAgSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6b3V0T2ZGbG93UmVwbGFjZWRIb3Jpem9udGFsR2VvbWUKICAgICBhdXRvIGNvbXB1dGVkSG9y
aXpvbnRhbE1hcmdpbiA9IEdlb21ldHJ5Ojpjb21wdXRlZEhvcml6b250YWxNYXJnaW4ocmVwbGFj
ZWRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cyk7CiAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
dXNlZE1hcmdpblN0YXJ0ID0gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0OwogICAgIE9w
dGlvbmFsPExheW91dFVuaXQ+IHVzZWRNYXJnaW5FbmQgPSBjb21wdXRlZEhvcml6b250YWxNYXJn
aW4uZW5kOwotICAgIGF1dG8gd2lkdGggPSBpbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKHJl
cGxhY2VkQm94LCBob3Jpem9udGFsQ29uc3RyYWludHMsIHZlcnRpY2FsQ29uc3RyYWludHMsIG92
ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcykuY29udGVudFdpZHRoOworICAgIGF1dG8gd2lkdGggPSBp
bmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKHJlcGxhY2VkQm94LCBob3Jpem9udGFsQ29uc3Ry
YWludHMsIHZlcnRpY2FsQ29uc3RyYWludHMsIG92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzKS5j
b250ZW50V2lkdGg7CiAgICAgYXV0byBwYWRkaW5nTGVmdCA9IGJveEdlb21ldHJ5LnBhZGRpbmdM
ZWZ0KCkudmFsdWVPcigwKTsKICAgICBhdXRvIHBhZGRpbmdSaWdodCA9IGJveEdlb21ldHJ5LnBh
ZGRpbmdSaWdodCgpLnZhbHVlT3IoMCk7CiAgICAgYXV0byBib3JkZXJMZWZ0ID0gYm94R2VvbWV0
cnkuYm9yZGVyTGVmdCgpOwpAQCAtODAwLDcgKzgwMCw3IEBAIEhvcml6b250YWxHZW9tZXRyeSBG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRhbEdl
b21lCiAgICAgcmV0dXJuIHsgKmxlZnQsICpyaWdodCwgeyB3aWR0aCwgeyAqdXNlZE1hcmdpblN0
YXJ0LCAqdXNlZE1hcmdpbkVuZCB9IH0gfTsKIH0KIAotQ29udGVudEhlaWdodEFuZE1hcmdpbiBG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXBsaWNhdGVkQ2FzZXMoY29uc3QgQm94JiBs
YXlvdXRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFp
bnRzLCBjb25zdCBPdmVycmlkZVZlcnRpY2FsVmFsdWVzJiBvdmVycmlkZVZlcnRpY2FsVmFsdWVz
KSBjb25zdAorQ29udGVudEhlaWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OmNvbXBsaWNhdGVkQ2FzZXMoY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6b250
YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBPdmVycmlkZGVuVmVy
dGljYWxWYWx1ZXMmIG92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcykgY29uc3QKIHsKICAgICBBU1NF
UlQoIWxheW91dEJveC5pc1JlcGxhY2VkQm94KCkpOwogICAgIC8vIFRPRE86IFVzZSBjb21wbGlj
YXRlZC1jYXNlIGZvciBkb2N1bWVudCByZW5kZXJlciBmb3Igbm93IChzZWUgQmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd0hlaWdodEFuZE1hcmdpbikuCkBAIC04MTUsNyAr
ODE1LDcgQEAgQ29udGVudEhlaWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OmNvbXBsaWNhdGVkQ2FzZXMoY29uc3QgQm94JgogICAgIC8vIDEuIElmICdtYXJnaW4tdG9w
Jywgb3IgJ21hcmdpbi1ib3R0b20nIGFyZSAnYXV0bycsIHRoZWlyIHVzZWQgdmFsdWUgaXMgMC4K
ICAgICAvLyAyLiBJZiAnaGVpZ2h0JyBpcyAnYXV0bycsIHRoZSBoZWlnaHQgZGVwZW5kcyBvbiB0
aGUgZWxlbWVudCdzIGRlc2NlbmRhbnRzIHBlciAxMC42LjcuCiAKLSAgICBhdXRvIGhlaWdodCA9
IG92ZXJyaWRlVmVydGljYWxWYWx1ZXMuaGVpZ2h0ID8gb3ZlcnJpZGVWZXJ0aWNhbFZhbHVlcy5o
ZWlnaHQudmFsdWUoKSA6IGNvbXB1dGVkSGVpZ2h0KGxheW91dEJveCk7CisgICAgYXV0byBoZWln
aHQgPSBvdmVycmlkZGVuVmVydGljYWxWYWx1ZXMuaGVpZ2h0ID8gb3ZlcnJpZGRlblZlcnRpY2Fs
VmFsdWVzLmhlaWdodC52YWx1ZSgpIDogY29tcHV0ZWRIZWlnaHQobGF5b3V0Qm94KTsKICAgICBh
dXRvIGNvbXB1dGVkVmVydGljYWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWRWZXJ0aWNhbE1h
cmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cyk7CiAgICAgLy8gIzEKICAgICBh
dXRvIHVzZWRWZXJ0aWNhbE1hcmdpbiA9IFVzZWRWZXJ0aWNhbE1hcmdpbjo6Tm9uQ29sbGFwc2Vk
VmFsdWVzIHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVPcigwKSwgY29tcHV0
ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZU9yKDApIH07IApAQCAtODUxLDcgKzg1MSw3IEBA
IENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21w
bGljYXRlZENhc2VzKGNvbnN0IEJveCYKICAgICByZXR1cm4gQ29udGVudEhlaWdodEFuZE1hcmdp
biB7ICpoZWlnaHQsIHVzZWRWZXJ0aWNhbE1hcmdpbiB9OwogfQogCi1Db250ZW50V2lkdGhBbmRN
YXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ05vblJlcGxhY2VkV2lk
dGhBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJh
aW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBPdmVycmlkZUhvcml6b250YWxWYWx1
ZXMmIG92ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcykKK0NvbnRlbnRXaWR0aEFuZE1hcmdpbiBGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nTm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdp
bihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jp
em9udGFsQ29uc3RyYWludHMsIGNvbnN0IE92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzJiBvdmVy
cmlkZGVuSG9yaXpvbnRhbFZhbHVlcykKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzRmxvYXRp
bmdQb3NpdGlvbmVkKCkgJiYgIWxheW91dEJveC5pc1JlcGxhY2VkQm94KCkpOwogCkBAIC04NjUs
NyArODY1LDcgQEAgQ29udGVudFdpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6ZmxvYXRpbmdOb25SZXBsYWNlZFdpZHRoQW5kTWEKICAgICAvLyAjMQogICAgIGF1dG8g
dXNlZEhvcml6b250YWxsTWFyZ2luID0gVXNlZEhvcml6b250YWxNYXJnaW4geyBjb21wdXRlZEhv
cml6b250YWxNYXJnaW4uc3RhcnQudmFsdWVPcigwKSwgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2lu
LmVuZC52YWx1ZU9yKDApIH07CiAgICAgLy8gIzIKLSAgICBhdXRvIHdpZHRoID0gb3ZlcnJpZGVI
b3Jpem9udGFsVmFsdWVzLndpZHRoID8gb3ZlcnJpZGVIb3Jpem9udGFsVmFsdWVzLndpZHRoIDog
Y29tcHV0ZWRXaWR0aChsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cy5sb2dpY2FsV2lk
dGgpOworICAgIGF1dG8gd2lkdGggPSBvdmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcy53aWR0aCA/
IG92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzLndpZHRoIDogY29tcHV0ZWRXaWR0aChsYXlvdXRC
b3gsIGhvcml6b250YWxDb25zdHJhaW50cy5sb2dpY2FsV2lkdGgpOwogICAgIGlmICghd2lkdGgp
CiAgICAgICAgIHdpZHRoID0gc2hyaW5rVG9GaXRXaWR0aChsYXlvdXRCb3gsIGhvcml6b250YWxD
b25zdHJhaW50cy5sb2dpY2FsV2lkdGgpOwogCkBAIC04NzMsMTcgKzg3MywxNyBAQCBDb250ZW50
V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ05vblJl
cGxhY2VkV2lkdGhBbmRNYQogICAgIHJldHVybiBDb250ZW50V2lkdGhBbmRNYXJnaW4geyAqd2lk
dGgsIHVzZWRIb3Jpem9udGFsbE1hcmdpbiB9OwogfQogCi1Db250ZW50SGVpZ2h0QW5kTWFyZ2lu
IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdSZXBsYWNlZEhlaWdodEFuZE1h
cmdpbihjb25zdCBSZXBsYWNlZEJveCYgcmVwbGFjZWRCb3gsIGNvbnN0IEhvcml6b250YWxDb25z
dHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBPdmVycmlkZVZlcnRpY2FsVmFs
dWVzJiBvdmVycmlkZVZlcnRpY2FsVmFsdWVzKSBjb25zdAorQ29udGVudEhlaWdodEFuZE1hcmdp
biBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nUmVwbGFjZWRIZWlnaHRBbmRN
YXJnaW4oY29uc3QgUmVwbGFjZWRCb3gmIHJlcGxhY2VkQm94LCBjb25zdCBIb3Jpem9udGFsQ29u
c3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgT3ZlcnJpZGRlblZlcnRpY2Fs
VmFsdWVzJiBvdmVycmlkZGVuVmVydGljYWxWYWx1ZXMpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHJl
cGxhY2VkQm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpOwogCiAgICAgLy8gMTAuNi4yIElubGlu
ZSByZXBsYWNlZCBlbGVtZW50cywgYmxvY2stbGV2ZWwgcmVwbGFjZWQgZWxlbWVudHMgaW4gbm9y
bWFsIGZsb3csICdpbmxpbmUtYmxvY2snCiAgICAgLy8gcmVwbGFjZWQgZWxlbWVudHMgaW4gbm9y
bWFsIGZsb3cgYW5kIGZsb2F0aW5nIHJlcGxhY2VkIGVsZW1lbnRzCiAgICAgTE9HX1dJVEhfU1RS
RUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltIZWlnaHRdW01hcmdpbl0g
LT4gZmxvYXRpbmcgcmVwbGFjZWQgLT4gcmVkaXJlY3RlZCB0byBpbmxpbmUgcmVwbGFjZWQiKTsK
LSAgICByZXR1cm4gaW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4ocmVwbGFjZWRCb3gsIGhv
cml6b250YWxDb25zdHJhaW50cywgeyB9LCBvdmVycmlkZVZlcnRpY2FsVmFsdWVzKTsKKyAgICBy
ZXR1cm4gaW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4ocmVwbGFjZWRCb3gsIGhvcml6b250
YWxDb25zdHJhaW50cywgeyB9LCBvdmVycmlkZGVuVmVydGljYWxWYWx1ZXMpOwogfQogCi1Db250
ZW50V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ1Jl
cGxhY2VkV2lkdGhBbmRNYXJnaW4oY29uc3QgUmVwbGFjZWRCb3gmIHJlcGxhY2VkQm94LCBjb25z
dCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgT3Zl
cnJpZGVIb3Jpem9udGFsVmFsdWVzJiBvdmVycmlkZUhvcml6b250YWxWYWx1ZXMpCitDb250ZW50
V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ1JlcGxh
Y2VkV2lkdGhBbmRNYXJnaW4oY29uc3QgUmVwbGFjZWRCb3gmIHJlcGxhY2VkQm94LCBjb25zdCBI
b3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgT3ZlcnJp
ZGRlbkhvcml6b250YWxWYWx1ZXMmIG92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzKQogewogICAg
IEFTU0VSVChyZXBsYWNlZEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKTsKIApAQCAtODk1LDQ2
ICs4OTUsNDYgQEAgQ29udGVudFdpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6ZmxvYXRpbmdSZXBsYWNlZFdpZHRoQW5kTWFyZ2kKIAogICAgIExPR19XSVRIX1NUUkVB
TShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbSGVpZ2h0XVtNYXJnaW5dIC0+
IGZsb2F0aW5nIHJlcGxhY2VkIC0+IHJlZGlyZWN0ZWQgdG8gaW5saW5lIHJlcGxhY2VkIik7CiAg
ICAgYXV0byB1c2VkTWFyZ2luID0gVXNlZEhvcml6b250YWxNYXJnaW4geyBjb21wdXRlZEhvcml6
b250YWxNYXJnaW4uc3RhcnQudmFsdWVPcigwKSwgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVu
ZC52YWx1ZU9yKDApIH07Ci0gICAgcmV0dXJuIGlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4o
cmVwbGFjZWRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cywgeyB9LCB7IG92ZXJyaWRlSG9yaXpv
bnRhbFZhbHVlcy53aWR0aCwgdXNlZE1hcmdpbiB9KTsKKyAgICByZXR1cm4gaW5saW5lUmVwbGFj
ZWRXaWR0aEFuZE1hcmdpbihyZXBsYWNlZEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB7IH0s
IHsgb3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMud2lkdGgsIHVzZWRNYXJnaW4gfSk7CiB9CiAK
LVZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dW
ZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem9udGFsQ29u
c3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgVmVydGljYWxDb25zdHJhaW50
cyYgdmVydGljYWxDb25zdHJhaW50cywgY29uc3QgT3ZlcnJpZGVWZXJ0aWNhbFZhbHVlcyYgb3Zl
cnJpZGVWZXJ0aWNhbFZhbHVlcykgY29uc3QKK1ZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IEJveCYgbGF5
b3V0Qm94LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50
cywgY29uc3QgVmVydGljYWxDb25zdHJhaW50cyYgdmVydGljYWxDb25zdHJhaW50cywgY29uc3Qg
T3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzJiBvdmVycmlkZGVuVmVydGljYWxWYWx1ZXMpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSk7CiAKICAg
ICBpZiAoIWxheW91dEJveC5pc1JlcGxhY2VkQm94KCkpCi0gICAgICAgIHJldHVybiBvdXRPZkZs
b3dOb25SZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoZG93bmNhc3Q8Q29udGFpbmVyQm94PihsYXlv
dXRCb3gpLCBob3Jpem9udGFsQ29uc3RyYWludHMsIHZlcnRpY2FsQ29uc3RyYWludHMsIG92ZXJy
aWRlVmVydGljYWxWYWx1ZXMpOwotICAgIHJldHVybiBvdXRPZkZsb3dSZXBsYWNlZFZlcnRpY2Fs
R2VvbWV0cnkoZG93bmNhc3Q8UmVwbGFjZWRCb3g+KGxheW91dEJveCksIGhvcml6b250YWxDb25z
dHJhaW50cywgdmVydGljYWxDb25zdHJhaW50cywgb3ZlcnJpZGVWZXJ0aWNhbFZhbHVlcyk7Cisg
ICAgICAgIHJldHVybiBvdXRPZkZsb3dOb25SZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoZG93bmNh
c3Q8Q29udGFpbmVyQm94PihsYXlvdXRCb3gpLCBob3Jpem9udGFsQ29uc3RyYWludHMsIHZlcnRp
Y2FsQ29uc3RyYWludHMsIG92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcyk7CisgICAgcmV0dXJuIG91
dE9mRmxvd1JlcGxhY2VkVmVydGljYWxHZW9tZXRyeShkb3duY2FzdDxSZXBsYWNlZEJveD4obGF5
b3V0Qm94KSwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB2ZXJ0aWNhbENvbnN0cmFpbnRzLCBvdmVy
cmlkZGVuVmVydGljYWxWYWx1ZXMpOwogfQogCi1Ib3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkoY29uc3QgQm94
JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0
cmFpbnRzLCBjb25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJiB2ZXJ0aWNhbENvbnN0cmFpbnRzLCBj
b25zdCBPdmVycmlkZUhvcml6b250YWxWYWx1ZXMmIG92ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcykK
K0hvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxv
d0hvcml6b250YWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpvbnRh
bENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IFZlcnRpY2FsQ29uc3Ry
YWludHMmIHZlcnRpY2FsQ29uc3RyYWludHMsIGNvbnN0IE92ZXJyaWRkZW5Ib3Jpem9udGFsVmFs
dWVzJiBvdmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcykKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94
LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKTsKIAogICAgIGlmICghbGF5b3V0Qm94LmlzUmVwbGFj
ZWRCb3goKSkKLSAgICAgICAgcmV0dXJuIG91dE9mRmxvd05vblJlcGxhY2VkSG9yaXpvbnRhbEdl
b21ldHJ5KGRvd25jYXN0PENvbnRhaW5lckJveD4obGF5b3V0Qm94KSwgaG9yaXpvbnRhbENvbnN0
cmFpbnRzLCBvdmVycmlkZUhvcml6b250YWxWYWx1ZXMpOwotICAgIHJldHVybiBvdXRPZkZsb3dS
ZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeShkb3duY2FzdDxSZXBsYWNlZEJveD4obGF5b3V0Qm94
KSwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB2ZXJ0aWNhbENvbnN0cmFpbnRzLCBvdmVycmlkZUhv
cml6b250YWxWYWx1ZXMpOworICAgICAgICByZXR1cm4gb3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jp
em9udGFsR2VvbWV0cnkoZG93bmNhc3Q8Q29udGFpbmVyQm94PihsYXlvdXRCb3gpLCBob3Jpem9u
dGFsQ29uc3RyYWludHMsIG92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzKTsKKyAgICByZXR1cm4g
b3V0T2ZGbG93UmVwbGFjZWRIb3Jpem9udGFsR2VvbWV0cnkoZG93bmNhc3Q8UmVwbGFjZWRCb3g+
KGxheW91dEJveCksIGhvcml6b250YWxDb25zdHJhaW50cywgdmVydGljYWxDb25zdHJhaW50cywg
b3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMpOwogfQogCi1Db250ZW50SGVpZ2h0QW5kTWFyZ2lu
IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdIZWlnaHRBbmRNYXJnaW4oY29u
c3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRh
bENvbnN0cmFpbnRzLCBjb25zdCBPdmVycmlkZVZlcnRpY2FsVmFsdWVzJiBvdmVycmlkZVZlcnRp
Y2FsVmFsdWVzKSBjb25zdAorQ29udGVudEhlaWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmZsb2F0aW5nSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94
LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29u
c3QgT3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzJiBvdmVycmlkZGVuVmVydGljYWxWYWx1ZXMpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKTsKIAog
ICAgIGlmICghbGF5b3V0Qm94LmlzUmVwbGFjZWRCb3goKSkKLSAgICAgICAgcmV0dXJuIGNvbXBs
aWNhdGVkQ2FzZXMobGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMsIG92ZXJyaWRlVmVy
dGljYWxWYWx1ZXMpOwotICAgIHJldHVybiBmbG9hdGluZ1JlcGxhY2VkSGVpZ2h0QW5kTWFyZ2lu
KGRvd25jYXN0PFJlcGxhY2VkQm94PihsYXlvdXRCb3gpLCBob3Jpem9udGFsQ29uc3RyYWludHMs
IG92ZXJyaWRlVmVydGljYWxWYWx1ZXMpOworICAgICAgICByZXR1cm4gY29tcGxpY2F0ZWRDYXNl
cyhsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cywgb3ZlcnJpZGRlblZlcnRpY2FsVmFs
dWVzKTsKKyAgICByZXR1cm4gZmxvYXRpbmdSZXBsYWNlZEhlaWdodEFuZE1hcmdpbihkb3duY2Fz
dDxSZXBsYWNlZEJveD4obGF5b3V0Qm94KSwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBvdmVycmlk
ZGVuVmVydGljYWxWYWx1ZXMpOwogfQogCi1Db250ZW50V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ1dpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5
b3V0Qm94LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50
cywgY29uc3QgT3ZlcnJpZGVIb3Jpem9udGFsVmFsdWVzJiBvdmVycmlkZUhvcml6b250YWxWYWx1
ZXMpCitDb250ZW50V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpm
bG9hdGluZ1dpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem9u
dGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgT3ZlcnJpZGRlbkhv
cml6b250YWxWYWx1ZXMmIG92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzKQogewogICAgIEFTU0VS
VChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSk7CiAKICAgICBpZiAoIWxheW91dEJv
eC5pc1JlcGxhY2VkQm94KCkpCi0gICAgICAgIHJldHVybiBmbG9hdGluZ05vblJlcGxhY2VkV2lk
dGhBbmRNYXJnaW4obGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMsIG92ZXJyaWRlSG9y
aXpvbnRhbFZhbHVlcyk7Ci0gICAgcmV0dXJuIGZsb2F0aW5nUmVwbGFjZWRXaWR0aEFuZE1hcmdp
bihkb3duY2FzdDxSZXBsYWNlZEJveD4obGF5b3V0Qm94KSwgaG9yaXpvbnRhbENvbnN0cmFpbnRz
LCBvdmVycmlkZUhvcml6b250YWxWYWx1ZXMpOworICAgICAgICByZXR1cm4gZmxvYXRpbmdOb25S
ZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBv
dmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcyk7CisgICAgcmV0dXJuIGZsb2F0aW5nUmVwbGFjZWRX
aWR0aEFuZE1hcmdpbihkb3duY2FzdDxSZXBsYWNlZEJveD4obGF5b3V0Qm94KSwgaG9yaXpvbnRh
bENvbnN0cmFpbnRzLCBvdmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcyk7CiB9CiAKLUNvbnRlbnRI
ZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNl
ZEhlaWdodEFuZE1hcmdpbihjb25zdCBSZXBsYWNlZEJveCYgcmVwbGFjZWRCb3gsIGNvbnN0IEhv
cml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBPcHRpb25hbDxWZXJ0
aWNhbENvbnN0cmFpbnRzPiB2ZXJ0aWNhbENvbnN0cmFpbnRzLCBjb25zdCBPdmVycmlkZVZlcnRp
Y2FsVmFsdWVzJiBvdmVycmlkZVZlcnRpY2FsVmFsdWVzKSBjb25zdAorQ29udGVudEhlaWdodEFu
ZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkSGVpZ2h0
QW5kTWFyZ2luKGNvbnN0IFJlcGxhY2VkQm94JiByZXBsYWNlZEJveCwgY29uc3QgSG9yaXpvbnRh
bENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIE9wdGlvbmFsPFZlcnRpY2FsQ29u
c3RyYWludHM+IHZlcnRpY2FsQ29uc3RyYWludHMsIGNvbnN0IE92ZXJyaWRkZW5WZXJ0aWNhbFZh
bHVlcyYgb3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzKSBjb25zdAogewogICAgIC8vIDEwLjYuMiBJ
bmxpbmUgcmVwbGFjZWQgZWxlbWVudHMsIGJsb2NrLWxldmVsIHJlcGxhY2VkIGVsZW1lbnRzIGlu
IG5vcm1hbCBmbG93LCAnaW5saW5lLWJsb2NrJyByZXBsYWNlZCBlbGVtZW50cyBpbiBub3JtYWwg
ZmxvdyBhbmQgZmxvYXRpbmcgcmVwbGFjZWQgZWxlbWVudHMKICAgICAvLwpAQCAtOTUyLDggKzk1
Miw4IEBAIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjppbmxpbmVSZXBsYWNlZEhlaWdodEFuZE1hcmdpCiAgICAgYXV0byB1c2VkVmVydGljYWxNYXJn
aW4gPSBVc2VkVmVydGljYWxNYXJnaW46Ok5vbkNvbGxhcHNlZFZhbHVlcyB7IGNvbXB1dGVkVmVy
dGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlT3IoMCksIGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYWZ0
ZXIudmFsdWVPcigwKSB9OwogICAgIGF1dG8mIHN0eWxlID0gcmVwbGFjZWRCb3guc3R5bGUoKTsK
IAotICAgIGF1dG8gaGVpZ2h0ID0gb3ZlcnJpZGVWZXJ0aWNhbFZhbHVlcy5oZWlnaHQgPyBvdmVy
cmlkZVZlcnRpY2FsVmFsdWVzLmhlaWdodC52YWx1ZSgpIDogY29tcHV0ZWRIZWlnaHQocmVwbGFj
ZWRCb3gsIHZlcnRpY2FsQ29uc3RyYWludHMgPyB2ZXJ0aWNhbENvbnN0cmFpbnRzLT5sb2dpY2Fs
SGVpZ2h0IDogV1RGOjpudWxsb3B0KTsKLSAgICBhdXRvIGhlaWdodElzQXV0byA9ICFvdmVycmlk
ZVZlcnRpY2FsVmFsdWVzLmhlaWdodCAmJiBpc0hlaWdodEF1dG8ocmVwbGFjZWRCb3gpOworICAg
IGF1dG8gaGVpZ2h0ID0gb3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzLmhlaWdodCA/IG92ZXJyaWRk
ZW5WZXJ0aWNhbFZhbHVlcy5oZWlnaHQudmFsdWUoKSA6IGNvbXB1dGVkSGVpZ2h0KHJlcGxhY2Vk
Qm94LCB2ZXJ0aWNhbENvbnN0cmFpbnRzID8gdmVydGljYWxDb25zdHJhaW50cy0+bG9naWNhbEhl
aWdodCA6IFdURjo6bnVsbG9wdCk7CisgICAgYXV0byBoZWlnaHRJc0F1dG8gPSAhb3ZlcnJpZGRl
blZlcnRpY2FsVmFsdWVzLmhlaWdodCAmJiBpc0hlaWdodEF1dG8ocmVwbGFjZWRCb3gpOwogICAg
IGF1dG8gd2lkdGhJc0F1dG8gPSBzdHlsZS5sb2dpY2FsV2lkdGgoKS5pc0F1dG8oKTsKIAogICAg
IGlmIChoZWlnaHRJc0F1dG8gJiYgd2lkdGhJc0F1dG8gJiYgcmVwbGFjZWRCb3guaGFzSW50cmlu
c2ljSGVpZ2h0KCkpIHsKQEAgLTk3Nyw3ICs5NzcsNyBAQCBDb250ZW50SGVpZ2h0QW5kTWFyZ2lu
IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJn
aQogICAgIHJldHVybiB7ICpoZWlnaHQsIHVzZWRWZXJ0aWNhbE1hcmdpbiB9OwogfQogCi1Db250
ZW50V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBs
YWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IFJlcGxhY2VkQm94JiByZXBsYWNlZEJveCwgY29uc3Qg
SG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIE9wdGlvbmFsPFZl
cnRpY2FsQ29uc3RyYWludHM+IHZlcnRpY2FsQ29uc3RyYWludHMsIGNvbnN0IE92ZXJyaWRlSG9y
aXpvbnRhbFZhbHVlcyYgb3ZlcnJpZGVIb3Jpem9udGFsVmFsdWVzKQorQ29udGVudFdpZHRoQW5k
TWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRXaWR0aEFu
ZE1hcmdpbihjb25zdCBSZXBsYWNlZEJveCYgcmVwbGFjZWRCb3gsIGNvbnN0IEhvcml6b250YWxD
b25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBPcHRpb25hbDxWZXJ0aWNhbENvbnN0
cmFpbnRzPiB2ZXJ0aWNhbENvbnN0cmFpbnRzLCBjb25zdCBPdmVycmlkZGVuSG9yaXpvbnRhbFZh
bHVlcyYgb3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMpCiB7CiAgICAgLy8gMTAuMy4yIElubGlu
ZSwgcmVwbGFjZWQgZWxlbWVudHMKICAgICAvLwpAQCAtMTAwMSwxOCArMTAwMSwxOCBAQCBDb250
ZW50V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBs
YWNlZFdpZHRoQW5kTWFyZ2luKAogICAgIGF1dG8gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luID0g
R2VvbWV0cnk6OmNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbihyZXBsYWNlZEJveCwgaG9yaXpvbnRh
bENvbnN0cmFpbnRzKTsKIAogICAgIGF1dG8gdXNlZE1hcmdpblN0YXJ0ID0gWyZdIHsKLSAgICAg
ICAgaWYgKG92ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcy5tYXJnaW4pCi0gICAgICAgICAgICByZXR1
cm4gb3ZlcnJpZGVIb3Jpem9udGFsVmFsdWVzLm1hcmdpbi0+c3RhcnQ7CisgICAgICAgIGlmIChv
dmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcy5tYXJnaW4pCisgICAgICAgICAgICByZXR1cm4gb3Zl
cnJpZGRlbkhvcml6b250YWxWYWx1ZXMubWFyZ2luLT5zdGFydDsKICAgICAgICAgcmV0dXJuIGNv
bXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZU9yKDBfbHUpOwogICAgIH07CiAKICAg
ICBhdXRvIHVzZWRNYXJnaW5FbmQgPSBbJl0gewotICAgICAgICBpZiAob3ZlcnJpZGVIb3Jpem9u
dGFsVmFsdWVzLm1hcmdpbikKLSAgICAgICAgICAgIHJldHVybiBvdmVycmlkZUhvcml6b250YWxW
YWx1ZXMubWFyZ2luLT5lbmQ7CisgICAgICAgIGlmIChvdmVycmlkZGVuSG9yaXpvbnRhbFZhbHVl
cy5tYXJnaW4pCisgICAgICAgICAgICByZXR1cm4gb3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMu
bWFyZ2luLT5lbmQ7CiAgICAgICAgIHJldHVybiBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5k
LnZhbHVlT3IoMF9sdSk7CiAgICAgfTsKIAotICAgIGF1dG8gd2lkdGggPSBvdmVycmlkZUhvcml6
b250YWxWYWx1ZXMud2lkdGggPyBvdmVycmlkZUhvcml6b250YWxWYWx1ZXMud2lkdGggOiBjb21w
dXRlZFdpZHRoKHJlcGxhY2VkQm94LCBob3Jpem9udGFsQ29uc3RyYWludHMubG9naWNhbFdpZHRo
KTsKKyAgICBhdXRvIHdpZHRoID0gb3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMud2lkdGggPyBv
dmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcy53aWR0aCA6IGNvbXB1dGVkV2lkdGgocmVwbGFjZWRC
b3gsIGhvcml6b250YWxDb25zdHJhaW50cy5sb2dpY2FsV2lkdGgpOwogICAgIGF1dG8gaGVpZ2h0
SXNBdXRvID0gaXNIZWlnaHRBdXRvKHJlcGxhY2VkQm94KTsKICAgICBhdXRvIGhlaWdodCA9IGNv
bXB1dGVkSGVpZ2h0KHJlcGxhY2VkQm94LCB2ZXJ0aWNhbENvbnN0cmFpbnRzID8gdmVydGljYWxD
b25zdHJhaW50cy0+bG9naWNhbEhlaWdodCA6IFdURjo6bnVsbG9wdCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5oIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L0xheW91dFVuaXRzLmgKaW5kZXggNzQyNWExZDk2NjgxNzBlMjJjMjk5NDFlZGQxNWYwZTAy
NDRhNWFlNi4uOWRiYzI5N2NhZDEyM2NjYTQ1NDRlNDc4MDdmZWExNGM2ZDllMDBkZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFVuaXRzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L0xheW91dFVuaXRzLmgKQEAgLTE2OSwxMiArMTY5LDEyIEBAIHN0cnVjdCBW
ZXJ0aWNhbENvbnN0cmFpbnRzIHsKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBsb2dpY2FsSGVp
Z2h0OwogfTsKIAotc3RydWN0IE92ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcyB7CitzdHJ1Y3QgT3Zl
cnJpZGRlbkhvcml6b250YWxWYWx1ZXMgewogICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IHdpZHRo
OwogICAgIE9wdGlvbmFsPFVzZWRIb3Jpem9udGFsTWFyZ2luPiBtYXJnaW47CiB9OwogCi1zdHJ1
Y3QgT3ZlcnJpZGVWZXJ0aWNhbFZhbHVlcyB7CitzdHJ1Y3QgT3ZlcnJpZGRlblZlcnRpY2FsVmFs
dWVzIHsKICAgICAvLyBDb25zaWRlciBjb2xsYXBzaW5nIGl0LgogICAgIE9wdGlvbmFsPExheW91
dFVuaXQ+IGhlaWdodDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxv
Y2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDUwN2Zh
Mjk3YTBjZjc0ZDJmMTZlYWFkNWI5N2VlNjU5NWY1ZTdhM2MuLmIyZWJlN2IxYzk4NGM0ZmMwNWVj
NWM4YmI0ZTM2MmExZjgwMjYxNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9i
bG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC03
Niw4ICs3Niw4IEBAIHByb3RlY3RlZDoKICAgICBwdWJsaWM6CiAgICAgICAgIEdlb21ldHJ5KGNv
bnN0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQmKTsKIAotICAgICAgICBDb250ZW50SGVpZ2h0QW5k
TWFyZ2luIGluRmxvd0hlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFs
Q29uc3RyYWludHMmLCBjb25zdCBPdmVycmlkZVZlcnRpY2FsVmFsdWVzJik7Ci0gICAgICAgIENv
bnRlbnRXaWR0aEFuZE1hcmdpbiBpbkZsb3dXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25z
dCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25zdCBPdmVycmlkZUhvcml6b250YWxWYWx1ZXMm
KTsKKyAgICAgICAgQ29udGVudEhlaWdodEFuZE1hcmdpbiBpbkZsb3dIZWlnaHRBbmRNYXJnaW4o
Y29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgT3ZlcnJpZGRl
blZlcnRpY2FsVmFsdWVzJik7CisgICAgICAgIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBpbkZsb3dX
aWR0aEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBj
b25zdCBPdmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcyYpOwogCiAgICAgICAgIFBvaW50IHN0YXRp
Y1Bvc2l0aW9uKGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYsIGNvbnN0
IFZlcnRpY2FsQ29uc3RyYWludHMmKSBjb25zdDsKICAgICAgICAgTGF5b3V0VW5pdCBzdGF0aWNW
ZXJ0aWNhbFBvc2l0aW9uKGNvbnN0IEJveCYsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMmKSBj
b25zdDsKQEAgLTg4LDkgKzg4LDkgQEAgcHJvdGVjdGVkOgogICAgICAgICBDb250ZW50V2lkdGhB
bmRNYXJnaW4gY29tcHV0ZWRXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9u
dGFsQ29uc3RyYWludHMmLCBPcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVXaWR0aEZsb2F0
QXZvaWRlcik7CiAKICAgICBwcml2YXRlOgotICAgICAgICBDb250ZW50SGVpZ2h0QW5kTWFyZ2lu
IGluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IEhvcml6
b250YWxDb25zdHJhaW50cyYsIGNvbnN0IE92ZXJyaWRlVmVydGljYWxWYWx1ZXMmKTsKLSAgICAg
ICAgQ29udGVudFdpZHRoQW5kTWFyZ2luIGluRmxvd05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4o
Y29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgT3ZlcnJpZGVI
b3Jpem9udGFsVmFsdWVzJik7Ci0gICAgICAgIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBpbkZsb3dS
ZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IFJlcGxhY2VkQm94JiwgY29uc3QgSG9yaXpvbnRh
bENvbnN0cmFpbnRzJiwgY29uc3QgT3ZlcnJpZGVIb3Jpem9udGFsVmFsdWVzJik7CisgICAgICAg
IENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gaW5GbG93Tm9uUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4o
Y29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgT3ZlcnJpZGRl
blZlcnRpY2FsVmFsdWVzJik7CisgICAgICAgIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBpbkZsb3dO
b25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25z
dHJhaW50cyYsIGNvbnN0IE92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzJik7CisgICAgICAgIENv
bnRlbnRXaWR0aEFuZE1hcmdpbiBpbkZsb3dSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IFJl
cGxhY2VkQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgT3ZlcnJpZGRl
bkhvcml6b250YWxWYWx1ZXMmKTsKIAogICAgICAgICBjb25zdCBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0JiBmb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ+KEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Zm9ybWF0dGluZ0Nv
bnRleHQoKSk7IH0KICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Js
b2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2Vv
bWV0cnkuY3BwCmluZGV4IDM0NzU4M2M5NTVkYmFhM2ZmMTkwYmRlZDI3NzU0NDRkNjcwMWYzY2Yu
Ljk5ZjZiNTZmYzFhMjhkNGFiNDE5NGRmNzg2MDMxMjhhYWNmOWQyMWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4
dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5n
L0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTQyLDEyICs0MiwxMiBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CiAKLUNvbnRlbnRIZWlnaHRB
bmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxh
Y2VkSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem9udGFs
Q29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgT3ZlcnJpZGVWZXJ0aWNh
bFZhbHVlcyYgb3ZlcnJpZGVWZXJ0aWNhbFZhbHVlcykKK0NvbnRlbnRIZWlnaHRBbmRNYXJnaW4g
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0
QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWlu
dHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgT3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVz
JiBvdmVycmlkZGVuVmVydGljYWxWYWx1ZXMpCiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0lu
RmxvdygpICYmICFsYXlvdXRCb3guaXNSZXBsYWNlZEJveCgpKTsKICAgICBBU1NFUlQobGF5b3V0
Qm94LmlzT3ZlcmZsb3dWaXNpYmxlKCkpOwogCi0gICAgYXV0byBjb21wdXRlID0gWyZdKGNvbnN0
IGF1dG8mIG92ZXJyaWRlVmVydGljYWxWYWx1ZXMpIC0+IENvbnRlbnRIZWlnaHRBbmRNYXJnaW4g
eworICAgIGF1dG8gY29tcHV0ZSA9IFsmXShjb25zdCBhdXRvJiBvdmVycmlkZGVuVmVydGljYWxW
YWx1ZXMpIC0+IENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gewogCiAgICAgICAgIC8vIDEwLjYuMyBC
bG9jay1sZXZlbCBub24tcmVwbGFjZWQgZWxlbWVudHMgaW4gbm9ybWFsIGZsb3cgd2hlbiAnb3Zl
cmZsb3cnIGNvbXB1dGVzIHRvICd2aXNpYmxlJwogICAgICAgICAvLwpAQCAtNjYsNyArNjYsNyBA
QCBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjppbkZsb3dOb25SZXBsYWNlZEhlaWdodAogICAgICAgICBhdXRvIGNvbXB1dGVkVmVydGljYWxN
YXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWRWZXJ0aWNhbE1hcmdpbihsYXlvdXRCb3gsIGhvcml6
b250YWxDb25zdHJhaW50cyk7CiAgICAgICAgIGF1dG8gbm9uQ29sbGFwc2VkTWFyZ2luID0gVXNl
ZFZlcnRpY2FsTWFyZ2luOjpOb25Db2xsYXBzZWRWYWx1ZXMgeyBjb21wdXRlZFZlcnRpY2FsTWFy
Z2luLmJlZm9yZS52YWx1ZU9yKDApLCBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVl
T3IoMCkgfTsgCiAgICAgICAgIGF1dG8gYm9yZGVyQW5kUGFkZGluZ1RvcCA9IGJveEdlb21ldHJ5
LmJvcmRlclRvcCgpICsgYm94R2VvbWV0cnkucGFkZGluZ1RvcCgpLnZhbHVlT3IoMCk7Ci0gICAg
ICAgIGF1dG8gaGVpZ2h0ID0gb3ZlcnJpZGVWZXJ0aWNhbFZhbHVlcy5oZWlnaHQgPyBvdmVycmlk
ZVZlcnRpY2FsVmFsdWVzLmhlaWdodC52YWx1ZSgpIDogY29tcHV0ZWRIZWlnaHQobGF5b3V0Qm94
KTsKKyAgICAgICAgYXV0byBoZWlnaHQgPSBvdmVycmlkZGVuVmVydGljYWxWYWx1ZXMuaGVpZ2h0
ID8gb3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzLmhlaWdodC52YWx1ZSgpIDogY29tcHV0ZWRIZWln
aHQobGF5b3V0Qm94KTsKIAogICAgICAgICBpZiAoaGVpZ2h0KQogICAgICAgICAgICAgcmV0dXJu
IHsgKmhlaWdodCwgbm9uQ29sbGFwc2VkTWFyZ2luIH07CkBAIC0xMDYsMTMgKzEwNiwxMyBAQCBD
b250ZW50SGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpp
bkZsb3dOb25SZXBsYWNlZEhlaWdodAogICAgIH07CiAKICAgICAvLyAxMC42LjcgJ0F1dG8nIGhl
aWdodHMgZm9yIGJsb2NrLWxldmVsIGZvcm1hdHRpbmcgY29udGV4dCBib3hlcy4KLSAgICBhdXRv
IGlzQXV0b0hlaWdodCA9ICFvdmVycmlkZVZlcnRpY2FsVmFsdWVzLmhlaWdodCAmJiAhY29tcHV0
ZWRIZWlnaHQobGF5b3V0Qm94KTsKKyAgICBhdXRvIGlzQXV0b0hlaWdodCA9ICFvdmVycmlkZGVu
VmVydGljYWxWYWx1ZXMuaGVpZ2h0ICYmICFjb21wdXRlZEhlaWdodChsYXlvdXRCb3gpOwogICAg
IGlmIChpc0F1dG9IZWlnaHQgJiYgKGxheW91dEJveC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250
ZXh0KCkgJiYgIWxheW91dEJveC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkp
KQotICAgICAgICByZXR1cm4gY29tcHV0ZSggT3ZlcnJpZGVWZXJ0aWNhbFZhbHVlcyB7IGNvbnRl
bnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QoZG93bmNhc3Q8Q29udGFpbmVyQm94Pihs
YXlvdXRCb3gpKSB9KTsKLSAgICByZXR1cm4gY29tcHV0ZShvdmVycmlkZVZlcnRpY2FsVmFsdWVz
KTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGUoIE92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcyB7IGNv
bnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QoZG93bmNhc3Q8Q29udGFpbmVyQm94
PihsYXlvdXRCb3gpKSB9KTsKKyAgICByZXR1cm4gY29tcHV0ZShvdmVycmlkZGVuVmVydGljYWxW
YWx1ZXMpOwogfQogCi1Db250ZW50V2lkdGhBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiBs
YXlvdXRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFp
bnRzLCBjb25zdCBPdmVycmlkZUhvcml6b250YWxWYWx1ZXMmIG92ZXJyaWRlSG9yaXpvbnRhbFZh
bHVlcykKK0NvbnRlbnRXaWR0aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJv
eCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNv
bnN0IE92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzJiBvdmVycmlkZGVuSG9yaXpvbnRhbFZhbHVl
cykKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzSW5GbG93KCkpOwogCkBAIC0xNDMsNyArMTQz
LDcgQEAgQ29udGVudFdpZHRoQW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjppbkZsb3dOb25SZXBsYWNlZFdpZHRoQW4KICAgICAgICAgYXV0byYgY29udGFpbmluZ0Js
b2NrU3R5bGUgPSBsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkuc3R5bGUoKTsKICAgICAgICAg
YXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KGxh
eW91dEJveCk7CiAKLSAgICAgICAgYXV0byB3aWR0aCA9IG92ZXJyaWRlSG9yaXpvbnRhbFZhbHVl
cy53aWR0aCA/IG92ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcy53aWR0aCA6IGNvbXB1dGVkV2lkdGgo
bGF5b3V0Qm94LCBjb250YWluaW5nQmxvY2tXaWR0aCk7CisgICAgICAgIGF1dG8gd2lkdGggPSBv
dmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcy53aWR0aCA/IG92ZXJyaWRkZW5Ib3Jpem9udGFsVmFs
dWVzLndpZHRoIDogY29tcHV0ZWRXaWR0aChsYXlvdXRCb3gsIGNvbnRhaW5pbmdCbG9ja1dpZHRo
KTsKICAgICAgICAgYXV0byBjb21wdXRlZEhvcml6b250YWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29t
cHV0ZWRIb3Jpem9udGFsTWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzKTsK
ICAgICAgICAgVXNlZEhvcml6b250YWxNYXJnaW4gdXNlZEhvcml6b250YWxNYXJnaW47CiAgICAg
ICAgIGF1dG8gYm9yZGVyTGVmdCA9IGJveEdlb21ldHJ5LmJvcmRlckxlZnQoKTsKQEAgLTIxMiw3
ICsyMTIsNyBAQCBDb250ZW50V2lkdGhBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkV2lkdGhBbgogICAgIHJldHVybiBjb250ZW50V2lk
dGhBbmRNYXJnaW47CiB9CiAKLUNvbnRlbnRXaWR0aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6aW5GbG93UmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBSZXBs
YWNlZEJveCYgcmVwbGFjZWRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpv
bnRhbENvbnN0cmFpbnRzLCBjb25zdCBPdmVycmlkZUhvcml6b250YWxWYWx1ZXMmIG92ZXJyaWRl
SG9yaXpvbnRhbFZhbHVlcykKK0NvbnRlbnRXaWR0aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6aW5GbG93UmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBSZXBs
YWNlZEJveCYgcmVwbGFjZWRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpv
bnRhbENvbnN0cmFpbnRzLCBjb25zdCBPdmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcyYgb3ZlcnJp
ZGRlbkhvcml6b250YWxWYWx1ZXMpCiB7CiAgICAgQVNTRVJUKHJlcGxhY2VkQm94LmlzSW5GbG93
KCkpOwogCkBAIC0yMjIsOSArMjIyLDkgQEAgQ29udGVudFdpZHRoQW5kTWFyZ2luIEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dSZXBsYWNlZFdpZHRoQW5kTWEKICAgICAv
LyAyLiBUaGVuIHRoZSBydWxlcyBmb3Igbm9uLXJlcGxhY2VkIGJsb2NrLWxldmVsIGVsZW1lbnRz
IGFyZSBhcHBsaWVkIHRvIGRldGVybWluZSB0aGUgbWFyZ2lucy4KIAogICAgIC8vICMxCi0gICAg
YXV0byB1c2VkV2lkdGggPSBpbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKHJlcGxhY2VkQm94
LCBob3Jpem9udGFsQ29uc3RyYWludHMsIHsgfSwgb3ZlcnJpZGVIb3Jpem9udGFsVmFsdWVzKS5j
b250ZW50V2lkdGg7CisgICAgYXV0byB1c2VkV2lkdGggPSBpbmxpbmVSZXBsYWNlZFdpZHRoQW5k
TWFyZ2luKHJlcGxhY2VkQm94LCBob3Jpem9udGFsQ29uc3RyYWludHMsIHsgfSwgb3ZlcnJpZGRl
bkhvcml6b250YWxWYWx1ZXMpLmNvbnRlbnRXaWR0aDsKICAgICAvLyAjMgotICAgIGF1dG8gbm9u
UmVwbGFjZWRXaWR0aEFuZE1hcmdpbiA9IGluRmxvd05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4o
cmVwbGFjZWRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cywgT3ZlcnJpZGVIb3Jpem9udGFsVmFs
dWVzIHsgdXNlZFdpZHRoLCBvdmVycmlkZUhvcml6b250YWxWYWx1ZXMubWFyZ2luIH0pOworICAg
IGF1dG8gbm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbiA9IGluRmxvd05vblJlcGxhY2VkV2lkdGhB
bmRNYXJnaW4ocmVwbGFjZWRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cywgT3ZlcnJpZGRlbkhv
cml6b250YWxWYWx1ZXMgeyB1c2VkV2lkdGgsIG92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzLm1h
cmdpbiB9KTsKIAogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwg
c3RyZWFtIDw8ICJbV2lkdGhdW01hcmdpbl0gLT4gaW5mbG93IHJlcGxhY2VkIC0+IHdpZHRoKCIg
PDwgdXNlZFdpZHRoICA8PCAicHgpIG1hcmdpbigiIDw8IG5vblJlcGxhY2VkV2lkdGhBbmRNYXJn
aW4udXNlZE1hcmdpbi5zdGFydCA8PCAicHgsICIgPDwgbm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdp
bi51c2VkTWFyZ2luLmVuZCA8PCAicHgpIC0+IGxheW91dEJveCgiIDw8ICZyZXBsYWNlZEJveCA8
PCAiKSIpOwogICAgIHJldHVybiB7IHVzZWRXaWR0aCwgbm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdp
bi51c2VkTWFyZ2luIH07CkBAIC0yNTUsMjMgKzI1NSwyMyBAQCBQb2ludCBCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6c3RhdGljUG9zaXRpb24oY29uc3QgQm94JiBsYXlvdXRCb3gs
IGNvbgogICAgIHJldHVybiB7IHN0YXRpY0hvcml6b250YWxQb3NpdGlvbihsYXlvdXRCb3gsIGhv
cml6b250YWxDb25zdHJhaW50cyksIHN0YXRpY1ZlcnRpY2FsUG9zaXRpb24obGF5b3V0Qm94LCB2
ZXJ0aWNhbENvbnN0cmFpbnRzKSB9OwogfQogCi1Db250ZW50SGVpZ2h0QW5kTWFyZ2luIEJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dIZWlnaHRBbmRNYXJnaW4oY29uc3Qg
Qm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENv
bnN0cmFpbnRzLCBjb25zdCBPdmVycmlkZVZlcnRpY2FsVmFsdWVzJiBvdmVycmlkZVZlcnRpY2Fs
VmFsdWVzKQorQ29udGVudEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6aW5GbG93SGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25z
dCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgT3Zl
cnJpZGRlblZlcnRpY2FsVmFsdWVzJiBvdmVycmlkZGVuVmVydGljYWxWYWx1ZXMpCiB7CiAgICAg
QVNTRVJUKGxheW91dEJveC5pc0luRmxvdygpKTsKIAogICAgIC8vIDEwLjYuMiBJbmxpbmUgcmVw
bGFjZWQgZWxlbWVudHMsIGJsb2NrLWxldmVsIHJlcGxhY2VkIGVsZW1lbnRzIGluIG5vcm1hbCBm
bG93LCAnaW5saW5lLWJsb2NrJwogICAgIC8vIHJlcGxhY2VkIGVsZW1lbnRzIGluIG5vcm1hbCBm
bG93IGFuZCBmbG9hdGluZyByZXBsYWNlZCBlbGVtZW50cwogICAgIGlmIChsYXlvdXRCb3guaXNS
ZXBsYWNlZEJveCgpKQotICAgICAgICByZXR1cm4gaW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJn
aW4oZG93bmNhc3Q8UmVwbGFjZWRCb3g+KGxheW91dEJveCksIGhvcml6b250YWxDb25zdHJhaW50
cywgeyB9LCBvdmVycmlkZVZlcnRpY2FsVmFsdWVzKTsKKyAgICAgICAgcmV0dXJuIGlubGluZVJl
cGxhY2VkSGVpZ2h0QW5kTWFyZ2luKGRvd25jYXN0PFJlcGxhY2VkQm94PihsYXlvdXRCb3gpLCBo
b3Jpem9udGFsQ29uc3RyYWludHMsIHsgfSwgb3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzKTsKIAog
ICAgIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gY29udGVudEhlaWdodEFuZE1hcmdpbjsKICAgICBp
ZiAobGF5b3V0Qm94LmlzT3ZlcmZsb3dWaXNpYmxlKCkgJiYgIWxheW91dEJveC5pc0RvY3VtZW50
Qm94KCkpIHsKICAgICAgICAgLy8gVE9ETzogRmlndXJlIG91dCB0aGUgY2FzZSBmb3IgdGhlIGRv
Y3VtZW50IGVsZW1lbnQuIExldCdzIGp1c3QgY29tcGxpY2F0ZWQtY2FzZSBpdCBmb3Igbm93Lgot
ICAgICAgICBjb250ZW50SGVpZ2h0QW5kTWFyZ2luID0gaW5GbG93Tm9uUmVwbGFjZWRIZWlnaHRB
bmRNYXJnaW4obGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMsIG92ZXJyaWRlVmVydGlj
YWxWYWx1ZXMpOworICAgICAgICBjb250ZW50SGVpZ2h0QW5kTWFyZ2luID0gaW5GbG93Tm9uUmVw
bGFjZWRIZWlnaHRBbmRNYXJnaW4obGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMsIG92
ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gMTAuNi42
IENvbXBsaWNhdGVkIGNhc2VzCiAgICAgICAgIC8vIEJsb2NrLWxldmVsLCBub24tcmVwbGFjZWQg
ZWxlbWVudHMgaW4gbm9ybWFsIGZsb3cgd2hlbiAnb3ZlcmZsb3cnIGRvZXMgbm90IGNvbXB1dGUg
dG8gJ3Zpc2libGUnIChleGNlcHQgaWYgdGhlICdvdmVyZmxvdycgcHJvcGVydHkncyB2YWx1ZSBo
YXMgYmVlbiBwcm9wYWdhdGVkIHRvIHRoZSB2aWV3cG9ydCkuCi0gICAgICAgIGNvbnRlbnRIZWln
aHRBbmRNYXJnaW4gPSBjb21wbGljYXRlZENhc2VzKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0
cmFpbnRzLCBvdmVycmlkZVZlcnRpY2FsVmFsdWVzKTsKKyAgICAgICAgY29udGVudEhlaWdodEFu
ZE1hcmdpbiA9IGNvbXBsaWNhdGVkQ2FzZXMobGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWlu
dHMsIG92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcyk7CiAgICAgfQogCiAgICAgYXV0byBxdWlya3Mg
PSBmb3JtYXR0aW5nQ29udGV4dCgpLnF1aXJrcygpOwpAQCAtMjg0LDEzICsyODQsMTMgQEAgQ29u
dGVudEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5G
bG93SGVpZ2h0QW5kTWFyZ2luKGMKICAgICByZXR1cm4gY29udGVudEhlaWdodEFuZE1hcmdpbjsK
IH0KIAotQ29udGVudFdpZHRoQW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjppbkZsb3dXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9y
aXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IE92ZXJyaWRl
SG9yaXpvbnRhbFZhbHVlcyYgb3ZlcnJpZGVIb3Jpem9udGFsVmFsdWVzKQorQ29udGVudFdpZHRo
QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dXaWR0aEFu
ZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRz
JiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IE92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVz
JiBvdmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcykKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94Lmlz
SW5GbG93KCkpOwogCiAgICAgaWYgKCFsYXlvdXRCb3guaXNSZXBsYWNlZEJveCgpKQotICAgICAg
ICByZXR1cm4gaW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRCb3gsIGhvcml6
b250YWxDb25zdHJhaW50cywgb3ZlcnJpZGVIb3Jpem9udGFsVmFsdWVzKTsKLSAgICByZXR1cm4g
aW5GbG93UmVwbGFjZWRXaWR0aEFuZE1hcmdpbihkb3duY2FzdDxSZXBsYWNlZEJveD4obGF5b3V0
Qm94KSwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBvdmVycmlkZUhvcml6b250YWxWYWx1ZXMpOwor
ICAgICAgICByZXR1cm4gaW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRCb3gs
IGhvcml6b250YWxDb25zdHJhaW50cywgb3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMpOworICAg
IHJldHVybiBpbkZsb3dSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGRvd25jYXN0PFJlcGxhY2VkQm94
PihsYXlvdXRCb3gpLCBob3Jpem9udGFsQ29uc3RyYWludHMsIG92ZXJyaWRkZW5Ib3Jpem9udGFs
VmFsdWVzKTsKIH0KIAogQ29udGVudFdpZHRoQW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5Ojpjb21wdXRlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94
LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlV2lkdGhGbG9hdEF2b2lkZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL3RhYmxld3JhcHBlci9UYWJs
ZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9ibG9ja2Zvcm1hdHRpbmcvdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQuY3BwCmluZGV4IGQyNzU0NjgxODAwZTdiMDdjMGFkZmVhNjU3MjJkMzZlYzQ4NjY3
ZTQuLjdkZDA4YmRkMjJmYjc0Yjg3MTkwMzVmNTU2ZjJiOTRkMTAwNjQ3Y2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvdGFibGV3cmFwcGVyL1RhYmxl
V3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9ibG9ja2Zvcm1hdHRpbmcvdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0
dGluZ0NvbnRleHQuY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBUYWJsZVdyYXBwZXJCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lkdGhBbmRNYXJnaW5Gb3JUYWJsZUJveChjb25z
dAogICAgICAgICAgICAgdXNlZFdpZHRoID0gKmNvbXB1dGVkTWluV2lkdGg7CiAgICAgfQogCi0g
ICAgYXV0byBjb250ZW50V2lkdGhBbmRNYXJnaW4gPSBnZW9tZXRyeS5pbkZsb3dXaWR0aEFuZE1h
cmdpbih0YWJsZUJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBPdmVycmlkZUhvcml6b250YWxW
YWx1ZXMgeyB1c2VkV2lkdGgsIHsgfSB9KTsKKyAgICBhdXRvIGNvbnRlbnRXaWR0aEFuZE1hcmdp
biA9IGdlb21ldHJ5LmluRmxvd1dpZHRoQW5kTWFyZ2luKHRhYmxlQm94LCBob3Jpem9udGFsQ29u
c3RyYWludHMsIE92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzIHsgdXNlZFdpZHRoLCB7IH0gfSk7
CiAKICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdTdGF0ZSgpLmJveEdlb21ldHJ5
KHRhYmxlQm94KTsKICAgICBib3hHZW9tZXRyeS5zZXRDb250ZW50Qm94V2lkdGgoY29udGVudFdp
ZHRoQW5kTWFyZ2luLmNvbnRlbnRXaWR0aCk7CkBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCBUYWJs
ZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2luRm9y
VGFibGVCb3goY29uc3QKICAgICBBU1NFUlQodGFibGVCb3guaXNUYWJsZUJveCgpKTsKICAgICAv
LyBUYWJsZSBpcyBhIHNwZWNpYWwgQkZDIGNvbnRlbnQuIEl0cyBoZWlnaHQgaXMgbWFpbmx5IGRy
aXZlbiBieSB0aGUgY29udGVudC4gQ29tcHV0ZWQgaGVpZ2h0LCBtaW4taGVpZ2h0IGFuZCBtYXgt
aGVpZ2h0IGFyZSBhbGwKICAgICAvLyBhbHJlYWR5IGJlZW4gdGFrZW4gaW50byBhY2NvdW50IGR1
cmluZyB0aGUgVEZDIGxheW91dC4KLSAgICBhdXRvIGhlaWdodEFuZE1hcmdpbiA9IGdlb21ldHJ5
KCkuaW5GbG93SGVpZ2h0QW5kTWFyZ2luKHRhYmxlQm94LCBjb25zdHJhaW50cy5ob3Jpem9udGFs
LCB7IHF1aXJrcygpLm92ZXJyaWRlVGFibGVIZWlnaHQodGFibGVCb3gpIH0pOworICAgIGF1dG8g
aGVpZ2h0QW5kTWFyZ2luID0gZ2VvbWV0cnkoKS5pbkZsb3dIZWlnaHRBbmRNYXJnaW4odGFibGVC
b3gsIGNvbnN0cmFpbnRzLmhvcml6b250YWwsIHsgcXVpcmtzKCkub3ZlcnJpZGRlblRhYmxlSGVp
Z2h0KHRhYmxlQm94KSB9KTsKIAogICAgIGF1dG8gbWFyZ2luQ29sbGFwc2UgPSB0aGlzLT5tYXJn
aW5Db2xsYXBzZSgpOwogICAgIGF1dG8gdmVydGljYWxNYXJnaW4gPSBtYXJnaW5Db2xsYXBzZS5j
b2xsYXBzZWRWZXJ0aWNhbFZhbHVlcyh0YWJsZUJveCwgaGVpZ2h0QW5kTWFyZ2luLm5vbkNvbGxh
cHNlZE1hcmdpbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3Jt
YXR0aW5nL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL3RhYmxld3JhcHBlci9UYWJs
ZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggYzAwMzQxZmIxNzdiYzRiNjlk
NjViYjBjMTNlMzIzY2Y2M2M4OWE1My4uMGRlYTE1N2NjNTIxNmY4ODRmZDI4OTgzNGEzYzg2Njk1
Mzc0MjdhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGlu
Zy90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvdGFibGV3cmFwcGVyL1RhYmxl
V3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNDksNyArNDksNyBAQCBwcml2YXRl
OgogICAgIHB1YmxpYzoKICAgICAgICAgUXVpcmtzKGNvbnN0IFRhYmxlV3JhcHBlckJsb2NrRm9y
bWF0dGluZ0NvbnRleHQmKTsKIAotICAgICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBvdmVycmlk
ZVRhYmxlSGVpZ2h0KGNvbnN0IENvbnRhaW5lckJveCYgdGFibGVCb3gpIGNvbnN0OworICAgICAg
ICBPcHRpb25hbDxMYXlvdXRVbml0PiBvdmVycmlkZGVuVGFibGVIZWlnaHQoY29uc3QgQ29udGFp
bmVyQm94JiB0YWJsZUJveCkgY29uc3Q7CiAgICAgfTsKICAgICBUYWJsZVdyYXBwZXJCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0OjpRdWlya3MgcXVpcmtzKCkgY29uc3QgeyByZXR1cm4gUXVpcmtzKCp0
aGlzKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0
aW5nL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvdGFibGV3cmFwcGVy
L1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCmluZGV4IDQ3Mzlj
YTZjOTEzODg2OTY5M2NhMGU0OWFiYTU4ZDZlNTU0NGQyYTMuLmVhZGE5MmVkMjhmNzk3ZjNiODI2
YjBmYjkxNTQyNWViNzg5YmI5OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9i
bG9ja2Zvcm1hdHRpbmcvdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0Nv
bnRleHRRdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRp
bmcvdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3Mu
Y3BwCkBAIC0zMyw3ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5
b3V0IHsKIAotT3B0aW9uYWw8TGF5b3V0VW5pdD4gVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6UXVpcmtzOjpvdmVycmlkZVRhYmxlSGVpZ2h0KGNvbnN0IENvbnRhaW5lckJveCYg
dGFibGVCb3gpIGNvbnN0CitPcHRpb25hbDxMYXlvdXRVbml0PiBUYWJsZVdyYXBwZXJCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0OjpRdWlya3M6Om92ZXJyaWRkZW5UYWJsZUhlaWdodChjb25zdCBDb250
YWluZXJCb3gmIHRhYmxlQm94KSBjb25zdAogewogICAgIGlmIChsYXlvdXRTdGF0ZSgpLmluUXVp
cmtzTW9kZSgpKSB7CiAgICAgICAgIC8vIEluIHF1aXJrcyBtb2RlIGFsd2F5cyB1c2UgdGhlIGNv
bnRlbnQgaGVpZ2h0LiBOb3RlIHRoYXQgdGhlIHRhYmxlcyB3aXRoIGNvbnRlbnQgdGFrZSBjb21w
dXRlZCB2YWx1ZXMgaW50byBhY2NvdW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgK
aW5kZXggNTViMDJjYzUxOTMwZjgwMzc2NzEyZTNjOTExZGMzOWIyNTEyMTgwYS4uMGQzYjFmOTIz
ZWUzN2MzZjkwOGNlNDY0YzAyYWZkNmI4ZWQyYzYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dC5oCkBAIC03Miw4ICs3Miw4IEBAIHByaXZhdGU6CiAgICAgICAgIExpbmVSZWN0QW5k
TGluZUJveE9mZnNldCBjb21wdXRlZExpbmVMb2dpY2FsUmVjdChjb25zdCBMaW5lQm94JiwgY29u
c3QgUmVuZGVyU3R5bGUmIHJvb3RTdHlsZSwgY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50
JikgY29uc3Q7CiAgICAgICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbFRvcEZvck5leHRMaW5l
KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYsIElubGluZUxheW91dFVuaXQgcHJldmlv
dXNMaW5lTG9naWNhbEJvdHRvbSwgY29uc3QgRmxvYXRpbmdDb250ZXh0JikgY29uc3Q7CiAKLSAg
ICAgICAgQ29udGVudEhlaWdodEFuZE1hcmdpbiBpbmxpbmVCbG9ja0hlaWdodEFuZE1hcmdpbihj
b25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25zdCBPdmVycmlkZVZl
cnRpY2FsVmFsdWVzJikgY29uc3Q7Ci0gICAgICAgIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBpbmxp
bmVCbG9ja1dpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJh
aW50cyYsIGNvbnN0IE92ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcyYpOworICAgICAgICBDb250ZW50
SGVpZ2h0QW5kTWFyZ2luIGlubGluZUJsb2NrSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYsIGNv
bnN0IEhvcml6b250YWxDb25zdHJhaW50cyYsIGNvbnN0IE92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVl
cyYpIGNvbnN0OworICAgICAgICBDb250ZW50V2lkdGhBbmRNYXJnaW4gaW5saW5lQmxvY2tXaWR0
aEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25z
dCBPdmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcyYpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
ZnJpZW5kIGNsYXNzIElubGluZUZvcm1hdHRpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRH
ZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCAyMGQ1Y2YwYzg1M2EyNTU2MDdl
YjAyZmJmNDllODc3MDFkOTViZGRlLi40MmRmMmRiNTNkN2M5YjAwNmZkYjhjYTJkMTdlOGM5YTAw
NTU5Y2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5
LmNwcApAQCAtNDY5LDcgKzQ2OSw3IEBAIElubGluZUxheW91dFVuaXQgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5Ojpsb2dpY2FsVG9wRm9yTmV4dExpbmUoY29uc3QKICAgICByZXR1
cm4gc3RkOjptYXgocHJldmlvdXNMaW5lTG9naWNhbEJvdHRvbSwgSW5saW5lTGF5b3V0VW5pdChw
b3NpdGlvbldpdGhDbGVhcmFuY2UtPnBvc2l0aW9uKSk7CiB9CiAKLUNvbnRlbnRXaWR0aEFuZE1h
cmdpbiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZUJsb2NrV2lkdGhB
bmRNYXJnaW4oY29uc3QgQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGNvbnN0IEhvcml6b250
YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBPdmVycmlkZUhvcml6
b250YWxWYWx1ZXMmIG92ZXJyaWRlSG9yaXpvbnRhbFZhbHVlcykKK0NvbnRlbnRXaWR0aEFuZE1h
cmdpbiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZUJsb2NrV2lkdGhB
bmRNYXJnaW4oY29uc3QgQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGNvbnN0IEhvcml6b250
YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBPdmVycmlkZGVuSG9y
aXpvbnRhbFZhbHVlcyYgb3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMpCiB7CiAgICAgQVNTRVJU
KGZvcm1hdHRpbmdDb250ZXh0Um9vdC5pc0luRmxvdygpKTsKIApAQCAtNDc3LDcgKzQ3Nyw3IEBA
IENvbnRlbnRXaWR0aEFuZE1hcmdpbiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
OmlubGluZUJsb2NrV2lkdGhBbmRNYXJnCiAKICAgICAvLyBFeGFjdGx5IGFzIGlubGluZSByZXBs
YWNlZCBlbGVtZW50cy4KICAgICBpZiAoZm9ybWF0dGluZ0NvbnRleHRSb290LmlzUmVwbGFjZWRC
b3goKSkKLSAgICAgICAgcmV0dXJuIGlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4oZG93bmNh
c3Q8UmVwbGFjZWRCb3g+KGZvcm1hdHRpbmdDb250ZXh0Um9vdCksIGhvcml6b250YWxDb25zdHJh
aW50cywgeyB9LCBvdmVycmlkZUhvcml6b250YWxWYWx1ZXMpOworICAgICAgICByZXR1cm4gaW5s
aW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihkb3duY2FzdDxSZXBsYWNlZEJveD4oZm9ybWF0dGlu
Z0NvbnRleHRSb290KSwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB7IH0sIG92ZXJyaWRkZW5Ib3Jp
em9udGFsVmFsdWVzKTsKIAogICAgIC8vIDEwLjMuOSAnSW5saW5lLWJsb2NrJywgbm9uLXJlcGxh
Y2VkIGVsZW1lbnRzIGluIG5vcm1hbCBmbG93CiAKQEAgLTQ5NCwxNyArNDk0LDE3IEBAIENvbnRl
bnRXaWR0aEFuZE1hcmdpbiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGlu
ZUJsb2NrV2lkdGhBbmRNYXJnCiAgICAgcmV0dXJuIENvbnRlbnRXaWR0aEFuZE1hcmdpbiB7ICp3
aWR0aCwgeyBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQudmFsdWVPcigwX2x1KSwgY29t
cHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVuZC52YWx1ZU9yKDBfbHUpIH0gfTsKIH0KIAotQ29udGVu
dEhlaWdodEFuZE1hcmdpbiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGlu
ZUJsb2NrSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem9u
dGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgT3ZlcnJpZGVWZXJ0
aWNhbFZhbHVlcyYgb3ZlcnJpZGVWZXJ0aWNhbFZhbHVlcykgY29uc3QKK0NvbnRlbnRIZWlnaHRB
bmRNYXJnaW4gSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVCbG9ja0hl
aWdodEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENvbnN0
cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IE92ZXJyaWRkZW5WZXJ0aWNhbFZh
bHVlcyYgb3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzKSBjb25zdAogewogICAgIEFTU0VSVChsYXlv
dXRCb3guaXNJbkZsb3coKSk7CiAKICAgICAvLyAxMC42LjIgSW5saW5lIHJlcGxhY2VkIGVsZW1l
bnRzLCBibG9jay1sZXZlbCByZXBsYWNlZCBlbGVtZW50cyBpbiBub3JtYWwgZmxvdywgJ2lubGlu
ZS1ibG9jaycgcmVwbGFjZWQgZWxlbWVudHMgaW4gbm9ybWFsIGZsb3cgYW5kIGZsb2F0aW5nIHJl
cGxhY2VkIGVsZW1lbnRzCiAgICAgaWYgKGxheW91dEJveC5pc1JlcGxhY2VkQm94KCkpCi0gICAg
ICAgIHJldHVybiBpbmxpbmVSZXBsYWNlZEhlaWdodEFuZE1hcmdpbihkb3duY2FzdDxSZXBsYWNl
ZEJveD4obGF5b3V0Qm94KSwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB7IH0sIG92ZXJyaWRlVmVy
dGljYWxWYWx1ZXMpOworICAgICAgICByZXR1cm4gaW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJn
aW4oZG93bmNhc3Q8UmVwbGFjZWRCb3g+KGxheW91dEJveCksIGhvcml6b250YWxDb25zdHJhaW50
cywgeyB9LCBvdmVycmlkZGVuVmVydGljYWxWYWx1ZXMpOwogCiAgICAgLy8gMTAuNi42IENvbXBs
aWNhdGVkIGNhc2VzCiAgICAgLy8gLSAnSW5saW5lLWJsb2NrJywgbm9uLXJlcGxhY2VkIGVsZW1l
bnRzLgotICAgIHJldHVybiBjb21wbGljYXRlZENhc2VzKGxheW91dEJveCwgaG9yaXpvbnRhbENv
bnN0cmFpbnRzLCBvdmVycmlkZVZlcnRpY2FsVmFsdWVzKTsKKyAgICByZXR1cm4gY29tcGxpY2F0
ZWRDYXNlcyhsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cywgb3ZlcnJpZGRlblZlcnRp
Y2FsVmFsdWVzKTsKIH0KIAogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>