<?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>229655</bug_id>
          
          <creation_ts>2021-08-29 03:20:57 -0700</creation_ts>
          <short_desc>[CSS Cascade Layers] Factor RuleSet building into a Builder type</short_desc>
          <delta_ts>2021-08-29 06:53: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>CSS</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>
          
          <blocked>220779</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <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>1788371</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-08-29 03:20:57 -0700</bug_when>
    <thetext>Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788374</commentid>
    <comment_count>1</comment_count>
      <attachid>436736</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-08-29 03:59:02 -0700</bug_when>
    <thetext>Created attachment 436736
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788375</commentid>
    <comment_count>2</comment_count>
      <attachid>436737</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-08-29 04:30:22 -0700</bug_when>
    <thetext>Created attachment 436737
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788380</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-29 06:52:27 -0700</bug_when>
    <thetext>Committed r281742 (241084@main): &lt;https://commits.webkit.org/241084@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 436737.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788381</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-29 06:53:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/82493464&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436736</attachid>
            <date>2021-08-29 03:59:02 -0700</date>
            <delta_ts>2021-08-29 04:30:22 -0700</delta_ts>
            <desc>patch</desc>
            <filename>ruleset-builder.patch</filename>
            <type>text/plain</type>
            <size>15911</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4MTRjNzIwYzc5NGIuLjI5NTRlZGQ2ZTdkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI0IEBACisyMDIxLTA4LTI5ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBbQ1NTIENhc2NhZGUgTGF5ZXJzXSBGYWN0b3IgUnVsZVNldCBidWlsZGlu
