<?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>49153</bug_id>
          
          <creation_ts>2010-11-07 19:33:28 -0800</creation_ts>
          <short_desc>Move Cache.* into loader/cache in as a start to cleaning up loader/</short_desc>
          <delta_ts>2010-11-08 10:43:27 -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>Other</rep_platform>
          <op_sys>OS X 10.5</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>49156</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>kling</cc>
    
    <cc>mitz</cc>
    
    <cc>steveblock</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>305930</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-07 19:33:28 -0800</bug_when>
    <thetext>Move Cache.* into loader/cache in as a start to cleaning up loader/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305931</commentid>
    <comment_count>1</comment_count>
      <attachid>73203</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-07 19:35:28 -0800</bug_when>
    <thetext>Created attachment 73203
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305932</commentid>
    <comment_count>2</comment_count>
      <attachid>73203</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-07 19:39:46 -0800</bug_when>
    <thetext>Comment on attachment 73203
Patch

This isn&apos;t going to compile, but yeah, this is what we want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305933</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-07 19:42:04 -0800</bug_when>
    <thetext>Attachment 73203 did not build on mac:
Build output: http://queues.webkit.org/results/5558013</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305934</commentid>
    <comment_count>4</comment_count>
      <attachid>73203</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-11-07 19:43:12 -0800</bug_when>
    <thetext>Comment on attachment 73203
Patch

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

&gt; WebCore/WebCore.pro:1034
&gt; -    loader/Cache.cpp \
&gt; +    loader/cache/Cache.cpp \

You should do the same for loader/Cache.h in this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305935</commentid>
    <comment_count>5</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-11-07 19:45:55 -0800</bug_when>
    <thetext>Attachment 73203 did not build on qt:
Build output: http://queues.webkit.org/results/5516020</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305936</commentid>
    <comment_count>6</comment_count>
      <attachid>73204</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-07 19:49:16 -0800</bug_when>
    <thetext>Created attachment 73204
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305937</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-07 19:51:13 -0800</bug_when>
    <thetext>It built on mac for me, not sure why the bot failed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305938</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-07 19:51:45 -0800</bug_when>
    <thetext>It built on mac for me, not sure why the bot failed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305939</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-07 19:52:13 -0800</bug_when>
    <thetext>It looks like the file moves are missing from the patch. I suspect Abarth&apos;s webkit-patch chagned_files optimization broke file moves.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305940</commentid>
    <comment_count>10</comment_count>
      <attachid>73205</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-07 19:53:16 -0800</bug_when>
    <thetext>Created attachment 73205
manually created patch file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305941</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-07 19:53:59 -0800</bug_when>
    <thetext>it appears git diff does not include moved files?!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305942</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-07 19:54:42 -0800</bug_when>
    <thetext>Attachment 73204 did not build on mac:
Build output: http://queues.webkit.org/results/5532024</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305944</commentid>
    <comment_count>13</comment_count>
      <attachid>73206</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-07 19:56:05 -0800</bug_when>
    <thetext>Created attachment 73206
created from an svn checkout</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305947</commentid>
    <comment_count>14</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-11-07 19:57:53 -0800</bug_when>
    <thetext>Attachment 73204 did not build on qt:
Build output: http://queues.webkit.org/results/5533023</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305951</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-07 20:02:12 -0800</bug_when>
    <thetext>Attachment 73203 did not build on chromium:
Build output: http://queues.webkit.org/results/5494017</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305953</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-07 20:09:30 -0800</bug_when>
    <thetext>Committed r71492: &lt;http://trac.webkit.org/changeset/71492&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305955</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-07 20:11:06 -0800</bug_when>
    <thetext>Attachment 73205 did not build on mac:
Build output: http://queues.webkit.org/results/5553023</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305983</commentid>
    <comment_count>18</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-11-07 21:37:49 -0800</bug_when>
    <thetext>Eric, why is this bug with a patch pending review in RESOLVED/FIXED state?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305984</commentid>
    <comment_count>19</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-07 21:39:48 -0800</bug_when>
    <thetext>Probably because webkit-patch land doesn&apos;t clear r?

