<?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>41218</bug_id>
          
          <creation_ts>2010-06-25 11:00:43 -0700</creation_ts>
          <short_desc>Core functionality for image resizing API</short_desc>
          <delta_ts>2010-08-23 11:12:08 -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>Images</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>UNCONFIRMED</bug_status>
          <resolution></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>39905</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Sterling Swigart">sswigart</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>243079</commentid>
    <comment_count>0</comment_count>
    <who name="Sterling Swigart">sswigart</who>
    <bug_when>2010-06-25 11:00:43 -0700</bug_when>
    <thetext>This patch allows the image resizing API to actually resize an image, provides support for the preserveAspectRatio, and provides support for compressionLevel only on the CG platform (at this point). 

It&apos;s a work in progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243102</commentid>
    <comment_count>1</comment_count>
      <attachid>59783</attachid>
    <who name="Sterling Swigart">sswigart</who>
    <bug_when>2010-06-25 11:38:28 -0700</bug_when>
    <thetext>Created attachment 59783
Do the resizing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268008</commentid>
    <comment_count>2</comment_count>
      <attachid>59783</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-08-23 11:12:08 -0700</bug_when>
    <thetext>Comment on attachment 59783
Do the resizing

I will review this but it isn&apos;t pressing until I can devote time to working on this code, so I&apos;m removing the r? for now (to shrink the review queue).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59783</attachid>
            <date>2010-06-25 11:38:28 -0700</date>
            <delta_ts>2010-08-23 11:12:08 -0700</delta_ts>
            <desc>Do the resizing</desc>
            <filename>image-resize-patch-3</filename>
            <type>text/plain</type>
            <size>29131</size>
            <attacher name="Sterling Swigart">sswigart</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5NTdhNzc0Li4yNmVmODc2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDYt
MjUgIFN0ZXJsaW5nIFN3aWdhcnQgIDxzc3dpZ2FydEBnb29nbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxsb3dzIElt
YWdlLndlYmtpdEdldEltYWdlIHRvIGFjdHVhbGx5IHRvIHRoZSByZXNpemluZyBvZiBhbiBpbWFn
ZS4gU3VwcG9ydAorICAgICAgICBmb3IgcHJlc2VydmVBc3BlY3RSYXRpbyBhbmQgbGltaXRlZCBz
dXBwb3J0IGZvciBjb21wcmVzc2lvbkxldmVsIGFsc28gaW5jbHVkZWQuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTIxOAorCisgICAgICAgICogZmFz
dC9kb20vSFRNTEltYWdlRWxlbWVudC93ZWJraXRHZXRJbWFnZS9jb21wcmVzc2lvbi1sZXZlbC10
ZXN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEltYWdlRWxl
bWVudC93ZWJraXRHZXRJbWFnZS9jb21wcmVzc2lvbi1sZXZlbC10ZXN0Lmh0bWwtZGlzYWJsZWQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxJbWFnZUVsZW1lbnQvd2Via2l0R2V0SW1h
Z2UvZGltZW5zaW9ucy10ZXN0Lmh0bWwtZGlzYWJsZWQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL0hUTUxJbWFnZUVsZW1lbnQvd2Via2l0R2V0SW1hZ2UvcGl4ZWwtdGVzdC5odG1sLWRpc2Fi
bGVkOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MSW1hZ2VFbGVtZW50L3dlYmtpdEdl
dEltYWdlL3ByZXNlcnZlLWFzcGVjdC1yYXRpby10ZXN0Lmh0bWwtZGlzYWJsZWQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL0hUTUxJbWFnZUVsZW1lbnQvd2Via2l0R2V0SW1hZ2Uvc2NyaXB0
LXRlc3RzL2NvbXByZXNzaW9uLWxldmVsLXRlc3QuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL0hUTUxJbWFnZUVsZW1lbnQvd2Via2l0R2V0SW1hZ2Uvc2NyaXB0LXRlc3RzL2RpbWVuc2lv
bnMtdGVzdC5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEltYWdlRWxlbWVudC93
ZWJraXRHZXRJbWFnZS9zY3JpcHQtdGVzdHMvcHJlc2VydmUtYXNwZWN0LXJhdGlvLXRlc3QuanM6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxJbWFnZUVsZW1lbnQvd2Via2l0R2V0SW1h
Z2Uvc2NyaXB0LXRlc3RzL3Rlc3QtY2FsbGJhY2tzLmpzOiBDaGFuZ2VkIHRvIHRlc3QgZm9yIHJl
dHVybmVkIGJsb2IuCisgICAgICAgICogZmFzdC9kb20vSFRNTEltYWdlRWxlbWVudC93ZWJraXRH
ZXRJbWFnZS90ZXN0LW91dHB1dC10eXBlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL0hUTUxJbWFnZUVsZW1lbnQvd2Via2l0R2V0SW1hZ2UvdGVzdC1vdXRwdXQtdHlw
ZXMuaHRtbC1kaXNhYmxlZDogQWRkZWQuCisKIDIwMTAtMDYtMjEgIFN0ZXJsaW5nIFN3aWdhcnQg
IDxzc3dpZ2FydEBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEltYWdlRWxlbWVudC93
ZWJraXRHZXRJbWFnZS9jb21wcmVzc2lvbi1sZXZlbC10ZXN0LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxJbWFnZUVsZW1lbnQvd2Via2l0R2V0SW1hZ2UvY29tcHJlc3Np
b24tbGV2ZWwtdGVzdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uOGIxMzc4OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxJbWFnZUVsZW1lbnQvd2Via2l0R2V0SW1hZ2UvY29tcHJlc3Npb24tbGV2ZWwtdGVzdC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSBAQAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MSW1hZ2VFbGVtZW50L3dlYmtpdEdldEltYWdlL2NvbXByZXNzaW9uLWxldmVsLXRlc3Qu
aHRtbC1kaXNhYmxlZCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxJbWFnZUVsZW1lbnQvd2Vi
a2l0R2V0SW1hZ2UvY29tcHJlc3Npb24tbGV2ZWwtdGVzdC5odG1sLWRpc2FibGVkCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3MjBkNDgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MSW1hZ2VFbGVtZW50L3dlYmtpdEdldEltYWdlL2NvbXBy
ZXNzaW9uLWxldmVsLXRlc3QuaHRtbC1kaXNhYmxlZApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3Rz
L2NvbXByZXNzaW9uLWxldmVsLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEltYWdlRWxlbWVudC93
ZWJraXRHZXRJbWFnZS9kaW1lbnNpb25zLXRlc3QuaHRtbC1kaXNhYmxlZCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxJbWFnZUVsZW1lbnQvd2Via2l0R2V0SW1hZ2UvZGltZW5zaW9ucy10ZXN0
Lmh0bWwtZGlzYWJsZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjAyZTBi
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxJbWFnZUVsZW1l
bnQvd2Via2l0R2V0SW1hZ2UvZGltZW5zaW9ucy10ZXN0Lmh0bWwtZGlzYWJsZWQKQEAgLTAsMCAr
MSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBz
cmM9InNjcmlwdC10ZXN0cy9kaW1lbnNpb25zLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEltYWdl
RWxlbWVudC93ZWJraXRHZXRJbWFnZS9waXhlbC10ZXN0Lmh0bWwtZGlzYWJsZWQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MSW1hZ2VFbGVtZW50L3dlYmtpdEdldEltYWdlL3BpeGVsLXRlc3Qu
aHRtbC1kaXNhYmxlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjQyNGFm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEltYWdlRWxlbWVu
dC93ZWJraXRHZXRJbWFnZS9waXhlbC10ZXN0Lmh0bWwtZGlzYWJsZWQKQEAgLTAsMCArMSw0MiBA
QAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+
Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQ+CisKK3ZhciBpID0gbmV3IEltYWdlKCk7
CitpLnNyYyA9ICIuLi8uLi9yZXNvdXJjZXMvbW96aWxsYS5naWYiOworCit2YXIgc3VjY2Vzc0Nh
bGxiYWNrU2hyaW5rID0gZnVuY3Rpb24oYmxvYikgeworICAgIHZhciBuZXdJbWcxID0gbmV3IElt
YWdlKCk7CisgICAgbmV3SW1nMS5zcmMgPSBibG9iLnVybDsKKyAgICBuZXdJbWcxLm9ubG9hZCA9
IGZ1bmN0aW9uKCkgeworICAgICAgICBpLndlYmtpdEdldEltYWdlKCJpbWFnZS9wbmciLCBzdWNj
ZXNzQ2FsbGJhY2tFeHBhbmQsIGVycm9yQ2FsbGJhY2ssIHsgd2lkdGggOiAzMjAsIGhlaWdodCA6
IDIzNiB9KTsKKyAgICB9OworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIiku
YXBwZW5kQ2hpbGQobmV3SW1nMSk7Cit9OworCit2YXIgc3VjY2Vzc0NhbGxiYWNrRXhwYW5kID0g
ZnVuY3Rpb24oYmxvYikgeworICAgIHZhciBuZXdJbWcyID0gbmV3IEltYWdlKCk7CisgICAgbmV3
SW1nMi5zcmMgPSBibG9iLnVybDsKKyAgICBuZXdJbWcyLm9ubG9hZCA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfTsKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKG5ld0ltZzIpOwor
fTsKKwordmFyIGVycm9yQ2FsbGJhY2sgPSBmdW5jdGlvbihlcnJvcikgeworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK307CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKKyAgICBpLndlYmtpdEdldEltYWdlKCJpbWFnZS9wbmciLCBzdWNjZXNzQ2Fs
bGJhY2tTaHJpbmssIGVycm9yQ2FsbGJhY2ssIHsgd2lkdGggOiAxMCwgaGVpZ2h0IDogOCB9KTsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxJbWFnZUVsZW1lbnQv
d2Via2l0R2V0SW1hZ2UvcHJlc2VydmUtYXNwZWN0LXJhdGlvLXRlc3QuaHRtbC1kaXNhYmxlZCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxJbWFnZUVsZW1lbnQvd2Via2l0R2V0SW1hZ2UvcHJl
c2VydmUtYXNwZWN0LXJhdGlvLXRlc3QuaHRtbC1kaXNhYmxlZApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi45Mjk2MWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTEltYWdlRWxlbWVudC93ZWJraXRHZXRJbWFnZS9wcmVzZXJ2ZS1hc3BlY3Qt
cmF0aW8tdGVzdC5odG1sLWRpc2FibGVkCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvcHJlc2Vy
dmUtYXNwZWN0LXJhdGlvLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEltYWdlRWxlbWVudC93ZWJr
aXRHZXRJbWFnZS9zY3JpcHQtdGVzdHMvY29tcHJlc3Npb24tbGV2ZWwtdGVzdC5qcyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxJbWFnZUVsZW1lbnQvd2Via2l0R2V0SW1hZ2Uvc2NyaXB0LXRl
c3RzL2NvbXByZXNzaW9uLWxldmVsLXRlc3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uOTI3OWM5YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxJbWFnZUVsZW1lbnQvd2Via2l0R2V0SW1hZ2Uvc2NyaXB0LXRlc3RzL2NvbXByZXNzaW9u
LWxldmVsLXRlc3QuanMKQEAgLTAsMCArMSwzMCBAQAorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQg
dmFyeWluZyB0aGUgY29tcHJlc3Npb24gbGV2ZWwgYWZmZWN0cyB0aGUgc2l6ZSBvZiB0aGUgcmV0
dXJuZWQgYmxvYiIpOworCit2YXIgaSA9IG5ldyBJbWFnZSgpOworaS5zcmMgPSAiLi4vLi4vcmVz
b3VyY2VzL21vemlsbGEuZ2lmIjsKKwordmFyIHNpemVGcm9tTG93Q29tcHJlc3Npb247CisKK3Zh
ciBzdWNjZXNzQ2FsbGJhY2tMb3cgPSBmdW5jdGlvbihibG9iKSB7CisgICAgc2l6ZUZyb21Mb3dD
b21wcmVzc2lvbiA9IGJsb2Iuc2l6ZTsKKyAgICBpLndlYmtpdEdldEltYWdlKCJpbWFnZS9qcGVn
Iiwgc3VjY2Vzc0NhbGxiYWNrSGlnaCwgZXJyb3JDYWxsYmFjaywgeyBjb21wcmVzc2lvbkxldmVs
IDogMC45OSB9KTsKK307CisKK3ZhciBzdWNjZXNzQ2FsbGJhY2tIaWdoID0gZnVuY3Rpb24oYmxv
YikgeworICAgIHZhciBzaXplRnJvbUhpZ2hDb21wcmVzc2lvbiA9IGJsb2Iuc2l6ZTsKKyAgICBp
ZiAoc2l6ZUZyb21IaWdoQ29tcHJlc3Npb24gPiBzaXplRnJvbUxvd0NvbXByZXNzaW9uKQorICAg
ICAgICB0ZXN0UGFzc2VkKCJDb21wcmVzc2lvbiBsZXZlbCBvZiAwLjEgeWllbGRzIGEgc21hbGxl
ciBmaWxlIHRoYW4gY29tcHJlc3Npb24gbGV2ZWwgb2YgMC45Iik7CisgICAgZWxzZQorICAgICAg
ICB0ZXN0RmFpbGVkKCJDb21wcmVzc2lvbiBsZXZlbCBvZiAwLjEgeWllbGRzIGEgZmlsZSBvZiBz
aXplICIgKyBzaXplRnJvbUxvd0NvbXByZXNzaW9uICsgIiB3aGlsc3QgYSBjb21wcmVzc2lvbiBs
ZXZlbCBvZiAwLjkgeWllbGRzIGEgZmlsZSBvZiBzaXplICIgKyBzaXplRnJvbUhpZ2hDb21wcmVz
c2lvbik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9OworCit2YXIgZXJyb3JDYWxsYmFjayA9IGZ1
bmN0aW9uKGVycm9yKSB7CisgICAgdGVzdEZhaWxlZCgiRXJyb3IgY2FsbGJhY2sgY2FsbGVkIHdp
dGggZXJyb3I6ICIgKyBlcnJvcik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9OworCitpLndlYmtp
dEdldEltYWdlKCJpbWFnZS9qcGVnIiwgc3VjY2Vzc0NhbGxiYWNrTG93LCBlcnJvckNhbGxiYWNr
LCB7IGNvbXByZXNzaW9uTGV2ZWwgOiAwLjAxIH0pOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7Cit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxJbWFnZUVsZW1lbnQvd2Via2l0R2V0SW1hZ2Uvc2NyaXB0
LXRlc3RzL2RpbWVuc2lvbnMtdGVzdC5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxJbWFn
ZUVsZW1lbnQvd2Via2l0R2V0SW1hZ2Uvc2NyaXB0LXRlc3RzL2RpbWVuc2lvbnMtdGVzdC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzBjMjk3Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEltYWdlRWxlbWVudC93ZWJraXRHZXRJbWFn
ZS9zY3JpcHQtdGVzdHMvZGltZW5zaW9ucy10ZXN0LmpzCkBAIC0wLDAgKzEsNDEgQEAKK2Rlc2Ny
aXB0aW9uKCJUZXN0cyB0aGUgcG9zc2libGUgcmFuZ2VzIG9mIGVhY2ggZGltZW5zaW9uIGF2YWls
YWJsZSBhcyBhcmd1bWVudHMgdG8gd2Via2l0R2V0SW1hZ2UiKTsKKwordmFyIGkgPSBuZXcgSW1h
Z2UoKTsKK2kuc3JjID0gIi4uL3Jlc291cmNlcy9ibHVlX3JlY3QuanBnIjsKKwordmFyIGNvdW50
ID0gMDsKKwordmFyIHRlc3RzID0gWyBbMCwwXSwgWzAsMTAwXSwgWzEwMCwwXSwgWzEsMV0sIFs1
MDAsMV0sIFsxLDUwMF0sIFs1LDIwMF0sIFsyMDAsNV0sIFszMjAsMjQwXSwgWzEwMjQsNzY4XSwg
WzMyNzY3LDMyNzY3XSwgWzc1LCAzMjc2OF0sIFszMjc2OCwgMjVdLCBbMTAwMDAwLDEwMDAwMF0g
XTsKK3ZhciBjb3JyZWN0UmVzdWx0cyA9IFsgWzc1LDI1XSwgWzc1LDEwMF0sIFsxMDAsMjVdLCBb
MSwxXSwgWzUwMCwxXSwgWzEsNTAwXSwgWzUsMjAwXSwgWzIwMCw1XSwgWzMyMCwyNDBdLCBbNzUs
NzVdLCBbMTAyNCw3NjhdLCBbMzI3NjcsMzI3NjddLCBbNzUsIDI1XSwgWzc1LCAyNV0sIFs3NSwy
NV0gXTsKKwordmFyIHN1Y2Nlc3NDYWxsYmFjayA9IGZ1bmN0aW9uKGJsb2IpIHsKKyAgICB2YXIg
bmV3SW1nID0gbmV3IEltYWdlKCk7CisgICAgbmV3SW1nLnNyYyA9IGJsb2IudXJsOworICAgIAor
ICAgIGlmIChjb3JyZWN0UmVzdWx0c1tjb3VudF1bMF0gPT0gbmV3SW1nLndpZHRowqAmJiBjb3Jy
ZWN0UmVzdWx0c1tjb3VudF1bMV0gPT0gbmV3SW1nLmhlaWdodCkKKyAgICAgICAgdGVzdFBhc3Nl
ZCgiU3VjY2Vzc2Z1bCByZXNpemUgdG8gIiArIHRlc3RzW2NvdW50XVswXSArICJ4IiArIHRlc3Rz
W2NvdW50XVsxXSArICIgKGFjdHVhbGx5ICIgKyBjb3JyZWN0UmVzdWx0c1tjb3VudF1bMF0gKyAi
eCIgKyBjb3JyZWN0UmVzdWx0c1tjb3VudF1bMV0gKyAiKSIpOworICAgIGVsc2UKKyAgICAgICAg
dGVzdEZhaWxlZCgiUmVzaXplIHRvICIgKyB0ZXN0c1tjb3VudF1bMF0gKyAieCIgKyB0ZXN0c1tj
b3VudF1bMV0gKyAiIChzaG91bGQgYmUgIiArIGNvcnJlY3RSZXN1bHRzW2NvdW50XVswXSArICJ4
IiArIGNvcnJlY3RSZXN1bHRzW2NvdW50XVsxXSArICIpIHJldHVybmVkIGFuIGltYWdlIG9mICIg
KyBuZXdJbWcud2lkdGggKyAieCIgKyBuZXdJbWcuaGVpZ2h0ICsgIiBpbnN0ZWFkIik7CisgICAg
CisgICAgY291bnQrKzsKKyAgICBuZXh0RGltZW5zaW9ucygpOworfTsKKwordmFyIGVycm9yQ2Fs
bGJhY2sgPSBmdW5jdGlvbihlcnJvcikgeworICAgIHRlc3RGYWlsZWQoIkVycm9yIGNhbGxiYWNr
IGNhbGxlZCBmb3IgcmVzaXppbmcgIiArIHRlc3RzW2NvdW50XVswXSArICJ4IiArIHRlc3RzW2Nv
dW50XVsxXSArICIgaW1hZ2Ugd2l0aCBlcnJvcjogIiArIGVycm9yKTsKKyAgICBjb3VudCsrOwor
ICAgIG5leHREaW1lbnNpb25zKCk7Cit9OworCitmdW5jdGlvbiBuZXh0RGltZW5zaW9ucygpIHsK
KyAgICBpZiAoY291bnQgPT0gdGVzdHMubGVuZ3RoKSB7CisgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGkud2Via2l0R2V0SW1hZ2UoImltYWdlL3Bu
ZyIsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgeyB3aWR0aCA6IHRlc3RzW2NvdW50
XVswXSwgaGVpZ2h0IDogdGVzdHNbY291bnRdWzFdLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvIDogZmFs
c2UgfSk7Cit9CisKK25leHREaW1lbnNpb25zKCk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTEltYWdlRWxlbWVudC93ZWJraXRHZXRJbWFnZS9zY3JpcHQt
dGVzdHMvcHJlc2VydmUtYXNwZWN0LXJhdGlvLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MSW1hZ2VFbGVtZW50L3dlYmtpdEdldEltYWdlL3NjcmlwdC10ZXN0cy9wcmVzZXJ2ZS1h
c3BlY3QtcmF0aW8tdGVzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44
NTdkOTljCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEltYWdl
RWxlbWVudC93ZWJraXRHZXRJbWFnZS9zY3JpcHQtdGVzdHMvcHJlc2VydmUtYXNwZWN0LXJhdGlv
LXRlc3QuanMKQEAgLTAsMCArMSw0MSBAQAorZGVzY3JpcHRpb24oIlRlc3RzIHRoZSBwb3NzaWJs
ZSB2YWx1ZXMgZm9yIHByZXNlcnZlQXNwZWN0UmF0aW8gYW5kIGhvdyB0aGV5IGFmZmVjdCB0aGUg
aW1hZ2UgcmVzaXppbmciKTsKKwordmFyIGkgPSBuZXcgSW1hZ2UoKTsKK2kuc3JjID0gIi4uL3Jl
c291cmNlcy9ibHVlX3JlY3QuanBnIjsKKwordmFyIGNvdW50ID0gMDsKKwordmFyIHRlc3RzID0g
WyBbMTAwLDEwMCxmYWxzZV0sIFsxMCwxMCxmYWxzZV0sIFsxNTAsMTUwLHRydWVdLCBbMTAwMCw1
MCx0cnVlXSwgWzE1LDE1LHRydWVdLCBbNzUsNSx0cnVlXSBdOwordmFyIGNvcnJlY3RSZXN1bHRz
ID0gWyBbMTAwLDEwMF0sIFsxMCwxMF0sIFsxNTAsNTBdLCBbMTUwLDUwXSwgWzE1LDVdLCBbMTUs
NV0gXTsKKwordmFyIHN1Y2Nlc3NDYWxsYmFjayA9IGZ1bmN0aW9uKGJsb2IpIHsKKyAgICB2YXIg
bmV3SW1nID0gbmV3IEltYWdlKCk7CisgICAgbmV3SW1nLnNyYyA9IGJsb2IudXJsOworICAgIAor
ICAgIGlmIChjb3JyZWN0UmVzdWx0c1tjb3VudF1bMF0gPT0gbmV3SW1nLndpZHRowqAmJiBjb3Jy
ZWN0UmVzdWx0c1tjb3VudF1bMV0gPT0gbmV3SW1nLmhlaWdodCkKKyAgICAgICAgdGVzdFBhc3Nl
ZCgiU3VjY2Vzc2Z1bCByZXNpemUgdG8gIiArIHRlc3RzW2NvdW50XVswXSArICJ4IiArIHRlc3Rz
W2NvdW50XVsxXSArICIgd2l0aCBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSIgKyB0ZXN0c1tjb3VudF1b
Ml0gKyAiKGFjdHVhbGx5ICIgKyBjb3JyZWN0UmVzdWx0c1tjb3VudF1bMF0gKyAieCIgKyBjb3Jy
ZWN0UmVzdWx0c1tjb3VudF1bMV0gKyAiKSIpOworICAgIGVsc2UKKyAgICAgICAgdGVzdEZhaWxl
ZCgiUmVzaXplIHRvICIgKyB0ZXN0c1tjb3VudF1bMF0gKyAieCIgKyB0ZXN0c1tjb3VudF1bMV0g
KyAiIGltYWdlIHVzaW5nIHByZXNlcnZlQXNwZWN0UmF0aW89IiArIHRlc3RzW2NvdW50XVsyXSAr
ICIgKHNob3VsZCBiZSAiICsgY29ycmVjdFJlc3VsdHNbY291bnRdWzBdICsgIngiICsgY29ycmVj
dFJlc3VsdHNbY291bnRdWzFdICsgIikgcmV0dXJuZWQgYW4gaW1hZ2Ugb2YgIiArIG5ld0ltZy53
aWR0aCArICJ4IiArIG5ld0ltZy5oZWlnaHQgKyAiIGluc3RlYWQiKTsKKyAgICAKKyAgICBjb3Vu
dCsrOworICAgIG5leHREaW1lbnNpb25zKCk7Cit9OworCit2YXIgZXJyb3JDYWxsYmFjayA9IGZ1
bmN0aW9uKGVycm9yKSB7CisgICAgdGVzdEZhaWxlZCgiRXJyb3IgY2FsbGJhY2sgY2FsbGVkIGZv
ciByZXNpemluZyAiICsgdGVzdHNbY291bnRdWzBdICsgIngiICsgdGVzdHNbY291bnRdWzFdICsg
IiBpbWFnZSB1c2luZyBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSIgKyB0ZXN0c1tjb3VudF1bMl0gKyAi
IHdpdGggZXJyb3I6ICIgKyBlcnJvcik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9OworCitmdW5j
dGlvbiBuZXh0RGltZW5zaW9ucygpIHsKKyAgICBpZiAoY291bnQgPT0gdGVzdHMubGVuZ3RoKSB7
CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAor
ICAgIGkud2Via2l0R2V0SW1hZ2UoImltYWdlL3BuZyIsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JD
YWxsYmFjaywgeyB3aWR0aCA6IHRlc3RzW2NvdW50XVswXSwgaGVpZ2h0IDogdGVzdHNbY291bnRd
WzFdLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvIDogdGVzdHNbY291bnRdWzJdIH0pOworfQorCituZXh0
RGltZW5zaW9ucygpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cit3aW5kb3cuc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxJbWFnZUVsZW1lbnQvd2Via2l0R2V0SW1hZ2Uvc2NyaXB0LXRlc3RzL3Rlc3QtY2FsbGJh
Y2tzLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEltYWdlRWxlbWVudC93ZWJraXRHZXRJ
bWFnZS9zY3JpcHQtdGVzdHMvdGVzdC1jYWxsYmFja3MuanMKaW5kZXggZGY0ODM3Mi4uNGZlYTc4
YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEltYWdlRWxlbWVudC93ZWJr
aXRHZXRJbWFnZS9zY3JpcHQtdGVzdHMvdGVzdC1jYWxsYmFja3MuanMKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTEltYWdlRWxlbWVudC93ZWJraXRHZXRJbWFnZS9zY3JpcHQtdGVzdHMv
dGVzdC1jYWxsYmFja3MuanMKQEAgLTMsMTMgKzMsMjMgQEAgZGVzY3JpcHRpb24oIlRlc3RzIHRo
YXQgdGhlIGNhbGxiYWNrcyB3b3JrIGNvcnJlY3RseS4iKTsKIHZhciBpID0gbmV3IEltYWdlKCk7
CiBpLnNyYyA9ICIuLi9yZXNvdXJjZXMvYmx1ZV9yZWN0LmpwZyI7CiAKLXZhciBzdWNjZXNzQ2Fs
bGJhY2sgPSBmdW5jdGlvbihibG9iKSB7Ci0gICAgdGVzdEZhaWxlZCgiU3VjY2VzcyBjYWxsYmFj
ayB3YXMgaW5jb3JyZWN0bHkgY2FsbGVkIik7Cit2YXIgZW1wdHlTdWNjZXNzQ2FsbGJhY2sgPSBm
dW5jdGlvbigpIHsKKyAgICB0ZXN0UGFzc2VkKCJObyBwYXJhbWV0ZXIgc3VjY2VzcyBjYWxsYmFj
ayB3YXMgY2FsbGVkIik7CisgICAgaS53ZWJraXRHZXRJbWFnZSgiaW1hZ2UvcG5nIiwgc2luZ2xl
UGFyYW1TdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOworfTsKKwordmFyIHNpbmdsZVBh
cmFtU3VjY2Vzc0NhbGxiYWNrID0gZnVuY3Rpb24oYmxvYikgeworICAgIHRlc3RQYXNzZWQoIlNp
bmdsZSBwYXJhbWV0ZXIgc3VjY2VzcyBjYWxsYmFjayB3YXMgY2FsbGVkIik7CisgICAgaS53ZWJr
aXRHZXRJbWFnZSgiaW1hZ2UvcG5nIiwgZXh0cmFQYXJhbVN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JD
YWxsYmFjayk7Cit9OworCit2YXIgZXh0cmFQYXJhbVN1Y2Nlc3NDYWxsYmFjayA9IGZ1bmN0aW9u
KGJsb2IsIGV4dHJhKSB7CisgICAgdGVzdFBhc3NlZCgiU3VjY2VzcyBjYWxsYmFjayB3aXRoIGV4
dHJhIHBhcmFtZXRlciB3YXMgY2FsbGVkIik7CiAgICAgZmluaXNoSlNUZXN0KCk7CiB9OwogCiB2
YXIgZXJyb3JDYWxsYmFjayA9IGZ1bmN0aW9uKGVycm9yKSB7Ci0gICAgdGVzdFBhc3NlZCgiRXJy
b3IgY2FsbGJhY2sgd2FzIGNvcnJlY3RseSBjYWxsZWQgd2l0aCBvdXRwdXQ6ICIgKyBlcnJvcik7
CisgICAgdGVzdEZhaWxlZCgiRXJyb3IgY2FsbGJhY2sgd2FzIGluY29ycmVjdGx5IGNhbGxlZCB3
aXRoIG91dHB1dDogIiArIGVycm9yKTsKICAgICBmaW5pc2hKU1Rlc3QoKTsKIH07CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxJbWFnZUVsZW1lbnQvd2Via2l0R2V0SW1h
Z2UvdGVzdC1vdXRwdXQtdHlwZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTEltYWdlRWxlbWVudC93ZWJraXRHZXRJbWFnZS90ZXN0LW91dHB1dC10eXBlcy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGIxMzc4OQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxJbWFnZUVsZW1lbnQvd2Via2l0
R2V0SW1hZ2UvdGVzdC1vdXRwdXQtdHlwZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEltYWdlRWxlbWVudC93ZWJraXRH
ZXRJbWFnZS90ZXN0LW91dHB1dC10eXBlcy5odG1sLWRpc2FibGVkIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTEltYWdlRWxlbWVudC93ZWJraXRHZXRJbWFnZS90ZXN0LW91dHB1dC10eXBlcy5o
dG1sLWRpc2FibGVkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllYjU1NGQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MSW1hZ2VFbGVtZW50
L3dlYmtpdEdldEltYWdlL3Rlc3Qtb3V0cHV0LXR5cGVzLmh0bWwtZGlzYWJsZWQKQEAgLTAsMCAr
MSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBz
cmM9InNjcmlwdC10ZXN0cy90ZXN0LW91dHB1dC10eXBlcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDgyZWUwODcuLjdhY2YzYzkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTAtMDYt
MjUgIFN0ZXJsaW5nIFN3aWdhcnQgIDxzc3dpZ2FydEBnb29nbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxsb3dzIElt
YWdlLndlYmtpdEdldEltYWdlIHRvIGFjdHVhbGx5IHRvIHRoZSByZXNpemluZyBvZiBhbiBpbWFn
ZS4gU3VwcG9ydAorICAgICAgICBmb3IgcHJlc2VydmVBc3BlY3RSYXRpbyBhbmQgbGltaXRlZCBz
dXBwb3J0IGZvciBjb21wcmVzc2lvbkxldmVsIGFsc28gaW5jbHVkZWQuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTIxOAorCisgICAgICAgICogaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1l
bnQ6OndlYmtpdEdldEltYWdlKTogQWRkZWQgTUlNRSB0eXBlIGNoZWNraW5nIG9uIHRoZSBtYWlu
IHRocmVhZC4KKyAgICAgICAgKiBodG1sL0ltYWdlUmVzaXplclRocmVhZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZVJlc2l6ZXJUaHJlYWQ6OmltYWdlUmVzaXplclRocmVhZCk6IEFkZGVk
IGNhbGwgdG8gcmVzaXplIGltYWdlLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSZXNpemVyVGhy
ZWFkOjpyZXNpemVJbWFnZSk6IERvZXMgcmVzaXppbmcuCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZVJlc2l6ZXJUaHJlYWQ6OmdldERlc3RTaXplKTogQWRkZWQsIGdldHMgZGVzdGluYXRpb24gc2l6
ZSBiYXNlZCBvbiBBc3BlY3RSYXRpb09wdGlvbiBhbmQgZGltZW5zaW9ucy4KKyAgICAgICAgKiBo
dG1sL0ltYWdlUmVzaXplclRocmVhZC5oOiBDaGFuZ2VzIGZvciBhYm92ZSBtZXRob2RzLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6IEFkZGVkIHRvQnl0ZXMsIHdo
aWNoIGdldHMgaW1hZ2UgZGF0YSBmcm9tIHRoZSBidWZmZXIuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXI6OnRvQnl0ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0cuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyOjp0b0J5dGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9JbWFnZUJ1
ZmZlckhhaWt1LmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dG9C
eXRlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHA6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRvQnl0ZXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcDogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dG9CeXRlcyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJXaW5jZS5jcHA6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRvQnl0ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3d4L0ltYWdlQnVmZmVyV3guY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjp0b0J5dGVzKToKKwogMjAxMC0wNi0yMSAgU3RlcmxpbmcgU3dpZ2FydCAgPHNzd2ln
YXJ0QGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0
bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggOWE4ZjRiMS4uOTE1MWZjOCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9I
VE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkltYWdlLmgi
CiAjaW5jbHVkZSAiSW1hZ2VSZXNpemVyRXJyb3JDYWxsYmFjay5oIgogI2luY2x1ZGUgIkltYWdl
UmVzaXplclN1Y2Nlc3NDYWxsYmFjay5oIgorI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIK
ICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgogI2luY2x1ZGUgIlJlc2l6ZU9wdGlvbnMuaCIKICNp
bmNsdWRlICJTY3JpcHRFdmVudExpc3RlbmVyLmgiCkBAIC00ODUsNiArNDg2LDcgQEAgdm9pZCBI
VE1MSW1hZ2VFbGVtZW50Ojp3ZWJraXRHZXRJbWFnZShTdHJpbmcgbWltZVR5cGUsIFBhc3NSZWZQ
dHI8SW1hZ2VSZXNpemVyU3UKICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KKyAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0
ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKTsKIAogICAgIEFzeW5jSW1hZ2VS
ZXNpemVyOjpzdGFydChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1faW1hZ2VMb2FkZXIuaW1h
Z2UoKSwgb3V0cHV0VHlwZSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCByZXNpemVP
cHRpb25zKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQu
Y3BwIGIvV2ViQ29yZS9odG1sL0ltYWdlUmVzaXplclRocmVhZC5jcHAKaW5kZXggNGU5NzA0Ni4u
YzliYjJkZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0ltYWdlUmVzaXplclRocmVhZC5jcHAK
KysrIGIvV2ViQ29yZS9odG1sL0ltYWdlUmVzaXplclRocmVhZC5jcHAKQEAgLTM0LDEwICszNCwx
MyBAQAogI2luY2x1ZGUgIkltYWdlUmVzaXplclRocmVhZC5oIgogCiAjaW5jbHVkZSAiQml0bWFw
SW1hZ2UuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFnZS5o
IgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAK
ICNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtODUsMTQgKzg4LDY1IEBAIHZvaWQqIEltYWdlUmVzaXplclRo
cmVhZDo6aW1hZ2VSZXNpemVyVGhyZWFkU3RhcnQodm9pZCogdGhyZWFkKQogCiB2b2lkKiBJbWFn
ZVJlc2l6ZXJUaHJlYWQ6OmltYWdlUmVzaXplclRocmVhZCgpCiB7Ci0gICAgLy8gRklYTUU6IERv
IHJlc2l6aW5nLCBjcmVhdGUgYmxvYiwgYW5kIGNhdGNoIGFueSBlcnJvcnMuCi0KKyAgICByZXNp
emVJbWFnZSgpOwogICAgIGNhbGxPbk1haW5UaHJlYWQocmV0dXJuQmxvYk9yRXJyb3IsIHN0YXRp
Y19jYXN0PHZvaWQqPihtX2NhbGxiYWNrSW5mbykpOworICAgIAogICAgIGRldGFjaFRocmVhZCht
X3RocmVhZElEKTsKICAgICBkZWxldGUgdGhpczsKICAgICByZXR1cm4gMDsKIH0KIAordm9pZCBJ
bWFnZVJlc2l6ZXJUaHJlYWQ6OnJlc2l6ZUltYWdlKCkKK3sKKyAgICBPd25QdHI8SW1hZ2VCdWZm
ZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoSW50U2l6ZShtX2ltYWdlLT53aWR0aCgp
LCBtX2ltYWdlLT5oZWlnaHQoKSkpOworICAgIGlmICghYnVmZmVyKQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBEcmF3IGltYWdlIGludG8gbmV3IGJvdW5kcy4KKyAgICBGbG9hdFJlY3Qgc3Jj
KEZsb2F0UG9pbnQoKSwgbV9pbWFnZS0+c2l6ZSgpKTsKKyAgICBGbG9hdFJlY3QgZGVzdChGbG9h
dFBvaW50KCksIGdldERlc3RTaXplKCkpOworICAgIGJ1ZmZlci0+Y29udGV4dCgpLT5kcmF3SW1h
Z2UobV9pbWFnZS5nZXQoKSwgRGV2aWNlQ29sb3JTcGFjZSwgZGVzdCwgc3JjLCBDb21wb3NpdGVT
b3VyY2VPdmVyLCBmYWxzZSk7CisKKyAgICBTdHJpbmcgbWltZVR5cGU7CisgICAgaWYgKG1fb3V0
cHV0VHlwZSA9PSBBc3luY0ltYWdlUmVzaXplcjo6SlBFRykKKyAgICAgICAgbWltZVR5cGUgPSAi
aW1hZ2UvanBlZyI7CisgICAgZWxzZSBpZiAobV9vdXRwdXRUeXBlID09IEFzeW5jSW1hZ2VSZXNp
emVyOjpQTkcpCisgICAgICAgIG1pbWVUeXBlID0gImltYWdlL3BuZyI7CisgICAgQVNTRVJUKCFt
aW1lVHlwZS5pc0VtcHR5KCkpOworCisgICAgLy8gRW5jb2RlLgorICAgIFZlY3RvcjxjaGFyPiBp
bWFnZUJ5dGVzID0gYnVmZmVyLT50b0J5dGVzKG1pbWVUeXBlLCAmbV9xdWFsaXR5KTsKKyAgICBp
ZiAoIWltYWdlQnl0ZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTog
Um90YXRlL2ZsaXAgaW1hZ2UgYmFzZWQgb24gbV9vcmllbnRhdGlvbk9wdGlvbiBhbmQgdGhlIGlt
YWdlJ3MgRVhJRiBvcmllbnRhdGlvbiB2YWx1ZS4KKyAgICAvLyBGSVhNRTogQ29weSBuZWNlc3Nh
cnkgRVhJRiBmaWVsZHMgZnJvbSBvbGQgaW1hZ2UgdG8gbmV3IGltYWdlLgorCisgICAgQmxvYkl0
ZW1MaXN0IGJsb2JJdGVtTGlzdCgxKTsKKyAgICBibG9iSXRlbUxpc3RbMF0gPSBCeXRlQXJyYXlC
bG9iSXRlbTo6Y3JlYXRlKGltYWdlQnl0ZXMuZGF0YSgpLCBpbWFnZUJ5dGVzLnNpemUoKSk7Cisg
ICAgCisgICAgUmVmUHRyPEJsb2I+IGJsb2IgPSBCbG9iOjpjcmVhdGUobWltZVR5cGUsIGJsb2JJ
dGVtTGlzdCk7CisgICAgbV9jYWxsYmFja0luZm8tPmJsb2IgPSBibG9iOworfQorCitGbG9hdFNp
emUgSW1hZ2VSZXNpemVyVGhyZWFkOjpnZXREZXN0U2l6ZSgpCit7CisgICAgaWYgKCFtX2FzcGVj
dFJhdGlvT3B0aW9uID09IFJlc2l6ZU9wdGlvbnM6OlByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAg
ICAgIHJldHVybiBGbG9hdFNpemUobV9kZXNpcmVkQm91bmRzKTsKKworICAgIC8vIFRyeSBub3Jt
YWxpemluZyB3aWR0aC4KKyAgICBpbnQgbmV3V2lkdGggPSBtX2Rlc2lyZWRCb3VuZHMud2lkdGgo
KTsKKyAgICBpbnQgbmV3SGVpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50Pihyb3VuZChzdGF0aWNfY2Fz
dDxkb3VibGU+KG1faW1hZ2UtPmhlaWdodCgpKSAqIG5ld1dpZHRoIC8gbV9pbWFnZS0+d2lkdGgo
KSkpOworCisgICAgLy8gSWYgaGVpZ2h0IHdvdWxkIGJlIHRvbyBsYXJnZSB0byBmaXQgaW4gYm91
bmRzLCBub3JtYWxpemUgaXQgaW5zdGVhZC4KKyAgICBpZiAobmV3SGVpZ2h0ID4gbV9kZXNpcmVk
Qm91bmRzLmhlaWdodCgpKSB7CisgICAgICAgIG5ld0hlaWdodCA9IG1fZGVzaXJlZEJvdW5kcy5o
ZWlnaHQoKTsKKyAgICAgICAgbmV3V2lkdGggPSBzdGF0aWNfY2FzdDxpbnQ+KHJvdW5kKHN0YXRp
Y19jYXN0PGRvdWJsZT4obV9pbWFnZS0+d2lkdGgoKSkgKiBuZXdIZWlnaHQgLyBtX2ltYWdlLT5o
ZWlnaHQoKSkpOworICAgIH0KKworICAgIHJldHVybiBGbG9hdFNpemUobmV3V2lkdGgsIG5ld0hl
aWdodCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJ
TUFHRV9SRVNJWkVSKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0ltYWdlUmVzaXplclRocmVh
ZC5oIGIvV2ViQ29yZS9odG1sL0ltYWdlUmVzaXplclRocmVhZC5oCmluZGV4IDE1YmQzYmQuLjE2
MTM5NmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuaAorKysg
Yi9XZWJDb3JlL2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmgKQEAgLTQwLDYgKzQwLDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQml0bWFwSW1hZ2U7CitjbGFzcyBGbG9hdFNpemU7
CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEltYWdlUmVzaXplclRocmVhZCB7CkBAIC01
MSw2ICs1Miw4IEBAIHByaXZhdGU6CiAgICAgSW1hZ2VSZXNpemVyVGhyZWFkKEFzeW5jSW1hZ2VS
ZXNpemVyOjpDYWxsYmFja0luZm8qLCBBc3luY0ltYWdlUmVzaXplcjo6T3V0cHV0VHlwZSwgSW50
U2l6ZSBkZXNpcmVkQm91bmRzLCBkb3VibGUgcXVhbGl0eSwgUmVzaXplT3B0aW9uczo6QXNwZWN0
UmF0aW9PcHRpb24sIFJlc2l6ZU9wdGlvbnM6Ok9yaWVudGF0aW9uT3B0aW9uKTsKICAgICBzdGF0
aWMgdm9pZCogaW1hZ2VSZXNpemVyVGhyZWFkU3RhcnQodm9pZCopOwogICAgIHZvaWQqIGltYWdl
UmVzaXplclRocmVhZCgpOworICAgIHZvaWQgcmVzaXplSW1hZ2UoKTsKKyAgICBGbG9hdFNpemUg
Z2V0RGVzdFNpemUoKTsKIAogICAgIC8vIFRocmVhZGluZyBhdHRyaWJ1dGVzLgogICAgIFRocmVh
ZElkZW50aWZpZXIgbV90aHJlYWRJRDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuaAppbmRleCA5ZjliYTdlLi41ZjQ5MGRhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5oCkBAIC04Miw4ICs4MiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICAgICAgdm9pZCBwdXRVbm11bHRpcGxpZWRJbWFnZURhdGEoSW1hZ2VEYXRhKiwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCk7CiAgICAgICAgIHZv
aWQgcHV0UHJlbXVsdGlwbGllZEltYWdlRGF0YShJbWFnZURhdGEqLCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KTsKLSAgICAgICAgCisKKyNpZiBF
TkFCTEUoSU1BR0VfUkVTSVpFUikKKyAgICAgICAgVmVjdG9yPGNoYXI+IHRvQnl0ZXMoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91YmxlKiBxdWFsaXR5ID0gMCkgY29uc3Q7CisjZW5k
aWYKICAgICAgICAgU3RyaW5nIHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25z
dCBkb3VibGUqIHF1YWxpdHkgPSAwKSBjb25zdDsKKyAgICAgICAgCiAjaWYgIVBMQVRGT1JNKENH
KQogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJu
IEFmZmluZVRyYW5zZm9ybSgpOyB9CiAgICAgICAgIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShJ
bWFnZUNvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgSW1hZ2VDb2xvclNwYWNlIGRzdENvbG9yU3Bh
Y2UpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyby5jcHAKaW5kZXggYzI5OGUxOC4uYzQ3ZTA2NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC0yODQsNiAr
Mjg0LDI0IEBAIHN0YXRpYyBjYWlyb19zdGF0dXNfdCB3cml0ZUZ1bmN0aW9uKHZvaWQqIGNsb3N1
cmUsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuCiAgICAgcmV0dXJuIENBSVJPX1NUQVRV
U19TVUNDRVNTOwogfQogCisjaWYgRU5BQkxFKElNQUdFX1JFU0laRVIpCitWZWN0b3I8Y2hhcj4g
SW1hZ2VCdWZmZXI6OnRvQnl0ZXMoY29uc3QgU3RyaW5nJiwgY29uc3QgZG91YmxlKikgY29uc3QK
K3sKKyAgICBjYWlyb19zdXJmYWNlX3QqIGltYWdlID0gY2Fpcm9fZ2V0X3RhcmdldChjb250ZXh0
KCktPnBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm4g
VmVjdG9yPGNoYXI+KCk7CisKKyAgICBTdHJpbmcgYWN0dWFsTWltZVR5cGUoImltYWdlL3BuZyIp
OworICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JF
bmNvZGluZyhtaW1lVHlwZSkpCisgICAgICAgIGFjdHVhbE1pbWVUeXBlID0gbWltZVR5cGU7CisK
KyAgICBWZWN0b3I8Y2hhcj4gYnl0ZXM7CisgICAgLy8gT25seSBQTkcgb3V0cHV0IGlzIHN1cHBv
cnRlZCBmb3Igbm93LgorICAgIGNhaXJvX3N1cmZhY2Vfd3JpdGVfdG9fcG5nX3N0cmVhbShpbWFn
ZSwgd3JpdGVGdW5jdGlvbiwgJmJ5dGVzKTsKKyAgICByZXR1cm4gYnl0ZXM7Cit9CisjZW5kaWYK
KwogU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Y29uc3QgZG91YmxlKikgY29uc3QKIHsKICAgICBjYWlyb19zdXJmYWNlX3QqIGltYWdlID0gY2Fp
cm9fZ2V0X3RhcmdldChjb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4IGZlN2Y4M2EuLmZi
Mzg4Y2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDRy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
LmNwcApAQCAtMjgzLDYgKzI4Myw1MSBAQCBzdGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1
dGlGcm9tTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICNlbmRpZgogfQogCisjaWYg
RU5BQkxFKElNQUdFX1JFU0laRVIpCisvLyBGSVhNRTogSXQgd291bGQgYmUgbmljZSB0byByZWZh
Y3RvciB0b0J5dGVzIGFuZCB0b0RhdGFVUkwsIGJ1dCBJIGRvbid0IGtub3cgaG93IHRvCisvLyBw
YXNzIFJldGFpblB0cnMgYmV0d2VlbiBtZXRob2RzLgorVmVjdG9yPGNoYXI+IEltYWdlQnVmZmVy
Ojp0b0J5dGVzKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IGRvdWJsZSogcXVhbGl0eSkg
Y29uc3QKK3sKKyAgICAvLyBDb3JyZWN0IE1JTUUgdHlwZSBjaGVja2VkIGVhcmxpZXIsIHNvIG5v
IGFzc2VydCBpcyBuZWNlc3NhcnkuCisKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2Uo
QWRvcHRDRiwgQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dCgpLT5wbGF0Zm9ybUNv
bnRleHQoKSkpOworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJldHVybiBWZWN0b3I8Y2hhcj4o
KTsKKworICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBkYXRhKEFkb3B0Q0YsIENGRGF0
YUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCkpOworICAgIGlmICghZGF0YSkK
KyAgICAgICAgcmV0dXJuIFZlY3RvcjxjaGFyPigpOworCisgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiB1dGkgPSB1dGlGcm9tTUlNRVR5cGUobWltZVR5cGUpOworICAgIEFTU0VSVCh1dGkpOwor
CisgICAgUmV0YWluUHRyPENHSW1hZ2VEZXN0aW5hdGlvblJlZj4gZGVzdGluYXRpb24oQWRvcHRD
RiwgQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEoZGF0YS5nZXQoKSwgdXRpLmdldCgp
LCAxLCAwKSk7CisgICAgaWYgKCFkZXN0aW5hdGlvbikKKyAgICAgICAgcmV0dXJuIFZlY3Rvcjxj
aGFyPigpOworCisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gaW1hZ2VQcm9wZXJ0aWVz
ID0gMDsKKyAgICBpZiAoQ0ZFcXVhbCh1dGkuZ2V0KCksIGpwZWdVVEkoKSkgJiYgcXVhbGl0eSAm
JiAqcXVhbGl0eSA+PSAwLjAgJiYgKnF1YWxpdHkgPD0gMS4wKSB7CisgICAgICAgIC8vIEFwcGx5
IHRoZSBjb21wcmVzc2lvbiBxdWFsaXR5IHRvIHRoZSBpbWFnZSBkZXN0aW5hdGlvbi4KKyAgICAg
ICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiBjb21wcmVzc2lvblF1YWxpdHkoQWRvcHRDRiwgQ0ZO
dW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyRG91YmxlVHlwZSwgcXVh
bGl0eSkpOworICAgICAgICBjb25zdCB2b2lkKiBrZXkgPSBrQ0dJbWFnZURlc3RpbmF0aW9uTG9z
c3lDb21wcmVzc2lvblF1YWxpdHk7CisgICAgICAgIGNvbnN0IHZvaWQqIHZhbHVlID0gY29tcHJl
c3Npb25RdWFsaXR5LmdldCgpOworICAgICAgICBpbWFnZVByb3BlcnRpZXMuYWRvcHRDRihDRkRp
Y3Rpb25hcnlDcmVhdGUoMCwgJmtleSwgJnZhbHVlLCAxLCAma0NGVHlwZURpY3Rpb25hcnlLZXlD
YWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgfQorCisg
ICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoZGVzdGluYXRpb24uZ2V0KCksIGltYWdlLmdl
dCgpLCBpbWFnZVByb3BlcnRpZXMuZ2V0KCkpOworICAgIENHSW1hZ2VEZXN0aW5hdGlvbkZpbmFs
aXplKGRlc3RpbmF0aW9uLmdldCgpKTsKKworICAgIGNvbnN0IGNoYXIqIGRhdGFJbkJ5dGVzID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgp
KSk7CisgICAgdW5zaWduZWQgaW50IGRhdGFMZW5ndGggPSBDRkRhdGFHZXRMZW5ndGgoZGF0YS5n
ZXQoKSk7CisgICAgCisgICAgVmVjdG9yPGNoYXI+IGJ5dGVzVmVjdG9yKGRhdGFMZW5ndGgpOwor
ICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZGF0YUxlbmd0aDsgaSsrKQorICAgICAg
ICBieXRlc1ZlY3RvcltpXSA9IGRhdGFJbkJ5dGVzW2ldOworICAgIAorICAgIHJldHVybiBieXRl
c1ZlY3RvcjsKK30KKyNlbmRpZgorCiBTdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBkb3VibGUqIHF1YWxpdHkpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29k
aW5nKG1pbWVUeXBlKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hh
aWt1L0ltYWdlQnVmZmVySGFpa3UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYWlr
dS9JbWFnZUJ1ZmZlckhhaWt1LmNwcAppbmRleCBjNWRlNDg1Li4wMzI5OTIyIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0ltYWdlQnVmZmVySGFpa3UuY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW1hZ2VCdWZmZXJIYWlrdS5jcHAK
QEAgLTMxMCw2ICszMTAsMTQgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0UHJlbXVsdGlwbGllZElt
YWdlRGF0YShJbWFnZURhdGEqIHNvdXJjZSwgY29uc3QgSW50UmVjdCYgc28KICAgICBwdXRJbWFn
ZURhdGEoc291cmNlLCBzb3VyY2VSZWN0LCBkZXN0UG9pbnQsIG1fZGF0YSwgbV9zaXplLCB0cnVl
KTsKIH0KIAorI2lmIEVOQUJMRShJTUFHRV9SRVNJWkVSKQorVmVjdG9yPGNoYXI+IEltYWdlQnVm
ZmVyOjp0b0J5dGVzKGNvbnN0IFN0cmluZyYsIGNvbnN0IGRvdWJsZSopIGNvbnN0Cit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gVmVjdG9yPGNoYXI+KCk7Cit9CisjZW5kaWYK
KwogU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Y29uc3QgZG91YmxlKikgY29uc3QKIHsKICAgICBpZiAoIU1JTUVUeXBlUmVnaXN0cnk6OmlzU3Vw
cG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKG1pbWVUeXBlKSkKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCmluZGV4IGU0NjkxM2MuLjNiYjVi
YzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJR
dC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNw
cApAQCAtMjczLDYgKzI3MywxNCBAQCB2b2lkIEltYWdlQnVmZmVyOjpwdXRQcmVtdWx0aXBsaWVk
SW1hZ2VEYXRhKEltYWdlRGF0YSogc291cmNlLCBjb25zdCBJbnRSZWN0JiBzbwogICAgIHB1dElt
YWdlRGF0YTxQcmVtdWx0aXBsaWVkPihzb3VyY2UsIHNvdXJjZVJlY3QsIGRlc3RQb2ludCwgbV9k
YXRhLCBtX3NpemUpOwogfQogCisjaWYgRU5BQkxFKElNQUdFX1JFU0laRVIpCitWZWN0b3I8Y2hh
cj4gSW1hZ2VCdWZmZXI6OnRvQnl0ZXMoY29uc3QgU3RyaW5nJiwgY29uc3QgZG91YmxlKikgY29u
c3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBWZWN0b3I8Y2hhcj4oKTsK
K30KKyNlbmRpZgorCiAvLyBXZSBnZXQgYSBtaW1lVHlwZSBoZXJlIGJ1dCBRSW1hZ2VXcml0ZXIg
ZG9lcyBub3Qgc3VwcG9ydCBtaW1ldHlwZXMgYnV0CiAvLyBvbmx5IGZvcm1hdHMgKHBuZywgZ2lm
LCBqcGVnLi4uLCB4cG0pLiBTbyBhc3N1bWUgd2UgZ2V0IGltYWdlLyBhcyBpbWFnZQogLy8gbWlt
ZXR5cGVzIGFuZCB0aGVuIHJlbW92ZSB0aGUgaW1hZ2UvIHRvIGdldCB0aGUgUXQgZm9ybWF0Lgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tp
YS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNw
cAppbmRleCA5MTJmZDEyLi5mYWFhNWEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcApAQCAtMjYxLDYgKzI2MSwxNSBAQCB2b2lk
IEltYWdlQnVmZmVyOjpwdXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKEltYWdlRGF0YSogc291cmNl
LCBjb25zdCBJbnRSZWN0JiBzbwogICAgIHB1dEltYWdlRGF0YTxQcmVtdWx0aXBsaWVkPihzb3Vy
Y2UsIHNvdXJjZVJlY3QsIGRlc3RQb2ludCwgKmNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCkt
PmJpdG1hcCgpLCBtX3NpemUpOwogfQogCisjaWYgRU5BQkxFKElNQUdFX1JFU0laRVIpCitWZWN0
b3I8Y2hhcj4gSW1hZ2VCdWZmZXI6OnRvQnl0ZXMoY29uc3QgU3RyaW5nJiwgY29uc3QgZG91Ymxl
KikgY29uc3QKK3sKKyAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gcG5nRW5jb2RlZERhdGE7Cisg
ICAgUE5HSW1hZ2VFbmNvZGVyOjplbmNvZGUoKmNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCkt
PmJpdG1hcCgpLCAmcG5nRW5jb2RlZERhdGEpOworICAgIHJldHVybiBWZWN0b3I8Y2hhcj4ocmVp
bnRlcnByZXRfY2FzdDxsb25nIHVuc2lnbmVkIGludD4ocG5nRW5jb2RlZERhdGEuYmVnaW4oKSks
IHJlaW50ZXJwcmV0X2Nhc3Q8bG9uZyB1bnNpZ25lZCBpbnQ+KHBuZ0VuY29kZWREYXRhLmVuZCgp
KSk7Cit9CisjZW5kaWYKKwogU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3Ry
aW5nJiwgY29uc3QgZG91YmxlKikgY29uc3QKIHsKICAgICAvLyBFbmNvZGUgdGhlIGltYWdlIGlu
dG8gYSB2ZWN0b3IuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNl
L0ltYWdlQnVmZmVyV2luY2UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9J
bWFnZUJ1ZmZlcldpbmNlLmNwcAppbmRleCA0YjczOWM4Li44OWJiNjBlIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVyV2luY2UuY3BwCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJXaW5jZS5jcHAKQEAg
LTIxNiw2ICsyMTYsMjQgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0UHJlbXVsdGlwbGllZEltYWdl
RGF0YShJbWFnZURhdGEqIHNvdXJjZSwgY29uc3QgSW50UmVjdCYgc28KICAgICBwdXRJbWFnZURh
dGE8dHJ1ZT4oc291cmNlLCBzb3VyY2VSZWN0LCBkZXN0UG9pbnQsIG1fZGF0YS5tX2JpdG1hcC5n
ZXQoKSk7CiB9CiAKKyNpZiBFTkFCTEUoSU1BR0VfUkVTSVpFUikKK1ZlY3RvcjxjaGFyPiBJbWFn
ZUJ1ZmZlcjo6dG9CeXRlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBkb3VibGUqKSBjb25zdAorewor
ICAgIGlmICghbV9kYXRhLm1fYml0bWFwLT5ieXRlcygpKQorICAgICAgICByZXR1cm4gVmVjdG9y
PGNoYXI+KCk7CisKKyAgICBWZWN0b3I8Y2hhcj4gb3V0cHV0OworICAgIGlmIChtaW1lVHlwZS5s
b3dlcigpID09ICJpbWFnZS9wbmciKSB7CisgICAgICAgIGlmICghY29tcHJlc3NCaXRtYXBUb1Bu
ZyhtX2RhdGEubV9iaXRtYXAuZ2V0KCksIG91dHB1dCkpCisgICAgICAgICAgICByZXR1cm4gVmVj
dG9yPGNoYXI+KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFjb21wcmVzc0JpdG1hcFRv
SnBlZyhtX2RhdGEubV9iaXRtYXAuZ2V0KCksIG91dHB1dCkpCisgICAgICAgICAgICByZXR1cm4g
VmVjdG9yPGNoYXI+KCk7CisgICAgfQorICAgIHJldHVybiBvdXRwdXQ7Cit9CisjZW5kaWYKKwog
U3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgZG91YmxlKikgY29uc3QKIHsKICAgICBpZiAoIW1fZGF0YS5tX2JpdG1hcC0+Ynl0ZXMoKSkK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VCdWZmZXJXeC5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlQnVmZmVyV3guY3BwCmluZGV4
IDc3NWUwMTguLmZhOTZkMTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d3gvSW1hZ2VCdWZmZXJXeC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9J
bWFnZUJ1ZmZlcld4LmNwcApAQCAtNzYsNiArNzYsMTQgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0
UHJlbXVsdGlwbGllZEltYWdlRGF0YShJbWFnZURhdGEqIHNvdXJjZSwgY29uc3QgSW50UmVjdCYg
c28KICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCisjaWYgRU5BQkxFKElNQUdFX1JFU0laRVIp
CitWZWN0b3I8Y2hhcj4gSW1hZ2VCdWZmZXI6OnRvQnl0ZXMoY29uc3QgU3RyaW5nJiwgY29uc3Qg
ZG91YmxlKikgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBWZWN0
b3I8Y2hhcj4oKTsKK30KKyNlbmRpZgorCiBTdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChj
b25zdCBTdHJpbmcmLCBjb25zdCBkb3VibGUqKSBjb25zdAogewogICAgIG5vdEltcGxlbWVudGVk
KCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>