ZyBpbnRvIGEgQnVpbGRlciB0eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjk2NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBGYWN0b3IgYnVpbGQgdGltZSBzdGF0ZSBpbnRvIGEgc3RhY2stYWxsb2Nh
dGUgdHlwZS4KKworICAgICAgICAqIHN0eWxlL1J1bGVTZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OlJ1bGVTZXQ6OmFkZFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1
bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxl
U2V0OjpCdWlsZGVyOjphZGRDaGlsZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpS
dWxlU2V0OjpCdWlsZGVyOjphZGRSdWxlc0Zyb21TaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6UnVsZVNldDo6QnVpbGRlcjo6YWRkU3R5bGVSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpSdWxlU2V0OjpCdWlsZGVyOjpwdXNoQ2FzY2FkZUxheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpSdWxlU2V0OjpCdWlsZGVyOjpwb3BDYXNjYWRlTGF5ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVTZXQ6OmFkZENoaWxkUnVsZXMpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVTZXQ6OmFkZFN0eWxlUnVsZSk6IERlbGV0ZWQuCisg
ICAgICAgICogc3R5bGUvUnVsZVNldC5oOgorCiAyMDIxLTA4LTI5ICBQaGlsaXBwZSBOb3JtYW5k
ICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBUcmFjayBoYW5k
bGluZyByZWZhY3RvcmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNl
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmNwcAppbmRleCA4NDUyNzAyOTc5
ZTEuLjQ2OGEzN2M2ZjQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5jcHAKQEAgLTgzLDE1ICs4
MywxNSBAQCBzdGF0aWMgYm9vbCBpc0hvc3RTZWxlY3Rvck1hdGNoaW5nSW5TaGFkb3dUcmVlKGNv
bnN0IENTU1NlbGVjdG9yJiBzdGFydFNlbGVjdG9yKQogICAgIHJldHVybiBsZWZ0bW9zdFNlbGVj
dG9yLT5tYXRjaCgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyAmJiBsZWZ0bW9zdFNlbGVj
dG9yLT5wc2V1ZG9DbGFzc1R5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NIb3N0Owog
fQogCi12b2lkIFJ1bGVTZXQ6OmFkZFJ1bGUoY29uc3QgU3R5bGVSdWxlJiBydWxlLCB1bnNpZ25l
ZCBzZWxlY3RvckluZGV4LCB1bnNpZ25lZCBzZWxlY3Rvckxpc3RJbmRleCwgTWVkaWFRdWVyeUNv
bGxlY3RvciogbWVkaWFRdWVyeUNvbGxlY3RvcikKK3ZvaWQgUnVsZVNldDo6YWRkUnVsZShjb25z
dCBTdHlsZVJ1bGUmIHJ1bGUsIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIHVuc2lnbmVkIHNlbGVj
dG9yTGlzdEluZGV4LCB1bnNpZ25lZCBjYXNjYWRlTGF5ZXJPcmRlciwgTWVkaWFRdWVyeUNvbGxl
Y3RvciogbWVkaWFRdWVyeUNvbGxlY3RvcikKIHsKICAgICBSdWxlRGF0YSBydWxlRGF0YShydWxl
LCBzZWxlY3RvckluZGV4LCBzZWxlY3Rvckxpc3RJbmRleCwgbV9ydWxlQ291bnQrKyk7CiAKLSAg
ICBpZiAobV9jYXNjYWRlTGF5ZXJPcmRlcikgeworICAgIGlmIChjYXNjYWRlTGF5ZXJPcmRlcikg
ewogICAgICAgICBhdXRvIG9sZFNpemUgPSBtX2Nhc2NhZGVMYXllck9yZGVyRm9yUG9zaXRpb24u
c2l6ZSgpOwogICAgICAgICBtX2Nhc2NhZGVMYXllck9yZGVyRm9yUG9zaXRpb24uZ3JvdyhtX3J1
bGVDb3VudCk7CiAgICAgICAgIHN0ZDo6ZmlsbChtX2Nhc2NhZGVMYXllck9yZGVyRm9yUG9zaXRp
b24uYmVnaW4oKSArIG9sZFNpemUsIG1fY2FzY2FkZUxheWVyT3JkZXJGb3JQb3NpdGlvbi5lbmQo
KSwgMCk7Ci0gICAgICAgIG1fY2FzY2FkZUxheWVyT3JkZXJGb3JQb3NpdGlvbi5sYXN0KCkgPSBt
X2Nhc2NhZGVMYXllck9yZGVyOworICAgICAgICBtX2Nhc2NhZGVMYXllck9yZGVyRm9yUG9zaXRp
b24ubGFzdCgpID0gY2FzY2FkZUxheWVyT3JkZXI7CiAgICAgfQogCiAgICAgbV9mZWF0dXJlcy5j
b2xsZWN0RmVhdHVyZXMocnVsZURhdGEpOwpAQCAtMjcxLDI2ICsyNzEsNjUgQEAgdm9pZCBSdWxl
U2V0OjphZGRQYWdlUnVsZShTdHlsZVJ1bGVQYWdlJiBydWxlKQogICAgIG1fcGFnZVJ1bGVzLmFw
cGVuZCgmcnVsZSk7CiB9CiAKLXZvaWQgUnVsZVNldDo6YWRkQ2hpbGRSdWxlcyhjb25zdCBWZWN0
b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgcnVsZXMsIE1lZGlhUXVlcnlDb2xsZWN0b3ImIG1l
ZGlhUXVlcnlDb2xsZWN0b3IsIFJlc29sdmVyKiByZXNvbHZlciwgQWRkUnVsZXNNb2RlIG1vZGUp
Cit2b2lkIFJ1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KGNvbnN0IFN0eWxlU2hlZXRDb250ZW50
cyYgc2hlZXQsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIGV2YWx1YXRvcikKK3sKKyAgICBC
dWlsZGVyIGJ1aWxkZXIgeyAqdGhpcywgTWVkaWFRdWVyeUNvbGxlY3RvciB7IGV2YWx1YXRvciB9
IH07CisgICAgYnVpbGRlci5hZGRSdWxlc0Zyb21TaGVldChzaGVldCk7CisKKyAgICBpZiAobV9h
dXRvU2hyaW5rVG9GaXRFbmFibGVkKQorICAgICAgICBzaHJpbmtUb0ZpdCgpOworfQorCit2b2lk
IFJ1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyYgc2hl
ZXQsIGNvbnN0IE1lZGlhUXVlcnlTZXQqIHNoZWV0UXVlcnksIGNvbnN0IE1lZGlhUXVlcnlFdmFs
dWF0b3ImIGV2YWx1YXRvciwgU3R5bGU6OlJlc29sdmVyJiByZXNvbHZlcikKK3sKKyAgICBhdXRv
IGNhblVzZUR5bmFtaWNNZWRpYVF1ZXJ5UmVzb2x1dGlvbiA9IFsmXSB7CisgICAgICAgIEJ1aWxk
ZXIgYnVpbGRlciB7ICp0aGlzLCBNZWRpYVF1ZXJ5Q29sbGVjdG9yIHsgZXZhbHVhdG9yLCB0cnVl
IH0sIG51bGxwdHIsIEJ1aWxkZXI6Ok1vZGU6OlJlc29sdmVyTXV0YXRpb25TY2FuIH07CisgICAg
ICAgIGlmIChidWlsZGVyLm1lZGlhUXVlcnlDb2xsZWN0b3IucHVzaEFuZEV2YWx1YXRlKHNoZWV0
UXVlcnkpKQorICAgICAgICAgICAgYnVpbGRlci5hZGRSdWxlc0Zyb21TaGVldChzaGVldCk7Cisg
ICAgICAgIGJ1aWxkZXIubWVkaWFRdWVyeUNvbGxlY3Rvci5wb3Aoc2hlZXRRdWVyeSk7CisgICAg
ICAgIHJldHVybiAhYnVpbGRlci5tZWRpYVF1ZXJ5Q29sbGVjdG9yLmRpZE11dGF0ZVJlc29sdmVy
V2l0aGluRHluYW1pY01lZGlhUXVlcnk7CisgICAgfSgpOworCisgICAgQnVpbGRlciBidWlsZGVy
IHsgKnRoaXMsIE1lZGlhUXVlcnlDb2xsZWN0b3IgeyBldmFsdWF0b3IsIGNhblVzZUR5bmFtaWNN
ZWRpYVF1ZXJ5UmVzb2x1dGlvbiB9LCAmcmVzb2x2ZXIgfTsKKworICAgIGlmIChidWlsZGVyLm1l
ZGlhUXVlcnlDb2xsZWN0b3IucHVzaEFuZEV2YWx1YXRlKHNoZWV0UXVlcnkpKQorICAgICAgICBi
dWlsZGVyLmFkZFJ1bGVzRnJvbVNoZWV0KHNoZWV0KTsKKyAgICBidWlsZGVyLm1lZGlhUXVlcnlD
b2xsZWN0b3IucG9wKHNoZWV0UXVlcnkpOworCisgICAgbV9oYXNWaWV3cG9ydERlcGVuZGVudE1l
ZGlhUXVlcmllcyA9IGJ1aWxkZXIubWVkaWFRdWVyeUNvbGxlY3Rvci5oYXNWaWV3cG9ydERlcGVu
ZGVudE1lZGlhUXVlcmllczsKKworICAgIGlmICghYnVpbGRlci5tZWRpYVF1ZXJ5Q29sbGVjdG9y
LmR5bmFtaWNNZWRpYVF1ZXJ5UnVsZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIGF1dG8gZmlyc3RO
ZXdJbmRleCA9IG1fZHluYW1pY01lZGlhUXVlcnlSdWxlcy5zaXplKCk7CisgICAgICAgIG1fZHlu
YW1pY01lZGlhUXVlcnlSdWxlcy5hcHBlbmRWZWN0b3IoV1RGTW92ZShidWlsZGVyLm1lZGlhUXVl
cnlDb2xsZWN0b3IuZHluYW1pY01lZGlhUXVlcnlSdWxlcykpOworCisgICAgICAgIC8vIFNldCB0
aGUgaW5pdGlhbCB2YWx1ZXMuCisgICAgICAgIGV2YWx1YXRlRHluYW1pY01lZGlhUXVlcnlSdWxl
cyhldmFsdWF0b3IsIGZpcnN0TmV3SW5kZXgpOworICAgIH0KKworICAgIGlmIChtX2F1dG9TaHJp
bmtUb0ZpdEVuYWJsZWQpCisgICAgICAgIHNocmlua1RvRml0KCk7Cit9CisKK3ZvaWQgUnVsZVNl
dDo6QnVpbGRlcjo6YWRkQ2hpbGRSdWxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJh
c2U+PiYgcnVsZXMpCiB7CiAgICAgZm9yIChhdXRvJiBydWxlIDogcnVsZXMpIHsKLSAgICAgICAg
aWYgKG1vZGUgPT0gQWRkUnVsZXNNb2RlOjpSZXNvbHZlck11dGF0aW9uU2NhbiAmJiBtZWRpYVF1
ZXJ5Q29sbGVjdG9yLmRpZE11dGF0ZVJlc29sdmVyV2l0aGluRHluYW1pY01lZGlhUXVlcnkpCisg
ICAgICAgIGlmIChtb2RlID09IE1vZGU6OlJlc29sdmVyTXV0YXRpb25TY2FuICYmIG1lZGlhUXVl
cnlDb2xsZWN0b3IuZGlkTXV0YXRlUmVzb2x2ZXJXaXRoaW5EeW5hbWljTWVkaWFRdWVyeSkKICAg
ICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGlmIChpczxTdHlsZVJ1bGU+KCpydWxlKSkgewot
ICAgICAgICAgICAgaWYgKG1vZGUgPT0gQWRkUnVsZXNNb2RlOjpOb3JtYWwpCi0gICAgICAgICAg
ICAgICAgYWRkU3R5bGVSdWxlKGRvd25jYXN0PFN0eWxlUnVsZT4oKnJ1bGUpLCBtZWRpYVF1ZXJ5
Q29sbGVjdG9yKTsKKyAgICAgICAgICAgIGlmIChtb2RlID09IE1vZGU6Ok5vcm1hbCkKKyAgICAg
ICAgICAgICAgICBhZGRTdHlsZVJ1bGUoZG93bmNhc3Q8U3R5bGVSdWxlPigqcnVsZSkpOwogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGlzPFN0eWxlUnVsZVBh
Z2U+KCpydWxlKSkgewotICAgICAgICAgICAgaWYgKG1vZGUgPT0gQWRkUnVsZXNNb2RlOjpOb3Jt
YWwpCi0gICAgICAgICAgICAgICAgYWRkUGFnZVJ1bGUoZG93bmNhc3Q8U3R5bGVSdWxlUGFnZT4o
KnJ1bGUpKTsKKyAgICAgICAgICAgIGlmIChtb2RlID09IE1vZGU6Ok5vcm1hbCkKKyAgICAgICAg
ICAgICAgICBydWxlU2V0LT5hZGRQYWdlUnVsZShkb3duY2FzdDxTdHlsZVJ1bGVQYWdlPigqcnVs
ZSkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGlzPFN0
eWxlUnVsZU1lZGlhPigqcnVsZSkpIHsKICAgICAgICAgICAgIGF1dG8mIG1lZGlhUnVsZSA9IGRv
d25jYXN0PFN0eWxlUnVsZU1lZGlhPigqcnVsZSk7CiAgICAgICAgICAgICBpZiAobWVkaWFRdWVy
eUNvbGxlY3Rvci5wdXNoQW5kRXZhbHVhdGUoJm1lZGlhUnVsZS5tZWRpYVF1ZXJpZXMoKSkpCi0g
ICAgICAgICAgICAgICAgYWRkQ2hpbGRSdWxlcyhtZWRpYVJ1bGUuY2hpbGRSdWxlcygpLCBtZWRp
YVF1ZXJ5Q29sbGVjdG9yLCByZXNvbHZlciwgbW9kZSk7CisgICAgICAgICAgICAgICAgYWRkQ2hp
bGRSdWxlcyhtZWRpYVJ1bGUuY2hpbGRSdWxlcygpKTsKICAgICAgICAgICAgIG1lZGlhUXVlcnlD
b2xsZWN0b3IucG9wKCZtZWRpYVJ1bGUubWVkaWFRdWVyaWVzKCkpOwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KQEAgLTMwNiw3ICszNDUsNyBAQCB2b2lkIFJ1bGVTZXQ6OmFkZENo
aWxkUnVsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIHJ1bGVzLCBNZWRp
YVF1ZQogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gQmxvY2sgc3ludGF4LgogICAgICAg
ICAgICAgcHVzaENhc2NhZGVMYXllcihsYXllclJ1bGUubmFtZSgpKTsKLSAgICAgICAgICAgIGFk
ZENoaWxkUnVsZXMobGF5ZXJSdWxlLmNoaWxkUnVsZXMoKSwgbWVkaWFRdWVyeUNvbGxlY3Rvciwg
cmVzb2x2ZXIsIG1vZGUpOworICAgICAgICAgICAgYWRkQ2hpbGRSdWxlcyhsYXllclJ1bGUuY2hp
bGRSdWxlcygpKTsKICAgICAgICAgICAgIHBvcENhc2NhZGVMYXllcihsYXllclJ1bGUubmFtZSgp
KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBAIC0zMjYsNzMgKzM2NSw2NiBA
QCB2b2lkIFJ1bGVTZXQ6OmFkZENoaWxkUnVsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1
bGVCYXNlPj4mIHJ1bGVzLCBNZWRpYVF1ZQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKGlzPFN0eWxlUnVsZVN1cHBvcnRzPigqcnVsZSkgJiYgZG93bmNhc3Q8
U3R5bGVSdWxlU3VwcG9ydHM+KCpydWxlKS5jb25kaXRpb25Jc1N1cHBvcnRlZCgpKSB7Ci0gICAg
ICAgICAgICBhZGRDaGlsZFJ1bGVzKGRvd25jYXN0PFN0eWxlUnVsZVN1cHBvcnRzPigqcnVsZSku
Y2hpbGRSdWxlcygpLCBtZWRpYVF1ZXJ5Q29sbGVjdG9yLCByZXNvbHZlciwgbW9kZSk7CisgICAg
ICAgICAgICBhZGRDaGlsZFJ1bGVzKGRvd25jYXN0PFN0eWxlUnVsZVN1cHBvcnRzPigqcnVsZSku
Y2hpbGRSdWxlcygpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgfQog
fQogCi12b2lkIFJ1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KFN0eWxlU2hlZXRDb250ZW50cyYg
c2hlZXQsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIGV2YWx1YXRvcikKLXsKLSAgICBhdXRv
IG1lZGlhUXVlcnlDb2xsZWN0b3IgPSBNZWRpYVF1ZXJ5Q29sbGVjdG9yIHsgZXZhbHVhdG9yIH07
Ci0gICAgYWRkUnVsZXNGcm9tU2hlZXQoc2hlZXQsIG1lZGlhUXVlcnlDb2xsZWN0b3IsIG51bGxw
dHIsIEFkZFJ1bGVzTW9kZTo6Tm9ybWFsKTsKLQotICAgIGlmIChtX2F1dG9TaHJpbmtUb0ZpdEVu
YWJsZWQpCi0gICAgICAgIHNocmlua1RvRml0KCk7Ci19Ci0KLXZvaWQgUnVsZVNldDo6YWRkUnVs
ZXNGcm9tU2hlZXQoU3R5bGVTaGVldENvbnRlbnRzJiBzaGVldCwgTWVkaWFRdWVyeVNldCogc2hl
ZXRRdWVyeSwgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYgZXZhbHVhdG9yLCBTdHlsZTo6UmVz
b2x2ZXImIHJlc29sdmVyKQotewotICAgIGF1dG8gY2FuVXNlRHluYW1pY01lZGlhUXVlcnlSZXNv
bHV0aW9uID0gWyZdIHsKLSAgICAgICAgYXV0byBtZWRpYVF1ZXJ5Q29sbGVjdG9yID0gTWVkaWFR
dWVyeUNvbGxlY3RvciB7IGV2YWx1YXRvciwgdHJ1ZSB9OwotICAgICAgICBpZiAobWVkaWFRdWVy
eUNvbGxlY3Rvci5wdXNoQW5kRXZhbHVhdGUoc2hlZXRRdWVyeSkpCi0gICAgICAgICAgICBhZGRS
dWxlc0Zyb21TaGVldChzaGVldCwgbWVkaWFRdWVyeUNvbGxlY3RvciwgbnVsbHB0ciwgQWRkUnVs
ZXNNb2RlOjpSZXNvbHZlck11dGF0aW9uU2Nhbik7Ci0gICAgICAgIG1lZGlhUXVlcnlDb2xsZWN0
b3IucG9wKHNoZWV0UXVlcnkpOwotICAgICAgICByZXR1cm4gIW1lZGlhUXVlcnlDb2xsZWN0b3Iu
ZGlkTXV0YXRlUmVzb2x2ZXJXaXRoaW5EeW5hbWljTWVkaWFRdWVyeTsKLSAgICB9KCk7Ci0KLSAg
ICBhdXRvIG1lZGlhUXVlcnlDb2xsZWN0b3IgPSBNZWRpYVF1ZXJ5Q29sbGVjdG9yIHsgZXZhbHVh
dG9yLCBjYW5Vc2VEeW5hbWljTWVkaWFRdWVyeVJlc29sdXRpb24gfTsKLQotICAgIGlmIChtZWRp
YVF1ZXJ5Q29sbGVjdG9yLnB1c2hBbmRFdmFsdWF0ZShzaGVldFF1ZXJ5KSkKLSAgICAgICAgYWRk
UnVsZXNGcm9tU2hlZXQoc2hlZXQsIG1lZGlhUXVlcnlDb2xsZWN0b3IsICZyZXNvbHZlciwgQWRk
UnVsZXNNb2RlOjpOb3JtYWwpOwotICAgIG1lZGlhUXVlcnlDb2xsZWN0b3IucG9wKHNoZWV0UXVl
cnkpOwotCi0gICAgbV9oYXNWaWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcmllcyA9IG1lZGlhUXVl
cnlDb2xsZWN0b3IuaGFzVmlld3BvcnREZXBlbmRlbnRNZWRpYVF1ZXJpZXM7Ci0KLSAgICBpZiAo
IW1lZGlhUXVlcnlDb2xsZWN0b3IuZHluYW1pY01lZGlhUXVlcnlSdWxlcy5pc0VtcHR5KCkpIHsK
LSAgICAgICAgYXV0byBmaXJzdE5ld0luZGV4ID0gbV9keW5hbWljTWVkaWFRdWVyeVJ1bGVzLnNp
emUoKTsKLSAgICAgICAgbV9keW5hbWljTWVkaWFRdWVyeVJ1bGVzLmFwcGVuZFZlY3RvcihXVEZN
b3ZlKG1lZGlhUXVlcnlDb2xsZWN0b3IuZHluYW1pY01lZGlhUXVlcnlSdWxlcykpOwotCi0gICAg
ICAgIC8vIFNldCB0aGUgaW5pdGlhbCB2YWx1ZXMuCi0gICAgICAgIGV2YWx1YXRlRHluYW1pY01l
ZGlhUXVlcnlSdWxlcyhldmFsdWF0b3IsIGZpcnN0TmV3SW5kZXgpOwotICAgIH0KLQotICAgIGlm
IChtX2F1dG9TaHJpbmtUb0ZpdEVuYWJsZWQpCi0gICAgICAgIHNocmlua1RvRml0KCk7Ci19Ci0K
LXZvaWQgUnVsZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQoU3R5bGVTaGVldENvbnRlbnRzJiBzaGVl
dCwgTWVkaWFRdWVyeUNvbGxlY3RvciYgbWVkaWFRdWVyeUNvbGxlY3RvciwgUmVzb2x2ZXIqIHJl
c29sdmVyLCBBZGRSdWxlc01vZGUgbW9kZSkKK3ZvaWQgUnVsZVNldDo6QnVpbGRlcjo6YWRkUnVs
ZXNGcm9tU2hlZXQoY29uc3QgU3R5bGVTaGVldENvbnRlbnRzJiBzaGVldCkKIHsKICAgICBmb3Ig
KGF1dG8mIHJ1bGUgOiBzaGVldC5pbXBvcnRSdWxlcygpKSB7CiAgICAgICAgIGlmICghcnVsZS0+
c3R5bGVTaGVldCgpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKG1lZGlh
UXVlcnlDb2xsZWN0b3IucHVzaEFuZEV2YWx1YXRlKHJ1bGUtPm1lZGlhUXVlcmllcygpKSkKLSAg
ICAgICAgICAgIGFkZFJ1bGVzRnJvbVNoZWV0KCpydWxlLT5zdHlsZVNoZWV0KCksIG1lZGlhUXVl
cnlDb2xsZWN0b3IsIHJlc29sdmVyLCBtb2RlKTsKKyAgICAgICAgICAgIGFkZFJ1bGVzRnJvbVNo
ZWV0KCpydWxlLT5zdHlsZVNoZWV0KCkpOwogICAgICAgICBtZWRpYVF1ZXJ5Q29sbGVjdG9yLnBv
cChydWxlLT5tZWRpYVF1ZXJpZXMoKSk7CiAgICAgfQogCi0gICAgYWRkQ2hpbGRSdWxlcyhzaGVl
dC5jaGlsZFJ1bGVzKCksIG1lZGlhUXVlcnlDb2xsZWN0b3IsIHJlc29sdmVyLCBtb2RlKTsKKyAg
ICBhZGRDaGlsZFJ1bGVzKHNoZWV0LmNoaWxkUnVsZXMoKSk7CiB9CiAKLXZvaWQgUnVsZVNldDo6
YWRkU3R5bGVSdWxlKGNvbnN0IFN0eWxlUnVsZSYgcnVsZSwgTWVkaWFRdWVyeUNvbGxlY3RvciYg
bWVkaWFRdWVyeUNvbGxlY3RvcikKK3ZvaWQgUnVsZVNldDo6QnVpbGRlcjo6YWRkU3R5bGVSdWxl
KGNvbnN0IFN0eWxlUnVsZSYgcnVsZSkKIHsKICAgICBhdXRvJiBzZWxlY3Rvckxpc3QgPSBydWxl
LnNlbGVjdG9yTGlzdCgpOwogICAgIGlmIChzZWxlY3Rvckxpc3QuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CiAgICAgdW5zaWduZWQgc2VsZWN0b3JMaXN0SW5kZXggPSAwOwogICAgIGZvciAo
c2l6ZV90IHNlbGVjdG9ySW5kZXggPSAwOyBzZWxlY3RvckluZGV4ICE9IG5vdEZvdW5kOyBzZWxl
Y3RvckluZGV4ID0gc2VsZWN0b3JMaXN0LmluZGV4T2ZOZXh0U2VsZWN0b3JBZnRlcihzZWxlY3Rv
ckluZGV4KSkKLSAgICAgICAgYWRkUnVsZShydWxlLCBzZWxlY3RvckluZGV4LCBzZWxlY3Rvckxp
c3RJbmRleCsrLCAmbWVkaWFRdWVyeUNvbGxlY3Rvcik7CisgICAgICAgIHJ1bGVTZXQtPmFkZFJ1
bGUocnVsZSwgc2VsZWN0b3JJbmRleCwgc2VsZWN0b3JMaXN0SW5kZXgrKywgY2FzY2FkZUxheWVy
T3JkZXIsICZtZWRpYVF1ZXJ5Q29sbGVjdG9yKTsKK30KKwordm9pZCBSdWxlU2V0OjpCdWlsZGVy
OjpwdXNoQ2FzY2FkZUxheWVyKGNvbnN0IENhc2NhZGVMYXllck5hbWUmIG5hbWUpCit7CisgICAg
aWYgKG1vZGUgIT0gTW9kZTo6Tm9ybWFsKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBuYW1l
UmVzb2x2aW5nQW5vbnltb3VzID0gWyZdIHsKKyAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKSB7
CisgICAgICAgICAgICAvLyBNYWtlIHVuaXF1ZSBuYW1lIGZvciBhbiBhbm9ueW1vdXMgbGF5ZXIu
CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgcmFuZG9tID0gcmFuZG9tTnVtYmVyKCkg
KiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGxvbmcgbG9uZz46Om1heCgpOworICAgICAg
ICAgICAgcmV0dXJuIENhc2NhZGVMYXllck5hbWUgeyAiYW5vbl8iX3MgKyBTdHJpbmc6Om51bWJl
cihyYW5kb20pIH07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgfTsKKwor
ICAgIC8vIEZvciBoaWVyYXJjaGljYWwgbmFtZXMgd2UgcmVnaXN0ZXIgdGhlIGNvbnRhaW5pbmcg
bGF5ZXJzIGluZGl2aWR1YWxseSBmaXJzdC4KKyAgICBmb3IgKGF1dG8mIG5hbWVTZWdtZW50IDog
bmFtZVJlc29sdmluZ0Fub255bW91cygpKSB7CisgICAgICAgIHJlc29sdmVkQ2FzY2FkZUxheWVy
TmFtZS5hcHBlbmQobmFtZVNlZ21lbnQpOworICAgICAgICBjYXNjYWRlTGF5ZXJPcmRlciA9IHJ1
bGVTZXQtPm1fY2FzY2FkZUxheWVyT3JkZXJNYXAuZW5zdXJlKHJlc29sdmVkQ2FzY2FkZUxheWVy
TmFtZSwgWyZdIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBjb3JyZWN0IHdo
ZW4gYWRkaW5nIGEgc3VibGF5ZXIgdG8gYW4gYWxyZWFkeSByZWdpc3RlcmVkIGxheWVyIGFmdGVy
IGl0IGhhcyBnYWluZWQgc2libGluZ3MuCisgICAgICAgICAgICByZXR1cm4gcnVsZVNldC0+bV9j
YXNjYWRlTGF5ZXJPcmRlck1hcC5zaXplKCkgKyAxOworICAgICAgICB9KS5pdGVyYXRvci0+dmFs
dWU7CisgICAgfQorfQorCit2b2lkIFJ1bGVTZXQ6OkJ1aWxkZXI6OnBvcENhc2NhZGVMYXllcihj
b25zdCBDYXNjYWRlTGF5ZXJOYW1lJiBuYW1lKQoreworICAgIGlmIChtb2RlICE9IE1vZGU6Ok5v
cm1hbCkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gc2l6ZSA9IG5hbWUuaXNFbXB0eSgpID8g
MSA6IG5hbWUuc2l6ZSgpOworICAgIHJlc29sdmVkQ2FzY2FkZUxheWVyTmFtZS5zaHJpbmsocmVz
b2x2ZWRDYXNjYWRlTGF5ZXJOYW1lLnNpemUoKSAtIHNpemUpOworICAgIGNhc2NhZGVMYXllck9y
ZGVyID0gcmVzb2x2ZWRDYXNjYWRlTGF5ZXJOYW1lLmlzRW1wdHkoKSA/IDAgOiBydWxlU2V0LT5t
X2Nhc2NhZGVMYXllck9yZGVyTWFwLmdldChyZXNvbHZlZENhc2NhZGVMYXllck5hbWUpOwogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbj4KQEAgLTQ5MiwzNCArNTI0LDYgQEAgUnVsZVNl
dDo6Q29sbGVjdGVkTWVkaWFRdWVyeUNoYW5nZXMgUnVsZVNldDo6ZXZhbHVhdGVEeW5hbWljTWVk
aWFRdWVyeVJ1bGVzKGNvbnMKICAgICByZXR1cm4gY29sbGVjdGVkQ2hhbmdlczsKIH0KIAotdm9p
ZCBSdWxlU2V0OjpwdXNoQ2FzY2FkZUxheWVyKGNvbnN0IENhc2NhZGVMYXllck5hbWUmIG5hbWUp
Ci17Ci0gICAgYXV0byBuYW1lUmVzb2x2aW5nQW5vbnltb3VzID0gWyZdIHsKLSAgICAgICAgaWYg
KG5hbWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAvLyBNYWtlIHVuaXF1ZSBuYW1lIGZvciBh
biBhbm9ueW1vdXMgbGF5ZXIuCi0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgcmFuZG9t
ID0gcmFuZG9tTnVtYmVyKCkgKiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGxvbmcgbG9u
Zz46Om1heCgpOwotICAgICAgICAgICAgcmV0dXJuIENhc2NhZGVMYXllck5hbWUgeyAiYW5vbl8i
X3MgKyBTdHJpbmc6Om51bWJlcihyYW5kb20pIH07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IG5hbWU7Ci0gICAgfTsKLQotICAgIC8vIEZvciBoaWVyYXJjaGljYWwgbmFtZXMgd2UgcmVnaXN0
ZXIgdGhlIGNvbnRhaW5pbmcgbGF5ZXJzIGluZGl2aWR1YWxseSBmaXJzdC4KLSAgICBmb3IgKGF1
dG8mIG5hbWVTZWdtZW50IDogbmFtZVJlc29sdmluZ0Fub255bW91cygpKSB7Ci0gICAgICAgIG1f
cmVzb2x2ZWRDYXNjYWRlTGF5ZXJOYW1lLmFwcGVuZChuYW1lU2VnbWVudCk7Ci0gICAgICAgIG1f
Y2FzY2FkZUxheWVyT3JkZXIgPSBtX2Nhc2NhZGVMYXllck9yZGVyTWFwLmVuc3VyZShtX3Jlc29s
dmVkQ2FzY2FkZUxheWVyTmFtZSwgWyZdIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlz
IG5vdCBjb3JyZWN0IHdoZW4gYWRkaW5nIGEgc3VibGF5ZXIgdG8gYW4gYWxyZWFkeSByZWdpc3Rl
cmVkIGxheWVyIGFmdGVyIGl0IGhhcyBnYWluZWQgc2libGluZ3MuCi0gICAgICAgICAgICByZXR1
cm4gbV9jYXNjYWRlTGF5ZXJPcmRlck1hcC5zaXplKCkgKyAxOwotICAgICAgICB9KS5pdGVyYXRv
ci0+dmFsdWU7Ci0gICAgfQotfQotCi12b2lkIFJ1bGVTZXQ6OnBvcENhc2NhZGVMYXllcihjb25z
dCBDYXNjYWRlTGF5ZXJOYW1lJiBuYW1lKQotewotICAgIGF1dG8gc2l6ZSA9IG5hbWUuaXNFbXB0
eSgpID8gMSA6IG5hbWUuc2l6ZSgpOwotICAgIG1fcmVzb2x2ZWRDYXNjYWRlTGF5ZXJOYW1lLnNo
cmluayhtX3Jlc29sdmVkQ2FzY2FkZUxheWVyTmFtZS5zaXplKCkgLSBzaXplKTsKLSAgICBtX2Nh
c2NhZGVMYXllck9yZGVyID0gbV9yZXNvbHZlZENhc2NhZGVMYXllck5hbWUuaXNFbXB0eSgpID8g
MCA6IG1fY2FzY2FkZUxheWVyT3JkZXJNYXAuZ2V0KG1fcmVzb2x2ZWRDYXNjYWRlTGF5ZXJOYW1l
KTsKLX0KLQogc3RhdGljIGlubGluZSB2b2lkIHNocmlua01hcFZlY3RvcnNUb0ZpdChSdWxlU2V0
OjpBdG9tUnVsZU1hcCYgbWFwKQogewogICAgIGZvciAoYXV0byYgdmVjdG9yIDogbWFwLnZhbHVl
cygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5oIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvUnVsZVNldC5oCmluZGV4IGYxMDM5M2ZjNmFiMi4uYTNmMzQwM2UyZDIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvUnVsZVNldC5oCkBAIC0xMDgsMTIgKzEwOCwxMiBAQCBwdWJsaWM6CiAg
ICAgICAgIHZvaWQgYWRkUnVsZUlmTmVlZGVkKGNvbnN0IFJ1bGVEYXRhJik7CiAgICAgfTsKIAot
ICAgIHZvaWQgYWRkUnVsZXNGcm9tU2hlZXQoU3R5bGVTaGVldENvbnRlbnRzJiwgY29uc3QgTWVk
aWFRdWVyeUV2YWx1YXRvciYpOwotICAgIHZvaWQgYWRkUnVsZXNGcm9tU2hlZXQoU3R5bGVTaGVl
dENvbnRlbnRzJiwgTWVkaWFRdWVyeVNldCogc2hlZXRRdWVyeSwgY29uc3QgTWVkaWFRdWVyeUV2
YWx1YXRvciYsIFN0eWxlOjpSZXNvbHZlciYpOworICAgIHZvaWQgYWRkUnVsZXNGcm9tU2hlZXQo
Y29uc3QgU3R5bGVTaGVldENvbnRlbnRzJiwgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYpOwor
ICAgIHZvaWQgYWRkUnVsZXNGcm9tU2hlZXQoY29uc3QgU3R5bGVTaGVldENvbnRlbnRzJiwgY29u
c3QgTWVkaWFRdWVyeVNldCogc2hlZXRRdWVyeSwgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYs
IFN0eWxlOjpSZXNvbHZlciYpOwogCi0gICAgdm9pZCBhZGRTdHlsZVJ1bGUoY29uc3QgU3R5bGVS
dWxlJiwgTWVkaWFRdWVyeUNvbGxlY3RvciYpOwotICAgIHZvaWQgYWRkUnVsZShjb25zdCBTdHls
ZVJ1bGUmLCB1bnNpZ25lZCBzZWxlY3RvckluZGV4LCB1bnNpZ25lZCBzZWxlY3Rvckxpc3RJbmRl
eCwgTWVkaWFRdWVyeUNvbGxlY3RvciogPSBudWxscHRyKTsKKyAgICB2b2lkIGFkZFJ1bGUoY29u
c3QgU3R5bGVSdWxlJiwgdW5zaWduZWQgc2VsZWN0b3JJbmRleCwgdW5zaWduZWQgc2VsZWN0b3JM
aXN0SW5kZXgsIHVuc2lnbmVkIGNhc2NhZGVMYXllck9yZGVyID0gMCwgTWVkaWFRdWVyeUNvbGxl
Y3RvciogPSBudWxscHRyKTsKICAgICB2b2lkIGFkZFBhZ2VSdWxlKFN0eWxlUnVsZVBhZ2UmKTsK
KwogICAgIHZvaWQgYWRkVG9SdWxlU2V0KGNvbnN0IEF0b21TdHJpbmcmIGtleSwgQXRvbVJ1bGVN
YXAmLCBjb25zdCBSdWxlRGF0YSYpOwogICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKICAgICB2b2lk
IGRpc2FibGVBdXRvU2hyaW5rVG9GaXQoKSB7IG1fYXV0b1Nocmlua1RvRml0RW5hYmxlZCA9IGZh
bHNlOyB9CkBAIC0xNTAsOSArMTUwLDI2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgUnVsZVNl
dCgpOwogCi0gICAgZW51bSBjbGFzcyBBZGRSdWxlc01vZGUgeyBOb3JtYWwsIFJlc29sdmVyTXV0
YXRpb25TY2FuIH07Ci0gICAgdm9pZCBhZGRSdWxlc0Zyb21TaGVldChTdHlsZVNoZWV0Q29udGVu
dHMmLCBNZWRpYVF1ZXJ5Q29sbGVjdG9yJiwgU3R5bGU6OlJlc29sdmVyKiwgQWRkUnVsZXNNb2Rl
KTsKLSAgICB2b2lkIGFkZENoaWxkUnVsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVC
YXNlPj4mLCBNZWRpYVF1ZXJ5Q29sbGVjdG9yJiwgU3R5bGU6OlJlc29sdmVyKiwgQWRkUnVsZXNN
b2RlKTsKKyAgICBzdHJ1Y3QgQnVpbGRlciB7CisgICAgICAgIGVudW0gY2xhc3MgTW9kZSB7IE5v
cm1hbCwgUmVzb2x2ZXJNdXRhdGlvblNjYW4gfTsKKworICAgICAgICBSZWY8UnVsZVNldD4gcnVs
ZVNldDsKKyAgICAgICAgTWVkaWFRdWVyeUNvbGxlY3RvciBtZWRpYVF1ZXJ5Q29sbGVjdG9yOwor
ICAgICAgICBTdHlsZTo6UmVzb2x2ZXIqIHJlc29sdmVyIHsgbnVsbHB0ciB9OworICAgICAgICBN
b2RlIG1vZGUgeyBNb2RlOjpOb3JtYWwgfTsKKyAgICAgICAgQ2FzY2FkZUxheWVyTmFtZSByZXNv
bHZlZENhc2NhZGVMYXllck5hbWU7CisgICAgICAgIHVuc2lnbmVkIGNhc2NhZGVMYXllck9yZGVy
IHsgMCB9OworCisgICAgICAgIHZvaWQgYWRkUnVsZXNGcm9tU2hlZXQoY29uc3QgU3R5bGVTaGVl
dENvbnRlbnRzJik7CisgICAgICAgIAorICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgYWRkQ2hp
bGRSdWxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYpOworICAgICAgICB2
b2lkIGFkZFN0eWxlUnVsZShjb25zdCBTdHlsZVJ1bGUmKTsKKworICAgICAgICB2b2lkIHB1c2hD
YXNjYWRlTGF5ZXIoY29uc3QgQ2FzY2FkZUxheWVyTmFtZSYpOworICAgICAgICB2b2lkIHBvcENh
c2NhZGVMYXllcihjb25zdCBDYXNjYWRlTGF5ZXJOYW1lJik7CisgICAgfTsKKwogICAgIHN0cnVj
dCBDb2xsZWN0ZWRNZWRpYVF1ZXJ5Q2hhbmdlcyB7CiAgICAgICAgIGJvb2wgcmVxdWlyZWRGdWxs
UmVzZXQgeyBmYWxzZSB9OwogICAgICAgICBWZWN0b3I8c2l6ZV90PiBjaGFuZ2VkUXVlcnlJbmRl
eGVzIHsgfTsKQEAgLTE2MCw5ICsxNzcsNiBAQCBwcml2YXRlOgogICAgIH07CiAgICAgQ29sbGVj
dGVkTWVkaWFRdWVyeUNoYW5nZXMgZXZhbHVhdGVEeW5hbWljTWVkaWFRdWVyeVJ1bGVzKGNvbnN0
IE1lZGlhUXVlcnlFdmFsdWF0b3ImLCBzaXplX3Qgc3RhcnRJbmRleCk7CiAKLSAgICB2b2lkIHB1
c2hDYXNjYWRlTGF5ZXIoY29uc3QgQ2FzY2FkZUxheWVyTmFtZSYpOwotICAgIHZvaWQgcG9wQ2Fz
Y2FkZUxheWVyKGNvbnN0IENhc2NhZGVMYXllck5hbWUmKTsKLQogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0aW9uPiB2b2lkIHRyYXZlcnNlUnVsZURhdGFzKEZ1bmN0aW9uJiYpOwogCiAgICAg
QXRvbVJ1bGVNYXAgbV9pZFJ1bGVzOwpAQCAtMTkyLDEwICsyMDYsNiBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9oYXNIb3N0UHNldWRvQ2xhc3NSdWxlc01hdGNoaW5nSW5TaGFkb3dUcmVlIHsgZmFs
c2UgfTsKICAgICBib29sIG1fYXV0b1Nocmlua1RvRml0RW5hYmxlZCB7IHRydWUgfTsKICAgICBi
b29sIG1faGFzVmlld3BvcnREZXBlbmRlbnRNZWRpYVF1ZXJpZXMgeyBmYWxzZSB9OwotCi0gICAg
Ly8gRklYTUU6IFRoZXNlIHNob3VsZCBiZSBpbiBzdGFjay4KLSAgICBDYXNjYWRlTGF5ZXJOYW1l
IG1fcmVzb2x2ZWRDYXNjYWRlTGF5ZXJOYW1lOwotICAgIHVuc2lnbmVkIG1fY2FzY2FkZUxheWVy
T3JkZXIgeyAwIH07CiB9OwogCiBpbmxpbmUgY29uc3QgUnVsZVNldDo6UnVsZURhdGFWZWN0b3Iq
IFJ1bGVTZXQ6OnRhZ1J1bGVzKGNvbnN0IEF0b21TdHJpbmcmIGtleSwgYm9vbCBpc0hUTUxOYW1l
KSBjb25zdAo=
</data>
<flag name="commit-queue"
          id="459809"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436737</attachid>
            <date>2021-08-29 04:30:22 -0700</date>
            <delta_ts>2021-08-29 06:52:28 -0700</delta_ts>
            <desc>patch</desc>
            <filename>ruleset-builder-2.patch</filename>
            <type>text/plain</type>
            <size>15915</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4MTRjNzIwYzc5NGIuLjI5NTRlZGQ2ZTdkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI0IEBACisyMDIxLTA4LTI5ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBbQ1NTIENhc2NhZGUgTGF5ZXJzXSBGYWN0b3IgUnVsZVNldCBidWlsZGlu