I don&apos;t use webkit-patch land much, maybe clearing of r? broke (or never was?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305985</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-07 21:45:38 -0800</bug_when>
    <thetext>Maybe because it only clears r+ ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306187</commentid>
    <comment_count>21</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-08 10:19:28 -0800</bug_when>
    <thetext>The biggest problem with the Cache class right now is that it’s not just a cache. Moving it into a directory named cache makes that problem worse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306205</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-08 10:43:27 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; The biggest problem with the Cache class right now is that it’s not just a cache. Moving it into a directory named cache makes that problem worse.

What else does it do besides being a cache?  It&apos;s involved in the loading process too, but I was planning to move that logic out into a separate class in the interests of making the main document cachable in the memory cache.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73203</attachid>
            <date>2010-11-07 19:35:28 -0800</date>
            <delta_ts>2010-11-07 19:49:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49153-20101107193527.patch</filename>
            <type>text/plain</type>
            <size>8510</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCBkNzI0YzY2OWMxNWVhNDg4MGZiZDFkMWQwOWJhNmY0MjZlMGM4MjgzLi43MTJmZGYwMzJmNmJh
MjkxZjJhYmVkYjJkM2M4ZDkzZGRkZjI4MjZlIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0zNDMsNyArMzQzLDYgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50
UGFyc2VyLmNwcCBcCiAJaHRtbC9wYXJzZXIvVGV4dFZpZXdTb3VyY2VQYXJzZXIuY3BwIFwKIAlc
Ci0JbG9hZGVyL0NhY2hlLmNwcCBcCiAJbG9hZGVyL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIFwK
IAlsb2FkZXIvQ2FjaGVkRm9udC5jcHAgXAogCWxvYWRlci9DYWNoZWRJbWFnZS5jcHAgXApAQCAt
Mzg4LDYgKzM4Nyw4IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykgXAog
CWxvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmNwcCBcCiAJbG9hZGVyL2FwcGNh
Y2hlL01hbmlmZXN0UGFyc2VyLmNwcCBcCiAJXAorCWxvYWRlci9jYWNoZS9DYWNoZS5jcHAgXAor
CVwKIAlsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwIFwKIAlsb2FkZXIvaWNvbi9JY29uRmV0
Y2hlci5jcHAgXAogCWxvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwIFwKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGYxYmQw
MTVlYTUzNjBkMDYxNWU0NzZiMmY0MDNhNzUwOTcwMGNmN2MuLmM2YzUyMGJiODgxY2U1ZWUxZDJj
NDFhOTA5OWM2NDUzMTlkZjZmNzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
KysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTEzOCw3ICsxMTM4LDYgQEAgU0VUKFdl
YkNvcmVfU09VUkNFUwogICAgIGluc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50LmNwcAogICAgIGlu
c3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCiAKLSAgICBsb2FkZXIvQ2FjaGUuY3Bw
CiAgICAgbG9hZGVyL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCiAgICAgbG9hZGVyL0NhY2hlZEZv
bnQuY3BwCiAgICAgbG9hZGVyL0NhY2hlZEltYWdlLmNwcApAQCAtMTE5MSw2ICsxMTkwLDggQEAg
U0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5j
cHAKICAgICBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmNwcAogCisg
ICAgbG9hZGVyL2NhY2hlL0NhY2hlLmNwcAorCiAgICAgbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNl
LmNwcAogICAgIGxvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCiAgICAgbG9hZGVyL2ljb24vSWNv
blJlY29yZC5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggMTkzZDU0NWI4ZGYwMzAxMmFkZjg2MzVmYmQzZWJhNTVmYTk4ZTZlZC4uODM5
YTY1ZWQxOTE2YjZhYTI0YTRjZGEwNjBjMzQ0MjhhZWI5NTEyYiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAorMjAx
MC0xMS0wNyAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBDYWNoZS4qIGludG8gbG9hZGVy
L2NhY2hlIGluIGFzIGEgc3RhcnQgdG8gY2xlYW5pbmcgdXAgbG9hZGVyLworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkxNTMKKworICAgICAgICAqIEFu
ZHJvaWQubWs6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZp
bGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgor
ICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGUuY3BwOiBSZW5hbWVkIGZyb20gV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwLgorICAgICAgICAo
V2ViQ29yZTo6Y2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OkNhY2hlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpy
ZXF1ZXN0UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OnJlcXVlc3RVc2VyQ1NT
U3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6cmV2YWxpZGF0ZVJlc291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpyZXZhbGlkYXRpb25TdWNjZWVkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGU6OnJldmFsaWRhdGlvbkZhaWxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZTo6cmVzb3VyY2VGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OmRl
YWRDYXBhY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6bGl2ZUNhcGFjaXR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlOjpwcnVuZUxpdmVSZXNvdXJjZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGU6OnBydW5lRGVhZFJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZTo6c2V0Q2FwYWNpdGllcyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6bWFrZVJlc291cmNl
UHVyZ2VhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpldmljdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZTo6YWRkQ2FjaGVkUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGU6OnJlbW92ZUNhY2hlZFJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OmZhc3RMb2cyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpscnVMaXN0Rm9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlOjpyZW1vdmVGcm9tTFJVTGlzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZTo6aW5zZXJ0SW5MUlVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpyZXNv
dXJjZUFjY2Vzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpyZW1vdmVGcm9tTGl2ZURl
Y29kZWRSZXNvdXJjZXNMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjppbnNlcnRJbkxp
dmVEZWNvZGVkUmVzb3VyY2VzTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6YWRkVG9M
aXZlUmVzb3VyY2VzU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6cmVtb3ZlRnJvbUxp
dmVSZXNvdXJjZXNTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjphZGp1c3RTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpUeXBlU3RhdGlzdGljOjphZGRSZXNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZTo6Z2V0U3RhdGlzdGljcyk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZTo6c2V0RGlzYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OmR1bXBTdGF0
cyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6ZHVtcExSVUxpc3RzKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGUuaDogUmVuYW1lZCBmcm9tIFdlYkNvcmUvbG9hZGVyL0NhY2hlLmgu
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6TFJVTGlzdDo6TFJVTGlzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZTo6VHlwZVN0YXRpc3RpYzo6VHlwZVN0YXRpc3RpYyk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZTo6bG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpkaXNhYmxl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6c2V0UHJ1bmVFbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlOjpwcnVuZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6c2V0RGVh
ZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6
ZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZTo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpzaG91bGRNYWtlUmVzb3VyY2VQ
dXJnZWFibGVPbkV2aWN0aW9uKToKKwogMjAxMC0xMS0wNSAgSGVsZGVyIENvcnJlaWEgIDxoZWxk
ZXJAc2VuY2hhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0K
aW5kZXggMWNjZmJlM2ZjN2UxOTIwOTM2Mzg5ZGZlZGU3ODk4MjJhNzVkZTg4MS4uZTQ0YTFiYmJk
NWViZjIzNzIzZDQ0ZWUzZTU2MThhZWYzY2I4Yjc0NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xOTA1LDcgKzE5MDUs
NyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2
ZVJlc291cmNlQ29sbGVjdGlvbi5oIFwKIAlXZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVS
ZXNvdXJjZS5jcHAgXAogCVdlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgg
XAotCVdlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcCBcCisJV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGUuY3BwIFwKIAlXZWJDb3JlL2xvYWRlci9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBcCiAJV2Vi
Q29yZS9sb2FkZXIvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIFwKIAlXZWJDb3JlL2xvYWRlci9DYWNo
ZWRGb250LmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IDBjYTQ1YjM0ZWFhOTRlZmQ3ZWM2OWVjNWEyZmE5NDY0MDkwZDAy
NDcuLjBlZjhlNzg2NGEzYzcxNGYwMWExMzM1YTQyNzU2ODAyOTI2YWYzMjUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yMDEx
LDYgKzIwMTEsOCBAQAogICAgICAgICAgICAgJ2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJj
ZS5oJywKICAgICAgICAgICAgICdsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0
aW9uLmNwcCcsCiAgICAgICAgICAgICAnbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlQ29s
bGVjdGlvbi5oJywKKyAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvQ2FjaGUuY3BwJywKKyAgICAg
ICAgICAgICdsb2FkZXIvY2FjaGUvQ2FjaGUuaCcsCiAgICAgICAgICAgICAnbG9hZGVyL2ljb24v
SWNvbkRhdGFiYXNlLmNwcCcsCiAgICAgICAgICAgICAnbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNl
LmgnLAogICAgICAgICAgICAgJ2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUNsaWVudC5oJywKQEAg
LTIwMjcsOCArMjAyOSw2IEBACiAgICAgICAgICAgICAnbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRl
ck1hYy5tbScsCiAgICAgICAgICAgICAnbG9hZGVyL3dpbi9Eb2N1bWVudExvYWRlcldpbi5jcHAn
LAogICAgICAgICAgICAgJ2xvYWRlci93aW4vRnJhbWVMb2FkZXJXaW4uY3BwJywKLSAgICAgICAg
ICAgICdsb2FkZXIvQ2FjaGUuY3BwJywKLSAgICAgICAgICAgICdsb2FkZXIvQ2FjaGUuaCcsCiAg
ICAgICAgICAgICAnbG9hZGVyL0NhY2hlZE1ldGFkYXRhLmgnLAogICAgICAgICAgICAgJ2xvYWRl
ci9DYWNoZVBvbGljeS5oJywKICAgICAgICAgICAgICdsb2FkZXIvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29y
ZS5wcm8KaW5kZXggMzk4OTc0Mjk5NjQ5MmQzZjZmZWM0YWFhMzUzNjZmM2E1MTNhNWQwMy4uZjcy
MzU5Y2E3ZTAwMWI4OTRmMTM1YWU3NzNjNTNmZGQzZjkzM2Y1NSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0xMDMxLDcgKzEwMzEs
NyBAQCBTT1VSQ0VTICs9IFwKICAgICBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAg
XAogICAgIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAgXAogICAgIGxvYWRlci9h
cmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uY3BwIFwKLSAgICBsb2FkZXIvQ2FjaGUu
Y3BwIFwKKyAgICBsb2FkZXIvY2FjaGUvQ2FjaGUuY3BwIFwKICAgICBsb2FkZXIvQ2FjaGVkQ1NT
U3R5bGVTaGVldC5jcHAgXAogICAgIGxvYWRlci9DYWNoZWRGb250LmNwcCBcCiAgICAgbG9hZGVy
L0NhY2hlZEltYWdlLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRl
eCBmNWQ3NWJmZDUyZmI4OGRlNjA4YWE3YjBmYzk1NzhiZDU0YjZlMjU1Li5lZjI2YzQyYjNjNzY3
MzdlZDQxYjg5MjA2MTJjNWMyZWUxMDQxOWExIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKQEAgLTIzNzA4LDE0ICsyMzcwOCw2IEBACiAJCQlOYW1lPSJsb2FkZXIiDQogCQkJ
Pg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cbG9hZGVyXENhY2hlLmNwcCINCi0J
CQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRl
clxDYWNoZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQogCQkJCVJlbGF0aXZl
UGF0aD0iLi5cbG9hZGVyXENhY2hlZENTU1N0eWxlU2hlZXQuY3BwIg0KIAkJCQk+DQogCQkJPC9G
aWxlPg0KQEAgLTI0MjQ3LDYgKzI0MjM5LDE4IEBACiAJCQkJCTwvRmlsZT4NCiAJCQkJPC9GaWx0
ZXI+DQogCQkJPC9GaWx0ZXI+DQorCQkJPEZpbHRlcg0KKwkJCQlOYW1lPSJjYWNoZSINCisJCQkJ
Pg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcY2FjaGVcQ2FjaGUu
Y3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGxvYWRlclxjYWNoZVxDYWNoZS5oIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJ
PC9GaWx0ZXI+DQogCQk8L0ZpbHRlcj4NCiAJCTxGaWx0ZXINCiAJCQlOYW1lPSJwbGF0Zm9ybSIN
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGEyOTFlNTI5
NWY4ZDA3ZDVjYjA4MjYzMmM1MjUzZmUzYTVjMzlkNjkuLmVmNDExM2YwYWYwOWZmMzNlMjhmNDI5
OTk1ZDg4Y2Y1ODgzMzU2NGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xNjAyMSw2ICsxNjAyMSwxNSBAQAogCQkJbmFtZSA9IFhNTDsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUE4RDJCMjUyMTI4N0E1NjAwMEFGNEREQSAvKiBj
YWNoZSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQkNC
MTZCRkUwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlLmNwcCAqLywKKwkJCQlCQ0IxNkJGRjA5NzlD
M0JEMDA0Njc3NDEgLyogQ2FjaGUuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gY2FjaGU7CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlBOUQyNDdGOTBENzU3RTQxMDBGREY5NTkg
LyogUGx1Z2lucyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBA
IC0xNzI0NCwxMiArMTcyNTMsMTEgQEAKIAkJQkNCMTZCRkIwOTc5QzM4NzAwNDY3NzQxIC8qIGxv
YWRlciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQThE
MkIyNTIxMjg3QTU2MDAwQUY0RERBIC8qIGNhY2hlICovLAogCQkJCTFBOEY2QkIwMERCNTVDREMw
MDFEQjc5NCAvKiBhcHBjYWNoZSAqLywKIAkJCQk1MTJERDhFODBEOTFFNjkxMDAwRjg5RUUgLyog
YXJjaGl2ZSAqLywKIAkJCQk1MTI2RTZCNjBBMkUzQUVGMDA1QzI5RkEgLyogaWNvbiAqLywKIAkJ
CQk5M0ExRUFBMjBBNTYzNEQ4MDA2OTYwQTAgLyogbWFjICovLAotCQkJCUJDQjE2QkZFMDk3OUMz
QkQwMDQ2Nzc0MSAvKiBDYWNoZS5jcHAgKi8sCi0JCQkJQkNCMTZCRkYwOTc5QzNCRDAwNDY3NzQx
IC8qIENhY2hlLmggKi8sCiAJCQkJQkNCMTZDMDAwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZENT
U1N0eWxlU2hlZXQuY3BwICovLAogCQkJCUJDQjE2QzAxMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNo
ZWRDU1NTdHlsZVNoZWV0LmggKi8sCiAJCQkJQkM2NEI0QzkwQ0I0Mjk1RDAwNUYyQjYyIC8qIENh
Y2hlZEZvbnQuY3BwICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73204</attachid>
            <date>2010-11-07 19:49:16 -0800</date>
            <delta_ts>2010-11-07 19:53:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49153-20101107194914.patch</filename>
            <type>text/plain</type>
            <size>10064</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCBkNzI0YzY2OWMxNWVhNDg4MGZiZDFkMWQwOWJhNmY0MjZlMGM4MjgzLi43MTJmZGYwMzJmNmJh
MjkxZjJhYmVkYjJkM2M4ZDkzZGRkZjI4MjZlIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0zNDMsNyArMzQzLDYgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50
UGFyc2VyLmNwcCBcCiAJaHRtbC9wYXJzZXIvVGV4dFZpZXdTb3VyY2VQYXJzZXIuY3BwIFwKIAlc
Ci0JbG9hZGVyL0NhY2hlLmNwcCBcCiAJbG9hZGVyL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIFwK
IAlsb2FkZXIvQ2FjaGVkRm9udC5jcHAgXAogCWxvYWRlci9DYWNoZWRJbWFnZS5jcHAgXApAQCAt
Mzg4LDYgKzM4Nyw4IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykgXAog
CWxvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmNwcCBcCiAJbG9hZGVyL2FwcGNh
Y2hlL01hbmlmZXN0UGFyc2VyLmNwcCBcCiAJXAorCWxvYWRlci9jYWNoZS9DYWNoZS5jcHAgXAor
CVwKIAlsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwIFwKIAlsb2FkZXIvaWNvbi9JY29uRmV0
Y2hlci5jcHAgXAogCWxvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwIFwKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGYxYmQw
MTVlYTUzNjBkMDYxNWU0NzZiMmY0MDNhNzUwOTcwMGNmN2MuLjIxMWNjYzM0NWI4MTI5N2RkN2Nk
Y2NjNjQyNzY0ZjBhMjNlNTc5MDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
KysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjIsNiArMjIsNyBAQCBTRVQoV2ViQ29y
ZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2xvYWRlciIKICAgICAi
JHtXRUJDT1JFX0RJUn0vbG9hZGVyL2FwcGNhY2hlIgogICAgICIke1dFQkNPUkVfRElSfS9sb2Fk
ZXIvYXJjaGl2ZSIKKyAgICAiJHtXRUJDT1JFX0RJUn0vbG9hZGVyL2NhY2hlIgogICAgICIke1dF
QkNPUkVfRElSfS9sb2FkZXIvaWNvbiIKICAgICAiJHtXRUJDT1JFX0RJUn0vbWF0aG1sIgogICAg
ICIke1dFQkNPUkVfRElSfS9ub3RpZmljYXRpb25zIgpAQCAtMTEzOCw3ICsxMTM5LDYgQEAgU0VU
KFdlYkNvcmVfU09VUkNFUwogICAgIGluc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50LmNwcAogICAg
IGluc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCiAKLSAgICBsb2FkZXIvQ2FjaGUu
Y3BwCiAgICAgbG9hZGVyL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCiAgICAgbG9hZGVyL0NhY2hl
ZEZvbnQuY3BwCiAgICAgbG9hZGVyL0NhY2hlZEltYWdlLmNwcApAQCAtMTE5MSw2ICsxMTkxLDgg
QEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJj
ZS5jcHAKICAgICBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmNwcAog
CisgICAgbG9hZGVyL2NhY2hlL0NhY2hlLmNwcAorCiAgICAgbG9hZGVyL2ljb24vSWNvbkRhdGFi
YXNlLmNwcAogICAgIGxvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCiAgICAgbG9hZGVyL2ljb24v
SWNvblJlY29yZC5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMTkzZDU0NWI4ZGYwMzAxMmFkZjg2MzVmYmQzZWJhNTVmYTk4ZTZlZC4u
MWMyOGIwNjc1MDBkODVmMDhiNDhjMjJkNzg1NmYyOTg0ODhiNjQwNiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAor
MjAxMC0xMS0wNyAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBNb3ZlIENhY2hlLiogaW50byBsb2FkZXIv
Y2FjaGUgaW4gYXMgYSBzdGFydCB0byBjbGVhbmluZyB1cCBsb2FkZXIvCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTE1MworCisgICAgICAgICogQW5k
cm9pZC5tazoKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmls
ZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86Cisg
ICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZS5jcHA6IFJlbmFtZWQgZnJvbSBXZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAuCisgICAgICAgIChX
ZWJDb3JlOjpjYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6Q2FjaGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OnJl
cXVlc3RSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6cmVxdWVzdFVzZXJDU1NT
dHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpyZXZhbGlkYXRlUmVzb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OnJldmFsaWRhdGlvblN1Y2NlZWRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZTo6cmV2YWxpZGF0aW9uRmFpbGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlOjpyZXNvdXJjZUZvclVSTCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6ZGVh
ZENhcGFjaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpsaXZlQ2FwYWNpdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGU6OnBydW5lTGl2ZVJlc291cmNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZTo6cHJ1bmVEZWFkUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
OjpzZXRDYXBhY2l0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjptYWtlUmVzb3VyY2VQ
dXJnZWFibGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OmV2aWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlOjphZGRDYWNoZWRSZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZTo6cmVtb3ZlQ2FjaGVkUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
ZmFzdExvZzIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OmxydUxpc3RGb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGU6OnJlbW92ZUZyb21MUlVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlOjppbnNlcnRJbkxSVUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OnJlc291
cmNlQWNjZXNzZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OnJlbW92ZUZyb21MaXZlRGVj
b2RlZFJlc291cmNlc0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6Omluc2VydEluTGl2
ZURlY29kZWRSZXNvdXJjZXNMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjphZGRUb0xp
dmVSZXNvdXJjZXNTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpyZW1vdmVGcm9tTGl2
ZVJlc291cmNlc1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OmFkanVzdFNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OlR5cGVTdGF0aXN0aWM6OmFkZFJlc291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlOjpnZXRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlOjpzZXREaXNhYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6ZHVtcFN0YXRz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpkdW1wTFJVTGlzdHMpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZS5oOiBSZW5hbWVkIGZyb20gV2ViQ29yZS9sb2FkZXIvQ2FjaGUuaC4K
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpMUlVMaXN0OjpMUlVMaXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlOjpUeXBlU3RhdGlzdGljOjpUeXBlU3RhdGlzdGljKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlOjpsb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OmRpc2FibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpzZXRQcnVuZUVuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGU6OnBydW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpzZXREZWFk
RGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpk
ZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
OjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OnNob3VsZE1ha2VSZXNvdXJjZVB1
cmdlYWJsZU9uRXZpY3Rpb24pOgorCiAyMDEwLTExLTA1ICBIZWxkZXIgQ29ycmVpYSAgPGhlbGRl
ckBzZW5jaGEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpp
bmRleCAxY2NmYmUzZmM3ZTE5MjA5MzYzODlkZmVkZTc4OTgyMmE3NWRlODgxLi41NDQxZDBlNTY0
ZDc2YjFmNmY0Y2NhN2I0OGU5ZWUwNWE2ZjYwMjBkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTI4LDYgKzI4LDcgQEAg
d2ViY29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvV2ViQ29yZS9sb2FkZXIgXAogCS1J
JChzcmNkaXIpL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlIFwKIAktSSQoc3JjZGlyKS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlIFwKKwktSSQoc3JjZGlyKS9XZWJDb3JlL2xvYWRlci9jYWNoZSBcCiAJ
LUkkKHNyY2RpcikvV2ViQ29yZS9sb2FkZXIvaWNvbiBcCiAJLUkkKHNyY2RpcikvV2ViQ29yZS9t
YXRobWwgXAogCS1JJChzcmNkaXIpL1dlYkNvcmUvbm90aWZpY2F0aW9ucyBcCkBAIC0xOTA1LDcg
KzE5MDYsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oIFwKIAlXZWJDb3JlL2xvYWRlci9hcmNoaXZlL0Fy
Y2hpdmVSZXNvdXJjZS5jcHAgXAogCVdlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291
cmNlLmggXAotCVdlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcCBcCisJV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGUuY3BwIFwKIAlXZWJDb3JlL2xvYWRlci9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBc
CiAJV2ViQ29yZS9sb2FkZXIvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIFwKIAlXZWJDb3JlL2xvYWRl
ci9DYWNoZWRGb250LmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNv
cmUuZ3lwIGIvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAppbmRleCA2ZWJmMGEwMjU4
MzVkYWMxNGI2ODY2ZjhmNGQ1MTZjMTcyNGUyNDFlLi40NzkyYTJhMWQyMjQzYjI4NTczYTIwOGE4
OTQzNzE1ZWQ4N2UzMDg1IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUu
Z3lwCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTEzNCw2ICsxMzQs
NyBAQAogICAgICAgJy4uL2xvYWRlcicsCiAgICAgICAnLi4vbG9hZGVyL2FwcGNhY2hlJywKICAg
ICAgICcuLi9sb2FkZXIvYXJjaGl2ZScsCisgICAgICAnLi4vbG9hZGVyL2NhY2hlJywKICAgICAg
ICcuLi9sb2FkZXIvaWNvbicsCiAgICAgICAnLi4vbWF0aG1sJywKICAgICAgICcuLi9ub3RpZmlj
YXRpb25zJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggMGNhNDViMzRlYWE5NGVmZDdlYzY5ZWM1YTJmYTk0NjQwOTBkMDI0Ny4u
MGVmOGU3ODY0YTNjNzE0ZjAxYTEzMzVhNDI3NTY4MDI5MjZhZjMyNSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTIwMTEsNiAr
MjAxMSw4IEBACiAgICAgICAgICAgICAnbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgn
LAogICAgICAgICAgICAgJ2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24u
Y3BwJywKICAgICAgICAgICAgICdsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0
aW9uLmgnLAorICAgICAgICAgICAgJ2xvYWRlci9jYWNoZS9DYWNoZS5jcHAnLAorICAgICAgICAg
ICAgJ2xvYWRlci9jYWNoZS9DYWNoZS5oJywKICAgICAgICAgICAgICdsb2FkZXIvaWNvbi9JY29u
RGF0YWJhc2UuY3BwJywKICAgICAgICAgICAgICdsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaCcs
CiAgICAgICAgICAgICAnbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlQ2xpZW50LmgnLApAQCAtMjAy
Nyw4ICsyMDI5LDYgQEAKICAgICAgICAgICAgICdsb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFj
Lm1tJywKICAgICAgICAgICAgICdsb2FkZXIvd2luL0RvY3VtZW50TG9hZGVyV2luLmNwcCcsCiAg
ICAgICAgICAgICAnbG9hZGVyL3dpbi9GcmFtZUxvYWRlcldpbi5jcHAnLAotICAgICAgICAgICAg
J2xvYWRlci9DYWNoZS5jcHAnLAotICAgICAgICAgICAgJ2xvYWRlci9DYWNoZS5oJywKICAgICAg
ICAgICAgICdsb2FkZXIvQ2FjaGVkTWV0YWRhdGEuaCcsCiAgICAgICAgICAgICAnbG9hZGVyL0Nh
Y2hlUG9saWN5LmgnLAogICAgICAgICAgICAgJ2xvYWRlci9DYWNoZWRDU1NTdHlsZVNoZWV0LmNw
cCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBy
bwppbmRleCAzOTg5NzQyOTk2NDkyZDNmNmZlYzRhYWEzNTM2NmYzYTUxM2E1ZDAzLi41YzAzNjVm
N2YzYzEyYTM4NTNjMjlhMTk4MmIzNTVmY2VhMmU3ZTc0IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dl
YkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTIzMSw2ICsyMzEsNyBAQCBX
RUJDT1JFX0lOQ0xVREVQQVRIID0gXAogICAgICQkUFdEL2xvYWRlciBcCiAgICAgJCRQV0QvbG9h
ZGVyL2FwcGNhY2hlIFwKICAgICAkJFBXRC9sb2FkZXIvYXJjaGl2ZSBcCisgICAgJCRQV0QvbG9h
ZGVyL2NhY2hlIFwKICAgICAkJFBXRC9sb2FkZXIvaWNvbiBcCiAgICAgJCRQV0QvbWF0aG1sIFwK
ICAgICAkJFBXRC9ub3RpZmljYXRpb25zIFwKQEAgLTEwMzEsNyArMTAzMiw3IEBAIFNPVVJDRVMg
Kz0gXAogICAgIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcCBcCiAgICAgbG9hZGVy
L2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcCBcCiAgICAgbG9hZGVyL2FyY2hpdmUvQXJjaGl2
ZVJlc291cmNlQ29sbGVjdGlvbi5jcHAgXAotICAgIGxvYWRlci9DYWNoZS5jcHAgXAorICAgIGxv
YWRlci9jYWNoZS9DYWNoZS5jcHAgXAogICAgIGxvYWRlci9DYWNoZWRDU1NTdHlsZVNoZWV0LmNw
cCBcCiAgICAgbG9hZGVyL0NhY2hlZEZvbnQuY3BwIFwKICAgICBsb2FkZXIvQ2FjaGVkSW1hZ2Uu
Y3BwIFwKQEAgLTE5MzAsNyArMTkzMSw3IEBAIEhFQURFUlMgKz0gXAogICAgIGxvYWRlci9DYWNo
ZWRSZXNvdXJjZUhhbmRsZS5oIFwKICAgICBsb2FkZXIvQ2FjaGVkU2NyaXB0LmggXAogICAgIGxv
YWRlci9DYWNoZWRYU0xTdHlsZVNoZWV0LmggXAotICAgIGxvYWRlci9DYWNoZS5oIFwKKyAgICBs
b2FkZXIvY2FjaGUvQ2FjaGUuaCBcCiAgICAgbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bC5oIFwKICAgICBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5oIFwKICAg
ICBsb2FkZXIvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagppbmRleCBmNWQ3NWJmZDUyZmI4OGRlNjA4YWE3YjBmYzk1NzhiZDU0YjZlMjU1
Li5lZjI2YzQyYjNjNzY3MzdlZDQxYjg5MjA2MTJjNWMyZWUxMDQxOWExIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTIzNzA4LDE0ICsyMzcwOCw2IEBACiAJCQlOYW1l
PSJsb2FkZXIiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cbG9hZGVy
XENhY2hlLmNwcCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGxvYWRlclxDYWNoZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxl
DQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cbG9hZGVyXENhY2hlZENTU1N0eWxlU2hlZXQuY3BwIg0K
IAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTI0MjQ3LDYgKzI0MjM5LDE4IEBACiAJCQkJCTwvRmls
ZT4NCiAJCQkJPC9GaWx0ZXI+DQogCQkJPC9GaWx0ZXI+DQorCQkJPEZpbHRlcg0KKwkJCQlOYW1l
PSJjYWNoZSINCisJCQkJPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2Fk
ZXJcY2FjaGVcQ2FjaGUuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQor
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxjYWNoZVxDYWNoZS5oIg0KKwkJCQkJPg0KKwkJ
CQk8L0ZpbGU+DQorCQkJPC9GaWx0ZXI+DQogCQk8L0ZpbHRlcj4NCiAJCTxGaWx0ZXINCiAJCQlO
YW1lPSJwbGF0Zm9ybSINCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGEyOTFlNTI5NWY4ZDA3ZDVjYjA4MjYzMmM1MjUzZmUzYTVjMzlkNjkuLmVmNDExM2Yw
YWYwOWZmMzNlMjhmNDI5OTk1ZDg4Y2Y1ODgzMzU2NGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNjAyMSw2ICsxNjAyMSwxNSBAQAogCQkJbmFtZSA9
IFhNTDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUE4RDJCMjUyMTI4N0E1
NjAwMEFGNEREQSAvKiBjYWNoZSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRy
ZW4gPSAoCisJCQkJQkNCMTZCRkUwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlLmNwcCAqLywKKwkJ
CQlCQ0IxNkJGRjA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGUuaCAqLywKKwkJCSk7CisJCQlwYXRo
ID0gY2FjaGU7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlBOUQyNDdGOTBE
NzU3RTQxMDBGREY5NTkgLyogUGx1Z2lucyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCkBAIC0xNzI0NCwxMiArMTcyNTMsMTEgQEAKIAkJQkNCMTZCRkIwOTc5QzM4
NzAwNDY3NzQxIC8qIGxvYWRlciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJQThEMkIyNTIxMjg3QTU2MDAwQUY0RERBIC8qIGNhY2hlICovLAogCQkJCTFB
OEY2QkIwMERCNTVDREMwMDFEQjc5NCAvKiBhcHBjYWNoZSAqLywKIAkJCQk1MTJERDhFODBEOTFF
NjkxMDAwRjg5RUUgLyogYXJjaGl2ZSAqLywKIAkJCQk1MTI2RTZCNjBBMkUzQUVGMDA1QzI5RkEg
LyogaWNvbiAqLywKIAkJCQk5M0ExRUFBMjBBNTYzNEQ4MDA2OTYwQTAgLyogbWFjICovLAotCQkJ
CUJDQjE2QkZFMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZS5jcHAgKi8sCi0JCQkJQkNCMTZCRkYw
OTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlLmggKi8sCiAJCQkJQkNCMTZDMDAwOTc5QzNCRDAwNDY3
NzQxIC8qIENhY2hlZENTU1N0eWxlU2hlZXQuY3BwICovLAogCQkJCUJDQjE2QzAxMDk3OUMzQkQw
MDQ2Nzc0MSAvKiBDYWNoZWRDU1NTdHlsZVNoZWV0LmggKi8sCiAJCQkJQkM2NEI0QzkwQ0I0Mjk1
RDAwNUYyQjYyIC8qIENhY2hlZEZvbnQuY3BwICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73205</attachid>
            <date>2010-11-07 19:53:16 -0800</date>
            <delta_ts>2010-11-07 19:55:59 -0800</delta_ts>
            <desc>manually created patch file</desc>
            <filename>test.patch</filename>
            <type>text/plain</type>
            <size>9470</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCBkNzI0YzY2Li43MTJmZGYwIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0zNDMsNyArMzQzLDYgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9
ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNw
cCBcCiAJaHRtbC9wYXJzZXIvVGV4dFZpZXdTb3VyY2VQYXJzZXIuY3BwIFwKIAlcCi0JbG9hZGVy
L0NhY2hlLmNwcCBcCiAJbG9hZGVyL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIFwKIAlsb2FkZXIv
Q2FjaGVkRm9udC5jcHAgXAogCWxvYWRlci9DYWNoZWRJbWFnZS5jcHAgXApAQCAtMzg4LDYgKzM4
Nyw4IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykgXAogCWxvYWRlci9h
cHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmNwcCBcCiAJbG9hZGVyL2FwcGNhY2hlL01hbmlm
ZXN0UGFyc2VyLmNwcCBcCiAJXAorCWxvYWRlci9jYWNoZS9DYWNoZS5jcHAgXAorCVwKIAlsb2Fk
ZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwIFwKIAlsb2FkZXIvaWNvbi9JY29uRmV0Y2hlci5jcHAg
XAogCWxvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGYxYmQwMTUuLjIxMWNj
YzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtMjIsNiArMjIsNyBAQCBTRVQoV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9S
SUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2xvYWRlciIKICAgICAiJHtXRUJDT1JFX0RJUn0vbG9h
ZGVyL2FwcGNhY2hlIgogICAgICIke1dFQkNPUkVfRElSfS9sb2FkZXIvYXJjaGl2ZSIKKyAgICAi
JHtXRUJDT1JFX0RJUn0vbG9hZGVyL2NhY2hlIgogICAgICIke1dFQkNPUkVfRElSfS9sb2FkZXIv
aWNvbiIKICAgICAiJHtXRUJDT1JFX0RJUn0vbWF0aG1sIgogICAgICIke1dFQkNPUkVfRElSfS9u
b3RpZmljYXRpb25zIgpAQCAtMTEzOCw3ICsxMTM5LDYgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwog
ICAgIGluc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50LmNwcAogICAgIGluc3BlY3Rvci9UaW1lbGlu
ZVJlY29yZEZhY3RvcnkuY3BwCiAKLSAgICBsb2FkZXIvQ2FjaGUuY3BwCiAgICAgbG9hZGVyL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuY3BwCiAgICAgbG9hZGVyL0NhY2hlZEZvbnQuY3BwCiAgICAgbG9h
ZGVyL0NhY2hlZEltYWdlLmNwcApAQCAtMTE5MSw2ICsxMTkxLDggQEAgU0VUKFdlYkNvcmVfU09V
UkNFUwogICAgIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAKICAgICBsb2FkZXIv
YXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmNwcAogCisgICAgbG9hZGVyL2NhY2hl
L0NhY2hlLmNwcAorCiAgICAgbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAogICAgIGxvYWRl
ci9pY29uL0ljb25Mb2FkZXIuY3BwCiAgICAgbG9hZGVyL2ljb24vSWNvblJlY29yZC5jcHAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTkz
ZDU0NS4uMWMyOGIwNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAorMjAxMC0xMS0wNyAgRXJpYyBTZWlkZWwgIDxl
cmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAg
ICAgICBNb3ZlIENhY2hlLiogaW50byBsb2FkZXIvY2FjaGUgaW4gYXMgYSBzdGFydCB0byBjbGVh
bmluZyB1cCBsb2FkZXIvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00OTE1MworCisgICAgICAgICogQW5kcm9pZC5tazoKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5
cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZS5jcHA6IFJlbmFtZWQgZnJvbSBXZWJDb3Jl
L2xvYWRlci9DYWNoZS5jcHAuCisgICAgICAgIChXZWJDb3JlOjpjYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZTo6Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUmVzb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OnJlcXVlc3RSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZTo6cmVxdWVzdFVzZXJDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlOjpyZXZhbGlkYXRlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6
OnJldmFsaWRhdGlvblN1Y2NlZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6cmV2YWxp
ZGF0aW9uRmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpyZXNvdXJjZUZvclVSTCk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6ZGVhZENhcGFjaXR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlOjpsaXZlQ2FwYWNpdHkpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OnBydW5l
TGl2ZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6cHJ1bmVEZWFkUmVzb3Vy
Y2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpzZXRDYXBhY2l0aWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlOjptYWtlUmVzb3VyY2VQdXJnZWFibGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGU6OmV2aWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjphZGRDYWNoZWRSZXNv
dXJjZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6cmVtb3ZlQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6ZmFzdExvZzIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGU6OmxydUxpc3RGb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OnJlbW92ZUZy
b21MUlVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjppbnNlcnRJbkxSVUxpc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OnJlc291cmNlQWNjZXNzZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGU6OnJlbW92ZUZyb21MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGU6Omluc2VydEluTGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlOjphZGRUb0xpdmVSZXNvdXJjZXNTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlOjpyZW1vdmVGcm9tTGl2ZVJlc291cmNlc1NpemUpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGU6OmFkanVzdFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OlR5
cGVTdGF0aXN0aWM6OmFkZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpnZXRT
dGF0aXN0aWNzKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpzZXREaXNhYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZTo6ZHVtcFN0YXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
OjpkdW1wTFJVTGlzdHMpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZS5oOiBSZW5hbWVk
IGZyb20gV2ViQ29yZS9sb2FkZXIvQ2FjaGUuaC4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpM
UlVMaXN0OjpMUlVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpUeXBlU3RhdGlzdGlj
OjpUeXBlU3RhdGlzdGljKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpsb2FkZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGU6OmRpc2FibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
OjpzZXRQcnVuZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OnBydW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlOjpzZXREZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFs
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpkZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVy
dmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGU6OnNob3VsZE1ha2VSZXNvdXJjZVB1cmdlYWJsZU9uRXZpY3Rpb24pOgorCiAyMDEw
LTExLTA1ICBIZWxkZXIgQ29ycmVpYSAgPGhlbGRlckBzZW5jaGEuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCAxY2NmYmUzLi41NDQxZDBlIDEwMDY0
NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KQEAgLTI4LDYgKzI4LDcgQEAgd2ViY29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2Rpcikv
V2ViQ29yZS9sb2FkZXIgXAogCS1JJChzcmNkaXIpL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlIFwK
IAktSSQoc3JjZGlyKS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlIFwKKwktSSQoc3JjZGlyKS9XZWJD
b3JlL2xvYWRlci9jYWNoZSBcCiAJLUkkKHNyY2RpcikvV2ViQ29yZS9sb2FkZXIvaWNvbiBcCiAJ
LUkkKHNyY2RpcikvV2ViQ29yZS9tYXRobWwgXAogCS1JJChzcmNkaXIpL1dlYkNvcmUvbm90aWZp
Y2F0aW9ucyBcCkBAIC0xOTA1LDcgKzE5MDYsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oIFwKIAlXZWJD
b3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAgXAogCVdlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmggXAotCVdlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcCBc
CisJV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGUuY3BwIFwKIAlXZWJDb3JlL2xvYWRlci9DYWNo
ZWRDU1NTdHlsZVNoZWV0LmNwcCBcCiAJV2ViQ29yZS9sb2FkZXIvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5oIFwKIAlXZWJDb3JlL2xvYWRlci9DYWNoZWRGb250LmNwcCBcCmRpZmYgLS1naXQgYS9XZWJD
b3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3Jl
Lmd5cAppbmRleCA2ZWJmMGEwLi40NzkyYTJhIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUu
Z3lwL1dlYkNvcmUuZ3lwCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAg
LTEzNCw2ICsxMzQsNyBAQAogICAgICAgJy4uL2xvYWRlcicsCiAgICAgICAnLi4vbG9hZGVyL2Fw
cGNhY2hlJywKICAgICAgICcuLi9sb2FkZXIvYXJjaGl2ZScsCisgICAgICAnLi4vbG9hZGVyL2Nh
Y2hlJywKICAgICAgICcuLi9sb2FkZXIvaWNvbicsCiAgICAgICAnLi4vbWF0aG1sJywKICAgICAg
ICcuLi9ub3RpZmljYXRpb25zJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMGNhNDViMy4uMGVmOGU3OCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTIwMTEs
NiArMjAxMSw4IEBACiAgICAgICAgICAgICAnbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNl
LmgnLAogICAgICAgICAgICAgJ2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rp
b24uY3BwJywKICAgICAgICAgICAgICdsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xs
ZWN0aW9uLmgnLAorICAgICAgICAgICAgJ2xvYWRlci9jYWNoZS9DYWNoZS5jcHAnLAorICAgICAg
ICAgICAgJ2xvYWRlci9jYWNoZS9DYWNoZS5oJywKICAgICAgICAgICAgICdsb2FkZXIvaWNvbi9J
Y29uRGF0YWJhc2UuY3BwJywKICAgICAgICAgICAgICdsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2Uu
aCcsCiAgICAgICAgICAgICAnbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlQ2xpZW50LmgnLApAQCAt
MjAyNyw4ICsyMDI5LDYgQEAKICAgICAgICAgICAgICdsb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVy
TWFjLm1tJywKICAgICAgICAgICAgICdsb2FkZXIvd2luL0RvY3VtZW50TG9hZGVyV2luLmNwcCcs
CiAgICAgICAgICAgICAnbG9hZGVyL3dpbi9GcmFtZUxvYWRlcldpbi5jcHAnLAotICAgICAgICAg
ICAgJ2xvYWRlci9DYWNoZS5jcHAnLAotICAgICAgICAgICAgJ2xvYWRlci9DYWNoZS5oJywKICAg
ICAgICAgICAgICdsb2FkZXIvQ2FjaGVkTWV0YWRhdGEuaCcsCiAgICAgICAgICAgICAnbG9hZGVy
L0NhY2hlUG9saWN5LmgnLAogICAgICAgICAgICAgJ2xvYWRlci9DYWNoZWRDU1NTdHlsZVNoZWV0
LmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3Jl
LnBybwppbmRleCAzOTg5NzQyLi41YzAzNjVmIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUu
cHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTIzMSw2ICsyMzEsNyBAQCBXRUJDT1JF
X0lOQ0xVREVQQVRIID0gXAogICAgICQkUFdEL2xvYWRlciBcCiAgICAgJCRQV0QvbG9hZGVyL2Fw
cGNhY2hlIFwKICAgICAkJFBXRC9sb2FkZXIvYXJjaGl2ZSBcCisgICAgJCRQV0QvbG9hZGVyL2Nh
Y2hlIFwKICAgICAkJFBXRC9sb2FkZXIvaWNvbiBcCiAgICAgJCRQV0QvbWF0aG1sIFwKICAgICAk
JFBXRC9ub3RpZmljYXRpb25zIFwKQEAgLTEwMzEsNyArMTAzMiw3IEBAIFNPVVJDRVMgKz0gXAog
ICAgIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcCBcCiAgICAgbG9hZGVyL2FyY2hp
dmUvQXJjaGl2ZVJlc291cmNlLmNwcCBcCiAgICAgbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291
cmNlQ29sbGVjdGlvbi5jcHAgXAotICAgIGxvYWRlci9DYWNoZS5jcHAgXAorICAgIGxvYWRlci9j
YWNoZS9DYWNoZS5jcHAgXAogICAgIGxvYWRlci9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBcCiAg
ICAgbG9hZGVyL0NhY2hlZEZvbnQuY3BwIFwKICAgICBsb2FkZXIvQ2FjaGVkSW1hZ2UuY3BwIFwK
QEAgLTE5MzAsNyArMTkzMSw3IEBAIEhFQURFUlMgKz0gXAogICAgIGxvYWRlci9DYWNoZWRSZXNv
dXJjZUhhbmRsZS5oIFwKICAgICBsb2FkZXIvQ2FjaGVkU2NyaXB0LmggXAogICAgIGxvYWRlci9D
YWNoZWRYU0xTdHlsZVNoZWV0LmggXAotICAgIGxvYWRlci9DYWNoZS5oIFwKKyAgICBsb2FkZXIv
Y2FjaGUvQ2FjaGUuaCBcCiAgICAgbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIFwK
ICAgICBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5oIFwKICAgICBsb2Fk
ZXIvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagppbmRleCBmNWQ3NWJmLi5lZjI2YzQyIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKQEAgLTIzNzA4LDE0ICsyMzcwOCw2IEBACiAJCQlOYW1lPSJsb2FkZXIiDQogCQkJ
Pg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cbG9hZGVyXENhY2hlLmNwcCINCi0J
CQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRl
clxDYWNoZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQogCQkJCVJlbGF0aXZl
UGF0aD0iLi5cbG9hZGVyXENhY2hlZENTU1N0eWxlU2hlZXQuY3BwIg0KIAkJCQk+DQogCQkJPC9G
aWxlPg0KQEAgLTI0MjQ3LDYgKzI0MjM5LDE4IEBACiAJCQkJCTwvRmlsZT4NCiAJCQkJPC9GaWx0
ZXI+DQogCQkJPC9GaWx0ZXI+DQorCQkJPEZpbHRlcg0KKwkJCQlOYW1lPSJjYWNoZSINCisJCQkJ
Pg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcY2FjaGVcQ2FjaGUu
Y3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGxvYWRlclxjYWNoZVxDYWNoZS5oIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJ
PC9GaWx0ZXI+DQogCQk8L0ZpbHRlcj4NCiAJCTxGaWx0ZXINCiAJCQlOYW1lPSJwbGF0Zm9ybSIN
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGEyOTFlNTIu
LmVmNDExM2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xNjAyMSw2ICsxNjAyMSwxNSBAQAogCQkJbmFtZSA9IFhNTDsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CiAJCX07CisJCUE4RDJCMjUyMTI4N0E1NjAwMEFGNEREQSAvKiBjYWNoZSAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQkNCMTZCRkUwOTc5
QzNCRDAwNDY3NzQxIC8qIENhY2hlLmNwcCAqLywKKwkJCQlCQ0IxNkJGRjA5NzlDM0JEMDA0Njc3
NDEgLyogQ2FjaGUuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gY2FjaGU7CisJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOworCQl9OwogCQlBOUQyNDdGOTBENzU3RTQxMDBGREY5NTkgLyogUGx1Z2lu
cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xNzI0NCwx
MiArMTcyNTMsMTEgQEAKIAkJQkNCMTZCRkIwOTc5QzM4NzAwNDY3NzQxIC8qIGxvYWRlciAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQThEMkIyNTIxMjg3
QTU2MDAwQUY0RERBIC8qIGNhY2hlICovLAogCQkJCTFBOEY2QkIwMERCNTVDREMwMDFEQjc5NCAv
KiBhcHBjYWNoZSAqLywKIAkJCQk1MTJERDhFODBEOTFFNjkxMDAwRjg5RUUgLyogYXJjaGl2ZSAq
LywKIAkJCQk1MTI2RTZCNjBBMkUzQUVGMDA1QzI5RkEgLyogaWNvbiAqLywKIAkJCQk5M0ExRUFB
MjBBNTYzNEQ4MDA2OTYwQTAgLyogbWFjICovLAotCQkJCUJDQjE2QkZFMDk3OUMzQkQwMDQ2Nzc0
MSAvKiBDYWNoZS5jcHAgKi8sCi0JCQkJQkNCMTZCRkYwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hl
LmggKi8sCiAJCQkJQkNCMTZDMDAwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwICovLAogCQkJCUJDQjE2QzAxMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRDU1NTdHls
ZVNoZWV0LmggKi8sCiAJCQkJQkM2NEI0QzkwQ0I0Mjk1RDAwNUYyQjYyIC8qIENhY2hlZEZvbnQu
Y3BwICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73206</attachid>
            <date>2010-11-07 19:56:05 -0800</date>
            <delta_ts>2010-11-07 21:45:50 -0800</delta_ts>
            <desc>created from an svn checkout</desc>
            <filename>bug-49153-20101107195604.patch</filename>
            <type>text/plain</type>
            <size>88344</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTQ4OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjMgQEAKKzIwMTAtMTEtMDcgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgTW92ZSBDYWNo
ZS4qIGludG8gbG9hZGVyL2NhY2hlIGluIGFzIGEgc3RhcnQgdG8gY2xlYW5pbmcgdXAgbG9hZGVy
LworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkxNTMK
KworICAgICAgICAqIEFuZHJvaWQubWs6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAq
IFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGUuY3BwOiBSZW5hbWVkIGZyb20gV2ViQ29yZS9sb2FkZXIvQ2FjaGUu
Y3BwLgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6
OkNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlc291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlOjpyZXF1ZXN0UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6
OnJlcXVlc3RVc2VyQ1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6cmV2
YWxpZGF0ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpyZXZhbGlkYXRpb25T
dWNjZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OnJldmFsaWRhdGlvbkZhaWxlZCk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6cmVzb3VyY2VGb3JVUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGU6OmRlYWRDYXBhY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6bGl2
ZUNhcGFjaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpwcnVuZUxpdmVSZXNvdXJjZXMp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OnBydW5lRGVhZFJlc291cmNlcyk6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZTo6c2V0Q2FwYWNpdGllcyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZTo6bWFrZVJlc291cmNlUHVyZ2VhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpldmlj
dCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6YWRkQ2FjaGVkUmVzb3VyY2VMb2FkZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OnJlbW92ZUNhY2hlZFJlc291cmNlTG9hZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OmZhc3RMb2cyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpscnVM
aXN0Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpyZW1vdmVGcm9tTFJVTGlzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZTo6aW5zZXJ0SW5MUlVMaXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlOjpyZXNvdXJjZUFjY2Vzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpy
ZW1vdmVGcm9tTGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlOjppbnNlcnRJbkxpdmVEZWNvZGVkUmVzb3VyY2VzTGlzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZTo6YWRkVG9MaXZlUmVzb3VyY2VzU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZTo6cmVtb3ZlRnJvbUxpdmVSZXNvdXJjZXNTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
OjphZGp1c3RTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpUeXBlU3RhdGlzdGljOjph
ZGRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6Z2V0U3RhdGlzdGljcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZTo6c2V0RGlzYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGU6OmR1bXBTdGF0cyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6ZHVtcExSVUxpc3Rz
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGUuaDogUmVuYW1lZCBmcm9tIFdlYkNvcmUv
bG9hZGVyL0NhY2hlLmguCisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6TFJVTGlzdDo6TFJVTGlz
dCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6VHlwZVN0YXRpc3RpYzo6VHlwZVN0YXRpc3Rp
Yyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6bG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlOjpkaXNhYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6c2V0UHJ1bmVFbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpwcnVuZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZTo6c2V0RGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZTo6ZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCk6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZTo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpzaG91
bGRNYWtlUmVzb3VyY2VQdXJnZWFibGVPbkV2aWN0aW9uKToKKwogMjAxMC0xMS0wNSAgSGVsZGVy
IENvcnJlaWEgIDxoZWxkZXJAc2VuY2hhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRy
ZWFzIEtsaW5nLgpJbmRleDogV2ViQ29yZS9BbmRyb2lkLm1rCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvQW5kcm9pZC5tawkocmV2aXNpb24gNzE0ODgpCisrKyBXZWJDb3JlL0FuZHJvaWQubWsJKHdv
cmtpbmcgY29weSkKQEAgLTM0Myw3ICszNDMsNiBAQCBMT0NBTF9TUkNfRklMRVMgOj0gJChMT0NB
TF9TUkNfRklMRVMpIFwKIAlodG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwIFwKIAlo
dG1sL3BhcnNlci9UZXh0Vmlld1NvdXJjZVBhcnNlci5jcHAgXAogCVwKLQlsb2FkZXIvQ2FjaGUu
Y3BwIFwKIAlsb2FkZXIvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgXAogCWxvYWRlci9DYWNoZWRG
b250LmNwcCBcCiAJbG9hZGVyL0NhY2hlZEltYWdlLmNwcCBcCkBAIC0zODgsNiArMzg3LDggQEAg
TE9DQUxfU1JDX0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJbG9hZGVyL2FwcGNhY2hl
L0RPTUFwcGxpY2F0aW9uQ2FjaGUuY3BwIFwKIAlsb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJz
ZXIuY3BwIFwKIAlcCisJbG9hZGVyL2NhY2hlL0NhY2hlLmNwcCBcCisJXAogCWxvYWRlci9pY29u
L0ljb25EYXRhYmFzZS5jcHAgXAogCWxvYWRlci9pY29uL0ljb25GZXRjaGVyLmNwcCBcCiAJbG9h
ZGVyL2ljb24vSWNvbkxvYWRlci5jcHAgXApJbmRleDogV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA3MTQ4OCkKKysr
IFdlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAg
U0VUKFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9sb2Fk
ZXIiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2xvYWRlci9hcHBjYWNoZSIKICAgICAiJHtXRUJDT1JF
X0RJUn0vbG9hZGVyL2FyY2hpdmUiCisgICAgIiR7V0VCQ09SRV9ESVJ9L2xvYWRlci9jYWNoZSIK
ICAgICAiJHtXRUJDT1JFX0RJUn0vbG9hZGVyL2ljb24iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L21h
dGhtbCIKICAgICAiJHtXRUJDT1JFX0RJUn0vbm90aWZpY2F0aW9ucyIKQEAgLTExMzgsNyArMTEz
OSw2IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBpbnNwZWN0b3IvU2NyaXB0QnJlYWtwb2lu
dC5jcHAKICAgICBpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcAogCi0gICAgbG9h
ZGVyL0NhY2hlLmNwcAogICAgIGxvYWRlci9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAogICAgIGxv
YWRlci9DYWNoZWRGb250LmNwcAogICAgIGxvYWRlci9DYWNoZWRJbWFnZS5jcHAKQEAgLTExOTEs
NiArMTE5MSw4IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBsb2FkZXIvYXJjaGl2ZS9BcmNo
aXZlUmVzb3VyY2UuY3BwCiAgICAgbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlQ29sbGVj
dGlvbi5jcHAKIAorICAgIGxvYWRlci9jYWNoZS9DYWNoZS5jcHAKKwogICAgIGxvYWRlci9pY29u
L0ljb25EYXRhYmFzZS5jcHAKICAgICBsb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcAogICAgIGxv
YWRlci9pY29uL0ljb25SZWNvcmQuY3BwCkluZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDcxNDg4KQorKysg
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQCB3
ZWJjb3JlX2NwcGZsYWdzICs9IFwKIAktSSQoc3JjZGlyKS9XZWJDb3JlL2xvYWRlciBcCiAJLUkk
KHNyY2RpcikvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUgXAogCS1JJChzcmNkaXIpL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUgXAorCS1JJChzcmNkaXIpL1dlYkNvcmUvbG9hZGVyL2NhY2hlIFwKIAkt
SSQoc3JjZGlyKS9XZWJDb3JlL2xvYWRlci9pY29uIFwKIAktSSQoc3JjZGlyKS9XZWJDb3JlL21h
dGhtbCBcCiAJLUkkKHNyY2RpcikvV2ViQ29yZS9ub3RpZmljYXRpb25zIFwKQEAgLTE5MDUsNyAr
MTkwNiw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9B
cmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmggXAogCVdlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJj
aGl2ZVJlc291cmNlLmNwcCBcCiAJV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3Vy
Y2UuaCBcCi0JV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwIFwKKwlXZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZS5jcHAgXAogCVdlYkNvcmUvbG9hZGVyL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIFwK
IAlXZWJDb3JlL2xvYWRlci9DYWNoZWRDU1NTdHlsZVNoZWV0LmggXAogCVdlYkNvcmUvbG9hZGVy
L0NhY2hlZEZvbnQuY3BwIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA3MTQ4OCkKKysrIFdlYkNvcmUvV2Vi
Q29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0yMDExLDYgKzIwMTEsOCBAQAogICAgICAgICAg
ICAgJ2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oJywKICAgICAgICAgICAgICdsb2Fk
ZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmNwcCcsCiAgICAgICAgICAgICAn
bG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oJywKKyAgICAgICAgICAg
ICdsb2FkZXIvY2FjaGUvQ2FjaGUuY3BwJywKKyAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvQ2Fj
aGUuaCcsCiAgICAgICAgICAgICAnbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcCcsCiAgICAg
ICAgICAgICAnbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgnLAogICAgICAgICAgICAgJ2xvYWRl
ci9pY29uL0ljb25EYXRhYmFzZUNsaWVudC5oJywKQEAgLTIwMjcsOCArMjAyOSw2IEBACiAgICAg
ICAgICAgICAnbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbScsCiAgICAgICAgICAgICAn
bG9hZGVyL3dpbi9Eb2N1bWVudExvYWRlcldpbi5jcHAnLAogICAgICAgICAgICAgJ2xvYWRlci93
aW4vRnJhbWVMb2FkZXJXaW4uY3BwJywKLSAgICAgICAgICAgICdsb2FkZXIvQ2FjaGUuY3BwJywK
LSAgICAgICAgICAgICdsb2FkZXIvQ2FjaGUuaCcsCiAgICAgICAgICAgICAnbG9hZGVyL0NhY2hl
ZE1ldGFkYXRhLmgnLAogICAgICAgICAgICAgJ2xvYWRlci9DYWNoZVBvbGljeS5oJywKICAgICAg
ICAgICAgICdsb2FkZXIvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAnLApJbmRleDogV2ViQ29yZS9X
ZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA3
MTQ4OCkKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTIzMSw2ICsy
MzEsNyBAQCBXRUJDT1JFX0lOQ0xVREVQQVRIID0gXAogICAgICQkUFdEL2xvYWRlciBcCiAgICAg
JCRQV0QvbG9hZGVyL2FwcGNhY2hlIFwKICAgICAkJFBXRC9sb2FkZXIvYXJjaGl2ZSBcCisgICAg
JCRQV0QvbG9hZGVyL2NhY2hlIFwKICAgICAkJFBXRC9sb2FkZXIvaWNvbiBcCiAgICAgJCRQV0Qv
bWF0aG1sIFwKICAgICAkJFBXRC9ub3RpZmljYXRpb25zIFwKQEAgLTEwMzEsNyArMTAzMiw3IEBA
IFNPVVJDRVMgKz0gXAogICAgIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcCBcCiAg
ICAgbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcCBcCiAgICAgbG9hZGVyL2FyY2hp
dmUvQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5jcHAgXAotICAgIGxvYWRlci9DYWNoZS5jcHAg
XAorICAgIGxvYWRlci9jYWNoZS9DYWNoZS5jcHAgXAogICAgIGxvYWRlci9DYWNoZWRDU1NTdHls
ZVNoZWV0LmNwcCBcCiAgICAgbG9hZGVyL0NhY2hlZEZvbnQuY3BwIFwKICAgICBsb2FkZXIvQ2Fj
aGVkSW1hZ2UuY3BwIFwKQEAgLTE5MzAsNyArMTkzMSw3IEBAIEhFQURFUlMgKz0gXAogICAgIGxv
YWRlci9DYWNoZWRSZXNvdXJjZUhhbmRsZS5oIFwKICAgICBsb2FkZXIvQ2FjaGVkU2NyaXB0Lmgg
XAogICAgIGxvYWRlci9DYWNoZWRYU0xTdHlsZVNoZWV0LmggXAotICAgIGxvYWRlci9DYWNoZS5o
IFwKKyAgICBsb2FkZXIvY2FjaGUvQ2FjaGUuaCBcCiAgICAgbG9hZGVyL0Nyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbC5oIFwKICAgICBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNo
ZS5oIFwKICAgICBsb2FkZXIvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCBcCkluZGV4OiBXZWJDb3Jl
L1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5n
eXAvV2ViQ29yZS5neXAJKHJldmlzaW9uIDcxNDg4KQorKysgV2ViQ29yZS9XZWJDb3JlLmd5cC9X
ZWJDb3JlLmd5cAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDYgKzEzNCw3IEBACiAgICAgICAnLi4v
bG9hZGVyJywKICAgICAgICcuLi9sb2FkZXIvYXBwY2FjaGUnLAogICAgICAgJy4uL2xvYWRlci9h
cmNoaXZlJywKKyAgICAgICcuLi9sb2FkZXIvY2FjaGUnLAogICAgICAgJy4uL2xvYWRlci9pY29u
JywKICAgICAgICcuLi9tYXRobWwnLAogICAgICAgJy4uL25vdGlmaWNhdGlvbnMnLApJbmRleDog
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA3MTQ4OCkKKysrIFdl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTIz
NzA4LDE0ICsyMzcwOCw2IEBACiAJCQlOYW1lPSJsb2FkZXIiDQogCQkJPg0KIAkJCTxGaWxlDQot
CQkJCVJlbGF0aXZlUGF0aD0iLi5cbG9hZGVyXENhY2hlLmNwcCINCi0JCQkJPg0KLQkJCTwvRmls
ZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxDYWNoZS5oIg0KLQkJ
CQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cbG9hZGVy
XENhY2hlZENTU1N0eWxlU2hlZXQuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTI0MjQ3
LDYgKzI0MjM5LDE4IEBACiAJCQkJCTwvRmlsZT4NCiAJCQkJPC9GaWx0ZXI+DQogCQkJPC9GaWx0
ZXI+DQorCQkJPEZpbHRlcg0KKwkJCQlOYW1lPSJjYWNoZSINCisJCQkJPg0KKwkJCQk8RmlsZQ0K
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcY2FjaGVcQ2FjaGUuY3BwIg0KKwkJCQkJPg0K
KwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxj
YWNoZVxDYWNoZS5oIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJPC9GaWx0ZXI+DQogCQk8
L0ZpbHRlcj4NCiAJCTxGaWx0ZXINCiAJCQlOYW1lPSJwbGF0Zm9ybSINCkluZGV4OiBXZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNzE0ODgpCisrKyBX
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMTYwMjEsNiArMTYwMjEsMTUgQEAKIAkJCW5hbWUgPSBYTUw7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwogCQl9OworCQlBOEQyQjI1MjEyODdBNTYwMDBBRjREREEgLyogY2FjaGUgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUJDQjE2QkZFMDk3
OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZS5jcHAgKi8sCisJCQkJQkNCMTZCRkYwOTc5QzNCRDAwNDY3
NzQxIC8qIENhY2hlLmggKi8sCisJCQkpOworCQkJcGF0aCA9IGNhY2hlOworCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJQTlEMjQ3RjkwRDc1N0U0MTAwRkRGOTU5IC8qIFBsdWdp
bnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTcyNDQs
MTIgKzE3MjUzLDExIEBACiAJCUJDQjE2QkZCMDk3OUMzODcwMDQ2Nzc0MSAvKiBsb2FkZXIgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUE4RDJCMjUyMTI4
N0E1NjAwMEFGNEREQSAvKiBjYWNoZSAqLywKIAkJCQkxQThGNkJCMDBEQjU1Q0RDMDAxREI3OTQg
LyogYXBwY2FjaGUgKi8sCiAJCQkJNTEyREQ4RTgwRDkxRTY5MTAwMEY4OUVFIC8qIGFyY2hpdmUg
Ki8sCiAJCQkJNTEyNkU2QjYwQTJFM0FFRjAwNUMyOUZBIC8qIGljb24gKi8sCiAJCQkJOTNBMUVB
QTIwQTU2MzREODAwNjk2MEEwIC8qIG1hYyAqLywKLQkJCQlCQ0IxNkJGRTA5NzlDM0JEMDA0Njc3
NDEgLyogQ2FjaGUuY3BwICovLAotCQkJCUJDQjE2QkZGMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNo
ZS5oICovLAogCQkJCUJDQjE2QzAwMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRDU1NTdHlsZVNo
ZWV0LmNwcCAqLywKIAkJCQlCQ0IxNkMwMTA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkQ1NTU3R5
bGVTaGVldC5oICovLAogCQkJCUJDNjRCNEM5MENCNDI5NUQwMDVGMkI2MiAvKiBDYWNoZWRGb250
LmNwcCAqLywKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAJKHJldmlzaW9uIDcxNDg4KQorKysgV2ViQ29yZS9sb2Fk
ZXIvQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc4OCArMCwwIEBACi0vKgotICAgIENv
cHlyaWdodCAoQykgMTk5OCBMYXJzIEtub2xsIChrbm9sbEBtcGktaGQubXBnLmRlKQotICAgIENv
cHlyaWdodCAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAgICBDb3B5
cmlnaHQgKEMpIDIwMDIgV2FsZG8gQmFzdGlhbiAoYmFzdGlhbkBrZGUub3JnKQotICAgIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0K
LSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
Ci0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNhY2hlLmgi
Ci0KLSNpbmNsdWRlICJDYWNoZWRDU1NTdHlsZVNoZWV0LmgiCi0jaW5jbHVkZSAiQ2FjaGVkRm9u
dC5oIgotI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCi0jaW5jbHVkZSAiQ2FjaGVkU2NyaXB0Lmgi
Ci0jaW5jbHVkZSAiQ2FjaGVkWFNMU3R5bGVTaGVldC5oIgotI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlTG9hZGVyLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJGcmFtZUxvYWRl
ci5oIgotI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKLSNpbmNsdWRlICJGcmFtZVZpZXcu
aCIKLSNpbmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJS
ZXNvdXJjZUhhbmRsZS5oIgotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSA8
c3RkaW8uaD4KLSNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KLQotdXNpbmcgbmFtZXNwYWNl
IHN0ZDsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgY29uc3QgaW50IGNEZWZhdWx0
Q2FjaGVDYXBhY2l0eSA9IDgxOTIgKiAxMDI0Owotc3RhdGljIGNvbnN0IGRvdWJsZSBjTWluRGVs
YXlCZWZvcmVMaXZlRGVjb2RlZFBydW5lID0gMTsgLy8gU2Vjb25kcy4KLXN0YXRpYyBjb25zdCBm
bG9hdCBjVGFyZ2V0UHJ1bmVQZXJjZW50YWdlID0gLjk1ZjsgLy8gUGVyY2VudGFnZSBvZiBjYXBh
Y2l0eSB0b3dhcmQgd2hpY2ggd2UgcHJ1bmUsIHRvIGF2b2lkIGltbWVkaWF0ZWx5IHBydW5pbmcg
YWdhaW4uCi1zdGF0aWMgY29uc3QgZG91YmxlIGNEZWZhdWx0RGVjb2RlZERhdGFEZWxldGlvbklu
dGVydmFsID0gMDsKLQotQ2FjaGUqIGNhY2hlKCkKLXsKLSAgICBzdGF0aWMgQ2FjaGUqIHN0YXRp
Y0NhY2hlID0gbmV3IENhY2hlOwotICAgIHJldHVybiBzdGF0aWNDYWNoZTsKLX0KLQotQ2FjaGU6
OkNhY2hlKCkKLSAgICA6IG1fZGlzYWJsZWQoZmFsc2UpCi0gICAgLCBtX3BydW5lRW5hYmxlZCh0
cnVlKQotICAgICwgbV9pblBydW5lRGVhZFJlc291cmNlcyhmYWxzZSkKLSAgICAsIG1fY2FwYWNp
dHkoY0RlZmF1bHRDYWNoZUNhcGFjaXR5KQotICAgICwgbV9taW5EZWFkQ2FwYWNpdHkoMCkKLSAg
ICAsIG1fbWF4RGVhZENhcGFjaXR5KGNEZWZhdWx0Q2FjaGVDYXBhY2l0eSkKLSAgICAsIG1fZGVh
ZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbChjRGVmYXVsdERlY29kZWREYXRhRGVsZXRpb25J
bnRlcnZhbCkKLSAgICAsIG1fbGl2ZVNpemUoMCkKLSAgICAsIG1fZGVhZFNpemUoMCkKLXsKLX0K
LQotc3RhdGljIENhY2hlZFJlc291cmNlKiBjcmVhdGVSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6
VHlwZSB0eXBlLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCkKLXsKLSAg
ICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNl
OgotICAgICAgICByZXR1cm4gbmV3IENhY2hlZEltYWdlKHVybC5zdHJpbmcoKSk7Ci0gICAgY2Fz
ZSBDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldDoKLSAgICAgICAgcmV0dXJuIG5ldyBDYWNo
ZWRDU1NTdHlsZVNoZWV0KHVybC5zdHJpbmcoKSwgY2hhcnNldCk7Ci0gICAgY2FzZSBDYWNoZWRS
ZXNvdXJjZTo6U2NyaXB0OgotICAgICAgICByZXR1cm4gbmV3IENhY2hlZFNjcmlwdCh1cmwuc3Ry
aW5nKCksIGNoYXJzZXQpOwotICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZToK
LSAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRGb250KHVybC5zdHJpbmcoKSk7Ci0jaWYgRU5BQkxF
KFhTTFQpCi0gICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6WFNMU3R5bGVTaGVldDoKLSAgICAgICAg
cmV0dXJuIG5ldyBDYWNoZWRYU0xTdHlsZVNoZWV0KHVybC5zdHJpbmcoKSk7Ci0jZW5kaWYKLSNp
ZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKLSAgICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5rUHJl
ZmV0Y2g6Ci0gICAgICAgIHJldHVybiBuZXcgQ2FjaGVkUmVzb3VyY2UodXJsLnN0cmluZygpLCBD
YWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoKTsKLSNlbmRpZgotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KLQotICAgIHJldHVybiAwOwotfQotCi1DYWNoZWRSZXNvdXJjZSog
Q2FjaGU6OnJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3Vy
Y2VMb2FkZXIsIENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBjaGFyc2V0LCBib29sIHJlcXVlc3RJc1ByZWxvYWQpCi17Ci0gICAgTE9HKFJl
c291cmNlTG9hZGluZywgIkNhY2hlOjpyZXF1ZXN0UmVzb3VyY2UgJyVzJywgY2hhcnNldCAnJXMn
LCBwcmVsb2FkPSV1IiwgdXJsLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSwgY2hhcnNldC5sYXRp
bjEoKS5kYXRhKCksIHJlcXVlc3RJc1ByZWxvYWQpOwotCi0gICAgLy8gRklYTUU6IERvIHdlIHJl
YWxseSBuZWVkIHRvIHNwZWNpYWwtY2FzZSBhbiBlbXB0eSBVUkw/Ci0gICAgLy8gV291bGQgaXQg
YmUgYmV0dGVyIHRvIGp1c3QgZ28gb24gd2l0aCB0aGUgY2FjaGUgY29kZSBhbmQgbGV0IGl0IGZh
aWwgbGF0ZXI/Ci0gICAgaWYgKHVybC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOwotCi0g
ICAgLy8gTG9vayB1cCB0aGUgcmVzb3VyY2UgaW4gb3VyIG1hcC4KLSAgICBDYWNoZWRSZXNvdXJj
ZSogcmVzb3VyY2UgPSByZXNvdXJjZUZvclVSTCh1cmwuc3RyaW5nKCkpOwotCi0gICAgaWYgKHJl
c291cmNlICYmIHJlcXVlc3RJc1ByZWxvYWQgJiYgIXJlc291cmNlLT5pc1ByZWxvYWRlZCgpKSB7
Ci0gICAgICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJDYWNoZTo6cmVxdWVzdFJlc291cmNlIGFs
cmVhZHkgaGFzIGEgcHJlbG9hZCByZXF1ZXN0IGZvciB0aGlzIHJlcXVlc3QsIGFuZCBpdCBoYXNu
J3QgYmVlbiBwcmVsb2FkZWQgeWV0Iik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAg
IGlmICghY2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvYygpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5E
aXNwbGF5KHVybCkpIHsKLSAgICAgICAgTE9HKFJlc291cmNlTG9hZGluZywgIi4uLlVSTCB3YXMg
bm90IGFsbG93ZWQgYnkgU2VjdXJpdHlPcmlnaW4iKTsKLSAgICAgICAgaWYgKCFyZXF1ZXN0SXNQ
cmVsb2FkKQotICAgICAgICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChj
YWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jKCktPmZyYW1lKCksIHVybC5zdHJpbmcoKSk7Ci0gICAg
ICAgIHJldHVybiAwOwotICAgIH0KLSAgICAKLSAgICBpZiAoIXJlc291cmNlKSB7Ci0gICAgICAg
IExPRyhSZXNvdXJjZUxvYWRpbmcsICJDYWNoZWRSZXNvdXJjZSBmb3IgJyVzJyB3YXNuJ3QgZm91
bmQgaW4gY2FjaGUuIENyZWF0aW5nIGl0IiwgdXJsLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7
Ci0gICAgICAgIC8vIFRoZSByZXNvdXJjZSBkb2VzIG5vdCBleGlzdC4gQ3JlYXRlIGl0LgotICAg
ICAgICByZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHR5cGUsIHVybCwgY2hhcnNldCk7Ci0gICAg
ICAgIEFTU0VSVChyZXNvdXJjZSk7Ci0KLSAgICAgICAgLy8gUHJldGVuZCB0aGUgcmVzb3VyY2Ug
aXMgaW4gdGhlIGNhY2hlLCB0byBwcmV2ZW50IGl0IGZyb20gYmVpbmcgZGVsZXRlZCBkdXJpbmcg
dGhlIGxvYWQoKSBjYWxsLgotICAgICAgICAvLyBGSVhNRTogQ2FjaGVkUmVzb3VyY2Ugc2hvdWxk
IGp1c3QgdXNlIG5vcm1hbCByZWZjb3VudGluZyBpbnN0ZWFkLgotICAgICAgICByZXNvdXJjZS0+
c2V0SW5DYWNoZSh0cnVlKTsKLSAgICAgICAgCi0gICAgICAgIHJlc291cmNlLT5sb2FkKGNhY2hl
ZFJlc291cmNlTG9hZGVyKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChyZXNvdXJjZS0+ZXJyb3JP
Y2N1cnJlZCgpKSB7Ci0gICAgICAgICAgICAvLyBXZSBkb24ndCBzdXBwb3J0IGltbWVkaWF0ZSBs
b2FkcywgYnV0IHdlIGRvIHN1cHBvcnQgaW1tZWRpYXRlIGZhaWx1cmUuCi0gICAgICAgICAgICAv
LyBJbiB0aGF0IGNhc2Ugd2Ugc2hvdWxkIHRvIGRlbGV0ZSB0aGUgcmVzb3VyY2Ugbm93IGFuZCBy
ZXR1cm4gMCBiZWNhdXNlIG90aGVyd2lzZQotICAgICAgICAgICAgLy8gaXQgd291bGQgbGVhayBp
ZiBubyByZWYvZGVyZWYgd2FzIGV2ZXIgZG9uZSBvbiBpdC4KLSAgICAgICAgICAgIHJlc291cmNl
LT5zZXRJbkNhY2hlKGZhbHNlKTsKLSAgICAgICAgICAgIGRlbGV0ZSByZXNvdXJjZTsKLSAgICAg
ICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFkaXNhYmxlZCgpKQot
ICAgICAgICAgICAgbV9yZXNvdXJjZXMuc2V0KHVybC5zdHJpbmcoKSwgcmVzb3VyY2UpOyAgLy8g
VGhlIHNpemUgd2lsbCBiZSBhZGRlZCBpbiBsYXRlciBvbmNlIHRoZSByZXNvdXJjZSBpcyBsb2Fk
ZWQgYW5kIGNhbGxzIGJhY2sgdG8gdXMgd2l0aCB0aGUgbmV3IHNpemUuCi0gICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgLy8gS2ljayB0aGUgcmVzb3VyY2Ugb3V0IG9mIHRoZSBjYWNoZSwgYmVj
YXVzZSB0aGUgY2FjaGUgaXMgZGlzYWJsZWQuCi0gICAgICAgICAgICByZXNvdXJjZS0+c2V0SW5D
YWNoZShmYWxzZSk7Ci0gICAgICAgICAgICByZXNvdXJjZS0+c2V0Q2FjaGVkUmVzb3VyY2VMb2Fk
ZXIoY2FjaGVkUmVzb3VyY2VMb2FkZXIpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHJl
c291cmNlLT50eXBlKCkgIT0gdHlwZSkgewotICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAi
Q2FjaGU6OnJlcXVlc3RSZXNvdXJjZSBjYW5ub3QgdXNlIGNhY2hlZCByZXNvdXJjZSBmb3IgJyVz
JyBkdWUgdG8gdHlwZSBtaXNtYXRjaCIsIHVybC5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwot
ICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAoIWRpc2FibGVkKCkpIHsKLSAgICAg
ICAgLy8gVGhpcyB3aWxsIG1vdmUgdGhlIHJlc291cmNlIHRvIHRoZSBmcm9udCBvZiBpdHMgTFJV
IGxpc3QgYW5kIGluY3JlYXNlIGl0cyBhY2Nlc3MgY291bnQuCi0gICAgICAgIHJlc291cmNlQWNj
ZXNzZWQocmVzb3VyY2UpOwotICAgIH0KLQotICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJDYWNo
ZTo6cmVxdWVzdFJlc291cmNlIGZvciAnJXMnIHJldHVybmluZyByZXNvdXJjZSAlcFxuIiwgdXJs
LnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSwgcmVzb3VyY2UpOwotCi0gICAgcmV0dXJuIHJlc291
cmNlOwotfQotICAgIAotQ2FjaGVkQ1NTU3R5bGVTaGVldCogQ2FjaGU6OnJlcXVlc3RVc2VyQ1NT
U3R5bGVTaGVldChDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIsIGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpCi17Ci0gICAgQ2FjaGVkQ1NT
U3R5bGVTaGVldCogdXNlclNoZWV0OwotICAgIGlmIChDYWNoZWRSZXNvdXJjZSogZXhpc3Rpbmcg
PSByZXNvdXJjZUZvclVSTCh1cmwpKSB7Ci0gICAgICAgIGlmIChleGlzdGluZy0+dHlwZSgpICE9
IENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0KQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgICAgIHVzZXJTaGVldCA9IHN0YXRpY19jYXN0PENhY2hlZENTU1N0eWxlU2hlZXQqPihleGlz
dGluZyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdXNlclNoZWV0ID0gbmV3IENhY2hlZENTU1N0
eWxlU2hlZXQodXJsLCBjaGFyc2V0KTsKLQotICAgICAgICAvLyBQcmV0ZW5kIHRoZSByZXNvdXJj
ZSBpcyBpbiB0aGUgY2FjaGUsIHRvIHByZXZlbnQgaXQgZnJvbSBiZWluZyBkZWxldGVkIGR1cmlu
ZyB0aGUgbG9hZCgpIGNhbGwuCi0gICAgICAgIC8vIEZJWE1FOiBDYWNoZWRSZXNvdXJjZSBzaG91
bGQganVzdCB1c2Ugbm9ybWFsIHJlZmNvdW50aW5nIGluc3RlYWQuCi0gICAgICAgIHVzZXJTaGVl
dC0+c2V0SW5DYWNoZSh0cnVlKTsKLSAgICAgICAgLy8gRG9uJ3QgbG9hZCBpbmNyZW1lbnRhbGx5
LCBza2lwIGxvYWQgY2hlY2tzLCBkb24ndCBzZW5kIHJlc291cmNlIGxvYWQgY2FsbGJhY2tzLgot
ICAgICAgICB1c2VyU2hlZXQtPmxvYWQoY2FjaGVkUmVzb3VyY2VMb2FkZXIsIGZhbHNlLCBTa2lw
U2VjdXJpdHlDaGVjaywgZmFsc2UpOwotICAgICAgICBpZiAoIWRpc2FibGVkKCkpCi0gICAgICAg
ICAgICBtX3Jlc291cmNlcy5zZXQodXJsLCB1c2VyU2hlZXQpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICB1c2VyU2hlZXQtPnNldEluQ2FjaGUoZmFsc2UpOwotICAgIH0KLQotICAgIGlmICgh
ZGlzYWJsZWQoKSkgewotICAgICAgICAvLyBUaGlzIHdpbGwgbW92ZSB0aGUgcmVzb3VyY2UgdG8g
dGhlIGZyb250IG9mIGl0cyBMUlUgbGlzdCBhbmQgaW5jcmVhc2UgaXRzIGFjY2VzcyBjb3VudC4K
LSAgICAgICAgcmVzb3VyY2VBY2Nlc3NlZCh1c2VyU2hlZXQpOwotICAgIH0KLQotICAgIHJldHVy
biB1c2VyU2hlZXQ7Ci19Ci0gICAgCi12b2lkIENhY2hlOjpyZXZhbGlkYXRlUmVzb3VyY2UoQ2Fj
aGVkUmVzb3VyY2UqIHJlc291cmNlLCBDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3Vy
Y2VMb2FkZXIpCi17Ci0gICAgQVNTRVJUKHJlc291cmNlKTsKLSAgICBBU1NFUlQocmVzb3VyY2Ut
PmluQ2FjaGUoKSk7Ci0gICAgQVNTRVJUKHJlc291cmNlID09IG1fcmVzb3VyY2VzLmdldChyZXNv
dXJjZS0+dXJsKCkpKTsKLSAgICBBU1NFUlQoIWRpc2FibGVkKCkpOwotICAgIGlmIChyZXNvdXJj
ZS0+cmVzb3VyY2VUb1JldmFsaWRhdGUoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICghcmVz
b3VyY2UtPmNhblVzZUNhY2hlVmFsaWRhdG9yKCkpIHsKLSAgICAgICAgZXZpY3QocmVzb3VyY2Up
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNvbnN0IFN0cmluZyYgdXJsID0gcmVzb3Vy
Y2UtPnVybCgpOwotICAgIENhY2hlZFJlc291cmNlKiBuZXdSZXNvdXJjZSA9IGNyZWF0ZVJlc291
cmNlKHJlc291cmNlLT50eXBlKCksIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCByZXNvdXJj
ZS0+ZW5jb2RpbmcoKSk7Ci0gICAgTE9HKFJlc291cmNlTG9hZGluZywgIlJlc291cmNlICVwIGNy
ZWF0ZWQgdG8gcmV2YWxpZGF0ZSAlcCIsIG5ld1Jlc291cmNlLCByZXNvdXJjZSk7Ci0gICAgbmV3
UmVzb3VyY2UtPnNldFJlc291cmNlVG9SZXZhbGlkYXRlKHJlc291cmNlKTsKLSAgICBldmljdChy
ZXNvdXJjZSk7Ci0gICAgbV9yZXNvdXJjZXMuc2V0KHVybCwgbmV3UmVzb3VyY2UpOwotICAgIG5l
d1Jlc291cmNlLT5zZXRJbkNhY2hlKHRydWUpOwotICAgIHJlc291cmNlQWNjZXNzZWQobmV3UmVz
b3VyY2UpOwotICAgIG5ld1Jlc291cmNlLT5sb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyKTsKLX0K
LSAgICAKLXZvaWQgQ2FjaGU6OnJldmFsaWRhdGlvblN1Y2NlZWRlZChDYWNoZWRSZXNvdXJjZSog
cmV2YWxpZGF0aW5nUmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQot
ewotICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IHJldmFsaWRhdGluZ1Jlc291cmNlLT5y
ZXNvdXJjZVRvUmV2YWxpZGF0ZSgpOwotICAgIEFTU0VSVChyZXNvdXJjZSk7Ci0gICAgQVNTRVJU
KCFyZXNvdXJjZS0+aW5DYWNoZSgpKTsKLSAgICBBU1NFUlQocmVzb3VyY2UtPmlzTG9hZGVkKCkp
OwotICAgIEFTU0VSVChyZXZhbGlkYXRpbmdSZXNvdXJjZS0+aW5DYWNoZSgpKTsKLSAgICAKLSAg
ICBldmljdChyZXZhbGlkYXRpbmdSZXNvdXJjZSk7Ci0KLSAgICBBU1NFUlQoIW1fcmVzb3VyY2Vz
LmdldChyZXNvdXJjZS0+dXJsKCkpKTsKLSAgICBtX3Jlc291cmNlcy5zZXQocmVzb3VyY2UtPnVy
bCgpLCByZXNvdXJjZSk7Ci0gICAgcmVzb3VyY2UtPnNldEluQ2FjaGUodHJ1ZSk7Ci0gICAgcmVz
b3VyY2UtPnVwZGF0ZVJlc3BvbnNlQWZ0ZXJSZXZhbGlkYXRpb24ocmVzcG9uc2UpOwotICAgIGlu
c2VydEluTFJVTGlzdChyZXNvdXJjZSk7Ci0gICAgaW50IGRlbHRhID0gcmVzb3VyY2UtPnNpemUo
KTsKLSAgICBpZiAocmVzb3VyY2UtPmRlY29kZWRTaXplKCkgJiYgcmVzb3VyY2UtPmhhc0NsaWVu
dHMoKSkKLSAgICAgICAgaW5zZXJ0SW5MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QocmVzb3VyY2Up
OwotICAgIGlmIChkZWx0YSkKLSAgICAgICAgYWRqdXN0U2l6ZShyZXNvdXJjZS0+aGFzQ2xpZW50
cygpLCBkZWx0YSk7Ci0gICAgCi0gICAgcmV2YWxpZGF0aW5nUmVzb3VyY2UtPnN3aXRjaENsaWVu
dHNUb1JldmFsaWRhdGVkUmVzb3VyY2UoKTsKLSAgICAvLyB0aGlzIGRlbGV0ZXMgdGhlIHJldmFs
aWRhdGluZyByZXNvdXJjZQotICAgIHJldmFsaWRhdGluZ1Jlc291cmNlLT5jbGVhclJlc291cmNl
VG9SZXZhbGlkYXRlKCk7Ci19Ci0KLXZvaWQgQ2FjaGU6OnJldmFsaWRhdGlvbkZhaWxlZChDYWNo
ZWRSZXNvdXJjZSogcmV2YWxpZGF0aW5nUmVzb3VyY2UpCi17Ci0gICAgTE9HKFJlc291cmNlTG9h
ZGluZywgIlJldmFsaWRhdGlvbiBmYWlsZWQgZm9yICVwIiwgcmV2YWxpZGF0aW5nUmVzb3VyY2Up
OwotICAgIEFTU0VSVChyZXZhbGlkYXRpbmdSZXNvdXJjZS0+cmVzb3VyY2VUb1JldmFsaWRhdGUo
KSk7Ci0gICAgcmV2YWxpZGF0aW5nUmVzb3VyY2UtPmNsZWFyUmVzb3VyY2VUb1JldmFsaWRhdGUo
KTsKLX0KLQotQ2FjaGVkUmVzb3VyY2UqIENhY2hlOjpyZXNvdXJjZUZvclVSTChjb25zdCBTdHJp
bmcmIHVybCkKLXsKLSAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBtX3Jlc291cmNlcy5n
ZXQodXJsKTsKLSAgICBib29sIHdhc1B1cmdlYWJsZSA9IENhY2hlOjpzaG91bGRNYWtlUmVzb3Vy
Y2VQdXJnZWFibGVPbkV2aWN0aW9uKCkgJiYgcmVzb3VyY2UgJiYgcmVzb3VyY2UtPmlzUHVyZ2Vh
YmxlKCk7Ci0gICAgaWYgKHJlc291cmNlICYmICFyZXNvdXJjZS0+bWFrZVB1cmdlYWJsZShmYWxz
ZSkpIHsKLSAgICAgICAgQVNTRVJUKCFyZXNvdXJjZS0+aGFzQ2xpZW50cygpKTsKLSAgICAgICAg
ZXZpY3QocmVzb3VyY2UpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgLy8gQWRkIHRo
ZSBzaXplIGJhY2sgc2luY2Ugd2UgaGFkIHN1YnRyYWN0ZWQgaXQgd2hlbiB3ZSBtYXJrZWQgdGhl
IG1lbW9yeSBhcyBwdXJnZWFibGUuCi0gICAgaWYgKHdhc1B1cmdlYWJsZSkKLSAgICAgICAgYWRq
dXN0U2l6ZShyZXNvdXJjZS0+aGFzQ2xpZW50cygpLCByZXNvdXJjZS0+c2l6ZSgpKTsKLSAgICBy
ZXR1cm4gcmVzb3VyY2U7Ci19Ci0KLXVuc2lnbmVkIENhY2hlOjpkZWFkQ2FwYWNpdHkoKSBjb25z
dCAKLXsKLSAgICAvLyBEZWFkIHJlc291cmNlIGNhcGFjaXR5IGlzIHdoYXRldmVyIHNwYWNlIGlz
IG5vdCBvY2N1cGllZCBieSBsaXZlIHJlc291cmNlcywgYm91bmRlZCBieSBhbiBpbmRlcGVuZGVu
dCBtaW5pbXVtIGFuZCBtYXhpbXVtLgotICAgIHVuc2lnbmVkIGNhcGFjaXR5ID0gbV9jYXBhY2l0
eSAtIG1pbihtX2xpdmVTaXplLCBtX2NhcGFjaXR5KTsgLy8gU3RhcnQgd2l0aCBhdmFpbGFibGUg
Y2FwYWNpdHkuCi0gICAgY2FwYWNpdHkgPSBtYXgoY2FwYWNpdHksIG1fbWluRGVhZENhcGFjaXR5
KTsgLy8gTWFrZSBzdXJlIGl0J3MgYWJvdmUgdGhlIG1pbmltdW0uCi0gICAgY2FwYWNpdHkgPSBt
aW4oY2FwYWNpdHksIG1fbWF4RGVhZENhcGFjaXR5KTsgLy8gTWFrZSBzdXJlIGl0J3MgYmVsb3cg
dGhlIG1heGltdW0uCi0gICAgcmV0dXJuIGNhcGFjaXR5OwotfQotCi11bnNpZ25lZCBDYWNoZTo6
bGl2ZUNhcGFjaXR5KCkgY29uc3QgCi17IAotICAgIC8vIExpdmUgcmVzb3VyY2UgY2FwYWNpdHkg
aXMgd2hhdGV2ZXIgaXMgbGVmdCBvdmVyIGFmdGVyIGNhbGN1bGF0aW5nIGRlYWQgcmVzb3VyY2Ug
Y2FwYWNpdHkuCi0gICAgcmV0dXJuIG1fY2FwYWNpdHkgLSBkZWFkQ2FwYWNpdHkoKTsKLX0KLQot
dm9pZCBDYWNoZTo6cHJ1bmVMaXZlUmVzb3VyY2VzKCkKLXsKLSAgICBpZiAoIW1fcHJ1bmVFbmFi
bGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICB1bnNpZ25lZCBjYXBhY2l0eSA9IGxpdmVDYXBh
Y2l0eSgpOwotICAgIGlmIChjYXBhY2l0eSAmJiBtX2xpdmVTaXplIDw9IGNhcGFjaXR5KQotICAg
ICAgICByZXR1cm47Ci0KLSAgICB1bnNpZ25lZCB0YXJnZXRTaXplID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGNhcGFjaXR5ICogY1RhcmdldFBydW5lUGVyY2VudGFnZSk7IC8vIEN1dCBieSBhIHBl
cmNlbnRhZ2UgdG8gYXZvaWQgaW1tZWRpYXRlbHkgcHJ1bmluZyBhZ2Fpbi4KLSAgICBkb3VibGUg
Y3VycmVudFRpbWUgPSBGcmFtZVZpZXc6OmN1cnJlbnRQYWludFRpbWVTdGFtcCgpOwotICAgIGlm
ICghY3VycmVudFRpbWUpIC8vIEluIGNhc2UgcHJ1bmUgaXMgY2FsbGVkIGRpcmVjdGx5LCBvdXRz
aWRlIG9mIGEgRnJhbWUgcGFpbnQuCi0gICAgICAgIGN1cnJlbnRUaW1lID0gV1RGOjpjdXJyZW50
VGltZSgpOwotICAgIAotICAgIC8vIERlc3Ryb3kgYW55IGRlY29kZWQgZGF0YSBpbiBsaXZlIG9i
amVjdHMgdGhhdCB3ZSBjYW4uCi0gICAgLy8gU3RhcnQgZnJvbSB0aGUgdGFpbCwgc2luY2UgdGhp
cyBpcyB0aGUgbGVhc3QgcmVjZW50bHkgYWNjZXNzZWQgb2YgdGhlIG9iamVjdHMuCi0KLSAgICAv
LyBUaGUgbGlzdCBtaWdodCBub3QgYmUgc29ydGVkIGJ5IHRoZSBtX2xhc3REZWNvZGVkQWNjZXNz
VGltZS4gVGhlIGltcGFjdAotICAgIC8vIG9mIHRoaXMgd2Vha2VyIGludmFyaWFudCBpcyBtaW5v
ciBhcyB0aGUgYmVsb3cgaWYgc3RhdGVtZW50IHRvIGNoZWNrIHRoZQotICAgIC8vIGVsYXBzZWRU
aW1lIHdpbGwgZXZhbHVhdGUgdG8gZmFsc2UgYXMgdGhlIGN1cnJlbnRUaW1lIHdpbGwgYmUgYSBs
b3QKLSAgICAvLyBncmVhdGVyIHRoYW4gdGhlIGN1cnJlbnQtPm1fbGFzdERlY29kZWRBY2Nlc3NU
aW1lLgotICAgIC8vIEZvciBtb3JlIGRldGFpbHMgc2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzAyMDkKLSAgICBDYWNoZWRSZXNvdXJjZSogY3VycmVudCA9IG1f
bGl2ZURlY29kZWRSZXNvdXJjZXMubV90YWlsOwotICAgIHdoaWxlIChjdXJyZW50KSB7Ci0gICAg
ICAgIENhY2hlZFJlc291cmNlKiBwcmV2ID0gY3VycmVudC0+bV9wcmV2SW5MaXZlUmVzb3VyY2Vz
TGlzdDsKLSAgICAgICAgQVNTRVJUKGN1cnJlbnQtPmhhc0NsaWVudHMoKSk7Ci0gICAgICAgIGlm
IChjdXJyZW50LT5pc0xvYWRlZCgpICYmIGN1cnJlbnQtPmRlY29kZWRTaXplKCkpIHsKLSAgICAg
ICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgcmVtYWluaW5nIHJlc291cmNlcyBhcmUgdG9v
IG5ldyB0byBwcnVuZS4KLSAgICAgICAgICAgIGRvdWJsZSBlbGFwc2VkVGltZSA9IGN1cnJlbnRU
aW1lIC0gY3VycmVudC0+bV9sYXN0RGVjb2RlZEFjY2Vzc1RpbWU7Ci0gICAgICAgICAgICBpZiAo
ZWxhcHNlZFRpbWUgPCBjTWluRGVsYXlCZWZvcmVMaXZlRGVjb2RlZFBydW5lKQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgLy8gRGVzdHJveSBvdXIgZGVjb2RlZCBkYXRh
LiBUaGlzIHdpbGwgcmVtb3ZlIHVzIGZyb20gCi0gICAgICAgICAgICAvLyBtX2xpdmVEZWNvZGVk
UmVzb3VyY2VzLCBhbmQgcG9zc2libHkgbW92ZSB1cyB0byBhIGRpZmZlcmVudCBMUlUgCi0gICAg
ICAgICAgICAvLyBsaXN0IGluIG1fYWxsUmVzb3VyY2VzLgotICAgICAgICAgICAgY3VycmVudC0+
ZGVzdHJveURlY29kZWREYXRhKCk7Ci0KLSAgICAgICAgICAgIGlmICh0YXJnZXRTaXplICYmIG1f
bGl2ZVNpemUgPD0gdGFyZ2V0U2l6ZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICAgICAgY3VycmVudCA9IHByZXY7Ci0gICAgfQotfQotCi12b2lkIENhY2hlOjpwcnVu
ZURlYWRSZXNvdXJjZXMoKQotewotICAgIGlmICghbV9wcnVuZUVuYWJsZWQpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIHVuc2lnbmVkIGNhcGFjaXR5ID0gZGVhZENhcGFjaXR5KCk7Ci0gICAgaWYg
KGNhcGFjaXR5ICYmIG1fZGVhZFNpemUgPD0gY2FwYWNpdHkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIHVuc2lnbmVkIHRhcmdldFNpemUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FwYWNpdHkg
KiBjVGFyZ2V0UHJ1bmVQZXJjZW50YWdlKTsgLy8gQ3V0IGJ5IGEgcGVyY2VudGFnZSB0byBhdm9p
ZCBpbW1lZGlhdGVseSBwcnVuaW5nIGFnYWluLgotICAgIGludCBzaXplID0gbV9hbGxSZXNvdXJj
ZXMuc2l6ZSgpOwotICAgIAotICAgIGlmICghbV9pblBydW5lRGVhZFJlc291cmNlcykgewotICAg
ICAgICAvLyBTZWUgaWYgd2UgaGF2ZSBhbnkgcHVyZ2VkIHJlc291cmNlcyB3ZSBjYW4gZXZpY3Qu
Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICBD
YWNoZWRSZXNvdXJjZSogY3VycmVudCA9IG1fYWxsUmVzb3VyY2VzW2ldLm1fdGFpbDsKLSAgICAg
ICAgICAgIHdoaWxlIChjdXJyZW50KSB7Ci0gICAgICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2Uq
IHByZXYgPSBjdXJyZW50LT5tX3ByZXZJbkFsbFJlc291cmNlc0xpc3Q7Ci0gICAgICAgICAgICAg
ICAgaWYgKGN1cnJlbnQtPndhc1B1cmdlZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VS
VCghY3VycmVudC0+aGFzQ2xpZW50cygpKTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFj
dXJyZW50LT5pc1ByZWxvYWRlZCgpKTsKLSAgICAgICAgICAgICAgICAgICAgZXZpY3QoY3VycmVu
dCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBwcmV2Owot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmICh0YXJnZXRTaXplICYmIG1fZGVh
ZFNpemUgPD0gdGFyZ2V0U2l6ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0g
ICAgYm9vbCBjYW5TaHJpbmtMUlVMaXN0cyA9IHRydWU7Ci0gICAgbV9pblBydW5lRGVhZFJlc291
cmNlcyA9IHRydWU7Ci0gICAgZm9yIChpbnQgaSA9IHNpemUgLSAxOyBpID49IDA7IGktLSkgewot
ICAgICAgICAvLyBSZW1vdmUgZnJvbSB0aGUgdGFpbCwgc2luY2UgdGhpcyBpcyB0aGUgbGVhc3Qg
ZnJlcXVlbnRseSBhY2Nlc3NlZCBvZiB0aGUgb2JqZWN0cy4KLSAgICAgICAgQ2FjaGVkUmVzb3Vy
Y2UqIGN1cnJlbnQgPSBtX2FsbFJlc291cmNlc1tpXS5tX3RhaWw7Ci0gICAgICAgIAotICAgICAg
ICAvLyBGaXJzdCBmbHVzaCBhbGwgdGhlIGRlY29kZWQgZGF0YSBpbiB0aGlzIHF1ZXVlLgotICAg
ICAgICB3aGlsZSAoY3VycmVudCkgewotICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIHByZXYg
PSBjdXJyZW50LT5tX3ByZXZJbkFsbFJlc291cmNlc0xpc3Q7Ci0gICAgICAgICAgICBpZiAoIWN1
cnJlbnQtPmhhc0NsaWVudHMoKSAmJiAhY3VycmVudC0+aXNQcmVsb2FkZWQoKSAmJiBjdXJyZW50
LT5pc0xvYWRlZCgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gRGVzdHJveSBvdXIgZGVjb2RlZCBk
YXRhLiBUaGlzIHdpbGwgcmVtb3ZlIHVzIGZyb20gCi0gICAgICAgICAgICAgICAgLy8gbV9saXZl
RGVjb2RlZFJlc291cmNlcywgYW5kIHBvc3NpYmx5IG1vdmUgdXMgdG8gYSBkaWZmZXJlbnQgCi0g
ICAgICAgICAgICAgICAgLy8gTFJVIGxpc3QgaW4gbV9hbGxSZXNvdXJjZXMuCi0gICAgICAgICAg
ICAgICAgY3VycmVudC0+ZGVzdHJveURlY29kZWREYXRhKCk7Ci0gICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgaWYgKHRhcmdldFNpemUgJiYgbV9kZWFkU2l6ZSA8PSB0YXJnZXRTaXpl
KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1faW5QcnVuZURlYWRSZXNvdXJjZXMgPSBmYWxzZTsK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGN1cnJlbnQgPSBwcmV2OwotICAgICAgICB9Ci0KLSAgICAgICAg
Ly8gTm93IGV2aWN0IG9iamVjdHMgZnJvbSB0aGlzIHF1ZXVlLgotICAgICAgICBjdXJyZW50ID0g
bV9hbGxSZXNvdXJjZXNbaV0ubV90YWlsOwotICAgICAgICB3aGlsZSAoY3VycmVudCkgewotICAg
ICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIHByZXYgPSBjdXJyZW50LT5tX3ByZXZJbkFsbFJlc291
cmNlc0xpc3Q7Ci0gICAgICAgICAgICBpZiAoIWN1cnJlbnQtPmhhc0NsaWVudHMoKSAmJiAhY3Vy
cmVudC0+aXNQcmVsb2FkZWQoKSAmJiAhY3VycmVudC0+aXNDYWNoZVZhbGlkYXRvcigpKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFtYWtlUmVzb3VyY2VQdXJnZWFibGUoY3VycmVudCkpCi0gICAg
ICAgICAgICAgICAgICAgIGV2aWN0KGN1cnJlbnQpOwotCi0gICAgICAgICAgICAgICAgLy8gSWYg
ZXZpY3QoKSBjYXVzZWQgcHJ1bmVEZWFkUmVzb3VyY2VzKCkgdG8gYmUgcmUtZW50ZXJlZCwgYmFp
bCBvdXQuIFRoaXMgY2FuIGhhcHBlbiB3aGVuIHJlbW92aW5nIGFuCi0gICAgICAgICAgICAgICAg
Ly8gU1ZHIENhY2hlZEltYWdlIHRoYXQgaGFzIHN1YnJlc291cmNlcy4KLSAgICAgICAgICAgICAg
ICBpZiAoIW1faW5QcnVuZURlYWRSZXNvdXJjZXMpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICAgICAgICAgIGlmICh0YXJnZXRTaXplICYmIG1fZGVhZFNpemUgPD0gdGFy
Z2V0U2l6ZSkgewotICAgICAgICAgICAgICAgICAgICBtX2luUHJ1bmVEZWFkUmVzb3VyY2VzID0g
ZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBjdXJyZW50ID0gcHJldjsKLSAgICAgICAgfQotICAg
ICAgICAgICAgCi0gICAgICAgIC8vIFNocmluayB0aGUgdmVjdG9yIGJhY2sgZG93biBzbyB3ZSBk
b24ndCB3YXN0ZSB0aW1lIGluc3BlY3RpbmcKLSAgICAgICAgLy8gZW1wdHkgTFJVIGxpc3RzIG9u
IGZ1dHVyZSBwcnVuZXMuCi0gICAgICAgIGlmIChtX2FsbFJlc291cmNlc1tpXS5tX2hlYWQpCi0g
ICAgICAgICAgICBjYW5TaHJpbmtMUlVMaXN0cyA9IGZhbHNlOwotICAgICAgICBlbHNlIGlmIChj
YW5TaHJpbmtMUlVMaXN0cykKLSAgICAgICAgICAgIG1fYWxsUmVzb3VyY2VzLnJlc2l6ZShpKTsK
LSAgICB9Ci0gICAgbV9pblBydW5lRGVhZFJlc291cmNlcyA9IGZhbHNlOwotfQotCi12b2lkIENh
Y2hlOjpzZXRDYXBhY2l0aWVzKHVuc2lnbmVkIG1pbkRlYWRCeXRlcywgdW5zaWduZWQgbWF4RGVh
ZEJ5dGVzLCB1bnNpZ25lZCB0b3RhbEJ5dGVzKQotewotICAgIEFTU0VSVChtaW5EZWFkQnl0ZXMg
PD0gbWF4RGVhZEJ5dGVzKTsKLSAgICBBU1NFUlQobWF4RGVhZEJ5dGVzIDw9IHRvdGFsQnl0ZXMp
OwotICAgIG1fbWluRGVhZENhcGFjaXR5ID0gbWluRGVhZEJ5dGVzOwotICAgIG1fbWF4RGVhZENh
cGFjaXR5ID0gbWF4RGVhZEJ5dGVzOwotICAgIG1fY2FwYWNpdHkgPSB0b3RhbEJ5dGVzOwotICAg
IHBydW5lKCk7Ci19Ci0KLWJvb2wgQ2FjaGU6Om1ha2VSZXNvdXJjZVB1cmdlYWJsZShDYWNoZWRS
ZXNvdXJjZSogcmVzb3VyY2UpCi17Ci0gICAgaWYgKCFDYWNoZTo6c2hvdWxkTWFrZVJlc291cmNl
UHVyZ2VhYmxlT25FdmljdGlvbigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAo
IXJlc291cmNlLT5pbkNhY2hlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChy
ZXNvdXJjZS0+aXNQdXJnZWFibGUoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAo
IXJlc291cmNlLT5pc1NhZmVUb01ha2VQdXJnZWFibGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgaWYgKCFyZXNvdXJjZS0+bWFrZVB1cmdlYWJsZSh0cnVlKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgYWRqdXN0U2l6ZShyZXNvdXJjZS0+aGFzQ2xpZW50cygpLCAtc3Rh
dGljX2Nhc3Q8aW50PihyZXNvdXJjZS0+c2l6ZSgpKSk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotdm9pZCBDYWNoZTo6ZXZpY3QoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQotewotICAgIExP
RyhSZXNvdXJjZUxvYWRpbmcsICJFdmljdGluZyByZXNvdXJjZSAlcCBmb3IgJyVzJyBmcm9tIGNh
Y2hlIiwgcmVzb3VyY2UsIHJlc291cmNlLT51cmwoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIC8v
IFRoZSByZXNvdXJjZSBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4gcmVtb3ZlZCBieSBzb21lb25lIG90
aGVyIHRoYW4gb3VyIGNhbGxlciwKLSAgICAvLyB3aG8gbmVlZGVkIGEgZnJlc2ggY29weSBmb3Ig
YSByZWxvYWQuIFNlZSA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0
NzkjYzY+LgotICAgIGlmIChyZXNvdXJjZS0+aW5DYWNoZSgpKSB7Ci0gICAgICAgIC8vIFJlbW92
ZSBmcm9tIHRoZSByZXNvdXJjZSBtYXAuCi0gICAgICAgIG1fcmVzb3VyY2VzLnJlbW92ZShyZXNv
dXJjZS0+dXJsKCkpOwotICAgICAgICByZXNvdXJjZS0+c2V0SW5DYWNoZShmYWxzZSk7Ci0KLSAg
ICAgICAgLy8gUmVtb3ZlIGZyb20gdGhlIGFwcHJvcHJpYXRlIExSVSBsaXN0LgotICAgICAgICBy
ZW1vdmVGcm9tTFJVTGlzdChyZXNvdXJjZSk7Ci0gICAgICAgIHJlbW92ZUZyb21MaXZlRGVjb2Rl
ZFJlc291cmNlc0xpc3QocmVzb3VyY2UpOwotCi0gICAgICAgIC8vIElmIHRoZSByZXNvdXJjZSB3
YXMgcHVyZ2VkLCBpdCBtZWFucyB3ZSBoYWQgYWxyZWFkeSBkZWNyZW1lbnRlZCB0aGUgc2l6ZSB3
aGVuIHdlIG1hZGUgdGhlCi0gICAgICAgIC8vIHJlc291cmNlIHB1cmdlYWJsZSBpbiBtYWtlUmVz
b3VyY2VQdXJnZWFibGUoKS4gU28gYWRqdXN0IHRoZSBzaXplIGlmIHdlIGFyZSBldmljdGluZyBh
Ci0gICAgICAgIC8vIHJlc291cmNlIHRoYXQgd2FzIG5vdCBtYXJrZWQgYXMgcHVyZ2VhYmxlLgot
ICAgICAgICBpZiAoIUNhY2hlOjpzaG91bGRNYWtlUmVzb3VyY2VQdXJnZWFibGVPbkV2aWN0aW9u
KCkgfHwgIXJlc291cmNlLT5pc1B1cmdlYWJsZSgpKQotICAgICAgICAgICAgYWRqdXN0U2l6ZShy
ZXNvdXJjZS0+aGFzQ2xpZW50cygpLCAtc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZS0+c2l6ZSgp
KSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIEFTU0VSVChtX3Jlc291cmNlcy5nZXQocmVzb3VyY2Ut
PnVybCgpKSAhPSByZXNvdXJjZSk7Ci0KLSAgICBpZiAocmVzb3VyY2UtPmNhbkRlbGV0ZSgpKQot
ICAgICAgICBkZWxldGUgcmVzb3VyY2U7Ci19Ci0KLXZvaWQgQ2FjaGU6OmFkZENhY2hlZFJlc291
cmNlTG9hZGVyKENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlcikKLXsK
LSAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVycy5hZGQoY2FjaGVkUmVzb3VyY2VMb2FkZXIpOwot
fQotCi12b2lkIENhY2hlOjpyZW1vdmVDYWNoZWRSZXNvdXJjZUxvYWRlcihDYWNoZWRSZXNvdXJj
ZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIpCi17Ci0gICAgbV9jYWNoZWRSZXNvdXJjZUxv
YWRlcnMucmVtb3ZlKGNhY2hlZFJlc291cmNlTG9hZGVyKTsKLX0KLQotc3RhdGljIGlubGluZSB1
bnNpZ25lZCBmYXN0TG9nMih1bnNpZ25lZCBpKQotewotICAgIHVuc2lnbmVkIGxvZzIgPSAwOwot
ICAgIGlmIChpICYgKGkgLSAxKSkKLSAgICAgICAgbG9nMiArPSAxOwotICAgIGlmIChpID4+IDE2
KQotICAgICAgICBsb2cyICs9IDE2LCBpID4+PSAxNjsKLSAgICBpZiAoaSA+PiA4KQotICAgICAg
ICBsb2cyICs9IDgsIGkgPj49IDg7Ci0gICAgaWYgKGkgPj4gNCkKLSAgICAgICAgbG9nMiArPSA0
LCBpID4+PSA0OwotICAgIGlmIChpID4+IDIpCi0gICAgICAgIGxvZzIgKz0gMiwgaSA+Pj0gMjsK
LSAgICBpZiAoaSA+PiAxKQotICAgICAgICBsb2cyICs9IDE7Ci0gICAgcmV0dXJuIGxvZzI7Ci19
Ci0KLUNhY2hlOjpMUlVMaXN0KiBDYWNoZTo6bHJ1TGlzdEZvcihDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2UpCi17Ci0gICAgdW5zaWduZWQgYWNjZXNzQ291bnQgPSBtYXgocmVzb3VyY2UtPmFjY2Vz
c0NvdW50KCksIDFVKTsKLSAgICB1bnNpZ25lZCBxdWV1ZUluZGV4ID0gZmFzdExvZzIocmVzb3Vy
Y2UtPnNpemUoKSAvIGFjY2Vzc0NvdW50KTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgcmVzb3VyY2Ut
Pm1fbHJ1SW5kZXggPSBxdWV1ZUluZGV4OwotI2VuZGlmCi0gICAgaWYgKG1fYWxsUmVzb3VyY2Vz
LnNpemUoKSA8PSBxdWV1ZUluZGV4KQotICAgICAgICBtX2FsbFJlc291cmNlcy5ncm93KHF1ZXVl
SW5kZXggKyAxKTsKLSAgICByZXR1cm4gJm1fYWxsUmVzb3VyY2VzW3F1ZXVlSW5kZXhdOwotfQot
Ci12b2lkIENhY2hlOjpyZW1vdmVGcm9tTFJVTGlzdChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2Up
Ci17Ci0gICAgLy8gSWYgd2UndmUgbmV2ZXIgYmVlbiBhY2Nlc3NlZCwgdGhlbiB3ZSdyZSBicmFu
ZCBuZXcgYW5kIG5vdCBpbiBhbnkgbGlzdC4KLSAgICBpZiAocmVzb3VyY2UtPmFjY2Vzc0NvdW50
KCkgPT0gMCkKLSAgICAgICAgcmV0dXJuOwotCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIHVu
c2lnbmVkIG9sZExpc3RJbmRleCA9IHJlc291cmNlLT5tX2xydUluZGV4OwotI2VuZGlmCi0KLSAg
ICBMUlVMaXN0KiBsaXN0ID0gbHJ1TGlzdEZvcihyZXNvdXJjZSk7Ci0KLSNpZiAhQVNTRVJUX0RJ
U0FCTEVECi0gICAgLy8gVmVyaWZ5IHRoYXQgdGhlIGxpc3Qgd2UgZ290IGlzIHRoZSBsaXN0IHdl
IHdhbnQuCi0gICAgQVNTRVJUKHJlc291cmNlLT5tX2xydUluZGV4ID09IG9sZExpc3RJbmRleCk7
Ci0KLSAgICAvLyBWZXJpZnkgdGhhdCB3ZSBhcmUgaW4gZmFjdCBpbiB0aGlzIGxpc3QuCi0gICAg
Ym9vbCBmb3VuZCA9IGZhbHNlOwotICAgIGZvciAoQ2FjaGVkUmVzb3VyY2UqIGN1cnJlbnQgPSBs
aXN0LT5tX2hlYWQ7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5tX25leHRJbkFsbFJlc291
cmNlc0xpc3QpIHsKLSAgICAgICAgaWYgKGN1cnJlbnQgPT0gcmVzb3VyY2UpIHsKLSAgICAgICAg
ICAgIGZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQot
ICAgIEFTU0VSVChmb3VuZCk7Ci0jZW5kaWYKLQotICAgIENhY2hlZFJlc291cmNlKiBuZXh0ID0g
cmVzb3VyY2UtPm1fbmV4dEluQWxsUmVzb3VyY2VzTGlzdDsKLSAgICBDYWNoZWRSZXNvdXJjZSog
cHJldiA9IHJlc291cmNlLT5tX3ByZXZJbkFsbFJlc291cmNlc0xpc3Q7Ci0gICAgCi0gICAgaWYg
KG5leHQgPT0gMCAmJiBwcmV2ID09IDAgJiYgbGlzdC0+bV9oZWFkICE9IHJlc291cmNlKQotICAg
ICAgICByZXR1cm47Ci0gICAgCi0gICAgcmVzb3VyY2UtPm1fbmV4dEluQWxsUmVzb3VyY2VzTGlz
dCA9IDA7Ci0gICAgcmVzb3VyY2UtPm1fcHJldkluQWxsUmVzb3VyY2VzTGlzdCA9IDA7Ci0gICAg
Ci0gICAgaWYgKG5leHQpCi0gICAgICAgIG5leHQtPm1fcHJldkluQWxsUmVzb3VyY2VzTGlzdCA9
IHByZXY7Ci0gICAgZWxzZSBpZiAobGlzdC0+bV90YWlsID09IHJlc291cmNlKQotICAgICAgICBs
aXN0LT5tX3RhaWwgPSBwcmV2OwotCi0gICAgaWYgKHByZXYpCi0gICAgICAgIHByZXYtPm1fbmV4
dEluQWxsUmVzb3VyY2VzTGlzdCA9IG5leHQ7Ci0gICAgZWxzZSBpZiAobGlzdC0+bV9oZWFkID09
IHJlc291cmNlKQotICAgICAgICBsaXN0LT5tX2hlYWQgPSBuZXh0OwotfQotCi12b2lkIENhY2hl
OjppbnNlcnRJbkxSVUxpc3QoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQotewotICAgIC8vIE1h
a2Ugc3VyZSB3ZSBhcmVuJ3QgaW4gc29tZSBsaXN0IGFscmVhZHkuCi0gICAgQVNTRVJUKCFyZXNv
dXJjZS0+bV9uZXh0SW5BbGxSZXNvdXJjZXNMaXN0ICYmICFyZXNvdXJjZS0+bV9wcmV2SW5BbGxS
ZXNvdXJjZXNMaXN0KTsKLSAgICBBU1NFUlQocmVzb3VyY2UtPmluQ2FjaGUoKSk7Ci0gICAgQVNT
RVJUKHJlc291cmNlLT5hY2Nlc3NDb3VudCgpID4gMCk7Ci0gICAgCi0gICAgTFJVTGlzdCogbGlz
dCA9IGxydUxpc3RGb3IocmVzb3VyY2UpOwotCi0gICAgcmVzb3VyY2UtPm1fbmV4dEluQWxsUmVz
b3VyY2VzTGlzdCA9IGxpc3QtPm1faGVhZDsKLSAgICBpZiAobGlzdC0+bV9oZWFkKQotICAgICAg
ICBsaXN0LT5tX2hlYWQtPm1fcHJldkluQWxsUmVzb3VyY2VzTGlzdCA9IHJlc291cmNlOwotICAg
IGxpc3QtPm1faGVhZCA9IHJlc291cmNlOwotICAgIAotICAgIGlmICghcmVzb3VyY2UtPm1fbmV4
dEluQWxsUmVzb3VyY2VzTGlzdCkKLSAgICAgICAgbGlzdC0+bV90YWlsID0gcmVzb3VyY2U7Ci0g
ICAgICAgIAotI2lmbmRlZiBOREVCVUcKLSAgICAvLyBWZXJpZnkgdGhhdCB3ZSBhcmUgaW4gbm93
IGluIHRoZSBsaXN0IGxpa2Ugd2Ugc2hvdWxkIGJlLgotICAgIGxpc3QgPSBscnVMaXN0Rm9yKHJl
c291cmNlKTsKLSAgICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAgZm9yIChDYWNoZWRSZXNvdXJj
ZSogY3VycmVudCA9IGxpc3QtPm1faGVhZDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm1f
bmV4dEluQWxsUmVzb3VyY2VzTGlzdCkgewotICAgICAgICBpZiAoY3VycmVudCA9PSByZXNvdXJj
ZSkgewotICAgICAgICAgICAgZm91bmQgPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgQVNTRVJUKGZvdW5kKTsKLSNlbmRpZgotCi19Ci0KLXZvaWQgQ2Fj
aGU6OnJlc291cmNlQWNjZXNzZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQotewotICAgIEFT
U0VSVChyZXNvdXJjZS0+aW5DYWNoZSgpKTsKLSAgICAKLSAgICAvLyBOZWVkIHRvIG1ha2Ugc3Vy
ZSB0byByZW1vdmUgYmVmb3JlIHdlIGluY3JlYXNlIHRoZSBhY2Nlc3MgY291bnQsIHNpbmNlCi0g
ICAgLy8gdGhlIHF1ZXVlIHdpbGwgcG9zc2libHkgY2hhbmdlLgotICAgIHJlbW92ZUZyb21MUlVM
aXN0KHJlc291cmNlKTsKLSAgICAKLSAgICAvLyBJZiB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHRo
ZSByZXNvdXJjZSBoYXMgYmVlbiBhY2Nlc3NlZCwgYWRqdXN0IHRoZSBzaXplIG9mIHRoZSBjYWNo
ZSB0byBhY2NvdW50IGZvciBpdHMgaW5pdGlhbCBzaXplLgotICAgIGlmICghcmVzb3VyY2UtPmFj
Y2Vzc0NvdW50KCkpCi0gICAgICAgIGFkanVzdFNpemUocmVzb3VyY2UtPmhhc0NsaWVudHMoKSwg
cmVzb3VyY2UtPnNpemUoKSk7Ci0gICAgCi0gICAgLy8gQWRkIHRvIG91ciBhY2Nlc3MgY291bnQu
Ci0gICAgcmVzb3VyY2UtPmluY3JlYXNlQWNjZXNzQ291bnQoKTsKLSAgICAKLSAgICAvLyBOb3cg
aW5zZXJ0IGludG8gdGhlIG5ldyBxdWV1ZS4KLSAgICBpbnNlcnRJbkxSVUxpc3QocmVzb3VyY2Up
OwotfQotCi12b2lkIENhY2hlOjpyZW1vdmVGcm9tTGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0KENh
Y2hlZFJlc291cmNlKiByZXNvdXJjZSkKLXsKLSAgICAvLyBJZiB3ZSd2ZSBuZXZlciBiZWVuIGFj
Y2Vzc2VkLCB0aGVuIHdlJ3JlIGJyYW5kIG5ldyBhbmQgbm90IGluIGFueSBsaXN0LgotICAgIGlm
ICghcmVzb3VyY2UtPm1faW5MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QpCi0gICAgICAgIHJldHVy
bjsKLSAgICByZXNvdXJjZS0+bV9pbkxpdmVEZWNvZGVkUmVzb3VyY2VzTGlzdCA9IGZhbHNlOwot
Ci0jaWZuZGVmIE5ERUJVRwotICAgIC8vIFZlcmlmeSB0aGF0IHdlIGFyZSBpbiBmYWN0IGluIHRo
aXMgbGlzdC4KLSAgICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAgZm9yIChDYWNoZWRSZXNvdXJj
ZSogY3VycmVudCA9IG1fbGl2ZURlY29kZWRSZXNvdXJjZXMubV9oZWFkOyBjdXJyZW50OyBjdXJy
ZW50ID0gY3VycmVudC0+bV9uZXh0SW5MaXZlUmVzb3VyY2VzTGlzdCkgewotICAgICAgICBpZiAo
Y3VycmVudCA9PSByZXNvdXJjZSkgewotICAgICAgICAgICAgZm91bmQgPSB0cnVlOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgQVNTRVJUKGZvdW5kKTsKLSNlbmRp
ZgotCi0gICAgQ2FjaGVkUmVzb3VyY2UqIG5leHQgPSByZXNvdXJjZS0+bV9uZXh0SW5MaXZlUmVz
b3VyY2VzTGlzdDsKLSAgICBDYWNoZWRSZXNvdXJjZSogcHJldiA9IHJlc291cmNlLT5tX3ByZXZJ
bkxpdmVSZXNvdXJjZXNMaXN0OwotICAgIAotICAgIGlmIChuZXh0ID09IDAgJiYgcHJldiA9PSAw
ICYmIG1fbGl2ZURlY29kZWRSZXNvdXJjZXMubV9oZWFkICE9IHJlc291cmNlKQotICAgICAgICBy
ZXR1cm47Ci0gICAgCi0gICAgcmVzb3VyY2UtPm1fbmV4dEluTGl2ZVJlc291cmNlc0xpc3QgPSAw
OwotICAgIHJlc291cmNlLT5tX3ByZXZJbkxpdmVSZXNvdXJjZXNMaXN0ID0gMDsKLSAgICAKLSAg
ICBpZiAobmV4dCkKLSAgICAgICAgbmV4dC0+bV9wcmV2SW5MaXZlUmVzb3VyY2VzTGlzdCA9IHBy
ZXY7Ci0gICAgZWxzZSBpZiAobV9saXZlRGVjb2RlZFJlc291cmNlcy5tX3RhaWwgPT0gcmVzb3Vy
Y2UpCi0gICAgICAgIG1fbGl2ZURlY29kZWRSZXNvdXJjZXMubV90YWlsID0gcHJldjsKLQotICAg
IGlmIChwcmV2KQotICAgICAgICBwcmV2LT5tX25leHRJbkxpdmVSZXNvdXJjZXNMaXN0ID0gbmV4
dDsKLSAgICBlbHNlIGlmIChtX2xpdmVEZWNvZGVkUmVzb3VyY2VzLm1faGVhZCA9PSByZXNvdXJj
ZSkKLSAgICAgICAgbV9saXZlRGVjb2RlZFJlc291cmNlcy5tX2hlYWQgPSBuZXh0OwotfQotCi12
b2lkIENhY2hlOjppbnNlcnRJbkxpdmVEZWNvZGVkUmVzb3VyY2VzTGlzdChDYWNoZWRSZXNvdXJj
ZSogcmVzb3VyY2UpCi17Ci0gICAgLy8gTWFrZSBzdXJlIHdlIGFyZW4ndCBpbiB0aGUgbGlzdCBh
bHJlYWR5LgotICAgIEFTU0VSVCghcmVzb3VyY2UtPm1fbmV4dEluTGl2ZVJlc291cmNlc0xpc3Qg
JiYgIXJlc291cmNlLT5tX3ByZXZJbkxpdmVSZXNvdXJjZXNMaXN0ICYmICFyZXNvdXJjZS0+bV9p
bkxpdmVEZWNvZGVkUmVzb3VyY2VzTGlzdCk7Ci0gICAgcmVzb3VyY2UtPm1faW5MaXZlRGVjb2Rl
ZFJlc291cmNlc0xpc3QgPSB0cnVlOwotCi0gICAgcmVzb3VyY2UtPm1fbmV4dEluTGl2ZVJlc291
cmNlc0xpc3QgPSBtX2xpdmVEZWNvZGVkUmVzb3VyY2VzLm1faGVhZDsKLSAgICBpZiAobV9saXZl
RGVjb2RlZFJlc291cmNlcy5tX2hlYWQpCi0gICAgICAgIG1fbGl2ZURlY29kZWRSZXNvdXJjZXMu
bV9oZWFkLT5tX3ByZXZJbkxpdmVSZXNvdXJjZXNMaXN0ID0gcmVzb3VyY2U7Ci0gICAgbV9saXZl
RGVjb2RlZFJlc291cmNlcy5tX2hlYWQgPSByZXNvdXJjZTsKLSAgICAKLSAgICBpZiAoIXJlc291
cmNlLT5tX25leHRJbkxpdmVSZXNvdXJjZXNMaXN0KQotICAgICAgICBtX2xpdmVEZWNvZGVkUmVz
b3VyY2VzLm1fdGFpbCA9IHJlc291cmNlOwotICAgICAgICAKLSNpZm5kZWYgTkRFQlVHCi0gICAg
Ly8gVmVyaWZ5IHRoYXQgd2UgYXJlIGluIG5vdyBpbiB0aGUgbGlzdCBsaWtlIHdlIHNob3VsZCBi
ZS4KLSAgICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAgZm9yIChDYWNoZWRSZXNvdXJjZSogY3Vy
cmVudCA9IG1fbGl2ZURlY29kZWRSZXNvdXJjZXMubV9oZWFkOyBjdXJyZW50OyBjdXJyZW50ID0g
Y3VycmVudC0+bV9uZXh0SW5MaXZlUmVzb3VyY2VzTGlzdCkgewotICAgICAgICBpZiAoY3VycmVu
dCA9PSByZXNvdXJjZSkgewotICAgICAgICAgICAgZm91bmQgPSB0cnVlOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgQVNTRVJUKGZvdW5kKTsKLSNlbmRpZgotCi19
Ci0KLXZvaWQgQ2FjaGU6OmFkZFRvTGl2ZVJlc291cmNlc1NpemUoQ2FjaGVkUmVzb3VyY2UqIHJl
c291cmNlKQotewotICAgIG1fbGl2ZVNpemUgKz0gcmVzb3VyY2UtPnNpemUoKTsKLSAgICBtX2Rl
YWRTaXplIC09IHJlc291cmNlLT5zaXplKCk7Ci19Ci0KLXZvaWQgQ2FjaGU6OnJlbW92ZUZyb21M
aXZlUmVzb3VyY2VzU2l6ZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCi17Ci0gICAgbV9saXZl
U2l6ZSAtPSByZXNvdXJjZS0+c2l6ZSgpOwotICAgIG1fZGVhZFNpemUgKz0gcmVzb3VyY2UtPnNp
emUoKTsKLX0KLQotdm9pZCBDYWNoZTo6YWRqdXN0U2l6ZShib29sIGxpdmUsIGludCBkZWx0YSkK
LXsKLSAgICBpZiAobGl2ZSkgewotICAgICAgICBBU1NFUlQoZGVsdGEgPj0gMCB8fCAoKGludClt
X2xpdmVTaXplICsgZGVsdGEgPj0gMCkpOwotICAgICAgICBtX2xpdmVTaXplICs9IGRlbHRhOwot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVChkZWx0YSA+PSAwIHx8ICgoaW50KW1fZGVhZFNp
emUgKyBkZWx0YSA+PSAwKSk7Ci0gICAgICAgIG1fZGVhZFNpemUgKz0gZGVsdGE7Ci0gICAgfQot
fQotCi12b2lkIENhY2hlOjpUeXBlU3RhdGlzdGljOjphZGRSZXNvdXJjZShDYWNoZWRSZXNvdXJj
ZSogbykKLXsKLSAgICBib29sIHB1cmdlZCA9IG8tPndhc1B1cmdlZCgpOwotICAgIGJvb2wgcHVy
Z2VhYmxlID0gby0+aXNQdXJnZWFibGUoKSAmJiAhcHVyZ2VkOyAKLSAgICBpbnQgcGFnZVNpemUg
PSAoby0+ZW5jb2RlZFNpemUoKSArIG8tPm92ZXJoZWFkU2l6ZSgpICsgNDA5NSkgJiB+NDA5NTsK
LSAgICBjb3VudCsrOwotICAgIHNpemUgKz0gcHVyZ2VkID8gMCA6IG8tPnNpemUoKTsgCi0gICAg
bGl2ZVNpemUgKz0gby0+aGFzQ2xpZW50cygpID8gby0+c2l6ZSgpIDogMDsKLSAgICBkZWNvZGVk
U2l6ZSArPSBvLT5kZWNvZGVkU2l6ZSgpOwotICAgIHB1cmdlYWJsZVNpemUgKz0gcHVyZ2VhYmxl
ID8gcGFnZVNpemUgOiAwOwotICAgIHB1cmdlZFNpemUgKz0gcHVyZ2VkID8gcGFnZVNpemUgOiAw
OwotfQotCi1DYWNoZTo6U3RhdGlzdGljcyBDYWNoZTo6Z2V0U3RhdGlzdGljcygpCi17Ci0gICAg
U3RhdGlzdGljcyBzdGF0czsKLSAgICBDYWNoZWRSZXNvdXJjZU1hcDo6aXRlcmF0b3IgZSA9IG1f
cmVzb3VyY2VzLmVuZCgpOwotICAgIGZvciAoQ2FjaGVkUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGkg
PSBtX3Jlc291cmNlcy5iZWdpbigpOyBpICE9IGU7ICsraSkgewotICAgICAgICBDYWNoZWRSZXNv
dXJjZSogcmVzb3VyY2UgPSBpLT5zZWNvbmQ7Ci0gICAgICAgIHN3aXRjaCAocmVzb3VyY2UtPnR5
cGUoKSkgewotICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlOgotICAg
ICAgICAgICAgc3RhdHMuaW1hZ2VzLmFkZFJlc291cmNlKHJlc291cmNlKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0OgotICAg
ICAgICAgICAgc3RhdHMuY3NzU3R5bGVTaGVldHMuYWRkUmVzb3VyY2UocmVzb3VyY2UpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdDoKLSAg
ICAgICAgICAgIHN0YXRzLnNjcmlwdHMuYWRkUmVzb3VyY2UocmVzb3VyY2UpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0jaWYgRU5BQkxFKFhTTFQpCi0gICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6
OlhTTFN0eWxlU2hlZXQ6Ci0gICAgICAgICAgICBzdGF0cy54c2xTdHlsZVNoZWV0cy5hZGRSZXNv
dXJjZShyZXNvdXJjZSk7Ci0gICAgICAgICAgICBicmVhazsKLSNlbmRpZgotICAgICAgICBjYXNl
IENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2U6Ci0gICAgICAgICAgICBzdGF0cy5mb250cy5h
ZGRSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBzdGF0
czsKLX0KLQotdm9pZCBDYWNoZTo6c2V0RGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKLXsKLSAgICBt
X2Rpc2FibGVkID0gZGlzYWJsZWQ7Ci0gICAgaWYgKCFtX2Rpc2FibGVkKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIENhY2hlZFJlc291cmNlTWFwOjppdGVyYXRv
ciBpID0gbV9yZXNvdXJjZXMuYmVnaW4oKTsKLSAgICAgICAgaWYgKGkgPT0gbV9yZXNvdXJjZXMu
ZW5kKCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZXZpY3QoaS0+c2Vjb25kKTsKLSAg
ICB9Ci19Ci0KLSNpZm5kZWYgTkRFQlVHCi12b2lkIENhY2hlOjpkdW1wU3RhdHMoKQotewotICAg
IFN0YXRpc3RpY3MgcyA9IGdldFN0YXRpc3RpY3MoKTsKLSAgICBwcmludGYoIiUtMTNzICUtMTNz
ICUtMTNzICUtMTNzICUtMTNzICUtMTNzICUtMTNzXG4iLCAiIiwgIkNvdW50IiwgIlNpemUiLCAi
TGl2ZVNpemUiLCAiRGVjb2RlZFNpemUiLCAiUHVyZ2VhYmxlU2l6ZSIsICJQdXJnZWRTaXplIik7
Ci0gICAgcHJpbnRmKCIlLTEzcyAlLTEzcyAlLTEzcyAlLTEzcyAlLTEzcyAlLTEzcyAlLTEzc1xu
IiwgIi0tLS0tLS0tLS0tLS0iLCAiLS0tLS0tLS0tLS0tLSIsICItLS0tLS0tLS0tLS0tIiwgIi0t
LS0tLS0tLS0tLS0iLCAiLS0tLS0tLS0tLS0tLSIsICItLS0tLS0tLS0tLS0tIiwgIi0tLS0tLS0t
LS0tLS0iKTsKLSAgICBwcmludGYoIiUtMTNzICUxM2QgJTEzZCAlMTNkICUxM2QgJTEzZCAlMTNk
XG4iLCAiSW1hZ2VzIiwgcy5pbWFnZXMuY291bnQsIHMuaW1hZ2VzLnNpemUsIHMuaW1hZ2VzLmxp
dmVTaXplLCBzLmltYWdlcy5kZWNvZGVkU2l6ZSwgcy5pbWFnZXMucHVyZ2VhYmxlU2l6ZSwgcy5p
bWFnZXMucHVyZ2VkU2l6ZSk7Ci0gICAgcHJpbnRmKCIlLTEzcyAlMTNkICUxM2QgJTEzZCAlMTNk
ICUxM2QgJTEzZFxuIiwgIkNTUyIsIHMuY3NzU3R5bGVTaGVldHMuY291bnQsIHMuY3NzU3R5bGVT
aGVldHMuc2l6ZSwgcy5jc3NTdHlsZVNoZWV0cy5saXZlU2l6ZSwgcy5jc3NTdHlsZVNoZWV0cy5k
ZWNvZGVkU2l6ZSwgcy5jc3NTdHlsZVNoZWV0cy5wdXJnZWFibGVTaXplLCBzLmNzc1N0eWxlU2hl
ZXRzLnB1cmdlZFNpemUpOwotI2lmIEVOQUJMRShYU0xUKQotICAgIHByaW50ZigiJS0xM3MgJTEz
ZCAlMTNkICUxM2QgJTEzZCAlMTNkICUxM2RcbiIsICJYU0wiLCBzLnhzbFN0eWxlU2hlZXRzLmNv
dW50LCBzLnhzbFN0eWxlU2hlZXRzLnNpemUsIHMueHNsU3R5bGVTaGVldHMubGl2ZVNpemUsIHMu
eHNsU3R5bGVTaGVldHMuZGVjb2RlZFNpemUsIHMueHNsU3R5bGVTaGVldHMucHVyZ2VhYmxlU2l6
ZSwgcy54c2xTdHlsZVNoZWV0cy5wdXJnZWRTaXplKTsKLSNlbmRpZgotICAgIHByaW50ZigiJS0x
M3MgJTEzZCAlMTNkICUxM2QgJTEzZCAlMTNkICUxM2RcbiIsICJKYXZhU2NyaXB0Iiwgcy5zY3Jp
cHRzLmNvdW50LCBzLnNjcmlwdHMuc2l6ZSwgcy5zY3JpcHRzLmxpdmVTaXplLCBzLnNjcmlwdHMu
ZGVjb2RlZFNpemUsIHMuc2NyaXB0cy5wdXJnZWFibGVTaXplLCBzLnNjcmlwdHMucHVyZ2VkU2l6
ZSk7Ci0gICAgcHJpbnRmKCIlLTEzcyAlMTNkICUxM2QgJTEzZCAlMTNkICUxM2QgJTEzZFxuIiwg
IkZvbnRzIiwgcy5mb250cy5jb3VudCwgcy5mb250cy5zaXplLCBzLmZvbnRzLmxpdmVTaXplLCBz
LmZvbnRzLmRlY29kZWRTaXplLCBzLmZvbnRzLnB1cmdlYWJsZVNpemUsIHMuZm9udHMucHVyZ2Vk
U2l6ZSk7Ci0gICAgcHJpbnRmKCIlLTEzcyAlLTEzcyAlLTEzcyAlLTEzcyAlLTEzcyAlLTEzcyAl
LTEzc1xuXG4iLCAiLS0tLS0tLS0tLS0tLSIsICItLS0tLS0tLS0tLS0tIiwgIi0tLS0tLS0tLS0t
LS0iLCAiLS0tLS0tLS0tLS0tLSIsICItLS0tLS0tLS0tLS0tIiwgIi0tLS0tLS0tLS0tLS0iLCAi
LS0tLS0tLS0tLS0tLSIpOwotfQotCi12b2lkIENhY2hlOjpkdW1wTFJVTGlzdHMoYm9vbCBpbmNs
dWRlTGl2ZSkgY29uc3QKLXsKLSAgICBwcmludGYoIkxSVS1TUCBsaXN0cyBpbiBldmljdGlvbiBv
cmRlciAoS2lsb2J5dGVzIGRlY29kZWQsIEtpbG9ieXRlcyBlbmNvZGVkLCBBY2Nlc3MgY291bnQs
IFJlZmVyZW5jZWQsIGlzUHVyZ2VhYmxlLCB3YXNQdXJnZWQpOlxuIik7Ci0KLSAgICBpbnQgc2l6
ZSA9IG1fYWxsUmVzb3VyY2VzLnNpemUoKTsKLSAgICBmb3IgKGludCBpID0gc2l6ZSAtIDE7IGkg
Pj0gMDsgaS0tKSB7Ci0gICAgICAgIHByaW50ZigiXG5cbkxpc3QgJWQ6ICIsIGkpOwotICAgICAg
ICBDYWNoZWRSZXNvdXJjZSogY3VycmVudCA9IG1fYWxsUmVzb3VyY2VzW2ldLm1fdGFpbDsKLSAg
ICAgICAgd2hpbGUgKGN1cnJlbnQpIHsKLSAgICAgICAgICAgIENhY2hlZFJlc291cmNlKiBwcmV2
ID0gY3VycmVudC0+bV9wcmV2SW5BbGxSZXNvdXJjZXNMaXN0OwotICAgICAgICAgICAgaWYgKGlu
Y2x1ZGVMaXZlIHx8ICFjdXJyZW50LT5oYXNDbGllbnRzKCkpCi0gICAgICAgICAgICAgICAgcHJp
bnRmKCIoJS4xZkssICUuMWZLLCAldUEsICVkUiwgJWQsICVkKTsgIiwgY3VycmVudC0+ZGVjb2Rl
ZFNpemUoKSAvIDEwMjQuMGYsIChjdXJyZW50LT5lbmNvZGVkU2l6ZSgpICsgY3VycmVudC0+b3Zl
cmhlYWRTaXplKCkpIC8gMTAyNC4wZiwgY3VycmVudC0+YWNjZXNzQ291bnQoKSwgY3VycmVudC0+
aGFzQ2xpZW50cygpLCBjdXJyZW50LT5pc1B1cmdlYWJsZSgpLCBjdXJyZW50LT53YXNQdXJnZWQo
KSk7Ci0KLSAgICAgICAgICAgIGN1cnJlbnQgPSBwcmV2OwotICAgICAgICB9Ci0gICAgfQotfQot
I2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0Nh
Y2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGUuaAkocmV2aXNpb24gNzE0
ODgpCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDIzNSAr
MCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMTk5OCBMYXJzIEtub2xsIChrbm9sbEBtcGkt
aGQubXBnLmRlKQotICAgIENvcHlyaWdodCAoQykgMjAwMSBEaXJrIE11ZWxsZXIgPG11ZWxsZXJA
a2RlLm9yZz4KLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
ICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0g
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAg
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLQotICAgIFRoaXMgY2xhc3MgcHJvdmlkZXMg
YWxsIGZ1bmN0aW9uYWxpdHkgbmVlZGVkIGZvciBsb2FkaW5nIGltYWdlcywgc3R5bGUgc2hlZXRz
IGFuZCBodG1sCi0gICAgcGFnZXMgZnJvbSB0aGUgd2ViLiBJdCBoYXMgYSBtZW1vcnkgY2FjaGUg
Zm9yIHRoZXNlIG9iamVjdHMuCi0qLwotCi0jaWZuZGVmIENhY2hlX2gKLSNkZWZpbmUgQ2FjaGVf
aAotCi0jaW5jbHVkZSAiQ2FjaGVQb2xpY3kuaCIKLSNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZS5o
IgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSAibG9hZGVyLmgiCi0jaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlICB7Ci0KLWNsYXNzIENh
Y2hlZENTU1N0eWxlU2hlZXQ7Ci1jbGFzcyBDYWNoZWRSZXNvdXJjZTsKLWNsYXNzIENhY2hlZFJl
c291cmNlTG9hZGVyOwotY2xhc3MgS1VSTDsKLQotLy8gVGhpcyBjYWNoZSBob2xkcyBzdWJyZXNv
dXJjZXMgdXNlZCBieSBXZWIgcGFnZXM6IGltYWdlcywgc2NyaXB0cywgc3R5bGVzaGVldHMsIGV0
Yy4KLQotLy8gVGhlIGNhY2hlIGtlZXBzIGEgZmxleGlibGUgYnV0IGJvdW5kZWQgd2luZG93IG9m
IGRlYWQgcmVzb3VyY2VzIHRoYXQgZ3Jvd3Mvc2hyaW5rcyAKLS8vIGRlcGVuZGluZyBvbiB0aGUg
bGl2ZSByZXNvdXJjZSBsb2FkLiBIZXJlJ3MgYW4gZXhhbXBsZSBvZiBjYWNoZSBncm93dGggb3Zl
ciB0aW1lLAotLy8gd2l0aCBhIG1pbiBkZWFkIHJlc291cmNlIGNhcGFjaXR5IG9mIDI1JSBhbmQg
YSBtYXggZGVhZCByZXNvdXJjZSBjYXBhY2l0eSBvZiA1MCU6Ci0KLS8vICAgICAgICB8LS0tLS18
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVhZDogLQotLy8gICAgICAgIHwtLS0tLS0t
LS0tfCAgICAgICAgICAgICAgICAgICAgICAgICBMaXZlOiArCi0vLyAgICAgIC0tfC0tLS0tLS0t
LS18ICAgICAgICAgICAgICAgICAgICAgICAgIENhY2hlIGJvdW5kYXJ5OiB8IChvYmplY3RzIG91
dHNpZGUgdGhpcyBtYXJrIGhhdmUgYmVlbiBldmljdGVkKQotLy8gICAgICAtLXwtLS0tLS0tLS0t
KysrKysrKysrK3wKLS8vIC0tLS0tLS18LS0tLS0rKysrKysrKysrKysrKyt8Ci0vLyAtLS0tLS0t
fC0tLS0tKysrKysrKysrKysrKysrfCsrKysrCi0KLS8vIFRoZSBiZWhhdmlvciBvZiB0aGUgY2Fj
aGUgY2hhbmdlcyBpbiB0aGUgZm9sbG93aW5nIHdheSBpZiBzaG91bGRNYWtlUmVzb3VyY2VQdXJn
ZWFibGVPbkV2aWN0aW9uCi0vLyByZXR1cm5zIHRydWUuCi0vLwotLy8gMS4gRGVhZCByZXNvdXJj
ZXMgaW4gdGhlIGNhY2hlIGFyZSBrZXB0IGluIG5vbi1wdXJnZWFibGUgbWVtb3J5LgotLy8gMi4g
V2hlbiB3ZSBwcnVuZSBkZWFkIHJlc291cmNlcywgaW5zdGVhZCBvZiBmcmVlaW5nIHRoZW0sIHdl
IG1hcmsgdGhlaXIgbWVtb3J5IGFzIHB1cmdlYWJsZSBhbmQKLS8vICAgIGtlZXAgdGhlIHJlc291
cmNlcyB1bnRpbCB0aGUga2VybmVsIHJlY2xhaW1zIHRoZSBwdXJnZWFibGUgbWVtb3J5LgotLy8K
LS8vIEJ5IGxlYXZpbmcgdGhlIGluLWNhY2hlIGRlYWQgcmVzb3VyY2VzIGluIGRpcnR5IHJlc2lk
ZW50IG1lbW9yeSwgd2UgZGVjcmVhc2UgdGhlIGxpa2VsaWhvb2Qgb2YKLS8vIHRoZSBrZXJuZWwg
Y2xhaW1pbmcgdGhhdCBtZW1vcnkgYW5kIGZvcmNpbmcgdXMgdG8gcmVmZXRjaCB0aGUgcmVzb3Vy
Y2UgKGZvciBleGFtcGxlIHdoZW4gYSB1c2VyCi0vLyBwcmVzc2VzIGJhY2spLgotLy8KLS8vIEFu
ZCBieSBoYXZpbmcgYW4gdW5ib3VuZGVkIG51bWJlciBvZiByZXNvdXJjZSBvYmplY3RzIHVzaW5n
IHB1cmdlYWJsZSBtZW1vcnksIHdlIGNhbiB1c2UgYXMgbXVjaAotLy8gbWVtb3J5IGFzIGlzIGF2
YWlsYWJsZSBvbiB0aGUgbWFjaGluZS4gVGhlIHRyYWRlLW9mZiBoZXJlIGlzIHRoYXQgdGhlIENh
Y2hlZFJlc291cmNlIG9iamVjdCAoYW5kCi0vLyBpdHMgbWVtYmVyIHZhcmlhYmxlcykgYXJlIGFs
bG9jYXRlZCBpbiBub24tcHVyZ2VhYmxlIFRDLW1hbGxvYydkIG1lbW9yeSBzbyB3ZSB3b3VsZCBz
ZWUgc2xpZ2h0bHkKLS8vIG1vcmUgbWVtb3J5IHVzZSBkdWUgdG8gdGhpcy4KLQotY2xhc3MgQ2Fj
aGUgOiBwdWJsaWMgTm9uY29weWFibGUgewotcHVibGljOgotICAgIGZyaWVuZCBDYWNoZSogY2Fj
aGUoKTsKLQotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIENhY2hlZFJlc291cmNlKj4gQ2Fj
aGVkUmVzb3VyY2VNYXA7Ci0KLSAgICBzdHJ1Y3QgTFJVTGlzdCB7Ci0gICAgICAgIENhY2hlZFJl
c291cmNlKiBtX2hlYWQ7Ci0gICAgICAgIENhY2hlZFJlc291cmNlKiBtX3RhaWw7Ci0gICAgICAg
IExSVUxpc3QoKSA6IG1faGVhZCgwKSwgbV90YWlsKDApIHsgfQotICAgIH07Ci0KLSAgICBzdHJ1
Y3QgVHlwZVN0YXRpc3RpYyB7Ci0gICAgICAgIGludCBjb3VudDsKLSAgICAgICAgaW50IHNpemU7
Ci0gICAgICAgIGludCBsaXZlU2l6ZTsKLSAgICAgICAgaW50IGRlY29kZWRTaXplOwotICAgICAg
ICBpbnQgcHVyZ2VhYmxlU2l6ZTsKLSAgICAgICAgaW50IHB1cmdlZFNpemU7Ci0gICAgICAgIFR5
cGVTdGF0aXN0aWMoKSA6IGNvdW50KDApLCBzaXplKDApLCBsaXZlU2l6ZSgwKSwgZGVjb2RlZFNp
emUoMCksIHB1cmdlYWJsZVNpemUoMCksIHB1cmdlZFNpemUoMCkgeyB9Ci0gICAgICAgIHZvaWQg
YWRkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKLSAgICB9OwotICAgIAotICAgIHN0cnVjdCBT
dGF0aXN0aWNzIHsKLSAgICAgICAgVHlwZVN0YXRpc3RpYyBpbWFnZXM7Ci0gICAgICAgIFR5cGVT
dGF0aXN0aWMgY3NzU3R5bGVTaGVldHM7Ci0gICAgICAgIFR5cGVTdGF0aXN0aWMgc2NyaXB0czsK
LSNpZiBFTkFCTEUoWFNMVCkKLSAgICAgICAgVHlwZVN0YXRpc3RpYyB4c2xTdHlsZVNoZWV0czsK
LSNlbmRpZgotICAgICAgICBUeXBlU3RhdGlzdGljIGZvbnRzOwotICAgIH07Ci0KLSAgICAvLyBU
aGUgbG9hZGVyIHRoYXQgZmV0Y2hlcyByZXNvdXJjZXMuCi0gICAgTG9hZGVyKiBsb2FkZXIoKSB7
IHJldHVybiAmbV9sb2FkZXI7IH0KLQotICAgIC8vIFJlcXVlc3QgcmVzb3VyY2VzIGZyb20gdGhl
IGNhY2hlLiAgQSBsb2FkIHdpbGwgYmUgaW5pdGlhdGVkIGFuZCBhIGNhY2hlIG9iamVjdCBjcmVh
dGVkIGlmIHRoZSBvYmplY3QgaXMgbm90Ci0gICAgLy8gZm91bmQgaW4gdGhlIGNhY2hlLgotICAg
IENhY2hlZFJlc291cmNlKiByZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqLCBD
YWNoZWRSZXNvdXJjZTo6VHlwZSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNoYXJz
ZXQsIGJvb2wgaXNQcmVsb2FkID0gZmFsc2UpOwotCi0gICAgQ2FjaGVkQ1NTU3R5bGVTaGVldCog
cmVxdWVzdFVzZXJDU1NTdHlsZVNoZWV0KENhY2hlZFJlc291cmNlTG9hZGVyKiwgY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCk7Ci0gICAgCi0gICAgdm9pZCByZXZhbGlk
YXRlUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqLCBDYWNoZWRSZXNvdXJjZUxvYWRlciopOwotICAg
IHZvaWQgcmV2YWxpZGF0aW9uU3VjY2VlZGVkKENhY2hlZFJlc291cmNlKiByZXZhbGlkYXRpbmdS
ZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgcmV2YWxpZGF0aW9u
RmFpbGVkKENhY2hlZFJlc291cmNlKiByZXZhbGlkYXRpbmdSZXNvdXJjZSk7Ci0gICAgCi0gICAg
Ly8gU2V0cyB0aGUgY2FjaGUncyBtZW1vcnkgY2FwYWNpdGllcywgaW4gYnl0ZXMuIFRoZXNlIHdp
bGwgaG9sZCBvbmx5IGFwcHJveGltYXRlbHksIAotICAgIC8vIHNpbmNlIHRoZSBkZWNvZGVkIGNv
c3Qgb2YgcmVzb3VyY2VzIGxpa2Ugc2NyaXB0cyBhbmQgc3R5bGVzaGVldHMgaXMgbm90IGtub3du
LgotICAgIC8vICAtIG1pbkRlYWRCeXRlczogVGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRo
YXQgZGVhZCByZXNvdXJjZXMgc2hvdWxkIGNvbnN1bWUgd2hlbiB0aGUgY2FjaGUgaXMgdW5kZXIg
cHJlc3N1cmUuCi0gICAgLy8gIC0gbWF4RGVhZEJ5dGVzOiBUaGUgbWF4aW11bSBudW1iZXIgb2Yg
Ynl0ZXMgdGhhdCBkZWFkIHJlc291cmNlcyBzaG91bGQgY29uc3VtZSB3aGVuIHRoZSBjYWNoZSBp
cyBub3QgdW5kZXIgcHJlc3N1cmUuCi0gICAgLy8gIC0gdG90YWxCeXRlczogVGhlIG1heGltdW0g
bnVtYmVyIG9mIGJ5dGVzIHRoYXQgdGhlIGNhY2hlIHNob3VsZCBjb25zdW1lIG92ZXJhbGwuCi0g
ICAgdm9pZCBzZXRDYXBhY2l0aWVzKHVuc2lnbmVkIG1pbkRlYWRCeXRlcywgdW5zaWduZWQgbWF4
RGVhZEJ5dGVzLCB1bnNpZ25lZCB0b3RhbEJ5dGVzKTsKLQotICAgIC8vIFR1cm4gdGhlIGNhY2hl
IG9uIGFuZCBvZmYuICBEaXNhYmxpbmcgdGhlIGNhY2hlIHdpbGwgcmVtb3ZlIGFsbCByZXNvdXJj
ZXMgZnJvbSB0aGUgY2FjaGUuICBUaGV5IG1heQotICAgIC8vIHN0aWxsIGxpdmUgb24gaWYgdGhl
eSBhcmUgcmVmZXJlbmNlZCBieSBzb21lIFdlYiBwYWdlIHRob3VnaC4KLSAgICB2b2lkIHNldERp
c2FibGVkKGJvb2wpOwotICAgIGJvb2wgZGlzYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Rpc2Fi
bGVkOyB9Ci0gICAgCi0gICAgdm9pZCBzZXRQcnVuZUVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1f
cHJ1bmVFbmFibGVkID0gZW5hYmxlZDsgfQotICAgIHZvaWQgcHJ1bmUoKQotICAgIHsKLSAgICAg
ICAgaWYgKG1fbGl2ZVNpemUgKyBtX2RlYWRTaXplIDw9IG1fY2FwYWNpdHkgJiYgbV9tYXhEZWFk
Q2FwYWNpdHkgJiYgbV9kZWFkU2l6ZSA8PSBtX21heERlYWRDYXBhY2l0eSkgLy8gRmFzdCBwYXRo
LgotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgCi0gICAgICAgIHBydW5lRGVhZFJl
c291cmNlcygpOyAvLyBQcnVuZSBkZWFkIGZpcnN0LCBpbiBjYXNlIGl0IHdhcyAiYm9ycm93aW5n
IiBjYXBhY2l0eSBmcm9tIGxpdmUuCi0gICAgICAgIHBydW5lTGl2ZVJlc291cmNlcygpOwotICAg
IH0KLQotICAgIHZvaWQgc2V0RGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbChkb3VibGUg
aW50ZXJ2YWwpIHsgbV9kZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsID0gaW50ZXJ2YWw7
IH0KLSAgICBkb3VibGUgZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCgpIGNvbnN0IHsg
cmV0dXJuIG1fZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbDsgfQotCi0gICAgLy8gUmVt
b3ZlIGFuIGV4aXN0aW5nIGNhY2hlIGVudHJ5IGZyb20gYm90aCB0aGUgcmVzb3VyY2UgbWFwIGFu
ZCBmcm9tIHRoZSBMUlUgbGlzdC4KLSAgICB2b2lkIHJlbW92ZShDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2UpIHsgZXZpY3QocmVzb3VyY2UpOyB9Ci0KLSAgICB2b2lkIGFkZENhY2hlZFJlc291cmNl
TG9hZGVyKENhY2hlZFJlc291cmNlTG9hZGVyKik7Ci0gICAgdm9pZCByZW1vdmVDYWNoZWRSZXNv
dXJjZUxvYWRlcihDYWNoZWRSZXNvdXJjZUxvYWRlciopOwotCi0gICAgQ2FjaGVkUmVzb3VyY2Uq
IHJlc291cmNlRm9yVVJMKGNvbnN0IFN0cmluZyYpOwotCi0gICAgLy8gQ2FsbHMgdG8gcHV0IHRo
ZSBjYWNoZWQgcmVzb3VyY2UgaW50byBhbmQgb3V0IG9mIExSVSBsaXN0cy4KLSAgICB2b2lkIGlu
c2VydEluTFJVTGlzdChDYWNoZWRSZXNvdXJjZSopOwotICAgIHZvaWQgcmVtb3ZlRnJvbUxSVUxp
c3QoQ2FjaGVkUmVzb3VyY2UqKTsKLQotICAgIC8vIENhbGxlZCB0byBhZGp1c3QgdGhlIGNhY2hl
IHRvdGFscyB3aGVuIGEgcmVzb3VyY2UgY2hhbmdlcyBzaXplLgotICAgIHZvaWQgYWRqdXN0U2l6
ZShib29sIGxpdmUsIGludCBkZWx0YSk7Ci0KLSAgICAvLyBUcmFjayBkZWNvZGVkIHJlc291cmNl
cyB0aGF0IGFyZSBpbiB0aGUgY2FjaGUgYW5kIHJlZmVyZW5jZWQgYnkgYSBXZWIgcGFnZS4KLSAg
ICB2b2lkIGluc2VydEluTGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0KENhY2hlZFJlc291cmNlKik7
Ci0gICAgdm9pZCByZW1vdmVGcm9tTGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0KENhY2hlZFJlc291
cmNlKik7Ci0KLSAgICB2b2lkIGFkZFRvTGl2ZVJlc291cmNlc1NpemUoQ2FjaGVkUmVzb3VyY2Uq
KTsKLSAgICB2b2lkIHJlbW92ZUZyb21MaXZlUmVzb3VyY2VzU2l6ZShDYWNoZWRSZXNvdXJjZSop
OwotCi0gICAgc3RhdGljIGJvb2wgc2hvdWxkTWFrZVJlc291cmNlUHVyZ2VhYmxlT25FdmljdGlv
bigpOwotCi0gICAgLy8gRnVuY3Rpb24gdG8gY29sbGVjdCBjYWNoZSBzdGF0aXN0aWNzIGZvciB0
aGUgY2FjaGVzIHdpbmRvdyBpbiB0aGUgU2FmYXJpIERlYnVnIG1lbnUuCi0gICAgU3RhdGlzdGlj
cyBnZXRTdGF0aXN0aWNzKCk7Ci0KLXByaXZhdGU6Ci0gICAgQ2FjaGUoKTsKLSAgICB+Q2FjaGUo
KTsgLy8gTm90IGltcGxlbWVudGVkIHRvIG1ha2Ugc3VyZSBub2JvZHkgYWNjaWRlbnRhbGx5IGNh
bGxzIGRlbGV0ZSAtLSBXZWJDb3JlIGRvZXMgbm90IGRlbGV0ZSBzaW5nbGV0b25zLgotICAgICAg
IAotICAgIExSVUxpc3QqIGxydUxpc3RGb3IoQ2FjaGVkUmVzb3VyY2UqKTsKLSAgICB2b2lkIHJl
c291cmNlQWNjZXNzZWQoQ2FjaGVkUmVzb3VyY2UqKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgdm9p
ZCBkdW1wU3RhdHMoKTsKLSAgICB2b2lkIGR1bXBMUlVMaXN0cyhib29sIGluY2x1ZGVMaXZlKSBj
b25zdDsKLSNlbmRpZgotCi0gICAgdW5zaWduZWQgbGl2ZUNhcGFjaXR5KCkgY29uc3Q7Ci0gICAg
dW5zaWduZWQgZGVhZENhcGFjaXR5KCkgY29uc3Q7Ci0gICAgCi0gICAgdm9pZCBwcnVuZURlYWRS
ZXNvdXJjZXMoKTsgLy8gRmx1c2ggZGVjb2RlZCBhbmQgZW5jb2RlZCBkYXRhIGZyb20gcmVzb3Vy
Y2VzIG5vdCByZWZlcmVuY2VkIGJ5IFdlYiBwYWdlcy4KLSAgICB2b2lkIHBydW5lTGl2ZVJlc291
cmNlcygpOyAvLyBGbHVzaCBkZWNvZGVkIGRhdGEgZnJvbSByZXNvdXJjZXMgc3RpbGwgcmVmZXJl
bmNlZCBieSBXZWIgcGFnZXMuCi0KLSAgICBib29sIG1ha2VSZXNvdXJjZVB1cmdlYWJsZShDYWNo
ZWRSZXNvdXJjZSopOwotICAgIHZvaWQgZXZpY3QoQ2FjaGVkUmVzb3VyY2UqKTsKLQotICAgIC8v
IE1lbWJlciB2YXJpYWJsZXMuCi0gICAgSGFzaFNldDxDYWNoZWRSZXNvdXJjZUxvYWRlcio+IG1f
Y2FjaGVkUmVzb3VyY2VMb2FkZXJzOwotICAgIExvYWRlciBtX2xvYWRlcjsKLQotICAgIGJvb2wg
bV9kaXNhYmxlZDsgIC8vIFdoZXRoZXIgb3Igbm90IHRoZSBjYWNoZSBpcyBlbmFibGVkLgotICAg
IGJvb2wgbV9wcnVuZUVuYWJsZWQ7Ci0gICAgYm9vbCBtX2luUHJ1bmVEZWFkUmVzb3VyY2VzOwot
Ci0gICAgdW5zaWduZWQgbV9jYXBhY2l0eTsKLSAgICB1bnNpZ25lZCBtX21pbkRlYWRDYXBhY2l0
eTsKLSAgICB1bnNpZ25lZCBtX21heERlYWRDYXBhY2l0eTsKLSAgICBkb3VibGUgbV9kZWFkRGVj
b2RlZERhdGFEZWxldGlvbkludGVydmFsOwotCi0gICAgdW5zaWduZWQgbV9saXZlU2l6ZTsgLy8g
VGhlIG51bWJlciBvZiBieXRlcyBjdXJyZW50bHkgY29uc3VtZWQgYnkgImxpdmUiIHJlc291cmNl
cyBpbiB0aGUgY2FjaGUuCi0gICAgdW5zaWduZWQgbV9kZWFkU2l6ZTsgLy8gVGhlIG51bWJlciBv
ZiBieXRlcyBjdXJyZW50bHkgY29uc3VtZWQgYnkgImRlYWQiIHJlc291cmNlcyBpbiB0aGUgY2Fj
aGUuCi0KLSAgICAvLyBTaXplLWFkanVzdGVkIGFuZCBwb3B1bGFyaXR5LWF3YXJlIExSVSBsaXN0
IGNvbGxlY3Rpb24gZm9yIGNhY2hlIG9iamVjdHMuICBUaGlzIGNvbGxlY3Rpb24gY2FuIGhvbGQK
LSAgICAvLyBtb3JlIHJlc291cmNlcyB0aGFuIHRoZSBjYWNoZWQgcmVzb3VyY2UgbWFwLCBzaW5j
ZSBpdCBjYW4gYWxzbyBob2xkICJzdGFsZSIgbXVsdGlwbGUgdmVyc2lvbnMgb2Ygb2JqZWN0cyB0
aGF0IGFyZQotICAgIC8vIHdhaXRpbmcgdG8gZGllIHdoZW4gdGhlIGNsaWVudHMgcmVmZXJlbmNp
bmcgdGhlbSBnbyBhd2F5LgotICAgIFZlY3RvcjxMUlVMaXN0LCAzMj4gbV9hbGxSZXNvdXJjZXM7
Ci0gICAgCi0gICAgLy8gTGlzdCBqdXN0IGZvciBsaXZlIHJlc291cmNlcyB3aXRoIGRlY29kZWQg
ZGF0YS4gIEFjY2VzcyB0byB0aGlzIGxpc3QgaXMgYmFzZWQgb2ZmIG9mIHBhaW50aW5nIHRoZSBy
ZXNvdXJjZS4KLSAgICBMUlVMaXN0IG1fbGl2ZURlY29kZWRSZXNvdXJjZXM7Ci0gICAgCi0gICAg
Ly8gQSBVUkwtYmFzZWQgbWFwIG9mIGFsbCByZXNvdXJjZXMgdGhhdCBhcmUgaW4gdGhlIGNhY2hl
IChpbmNsdWRpbmcgdGhlIGZyZXNoZXN0IHZlcnNpb24gb2Ygb2JqZWN0cyB0aGF0IGFyZSBjdXJy
ZW50bHkgYmVpbmcgCi0gICAgLy8gcmVmZXJlbmNlZCBieSBhIFdlYiBwYWdlKS4KLSAgICBIYXNo
TWFwPFN0cmluZywgQ2FjaGVkUmVzb3VyY2UqPiBtX3Jlc291cmNlczsKLX07Ci0KLWlubGluZSBi
b29sIENhY2hlOjpzaG91bGRNYWtlUmVzb3VyY2VQdXJnZWFibGVPbkV2aWN0aW9uKCkKLXsKLSNp
ZiBQTEFURk9STShJT1MpCi0gICAgcmV0dXJuIHRydWU7Ci0jZWxzZQotICAgIHJldHVybiBmYWxz
ZTsKLSNlbmRpZgotfQotCi0vLyBGdW5jdGlvbiB0byBvYnRhaW4gdGhlIGdsb2JhbCBjYWNoZS4K
LUNhY2hlKiBjYWNoZSgpOwotCi19Ci0KLSNlbmRpZgpJbmRleDogV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlLmNw
cAkocmV2aXNpb24gNzE0ODgpCShmcm9tIFdlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcDo3MTQ4OCkK
KysrIFdlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDc4OCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDE5OTggTGFycyBLbm9sbCAoa25vbGxA
bXBpLWhkLm1wZy5kZSkKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVs
bGVyQGtkZS5vcmcpCisgICAgQ29weXJpZ2h0IChDKSAyMDAyIFdhbGRvIEJhc3RpYW4gKGJhc3Rp
YW5Aa2RlLm9yZykKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIw
MDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
ICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
CisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJDYWNoZS5oIgorCisjaW5jbHVkZSAiQ2FjaGVkQ1NTU3R5bGVTaGVldC5o
IgorI2luY2x1ZGUgIkNhY2hlZEZvbnQuaCIKKyNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgorI2lu
Y2x1ZGUgIkNhY2hlZFNjcmlwdC5oIgorI2luY2x1ZGUgIkNhY2hlZFhTTFN0eWxlU2hlZXQuaCIK
KyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgi
CisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJM
b2dnaW5nLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1l
Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Rh
dGljIGNvbnN0IGludCBjRGVmYXVsdENhY2hlQ2FwYWNpdHkgPSA4MTkyICogMTAyNDsKK3N0YXRp
YyBjb25zdCBkb3VibGUgY01pbkRlbGF5QmVmb3JlTGl2ZURlY29kZWRQcnVuZSA9IDE7IC8vIFNl
Y29uZHMuCitzdGF0aWMgY29uc3QgZmxvYXQgY1RhcmdldFBydW5lUGVyY2VudGFnZSA9IC45NWY7
IC8vIFBlcmNlbnRhZ2Ugb2YgY2FwYWNpdHkgdG93YXJkIHdoaWNoIHdlIHBydW5lLCB0byBhdm9p
ZCBpbW1lZGlhdGVseSBwcnVuaW5nIGFnYWluLgorc3RhdGljIGNvbnN0IGRvdWJsZSBjRGVmYXVs
dERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCA9IDA7CisKK0NhY2hlKiBjYWNoZSgpCit7Cisg
ICAgc3RhdGljIENhY2hlKiBzdGF0aWNDYWNoZSA9IG5ldyBDYWNoZTsKKyAgICByZXR1cm4gc3Rh
dGljQ2FjaGU7Cit9CisKK0NhY2hlOjpDYWNoZSgpCisgICAgOiBtX2Rpc2FibGVkKGZhbHNlKQor
ICAgICwgbV9wcnVuZUVuYWJsZWQodHJ1ZSkKKyAgICAsIG1faW5QcnVuZURlYWRSZXNvdXJjZXMo
ZmFsc2UpCisgICAgLCBtX2NhcGFjaXR5KGNEZWZhdWx0Q2FjaGVDYXBhY2l0eSkKKyAgICAsIG1f
bWluRGVhZENhcGFjaXR5KDApCisgICAgLCBtX21heERlYWRDYXBhY2l0eShjRGVmYXVsdENhY2hl
Q2FwYWNpdHkpCisgICAgLCBtX2RlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwoY0RlZmF1
bHREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwpCisgICAgLCBtX2xpdmVTaXplKDApCisgICAg
LCBtX2RlYWRTaXplKDApCit7Cit9CisKK3N0YXRpYyBDYWNoZWRSZXNvdXJjZSogY3JlYXRlUmVz
b3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIGNoYXJzZXQpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBDYWNoZWRS
ZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZToKKyAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRJbWFnZSh1
cmwuc3RyaW5nKCkpOworICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQ6Cisg
ICAgICAgIHJldHVybiBuZXcgQ2FjaGVkQ1NTU3R5bGVTaGVldCh1cmwuc3RyaW5nKCksIGNoYXJz
ZXQpOworICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdDoKKyAgICAgICAgcmV0dXJuIG5l
dyBDYWNoZWRTY3JpcHQodXJsLnN0cmluZygpLCBjaGFyc2V0KTsKKyAgICBjYXNlIENhY2hlZFJl
c291cmNlOjpGb250UmVzb3VyY2U6CisgICAgICAgIHJldHVybiBuZXcgQ2FjaGVkRm9udCh1cmwu
c3RyaW5nKCkpOworI2lmIEVOQUJMRShYU0xUKQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlhT
TFN0eWxlU2hlZXQ6CisgICAgICAgIHJldHVybiBuZXcgQ2FjaGVkWFNMU3R5bGVTaGVldCh1cmwu
c3RyaW5nKCkpOworI2VuZGlmCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgY2FzZSBD
YWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgorICAgICAgICByZXR1cm4gbmV3IENhY2hlZFJl
c291cmNlKHVybC5zdHJpbmcoKSwgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaCk7CisjZW5k
aWYKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gMDsK
K30KKworQ2FjaGVkUmVzb3VyY2UqIENhY2hlOjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBl
LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgYm9vbCByZXF1ZXN0SXNQ
cmVsb2FkKQoreworICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJDYWNoZTo6cmVxdWVzdFJlc291
cmNlICclcycsIGNoYXJzZXQgJyVzJywgcHJlbG9hZD0ldSIsIHVybC5zdHJpbmcoKS5sYXRpbjEo
KS5kYXRhKCksIGNoYXJzZXQubGF0aW4xKCkuZGF0YSgpLCByZXF1ZXN0SXNQcmVsb2FkKTsKKwor
ICAgIC8vIEZJWE1FOiBEbyB3ZSByZWFsbHkgbmVlZCB0byBzcGVjaWFsLWNhc2UgYW4gZW1wdHkg
VVJMPworICAgIC8vIFdvdWxkIGl0IGJlIGJldHRlciB0byBqdXN0IGdvIG9uIHdpdGggdGhlIGNh
Y2hlIGNvZGUgYW5kIGxldCBpdCBmYWlsIGxhdGVyPworICAgIGlmICh1cmwuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIExvb2sgdXAgdGhlIHJlc291cmNlIGluIG91ciBt
YXAuCisgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gcmVzb3VyY2VGb3JVUkwodXJsLnN0
cmluZygpKTsKKworICAgIGlmIChyZXNvdXJjZSAmJiByZXF1ZXN0SXNQcmVsb2FkICYmICFyZXNv
dXJjZS0+aXNQcmVsb2FkZWQoKSkgeworICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2Fj
aGU6OnJlcXVlc3RSZXNvdXJjZSBhbHJlYWR5IGhhcyBhIHByZWxvYWQgcmVxdWVzdCBmb3IgdGhp
cyByZXF1ZXN0LCBhbmQgaXQgaGFzbid0IGJlZW4gcHJlbG9hZGVkIHlldCIpOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoIWNhY2hlZFJlc291cmNlTG9hZGVyLT5kb2MoKS0+
c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheSh1cmwpKSB7CisgICAgICAgIExPRyhSZXNvdXJj
ZUxvYWRpbmcsICIuLi5VUkwgd2FzIG5vdCBhbGxvd2VkIGJ5IFNlY3VyaXR5T3JpZ2luIik7Cisg
ICAgICAgIGlmICghcmVxdWVzdElzUHJlbG9hZCkKKyAgICAgICAgICAgIEZyYW1lTG9hZGVyOjpy
ZXBvcnRMb2NhbExvYWRGYWlsZWQoY2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvYygpLT5mcmFtZSgp
LCB1cmwuc3RyaW5nKCkpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgCisgICAgaWYg
KCFyZXNvdXJjZSkgeworICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2FjaGVkUmVzb3Vy
Y2UgZm9yICclcycgd2Fzbid0IGZvdW5kIGluIGNhY2hlLiBDcmVhdGluZyBpdCIsIHVybC5zdHJp
bmcoKS5sYXRpbjEoKS5kYXRhKCkpOworICAgICAgICAvLyBUaGUgcmVzb3VyY2UgZG9lcyBub3Qg
ZXhpc3QuIENyZWF0ZSBpdC4KKyAgICAgICAgcmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZSh0eXBl
LCB1cmwsIGNoYXJzZXQpOworICAgICAgICBBU1NFUlQocmVzb3VyY2UpOworCisgICAgICAgIC8v
IFByZXRlbmQgdGhlIHJlc291cmNlIGlzIGluIHRoZSBjYWNoZSwgdG8gcHJldmVudCBpdCBmcm9t
IGJlaW5nIGRlbGV0ZWQgZHVyaW5nIHRoZSBsb2FkKCkgY2FsbC4KKyAgICAgICAgLy8gRklYTUU6
IENhY2hlZFJlc291cmNlIHNob3VsZCBqdXN0IHVzZSBub3JtYWwgcmVmY291bnRpbmcgaW5zdGVh
ZC4KKyAgICAgICAgcmVzb3VyY2UtPnNldEluQ2FjaGUodHJ1ZSk7CisgICAgICAgIAorICAgICAg
ICByZXNvdXJjZS0+bG9hZChjYWNoZWRSZXNvdXJjZUxvYWRlcik7CisgICAgICAgIAorICAgICAg
ICBpZiAocmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgLy8gV2UgZG9u
J3Qgc3VwcG9ydCBpbW1lZGlhdGUgbG9hZHMsIGJ1dCB3ZSBkbyBzdXBwb3J0IGltbWVkaWF0ZSBm
YWlsdXJlLgorICAgICAgICAgICAgLy8gSW4gdGhhdCBjYXNlIHdlIHNob3VsZCB0byBkZWxldGUg
dGhlIHJlc291cmNlIG5vdyBhbmQgcmV0dXJuIDAgYmVjYXVzZSBvdGhlcndpc2UKKyAgICAgICAg
ICAgIC8vIGl0IHdvdWxkIGxlYWsgaWYgbm8gcmVmL2RlcmVmIHdhcyBldmVyIGRvbmUgb24gaXQu
CisgICAgICAgICAgICByZXNvdXJjZS0+c2V0SW5DYWNoZShmYWxzZSk7CisgICAgICAgICAgICBk
ZWxldGUgcmVzb3VyY2U7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmICghZGlzYWJsZWQoKSkKKyAgICAgICAgICAgIG1fcmVzb3VyY2VzLnNldCh1cmwuc3Ry
aW5nKCksIHJlc291cmNlKTsgIC8vIFRoZSBzaXplIHdpbGwgYmUgYWRkZWQgaW4gbGF0ZXIgb25j
ZSB0aGUgcmVzb3VyY2UgaXMgbG9hZGVkIGFuZCBjYWxscyBiYWNrIHRvIHVzIHdpdGggdGhlIG5l
dyBzaXplLgorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIEtpY2sgdGhlIHJlc291cmNl
IG91dCBvZiB0aGUgY2FjaGUsIGJlY2F1c2UgdGhlIGNhY2hlIGlzIGRpc2FibGVkLgorICAgICAg
ICAgICAgcmVzb3VyY2UtPnNldEluQ2FjaGUoZmFsc2UpOworICAgICAgICAgICAgcmVzb3VyY2Ut
PnNldENhY2hlZFJlc291cmNlTG9hZGVyKGNhY2hlZFJlc291cmNlTG9hZGVyKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGlmIChyZXNvdXJjZS0+dHlwZSgpICE9IHR5cGUpIHsKKyAgICAgICAg
TE9HKFJlc291cmNlTG9hZGluZywgIkNhY2hlOjpyZXF1ZXN0UmVzb3VyY2UgY2Fubm90IHVzZSBj
YWNoZWQgcmVzb3VyY2UgZm9yICclcycgZHVlIHRvIHR5cGUgbWlzbWF0Y2giLCB1cmwuc3RyaW5n
KCkubGF0aW4xKCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYg
KCFkaXNhYmxlZCgpKSB7CisgICAgICAgIC8vIFRoaXMgd2lsbCBtb3ZlIHRoZSByZXNvdXJjZSB0
byB0aGUgZnJvbnQgb2YgaXRzIExSVSBsaXN0IGFuZCBpbmNyZWFzZSBpdHMgYWNjZXNzIGNvdW50
LgorICAgICAgICByZXNvdXJjZUFjY2Vzc2VkKHJlc291cmNlKTsKKyAgICB9CisKKyAgICBMT0co
UmVzb3VyY2VMb2FkaW5nLCAiQ2FjaGU6OnJlcXVlc3RSZXNvdXJjZSBmb3IgJyVzJyByZXR1cm5p
bmcgcmVzb3VyY2UgJXBcbiIsIHVybC5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCksIHJlc291cmNl
KTsKKworICAgIHJldHVybiByZXNvdXJjZTsKK30KKyAgICAKK0NhY2hlZENTU1N0eWxlU2hlZXQq
IENhY2hlOjpyZXF1ZXN0VXNlckNTU1N0eWxlU2hlZXQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNh
Y2hlZFJlc291cmNlTG9hZGVyLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBjaGFy
c2V0KQoreworICAgIENhY2hlZENTU1N0eWxlU2hlZXQqIHVzZXJTaGVldDsKKyAgICBpZiAoQ2Fj
aGVkUmVzb3VyY2UqIGV4aXN0aW5nID0gcmVzb3VyY2VGb3JVUkwodXJsKSkgeworICAgICAgICBp
ZiAoZXhpc3RpbmctPnR5cGUoKSAhPSBDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldCkKKyAg
ICAgICAgICAgIHJldHVybiAwOworICAgICAgICB1c2VyU2hlZXQgPSBzdGF0aWNfY2FzdDxDYWNo
ZWRDU1NTdHlsZVNoZWV0Kj4oZXhpc3RpbmcpOworICAgIH0gZWxzZSB7CisgICAgICAgIHVzZXJT
aGVldCA9IG5ldyBDYWNoZWRDU1NTdHlsZVNoZWV0KHVybCwgY2hhcnNldCk7CisKKyAgICAgICAg
Ly8gUHJldGVuZCB0aGUgcmVzb3VyY2UgaXMgaW4gdGhlIGNhY2hlLCB0byBwcmV2ZW50IGl0IGZy
b20gYmVpbmcgZGVsZXRlZCBkdXJpbmcgdGhlIGxvYWQoKSBjYWxsLgorICAgICAgICAvLyBGSVhN
RTogQ2FjaGVkUmVzb3VyY2Ugc2hvdWxkIGp1c3QgdXNlIG5vcm1hbCByZWZjb3VudGluZyBpbnN0
ZWFkLgorICAgICAgICB1c2VyU2hlZXQtPnNldEluQ2FjaGUodHJ1ZSk7CisgICAgICAgIC8vIERv
bid0IGxvYWQgaW5jcmVtZW50YWxseSwgc2tpcCBsb2FkIGNoZWNrcywgZG9uJ3Qgc2VuZCByZXNv
dXJjZSBsb2FkIGNhbGxiYWNrcy4KKyAgICAgICAgdXNlclNoZWV0LT5sb2FkKGNhY2hlZFJlc291
cmNlTG9hZGVyLCBmYWxzZSwgU2tpcFNlY3VyaXR5Q2hlY2ssIGZhbHNlKTsKKyAgICAgICAgaWYg
KCFkaXNhYmxlZCgpKQorICAgICAgICAgICAgbV9yZXNvdXJjZXMuc2V0KHVybCwgdXNlclNoZWV0
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdXNlclNoZWV0LT5zZXRJbkNhY2hlKGZhbHNl
KTsKKyAgICB9CisKKyAgICBpZiAoIWRpc2FibGVkKCkpIHsKKyAgICAgICAgLy8gVGhpcyB3aWxs
IG1vdmUgdGhlIHJlc291cmNlIHRvIHRoZSBmcm9udCBvZiBpdHMgTFJVIGxpc3QgYW5kIGluY3Jl
YXNlIGl0cyBhY2Nlc3MgY291bnQuCisgICAgICAgIHJlc291cmNlQWNjZXNzZWQodXNlclNoZWV0
KTsKKyAgICB9CisKKyAgICByZXR1cm4gdXNlclNoZWV0OworfQorICAgIAordm9pZCBDYWNoZTo6
cmV2YWxpZGF0ZVJlc291cmNlKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyKQoreworICAgIEFTU0VSVChyZXNvdXJjZSk7
CisgICAgQVNTRVJUKHJlc291cmNlLT5pbkNhY2hlKCkpOworICAgIEFTU0VSVChyZXNvdXJjZSA9
PSBtX3Jlc291cmNlcy5nZXQocmVzb3VyY2UtPnVybCgpKSk7CisgICAgQVNTRVJUKCFkaXNhYmxl
ZCgpKTsKKyAgICBpZiAocmVzb3VyY2UtPnJlc291cmNlVG9SZXZhbGlkYXRlKCkpCisgICAgICAg
IHJldHVybjsKKyAgICBpZiAoIXJlc291cmNlLT5jYW5Vc2VDYWNoZVZhbGlkYXRvcigpKSB7Cisg
ICAgICAgIGV2aWN0KHJlc291cmNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjb25z
dCBTdHJpbmcmIHVybCA9IHJlc291cmNlLT51cmwoKTsKKyAgICBDYWNoZWRSZXNvdXJjZSogbmV3
UmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZShyZXNvdXJjZS0+dHlwZSgpLCBLVVJMKFBhcnNlZFVS
TFN0cmluZywgdXJsKSwgcmVzb3VyY2UtPmVuY29kaW5nKCkpOworICAgIExPRyhSZXNvdXJjZUxv
YWRpbmcsICJSZXNvdXJjZSAlcCBjcmVhdGVkIHRvIHJldmFsaWRhdGUgJXAiLCBuZXdSZXNvdXJj
ZSwgcmVzb3VyY2UpOworICAgIG5ld1Jlc291cmNlLT5zZXRSZXNvdXJjZVRvUmV2YWxpZGF0ZShy
ZXNvdXJjZSk7CisgICAgZXZpY3QocmVzb3VyY2UpOworICAgIG1fcmVzb3VyY2VzLnNldCh1cmws
IG5ld1Jlc291cmNlKTsKKyAgICBuZXdSZXNvdXJjZS0+c2V0SW5DYWNoZSh0cnVlKTsKKyAgICBy
ZXNvdXJjZUFjY2Vzc2VkKG5ld1Jlc291cmNlKTsKKyAgICBuZXdSZXNvdXJjZS0+bG9hZChjYWNo
ZWRSZXNvdXJjZUxvYWRlcik7Cit9CisgICAgCit2b2lkIENhY2hlOjpyZXZhbGlkYXRpb25TdWNj
ZWVkZWQoQ2FjaGVkUmVzb3VyY2UqIHJldmFsaWRhdGluZ1Jlc291cmNlLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBy
ZXZhbGlkYXRpbmdSZXNvdXJjZS0+cmVzb3VyY2VUb1JldmFsaWRhdGUoKTsKKyAgICBBU1NFUlQo
cmVzb3VyY2UpOworICAgIEFTU0VSVCghcmVzb3VyY2UtPmluQ2FjaGUoKSk7CisgICAgQVNTRVJU
KHJlc291cmNlLT5pc0xvYWRlZCgpKTsKKyAgICBBU1NFUlQocmV2YWxpZGF0aW5nUmVzb3VyY2Ut
PmluQ2FjaGUoKSk7CisgICAgCisgICAgZXZpY3QocmV2YWxpZGF0aW5nUmVzb3VyY2UpOworCisg
ICAgQVNTRVJUKCFtX3Jlc291cmNlcy5nZXQocmVzb3VyY2UtPnVybCgpKSk7CisgICAgbV9yZXNv
dXJjZXMuc2V0KHJlc291cmNlLT51cmwoKSwgcmVzb3VyY2UpOworICAgIHJlc291cmNlLT5zZXRJ
bkNhY2hlKHRydWUpOworICAgIHJlc291cmNlLT51cGRhdGVSZXNwb25zZUFmdGVyUmV2YWxpZGF0
aW9uKHJlc3BvbnNlKTsKKyAgICBpbnNlcnRJbkxSVUxpc3QocmVzb3VyY2UpOworICAgIGludCBk
ZWx0YSA9IHJlc291cmNlLT5zaXplKCk7CisgICAgaWYgKHJlc291cmNlLT5kZWNvZGVkU2l6ZSgp
ICYmIHJlc291cmNlLT5oYXNDbGllbnRzKCkpCisgICAgICAgIGluc2VydEluTGl2ZURlY29kZWRS
ZXNvdXJjZXNMaXN0KHJlc291cmNlKTsKKyAgICBpZiAoZGVsdGEpCisgICAgICAgIGFkanVzdFNp
emUocmVzb3VyY2UtPmhhc0NsaWVudHMoKSwgZGVsdGEpOworICAgIAorICAgIHJldmFsaWRhdGlu
Z1Jlc291cmNlLT5zd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291cmNlKCk7CisgICAgLy8g
dGhpcyBkZWxldGVzIHRoZSByZXZhbGlkYXRpbmcgcmVzb3VyY2UKKyAgICByZXZhbGlkYXRpbmdS
ZXNvdXJjZS0+Y2xlYXJSZXNvdXJjZVRvUmV2YWxpZGF0ZSgpOworfQorCit2b2lkIENhY2hlOjpy
ZXZhbGlkYXRpb25GYWlsZWQoQ2FjaGVkUmVzb3VyY2UqIHJldmFsaWRhdGluZ1Jlc291cmNlKQor
eworICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJSZXZhbGlkYXRpb24gZmFpbGVkIGZvciAlcCIs
IHJldmFsaWRhdGluZ1Jlc291cmNlKTsKKyAgICBBU1NFUlQocmV2YWxpZGF0aW5nUmVzb3VyY2Ut
PnJlc291cmNlVG9SZXZhbGlkYXRlKCkpOworICAgIHJldmFsaWRhdGluZ1Jlc291cmNlLT5jbGVh
clJlc291cmNlVG9SZXZhbGlkYXRlKCk7Cit9CisKK0NhY2hlZFJlc291cmNlKiBDYWNoZTo6cmVz
b3VyY2VGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgQ2FjaGVkUmVzb3VyY2UqIHJl
c291cmNlID0gbV9yZXNvdXJjZXMuZ2V0KHVybCk7CisgICAgYm9vbCB3YXNQdXJnZWFibGUgPSBD
YWNoZTo6c2hvdWxkTWFrZVJlc291cmNlUHVyZ2VhYmxlT25FdmljdGlvbigpICYmIHJlc291cmNl
ICYmIHJlc291cmNlLT5pc1B1cmdlYWJsZSgpOworICAgIGlmIChyZXNvdXJjZSAmJiAhcmVzb3Vy
Y2UtPm1ha2VQdXJnZWFibGUoZmFsc2UpKSB7CisgICAgICAgIEFTU0VSVCghcmVzb3VyY2UtPmhh
c0NsaWVudHMoKSk7CisgICAgICAgIGV2aWN0KHJlc291cmNlKTsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorICAgIC8vIEFkZCB0aGUgc2l6ZSBiYWNrIHNpbmNlIHdlIGhhZCBzdWJ0cmFjdGVk
IGl0IHdoZW4gd2UgbWFya2VkIHRoZSBtZW1vcnkgYXMgcHVyZ2VhYmxlLgorICAgIGlmICh3YXNQ
dXJnZWFibGUpCisgICAgICAgIGFkanVzdFNpemUocmVzb3VyY2UtPmhhc0NsaWVudHMoKSwgcmVz
b3VyY2UtPnNpemUoKSk7CisgICAgcmV0dXJuIHJlc291cmNlOworfQorCit1bnNpZ25lZCBDYWNo
ZTo6ZGVhZENhcGFjaXR5KCkgY29uc3QgCit7CisgICAgLy8gRGVhZCByZXNvdXJjZSBjYXBhY2l0
eSBpcyB3aGF0ZXZlciBzcGFjZSBpcyBub3Qgb2NjdXBpZWQgYnkgbGl2ZSByZXNvdXJjZXMsIGJv
dW5kZWQgYnkgYW4gaW5kZXBlbmRlbnQgbWluaW11bSBhbmQgbWF4aW11bS4KKyAgICB1bnNpZ25l
ZCBjYXBhY2l0eSA9IG1fY2FwYWNpdHkgLSBtaW4obV9saXZlU2l6ZSwgbV9jYXBhY2l0eSk7IC8v
IFN0YXJ0IHdpdGggYXZhaWxhYmxlIGNhcGFjaXR5LgorICAgIGNhcGFjaXR5ID0gbWF4KGNhcGFj
aXR5LCBtX21pbkRlYWRDYXBhY2l0eSk7IC8vIE1ha2Ugc3VyZSBpdCdzIGFib3ZlIHRoZSBtaW5p
bXVtLgorICAgIGNhcGFjaXR5ID0gbWluKGNhcGFjaXR5LCBtX21heERlYWRDYXBhY2l0eSk7IC8v
IE1ha2Ugc3VyZSBpdCdzIGJlbG93IHRoZSBtYXhpbXVtLgorICAgIHJldHVybiBjYXBhY2l0eTsK
K30KKwordW5zaWduZWQgQ2FjaGU6OmxpdmVDYXBhY2l0eSgpIGNvbnN0IAoreyAKKyAgICAvLyBM
aXZlIHJlc291cmNlIGNhcGFjaXR5IGlzIHdoYXRldmVyIGlzIGxlZnQgb3ZlciBhZnRlciBjYWxj
dWxhdGluZyBkZWFkIHJlc291cmNlIGNhcGFjaXR5LgorICAgIHJldHVybiBtX2NhcGFjaXR5IC0g
ZGVhZENhcGFjaXR5KCk7Cit9CisKK3ZvaWQgQ2FjaGU6OnBydW5lTGl2ZVJlc291cmNlcygpCit7
CisgICAgaWYgKCFtX3BydW5lRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWdu
ZWQgY2FwYWNpdHkgPSBsaXZlQ2FwYWNpdHkoKTsKKyAgICBpZiAoY2FwYWNpdHkgJiYgbV9saXZl
U2l6ZSA8PSBjYXBhY2l0eSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgdGFyZ2V0
U2l6ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjYXBhY2l0eSAqIGNUYXJnZXRQcnVuZVBlcmNl
bnRhZ2UpOyAvLyBDdXQgYnkgYSBwZXJjZW50YWdlIHRvIGF2b2lkIGltbWVkaWF0ZWx5IHBydW5p
bmcgYWdhaW4uCisgICAgZG91YmxlIGN1cnJlbnRUaW1lID0gRnJhbWVWaWV3OjpjdXJyZW50UGFp
bnRUaW1lU3RhbXAoKTsKKyAgICBpZiAoIWN1cnJlbnRUaW1lKSAvLyBJbiBjYXNlIHBydW5lIGlz
IGNhbGxlZCBkaXJlY3RseSwgb3V0c2lkZSBvZiBhIEZyYW1lIHBhaW50LgorICAgICAgICBjdXJy
ZW50VGltZSA9IFdURjo6Y3VycmVudFRpbWUoKTsKKyAgICAKKyAgICAvLyBEZXN0cm95IGFueSBk
ZWNvZGVkIGRhdGEgaW4gbGl2ZSBvYmplY3RzIHRoYXQgd2UgY2FuLgorICAgIC8vIFN0YXJ0IGZy
b20gdGhlIHRhaWwsIHNpbmNlIHRoaXMgaXMgdGhlIGxlYXN0IHJlY2VudGx5IGFjY2Vzc2VkIG9m
IHRoZSBvYmplY3RzLgorCisgICAgLy8gVGhlIGxpc3QgbWlnaHQgbm90IGJlIHNvcnRlZCBieSB0
aGUgbV9sYXN0RGVjb2RlZEFjY2Vzc1RpbWUuIFRoZSBpbXBhY3QKKyAgICAvLyBvZiB0aGlzIHdl
YWtlciBpbnZhcmlhbnQgaXMgbWlub3IgYXMgdGhlIGJlbG93IGlmIHN0YXRlbWVudCB0byBjaGVj
ayB0aGUKKyAgICAvLyBlbGFwc2VkVGltZSB3aWxsIGV2YWx1YXRlIHRvIGZhbHNlIGFzIHRoZSBj
dXJyZW50VGltZSB3aWxsIGJlIGEgbG90CisgICAgLy8gZ3JlYXRlciB0aGFuIHRoZSBjdXJyZW50
LT5tX2xhc3REZWNvZGVkQWNjZXNzVGltZS4KKyAgICAvLyBGb3IgbW9yZSBkZXRhaWxzIHNlZTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMjA5CisgICAgQ2FjaGVk
UmVzb3VyY2UqIGN1cnJlbnQgPSBtX2xpdmVEZWNvZGVkUmVzb3VyY2VzLm1fdGFpbDsKKyAgICB3
aGlsZSAoY3VycmVudCkgeworICAgICAgICBDYWNoZWRSZXNvdXJjZSogcHJldiA9IGN1cnJlbnQt
Pm1fcHJldkluTGl2ZVJlc291cmNlc0xpc3Q7CisgICAgICAgIEFTU0VSVChjdXJyZW50LT5oYXND
bGllbnRzKCkpOworICAgICAgICBpZiAoY3VycmVudC0+aXNMb2FkZWQoKSAmJiBjdXJyZW50LT5k
ZWNvZGVkU2l6ZSgpKSB7CisgICAgICAgICAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIHJlbWFp
bmluZyByZXNvdXJjZXMgYXJlIHRvbyBuZXcgdG8gcHJ1bmUuCisgICAgICAgICAgICBkb3VibGUg
ZWxhcHNlZFRpbWUgPSBjdXJyZW50VGltZSAtIGN1cnJlbnQtPm1fbGFzdERlY29kZWRBY2Nlc3NU
aW1lOworICAgICAgICAgICAgaWYgKGVsYXBzZWRUaW1lIDwgY01pbkRlbGF5QmVmb3JlTGl2ZURl
Y29kZWRQcnVuZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIC8vIERl
c3Ryb3kgb3VyIGRlY29kZWQgZGF0YS4gVGhpcyB3aWxsIHJlbW92ZSB1cyBmcm9tIAorICAgICAg
ICAgICAgLy8gbV9saXZlRGVjb2RlZFJlc291cmNlcywgYW5kIHBvc3NpYmx5IG1vdmUgdXMgdG8g
YSBkaWZmZXJlbnQgTFJVIAorICAgICAgICAgICAgLy8gbGlzdCBpbiBtX2FsbFJlc291cmNlcy4K
KyAgICAgICAgICAgIGN1cnJlbnQtPmRlc3Ryb3lEZWNvZGVkRGF0YSgpOworCisgICAgICAgICAg
ICBpZiAodGFyZ2V0U2l6ZSAmJiBtX2xpdmVTaXplIDw9IHRhcmdldFNpemUpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGN1cnJlbnQgPSBwcmV2OworICAgIH0K
K30KKwordm9pZCBDYWNoZTo6cHJ1bmVEZWFkUmVzb3VyY2VzKCkKK3sKKyAgICBpZiAoIW1fcHJ1
bmVFbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCBjYXBhY2l0eSA9IGRl
YWRDYXBhY2l0eSgpOworICAgIGlmIChjYXBhY2l0eSAmJiBtX2RlYWRTaXplIDw9IGNhcGFjaXR5
KQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCB0YXJnZXRTaXplID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGNhcGFjaXR5ICogY1RhcmdldFBydW5lUGVyY2VudGFnZSk7IC8vIEN1dCBi
eSBhIHBlcmNlbnRhZ2UgdG8gYXZvaWQgaW1tZWRpYXRlbHkgcHJ1bmluZyBhZ2Fpbi4KKyAgICBp
bnQgc2l6ZSA9IG1fYWxsUmVzb3VyY2VzLnNpemUoKTsKKyAgICAKKyAgICBpZiAoIW1faW5QcnVu
ZURlYWRSZXNvdXJjZXMpIHsKKyAgICAgICAgLy8gU2VlIGlmIHdlIGhhdmUgYW55IHB1cmdlZCBy
ZXNvdXJjZXMgd2UgY2FuIGV2aWN0LgorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7
IGkrKykgeworICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIGN1cnJlbnQgPSBtX2FsbFJlc291
cmNlc1tpXS5tX3RhaWw7CisgICAgICAgICAgICB3aGlsZSAoY3VycmVudCkgeworICAgICAgICAg
ICAgICAgIENhY2hlZFJlc291cmNlKiBwcmV2ID0gY3VycmVudC0+bV9wcmV2SW5BbGxSZXNvdXJj
ZXNMaXN0OworICAgICAgICAgICAgICAgIGlmIChjdXJyZW50LT53YXNQdXJnZWQoKSkgeworICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoIWN1cnJlbnQtPmhhc0NsaWVudHMoKSk7CisgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVCghY3VycmVudC0+aXNQcmVsb2FkZWQoKSk7CisgICAgICAgICAg
ICAgICAgICAgIGV2aWN0KGN1cnJlbnQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBjdXJyZW50ID0gcHJldjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBp
ZiAodGFyZ2V0U2l6ZSAmJiBtX2RlYWRTaXplIDw9IHRhcmdldFNpemUpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIAorICAgIGJvb2wgY2FuU2hyaW5rTFJVTGlzdHMgPSB0cnVlOwor
ICAgIG1faW5QcnVuZURlYWRSZXNvdXJjZXMgPSB0cnVlOworICAgIGZvciAoaW50IGkgPSBzaXpl
IC0gMTsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgLy8gUmVtb3ZlIGZyb20gdGhlIHRhaWwsIHNp
bmNlIHRoaXMgaXMgdGhlIGxlYXN0IGZyZXF1ZW50bHkgYWNjZXNzZWQgb2YgdGhlIG9iamVjdHMu
CisgICAgICAgIENhY2hlZFJlc291cmNlKiBjdXJyZW50ID0gbV9hbGxSZXNvdXJjZXNbaV0ubV90
YWlsOworICAgICAgICAKKyAgICAgICAgLy8gRmlyc3QgZmx1c2ggYWxsIHRoZSBkZWNvZGVkIGRh
dGEgaW4gdGhpcyBxdWV1ZS4KKyAgICAgICAgd2hpbGUgKGN1cnJlbnQpIHsKKyAgICAgICAgICAg
IENhY2hlZFJlc291cmNlKiBwcmV2ID0gY3VycmVudC0+bV9wcmV2SW5BbGxSZXNvdXJjZXNMaXN0
OworICAgICAgICAgICAgaWYgKCFjdXJyZW50LT5oYXNDbGllbnRzKCkgJiYgIWN1cnJlbnQtPmlz
UHJlbG9hZGVkKCkgJiYgY3VycmVudC0+aXNMb2FkZWQoKSkgeworICAgICAgICAgICAgICAgIC8v
IERlc3Ryb3kgb3VyIGRlY29kZWQgZGF0YS4gVGhpcyB3aWxsIHJlbW92ZSB1cyBmcm9tIAorICAg
ICAgICAgICAgICAgIC8vIG1fbGl2ZURlY29kZWRSZXNvdXJjZXMsIGFuZCBwb3NzaWJseSBtb3Zl
IHVzIHRvIGEgZGlmZmVyZW50IAorICAgICAgICAgICAgICAgIC8vIExSVSBsaXN0IGluIG1fYWxs
UmVzb3VyY2VzLgorICAgICAgICAgICAgICAgIGN1cnJlbnQtPmRlc3Ryb3lEZWNvZGVkRGF0YSgp
OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICh0YXJnZXRTaXplICYmIG1f
ZGVhZFNpemUgPD0gdGFyZ2V0U2l6ZSkgeworICAgICAgICAgICAgICAgICAgICBtX2luUHJ1bmVE
ZWFkUmVzb3VyY2VzID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjdXJyZW50ID0gcHJldjsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIE5vdyBldmljdCBvYmplY3RzIGZyb20gdGhpcyBxdWV1
ZS4KKyAgICAgICAgY3VycmVudCA9IG1fYWxsUmVzb3VyY2VzW2ldLm1fdGFpbDsKKyAgICAgICAg
d2hpbGUgKGN1cnJlbnQpIHsKKyAgICAgICAgICAgIENhY2hlZFJlc291cmNlKiBwcmV2ID0gY3Vy
cmVudC0+bV9wcmV2SW5BbGxSZXNvdXJjZXNMaXN0OworICAgICAgICAgICAgaWYgKCFjdXJyZW50
LT5oYXNDbGllbnRzKCkgJiYgIWN1cnJlbnQtPmlzUHJlbG9hZGVkKCkgJiYgIWN1cnJlbnQtPmlz
Q2FjaGVWYWxpZGF0b3IoKSkgeworICAgICAgICAgICAgICAgIGlmICghbWFrZVJlc291cmNlUHVy
Z2VhYmxlKGN1cnJlbnQpKQorICAgICAgICAgICAgICAgICAgICBldmljdChjdXJyZW50KTsKKwor
ICAgICAgICAgICAgICAgIC8vIElmIGV2aWN0KCkgY2F1c2VkIHBydW5lRGVhZFJlc291cmNlcygp
IHRvIGJlIHJlLWVudGVyZWQsIGJhaWwgb3V0LiBUaGlzIGNhbiBoYXBwZW4gd2hlbiByZW1vdmlu
ZyBhbgorICAgICAgICAgICAgICAgIC8vIFNWRyBDYWNoZWRJbWFnZSB0aGF0IGhhcyBzdWJyZXNv
dXJjZXMuCisgICAgICAgICAgICAgICAgaWYgKCFtX2luUHJ1bmVEZWFkUmVzb3VyY2VzKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBpZiAodGFyZ2V0U2l6
ZSAmJiBtX2RlYWRTaXplIDw9IHRhcmdldFNpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9p
blBydW5lRGVhZFJlc291cmNlcyA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgY3VycmVudCA9
IHByZXY7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAvLyBTaHJpbmsgdGhlIHZl
Y3RvciBiYWNrIGRvd24gc28gd2UgZG9uJ3Qgd2FzdGUgdGltZSBpbnNwZWN0aW5nCisgICAgICAg
IC8vIGVtcHR5IExSVSBsaXN0cyBvbiBmdXR1cmUgcHJ1bmVzLgorICAgICAgICBpZiAobV9hbGxS
ZXNvdXJjZXNbaV0ubV9oZWFkKQorICAgICAgICAgICAgY2FuU2hyaW5rTFJVTGlzdHMgPSBmYWxz
ZTsKKyAgICAgICAgZWxzZSBpZiAoY2FuU2hyaW5rTFJVTGlzdHMpCisgICAgICAgICAgICBtX2Fs
bFJlc291cmNlcy5yZXNpemUoaSk7CisgICAgfQorICAgIG1faW5QcnVuZURlYWRSZXNvdXJjZXMg
PSBmYWxzZTsKK30KKwordm9pZCBDYWNoZTo6c2V0Q2FwYWNpdGllcyh1bnNpZ25lZCBtaW5EZWFk
Qnl0ZXMsIHVuc2lnbmVkIG1heERlYWRCeXRlcywgdW5zaWduZWQgdG90YWxCeXRlcykKK3sKKyAg
ICBBU1NFUlQobWluRGVhZEJ5dGVzIDw9IG1heERlYWRCeXRlcyk7CisgICAgQVNTRVJUKG1heERl
YWRCeXRlcyA8PSB0b3RhbEJ5dGVzKTsKKyAgICBtX21pbkRlYWRDYXBhY2l0eSA9IG1pbkRlYWRC
eXRlczsKKyAgICBtX21heERlYWRDYXBhY2l0eSA9IG1heERlYWRCeXRlczsKKyAgICBtX2NhcGFj
aXR5ID0gdG90YWxCeXRlczsKKyAgICBwcnVuZSgpOworfQorCitib29sIENhY2hlOjptYWtlUmVz
b3VyY2VQdXJnZWFibGUoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQoreworICAgIGlmICghQ2Fj
aGU6OnNob3VsZE1ha2VSZXNvdXJjZVB1cmdlYWJsZU9uRXZpY3Rpb24oKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWYgKCFyZXNvdXJjZS0+aW5DYWNoZSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAocmVzb3VyY2UtPmlzUHVyZ2VhYmxlKCkpCisgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgaWYgKCFyZXNvdXJjZS0+aXNTYWZlVG9NYWtlUHVyZ2VhYmxlKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghcmVzb3VyY2UtPm1ha2VQdXJnZWFi
bGUodHJ1ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGFkanVzdFNpemUocmVzb3Vy
Y2UtPmhhc0NsaWVudHMoKSwgLXN0YXRpY19jYXN0PGludD4ocmVzb3VyY2UtPnNpemUoKSkpOwor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQ2FjaGU6OmV2aWN0KENhY2hlZFJlc291cmNl
KiByZXNvdXJjZSkKK3sKKyAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiRXZpY3RpbmcgcmVzb3Vy
Y2UgJXAgZm9yICclcycgZnJvbSBjYWNoZSIsIHJlc291cmNlLCByZXNvdXJjZS0+dXJsKCkubGF0
aW4xKCkuZGF0YSgpKTsKKyAgICAvLyBUaGUgcmVzb3VyY2UgbWF5IGhhdmUgYWxyZWFkeSBiZWVu
IHJlbW92ZWQgYnkgc29tZW9uZSBvdGhlciB0aGFuIG91ciBjYWxsZXIsCisgICAgLy8gd2hvIG5l
ZWRlZCBhIGZyZXNoIGNvcHkgZm9yIGEgcmVsb2FkLiBTZWUgPGh0dHA6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNDc5I2M2Pi4KKyAgICBpZiAocmVzb3VyY2UtPmluQ2FjaGUo
KSkgeworICAgICAgICAvLyBSZW1vdmUgZnJvbSB0aGUgcmVzb3VyY2UgbWFwLgorICAgICAgICBt
X3Jlc291cmNlcy5yZW1vdmUocmVzb3VyY2UtPnVybCgpKTsKKyAgICAgICAgcmVzb3VyY2UtPnNl
dEluQ2FjaGUoZmFsc2UpOworCisgICAgICAgIC8vIFJlbW92ZSBmcm9tIHRoZSBhcHByb3ByaWF0
ZSBMUlUgbGlzdC4KKyAgICAgICAgcmVtb3ZlRnJvbUxSVUxpc3QocmVzb3VyY2UpOworICAgICAg
ICByZW1vdmVGcm9tTGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0KHJlc291cmNlKTsKKworICAgICAg
ICAvLyBJZiB0aGUgcmVzb3VyY2Ugd2FzIHB1cmdlZCwgaXQgbWVhbnMgd2UgaGFkIGFscmVhZHkg
ZGVjcmVtZW50ZWQgdGhlIHNpemUgd2hlbiB3ZSBtYWRlIHRoZQorICAgICAgICAvLyByZXNvdXJj
ZSBwdXJnZWFibGUgaW4gbWFrZVJlc291cmNlUHVyZ2VhYmxlKCkuIFNvIGFkanVzdCB0aGUgc2l6
ZSBpZiB3ZSBhcmUgZXZpY3RpbmcgYQorICAgICAgICAvLyByZXNvdXJjZSB0aGF0IHdhcyBub3Qg
bWFya2VkIGFzIHB1cmdlYWJsZS4KKyAgICAgICAgaWYgKCFDYWNoZTo6c2hvdWxkTWFrZVJlc291
cmNlUHVyZ2VhYmxlT25FdmljdGlvbigpIHx8ICFyZXNvdXJjZS0+aXNQdXJnZWFibGUoKSkKKyAg
ICAgICAgICAgIGFkanVzdFNpemUocmVzb3VyY2UtPmhhc0NsaWVudHMoKSwgLXN0YXRpY19jYXN0
PGludD4ocmVzb3VyY2UtPnNpemUoKSkpOworICAgIH0gZWxzZQorICAgICAgICBBU1NFUlQobV9y
ZXNvdXJjZXMuZ2V0KHJlc291cmNlLT51cmwoKSkgIT0gcmVzb3VyY2UpOworCisgICAgaWYgKHJl
c291cmNlLT5jYW5EZWxldGUoKSkKKyAgICAgICAgZGVsZXRlIHJlc291cmNlOworfQorCit2b2lk
IENhY2hlOjphZGRDYWNoZWRSZXNvdXJjZUxvYWRlcihDYWNoZWRSZXNvdXJjZUxvYWRlciogY2Fj
aGVkUmVzb3VyY2VMb2FkZXIpCit7CisgICAgbV9jYWNoZWRSZXNvdXJjZUxvYWRlcnMuYWRkKGNh
Y2hlZFJlc291cmNlTG9hZGVyKTsKK30KKwordm9pZCBDYWNoZTo6cmVtb3ZlQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyKQorewor
ICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXJzLnJlbW92ZShjYWNoZWRSZXNvdXJjZUxvYWRlcik7
Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgZmFzdExvZzIodW5zaWduZWQgaSkKK3sKKyAg
ICB1bnNpZ25lZCBsb2cyID0gMDsKKyAgICBpZiAoaSAmIChpIC0gMSkpCisgICAgICAgIGxvZzIg
Kz0gMTsKKyAgICBpZiAoaSA+PiAxNikKKyAgICAgICAgbG9nMiArPSAxNiwgaSA+Pj0gMTY7Cisg
ICAgaWYgKGkgPj4gOCkKKyAgICAgICAgbG9nMiArPSA4LCBpID4+PSA4OworICAgIGlmIChpID4+
IDQpCisgICAgICAgIGxvZzIgKz0gNCwgaSA+Pj0gNDsKKyAgICBpZiAoaSA+PiAyKQorICAgICAg
ICBsb2cyICs9IDIsIGkgPj49IDI7CisgICAgaWYgKGkgPj4gMSkKKyAgICAgICAgbG9nMiArPSAx
OworICAgIHJldHVybiBsb2cyOworfQorCitDYWNoZTo6TFJVTGlzdCogQ2FjaGU6OmxydUxpc3RG
b3IoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQoreworICAgIHVuc2lnbmVkIGFjY2Vzc0NvdW50
ID0gbWF4KHJlc291cmNlLT5hY2Nlc3NDb3VudCgpLCAxVSk7CisgICAgdW5zaWduZWQgcXVldWVJ
bmRleCA9IGZhc3RMb2cyKHJlc291cmNlLT5zaXplKCkgLyBhY2Nlc3NDb3VudCk7CisjaWZuZGVm
IE5ERUJVRworICAgIHJlc291cmNlLT5tX2xydUluZGV4ID0gcXVldWVJbmRleDsKKyNlbmRpZgor
ICAgIGlmIChtX2FsbFJlc291cmNlcy5zaXplKCkgPD0gcXVldWVJbmRleCkKKyAgICAgICAgbV9h
bGxSZXNvdXJjZXMuZ3JvdyhxdWV1ZUluZGV4ICsgMSk7CisgICAgcmV0dXJuICZtX2FsbFJlc291
cmNlc1txdWV1ZUluZGV4XTsKK30KKwordm9pZCBDYWNoZTo6cmVtb3ZlRnJvbUxSVUxpc3QoQ2Fj
aGVkUmVzb3VyY2UqIHJlc291cmNlKQoreworICAgIC8vIElmIHdlJ3ZlIG5ldmVyIGJlZW4gYWNj
ZXNzZWQsIHRoZW4gd2UncmUgYnJhbmQgbmV3IGFuZCBub3QgaW4gYW55IGxpc3QuCisgICAgaWYg
KHJlc291cmNlLT5hY2Nlc3NDb3VudCgpID09IDApCisgICAgICAgIHJldHVybjsKKworI2lmICFB
U1NFUlRfRElTQUJMRUQKKyAgICB1bnNpZ25lZCBvbGRMaXN0SW5kZXggPSByZXNvdXJjZS0+bV9s
cnVJbmRleDsKKyNlbmRpZgorCisgICAgTFJVTGlzdCogbGlzdCA9IGxydUxpc3RGb3IocmVzb3Vy
Y2UpOworCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBsaXN0
IHdlIGdvdCBpcyB0aGUgbGlzdCB3ZSB3YW50LgorICAgIEFTU0VSVChyZXNvdXJjZS0+bV9scnVJ
bmRleCA9PSBvbGRMaXN0SW5kZXgpOworCisgICAgLy8gVmVyaWZ5IHRoYXQgd2UgYXJlIGluIGZh
Y3QgaW4gdGhpcyBsaXN0LgorICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKKyAgICBmb3IgKENhY2hl
ZFJlc291cmNlKiBjdXJyZW50ID0gbGlzdC0+bV9oZWFkOyBjdXJyZW50OyBjdXJyZW50ID0gY3Vy
cmVudC0+bV9uZXh0SW5BbGxSZXNvdXJjZXNMaXN0KSB7CisgICAgICAgIGlmIChjdXJyZW50ID09
IHJlc291cmNlKSB7CisgICAgICAgICAgICBmb3VuZCA9IHRydWU7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgIH0KKyAgICBBU1NFUlQoZm91bmQpOworI2VuZGlmCisKKyAgICBD
YWNoZWRSZXNvdXJjZSogbmV4dCA9IHJlc291cmNlLT5tX25leHRJbkFsbFJlc291cmNlc0xpc3Q7
CisgICAgQ2FjaGVkUmVzb3VyY2UqIHByZXYgPSByZXNvdXJjZS0+bV9wcmV2SW5BbGxSZXNvdXJj
ZXNMaXN0OworICAgIAorICAgIGlmIChuZXh0ID09IDAgJiYgcHJldiA9PSAwICYmIGxpc3QtPm1f
aGVhZCAhPSByZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHJlc291cmNlLT5t
X25leHRJbkFsbFJlc291cmNlc0xpc3QgPSAwOworICAgIHJlc291cmNlLT5tX3ByZXZJbkFsbFJl
c291cmNlc0xpc3QgPSAwOworICAgIAorICAgIGlmIChuZXh0KQorICAgICAgICBuZXh0LT5tX3By
ZXZJbkFsbFJlc291cmNlc0xpc3QgPSBwcmV2OworICAgIGVsc2UgaWYgKGxpc3QtPm1fdGFpbCA9
PSByZXNvdXJjZSkKKyAgICAgICAgbGlzdC0+bV90YWlsID0gcHJldjsKKworICAgIGlmIChwcmV2
KQorICAgICAgICBwcmV2LT5tX25leHRJbkFsbFJlc291cmNlc0xpc3QgPSBuZXh0OworICAgIGVs
c2UgaWYgKGxpc3QtPm1faGVhZCA9PSByZXNvdXJjZSkKKyAgICAgICAgbGlzdC0+bV9oZWFkID0g
bmV4dDsKK30KKwordm9pZCBDYWNoZTo6aW5zZXJ0SW5MUlVMaXN0KENhY2hlZFJlc291cmNlKiBy
ZXNvdXJjZSkKK3sKKyAgICAvLyBNYWtlIHN1cmUgd2UgYXJlbid0IGluIHNvbWUgbGlzdCBhbHJl
YWR5LgorICAgIEFTU0VSVCghcmVzb3VyY2UtPm1fbmV4dEluQWxsUmVzb3VyY2VzTGlzdCAmJiAh
cmVzb3VyY2UtPm1fcHJldkluQWxsUmVzb3VyY2VzTGlzdCk7CisgICAgQVNTRVJUKHJlc291cmNl
LT5pbkNhY2hlKCkpOworICAgIEFTU0VSVChyZXNvdXJjZS0+YWNjZXNzQ291bnQoKSA+IDApOwor
ICAgIAorICAgIExSVUxpc3QqIGxpc3QgPSBscnVMaXN0Rm9yKHJlc291cmNlKTsKKworICAgIHJl
c291cmNlLT5tX25leHRJbkFsbFJlc291cmNlc0xpc3QgPSBsaXN0LT5tX2hlYWQ7CisgICAgaWYg
KGxpc3QtPm1faGVhZCkKKyAgICAgICAgbGlzdC0+bV9oZWFkLT5tX3ByZXZJbkFsbFJlc291cmNl
c0xpc3QgPSByZXNvdXJjZTsKKyAgICBsaXN0LT5tX2hlYWQgPSByZXNvdXJjZTsKKyAgICAKKyAg
ICBpZiAoIXJlc291cmNlLT5tX25leHRJbkFsbFJlc291cmNlc0xpc3QpCisgICAgICAgIGxpc3Qt
Pm1fdGFpbCA9IHJlc291cmNlOworICAgICAgICAKKyNpZm5kZWYgTkRFQlVHCisgICAgLy8gVmVy
aWZ5IHRoYXQgd2UgYXJlIGluIG5vdyBpbiB0aGUgbGlzdCBsaWtlIHdlIHNob3VsZCBiZS4KKyAg
ICBsaXN0ID0gbHJ1TGlzdEZvcihyZXNvdXJjZSk7CisgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwor
ICAgIGZvciAoQ2FjaGVkUmVzb3VyY2UqIGN1cnJlbnQgPSBsaXN0LT5tX2hlYWQ7IGN1cnJlbnQ7
IGN1cnJlbnQgPSBjdXJyZW50LT5tX25leHRJbkFsbFJlc291cmNlc0xpc3QpIHsKKyAgICAgICAg
aWYgKGN1cnJlbnQgPT0gcmVzb3VyY2UpIHsKKyAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIEFTU0VSVChmb3VuZCk7Cisj
ZW5kaWYKKworfQorCit2b2lkIENhY2hlOjpyZXNvdXJjZUFjY2Vzc2VkKENhY2hlZFJlc291cmNl
KiByZXNvdXJjZSkKK3sKKyAgICBBU1NFUlQocmVzb3VyY2UtPmluQ2FjaGUoKSk7CisgICAgCisg
ICAgLy8gTmVlZCB0byBtYWtlIHN1cmUgdG8gcmVtb3ZlIGJlZm9yZSB3ZSBpbmNyZWFzZSB0aGUg
YWNjZXNzIGNvdW50LCBzaW5jZQorICAgIC8vIHRoZSBxdWV1ZSB3aWxsIHBvc3NpYmx5IGNoYW5n
ZS4KKyAgICByZW1vdmVGcm9tTFJVTGlzdChyZXNvdXJjZSk7CisgICAgCisgICAgLy8gSWYgdGhp
cyBpcyB0aGUgZmlyc3QgdGltZSB0aGUgcmVzb3VyY2UgaGFzIGJlZW4gYWNjZXNzZWQsIGFkanVz
dCB0aGUgc2l6ZSBvZiB0aGUgY2FjaGUgdG8gYWNjb3VudCBmb3IgaXRzIGluaXRpYWwgc2l6ZS4K
KyAgICBpZiAoIXJlc291cmNlLT5hY2Nlc3NDb3VudCgpKQorICAgICAgICBhZGp1c3RTaXplKHJl
c291cmNlLT5oYXNDbGllbnRzKCksIHJlc291cmNlLT5zaXplKCkpOworICAgIAorICAgIC8vIEFk
ZCB0byBvdXIgYWNjZXNzIGNvdW50LgorICAgIHJlc291cmNlLT5pbmNyZWFzZUFjY2Vzc0NvdW50
KCk7CisgICAgCisgICAgLy8gTm93IGluc2VydCBpbnRvIHRoZSBuZXcgcXVldWUuCisgICAgaW5z
ZXJ0SW5MUlVMaXN0KHJlc291cmNlKTsKK30KKwordm9pZCBDYWNoZTo6cmVtb3ZlRnJvbUxpdmVE
ZWNvZGVkUmVzb3VyY2VzTGlzdChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit7CisgICAgLy8g
SWYgd2UndmUgbmV2ZXIgYmVlbiBhY2Nlc3NlZCwgdGhlbiB3ZSdyZSBicmFuZCBuZXcgYW5kIG5v
dCBpbiBhbnkgbGlzdC4KKyAgICBpZiAoIXJlc291cmNlLT5tX2luTGl2ZURlY29kZWRSZXNvdXJj
ZXNMaXN0KQorICAgICAgICByZXR1cm47CisgICAgcmVzb3VyY2UtPm1faW5MaXZlRGVjb2RlZFJl
c291cmNlc0xpc3QgPSBmYWxzZTsKKworI2lmbmRlZiBOREVCVUcKKyAgICAvLyBWZXJpZnkgdGhh
dCB3ZSBhcmUgaW4gZmFjdCBpbiB0aGlzIGxpc3QuCisgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwor
ICAgIGZvciAoQ2FjaGVkUmVzb3VyY2UqIGN1cnJlbnQgPSBtX2xpdmVEZWNvZGVkUmVzb3VyY2Vz
Lm1faGVhZDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm1fbmV4dEluTGl2ZVJlc291cmNl
c0xpc3QpIHsKKyAgICAgICAgaWYgKGN1cnJlbnQgPT0gcmVzb3VyY2UpIHsKKyAgICAgICAgICAg
IGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAg
IEFTU0VSVChmb3VuZCk7CisjZW5kaWYKKworICAgIENhY2hlZFJlc291cmNlKiBuZXh0ID0gcmVz
b3VyY2UtPm1fbmV4dEluTGl2ZVJlc291cmNlc0xpc3Q7CisgICAgQ2FjaGVkUmVzb3VyY2UqIHBy
ZXYgPSByZXNvdXJjZS0+bV9wcmV2SW5MaXZlUmVzb3VyY2VzTGlzdDsKKyAgICAKKyAgICBpZiAo
bmV4dCA9PSAwICYmIHByZXYgPT0gMCAmJiBtX2xpdmVEZWNvZGVkUmVzb3VyY2VzLm1faGVhZCAh
PSByZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHJlc291cmNlLT5tX25leHRJ
bkxpdmVSZXNvdXJjZXNMaXN0ID0gMDsKKyAgICByZXNvdXJjZS0+bV9wcmV2SW5MaXZlUmVzb3Vy
Y2VzTGlzdCA9IDA7CisgICAgCisgICAgaWYgKG5leHQpCisgICAgICAgIG5leHQtPm1fcHJldklu
TGl2ZVJlc291cmNlc0xpc3QgPSBwcmV2OworICAgIGVsc2UgaWYgKG1fbGl2ZURlY29kZWRSZXNv
dXJjZXMubV90YWlsID09IHJlc291cmNlKQorICAgICAgICBtX2xpdmVEZWNvZGVkUmVzb3VyY2Vz
Lm1fdGFpbCA9IHByZXY7CisKKyAgICBpZiAocHJldikKKyAgICAgICAgcHJldi0+bV9uZXh0SW5M
aXZlUmVzb3VyY2VzTGlzdCA9IG5leHQ7CisgICAgZWxzZSBpZiAobV9saXZlRGVjb2RlZFJlc291
cmNlcy5tX2hlYWQgPT0gcmVzb3VyY2UpCisgICAgICAgIG1fbGl2ZURlY29kZWRSZXNvdXJjZXMu
bV9oZWFkID0gbmV4dDsKK30KKwordm9pZCBDYWNoZTo6aW5zZXJ0SW5MaXZlRGVjb2RlZFJlc291
cmNlc0xpc3QoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQoreworICAgIC8vIE1ha2Ugc3VyZSB3
ZSBhcmVuJ3QgaW4gdGhlIGxpc3QgYWxyZWFkeS4KKyAgICBBU1NFUlQoIXJlc291cmNlLT5tX25l
eHRJbkxpdmVSZXNvdXJjZXNMaXN0ICYmICFyZXNvdXJjZS0+bV9wcmV2SW5MaXZlUmVzb3VyY2Vz
TGlzdCAmJiAhcmVzb3VyY2UtPm1faW5MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QpOworICAgIHJl
c291cmNlLT5tX2luTGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0ID0gdHJ1ZTsKKworICAgIHJlc291
cmNlLT5tX25leHRJbkxpdmVSZXNvdXJjZXNMaXN0ID0gbV9saXZlRGVjb2RlZFJlc291cmNlcy5t
X2hlYWQ7CisgICAgaWYgKG1fbGl2ZURlY29kZWRSZXNvdXJjZXMubV9oZWFkKQorICAgICAgICBt
X2xpdmVEZWNvZGVkUmVzb3VyY2VzLm1faGVhZC0+bV9wcmV2SW5MaXZlUmVzb3VyY2VzTGlzdCA9
IHJlc291cmNlOworICAgIG1fbGl2ZURlY29kZWRSZXNvdXJjZXMubV9oZWFkID0gcmVzb3VyY2U7
CisgICAgCisgICAgaWYgKCFyZXNvdXJjZS0+bV9uZXh0SW5MaXZlUmVzb3VyY2VzTGlzdCkKKyAg
ICAgICAgbV9saXZlRGVjb2RlZFJlc291cmNlcy5tX3RhaWwgPSByZXNvdXJjZTsKKyAgICAgICAg
CisjaWZuZGVmIE5ERUJVRworICAgIC8vIFZlcmlmeSB0aGF0IHdlIGFyZSBpbiBub3cgaW4gdGhl
IGxpc3QgbGlrZSB3ZSBzaG91bGQgYmUuCisgICAgYm9vbCBmb3VuZCA9IGZhbHNlOworICAgIGZv
ciAoQ2FjaGVkUmVzb3VyY2UqIGN1cnJlbnQgPSBtX2xpdmVEZWNvZGVkUmVzb3VyY2VzLm1faGVh
ZDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm1fbmV4dEluTGl2ZVJlc291cmNlc0xpc3Qp
IHsKKyAgICAgICAgaWYgKGN1cnJlbnQgPT0gcmVzb3VyY2UpIHsKKyAgICAgICAgICAgIGZvdW5k
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIEFTU0VS
VChmb3VuZCk7CisjZW5kaWYKKworfQorCit2b2lkIENhY2hlOjphZGRUb0xpdmVSZXNvdXJjZXNT
aXplKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3sKKyAgICBtX2xpdmVTaXplICs9IHJlc291
cmNlLT5zaXplKCk7CisgICAgbV9kZWFkU2l6ZSAtPSByZXNvdXJjZS0+c2l6ZSgpOworfQorCit2
b2lkIENhY2hlOjpyZW1vdmVGcm9tTGl2ZVJlc291cmNlc1NpemUoQ2FjaGVkUmVzb3VyY2UqIHJl
c291cmNlKQoreworICAgIG1fbGl2ZVNpemUgLT0gcmVzb3VyY2UtPnNpemUoKTsKKyAgICBtX2Rl
YWRTaXplICs9IHJlc291cmNlLT5zaXplKCk7Cit9CisKK3ZvaWQgQ2FjaGU6OmFkanVzdFNpemUo
Ym9vbCBsaXZlLCBpbnQgZGVsdGEpCit7CisgICAgaWYgKGxpdmUpIHsKKyAgICAgICAgQVNTRVJU
KGRlbHRhID49IDAgfHwgKChpbnQpbV9saXZlU2l6ZSArIGRlbHRhID49IDApKTsKKyAgICAgICAg
bV9saXZlU2l6ZSArPSBkZWx0YTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQoZGVsdGEg
Pj0gMCB8fCAoKGludCltX2RlYWRTaXplICsgZGVsdGEgPj0gMCkpOworICAgICAgICBtX2RlYWRT
aXplICs9IGRlbHRhOworICAgIH0KK30KKwordm9pZCBDYWNoZTo6VHlwZVN0YXRpc3RpYzo6YWRk
UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIG8pCit7CisgICAgYm9vbCBwdXJnZWQgPSBvLT53YXNQ
dXJnZWQoKTsKKyAgICBib29sIHB1cmdlYWJsZSA9IG8tPmlzUHVyZ2VhYmxlKCkgJiYgIXB1cmdl
ZDsgCisgICAgaW50IHBhZ2VTaXplID0gKG8tPmVuY29kZWRTaXplKCkgKyBvLT5vdmVyaGVhZFNp
emUoKSArIDQwOTUpICYgfjQwOTU7CisgICAgY291bnQrKzsKKyAgICBzaXplICs9IHB1cmdlZCA/
IDAgOiBvLT5zaXplKCk7IAorICAgIGxpdmVTaXplICs9IG8tPmhhc0NsaWVudHMoKSA/IG8tPnNp
emUoKSA6IDA7CisgICAgZGVjb2RlZFNpemUgKz0gby0+ZGVjb2RlZFNpemUoKTsKKyAgICBwdXJn
ZWFibGVTaXplICs9IHB1cmdlYWJsZSA/IHBhZ2VTaXplIDogMDsKKyAgICBwdXJnZWRTaXplICs9
IHB1cmdlZCA/IHBhZ2VTaXplIDogMDsKK30KKworQ2FjaGU6OlN0YXRpc3RpY3MgQ2FjaGU6Omdl
dFN0YXRpc3RpY3MoKQoreworICAgIFN0YXRpc3RpY3Mgc3RhdHM7CisgICAgQ2FjaGVkUmVzb3Vy
Y2VNYXA6Oml0ZXJhdG9yIGUgPSBtX3Jlc291cmNlcy5lbmQoKTsKKyAgICBmb3IgKENhY2hlZFJl
c291cmNlTWFwOjppdGVyYXRvciBpID0gbV9yZXNvdXJjZXMuYmVnaW4oKTsgaSAhPSBlOyArK2kp
IHsKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gaS0+c2Vjb25kOworICAgICAg
ICBzd2l0Y2ggKHJlc291cmNlLT50eXBlKCkpIHsKKyAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJj
ZTo6SW1hZ2VSZXNvdXJjZToKKyAgICAgICAgICAgIHN0YXRzLmltYWdlcy5hZGRSZXNvdXJjZShy
ZXNvdXJjZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJj
ZTo6Q1NTU3R5bGVTaGVldDoKKyAgICAgICAgICAgIHN0YXRzLmNzc1N0eWxlU2hlZXRzLmFkZFJl
c291cmNlKHJlc291cmNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENhY2hl
ZFJlc291cmNlOjpTY3JpcHQ6CisgICAgICAgICAgICBzdGF0cy5zY3JpcHRzLmFkZFJlc291cmNl
KHJlc291cmNlKTsKKyAgICAgICAgICAgIGJyZWFrOworI2lmIEVOQUJMRShYU0xUKQorICAgICAg
ICBjYXNlIENhY2hlZFJlc291cmNlOjpYU0xTdHlsZVNoZWV0OgorICAgICAgICAgICAgc3RhdHMu
eHNsU3R5bGVTaGVldHMuYWRkUmVzb3VyY2UocmVzb3VyY2UpOworICAgICAgICAgICAgYnJlYWs7
CisjZW5kaWYKKyAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlOgorICAg
ICAgICAgICAgc3RhdHMuZm9udHMuYWRkUmVzb3VyY2UocmVzb3VyY2UpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgIH0KKyAgICByZXR1cm4gc3RhdHM7Cit9CisKK3ZvaWQgQ2FjaGU6OnNldERpc2FibGVkKGJv
b2wgZGlzYWJsZWQpCit7CisgICAgbV9kaXNhYmxlZCA9IGRpc2FibGVkOworICAgIGlmICghbV9k
aXNhYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yICg7OykgeworICAgICAgICBDYWNo
ZWRSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaSA9IG1fcmVzb3VyY2VzLmJlZ2luKCk7CisgICAgICAg
IGlmIChpID09IG1fcmVzb3VyY2VzLmVuZCgpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGV2aWN0KGktPnNlY29uZCk7CisgICAgfQorfQorCisjaWZuZGVmIE5ERUJVRwordm9pZCBDYWNo
ZTo6ZHVtcFN0YXRzKCkKK3sKKyAgICBTdGF0aXN0aWNzIHMgPSBnZXRTdGF0aXN0aWNzKCk7Cisg
ICAgcHJpbnRmKCIlLTEzcyAlLTEzcyAlLTEzcyAlLTEzcyAlLTEzcyAlLTEzcyAlLTEzc1xuIiwg
IiIsICJDb3VudCIsICJTaXplIiwgIkxpdmVTaXplIiwgIkRlY29kZWRTaXplIiwgIlB1cmdlYWJs
ZVNpemUiLCAiUHVyZ2VkU2l6ZSIpOworICAgIHByaW50ZigiJS0xM3MgJS0xM3MgJS0xM3MgJS0x
M3MgJS0xM3MgJS0xM3MgJS0xM3NcbiIsICItLS0tLS0tLS0tLS0tIiwgIi0tLS0tLS0tLS0tLS0i
LCAiLS0tLS0tLS0tLS0tLSIsICItLS0tLS0tLS0tLS0tIiwgIi0tLS0tLS0tLS0tLS0iLCAiLS0t
LS0tLS0tLS0tLSIsICItLS0tLS0tLS0tLS0tIik7CisgICAgcHJpbnRmKCIlLTEzcyAlMTNkICUx
M2QgJTEzZCAlMTNkICUxM2QgJTEzZFxuIiwgIkltYWdlcyIsIHMuaW1hZ2VzLmNvdW50LCBzLmlt
YWdlcy5zaXplLCBzLmltYWdlcy5saXZlU2l6ZSwgcy5pbWFnZXMuZGVjb2RlZFNpemUsIHMuaW1h
Z2VzLnB1cmdlYWJsZVNpemUsIHMuaW1hZ2VzLnB1cmdlZFNpemUpOworICAgIHByaW50ZigiJS0x
M3MgJTEzZCAlMTNkICUxM2QgJTEzZCAlMTNkICUxM2RcbiIsICJDU1MiLCBzLmNzc1N0eWxlU2hl
ZXRzLmNvdW50LCBzLmNzc1N0eWxlU2hlZXRzLnNpemUsIHMuY3NzU3R5bGVTaGVldHMubGl2ZVNp
emUsIHMuY3NzU3R5bGVTaGVldHMuZGVjb2RlZFNpemUsIHMuY3NzU3R5bGVTaGVldHMucHVyZ2Vh
YmxlU2l6ZSwgcy5jc3NTdHlsZVNoZWV0cy5wdXJnZWRTaXplKTsKKyNpZiBFTkFCTEUoWFNMVCkK
KyAgICBwcmludGYoIiUtMTNzICUxM2QgJTEzZCAlMTNkICUxM2QgJTEzZCAlMTNkXG4iLCAiWFNM
Iiwgcy54c2xTdHlsZVNoZWV0cy5jb3VudCwgcy54c2xTdHlsZVNoZWV0cy5zaXplLCBzLnhzbFN0
eWxlU2hlZXRzLmxpdmVTaXplLCBzLnhzbFN0eWxlU2hlZXRzLmRlY29kZWRTaXplLCBzLnhzbFN0
eWxlU2hlZXRzLnB1cmdlYWJsZVNpemUsIHMueHNsU3R5bGVTaGVldHMucHVyZ2VkU2l6ZSk7Cisj
ZW5kaWYKKyAgICBwcmludGYoIiUtMTNzICUxM2QgJTEzZCAlMTNkICUxM2QgJTEzZCAlMTNkXG4i
LCAiSmF2YVNjcmlwdCIsIHMuc2NyaXB0cy5jb3VudCwgcy5zY3JpcHRzLnNpemUsIHMuc2NyaXB0
cy5saXZlU2l6ZSwgcy5zY3JpcHRzLmRlY29kZWRTaXplLCBzLnNjcmlwdHMucHVyZ2VhYmxlU2l6
ZSwgcy5zY3JpcHRzLnB1cmdlZFNpemUpOworICAgIHByaW50ZigiJS0xM3MgJTEzZCAlMTNkICUx
M2QgJTEzZCAlMTNkICUxM2RcbiIsICJGb250cyIsIHMuZm9udHMuY291bnQsIHMuZm9udHMuc2l6
ZSwgcy5mb250cy5saXZlU2l6ZSwgcy5mb250cy5kZWNvZGVkU2l6ZSwgcy5mb250cy5wdXJnZWFi
bGVTaXplLCBzLmZvbnRzLnB1cmdlZFNpemUpOworICAgIHByaW50ZigiJS0xM3MgJS0xM3MgJS0x
M3MgJS0xM3MgJS0xM3MgJS0xM3MgJS0xM3NcblxuIiwgIi0tLS0tLS0tLS0tLS0iLCAiLS0tLS0t
LS0tLS0tLSIsICItLS0tLS0tLS0tLS0tIiwgIi0tLS0tLS0tLS0tLS0iLCAiLS0tLS0tLS0tLS0t
LSIsICItLS0tLS0tLS0tLS0tIiwgIi0tLS0tLS0tLS0tLS0iKTsKK30KKwordm9pZCBDYWNoZTo6
ZHVtcExSVUxpc3RzKGJvb2wgaW5jbHVkZUxpdmUpIGNvbnN0Cit7CisgICAgcHJpbnRmKCJMUlUt
U1AgbGlzdHMgaW4gZXZpY3Rpb24gb3JkZXIgKEtpbG9ieXRlcyBkZWNvZGVkLCBLaWxvYnl0ZXMg
ZW5jb2RlZCwgQWNjZXNzIGNvdW50LCBSZWZlcmVuY2VkLCBpc1B1cmdlYWJsZSwgd2FzUHVyZ2Vk
KTpcbiIpOworCisgICAgaW50IHNpemUgPSBtX2FsbFJlc291cmNlcy5zaXplKCk7CisgICAgZm9y
IChpbnQgaSA9IHNpemUgLSAxOyBpID49IDA7IGktLSkgeworICAgICAgICBwcmludGYoIlxuXG5M
aXN0ICVkOiAiLCBpKTsKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIGN1cnJlbnQgPSBtX2FsbFJl
c291cmNlc1tpXS5tX3RhaWw7CisgICAgICAgIHdoaWxlIChjdXJyZW50KSB7CisgICAgICAgICAg
ICBDYWNoZWRSZXNvdXJjZSogcHJldiA9IGN1cnJlbnQtPm1fcHJldkluQWxsUmVzb3VyY2VzTGlz
dDsKKyAgICAgICAgICAgIGlmIChpbmNsdWRlTGl2ZSB8fCAhY3VycmVudC0+aGFzQ2xpZW50cygp
KQorICAgICAgICAgICAgICAgIHByaW50ZigiKCUuMWZLLCAlLjFmSywgJXVBLCAlZFIsICVkLCAl
ZCk7ICIsIGN1cnJlbnQtPmRlY29kZWRTaXplKCkgLyAxMDI0LjBmLCAoY3VycmVudC0+ZW5jb2Rl
ZFNpemUoKSArIGN1cnJlbnQtPm92ZXJoZWFkU2l6ZSgpKSAvIDEwMjQuMGYsIGN1cnJlbnQtPmFj
Y2Vzc0NvdW50KCksIGN1cnJlbnQtPmhhc0NsaWVudHMoKSwgY3VycmVudC0+aXNQdXJnZWFibGUo
KSwgY3VycmVudC0+d2FzUHVyZ2VkKCkpOworCisgICAgICAgICAgICBjdXJyZW50ID0gcHJldjsK
KyAgICAgICAgfQorICAgIH0KK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBXZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlLmgJKHJldmlzaW9uIDcxNDg4KQkoZnJvbSBXZWJDb3JlL2xvYWRl
ci9DYWNoZS5oOjcxNDg4KQorKysgV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDIzNSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDE5OTggTGFy
cyBLbm9sbCAoa25vbGxAbXBpLWhkLm1wZy5kZSkKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDEgRGly
ayBNdWVsbGVyIDxtdWVsbGVyQGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisKKyAgICBU
aGlzIGNsYXNzIHByb3ZpZGVzIGFsbCBmdW5jdGlvbmFsaXR5IG5lZWRlZCBmb3IgbG9hZGluZyBp
bWFnZXMsIHN0eWxlIHNoZWV0cyBhbmQgaHRtbAorICAgIHBhZ2VzIGZyb20gdGhlIHdlYi4gSXQg
aGFzIGEgbWVtb3J5IGNhY2hlIGZvciB0aGVzZSBvYmplY3RzLgorKi8KKworI2lmbmRlZiBDYWNo
ZV9oCisjZGVmaW5lIENhY2hlX2gKKworI2luY2x1ZGUgIkNhY2hlUG9saWN5LmgiCisjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1
ZGUgImxvYWRlci5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSAgeworCitjbGFzcyBDYWNoZWRDU1NTdHlsZVNoZWV0OworY2xhc3MgQ2FjaGVkUmVzb3Vy
Y2U7CitjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKK2NsYXNzIEtVUkw7CisKKy8vIFRoaXMg
Y2FjaGUgaG9sZHMgc3VicmVzb3VyY2VzIHVzZWQgYnkgV2ViIHBhZ2VzOiBpbWFnZXMsIHNjcmlw
dHMsIHN0eWxlc2hlZXRzLCBldGMuCisKKy8vIFRoZSBjYWNoZSBrZWVwcyBhIGZsZXhpYmxlIGJ1
dCBib3VuZGVkIHdpbmRvdyBvZiBkZWFkIHJlc291cmNlcyB0aGF0IGdyb3dzL3Nocmlua3MgCisv
LyBkZXBlbmRpbmcgb24gdGhlIGxpdmUgcmVzb3VyY2UgbG9hZC4gSGVyZSdzIGFuIGV4YW1wbGUg
b2YgY2FjaGUgZ3Jvd3RoIG92ZXIgdGltZSwKKy8vIHdpdGggYSBtaW4gZGVhZCByZXNvdXJjZSBj
YXBhY2l0eSBvZiAyNSUgYW5kIGEgbWF4IGRlYWQgcmVzb3VyY2UgY2FwYWNpdHkgb2YgNTAlOgor
CisvLyAgICAgICAgfC0tLS0tfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlYWQ6IC0K
Ky8vICAgICAgICB8LS0tLS0tLS0tLXwgICAgICAgICAgICAgICAgICAgICAgICAgTGl2ZTogKwor
Ly8gICAgICAtLXwtLS0tLS0tLS0tfCAgICAgICAgICAgICAgICAgICAgICAgICBDYWNoZSBib3Vu
ZGFyeTogfCAob2JqZWN0cyBvdXRzaWRlIHRoaXMgbWFyayBoYXZlIGJlZW4gZXZpY3RlZCkKKy8v
ICAgICAgLS18LS0tLS0tLS0tLSsrKysrKysrKyt8CisvLyAtLS0tLS0tfC0tLS0tKysrKysrKysr
KysrKysrfAorLy8gLS0tLS0tLXwtLS0tLSsrKysrKysrKysrKysrK3wrKysrKworCisvLyBUaGUg
YmVoYXZpb3Igb2YgdGhlIGNhY2hlIGNoYW5nZXMgaW4gdGhlIGZvbGxvd2luZyB3YXkgaWYgc2hv
dWxkTWFrZVJlc291cmNlUHVyZ2VhYmxlT25FdmljdGlvbgorLy8gcmV0dXJucyB0cnVlLgorLy8K
Ky8vIDEuIERlYWQgcmVzb3VyY2VzIGluIHRoZSBjYWNoZSBhcmUga2VwdCBpbiBub24tcHVyZ2Vh
YmxlIG1lbW9yeS4KKy8vIDIuIFdoZW4gd2UgcHJ1bmUgZGVhZCByZXNvdXJjZXMsIGluc3RlYWQg
b2YgZnJlZWluZyB0aGVtLCB3ZSBtYXJrIHRoZWlyIG1lbW9yeSBhcyBwdXJnZWFibGUgYW5kCisv
LyAgICBrZWVwIHRoZSByZXNvdXJjZXMgdW50aWwgdGhlIGtlcm5lbCByZWNsYWltcyB0aGUgcHVy
Z2VhYmxlIG1lbW9yeS4KKy8vCisvLyBCeSBsZWF2aW5nIHRoZSBpbi1jYWNoZSBkZWFkIHJlc291
cmNlcyBpbiBkaXJ0eSByZXNpZGVudCBtZW1vcnksIHdlIGRlY3JlYXNlIHRoZSBsaWtlbGlob29k
IG9mCisvLyB0aGUga2VybmVsIGNsYWltaW5nIHRoYXQgbWVtb3J5IGFuZCBmb3JjaW5nIHVzIHRv
IHJlZmV0Y2ggdGhlIHJlc291cmNlIChmb3IgZXhhbXBsZSB3aGVuIGEgdXNlcgorLy8gcHJlc3Nl
cyBiYWNrKS4KKy8vCisvLyBBbmQgYnkgaGF2aW5nIGFuIHVuYm91bmRlZCBudW1iZXIgb2YgcmVz
b3VyY2Ugb2JqZWN0cyB1c2luZyBwdXJnZWFibGUgbWVtb3J5LCB3ZSBjYW4gdXNlIGFzIG11Y2gK
Ky8vIG1lbW9yeSBhcyBpcyBhdmFpbGFibGUgb24gdGhlIG1hY2hpbmUuIFRoZSB0cmFkZS1vZmYg
aGVyZSBpcyB0aGF0IHRoZSBDYWNoZWRSZXNvdXJjZSBvYmplY3QgKGFuZAorLy8gaXRzIG1lbWJl
ciB2YXJpYWJsZXMpIGFyZSBhbGxvY2F0ZWQgaW4gbm9uLXB1cmdlYWJsZSBUQy1tYWxsb2MnZCBt
ZW1vcnkgc28gd2Ugd291bGQgc2VlIHNsaWdodGx5CisvLyBtb3JlIG1lbW9yeSB1c2UgZHVlIHRv
IHRoaXMuCisKK2NsYXNzIENhY2hlIDogcHVibGljIE5vbmNvcHlhYmxlIHsKK3B1YmxpYzoKKyAg
ICBmcmllbmQgQ2FjaGUqIGNhY2hlKCk7CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBD
YWNoZWRSZXNvdXJjZSo+IENhY2hlZFJlc291cmNlTWFwOworCisgICAgc3RydWN0IExSVUxpc3Qg
eworICAgICAgICBDYWNoZWRSZXNvdXJjZSogbV9oZWFkOworICAgICAgICBDYWNoZWRSZXNvdXJj
ZSogbV90YWlsOworICAgICAgICBMUlVMaXN0KCkgOiBtX2hlYWQoMCksIG1fdGFpbCgwKSB7IH0K
KyAgICB9OworCisgICAgc3RydWN0IFR5cGVTdGF0aXN0aWMgeworICAgICAgICBpbnQgY291bnQ7
CisgICAgICAgIGludCBzaXplOworICAgICAgICBpbnQgbGl2ZVNpemU7CisgICAgICAgIGludCBk
ZWNvZGVkU2l6ZTsKKyAgICAgICAgaW50IHB1cmdlYWJsZVNpemU7CisgICAgICAgIGludCBwdXJn
ZWRTaXplOworICAgICAgICBUeXBlU3RhdGlzdGljKCkgOiBjb3VudCgwKSwgc2l6ZSgwKSwgbGl2
ZVNpemUoMCksIGRlY29kZWRTaXplKDApLCBwdXJnZWFibGVTaXplKDApLCBwdXJnZWRTaXplKDAp
IHsgfQorICAgICAgICB2b2lkIGFkZFJlc291cmNlKENhY2hlZFJlc291cmNlKik7CisgICAgfTsK
KyAgICAKKyAgICBzdHJ1Y3QgU3RhdGlzdGljcyB7CisgICAgICAgIFR5cGVTdGF0aXN0aWMgaW1h
Z2VzOworICAgICAgICBUeXBlU3RhdGlzdGljIGNzc1N0eWxlU2hlZXRzOworICAgICAgICBUeXBl
U3RhdGlzdGljIHNjcmlwdHM7CisjaWYgRU5BQkxFKFhTTFQpCisgICAgICAgIFR5cGVTdGF0aXN0
aWMgeHNsU3R5bGVTaGVldHM7CisjZW5kaWYKKyAgICAgICAgVHlwZVN0YXRpc3RpYyBmb250czsK
KyAgICB9OworCisgICAgLy8gVGhlIGxvYWRlciB0aGF0IGZldGNoZXMgcmVzb3VyY2VzLgorICAg
IExvYWRlciogbG9hZGVyKCkgeyByZXR1cm4gJm1fbG9hZGVyOyB9CisKKyAgICAvLyBSZXF1ZXN0
IHJlc291cmNlcyBmcm9tIHRoZSBjYWNoZS4gIEEgbG9hZCB3aWxsIGJlIGluaXRpYXRlZCBhbmQg
YSBjYWNoZSBvYmplY3QgY3JlYXRlZCBpZiB0aGUgb2JqZWN0IGlzIG5vdAorICAgIC8vIGZvdW5k
IGluIHRoZSBjYWNoZS4KKyAgICBDYWNoZWRSZXNvdXJjZSogcmVxdWVzdFJlc291cmNlKENhY2hl
ZFJlc291cmNlTG9hZGVyKiwgQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBjaGFyc2V0LCBib29sIGlzUHJlbG9hZCA9IGZhbHNlKTsKKworICAgIENh
Y2hlZENTU1N0eWxlU2hlZXQqIHJlcXVlc3RVc2VyQ1NTU3R5bGVTaGVldChDYWNoZWRSZXNvdXJj
ZUxvYWRlciosIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpOworICAg
IAorICAgIHZvaWQgcmV2YWxpZGF0ZVJlc291cmNlKENhY2hlZFJlc291cmNlKiwgQ2FjaGVkUmVz
b3VyY2VMb2FkZXIqKTsKKyAgICB2b2lkIHJldmFsaWRhdGlvblN1Y2NlZWRlZChDYWNoZWRSZXNv
dXJjZSogcmV2YWxpZGF0aW5nUmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAg
ICB2b2lkIHJldmFsaWRhdGlvbkZhaWxlZChDYWNoZWRSZXNvdXJjZSogcmV2YWxpZGF0aW5nUmVz
b3VyY2UpOworICAgIAorICAgIC8vIFNldHMgdGhlIGNhY2hlJ3MgbWVtb3J5IGNhcGFjaXRpZXMs
IGluIGJ5dGVzLiBUaGVzZSB3aWxsIGhvbGQgb25seSBhcHByb3hpbWF0ZWx5LCAKKyAgICAvLyBz
aW5jZSB0aGUgZGVjb2RlZCBjb3N0IG9mIHJlc291cmNlcyBsaWtlIHNjcmlwdHMgYW5kIHN0eWxl
c2hlZXRzIGlzIG5vdCBrbm93bi4KKyAgICAvLyAgLSBtaW5EZWFkQnl0ZXM6IFRoZSBtYXhpbXVt
IG51bWJlciBvZiBieXRlcyB0aGF0IGRlYWQgcmVzb3VyY2VzIHNob3VsZCBjb25zdW1lIHdoZW4g
dGhlIGNhY2hlIGlzIHVuZGVyIHByZXNzdXJlLgorICAgIC8vICAtIG1heERlYWRCeXRlczogVGhl
IG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRoYXQgZGVhZCByZXNvdXJjZXMgc2hvdWxkIGNvbnN1
bWUgd2hlbiB0aGUgY2FjaGUgaXMgbm90IHVuZGVyIHByZXNzdXJlLgorICAgIC8vICAtIHRvdGFs
Qnl0ZXM6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBieXRlcyB0aGF0IHRoZSBjYWNoZSBzaG91bGQg
Y29uc3VtZSBvdmVyYWxsLgorICAgIHZvaWQgc2V0Q2FwYWNpdGllcyh1bnNpZ25lZCBtaW5EZWFk
Qnl0ZXMsIHVuc2lnbmVkIG1heERlYWRCeXRlcywgdW5zaWduZWQgdG90YWxCeXRlcyk7CisKKyAg
ICAvLyBUdXJuIHRoZSBjYWNoZSBvbiBhbmQgb2ZmLiAgRGlzYWJsaW5nIHRoZSBjYWNoZSB3aWxs
IHJlbW92ZSBhbGwgcmVzb3VyY2VzIGZyb20gdGhlIGNhY2hlLiAgVGhleSBtYXkKKyAgICAvLyBz
dGlsbCBsaXZlIG9uIGlmIHRoZXkgYXJlIHJlZmVyZW5jZWQgYnkgc29tZSBXZWIgcGFnZSB0aG91
Z2guCisgICAgdm9pZCBzZXREaXNhYmxlZChib29sKTsKKyAgICBib29sIGRpc2FibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9kaXNhYmxlZDsgfQorICAgIAorICAgIHZvaWQgc2V0UHJ1bmVFbmFibGVk
KGJvb2wgZW5hYmxlZCkgeyBtX3BydW5lRW5hYmxlZCA9IGVuYWJsZWQ7IH0KKyAgICB2b2lkIHBy
dW5lKCkKKyAgICB7CisgICAgICAgIGlmIChtX2xpdmVTaXplICsgbV9kZWFkU2l6ZSA8PSBtX2Nh
cGFjaXR5ICYmIG1fbWF4RGVhZENhcGFjaXR5ICYmIG1fZGVhZFNpemUgPD0gbV9tYXhEZWFkQ2Fw
YWNpdHkpIC8vIEZhc3QgcGF0aC4KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAor
ICAgICAgICBwcnVuZURlYWRSZXNvdXJjZXMoKTsgLy8gUHJ1bmUgZGVhZCBmaXJzdCwgaW4gY2Fz
ZSBpdCB3YXMgImJvcnJvd2luZyIgY2FwYWNpdHkgZnJvbSBsaXZlLgorICAgICAgICBwcnVuZUxp
dmVSZXNvdXJjZXMoKTsKKyAgICB9CisKKyAgICB2b2lkIHNldERlYWREZWNvZGVkRGF0YURlbGV0
aW9uSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKSB7IG1fZGVhZERlY29kZWREYXRhRGVsZXRpb25J
bnRlcnZhbCA9IGludGVydmFsOyB9CisgICAgZG91YmxlIGRlYWREZWNvZGVkRGF0YURlbGV0aW9u
SW50ZXJ2YWwoKSBjb25zdCB7IHJldHVybiBtX2RlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2
YWw7IH0KKworICAgIC8vIFJlbW92ZSBhbiBleGlzdGluZyBjYWNoZSBlbnRyeSBmcm9tIGJvdGgg
dGhlIHJlc291cmNlIG1hcCBhbmQgZnJvbSB0aGUgTFJVIGxpc3QuCisgICAgdm9pZCByZW1vdmUo
Q2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKSB7IGV2aWN0KHJlc291cmNlKTsgfQorCisgICAgdm9p
ZCBhZGRDYWNoZWRSZXNvdXJjZUxvYWRlcihDYWNoZWRSZXNvdXJjZUxvYWRlciopOworICAgIHZv
aWQgcmVtb3ZlQ2FjaGVkUmVzb3VyY2VMb2FkZXIoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqKTsKKwor
ICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZUZvclVSTChjb25zdCBTdHJpbmcmKTsKKworICAg
IC8vIENhbGxzIHRvIHB1dCB0aGUgY2FjaGVkIHJlc291cmNlIGludG8gYW5kIG91dCBvZiBMUlUg
bGlzdHMuCisgICAgdm9pZCBpbnNlcnRJbkxSVUxpc3QoQ2FjaGVkUmVzb3VyY2UqKTsKKyAgICB2
b2lkIHJlbW92ZUZyb21MUlVMaXN0KENhY2hlZFJlc291cmNlKik7CisKKyAgICAvLyBDYWxsZWQg
dG8gYWRqdXN0IHRoZSBjYWNoZSB0b3RhbHMgd2hlbiBhIHJlc291cmNlIGNoYW5nZXMgc2l6ZS4K
KyAgICB2b2lkIGFkanVzdFNpemUoYm9vbCBsaXZlLCBpbnQgZGVsdGEpOworCisgICAgLy8gVHJh
Y2sgZGVjb2RlZCByZXNvdXJjZXMgdGhhdCBhcmUgaW4gdGhlIGNhY2hlIGFuZCByZWZlcmVuY2Vk
IGJ5IGEgV2ViIHBhZ2UuCisgICAgdm9pZCBpbnNlcnRJbkxpdmVEZWNvZGVkUmVzb3VyY2VzTGlz
dChDYWNoZWRSZXNvdXJjZSopOworICAgIHZvaWQgcmVtb3ZlRnJvbUxpdmVEZWNvZGVkUmVzb3Vy
Y2VzTGlzdChDYWNoZWRSZXNvdXJjZSopOworCisgICAgdm9pZCBhZGRUb0xpdmVSZXNvdXJjZXNT
aXplKENhY2hlZFJlc291cmNlKik7CisgICAgdm9pZCByZW1vdmVGcm9tTGl2ZVJlc291cmNlc1Np
emUoQ2FjaGVkUmVzb3VyY2UqKTsKKworICAgIHN0YXRpYyBib29sIHNob3VsZE1ha2VSZXNvdXJj
ZVB1cmdlYWJsZU9uRXZpY3Rpb24oKTsKKworICAgIC8vIEZ1bmN0aW9uIHRvIGNvbGxlY3QgY2Fj
aGUgc3RhdGlzdGljcyBmb3IgdGhlIGNhY2hlcyB3aW5kb3cgaW4gdGhlIFNhZmFyaSBEZWJ1ZyBt
ZW51LgorICAgIFN0YXRpc3RpY3MgZ2V0U3RhdGlzdGljcygpOworCitwcml2YXRlOgorICAgIENh
Y2hlKCk7CisgICAgfkNhY2hlKCk7IC8vIE5vdCBpbXBsZW1lbnRlZCB0byBtYWtlIHN1cmUgbm9i
b2R5IGFjY2lkZW50YWxseSBjYWxscyBkZWxldGUgLS0gV2ViQ29yZSBkb2VzIG5vdCBkZWxldGUg
c2luZ2xldG9ucy4KKyAgICAgICAKKyAgICBMUlVMaXN0KiBscnVMaXN0Rm9yKENhY2hlZFJlc291
cmNlKik7CisgICAgdm9pZCByZXNvdXJjZUFjY2Vzc2VkKENhY2hlZFJlc291cmNlKik7CisjaWZu
ZGVmIE5ERUJVRworICAgIHZvaWQgZHVtcFN0YXRzKCk7CisgICAgdm9pZCBkdW1wTFJVTGlzdHMo
Ym9vbCBpbmNsdWRlTGl2ZSkgY29uc3Q7CisjZW5kaWYKKworICAgIHVuc2lnbmVkIGxpdmVDYXBh
Y2l0eSgpIGNvbnN0OworICAgIHVuc2lnbmVkIGRlYWRDYXBhY2l0eSgpIGNvbnN0OworICAgIAor
ICAgIHZvaWQgcHJ1bmVEZWFkUmVzb3VyY2VzKCk7IC8vIEZsdXNoIGRlY29kZWQgYW5kIGVuY29k
ZWQgZGF0YSBmcm9tIHJlc291cmNlcyBub3QgcmVmZXJlbmNlZCBieSBXZWIgcGFnZXMuCisgICAg
dm9pZCBwcnVuZUxpdmVSZXNvdXJjZXMoKTsgLy8gRmx1c2ggZGVjb2RlZCBkYXRhIGZyb20gcmVz
b3VyY2VzIHN0aWxsIHJlZmVyZW5jZWQgYnkgV2ViIHBhZ2VzLgorCisgICAgYm9vbCBtYWtlUmVz
b3VyY2VQdXJnZWFibGUoQ2FjaGVkUmVzb3VyY2UqKTsKKyAgICB2b2lkIGV2aWN0KENhY2hlZFJl
c291cmNlKik7CisKKyAgICAvLyBNZW1iZXIgdmFyaWFibGVzLgorICAgIEhhc2hTZXQ8Q2FjaGVk
UmVzb3VyY2VMb2FkZXIqPiBtX2NhY2hlZFJlc291cmNlTG9hZGVyczsKKyAgICBMb2FkZXIgbV9s
b2FkZXI7CisKKyAgICBib29sIG1fZGlzYWJsZWQ7ICAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgY2Fj
aGUgaXMgZW5hYmxlZC4KKyAgICBib29sIG1fcHJ1bmVFbmFibGVkOworICAgIGJvb2wgbV9pblBy
dW5lRGVhZFJlc291cmNlczsKKworICAgIHVuc2lnbmVkIG1fY2FwYWNpdHk7CisgICAgdW5zaWdu
ZWQgbV9taW5EZWFkQ2FwYWNpdHk7CisgICAgdW5zaWduZWQgbV9tYXhEZWFkQ2FwYWNpdHk7Cisg
ICAgZG91YmxlIG1fZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbDsKKworICAgIHVuc2ln
bmVkIG1fbGl2ZVNpemU7IC8vIFRoZSBudW1iZXIgb2YgYnl0ZXMgY3VycmVudGx5IGNvbnN1bWVk
IGJ5ICJsaXZlIiByZXNvdXJjZXMgaW4gdGhlIGNhY2hlLgorICAgIHVuc2lnbmVkIG1fZGVhZFNp
emU7IC8vIFRoZSBudW1iZXIgb2YgYnl0ZXMgY3VycmVudGx5IGNvbnN1bWVkIGJ5ICJkZWFkIiBy
ZXNvdXJjZXMgaW4gdGhlIGNhY2hlLgorCisgICAgLy8gU2l6ZS1hZGp1c3RlZCBhbmQgcG9wdWxh
cml0eS1hd2FyZSBMUlUgbGlzdCBjb2xsZWN0aW9uIGZvciBjYWNoZSBvYmplY3RzLiAgVGhpcyBj
b2xsZWN0aW9uIGNhbiBob2xkCisgICAgLy8gbW9yZSByZXNvdXJjZXMgdGhhbiB0aGUgY2FjaGVk
IHJlc291cmNlIG1hcCwgc2luY2UgaXQgY2FuIGFsc28gaG9sZCAic3RhbGUiIG11bHRpcGxlIHZl
cnNpb25zIG9mIG9iamVjdHMgdGhhdCBhcmUKKyAgICAvLyB3YWl0aW5nIHRvIGRpZSB3aGVuIHRo
ZSBjbGllbnRzIHJlZmVyZW5jaW5nIHRoZW0gZ28gYXdheS4KKyAgICBWZWN0b3I8TFJVTGlzdCwg
MzI+IG1fYWxsUmVzb3VyY2VzOworICAgIAorICAgIC8vIExpc3QganVzdCBmb3IgbGl2ZSByZXNv
dXJjZXMgd2l0aCBkZWNvZGVkIGRhdGEuICBBY2Nlc3MgdG8gdGhpcyBsaXN0IGlzIGJhc2VkIG9m
ZiBvZiBwYWludGluZyB0aGUgcmVzb3VyY2UuCisgICAgTFJVTGlzdCBtX2xpdmVEZWNvZGVkUmVz
b3VyY2VzOworICAgIAorICAgIC8vIEEgVVJMLWJhc2VkIG1hcCBvZiBhbGwgcmVzb3VyY2VzIHRo
YXQgYXJlIGluIHRoZSBjYWNoZSAoaW5jbHVkaW5nIHRoZSBmcmVzaGVzdCB2ZXJzaW9uIG9mIG9i
amVjdHMgdGhhdCBhcmUgY3VycmVudGx5IGJlaW5nIAorICAgIC8vIHJlZmVyZW5jZWQgYnkgYSBX
ZWIgcGFnZSkuCisgICAgSGFzaE1hcDxTdHJpbmcsIENhY2hlZFJlc291cmNlKj4gbV9yZXNvdXJj
ZXM7Cit9OworCitpbmxpbmUgYm9vbCBDYWNoZTo6c2hvdWxkTWFrZVJlc291cmNlUHVyZ2VhYmxl
T25FdmljdGlvbigpCit7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHJldHVybiB0cnVlOworI2Vs
c2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworLy8gRnVuY3Rpb24gdG8gb2J0YWlu
IHRoZSBnbG9iYWwgY2FjaGUuCitDYWNoZSogY2FjaGUoKTsKKworfQorCisjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>