<?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>188472</bug_id>
          
          <creation_ts>2018-08-10 09:04:31 -0700</creation_ts>
          <short_desc>Use OptionSet for various RenderLayer flags</short_desc>
          <delta_ts>2018-08-10 23:50: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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</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>1449276</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-10 09:04:31 -0700</bug_when>
    <thetext>Make more flags type safe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449325</commentid>
    <comment_count>1</comment_count>
      <attachid>346913</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-10 11:26:19 -0700</bug_when>
    <thetext>Created attachment 346913
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449327</commentid>
    <comment_count>2</comment_count>
      <attachid>346913</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-08-10 11:39:24 -0700</bug_when>
    <thetext>Comment on attachment 346913
patch

Nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449351</commentid>
    <comment_count>3</comment_count>
      <attachid>346913</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-10 12:51:51 -0700</bug_when>
    <thetext>Comment on attachment 346913
patch

Clearing flags on attachment: 346913

Committed r234768: &lt;https://trac.webkit.org/changeset/234768&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449352</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-10 12:51:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449353</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-10 12:52:36 -0700</bug_when>
    <thetext>&lt;rdar://problem/43153059&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449469</commentid>
    <comment_count>6</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-10 23:50:20 -0700</bug_when>
    <thetext>Followup in https://trac.webkit.org/changeset/234782</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346913</attachid>
            <date>2018-08-10 11:26:19 -0700</date>
            <delta_ts>2018-08-10 12:51:51 -0700</delta_ts>
            <desc>patch</desc>
            <filename>optionset-renderlayer-4.patch</filename>
            <type>text/plain</type>
            <size>48183</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMzQ3NTUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE4LTA4LTEwICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgT3B0aW9uU2V0IGZvciB2YXJpb3VzIFJlbmRl
ckxheWVyIGZsYWdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODg0NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHd0Zi9NYXRoRXh0cmFzLmg6CisgICAgICAgIChoYXNPbmVCaXRTZXQpOgorICAgICAg
ICAoaGFzWmVyb09yT25lQml0c1NldCk6CisgICAgICAgIChoYXNUd29Pck1vcmVCaXRzU2V0KToK
KworICAgICAgICBNYWtlIGNvbnN0ZXhwci4KKworICAgICAgICAqIHd0Zi9PcHRpb25TZXQuaDoK
KyAgICAgICAgKFdURjo6T3B0aW9uU2V0OjpPcHRpb25TZXQpOgorCisgICAgICAgIEFsd2F5cyB1
c2UgY29uc3RleHByLCBubyBuZWVkIGZvciBzZXBhcmF0ZSBkZWJ1ZyB2ZXJzaW9ucyB3aXRoIEMr
KzE0LgorCiAyMDE4LTA4LTA5ICBCZW4gUmljaGFyZHMgIDxiZW50b25fcmljaGFyZHNAYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlIHNob3VsZCBjYWNoZSB0aGUgY29tcGlsZWQgc2FuZGJveCBwcm9m
aWxlIGluIGEgZGF0YSB2YXVsdApJbmRleDogU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL01hdGhFeHRyYXMuaAkocmV2aXNpb24gMjM0NzUz
KQorKysgU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIs
MTcgKzE5MiwxNyBAQCBpbmxpbmUgZmxvYXQgbm9ybWFsaXplZEZsb2F0KGZsb2F0IHZhbHVlCiAg
ICAgcmV0dXJuIHZhbHVlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgYm9vbCBo
YXNPbmVCaXRTZXQoVCB2YWx1ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBib29s
IGhhc09uZUJpdFNldChUIHZhbHVlKQogewogICAgIHJldHVybiAhKCh2YWx1ZSAtIDEpICYgdmFs
dWUpICYmIHZhbHVlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgYm9vbCBoYXNa
ZXJvT3JPbmVCaXRzU2V0KFQgdmFsdWUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIg
Ym9vbCBoYXNaZXJvT3JPbmVCaXRzU2V0KFQgdmFsdWUpCiB7CiAgICAgcmV0dXJuICEoKHZhbHVl
IC0gMSkgJiB2YWx1ZSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBib29sIGhh
c1R3b09yTW9yZUJpdHNTZXQoVCB2YWx1ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhw
ciBib29sIGhhc1R3b09yTW9yZUJpdHNTZXQoVCB2YWx1ZSkKIHsKICAgICByZXR1cm4gIWhhc1pl
cm9Pck9uZUJpdHNTZXQodmFsdWUpOwogfQpJbmRleDogU291cmNlL1dURi93dGYvT3B0aW9uU2V0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvT3B0aW9uU2V0LmgJKHJldmlzaW9uIDIz
NDc1MykKKysrIFNvdXJjZS9XVEYvd3RmL09wdGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC03
MywzMiArNzMsMTkgQEAgcHVibGljOgogCiAgICAgY29uc3RleHByIE9wdGlvblNldCgpID0gZGVm
YXVsdDsKIAotI2lmIEFTU0VSVF9ESVNBQkxFRAogICAgIGNvbnN0ZXhwciBPcHRpb25TZXQoVCB0
KQogICAgICAgICA6IG1fc3RvcmFnZShzdGF0aWNfY2FzdDxTdG9yYWdlVHlwZT4odCkpCiAgICAg
eworICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX3N0b3JhZ2UgfHwgaGFzT25lQml0U2V0
KG1fc3RvcmFnZSksICJFbnVtZXJhdG9yIGlzIG5vdCBhIHplcm8gb3IgYSBwb3NpdGl2ZSBwb3dl
ciBvZiB0d28uIik7CiAgICAgfQogCiAgICAgY29uc3RleHByIE9wdGlvblNldChzdGQ6OmluaXRp
YWxpemVyX2xpc3Q8VD4gaW5pdGlhbGl6ZXJMaXN0KQogICAgIHsKLSAgICAgICAgZm9yIChhdXRv
JiBvcHRpb24gOiBpbml0aWFsaXplckxpc3QpCi0gICAgICAgICAgICBtX3N0b3JhZ2UgfD0gc3Rh
dGljX2Nhc3Q8U3RvcmFnZVR5cGU+KG9wdGlvbik7Ci0gICAgfQotI2Vsc2UKLSAgICBPcHRpb25T
ZXQoVCB0KQotICAgICAgICA6IG1fc3RvcmFnZShzdGF0aWNfY2FzdDxTdG9yYWdlVHlwZT4odCkp
Ci0gICAgewotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX3N0b3JhZ2UgfHwgaGFzT25l
Qml0U2V0KHN0YXRpY19jYXN0PFN0b3JhZ2VUeXBlPih0KSksICJFbnVtZXJhdG9yIGlzIG5vdCBh
IHplcm8gb3IgYSBwb3NpdGl2ZSBwb3dlciBvZiB0d28uIik7Ci0gICAgfQotCi0gICAgT3B0aW9u
U2V0KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiBpbml0aWFsaXplckxpc3QpCi0gICAgewogICAg
ICAgICBmb3IgKGF1dG8mIG9wdGlvbiA6IGluaXRpYWxpemVyTGlzdCkgewogICAgICAgICAgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRShoYXNPbmVCaXRTZXQoc3RhdGljX2Nhc3Q8U3RvcmFnZVR5cGU+
KG9wdGlvbikpLCAiRW51bWVyYXRvciBpcyBub3QgYSBwb3NpdGl2ZSBwb3dlciBvZiB0d28uIik7
CiAgICAgICAgICAgICBtX3N0b3JhZ2UgfD0gc3RhdGljX2Nhc3Q8U3RvcmFnZVR5cGU+KG9wdGlv
bik7CiAgICAgICAgIH0KICAgICB9Ci0jZW5kaWYKIAogICAgIGNvbnN0ZXhwciBTdG9yYWdlVHlw
ZSB0b1JhdygpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZTsgfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyMzQ3NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSw3OCBAQAorMjAxOC0wOC0xMCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIE9wdGlvblNldCBmb3IgdmFyaW91cyBSZW5kZXJMYXll
ciBmbGFncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg4NDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VHlwZXNhZmUgZmxhZ3MuCisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVt
ZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWlu
ZXJFbGVtZW50OjpjcmVhdGVUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkltYWdlKToKKyAgICAgICAg
KiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVMYXllclBvc2l0
aW9uRmxhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRlbnRzKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJMYXlvdXQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyU2Nyb2xsKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpw
YWludEZvckZpeGVkUm9vdEJhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OnBhaW50TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5
ZXJDb250ZW50c0FuZFJlZmxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OmZpbHRlclBhaW50ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Omhh
c0ZpbHRlclRoYXRJc1BhaW50aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpzZXR1cEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50
TGF5ZXJDb250ZW50cyk6CisgICAgICAgIChSZW5kZXJMYXllcjo6cGFpbnRMYXllckJ5QXBwbHlp
bmdUcmFuc2Zvcm0pOgorICAgICAgICAoUmVuZGVyTGF5ZXI6OnBhaW50TGlzdCk6CisgICAgICAg
IChSZW5kZXJMYXllcjo6dXBkYXRlUGFpbnRpbmdJbmZvRm9yRnJhZ21lbnRzKToKKyAgICAgICAg
KFJlbmRlckxheWVyOjpwYWludFRyYW5zZm9ybWVkTGF5ZXJJbnRvRnJhZ21lbnRzKToKKyAgICAg
ICAgKFJlbmRlckxheWVyOjpjYWxjdWxhdGVDbGlwUmVjdHMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExpc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmVuY2xvc2luZ1BhZ2luYXRpb25MYXllcklu
U3VidHJlZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
Y29sbGVjdEZyYWdtZW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6dXBkYXRlUGFpbnRpbmdJbmZvRm9yRnJhZ21lbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpwYWludFRyYW5zZm9ybWVkTGF5ZXJJbnRvRnJhZ21lbnRzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludEJhY2tncm91bmRG
b3JGcmFnbWVudHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBh
aW50Rm9yZWdyb3VuZEZvckZyYWdtZW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzV2l0aFBoYXNlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludE91dGxpbmVGb3JGcmFnbWVu
dHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TWFza0Zv
ckZyYWdtZW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFp
bnRDaGlsZENsaXBwaW5nTWFza0ZvckZyYWdtZW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllcjo6cGFpbnRPdmVyZmxvd0NvbnRyb2xzRm9yRnJhZ21lbnRzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoaXRUZXN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjplbmNsb3NpbmdFbGVtZW50IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjplbmNsb3NpbmdGcmFnbWVu
dGVkRmxvd0FuY2VzdG9yIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1
dGVaT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjcmVh
dGVMb2NhbFRyYW5zZm9ybVN0YXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OmlzSGl0Q2FuZGlkYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpoaXRUZXN0TGF5ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OmhpdFRlc3RDb250ZW50c0ZvckZyYWdtZW50cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdFJlc2l6ZXJJbkZyYWdtZW50cyBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdFRyYW5zZm9ybWVk
TGF5ZXJJbkZyYWdtZW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6aGl0VGVzdExheWVyQnlBcHBseWluZ1RyYW5zZm9ybSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdENvbnRlbnRzIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoaXRUZXN0TGlzdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlQ2xpcFJlY3RzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjbGlwUmVjdHMgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzaG93TGF5ZXJUcmVlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2lu
Zzo6dXBkYXRlQ29tcG9zaXRlZEJvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckJhY2tpbmc6OmRldGFjaEZyb21TY3JvbGxpbmdDb29yZGluYXRvcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0
b3I6OnVwZGF0ZVNjcm9sbENvb3JkaW5hdGVkU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyQ29tcG9zaXRvcjo6ZGV0YWNoU2Nyb2xsQ29vcmRpbmF0ZWRMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbENvb3JkaW5h
dGVkTGF5ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJSZXBsaWNhOjpwYWludCk6CisKIDIwMTgtMDgtMDkgIEJlbiBSaWNoYXJkcyAgPGJl
bnRvbl9yaWNoYXJkc0BhcHBsZS5jb20+CiAKICAgICAgICAgV2Ugc2hvdWxkIGNhY2hlIHRoZSBj
b21waWxlZCBzYW5kYm94IHByb2ZpbGUgaW4gYSBkYXRhIHZhdWx0CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCShyZXZp
c2lvbiAyMzQ3NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xF
bGVtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MzcsNyArMTQzNyw3IEBAIFJlZlB0cjxJ
bWFnZT4gTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGEKICAgICBpZiAoIWJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBsYXllci0+cGFpbnQoYnVmZmVyLT5jb250ZXh0KCks
IHBhaW50aW5nUmVjdCwgTGF5b3V0U2l6ZSgpLCBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4oUGFp
bnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKSB8IFBhaW50QmVoYXZpb3I6OlNu
YXBzaG90dGluZywgbnVsbHB0ciwgUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0NvbXBv
c2l0aW5nQWxsUGhhc2VzKTsKKyAgICBsYXllci0+cGFpbnQoYnVmZmVyLT5jb250ZXh0KCksIHBh
aW50aW5nUmVjdCwgTGF5b3V0U2l6ZSgpLCB7IFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3Np
dGluZ0xheWVycywgUGFpbnRCZWhhdmlvcjo6U25hcHNob3R0aW5nIH0sIG51bGxwdHIsIFJlbmRl
ckxheWVyOjpwYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0FsbFBoYXNlc0ZsYWdzKCkpOwog
CiAgICAgcmV0dXJuIEltYWdlQnVmZmVyOjpzaW5rSW50b0ltYWdlKFdURk1vdmUoYnVmZmVyKSk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiAyMzQ3NTMpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
NiwxMSArMTM2LDExIEBAIHN0YXRpYyBjb25zdGV4cHIgZmxvYXQgZGVmYXVsdFNpZ25pZmljYW4K
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWFpbkFydGljbGVTaWduaWZpY2FudFJlbmRlcmVk
VGV4dENoYXJhY3RlclRocmVzaG9sZCA9IDE1MDA7CiBzdGF0aWMgY29uc3RleHByIGZsb2F0IG1h
aW5BcnRpY2xlU2lnbmlmaWNhbnRSZW5kZXJlZFRleHRNZWFuTGVuZ3RoID0gMjU7CiAKLXN0YXRp
YyBSZW5kZXJMYXllcjo6VXBkYXRlTGF5ZXJQb3NpdGlvbnNGbGFncyB1cGRhdGVMYXllclBvc2l0
aW9uRmxhZ3MoUmVuZGVyTGF5ZXIqIGxheWVyLCBib29sIGlzUmVsYXlvdXRpbmdTdWJ0cmVlLCBi
b29sIGRpZEZ1bGxSZXBhaW50KQorc3RhdGljIE9wdGlvblNldDxSZW5kZXJMYXllcjo6VXBkYXRl
TGF5ZXJQb3NpdGlvbnNGbGFnPiB1cGRhdGVMYXllclBvc2l0aW9uRmxhZ3MoUmVuZGVyTGF5ZXIq
IGxheWVyLCBib29sIGlzUmVsYXlvdXRpbmdTdWJ0cmVlLCBib29sIGRpZEZ1bGxSZXBhaW50KQog
ewotICAgIFJlbmRlckxheWVyOjpVcGRhdGVMYXllclBvc2l0aW9uc0ZsYWdzIGZsYWdzID0gUmVu
ZGVyTGF5ZXI6OmRlZmF1bHRGbGFnczsKKyAgICBhdXRvIGZsYWdzID0gUmVuZGVyTGF5ZXI6OnVw
ZGF0ZUxheWVyUG9zaXRpb25zRGVmYXVsdEZsYWdzKCk7CiAgICAgaWYgKGRpZEZ1bGxSZXBhaW50
KSB7Ci0gICAgICAgIGZsYWdzICY9IH5SZW5kZXJMYXllcjo6Q2hlY2tGb3JSZXBhaW50OworICAg
ICAgICBmbGFncyAtPSBSZW5kZXJMYXllcjo6Q2hlY2tGb3JSZXBhaW50OwogICAgICAgICBmbGFn
cyB8PSBSZW5kZXJMYXllcjo6TmVlZHNGdWxsUmVwYWludEluQmFja2luZzsKICAgICB9CiAgICAg
aWYgKGlzUmVsYXlvdXRpbmdTdWJ0cmVlICYmIGxheWVyLT5lbmNsb3NpbmdQYWdpbmF0aW9uTGF5
ZXIoUmVuZGVyTGF5ZXI6OkluY2x1ZGVDb21wb3NpdGVkUGFnaW5hdGVkTGF5ZXJzKSkKQEAgLTQx
NjMsNyArNDE2Myw3IEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ28K
ICAgICB3aGlsZSAoaXM8UmVuZGVySW5saW5lPihyZW5kZXJlcikgJiYgIWRvd25jYXN0PFJlbmRl
cklubGluZT4oKnJlbmRlcmVyKS5maXJzdExpbmVCb3goKSkKICAgICAgICAgcmVuZGVyZXIgPSBy
ZW5kZXJlci0+cGFyZW50KCk7CiAKLSAgICByb290TGF5ZXItPnBhaW50KGNvbnRleHQsIGRpcnR5
UmVjdCwgTGF5b3V0U2l6ZSgpLCBtX3BhaW50QmVoYXZpb3IsIHJlbmRlcmVyLCAwLCBzZWN1cml0
eU9yaWdpblBhaW50UG9saWN5ID09IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdp
biA/IFJlbmRlckxheWVyOjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4gOiBS
ZW5kZXJMYXllcjo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QWNjZXNzaWJsZU9yaWdpbk9u
bHkpOworICAgIHJvb3RMYXllci0+cGFpbnQoY29udGV4dCwgZGlydHlSZWN0LCBMYXlvdXRTaXpl
KCksIG1fcGFpbnRCZWhhdmlvciwgcmVuZGVyZXIsIHsgfSwgc2VjdXJpdHlPcmlnaW5QYWludFBv
bGljeSA9PSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4gPyBSZW5kZXJMYXll
cjo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luIDogUmVuZGVyTGF5ZXI6OlNl
Y3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFjY2Vzc2libGVPcmlnaW5Pbmx5KTsKICAgICBpZiAo
cm9vdExheWVyLT5jb250YWluc0RpcnR5T3ZlcmxheVNjcm9sbGJhcnMoKSkKICAgICAgICAgcm9v
dExheWVyLT5wYWludE92ZXJsYXlTY3JvbGxiYXJzKGNvbnRleHQsIGRpcnR5UmVjdCwgbV9wYWlu
dEJlaGF2aW9yLCByZW5kZXJlcik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcAkocmV2aXNpb24gMjM0NzUzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcxLDcgKzQ3MSw3IEBAIEZp
bHRlckVmZmVjdFJlbmRlcmVyKiBSZW5kZXJMYXllcjo6ZmlsdGUKICAgICByZXR1cm4gZmlsdGVy
SW5mbyA/IGZpbHRlckluZm8tPnJlbmRlcmVyKCkgOiBudWxscHRyOwogfQogCi12b2lkIFJlbmRl
ckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyTGF5b3V0KGNvbnN0IFJlbmRlckxheWVy
KiByb290TGF5ZXIsIFVwZGF0ZUxheWVyUG9zaXRpb25zRmxhZ3MgZmxhZ3MpCit2b2lkIFJlbmRl
ckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyTGF5b3V0KGNvbnN0IFJlbmRlckxheWVy
KiByb290TGF5ZXIsIE9wdGlvblNldDxVcGRhdGVMYXllclBvc2l0aW9uc0ZsYWc+IGZsYWdzKQog
ewogICAgIExPRyhDb21wb3NpdGluZywgIlJlbmRlckxheWVyICVwIHVwZGF0ZUxheWVyUG9zaXRp
b25zQWZ0ZXJMYXlvdXQiLCB0aGlzKTsKICAgICBSZW5kZXJHZW9tZXRyeU1hcCBnZW9tZXRyeU1h
cChVc2VUcmFuc2Zvcm1zKTsKQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1
cGRhdGVMYXllclBvc2l0aW9uc0FmCiAgICAgdXBkYXRlTGF5ZXJQb3NpdGlvbnMoJmdlb21ldHJ5
TWFwLCBmbGFncyk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25z
KFJlbmRlckdlb21ldHJ5TWFwKiBnZW9tZXRyeU1hcCwgVXBkYXRlTGF5ZXJQb3NpdGlvbnNGbGFn
cyBmbGFncykKK3ZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zKFJlbmRlckdl
b21ldHJ5TWFwKiBnZW9tZXRyeU1hcCwgT3B0aW9uU2V0PFVwZGF0ZUxheWVyUG9zaXRpb25zRmxh
Zz4gZmxhZ3MpCiB7CiAgICAgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOyAvLyBGb3IgcmVscG9zaXRp
b25lZCBsYXllcnMgb3Igbm9uLXBvc2l0aW9uZWQgbGF5ZXJzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gd2UgbmVlZCB0byBrZWVwIGluIHN5bmMsIHNpbmNlIHdlIG1heSBoYXZlIHNo
aWZ0ZWQgcmVsYXRpdmUKQEAgLTU0NywxNyArNTQ3LDE3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVw
ZGF0ZUxheWVyUG9zaXRpb25zKFIKICAgICAgICAgY2xlYXJSZXBhaW50UmVjdHMoKTsKIAogICAg
IG1fcmVwYWludFN0YXR1cyA9IE5lZWRzTm9ybWFsUmVwYWludDsKLSAgICBtX2hhc1RyYW5zZm9y
bWVkQW5jZXN0b3IgPSBmbGFncyAmIFNlZW5UcmFuc2Zvcm1lZExheWVyOwotICAgIG1faGFzM0RU
cmFuc2Zvcm1lZEFuY2VzdG9yID0gZmxhZ3MgJiBTZWVuM0RUcmFuc2Zvcm1lZExheWVyOworICAg
IG1faGFzVHJhbnNmb3JtZWRBbmNlc3RvciA9IGZsYWdzLmNvbnRhaW5zKFNlZW5UcmFuc2Zvcm1l
ZExheWVyKTsKKyAgICBtX2hhczNEVHJhbnNmb3JtZWRBbmNlc3RvciA9IGZsYWdzLmNvbnRhaW5z
KFNlZW4zRFRyYW5zZm9ybWVkTGF5ZXIpOwogCiAgICAgLy8gVXBkYXRlIHRoZSByZWZsZWN0aW9u
J3MgcG9zaXRpb24gYW5kIHNpemUuCiAgICAgaWYgKG1fcmVmbGVjdGlvbikKICAgICAgICAgbV9y
ZWZsZWN0aW9uLT5sYXlvdXQoKTsKIAogICAgIC8vIENsZWFyIHRoZSBJc0NvbXBvc2l0aW5nVXBk
YXRlUm9vdCBmbGFnIG9uY2Ugd2UndmUgZm91bmQgdGhlIGZpcnN0IGNvbXBvc2l0aW5nIGxheWVy
IGluIHRoaXMgdXBkYXRlLgotICAgIGJvb2wgaXNVcGRhdGVSb290ID0gKGZsYWdzICYgSXNDb21w
b3NpdGluZ1VwZGF0ZVJvb3QpOworICAgIGJvb2wgaXNVcGRhdGVSb290ID0gZmxhZ3MuY29udGFp
bnMoSXNDb21wb3NpdGluZ1VwZGF0ZVJvb3QpOwogICAgIGlmIChpc0NvbXBvc2l0ZWQoKSkKLSAg
ICAgICAgZmxhZ3MgJj0gfklzQ29tcG9zaXRpbmdVcGRhdGVSb290OworICAgICAgICBmbGFncyAt
PSBJc0NvbXBvc2l0aW5nVXBkYXRlUm9vdDsKIAogICAgIGlmIChyZW5kZXJlcigpLmlzSW5GbG93
UmVuZGVyRnJhZ21lbnRlZEZsb3coKSkgewogICAgICAgICB1cGRhdGVQYWdpbmF0aW9uKCk7CkBA
IC04MzcsNyArODM3LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbnNB
ZgogICAgIHVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJTY3JvbGwoJmdlb21ldHJ5TWFwLCBJc092
ZXJmbG93U2Nyb2xsKTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlv
bnNBZnRlclNjcm9sbChSZW5kZXJHZW9tZXRyeU1hcCogZ2VvbWV0cnlNYXAsIFVwZGF0ZUxheWVy
UG9zaXRpb25zQWZ0ZXJTY3JvbGxGbGFncyBmbGFncykKK3ZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0
ZUxheWVyUG9zaXRpb25zQWZ0ZXJTY3JvbGwoUmVuZGVyR2VvbWV0cnlNYXAqIGdlb21ldHJ5TWFw
LCBPcHRpb25TZXQ8VXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9sbEZsYWc+IGZsYWdzKQog
ewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZG4ndCBiZSBuZWVkZWQsIGJ1dCB0aGVyZSBhcmUg
c29tZSBjb3JuZXIgY2FzZXMgd2hlcmUKICAgICAvLyB0aGVzZSBmbGFncyBhcmUgc3RpbGwgZGly
dHkuIFVwZGF0ZSBzbyB0aGF0IHRoZSBjaGVjayBiZWxvdyBpcyB2YWxpZC4KQEAgLTM4NTUsNyAr
Mzg1NSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNjcm9sbChTY3JvbGxEaXJlY3Rpb24KICAgICBy
ZXR1cm4gU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbChkaXJlY3Rpb24sIGdyYW51bGFyaXR5LCBtdWx0
aXBsaWVyKTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBjb25zdCBMYXlvdXRTaXplJiBz
dWJwaXhlbE9mZnNldCwgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3IsIFJl
bmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCwgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3Ms
IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgcGFpbnRQb2xpY3kpCit2b2lkIFJlbmRlckxheWVy
OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIGRhbWFn
ZVJlY3QsIGNvbnN0IExheW91dFNpemUmIHN1YnBpeGVsT2Zmc2V0LCBPcHRpb25TZXQ8UGFpbnRC
ZWhhdmlvcj4gcGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290LCBP
cHRpb25TZXQ8UGFpbnRMYXllckZsYWc+IHBhaW50RmxhZ3MsIFNlY3VyaXR5T3JpZ2luUGFpbnRQ
b2xpY3kgcGFpbnRQb2xpY3kpCiB7CiAgICAgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwIG92ZXJsYXBU
ZXN0UmVxdWVzdHM7CiAKQEAgLTM5NjIsMTIgKzM5NjIsMTIgQEAgc3RhdGljIGlubGluZSBib29s
IHNob3VsZFN1cHByZXNzUGFpbnRpbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGlu
bGluZSBib29sIHBhaW50Rm9yRml4ZWRSb290QmFja2dyb3VuZChjb25zdCBSZW5kZXJMYXllciog
bGF5ZXIsIFJlbmRlckxheWVyOjpQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKK3N0YXRpYyBp
bmxpbmUgYm9vbCBwYWludEZvckZpeGVkUm9vdEJhY2tncm91bmQoY29uc3QgUmVuZGVyTGF5ZXIq
IGxheWVyLCBPcHRpb25TZXQ8UmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJGbGFnPiBwYWludEZsYWdz
KQogewogICAgIHJldHVybiBsYXllci0+cmVuZGVyZXIoKS5pc0RvY3VtZW50RWxlbWVudFJlbmRl
cmVyKCkgJiYgKHBhaW50RmxhZ3MgJiBSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nUm9v
dEJhY2tncm91bmRPbmx5KTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcihHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0lu
Zm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRM
YXllcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBw
YWludGluZ0luZm8sIE9wdGlvblNldDxQYWludExheWVyRmxhZz4gcGFpbnRGbGFncykKIHsKICAg
ICBpZiAoaXNDb21wb3NpdGVkKCkpIHsKICAgICAgICAgLy8gVGhlIHBlcmZvcm1pbmdQYWludElu
dmFsaWRhdGlvbigpIHBhaW50aW5nIHBhc3MgZ29lcyB0aHJvdWdoIGNvbXBvc2l0aW5nIGxheWVy
cywKQEAgLTM5NzYsNyArMzk3Niw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIoR3Jh
cGhpY3NDb24KICAgICAgICAgICAgIHBhaW50RmxhZ3MgfD0gUGFpbnRMYXllclRlbXBvcmFyeUNs
aXBSZWN0czsKICAgICAgICAgZWxzZSBpZiAoIWJhY2tpbmcoKS0+cGFpbnRzSW50b1dpbmRvdygp
CiAgICAgICAgICAgICAmJiAhYmFja2luZygpLT5wYWludHNJbnRvQ29tcG9zaXRlZEFuY2VzdG9y
KCkKLSAgICAgICAgICAgICYmICFzaG91bGREb1NvZnR3YXJlUGFpbnQodGhpcywgcGFpbnRGbGFn
cyAmIFBhaW50TGF5ZXJQYWludGluZ1JlZmxlY3Rpb24pCisgICAgICAgICAgICAmJiAhc2hvdWxk
RG9Tb2Z0d2FyZVBhaW50KHRoaXMsIHBhaW50RmxhZ3MuY29udGFpbnMoUGFpbnRMYXllclBhaW50
aW5nUmVmbGVjdGlvbikpCiAgICAgICAgICAgICAmJiAhcGFpbnRGb3JGaXhlZFJvb3RCYWNrZ3Jv
dW5kKHRoaXMsIHBhaW50RmxhZ3MpKSB7CiAgICAgICAgICAgICAvLyBJZiB0aGlzIFJlbmRlckxh
eWVyIHNob3VsZCBwYWludCBpbnRvIGl0cyBiYWNraW5nLCB0aGF0IHdpbGwgYmUgZG9uZSB2aWEg
UmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcigpLgogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtNDA0NywxMSArNDA0NywxMSBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyKEdy
YXBoaWNzQ29uCiAgICAgcGFpbnRMYXllckNvbnRlbnRzQW5kUmVmbGVjdGlvbihjb250ZXh0LCBw
YWludGluZ0luZm8sIHBhaW50RmxhZ3MpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludExh
eWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
TGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50Rmxh
Z3MpCit2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5n
SW5mbywgT3B0aW9uU2V0PFBhaW50TGF5ZXJGbGFnPiBwYWludEZsYWdzKQogewogICAgIEFTU0VS
VChpc1NlbGZQYWludGluZ0xheWVyKCkgfHwgaGFzU2VsZlBhaW50aW5nTGF5ZXJEZXNjZW5kYW50
KCkpOwogCi0gICAgUGFpbnRMYXllckZsYWdzIGxvY2FsUGFpbnRGbGFncyA9IHBhaW50RmxhZ3Mg
JiB+KFBhaW50TGF5ZXJBcHBsaWVkVHJhbnNmb3JtKTsKKyAgICBhdXRvIGxvY2FsUGFpbnRGbGFn
cyA9IHBhaW50RmxhZ3MgLSBQYWludExheWVyQXBwbGllZFRyYW5zZm9ybTsKIAogICAgIC8vIFBh
aW50IHRoZSByZWZsZWN0aW9uIGZpcnN0IGlmIHdlIGhhdmUgb25lLgogICAgIGlmIChtX3JlZmxl
Y3Rpb24gJiYgIW1fcGFpbnRpbmdJbnNpZGVSZWZsZWN0aW9uKSB7CkBAIC00MDYxLDcgKzQwNjEs
NyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHNBbmRSCiAgICAgICAgIG1f
cGFpbnRpbmdJbnNpZGVSZWZsZWN0aW9uID0gZmFsc2U7CiAgICAgfQogCi0gICAgbG9jYWxQYWlu
dEZsYWdzIHw9IFBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nQWxsUGhhc2VzOworICAgIGxv
Y2FsUGFpbnRGbGFncyB8PSBwYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0FsbFBoYXNlc0Zs
YWdzKCk7CiAgICAgcGFpbnRMYXllckNvbnRlbnRzKGNvbnRleHQsIHBhaW50aW5nSW5mbywgbG9j
YWxQYWludEZsYWdzKTsKIH0KIApAQCAtNDE1Nyw3ICs0MTU3LDcgQEAgYm9vbCBSZW5kZXJMYXll
cjo6c2V0dXBDbGlwUGF0aChHcmFwaGljcwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBp
ZiAoIXJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKSB7Ci0gICAgICAgIHJvb3RSZWxhdGl2ZUJv
dW5kcyA9IGNhbGN1bGF0ZUxheWVyQm91bmRzKHBhaW50aW5nSW5mby5yb290TGF5ZXIsIG9mZnNl
dEZyb21Sb290LCAwKTsKKyAgICAgICAgcm9vdFJlbGF0aXZlQm91bmRzID0gY2FsY3VsYXRlTGF5
ZXJCb3VuZHMocGFpbnRpbmdJbmZvLnJvb3RMYXllciwgb2Zmc2V0RnJvbVJvb3QsIHsgfSk7CiAg
ICAgICAgIHJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkID0gdHJ1ZTsKICAgICB9CiAKQEAgLTQx
OTUsNyArNDE5NSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNldHVwQ2xpcFBhdGgoR3JhcGhpY3MK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6cGFpcjxSZW5kZXJMYXllcjo6RmlsdGVySW5m
byosIHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcj4+IFJlbmRlckxh
eWVyOjpmaWx0ZXJQYWludGVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUGFpbnRMYXllckZs
YWdzIHBhaW50RmxhZ3MpIGNvbnN0CitzdGQ6OnBhaXI8UmVuZGVyTGF5ZXI6OkZpbHRlckluZm8q
LCBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI+PiBSZW5kZXJMYXll
cjo6ZmlsdGVyUGFpbnRlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE9wdGlvblNldDxQYWlu
dExheWVyRmxhZz4gcGFpbnRGbGFncykgY29uc3QKIHsKICAgICBpZiAoY29udGV4dC5wYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC00MjE3LDEyICs0MjE3LDEyIEBA
IHN0ZDo6cGFpcjxSZW5kZXJMYXllcjo6RmlsdGVySW5mbyosIHN0ZDoKICAgICByZXR1cm4geyBp
bmZvLCBXVEZNb3ZlKGhlbHBlcikgfTsKIH0KIAotYm9vbCBSZW5kZXJMYXllcjo6aGFzRmlsdGVy
VGhhdElzUGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBQYWludExheWVyRmxhZ3Mg
cGFpbnRGbGFncykgY29uc3QKK2Jvb2wgUmVuZGVyTGF5ZXI6Omhhc0ZpbHRlclRoYXRJc1BhaW50
aW5nKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgT3B0aW9uU2V0PFBhaW50TGF5ZXJGbGFnPiBw
YWludEZsYWdzKSBjb25zdAogewogICAgIHJldHVybiAhIWZpbHRlclBhaW50ZXIoY29udGV4dCwg
cGFpbnRGbGFncykuZmlyc3Q7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RSZW5k
ZXJlckhlbHBlcj4gUmVuZGVyTGF5ZXI6OnNldHVwRmlsdGVycyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBw
YWludEZsYWdzLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwgTGF5b3V0UmVjdCYg
cm9vdFJlbGF0aXZlQm91bmRzLCBib29sJiByb290UmVsYXRpdmVCb3VuZHNDb21wdXRlZCkKK3N0
ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcj4gUmVuZGVyTGF5ZXI6OnNl
dHVwRmlsdGVycyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIExheWVyUGFpbnRpbmdJbmZvJiBw
YWludGluZ0luZm8sIE9wdGlvblNldDxQYWludExheWVyRmxhZz4gcGFpbnRGbGFncywgY29uc3Qg
TGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIExheW91dFJlY3QmIHJvb3RSZWxhdGl2ZUJvdW5k
cywgYm9vbCYgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpCiB7CiAgICAgYXV0byBwYWludGVy
ID0gZmlsdGVyUGFpbnRlcihjb250ZXh0LCBwYWludEZsYWdzKTsKICAgICBpZiAoIXBhaW50ZXIu
Zmlyc3QpCkBAIC00MjM1LDcgKzQyMzUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0
UmVuZGVyZXJIZWxwCiAgICAgZmlsdGVyUmVwYWludFJlY3QubW92ZShvZmZzZXRGcm9tUm9vdCk7
CiAKICAgICBpZiAoIXJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKSB7Ci0gICAgICAgIHJvb3RS
ZWxhdGl2ZUJvdW5kcyA9IGNhbGN1bGF0ZUxheWVyQm91bmRzKHBhaW50aW5nSW5mby5yb290TGF5
ZXIsIG9mZnNldEZyb21Sb290LCAwKTsKKyAgICAgICAgcm9vdFJlbGF0aXZlQm91bmRzID0gY2Fs
Y3VsYXRlTGF5ZXJCb3VuZHMocGFpbnRpbmdJbmZvLnJvb3RMYXllciwgb2Zmc2V0RnJvbVJvb3Qs
IHsgfSk7CiAgICAgICAgIHJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkID0gdHJ1ZTsKICAgICB9
CiAKQEAgLTQyNzcsMTggKzQyNzcsMTggQEAgc3RhdGljIGlubGluZSBib29sIGNvbXBhcmVaSW5k
ZXgoUmVuZGVyTAogICAgIHJldHVybiBmaXJzdC0+ekluZGV4KCkgPCBzZWNvbmQtPnpJbmRleCgp
OwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWlu
dExheWVyRmxhZ3MgcGFpbnRGbGFncykKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250
ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBw
YWludGluZ0luZm8sIE9wdGlvblNldDxQYWludExheWVyRmxhZz4gcGFpbnRGbGFncykKIHsKICAg
ICBBU1NFUlQoaXNTZWxmUGFpbnRpbmdMYXllcigpIHx8IGhhc1NlbGZQYWludGluZ0xheWVyRGVz
Y2VuZGFudCgpKTsKIAotICAgIFBhaW50TGF5ZXJGbGFncyBsb2NhbFBhaW50RmxhZ3MgPSBwYWlu
dEZsYWdzICYgfihQYWludExheWVyQXBwbGllZFRyYW5zZm9ybSk7Ci0gICAgYm9vbCBoYXZlVHJh
bnNwYXJlbmN5ID0gbG9jYWxQYWludEZsYWdzICYgUGFpbnRMYXllckhhdmVUcmFuc3BhcmVuY3k7
CisgICAgYXV0byBsb2NhbFBhaW50RmxhZ3MgPSBwYWludEZsYWdzIC0gUGFpbnRMYXllckFwcGxp
ZWRUcmFuc2Zvcm07CisgICAgYm9vbCBoYXZlVHJhbnNwYXJlbmN5ID0gbG9jYWxQYWludEZsYWdz
LmNvbnRhaW5zKFBhaW50TGF5ZXJIYXZlVHJhbnNwYXJlbmN5KTsKICAgICBib29sIGlzU2VsZlBh
aW50aW5nTGF5ZXIgPSB0aGlzLT5pc1NlbGZQYWludGluZ0xheWVyKCk7Ci0gICAgYm9vbCBpc1Bh
aW50aW5nT3ZlcmxheVNjcm9sbGJhcnMgPSBwYWludEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5n
T3ZlcmxheVNjcm9sbGJhcnM7Ci0gICAgYm9vbCBpc1BhaW50aW5nU2Nyb2xsaW5nQ29udGVudCA9
IHBhaW50RmxhZ3MgJiBQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ1Njcm9sbGluZ1BoYXNl
OwotICAgIGJvb2wgaXNQYWludGluZ0NvbXBvc2l0ZWRGb3JlZ3JvdW5kID0gcGFpbnRGbGFncyAm
IFBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nRm9yZWdyb3VuZFBoYXNlOwotICAgIGJvb2wg
aXNQYWludGluZ0NvbXBvc2l0ZWRCYWNrZ3JvdW5kID0gcGFpbnRGbGFncyAmIFBhaW50TGF5ZXJQ
YWludGluZ0NvbXBvc2l0aW5nQmFja2dyb3VuZFBoYXNlOwotICAgIGJvb2wgaXNQYWludGluZ092
ZXJmbG93Q29udGVudHMgPSBwYWludEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5nT3ZlcmZsb3dD
b250ZW50czsKKyAgICBib29sIGlzUGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFycyA9IHBhaW50Rmxh
Z3MuY29udGFpbnMoUGFpbnRMYXllclBhaW50aW5nT3ZlcmxheVNjcm9sbGJhcnMpOworICAgIGJv
b2wgaXNQYWludGluZ1Njcm9sbGluZ0NvbnRlbnQgPSBwYWludEZsYWdzLmNvbnRhaW5zKFBhaW50
TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nU2Nyb2xsaW5nUGhhc2UpOworICAgIGJvb2wgaXNQYWlu
dGluZ0NvbXBvc2l0ZWRGb3JlZ3JvdW5kID0gcGFpbnRGbGFncy5jb250YWlucyhQYWludExheWVy
UGFpbnRpbmdDb21wb3NpdGluZ0ZvcmVncm91bmRQaGFzZSk7CisgICAgYm9vbCBpc1BhaW50aW5n
Q29tcG9zaXRlZEJhY2tncm91bmQgPSBwYWludEZsYWdzLmNvbnRhaW5zKFBhaW50TGF5ZXJQYWlu
dGluZ0NvbXBvc2l0aW5nQmFja2dyb3VuZFBoYXNlKTsKKyAgICBib29sIGlzUGFpbnRpbmdPdmVy
Zmxvd0NvbnRlbnRzID0gcGFpbnRGbGFncy5jb250YWlucyhQYWludExheWVyUGFpbnRpbmdPdmVy
Zmxvd0NvbnRlbnRzKTsKICAgICAvLyBPdXRsaW5lIGFsd2F5cyBuZWVkcyB0byBiZSBwYWludGVk
IGV2ZW4gaWYgd2UgaGF2ZSBubyB2aXNpYmxlIGNvbnRlbnQuIEFsc28sCiAgICAgLy8gdGhlIG91
dGxpbmUgaXMgcGFpbnRlZCBpbiB0aGUgYmFja2dyb3VuZCBwaGFzZSBkdXJpbmcgY29tcG9zaXRl
ZCBzY3JvbGxpbmcuCiAgICAgLy8gSWYgaXQgd2VyZSBwYWludGVkIGluIHRoZSBmb3JlZ3JvdW5k
IHBoYXNlLCBpdCB3b3VsZCBtb3ZlIHdpdGggdGhlIHNjcm9sbGVkCkBAIC00NDc3LDcgKzQ0Nzcs
NyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMoR3JhCiAgICAgICAgIGNv
bnRleHQucmVzdG9yZSgpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQnlBcHBs
eWluZ1RyYW5zZm9ybShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRp
bmdJbmZvJiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzLCBjb25zdCBM
YXlvdXRTaXplJiB0cmFuc2xhdGlvbk9mZnNldCkKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5
ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5
ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgT3B0aW9uU2V0PFBhaW50TGF5ZXJGbGFnPiBw
YWludEZsYWdzLCBjb25zdCBMYXlvdXRTaXplJiB0cmFuc2xhdGlvbk9mZnNldCkKIHsKICAgICAv
LyBUaGlzIGludm9sdmVzIHN1YnRyYWN0aW5nIG91dCB0aGUgcG9zaXRpb24gb2YgdGhlIGxheWVy
IGluIG91ciBjdXJyZW50IGNvb3JkaW5hdGUgc3BhY2UsIGJ1dCBwcmVzZXJ2aW5nCiAgICAgLy8g
dGhlIGFjY3VtdWxhdGVkIGVycm9yIGZvciBzdWItcGl4ZWwgbGF5b3V0LgpAQCAtNDUwNiw3ICs0
NTA2LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckJ5QXBwbHlpbmdUcgogICAgIGNv
bnRleHQuc2V0Q1RNKG9sZFRyYW5zZnJvbSk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50
TGlzdChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbGlzdCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3Mg
cGFpbnRGbGFncykKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGlzdChWZWN0b3I8UmVuZGVyTGF5
ZXIqPiogbGlzdCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5n
SW5mbyYgcGFpbnRpbmdJbmZvLCBPcHRpb25TZXQ8UGFpbnRMYXllckZsYWc+IHBhaW50RmxhZ3Mp
CiB7CiAgICAgaWYgKCFsaXN0KQogICAgICAgICByZXR1cm47CkBAIC00Njc1LDcgKzQ2NzUsNyBA
QCB2b2lkIFJlbmRlckxheWVyOjpjb2xsZWN0RnJhZ21lbnRzKExheWVyCiAgICAgfQogfQogCi12
b2lkIFJlbmRlckxheWVyOjp1cGRhdGVQYWludGluZ0luZm9Gb3JGcmFnbWVudHMoTGF5ZXJGcmFn
bWVudHMmIGZyYWdtZW50cywgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIGxvY2FsUGFpbnRpbmdJ
bmZvLCBQYWludExheWVyRmxhZ3MgbG9jYWxQYWludEZsYWdzLAordm9pZCBSZW5kZXJMYXllcjo6
dXBkYXRlUGFpbnRpbmdJbmZvRm9yRnJhZ21lbnRzKExheWVyRnJhZ21lbnRzJiBmcmFnbWVudHMs
IGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBsb2NhbFBhaW50aW5nSW5mbywgT3B0aW9uU2V0PFBh
aW50TGF5ZXJGbGFnPiBsb2NhbFBhaW50RmxhZ3MsCiAgICAgYm9vbCBzaG91bGRQYWludENvbnRl
bnQsIGNvbnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290KQogewogICAgIGZvciAoYXV0byYg
ZnJhZ21lbnQgOiBmcmFnbWVudHMpIHsKQEAgLTQ2ODcsNyArNDY4Nyw3IEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OnVwZGF0ZVBhaW50aW5nSW5mb0ZvckYKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyTGF5
ZXI6OnBhaW50VHJhbnNmb3JtZWRMYXllckludG9GcmFnbWVudHMoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVy
RmxhZ3MgcGFpbnRGbGFncykKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50VHJhbnNmb3JtZWRMYXll
ckludG9GcmFnbWVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50
aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBPcHRpb25TZXQ8UGFpbnRMYXllckZsYWc+IHBhaW50Rmxh
Z3MpCiB7CiAgICAgTGF5ZXJGcmFnbWVudHMgZW5jbG9zaW5nUGFnaW5hdGlvbkZyYWdtZW50czsK
ICAgICBMYXlvdXRTaXplIG9mZnNldE9mUGFnaW5hdGlvbkxheWVyRnJvbVJvb3Q7CkBAIC01NzE1
LDcgKzU3MTUsNyBAQCBib29sIFJlbmRlckxheWVyOjppbnRlcnNlY3RzRGFtYWdlUmVjdChjCiAg
ICAgcmV0dXJuIGJvdW5kaW5nQm94KHJvb3RMYXllciwgb2Zmc2V0RnJvbVJvb3QpLmludGVyc2Vj
dHMoZGFtYWdlUmVjdCk7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyTGF5ZXI6OmxvY2FsQm91bmRp
bmdCb3goQ2FsY3VsYXRlTGF5ZXJCb3VuZHNGbGFncyBmbGFncykgY29uc3QKK0xheW91dFJlY3Qg
UmVuZGVyTGF5ZXI6OmxvY2FsQm91bmRpbmdCb3goT3B0aW9uU2V0PENhbGN1bGF0ZUxheWVyQm91
bmRzRmxhZz4gZmxhZ3MpIGNvbnN0CiB7CiAgICAgLy8gVGhlcmUgYXJlIHRocmVlIHNwZWNpYWwg
Y2FzZXMgd2UgbmVlZCB0byBjb25zaWRlci4KICAgICAvLyAoMSkgSW5saW5lIEZsb3dzLiAgRm9y
IGlubGluZSBmbG93cyB3ZSB3aWxsIGNyZWF0ZSBhIGJvdW5kaW5nIGJveCB0aGF0IGZ1bGx5IGVu
Y29tcGFzc2VzIGFsbCBvZiB0aGUgbGluZXMgb2NjdXBpZWQgYnkgdGhlCkBAIC01NzU2LDcgKzU3
NTYsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckxheWVyOjpsb2NhbEJvdW5kaW5nQm94CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJMYXllcjo6Ym91bmRpbmdCb3goY29u
c3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIsIGNvbnN0IExheW91dFNpemUmIG9mZnNldEZy
b21Sb290LCBDYWxjdWxhdGVMYXllckJvdW5kc0ZsYWdzIGZsYWdzKSBjb25zdAorTGF5b3V0UmVj
dCBSZW5kZXJMYXllcjo6Ym91bmRpbmdCb3goY29uc3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5
ZXIsIGNvbnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290LCBPcHRpb25TZXQ8Q2FsY3VsYXRl
TGF5ZXJCb3VuZHNGbGFnPiBmbGFncykgY29uc3QKIHsgICAgCiAgICAgTGF5b3V0UmVjdCByZXN1
bHQgPSBsb2NhbEJvdW5kaW5nQm94KGZsYWdzKTsKICAgICBpZiAocmVuZGVyZXIoKS52aWV3KCku
ZnJhbWVWaWV3KCkuaGFzRmxpcHBlZEJsb2NrUmVuZGVyZXJzKCkpIHsKQEAgLTU3OTcsMTAgKzU3
OTcsMTAgQEAgTGF5b3V0UmVjdCBSZW5kZXJMYXllcjo6Ym91bmRpbmdCb3goY29ucwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLWJvb2wgUmVuZGVyTGF5ZXI6OmdldE92ZXJsYXBCb3VuZHNJbmNs
dWRpbmdDaGlsZHJlbkFjY291bnRpbmdGb3JUcmFuc2Zvcm1BbmltYXRpb25zKExheW91dFJlY3Qm
IGJvdW5kcywgQ2FsY3VsYXRlTGF5ZXJCb3VuZHNGbGFncyBhZGRpdGlvbmFsRmxhZ3MpIGNvbnN0
Citib29sIFJlbmRlckxheWVyOjpnZXRPdmVybGFwQm91bmRzSW5jbHVkaW5nQ2hpbGRyZW5BY2Nv
dW50aW5nRm9yVHJhbnNmb3JtQW5pbWF0aW9ucyhMYXlvdXRSZWN0JiBib3VuZHMsIE9wdGlvblNl
dDxDYWxjdWxhdGVMYXllckJvdW5kc0ZsYWc+IGFkZGl0aW9uYWxGbGFncykgY29uc3QKIHsKICAg
ICAvLyBUaGUgYW5pbWF0aW9uIHdpbGwgb3ZlcnJpZGUgdGhlIGRpc3BsYXkgdHJhbnNmb3JtLCBz
byBkb24ndCBpbmNsdWRlIGl0LgotICAgIENhbGN1bGF0ZUxheWVyQm91bmRzRmxhZ3MgYm91bmRz
RmxhZ3MgPSBhZGRpdGlvbmFsRmxhZ3MgfCAoRGVmYXVsdENhbGN1bGF0ZUxheWVyQm91bmRzRmxh
Z3MgJiB+SW5jbHVkZVNlbGZUcmFuc2Zvcm0pOworICAgIGF1dG8gYm91bmRzRmxhZ3MgPSAoYWRk
aXRpb25hbEZsYWdzIHwgZGVmYXVsdENhbGN1bGF0ZUxheWVyQm91bmRzRmxhZ3MoKSkgLSBJbmNs
dWRlU2VsZlRyYW5zZm9ybTsKICAgICAKICAgICBib3VuZHMgPSBjYWxjdWxhdGVMYXllckJvdW5k
cyh0aGlzLCBMYXlvdXRTaXplKCksIGJvdW5kc0ZsYWdzKTsKICAgICAKQEAgLTU4MzQsNyArNTgz
NCw3IEBAIEZsb2F0UmVjdCBSZW5kZXJMYXllcjo6YWJzb2x1dGVCb3VuZGluZ0IKICAgICByZXR1
cm4gc25hcFJlY3RUb0RldmljZVBpeGVscyhib3VuZGluZ0JveChyb290TGF5ZXIsIG9mZnNldEZy
b21BbmNlc3Rvcihyb290TGF5ZXIpKSwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxl
RmFjdG9yKCkpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlckxheWVyOjpjYWxjdWxhdGVMYXllckJv
dW5kcyhjb25zdCBSZW5kZXJMYXllciogYW5jZXN0b3JMYXllciwgY29uc3QgTGF5b3V0U2l6ZSYg
b2Zmc2V0RnJvbVJvb3QsIENhbGN1bGF0ZUxheWVyQm91bmRzRmxhZ3MgZmxhZ3MpIGNvbnN0CitM
YXlvdXRSZWN0IFJlbmRlckxheWVyOjpjYWxjdWxhdGVMYXllckJvdW5kcyhjb25zdCBSZW5kZXJM
YXllciogYW5jZXN0b3JMYXllciwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIE9w
dGlvblNldDxDYWxjdWxhdGVMYXllckJvdW5kc0ZsYWc+IGZsYWdzKSBjb25zdAogewogICAgIGlm
ICghaXNTZWxmUGFpbnRpbmdMYXllcigpKQogICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwpA
QCAtNTg4MCw3ICs1ODgwLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJMYXllcjo6Y2FsY3VsYXRlTGF5
ZXJCbwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBzaG91bGQgcHJvYmFibHkganVzdCBwYXNzICdm
bGFncycgZG93biB0byBkZXNjZW5kYW50cy4KLSAgICBDYWxjdWxhdGVMYXllckJvdW5kc0ZsYWdz
IGRlc2NlbmRhbnRGbGFncyA9IERlZmF1bHRDYWxjdWxhdGVMYXllckJvdW5kc0ZsYWdzIHwgKGZs
YWdzICYgRXhjbHVkZUhpZGRlbkRlc2NlbmRhbnRzKSB8IChmbGFncyAmIEluY2x1ZGVDb21wb3Np
dGVkRGVzY2VuZGFudHMpOworICAgIGF1dG8gZGVzY2VuZGFudEZsYWdzID0gZGVmYXVsdENhbGN1
bGF0ZUxheWVyQm91bmRzRmxhZ3MoKSB8IChmbGFncyAmIEV4Y2x1ZGVIaWRkZW5EZXNjZW5kYW50
cykgfCAoZmxhZ3MgJiBJbmNsdWRlQ29tcG9zaXRlZERlc2NlbmRhbnRzKTsKIAogICAgIGNvbnN0
X2Nhc3Q8UmVuZGVyTGF5ZXIqPih0aGlzKS0+dXBkYXRlTGF5ZXJMaXN0c0lmTmVlZGVkKCk7CiAK
QEAgLTYwMTEsNyArNjAxMSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnBhaW50c1dpdGhUcmFuc2Zv
cm0oT3AKICAgICByZXR1cm4gdHJhbnNmb3JtKCkgJiYgKChwYWludEJlaGF2aW9yICYgUGFpbnRC
ZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKSB8fCBwYWludHNUb1dpbmRvdyk7CiB9
CiAKLWJvb2wgUmVuZGVyTGF5ZXI6OnNob3VsZFBhaW50TWFzayhPcHRpb25TZXQ8UGFpbnRCZWhh
dmlvcj4gcGFpbnRCZWhhdmlvciwgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpIGNvbnN0Citi
b29sIFJlbmRlckxheWVyOjpzaG91bGRQYWludE1hc2soT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+
IHBhaW50QmVoYXZpb3IsIE9wdGlvblNldDxQYWludExheWVyRmxhZz4gcGFpbnRGbGFncykgY29u
c3QKIHsKICAgICBpZiAoIXJlbmRlcmVyKCkuaGFzTWFzaygpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC02MDIwLDEwICs2MDIwLDEwIEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNob3VsZFBhaW50
TWFzayhPcHRpb24KICAgICBpZiAocGFpbnRzVG9XaW5kb3cgfHwgKHBhaW50QmVoYXZpb3IgJiBQ
YWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIHJldHVybiAocGFpbnRGbGFncyAmIFBhaW50TGF5ZXJQYWludGluZ0NvbXBv
c2l0aW5nTWFza1BoYXNlKTsKKyAgICByZXR1cm4gcGFpbnRGbGFncy5jb250YWlucyhQYWludExh
eWVyUGFpbnRpbmdDb21wb3NpdGluZ01hc2tQaGFzZSk7CiB9CiAKLWJvb2wgUmVuZGVyTGF5ZXI6
OnNob3VsZEFwcGx5Q2xpcFBhdGgoT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZp
b3IsIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKSBjb25zdAorYm9vbCBSZW5kZXJMYXllcjo6
c2hvdWxkQXBwbHlDbGlwUGF0aChPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gcGFpbnRCZWhhdmlv
ciwgT3B0aW9uU2V0PFBhaW50TGF5ZXJGbGFnPiBwYWludEZsYWdzKSBjb25zdAogewogICAgIGlm
ICghcmVuZGVyZXIoKS5oYXNDbGlwUGF0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02
MDMyLDcgKzYwMzIsNyBAQCBib29sIFJlbmRlckxheWVyOjpzaG91bGRBcHBseUNsaXBQYXRoKE9w
CiAgICAgaWYgKHBhaW50c1RvV2luZG93IHx8IChwYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlv
cjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICByZXR1cm4gKHBhaW50RmxhZ3MgJiBQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0NsaXBQ
YXRoUGhhc2UpOworICAgIHJldHVybiBwYWludEZsYWdzLmNvbnRhaW5zKFBhaW50TGF5ZXJQYWlu
dGluZ0NvbXBvc2l0aW5nQ2xpcFBhdGhQaGFzZSk7CiB9CiAKIGJvb2wgUmVuZGVyTGF5ZXI6OnNj
cm9sbGluZ01heVJldmVhbEJhY2tncm91bmQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmgJKHJldmlzaW9uIDIzNDc1MykKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDYg
QEAgZW51bSBMYXllclNjcm9sbENvb3JkaW5hdGlvblJvbGUgewogICAgIFZpZXdwb3J0Q29uc3Ry
YWluZWQgPSAxIDw8IDAsCiAgICAgU2Nyb2xsaW5nICAgICAgICAgICA9IDEgPDwgMQogfTsKLXR5
cGVkZWYgdW5zaWduZWQgTGF5ZXJTY3JvbGxDb29yZGluYXRpb25Sb2xlczsKIAogZW51bSBjbGFz
cyBSZXF1ZXN0U3RhdGUgewogICAgIFVua25vd24sCkBAIC0zMTAsMTAgKzMwOSw5IEBAIHB1Ymxp
YzoKICAgICAgICAgU2VlblRyYW5zZm9ybWVkTGF5ZXIgPSAxIDw8IDUsCiAgICAgICAgIFNlZW4z
RFRyYW5zZm9ybWVkTGF5ZXIgPSAxIDw8IDYKICAgICB9OwotICAgIHR5cGVkZWYgdW5zaWduZWQg
VXBkYXRlTGF5ZXJQb3NpdGlvbnNGbGFnczsKLSAgICBzdGF0aWMgY29uc3QgVXBkYXRlTGF5ZXJQ
b3NpdGlvbnNGbGFncyBkZWZhdWx0RmxhZ3MgPSBDaGVja0ZvclJlcGFpbnQgfCBJc0NvbXBvc2l0
aW5nVXBkYXRlUm9vdCB8IFVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzOworICAgIHN0YXRpYyBjb25z
dGV4cHIgT3B0aW9uU2V0PFVwZGF0ZUxheWVyUG9zaXRpb25zRmxhZz4gdXBkYXRlTGF5ZXJQb3Np
dGlvbnNEZWZhdWx0RmxhZ3MoKSB7IHJldHVybiB7IENoZWNrRm9yUmVwYWludCwgSXNDb21wb3Np
dGluZ1VwZGF0ZVJvb3QsIFVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzIH07IH0KIAotICAgIHZvaWQg
dXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlckxheW91dChjb25zdCBSZW5kZXJMYXllciogcm9vdExh
eWVyLCBVcGRhdGVMYXllclBvc2l0aW9uc0ZsYWdzKTsKKyAgICB2b2lkIHVwZGF0ZUxheWVyUG9z
aXRpb25zQWZ0ZXJMYXlvdXQoY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgT3B0aW9uU2V0
PFVwZGF0ZUxheWVyUG9zaXRpb25zRmxhZz4pOwogCiAgICAgdm9pZCB1cGRhdGVMYXllclBvc2l0
aW9uc0FmdGVyT3ZlcmZsb3dTY3JvbGwoKTsKICAgICB2b2lkIHVwZGF0ZUxheWVyUG9zaXRpb25z
QWZ0ZXJEb2N1bWVudFNjcm9sbCgpOwpAQCAtNDk0LDEwICs0OTIsOCBAQCBwdWJsaWM6CiAgICAg
ICAgIFBhaW50TGF5ZXJQYWludGluZ1Jvb3RCYWNrZ3JvdW5kT25seSAgICAgICAgICAgID0gMSA8
PCAxMSwKICAgICAgICAgUGFpbnRMYXllclBhaW50aW5nU2tpcFJvb3RCYWNrZ3JvdW5kICAgICAg
ICAgICAgPSAxIDw8IDEyLAogICAgICAgICBQYWludExheWVyUGFpbnRpbmdDaGlsZENsaXBwaW5n
TWFza1BoYXNlICAgICAgICA9IDEgPDwgMTMsCi0gICAgICAgIFBhaW50TGF5ZXJQYWludGluZ0Nv
bXBvc2l0aW5nQWxsUGhhc2VzICAgICAgICAgID0gUGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRp
bmdCYWNrZ3JvdW5kUGhhc2UgfCBQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0ZvcmVncm91
bmRQaGFzZQogICAgIH07Ci0gICAgCi0gICAgdHlwZWRlZiB1bnNpZ25lZCBQYWludExheWVyRmxh
Z3M7CisgICAgc3RhdGljIGNvbnN0ZXhwciBPcHRpb25TZXQ8UGFpbnRMYXllckZsYWc+IHBhaW50
TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nQWxsUGhhc2VzRmxhZ3MoKSB7IHJldHVybiB7IFBhaW50
TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nQmFja2dyb3VuZFBoYXNlLCAgUGFpbnRMYXllclBhaW50
aW5nQ29tcG9zaXRpbmdGb3JlZ3JvdW5kUGhhc2UgfTsgfQogCiAgICAgZW51bSBjbGFzcyBTZWN1
cml0eU9yaWdpblBhaW50UG9saWN5IHsgQW55T3JpZ2luLCBBY2Nlc3NpYmxlT3JpZ2luT25seSB9
OwogCkBAIC01MDYsNyArNTAyLDcgQEAgcHVibGljOgogICAgIC8vIGZyb250LiAgVGhlIGhpdFRl
c3QgbWV0aG9kIGxvb2tzIGZvciBtb3VzZSBldmVudHMgYnkgd2Fsa2luZwogICAgIC8vIGxheWVy
cyB0aGF0IGludGVyc2VjdCB0aGUgcG9pbnQgZnJvbSBmcm9udCB0byBiYWNrLgogICAgIHZvaWQg
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwgY29u
c3QgTGF5b3V0U2l6ZSYgc3VicGl4ZWxPZmZzZXQgPSBMYXlvdXRTaXplKCksIE9wdGlvblNldDxQ
YWludEJlaGF2aW9yPiA9IFBhaW50QmVoYXZpb3I6Ok5vcm1hbCwKLSAgICAgICAgUmVuZGVyT2Jq
ZWN0KiBzdWJ0cmVlUGFpbnRSb290ID0gbnVsbHB0ciwgUGFpbnRMYXllckZsYWdzID0gMCwgU2Vj
dXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9y
aWdpbik7CisgICAgICAgIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCA9IG51bGxwdHIs
IE9wdGlvblNldDxQYWludExheWVyRmxhZz4gPSB7IH0sIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xp
Y3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4pOwogICAgIGJvb2wgaGl0
VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmKTsKICAgICBib29sIGhp
dFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mLCBIaXRU
ZXN0UmVzdWx0Jik7CiAgICAgdm9pZCBwYWludE92ZXJsYXlTY3JvbGxiYXJzKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIE9wdGlvblNldDxQYWludEJlaGF2
aW9yPiwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290ID0gbnVsbHB0cik7CkBAIC01NTMs
MTQgKzU0OSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIEluY2x1ZGVDb21wb3NpdGVkRGVzY2VuZGFu
dHMgICAgICAgICAgICA9IDEgPDwgNSwKICAgICAgICAgVXNlRnJhZ21lbnRCb3hlc0V4Y2x1ZGlu
Z0NvbXBvc2l0aW5nICAgID0gMSA8PCA2LAogICAgICAgICBVc2VGcmFnbWVudEJveGVzSW5jbHVk
aW5nQ29tcG9zaXRpbmcgICAgPSAxIDw8IDcsCi0gICAgICAgIERlZmF1bHRDYWxjdWxhdGVMYXll
ckJvdW5kc0ZsYWdzICAgICAgICA9IEluY2x1ZGVTZWxmVHJhbnNmb3JtIHwgVXNlTG9jYWxDbGlw
UmVjdElmUG9zc2libGUgfCBJbmNsdWRlTGF5ZXJGaWx0ZXJPdXRzZXRzIHwgVXNlRnJhZ21lbnRC
b3hlc0V4Y2x1ZGluZ0NvbXBvc2l0aW5nCisKICAgICB9OwotICAgIHR5cGVkZWYgdW5zaWduZWQg
Q2FsY3VsYXRlTGF5ZXJCb3VuZHNGbGFnczsKKyAgICBzdGF0aWMgY29uc3RleHByIE9wdGlvblNl
dDxDYWxjdWxhdGVMYXllckJvdW5kc0ZsYWc+IGRlZmF1bHRDYWxjdWxhdGVMYXllckJvdW5kc0Zs
YWdzKCkgeyByZXR1cm4geyBJbmNsdWRlU2VsZlRyYW5zZm9ybSwgVXNlTG9jYWxDbGlwUmVjdElm
UG9zc2libGUsIEluY2x1ZGVMYXllckZpbHRlck91dHNldHMsIFVzZUZyYWdtZW50Qm94ZXNFeGNs
dWRpbmdDb21wb3NpdGluZyB9OyB9CiAKICAgICAvLyBCb3VuZGluZyBib3ggcmVsYXRpdmUgdG8g
c29tZSBhbmNlc3RvciBsYXllci4gUGFzcyBvZmZzZXRGcm9tUm9vdCBpZiBrbm93bi4KLSAgICBM
YXlvdXRSZWN0IGJvdW5kaW5nQm94KGNvbnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIsIGNvbnN0
IExheW91dFNpemUmIG9mZnNldEZyb21Sb290ID0gTGF5b3V0U2l6ZSgpLCBDYWxjdWxhdGVMYXll
ckJvdW5kc0ZsYWdzID0gMCkgY29uc3Q7CisgICAgTGF5b3V0UmVjdCBib3VuZGluZ0JveChjb25z
dCBSZW5kZXJMYXllciogcm9vdExheWVyLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9v
dCA9IExheW91dFNpemUoKSwgT3B0aW9uU2V0PENhbGN1bGF0ZUxheWVyQm91bmRzRmxhZz4gPSB7
IH0pIGNvbnN0OwogICAgIC8vIEJvdW5kaW5nIGJveCBpbiB0aGUgY29vcmRpbmF0ZXMgb2YgdGhp
cyBsYXllci4KLSAgICBMYXlvdXRSZWN0IGxvY2FsQm91bmRpbmdCb3goQ2FsY3VsYXRlTGF5ZXJC
b3VuZHNGbGFncyA9IDApIGNvbnN0OworICAgIExheW91dFJlY3QgbG9jYWxCb3VuZGluZ0JveChP
cHRpb25TZXQ8Q2FsY3VsYXRlTGF5ZXJCb3VuZHNGbGFnPiA9IHsgfSkgY29uc3Q7CiAgICAgLy8g
RGVwcmVjYXRlZDogUGl4ZWwgc25hcHBlZCBib3VuZGluZyBib3ggcmVsYXRpdmUgdG8gdGhlIHJv
b3QuCiAgICAgV0VCQ09SRV9FWFBPUlQgSW50UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94KCkgY29u
c3Q7CiAgICAgLy8gRGV2aWNlIHBpeGVsIHNuYXBwZWQgYm91bmRpbmcgYm94IHJlbGF0aXZlIHRv
IHRoZSByb290LiBhYnNvbHV0ZUJvdW5kaW5nQm94KCkgY2FsbGVycyB3aWxsIGJlIGRpcmVjdGVk
IHRvIHRoaXMuCkBAIC01NzEsMTQgKzU2NywxNCBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8gVGFr
ZXMgdHJhbnNmb3JtIGFuaW1hdGlvbnMgaW50byBhY2NvdW50LCByZXR1cm5pbmcgdHJ1ZSBpZiB0
aGV5IGNvdWxkIGJlIGNoZWFwbHkgY29tcHV0ZWQuCiAgICAgLy8gVW5saWtlIG92ZXJsYXBCb3Vu
ZHMsIHRoZXNlIGJvdW5kcyBpbmNsdWRlIGRlc2NlbmRhbnQgbGF5ZXJzLgotICAgIGJvb2wgZ2V0
T3ZlcmxhcEJvdW5kc0luY2x1ZGluZ0NoaWxkcmVuQWNjb3VudGluZ0ZvclRyYW5zZm9ybUFuaW1h
dGlvbnMoTGF5b3V0UmVjdCYsIENhbGN1bGF0ZUxheWVyQm91bmRzRmxhZ3MgYWRkaXRpb25hbEZs
YWdzID0gMCkgY29uc3Q7CisgICAgYm9vbCBnZXRPdmVybGFwQm91bmRzSW5jbHVkaW5nQ2hpbGRy
ZW5BY2NvdW50aW5nRm9yVHJhbnNmb3JtQW5pbWF0aW9ucyhMYXlvdXRSZWN0JiwgT3B0aW9uU2V0
PENhbGN1bGF0ZUxheWVyQm91bmRzRmxhZz4gYWRkaXRpb25hbEZsYWdzID0geyB9KSBjb25zdDsK
IAogICAgIC8vIElmIHRydWUsIHRoaXMgbGF5ZXIncyBjaGlsZHJlbiBhcmUgaW5jbHVkZWQgaW4g
aXRzIGJvdW5kcyBmb3Igb3ZlcmxhcCB0ZXN0aW5nLgogICAgIC8vIFdlIGNhbid0IHJlbHkgb24g
dGhlIGNoaWxkcmVuJ3MgcG9zaXRpb25zIGlmIHRoaXMgbGF5ZXIgaGFzIGEgZmlsdGVyIHRoYXQg
Y291bGQgaGF2ZSBtb3ZlZCB0aGUgY2hpbGRyZW4ncyBwaXhlbHMgYXJvdW5kLgogICAgIGJvb2wg
b3ZlcmxhcEJvdW5kc0luY2x1ZGVDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIGhhc0ZpbHRlcigp
ICYmIHJlbmRlcmVyKCkuc3R5bGUoKS5maWx0ZXIoKS5oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMo
KTsgfQogCiAgICAgLy8gQ2FuIHBhc3Mgb2Zmc2V0RnJvbVJvb3QgaWYga25vd24uCi0gICAgTGF5
b3V0UmVjdCBjYWxjdWxhdGVMYXllckJvdW5kcyhjb25zdCBSZW5kZXJMYXllciogYW5jZXN0b3JM
YXllciwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIENhbGN1bGF0ZUxheWVyQm91
bmRzRmxhZ3MgPSBEZWZhdWx0Q2FsY3VsYXRlTGF5ZXJCb3VuZHNGbGFncykgY29uc3Q7CisgICAg
TGF5b3V0UmVjdCBjYWxjdWxhdGVMYXllckJvdW5kcyhjb25zdCBSZW5kZXJMYXllciogYW5jZXN0
b3JMYXllciwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIE9wdGlvblNldDxDYWxj
dWxhdGVMYXllckJvdW5kc0ZsYWc+ID0gZGVmYXVsdENhbGN1bGF0ZUxheWVyQm91bmRzRmxhZ3Mo
KSkgY29uc3Q7CiAgICAgCiAgICAgLy8gUmV0dXJuIGEgY2FjaGVkIHJlcGFpbnQgcmVjdCwgY29t
cHV0ZWQgcmVsYXRpdmUgdG8gdGhlIGxheWVyIHJlbmRlcmVyJ3MgY29udGFpbmVyRm9yUmVwYWlu
dC4KICAgICBib29sIGhhc0NvbXB1dGVkUmVwYWludFJlY3RzKCkgY29uc3QgeyByZXR1cm4gcmVu
ZGVyZXIoKS5oYXNSZXBhaW50TGF5b3V0UmVjdHMoKTsgfQpAQCAtNjY5LDggKzY2NSw4IEBAIHB1
YmxpYzoKICAgICB9CiAKICAgICBib29sIHBhaW50c1dpdGhUcmFuc2Zvcm0oT3B0aW9uU2V0PFBh
aW50QmVoYXZpb3I+KSBjb25zdDsKLSAgICBib29sIHNob3VsZFBhaW50TWFzayhPcHRpb25TZXQ8
UGFpbnRCZWhhdmlvcj4sIFBhaW50TGF5ZXJGbGFncykgY29uc3Q7Ci0gICAgYm9vbCBzaG91bGRB
cHBseUNsaXBQYXRoKE9wdGlvblNldDxQYWludEJlaGF2aW9yPiwgUGFpbnRMYXllckZsYWdzKSBj
b25zdDsKKyAgICBib29sIHNob3VsZFBhaW50TWFzayhPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4s
IE9wdGlvblNldDxQYWludExheWVyRmxhZz4pIGNvbnN0OworICAgIGJvb2wgc2hvdWxkQXBwbHlD
bGlwUGF0aChPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4sIE9wdGlvblNldDxQYWludExheWVyRmxh
Zz4pIGNvbnN0OwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGJhY2tncm91bmQgcGhhc2UgaXMg
cGFpbnRlZCBvcGFxdWUgaW4gdGhlIGdpdmVuIHJlY3QuCiAgICAgLy8gVGhlIHF1ZXJ5IHJlY3Qg
aXMgZ2l2ZW4gaW4gbG9jYWwgY29vcmRpbmF0ZXMuCkBAIC03OTUsMTcgKzc5MSwxNSBAQCBwcml2
YXRlOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgcG9zaXRpb24gY2hhbmdlZC4KICAgICBi
b29sIHVwZGF0ZUxheWVyUG9zaXRpb24oKTsKIAotICAgIHZvaWQgdXBkYXRlTGF5ZXJQb3NpdGlv
bnMoUmVuZGVyR2VvbWV0cnlNYXAqID0gbnVsbHB0ciwgVXBkYXRlTGF5ZXJQb3NpdGlvbnNGbGFn
cyA9IGRlZmF1bHRGbGFncyk7CisgICAgdm9pZCB1cGRhdGVMYXllclBvc2l0aW9ucyhSZW5kZXJH
ZW9tZXRyeU1hcCogPSBudWxscHRyLCBPcHRpb25TZXQ8VXBkYXRlTGF5ZXJQb3NpdGlvbnNGbGFn
PiA9IHVwZGF0ZUxheWVyUG9zaXRpb25zRGVmYXVsdEZsYWdzKCkpOwogCiAgICAgZW51bSBVcGRh
dGVMYXllclBvc2l0aW9uc0FmdGVyU2Nyb2xsRmxhZyB7Ci0gICAgICAgIE5vRmxhZyA9IDAsCiAg
ICAgICAgIElzT3ZlcmZsb3dTY3JvbGwgPSAxIDw8IDAsCiAgICAgICAgIEhhc1NlZW5WaWV3cG9y
dENvbnN0cmFpbmVkQW5jZXN0b3IgPSAxIDw8IDEsCiAgICAgICAgIEhhc1NlZW5BbmNlc3Rvcldp
dGhPdmVyZmxvd0NsaXAgPSAxIDw8IDIsCiAgICAgICAgIEhhc0NoYW5nZWRBbmNlc3RvciA9IDEg
PDwgMwogICAgIH07Ci0gICAgdHlwZWRlZiB1bnNpZ25lZCBVcGRhdGVMYXllclBvc2l0aW9uc0Fm
dGVyU2Nyb2xsRmxhZ3M7Ci0gICAgdm9pZCB1cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyU2Nyb2xs
KFJlbmRlckdlb21ldHJ5TWFwKiwgVXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9sbEZsYWdz
ID0gTm9GbGFnKTsKKyAgICB2b2lkIHVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJTY3JvbGwoUmVu
ZGVyR2VvbWV0cnlNYXAqLCBPcHRpb25TZXQ8VXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9s
bEZsYWc+ID0geyB9KTsKIAogICAgIFNjcm9sbE9mZnNldCBjbGFtcFNjcm9sbE9mZnNldChjb25z
dCBTY3JvbGxPZmZzZXQmKSBjb25zdDsKIApAQCAtODMwLDE4ICs4MjQsMTggQEAgcHJpdmF0ZToK
ICAgICBib29sIHNldHVwQ2xpcFBhdGgoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWlu
dGluZ0luZm8mLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwgTGF5b3V0UmVjdCYg
cm9vdFJlbGF0aXZlQm91bmRzLCBib29sJiByb290UmVsYXRpdmVCb3VuZHNDb21wdXRlZCk7CiAK
ICAgICBjbGFzcyBGaWx0ZXJJbmZvOwotICAgIHN0ZDo6cGFpcjxGaWx0ZXJJbmZvKiwgc3RkOjp1
bmlxdWVfcHRyPEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyPj4gZmlsdGVyUGFpbnRlcihHcmFw
aGljc0NvbnRleHQmLCBQYWludExheWVyRmxhZ3MpIGNvbnN0OwotICAgIGJvb2wgaGFzRmlsdGVy
VGhhdElzUGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0JiwgUGFpbnRMYXllckZsYWdzKSBjb25zdDsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI+IHNldHVwRmls
dGVycyhHcmFwaGljc0NvbnRleHQmLCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFn
cywgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIExheW91dFJlY3QmIHJvb3RSZWxh
dGl2ZUJvdW5kcywgYm9vbCYgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpOworICAgIHN0ZDo6
cGFpcjxGaWx0ZXJJbmZvKiwgc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVjdFJlbmRlcmVySGVs
cGVyPj4gZmlsdGVyUGFpbnRlcihHcmFwaGljc0NvbnRleHQmLCBPcHRpb25TZXQ8UGFpbnRMYXll
ckZsYWc+KSBjb25zdDsKKyAgICBib29sIGhhc0ZpbHRlclRoYXRJc1BhaW50aW5nKEdyYXBoaWNz
Q29udGV4dCYsIE9wdGlvblNldDxQYWludExheWVyRmxhZz4pIGNvbnN0OworICAgIHN0ZDo6dW5p
cXVlX3B0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcj4gc2V0dXBGaWx0ZXJzKEdyYXBoaWNz
Q29udGV4dCYsIExheWVyUGFpbnRpbmdJbmZvJiwgT3B0aW9uU2V0PFBhaW50TGF5ZXJGbGFnPiwg
Y29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIExheW91dFJlY3QmIHJvb3RSZWxhdGl2
ZUJvdW5kcywgYm9vbCYgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpOwogICAgIHZvaWQgYXBw
bHlGaWx0ZXJzKEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyKiwgR3JhcGhpY3NDb250ZXh0JiBv
cmlnaW5hbENvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgY29uc3QgTGF5ZXJGcmFn
bWVudHMmKTsKIAotICAgIHZvaWQgcGFpbnRMYXllcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBM
YXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFncyk7Ci0gICAgdm9pZCBwYWludExheWVy
Q29udGVudHNBbmRSZWZsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRp
bmdJbmZvJiwgUGFpbnRMYXllckZsYWdzKTsKLSAgICB2b2lkIHBhaW50TGF5ZXJCeUFwcGx5aW5n
VHJhbnNmb3JtKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFp
bnRMYXllckZsYWdzLCBjb25zdCBMYXlvdXRTaXplJiB0cmFuc2xhdGlvbk9mZnNldCA9IExheW91
dFNpemUoKSk7Ci0gICAgdm9pZCBwYWludExheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxhZ3MpOwotICAgIHZvaWQgcGFp
bnRMaXN0KFZlY3RvcjxSZW5kZXJMYXllcio+KiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5
ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxhZ3MpOworICAgIHZvaWQgcGFpbnRMYXllcihH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIE9wdGlvblNldDxQYWlu
dExheWVyRmxhZz4pOworICAgIHZvaWQgcGFpbnRMYXllckNvbnRlbnRzQW5kUmVmbGVjdGlvbihH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIE9wdGlvblNldDxQYWlu
dExheWVyRmxhZz4pOworICAgIHZvaWQgcGFpbnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0oR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBPcHRpb25TZXQ8UGFpbnRM
YXllckZsYWc+LCBjb25zdCBMYXlvdXRTaXplJiB0cmFuc2xhdGlvbk9mZnNldCA9IExheW91dFNp
emUoKSk7CisgICAgdm9pZCBwYWludExheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgTGF5ZXJQYWludGluZ0luZm8mLCBPcHRpb25TZXQ8UGFpbnRMYXllckZsYWc+KTsKKyAgICB2
b2lkIHBhaW50TGlzdChWZWN0b3I8UmVuZGVyTGF5ZXIqPiosIEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IExheWVyUGFpbnRpbmdJbmZvJiwgT3B0aW9uU2V0PFBhaW50TGF5ZXJGbGFnPik7CiAKLSAg
ICB2b2lkIHVwZGF0ZVBhaW50aW5nSW5mb0ZvckZyYWdtZW50cyhMYXllckZyYWdtZW50cyYsIGNv
bnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzLCBib29sIHNob3VsZFBhaW50
Q29udGVudCwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QpOworICAgIHZvaWQgdXBk
YXRlUGFpbnRpbmdJbmZvRm9yRnJhZ21lbnRzKExheWVyRnJhZ21lbnRzJiwgY29uc3QgTGF5ZXJQ
YWludGluZ0luZm8mLCBPcHRpb25TZXQ8UGFpbnRMYXllckZsYWc+LCBib29sIHNob3VsZFBhaW50
Q29udGVudCwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QpOwogICAgIHZvaWQgcGFp
bnRCYWNrZ3JvdW5kRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiwgR3JhcGhpY3ND
b250ZXh0JiwgR3JhcGhpY3NDb250ZXh0JiB0cmFuc3BhcmVuY3lMYXllckNvbnRleHQsCiAgICAg
ICAgIGNvbnN0IExheW91dFJlY3QmIHRyYW5zcGFyZW5jeVBhaW50RGlydHlSZWN0LCBib29sIGhh
dmVUcmFuc3BhcmVuY3ksIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgT3B0aW9uU2V0PFBhaW50
QmVoYXZpb3I+LCBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyKTsKICAgICB2
b2lkIHBhaW50Rm9yZWdyb3VuZEZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYsIEdy
YXBoaWNzQ29udGV4dCYsIEdyYXBoaWNzQ29udGV4dCYgdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0
LApAQCAtODUxLDcgKzg0NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYWludE92ZXJmbG93Q29u
dHJvbHNGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYpOwogICAgIHZvaWQgcGFpbnRNYXNrRm9yRnJhZ21l
bnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQ
YWludGluZ0luZm8mLCBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4sIFJlbmRlck9iamVjdCogcGFp
bnRpbmdSb290Rm9yUmVuZGVyZXIpOwogICAgIHZvaWQgcGFpbnRDaGlsZENsaXBwaW5nTWFza0Zv
ckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IExheWVyUGFpbnRpbmdJbmZvJiwgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+LCBSZW5kZXJPYmpl
Y3QqIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyKTsKLSAgICB2b2lkIHBhaW50VHJhbnNmb3JtZWRM
YXllckludG9GcmFnbWVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0lu
Zm8mLCBQYWludExheWVyRmxhZ3MpOworICAgIHZvaWQgcGFpbnRUcmFuc2Zvcm1lZExheWVySW50
b0ZyYWdtZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIE9w
dGlvblNldDxQYWludExheWVyRmxhZz4pOwogCiAgICAgUmVuZGVyTGF5ZXIqIHRyYW5zcGFyZW50
UGFpbnRpbmdBbmNlc3RvcigpOwogICAgIHZvaWQgYmVnaW5UcmFuc3BhcmVuY3lMYXllcnMoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBjb25zdCBMYXlvdXRSZWN0
JiBkaXJ0eVJlY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHAJKHJldmlzaW9uIDIzNDc1MykKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUsNyAr
MjQ1LDcgQEAgUmVuZGVyTGF5ZXJCYWNraW5nOjp+UmVuZGVyTGF5ZXJCYWNraW5nKAogICAgIHVw
ZGF0ZUJhY2tncm91bmRMYXllcihmYWxzZSk7CiAgICAgdXBkYXRlTWFza2luZ0xheWVyKGZhbHNl
LCBmYWxzZSk7CiAgICAgdXBkYXRlU2Nyb2xsaW5nTGF5ZXJzKGZhbHNlKTsKLSAgICBkZXRhY2hG
cm9tU2Nyb2xsaW5nQ29vcmRpbmF0b3IoU2Nyb2xsaW5nIHwgVmlld3BvcnRDb25zdHJhaW5lZCk7
CisgICAgZGV0YWNoRnJvbVNjcm9sbGluZ0Nvb3JkaW5hdG9yKHtTY3JvbGxpbmcgLCBWaWV3cG9y
dENvbnN0cmFpbmVkIH0pOwogICAgIGRlc3Ryb3lHcmFwaGljc0xheWVycygpOwogfQogCkBAIC01
OTMsNyArNTkzLDcgQEAgc3RhdGljIGJvb2wgaGFzTm9uWmVyb1RyYW5zZm9ybU9yaWdpbihjbwog
CiB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ29tcG9zaXRlZEJvdW5kcygpCiB7Ci0g
ICAgTGF5b3V0UmVjdCBsYXllckJvdW5kcyA9IG1fb3duaW5nTGF5ZXIuY2FsY3VsYXRlTGF5ZXJC
b3VuZHMoJm1fb3duaW5nTGF5ZXIsIExheW91dFNpemUoKSwgUmVuZGVyTGF5ZXI6OkRlZmF1bHRD
YWxjdWxhdGVMYXllckJvdW5kc0ZsYWdzIHwgUmVuZGVyTGF5ZXI6OkV4Y2x1ZGVIaWRkZW5EZXNj
ZW5kYW50cyB8IFJlbmRlckxheWVyOjpEb250Q29uc3RyYWluRm9yTWFzayk7CisgICAgTGF5b3V0
UmVjdCBsYXllckJvdW5kcyA9IG1fb3duaW5nTGF5ZXIuY2FsY3VsYXRlTGF5ZXJCb3VuZHMoJm1f
b3duaW5nTGF5ZXIsIExheW91dFNpemUoKSwgUmVuZGVyTGF5ZXI6OmRlZmF1bHRDYWxjdWxhdGVM
YXllckJvdW5kc0ZsYWdzKCkgfCBSZW5kZXJMYXllcjo6RXhjbHVkZUhpZGRlbkRlc2NlbmRhbnRz
IHwgUmVuZGVyTGF5ZXI6OkRvbnRDb25zdHJhaW5Gb3JNYXNrKTsKICAgICAvLyBDbGlwIHRvIHRo
ZSBzaXplIG9mIHRoZSBkb2N1bWVudCBvciBlbmNsb3Npbmcgb3ZlcmZsb3ctc2Nyb2xsIGxheWVy
LgogICAgIC8vIElmIHRoaXMgb3IgYW4gYW5jZXN0b3IgaXMgdHJhbnNmb3JtZWQsIHdlIGNhbid0
IGN1cnJlbnRseSBjb21wdXRlIHRoZSBjb3JyZWN0IHJlY3QgdG8gaW50ZXJzZWN0IHdpdGguCiAg
ICAgLy8gV2UnZCBuZWVkIFJlbmRlck9iamVjdDo6Y29udmVydENvbnRhaW5lclRvTG9jYWxRdWFk
KCksIHdoaWNoIGRvZXNuJ3QgeWV0IGV4aXN0LgpAQCAtMTc3NCw3ICsxNzc0LDcgQEAgYm9vbCBS
ZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZVNjcm9sbGluZwogICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIFJlbmRlckxheWVyQmFja2luZzo6ZGV0YWNoRnJvbVNjcm9sbGluZ0Nvb3JkaW5hdG9y
KExheWVyU2Nyb2xsQ29vcmRpbmF0aW9uUm9sZXMgcm9sZXMpCit2b2lkIFJlbmRlckxheWVyQmFj
a2luZzo6ZGV0YWNoRnJvbVNjcm9sbGluZ0Nvb3JkaW5hdG9yKE9wdGlvblNldDxMYXllclNjcm9s
bENvb3JkaW5hdGlvblJvbGU+IHJvbGVzKQogewogICAgIGlmICghbV9zY3JvbGxpbmdOb2RlSUQg
JiYgIW1fdmlld3BvcnRDb25zdHJhaW5lZE5vZGVJRCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjUz
Miw3ICsyNTMyLDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKAog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJGbGFn
cyBwYWludEZsYWdzID0gMDsKKyAgICBPcHRpb25TZXQ8UmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJG
bGFnPiBwYWludEZsYWdzOwogICAgIGlmIChwYWludGluZ1BoYXNlICYgR3JhcGhpY3NMYXllclBh
aW50QmFja2dyb3VuZCkKICAgICAgICAgcGFpbnRGbGFncyB8PSBSZW5kZXJMYXllcjo6UGFpbnRM
YXllclBhaW50aW5nQ29tcG9zaXRpbmdCYWNrZ3JvdW5kUGhhc2U7CiAgICAgaWYgKHBhaW50aW5n
UGhhc2UgJiBHcmFwaGljc0xheWVyUGFpbnRGb3JlZ3JvdW5kKQpAQCAtMjU0OSw3ICsyNTQ5LDcg
QEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKAogICAgICAgICBwYWlu
dEZsYWdzIHw9IFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ1Njcm9s
bGluZ1BoYXNlOwogCiAgICAgaWYgKGdyYXBoaWNzTGF5ZXIgPT0gbV9iYWNrZ3JvdW5kTGF5ZXIu
Z2V0KCkgJiYgbV9iYWNrZ3JvdW5kTGF5ZXJQYWludHNGaXhlZFJvb3RCYWNrZ3JvdW5kKQotICAg
ICAgICBwYWludEZsYWdzIHw9IChSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nUm9vdEJh
Y2tncm91bmRPbmx5IHwgUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5n
Rm9yZWdyb3VuZFBoYXNlKTsgLy8gTmVlZCBQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0Zv
cmVncm91bmRQaGFzZSB0byB3YWxrIGNoaWxkIGxheWVycy4KKyAgICAgICAgcGFpbnRGbGFncyB8
PSB7IFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdSb290QmFja2dyb3VuZE9ubHksIFJl
bmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0ZvcmVncm91bmRQaGFzZSB9
OyAvLyBOZWVkIFBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nRm9yZWdyb3VuZFBoYXNlIHRv
IHdhbGsgY2hpbGQgbGF5ZXJzLgogICAgIGVsc2UgaWYgKGNvbXBvc2l0b3IoKS5maXhlZFJvb3RC
YWNrZ3JvdW5kTGF5ZXIoKSkKICAgICAgICAgcGFpbnRGbGFncyB8PSBSZW5kZXJMYXllcjo6UGFp
bnRMYXllclBhaW50aW5nU2tpcFJvb3RCYWNrZ3JvdW5kOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCShyZXZpc2lvbiAyMzQ3NTMpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEwNiw3ICsxMDYsNyBAQCBwdWJsaWM6CiAgICAgR3JhcGhpY3NMYXllciogc2Ny
b2xsaW5nTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGluZ0xheWVyLmdldCgpOyB9CiAg
ICAgR3JhcGhpY3NMYXllciogc2Nyb2xsaW5nQ29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJu
IG1fc2Nyb2xsaW5nQ29udGVudHNMYXllci5nZXQoKTsgfQogCi0gICAgdm9pZCBkZXRhY2hGcm9t
U2Nyb2xsaW5nQ29vcmRpbmF0b3IoTGF5ZXJTY3JvbGxDb29yZGluYXRpb25Sb2xlcyk7CisgICAg
dm9pZCBkZXRhY2hGcm9tU2Nyb2xsaW5nQ29vcmRpbmF0b3IoT3B0aW9uU2V0PExheWVyU2Nyb2xs
Q29vcmRpbmF0aW9uUm9sZT4pOwogICAgIAogICAgIFNjcm9sbGluZ05vZGVJRCBzY3JvbGxpbmdO
b2RlSURGb3JSb2xlKExheWVyU2Nyb2xsQ29vcmRpbmF0aW9uUm9sZSByb2xlKSBjb25zdAogICAg
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwCShyZXZpc2lvbiAyMzQ3NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc1NSw4ICsy
NzU1LDggQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcAogICAgIGVs
c2UKICAgICAgICAgdmlld0JvdW5kcyA9IG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS5yZWN0Rm9y
Rml4ZWRQb3NpdGlvbkxheW91dCgpOwogCi0gICAgTGF5b3V0UmVjdCBsYXllckJvdW5kcyA9IGxh
eWVyLmNhbGN1bGF0ZUxheWVyQm91bmRzKCZsYXllciwgTGF5b3V0U2l6ZSgpLCBSZW5kZXJMYXll
cjo6VXNlTG9jYWxDbGlwUmVjdElmUG9zc2libGUgfCBSZW5kZXJMYXllcjo6SW5jbHVkZUxheWVy
RmlsdGVyT3V0c2V0cyB8IFJlbmRlckxheWVyOjpVc2VGcmFnbWVudEJveGVzRXhjbHVkaW5nQ29t
cG9zaXRpbmcKLSAgICAgICAgfCBSZW5kZXJMYXllcjo6RXhjbHVkZUhpZGRlbkRlc2NlbmRhbnRz
IHwgUmVuZGVyTGF5ZXI6OkRvbnRDb25zdHJhaW5Gb3JNYXNrIHwgUmVuZGVyTGF5ZXI6OkluY2x1
ZGVDb21wb3NpdGVkRGVzY2VuZGFudHMpOworICAgIExheW91dFJlY3QgbGF5ZXJCb3VuZHMgPSBs
YXllci5jYWxjdWxhdGVMYXllckJvdW5kcygmbGF5ZXIsIExheW91dFNpemUoKSwgeyBSZW5kZXJM
YXllcjo6VXNlTG9jYWxDbGlwUmVjdElmUG9zc2libGUsIFJlbmRlckxheWVyOjpJbmNsdWRlTGF5
ZXJGaWx0ZXJPdXRzZXRzLCBSZW5kZXJMYXllcjo6VXNlRnJhZ21lbnRCb3hlc0V4Y2x1ZGluZ0Nv
bXBvc2l0aW5nLAorICAgICAgICBSZW5kZXJMYXllcjo6RXhjbHVkZUhpZGRlbkRlc2NlbmRhbnRz
LCBSZW5kZXJMYXllcjo6RG9udENvbnN0cmFpbkZvck1hc2ssIFJlbmRlckxheWVyOjpJbmNsdWRl
Q29tcG9zaXRlZERlc2NlbmRhbnRzIH0pOwogICAgIC8vIE1hcCB0byBtX3JlbmRlclZpZXcgdG8g
aWdub3JlIHBhZ2Ugc2NhbGUuCiAgICAgRmxvYXRSZWN0IGFic29sdXRlQm91bmRzID0gbGF5ZXIu
cmVuZGVyZXIoKS5sb2NhbFRvQ29udGFpbmVyUXVhZChGbG9hdFJlY3QobGF5ZXJCb3VuZHMpLCAm
bV9yZW5kZXJWaWV3KS5ib3VuZGluZ0JveCgpOwogICAgIGlmICghdmlld0JvdW5kcy5pbnRlcnNl
Y3RzKGVuY2xvc2luZ0ludFJlY3QoYWJzb2x1dGVCb3VuZHMpKSkgewpAQCAtMzYyMCw3ICszNjIw
LDcgQEAgc3RhdGljIGJvb2wgY2FuQ29vcmRpbmF0ZVNjcm9sbGluZ0ZvckxheQogCiB2b2lkIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Nyb2xsQ29vcmRpbmF0ZWRTdGF0dXMoUmVuZGVy
TGF5ZXImIGxheWVyLCBPcHRpb25TZXQ8U2Nyb2xsaW5nTm9kZUNoYW5nZUZsYWdzPiBjaGFuZ2Vz
KQogewotICAgIExheWVyU2Nyb2xsQ29vcmRpbmF0aW9uUm9sZXMgY29vcmRpbmF0aW9uUm9sZXMg
PSAwOworICAgIE9wdGlvblNldDxMYXllclNjcm9sbENvb3JkaW5hdGlvblJvbGU+IGNvb3JkaW5h
dGlvblJvbGVzOwogICAgIGlmIChpc1ZpZXdwb3J0Q29uc3RyYWluZWRGaXhlZE9yU3RpY2t5TGF5
ZXIobGF5ZXIpKQogICAgICAgICBjb29yZGluYXRpb25Sb2xlcyB8PSBWaWV3cG9ydENvbnN0cmFp
bmVkOwogCkBAIC0zNjI4LDcgKzM2MjgsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6
dXBkYXRlU2Nyb2xsCiAgICAgICAgIGNvb3JkaW5hdGlvblJvbGVzIHw9IFNjcm9sbGluZzsKIAog
ICAgIGlmIChsYXllci5pc0NvbXBvc2l0ZWQoKSkKLSAgICAgICAgbGF5ZXIuYmFja2luZygpLT5z
ZXRJc1Njcm9sbENvb3JkaW5hdGVkV2l0aFZpZXdwb3J0Q29uc3RyYWluZWRSb2xlKGNvb3JkaW5h
dGlvblJvbGVzICYgVmlld3BvcnRDb25zdHJhaW5lZCk7CisgICAgICAgIGxheWVyLmJhY2tpbmco
KS0+c2V0SXNTY3JvbGxDb29yZGluYXRlZFdpdGhWaWV3cG9ydENvbnN0cmFpbmVkUm9sZShjb29y
ZGluYXRpb25Sb2xlcy5jb250YWlucyhWaWV3cG9ydENvbnN0cmFpbmVkKSk7CiAKICAgICBpZiAo
Y29vcmRpbmF0aW9uUm9sZXMgJiYgY2FuQ29vcmRpbmF0ZVNjcm9sbGluZ0ZvckxheWVyKGxheWVy
KSkgewogICAgICAgICBpZiAobV9zY3JvbGxDb29yZGluYXRlZExheWVycy5hZGQoJmxheWVyKS5p
c05ld0VudHJ5KQpAQCAtMzY0OSw3ICszNjQ5LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OnJlbW92ZUZyb21TYwogICAgIG1fc2Nyb2xsQ29vcmRpbmF0ZWRMYXllcnMucmVtb3ZlKCZs
YXllcik7CiAgICAgbV9zY3JvbGxDb29yZGluYXRlZExheWVyc05lZWRpbmdVcGRhdGUucmVtb3Zl
KCZsYXllcik7CiAKLSAgICBkZXRhY2hTY3JvbGxDb29yZGluYXRlZExheWVyKGxheWVyLCBTY3Jv
bGxpbmcgfCBWaWV3cG9ydENvbnN0cmFpbmVkKTsKKyAgICBkZXRhY2hTY3JvbGxDb29yZGluYXRl
ZExheWVyKGxheWVyLCB7IFNjcm9sbGluZywgVmlld3BvcnRDb25zdHJhaW5lZCB9KTsKIH0KIAog
Rml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpj
b21wdXRlRml4ZWRWaWV3cG9ydENvbnN0cmFpbnRzKFJlbmRlckxheWVyJiBsYXllcikgY29uc3QK
QEAgLTM4MDcsNyArMzgwNyw3IEBAIFNjcm9sbGluZ05vZGVJRCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OmEKICAgICByZXR1cm4gbm9kZUlEOwogfQogCi12b2lkIFJlbmRlckxheWVyQ29tcG9zaXRv
cjo6ZGV0YWNoU2Nyb2xsQ29vcmRpbmF0ZWRMYXllcihSZW5kZXJMYXllciYgbGF5ZXIsIExheWVy
U2Nyb2xsQ29vcmRpbmF0aW9uUm9sZXMgcm9sZXMpCit2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRv
cjo6ZGV0YWNoU2Nyb2xsQ29vcmRpbmF0ZWRMYXllcihSZW5kZXJMYXllciYgbGF5ZXIsIE9wdGlv
blNldDxMYXllclNjcm9sbENvb3JkaW5hdGlvblJvbGU+IHJvbGVzKQogewogICAgIGF1dG8qIGJh
Y2tpbmcgPSBsYXllci5iYWNraW5nKCk7CiAgICAgaWYgKCFiYWNraW5nKQpAQCAtMzgzNSw3ICsz
ODM1LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbAogICAgIHNj
cm9sbGluZ0Nvb3JkaW5hdG9yLT51cGRhdGVGcmFtZVNjcm9sbGluZ05vZGUobm9kZUlELCBtX3Nj
cm9sbExheWVyLmdldCgpLCBtX3Jvb3RDb250ZW50TGF5ZXIuZ2V0KCksIGZpeGVkUm9vdEJhY2tn
cm91bmRMYXllcigpLCBjbGlwTGF5ZXIoKSk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjp1cGRhdGVTY3JvbGxDb29yZGluYXRlZExheWVyKFJlbmRlckxheWVyJiBsYXllciwgTGF5
ZXJTY3JvbGxDb29yZGluYXRpb25Sb2xlcyByZWFzb25zLCBPcHRpb25TZXQ8U2Nyb2xsaW5nTm9k
ZUNoYW5nZUZsYWdzPiBjaGFuZ2VzKQordm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0
ZVNjcm9sbENvb3JkaW5hdGVkTGF5ZXIoUmVuZGVyTGF5ZXImIGxheWVyLCBPcHRpb25TZXQ8TGF5
ZXJTY3JvbGxDb29yZGluYXRpb25Sb2xlPiByZWFzb25zLCBPcHRpb25TZXQ8U2Nyb2xsaW5nTm9k
ZUNoYW5nZUZsYWdzPiBjaGFuZ2VzKQogewogICAgIGJvb2wgaXNSZW5kZXJWaWV3TGF5ZXIgPSBs
YXllci5pc1JlbmRlclZpZXdMYXllcigpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCShyZXZpc2lvbiAyMzQ3NTMpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0NSw4ICs0NDUsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVTY3Jv
bGxDb29yZGluYXRpb25Gb3JUaGlzRnJhbWUoU2Nyb2xsaW5nTm9kZUlEKTsKICAgICBTY3JvbGxp
bmdOb2RlSUQgYXR0YWNoU2Nyb2xsaW5nTm9kZShSZW5kZXJMYXllciYsIFNjcm9sbGluZ05vZGVU
eXBlLCBTY3JvbGxpbmdOb2RlSUQgcGFyZW50Tm9kZUlEKTsKLSAgICB2b2lkIHVwZGF0ZVNjcm9s
bENvb3JkaW5hdGVkTGF5ZXIoUmVuZGVyTGF5ZXImLCBMYXllclNjcm9sbENvb3JkaW5hdGlvblJv
bGVzLCBPcHRpb25TZXQ8U2Nyb2xsaW5nTm9kZUNoYW5nZUZsYWdzPik7Ci0gICAgdm9pZCBkZXRh
Y2hTY3JvbGxDb29yZGluYXRlZExheWVyKFJlbmRlckxheWVyJiwgTGF5ZXJTY3JvbGxDb29yZGlu
YXRpb25Sb2xlcyk7CisgICAgdm9pZCB1cGRhdGVTY3JvbGxDb29yZGluYXRlZExheWVyKFJlbmRl
ckxheWVyJiwgT3B0aW9uU2V0PExheWVyU2Nyb2xsQ29vcmRpbmF0aW9uUm9sZT4sIE9wdGlvblNl
dDxTY3JvbGxpbmdOb2RlQ2hhbmdlRmxhZ3M+KTsKKyAgICB2b2lkIGRldGFjaFNjcm9sbENvb3Jk
aW5hdGVkTGF5ZXIoUmVuZGVyTGF5ZXImLCBPcHRpb25TZXQ8TGF5ZXJTY3JvbGxDb29yZGluYXRp
b25Sb2xlPik7CiAgICAgdm9pZCByZWF0dGFjaFN1YmZyYW1lU2Nyb2xsTGF5ZXJzKCk7CiAgICAg
CiAgICAgRml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMgY29tcHV0ZUZpeGVkVmlld3Bv
cnRDb25zdHJhaW50cyhSZW5kZXJMYXllciYpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmNwcAkocmV2aXNpb24gMjM0NzUzKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
Niw3ICs3Niw3IEBAIHZvaWQgUmVuZGVyUmVwbGljYTo6cGFpbnQoUGFpbnRJbmZvJiBwYWkKICAg
ICAgICAgLy8gY29tcHV0aW5nIHVzaW5nIHRoZSB3cm9uZyByb290TGF5ZXIKICAgICAgICAgUmVu
ZGVyTGF5ZXIqIHJvb3RQYWludGluZ0xheWVyID0gbGF5ZXIoKS0+dHJhbnNmb3JtKCkgPyBsYXll
cigpLT5wYXJlbnQoKSA6IGxheWVyKCktPmVuY2xvc2luZ1RyYW5zZm9ybWVkQW5jZXN0b3IoKTsK
ICAgICAgICAgUmVuZGVyTGF5ZXI6OkxheWVyUGFpbnRpbmdJbmZvIHBhaW50aW5nSW5mbyhyb290
UGFpbnRpbmdMYXllciwgcGFpbnRJbmZvLnJlY3QsIFBhaW50QmVoYXZpb3I6Ok5vcm1hbCwgTGF5
b3V0U2l6ZSgpLCAwKTsKLSAgICAgICAgUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJGbGFncyBmbGFn
cyA9IFJlbmRlckxheWVyOjpQYWludExheWVySGF2ZVRyYW5zcGFyZW5jeSB8IFJlbmRlckxheWVy
OjpQYWludExheWVyQXBwbGllZFRyYW5zZm9ybSB8IFJlbmRlckxheWVyOjpQYWludExheWVyVGVt
cG9yYXJ5Q2xpcFJlY3RzIHwgUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ1JlZmxlY3Rp
b247CisgICAgICAgIE9wdGlvblNldDxSZW5kZXJMYXllcjo6UGFpbnRMYXllckZsYWc+IGZsYWdz
IHsgUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJIYXZlVHJhbnNwYXJlbmN5LCBSZW5kZXJMYXllcjo6
UGFpbnRMYXllckFwcGxpZWRUcmFuc2Zvcm0sIFJlbmRlckxheWVyOjpQYWludExheWVyVGVtcG9y
YXJ5Q2xpcFJlY3RzLCBSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nUmVmbGVjdGlvbiB9
OwogICAgICAgICBsYXllcigpLT5wYXJlbnQoKS0+cGFpbnRMYXllcihwYWludEluZm8uY29udGV4
dCgpLCBwYWludGluZ0luZm8sIGZsYWdzKTsKICAgICB9IGVsc2UgaWYgKHBhaW50SW5mby5waGFz
ZSA9PSBQYWludFBoYXNlOjpNYXNrKQogICAgICAgICBwYWludE1hc2socGFpbnRJbmZvLCBhZGp1
c3RlZFBhaW50T2Zmc2V0KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>