ZyBpbnRvIGEgQnVpbGRlciB0eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjk2NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBGYWN0b3IgYnVpbGQgdGltZSBzdGF0ZSBpbnRvIGEgc3RhY2stYWxsb2Nh
dGUgdHlwZS4KKworICAgICAgICAqIHN0eWxlL1J1bGVTZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OlJ1bGVTZXQ6OmFkZFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1
bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxl
U2V0OjpCdWlsZGVyOjphZGRDaGlsZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpS
dWxlU2V0OjpCdWlsZGVyOjphZGRSdWxlc0Zyb21TaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6UnVsZVNldDo6QnVpbGRlcjo6YWRkU3R5bGVSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpSdWxlU2V0OjpCdWlsZGVyOjpwdXNoQ2FzY2FkZUxheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpSdWxlU2V0OjpCdWlsZGVyOjpwb3BDYXNjYWRlTGF5ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVTZXQ6OmFkZENoaWxkUnVsZXMpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVTZXQ6OmFkZFN0eWxlUnVsZSk6IERlbGV0ZWQuCisg
ICAgICAgICogc3R5bGUvUnVsZVNldC5oOgorCiAyMDIxLTA4LTI5ICBQaGlsaXBwZSBOb3JtYW5k
ICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBUcmFjayBoYW5k
bGluZyByZWZhY3RvcmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNl
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmNwcAppbmRleCA4NDUyNzAyOTc5
ZTEuLjQ2OGEzN2M2ZjQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5jcHAKQEAgLTgzLDE1ICs4
MywxNSBAQCBzdGF0aWMgYm9vbCBpc0hvc3RTZWxlY3Rvck1hdGNoaW5nSW5TaGFkb3dUcmVlKGNv
bnN0IENTU1NlbGVjdG9yJiBzdGFydFNlbGVjdG9yKQogICAgIHJldHVybiBsZWZ0bW9zdFNlbGVj
dG9yLT5tYXRjaCgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyAmJiBsZWZ0bW9zdFNlbGVj
dG9yLT5wc2V1ZG9DbGFzc1R5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NIb3N0Owog
fQogCi12b2lkIFJ1bGVTZXQ6OmFkZFJ1bGUoY29uc3QgU3R5bGVSdWxlJiBydWxlLCB1bnNpZ25l
ZCBzZWxlY3RvckluZGV4LCB1bnNpZ25lZCBzZWxlY3Rvckxpc3RJbmRleCwgTWVkaWFRdWVyeUNv
bGxlY3RvciogbWVkaWFRdWVyeUNvbGxlY3RvcikKK3ZvaWQgUnVsZVNldDo6YWRkUnVsZShjb25z
dCBTdHlsZVJ1bGUmIHJ1bGUsIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIHVuc2lnbmVkIHNlbGVj
dG9yTGlzdEluZGV4LCB1bnNpZ25lZCBjYXNjYWRlTGF5ZXJPcmRlciwgTWVkaWFRdWVyeUNvbGxl
Y3RvciogbWVkaWFRdWVyeUNvbGxlY3RvcikKIHsKICAgICBSdWxlRGF0YSBydWxlRGF0YShydWxl
LCBzZWxlY3RvckluZGV4LCBzZWxlY3Rvckxpc3RJbmRleCwgbV9ydWxlQ291bnQrKyk7CiAKLSAg
ICBpZiAobV9jYXNjYWRlTGF5ZXJPcmRlcikgeworICAgIGlmIChjYXNjYWRlTGF5ZXJPcmRlcikg
ewogICAgICAgICBhdXRvIG9sZFNpemUgPSBtX2Nhc2NhZGVMYXllck9yZGVyRm9yUG9zaXRpb24u
c2l6ZSgpOwogICAgICAgICBtX2Nhc2NhZGVMYXllck9yZGVyRm9yUG9zaXRpb24uZ3JvdyhtX3J1
bGVDb3VudCk7CiAgICAgICAgIHN0ZDo6ZmlsbChtX2Nhc2NhZGVMYXllck9yZGVyRm9yUG9zaXRp
b24uYmVnaW4oKSArIG9sZFNpemUsIG1fY2FzY2FkZUxheWVyT3JkZXJGb3JQb3NpdGlvbi5lbmQo
KSwgMCk7Ci0gICAgICAgIG1fY2FzY2FkZUxheWVyT3JkZXJGb3JQb3NpdGlvbi5sYXN0KCkgPSBt
X2Nhc2NhZGVMYXllck9yZGVyOworICAgICAgICBtX2Nhc2NhZGVMYXllck9yZGVyRm9yUG9zaXRp
b24ubGFzdCgpID0gY2FzY2FkZUxheWVyT3JkZXI7CiAgICAgfQogCiAgICAgbV9mZWF0dXJlcy5j
b2xsZWN0RmVhdHVyZXMocnVsZURhdGEpOwpAQCAtMjcxLDI2ICsyNzEsNjUgQEAgdm9pZCBSdWxl
U2V0OjphZGRQYWdlUnVsZShTdHlsZVJ1bGVQYWdlJiBydWxlKQogICAgIG1fcGFnZVJ1bGVzLmFw
cGVuZCgmcnVsZSk7CiB9CiAKLXZvaWQgUnVsZVNldDo6YWRkQ2hpbGRSdWxlcyhjb25zdCBWZWN0
b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgcnVsZXMsIE1lZGlhUXVlcnlDb2xsZWN0b3ImIG1l
ZGlhUXVlcnlDb2xsZWN0b3IsIFJlc29sdmVyKiByZXNvbHZlciwgQWRkUnVsZXNNb2RlIG1vZGUp
Cit2b2lkIFJ1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KGNvbnN0IFN0eWxlU2hlZXRDb250ZW50
cyYgc2hlZXQsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIGV2YWx1YXRvcikKK3sKKyAgICBC
dWlsZGVyIGJ1aWxkZXIgeyAqdGhpcywgTWVkaWFRdWVyeUNvbGxlY3RvciB7IGV2YWx1YXRvciB9
IH07CisgICAgYnVpbGRlci5hZGRSdWxlc0Zyb21TaGVldChzaGVldCk7CisKKyAgICBpZiAobV9h
dXRvU2hyaW5rVG9GaXRFbmFibGVkKQorICAgICAgICBzaHJpbmtUb0ZpdCgpOworfQorCit2b2lk
IFJ1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyYgc2hl
ZXQsIGNvbnN0IE1lZGlhUXVlcnlTZXQqIHNoZWV0UXVlcnksIGNvbnN0IE1lZGlhUXVlcnlFdmFs
dWF0b3ImIGV2YWx1YXRvciwgU3R5bGU6OlJlc29sdmVyJiByZXNvbHZlcikKK3sKKyAgICBhdXRv
IGNhblVzZUR5bmFtaWNNZWRpYVF1ZXJ5UmVzb2x1dGlvbiA9IFsmXSB7CisgICAgICAgIEJ1aWxk
ZXIgYnVpbGRlciB7ICp0aGlzLCBNZWRpYVF1ZXJ5Q29sbGVjdG9yIHsgZXZhbHVhdG9yLCB0cnVl
IH0sIG51bGxwdHIsIEJ1aWxkZXI6Ok1vZGU6OlJlc29sdmVyTXV0YXRpb25TY2FuIH07CisgICAg
ICAgIGlmIChidWlsZGVyLm1lZGlhUXVlcnlDb2xsZWN0b3IucHVzaEFuZEV2YWx1YXRlKHNoZWV0
UXVlcnkpKQorICAgICAgICAgICAgYnVpbGRlci5hZGRSdWxlc0Zyb21TaGVldChzaGVldCk7Cisg
ICAgICAgIGJ1aWxkZXIubWVkaWFRdWVyeUNvbGxlY3Rvci5wb3Aoc2hlZXRRdWVyeSk7CisgICAg
ICAgIHJldHVybiAhYnVpbGRlci5tZWRpYVF1ZXJ5Q29sbGVjdG9yLmRpZE11dGF0ZVJlc29sdmVy
V2l0aGluRHluYW1pY01lZGlhUXVlcnk7CisgICAgfSgpOworCisgICAgQnVpbGRlciBidWlsZGVy
IHsgKnRoaXMsIE1lZGlhUXVlcnlDb2xsZWN0b3IgeyBldmFsdWF0b3IsIGNhblVzZUR5bmFtaWNN
ZWRpYVF1ZXJ5UmVzb2x1dGlvbiB9LCAmcmVzb2x2ZXIgfTsKKworICAgIGlmIChidWlsZGVyLm1l
ZGlhUXVlcnlDb2xsZWN0b3IucHVzaEFuZEV2YWx1YXRlKHNoZWV0UXVlcnkpKQorICAgICAgICBi
dWlsZGVyLmFkZFJ1bGVzRnJvbVNoZWV0KHNoZWV0KTsKKyAgICBidWlsZGVyLm1lZGlhUXVlcnlD
b2xsZWN0b3IucG9wKHNoZWV0UXVlcnkpOworCisgICAgbV9oYXNWaWV3cG9ydERlcGVuZGVudE1l
ZGlhUXVlcmllcyA9IGJ1aWxkZXIubWVkaWFRdWVyeUNvbGxlY3Rvci5oYXNWaWV3cG9ydERlcGVu
ZGVudE1lZGlhUXVlcmllczsKKworICAgIGlmICghYnVpbGRlci5tZWRpYVF1ZXJ5Q29sbGVjdG9y
LmR5bmFtaWNNZWRpYVF1ZXJ5UnVsZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIGF1dG8gZmlyc3RO
ZXdJbmRleCA9IG1fZHluYW1pY01lZGlhUXVlcnlSdWxlcy5zaXplKCk7CisgICAgICAgIG1fZHlu
YW1pY01lZGlhUXVlcnlSdWxlcy5hcHBlbmRWZWN0b3IoV1RGTW92ZShidWlsZGVyLm1lZGlhUXVl
cnlDb2xsZWN0b3IuZHluYW1pY01lZGlhUXVlcnlSdWxlcykpOworCisgICAgICAgIC8vIFNldCB0
aGUgaW5pdGlhbCB2YWx1ZXMuCisgICAgICAgIGV2YWx1YXRlRHluYW1pY01lZGlhUXVlcnlSdWxl
cyhldmFsdWF0b3IsIGZpcnN0TmV3SW5kZXgpOworICAgIH0KKworICAgIGlmIChtX2F1dG9TaHJp
bmtUb0ZpdEVuYWJsZWQpCisgICAgICAgIHNocmlua1RvRml0KCk7Cit9CisKK3ZvaWQgUnVsZVNl
dDo6QnVpbGRlcjo6YWRkQ2hpbGRSdWxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJh
c2U+PiYgcnVsZXMpCiB7CiAgICAgZm9yIChhdXRvJiBydWxlIDogcnVsZXMpIHsKLSAgICAgICAg
aWYgKG1vZGUgPT0gQWRkUnVsZXNNb2RlOjpSZXNvbHZlck11dGF0aW9uU2NhbiAmJiBtZWRpYVF1
ZXJ5Q29sbGVjdG9yLmRpZE11dGF0ZVJlc29sdmVyV2l0aGluRHluYW1pY01lZGlhUXVlcnkpCisg
ICAgICAgIGlmIChtb2RlID09IE1vZGU6OlJlc29sdmVyTXV0YXRpb25TY2FuICYmIG1lZGlhUXVl
cnlDb2xsZWN0b3IuZGlkTXV0YXRlUmVzb2x2ZXJXaXRoaW5EeW5hbWljTWVkaWFRdWVyeSkKICAg
ICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGlmIChpczxTdHlsZVJ1bGU+KCpydWxlKSkgewot
ICAgICAgICAgICAgaWYgKG1vZGUgPT0gQWRkUnVsZXNNb2RlOjpOb3JtYWwpCi0gICAgICAgICAg
ICAgICAgYWRkU3R5bGVSdWxlKGRvd25jYXN0PFN0eWxlUnVsZT4oKnJ1bGUpLCBtZWRpYVF1ZXJ5
Q29sbGVjdG9yKTsKKyAgICAgICAgICAgIGlmIChtb2RlID09IE1vZGU6Ok5vcm1hbCkKKyAgICAg
ICAgICAgICAgICBhZGRTdHlsZVJ1bGUoZG93bmNhc3Q8U3R5bGVSdWxlPigqcnVsZSkpOwogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGlzPFN0eWxlUnVsZVBh
Z2U+KCpydWxlKSkgewotICAgICAgICAgICAgaWYgKG1vZGUgPT0gQWRkUnVsZXNNb2RlOjpOb3Jt
YWwpCi0gICAgICAgICAgICAgICAgYWRkUGFnZVJ1bGUoZG93bmNhc3Q8U3R5bGVSdWxlUGFnZT4o
KnJ1bGUpKTsKKyAgICAgICAgICAgIGlmIChtb2RlID09IE1vZGU6Ok5vcm1hbCkKKyAgICAgICAg
ICAgICAgICBydWxlU2V0LT5hZGRQYWdlUnVsZShkb3duY2FzdDxTdHlsZVJ1bGVQYWdlPigqcnVs
ZSkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGlzPFN0
eWxlUnVsZU1lZGlhPigqcnVsZSkpIHsKICAgICAgICAgICAgIGF1dG8mIG1lZGlhUnVsZSA9IGRv
d25jYXN0PFN0eWxlUnVsZU1lZGlhPigqcnVsZSk7CiAgICAgICAgICAgICBpZiAobWVkaWFRdWVy
eUNvbGxlY3Rvci5wdXNoQW5kRXZhbHVhdGUoJm1lZGlhUnVsZS5tZWRpYVF1ZXJpZXMoKSkpCi0g
ICAgICAgICAgICAgICAgYWRkQ2hpbGRSdWxlcyhtZWRpYVJ1bGUuY2hpbGRSdWxlcygpLCBtZWRp
YVF1ZXJ5Q29sbGVjdG9yLCByZXNvbHZlciwgbW9kZSk7CisgICAgICAgICAgICAgICAgYWRkQ2hp
bGRSdWxlcyhtZWRpYVJ1bGUuY2hpbGRSdWxlcygpKTsKICAgICAgICAgICAgIG1lZGlhUXVlcnlD
b2xsZWN0b3IucG9wKCZtZWRpYVJ1bGUubWVkaWFRdWVyaWVzKCkpOwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KQEAgLTMwNiw3ICszNDUsNyBAQCB2b2lkIFJ1bGVTZXQ6OmFkZENo
aWxkUnVsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIHJ1bGVzLCBNZWRp
YVF1ZQogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gQmxvY2sgc3ludGF4LgogICAgICAg
ICAgICAgcHVzaENhc2NhZGVMYXllcihsYXllclJ1bGUubmFtZSgpKTsKLSAgICAgICAgICAgIGFk
ZENoaWxkUnVsZXMobGF5ZXJSdWxlLmNoaWxkUnVsZXMoKSwgbWVkaWFRdWVyeUNvbGxlY3Rvciwg
cmVzb2x2ZXIsIG1vZGUpOworICAgICAgICAgICAgYWRkQ2hpbGRSdWxlcyhsYXllclJ1bGUuY2hp
bGRSdWxlcygpKTsKICAgICAgICAgICAgIHBvcENhc2NhZGVMYXllcihsYXllclJ1bGUubmFtZSgp
KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBAIC0zMjYsNzMgKzM2NSw2NiBA
QCB2b2lkIFJ1bGVTZXQ6OmFkZENoaWxkUnVsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1
bGVCYXNlPj4mIHJ1bGVzLCBNZWRpYVF1ZQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKGlzPFN0eWxlUnVsZVN1cHBvcnRzPigqcnVsZSkgJiYgZG93bmNhc3Q8
U3R5bGVSdWxlU3VwcG9ydHM+KCpydWxlKS5jb25kaXRpb25Jc1N1cHBvcnRlZCgpKSB7Ci0gICAg
ICAgICAgICBhZGRDaGlsZFJ1bGVzKGRvd25jYXN0PFN0eWxlUnVsZVN1cHBvcnRzPigqcnVsZSku
Y2hpbGRSdWxlcygpLCBtZWRpYVF1ZXJ5Q29sbGVjdG9yLCByZXNvbHZlciwgbW9kZSk7CisgICAg
ICAgICAgICBhZGRDaGlsZFJ1bGVzKGRvd25jYXN0PFN0eWxlUnVsZVN1cHBvcnRzPigqcnVsZSku
Y2hpbGRSdWxlcygpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgfQog
fQogCi12b2lkIFJ1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KFN0eWxlU2hlZXRDb250ZW50cyYg
c2hlZXQsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIGV2YWx1YXRvcikKLXsKLSAgICBhdXRv
IG1lZGlhUXVlcnlDb2xsZWN0b3IgPSBNZWRpYVF1ZXJ5Q29sbGVjdG9yIHsgZXZhbHVhdG9yIH07
Ci0gICAgYWRkUnVsZXNGcm9tU2hlZXQoc2hlZXQsIG1lZGlhUXVlcnlDb2xsZWN0b3IsIG51bGxw
dHIsIEFkZFJ1bGVzTW9kZTo6Tm9ybWFsKTsKLQotICAgIGlmIChtX2F1dG9TaHJpbmtUb0ZpdEVu
YWJsZWQpCi0gICAgICAgIHNocmlua1RvRml0KCk7Ci19Ci0KLXZvaWQgUnVsZVNldDo6YWRkUnVs
ZXNGcm9tU2hlZXQoU3R5bGVTaGVldENvbnRlbnRzJiBzaGVldCwgTWVkaWFRdWVyeVNldCogc2hl
ZXRRdWVyeSwgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYgZXZhbHVhdG9yLCBTdHlsZTo6UmVz
b2x2ZXImIHJlc29sdmVyKQotewotICAgIGF1dG8gY2FuVXNlRHluYW1pY01lZGlhUXVlcnlSZXNv
bHV0aW9uID0gWyZdIHsKLSAgICAgICAgYXV0byBtZWRpYVF1ZXJ5Q29sbGVjdG9yID0gTWVkaWFR
dWVyeUNvbGxlY3RvciB7IGV2YWx1YXRvciwgdHJ1ZSB9OwotICAgICAgICBpZiAobWVkaWFRdWVy
eUNvbGxlY3Rvci5wdXNoQW5kRXZhbHVhdGUoc2hlZXRRdWVyeSkpCi0gICAgICAgICAgICBhZGRS
dWxlc0Zyb21TaGVldChzaGVldCwgbWVkaWFRdWVyeUNvbGxlY3RvciwgbnVsbHB0ciwgQWRkUnVs
ZXNNb2RlOjpSZXNvbHZlck11dGF0aW9uU2Nhbik7Ci0gICAgICAgIG1lZGlhUXVlcnlDb2xsZWN0
b3IucG9wKHNoZWV0UXVlcnkpOwotICAgICAgICByZXR1cm4gIW1lZGlhUXVlcnlDb2xsZWN0b3Iu
ZGlkTXV0YXRlUmVzb2x2ZXJXaXRoaW5EeW5hbWljTWVkaWFRdWVyeTsKLSAgICB9KCk7Ci0KLSAg
ICBhdXRvIG1lZGlhUXVlcnlDb2xsZWN0b3IgPSBNZWRpYVF1ZXJ5Q29sbGVjdG9yIHsgZXZhbHVh
dG9yLCBjYW5Vc2VEeW5hbWljTWVkaWFRdWVyeVJlc29sdXRpb24gfTsKLQotICAgIGlmIChtZWRp
YVF1ZXJ5Q29sbGVjdG9yLnB1c2hBbmRFdmFsdWF0ZShzaGVldFF1ZXJ5KSkKLSAgICAgICAgYWRk
UnVsZXNGcm9tU2hlZXQoc2hlZXQsIG1lZGlhUXVlcnlDb2xsZWN0b3IsICZyZXNvbHZlciwgQWRk
UnVsZXNNb2RlOjpOb3JtYWwpOwotICAgIG1lZGlhUXVlcnlDb2xsZWN0b3IucG9wKHNoZWV0UXVl
cnkpOwotCi0gICAgbV9oYXNWaWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcmllcyA9IG1lZGlhUXVl
cnlDb2xsZWN0b3IuaGFzVmlld3BvcnREZXBlbmRlbnRNZWRpYVF1ZXJpZXM7Ci0KLSAgICBpZiAo
IW1lZGlhUXVlcnlDb2xsZWN0b3IuZHluYW1pY01lZGlhUXVlcnlSdWxlcy5pc0VtcHR5KCkpIHsK
LSAgICAgICAgYXV0byBmaXJzdE5ld0luZGV4ID0gbV9keW5hbWljTWVkaWFRdWVyeVJ1bGVzLnNp
emUoKTsKLSAgICAgICAgbV9keW5hbWljTWVkaWFRdWVyeVJ1bGVzLmFwcGVuZFZlY3RvcihXVEZN
b3ZlKG1lZGlhUXVlcnlDb2xsZWN0b3IuZHluYW1pY01lZGlhUXVlcnlSdWxlcykpOwotCi0gICAg
ICAgIC8vIFNldCB0aGUgaW5pdGlhbCB2YWx1ZXMuCi0gICAgICAgIGV2YWx1YXRlRHluYW1pY01l
ZGlhUXVlcnlSdWxlcyhldmFsdWF0b3IsIGZpcnN0TmV3SW5kZXgpOwotICAgIH0KLQotICAgIGlm
IChtX2F1dG9TaHJpbmtUb0ZpdEVuYWJsZWQpCi0gICAgICAgIHNocmlua1RvRml0KCk7Ci19Ci0K
LXZvaWQgUnVsZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQoU3R5bGVTaGVldENvbnRlbnRzJiBzaGVl
dCwgTWVkaWFRdWVyeUNvbGxlY3RvciYgbWVkaWFRdWVyeUNvbGxlY3RvciwgUmVzb2x2ZXIqIHJl
c29sdmVyLCBBZGRSdWxlc01vZGUgbW9kZSkKK3ZvaWQgUnVsZVNldDo6QnVpbGRlcjo6YWRkUnVs
ZXNGcm9tU2hlZXQoY29uc3QgU3R5bGVTaGVldENvbnRlbnRzJiBzaGVldCkKIHsKICAgICBmb3Ig
KGF1dG8mIHJ1bGUgOiBzaGVldC5pbXBvcnRSdWxlcygpKSB7CiAgICAgICAgIGlmICghcnVsZS0+
c3R5bGVTaGVldCgpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKG1lZGlh
UXVlcnlDb2xsZWN0b3IucHVzaEFuZEV2YWx1YXRlKHJ1bGUtPm1lZGlhUXVlcmllcygpKSkKLSAg
ICAgICAgICAgIGFkZFJ1bGVzRnJvbVNoZWV0KCpydWxlLT5zdHlsZVNoZWV0KCksIG1lZGlhUXVl
cnlDb2xsZWN0b3IsIHJlc29sdmVyLCBtb2RlKTsKKyAgICAgICAgICAgIGFkZFJ1bGVzRnJvbVNo
ZWV0KCpydWxlLT5zdHlsZVNoZWV0KCkpOwogICAgICAgICBtZWRpYVF1ZXJ5Q29sbGVjdG9yLnBv
cChydWxlLT5tZWRpYVF1ZXJpZXMoKSk7CiAgICAgfQogCi0gICAgYWRkQ2hpbGRSdWxlcyhzaGVl
dC5jaGlsZFJ1bGVzKCksIG1lZGlhUXVlcnlDb2xsZWN0b3IsIHJlc29sdmVyLCBtb2RlKTsKKyAg
ICBhZGRDaGlsZFJ1bGVzKHNoZWV0LmNoaWxkUnVsZXMoKSk7CiB9CiAKLXZvaWQgUnVsZVNldDo6
YWRkU3R5bGVSdWxlKGNvbnN0IFN0eWxlUnVsZSYgcnVsZSwgTWVkaWFRdWVyeUNvbGxlY3RvciYg
bWVkaWFRdWVyeUNvbGxlY3RvcikKK3ZvaWQgUnVsZVNldDo6QnVpbGRlcjo6YWRkU3R5bGVSdWxl
KGNvbnN0IFN0eWxlUnVsZSYgcnVsZSkKIHsKICAgICBhdXRvJiBzZWxlY3Rvckxpc3QgPSBydWxl
LnNlbGVjdG9yTGlzdCgpOwogICAgIGlmIChzZWxlY3Rvckxpc3QuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CiAgICAgdW5zaWduZWQgc2VsZWN0b3JMaXN0SW5kZXggPSAwOwogICAgIGZvciAo
c2l6ZV90IHNlbGVjdG9ySW5kZXggPSAwOyBzZWxlY3RvckluZGV4ICE9IG5vdEZvdW5kOyBzZWxl
Y3RvckluZGV4ID0gc2VsZWN0b3JMaXN0LmluZGV4T2ZOZXh0U2VsZWN0b3JBZnRlcihzZWxlY3Rv
ckluZGV4KSkKLSAgICAgICAgYWRkUnVsZShydWxlLCBzZWxlY3RvckluZGV4LCBzZWxlY3Rvckxp
c3RJbmRleCsrLCAmbWVkaWFRdWVyeUNvbGxlY3Rvcik7CisgICAgICAgIHJ1bGVTZXQtPmFkZFJ1
bGUocnVsZSwgc2VsZWN0b3JJbmRleCwgc2VsZWN0b3JMaXN0SW5kZXgrKywgY2FzY2FkZUxheWVy
T3JkZXIsICZtZWRpYVF1ZXJ5Q29sbGVjdG9yKTsKK30KKwordm9pZCBSdWxlU2V0OjpCdWlsZGVy
OjpwdXNoQ2FzY2FkZUxheWVyKGNvbnN0IENhc2NhZGVMYXllck5hbWUmIG5hbWUpCit7CisgICAg
aWYgKG1vZGUgIT0gTW9kZTo6Tm9ybWFsKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBuYW1l
UmVzb2x2aW5nQW5vbnltb3VzID0gWyZdIHsKKyAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKSB7
CisgICAgICAgICAgICAvLyBNYWtlIHVuaXF1ZSBuYW1lIGZvciBhbiBhbm9ueW1vdXMgbGF5ZXIu
CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgcmFuZG9tID0gcmFuZG9tTnVtYmVyKCkg
KiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGxvbmcgbG9uZz46Om1heCgpOworICAgICAg
ICAgICAgcmV0dXJuIENhc2NhZGVMYXllck5hbWUgeyAiYW5vbl8iX3MgKyBTdHJpbmc6Om51bWJl
cihyYW5kb20pIH07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgfTsKKwor
ICAgIC8vIEZvciBoaWVyYXJjaGljYWwgbmFtZXMgd2UgcmVnaXN0ZXIgdGhlIGNvbnRhaW5pbmcg
bGF5ZXJzIGluZGl2aWR1YWxseSBmaXJzdC4KKyAgICBmb3IgKGF1dG8mIG5hbWVTZWdtZW50IDog
bmFtZVJlc29sdmluZ0Fub255bW91cygpKSB7CisgICAgICAgIHJlc29sdmVkQ2FzY2FkZUxheWVy
TmFtZS5hcHBlbmQobmFtZVNlZ21lbnQpOworICAgICAgICBjYXNjYWRlTGF5ZXJPcmRlciA9IHJ1
bGVTZXQtPm1fY2FzY2FkZUxheWVyT3JkZXJNYXAuZW5zdXJlKHJlc29sdmVkQ2FzY2FkZUxheWVy
TmFtZSwgWyZdIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBjb3JyZWN0IHdo
ZW4gYWRkaW5nIGEgc3VibGF5ZXIgdG8gYW4gYWxyZWFkeSByZWdpc3RlcmVkIGxheWVyIGFmdGVy
IGl0IGhhcyBnYWluZWQgc2libGluZ3MuCisgICAgICAgICAgICByZXR1cm4gcnVsZVNldC0+bV9j
YXNjYWRlTGF5ZXJPcmRlck1hcC5zaXplKCkgKyAxOworICAgICAgICB9KS5pdGVyYXRvci0+dmFs
dWU7CisgICAgfQorfQorCit2b2lkIFJ1bGVTZXQ6OkJ1aWxkZXI6OnBvcENhc2NhZGVMYXllcihj
b25zdCBDYXNjYWRlTGF5ZXJOYW1lJiBuYW1lKQoreworICAgIGlmIChtb2RlICE9IE1vZGU6Ok5v
cm1hbCkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gc2l6ZSA9IG5hbWUuaXNFbXB0eSgpID8g
MSA6IG5hbWUuc2l6ZSgpOworICAgIHJlc29sdmVkQ2FzY2FkZUxheWVyTmFtZS5zaHJpbmsocmVz
b2x2ZWRDYXNjYWRlTGF5ZXJOYW1lLnNpemUoKSAtIHNpemUpOworICAgIGNhc2NhZGVMYXllck9y
ZGVyID0gcmVzb2x2ZWRDYXNjYWRlTGF5ZXJOYW1lLmlzRW1wdHkoKSA/IDAgOiBydWxlU2V0LT5t
X2Nhc2NhZGVMYXllck9yZGVyTWFwLmdldChyZXNvbHZlZENhc2NhZGVMYXllck5hbWUpOwogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbj4KQEAgLTQ5MiwzNCArNTI0LDYgQEAgUnVsZVNl
dDo6Q29sbGVjdGVkTWVkaWFRdWVyeUNoYW5nZXMgUnVsZVNldDo6ZXZhbHVhdGVEeW5hbWljTWVk
aWFRdWVyeVJ1bGVzKGNvbnMKICAgICByZXR1cm4gY29sbGVjdGVkQ2hhbmdlczsKIH0KIAotdm9p
ZCBSdWxlU2V0OjpwdXNoQ2FzY2FkZUxheWVyKGNvbnN0IENhc2NhZGVMYXllck5hbWUmIG5hbWUp
Ci17Ci0gICAgYXV0byBuYW1lUmVzb2x2aW5nQW5vbnltb3VzID0gWyZdIHsKLSAgICAgICAgaWYg
KG5hbWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAvLyBNYWtlIHVuaXF1ZSBuYW1lIGZvciBh
biBhbm9ueW1vdXMgbGF5ZXIuCi0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgcmFuZG9t
ID0gcmFuZG9tTnVtYmVyKCkgKiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGxvbmcgbG9u
Zz46Om1heCgpOwotICAgICAgICAgICAgcmV0dXJuIENhc2NhZGVMYXllck5hbWUgeyAiYW5vbl8i
X3MgKyBTdHJpbmc6Om51bWJlcihyYW5kb20pIH07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IG5hbWU7Ci0gICAgfTsKLQotICAgIC8vIEZvciBoaWVyYXJjaGljYWwgbmFtZXMgd2UgcmVnaXN0
ZXIgdGhlIGNvbnRhaW5pbmcgbGF5ZXJzIGluZGl2aWR1YWxseSBmaXJzdC4KLSAgICBmb3IgKGF1
dG8mIG5hbWVTZWdtZW50IDogbmFtZVJlc29sdmluZ0Fub255bW91cygpKSB7Ci0gICAgICAgIG1f
cmVzb2x2ZWRDYXNjYWRlTGF5ZXJOYW1lLmFwcGVuZChuYW1lU2VnbWVudCk7Ci0gICAgICAgIG1f
Y2FzY2FkZUxheWVyT3JkZXIgPSBtX2Nhc2NhZGVMYXllck9yZGVyTWFwLmVuc3VyZShtX3Jlc29s
dmVkQ2FzY2FkZUxheWVyTmFtZSwgWyZdIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlz
IG5vdCBjb3JyZWN0IHdoZW4gYWRkaW5nIGEgc3VibGF5ZXIgdG8gYW4gYWxyZWFkeSByZWdpc3Rl
cmVkIGxheWVyIGFmdGVyIGl0IGhhcyBnYWluZWQgc2libGluZ3MuCi0gICAgICAgICAgICByZXR1
cm4gbV9jYXNjYWRlTGF5ZXJPcmRlck1hcC5zaXplKCkgKyAxOwotICAgICAgICB9KS5pdGVyYXRv
ci0+dmFsdWU7Ci0gICAgfQotfQotCi12b2lkIFJ1bGVTZXQ6OnBvcENhc2NhZGVMYXllcihjb25z
dCBDYXNjYWRlTGF5ZXJOYW1lJiBuYW1lKQotewotICAgIGF1dG8gc2l6ZSA9IG5hbWUuaXNFbXB0
eSgpID8gMSA6IG5hbWUuc2l6ZSgpOwotICAgIG1fcmVzb2x2ZWRDYXNjYWRlTGF5ZXJOYW1lLnNo
cmluayhtX3Jlc29sdmVkQ2FzY2FkZUxheWVyTmFtZS5zaXplKCkgLSBzaXplKTsKLSAgICBtX2Nh
c2NhZGVMYXllck9yZGVyID0gbV9yZXNvbHZlZENhc2NhZGVMYXllck5hbWUuaXNFbXB0eSgpID8g
MCA6IG1fY2FzY2FkZUxheWVyT3JkZXJNYXAuZ2V0KG1fcmVzb2x2ZWRDYXNjYWRlTGF5ZXJOYW1l
KTsKLX0KLQogc3RhdGljIGlubGluZSB2b2lkIHNocmlua01hcFZlY3RvcnNUb0ZpdChSdWxlU2V0
OjpBdG9tUnVsZU1hcCYgbWFwKQogewogICAgIGZvciAoYXV0byYgdmVjdG9yIDogbWFwLnZhbHVl
cygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5oIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvUnVsZVNldC5oCmluZGV4IGYxMDM5M2ZjNmFiMi4uNDY5ZmUyYTAxOThl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvUnVsZVNldC5oCkBAIC0xMDgsMTIgKzEwOCwxMiBAQCBwdWJsaWM6CiAg
ICAgICAgIHZvaWQgYWRkUnVsZUlmTmVlZGVkKGNvbnN0IFJ1bGVEYXRhJik7CiAgICAgfTsKIAot
ICAgIHZvaWQgYWRkUnVsZXNGcm9tU2hlZXQoU3R5bGVTaGVldENvbnRlbnRzJiwgY29uc3QgTWVk
aWFRdWVyeUV2YWx1YXRvciYpOwotICAgIHZvaWQgYWRkUnVsZXNGcm9tU2hlZXQoU3R5bGVTaGVl
dENvbnRlbnRzJiwgTWVkaWFRdWVyeVNldCogc2hlZXRRdWVyeSwgY29uc3QgTWVkaWFRdWVyeUV2
YWx1YXRvciYsIFN0eWxlOjpSZXNvbHZlciYpOworICAgIHZvaWQgYWRkUnVsZXNGcm9tU2hlZXQo
Y29uc3QgU3R5bGVTaGVldENvbnRlbnRzJiwgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYpOwor
ICAgIHZvaWQgYWRkUnVsZXNGcm9tU2hlZXQoY29uc3QgU3R5bGVTaGVldENvbnRlbnRzJiwgY29u
c3QgTWVkaWFRdWVyeVNldCogc2hlZXRRdWVyeSwgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYs
IFN0eWxlOjpSZXNvbHZlciYpOwogCi0gICAgdm9pZCBhZGRTdHlsZVJ1bGUoY29uc3QgU3R5bGVS
dWxlJiwgTWVkaWFRdWVyeUNvbGxlY3RvciYpOwotICAgIHZvaWQgYWRkUnVsZShjb25zdCBTdHls
ZVJ1bGUmLCB1bnNpZ25lZCBzZWxlY3RvckluZGV4LCB1bnNpZ25lZCBzZWxlY3Rvckxpc3RJbmRl
eCwgTWVkaWFRdWVyeUNvbGxlY3RvciogPSBudWxscHRyKTsKKyAgICB2b2lkIGFkZFJ1bGUoY29u
c3QgU3R5bGVSdWxlJiwgdW5zaWduZWQgc2VsZWN0b3JJbmRleCwgdW5zaWduZWQgc2VsZWN0b3JM
aXN0SW5kZXgsIHVuc2lnbmVkIGNhc2NhZGVMYXllck9yZGVyID0gMCwgTWVkaWFRdWVyeUNvbGxl
Y3RvciogPSBudWxscHRyKTsKICAgICB2b2lkIGFkZFBhZ2VSdWxlKFN0eWxlUnVsZVBhZ2UmKTsK
KwogICAgIHZvaWQgYWRkVG9SdWxlU2V0KGNvbnN0IEF0b21TdHJpbmcmIGtleSwgQXRvbVJ1bGVN
YXAmLCBjb25zdCBSdWxlRGF0YSYpOwogICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKICAgICB2b2lk
IGRpc2FibGVBdXRvU2hyaW5rVG9GaXQoKSB7IG1fYXV0b1Nocmlua1RvRml0RW5hYmxlZCA9IGZh
bHNlOyB9CkBAIC0xNTAsOSArMTUwLDI2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgUnVsZVNl
dCgpOwogCi0gICAgZW51bSBjbGFzcyBBZGRSdWxlc01vZGUgeyBOb3JtYWwsIFJlc29sdmVyTXV0
YXRpb25TY2FuIH07Ci0gICAgdm9pZCBhZGRSdWxlc0Zyb21TaGVldChTdHlsZVNoZWV0Q29udGVu
dHMmLCBNZWRpYVF1ZXJ5Q29sbGVjdG9yJiwgU3R5bGU6OlJlc29sdmVyKiwgQWRkUnVsZXNNb2Rl
KTsKLSAgICB2b2lkIGFkZENoaWxkUnVsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVC
YXNlPj4mLCBNZWRpYVF1ZXJ5Q29sbGVjdG9yJiwgU3R5bGU6OlJlc29sdmVyKiwgQWRkUnVsZXNN
b2RlKTsKKyAgICBzdHJ1Y3QgQnVpbGRlciB7CisgICAgICAgIGVudW0gY2xhc3MgTW9kZSB7IE5v
cm1hbCwgUmVzb2x2ZXJNdXRhdGlvblNjYW4gfTsKKworICAgICAgICBSZWY8UnVsZVNldD4gcnVs
ZVNldDsKKyAgICAgICAgTWVkaWFRdWVyeUNvbGxlY3RvciBtZWRpYVF1ZXJ5Q29sbGVjdG9yOwor
ICAgICAgICBTdHlsZTo6UmVzb2x2ZXIqIHJlc29sdmVyIHsgbnVsbHB0ciB9OworICAgICAgICBN
b2RlIG1vZGUgeyBNb2RlOjpOb3JtYWwgfTsKKyAgICAgICAgQ2FzY2FkZUxheWVyTmFtZSByZXNv
bHZlZENhc2NhZGVMYXllck5hbWUgeyB9OworICAgICAgICB1bnNpZ25lZCBjYXNjYWRlTGF5ZXJP
cmRlciB7IDAgfTsKKworICAgICAgICB2b2lkIGFkZFJ1bGVzRnJvbVNoZWV0KGNvbnN0IFN0eWxl
U2hlZXRDb250ZW50cyYpOworICAgICAgICAKKyAgICBwcml2YXRlOgorICAgICAgICB2b2lkIGFk
ZENoaWxkUnVsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mKTsKKyAgICAg
ICAgdm9pZCBhZGRTdHlsZVJ1bGUoY29uc3QgU3R5bGVSdWxlJik7CisKKyAgICAgICAgdm9pZCBw
dXNoQ2FzY2FkZUxheWVyKGNvbnN0IENhc2NhZGVMYXllck5hbWUmKTsKKyAgICAgICAgdm9pZCBw
b3BDYXNjYWRlTGF5ZXIoY29uc3QgQ2FzY2FkZUxheWVyTmFtZSYpOworICAgIH07CisKICAgICBz
dHJ1Y3QgQ29sbGVjdGVkTWVkaWFRdWVyeUNoYW5nZXMgewogICAgICAgICBib29sIHJlcXVpcmVk
RnVsbFJlc2V0IHsgZmFsc2UgfTsKICAgICAgICAgVmVjdG9yPHNpemVfdD4gY2hhbmdlZFF1ZXJ5
SW5kZXhlcyB7IH07CkBAIC0xNjAsOSArMTc3LDYgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIENv
bGxlY3RlZE1lZGlhUXVlcnlDaGFuZ2VzIGV2YWx1YXRlRHluYW1pY01lZGlhUXVlcnlSdWxlcyhj
b25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiwgc2l6ZV90IHN0YXJ0SW5kZXgpOwogCi0gICAgdm9p
ZCBwdXNoQ2FzY2FkZUxheWVyKGNvbnN0IENhc2NhZGVMYXllck5hbWUmKTsKLSAgICB2b2lkIHBv
cENhc2NhZGVMYXllcihjb25zdCBDYXNjYWRlTGF5ZXJOYW1lJik7Ci0KICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdGlvbj4gdm9pZCB0cmF2ZXJzZVJ1bGVEYXRhcyhGdW5jdGlvbiYmKTsKIAog
ICAgIEF0b21SdWxlTWFwIG1faWRSdWxlczsKQEAgLTE5MiwxMCArMjA2LDYgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1faGFzSG9zdFBzZXVkb0NsYXNzUnVsZXNNYXRjaGluZ0luU2hhZG93VHJlZSB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX2F1dG9TaHJpbmtUb0ZpdEVuYWJsZWQgeyB0cnVlIH07CiAg
ICAgYm9vbCBtX2hhc1ZpZXdwb3J0RGVwZW5kZW50TWVkaWFRdWVyaWVzIHsgZmFsc2UgfTsKLQot
ICAgIC8vIEZJWE1FOiBUaGVzZSBzaG91bGQgYmUgaW4gc3RhY2suCi0gICAgQ2FzY2FkZUxheWVy
TmFtZSBtX3Jlc29sdmVkQ2FzY2FkZUxheWVyTmFtZTsKLSAgICB1bnNpZ25lZCBtX2Nhc2NhZGVM
YXllck9yZGVyIHsgMCB9OwogfTsKIAogaW5saW5lIGNvbnN0IFJ1bGVTZXQ6OlJ1bGVEYXRhVmVj
dG9yKiBSdWxlU2V0Ojp0YWdSdWxlcyhjb25zdCBBdG9tU3RyaW5nJiBrZXksIGJvb2wgaXNIVE1M
TmFtZSkgY29uc3QK
</data>

          </attachment>
      

    </bug>

</bugzilla>