<?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>75936</bug_id>
          
          <creation_ts>2012-01-09 21:30:12 -0800</creation_ts>
          <short_desc>REGRESSION(r104507): Broke webkit_unit_tests (Requested by dimich on #webkit).</short_desc>
          <delta_ts>2012-01-10 11:32:52 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>
          
          <blocked>74203</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>danakj</cc>
    
    <cc>dimich</cc>
    
    <cc>jamesr</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>532802</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-09 21:30:12 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/104507 broke the build:
Broke webkit_unit_tests (Requested by dimich on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532803</commentid>
    <comment_count>1</comment_count>
      <attachid>121790</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-09 21:30:41 -0800</bug_when>
    <thetext>Created attachment 121790
ROLLOUT of r104507

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532804</commentid>
    <comment_count>2</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2012-01-09 21:31:20 -0800</bug_when>
    <thetext>The failure:

[ RUN      ] CCLayerTreeHostTestOpacityChange.runMultiThread
ASSERTION FAILED: it-&gt;opacity()
/b/build/slave/webkit-mac-latest-dbg/build/src/third_party/WebKit/Source/WebCore/WebCore.gyp/../platform/graphics/chromium/cc/CCLayerTreeHost.cpp(444) : void WebCore::CCLayerTreeHost::paintLayerContents(const LayerList &amp;, WebCore::CCLayerTreeHost::PaintType)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532807</commentid>
    <comment_count>3</comment_count>
      <attachid>121790</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-09 21:42:53 -0800</bug_when>
    <thetext>Comment on attachment 121790
ROLLOUT of r104507

Clearing flags on attachment: 121790

Committed r104538: &lt;http://trac.webkit.org/changeset/104538&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532808</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-09 21:42:57 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533149</commentid>
    <comment_count>5</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-10 09:44:37 -0800</bug_when>
    <thetext>This unit test doesn&apos;t fail for me locally. What am I missing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533237</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-10 11:32:52 -0800</bug_when>
    <thetext>It only failed on the bots in debug and the linux bot was broken at the time, so it may be platform-specific in some way (although that&apos;d be unfortunate). Can you try running in ASAN?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121790</attachid>
            <date>2012-01-09 21:30:41 -0800</date>
            <delta_ts>2012-01-09 21:42:53 -0800</delta_ts>
            <desc>ROLLOUT of r104507</desc>
            <filename>bug-75936-20120110053130.patch</filename>
            <type>text/plain</type>
            <size>48359</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0NTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2IzOGMyNzNlOWI2MTRl
MTYxYjJhZDNhZTUxZjUzNGEzYzgwM2E3OC4uNTE3NzVlNTc4NTc0OWYyNWNiMzljMTU1ZmY3NjE5
ZGNhN2I1M2M4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTAxLTA5ICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTA0NTA3LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8xMDQ1MDcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc1OTM2CisKKyAgICAgICAgQnJva2Ugd2Via2l0X3VuaXRfdGVzdHMgKFJlcXVl
c3RlZCBieSBkaW1pY2ggb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVt
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckl0ZXJh
dG9yLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVySXRlcmF0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVySXRlcmF0b3JQb3NpdGlvbi5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3YWxrTGF5ZXJzQW5kQ2FsY3VsYXRl
VmlzaWJsZUxheWVyUmVjdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyU3VyZmFjZS5oOgorCiAyMDEyLTAxLTA5ICBSb2IgQnVpcyAgPHJidWlzQHJp
bS5jb20+CiAKICAgICAgICAgVXBzdHJlYW0gY2hhbmdlIHRvIGRpc2FibGUgaW5wdXRbY29sb3Jd
IGNzcyBydWxlcyBmb3IgQmxhY2tCZXJyeSBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IGYwZTQyMDE1MTNhYjllNTVkMGU3NTJhZTA4MDg3ZTY1MDIyYmQyMGYuLjIyZTIxZTgxZWIy
MjcyMThlMTAwYmE1ZDA2NTdjN2FlYTcyYjhkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDEtMDkgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmll
dy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDQ1
MDcuCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEwNDUwNworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5MzYKKworICAg
ICAgICBCcm9rZSB3ZWJraXRfdW5pdF90ZXN0cyAoUmVxdWVzdGVkIGJ5IGRpbWljaCBvbiAjd2Vi
a2l0KS4KKworICAgICAgICAqIFdlYktpdC5neXBpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJJ
dGVyYXRvclRlc3QuY3BwOiBSZW1vdmVkLgorCiAyMDEyLTAxLTA5ICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJvbGwgQ2hyb21pdW0gREVQUyBmcm9tIDExNjQ1
OSB0byAxMTY5NzkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOGVhNWU2NzgwNDBmMDNmNGIwZWI2OWUz
NzkwOTdhODI2YWVmNWU5MC4uNjI5NTYwOGZmNDA0ZTk2YjlhZGRlZmQ5ZjU1NGMxMWE3N2EwZDIw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzYxOSw5ICszNjE5LDYgQEAKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgnLAot
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJdGVyYXRv
ci5jcHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJJdGVyYXRvci5oJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVySXRlcmF0b3JQb3NpdGlvbi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyUXVhZC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJRdWFkLmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJTb3J0ZXIuY3BwJywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VD
aHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVu
ZGVyU3VyZmFjZUNocm9taXVtLmgKaW5kZXggNGUxODIyYjMxOGM1ZTFkMjU3YTkwOGU0MmE0ZGMy
ODg0NmI1YjJhNi4uOTNlOGQ4NmM2NzE3MWMyNzdlYzE3NWM2MTlkYmU4ODBiNzJmNDE4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVy
U3VyZmFjZUNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgKQEAgLTk2LDExICs5Niw2IEBAIHByaXZh
dGU6CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV9vcmlnaW5UcmFuc2Zvcm07CiAgICAgSW50
UmVjdCBtX2NsaXBSZWN0OwogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBtX2xh
eWVyTGlzdDsKLQotICAgIC8vIEZvciBDQ0xheWVySXRlcmF0b3JBY3Rpb25zCi0gICAgaW50IG1f
dGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVySW5kZXhIaXN0b3J5OwotICAgIGludCBtX2N1cnJlbnRM
YXllckluZGV4SGlzdG9yeTsKLSAgICBmcmllbmQgc3RydWN0IENDTGF5ZXJJdGVyYXRvckFjdGlv
bnM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVySXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckl0ZXJhdG9yLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDc2N2ZmMGU3NjZjOTYzNDA2MzU3ZWRlZjI5YmM2ZDVhOTA4OTJm
OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySXRlcmF0b3IuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMTcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLQotI2luY2x1
ZGUgImNjL0NDTGF5ZXJJdGVyYXRvci5oIgotCi0jaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgot
I2luY2x1ZGUgIlJlbmRlclN1cmZhY2VDaHJvbWl1bS5oIgotI2luY2x1ZGUgImNjL0NDTGF5ZXJJ
bXBsLmgiCi0jaW5jbHVkZSAiY2MvQ0NSZW5kZXJTdXJmYWNlLmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3Vy
ZmFjZVR5cGU+Ci12b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkJhY2tUb0Zyb250OjpiZWdp
bihDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPiYg
cG9zKQotewotICAgIHBvcy50YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXJJbmRleCA9IDA7Ci0gICAg
cG9zLmN1cnJlbnRMYXllckluZGV4ID0gQ0NMYXllckl0ZXJhdG9yUG9zaXRpb25WYWx1ZTo6TGF5
ZXJJbmRleFJlcHJlc2VudGluZ1RhcmdldFJlbmRlclN1cmZhY2U7Ci0KLSAgICBtX2hpZ2hlc3RU
YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIgPSAwOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5
ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KLXZvaWQgQ0NMYXllckl0ZXJhdG9y
QWN0aW9uczo6QmFja1RvRnJvbnQ6OmVuZChDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxMYXllclR5
cGUsIFJlbmRlclN1cmZhY2VUeXBlPiYgcG9zKQotewotICAgIHBvcy50YXJnZXRSZW5kZXJTdXJm
YWNlTGF5ZXJJbmRleCA9IENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uVmFsdWU6OkludmFsaWRUYXJn
ZXRSZW5kZXJTdXJmYWNlTGF5ZXJJbmRleDsKLSAgICBwb3MuY3VycmVudExheWVySW5kZXggPSAw
OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJm
YWNlVHlwZT4KLXZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ6Om5leHQo
Q0NMYXllckl0ZXJhdG9yUG9zaXRpb248TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT4mIHBv
cykKLXsKLSAgICAvLyBJZiB0aGUgY3VycmVudCBsYXllciBoYXMgYSBSUywgbW92ZSB0byBpdHMg
bGF5ZXIgbGlzdC4gT3RoZXJ3aXNlLCB2aXNpdCB0aGUgbmV4dCBsYXllciBpbiB0aGUgY3VycmVu
dCBSUyBsYXllciBsaXN0LgotICAgIGlmIChwb3MuY3VycmVudExheWVyUmVwcmVzZW50c0NvbnRy
aWJ1dGluZ1JlbmRlclN1cmZhY2UoKSkgewotICAgICAgICAvLyBTYXZlIG91ciBwb3NpdGlvbiBp
biB0aGUgY2hpbGRMYXllciBsaXN0IGZvciB0aGUgUmVuZGVyU3VyZmFjZSwgdGhlbiBqdW1wIHRv
IHRoZSBuZXh0IFJlbmRlclN1cmZhY2UuIFNhdmUgd2hlcmUgd2UKLSAgICAgICAgLy8gY2FtZSBm
cm9tIGluIHRoZSBuZXh0IFJlbmRlclN1cmZhY2Ugc28gd2UgY2FuIGdldCBiYWNrIHRvIGl0Lgot
ICAgICAgICBwb3MudGFyZ2V0UmVuZGVyU3VyZmFjZSgpLT5tX2N1cnJlbnRMYXllckluZGV4SGlz
dG9yeSA9IHBvcy5jdXJyZW50TGF5ZXJJbmRleDsKLSAgICAgICAgaW50IHByZXZpb3VzVGFyZ2V0
UmVuZGVyU3VyZmFjZUxheWVyID0gcG9zLnRhcmdldFJlbmRlclN1cmZhY2VMYXllckluZGV4Owot
Ci0gICAgICAgIHBvcy50YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXJJbmRleCA9ICsrbV9oaWdoZXN0
VGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVyOwotICAgICAgICBwb3MuY3VycmVudExheWVySW5kZXgg
PSBDQ0xheWVySXRlcmF0b3JQb3NpdGlvblZhbHVlOjpMYXllckluZGV4UmVwcmVzZW50aW5nVGFy
Z2V0UmVuZGVyU3VyZmFjZTsKLQotICAgICAgICBwb3MudGFyZ2V0UmVuZGVyU3VyZmFjZSgpLT5t
X3RhcmdldFJlbmRlclN1cmZhY2VMYXllckluZGV4SGlzdG9yeSA9IHByZXZpb3VzVGFyZ2V0UmVu
ZGVyU3VyZmFjZUxheWVyOwotICAgIH0gZWxzZSB7Ci0gICAgICAgICsrcG9zLmN1cnJlbnRMYXll
ckluZGV4OwotCi0gICAgICAgIGludCB0YXJnZXRSZW5kZXJTdXJmYWNlTnVtQ2hpbGRyZW4gPSBw
b3MudGFyZ2V0UmVuZGVyU3VyZmFjZUNoaWxkcmVuKCkuc2l6ZSgpOwotICAgICAgICB3aGlsZSAo
cG9zLmN1cnJlbnRMYXllckluZGV4ID09IHRhcmdldFJlbmRlclN1cmZhY2VOdW1DaGlsZHJlbikg
ewotICAgICAgICAgICAgLy8gSnVtcCBiYWNrIHRvIHRoZSBwcmV2aW91cyBSZW5kZXJTdXJmYWNl
LCBhbmQgZ2V0IGJhY2sgdGhlIHBvc2l0aW9uIHdoZXJlIHdlIHdlcmUgaW4gdGhhdCBsaXN0LCBh
bmQgbW92ZSB0byB0aGUgbmV4dCBwb3NpdGlvbiB0aGVyZS4KLSAgICAgICAgICAgIGlmICghcG9z
LnRhcmdldFJlbmRlclN1cmZhY2VMYXllckluZGV4KSB7Ci0gICAgICAgICAgICAgICAgLy8gRW5k
IG9mIHRoZSBsaXN0Ci0gICAgICAgICAgICAgICAgcG9zLnRhcmdldFJlbmRlclN1cmZhY2VMYXll
ckluZGV4ID0gQ0NMYXllckl0ZXJhdG9yUG9zaXRpb25WYWx1ZTo6SW52YWxpZFRhcmdldFJlbmRl
clN1cmZhY2VMYXllckluZGV4OwotICAgICAgICAgICAgICAgIHBvcy5jdXJyZW50TGF5ZXJJbmRl
eCA9IDA7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgcG9zLnRhcmdldFJlbmRlclN1cmZhY2VMYXllckluZGV4ID0gcG9zLnRhcmdldFJlbmRlclN1
cmZhY2UoKS0+bV90YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXJJbmRleEhpc3Rvcnk7Ci0gICAgICAg
ICAgICBwb3MuY3VycmVudExheWVySW5kZXggPSBwb3MudGFyZ2V0UmVuZGVyU3VyZmFjZSgpLT5t
X2N1cnJlbnRMYXllckluZGV4SGlzdG9yeSArIDE7Ci0KLSAgICAgICAgICAgIHRhcmdldFJlbmRl
clN1cmZhY2VOdW1DaGlsZHJlbiA9IHBvcy50YXJnZXRSZW5kZXJTdXJmYWNlQ2hpbGRyZW4oKS5z
aXplKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBMYXllclR5
cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgotdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rp
b25zOjpGcm9udFRvQmFjazo6YmVnaW4oQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248TGF5ZXJUeXBl
LCBSZW5kZXJTdXJmYWNlVHlwZT4mIHBvcykKLXsKLSAgICBwb3MudGFyZ2V0UmVuZGVyU3VyZmFj
ZUxheWVySW5kZXggPSAwOwotICAgIHBvcy5jdXJyZW50TGF5ZXJJbmRleCA9IHBvcy50YXJnZXRS
ZW5kZXJTdXJmYWNlQ2hpbGRyZW4oKS5zaXplKCkgLSAxOwotICAgIGdvVG9IaWdoZXN0SW5TdWJ0
cmVlKHBvcyk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJl
bmRlclN1cmZhY2VUeXBlPgotdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFj
azo6ZW5kKENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5
cGU+JiBwb3MpCi17Ci0gICAgcG9zLnRhcmdldFJlbmRlclN1cmZhY2VMYXllckluZGV4ID0gQ0NM
YXllckl0ZXJhdG9yUG9zaXRpb25WYWx1ZTo6SW52YWxpZFRhcmdldFJlbmRlclN1cmZhY2VMYXll
ckluZGV4OwotICAgIHBvcy5jdXJyZW50TGF5ZXJJbmRleCA9IDA7Ci19Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgotdm9pZCBDQ0xh
eWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjazo6bmV4dChDQ0xheWVySXRlcmF0b3JQb3Np
dGlvbjxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPiYgcG9zKQotewotICAgIC8vIE1vdmVz
IHRvIHRoZSBwcmV2aW91cyBsYXllciBpbiB0aGUgY3VycmVudCBSUyBsYXllciBsaXN0LiBUaGVu
IHdlIGNoZWNrIGlmIHRoZQotICAgIC8vIG5ldyBjdXJyZW50IGxheWVyIGhhcyBpdHMgb3duIFJT
LCBpbiB3aGljaCBjYXNlIHRoZXJlIGFyZSB0aGluZ3MgaW4gdGhhdCBSUyBsYXllciBsaXN0IHRo
YXQgYXJlIGhpZ2hlciwgc28KLSAgICAvLyB3ZSBmaW5kIHRoZSBoaWdoZXN0IGxheWVyIGluIHRo
YXQgc3VidHJlZS4KLSAgICAvLyBJZiB3ZSBtb3ZlIGJhY2sgcGFzdCB0aGUgZnJvbnQgb2YgdGhl
IGxpc3QsIHdlIGp1bXAgdXAgdG8gdGhlIHByZXZpb3VzIFJTIGxheWVyIGxpc3QsIHBpY2tpbmcg
dXAgYWdhaW4gd2hlcmUgd2UKLSAgICAvLyBoYWQgcHJldmlvdXNseSByZWN1cnNlZCBpbnRvIHRo
ZSBjdXJyZW50IFJTIGxheWVyIGxpc3QuCi0KLSAgICBpZiAoIXBvcy5jdXJyZW50TGF5ZXJSZXBy
ZXNlbnRzVGFyZ2V0UmVuZGVyU3VyZmFjZSgpKSB7Ci0gICAgICAgIC8vIFN1YnRyYWN0aW5nIG9u
ZSBoZXJlIHdpbGwgZXZlbnR1YWxseSBjYXVzZSB0aGUgY3VycmVudCBsYXllciB0byBiZWNvbWUg
dGhhdCBsYXllcgotICAgICAgICAvLyByZXByZXNlbnRpbmcgdGhlIHRhcmdldCByZW5kZXIgc3Vy
ZmFjZS4KLSAgICAgICAgLS1wb3MuY3VycmVudExheWVySW5kZXg7Ci0gICAgICAgIGdvVG9IaWdo
ZXN0SW5TdWJ0cmVlKHBvcyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgd2hpbGUgKHBvcy5jdXJy
ZW50TGF5ZXJSZXByZXNlbnRzVGFyZ2V0UmVuZGVyU3VyZmFjZSgpKSB7Ci0gICAgICAgICAgICBp
ZiAoIXBvcy50YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXJJbmRleCkgewotICAgICAgICAgICAgICAg
IC8vIEVuZCBvZiB0aGUgbGlzdAotICAgICAgICAgICAgICAgIHBvcy50YXJnZXRSZW5kZXJTdXJm
YWNlTGF5ZXJJbmRleCA9IENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uVmFsdWU6OkludmFsaWRUYXJn
ZXRSZW5kZXJTdXJmYWNlTGF5ZXJJbmRleDsKLSAgICAgICAgICAgICAgICBwb3MuY3VycmVudExh
eWVySW5kZXggPSAwOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHBvcy50YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXJJbmRleCA9IHBvcy50YXJnZXRS
ZW5kZXJTdXJmYWNlKCktPm1fdGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVySW5kZXhIaXN0b3J5Owot
ICAgICAgICAgICAgcG9zLmN1cnJlbnRMYXllckluZGV4ID0gcG9zLnRhcmdldFJlbmRlclN1cmZh
Y2UoKS0+bV9jdXJyZW50TGF5ZXJJbmRleEhpc3Rvcnk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBl
Pgotdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjazo6Z29Ub0hpZ2hlc3RJ
blN1YnRyZWUoQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNl
VHlwZT4mIHBvcykKLXsKLSAgICBpZiAocG9zLmN1cnJlbnRMYXllclJlcHJlc2VudHNUYXJnZXRS
ZW5kZXJTdXJmYWNlKCkpCi0gICAgICAgIHJldHVybjsKLSAgICB3aGlsZSAocG9zLmN1cnJlbnRM
YXllclJlcHJlc2VudHNDb250cmlidXRpbmdSZW5kZXJTdXJmYWNlKCkpIHsKLSAgICAgICAgLy8g
U2F2ZSB3aGVyZSB3ZSB3ZXJlIGluIHRoZSBjdXJyZW50IHRhcmdldCBzdXJmYWNlLCBtb3ZlIHRv
IHRoZSBuZXh0IG9uZSwgYW5kIHNhdmUgdGhlIHRhcmdldCBzdXJmYWNlIHRoYXQgd2UKLSAgICAg
ICAgLy8gY2FtZSBmcm9tIHRoZXJlIHNvIHdlIGNhbiBnbyBiYWNrIHRvIGl0LgotICAgICAgICBw
b3MudGFyZ2V0UmVuZGVyU3VyZmFjZSgpLT5tX2N1cnJlbnRMYXllckluZGV4SGlzdG9yeSA9IHBv
cy5jdXJyZW50TGF5ZXJJbmRleDsKLSAgICAgICAgaW50IHByZXZpb3VzVGFyZ2V0UmVuZGVyU3Vy
ZmFjZUxheWVyID0gcG9zLnRhcmdldFJlbmRlclN1cmZhY2VMYXllckluZGV4OwotCi0gICAgICAg
IGZvciAoTGF5ZXJUeXBlKiBsYXllciA9IHBvcy5jdXJyZW50TGF5ZXIoKTsgcG9zLnRhcmdldFJl
bmRlclN1cmZhY2VMYXllcigpICE9IGxheWVyOyArK3Bvcy50YXJnZXRSZW5kZXJTdXJmYWNlTGF5
ZXJJbmRleCkgeyB9Ci0gICAgICAgIHBvcy5jdXJyZW50TGF5ZXJJbmRleCA9IHBvcy50YXJnZXRS
ZW5kZXJTdXJmYWNlQ2hpbGRyZW4oKS5zaXplKCkgLSAxOwotCi0gICAgICAgIHBvcy50YXJnZXRS
ZW5kZXJTdXJmYWNlKCktPm1fdGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVySW5kZXhIaXN0b3J5ID0g
cHJldmlvdXNUYXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXI7Ci0gICAgfQotfQotCi0vLyBEZWNsYXJl
IGVhY2ggb2YgdGhlIGFib3ZlIGZ1bmN0aW9ucyBmb3IgTGF5ZXJDaHJvbWl1bSBhbmQgQ0NMYXll
ckltcGwgY2xhc3NlcyBzbyB0aGF0IHRoZXkgYXJlIGxpbmtlZC4KLXRlbXBsYXRlIHZvaWQgQ0NM
YXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ6OmJlZ2luKENDTGF5ZXJJdGVyYXRvclBv
c2l0aW9uPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT4mKTsKLXRlbXBsYXRl
IHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ6OmVuZChDQ0xheWVySXRl
cmF0b3JQb3NpdGlvbjxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+Jik7Ci10
ZW1wbGF0ZSB2b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkJhY2tUb0Zyb250OjpuZXh0KEND
TGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1
bT4mKTsKLQotdGVtcGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9u
dDo6YmVnaW4oQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248Q0NMYXllckltcGwsIENDUmVuZGVyU3Vy
ZmFjZT4mKTsKLXRlbXBsYXRlIHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJv
bnQ6OmVuZChDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJm
YWNlPiYpOwotdGVtcGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9u
dDo6bmV4dChDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJm
YWNlPiYpOwotCi10ZW1wbGF0ZSB2b2lkIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9C
YWNrOjpuZXh0KENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVyQ2hyb21pdW0sIFJlbmRlclN1
cmZhY2VDaHJvbWl1bT4mKTsKLXRlbXBsYXRlIHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6
RnJvbnRUb0JhY2s6OmVuZChDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxMYXllckNocm9taXVtLCBS
ZW5kZXJTdXJmYWNlQ2hyb21pdW0+Jik7Ci10ZW1wbGF0ZSB2b2lkIENDTGF5ZXJJdGVyYXRvckFj
dGlvbnM6OkZyb250VG9CYWNrOjpiZWdpbihDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxMYXllckNo
cm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+Jik7Ci10ZW1wbGF0ZSB2b2lkIENDTGF5ZXJJ
dGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNrOjpnb1RvSGlnaGVzdEluU3VidHJlZShDQ0xheWVy
SXRlcmF0b3JQb3NpdGlvbjxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+Jik7
Ci0KLXRlbXBsYXRlIHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s6Om5l
eHQoQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT4m
KTsKLXRlbXBsYXRlIHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s6OmVu
ZChDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPiYp
OwotdGVtcGxhdGUgdm9pZCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjazo6YmVn
aW4oQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT4m
KTsKLXRlbXBsYXRlIHZvaWQgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s6Omdv
VG9IaWdoZXN0SW5TdWJ0cmVlKENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPENDTGF5ZXJJbXBsLCBD
Q1JlbmRlclN1cmZhY2U+Jik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJdGVyYXRvci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckl0ZXJhdG9yLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmNDEyYzQ0ZDNkMTQwNDcwZmQxMmE3Mjdi
OTE0ZTRkNDZmYmViMTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckl0ZXJhdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNjIgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
LSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBDQ0xheWVySXRlcmF0b3JfaAotI2RlZmluZSBDQ0xheWVySXRlcmF0b3JfaAot
Ci0jaW5jbHVkZSAiY2MvQ0NMYXllckl0ZXJhdG9yUG9zaXRpb24uaCIKLQotI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBUaGVzZSBjbGFzc2VzIHByb3Zp
ZGUgbWVhbnMgdG8gaXRlcmF0ZSBvdmVyIHRoZSBSZW5kZXJTdXJmYWNlLUxheWVyIHRyZWUuCi0K
LS8vIEV4YW1wbGUgY29kZSBmb2xsb3dzLCBmb3IgYSB0cmVlIG9mIExheWVyQ2hyb21pdW0vUmVu
ZGVyU3VyZmFjZUNocm9taXVtIG9iamVjdHMuIFNlZSBiZWxvdyBmb3IgZGV0YWlscy4KLS8vCi0v
LyB2b2lkIGRvU3R1ZmZPbkxheWVycyhjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+
ID4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QpCi0vLyB7Ci0vLyAgICAgdHlwZWRlZiBDQ0xheWVy
SXRlcmF0b3I8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCBDQ0xheWVySXRl
cmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjaz4gQ0NMYXllckl0ZXJhdG9yVHlwZTsKLS8vCi0vLyAg
ICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBlbmQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjplbmQoJnJl
bmRlclN1cmZhY2VMYXllckxpc3QpOwotLy8gICAgIGZvciAoQ0NMYXllckl0ZXJhdG9yVHlwZSBp
dCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJlZ2luKCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsg
aXQgIT0gZW5kOyArK2l0KSB7Ci0vLyAgICAgICAgIC8vIE9ubHkgb25lIG9mIHRoZXNlIHdpbGwg
YmUgdHJ1ZQotLy8gICAgICAgICBpZiAoaXQucmVwcmVzZW50c1RhcmdldFJlbmRlclN1cmZhY2Uo
KSkKLS8vICAgICAgICAgICAgIGZvbygqaXQpOyAvLyAqaXQgaXMgYSBsYXllciByZXByZXNlbnRp
bmcgYSB0YXJnZXQgUmVuZGVyU3VyZmFjZQotLy8gICAgICAgICBpZiAoaXQucmVwcmVzZW50c0Nv
bnRyaWJ1dGluZ1JlbmRlclN1cmZhY2UoKSkKLS8vICAgICAgICAgICAgIGJhcigqaXQpOyAvLyAq
aXQgaXMgYSBsYXllciByZXByZXNlbnRpbmcgYSBSZW5kZXJTdXJmYWNlIHRoYXQgY29udHJpYnV0
ZXMgdG8gdGhlIGxheWVyJ3MgdGFyZ2V0IFJlbmRlclN1cmZhY2UKLS8vICAgICAgICAgaWYgKGl0
LnJlcHJlc2VudHNJdHNlbGYoKSkKLS8vICAgICAgICAgICAgIGJheigqaXQpOyAvLyAqaXQgaXMg
YSBsYXllciByZXByZXNlbnRpbmcgaXRzZWxmLCBhcyBpdCBjb250cmlidXRlcyB0byBpdHMgb3du
IHRhcmdldCBSZW5kZXJTdXJmYWNlCi0vLyAgICAgfQotLy8gfQotCi0vLyBBIFJlbmRlclN1cmZh
Y2UgUiBtYXkgYmUgcmVmZXJyZWQgdG8gaW4gb25lIG9mIHR3byBkaWZmZXJlbnQgY29udGV4dHMu
IE9uZSBSZW5kZXJTdXJmYWNlIGlzICJjdXJyZW50IiBhdCBhbnkgdGltZSwgZm9yCi0vLyB3aGF0
ZXZlciBvcGVyYXRpb24gaXMgYmVpbmcgcGVyZm9ybWVkLiBUaGlzIGN1cnJlbnQgc3VyZmFjZSBp
cyByZWZlcnJlZCB0byBhcyBhIHRhcmdldCBzdXJmYWNlLiBGb3IgZXhhbXBsZSwgd2hlbiBSIGlz
Ci0vLyBiZWluZyBwYWludGVkIGl0IHdvdWxkIGJlIHRoZSB0YXJnZXQgc3VyZmFjZS4gT25jZSBS
IGhhcyBiZWVuIHBhaW50ZWQsIGl0cyBjb250ZW50cyBtYXkgYmUgaW5jbHVkZWQgaW50byBhbm90
aGVyCi0vLyBzdXJmYWNlIFMuIFdoaWxlIFMgaXMgY29uc2lkZXJlZCB0aGUgdGFyZ2V0IHN1cmZh
Y2Ugd2hlbiBpdCBpcyBiZWluZyBwYWludGVkLCBSIGlzIGNhbGxlZCBhIGNvbnRyaWJ1dGluZyBz
dXJmYWNlCi0vLyBpbiB0aGlzIGNvbnRleHQgYXMgaXQgY29udHJpYnV0ZXMgdG8gdGhlIGNvbnRl
bnQgb2YgdGhlIHRhcmdldCBzdXJmYWNlIFMuCi0vLwotLy8gVGhlIGl0ZXJhdG9yJ3MgY3VycmVu
dCBwb3NpdGlvbiBpbiB0aGUgdHJlZSBhbHdheXMgcG9pbnRzIHRvIHNvbWUgbGF5ZXIuIFRoZSBz
dGF0ZSBvZiB0aGUgaXRlcmF0b3IgaW5kaWNhdGVzIHRoZSByb2xlIG9mIHRoZQotLy8gbGF5ZXIs
IGFuZCB3aWxsIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHRocmVlIHN0YXRlcy4gQSBzaW5nbGUg
bGF5ZXIgTCB3aWxsIGFwcGVhciBpbiB0aGUgaXRlcmF0aW9uIHByb2Nlc3MgaW4gYXQgbGVhc3Qg
b25lLAotLy8gYW5kIHBvc3NpYmx5IGFsbCwgb2YgdGhlc2Ugc3RhdGVzLgotLy8gMS4gUmVwcmVz
ZW50aW5nIHRoZSB0YXJnZXQgc3VyZmFjZTogVGhlIGl0ZXJhdG9yIGluIHRoaXMgc3RhdGUsIHBv
aW50aW5nIGF0IGxheWVyIEwsIGluZGljYXRlcyB0aGF0IHRoZSB0YXJnZXQgUmVuZGVyU3VyZmFj
ZQotLy8gaXMgbm93IHRoZSBzdXJmYWNlIG93bmVkIGJ5IEwuIFRoaXMgd2lsbCBvY2N1ciBleGFj
dGx5IG9uY2UgZm9yIGVhY2ggUmVuZGVyU3VyZmFjZSBpbiB0aGUgdHJlZS4KLS8vIDIuIFJlcHJl
c2VudGluZyBhIGNvbnRyaWJ1dGluZyBzdXJmYWNlOiBUaGUgaXRlcmF0b3IgaW4gdGhpcyBzdGF0
ZSwgcG9pbnRpbmcgYXQgbGF5ZXIgTCwgcmVmZXJzIHRvIHRoZSBSZW5kZXJTdXJmYWNlIG93bmVk
Ci0vLyBieSBMIGFzIGEgY29udHJpYnV0aW5nIHN1cmZhY2UsIHdpdGhvdXQgY2hhbmdpbmcgdGhl
IGN1cnJlbnQgdGFyZ2V0IFJlbmRlclN1cmZhY2UuCi0vLyAzLiBSZXByZXNlbnRpbmcgaXRzZWxm
OiBUaGUgaXRlcmF0b3IgaW4gdGhpcyBzdGF0ZSwgcG9pbnRpbmcgYXQgbGF5ZXIgTCwgcmVmZXJz
IHRvIHRoZSBsYXllciBpdHNlbGYsIGFzIGEgY2hpbGQgb2YgdGhlCi0vLyBjdXJyZW50IHRhcmdl
dCBSZW5kZXJTdXJmYWNlLgotLy8KLS8vIFRoZSBCYWNrVG9Gcm9udCBpdGVyYXRvciB3aWxsIHJl
dHVybiBhIGxheWVyIHJlcHJlc2VudGluZyB0aGUgdGFyZ2V0IHN1cmZhY2UgYmVmb3JlIHJldHVy
bmluZyBsYXllcnMgcmVwcmVzZW50aW5nIHRoZW1zZWx2ZXMKLS8vIGFzIGNoaWxkcmVuIG9mIHRo
ZSBjdXJyZW50IHRhcmdldCBzdXJmYWNlLiBXaGVyZWFzIHRoZSBGcm9udFRvQmFjayBvcmRlcmlu
ZyB3aWxsIGl0ZXJhdGUgb3ZlciBjaGlsZHJlbiBsYXllcnMgb2YgYSBzdXJmYWNlCi0vLyBiZWZv
cmUgdGhlIGxheWVyIHJlcHJlc2VudGluZyB0aGUgc3VyZmFjZSBhcyBhIHRhcmdldCBzdXJmYWNl
LgotLy8KLS8vIFRvIHVzZSB0aGUgaXRlcmF0b3JzOgotLy8KLS8vIENyZWF0ZSBhIHN0ZXBwaW5n
IGl0ZXJhdG9yIGFuZCBlbmQgaXRlcmF0b3IgYnkgY2FsbGluZyBDQ0xheWVySXRlcmF0b3I6OmJl
Z2luKCkgYW5kIENDTGF5ZXJJdGVyYXRvcjo6ZW5kKCkgYW5kIHBhc3NpbmcgaW4gdGhlCi0vLyBs
aXN0IG9mIGxheWVycyBvd25pbmcgdGFyZ2V0IFJlbmRlclN1cmZhY2VzLiBTdGVwIHRocm91Z2gg
dGhlIHRyZWUgYnkgaW5jcmVtZW50aW5nIHRoZSBzdGVwcGluZyBpdGVyYXRvciB3aGlsZSBpdCBp
cyAhPSB0bwotLy8gdGhlIGVuZCBpdGVyYXRvci4gQXQgZWFjaCBzdGVwIHRoZSBpdGVyYXRvciBr
bm93cyB3aGF0IHRoZSBsYXllciBpcyByZXByZXNlbnRpbmcsIGFuZCB5b3UgY2FuIHF1ZXJ5IHRo
ZSBpdGVyYXRvciB0byBkZWNpZGUKLS8vIHdoYXQgYWN0aW9ucyB0byBwZXJmb3JtIHdpdGggdGhl
IGxheWVyIGdpdmVuIHdoYXQgaXQgcmVwcmVzZW50cy4KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0v
LyBBbiBpdGVyYXRvciBjbGFzcyBmb3Igd2Fsa2luZyBvdmVyIGxheWVycyBpbiB0aGUgUmVuZGVy
U3VyZmFjZS1MYXllciB0cmVlLgotdGVtcGxhdGUgPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5h
bWUgUmVuZGVyU3VyZmFjZVR5cGUsIHR5cGVuYW1lIEl0ZXJhdG9yQWN0aW9uVHlwZT4KLWNsYXNz
IENDTGF5ZXJJdGVyYXRvciB7Ci0gICAgdHlwZWRlZiBDQ0xheWVySXRlcmF0b3I8TGF5ZXJUeXBl
LCBSZW5kZXJTdXJmYWNlVHlwZSwgSXRlcmF0b3JBY3Rpb25UeXBlPiBDQ0xheWVySXRlcmF0b3JU
eXBlOwotCi1wdWJsaWM6Ci0gICAgQ0NMYXllckl0ZXJhdG9yKCkgeyB9Ci0KLSAgICBzdGF0aWMg
Q0NMYXllckl0ZXJhdG9yVHlwZSBiZWdpbihjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyVHlwZT4g
PiogcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkgeyByZXR1cm4gQ0NMYXllckl0ZXJhdG9yVHlwZShy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCB0cnVlKTsgfQotICAgIHN0YXRpYyBDQ0xheWVySXRlcmF0
b3JUeXBlIGVuZChjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyVHlwZT4gPiogcmVuZGVyU3VyZmFj
ZUxheWVyTGlzdCkgeyByZXR1cm4gQ0NMYXllckl0ZXJhdG9yVHlwZShyZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0LCBmYWxzZSk7IH0KLQotICAgIENDTGF5ZXJJdGVyYXRvclR5cGUmIG9wZXJhdG9yKyso
KSB7IEFTU0VSVChtX2FjdGlvbnMpOyBtX2FjdGlvbnMtPm5leHQobV9wb3NpdGlvbik7IHJldHVy
biAqdGhpczsgfQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDQ0xheWVySXRlcmF0b3JUeXBl
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbiA9PSBvdGhlci5tX3Bvc2l0aW9uOyB9
Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENDTGF5ZXJJdGVyYXRvclR5cGUmIG90aGVyKSBj
b25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQotCi0gICAgTGF5ZXJUeXBlKiBvcGVy
YXRvci0+KCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbi5jdXJyZW50TGF5ZXIoKTsgfQotICAg
IExheWVyVHlwZSogb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbi5jdXJyZW50
TGF5ZXIoKTsgfQotCi0gICAgYm9vbCByZXByZXNlbnRzVGFyZ2V0UmVuZGVyU3VyZmFjZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcG9zaXRpb24uY3VycmVudExheWVyUmVwcmVzZW50c1RhcmdldFJlbmRl
clN1cmZhY2UoKTsgfQotICAgIGJvb2wgcmVwcmVzZW50c0NvbnRyaWJ1dGluZ1JlbmRlclN1cmZh
Y2UoKSBjb25zdCB7IHJldHVybiAhcmVwcmVzZW50c1RhcmdldFJlbmRlclN1cmZhY2UoKSAmJiBt
X3Bvc2l0aW9uLmN1cnJlbnRMYXllclJlcHJlc2VudHNDb250cmlidXRpbmdSZW5kZXJTdXJmYWNl
KCk7IH0KLSAgICBib29sIHJlcHJlc2VudHNJdHNlbGYoKSBjb25zdCB7IHJldHVybiAhcmVwcmVz
ZW50c1RhcmdldFJlbmRlclN1cmZhY2UoKSAmJiAhcmVwcmVzZW50c0NvbnRyaWJ1dGluZ1JlbmRl
clN1cmZhY2UoKTsgfQotCi0gICAgTGF5ZXJUeXBlKiB0YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIo
KSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uLnRhcmdldFJlbmRlclN1cmZhY2VMYXllcigpOyB9
Ci0KLXByaXZhdGU6Ci0gICAgQ0NMYXllckl0ZXJhdG9yKGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5
ZXJUeXBlPiA+KiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBib29sIHN0YXJ0KQotICAgICAgICA6
IG1fcG9zaXRpb24ocmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKLSAgICAgICAgLCBtX2FjdGlvbnMo
YWRvcHRQdHIobmV3IEl0ZXJhdG9yQWN0aW9uVHlwZSgpKSkKLSAgICB7Ci0gICAgICAgIGlmIChz
dGFydCAmJiAhcmVuZGVyU3VyZmFjZUxheWVyTGlzdC0+aXNFbXB0eSgpKQotICAgICAgICAgICAg
bV9hY3Rpb25zLT5iZWdpbihtX3Bvc2l0aW9uKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
bV9hY3Rpb25zLT5lbmQobV9wb3NpdGlvbik7Ci0gICAgfQotCi0gICAgQ0NMYXllckl0ZXJhdG9y
UG9zaXRpb248TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT4gbV9wb3NpdGlvbjsKLSAgICBP
d25QdHI8SXRlcmF0b3JBY3Rpb25UeXBlPiBtX2FjdGlvbnM7Ci19OwotCi0vLyBPcmRlcmluZ3Mg
Zm9yIGl0ZXJhdGluZyBvdmVyIHRoZSBSZW5kZXJTdXJmYWNlLUxheWVyIHRyZWUuCi1zdHJ1Y3Qg
Q0NMYXllckl0ZXJhdG9yQWN0aW9ucyB7Ci0gICAgLy8gV2Fsa3MgbGF5ZXJzIHNvcnRlZCBieSB6
LW9yZGVyIGZyb20gYmFjayB0byBmcm9udC4KLSAgICBjbGFzcyBCYWNrVG9Gcm9udCB7Ci0gICAg
cHVibGljOgotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBS
ZW5kZXJTdXJmYWNlVHlwZT4KLSAgICAgICAgdm9pZCBiZWdpbihDQ0xheWVySXRlcmF0b3JQb3Np
dGlvbjxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPiYpOwotCi0gICAgICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgotICAgICAg
ICB2b2lkIGVuZChDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxMYXllclR5cGUsIFJlbmRlclN1cmZh
Y2VUeXBlPiYpOwotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVu
YW1lIFJlbmRlclN1cmZhY2VUeXBlPgotICAgICAgICB2b2lkIG5leHQoQ0NMYXllckl0ZXJhdG9y
UG9zaXRpb248TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT4mKTsKLQotICAgIHByaXZhdGU6
Ci0gICAgICAgIGludCBtX2hpZ2hlc3RUYXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXI7Ci0gICAgfTsK
LQotICAgIC8vIFdhbGtzIGxheWVycyBzb3J0ZWQgYnkgei1vcmRlciBmcm9tIGZyb250IHRvIGJh
Y2sKLSAgICBjbGFzcyBGcm9udFRvQmFjayB7Ci0gICAgcHVibGljOgotICAgICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KLSAgICAg
ICAgdm9pZCBiZWdpbihDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxMYXllclR5cGUsIFJlbmRlclN1
cmZhY2VUeXBlPiYpOwotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBMYXllclR5cGUsIHR5
cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgotICAgICAgICB2b2lkIGVuZChDQ0xheWVySXRlcmF0
b3JQb3NpdGlvbjxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPiYpOwotCi0gICAgICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgot
ICAgICAgICB2b2lkIG5leHQoQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248TGF5ZXJUeXBlLCBSZW5k
ZXJTdXJmYWNlVHlwZT4mKTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgotICAgICAgICB2b2lk
IGdvVG9IaWdoZXN0SW5TdWJ0cmVlKENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVyVHlwZSwg
UmVuZGVyU3VyZmFjZVR5cGU+Jik7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVySXRlcmF0b3JQb3NpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckl0ZXJhdG9yUG9zaXRpb24uaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjFmNjNjNDVmNzQyYzAzYzYwZGVmOWIyMTcz
ODQwYWZiODZjMzI2My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SXRlcmF0b3JQb3NpdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBDQ0xheWVySXRlcmF0b3JQb3NpdGlvbl9oCi0jZGVmaW5lIENDTGF5
ZXJJdGVyYXRvclBvc2l0aW9uX2gKLQotI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1v
bi5oIgotCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBOb24tdGVtcGxhdGVkIGNvbnN0YW50cwotc3Ry
dWN0IENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uVmFsdWUgewotICAgIHN0YXRpYyBjb25zdCBpbnQg
SW52YWxpZFRhcmdldFJlbmRlclN1cmZhY2VMYXllckluZGV4ID0gLTE7Ci0gICAgLy8gVGhpcyBt
dXN0IGJlIC0xIHNpbmNlIHRoZSBpdGVyYXRvciBhY3Rpb24gY29kZSBhc3N1bWVzIHRoYXQgdGhp
cyB2YWx1ZSBjYW4gYmUKLSAgICAvLyByZWFjaGVkIGJ5IHN1YnRyYWN0aW5nIG9uZSBmcm9tIHRo
ZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3QgbGF5ZXIgaW4gdGhlIGN1cnJlbnQKLSAgICAvLyB0YXJn
ZXQgc3VyZmFjZSdzIGNoaWxkIGxheWVyIGxpc3QsIHdoaWNoIGlzIDAuCi0gICAgc3RhdGljIGNv
bnN0IGludCBMYXllckluZGV4UmVwcmVzZW50aW5nVGFyZ2V0UmVuZGVyU3VyZmFjZSA9IC0xOwot
fTsKLQotLy8gQSBzdHJ1Y3QgdG8gaG9sZCB0aGUgaXRlcmF0b3IncyBjdXJyZW50IHBvc2l0aW9u
LCB3aGljaCBpcyBwYXNzZWQgdG8gdGhlIHZhcmlvdXMgQ0NMYXllckl0ZXJhdG9yQWN0aW9uIGZ1
bmN0aW9ucywgZm9yIHRoZW0gdG8KLS8vIHJlYWQgYW5kIHVwZGF0ZS4gVGhpcyBzdHJ1Y3QgZXhp
c3RzIHNvIHRoZSB0ZW1wbGF0ZWQgYWN0aW9uIGZ1bmN0aW9ucyBkb24ndCBuZWVkIHRvIGFjY2Vz
cyB0aGUgQ0NMYXllckl0ZXJhdG9yIGNsYXNzLgotLy8KLS8vIFRoZXJlIGlzIGEgMToxIHJlbGF0
aW9uc2hpcCBiZXR3ZWVuIGFuIGluc3RhbmNlIG9mIHRoZSBDQ0xheWVySXRlcmF0b3JQb3NpdGlv
biBjbGFzcyBhbmQgYSBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGb28gY2xhc3MsCi0vLyBzbyBh
biBpdGVyYXRvciBhY3Rpb24gY2xhc3MgY2FuIGhvbGQgZXh0cmEgcG9zaXRpb24gZGF0YSwgaWYg
cmVxdWlyZWQsIGluIGl0cyBvd24gY2xhc3MgaW5zdGFuY2UuCi0vLwotLy8gVGhlIGN1cnJlbnQg
cG9zaXRpb24gb2YgdGhlIGl0ZXJhdG9yIGlzIGhlbGQgaW4gdHdvIGludGVnZXIgdmFyaWFibGVz
LgotLy8gLSBUaGUgdGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVySW5kZXggaXMgYSBwb3NpdGlvbiBp
biB0aGUgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC4gVGhpcyBwb2ludHMgdG8gYSBsYXllciB3aGlj
aCBvd25zIHRoZSBjdXJyZW50Ci0vLyB0YXJnZXQgc3VyZmFjZS4gVGhpcyBpcyBhIHZhbHVlIGZy
b20gMCB0byBuLTEgKG4gPSBzaXplIG9mIHJlbmRlclN1cmZhY2VMYXllckxpc3QgPSBudW1iZXIg
b2Ygc3VyZmFjZXMpLiBBIHZhbHVlIG91dHNpZGUgb2YKLS8vIHRoaXMgcmFuZ2UgKGZvciBleGFt
cGxlLCBDQ0xheWVySXRlcmF0b3JQb3NpdGlvblZhbHVlOjpJbnZhbGlkVGFyZ2V0UmVuZGVyU3Vy
ZmFjZUxheWVySW5kZXgpIGlzIHVzZWQgdG8gaW5kaWNhdGUgYSBwb3NpdGlvbgotLy8gb3V0c2lk
ZSB0aGUgYm91bmRzIG9mIHRoZSB0cmVlLgotLy8gLSBUaGUgY3VycmVudExheWVySW5kZXggaXMg
YSBwb3NpdGlvbiBpbiB0aGUgbGlzdCBvZiBsYXllcnMgdGhhdCBhcmUgY2hpbGRyZW4gb2YgdGhl
IGN1cnJlbnQgdGFyZ2V0IHN1cmZhY2UuIFdoZW4gcG9pbnRpbmcgdG8KLS8vIG9uZSBvZiB0aGVz
ZSBsYXllcnMsIHRoaXMgaXMgYSB2YWx1ZSBmcm9tIDAgdG8gbi0xIChuID0gbnVtYmVyIG9mIGNo
aWxkcmVuKS4gU2luY2UgdGhlIGl0ZXJhdG9yIG11c3QgYWxzbyBzdG9wIGF0IHRoZSBsYXllcnMK
LS8vIHJlcHJlc2VudGluZyB0aGUgdGFyZ2V0IHN1cmZhY2UsIHRoaXMgaXMgZG9uZSBieSBzZXR0
aW5nIHRoZSBjdXJyZW50TGF5ZXJJbmRleCB0byBhIHZhbHVlIG9mCi0vLyBDQ0xheWVySXRlcmF0
b3JQb3NpdGlvblZhbHVlOjpMYXllclJlcHJlc2VudGluZ1RhcmdldFJlbmRlclN1cmZhY2UuCi10
ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgot
c3RydWN0IENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uIHsKLSAgICBDQ0xheWVySXRlcmF0b3JQb3Np
dGlvbigpIDogcmVuZGVyU3VyZmFjZUxheWVyTGlzdCgwKSB7IH0KLSAgICBleHBsaWNpdCBDQ0xh
eWVySXRlcmF0b3JQb3NpdGlvbihjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyVHlwZT4gPiogcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdCkgOiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KHJlbmRlclN1cmZh
Y2VMYXllckxpc3QpIHsgfQotCi0gICAgaW5saW5lIExheWVyVHlwZSogY3VycmVudExheWVyKCkg
Y29uc3QgeyByZXR1cm4gY3VycmVudExheWVyUmVwcmVzZW50c1RhcmdldFJlbmRlclN1cmZhY2Uo
KSA/IHRhcmdldFJlbmRlclN1cmZhY2VMYXllcigpIDogdGFyZ2V0UmVuZGVyU3VyZmFjZUNoaWxk
cmVuKClbY3VycmVudExheWVySW5kZXhdLmdldCgpOyB9Ci0KLSAgICBpbmxpbmUgYm9vbCBjdXJy
ZW50TGF5ZXJSZXByZXNlbnRzQ29udHJpYnV0aW5nUmVuZGVyU3VyZmFjZSgpIGNvbnN0IHsgcmV0
dXJuIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6cmVuZGVyU3VyZmFjZUNvbnRyaWJ1dGVzVG9UYXJn
ZXQ8TGF5ZXJUeXBlPihjdXJyZW50TGF5ZXIoKSwgdGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVyKCkt
PmlkKCkpOyB9Ci0gICAgaW5saW5lIGJvb2wgY3VycmVudExheWVyUmVwcmVzZW50c1RhcmdldFJl
bmRlclN1cmZhY2UoKSBjb25zdCB7IHJldHVybiBjdXJyZW50TGF5ZXJJbmRleCA9PSBDQ0xheWVy
SXRlcmF0b3JQb3NpdGlvblZhbHVlOjpMYXllckluZGV4UmVwcmVzZW50aW5nVGFyZ2V0UmVuZGVy
U3VyZmFjZTsgfQotCi0gICAgaW5saW5lIExheWVyVHlwZSogdGFyZ2V0UmVuZGVyU3VyZmFjZUxh
eWVyKCkgY29uc3QgeyByZXR1cm4gKCpyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KVt0YXJnZXRSZW5k
ZXJTdXJmYWNlTGF5ZXJJbmRleF0uZ2V0KCk7IH0KLSAgICBpbmxpbmUgUmVuZGVyU3VyZmFjZVR5
cGUqIHRhcmdldFJlbmRlclN1cmZhY2UoKSBjb25zdCB7IHJldHVybiB0YXJnZXRSZW5kZXJTdXJm
YWNlTGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpOyB9Ci0gICAgaW5saW5lIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8TGF5ZXJUeXBlPiA+JiB0YXJnZXRSZW5kZXJTdXJmYWNlQ2hpbGRyZW4oKSBjb25zdCB7
IHJldHVybiB0YXJnZXRSZW5kZXJTdXJmYWNlKCktPmxheWVyTGlzdCgpOyB9Ci0KLSAgICBpbmxp
bmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uJiBvdGhlcikg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXJJbmRl
eCA9PSBvdGhlci50YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXJJbmRleAotICAgICAgICAgICAgJiYg
Y3VycmVudExheWVySW5kZXggPT0gb3RoZXIuY3VycmVudExheWVySW5kZXg7Ci0gICAgfQotCi0g
ICAgY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllclR5cGU+ID4qIHJlbmRlclN1cmZhY2VMYXllckxp
c3Q7Ci0gICAgaW50IHRhcmdldFJlbmRlclN1cmZhY2VMYXllckluZGV4OwotICAgIGludCBjdXJy
ZW50TGF5ZXJJbmRleDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCA2YzY1MWQ2NWJkZTZjZDkzZGM0YmVl
ZmVhYzllMjFlNGFkYWZjMTA1Li5mODU3NGVkNzg5N2ZhYmRkMWEwMWVhNjI2MzQwNzM2NzljM2Zi
YTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTMxLDcgKzMxLDYgQEAK
ICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50
LmgiCiAjaW5jbHVkZSAiVHJlZVN5bmNocm9uaXplci5oIgotI2luY2x1ZGUgImNjL0NDTGF5ZXJJ
dGVyYXRvci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgogI2luY2x1
ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVh
ZFByb3h5LmgiCkBAIC00MzIsNDEgKzQzMSw1NyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFp
bnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyUwog
CiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlz
dCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgUGFpbnRUeXBlIHBhaW50VHlwZSkKIHsKLSAgICAv
LyBVc2UgRnJvbnRUb0JhY2sgdG8gYWxsb3cgZm9yIHRlc3Rpbmcgb2NjbHVzaW9uIGFuZCBwZXJm
b3JtaW5nIGN1bGxpbmcgZHVyaW5nIHRoZSB0cmVlIHdhbGsuCi0gICAgdHlwZWRlZiBDQ0xheWVy
SXRlcmF0b3I8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCBDQ0xheWVySXRl
cmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjaz4gQ0NMYXllckl0ZXJhdG9yVHlwZTsKLQotICAgIEND
TGF5ZXJJdGVyYXRvclR5cGUgZW5kID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6ZW5kKCZyZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0KTsKLSAgICBmb3IgKENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xh
eWVySXRlcmF0b3JUeXBlOjpiZWdpbigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7IGl0ICE9IGVu
ZDsgKytpdCkgewotICAgICAgICBpZiAoaXQucmVwcmVzZW50c1RhcmdldFJlbmRlclN1cmZhY2Uo
KSkgewotICAgICAgICAgICAgQVNTRVJUKGl0LT5yZW5kZXJTdXJmYWNlKCktPmRyYXdPcGFjaXR5
KCkpOwotICAgICAgICAgICAgcGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoKml0
LCBwYWludFR5cGUpOwotICAgICAgICB9IGVsc2UgaWYgKGl0LnJlcHJlc2VudHNJdHNlbGYoKSkg
ewotICAgICAgICAgICAgQVNTRVJUKGl0LT5vcGFjaXR5KCkpOwotICAgICAgICAgICAgQVNTRVJU
KCFpdC0+Ym91bmRzKCkuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgIHBhaW50Q29udGVudHNJZkRp
cnR5KCppdCwgcGFpbnRUeXBlKTsKKyAgICBmb3IgKGludCBzdXJmYWNlSW5kZXggPSByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJmYWNl
SW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyID0gcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOworICAgICAgICBSZW5kZXJT
dXJmYWNlQ2hyb21pdW0qIHJlbmRlclN1cmZhY2UgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlbmRl
clN1cmZhY2UoKTsKKyAgICAgICAgQVNTRVJUKHJlbmRlclN1cmZhY2UpOworICAgICAgICBBU1NF
UlQocmVuZGVyU3VyZmFjZS0+ZHJhd09wYWNpdHkoKSk7CisKKyAgICAgICAgcGFpbnRNYXNrQW5k
UmVwbGljYUZvclJlbmRlclN1cmZhY2UocmVuZGVyU3VyZmFjZUxheWVyLCBwYWludFR5cGUpOwor
CisgICAgICAgIGNvbnN0IExheWVyTGlzdCYgbGF5ZXJMaXN0ID0gcmVuZGVyU3VyZmFjZS0+bGF5
ZXJMaXN0KCk7CisgICAgICAgIGZvciAodW5zaWduZWQgbGF5ZXJJbmRleCA9IDA7IGxheWVySW5k
ZXggPCBsYXllckxpc3Quc2l6ZSgpOyArK2xheWVySW5kZXgpIHsKKyAgICAgICAgICAgIExheWVy
Q2hyb21pdW0qIGxheWVyID0gbGF5ZXJMaXN0W2xheWVySW5kZXhdLmdldCgpOworCisgICAgICAg
ICAgICAvLyBMYXllcnMgdGhhdCBzdGFydCBhIG5ldyByZW5kZXIgc3VyZmFjZSB3aWxsIGJlIHBh
aW50ZWQgd2hlbiB0aGUgcmVuZGVyCisgICAgICAgICAgICAvLyBzdXJmYWNlJ3MgbGlzdCBpcyBw
cm9jZXNzZWQuCisgICAgICAgICAgICBpZiAoQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpyZW5kZXJT
dXJmYWNlQ29udHJpYnV0ZXNUb1RhcmdldDxMYXllckNocm9taXVtPihsYXllciwgcmVuZGVyU3Vy
ZmFjZUxheWVyLT5pZCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgQVNTRVJUKCFsYXllci0+Ym91bmRzKCkuaXNFbXB0eSgpKTsKKworICAgICAgICAgICAgcGFp
bnRDb250ZW50c0lmRGlydHkobGF5ZXIsIHBhaW50VHlwZSk7CiAgICAgICAgIH0KICAgICB9CiB9
CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQogewotICAg
IC8vIFVzZSBCYWNrVG9Gcm9udCBzaW5jZSBpdCdzIGNoZWFwIGFuZCB0aGlzIGlzbid0IG9yZGVy
LWRlcGVuZGVudC4KLSAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVtLCBS
ZW5kZXJTdXJmYWNlQ2hyb21pdW0sIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkJhY2tUb0Zyb250
PiBDQ0xheWVySXRlcmF0b3JUeXBlOwotCi0gICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBlbmQgPSBD
Q0xheWVySXRlcmF0b3JUeXBlOjplbmQoJm1fdXBkYXRlTGlzdCk7Ci0gICAgZm9yIChDQ0xheWVy
SXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJm1fdXBkYXRlTGlz
dCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBpZiAoaXQucmVwcmVzZW50c1RhcmdldFJl
bmRlclN1cmZhY2UoKSkgewotICAgICAgICAgICAgQVNTRVJUKGl0LT5yZW5kZXJTdXJmYWNlKCkt
PmRyYXdPcGFjaXR5KCkpOwotICAgICAgICAgICAgaWYgKGl0LT5tYXNrTGF5ZXIoKSkKLSAgICAg
ICAgICAgICAgICBpdC0+bWFza0xheWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29u
dGV4dCwgdXBkYXRlcik7Ci0KLSAgICAgICAgICAgIGlmIChpdC0+cmVwbGljYUxheWVyKCkpIHsK
LSAgICAgICAgICAgICAgICBpdC0+cmVwbGljYUxheWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAgICAgICAgICAgaWYgKGl0LT5yZXBsaWNh
TGF5ZXIoKS0+bWFza0xheWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGl0LT5yZXBsaWNhTGF5
ZXIoKS0+bWFza0xheWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBk
YXRlcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoaXQucmVwcmVzZW50c0l0
c2VsZigpKQotICAgICAgICAgICAgaXQtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4
dCwgdXBkYXRlcik7CisgICAgZm9yIChpbnQgc3VyZmFjZUluZGV4ID0gbV91cGRhdGVMaXN0LnNp
emUoKSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsKKyAgICAgICAg
TGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyID0gbV91cGRhdGVMaXN0W3N1cmZhY2VJ
bmRleF0uZ2V0KCk7CisgICAgICAgIFJlbmRlclN1cmZhY2VDaHJvbWl1bSogcmVuZGVyU3VyZmFj
ZSA9IHJlbmRlclN1cmZhY2VMYXllci0+cmVuZGVyU3VyZmFjZSgpOworICAgICAgICBBU1NFUlQo
cmVuZGVyU3VyZmFjZSk7CisgICAgICAgIEFTU0VSVChyZW5kZXJTdXJmYWNlLT5kcmF3T3BhY2l0
eSgpKTsKKworICAgICAgICBpZiAocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSkKKyAg
ICAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCktPnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7CisKKyAgICAgICAgaWYgKHJlbmRlclN1cmZh
Y2VMYXllci0+cmVwbGljYUxheWVyKCkpIHsKKyAgICAgICAgICAgIHJlbmRlclN1cmZhY2VMYXll
ci0+cmVwbGljYUxheWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBk
YXRlcik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChyZW5kZXJTdXJmYWNlTGF5ZXIt
PnJlcGxpY2FMYXllcigpLT5tYXNrTGF5ZXIoKSkKKyAgICAgICAgICAgICAgICByZW5kZXJTdXJm
YWNlTGF5ZXItPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5ZXIoKS0+dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
Y29uc3QgTGF5ZXJMaXN0JiBsYXllckxpc3QgPSByZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKTsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBsYXllckluZGV4ID0gMDsgbGF5ZXJJbmRleCA8IGxheWVy
TGlzdC5zaXplKCk7ICsrbGF5ZXJJbmRleCkgeworICAgICAgICAgICAgTGF5ZXJDaHJvbWl1bSog
bGF5ZXIgPSBsYXllckxpc3RbbGF5ZXJJbmRleF0uZ2V0KCk7CisKKyAgICAgICAgICAgIGlmIChD
Q0xheWVyVHJlZUhvc3RDb21tb246OnJlbmRlclN1cmZhY2VDb250cmlidXRlc1RvVGFyZ2V0PExh
eWVyQ2hyb21pdW0+KGxheWVyLCByZW5kZXJTdXJmYWNlTGF5ZXItPmlkKCkpKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0Q29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAKaW5kZXggYjRlN2JlNDE1MjIxYzFm
NTg4YTRlNDk3ODZiY2UyMzFkNzk0OTYyNC4uZmMwOGY3MWVlNmI2YzJmZTEzOTQ3N2MyYjlkZmI4
YTMxZDQ0OTlhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3Bw
CkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiUmVuZGVyU3VyZmFjZUNocm9taXVtLmgiCiAj
aW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1w
bC5oIgotI2luY2x1ZGUgImNjL0NDTGF5ZXJJdGVyYXRvci5oIgogI2luY2x1ZGUgImNjL0NDTGF5
ZXJTb3J0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlclN1cmZhY2UuaCIKIApAQCAtNDcwLDE0
ICs0NjksMTUgQEAgc3RhdGljIGJvb2wgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmls
aXR5SW50ZXJuYWwoTGF5ZXJUeXBlKiBsYXllciwgTGF5ZXIKIHRlbXBsYXRlPHR5cGVuYW1lIExh
eWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+CiBzdGF0aWMgdm9pZCB3YWxrTGF5
ZXJzQW5kQ2FsY3VsYXRlVmlzaWJsZUxheWVyUmVjdHMoY29uc3QgVmVjdG9yPFJlZlB0cjxMYXll
clR5cGU+ID4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QpCiB7Ci0gICAgLy8gVXNlIEJhY2tUb0Zy
b250IHNpbmNlIGl0J3MgY2hlYXAgYW5kIHRoaXMgaXNuJ3Qgb3JkZXItZGVwZW5kZW50LgotICAg
IHR5cGVkZWYgQ0NMYXllckl0ZXJhdG9yPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGUsIEND
TGF5ZXJJdGVyYXRvckFjdGlvbnM6OkJhY2tUb0Zyb250PiBDQ0xheWVySXRlcmF0b3JUeXBlOwot
Ci0gICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBlbmQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjplbmQo
JnJlbmRlclN1cmZhY2VMYXllckxpc3QpOwotICAgIGZvciAoQ0NMYXllckl0ZXJhdG9yVHlwZSBp
dCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJlZ2luKCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsg
aXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGlmICghaXQucmVwcmVzZW50c1RhcmdldFJlbmRl
clN1cmZhY2UoKSkgewotICAgICAgICAgICAgSW50UmVjdCB2aXNpYmxlTGF5ZXJSZWN0ID0gQ0NM
YXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVWaXNpYmxlTGF5ZXJSZWN0PExheWVyVHlwZT4o
Kml0KTsKLSAgICAgICAgICAgIGl0LT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVMYXllclJl
Y3QpOworICAgIGZvciAoaW50IHN1cmZhY2VJbmRleCA9IHJlbmRlclN1cmZhY2VMYXllckxpc3Qu
c2l6ZSgpIC0gMTsgc3VyZmFjZUluZGV4ID49IDAgOyAtLXN1cmZhY2VJbmRleCkgeworICAgICAg
ICBMYXllclR5cGUqIHJlbmRlclN1cmZhY2VMYXllciA9IHJlbmRlclN1cmZhY2VMYXllckxpc3Rb
c3VyZmFjZUluZGV4XS5nZXQoKTsKKyAgICAgICAgUmVuZGVyU3VyZmFjZVR5cGUqIHJlbmRlclN1
cmZhY2UgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKKworICAgICAgICBW
ZWN0b3I8UmVmUHRyPExheWVyVHlwZT4gPiYgbGF5ZXJMaXN0ID0gcmVuZGVyU3VyZmFjZS0+bGF5
ZXJMaXN0KCk7CisgICAgICAgIGZvciAodW5zaWduZWQgbGF5ZXJJbmRleCA9IDA7IGxheWVySW5k
ZXggPCBsYXllckxpc3Quc2l6ZSgpOyArK2xheWVySW5kZXgpIHsKKyAgICAgICAgICAgIExheWVy
VHlwZSogbGF5ZXIgPSBsYXllckxpc3RbbGF5ZXJJbmRleF0uZ2V0KCk7CisgICAgICAgICAgICBJ
bnRSZWN0IHZpc2libGVMYXllclJlY3QgPSBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0
ZVZpc2libGVMYXllclJlY3Q8TGF5ZXJUeXBlPihsYXllcik7CisgICAgICAgICAgICBsYXllci0+
c2V0VmlzaWJsZUxheWVyUmVjdCh2aXNpYmxlTGF5ZXJSZWN0KTsKICAgICAgICAgfQogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyU3VyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmgKaW5kZXggYWI4Mzg2ZDVkYTIzZmE3MTAzMDU3
YWYxMTQwN2I0OWE0YTViNTYzMC4uYThlODdhOWY5YmVhNWQ5YmI0ZTgxOGRmNTBkYzA4ZDllNzMy
NmY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmgKQEAgLTEyOSwxMSArMTI5LDYgQEAg
cHJpdmF0ZToKIAogICAgIC8vIFN0b3JlZCBpbiB0aGUgInN1cmZhY2Ugc3BhY2UiIHdoZXJlIHRo
aXMgZGFtYWdlIGNhbiBiZSB1c2VkIGZvciBzY2lzc29yaW5nLgogICAgIEZsb2F0UmVjdCBtX2Rh
bWFnZVJlY3Q7Ci0KLSAgICAvLyBGb3IgQ0NMYXllckl0ZXJhdG9yQWN0aW9ucwotICAgIGludCBt
X3RhcmdldFJlbmRlclN1cmZhY2VMYXllckluZGV4SGlzdG9yeTsKLSAgICBpbnQgbV9jdXJyZW50
TGF5ZXJJbmRleEhpc3Rvcnk7Ci0gICAgZnJpZW5kIHN0cnVjdCBDQ0xheWVySXRlcmF0b3JBY3Rp
b25zOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggY2E4ZmIzOWQy
NGQ5ZmQxYzJhNmQ4NmJkNzNlNzQ1MTM4NTFhYjFmOS4uOWIwZTljZTNhMWQzNmUwNTE3YjQ1ZGUx
MTYzYjk2M2M4ZGMxYzE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC02NCw3
ICs2NCw2IEBACiAgICAgICAgICAgICAndGVzdHMvQ0NEZWxheUJhc2VkVGltZVNvdXJjZVRlc3Qu
Y3BwJywKICAgICAgICAgICAgICd0ZXN0cy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXJUZXN0LmNwcCcs
CiAgICAgICAgICAgICAndGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcCcsCi0gICAgICAgICAgICAn
dGVzdHMvQ0NMYXllckl0ZXJhdG9yVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDTGF5
ZXJRdWFkVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDTGF5ZXJTb3J0ZXJUZXN0LmNw
cCcsCiAgICAgICAgICAgICAndGVzdHMvQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdC5jcHAnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySXRlcmF0b3JU
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckl0ZXJhdG9yVGVz
dC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3YTZmZDRkYzc5MGE4MmUzNmIx
Nzg3MWFjMjViZDM2NjE4ODI3NzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySXRlcmF0b3JU
ZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJjYy9DQ0xheWVySXRlcmF0b3IuaCIKLQot
I2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKLSNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RD
b21tb24uaCIKLSNpbmNsdWRlIDxnbW9jay9nbW9jay5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotdXNpbmcgOjp0ZXN0aW5nOjpNb2NrOwot
dXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpBdExlYXN0OwotdXNpbmcgOjp0
ZXN0aW5nOjpBbnlOdW1iZXI7Ci0KLW5hbWVzcGFjZSB7Ci0KLWNsYXNzIFRlc3RMYXllckNocm9t
aXVtIDogcHVibGljIExheWVyQ2hyb21pdW0gewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFRlc3RMYXllckNocm9taXVtPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgVGVz
dExheWVyQ2hyb21pdW0oKSk7IH0KLQotICAgIGludCBtX2NvdW50UmVwcmVzZW50aW5nVGFyZ2V0
U3VyZmFjZTsKLSAgICBpbnQgbV9jb3VudFJlcHJlc2VudGluZ0NvbnRyaWJ1dGluZ1N1cmZhY2U7
Ci0gICAgaW50IG1fY291bnRSZXByZXNlbnRpbmdJdHNlbGY7Ci0KLSAgICB2aXJ0dWFsIGJvb2wg
ZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9kcmF3c0NvbnRlbnQ7IH0KLSAgICB2b2lk
IHNldERyYXdzQ29udGVudChib29sIGRyYXdzQ29udGVudCkgeyBtX2RyYXdzQ29udGVudCA9IGRy
YXdzQ29udGVudDsgfQotCi1wcml2YXRlOgotICAgIFRlc3RMYXllckNocm9taXVtKCkKLSAgICAg
ICAgOiBMYXllckNocm9taXVtKDApCi0gICAgICAgICwgbV9kcmF3c0NvbnRlbnQodHJ1ZSkKLSAg
ICB7Ci0gICAgICAgIHNldEJvdW5kcyhJbnRTaXplKDEwMCwgMTAwKSk7Ci0gICAgICAgIHNldERy
YXdhYmxlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwotICAgIH0KLQotICAg
IGJvb2wgbV9kcmF3c0NvbnRlbnQ7Ci19OwotCi0jZGVmaW5lIEVYUEVDVF9DT1VOVChsYXllciwg
dGFyZ2V0LCBjb250cmliLCBpdHNlbGYpIFwKLSAgICBFWFBFQ1RfRVEodGFyZ2V0LCBsYXllci0+
bV9jb3VudFJlcHJlc2VudGluZ1RhcmdldFN1cmZhY2UpOyAgICAgICAgICBcCi0gICAgRVhQRUNU
X0VRKGNvbnRyaWIsIGxheWVyLT5tX2NvdW50UmVwcmVzZW50aW5nQ29udHJpYnV0aW5nU3VyZmFj
ZSk7ICAgXAotICAgIEVYUEVDVF9FUShpdHNlbGYsIGxheWVyLT5tX2NvdW50UmVwcmVzZW50aW5n
SXRzZWxmKTsKLQotdHlwZWRlZiBDQ0xheWVySXRlcmF0b3I8TGF5ZXJDaHJvbWl1bSwgUmVuZGVy
U3VyZmFjZUNocm9taXVtLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjaz4gRnJv
bnRUb0JhY2s7Ci10eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVtLCBSZW5kZXJT
dXJmYWNlQ2hyb21pdW0sIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkJhY2tUb0Zyb250PiBCYWNr
VG9Gcm9udDsKLQotdm9pZCByZXNldENvdW50cyhWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+
ID4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBzdXJmYWNl
SW5kZXggPSAwOyBzdXJmYWNlSW5kZXggPCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LnNpemUoKTsg
KytzdXJmYWNlSW5kZXgpIHsKLSAgICAgICAgVGVzdExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZh
Y2VMYXllciA9IHN0YXRpY19jYXN0PFRlc3RMYXllckNocm9taXVtKj4ocmVuZGVyU3VyZmFjZUxh
eWVyTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpKTsKLSAgICAgICAgUmVuZGVyU3VyZmFjZUNocm9t
aXVtKiByZW5kZXJTdXJmYWNlID0gcmVuZGVyU3VyZmFjZUxheWVyLT5yZW5kZXJTdXJmYWNlKCk7
Ci0KLSAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5tX2NvdW50UmVwcmVzZW50aW5nVGFyZ2V0
U3VyZmFjZSA9IC0xOwotICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXItPm1fY291bnRSZXByZXNl
bnRpbmdDb250cmlidXRpbmdTdXJmYWNlID0gLTE7Ci0gICAgICAgIHJlbmRlclN1cmZhY2VMYXll
ci0+bV9jb3VudFJlcHJlc2VudGluZ0l0c2VsZiA9IC0xOwotCi0gICAgICAgIGZvciAodW5zaWdu
ZWQgbGF5ZXJJbmRleCA9IDA7IGxheWVySW5kZXggPCByZW5kZXJTdXJmYWNlLT5sYXllckxpc3Qo
KS5zaXplKCk7ICsrbGF5ZXJJbmRleCkgewotICAgICAgICAgICAgVGVzdExheWVyQ2hyb21pdW0q
IGxheWVyID0gc3RhdGljX2Nhc3Q8VGVzdExheWVyQ2hyb21pdW0qPihyZW5kZXJTdXJmYWNlLT5s
YXllckxpc3QoKVtsYXllckluZGV4XS5nZXQoKSk7Ci0KLSAgICAgICAgICAgIGxheWVyLT5tX2Nv
dW50UmVwcmVzZW50aW5nVGFyZ2V0U3VyZmFjZSA9IC0xOwotICAgICAgICAgICAgbGF5ZXItPm1f
Y291bnRSZXByZXNlbnRpbmdDb250cmlidXRpbmdTdXJmYWNlID0gLTE7Ci0gICAgICAgICAgICBs
YXllci0+bV9jb3VudFJlcHJlc2VudGluZ0l0c2VsZiA9IC0xOwotICAgICAgICB9Ci0gICAgfQot
fQotCi12b2lkIGl0ZXJhdGVGcm9udFRvQmFjayhWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+
ID4qIHJlbmRlclN1cmZhY2VMYXllckxpc3QpCi17Ci0gICAgcmVzZXRDb3VudHMoKnJlbmRlclN1
cmZhY2VMYXllckxpc3QpOwotICAgIGludCBjb3VudCA9IDA7Ci0gICAgZm9yIChGcm9udFRvQmFj
ayBpdCA9IEZyb250VG9CYWNrOjpiZWdpbihyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsgaXQgIT0g
RnJvbnRUb0JhY2s6OmVuZChyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsgKytpdCwgKytjb3VudCkg
ewotICAgICAgICBUZXN0TGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBzdGF0aWNfY2FzdDxUZXN0TGF5
ZXJDaHJvbWl1bSo+KCppdCk7Ci0gICAgICAgIGlmIChpdC5yZXByZXNlbnRzVGFyZ2V0UmVuZGVy
U3VyZmFjZSgpKQotICAgICAgICAgICAgbGF5ZXItPm1fY291bnRSZXByZXNlbnRpbmdUYXJnZXRT
dXJmYWNlID0gY291bnQ7Ci0gICAgICAgIGlmIChpdC5yZXByZXNlbnRzQ29udHJpYnV0aW5nUmVu
ZGVyU3VyZmFjZSgpKQotICAgICAgICAgICAgbGF5ZXItPm1fY291bnRSZXByZXNlbnRpbmdDb250
cmlidXRpbmdTdXJmYWNlID0gY291bnQ7Ci0gICAgICAgIGlmIChpdC5yZXByZXNlbnRzSXRzZWxm
KCkpCi0gICAgICAgICAgICBsYXllci0+bV9jb3VudFJlcHJlc2VudGluZ0l0c2VsZiA9IGNvdW50
OwotICAgIH0KLX0KLQotdm9pZCBpdGVyYXRlQmFja1RvRnJvbnQoVmVjdG9yPFJlZlB0cjxMYXll
ckNocm9taXVtPiA+KiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KQotewotICAgIHJlc2V0Q291bnRz
KCpyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKLSAgICBpbnQgY291bnQgPSAwOwotICAgIGZvciAo
QmFja1RvRnJvbnQgaXQgPSBCYWNrVG9Gcm9udDo6YmVnaW4ocmVuZGVyU3VyZmFjZUxheWVyTGlz
dCk7IGl0ICE9IEJhY2tUb0Zyb250OjplbmQocmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7ICsraXQs
ICsrY291bnQpIHsKLSAgICAgICAgVGVzdExheWVyQ2hyb21pdW0qIGxheWVyID0gc3RhdGljX2Nh
c3Q8VGVzdExheWVyQ2hyb21pdW0qPigqaXQpOwotICAgICAgICBpZiAoaXQucmVwcmVzZW50c1Rh
cmdldFJlbmRlclN1cmZhY2UoKSkKLSAgICAgICAgICAgIGxheWVyLT5tX2NvdW50UmVwcmVzZW50
aW5nVGFyZ2V0U3VyZmFjZSA9IGNvdW50OwotICAgICAgICBpZiAoaXQucmVwcmVzZW50c0NvbnRy
aWJ1dGluZ1JlbmRlclN1cmZhY2UoKSkKLSAgICAgICAgICAgIGxheWVyLT5tX2NvdW50UmVwcmVz
ZW50aW5nQ29udHJpYnV0aW5nU3VyZmFjZSA9IGNvdW50OwotICAgICAgICBpZiAoaXQucmVwcmVz
ZW50c0l0c2VsZigpKQotICAgICAgICAgICAgbGF5ZXItPm1fY291bnRSZXByZXNlbnRpbmdJdHNl
bGYgPSBjb3VudDsKLSAgICB9Ci19Ci0KLVRFU1QoQ0NMYXllckl0ZXJhdG9yVGVzdCwgc2ltcGxl
VHJlZSkKLXsKLSAgICBSZWZQdHI8VGVzdExheWVyQ2hyb21pdW0+IHJvb3RMYXllciA9IFRlc3RM
YXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8VGVzdExheWVyQ2hyb21pdW0+IGZp
cnN0ID0gVGVzdExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxUZXN0TGF5ZXJD
aHJvbWl1bT4gc2Vjb25kID0gVGVzdExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0
cjxUZXN0TGF5ZXJDaHJvbWl1bT4gdGhpcmQgPSBUZXN0TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7
Ci0gICAgUmVmUHRyPFRlc3RMYXllckNocm9taXVtPiBmb3VydGggPSBUZXN0TGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKCk7Ci0KLSAgICByb290TGF5ZXItPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLQot
ICAgIHJvb3RMYXllci0+YWRkQ2hpbGQoZmlyc3QpOwotICAgIHJvb3RMYXllci0+YWRkQ2hpbGQo
c2Vjb25kKTsKLSAgICByb290TGF5ZXItPmFkZENoaWxkKHRoaXJkKTsKLSAgICByb290TGF5ZXIt
PmFkZENoaWxkKGZvdXJ0aCk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4g
cmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+
ID4gbGF5ZXJMaXN0OwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHJvb3RMYXll
cik7Ci0gICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0Fu
ZFZpc2liaWxpdHkocm9vdExheWVyLmdldCgpLCByb290TGF5ZXIuZ2V0KCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXgoKSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0LCBsYXllckxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjU2KTsKLQotICAgIGl0ZXJh
dGVCYWNrVG9Gcm9udCgmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7Ci0gICAgRVhQRUNUX0NPVU5U
KHJvb3RMYXllciwgMCwgLTEsIDEpOwotICAgIEVYUEVDVF9DT1VOVChmaXJzdCwgLTEsIC0xLCAy
KTsKLSAgICBFWFBFQ1RfQ09VTlQoc2Vjb25kLCAtMSwgLTEsIDMpOwotICAgIEVYUEVDVF9DT1VO
VCh0aGlyZCwgLTEsIC0xLCA0KTsKLSAgICBFWFBFQ1RfQ09VTlQoZm91cnRoLCAtMSwgLTEsIDUp
OwotCi0gICAgaXRlcmF0ZUZyb250VG9CYWNrKCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKLSAg
ICBFWFBFQ1RfQ09VTlQocm9vdExheWVyLCA1LCAtMSwgNCk7Ci0gICAgRVhQRUNUX0NPVU5UKGZp
cnN0LCAtMSwgLTEsIDMpOwotICAgIEVYUEVDVF9DT1VOVChzZWNvbmQsIC0xLCAtMSwgMik7Ci0g
ICAgRVhQRUNUX0NPVU5UKHRoaXJkLCAtMSwgLTEsIDEpOwotICAgIEVYUEVDVF9DT1VOVChmb3Vy
dGgsIC0xLCAtMSwgMCk7Ci0KLX0KLQotVEVTVChDQ0xheWVySXRlcmF0b3JUZXN0LCBjb21wbGV4
VHJlZSkKLXsKLSAgICBSZWZQdHI8VGVzdExheWVyQ2hyb21pdW0+IHJvb3RMYXllciA9IFRlc3RM
YXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8VGVzdExheWVyQ2hyb21pdW0+IHJv
b3QxID0gVGVzdExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxUZXN0TGF5ZXJD
aHJvbWl1bT4gcm9vdDIgPSBUZXN0TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRy
PFRlc3RMYXllckNocm9taXVtPiByb290MyA9IFRlc3RMYXllckNocm9taXVtOjpjcmVhdGUoKTsK
LSAgICBSZWZQdHI8VGVzdExheWVyQ2hyb21pdW0+IHJvb3QyMSA9IFRlc3RMYXllckNocm9taXVt
OjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8VGVzdExheWVyQ2hyb21pdW0+IHJvb3QyMiA9IFRlc3RM
YXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8VGVzdExheWVyQ2hyb21pdW0+IHJv
b3QyMyA9IFRlc3RMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8VGVzdExheWVy
Q2hyb21pdW0+IHJvb3QyMjEgPSBUZXN0TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVm
UHRyPFRlc3RMYXllckNocm9taXVtPiByb290MjMxID0gVGVzdExheWVyQ2hyb21pdW06OmNyZWF0
ZSgpOwotCi0gICAgcm9vdExheWVyLT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7Ci0KLSAgICByb290
TGF5ZXItPmFkZENoaWxkKHJvb3QxKTsKLSAgICByb290TGF5ZXItPmFkZENoaWxkKHJvb3QyKTsK
LSAgICByb290TGF5ZXItPmFkZENoaWxkKHJvb3QzKTsKLSAgICByb290Mi0+YWRkQ2hpbGQocm9v
dDIxKTsKLSAgICByb290Mi0+YWRkQ2hpbGQocm9vdDIyKTsKLSAgICByb290Mi0+YWRkQ2hpbGQo
cm9vdDIzKTsKLSAgICByb290MjItPmFkZENoaWxkKHJvb3QyMjEpOwotICAgIHJvb3QyMy0+YWRk
Q2hpbGQocm9vdDIzMSk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4g
bGF5ZXJMaXN0OwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHJvb3RMYXllcik7
Ci0gICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZp
c2liaWxpdHkocm9vdExheWVyLmdldCgpLCByb290TGF5ZXIuZ2V0KCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0LCBsYXllckxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjU2KTsKLQotICAgIGl0ZXJhdGVC
YWNrVG9Gcm9udCgmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7Ci0gICAgRVhQRUNUX0NPVU5UKHJv
b3RMYXllciwgMCwgLTEsIDEpOwotICAgIEVYUEVDVF9DT1VOVChyb290MSwgLTEsIC0xLCAyKTsK
LSAgICBFWFBFQ1RfQ09VTlQocm9vdDIsIC0xLCAtMSwgMyk7Ci0gICAgRVhQRUNUX0NPVU5UKHJv
b3QyMSwgLTEsIC0xLCA0KTsKLSAgICBFWFBFQ1RfQ09VTlQocm9vdDIyLCAtMSwgLTEsIDUpOwot
ICAgIEVYUEVDVF9DT1VOVChyb290MjIxLCAtMSwgLTEsIDYpOwotICAgIEVYUEVDVF9DT1VOVChy
b290MjMsIC0xLCAtMSwgNyk7Ci0gICAgRVhQRUNUX0NPVU5UKHJvb3QyMzEsIC0xLCAtMSwgOCk7
Ci0gICAgRVhQRUNUX0NPVU5UKHJvb3QzLCAtMSwgLTEsIDkpOwotCi0gICAgaXRlcmF0ZUZyb250
VG9CYWNrKCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKLSAgICBFWFBFQ1RfQ09VTlQocm9vdExh
eWVyLCA5LCAtMSwgOCk7Ci0gICAgRVhQRUNUX0NPVU5UKHJvb3QxLCAtMSwgLTEsIDcpOwotICAg
IEVYUEVDVF9DT1VOVChyb290MiwgLTEsIC0xLCA2KTsKLSAgICBFWFBFQ1RfQ09VTlQocm9vdDIx
LCAtMSwgLTEsIDUpOwotICAgIEVYUEVDVF9DT1VOVChyb290MjIsIC0xLCAtMSwgNCk7Ci0gICAg
RVhQRUNUX0NPVU5UKHJvb3QyMjEsIC0xLCAtMSwgMyk7Ci0gICAgRVhQRUNUX0NPVU5UKHJvb3Qy
MywgLTEsIC0xLCAyKTsKLSAgICBFWFBFQ1RfQ09VTlQocm9vdDIzMSwgLTEsIC0xLCAxKTsKLSAg
ICBFWFBFQ1RfQ09VTlQocm9vdDMsIC0xLCAtMSwgMCk7Ci0KLX0KLQotVEVTVChDQ0xheWVySXRl
cmF0b3JUZXN0LCBjb21wbGV4VHJlZU11bHRpU3VyZmFjZSkKLXsKLSAgICBSZWZQdHI8VGVzdExh
eWVyQ2hyb21pdW0+IHJvb3RMYXllciA9IFRlc3RMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAg
ICBSZWZQdHI8VGVzdExheWVyQ2hyb21pdW0+IHJvb3QxID0gVGVzdExheWVyQ2hyb21pdW06OmNy
ZWF0ZSgpOwotICAgIFJlZlB0cjxUZXN0TGF5ZXJDaHJvbWl1bT4gcm9vdDIgPSBUZXN0TGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPFRlc3RMYXllckNocm9taXVtPiByb290MyA9
IFRlc3RMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8VGVzdExheWVyQ2hyb21p
dW0+IHJvb3QyMSA9IFRlc3RMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8VGVz
dExheWVyQ2hyb21pdW0+IHJvb3QyMiA9IFRlc3RMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAg
ICBSZWZQdHI8VGVzdExheWVyQ2hyb21pdW0+IHJvb3QyMyA9IFRlc3RMYXllckNocm9taXVtOjpj
cmVhdGUoKTsKLSAgICBSZWZQdHI8VGVzdExheWVyQ2hyb21pdW0+IHJvb3QyMjEgPSBUZXN0TGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPFRlc3RMYXllckNocm9taXVtPiByb290
MjMxID0gVGVzdExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotCi0gICAgcm9vdExheWVyLT5jcmVh
dGVSZW5kZXJTdXJmYWNlKCk7Ci0KLSAgICByb290TGF5ZXItPmFkZENoaWxkKHJvb3QxKTsKLSAg
ICByb290TGF5ZXItPmFkZENoaWxkKHJvb3QyKTsKLSAgICByb290TGF5ZXItPmFkZENoaWxkKHJv
b3QzKTsKLSAgICByb290Mi0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKLSAgICByb290Mi0+c2V0
T3BhY2l0eSgwLjUpOyAvLyBGb3JjZSB0aGUgbGF5ZXIgdG8gb3duIGEgbmV3IHN1cmZhY2UuCi0g
ICAgcm9vdDItPmFkZENoaWxkKHJvb3QyMSk7Ci0gICAgcm9vdDItPmFkZENoaWxkKHJvb3QyMik7
Ci0gICAgcm9vdDItPmFkZENoaWxkKHJvb3QyMyk7Ci0gICAgcm9vdDIyLT5zZXRPcGFjaXR5KDAu
NSk7Ci0gICAgcm9vdDIyLT5hZGRDaGlsZChyb290MjIxKTsKLSAgICByb290MjMtPnNldE9wYWNp
dHkoMC41KTsKLSAgICByb290MjMtPmFkZENoaWxkKHJvb3QyMzEpOwotCi0gICAgVmVjdG9yPFJl
ZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVjdG9y
PFJlZlB0cjxMYXllckNocm9taXVtPiA+IGxheWVyTGlzdDsKLSAgICByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0LmFwcGVuZChyb290TGF5ZXIpOwotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2Fs
Y3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllci5nZXQoKSwgcm9vdExh
eWVyLmdldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0aW9u
TWF0cml4KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgbGF5ZXJMaXN0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDI1Nik7Ci0KLSAgICBpdGVyYXRlQmFja1RvRnJvbnQoJnJlbmRlclN1cmZhY2VMYXllckxp
c3QpOwotICAgIEVYUEVDVF9DT1VOVChyb290TGF5ZXIsIDAsIC0xLCAxKTsKLSAgICBFWFBFQ1Rf
Q09VTlQocm9vdDEsIC0xLCAtMSwgMik7Ci0gICAgRVhQRUNUX0NPVU5UKHJvb3QyLCA0LCAzLCAt
MSk7Ci0gICAgRVhQRUNUX0NPVU5UKHJvb3QyMSwgLTEsIC0xLCA1KTsKLSAgICBFWFBFQ1RfQ09V
TlQocm9vdDIyLCA3LCA2LCA4KTsKLSAgICBFWFBFQ1RfQ09VTlQocm9vdDIyMSwgLTEsIC0xLCA5
KTsKLSAgICBFWFBFQ1RfQ09VTlQocm9vdDIzLCAxMSwgMTAsIDEyKTsKLSAgICBFWFBFQ1RfQ09V
TlQocm9vdDIzMSwgLTEsIC0xLCAxMyk7Ci0gICAgRVhQRUNUX0NPVU5UKHJvb3QzLCAtMSwgLTEs
IDE0KTsKLQotICAgIGl0ZXJhdGVGcm9udFRvQmFjaygmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7
Ci0gICAgRVhQRUNUX0NPVU5UKHJvb3RMYXllciwgMTQsIC0xLCAxMyk7Ci0gICAgRVhQRUNUX0NP
VU5UKHJvb3QxLCAtMSwgLTEsIDEyKTsKLSAgICBFWFBFQ1RfQ09VTlQocm9vdDIsIDEwLCAxMSwg
LTEpOwotICAgIEVYUEVDVF9DT1VOVChyb290MjEsIC0xLCAtMSwgOSk7Ci0gICAgRVhQRUNUX0NP
VU5UKHJvb3QyMiwgNywgOCwgNik7Ci0gICAgRVhQRUNUX0NPVU5UKHJvb3QyMjEsIC0xLCAtMSwg
NSk7Ci0gICAgRVhQRUNUX0NPVU5UKHJvb3QyMywgMywgNCwgMik7Ci0gICAgRVhQRUNUX0NPVU5U
KHJvb3QyMzEsIC0xLCAtMSwgMSk7Ci0gICAgRVhQRUNUX0NPVU5UKHJvb3QzLCAtMSwgLTEsIDAp
OwotfQotCi19IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>