<?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>88427</bug_id>
          
          <creation_ts>2012-06-06 09:59:08 -0700</creation_ts>
          <short_desc>[CSS Shaders] Reuse precompiled shaders across elements</short_desc>
          <delta_ts>2012-08-07 11:18:32 -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>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>85013</dependson>
          <blocked>85086</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexandru Chiculita">achicu</reporter>
          <assigned_to name="Alexandru Chiculita">achicu</assigned_to>
          <cc>dino</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>642561</commentid>
    <comment_count>0</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-06-06 09:59:08 -0700</bug_when>
    <thetext>When the style of an element changes the shader is recompiled and uploaded to the GPU. Reuse the shaders as much as possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676205</commentid>
    <comment_count>1</comment_count>
      <attachid>153910</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-07-23 17:21:24 -0700</bug_when>
    <thetext>Created attachment 153910
Patch V1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687148</commentid>
    <comment_count>2</comment_count>
      <attachid>153910</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-08-03 14:23:46 -0700</bug_when>
    <thetext>Comment on attachment 153910
Patch V1

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

Cool!

&gt; LayoutTests/css3/filters/custom/custom-filter-shader-reuse.html:26
&gt; +            function runTest()
&gt; +            {

{ on line above

&gt; Source/WebCore/ChangeLog:10
&gt; +        CustomFilterGlobalContext now acts as a cache for the compiled shaders. Note that only the shaders displayed on screen
&gt; +        are cached, making it useful in animations or when more elements share the same shader filter.

maybe &quot;only the shaders displayed on the page&quot; because I guess a filtered element might be scrolled off screen?

&gt; Source/WebCore/ChangeLog:20
&gt; +        is allowed to be null. A null strings is the placeholder for the default shader.

typo: strings -&gt; string.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterCompiledProgram.h:82
&gt; +    // Note that, CustomFilterGlobalContext doesn&apos;t not keep a strong reference to 
&gt; +    // the CustomFilterCompiledProgram.

typo: no comma necessary</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688515</commentid>
    <comment_count>3</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-08-06 16:08:21 -0700</bug_when>
    <thetext>(In reply to comment #2)

Thanks! I will submit an updated patch soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689212</commentid>
    <comment_count>4</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-08-07 11:18:17 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/124897 .</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153910</attachid>
            <date>2012-07-23 17:21:24 -0700</date>
            <delta_ts>2012-08-07 11:18:32 -0700</delta_ts>
            <desc>Patch V1</desc>
            <filename>bug88427.patch</filename>
            <type>text/plain</type>
            <size>39157</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzMDgzYzgwLi4yN2FlOGQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDct
MjMgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1MgU2hhZGVyc10gUmV1c2UgcHJlY29tcGlsZWQgc2hhZGVycyBhY3Jvc3MgZWxlbWVudHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4NDI3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSBuZXcg
dGVzdCB0byBjaGVjayBmb3IgY2FzZXMgd2hlbiBDU1MgU2hhZGVycyBhcmUgcmVtb3ZlZCBhbmQg
cmVhZGRlZC4gVHdvIGNhc2VzIGFyZSB2ZXJpZmllZCBpbiB0aGUgbmV3IHRlc3Q6CisgICAgICAg
IDEuIFdoZW4gYWxsIHRoZSBzaGFkZXJzIGFyZSByZW1vdmVkLgorICAgICAgICAyLiBXaGVuIG9u
bHkgc29tZSBvZiB0aGUgc2hhZGVycyBhcmUgcmVtb3ZlZC4KKworICAgICAgICAqIGNzczMvZmls
dGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1zaGFkZXItcmV1c2UtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItc2hhZGVyLXJl
dXNlLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA3LTIzICBLd2FuZyBZdWwgU2VvICA8c2t5dWxAY29t
cGFueTEwMC5uZXQ+CiAKICAgICAgICAgVXNlIHRoZSBvcmlnaW5hbCB0b2tlbiB0byBjcmVhdGUg
YW4gZWxlbWVudCBpbiAicmVjb25zdHJ1Y3QgdGhlIGFjdGl2ZSBmb3JtYXR0aW5nIGVsZW1lbnRz
IiBhbmQgImNhbGwgdGhlIGFkb3B0aW9uIGFnZW5jeSIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2NzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1zaGFkZXItcmV1c2UtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLXNoYWRl
ci1yZXVzZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
Y2RjNTk1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9jdXN0
b20vY3VzdG9tLWZpbHRlci1zaGFkZXItcmV1c2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBA
QAorICAgICAKKyAgICAgCisgICAgIAorICAgIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3Nz
My9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLXNoYWRlci1yZXVzZS5odG1sIGIvTGF5b3V0
VGVzdHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLXNoYWRlci1yZXVzZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiNzY5MDAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItc2hh
ZGVyLXJldXNlLmh0bWwKQEAgLTAsMCArMSw3NSBAQAorPCEtLSBUaGlzIGZpbGUgc2hvdWxkIHRl
c3QgdGhhdCBjb21waWxlZCBjdXN0b20tZmlsdGVycyBhcmUgc2hhcmVkIGJldHdlZW4gbXVsdGlw
bGUgZWxlbWVudHMgYW5kIHRoZXkgZG8gbm90IGNyYXNoLiBUZXN0IHBhc3NlcyBpZiB0aGVyZSdz
IG5vIGNyYXNoLiAtLT4KKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAg
ICAgIDx0aXRsZT5UZXN0aW5nIHRoYXQgY29tcGlsZWQgY3VzdG9tLWZpbHRlcnMgYXJlIHNoYXJl
ZCBjb3JyZWN0bHkgYmV0d2VlbiBlbGVtZW50czwvdGl0bGU+CisgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICB3aW5k
b3cudGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdENTU0N1c3RvbUZpbHRlckVu
YWJsZWQiLCAiMSIpOworICAgICAgICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLm92ZXJyaWRl
UHJlZmVyZW5jZSgiV2ViS2l0V2ViR0xFbmFibGVkIiwgIjEiKTsKKyAgICAgICAgICAgICAgICB3
aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KGZhbHNlKTsKKyAgICAgICAgICAgICAgICAvLyBX
ZSBuZWVkIHRvIHJ1biB0aGUgdGVzdHMgYWZ0ZXIgdGhlIGRvd25sb2FkaW5nIHN1Y2NlZWRlZC4K
KyAgICAgICAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNoYW5nZVN0YXRlKHN0YXRlKSB7Cisg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPSBzdGF0ZTsKKyAgICAgICAg
ICAgICAgICAvLyBGb3JjZSBhIGxheW91dC4KKyAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICAgICAgICAgICAgICAgICAgLy8gRm9yY2UgYSByZW5kZXJpbmcuCisgICAgICAgICAgICAg
ICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLmRpc3BsYXkoKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3Qo
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIFR1cm4gdGhlIHNoYWRlcnMgb24u
CisgICAgICAgICAgICAgICAgY2hhbmdlU3RhdGUoImFsbC1zaGFkZXJzLWFwcGxpZWQiKTsKKyAg
ICAgICAgICAgICAgICAvLyBSZW1vdmUgYWxsIHRoZSBzaGFkZXJzLCB0ZXN0aW5nIHRoYXQgdGhl
IGNvbXBpbGVkIHNoYWRlciBjYWNoZSBpcyBpbnZhbGlkYXRlIGNvcmVjdGx5LgorICAgICAgICAg
ICAgICAgIGNoYW5nZVN0YXRlKCIiKTsKKyAgICAgICAgICAgICAgICAvLyBBZGQgYmFjayBqdXN0
IHNvbWUgb2YgdGhlIHNoYWRlcnMuCisgICAgICAgICAgICAgICAgY2hhbmdlU3RhdGUoInNvbWUt
c2hhZGVycy1hcHBsaWVkIik7CisgICAgICAgICAgICAgICAgLy8gVHVybiBvbiBhbGwgdGhlIHNo
YWRlcnMgYWdhaW4sIHNvIHRoYXQgd2UgdGVzdCB0aGUgZGVzdHJ1Y3Rpb24gb2YgdGhlIGNhY2hl
LgorICAgICAgICAgICAgICAgIGNoYW5nZVN0YXRlKCJhbGwtc2hhZGVycy1hcHBsaWVkIik7Cisg
ICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAg
ICB3aW5kb3cudGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9CisgICAgICAg
IDwvc2NyaXB0PgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICBib2R5LmFsbC1zaGFkZXJz
LWFwcGxpZWQgLnZlcnRleF9zaGFkZXIgeworICAgICAgICAgICAgICAgIC13ZWJraXQtZmlsdGVy
OiBjdXN0b20odXJsKCcuLi9yZXNvdXJjZXMvdmVydGV4LW9mZnNldC52cycpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJvZHkuYWxsLXNoYWRlcnMtYXBwbGllZCAuZnJhZ21lbnRfc2hh
ZGVyLCAKKyAgICAgICAgICAgIGJvZHkuc29tZS1zaGFkZXJzLWFwcGxpZWQgLmZyYWdtZW50X3No
YWRlciB7CisgICAgICAgICAgICAgICAgLXdlYmtpdC1maWx0ZXI6IGN1c3RvbShub25lIHVybCgn
Li4vcmVzb3VyY2VzL2NvbG9yLW9mZnNldC5mcycpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGJvZHkuYWxsLXNoYWRlcnMtYXBwbGllZCAuYm90aF9zaGFkZXJzIHsKKyAgICAgICAgICAg
ICAgICAtd2Via2l0LWZpbHRlcjogY3VzdG9tKHVybCgnLi4vcmVzb3VyY2VzL3ZlcnRleC1vZmZz
ZXQudnMnKSB1cmwoJy4uL3Jlc291cmNlcy9jb2xvci1vZmZzZXQuZnMnKSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0icnVu
VGVzdCgpIj4KKyAgICAgICAgPGltZyBjbGFzcz0idmVydGV4X3NoYWRlciIgc3JjPSIuLi9yZXNv
dXJjZXMvcmVmZXJlbmNlLnBuZyIgLz4KKyAgICAgICAgPGltZyBjbGFzcz0iZnJhZ21lbnRfc2hh
ZGVyIiBzcmM9Ii4uL3Jlc291cmNlcy9yZWZlcmVuY2UucG5nIiAvPgorICAgICAgICA8aW1nIGNs
YXNzPSJib3RoX3NoYWRlcnMiIHNyYz0iLi4vcmVzb3VyY2VzL3JlZmVyZW5jZS5wbmciIC8+CisK
KyAgICAgICAgPGJyIC8+CisKKyAgICAgICAgPGltZyBjbGFzcz0idmVydGV4X3NoYWRlciIgc3Jj
PSIuLi9yZXNvdXJjZXMvcmVmZXJlbmNlLnBuZyIgLz4KKyAgICAgICAgPGltZyBjbGFzcz0iZnJh
Z21lbnRfc2hhZGVyIiBzcmM9Ii4uL3Jlc291cmNlcy9yZWZlcmVuY2UucG5nIiAvPgorICAgICAg
ICA8aW1nIGNsYXNzPSJib3RoX3NoYWRlcnMiIHNyYz0iLi4vcmVzb3VyY2VzL3JlZmVyZW5jZS5w
bmciIC8+CisKKyAgICAgICAgPGJyIC8+CisKKyAgICAgICAgPGltZyBjbGFzcz0idmVydGV4X3No
YWRlciIgc3JjPSIuLi9yZXNvdXJjZXMvcmVmZXJlbmNlLnBuZyIgLz4KKyAgICAgICAgPGltZyBj
bGFzcz0iZnJhZ21lbnRfc2hhZGVyIiBzcmM9Ii4uL3Jlc291cmNlcy9yZWZlcmVuY2UucG5nIiAv
PgorICAgICAgICA8aW1nIGNsYXNzPSJib3RoX3NoYWRlcnMiIHNyYz0iLi4vcmVzb3VyY2VzL3Jl
ZmVyZW5jZS5wbmciIC8+CisKKyAgICAgICAgPGJyIC8+CisKKyAgICAgICAgPGltZyBjbGFzcz0i
dmVydGV4X3NoYWRlciIgc3JjPSIuLi9yZXNvdXJjZXMvcmVmZXJlbmNlLnBuZyIgLz4KKyAgICAg
ICAgPGltZyBjbGFzcz0iZnJhZ21lbnRfc2hhZGVyIiBzcmM9Ii4uL3Jlc291cmNlcy9yZWZlcmVu
Y2UucG5nIiAvPgorICAgICAgICA8aW1nIGNsYXNzPSJib3RoX3NoYWRlcnMiIHNyYz0iLi4vcmVz
b3VyY2VzL3JlZmVyZW5jZS5wbmciIC8+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCAwZjE5NWRiLi45NmU0OWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
MTgxMCw2ICsxODEwLDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDNjYTU4MGQuLjJlYzU1Y2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MCBAQAorMjAxMi0wNy0yMyAgQWxleGFuZHJ1IENoaWN1
bGl0YSAgPGFjaGljdUBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBTaGFkZXJzXSBSZXVzZSBw
cmVjb21waWxlZCBzaGFkZXJzIGFjcm9zcyBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg0MjcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyBh
cyBhIGxpbmsgYmV0d2VlbiB0aGUgQ3VzdG9tRmlsdGVyUHJvZ3JhbSBhbmQgdGhlIEN1c3RvbUZp
bHRlckNvbXBpbGVkUHJvZ3JhbS4KKyAgICAgICAgQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dCBu
b3cgYWN0cyBhcyBhIGNhY2hlIGZvciB0aGUgY29tcGlsZWQgc2hhZGVycy4gTm90ZSB0aGF0IG9u
bHkgdGhlIHNoYWRlcnMgZGlzcGxheWVkIG9uIHNjcmVlbgorICAgICAgICBhcmUgY2FjaGVkLCBt
YWtpbmcgaXQgdXNlZnVsIGluIGFuaW1hdGlvbnMgb3Igd2hlbiBtb3JlIGVsZW1lbnRzIHNoYXJl
IHRoZSBzYW1lIHNoYWRlciBmaWx0ZXIuCisKKyAgICAgICAgRm9yIENTUyBTaGFkZXJzIHdlIG5l
ZWQgdHdvIGZpbGVzLCB2ZXJ0ZXggYW5kIGZyYWdtZW50IHNoYWRlcnMsIHNvIHRoYXQncyB3aHkg
d2UgaGF2ZSBhIEN1c3RvbUZpbHRlclByb2dyYW0uIAorICAgICAgICBDdXN0b21GaWx0ZXJQcm9n
cmFtIGlzIHRoZSBwbGF0Zm9ybSBvYmplY3QsIHNvIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSBp
bXBsZW1lbnRzIGl0IGFuZCBpcyByZWZlcmVuY2VkIGZyb20gdGhlIFJlbmRlclN0eWxlLgorCisg
ICAgICAgIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSBpcyBhbHNvIHRoZSBvbmUgdGhhdCBhY3R1
YWxseSBrZWVwcyByZWZlcmVuY2VzIHRvIHRoZSBDYWNoZWRTaGFkZXJzIGFuZCBoYXMgYWxsIHRo
ZSBsb2FkaW5nIGxvZ2ljLgorICAgICAgICBUaGUgb25seSBwcm9ibGVtIGlzIHRoYXQgdGhlcmUg
bWlnaHQgYmUgbXVsdGlwbGUgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtIHdpdGggdGhlIHNhbWUg
c2V0IG9mIENhY2hlZFNoYWRlcnMuCisgICAgICAgIFRoYXQncyB3aHkgaW4gdGhpcyBwYXRjaCBJ
J3ZlIGFkZGVkIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvIGFzIGEgc2ltcGxlIGNsYXNzIHRvIGJl
IHVzZWQgYXMgYSBrZXkgaW4gYSBoYXNoIG1hcC4KKworICAgICAgICBGb3Igbm93IEN1c3RvbUZp
bHRlclByb2dyYW1JbmZvIHNob3VsZCBhY3Qgc2ltaWxhciB0byBhIHBhaXI8U3RyaW5nLCBTdHJp
bmc+LiBUaGVyZSdzIG9ubHkgb25lIGV4Y2VwdGlvbjogb25lIG9mIHRoZSBzdHJpbmdzCisgICAg
ICAgIGlzIGFsbG93ZWQgdG8gYmUgbnVsbC4gQSBudWxsIHN0cmluZ3MgaXMgdGhlIHBsYWNlaG9s
ZGVyIGZvciB0aGUgZGVmYXVsdCBzaGFkZXIuCisKKyAgICAgICAgTm90ZSB0aGF0IGFscGhhIGNv
bXBvc2l0aW5nIGFuZCBibGVuZGluZyB3aWxsIGJlIGFkZGVkIHRvIHRoZSBDdXN0b21GaWx0ZXJQ
cm9ncmFtSW5mbyBhZnRlciB0aGUgbWl4KCkgCisgICAgICAgIGZ1bmN0aW9uIHBhcnNpbmcgd2ls
bCBsYW5kIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDEwMSAu
CisKKyAgICAgICAgVGVzdDogY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLXNoYWRl
ci1yZXVzZS5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVt
YWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJDb21waWxlZFByb2dyYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmls
dGVyQ29tcGlsZWRQcm9ncmFtOjpDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0pOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtOjpnZXREZWZhdWx0U2hhZGVy
U3RyaW5nKTogUmV0dXJucyB0aGUgZGVmYXVsdCBzaGFkZXIgYmFzZWQgb24gdGhlIHR5cGUuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlckNvbXBpbGVk
UHJvZ3JhbTo6Y29tcGlsZVNoYWRlcik6IEFkZGVkIGNoZWNrIGZvciBpc051bGwgYW5kIHVzZWQg
dGhlIGRlZmF1bHQgc2hhZGVyIGluIHRoYXQgY2FzZS4KKyAgICAgICAgKFdlYkNvcmU6OkN1c3Rv
bUZpbHRlckNvbXBpbGVkUHJvZ3JhbTo6fkN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbSk6IEFk
ZGVkIGNhbGwgdG8gQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dDo6cmVtb3ZlQ29tcGlsZWRQcm9n
cmFtLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29t
cGlsZWRQcm9ncmFtLmg6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJDb21waWxlZFBy
b2dyYW06OmRldGFjaEZyb21HbG9iYWxDb250ZXh0KTogQ2FsbGVkIGZyb20gfkN1c3RvbUZpbHRl
ckdsb2JhbENvbnRleHQsIHNvIHRoYXQgaXQgZG9lc24ndCBjYWxsIGludG8gYSBkZWxldGVkIG9i
amVjdCBsYXRlciB3aGVuIH5DdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0gaXMgY2FsbGVkLiBJ
dCBzaG91bGQgb25seSBoYXBwZW4gd2hlbiBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0IGRpZXMg
YmVmb3JlIHRoZSAKKyAgICAgICAgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtcyB0aGF0IGl0
IGNhY2hlcy4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0Ojp+Q3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0OjpnZXRDb21waWxl
ZFByb2dyYW0pOiBHZXRzIG9yIGNyZWF0ZXMgYSBjb21waWxlZCBzaGFkZXIgZm9yIGEgc3BlY2lm
aWMgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQ6OnJlbW92ZUNvbXBpbGVkUHJvZ3Jh
bSk6IENhbGxlZCBieSB+Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbTo6cHJvZ3JhbUluZm8pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpoYXNoUG9zc2libHlOdWxsU3RyaW5nKTogV2UgbmVlZCB0byBh
bGxvdyBudWxsIHN0cmluZ3MgaW4gdGhlIGhhc2gsIHNvIHRoaXMgaXMgYSBoZWxwZXIgdG8gY2hl
Y2sgZm9yIGlzTnVsbCAKKyAgICAgICAgYmVmb3JlIGFza2luZyBmb3IgdGhlIGhhc2guCisgICAg
ICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbzo6Q3VzdG9tRmlsdGVyUHJvZ3Jh
bUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm86OmlzRW1w
dHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbzo6aXNI
YXNoVGFibGVEZWxldGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJv
Z3JhbUluZm86Omhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUlu
Zm86Om9wZXJhdG9yPT0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyUHJvZ3JhbUluZm8uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKEN1c3RvbUZpbHRlclByb2dyYW1JbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZp
bHRlclByb2dyYW1JbmZvOjp2ZXJ0ZXhTaGFkZXJTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm86OmZyYWdtZW50U2hhZGVyU3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW1JbmZvSGFzaDo6aGFzaCk6CisgICAgICAgIChX
ZWJDb3JlOjpDdXN0b21GaWx0ZXJQcm9ncmFtSW5mb0hhc2g6OmVxdWFsKToKKyAgICAgICAgKEN1
c3RvbUZpbHRlclByb2dyYW1JbmZvSGFzaCk6IFN0cnVjdHVyZXMgbmVlZGVkIHRvIG1ha2UgdGhp
cyBhIGtleSBpbiB0aGUgaGFzaCBtYXAuCisgICAgICAgIChDdXN0b21GaWx0ZXJQcm9ncmFtSW5m
b0hhc2hUcmFpdHMpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm9I
YXNoVHJhaXRzOjppc0VtcHR5VmFsdWUpOiBJJ3ZlIHVzZWQgdGhlIGRlbGV0ZWQgc3RyaW5ncyB2
YWx1ZSB0byBtYXJrIGEgZGVsZXRlZAorICAgICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyBv
YmplY3QuIFRob3NlIGFyZSBub3Qgc2FmZSB0byBjb21wYXJlIHRvIGRlbGV0ZWQsIHNvIHRoZXJl
J3MgYSBuZWVkIHRvIHNldCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCB0byBmYWxzZSwg
bWVhbmluZyB0aGF0IHRoZXJlJ3MgYSBuZWVkIHRvIG1hbnVhbGx5IGNoZWNrIGZvciBlbXB0eSB2
YWx1ZXMuCisgICAgICAgIChXVEYpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDdXN0b21GaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6
OmluaXRpYWxpemVDb250ZXh0KTogTW92ZWQgdG8gdXNpbmcgdGhlIGNhY2hlZCBzaGFkZXIgaW5z
dGVhZC4KKwogMjAxMi0wNy0yMyAgS3dhbmcgWXVsIFNlbyAgPHNreXVsQGNvbXBhbnkxMDAubmV0
PgogCiAgICAgICAgIFVzZSB0aGUgb3JpZ2luYWwgdG9rZW4gdG8gY3JlYXRlIGFuIGVsZW1lbnQg
aW4gInJlY29uc3RydWN0IHRoZSBhY3RpdmUgZm9ybWF0dGluZyBlbGVtZW50cyIgYW5kICJjYWxs
IHRoZSBhZG9wdGlvbiBhZ2VuY3kiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA3
Y2ZlY2Q5Li44YTExMGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTMyNDMs
NiArMzI0Myw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQYXJhbWV0ZXIuaCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQ
cm9ncmFtLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyUHJvZ3JhbUluZm8uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW1JbmZvLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJDb21waWxlZFByb2dyYW0uaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBiZWRk
NDQwLi43MjYyNzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNjU4LDYgKzM2NTgsOCBAQAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUGFyYW1ldGVy
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVy
UHJvZ3JhbS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyUHJvZ3JhbS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlclByb2dyYW1JbmZvLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVy
Q29tcGlsZWRQcm9ncmFtLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagppbmRleCAxNDEyM2ZlLi5hMDY4OWQ3IDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzE1MjUsNiArMzE1MjUsMTQg
QEAKIAkJCQkJCT4KIAkJCQkJPC9GaWxlPgogCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxwbGF0Zm9ybVxncmFwaGljc1xmaWx0ZXJzXEN1c3RvbUZpbHRlclByb2dyYW1JbmZvLmNw
cCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxlPgorCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxwbGF0Zm9ybVxncmFwaGljc1xmaWx0ZXJzXEN1c3RvbUZpbHRlclByb2dyYW1JbmZvLmgi
CisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKIAkJCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xDdXN0b21GaWx0ZXJQcm9ncmFtQ2xpZW50Lmgi
CiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2N2U2YmM1Li42MGVlOWM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDc2
LDYgKzE0NzYsOCBAQAogCQk1MEQ0MDVGQTE0N0QzMUYzMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVy
TWVzaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTBE
NDA1RjgxNDdEMzFGMzAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlck1lc2guaCAqLzsgfTsKIAkJNTBE
NDA2MTExNDdENDlERTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEQ0MDYwRjE0
N0Q0OURFMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmNwcCAqLzsgfTsK
IAkJNTBENDA2MTIxNDdENDlERTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3Jh
bS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTBENDA2
MTAxNDdENDlERTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5oICovOyB9
OworCQk1MEQ4OENCNTE1QkRGREFBMDAxODA5RjQgLyogQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTBEODhD
QjMxNUJERkRBQTAwMTgwOUY0IC8qIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvLmNwcCAqLzsgfTsK
KwkJNTBEODhDQjYxNUJERkRBQTAwMTgwOUY0IC8qIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEQ4OENCNDE1
QkRGREFBMDAxODA5RjQgLyogQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uaCAqLzsgfTsKIAkJNTBF
NTY2RDYxMzlFMzhDNTAwMjE0NDMzIC8qIENTU1dyYXBTaGFwZXMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTAxQkFBQjExMzk1MTE0QjAwRjdBQ0VC
IC8qIENTU1dyYXBTaGFwZXMuY3BwICovOyB9OwogCQk1MTAxODQ2OTBCMDg2MDJBMDA0QTgyNUYg
LyogQ2FjaGVkUGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTEwMTg0NjcwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTAxODQ2QTBCMDg2MDJB
MDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTAxODQ2ODBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5j
cHAgKi87IH07CkBAIC04NTc2LDYgKzg1NzgsOCBAQAogCQk1MEQ0MDVGODE0N0QzMUYzMDBEMzBC
QjUgLyogQ3VzdG9tRmlsdGVyTWVzaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBDdXN0b21GaWx0ZXJNZXNoLmg7IHBhdGggPSBmaWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTBENDA2MEYxNDdENDlERTAwRDMwQkI1IC8q
IEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uY3BwOyBwYXRoID0gZmls
dGVycy9DdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MEQ0MDYxMDE0N0Q0OURFMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyQ29tcGls
ZWRQcm9ncmFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEN1c3RvbUZpbHRl
ckNvbXBpbGVkUHJvZ3JhbS5oOyBwYXRoID0gZmlsdGVycy9DdXN0b21GaWx0ZXJDb21waWxlZFBy
b2dyYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTBEODhDQjMxNUJERkRBQTAw
MTgwOUY0IC8qIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEN1c3RvbUZpbHRlclByb2dyYW1JbmZvLmNwcDsgcGF0aCA9IGZp
bHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MEQ4OENCNDE1QkRGREFBMDAxODA5RjQgLyogQ3VzdG9tRmlsdGVyUHJvZ3JhbUlu
Zm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9tRmlsdGVyUHJvZ3Jh
bUluZm8uaDsgcGF0aCA9IGZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwMTg0NjcwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hl
ZFBhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkUGFnZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTAxODQ2ODBCMDg2MDJBMDA0QTgyNUYgLyog
Q2FjaGVkUGFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNo
ZWRQYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwRDRBMkQxMDMxNjVF
RTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTc5NzgsNiArMTc5ODIsOCBAQAogCQlBNzVFOEI3RjBFMURF
MkIwMDA3RjI0ODEgLyogZmlsdGVycyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJNTBEODhDQjMxNUJERkRBQTAwMTgwOUY0IC8qIEN1c3RvbUZpbHRlclBy
b2dyYW1JbmZvLmNwcCAqLywKKwkJCQk1MEQ4OENCNDE1QkRGREFBMDAxODA5RjQgLyogQ3VzdG9t
RmlsdGVyUHJvZ3JhbUluZm8uaCAqLywKIAkJCQk0OUVDRUI1QzE0OTk3OTBEMDBDREQzQTQgLyog
YXJtICovLAogCQkJCTUwRDQwNjBGMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJDb21w
aWxlZFByb2dyYW0uY3BwICovLAogCQkJCTUwRDQwNjEwMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0
b21GaWx0ZXJDb21waWxlZFByb2dyYW0uaCAqLywKQEAgLTI1MjM3LDYgKzI1MjQzLDcgQEAKIAkJ
CQlGRDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUMzQ0YxN0E1MTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDM0NGMTdBNzE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZl
clJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MEQ4OENCNjE1QkRGREFBMDAxODA5RjQg
LyogQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjgyOTYsNiAr
MjgzMDMsNyBAQAogCQkJCUZENTM3MzUyMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlDM0NGMTdBNDE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRP
YnNlcnZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDM0NGMTdBNjE1QjAwNjNGMDAyNzZEMzkg
LyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUwRDg4
Q0I1MTVCREZEQUEwMDE4MDlGNCAvKiBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmNwcApp
bmRleCA5YWI1ZTU3Li4xZWFiZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJDb21w
aWxlZFByb2dyYW0uY3BwCkBAIC0zMiw2ICszMiw4IEBACiAjaWYgRU5BQkxFKENTU19TSEFERVJT
KSAmJiBVU0UoM0RfR1JBUEhJQ1MpCiAjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9n
cmFtLmgiCiAgCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5oIgorI2luY2x1
ZGUgIkN1c3RvbUZpbHRlclByb2dyYW1JbmZvLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
M0QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjksMTAgKzcxLDEwIEBAIFN0cmluZyBD
dXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW06OmRlZmF1bHRGcmFnbWVudFNoYWRlclN0cmluZygp
CiAgICAgcmV0dXJuIGZyYWdtZW50U2hhZGVyU3RyaW5nOwogfQogCi1DdXN0b21GaWx0ZXJDb21w
aWxlZFByb2dyYW06OkN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbShHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXJTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgZnJhZ21lbnRTaGFkZXJTdHJpbmcpCi0gICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAs
IG1fdmVydGV4U2hhZGVyU3RyaW5nKCF2ZXJ0ZXhTaGFkZXJTdHJpbmcuaXNOdWxsKCkgPyB2ZXJ0
ZXhTaGFkZXJTdHJpbmcgOiBkZWZhdWx0VmVydGV4U2hhZGVyU3RyaW5nKCkpCi0gICAgLCBtX2Zy
YWdtZW50U2hhZGVyU3RyaW5nKCFmcmFnbWVudFNoYWRlclN0cmluZy5pc051bGwoKSA/IGZyYWdt
ZW50U2hhZGVyU3RyaW5nIDogZGVmYXVsdEZyYWdtZW50U2hhZGVyU3RyaW5nKCkpCitDdXN0b21G
aWx0ZXJDb21waWxlZFByb2dyYW06OkN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbShDdXN0b21G
aWx0ZXJHbG9iYWxDb250ZXh0KiBnbG9iYWxDb250ZXh0LCBjb25zdCBDdXN0b21GaWx0ZXJQcm9n
cmFtSW5mbyYgcHJvZ3JhbUluZm8pCisgICAgOiBtX2dsb2JhbENvbnRleHQoZ2xvYmFsQ29udGV4
dCkKKyAgICAsIG1fY29udGV4dChnbG9iYWxDb250ZXh0LT5jb250ZXh0KCkpCisgICAgLCBtX3By
b2dyYW1JbmZvKHByb2dyYW1JbmZvKQogICAgICwgbV9wcm9ncmFtKDApCiAgICAgLCBtX3Bvc2l0
aW9uQXR0cmliTG9jYXRpb24oLTEpCiAgICAgLCBtX3RleEF0dHJpYkxvY2F0aW9uKC0xKQpAQCAt
ODksMTEgKzkxLDExIEBAIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbTo6Q3VzdG9tRmlsdGVy
Q29tcGlsZWRQcm9ncmFtKEdyYXBoaWNzQ29udGV4dDNEKiBjb250CiB7CiAgICAgbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICAKLSAgICBQbGF0Zm9ybTNET2JqZWN0IHZlcnRl
eFNoYWRlciA9IGNvbXBpbGVTaGFkZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9TSEFERVIs
IG1fdmVydGV4U2hhZGVyU3RyaW5nKTsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IHZlcnRleFNoYWRl
ciA9IGNvbXBpbGVTaGFkZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9TSEFERVIsIHByb2dy
YW1JbmZvLnZlcnRleFNoYWRlclN0cmluZygpKTsKICAgICBpZiAoIXZlcnRleFNoYWRlcikKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIFBsYXRmb3JtM0RPYmplY3QgZnJhZ21lbnRTaGFkZXIg
PSBjb21waWxlU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFHTUVOVF9TSEFERVIsIG1fZnJh
Z21lbnRTaGFkZXJTdHJpbmcpOworICAgIFBsYXRmb3JtM0RPYmplY3QgZnJhZ21lbnRTaGFkZXIg
PSBjb21waWxlU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFHTUVOVF9TSEFERVIsIHByb2dy
YW1JbmZvLmZyYWdtZW50U2hhZGVyU3RyaW5nKCkpOwogICAgIGlmICghZnJhZ21lbnRTaGFkZXIp
IHsKICAgICAgICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIodmVydGV4U2hhZGVyKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTEyLDEwICsxMTQsMjYgQEAgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9n
cmFtOjpDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0oR3JhcGhpY3NDb250ZXh0M0QqIGNvbnQK
ICAgICBtX2lzSW5pdGlhbGl6ZWQgPSB0cnVlOwogfQogCitTdHJpbmcgQ3VzdG9tRmlsdGVyQ29t
cGlsZWRQcm9ncmFtOjpnZXREZWZhdWx0U2hhZGVyU3RyaW5nKEdDM0RlbnVtIHNoYWRlclR5cGUp
Cit7CisgICAgc3dpdGNoIChzaGFkZXJUeXBlKSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6VkVSVEVYX1NIQURFUjoKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRWZXJ0ZXhTaGFkZXJTdHJp
bmcoKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpGUkFHTUVOVF9TSEFERVI6CisgICAg
ICAgIHJldHVybiBkZWZhdWx0RnJhZ21lbnRTaGFkZXJTdHJpbmcoKTsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwor
ICAgIH0KK30KKwogUGxhdGZvcm0zRE9iamVjdCBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW06
OmNvbXBpbGVTaGFkZXIoR0MzRGVudW0gc2hhZGVyVHlwZSwgY29uc3QgU3RyaW5nJiBzaGFkZXJT
dHJpbmcpCiB7CiAgICAgUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIgPSBtX2NvbnRleHQtPmNyZWF0
ZVNoYWRlcihzaGFkZXJUeXBlKTsKLSAgICBtX2NvbnRleHQtPnNoYWRlclNvdXJjZShzaGFkZXIs
IHNoYWRlclN0cmluZyk7CisgICAgaWYgKHNoYWRlclN0cmluZy5pc051bGwoKSkKKyAgICAgICAg
bV9jb250ZXh0LT5zaGFkZXJTb3VyY2Uoc2hhZGVyLCBnZXREZWZhdWx0U2hhZGVyU3RyaW5nKHNo
YWRlclR5cGUpKTsKKyAgICBlbHNlCisgICAgICAgIG1fY29udGV4dC0+c2hhZGVyU291cmNlKHNo
YWRlciwgc2hhZGVyU3RyaW5nKTsKICAgICBtX2NvbnRleHQtPmNvbXBpbGVTaGFkZXIoc2hhZGVy
KTsKICAgICAKICAgICBpbnQgY29tcGlsZWQgPSAwOwpAQCAtMTczLDYgKzE5MSw4IEBAIGludCBD
dXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW06OnVuaWZvcm1Mb2NhdGlvbkJ5TmFtZShjb25zdCBT
dHJpbmcmIG5hbWUpCiAgICAgCiBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW06On5DdXN0b21G
aWx0ZXJDb21waWxlZFByb2dyYW0oKQogeworICAgIGlmIChtX2dsb2JhbENvbnRleHQpCisgICAg
ICAgIG1fZ2xvYmFsQ29udGV4dC0+cmVtb3ZlQ29tcGlsZWRQcm9ncmFtKHRoaXMpOwogICAgIGlm
IChtX3Byb2dyYW0pIHsKICAgICAgICAgbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsK
ICAgICAgICAgbV9jb250ZXh0LT5kZWxldGVQcm9ncmFtKG1fcHJvZ3JhbSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNv
bXBpbGVkUHJvZ3JhbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uaAppbmRleCA2MDU3ZWZlLi5lMTVkMWE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmgKQEAgLTMyLDI1ICsz
MiwzMSBAQAogCiAjaWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBVU0UoM0RfR1JBUEhJQ1MpCiAK
KyNpbmNsdWRlICJDdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
VHlwZXMzRC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ3VzdG9tRmls
dGVyR2xvYmFsQ29udGV4dDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogCisvLyBBIHNwZWNp
ZmljIGNvbWJpbmF0aW9uIG9mIHZlcnRleCAvIGZyYWdtZW50IHNoYWRlciBpcyBvbmx5IGdvaW5n
IHRvIGJlIGNvbXBpbGVkIG9uY2UuIFRoZSBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0IGlzIAor
Ly8gY2FjaGluZyB0aGUgY29tcGlsZWQgcHJvZ3JhbXMuIEN1c3RvbUZpbHRlckdsb2JhbENvbnRl
eHQgaGFzIGEgd2VhayByZWZlcmVuY2UgdG8gdGhlIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3Jh
bSwgc28gdGhlIAorLy8gQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtIGRlc3RydWN0b3IgbmVl
ZHMgdG8gbm90aWZ5IHRoZSBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0IHRvIHJlbW92ZSB0aGUg
cHJvZ3JhbSBmcm9tIHRoZSBjYWNoZS4KKy8vIEZFQ3VzdG9tRmlsdGVyIGlzIHRoZSByZWZlcmVu
Y2Ugb3duZXIgb2YgdGhlIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbSwgc28gYSBjb21waWxl
ZCBzaGFkZXIgaXMgb25seSBrZXB0IGFsaXZlIGFzIAorLy8gbG9uZyBhcyB0aGVyZSBpcyBhdCBs
ZWFzdCBvbmUgdmlzaWJsZSBsYXllciB0aGF0IGFwcGxpZXMgdGhlIHNoYWRlci4KIGNsYXNzIEN1
c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbTogcHVibGljIFJlZkNvdW50ZWQ8Q3VzdG9tRmlsdGVy
Q29tcGlsZWRQcm9ncmFtPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q3VzdG9t
RmlsdGVyQ29tcGlsZWRQcm9ncmFtPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IGNvbnN0IFN0cmluZyYgdmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hhZGVy
KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbT4gY3Jl
YXRlKEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQqIGdsb2JhbENvbnRleHQsIGNvbnN0IEN1c3Rv
bUZpbHRlclByb2dyYW1JbmZvJiBwcm9ncmFtSW5mbykKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtKGNvbnRleHQsIHZlcnRleFNo
YWRlciwgZnJhZ21lbnRTaGFkZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDdXN0
b21GaWx0ZXJDb21waWxlZFByb2dyYW0oZ2xvYmFsQ29udGV4dCwgcHJvZ3JhbUluZm8pKTsKICAg
ICB9CiAgICAgCiAgICAgfkN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbSgpOwotICAgIAotICAg
IFN0cmluZyB2ZXJ0ZXhTaGFkZXJTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRleFNoYWRl
clN0cmluZzsgfQotICAgIFN0cmluZyBmcmFnbWVudFNoYWRlclN0cmluZygpIGNvbnN0IHsgcmV0
dXJuIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmc7IH0KKworICAgIGNvbnN0IEN1c3RvbUZpbHRlclBy
b2dyYW1JbmZvJiBwcm9ncmFtSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvZ3JhbUluZm87IH0K
ICAgICAKICAgICBpbnQgcG9zaXRpb25BdHRyaWJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
cG9zaXRpb25BdHRyaWJMb2NhdGlvbjsgfQogICAgIGludCB0ZXhBdHRyaWJMb2NhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fdGV4QXR0cmliTG9jYXRpb247IH0KQEAgLTcwLDggKzc2LDEzIEBAIHB1
YmxpYzoKICAgICAKICAgICBQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0oKSBjb25zdCB7IHJldHVy
biBtX3Byb2dyYW07IH0KIAorICAgIC8vICdkZXRhY2hHbG9iYWxDb250ZXh0JyBpcyBjYWxsZWQg
d2hlbiB0aGUgQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dCBpcyBkZWxldGVkCisgICAgLy8gYW5k
IHRoZXJlJ3Mgbm8gbmVlZCBmb3IgdGhlIGNhbGxiYWNrIGFueW1vcmUuIAorICAgIC8vIE5vdGUg
dGhhdCwgQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dCBkb2Vzbid0IG5vdCBrZWVwIGEgc3Ryb25n
IHJlZmVyZW5jZSB0byAKKyAgICAvLyB0aGUgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLgor
ICAgIHZvaWQgZGV0YWNoRnJvbUdsb2JhbENvbnRleHQoKSB7IG1fZ2xvYmFsQ29udGV4dCA9IDA7
IH0KIHByaXZhdGU6Ci0gICAgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtKEdyYXBoaWNzQ29u
dGV4dDNEKiwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXIsIGNvbnN0IFN0cmluZyYgZnJhZ21l
bnRTaGFkZXIpOworICAgIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbShDdXN0b21GaWx0ZXJH
bG9iYWxDb250ZXh0KiwgY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8mKTsKICAgICAKICAg
ICBQbGF0Zm9ybTNET2JqZWN0IGNvbXBpbGVTaGFkZXIoR0MzRGVudW0gc2hhZGVyVHlwZSwgY29u
c3QgU3RyaW5nJiBzaGFkZXJTdHJpbmcpOwogICAgIFBsYXRmb3JtM0RPYmplY3QgbGlua1Byb2dy
YW0oUGxhdGZvcm0zRE9iamVjdCB2ZXJ0ZXhTaGFkZXIsIFBsYXRmb3JtM0RPYmplY3QgZnJhZ21l
bnRTaGFkZXIpOwpAQCAtNzksMTIgKzkwLDExIEBAIHByaXZhdGU6CiAgICAgCiAgICAgc3RhdGlj
IFN0cmluZyBkZWZhdWx0VmVydGV4U2hhZGVyU3RyaW5nKCk7CiAgICAgc3RhdGljIFN0cmluZyBk
ZWZhdWx0RnJhZ21lbnRTaGFkZXJTdHJpbmcoKTsKKyAgICBTdHJpbmcgZ2V0RGVmYXVsdFNoYWRl
clN0cmluZyhHQzNEZW51bSBzaGFkZXJUeXBlKTsKICAgICAKKyAgICBDdXN0b21GaWx0ZXJHbG9i
YWxDb250ZXh0KiBtX2dsb2JhbENvbnRleHQ7CiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNE
PiBtX2NvbnRleHQ7Ci0gICAgCi0gICAgU3RyaW5nIG1fdmVydGV4U2hhZGVyU3RyaW5nOwotICAg
IFN0cmluZyBtX2ZyYWdtZW50U2hhZGVyU3RyaW5nOwotCisgICAgQ3VzdG9tRmlsdGVyUHJvZ3Jh
bUluZm8gbV9wcm9ncmFtSW5mbzsKICAgICBQbGF0Zm9ybTNET2JqZWN0IG1fcHJvZ3JhbTsKICAg
ICAKICAgICBpbnQgbV9wb3NpdGlvbkF0dHJpYkxvY2F0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9iYWxDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyR2xvYmFsQ29udGV4dC5jcHAKaW5kZXggNDU1YWU0MC4uMzgyYzI3OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJH
bG9iYWxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAj
aWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBVU0UoM0RfR1JBUEhJQ1MpCiAjaW5jbHVkZSAiQ3Vz
dG9tRmlsdGVyR2xvYmFsQ29udGV4dC5oIgogCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyQ29tcGls
ZWRQcm9ncmFtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNDIsNiArNDMsOCBAQCBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0OjpD
dXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0KCkKIAogQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dDo6
fkN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQoKQogeworICAgIGZvciAoQ3VzdG9tRmlsdGVyQ29t
cGlsZWRQcm9ncmFtc01hcDo6aXRlcmF0b3IgaXRlciA9IG1fcHJvZ3JhbXMuYmVnaW4oKTsgaXRl
ciAhPSBtX3Byb2dyYW1zLmVuZCgpOyArK2l0ZXIpCisgICAgICAgIGl0ZXItPnNlY29uZC0+ZGV0
YWNoRnJvbUdsb2JhbENvbnRleHQoKTsKIH0KIAogdm9pZCBDdXN0b21GaWx0ZXJHbG9iYWxDb250
ZXh0OjpwcmVwYXJlQ29udGV4dElmTmVlZGVkKEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCkBAIC01
OSw2ICs2MiwzMyBAQCB2b2lkIEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQ6OnByZXBhcmVDb250
ZXh0SWZOZWVkZWQoSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKICAgICBtX2NvbnRleHQtPmVuYWJs
ZShHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfVEVTVCk7CiB9CiAKK1Bhc3NSZWZQdHI8Q3VzdG9t
RmlsdGVyQ29tcGlsZWRQcm9ncmFtPiBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0OjpnZXRDb21w
aWxlZFByb2dyYW0oY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8mIHByb2dyYW1JbmZvKQor
eworICAgIC8vIENoZWNrIHRoYXQgdGhlIGNvbnRleHQgaXMgYWxyZWFkeSBwcmVwYXJlZC4KKyAg
ICBBU1NFUlQobV9jb250ZXh0KTsKKworICAgIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbXNN
YXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3Byb2dyYW1zLmZpbmQocHJvZ3JhbUluZm8pOworICAgIGlm
IChpdGVyICE9IG1fcHJvZ3JhbXMuZW5kKCkpCisgICAgICAgIHJldHVybiBpdGVyLT5zZWNvbmQ7
CisKKyAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtPiBjb21waWxlZFByb2dy
YW0gPSBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW06OmNyZWF0ZSh0aGlzLCBwcm9ncmFtSW5m
byk7CisgICAgbV9wcm9ncmFtcy5zZXQocHJvZ3JhbUluZm8sIGNvbXBpbGVkUHJvZ3JhbS5nZXQo
KSk7CisgICAgcmV0dXJuIGNvbXBpbGVkUHJvZ3JhbS5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgQ3Vz
dG9tRmlsdGVyR2xvYmFsQ29udGV4dDo6cmVtb3ZlQ29tcGlsZWRQcm9ncmFtKGNvbnN0IEN1c3Rv
bUZpbHRlckNvbXBpbGVkUHJvZ3JhbSogcHJvZ3JhbSkKK3sKKyAgICBDdXN0b21GaWx0ZXJDb21w
aWxlZFByb2dyYW1zTWFwOjppdGVyYXRvciBpdGVyID0gbV9wcm9ncmFtcy5maW5kKHByb2dyYW0t
PnByb2dyYW1JbmZvKCkpOworICAgIEFTU0VSVChpdGVyICE9IG1fcHJvZ3JhbXMuZW5kKCkpOwor
ICAgIG1fcHJvZ3JhbXMucmVtb3ZlKGl0ZXIpOworCisjaWZuZGVmIE5ERUJVRworICAgIC8vIENo
ZWNrIHRoYXQgdGhlcmUncyBubyB3YXkgd2UgY291bGQgaGF2ZSB0aGUgc2FtZSBwcm9ncmFtIHVu
ZGVyIGEgZGlmZmVyZW50IGtleS4KKyAgICBmb3IgKGl0ZXIgPSBtX3Byb2dyYW1zLmJlZ2luKCk7
IGl0ZXIgIT0gbV9wcm9ncmFtcy5lbmQoKTsgKytpdGVyKQorICAgICAgICBBU1NFUlQoaXRlci0+
c2Vjb25kICE9IHByb2dyYW0pOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykgJiYgVVNFKDNEX0dSQVBISUNTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJHbG9iYWxDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuaAppbmRleCBhYmEwMDM1Li44ZGM4NWYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1
c3RvbUZpbHRlckdsb2JhbENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuaApAQCAtMzEsMTMgKzMx
LDE4IEBACiAjZGVmaW5lIEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHRfaAogCiAjaWYgRU5BQkxF
KENTU19TSEFERVJTKSAmJiBVU0UoM0RfR1JBUEhJQ1MpCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVy
UHJvZ3JhbUluZm8uaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDdXN0b21GaWx0ZXJDb21w
aWxlZFByb2dyYW07CiBjbGFzcyBIb3N0V2luZG93OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7
CiAKK3R5cGVkZWYgSGFzaE1hcDxDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbywgQ3VzdG9tRmlsdGVy
Q29tcGlsZWRQcm9ncmFtKj4gQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtc01hcDsKKwogY2xh
c3MgQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dCB7CiBwdWJsaWM6CiAgICAgQ3VzdG9tRmlsdGVy
R2xvYmFsQ29udGV4dCgpOwpAQCAtNDcsOCArNTIsMTEgQEAgcHVibGljOgogICAgIAogICAgIHZv
aWQgcHJlcGFyZUNvbnRleHRJZk5lZWRlZChIb3N0V2luZG93Kik7CiAKKyAgICBQYXNzUmVmUHRy
PEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbT4gZ2V0Q29tcGlsZWRQcm9ncmFtKGNvbnN0IEN1
c3RvbUZpbHRlclByb2dyYW1JbmZvJik7CisgICAgdm9pZCByZW1vdmVDb21waWxlZFByb2dyYW0o
Y29uc3QgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtKik7CiBwcml2YXRlOgogICAgIFJlZlB0
cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0OworICAgIEN1c3RvbUZpbHRlckNvbXBpbGVk
UHJvZ3JhbXNNYXAgbV9wcm9ncmFtczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uY3BwCmluZGV4IDYwY2ZmMjIuLmNlN2FkODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmls
dGVyUHJvZ3JhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmNwcApAQCAtMzQsMTAgKzM0LDcgQEAKIAogI2luY2x1
ZGUgIkN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5oIgogI2luY2x1ZGUgIkN1c3RvbUZpbHRl
clByb2dyYW1DbGllbnQuaCIKLQotI2lmIFVTRSgzRF9HUkFQSElDUykKLSNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQzRC5oIgotI2VuZGlmCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUHJvZ3JhbUlu
Zm8uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04MCwxMyArNzcsMTEgQEAgdm9pZCBD
dXN0b21GaWx0ZXJQcm9ncmFtOjpub3RpZnlDbGllbnRzKCkKICAgICAgICAgaXRlci0+Zmlyc3Qt
Pm5vdGlmeUN1c3RvbUZpbHRlclByb2dyYW1Mb2FkZWQodGhpcyk7CiB9CiAKLSNpZiBVU0UoM0Rf
R1JBUEhJQ1MpCi1QYXNzUmVmUHRyPEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbT4gQ3VzdG9t
RmlsdGVyUHJvZ3JhbTo6Y29tcGlsZVByb2dyYW1XaXRoQ29udGV4dChHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCkKK0N1c3RvbUZpbHRlclByb2dyYW1JbmZvIEN1c3RvbUZpbHRlclByb2dyYW06
OnByb2dyYW1JbmZvKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNMb2FkZWQoKSk7Ci0gICAgcmV0
dXJuIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbTo6Y3JlYXRlKGNvbnRleHQsIHZlcnRleFNo
YWRlclN0cmluZygpLCBmcmFnbWVudFNoYWRlclN0cmluZygpKTsKKyAgICByZXR1cm4gQ3VzdG9t
RmlsdGVyUHJvZ3JhbUluZm8odmVydGV4U2hhZGVyU3RyaW5nKCksIGZyYWdtZW50U2hhZGVyU3Ry
aW5nKCkpOwogfQotI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKICNlbmRpZiAvLyBF
TkFCTEUoQ1NTX1NIQURFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oCmluZGV4IDIyMTYw
NjYuLjkwZjU1YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oCkBAIC00MSw2ICs0MSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3Mg
Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtOwogY2xhc3MgQ3VzdG9tRmlsdGVyUHJvZ3JhbUNs
aWVudDsKK2NsYXNzIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvOwogCiAvLyBUaGlzIGlzIHRoZSBi
YXNlIGNsYXNzIGZvciB0aGUgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtIGNsYXNzIHdoaWNoIGtu
b3dzIGhvdyB0byBrZWVwCiAvLyByZWZlcmVuY2VzIHRvIHRoZSBjYWNoZWQgc2hhZGVycy4KQEAg
LTUzLDkgKzU0LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkQ2xpZW50KEN1c3RvbUZpbHRlclBy
b2dyYW1DbGllbnQqKTsKICAgICB2b2lkIHJlbW92ZUNsaWVudChDdXN0b21GaWx0ZXJQcm9ncmFt
Q2xpZW50Kik7CiAgICAgCi0jaWYgVVNFKDNEX0dSQVBISUNTKQotICAgIFBhc3NSZWZQdHI8Q3Vz
dG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtPiBjb21waWxlUHJvZ3JhbVdpdGhDb250ZXh0KEdyYXBo
aWNzQ29udGV4dDNEKik7Ci0jZW5kaWYKKyAgICBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyBwcm9n
cmFtSW5mbygpIGNvbnN0OwogCiAgICAgLy8gU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtIGhhcyB0
aGUgb25seSBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIGZvbGxvd2luZyBtZXRob2QuIFRoYXQgbWVh
bnMsIGl0IGNhc3RzIHRvIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbQogICAgIC8vIHdpdGhvdXRo
IGNoZWNraW5nIHRoZSB0eXBlLiBJZiB5b3UgYWRkIGFub3RoZXIgaW1wbGVtZW50YXRpb24sIGFs
c28gYWRkIGEgbWVjaGFuaXNtIHRvIGNoZWNrIGZvciB0aGUgY29ycmVjdCB0eXBlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJQcm9ncmFtSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlclByb2dyYW1JbmZvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5iYzdjOWU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5jcHAKQEAgLTAs
MCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29y
cG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
IOKAnEFTIElT4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVS
IEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorI2luY2x1ZGUgIkN1c3RvbUZpbHRl
clByb2dyYW1JbmZvLmgiCisKKyNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0
aWMgdW5zaWduZWQgaGFzaFBvc3NpYmx5TnVsbFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykK
K3sKKyAgICByZXR1cm4gc3RyaW5nLmlzTnVsbCgpID8gMCA6IERlZmF1bHRIYXNoPFN0cmluZz46
Okhhc2g6Omhhc2goc3RyaW5nKTsKK30KKworQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm86OkN1c3Rv
bUZpbHRlclByb2dyYW1JbmZvKCkKK3sKK30KKworYm9vbCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5m
bzo6aXNFbXB0eVZhbHVlKCkgY29uc3QgCit7IAorICAgIHJldHVybiBtX3ZlcnRleFNoYWRlclN0
cmluZy5pc051bGwoKSAKKyAgICAgICAgJiYgbV9mcmFnbWVudFNoYWRlclN0cmluZy5pc051bGwo
KTsKK30KKworQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm86OkN1c3RvbUZpbHRlclByb2dyYW1JbmZv
KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICA6IG1fdmVydGV4U2hhZGVyU3Ry
aW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQorICAgICwgbV9mcmFnbWVudFNoYWRlclN0
cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkKK3sKK30KKworYm9vbCBDdXN0b21GaWx0
ZXJQcm9ncmFtSW5mbzo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3ZlcnRleFNoYWRlclN0cmluZy5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIAorICAg
ICAgICAmJiBtX2ZyYWdtZW50U2hhZGVyU3RyaW5nLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7
Cit9CisKK0N1c3RvbUZpbHRlclByb2dyYW1JbmZvOjpDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyhj
b25zdCBTdHJpbmcmIHZlcnRleFNoYWRlciwgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlcikK
KyAgICA6IG1fdmVydGV4U2hhZGVyU3RyaW5nKHZlcnRleFNoYWRlcikKKyAgICAsIG1fZnJhZ21l
bnRTaGFkZXJTdHJpbmcoZnJhZ21lbnRTaGFkZXIpCit7CisgICAgLy8gQXQgbGVhc3Qgb25lIG9m
IHRoZSBzaGFkZXJzIG5lZWRzIHRvIGJlIG5vbi1udWxsLgorICAgIEFTU0VSVCghbV92ZXJ0ZXhT
aGFkZXJTdHJpbmcuaXNOdWxsKCkgfHwgIW1fZnJhZ21lbnRTaGFkZXJTdHJpbmcuaXNOdWxsKCkp
OworfQorCit1bnNpZ25lZCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbzo6aGFzaCgpIGNvbnN0IAor
eworICAgIC8vIEF0IGxlYXN0IG9uZSBvZiB0aGUgc2hhZGVycyBuZWVkcyB0byBiZSBub24tbnVs
bC4KKyAgICBBU1NFUlQoIW1fdmVydGV4U2hhZGVyU3RyaW5nLmlzTnVsbCgpIHx8ICFtX2ZyYWdt
ZW50U2hhZGVyU3RyaW5nLmlzTnVsbCgpKTsKKyAgICByZXR1cm4gV1RGOjppbnRIYXNoKChzdGF0
aWNfY2FzdDx1aW50NjRfdD4oaGFzaFBvc3NpYmx5TnVsbFN0cmluZyhtX3ZlcnRleFNoYWRlclN0
cmluZykpIDw8IDMyIHwgaGFzaFBvc3NpYmx5TnVsbFN0cmluZyhtX2ZyYWdtZW50U2hhZGVyU3Ry
aW5nKSkpOworfQorCitib29sIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvOjpvcGVyYXRvcj09KGNv
bnN0IEN1c3RvbUZpbHRlclByb2dyYW1JbmZvJiBvKSBjb25zdCAKK3sKKyAgICBBU1NFUlQoIWlz
SGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkpOworICAgIEFTU0VSVCghby5pc0hhc2hUYWJsZURlbGV0
ZWRWYWx1ZSgpKTsKKyAgICByZXR1cm4gbV92ZXJ0ZXhTaGFkZXJTdHJpbmcgPT0gby5tX3ZlcnRl
eFNoYWRlclN0cmluZworICAgICAgICAmJiBtX2ZyYWdtZW50U2hhZGVyU3RyaW5nID09IG8ubV9m
cmFnbWVudFNoYWRlclN0cmluZzsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKENTU19TSEFERVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtSW5m
by5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4OWU5ZjUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlclByb2dyYW1JbmZvLmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAg
ICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVy
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mb19oCisjZGVmaW5l
IEN1c3RvbUZpbHRlclByb2dyYW1JbmZvX2gKKworI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyNp
bmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvIGlz
IHRoZSBrZXkgdXNlZCB0byBsaW5rIEN1c3RvbUZpbHRlclByb2dyYW0gd2l0aCBDdXN0b21GaWx0
ZXJDb21waWxlZFByb2dyYW0uCisvLyBJdCBjYW4gYmUgdXNlZCBhcyBhIGtleSBpbiBhIEhhc2hN
YXAsIHdpdGggdGhlIG5vdGUgdGhhdCBhdCBsZWFzdCBvbmUgb2YgU3RyaW5ncyBuZWVkcyB0byBi
ZSBub24tbnVsbC4gCisvLyBOdWxsIHN0cmluZ3MgYXJlIHBsYWNlaG9sZGVycyBmb3IgdGhlIGRl
ZmF1bHQgc2hhZGVyLgorY2xhc3MgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8geworcHVibGljOgor
ICAgIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYp
OworCisgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8oKTsKKyAgICBib29sIGlzRW1wdHlWYWx1
ZSgpIGNvbnN0OworCisgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8oV1RGOjpIYXNoVGFibGVE
ZWxldGVkVmFsdWVUeXBlKTsKKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29u
c3Q7CisgICAgCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyYpIGNvbnN0OworCisgICAgY29uc3QgU3Ry
aW5nJiB2ZXJ0ZXhTaGFkZXJTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRleFNoYWRlclN0
cmluZzsgfQorICAgIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRTaGFkZXJTdHJpbmcoKSBjb25zdCB7
IHJldHVybiBtX2ZyYWdtZW50U2hhZGVyU3RyaW5nOyB9Citwcml2YXRlOgorICAgIFN0cmluZyBt
X3ZlcnRleFNoYWRlclN0cmluZzsKKyAgICBTdHJpbmcgbV9mcmFnbWVudFNoYWRlclN0cmluZzsK
KworICAgIC8vIEZJWE1FOiBBbHBoYSBjb21wb3NpdGluZyBhbmQgYmxlbmRpbmcgd2lsbCBjb21l
IGhlcmUgYWZ0ZXIgbWl4KCkgZnVuY3Rpb24gcGFyc2luZyB3aWxsIGxhbmQuCisgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMTAxCit9OworCitzdHJ1Y3Qg
Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm9IYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChj
b25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyYgcHJvZ3JhbUluZm8pIHsgcmV0dXJuIHByb2dy
YW1JbmZvLmhhc2goKTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEN1c3RvbUZpbHRl
clByb2dyYW1JbmZvJiBhLCBjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyYgYikgeyByZXR1
cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlP
ckRlbGV0ZWQgPSBmYWxzZTsKK307CisKK3N0cnVjdCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mb0hh
c2hUcmFpdHMgOiBXVEY6OlNpbXBsZUNsYXNzSGFzaFRyYWl0czxDdXN0b21GaWx0ZXJQcm9ncmFt
SW5mbz4geworICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0lzRW1wdHlWYWx1ZUZ1bmN0aW9uID0g
dHJ1ZTsKKyAgICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoY29uc3QgQ3VzdG9tRmlsdGVyUHJv
Z3JhbUluZm8mIGluZm8pIHsgcmV0dXJuIGluZm8uaXNFbXB0eVZhbHVlKCk7IH0KK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8+IDogV2ViQ29y
ZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm9IYXNoVHJhaXRzIHsgfTsKK3RlbXBsYXRlPD4gc3Ry
dWN0IERlZmF1bHRIYXNoPFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW1JbmZvPiB7IAorICAg
IHR5cGVkZWYgV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm9IYXNoIEhhc2g7IAorfTsK
KworfQorI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykKKworI2VuZGlmIC8vIEN1c3RvbUZp
bHRlclByb2dyYW1JbmZvX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHAKaW5kZXggMzZkMDZkMy4uYzJl
YjlmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUN1c3RvbUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHAKQEAgLTE2OCwxMSArMTY4LDcgQEAgYm9vbCBG
RUN1c3RvbUZpbHRlcjo6aW5pdGlhbGl6ZUNvbnRleHQoKQogICAgIGlmICghbV9jb250ZXh0KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KTsKLSAgICAKLSAgICAvLyBGSVhNRTogVGhlIHNoYWRlciBhbmQgdGhlIG1lc2ggY2FuIGJlIHNo
YXJlZCBhY3Jvc3MgbXVsdGlwbGUgZWxlbWVudHMgd2hlbiBwb3NzaWJsZS4KLSAgICAvLyBTaGFy
aW5nIHRoZSBzaGFkZXIgbWVhbnMgaXQncyBubyBuZWVkIHRvIGFuYWx5emUgLyBjb21waWxlIGFu
ZCB1cGxvYWQgdG8gR1BVIGFnYWluLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04ODQyNwotICAgIG1fY29tcGlsZWRQcm9ncmFtID0gbV9wcm9ncmFtLT5j
b21waWxlUHJvZ3JhbVdpdGhDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7CisgICAgbV9jb21waWxl
ZFByb2dyYW0gPSBtX2dsb2JhbENvbnRleHQtPmdldENvbXBpbGVkUHJvZ3JhbShtX3Byb2dyYW0t
PnByb2dyYW1JbmZvKCkpOwogCiAgICAgLy8gRklYTUU6IFNoYXJpbmcgdGhlIG1lc2ggd291bGQg
anVzdCBzYXZlIHRoZSB0aW1lIG5lZWRlZCB0byB1cGxvYWQgaXQgdG8gdGhlIEdQVSwgc28gSSBh
c3N1bWUgd2UgY291bGQKICAgICAvLyBiZW5jaG1hcmsgdGhhdCBmb3IgcGVyZm9ybWFuY2UuCg==
</data>
<flag name="review"
          id="162987"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>