<?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>71869</bug_id>
          
          <creation_ts>2011-11-08 17:54:53 -0800</creation_ts>
          <short_desc>[Chromium] Implement tile-sized painting using SkPicture</short_desc>
          <delta_ts>2011-12-06 14:37:34 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>72191</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Reveman">reveman</reporter>
          <assigned_to name="David Reveman">reveman</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>piman</cc>
    
    <cc>sky</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>498575</commentid>
    <comment_count>0</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-08 17:54:53 -0800</bug_when>
    <thetext>Add texture uploader that paints tile-sized chunks using SkPicture recording and playback. Expose setting which allows this texture updater to be turned on/off.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498591</commentid>
    <comment_count>1</comment_count>
      <attachid>114191</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-08 18:36:10 -0800</bug_when>
    <thetext>Created attachment 114191
Patch

Depends on https://bugs.webkit.org/show_bug.cgi?id=71388</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499324</commentid>
    <comment_count>2</comment_count>
      <attachid>114191</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-11-09 13:50:23 -0800</bug_when>
    <thetext>Comment on attachment 114191
Patch

I am still worried about the memory behavior of keeping around a CPU-side buffer of pixels for every tile that ever gets painted.  When does this get freed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499343</commentid>
    <comment_count>3</comment_count>
      <attachid>114366</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-09 14:09:10 -0800</bug_when>
    <thetext>Created attachment 114366
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499345</commentid>
    <comment_count>4</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-09 14:11:26 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 114191 [details])
&gt; I am still worried about the memory behavior of keeping around a CPU-side buffer of pixels for every tile that ever gets painted.  When does this get freed?

Sorry, I meant to fix that. Latest patch allocates the buffer in ::prepareRect and frees after using it in ::updateRect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500150</commentid>
    <comment_count>5</comment_count>
      <attachid>114545</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-10 12:41:08 -0800</bug_when>
    <thetext>Created attachment 114545
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500153</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-10 12:42:49 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501170</commentid>
    <comment_count>7</comment_count>
      <attachid>114787</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-11 15:29:42 -0800</bug_when>
    <thetext>Created attachment 114787
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501471</commentid>
    <comment_count>8</comment_count>
      <attachid>114787</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-12 15:09:09 -0800</bug_when>
    <thetext>Comment on attachment 114787
Patch

Attachment 114787 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10447798</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502111</commentid>
    <comment_count>9</comment_count>
      <attachid>114787</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-14 11:12:59 -0800</bug_when>
    <thetext>Comment on attachment 114787
Patch

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

&gt; Source/WebKit/chromium/public/WebSettings.h:136
&gt; +    virtual void setPerTilePainting(bool) = 0;

why do you need to convey this setting in two places?  WebSettings and WebLayerTreeView::Settings?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502145</commentid>
    <comment_count>10</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-14 11:47:58 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 114787 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=114787&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebSettings.h:136
&gt; &gt; +    virtual void setPerTilePainting(bool) = 0;
&gt; 
&gt; why do you need to convey this setting in two places?  WebSettings and WebLayerTreeView::Settings?

No, I don&apos;t think we do. This is my first time adding a compositor setting. What&apos;s the rational used to deciding the place a setting belongs to? I couldn&apos;t tell based on existing settings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503159</commentid>
    <comment_count>11</comment_count>
      <attachid>115221</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-15 12:37:19 -0800</bug_when>
    <thetext>Created attachment 115221
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504268</commentid>
    <comment_count>12</comment_count>
      <attachid>115221</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-11-16 14:37:06 -0800</bug_when>
    <thetext>Comment on attachment 115221
Patch

This looks great.  I wonder a little bit if this should be the default path, because it fixes the &quot;paint aggregator&quot; problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506128</commentid>
    <comment_count>13</comment_count>
      <attachid>115891</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-18 15:28:14 -0800</bug_when>
    <thetext>Created attachment 115891
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506149</commentid>
    <comment_count>14</comment_count>
      <attachid>115895</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-18 15:41:21 -0800</bug_when>
    <thetext>Created attachment 115895
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506613</commentid>
    <comment_count>15</comment_count>
      <attachid>116007</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-20 16:25:18 -0800</bug_when>
    <thetext>Created attachment 116007
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507133</commentid>
    <comment_count>16</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-21 12:39:39 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 114787 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=114787&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebSettings.h:136
&gt; &gt; +    virtual void setPerTilePainting(bool) = 0;
&gt; 
&gt; why do you need to convey this setting in two places?  WebSettings and WebLayerTreeView::Settings?

Removed the WebLayerTreeView::Settings changes from the latest patch. Only in WebSettings now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507870</commentid>
    <comment_count>17</comment_count>
      <attachid>116294</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-22 16:53:18 -0800</bug_when>
    <thetext>Created attachment 116294
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513924</commentid>
    <comment_count>18</comment_count>
      <attachid>117653</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-12-02 10:55:06 -0800</bug_when>
    <thetext>Created attachment 117653
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515532</commentid>
    <comment_count>19</comment_count>
      <attachid>117961</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-12-05 17:31:35 -0800</bug_when>
    <thetext>Created attachment 117961
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516184</commentid>
    <comment_count>20</comment_count>
      <attachid>117961</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-06 13:07:33 -0800</bug_when>
    <thetext>Comment on attachment 117961
Patch

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

This looks great, let&apos;s do it!

&gt; Source/WebCore/platform/graphics/chromium/BitmapSkPictureCanvasLayerTextureUpdater.h:66
&gt; +    explicit BitmapSkPictureCanvasLayerTextureUpdater(PassOwnPtr&lt;LayerPainterChromium&gt;, bool useMapTexSubImage);

you don&apos;t need &apos;explicit&apos; for 2-arg c&apos;tors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516187</commentid>
    <comment_count>21</comment_count>
      <attachid>118100</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-12-06 13:16:05 -0800</bug_when>
    <thetext>Created attachment 118100
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516190</commentid>
    <comment_count>22</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-12-06 13:18:43 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 117961 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117961&amp;action=review
&gt; 
&gt; This looks great, let&apos;s do it!

Yay!

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/BitmapSkPictureCanvasLayerTextureUpdater.h:66
&gt; &gt; +    explicit BitmapSkPictureCanvasLayerTextureUpdater(PassOwnPtr&lt;LayerPainterChromium&gt;, bool useMapTexSubImage);
&gt; 
&gt; you don&apos;t need &apos;explicit&apos; for 2-arg c&apos;tors

Latest patch removes unnecessary &apos;explicit&apos; from c&apos;tor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516260</commentid>
    <comment_count>23</comment_count>
      <attachid>118100</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-06 14:37:28 -0800</bug_when>
    <thetext>Comment on attachment 118100
Patch

Clearing flags on attachment: 118100

Committed r102181: &lt;http://trac.webkit.org/changeset/102181&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516262</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-06 14:37:34 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114191</attachid>
            <date>2011-11-08 18:36:10 -0800</date>
            <delta_ts>2011-11-09 14:09:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>skia-painting.diff</filename>
            <type>text/plain</type>
            <size>16312</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">Y29tbWl0IGNkMGMwNzc5ZDU1OTZmNmZlZWI3ZDZkMDAzM2I1OWZkYTc2ZDVmZWUKQXV0aG9yOiBE
YXZpZCBSZXZlbWFuIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KRGF0ZTogICBUdWUgTm92IDggMTY6
Mzg6MjEgMjAxMSAtMDgwMAoKICAgIFtDaHJvbWl1bV0gQWRkIEJpdG1hcFNraWFDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBmYjc4ZTA3Li40NzliOTU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCkBAIC0zNDUxLDYgKzM0NTEsOCBAQAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBTa2lhQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNraWFDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmNwcCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRt
YXBTa2lhQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa2lhQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk1MTFlYgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcFNraWFDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtMCwwICsxLDExMSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQorI2lmIFVTRShTS0lBKQorCisjaW5jbHVkZSAiQml0bWFwU2tpYUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuaCIKKworI2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVtLmgiCisj
aW5jbHVkZSAiU2tDYW52YXMuaCIKKyNpbmNsdWRlICJza2lhL2V4dC9wbGF0Zm9ybV9jYW52YXMu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitCaXRtYXBTa2lhQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZShCaXRtYXBTa2lhQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlciogdGV4dHVyZVVwZGF0ZXIsIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUp
CisgICAgOiBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpCisgICAgLCBtX2J1
ZmZlclNpemUoMCkKKyAgICAsIG1fdGV4dHVyZVVwZGF0ZXIodGV4dHVyZVVwZGF0ZXIpCit7Cit9
CisKK3ZvaWQgQml0bWFwU2tpYUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnBy
ZXBhcmVSZWN0KGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpCit7CisgICAgc2l6ZV90IGJ1ZmZl
clNpemUgPSBzb3VyY2VSZWN0LndpZHRoKCkgKiBzb3VyY2VSZWN0LmhlaWdodCgpICogNDsKKyAg
ICBpZiAobV9idWZmZXJTaXplICE9IGJ1ZmZlclNpemUpCisgICAgICAgIG1fcGl4ZWxEYXRhID0g
YWRvcHRBcnJheVB0cihuZXcgdWludDhfdFtidWZmZXJTaXplXSk7CisKKyAgICBPd25QdHI8U2tD
YW52YXM+IGNhbnZhcyA9IGFkb3B0UHRyKG5ldyBza2lhOjpQbGF0Zm9ybUNhbnZhcyhzb3VyY2VS
ZWN0LndpZHRoKCksIHNvdXJjZVJlY3QuaGVpZ2h0KCksIGZhbHNlLCBtX3BpeGVsRGF0YS5nZXQo
KSkpOworICAgIHRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVUZXh0dXJlUmVjdChjYW52YXMuZ2V0
KCksIHNvdXJjZVJlY3QpOworfQorCit2b2lkIEJpdG1hcFNraWFDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBU
ZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRl
eHR1cmVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0
UmVjdCwgbV9waXhlbERhdGEuZ2V0KCkpOworfQorCitQYXNzUmVmUHRyPEJpdG1hcFNraWFDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyPiBCaXRtYXBTa2lhQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6Y3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIsIGJvb2wg
dXNlTWFwVGV4U3ViSW1hZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCaXRtYXBTa2lh
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihwYWludGVyLCB1c2VNYXBUZXhTdWJJbWFnZSkpOwor
fQorCitCaXRtYXBTa2lhQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Qml0bWFwU2tpYUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFp
bnRlciwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSkKKyAgICA6IFNraWFDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyKHBhaW50ZXIpCisgICAgLCBtX3RleFN1YkltYWdlKHVzZU1hcFRleFN1YkltYWdl
KQoreworfQorCitCaXRtYXBTa2lhQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6fkJpdG1hcFNr
aWFDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKCkKK3sKK30KKworTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZSogQml0bWFwU2tpYUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZVRl
eHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpCit7CisgICAgcmV0dXJuIG5ldyBUZXh0dXJl
KHRoaXMsIE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobWFuYWdlcikpOworfQorCitMYXllclRleHR1
cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXQgQml0bWFwU2tpYUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OnNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KQorewor
ICAgIC8vIFRoZSBjb21wb25lbnQgb3JkZXIgbWF5IGJlIGJncmEgaWYgd2UgdXBsb2FkZWQgYmdy
YSBwaXhlbHMgdG8gcmdiYSB0ZXh0dXJlcy4KKyAgICByZXR1cm4gUGxhdGZvcm1Db2xvcjo6c2Ft
ZUNvbXBvbmVudE9yZGVyKHRleHR1cmVGb3JtYXQpID8KKyAgICAgICAgICAgIExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXllclRleHR1cmVVcGRhdGVyOjpT
YW1wbGVkVGV4ZWxGb3JtYXRCR1JBOworfQorCit2b2lkIEJpdG1hcFNraWFDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3Qs
IGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzKQoreworICAgIG1fdGV4
U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKKyAgICBTa2lhQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRSZWN0LCB0aWxlU2l6ZSwgYm9y
ZGVyVGV4ZWxzKTsKK30KKwordm9pZCBCaXRtYXBTa2lhQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6cHJlcGFyZVRleHR1cmVSZWN0KFNrQ2FudmFzKiBjYW52YXMsIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QpCit7CisgICAgLy8gVHJhbnNsYXRlIHRoZSBvcmlnaW4gb2YgY29udGVudFJlY3Qg
dG8gdGhhdCBvZiBzb3VyY2VSZWN0LgorICAgIGNhbnZhcy0+dHJhbnNsYXRlKGNvbnRlbnRSZWN0
KCkueCgpIC0gc291cmNlUmVjdC54KCksCisgICAgICAgICAgICAgICAgICAgICAgY29udGVudFJl
Y3QoKS55KCkgLSBzb3VyY2VSZWN0LnkoKSk7CisgICAgZHJhd1BpY3R1cmUoY2FudmFzKTsKK30K
Kwordm9pZCBCaXRtYXBTa2lhQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVy
ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9j
YXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBjb25zdCB1aW50OF90KiBwaXhlbHMpCit7CisgICAg
dGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKKyAgICBtX3RleFN1Yklt
YWdlLnVwbG9hZChwaXhlbHMsIGRlc3RSZWN0LCBkZXN0UmVjdCwgZGVzdFJlY3QsIHRleHR1cmUt
PmZvcm1hdCgpLCBjb250ZXh0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2VuZGlm
IC8vIFVTRShTS0lBKQorI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1h
cFNraWFDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa2lhQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyZDgzYjAKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBT
a2lhQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisK
KyNpZm5kZWYgQml0bWFwU2tpYUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXJfaAorI2RlZmluZSBC
aXRtYXBTa2lhQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcl9oCisKKyNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCisjaWYgVVNFKFNLSUEpCisKKyNpbmNsdWRlICJTa2lhQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5oIgorI2luY2x1ZGUgIkxheWVyVGV4dHVyZVN1YkltYWdlLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1Db2xvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEJpdG1hcFNraWFDYW52YXNMYXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIFNraWFDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyIHsKK3B1YmxpYzoKKyAgICBjbGFzcyBUZXh0dXJlIDogcHVibGlj
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIHB1YmxpYzoKKyAgICAgICAgVGV4
dHVyZShCaXRtYXBTa2lhQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciosIFBhc3NPd25QdHI8TWFu
YWdlZFRleHR1cmU+KTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdy
YXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgIHByaXZhdGU6CisgICAgICAg
IEJpdG1hcFNraWFDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIHsg
cmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7IH0KKworICAgICAgICBzaXplX3QgbV9idWZmZXJTaXpl
OworICAgICAgICBPd25BcnJheVB0cjx1aW50OF90PiBtX3BpeGVsRGF0YTsKKyAgICAgICAgQml0
bWFwU2tpYUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIG1fdGV4dHVyZVVwZGF0ZXI7CisgICAg
fTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJpdG1hcFNraWFDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyPiBjcmVhdGUoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4sIGJvb2wgdXNl
TWFwVGV4U3ViSW1hZ2UpOworICAgIHZpcnR1YWwgfkJpdG1hcFNraWFDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyKCk7CisKKyAgICB2aXJ0dWFsIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUq
IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqKTsKKyAgICB2aXJ0dWFsIE9yaWVudGF0aW9u
IG9yaWVudGF0aW9uKCkgeyByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Qm90dG9tVXBPcmll
bnRhdGlvbjsgfQorICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZv
cm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRv
VXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6
ZSwgaW50IGJvcmRlclRleGVscyk7CisgICAgdm9pZCBwcmVwYXJlVGV4dHVyZVJlY3QoU2tDYW52
YXMqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KTsKKyAgICB2b2lkIHVwZGF0ZVRleHR1cmVS
ZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIE1hbmFnZWRUZXh0dXJl
KiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IHVpbnQ4X3QqIHBpeGVscyk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgQml0bWFwU2tp
YUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1
bT4sIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpOworCisgICAgTGF5ZXJUZXh0dXJlU3ViSW1hZ2Ug
bV90ZXhTdWJJbWFnZTsKK307Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYgLy8gVVNF
KFNLSUEpCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorI2VuZGlmIC8v
IEJpdG1hcFNraWFDYW52YXNMYXllclRleHR1cmVVcGRhdGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRM
YXllckNocm9taXVtLmNwcAppbmRleCAyZGZhMzJmLi4wNzg2YmMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29u
dGVudExheWVyQ2hyb21pdW0uY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiQ29udGVu
dExheWVyQ2hyb21pdW0uaCIKIAogI2luY2x1ZGUgIkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaCIKKyNpbmNsdWRlICJCaXRtYXBTa2lhQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5o
IgogI2luY2x1ZGUgIkZyYW1lQnVmZmVyU2tpYUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIK
ICNpbmNsdWRlICJMYXllclBhaW50ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVy
ZXJDaHJvbWl1bS5oIgpAQCAtMTI2LDYgKzEyNywxMSBAQCB2b2lkIENvbnRlbnRMYXllckNocm9t
aXVtOjpjcmVhdGVUZXh0dXJlVXBkYXRlcihjb25zdCBDQ0xheWVyVHJlZUhvc3QqIGhvc3QpCiAg
ICAgICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBGcmFtZUJ1ZmZlclNraWFDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpjcmVhdGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKG1fZGVsZWdhdGUp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGlmIChob3N0LT5zZXR0aW5ncygpLnNr
aWFQYWludGluZykgeworICAgICAgICBtX3RleHR1cmVVcGRhdGVyID0gQml0bWFwU2tpYUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUo
bV9kZWxlZ2F0ZSksIGhvc3QtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ01hcFN1
Yik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAjZW5kaWYgLy8gVVNFKFNLSUEpCiAKICAgICBt
X3RleHR1cmVVcGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRl
KENvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSwgaG9zdC0+bGF5ZXJSZW5k
ZXJlckNhcGFiaWxpdGllcygpLnVzaW5nTWFwU3ViKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmgKaW5kZXggNzUwNzMwZC4uMDBkZDkwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgK
QEAgLTcyLDEzICs3MiwxNSBAQCBzdHJ1Y3QgQ0NTZXR0aW5ncyB7CiAgICAgICAgICAgICAsIGNv
bXBvc2l0ZU9mZnNjcmVlbihmYWxzZSkKICAgICAgICAgICAgICwgZW5hYmxlQ29tcG9zaXRvclRo
cmVhZChmYWxzZSkKICAgICAgICAgICAgICwgc2hvd0ZQU0NvdW50ZXIoZmFsc2UpCi0gICAgICAg
ICAgICAsIHNob3dQbGF0Zm9ybUxheWVyVHJlZShmYWxzZSkgeyB9CisgICAgICAgICAgICAsIHNo
b3dQbGF0Zm9ybUxheWVyVHJlZShmYWxzZSkKKyAgICAgICAgICAgICwgc2tpYVBhaW50aW5nKGZh
bHNlKSB7IH0KIAogICAgIGJvb2wgYWNjZWxlcmF0ZVBhaW50aW5nOwogICAgIGJvb2wgY29tcG9z
aXRlT2Zmc2NyZWVuOwogICAgIGJvb2wgZW5hYmxlQ29tcG9zaXRvclRocmVhZDsKICAgICBib29s
IHNob3dGUFNDb3VudGVyOwogICAgIGJvb2wgc2hvd1BsYXRmb3JtTGF5ZXJUcmVlOworICAgIGJv
b2wgc2tpYVBhaW50aW5nOwogfTsKIAogLy8gUHJvdmlkZXMgaW5mb3JtYXRpb24gb24gYW4gSW1w
bCdzIHJlbmRlcmluZyBjYXBhYmlsaXRpZXMgYmFjayB0byB0aGUgQ0NMYXllclRyZWVIb3N0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKaW5k
ZXggYWE4YjIxMy4uNTliYWM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkxheWVyVHJlZVZpZXcuaApAQCAtNDUsMTEgKzQ1LDEzIEBAIHB1YmxpYzoKICAgICAg
ICAgU2V0dGluZ3MoKQogICAgICAgICAgICAgOiBhY2NlbGVyYXRlUGFpbnRpbmcoZmFsc2UpCiAg
ICAgICAgICAgICAsIGNvbXBvc2l0ZU9mZnNjcmVlbihmYWxzZSkKLSAgICAgICAgICAgICwgZW5h
YmxlQ29tcG9zaXRvclRocmVhZChmYWxzZSkgeyB9CisgICAgICAgICAgICAsIGVuYWJsZUNvbXBv
c2l0b3JUaHJlYWQoZmFsc2UpCisgICAgICAgICAgICAsIHNraWFQYWludGluZyhmYWxzZSkgeyB9
CiAKICAgICAgICAgYm9vbCBhY2NlbGVyYXRlUGFpbnRpbmc7CiAgICAgICAgIGJvb2wgY29tcG9z
aXRlT2Zmc2NyZWVuOwogICAgICAgICBib29sIGVuYWJsZUNvbXBvc2l0b3JUaHJlYWQ7CisgICAg
ICAgIGJvb2wgc2tpYVBhaW50aW5nOwogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogICAgICAg
ICBvcGVyYXRvciBXZWJDb3JlOjpDQ1NldHRpbmdzKCkgY29uc3Q7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCmluZGV4IDM5M2JiODcuLjI0NmYw
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdz
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaApAQCAt
MTMzLDYgKzEzMyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlU2Nyb2xs
QW5pbWF0b3IoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRIaXhpZTc2V2ViU29ja2V0
UHJvdG9jb2xFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzdWFsV29y
ZE1vdmVtZW50RW5hYmxlZChib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFNraWFQYWlu
dGluZyhib29sKSA9IDA7CisgICAgdmlydHVhbCBib29sIHNraWFQYWludGluZygpIGNvbnN0ID0g
MDsKIAogcHJvdGVjdGVkOgogICAgIH5XZWJTZXR0aW5ncygpIHsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcAppbmRleCAwMmQ2Y2E2Li5kNWE5
NWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3
LmNwcApAQCAtMzksNiArMzksNyBAQCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5nczo6b3BlcmF0
b3IgQ0NTZXR0aW5ncygpIGNvbnN0CiAgICAgc2V0dGluZ3MuYWNjZWxlcmF0ZVBhaW50aW5nID0g
YWNjZWxlcmF0ZVBhaW50aW5nOwogICAgIHNldHRpbmdzLmNvbXBvc2l0ZU9mZnNjcmVlbiA9IGNv
bXBvc2l0ZU9mZnNjcmVlbjsKICAgICBzZXR0aW5ncy5lbmFibGVDb21wb3NpdG9yVGhyZWFkID0g
ZW5hYmxlQ29tcG9zaXRvclRocmVhZDsKKyAgICBzZXR0aW5ncy5za2lhUGFpbnRpbmcgPSBza2lh
UGFpbnRpbmc7CiAKICAgICAvLyBGSVhNRTogc2hvd0ZQU0NvdW50ZXIgLyBzaG93UGxhdGZvcm1M
YXllclRyZWUgYXJlbid0IHN1cHBvcnRlZCBjdXJyZW50bHkuCiAgICAgc2V0dGluZ3Muc2hvd0ZQ
U0NvdW50ZXIgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNldHRpbmdzSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0
aW5nc0ltcGwuY3BwCmluZGV4IDc3ZjljMjguLjhmOGM3NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcApAQCAtNTAsNiArNTAsNyBAQCBXZWJT
ZXR0aW5nc0ltcGw6OldlYlNldHRpbmdzSW1wbChTZXR0aW5ncyogc2V0dGluZ3MpCiAgICAgLCBt
X2NvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX3Nob3dGUFNDb3VudGVy
KGZhbHNlKQogICAgICwgbV9zaG93UGxhdGZvcm1MYXllclRyZWUoZmFsc2UpCisgICAgLCBtX3Nr
aWFQYWludGluZyhmYWxzZSkKICAgICAsIG1fdXNlVGhyZWFkZWRDb21wb3NpdG9yKGZhbHNlKQog
ewogICAgIEFTU0VSVChzZXR0aW5ncyk7CkBAIC00NzAsNCArNDcxLDkgQEAgdm9pZCBXZWJTZXR0
aW5nc0ltcGw6OnNldFZpc3VhbFdvcmRNb3ZlbWVudEVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAg
IG1fc2V0dGluZ3MtPnNldFZpc3VhbFdvcmRNb3ZlbWVudEVuYWJsZWQoZW5hYmxlZCk7CiB9CiAK
K3ZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRTa2lhUGFpbnRpbmcoYm9vbCBlbmFibGVkKQorewor
ICAgIG1fc2tpYVBhaW50aW5nID0gZW5hYmxlZDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCmluZGV4IDA3
OGE2OGMuLjM1YmMwMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNldHRpbmdzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRp
bmdzSW1wbC5oCkBAIC0xMjUsMTIgKzEyNSwxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHNldEVuYWJsZVNjcm9sbEFuaW1hdG9yKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRIaXhp
ZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRW
aXN1YWxXb3JkTW92ZW1lbnRFbmFibGVkKGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzZXRTa2lh
UGFpbnRpbmcoYm9vbCk7CisgICAgdmlydHVhbCBib29sIHNraWFQYWludGluZygpIGNvbnN0IHsg
cmV0dXJuIG1fc2tpYVBhaW50aW5nOyB9CiAKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6U2V0dGlu
Z3MqIG1fc2V0dGluZ3M7CiAgICAgYm9vbCBtX2NvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQ7CiAg
ICAgYm9vbCBtX3Nob3dGUFNDb3VudGVyOwogICAgIGJvb2wgbV9zaG93UGxhdGZvcm1MYXllclRy
ZWU7CisgICAgYm9vbCBtX3NraWFQYWludGluZzsKICAgICBib29sIG1fdXNlVGhyZWFkZWRDb21w
b3NpdG9yOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CmluZGV4IGIyZDE2ZTUuLjEwNzg2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKQEAgLTI2NjUsNiArMjY2NSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNl
dElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKICAgICAgICAgY2NT
ZXR0aW5ncy5lbmFibGVDb21wb3NpdG9yVGhyZWFkID0gc2V0dGluZ3MoKS0+dXNlVGhyZWFkZWRD
b21wb3NpdG9yKCk7CiAgICAgICAgIGNjU2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIgPSBzZXR0aW5n
cygpLT5zaG93RlBTQ291bnRlcigpOwogICAgICAgICBjY1NldHRpbmdzLnNob3dQbGF0Zm9ybUxh
eWVyVHJlZSA9IHNldHRpbmdzKCktPnNob3dQbGF0Zm9ybUxheWVyVHJlZSgpOworICAgICAgICBj
Y1NldHRpbmdzLnNraWFQYWludGluZyA9IHNldHRpbmdzKCktPnNraWFQYWludGluZygpOwogCiAg
ICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0ID0gTm9uQ29tcG9zaXRlZENvbnRlbnRI
b3N0OjpjcmVhdGUoV2ViVmlld0ltcGxDb250ZW50UGFpbnRlcjo6Y3JlYXRlKHRoaXMpKTsKICAg
ICAgICAgbV9sYXllclRyZWVIb3N0ID0gQ0NMYXllclRyZWVIb3N0OjpjcmVhdGUodGhpcywgY2NT
ZXR0aW5ncyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114366</attachid>
            <date>2011-11-09 14:09:10 -0800</date>
            <delta_ts>2011-11-10 12:41:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>per-tile-painting.diff</filename>
            <type>text/plain</type>
            <size>16549</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">Y29tbWl0IDg3MmMxZTc1NDI2YjkzN2VhMmNhMzg1MDhlZDY5ZTM5NWU1MTExYzAKQXV0aG9yOiBE
YXZpZCBSZXZlbWFuIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KRGF0ZTogICBXZWQgTm92IDkgMTQ6
MDE6MzMgMjAxMSAtMDgwMAoKICAgIFtDaHJvbWl1bV0gSW1wbGVtZW50IHRpbGUtc2l6ZWQgcGFp
bnRpbmcgdXNpbmcgU2tQaWN0dXJlLgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBhZmY3YmI2Li43MmU0
ZWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNDU0LDYgKzM0NTQsOCBAQAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2NnL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0u
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJD
aHJvbWl1bS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi44YTU5MmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5jcHAKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNpZiBVU0UoU0tJQSkKKwor
I2luY2x1ZGUgIkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIKKwor
I2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVtLmgiCisjaW5jbHVkZSAiU2tDYW52YXMuaCIK
KyNpbmNsdWRlICJza2lhL2V4dC9wbGF0Zm9ybV9jYW52YXMuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
OjpUZXh0dXJlKEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1
cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQorICAgIDogTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQorICAgICwgbV90ZXh0dXJlVXBkYXRl
cih0ZXh0dXJlVXBkYXRlcikKK3sKK30KKwordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVjdChjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0KQoreworICAgIHNpemVfdCBidWZmZXJTaXplID0gc291cmNlUmVjdC53aWR0aCgpICog
c291cmNlUmVjdC5oZWlnaHQoKSAqIDQ7CisgICAgbV9waXhlbERhdGEgPSBhZG9wdEFycmF5UHRy
KG5ldyB1aW50OF90W2J1ZmZlclNpemVdKTsKKyAgICBPd25QdHI8U2tDYW52YXM+IGNhbnZhcyA9
IGFkb3B0UHRyKG5ldyBza2lhOjpQbGF0Zm9ybUNhbnZhcyhzb3VyY2VSZWN0LndpZHRoKCksIHNv
dXJjZVJlY3QuaGVpZ2h0KCksIGZhbHNlLCBtX3BpeGVsRGF0YS5nZXQoKSkpOworICAgIHRleHR1
cmVVcGRhdGVyKCktPnByZXBhcmVUZXh0dXJlUmVjdChjYW52YXMuZ2V0KCksIHNvdXJjZVJlY3Qp
OworfQorCit2b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxv
Y2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpCit7CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3Qo
Y29udGV4dCwgYWxsb2NhdG9yLCB0ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0LCBtX3Bp
eGVsRGF0YS5nZXQoKSk7CisgICAgbV9waXhlbERhdGEuY2xlYXIoKTsKK30KKworUGFzc1JlZlB0
cjxCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyPiBCaXRtYXBTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoUGFzc093blB0cjxMYXllclBhaW50
ZXJDaHJvbWl1bT4gcGFpbnRlciwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSkKK3sKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIo
cGFpbnRlciwgdXNlTWFwVGV4U3ViSW1hZ2UpKTsKK30KKworQml0bWFwU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVyLCBib29sIHVzZU1h
cFRleFN1YkltYWdlKQorICAgIDogU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihw
YWludGVyKQorICAgICwgbV90ZXhTdWJJbWFnZSh1c2VNYXBUZXhTdWJJbWFnZSkKK3sKK30KKwor
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6fkJpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoKQoreworfQorCitQYXNzUmVmUHRyPExheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmU+IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OmNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBUZXh0dXJlKHRoaXMsIE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobWFu
YWdlcikpKTsKK30KKworTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0IEJp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnNhbXBsZWRUZXhlbEZvcm1h
dChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KQoreworICAgIC8vIFRoZSBjb21wb25lbnQgb3JkZXIg
bWF5IGJlIGJncmEgaWYgd2UgdXBsb2FkZWQgYmdyYSBwaXhlbHMgdG8gcmdiYSB0ZXh0dXJlcy4K
KyAgICByZXR1cm4gUGxhdGZvcm1Db2xvcjo6c2FtZUNvbXBvbmVudE9yZGVyKHRleHR1cmVGb3Jt
YXQpID8KKyAgICAgICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1h
dFJHQkEgOiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBOworfQor
Cit2b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVU
b1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNp
emUsIGludCBib3JkZXJUZXhlbHMpCit7CisgICAgbV90ZXhTdWJJbWFnZS5zZXRTdWJJbWFnZVNp
emUodGlsZVNpemUpOworICAgIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBy
ZXBhcmVUb1VwZGF0ZShjb250ZW50UmVjdCwgdGlsZVNpemUsIGJvcmRlclRleGVscyk7Cit9CisK
K3ZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRl
eHR1cmVSZWN0KFNrQ2FudmFzKiBjYW52YXMsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpCit7
CisgICAgLy8gVHJhbnNsYXRlIHRoZSBvcmlnaW4gb2YgY29udGVudFJlY3QgdG8gdGhhdCBvZiBz
b3VyY2VSZWN0LgorICAgIGNhbnZhcy0+dHJhbnNsYXRlKGNvbnRlbnRSZWN0KCkueCgpIC0gc291
cmNlUmVjdC54KCksCisgICAgICAgICAgICAgICAgICAgICAgY29udGVudFJlY3QoKS55KCkgLSBz
b3VyY2VSZWN0LnkoKSk7CisgICAgZHJhd1BpY3R1cmUoY2FudmFzKTsKK30KKwordm9pZCBCaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBN
YW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IHVpbnQ4X3QqIHBpeGVscykKK3sKKyAgICB0ZXh0dXJl
LT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOworICAgIG1fdGV4U3ViSW1hZ2UudXBs
b2FkKHBpeGVscywgZGVzdFJlY3QsIGRlc3RSZWN0LCBkZXN0UmVjdCwgdGV4dHVyZS0+Zm9ybWF0
KCksIGNvbnRleHQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYgLy8gVVNF
KFNLSUEpCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxMWNiODcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTAsMCArMSw3MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKworI2lmbmRlZiBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
X2gKKyNkZWZpbmUgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcl9oCisK
KyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisjaWYgVVNFKFNLSUEpCisKKyNpbmNs
dWRlICJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgiCisjaW5jbHVkZSAiTGF5
ZXJUZXh0dXJlU3ViSW1hZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlciA6IHB1YmxpYyBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyIHsKK3B1
YmxpYzoKKyAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmUgeworICAgIHB1YmxpYzoKKyAgICAgICAgVGV4dHVyZShCaXRtYXBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyKiwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOworCisg
ICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBU
ZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgQml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBtX3RleHR1
cmVVcGRhdGVyOyB9CisKKyAgICAgICAgT3duQXJyYXlQdHI8dWludDhfdD4gbV9waXhlbERhdGE7
CisgICAgICAgIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIG1fdGV4
dHVyZVVwZGF0ZXI7CisgICAgfTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IGNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFp
bnRlckNocm9taXVtPiwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSk7CisgICAgdmlydHVhbCB+Qml0
bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcigpOworCisgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4
dHVyZU1hbmFnZXIqKTsKKyAgICB2aXJ0dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyBy
ZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Qm90dG9tVXBPcmllbnRhdGlvbjsgfQorICAgIHZp
cnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0
dXJlRm9ybWF0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJl
Y3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVs
cyk7CisgICAgdm9pZCBwcmVwYXJlVGV4dHVyZVJlY3QoU2tDYW52YXMqLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0KTsKKyAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4
dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IHVpbnQ4X3QqIHBpeGVs
cyk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiwgYm9vbCB1c2VN
YXBUZXhTdWJJbWFnZSk7CisKKyAgICBMYXllclRleHR1cmVTdWJJbWFnZSBtX3RleFN1YkltYWdl
OworfTsKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRpZiAvLyBVU0UoU0tJQSkKKyNlbmRp
ZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisjZW5kaWYgLy8gQml0bWFwU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJv
bWl1bS5jcHAKaW5kZXggZGIwYWU0Ni4uYzk0YWIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXll
ckNocm9taXVtLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkNvbnRlbnRMYXllckNo
cm9taXVtLmgiCiAKICNpbmNsdWRlICJCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgi
CisjaW5jbHVkZSAiQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgog
I2luY2x1ZGUgIkZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5o
IgogI2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmgiCkBAIC0xMjYsNiArMTI3LDExIEBAIHZvaWQgQ29udGVudExheWVyQ2hy
b21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVyKGNvbnN0IENDTGF5ZXJUcmVlSG9zdCogaG9zdCkK
ICAgICAgICAgbV90ZXh0dXJlVXBkYXRlciA9IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX2Rl
bGVnYXRlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBpZiAoaG9zdC0+c2V0dGlu
Z3MoKS5wZXJUaWxlUGFpbnRpbmcpIHsKKyAgICAgICAgbV90ZXh0dXJlVXBkYXRlciA9IEJpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShDb250ZW50TGF5ZXJQ
YWludGVyOjpjcmVhdGUobV9kZWxlZ2F0ZSksIGhvc3QtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRp
ZXMoKS51c2luZ01hcFN1Yik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAjZW5kaWYgLy8gVVNF
KFNLSUEpCiAKICAgICBtX3RleHR1cmVVcGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6Y3JlYXRlKENvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSwg
aG9zdC0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLnVzaW5nTWFwU3ViKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmgKaW5kZXggNzUwNzMwZC4uOWNiZjlhNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmgKQEAgLTcyLDEzICs3MiwxNSBAQCBzdHJ1Y3QgQ0NTZXR0aW5ncyB7CiAg
ICAgICAgICAgICAsIGNvbXBvc2l0ZU9mZnNjcmVlbihmYWxzZSkKICAgICAgICAgICAgICwgZW5h
YmxlQ29tcG9zaXRvclRocmVhZChmYWxzZSkKICAgICAgICAgICAgICwgc2hvd0ZQU0NvdW50ZXIo
ZmFsc2UpCi0gICAgICAgICAgICAsIHNob3dQbGF0Zm9ybUxheWVyVHJlZShmYWxzZSkgeyB9Cisg
ICAgICAgICAgICAsIHNob3dQbGF0Zm9ybUxheWVyVHJlZShmYWxzZSkKKyAgICAgICAgICAgICwg
cGVyVGlsZVBhaW50aW5nKGZhbHNlKSB7IH0KIAogICAgIGJvb2wgYWNjZWxlcmF0ZVBhaW50aW5n
OwogICAgIGJvb2wgY29tcG9zaXRlT2Zmc2NyZWVuOwogICAgIGJvb2wgZW5hYmxlQ29tcG9zaXRv
clRocmVhZDsKICAgICBib29sIHNob3dGUFNDb3VudGVyOwogICAgIGJvb2wgc2hvd1BsYXRmb3Jt
TGF5ZXJUcmVlOworICAgIGJvb2wgcGVyVGlsZVBhaW50aW5nOwogfTsKIAogLy8gUHJvdmlkZXMg
aW5mb3JtYXRpb24gb24gYW4gSW1wbCdzIHJlbmRlcmluZyBjYXBhYmlsaXRpZXMgYmFjayB0byB0
aGUgQ0NMYXllclRyZWVIb3N0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJMYXllclRyZWVWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJMYXllclRyZWVWaWV3LmgKaW5kZXggYWE4YjIxMy4uOGM5YzhkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaApAQCAtNDUsMTEgKzQ1
LDEzIEBAIHB1YmxpYzoKICAgICAgICAgU2V0dGluZ3MoKQogICAgICAgICAgICAgOiBhY2NlbGVy
YXRlUGFpbnRpbmcoZmFsc2UpCiAgICAgICAgICAgICAsIGNvbXBvc2l0ZU9mZnNjcmVlbihmYWxz
ZSkKLSAgICAgICAgICAgICwgZW5hYmxlQ29tcG9zaXRvclRocmVhZChmYWxzZSkgeyB9CisgICAg
ICAgICAgICAsIGVuYWJsZUNvbXBvc2l0b3JUaHJlYWQoZmFsc2UpCisgICAgICAgICAgICAsIHBl
clRpbGVQYWludGluZyhmYWxzZSkgeyB9CiAKICAgICAgICAgYm9vbCBhY2NlbGVyYXRlUGFpbnRp
bmc7CiAgICAgICAgIGJvb2wgY29tcG9zaXRlT2Zmc2NyZWVuOwogICAgICAgICBib29sIGVuYWJs
ZUNvbXBvc2l0b3JUaHJlYWQ7CisgICAgICAgIGJvb2wgcGVyVGlsZVBhaW50aW5nOwogI2lmIFdF
QktJVF9JTVBMRU1FTlRBVElPTgogICAgICAgICBvcGVyYXRvciBXZWJDb3JlOjpDQ1NldHRpbmdz
KCkgY29uc3Q7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlNldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0
aW5ncy5oCmluZGV4IDM5M2JiODcuLjJlZDVhODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViU2V0dGluZ3MuaApAQCAtMTMzLDYgKzEzMyw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgc2V0RW5hYmxlU2Nyb2xsQW5pbWF0b3IoYm9vbCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkKGJvb2wpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmlzdWFsV29yZE1vdmVtZW50RW5hYmxlZChib29sKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFBlclRpbGVQYWludGluZyhib29sKSA9IDA7CisgICAgdmlydHVh
bCBib29sIHBlclRpbGVQYWludGluZygpIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgogICAgIH5X
ZWJTZXR0aW5ncygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTGF5ZXJUcmVlVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXll
clRyZWVWaWV3LmNwcAppbmRleCAwMmQ2Y2E2Li4wZjhlY2QxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcApAQCAtMzksNiArMzksNyBAQCBX
ZWJMYXllclRyZWVWaWV3OjpTZXR0aW5nczo6b3BlcmF0b3IgQ0NTZXR0aW5ncygpIGNvbnN0CiAg
ICAgc2V0dGluZ3MuYWNjZWxlcmF0ZVBhaW50aW5nID0gYWNjZWxlcmF0ZVBhaW50aW5nOwogICAg
IHNldHRpbmdzLmNvbXBvc2l0ZU9mZnNjcmVlbiA9IGNvbXBvc2l0ZU9mZnNjcmVlbjsKICAgICBz
ZXR0aW5ncy5lbmFibGVDb21wb3NpdG9yVGhyZWFkID0gZW5hYmxlQ29tcG9zaXRvclRocmVhZDsK
KyAgICBzZXR0aW5ncy5wZXJUaWxlUGFpbnRpbmcgPSBwZXJUaWxlUGFpbnRpbmc7CiAKICAgICAv
LyBGSVhNRTogc2hvd0ZQU0NvdW50ZXIgLyBzaG93UGxhdGZvcm1MYXllclRyZWUgYXJlbid0IHN1
cHBvcnRlZCBjdXJyZW50bHkuCiAgICAgc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIgPSBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCmluZGV4
IDc3ZjljMjguLjVmZDFmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNldHRpbmdzSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U2V0dGluZ3NJbXBsLmNwcApAQCAtNTAsNiArNTAsNyBAQCBXZWJTZXR0aW5nc0ltcGw6OldlYlNl
dHRpbmdzSW1wbChTZXR0aW5ncyogc2V0dGluZ3MpCiAgICAgLCBtX2NvbXBvc2l0ZVRvVGV4dHVy
ZUVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX3Nob3dGUFNDb3VudGVyKGZhbHNlKQogICAgICwgbV9z
aG93UGxhdGZvcm1MYXllclRyZWUoZmFsc2UpCisgICAgLCBtX3BlclRpbGVQYWludGluZyhmYWxz
ZSkKICAgICAsIG1fdXNlVGhyZWFkZWRDb21wb3NpdG9yKGZhbHNlKQogewogICAgIEFTU0VSVChz
ZXR0aW5ncyk7CkBAIC00NzAsNCArNDcxLDkgQEAgdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldFZp
c3VhbFdvcmRNb3ZlbWVudEVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIG1fc2V0dGluZ3MtPnNl
dFZpc3VhbFdvcmRNb3ZlbWVudEVuYWJsZWQoZW5hYmxlZCk7CiB9CiAKK3ZvaWQgV2ViU2V0dGlu
Z3NJbXBsOjpzZXRQZXJUaWxlUGFpbnRpbmcoYm9vbCBlbmFibGVkKQoreworICAgIG1fcGVyVGls
ZVBhaW50aW5nID0gZW5hYmxlZDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCmluZGV4IDA3OGE2OGMuLjkx
YjRiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdz
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5o
CkBAIC0xMjUsMTIgKzEyNSwxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEVuYWJs
ZVNjcm9sbEFuaW1hdG9yKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRIaXhpZTc2V2ViU29j
a2V0UHJvdG9jb2xFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXN1YWxXb3Jk
TW92ZW1lbnRFbmFibGVkKGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzZXRQZXJUaWxlUGFpbnRp
bmcoYm9vbCk7CisgICAgdmlydHVhbCBib29sIHBlclRpbGVQYWludGluZygpIGNvbnN0IHsgcmV0
dXJuIG1fcGVyVGlsZVBhaW50aW5nOyB9CiAKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6U2V0dGlu
Z3MqIG1fc2V0dGluZ3M7CiAgICAgYm9vbCBtX2NvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQ7CiAg
ICAgYm9vbCBtX3Nob3dGUFNDb3VudGVyOwogICAgIGJvb2wgbV9zaG93UGxhdGZvcm1MYXllclRy
ZWU7CisgICAgYm9vbCBtX3BlclRpbGVQYWludGluZzsKICAgICBib29sIG1fdXNlVGhyZWFkZWRD
b21wb3NpdG9yOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCmluZGV4IGMzNjQyYzkuLmViMTQ3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAKQEAgLTI2NjEsNiArMjY2MSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6
OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKICAgICAgICAg
Y2NTZXR0aW5ncy5lbmFibGVDb21wb3NpdG9yVGhyZWFkID0gc2V0dGluZ3MoKS0+dXNlVGhyZWFk
ZWRDb21wb3NpdG9yKCk7CiAgICAgICAgIGNjU2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIgPSBzZXR0
aW5ncygpLT5zaG93RlBTQ291bnRlcigpOwogICAgICAgICBjY1NldHRpbmdzLnNob3dQbGF0Zm9y
bUxheWVyVHJlZSA9IHNldHRpbmdzKCktPnNob3dQbGF0Zm9ybUxheWVyVHJlZSgpOworICAgICAg
ICBjY1NldHRpbmdzLnBlclRpbGVQYWludGluZyA9IHNldHRpbmdzKCktPnBlclRpbGVQYWludGlu
ZygpOwogCiAgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0ID0gTm9uQ29tcG9zaXRl
ZENvbnRlbnRIb3N0OjpjcmVhdGUoV2ViVmlld0ltcGxDb250ZW50UGFpbnRlcjo6Y3JlYXRlKHRo
aXMpKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0ID0gQ0NMYXllclRyZWVIb3N0OjpjcmVhdGUo
dGhpcywgY2NTZXR0aW5ncyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114545</attachid>
            <date>2011-11-10 12:41:08 -0800</date>
            <delta_ts>2011-11-11 15:29:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71869-20111110124107.patch</filename>
            <type>text/plain</type>
            <size>20678</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk4ODcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMjE5NjUzNTM0MzMwOTBk
ZGJhZWU2MTkyNDkwOWQ5NWY1ZmZhMjdlLi43Nzk5ZGZkZDEwZjA0YWU3YzViNjgzY2ViZTQzOTkw
NzM2MWJiMDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTEtMTEtMTAgIERhdmlk
IFJldmVtYW4gIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIElt
cGxlbWVudCB0aWxlLXNpemVkIHBhaW50aW5nIHVzaW5nIFNrUGljdHVyZS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxODY5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRleHR1cmUgdXBsb2FkZXIg
dGhhdCBwYWludHMgdGlsZS1zaXplZCBjaHVua3MgdXNpbmcgU2tQaWN0dXJlCisgICAgICAgIHJl
Y29yZGluZyBhbmQgcGxheWJhY2suIEV4cG9zZSBzZXR0aW5nIHdoaWNoIGFsbG93cyB0aGlzIHRl
eHR1cmUKKyAgICAgICAgdXBkYXRlciB0byBiZSBlbmFibGVkLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cy4gQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lw
aToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJl
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmU6OnByZXBhcmVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6fkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3Jl
YXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpzYW1wbGVkVGV4ZWxGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OnByZXBhcmVUZXh0dXJlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnRleHR1cmVVcGRhdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6Om9yaWVudGF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
b250ZW50TGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NT
ZXR0aW5nczo6Q0NTZXR0aW5ncyk6CisKIDIwMTEtMTEtMTAgIFhpYW9tZWkgSmkgIDx4amlAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIC0td2Via2l0LXZpc3VhbC13b3JkIGNyYXNoIHdoZW4gY3Jl
YXRlIGxlZ2FjeSBwb3NpdGlvbiBmb3Igc2hhZG93Um9vdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwppbmRleCBkMWU4ZWQ5NWRiZmU1NGMzYWFmZWYyZjg2NTI1MmQzNDViMzUyOTFhLi5jNWQyZmJi
ZmM4MTgyMjA2MmQ0NmEwMjQzMjBmZDUyMDEzZTkxNmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDExLTExLTEwICBEYXZpZCBSZXZlbWFuICA8cmV2ZW1h
bkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBJbXBsZW1lbnQgdGlsZS1zaXpl
ZCBwYWludGluZyB1c2luZyBTa1BpY3R1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MTg2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBwZXJUaWxlUGFpbnRpbmcgc2V0dGluZyB0aGF0IGlzIHVz
ZWQgYnkgY29tcG9zaXRvciB0byBkZXRlcm1pbmUKKyAgICAgICAgd2hhdCB0ZXh0dXJlIHVwbG9h
ZGVyIHRvIHVzZS4KKworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBwdWJsaWMv
V2ViTGF5ZXJUcmVlVmlldy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3OjpT
ZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAqIHB1YmxpYy9XZWJTZXR0aW5ncy5oOgorICAg
ICAgICAqIHNyYy9XZWJMYXllclRyZWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5
ZXJUcmVlVmlldzo6U2V0dGluZ3M6Om9wZXJhdG9yIENDU2V0dGluZ3MpOgorICAgICAgICAqIHNy
Yy9XZWJTZXR0aW5nc0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6
OldlYlNldHRpbmdzSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6c2V0
UGVyVGlsZVBhaW50aW5nKToKKyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6cGVyVGlsZVBhaW50aW5nKToKKyAgICAgICAg
KiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0
SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKToKKwogMjAxMS0xMS0xMCAgVnNldm9sb2Qg
Vmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiAgUm9s
bGVkIERFUFMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOTkwMDZmZjAzYjVhNzJmZDUwYjY2NWZkYWU0
M2I2MDNmMmM0YjU2Ni4uZTRiNjMxOTI4ZWJkMzllNGFkMTk4ZWM4ZDBmMmRmODQ4ZmQ1YjE3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzQ0OSw2ICszNDQ5LDggQEAKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jZy9UcmFuc2Zvcm1hdGlvbk1hdHJpeENHLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1h
cENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5j
cHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21p
dW0uY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzJkNGI5NDc4MWViYjVhNTA4
YTBjNzlhZGJjMzc0OTdhZDdhMjQwOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuY3BwCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisjaWYgVVNFKFNLSUEp
CisKKyNpbmNsdWRlICJCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgi
CisKKyNpbmNsdWRlICJMYXllclBhaW50ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIlNrQ2FudmFz
LmgiCisjaW5jbHVkZSAic2tpYS9leHQvcGxhdGZvcm1fY2FudmFzLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZTo6VGV4dHVyZShCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0
ZXh0dXJlVXBkYXRlciwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKKyAgICA6
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkKKyAgICAsIG1fdGV4dHVyZVVw
ZGF0ZXIodGV4dHVyZVVwZGF0ZXIpCit7Cit9CisKK3ZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QoY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCkKK3sKKyAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IHNvdXJjZVJlY3Qud2lkdGgo
KSAqIHNvdXJjZVJlY3QuaGVpZ2h0KCkgKiA0OworICAgIG1fcGl4ZWxEYXRhID0gYWRvcHRBcnJh
eVB0cihuZXcgdWludDhfdFtidWZmZXJTaXplXSk7CisgICAgT3duUHRyPFNrQ2FudmFzPiBjYW52
YXMgPSBhZG9wdFB0cihuZXcgc2tpYTo6UGxhdGZvcm1DYW52YXMoc291cmNlUmVjdC53aWR0aCgp
LCBzb3VyY2VSZWN0LmhlaWdodCgpLCBmYWxzZSwgbV9waXhlbERhdGEuZ2V0KCkpKTsKKyAgICB0
ZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlVGV4dHVyZVJlY3QoY2FudmFzLmdldCgpLCBzb3VyY2VS
ZWN0KTsKK30KKwordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJl
QWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRl
eHR1cmVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgdGV4dHVyZSgpLCBkZXN0UmVjdCwgbV9waXhl
bERhdGEuZ2V0KCkpOworICAgIG1fcGl4ZWxEYXRhLmNsZWFyKCk7Cit9CisKK1Bhc3NSZWZQdHI8
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcj4gQml0bWFwU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQYWludGVy
Q2hyb21pdW0+IHBhaW50ZXIsIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKHBh
aW50ZXIsIHVzZU1hcFRleFN1YkltYWdlKSk7Cit9CisKK0JpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgYm9vbCB1c2VNYXBU
ZXhTdWJJbWFnZSkKKyAgICA6IFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIocGFp
bnRlcikKKyAgICAsIG1fdGV4U3ViSW1hZ2UodXNlTWFwVGV4U3ViSW1hZ2UpCit7Cit9CisKK0Jp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6On5CaXRtYXBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyKCkKK3sKK30KKworUGFzc1JlZlB0cjxMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlPiBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKQoreworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgVGV4dHVyZSh0aGlzLCBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1hbmFn
ZXIpKSk7Cit9CisKK0xheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdCBCaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpzYW1wbGVkVGV4ZWxGb3JtYXQo
R0MzRGVudW0gdGV4dHVyZUZvcm1hdCkKK3sKKyAgICAvLyBUaGUgY29tcG9uZW50IG9yZGVyIG1h
eSBiZSBiZ3JhIGlmIHdlIHVwbG9hZGVkIGJncmEgcGl4ZWxzIHRvIHJnYmEgdGV4dHVyZXMuCisg
ICAgcmV0dXJuIFBsYXRmb3JtQ29sb3I6OnNhbWVDb21wb25lbnRPcmRlcih0ZXh0dXJlRm9ybWF0
KSA/CisgICAgICAgICAgICBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRS
R0JBIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0QkdSQTsKK30KKwor
dm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9V
cGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXpl
LCBpbnQgYm9yZGVyVGV4ZWxzKQoreworICAgIG1fdGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXpl
KHRpbGVTaXplKTsKKyAgICBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVw
YXJlVG9VcGRhdGUoY29udGVudFJlY3QsIHRpbGVTaXplLCBib3JkZXJUZXhlbHMpOworfQorCit2
b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUZXh0
dXJlUmVjdChTa0NhbnZhcyogY2FudmFzLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQorewor
ICAgIC8vIFRyYW5zbGF0ZSB0aGUgb3JpZ2luIG9mIGNvbnRlbnRSZWN0IHRvIHRoYXQgb2Ygc291
cmNlUmVjdC4KKyAgICBjYW52YXMtPnRyYW5zbGF0ZShjb250ZW50UmVjdCgpLngoKSAtIHNvdXJj
ZVJlY3QueCgpLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRSZWN0KCkueSgpIC0gc291
cmNlUmVjdC55KCkpOworICAgIGRyYXdQaWN0dXJlKGNhbnZhcyk7Cit9CisKK3ZvaWQgQml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFu
YWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBjb25zdCB1aW50
OF90KiBwaXhlbHMpCit7CisgICAgdGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2Nh
dG9yKTsKKyAgICBtX3RleFN1YkltYWdlLnVwbG9hZChwaXhlbHMsIGRlc3RSZWN0LCBkZXN0UmVj
dCwgZGVzdFJlY3QsIHRleHR1cmUtPmZvcm1hdCgpLCBjb250ZXh0KTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorI2VuZGlmIC8vIFVTRShTS0lBKQorI2VuZGlmIC8vIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTBmMzcyMjFlZDYw
ODIzNWFhMTA2YWFhODE1ZjkzY2YwYzQ5NDk0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgQml0
bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcl9oCisjZGVmaW5lIEJpdG1hcFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXJfaAorCisjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQorI2lmIFVTRShTS0lBKQorCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlU3Vi
SW1hZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCisjaW5jbHVkZSAiU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB7CitwdWJsaWM6CisgICAgY2xhc3MgVGV4
dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIFRleHR1cmUoQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ciosIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQg
cHJlcGFyZVJlY3QoY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7CisgICAgICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAg
IHByaXZhdGU6CisgICAgICAgIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBkYXRlcjsgfQorCisgICAg
ICAgIE93bkFycmF5UHRyPHVpbnQ4X3Q+IG1fcGl4ZWxEYXRhOworICAgICAgICBCaXRtYXBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiBtX3RleHR1cmVVcGRhdGVyOworICAgIH07
CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyPiBjcmVhdGUoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4sIGJvb2wg
dXNlTWFwVGV4U3ViSW1hZ2UpOworICAgIHZpcnR1YWwgfkJpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIoKTsKKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKik7CisgICAg
dmlydHVhbCBPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIHsgcmV0dXJuIExheWVyVGV4dHVyZVVw
ZGF0ZXI6OkJvdHRvbVVwT3JpZW50YXRpb247IH0KKyAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZv
cm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCk7CisgICAgdmly
dHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29u
c3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMpOworICAgIHZvaWQgcHJlcGFy
ZVRleHR1cmVSZWN0KFNrQ2FudmFzKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7CisgICAg
dm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0
b3IqLCBNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBjb25zdCB1aW50
OF90KiBwaXhlbHMpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IEJpdG1hcFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4s
IGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpOworCisgICAgTGF5ZXJUZXh0dXJlU3ViSW1hZ2UgbV90
ZXhTdWJJbWFnZTsKK307Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYgLy8gVVNFKFNL
SUEpCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorI2VuZGlmIC8vIEJp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXJfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVu
dExheWVyQ2hyb21pdW0uY3BwCmluZGV4IGRiMGFlNDY5OWU3ODk2OTJmNTFjNDBiOGNkZTc2NDg0
ZmQxYzRhYTguLmM5NGFiMzYyZDQ2NzlhMmU4MDU2ODRjYTBhODhmY2NjNjhhMzU4MTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRM
YXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlICJDb250ZW50TGF5ZXJDaHJvbWl1bS5oIgogCiAjaW5jbHVkZSAiQml0bWFwQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5oIgorI2luY2x1ZGUgIkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJMYXllclBhaW50ZXJDaHJvbWl1bS5oIgog
I2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgpAQCAtMTI2LDYgKzEyNywxMSBAQCB2
b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpjcmVhdGVUZXh0dXJlVXBkYXRlcihjb25zdCBDQ0xh
eWVyVHJlZUhvc3QqIGhvc3QpCiAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBGcmFtZUJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShDb250ZW50TGF5ZXJQ
YWludGVyOjpjcmVhdGUobV9kZWxlZ2F0ZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisg
ICAgaWYgKGhvc3QtPnNldHRpbmdzKCkucGVyVGlsZVBhaW50aW5nKSB7CisgICAgICAgIG1fdGV4
dHVyZVVwZGF0ZXIgPSBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpj
cmVhdGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKG1fZGVsZWdhdGUpLCBob3N0LT5sYXll
clJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdNYXBTdWIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQogI2VuZGlmIC8vIFVTRShTS0lBKQogCiAgICAgbV90ZXh0dXJlVXBkYXRlciA9IEJpdG1h
cENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpj
cmVhdGUobV9kZWxlZ2F0ZSksIGhvc3QtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2lu
Z01hcFN1Yik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDZkNDVjODU1OWI2ODhh
NTU4YzRmNzIwZTFiOGQ1OGFkNjllNzY0MWIuLmNiZWUyZDE0ZDBmN2FhZGI1NzczY2RjYzQ1ZjMz
YzJlOWY2MjVkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC03MiwxMyArNzIs
MTUgQEAgc3RydWN0IENDU2V0dGluZ3MgewogICAgICAgICAgICAgLCBjb21wb3NpdGVPZmZzY3Jl
ZW4oZmFsc2UpCiAgICAgICAgICAgICAsIGVuYWJsZUNvbXBvc2l0b3JUaHJlYWQoZmFsc2UpCiAg
ICAgICAgICAgICAsIHNob3dGUFNDb3VudGVyKGZhbHNlKQotICAgICAgICAgICAgLCBzaG93UGxh
dGZvcm1MYXllclRyZWUoZmFsc2UpIHsgfQorICAgICAgICAgICAgLCBzaG93UGxhdGZvcm1MYXll
clRyZWUoZmFsc2UpCisgICAgICAgICAgICAsIHBlclRpbGVQYWludGluZyhmYWxzZSkgeyB9CiAK
ICAgICBib29sIGFjY2VsZXJhdGVQYWludGluZzsKICAgICBib29sIGNvbXBvc2l0ZU9mZnNjcmVl
bjsKICAgICBib29sIGVuYWJsZUNvbXBvc2l0b3JUaHJlYWQ7CiAgICAgYm9vbCBzaG93RlBTQ291
bnRlcjsKICAgICBib29sIHNob3dQbGF0Zm9ybUxheWVyVHJlZTsKKyAgICBib29sIHBlclRpbGVQ
YWludGluZzsKIH07CiAKIC8vIFByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIGFuIEltcGwncyByZW5k
ZXJpbmcgY2FwYWJpbGl0aWVzIGJhY2sgdG8gdGhlIENDTGF5ZXJUcmVlSG9zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCmluZGV4IGFhOGIy
MTM5MGUwZTk5NTNiZTE4NjRkMjAwMjQzYjRiNWIwNDM5NTMuLjhjOWM4ZDdiMWRkYzhjOTlkMmI1
ZDg3NmUzYWVjNGJiMDJkMWUxMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKQEAgLTQ1LDExICs0NSwxMyBAQCBwdWJsaWM6CiAgICAg
ICAgIFNldHRpbmdzKCkKICAgICAgICAgICAgIDogYWNjZWxlcmF0ZVBhaW50aW5nKGZhbHNlKQog
ICAgICAgICAgICAgLCBjb21wb3NpdGVPZmZzY3JlZW4oZmFsc2UpCi0gICAgICAgICAgICAsIGVu
YWJsZUNvbXBvc2l0b3JUaHJlYWQoZmFsc2UpIHsgfQorICAgICAgICAgICAgLCBlbmFibGVDb21w
b3NpdG9yVGhyZWFkKGZhbHNlKQorICAgICAgICAgICAgLCBwZXJUaWxlUGFpbnRpbmcoZmFsc2Up
IHsgfQogCiAgICAgICAgIGJvb2wgYWNjZWxlcmF0ZVBhaW50aW5nOwogICAgICAgICBib29sIGNv
bXBvc2l0ZU9mZnNjcmVlbjsKICAgICAgICAgYm9vbCBlbmFibGVDb21wb3NpdG9yVGhyZWFkOwor
ICAgICAgICBib29sIHBlclRpbGVQYWludGluZzsKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04K
ICAgICAgICAgb3BlcmF0b3IgV2ViQ29yZTo6Q0NTZXR0aW5ncygpIGNvbnN0OwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAppbmRleCAzOTNiYjg3
ODdlOTQ5YWFmYzI5NWRjZjg5NWNlN2Y1MWViNWFmNmEwLi4yZWQ1YTg4ZTRkNDhjMzI2ZjNmNDU1
NjgwMDcyMWE0MTMwOWIwODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlNldHRpbmdzLmgKQEAgLTEzMyw2ICsxMzMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHNldEVuYWJsZVNjcm9sbEFuaW1hdG9yKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHNldFZpc3VhbFdvcmRNb3ZlbWVudEVuYWJsZWQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXRQZXJUaWxlUGFpbnRpbmcoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwZXJU
aWxlUGFpbnRpbmcoKSBjb25zdCA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB+V2ViU2V0dGluZ3Mo
KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJl
ZVZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5j
cHAKaW5kZXggMDJkNmNhNjI1YWJhOWEzYWUzNTZiYjY3OTE3ZTM1Mjc5ZDNlNmM3ZS4uMGY4ZWNk
MTRhZDkzNjIyZjZmNmVkNDVkMmEwNWE0ZjQyZTA4MTE0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAKQEAgLTM5LDYgKzM5LDcgQEAgV2Vi
TGF5ZXJUcmVlVmlldzo6U2V0dGluZ3M6Om9wZXJhdG9yIENDU2V0dGluZ3MoKSBjb25zdAogICAg
IHNldHRpbmdzLmFjY2VsZXJhdGVQYWludGluZyA9IGFjY2VsZXJhdGVQYWludGluZzsKICAgICBz
ZXR0aW5ncy5jb21wb3NpdGVPZmZzY3JlZW4gPSBjb21wb3NpdGVPZmZzY3JlZW47CiAgICAgc2V0
dGluZ3MuZW5hYmxlQ29tcG9zaXRvclRocmVhZCA9IGVuYWJsZUNvbXBvc2l0b3JUaHJlYWQ7Cisg
ICAgc2V0dGluZ3MucGVyVGlsZVBhaW50aW5nID0gcGVyVGlsZVBhaW50aW5nOwogCiAgICAgLy8g
RklYTUU6IHNob3dGUFNDb3VudGVyIC8gc2hvd1BsYXRmb3JtTGF5ZXJUcmVlIGFyZW4ndCBzdXBw
b3J0ZWQgY3VycmVudGx5LgogICAgIHNldHRpbmdzLnNob3dGUFNDb3VudGVyID0gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAppbmRleCA3
N2Y5YzI4OGMwMzE4NTk5ODhkMzYzNmNiMzU5NTJmYzQ5M2YwMmNmLi41ZmQxZjc3OTkzNGY5Y2Ix
YWI1NjJjYzRiMDg4N2VkMDRkOTE0ODRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKQEAgLTUwLDYgKzUwLDcgQEAgV2ViU2V0dGluZ3NJbXBs
OjpXZWJTZXR0aW5nc0ltcGwoU2V0dGluZ3MqIHNldHRpbmdzKQogICAgICwgbV9jb21wb3NpdGVU
b1RleHR1cmVFbmFibGVkKGZhbHNlKQogICAgICwgbV9zaG93RlBTQ291bnRlcihmYWxzZSkKICAg
ICAsIG1fc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGZhbHNlKQorICAgICwgbV9wZXJUaWxlUGFpbnRp
bmcoZmFsc2UpCiAgICAgLCBtX3VzZVRocmVhZGVkQ29tcG9zaXRvcihmYWxzZSkKIHsKICAgICBB
U1NFUlQoc2V0dGluZ3MpOwpAQCAtNDcwLDQgKzQ3MSw5IEBAIHZvaWQgV2ViU2V0dGluZ3NJbXBs
OjpzZXRWaXN1YWxXb3JkTW92ZW1lbnRFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBtX3NldHRp
bmdzLT5zZXRWaXN1YWxXb3JkTW92ZW1lbnRFbmFibGVkKGVuYWJsZWQpOwogfQogCit2b2lkIFdl
YlNldHRpbmdzSW1wbDo6c2V0UGVyVGlsZVBhaW50aW5nKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBt
X3BlclRpbGVQYWludGluZyA9IGVuYWJsZWQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAppbmRleCAwNzhh
NjhjYWI2NjNmZGQ1YmJlYjQzNjVlNGM3MmQ1MTNmMmU4ZjM3Li45MWI0YjYxZGYwODIyNGUzNGFk
NmYxN2Y5NTkwZGFjODM5N2Y1NTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTZXR0aW5nc0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTZXR0aW5nc0ltcGwuaApAQCAtMTI1LDEyICsxMjUsMTUgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzZXRFbmFibGVTY3JvbGxBbmltYXRvcihib29sKTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0VmlzdWFsV29yZE1vdmVtZW50RW5hYmxlZChib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0UGVyVGlsZVBhaW50aW5nKGJvb2wpOworICAgIHZpcnR1YWwgYm9vbCBwZXJUaWxlUGFpbnRp
bmcoKSBjb25zdCB7IHJldHVybiBtX3BlclRpbGVQYWludGluZzsgfQogCiBwcml2YXRlOgogICAg
IFdlYkNvcmU6OlNldHRpbmdzKiBtX3NldHRpbmdzOwogICAgIGJvb2wgbV9jb21wb3NpdGVUb1Rl
eHR1cmVFbmFibGVkOwogICAgIGJvb2wgbV9zaG93RlBTQ291bnRlcjsKICAgICBib29sIG1fc2hv
d1BsYXRmb3JtTGF5ZXJUcmVlOworICAgIGJvb2wgbV9wZXJUaWxlUGFpbnRpbmc7CiAgICAgYm9v
bCBtX3VzZVRocmVhZGVkQ29tcG9zaXRvcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCBmZWRkNmYwODQ5ODc2Y2YwMjJkMWRkNGIyYmQ1NTM4
YmZkNDA2MjJlLi5kNDU3NzMzYTcwM2FjNjZiYjkxYTk3ZDJhNjAxMjYwNzdkYjljZjg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0yNjc2LDYgKzI2
NzYsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3Rp
dmUoYm9vbCBhY3RpdmUpCiAgICAgICAgIGNjU2V0dGluZ3MuZW5hYmxlQ29tcG9zaXRvclRocmVh
ZCA9IHNldHRpbmdzKCktPnVzZVRocmVhZGVkQ29tcG9zaXRvcigpOwogICAgICAgICBjY1NldHRp
bmdzLnNob3dGUFNDb3VudGVyID0gc2V0dGluZ3MoKS0+c2hvd0ZQU0NvdW50ZXIoKTsKICAgICAg
ICAgY2NTZXR0aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWUgPSBzZXR0aW5ncygpLT5zaG93UGxh
dGZvcm1MYXllclRyZWUoKTsKKyAgICAgICAgY2NTZXR0aW5ncy5wZXJUaWxlUGFpbnRpbmcgPSBz
ZXR0aW5ncygpLT5wZXJUaWxlUGFpbnRpbmcoKTsKIAogICAgICAgICBtX25vbkNvbXBvc2l0ZWRD
b250ZW50SG9zdCA9IE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6Y3JlYXRlKFdlYlZpZXdJbXBs
Q29udGVudFBhaW50ZXI6OmNyZWF0ZSh0aGlzKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdCA9
IENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKHRoaXMsIGNjU2V0dGluZ3MpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114787</attachid>
            <date>2011-11-11 15:29:42 -0800</date>
            <delta_ts>2011-11-15 12:37:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>per-tile-painting.diff</filename>
            <type>text/plain</type>
            <size>20339</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">Y29tbWl0IGNkNTExYmY0OTQxYjliYmUwMWQ0NmU5OWFmMDlhNWM1YjkyZDM5OTgKQXV0aG9yOiBE
YXZpZCBSZXZlbWFuIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KRGF0ZTogICBUaHUgTm92IDEwIDE1
OjQ3OjQ1IDIwMTEgLTA4MDAKCiAgICBbQ2hyb21pdW1dIEltcGxlbWVudCB0aWxlLXNpemVkIHBh
aW50aW5nIHVzaW5nIFNrUGljdHVyZS4KCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzBkYWY2MC4uNDNjNjFiZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDExLTExLTEwICBEYXZpZCBSZXZlbWFuICA8
cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBJbXBsZW1lbnQgdGls
ZS1zaXplZCBwYWludGluZyB1c2luZyBTa1BpY3R1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTg2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXh0dXJlIHVwbG9hZGVyIHRoYXQgcGFpbnRz
IHRpbGUtc2l6ZWQgY2h1bmtzIHVzaW5nIFNrUGljdHVyZQorICAgICAgICByZWNvcmRpbmcgYW5k
IHBsYXliYWNrLiBFeHBvc2Ugc2V0dGluZyB3aGljaCBhbGxvd3MgdGhpcyB0ZXh0dXJlCisgICAg
ICAgIHVwZGF0ZXIgdG8gYmUgZW5hYmxlZC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIENvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlOjpwcmVwYXJlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwYWludENvbnRlbnRzUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpCaXRtYXBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6On5CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6c2FtcGxlZFRleGVsRm9ybWF0
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OnByZXBhcmVUZXh0dXJlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0
ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZTo6dGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6b3JpZW50YXRpb24pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtOjpjcmVhdGVUZXh0dXJlVXBkYXRlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1NldHRpbmdzOjpDQ1NldHRpbmdzKToKKwogMjAxMS0xMS0xMSAg
RGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1
bV0gSW5pdGlhbGl6ZSBjb21wb3NpdG9yIHJlc291cmNlcyBwcmlvciB0byBwYWludGluZy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQppbmRleCBjNjFhY2RlLi4zODc5MDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0z
NDQ5LDYgKzM0NDksOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2NnL1RyYW5z
Zm9ybWF0aW9uTWF0cml4Q0cuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCcsCisgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52
YXMyRExheWVyQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHAnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGMzYzY0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0
bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTAsMCArMSwxMTQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKKyNpZiBVU0UoU0tJQSkKKworI2luY2x1ZGUgIkJpdG1hcFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIKKworI2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9t
aXVtLmgiCisjaW5jbHVkZSAiU2tDYW52YXMuaCIKKyNpbmNsdWRlICJza2lhL2V4dC9wbGF0Zm9y
bV9jYW52YXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitCaXRtYXBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKEJpdG1hcFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFn
ZWRUZXh0dXJlPiB0ZXh0dXJlKQorICAgIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0
ZXh0dXJlKQorICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKK3sKK30KKwor
dm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpw
cmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAg
ICBzaXplX3QgYnVmZmVyU2l6ZSA9IHNvdXJjZVJlY3Qud2lkdGgoKSAqIHNvdXJjZVJlY3QuaGVp
Z2h0KCkgKiA0OworICAgIG1fcGl4ZWxEYXRhID0gYWRvcHRBcnJheVB0cihuZXcgdWludDhfdFti
dWZmZXJTaXplXSk7Cit9CisKK3ZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZTo6cGFpbnRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCkKK3sKKyAgICBBU1NFUlQobV9waXhlbERhdGEuZ2V0KCkpOworICAgIE93blB0cjxTa0Nh
bnZhcz4gY2FudmFzID0gYWRvcHRQdHIobmV3IHNraWE6OlBsYXRmb3JtQ2FudmFzKHNvdXJjZVJl
Y3Qud2lkdGgoKSwgc291cmNlUmVjdC5oZWlnaHQoKSwgZmFsc2UsIG1fcGl4ZWxEYXRhLmdldCgp
KSk7CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb250ZW50c1JlY3QoY2FudmFzLmdldCgp
LCBzb3VyY2VSZWN0KTsKK30KKwordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIHRleHR1cmUoKS0+YmluZFRleHR1cmUo
Y29udGV4dCwgYWxsb2NhdG9yKTsKKyAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJl
UmVjdChjb250ZXh0LCB0ZXh0dXJlKCktPmZvcm1hdCgpLCBkZXN0UmVjdCwgbV9waXhlbERhdGEu
Z2V0KCkpOworICAgIG1fcGl4ZWxEYXRhLmNsZWFyKCk7Cit9CisKK1Bhc3NSZWZQdHI8Qml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcj4gQml0bWFwU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21p
dW0+IHBhaW50ZXIsIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKHBhaW50ZXIs
IHVzZU1hcFRleFN1YkltYWdlKSk7Cit9CisKK0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFz
c093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgYm9vbCB1c2VNYXBUZXhTdWJJ
bWFnZSkKKyAgICA6IFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIocGFpbnRlcikK
KyAgICAsIG1fdGV4U3ViSW1hZ2UodXNlTWFwVGV4U3ViSW1hZ2UpCit7Cit9CisKK0JpdG1hcFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6On5CaXRtYXBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyKCkKK3sKK30KKworUGFzc1JlZlB0cjxMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlPiBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpj
cmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKQoreworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgVGV4dHVyZSh0aGlzLCBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1hbmFnZXIpKSk7
Cit9CisKK0xheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdCBCaXRtYXBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVu
dW0gdGV4dHVyZUZvcm1hdCkKK3sKKyAgICAvLyBUaGUgY29tcG9uZW50IG9yZGVyIG1heSBiZSBi
Z3JhIGlmIHdlIHVwbG9hZGVkIGJncmEgcGl4ZWxzIHRvIHJnYmEgdGV4dHVyZXMuCisgICAgcmV0
dXJuIFBsYXRmb3JtQ29sb3I6OnNhbWVDb21wb25lbnRPcmRlcih0ZXh0dXJlRm9ybWF0KSA/Cisg
ICAgICAgICAgICBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBIDog
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0QkdSQTsKK30KKwordm9pZCBC
aXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGNv
bnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJv
cmRlclRleGVscykKK3sKKyAgICBtX3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0aWxlU2l6
ZSk7CisgICAgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50
cyhjb250ZW50UmVjdCwgdGlsZVNpemUsIGJvcmRlclRleGVscyk7Cit9CisKK3ZvaWQgQml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50c1JlY3QoU2tD
YW52YXMqIGNhbnZhcywgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCkKK3sKKyAgICAvLyBUcmFu
c2xhdGUgdGhlIG9yaWdpbiBvZiBjb250ZW50UmVjdCB0byB0aGF0IG9mIHNvdXJjZVJlY3QuCisg
ICAgY2FudmFzLT50cmFuc2xhdGUoY29udGVudFJlY3QoKS54KCkgLSBzb3VyY2VSZWN0LngoKSwK
KyAgICAgICAgICAgICAgICAgICAgICBjb250ZW50UmVjdCgpLnkoKSAtIHNvdXJjZVJlY3QueSgp
KTsKKyAgICBkcmF3UGljdHVyZShjYW52YXMpOworfQorCit2b2lkIEJpdG1hcFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCBHQzNEZW51bSBmb3JtYXQsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBj
b25zdCB1aW50OF90KiBwaXhlbHMpCit7CisgICAgbV90ZXhTdWJJbWFnZS51cGxvYWQocGl4ZWxz
LCBkZXN0UmVjdCwgZGVzdFJlY3QsIGRlc3RSZWN0LCBmb3JtYXQsIGNvbnRleHQpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYgLy8gVVNFKFNLSUEpCisjZW5kaWYgLy8gVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0
bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjlmM2E5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBCaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyX2gKKyNkZWZpbmUgQml0bWFwU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcl9oCisKKyNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCisjaWYgVVNFKFNLSUEpCisKKyNpbmNsdWRlICJMYXllclRleHR1cmVTdWJJ
bWFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29sb3IuaCIKKyNpbmNsdWRlICJTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyIHsKK3B1YmxpYzoKKyAgICBjbGFzcyBUZXh0
dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIHB1YmxpYzoK
KyAgICAgICAgVGV4dHVyZShCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
KiwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBw
cmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBwYWludENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0
dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgQml0bWFwU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBtX3RleHR1cmVV
cGRhdGVyOyB9CisKKyAgICAgICAgT3duQXJyYXlQdHI8dWludDhfdD4gbV9waXhlbERhdGE7Cisg
ICAgICAgIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIG1fdGV4dHVy
ZVVwZGF0ZXI7CisgICAgfTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IGNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRl
ckNocm9taXVtPiwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSk7CisgICAgdmlydHVhbCB+Qml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcigpOworCisgICAgdmlydHVhbCBQYXNz
UmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVy
ZU1hbmFnZXIqKTsKKyAgICB2aXJ0dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyByZXR1
cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Qm90dG9tVXBPcmllbnRhdGlvbjsgfQorICAgIHZpcnR1
YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJl
Rm9ybWF0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBj
b250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMpOwor
ICAgIHZvaWQgcGFpbnRDb250ZW50c1JlY3QoU2tDYW52YXMqLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0KTsKKyAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwg
R0MzRGVudW0gZm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgdWludDhfdCog
cGl4ZWxzKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBCaXRtYXBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBib29s
IHVzZU1hcFRleFN1YkltYWdlKTsKKworICAgIExheWVyVGV4dHVyZVN1YkltYWdlIG1fdGV4U3Vi
SW1hZ2U7Cit9OworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2VuZGlmIC8vIFVTRShTS0lBKQor
I2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNlbmRpZiAvLyBCaXRtYXBT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXll
ckNocm9taXVtLmNwcAppbmRleCA3MGI1ZjgyLi5kMGI1MDZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVu
dExheWVyQ2hyb21pdW0uY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiQ29udGVudExh
eWVyQ2hyb21pdW0uaCIKIAogI2luY2x1ZGUgIkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuaCIKKyNpbmNsdWRlICJCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmgiCiAjaW5jbHVkZSAiRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmgiCiAjaW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJMYXll
clJlbmRlcmVyQ2hyb21pdW0uaCIKQEAgLTE0MCw2ICsxNDEsMTEgQEAgdm9pZCBDb250ZW50TGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0KiBo
b3N0KQogICAgICAgICBtX3RleHR1cmVVcGRhdGVyID0gRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRl
KG1fZGVsZWdhdGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGlmIChob3N0LT5z
ZXR0aW5ncygpLnBlclRpbGVQYWludGluZykgeworICAgICAgICBtX3RleHR1cmVVcGRhdGVyID0g
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENvbnRlbnRM
YXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSwgaG9zdC0+bGF5ZXJSZW5kZXJlckNhcGFi
aWxpdGllcygpLnVzaW5nTWFwU3ViKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICNlbmRpZiAv
LyBVU0UoU0tJQSkKIAogICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpjcmVhdGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKG1fZGVsZWdh
dGUpLCBob3N0LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdNYXBTdWIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCA1ZWM0YzBkLi5iMTc5N2NmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtNzIsMTMgKzcyLDE1IEBAIHN0cnVjdCBDQ1NldHRpbmdz
IHsKICAgICAgICAgICAgICwgY29tcG9zaXRlT2Zmc2NyZWVuKGZhbHNlKQogICAgICAgICAgICAg
LCBlbmFibGVDb21wb3NpdG9yVGhyZWFkKGZhbHNlKQogICAgICAgICAgICAgLCBzaG93RlBTQ291
bnRlcihmYWxzZSkKLSAgICAgICAgICAgICwgc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGZhbHNlKSB7
IH0KKyAgICAgICAgICAgICwgc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGZhbHNlKQorICAgICAgICAg
ICAgLCBwZXJUaWxlUGFpbnRpbmcoZmFsc2UpIHsgfQogCiAgICAgYm9vbCBhY2NlbGVyYXRlUGFp
bnRpbmc7CiAgICAgYm9vbCBjb21wb3NpdGVPZmZzY3JlZW47CiAgICAgYm9vbCBlbmFibGVDb21w
b3NpdG9yVGhyZWFkOwogICAgIGJvb2wgc2hvd0ZQU0NvdW50ZXI7CiAgICAgYm9vbCBzaG93UGxh
dGZvcm1MYXllclRyZWU7CisgICAgYm9vbCBwZXJUaWxlUGFpbnRpbmc7CiB9OwogCiAvLyBQcm92
aWRlcyBpbmZvcm1hdGlvbiBvbiBhbiBJbXBsJ3MgcmVuZGVyaW5nIGNhcGFiaWxpdGllcyBiYWNr
IHRvIHRoZSBDQ0xheWVyVHJlZUhvc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZDFl
OGVkOS4uYzVkMmZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBA
QAorMjAxMS0xMS0xMCAgRGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFtDaHJvbWl1bV0gSW1wbGVtZW50IHRpbGUtc2l6ZWQgcGFpbnRpbmcgdXNpbmcgU2tQ
aWN0dXJlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzE4NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgcGVyVGlsZVBhaW50aW5nIHNldHRpbmcgdGhhdCBpcyB1c2VkIGJ5IGNvbXBvc2l0b3IgdG8g
ZGV0ZXJtaW5lCisgICAgICAgIHdoYXQgdGV4dHVyZSB1cGxvYWRlciB0byB1c2UuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgICogcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3M6OlNldHRpbmdzKToK
KyAgICAgICAgKiBwdWJsaWMvV2ViU2V0dGluZ3MuaDoKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJU
cmVlVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdz
OjpvcGVyYXRvciBDQ1NldHRpbmdzKToKKyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OnNldFBlclRpbGVQYWludGluZyk6Cisg
ICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0
aW5nc0ltcGw6OnBlclRpbGVQYWludGluZyk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0FjdGl2ZSk6CisKIDIwMTEtMTEtMTAgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gIFJvbGxlZCBERVBTLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCmluZGV4IGFhOGIy
MTMuLjhjOWM4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkxheWVyVHJlZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJM
YXllclRyZWVWaWV3LmgKQEAgLTQ1LDExICs0NSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIFNldHRp
bmdzKCkKICAgICAgICAgICAgIDogYWNjZWxlcmF0ZVBhaW50aW5nKGZhbHNlKQogICAgICAgICAg
ICAgLCBjb21wb3NpdGVPZmZzY3JlZW4oZmFsc2UpCi0gICAgICAgICAgICAsIGVuYWJsZUNvbXBv
c2l0b3JUaHJlYWQoZmFsc2UpIHsgfQorICAgICAgICAgICAgLCBlbmFibGVDb21wb3NpdG9yVGhy
ZWFkKGZhbHNlKQorICAgICAgICAgICAgLCBwZXJUaWxlUGFpbnRpbmcoZmFsc2UpIHsgfQogCiAg
ICAgICAgIGJvb2wgYWNjZWxlcmF0ZVBhaW50aW5nOwogICAgICAgICBib29sIGNvbXBvc2l0ZU9m
ZnNjcmVlbjsKICAgICAgICAgYm9vbCBlbmFibGVDb21wb3NpdG9yVGhyZWFkOworICAgICAgICBi
b29sIHBlclRpbGVQYWludGluZzsKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KICAgICAgICAg
b3BlcmF0b3IgV2ViQ29yZTo6Q0NTZXR0aW5ncygpIGNvbnN0OwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAppbmRleCAzOTNiYjg3Li4yZWQ1YTg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKQEAgLTEz
Myw2ICsxMzMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZVNjcm9sbEFu
aW1hdG9yKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SGl4aWU3NldlYlNvY2tldFBy
b3RvY29sRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc3VhbFdvcmRN
b3ZlbWVudEVuYWJsZWQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRQZXJUaWxlUGFp
bnRpbmcoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwZXJUaWxlUGFpbnRpbmcoKSBjb25z
dCA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB+V2ViU2V0dGluZ3MoKSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAKaW5kZXggMDJkNmNhNi4u
MGY4ZWNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJU
cmVlVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVl
Vmlldy5jcHAKQEAgLTM5LDYgKzM5LDcgQEAgV2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3M6Om9w
ZXJhdG9yIENDU2V0dGluZ3MoKSBjb25zdAogICAgIHNldHRpbmdzLmFjY2VsZXJhdGVQYWludGlu
ZyA9IGFjY2VsZXJhdGVQYWludGluZzsKICAgICBzZXR0aW5ncy5jb21wb3NpdGVPZmZzY3JlZW4g
PSBjb21wb3NpdGVPZmZzY3JlZW47CiAgICAgc2V0dGluZ3MuZW5hYmxlQ29tcG9zaXRvclRocmVh
ZCA9IGVuYWJsZUNvbXBvc2l0b3JUaHJlYWQ7CisgICAgc2V0dGluZ3MucGVyVGlsZVBhaW50aW5n
ID0gcGVyVGlsZVBhaW50aW5nOwogCiAgICAgLy8gRklYTUU6IHNob3dGUFNDb3VudGVyIC8gc2hv
d1BsYXRmb3JtTGF5ZXJUcmVlIGFyZW4ndCBzdXBwb3J0ZWQgY3VycmVudGx5LgogICAgIHNldHRp
bmdzLnNob3dGUFNDb3VudGVyID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU2V0dGluZ3NJbXBsLmNwcAppbmRleCA3N2Y5YzI4Li41ZmQxZjc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKQEAgLTUwLDYgKzUw
LDcgQEAgV2ViU2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwoU2V0dGluZ3MqIHNldHRpbmdz
KQogICAgICwgbV9jb21wb3NpdGVUb1RleHR1cmVFbmFibGVkKGZhbHNlKQogICAgICwgbV9zaG93
RlBTQ291bnRlcihmYWxzZSkKICAgICAsIG1fc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGZhbHNlKQor
ICAgICwgbV9wZXJUaWxlUGFpbnRpbmcoZmFsc2UpCiAgICAgLCBtX3VzZVRocmVhZGVkQ29tcG9z
aXRvcihmYWxzZSkKIHsKICAgICBBU1NFUlQoc2V0dGluZ3MpOwpAQCAtNDcwLDQgKzQ3MSw5IEBA
IHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRWaXN1YWxXb3JkTW92ZW1lbnRFbmFibGVkKGJvb2wg
ZW5hYmxlZCkKICAgICBtX3NldHRpbmdzLT5zZXRWaXN1YWxXb3JkTW92ZW1lbnRFbmFibGVkKGVu
YWJsZWQpOwogfQogCit2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0UGVyVGlsZVBhaW50aW5nKGJv
b2wgZW5hYmxlZCkKK3sKKyAgICBtX3BlclRpbGVQYWludGluZyA9IGVuYWJsZWQ7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU2V0dGluZ3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0
aW5nc0ltcGwuaAppbmRleCAwNzhhNjhjLi45MWI0YjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaApAQCAtMTI1LDEyICsxMjUsMTUgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVTY3JvbGxBbmltYXRvcihib29sKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZChib29sKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmlzdWFsV29yZE1vdmVtZW50RW5hYmxlZChib29sKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0UGVyVGlsZVBhaW50aW5nKGJvb2wpOworICAgIHZpcnR1YWwgYm9vbCBw
ZXJUaWxlUGFpbnRpbmcoKSBjb25zdCB7IHJldHVybiBtX3BlclRpbGVQYWludGluZzsgfQogCiBw
cml2YXRlOgogICAgIFdlYkNvcmU6OlNldHRpbmdzKiBtX3NldHRpbmdzOwogICAgIGJvb2wgbV9j
b21wb3NpdGVUb1RleHR1cmVFbmFibGVkOwogICAgIGJvb2wgbV9zaG93RlBTQ291bnRlcjsKICAg
ICBib29sIG1fc2hvd1BsYXRmb3JtTGF5ZXJUcmVlOworICAgIGJvb2wgbV9wZXJUaWxlUGFpbnRp
bmc7CiAgICAgYm9vbCBtX3VzZVRocmVhZGVkQ29tcG9zaXRvcjsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCBmZWRkNmYwLi5kNDU3NzMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0yNjc2LDYg
KzI2NzYsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdB
Y3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgICAgIGNjU2V0dGluZ3MuZW5hYmxlQ29tcG9zaXRvclRo
cmVhZCA9IHNldHRpbmdzKCktPnVzZVRocmVhZGVkQ29tcG9zaXRvcigpOwogICAgICAgICBjY1Nl
dHRpbmdzLnNob3dGUFNDb3VudGVyID0gc2V0dGluZ3MoKS0+c2hvd0ZQU0NvdW50ZXIoKTsKICAg
ICAgICAgY2NTZXR0aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWUgPSBzZXR0aW5ncygpLT5zaG93
UGxhdGZvcm1MYXllclRyZWUoKTsKKyAgICAgICAgY2NTZXR0aW5ncy5wZXJUaWxlUGFpbnRpbmcg
PSBzZXR0aW5ncygpLT5wZXJUaWxlUGFpbnRpbmcoKTsKIAogICAgICAgICBtX25vbkNvbXBvc2l0
ZWRDb250ZW50SG9zdCA9IE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6Y3JlYXRlKFdlYlZpZXdJ
bXBsQ29udGVudFBhaW50ZXI6OmNyZWF0ZSh0aGlzKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dCA9IENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKHRoaXMsIGNjU2V0dGluZ3MpOwo=
</data>
<flag name="commit-queue"
          id="113611"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115221</attachid>
            <date>2011-11-15 12:37:19 -0800</date>
            <delta_ts>2011-11-18 15:28:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>per-tile-painting.diff</filename>
            <type>text/plain</type>
            <size>20391</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">Y29tbWl0IDQ4NmRlYjc4NzM0YjdlOTA5ODIzODBmMWE4YjYwYTgyODI2NGNjMzkKQXV0aG9yOiBE
YXZpZCBSZXZlbWFuIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KRGF0ZTogICBNb24gTm92IDE0IDIx
OjMyOjA1IDIwMTEgLTA4MDAKCiAgICBbQ2hyb21pdW1dIEltcGxlbWVudCB0aWxlLXNpemVkIHBh
aW50aW5nIHVzaW5nIFNrUGljdHVyZS4KCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ5M2YzNS4uOTMxOWNkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDExLTExLTEwICBEYXZpZCBSZXZlbWFuICA8
cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBJbXBsZW1lbnQgdGls
ZS1zaXplZCBwYWludGluZyB1c2luZyBTa1BpY3R1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTg2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXh0dXJlIHVwbG9hZGVyIHRoYXQgcGFpbnRz
IHRpbGUtc2l6ZWQgY2h1bmtzIHVzaW5nIFNrUGljdHVyZQorICAgICAgICByZWNvcmRpbmcgYW5k
IHBsYXliYWNrLiBFeHBvc2Ugc2V0dGluZyB3aGljaCBhbGxvd3MgdGhpcyB0ZXh0dXJlCisgICAg
ICAgIHVwZGF0ZXIgdG8gYmUgZW5hYmxlZC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIENvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlOjpwcmVwYXJlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwYWludENvbnRlbnRzUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpCaXRtYXBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6On5CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6c2FtcGxlZFRleGVsRm9ybWF0
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OnByZXBhcmVUZXh0dXJlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0
ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZTo6dGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6b3JpZW50YXRpb24pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtOjpjcmVhdGVUZXh0dXJlVXBkYXRlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1NldHRpbmdzOjpDQ1NldHRpbmdzKToKKwogMjAxMS0xMS0xNCAg
RGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1
bV0gSW5pdGlhbGl6ZSBjb21wb3NpdG9yIHJlc291cmNlcyBwcmlvciB0byBwYWludGluZy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQppbmRleCBlODMwNjFkLi5lZTJhOTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0z
NDU2LDYgKzM0NTYsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2NnL1RyYW5z
Zm9ybWF0aW9uTWF0cml4Q0cuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCcsCisgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52
YXMyRExheWVyQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHAnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYmQ5NzUyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0
bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTAsMCArMSwxMTQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKKyNpZiBVU0UoU0tJQSkKKworI2luY2x1ZGUgIkJpdG1hcFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIKKworI2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9t
aXVtLmgiCisjaW5jbHVkZSAiU2tDYW52YXMuaCIKKyNpbmNsdWRlICJza2lhL2V4dC9wbGF0Zm9y
bV9jYW52YXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitCaXRtYXBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKEJpdG1hcFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFn
ZWRUZXh0dXJlPiB0ZXh0dXJlKQorICAgIDogQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZSh0ZXh0dXJlKQorICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKK3sK
K30KKwordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlOjpwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykK
K3sKKyAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IHNvdXJjZVJlY3Qud2lkdGgoKSAqIHNvdXJjZVJl
Y3QuaGVpZ2h0KCkgKiA0OworICAgIG1fcGl4ZWxEYXRhID0gYWRvcHRBcnJheVB0cihuZXcgdWlu
dDhfdFtidWZmZXJTaXplXSk7Cit9CisKK3ZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cGFpbnRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCkKK3sKKyAgICBBU1NFUlQobV9waXhlbERhdGEuZ2V0KCkpOworICAgIE93blB0
cjxTa0NhbnZhcz4gY2FudmFzID0gYWRvcHRQdHIobmV3IHNraWE6OlBsYXRmb3JtQ2FudmFzKHNv
dXJjZVJlY3Qud2lkdGgoKSwgc291cmNlUmVjdC5oZWlnaHQoKSwgZmFsc2UsIG1fcGl4ZWxEYXRh
LmdldCgpKSk7CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb250ZW50c1JlY3QoY2FudmFz
LmdldCgpLCBzb3VyY2VSZWN0KTsKK30KKwordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIHRleHR1cmUoKS0+YmluZFRl
eHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKKyAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVU
ZXh0dXJlUmVjdChjb250ZXh0LCB0ZXh0dXJlKCktPmZvcm1hdCgpLCBkZXN0UmVjdCwgbV9waXhl
bERhdGEuZ2V0KCkpOworICAgIG1fcGl4ZWxEYXRhLmNsZWFyKCk7Cit9CisKK1Bhc3NSZWZQdHI8
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcj4gQml0bWFwU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQYWludGVy
Q2hyb21pdW0+IHBhaW50ZXIsIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKHBh
aW50ZXIsIHVzZU1hcFRleFN1YkltYWdlKSk7Cit9CisKK0JpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgYm9vbCB1c2VNYXBU
ZXhTdWJJbWFnZSkKKyAgICA6IFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIocGFp
bnRlcikKKyAgICAsIG1fdGV4U3ViSW1hZ2UodXNlTWFwVGV4U3ViSW1hZ2UpCit7Cit9CisKK0Jp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6On5CaXRtYXBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyKCkKK3sKK30KKworUGFzc1JlZlB0cjxMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlPiBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKQoreworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgVGV4dHVyZSh0aGlzLCBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1hbmFn
ZXIpKSk7Cit9CisKK0xheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdCBCaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpzYW1wbGVkVGV4ZWxGb3JtYXQo
R0MzRGVudW0gdGV4dHVyZUZvcm1hdCkKK3sKKyAgICAvLyBUaGUgY29tcG9uZW50IG9yZGVyIG1h
eSBiZSBiZ3JhIGlmIHdlIHVwbG9hZGVkIGJncmEgcGl4ZWxzIHRvIHJnYmEgdGV4dHVyZXMuCisg
ICAgcmV0dXJuIFBsYXRmb3JtQ29sb3I6OnNhbWVDb21wb25lbnRPcmRlcih0ZXh0dXJlRm9ybWF0
KSA/CisgICAgICAgICAgICBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRS
R0JBIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0QkdSQTsKK30KKwor
dm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRl
bnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwg
aW50IGJvcmRlclRleGVscykKK3sKKyAgICBtX3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0
aWxlU2l6ZSk7CisgICAgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRD
b250ZW50cyhjb250ZW50UmVjdCwgdGlsZVNpemUsIGJvcmRlclRleGVscyk7Cit9CisKK3ZvaWQg
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50c1Jl
Y3QoU2tDYW52YXMqIGNhbnZhcywgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCkKK3sKKyAgICAv
LyBUcmFuc2xhdGUgdGhlIG9yaWdpbiBvZiBjb250ZW50UmVjdCB0byB0aGF0IG9mIHNvdXJjZVJl
Y3QuCisgICAgY2FudmFzLT50cmFuc2xhdGUoY29udGVudFJlY3QoKS54KCkgLSBzb3VyY2VSZWN0
LngoKSwKKyAgICAgICAgICAgICAgICAgICAgICBjb250ZW50UmVjdCgpLnkoKSAtIHNvdXJjZVJl
Y3QueSgpKTsKKyAgICBkcmF3UGljdHVyZShjYW52YXMpOworfQorCit2b2lkIEJpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBHQzNEZW51bSBmb3JtYXQsIGNvbnN0IEludFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCB1aW50OF90KiBwaXhlbHMpCit7CisgICAgbV90ZXhTdWJJbWFnZS51cGxvYWQo
cGl4ZWxzLCBkZXN0UmVjdCwgZGVzdFJlY3QsIGRlc3RSZWN0LCBmb3JtYXQsIGNvbnRleHQpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYgLy8gVVNFKFNLSUEpCisjZW5kaWYg
Ly8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmYjM3YmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRl
ZiBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyX2gKKyNkZWZpbmUgQml0
bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcl9oCisKKyNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCisjaWYgVVNFKFNLSUEpCisKKyNpbmNsdWRlICJMYXllclRleHR1
cmVTdWJJbWFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29sb3IuaCIKKyNpbmNsdWRlICJTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1Ymxp
YyBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyIHsKK3B1YmxpYzoKKyAgICBjbGFz
cyBUZXh0dXJlIDogcHVibGljIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgewor
ICAgIHB1YmxpYzoKKyAgICAgICAgVGV4dHVyZShCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyKiwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOworCisgICAgICAgIHZp
cnR1YWwgdm9pZCBwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0
b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250
ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgQml0bWFwU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVy
biBtX3RleHR1cmVVcGRhdGVyOyB9CisKKyAgICAgICAgT3duQXJyYXlQdHI8dWludDhfdD4gbV9w
aXhlbERhdGE7CisgICAgICAgIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIqIG1fdGV4dHVyZVVwZGF0ZXI7CisgICAgfTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IGNyZWF0ZShQYXNzT3duUHRy
PExheWVyUGFpbnRlckNocm9taXVtPiwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSk7CisgICAgdmly
dHVhbCB+Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcigpOworCisgICAg
dmlydHVhbCBQYXNzUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRl
eHR1cmUoVGV4dHVyZU1hbmFnZXIqKTsKKyAgICB2aXJ0dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0
aW9uKCkgeyByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Qm90dG9tVXBPcmllbnRhdGlvbjsg
fQorICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNE
ZW51bSB0ZXh0dXJlRm9ybWF0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25z
dCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3Jk
ZXJUZXhlbHMpOworICAgIHZvaWQgcGFpbnRDb250ZW50c1JlY3QoU2tDYW52YXMqLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0KTsKKyAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNz
Q29udGV4dDNEKiwgR0MzRGVudW0gZm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgdWludDhfdCogcGl4ZWxzKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBCaXRtYXBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hy
b21pdW0+LCBib29sIHVzZU1hcFRleFN1YkltYWdlKTsKKworICAgIExheWVyVGV4dHVyZVN1Yklt
YWdlIG1fdGV4U3ViSW1hZ2U7Cit9OworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2VuZGlmIC8v
IFVTRShTS0lBKQorI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNlbmRp
ZiAvLyBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXll
ckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NvbnRlbnRMYXllckNocm9taXVtLmNwcAppbmRleCA3MGI1ZjgyLi5kMGI1MDZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5
ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVk
ZSAiQ29udGVudExheWVyQ2hyb21pdW0uaCIKIAogI2luY2x1ZGUgIkJpdG1hcENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuaCIKKyNpbmNsdWRlICJCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKICNp
bmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKQEAgLTE0MCw2ICsxNDEsMTEgQEAgdm9p
ZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NMYXll
clRyZWVIb3N0KiBob3N0KQogICAgICAgICBtX3RleHR1cmVVcGRhdGVyID0gRnJhbWVCdWZmZXJT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoQ29udGVudExheWVyUGFp
bnRlcjo6Y3JlYXRlKG1fZGVsZWdhdGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAg
IGlmIChob3N0LT5zZXR0aW5ncygpLnBlclRpbGVQYWludGluZykgeworICAgICAgICBtX3RleHR1
cmVVcGRhdGVyID0gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3Jl
YXRlKENvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSwgaG9zdC0+bGF5ZXJS
ZW5kZXJlckNhcGFiaWxpdGllcygpLnVzaW5nTWFwU3ViKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KICNlbmRpZiAvLyBVU0UoU0tJQSkKIAogICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBCaXRtYXBD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3Jl
YXRlKG1fZGVsZWdhdGUpLCBob3N0LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdN
YXBTdWIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCAzNWJlZWZjLi5kNzBkNTJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtNzIsMTMgKzcyLDE1IEBAIHN0cnVj
dCBDQ1NldHRpbmdzIHsKICAgICAgICAgICAgICwgY29tcG9zaXRlT2Zmc2NyZWVuKGZhbHNlKQog
ICAgICAgICAgICAgLCBlbmFibGVDb21wb3NpdG9yVGhyZWFkKGZhbHNlKQogICAgICAgICAgICAg
LCBzaG93RlBTQ291bnRlcihmYWxzZSkKLSAgICAgICAgICAgICwgc2hvd1BsYXRmb3JtTGF5ZXJU
cmVlKGZhbHNlKSB7IH0KKyAgICAgICAgICAgICwgc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGZhbHNl
KQorICAgICAgICAgICAgLCBwZXJUaWxlUGFpbnRpbmcoZmFsc2UpIHsgfQogCiAgICAgYm9vbCBh
Y2NlbGVyYXRlUGFpbnRpbmc7CiAgICAgYm9vbCBjb21wb3NpdGVPZmZzY3JlZW47CiAgICAgYm9v
bCBlbmFibGVDb21wb3NpdG9yVGhyZWFkOwogICAgIGJvb2wgc2hvd0ZQU0NvdW50ZXI7CiAgICAg
Ym9vbCBzaG93UGxhdGZvcm1MYXllclRyZWU7CisgICAgYm9vbCBwZXJUaWxlUGFpbnRpbmc7CiB9
OwogCiAvLyBQcm92aWRlcyBpbmZvcm1hdGlvbiBvbiBhbiBJbXBsJ3MgcmVuZGVyaW5nIGNhcGFi
aWxpdGllcyBiYWNrIHRvIHRoZSBDQ0xheWVyVHJlZUhvc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKaW5kZXggNTMyMzJjMi4uM2FhYWMzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyOCBAQAorMjAxMS0xMS0xMCAgRGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gSW1wbGVtZW50IHRpbGUtc2l6ZWQgcGFpbnRp
bmcgdXNpbmcgU2tQaWN0dXJlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzE4NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgcGVyVGlsZVBhaW50aW5nIHNldHRpbmcgdGhhdCBpcyB1c2VkIGJ5IGNv
bXBvc2l0b3IgdG8gZGV0ZXJtaW5lCisgICAgICAgIHdoYXQgdGV4dHVyZSB1cGxvYWRlciB0byB1
c2UuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgICogcHVibGljL1dlYkxheWVy
VHJlZVZpZXcuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3M6
OlNldHRpbmdzKToKKyAgICAgICAgKiBwdWJsaWMvV2ViU2V0dGluZ3MuaDoKKyAgICAgICAgKiBz
cmMvV2ViTGF5ZXJUcmVlVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZp
ZXc6OlNldHRpbmdzOjpvcGVyYXRvciBDQ1NldHRpbmdzKToKKyAgICAgICAgKiBzcmMvV2ViU2V0
dGluZ3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpXZWJTZXR0
aW5nc0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OnNldFBlclRpbGVQ
YWludGluZyk6CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTZXR0aW5nc0ltcGw6OnBlclRpbGVQYWludGluZyk6CisgICAgICAgICogc3JjL1dl
YlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldElzQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSk6CisKIDIwMTEtMTEtMTQgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBIb3N0V2luZG93IGludmFsaWRhdGlvbiBm
dW5jdGlvbnMgc2hvdWxkIHVzZSByb290IHZpZXcgY29vcmRpbmF0ZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAppbmRleCBjYTA4Y2VkLi5m
ZDFkZmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJMYXll
clRyZWVWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJU
cmVlVmlldy5oCkBAIC00NiwxMSArNDYsMTMgQEAgcHVibGljOgogICAgICAgICBTZXR0aW5ncygp
CiAgICAgICAgICAgICA6IGFjY2VsZXJhdGVQYWludGluZyhmYWxzZSkKICAgICAgICAgICAgICwg
Y29tcG9zaXRlT2Zmc2NyZWVuKGZhbHNlKQotICAgICAgICAgICAgLCBlbmFibGVDb21wb3NpdG9y
VGhyZWFkKGZhbHNlKSB7IH0KKyAgICAgICAgICAgICwgZW5hYmxlQ29tcG9zaXRvclRocmVhZChm
YWxzZSkKKyAgICAgICAgICAgICwgcGVyVGlsZVBhaW50aW5nKGZhbHNlKSB7IH0KIAogICAgICAg
ICBib29sIGFjY2VsZXJhdGVQYWludGluZzsKICAgICAgICAgYm9vbCBjb21wb3NpdGVPZmZzY3Jl
ZW47CiAgICAgICAgIGJvb2wgZW5hYmxlQ29tcG9zaXRvclRocmVhZDsKKyAgICAgICAgYm9vbCBw
ZXJUaWxlUGFpbnRpbmc7CiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiAgICAgICAgIG9wZXJh
dG9yIFdlYkNvcmU6OkNDU2V0dGluZ3MoKSBjb25zdDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKaW5kZXggY2E5YTQzYy4uNWRjNWY1MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCkBAIC0xMzMsNiAr
MTMzLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVTY3JvbGxBbmltYXRv
cihib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEhpeGllNzZXZWJTb2NrZXRQcm90b2Nv
bEVuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXN1YWxXb3JkTW92ZW1l
bnRFbmFibGVkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGVyVGlsZVBhaW50aW5n
KGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcGVyVGlsZVBhaW50aW5nKCkgY29uc3QgPSAw
OwogCiBwcm90ZWN0ZWQ6CiAgICAgfldlYlNldHRpbmdzKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCmluZGV4IGM3NjhlMWEuLmE0NTFj
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcu
Y3BwCkBAIC00MCw2ICs0MCw3IEBAIFdlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzOjpvcGVyYXRv
ciBDQ1NldHRpbmdzKCkgY29uc3QKICAgICBzZXR0aW5ncy5hY2NlbGVyYXRlUGFpbnRpbmcgPSBh
Y2NlbGVyYXRlUGFpbnRpbmc7CiAgICAgc2V0dGluZ3MuY29tcG9zaXRlT2Zmc2NyZWVuID0gY29t
cG9zaXRlT2Zmc2NyZWVuOwogICAgIHNldHRpbmdzLmVuYWJsZUNvbXBvc2l0b3JUaHJlYWQgPSBl
bmFibGVDb21wb3NpdG9yVGhyZWFkOworICAgIHNldHRpbmdzLnBlclRpbGVQYWludGluZyA9IHBl
clRpbGVQYWludGluZzsKIAogICAgIC8vIEZJWE1FOiBzaG93RlBTQ291bnRlciAvIHNob3dQbGF0
Zm9ybUxheWVyVHJlZSBhcmVuJ3Qgc3VwcG9ydGVkIGN1cnJlbnRseS4KICAgICBzZXR0aW5ncy5z
aG93RlBTQ291bnRlciA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNldHRpbmdzSW1wbC5jcHAKaW5kZXggNGM4MTZhZi4uZjllMWQ4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCkBAIC01MCw2ICs1MCw3IEBA
IFdlYlNldHRpbmdzSW1wbDo6V2ViU2V0dGluZ3NJbXBsKFNldHRpbmdzKiBzZXR0aW5ncykKICAg
ICAsIG1fY29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZChmYWxzZSkKICAgICAsIG1fc2hvd0ZQU0Nv
dW50ZXIoZmFsc2UpCiAgICAgLCBtX3Nob3dQbGF0Zm9ybUxheWVyVHJlZShmYWxzZSkKKyAgICAs
IG1fcGVyVGlsZVBhaW50aW5nKGZhbHNlKQogICAgICwgbV91c2VUaHJlYWRlZENvbXBvc2l0b3Io
ZmFsc2UpCiB7CiAgICAgQVNTRVJUKHNldHRpbmdzKTsKQEAgLTQ3MCw0ICs0NzEsOSBAQCB2b2lk
IFdlYlNldHRpbmdzSW1wbDo6c2V0VmlzdWFsV29yZE1vdmVtZW50RW5hYmxlZChib29sIGVuYWJs
ZWQpCiAgICAgbV9zZXR0aW5ncy0+c2V0VmlzdWFsV29yZE1vdmVtZW50RW5hYmxlZChlbmFibGVk
KTsKIH0KIAordm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldFBlclRpbGVQYWludGluZyhib29sIGVu
YWJsZWQpCit7CisgICAgbV9wZXJUaWxlUGFpbnRpbmcgPSBlbmFibGVkOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNldHRpbmdzSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJ
bXBsLmgKaW5kZXggZjc0OGU5Ny4uZmY5NzgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKQEAgLTEyNSwxMiArMTI1LDE1IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlU2Nyb2xsQW5pbWF0b3IoYm9vbCk7CiAgICAgdmlydHVh
bCB2b2lkIHNldEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQoYm9vbCk7CiAgICAgdmly
dHVhbCB2b2lkIHNldFZpc3VhbFdvcmRNb3ZlbWVudEVuYWJsZWQoYm9vbCk7CisgICAgdmlydHVh
bCB2b2lkIHNldFBlclRpbGVQYWludGluZyhib29sKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGVyVGls
ZVBhaW50aW5nKCkgY29uc3QgeyByZXR1cm4gbV9wZXJUaWxlUGFpbnRpbmc7IH0KIAogcHJpdmF0
ZToKICAgICBXZWJDb3JlOjpTZXR0aW5ncyogbV9zZXR0aW5nczsKICAgICBib29sIG1fY29tcG9z
aXRlVG9UZXh0dXJlRW5hYmxlZDsKICAgICBib29sIG1fc2hvd0ZQU0NvdW50ZXI7CiAgICAgYm9v
bCBtX3Nob3dQbGF0Zm9ybUxheWVyVHJlZTsKKyAgICBib29sIG1fcGVyVGlsZVBhaW50aW5nOwog
ICAgIGJvb2wgbV91c2VUaHJlYWRlZENvbXBvc2l0b3I7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggNmFlYjcyMy4uNDg4MTQxNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMjczNCw2ICsyNzM0
LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZl
KGJvb2wgYWN0aXZlKQogICAgICAgICBjY1NldHRpbmdzLmVuYWJsZUNvbXBvc2l0b3JUaHJlYWQg
PSBzZXR0aW5ncygpLT51c2VUaHJlYWRlZENvbXBvc2l0b3IoKTsKICAgICAgICAgY2NTZXR0aW5n
cy5zaG93RlBTQ291bnRlciA9IHNldHRpbmdzKCktPnNob3dGUFNDb3VudGVyKCk7CiAgICAgICAg
IGNjU2V0dGluZ3Muc2hvd1BsYXRmb3JtTGF5ZXJUcmVlID0gc2V0dGluZ3MoKS0+c2hvd1BsYXRm
b3JtTGF5ZXJUcmVlKCk7CisgICAgICAgIGNjU2V0dGluZ3MucGVyVGlsZVBhaW50aW5nID0gc2V0
dGluZ3MoKS0+cGVyVGlsZVBhaW50aW5nKCk7CiAKICAgICAgICAgbV9ub25Db21wb3NpdGVkQ29u
dGVudEhvc3QgPSBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OmNyZWF0ZShXZWJWaWV3SW1wbENv
bnRlbnRQYWludGVyOjpjcmVhdGUodGhpcykpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QgPSBD
Q0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSh0aGlzLCBjY1NldHRpbmdzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115891</attachid>
            <date>2011-11-18 15:28:14 -0800</date>
            <delta_ts>2011-11-18 15:41:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Chromium-Implement-tile-sized-painting-using-SkPictu.patch</filename>
            <type>text/plain</type>
            <size>18131</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">RnJvbSBlNzQ0MGIwNTlmYjY2OWNjZGU2NDIxZGEzOTVmMmYzNDFiNTUzZDRhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBSZXZlbWFuIDxyZXZlbWFuQGNocm9taXVtLm9yZz4K
RGF0ZTogRnJpLCAxOCBOb3YgMjAxMSAxNToyMzoxNCAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIFtD
aHJvbWl1bV0gSW1wbGVtZW50IHRpbGUtc2l6ZWQgcGFpbnRpbmcgdXNpbmcgU2tQaWN0dXJlLgog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxODY5CgpTb3VyY2UvV2Vi
Q29yZToKCkFkZCB0ZXh0dXJlIHVwbG9hZGVyIHRoYXQgcGFpbnRzIHRpbGUtc2l6ZWQgY2h1bmtz
IHVzaW5nIFNrUGljdHVyZQpyZWNvcmRpbmcgYW5kIHBsYXliYWNrLiBFeHBvc2Ugc2V0dGluZyB3
aGljaCBhbGxvd3MgdGhpcyB0ZXh0dXJlCnVwZGF0ZXIgdG8gYmUgZW5hYmxlZC4KCk5vIG5ldyB0
ZXN0cy4gQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KClNvdXJjZS9XZWJLaXQvY2hyb21pdW06
CgpBZGQgcGVyVGlsZVBhaW50aW5nIHNldHRpbmcgdGhhdCBpcyB1c2VkIGJ5IGNvbXBvc2l0b3Ig
dG8gZGV0ZXJtaW5lCndoYXQgdGV4dHVyZSB1cGxvYWRlciB0byB1c2UuCi0tLQogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIC4uLi9C
aXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCAgIHwgIDExNCArKysr
KysrKysrKysrKysrKysrKwogLi4uL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaCAgICAgfCAgIDc0ICsrKysrKysrKysrKysKIC4uLi9ncmFwaGljcy9jaHJvbWl1bS9D
b250ZW50TGF5ZXJDaHJvbWl1bS5jcHAgICAgIHwgICAgNiArCiAuLi4vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmggICAgICAgICB8ICAgIDQgKy0KIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaCAgIHwgICAgNCArLQogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaCAgICAgICAgfCAgICAyICsKIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwICAgIHwgICAgMSArCiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwICAgICB8ICAgIDYg
KwogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmggICAgICAgfCAg
ICAzICsKIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCAgICAgICAg
IHwgICAgMiArCiAxMSBmaWxlcyBjaGFuZ2VkLCAyMTYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlv
bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQppbmRleCBmZGM4Y2M0Li43MTg2MjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNDU0LDYg
KzM0NTQsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2NnL1RyYW5zZm9ybWF0
aW9uTWF0cml4Q0cuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5o
JywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExh
eWVyQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYmQ5NzUyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTAsMCArMSwxMTQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKKyNpZiBVU0UoU0tJQSkKKworI2luY2x1ZGUgIkJpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuaCIKKworI2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVtLmgi
CisjaW5jbHVkZSAiU2tDYW52YXMuaCIKKyNpbmNsdWRlICJza2lhL2V4dC9wbGF0Zm9ybV9jYW52
YXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKEJpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0
dXJlPiB0ZXh0dXJlKQorICAgIDogQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0
ZXh0dXJlKQorICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKK3sKK30KKwor
dm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpw
cmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAg
ICBzaXplX3QgYnVmZmVyU2l6ZSA9IHNvdXJjZVJlY3Qud2lkdGgoKSAqIHNvdXJjZVJlY3QuaGVp
Z2h0KCkgKiA0OworICAgIG1fcGl4ZWxEYXRhID0gYWRvcHRBcnJheVB0cihuZXcgdWludDhfdFti
dWZmZXJTaXplXSk7Cit9CisKK3ZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZTo6cGFpbnRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCkKK3sKKyAgICBBU1NFUlQobV9waXhlbERhdGEuZ2V0KCkpOworICAgIE93blB0cjxTa0Nh
bnZhcz4gY2FudmFzID0gYWRvcHRQdHIobmV3IHNraWE6OlBsYXRmb3JtQ2FudmFzKHNvdXJjZVJl
Y3Qud2lkdGgoKSwgc291cmNlUmVjdC5oZWlnaHQoKSwgZmFsc2UsIG1fcGl4ZWxEYXRhLmdldCgp
KSk7CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb250ZW50c1JlY3QoY2FudmFzLmdldCgp
LCBzb3VyY2VSZWN0KTsKK30KKwordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIHRleHR1cmUoKS0+YmluZFRleHR1cmUo
Y29udGV4dCwgYWxsb2NhdG9yKTsKKyAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJl
UmVjdChjb250ZXh0LCB0ZXh0dXJlKCktPmZvcm1hdCgpLCBkZXN0UmVjdCwgbV9waXhlbERhdGEu
Z2V0KCkpOworICAgIG1fcGl4ZWxEYXRhLmNsZWFyKCk7Cit9CisKK1Bhc3NSZWZQdHI8Qml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcj4gQml0bWFwU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21p
dW0+IHBhaW50ZXIsIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKHBhaW50ZXIs
IHVzZU1hcFRleFN1YkltYWdlKSk7Cit9CisKK0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFz
c093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgYm9vbCB1c2VNYXBUZXhTdWJJ
bWFnZSkKKyAgICA6IFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIocGFpbnRlcikK
KyAgICAsIG1fdGV4U3ViSW1hZ2UodXNlTWFwVGV4U3ViSW1hZ2UpCit7Cit9CisKK0JpdG1hcFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6On5CaXRtYXBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyKCkKK3sKK30KKworUGFzc1JlZlB0cjxMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlPiBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpj
cmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKQoreworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgVGV4dHVyZSh0aGlzLCBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1hbmFnZXIpKSk7
Cit9CisKK0xheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdCBCaXRtYXBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVu
dW0gdGV4dHVyZUZvcm1hdCkKK3sKKyAgICAvLyBUaGUgY29tcG9uZW50IG9yZGVyIG1heSBiZSBi
Z3JhIGlmIHdlIHVwbG9hZGVkIGJncmEgcGl4ZWxzIHRvIHJnYmEgdGV4dHVyZXMuCisgICAgcmV0
dXJuIFBsYXRmb3JtQ29sb3I6OnNhbWVDb21wb25lbnRPcmRlcih0ZXh0dXJlRm9ybWF0KSA/Cisg
ICAgICAgICAgICBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBIDog
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0QkdSQTsKK30KKwordm9pZCBC
aXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGNv
bnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJv
cmRlclRleGVscykKK3sKKyAgICBtX3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0aWxlU2l6
ZSk7CisgICAgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50
cyhjb250ZW50UmVjdCwgdGlsZVNpemUsIGJvcmRlclRleGVscyk7Cit9CisKK3ZvaWQgQml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50c1JlY3QoU2tD
YW52YXMqIGNhbnZhcywgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCkKK3sKKyAgICAvLyBUcmFu
c2xhdGUgdGhlIG9yaWdpbiBvZiBjb250ZW50UmVjdCB0byB0aGF0IG9mIHNvdXJjZVJlY3QuCisg
ICAgY2FudmFzLT50cmFuc2xhdGUoY29udGVudFJlY3QoKS54KCkgLSBzb3VyY2VSZWN0LngoKSwK
KyAgICAgICAgICAgICAgICAgICAgICBjb250ZW50UmVjdCgpLnkoKSAtIHNvdXJjZVJlY3QueSgp
KTsKKyAgICBkcmF3UGljdHVyZShjYW52YXMpOworfQorCit2b2lkIEJpdG1hcFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCBHQzNEZW51bSBmb3JtYXQsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBj
b25zdCB1aW50OF90KiBwaXhlbHMpCit7CisgICAgbV90ZXhTdWJJbWFnZS51cGxvYWQocGl4ZWxz
LCBkZXN0UmVjdCwgZGVzdFJlY3QsIGRlc3RSZWN0LCBmb3JtYXQsIGNvbnRleHQpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYgLy8gVVNFKFNLSUEpCisjZW5kaWYgLy8gVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0
bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjlmYjM3YmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBCaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyX2gKKyNkZWZpbmUgQml0bWFwU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcl9oCisKKyNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCisjaWYgVVNFKFNLSUEpCisKKyNpbmNsdWRlICJMYXllclRleHR1cmVTdWJJ
bWFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29sb3IuaCIKKyNpbmNsdWRlICJTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyIHsKK3B1YmxpYzoKKyAgICBjbGFzcyBUZXh0
dXJlIDogcHVibGljIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIHB1
YmxpYzoKKyAgICAgICAgVGV4dHVyZShCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyKiwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOworCisgICAgICAgIHZpcnR1YWwg
dm9pZCBwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0Qq
LCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgQml0bWFwU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBtX3Rl
eHR1cmVVcGRhdGVyOyB9CisKKyAgICAgICAgT3duQXJyYXlQdHI8dWludDhfdD4gbV9waXhlbERh
dGE7CisgICAgICAgIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIG1f
dGV4dHVyZVVwZGF0ZXI7CisgICAgfTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJpdG1hcFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IGNyZWF0ZShQYXNzT3duUHRyPExheWVy
UGFpbnRlckNocm9taXVtPiwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSk7CisgICAgdmlydHVhbCB+
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcigpOworCisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUo
VGV4dHVyZU1hbmFnZXIqKTsKKyAgICB2aXJ0dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkg
eyByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Qm90dG9tVXBPcmllbnRhdGlvbjsgfQorICAg
IHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0
ZXh0dXJlRm9ybWF0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRS
ZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhl
bHMpOworICAgIHZvaWQgcGFpbnRDb250ZW50c1JlY3QoU2tDYW52YXMqLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0KTsKKyAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4
dDNEKiwgR0MzRGVudW0gZm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgdWlu
dDhfdCogcGl4ZWxzKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBCaXRtYXBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+
LCBib29sIHVzZU1hcFRleFN1YkltYWdlKTsKKworICAgIExheWVyVGV4dHVyZVN1YkltYWdlIG1f
dGV4U3ViSW1hZ2U7Cit9OworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2VuZGlmIC8vIFVTRShT
S0lBKQorI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNlbmRpZiAvLyBC
aXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9t
aXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRl
bnRMYXllckNocm9taXVtLmNwcAppbmRleCAwMGQzODViLi43ZThiN2I2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJv
bWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q29udGVudExheWVyQ2hyb21pdW0uY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiQ29u
dGVudExheWVyQ2hyb21pdW0uaCIKIAogI2luY2x1ZGUgIkJpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuaCIKKyNpbmNsdWRlICJCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKICNpbmNsdWRl
ICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKQEAgLTEzOCw2ICsxMzksMTEgQEAgdm9pZCBDb250
ZW50TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVI
b3N0KiBob3N0KQogICAgICAgICBtX3RleHR1cmVVcGRhdGVyID0gRnJhbWVCdWZmZXJTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoQ29udGVudExheWVyUGFpbnRlcjo6
Y3JlYXRlKG1fZGVsZWdhdGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGlmICho
b3N0LT5zZXR0aW5ncygpLnBlclRpbGVQYWludGluZykgeworICAgICAgICBtX3RleHR1cmVVcGRh
dGVyID0gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENv
bnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSwgaG9zdC0+bGF5ZXJSZW5kZXJl
ckNhcGFiaWxpdGllcygpLnVzaW5nTWFwU3ViKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICNl
bmRpZiAvLyBVU0UoU0tJQSkKIAogICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBCaXRtYXBDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKG1f
ZGVsZWdhdGUpLCBob3N0LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdNYXBTdWIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCA2ODBiNDgwLi4zYjVhYWU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtNzMsNyArNzMsOCBAQCBzdHJ1Y3QgQ0NTZXR0
aW5ncyB7CiAgICAgICAgICAgICAsIGVuYWJsZUNvbXBvc2l0b3JUaHJlYWQoZmFsc2UpCiAgICAg
ICAgICAgICAsIHNob3dGUFNDb3VudGVyKGZhbHNlKQogICAgICAgICAgICAgLCBzaG93UGxhdGZv
cm1MYXllclRyZWUoZmFsc2UpCi0gICAgICAgICAgICAsIHJlZnJlc2hSYXRlKDApIHsgfQorICAg
ICAgICAgICAgLCByZWZyZXNoUmF0ZSgwKSwKKyAgICAgICAgICAgICwgcGVyVGlsZVBhaW50aW5n
KGZhbHNlKSB7IH0KIAogICAgIGJvb2wgYWNjZWxlcmF0ZVBhaW50aW5nOwogICAgIGJvb2wgY29t
cG9zaXRlT2Zmc2NyZWVuOwpAQCAtODEsNiArODIsNyBAQCBzdHJ1Y3QgQ0NTZXR0aW5ncyB7CiAg
ICAgYm9vbCBzaG93RlBTQ291bnRlcjsKICAgICBib29sIHNob3dQbGF0Zm9ybUxheWVyVHJlZTsK
ICAgICBkb3VibGUgcmVmcmVzaFJhdGU7CisgICAgYm9vbCBwZXJUaWxlUGFpbnRpbmc7CiB9Owog
CiAvLyBQcm92aWRlcyBpbmZvcm1hdGlvbiBvbiBhbiBJbXBsJ3MgcmVuZGVyaW5nIGNhcGFiaWxp
dGllcyBiYWNrIHRvIHRoZSBDQ0xheWVyVHJlZUhvc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAppbmRleCBjYTA4Y2VkLi5mZDFkZmE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5o
CkBAIC00NiwxMSArNDYsMTMgQEAgcHVibGljOgogICAgICAgICBTZXR0aW5ncygpCiAgICAgICAg
ICAgICA6IGFjY2VsZXJhdGVQYWludGluZyhmYWxzZSkKICAgICAgICAgICAgICwgY29tcG9zaXRl
T2Zmc2NyZWVuKGZhbHNlKQotICAgICAgICAgICAgLCBlbmFibGVDb21wb3NpdG9yVGhyZWFkKGZh
bHNlKSB7IH0KKyAgICAgICAgICAgICwgZW5hYmxlQ29tcG9zaXRvclRocmVhZChmYWxzZSkKKyAg
ICAgICAgICAgICwgcGVyVGlsZVBhaW50aW5nKGZhbHNlKSB7IH0KIAogICAgICAgICBib29sIGFj
Y2VsZXJhdGVQYWludGluZzsKICAgICAgICAgYm9vbCBjb21wb3NpdGVPZmZzY3JlZW47CiAgICAg
ICAgIGJvb2wgZW5hYmxlQ29tcG9zaXRvclRocmVhZDsKKyAgICAgICAgYm9vbCBwZXJUaWxlUGFp
bnRpbmc7CiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiAgICAgICAgIG9wZXJhdG9yIFdlYkNv
cmU6OkNDU2V0dGluZ3MoKSBjb25zdDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlNldHRpbmdzLmgKaW5kZXggMTIzNmIzMi4uMGM0Njk4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCkBAIC0xMzMsNiArMTMzLDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVTY3JvbGxBbmltYXRvcihib29sKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQo
Ym9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXN1YWxXb3JkTW92ZW1lbnRFbmFibGVk
KGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGVyVGlsZVBhaW50aW5nKGJvb2wpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgcGVyVGlsZVBhaW50aW5nKCkgY29uc3QgPSAwOwogCiBwcm90
ZWN0ZWQ6CiAgICAgfldlYlNldHRpbmdzKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCmluZGV4IGM3NjhlMWEuLmE0NTFjMjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCkBAIC00
MCw2ICs0MCw3IEBAIFdlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzOjpvcGVyYXRvciBDQ1NldHRp
bmdzKCkgY29uc3QKICAgICBzZXR0aW5ncy5hY2NlbGVyYXRlUGFpbnRpbmcgPSBhY2NlbGVyYXRl
UGFpbnRpbmc7CiAgICAgc2V0dGluZ3MuY29tcG9zaXRlT2Zmc2NyZWVuID0gY29tcG9zaXRlT2Zm
c2NyZWVuOwogICAgIHNldHRpbmdzLmVuYWJsZUNvbXBvc2l0b3JUaHJlYWQgPSBlbmFibGVDb21w
b3NpdG9yVGhyZWFkOworICAgIHNldHRpbmdzLnBlclRpbGVQYWludGluZyA9IHBlclRpbGVQYWlu
dGluZzsKIAogICAgIC8vIEZJWE1FOiBzaG93RlBTQ291bnRlciAvIHNob3dQbGF0Zm9ybUxheWVy
VHJlZSBhcmVuJ3Qgc3VwcG9ydGVkIGN1cnJlbnRseS4KICAgICBzZXR0aW5ncy5zaG93RlBTQ291
bnRlciA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U2V0dGluZ3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdz
SW1wbC5jcHAKaW5kZXggMjQyYWVkMi4uYzBjMTA4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCkBAIC01MCw2ICs1MCw3IEBAIFdlYlNldHRp
bmdzSW1wbDo6V2ViU2V0dGluZ3NJbXBsKFNldHRpbmdzKiBzZXR0aW5ncykKICAgICAsIG1fY29t
cG9zaXRlVG9UZXh0dXJlRW5hYmxlZChmYWxzZSkKICAgICAsIG1fc2hvd0ZQU0NvdW50ZXIoZmFs
c2UpCiAgICAgLCBtX3Nob3dQbGF0Zm9ybUxheWVyVHJlZShmYWxzZSkKKyAgICAsIG1fcGVyVGls
ZVBhaW50aW5nKGZhbHNlKQogICAgICwgbV91c2VUaHJlYWRlZENvbXBvc2l0b3IoZmFsc2UpCiB7
CiAgICAgQVNTRVJUKHNldHRpbmdzKTsKQEAgLTQ2Niw0ICs0NjcsOSBAQCB2b2lkIFdlYlNldHRp
bmdzSW1wbDo6c2V0VmlzdWFsV29yZE1vdmVtZW50RW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAg
bV9zZXR0aW5ncy0+c2V0VmlzdWFsV29yZE1vdmVtZW50RW5hYmxlZChlbmFibGVkKTsKIH0KIAor
dm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldFBlclRpbGVQYWludGluZyhib29sIGVuYWJsZWQpCit7
CisgICAgbV9wZXJUaWxlUGFpbnRpbmcgPSBlbmFibGVkOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdz
SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKaW5k
ZXggZmEzNGFhOC4uMDg3ZmJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU2V0dGluZ3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U2V0dGluZ3NJbXBsLmgKQEAgLTEyNSwxMiArMTI1LDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc2V0RW5hYmxlU2Nyb2xsQW5pbWF0b3IoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNl
dEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lk
IHNldFZpc3VhbFdvcmRNb3ZlbWVudEVuYWJsZWQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNl
dFBlclRpbGVQYWludGluZyhib29sKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGVyVGlsZVBhaW50aW5n
KCkgY29uc3QgeyByZXR1cm4gbV9wZXJUaWxlUGFpbnRpbmc7IH0KIAogcHJpdmF0ZToKICAgICBX
ZWJDb3JlOjpTZXR0aW5ncyogbV9zZXR0aW5nczsKICAgICBib29sIG1fY29tcG9zaXRlVG9UZXh0
dXJlRW5hYmxlZDsKICAgICBib29sIG1fc2hvd0ZQU0NvdW50ZXI7CiAgICAgYm9vbCBtX3Nob3dQ
bGF0Zm9ybUxheWVyVHJlZTsKKyAgICBib29sIG1fcGVyVGlsZVBhaW50aW5nOwogICAgIGJvb2wg
bV91c2VUaHJlYWRlZENvbXBvc2l0b3I7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggNzdmNThmYi4uMTQ4M2I3NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMjc1NSw2ICsyNzU1LDggQEAgdm9p
ZCBXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wgYWN0
aXZlKQogICAgICAgICBjY1NldHRpbmdzLnNob3dGUFNDb3VudGVyID0gc2V0dGluZ3MoKS0+c2hv
d0ZQU0NvdW50ZXIoKTsKICAgICAgICAgY2NTZXR0aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWUg
PSBzZXR0aW5ncygpLT5zaG93UGxhdGZvcm1MYXllclRyZWUoKTsKICAgICAgICAgY2NTZXR0aW5n
cy5yZWZyZXNoUmF0ZSA9IHNjcmVlblJlZnJlc2hSYXRlKHBhZ2UoKS0+bWFpbkZyYW1lKCktPnZp
ZXcoKSk7CisgICAgICAgIGNjU2V0dGluZ3MucGVyVGlsZVBhaW50aW5nID0gc2V0dGluZ3MoKS0+
cGVyVGlsZVBhaW50aW5nKCk7CisKICAgICAgICAgQVNTRVJUKGNjU2V0dGluZ3MucmVmcmVzaFJh
dGUgPj0gMCk7CiAgICAgICAgIGlmICghY2NTZXR0aW5ncy5yZWZyZXNoUmF0ZSkKICAgICAgICAg
ICAgIGNjU2V0dGluZ3MucmVmcmVzaFJhdGUgPSBkZWZhdWx0UmVmcmVzaFJhdGU7Ci0tIAoxLjcu
My4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115895</attachid>
            <date>2011-11-18 15:41:21 -0800</date>
            <delta_ts>2011-11-20 16:25:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Chromium-Implement-tile-sized-painting-using-SkPictu.patch</filename>
            <type>text/plain</type>
            <size>18152</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">RnJvbSBiOWE3M2I0NDRmYzczYmY4Nzk4ODAxYzMyMTc0ZDBiZjU3NWU0YmI0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBSZXZlbWFuIDxyZXZlbWFuQGNocm9taXVtLm9yZz4K
RGF0ZTogRnJpLCAxOCBOb3YgMjAxMSAxNToyMzoxNCAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIFtD
aHJvbWl1bV0gSW1wbGVtZW50IHRpbGUtc2l6ZWQgcGFpbnRpbmcgdXNpbmcgU2tQaWN0dXJlLgog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxODY5CgpTb3VyY2UvV2Vi
Q29yZToKCkFkZCB0ZXh0dXJlIHVwbG9hZGVyIHRoYXQgcGFpbnRzIHRpbGUtc2l6ZWQgY2h1bmtz
IHVzaW5nIFNrUGljdHVyZQpyZWNvcmRpbmcgYW5kIHBsYXliYWNrLiBFeHBvc2Ugc2V0dGluZyB3
aGljaCBhbGxvd3MgdGhpcyB0ZXh0dXJlCnVwZGF0ZXIgdG8gYmUgZW5hYmxlZC4KCk5vIG5ldyB0
ZXN0cy4gQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KClNvdXJjZS9XZWJLaXQvY2hyb21pdW06
CgpBZGQgcGVyVGlsZVBhaW50aW5nIHNldHRpbmcgdGhhdCBpcyB1c2VkIGJ5IGNvbXBvc2l0b3Ig
dG8gZGV0ZXJtaW5lCndoYXQgdGV4dHVyZSB1cGxvYWRlciB0byB1c2UuCi0tLQogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIC4uLi9C
aXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCAgIHwgIDExNSArKysr
KysrKysrKysrKysrKysrKwogLi4uL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaCAgICAgfCAgIDc0ICsrKysrKysrKysrKysKIC4uLi9ncmFwaGljcy9jaHJvbWl1bS9D
b250ZW50TGF5ZXJDaHJvbWl1bS5jcHAgICAgIHwgICAgNiArCiAuLi4vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmggICAgICAgICB8ICAgIDQgKy0KIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaCAgIHwgICAgNCArLQogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaCAgICAgICAgfCAgICAyICsKIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwICAgIHwgICAgMSArCiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwICAgICB8ICAgIDYg
KwogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmggICAgICAgfCAg
ICAzICsKIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCAgICAgICAg
IHwgICAgMiArCiAxMSBmaWxlcyBjaGFuZ2VkLCAyMTcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlv
bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQppbmRleCBmZGM4Y2M0Li43MTg2MjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNDU0LDYg
KzM0NTQsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2NnL1RyYW5zZm9ybWF0
aW9uTWF0cml4Q0cuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5o
JywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExh
eWVyQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjdhMDlkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTAsMCArMSwxMTUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKKyNpZiBVU0UoU0tJQSkKKworI2luY2x1ZGUgIkJpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuaCIKKworI2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVtLmgi
CisjaW5jbHVkZSAiU2tDYW52YXMuaCIKKyNpbmNsdWRlICJza2lhL2V4dC9wbGF0Zm9ybV9jYW52
YXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKEJpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0
dXJlPiB0ZXh0dXJlKQorICAgIDogQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0
ZXh0dXJlKQorICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKK3sKK30KKwor
dm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpw
cmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAg
ICBzaXplX3QgYnVmZmVyU2l6ZSA9IHNvdXJjZVJlY3Qud2lkdGgoKSAqIHNvdXJjZVJlY3QuaGVp
Z2h0KCkgKiA0OworICAgIG1fcGl4ZWxEYXRhID0gYWRvcHRBcnJheVB0cihuZXcgdWludDhfdFti
dWZmZXJTaXplXSk7Cit9CisKK3ZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZTo6cGFpbnRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCkKK3sKKyAgICBBU1NFUlQobV9waXhlbERhdGEuZ2V0KCkpOworICAgIE93blB0cjxTa0Nh
bnZhcz4gY2FudmFzID0gYWRvcHRQdHIobmV3IHNraWE6OlBsYXRmb3JtQ2FudmFzKHNvdXJjZVJl
Y3Qud2lkdGgoKSwgc291cmNlUmVjdC5oZWlnaHQoKSwgZmFsc2UsIG1fcGl4ZWxEYXRhLmdldCgp
KSk7CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb250ZW50c1JlY3QoY2FudmFzLmdldCgp
LCBzb3VyY2VSZWN0KTsKK30KKwordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sK
KyAgICBBU1NFUlQodGV4dHVyZSgpLT50ZXh0dXJlSWQoKSk7CisgICAgY29udGV4dC0+YmluZFRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmUoKS0+dGV4dHVyZUlk
KCkpOworICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIHRl
eHR1cmUoKS0+Zm9ybWF0KCksIGRlc3RSZWN0LCBtX3BpeGVsRGF0YS5nZXQoKSk7CisgICAgbV9w
aXhlbERhdGEuY2xlYXIoKTsKK30KKworUGFzc1JlZlB0cjxCaXRtYXBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyPiBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpjcmVhdGUoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgYm9v
bCB1c2VNYXBUZXhTdWJJbWFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJpdG1hcFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIocGFpbnRlciwgdXNlTWFwVGV4U3ViSW1h
Z2UpKTsKK30KKworQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Qml0
bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFp
bnRlckNocm9taXVtPiBwYWludGVyLCBib29sIHVzZU1hcFRleFN1YkltYWdlKQorICAgIDogU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihwYWludGVyKQorICAgICwgbV90ZXhTdWJJ
bWFnZSh1c2VNYXBUZXhTdWJJbWFnZSkKK3sKK30KKworQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6fkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIoKQoreworfQorCitQYXNzUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IEJp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZVRleHR1cmUoVGV4
dHVyZU1hbmFnZXIqIG1hbmFnZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0dXJl
KHRoaXMsIE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobWFuYWdlcikpKTsKK30KKworTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OnNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0
KQoreworICAgIC8vIFRoZSBjb21wb25lbnQgb3JkZXIgbWF5IGJlIGJncmEgaWYgd2UgdXBsb2Fk
ZWQgYmdyYSBwaXhlbHMgdG8gcmdiYSB0ZXh0dXJlcy4KKyAgICByZXR1cm4gUGxhdGZvcm1Db2xv
cjo6c2FtZUNvbXBvbmVudE9yZGVyKHRleHR1cmVGb3JtYXQpID8KKyAgICAgICAgICAgIExheWVy
VGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXllclRleHR1cmVVcGRh
dGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBOworfQorCit2b2lkIEJpdG1hcFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29u
dGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzKQorewor
ICAgIG1fdGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKKyAgICBTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGNvbnRlbnRSZWN0LCB0
aWxlU2l6ZSwgYm9yZGVyVGV4ZWxzKTsKK30KKwordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzUmVjdChTa0NhbnZhcyogY2FudmFzLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQoreworICAgIC8vIFRyYW5zbGF0ZSB0aGUgb3JpZ2lu
IG9mIGNvbnRlbnRSZWN0IHRvIHRoYXQgb2Ygc291cmNlUmVjdC4KKyAgICBjYW52YXMtPnRyYW5z
bGF0ZShjb250ZW50UmVjdCgpLngoKSAtIHNvdXJjZVJlY3QueCgpLAorICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRlbnRSZWN0KCkueSgpIC0gc291cmNlUmVjdC55KCkpOworICAgIGRyYXdQaWN0
dXJlKGNhbnZhcyk7Cit9CisKK3ZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEdD
M0RlbnVtIGZvcm1hdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IHVpbnQ4X3QqIHBp
eGVscykKK3sKKyAgICBtX3RleFN1YkltYWdlLnVwbG9hZChwaXhlbHMsIGRlc3RSZWN0LCBkZXN0
UmVjdCwgZGVzdFJlY3QsIGZvcm1hdCwgY29udGV4dCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKyNlbmRpZiAvLyBVU0UoU0tJQSkKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uZmU2ZDM0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
aApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIEJpdG1hcFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXJfaAorI2RlZmluZSBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyX2gKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNp
ZiBVU0UoU0tJQSkKKworI2luY2x1ZGUgIkxheWVyVGV4dHVyZVN1YkltYWdlLmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1Db2xvci5oIgorI2luY2x1ZGUgIlNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBCaXRtYXBTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIFNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIgeworcHVibGljOgorICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgcHVibGljOgorICAgICAgICBU
ZXh0dXJlKEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqLCBQYXNzT3du
UHRyPE1hbmFnZWRUZXh0dXJlPik7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0
KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IHBhaW50Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpOworICAgICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgIHByaXZhdGU6Cisg
ICAgICAgIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVV
cGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBkYXRlcjsgfQorCisgICAgICAgIE93bkFycmF5
UHRyPHVpbnQ4X3Q+IG1fcGl4ZWxEYXRhOworICAgICAgICBCaXRtYXBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyKiBtX3RleHR1cmVVcGRhdGVyOworICAgIH07CisKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyPiBj
cmVhdGUoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4sIGJvb2wgdXNlTWFwVGV4U3Vi
SW1hZ2UpOworICAgIHZpcnR1YWwgfkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIoKTsKKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKik7CisgICAgdmlydHVhbCBPcmll
bnRhdGlvbiBvcmllbnRhdGlvbigpIHsgcmV0dXJuIExheWVyVGV4dHVyZVVwZGF0ZXI6OkJvdHRv
bVVwT3JpZW50YXRpb247IH0KKyAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVk
VGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCk7CisgICAgdmlydHVhbCB2b2lkIHBh
aW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRp
bGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzKTsKKyAgICB2b2lkIHBhaW50Q29udGVudHNSZWN0KFNr
Q2FudmFzKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7CisgICAgdm9pZCB1cGRhdGVUZXh0
dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIEdDM0RlbnVtIGZvcm1hdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IHVpbnQ4X3QqIHBpeGVscyk7CisKK3ByaXZhdGU6CisgICAgZXhw
bGljaXQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRy
PExheWVyUGFpbnRlckNocm9taXVtPiwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSk7CisKKyAgICBM
YXllclRleHR1cmVTdWJJbWFnZSBtX3RleFN1YkltYWdlOworfTsKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKyNlbmRpZiAvLyBVU0UoU0tJQSkKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCisjZW5kaWYgLy8gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMDBkMzg1Yi4u
N2U4YjdiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcApAQCAtMzUsNiAr
MzUsNyBAQAogI2luY2x1ZGUgIkNvbnRlbnRMYXllckNocm9taXVtLmgiCiAKICNpbmNsdWRlICJC
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgiCisjaW5jbHVkZSAiQml0bWFwU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIkZyYW1lQnVmZmVyU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIkxheWVyUGFpbnRl
ckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCkBAIC0xMzgs
NiArMTM5LDExIEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRh
dGVyKGNvbnN0IENDTGF5ZXJUcmVlSG9zdCogaG9zdCkKICAgICAgICAgbV90ZXh0dXJlVXBkYXRl
ciA9IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRl
KENvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CisKKyAgICBpZiAoaG9zdC0+c2V0dGluZ3MoKS5wZXJUaWxlUGFpbnRpbmcpIHsK
KyAgICAgICAgbV90ZXh0dXJlVXBkYXRlciA9IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9kZWxlZ2F0
ZSksIGhvc3QtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ01hcFN1Yik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CiAjZW5kaWYgLy8gVVNFKFNLSUEpCiAKICAgICBtX3RleHR1cmVV
cGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENvbnRlbnRM
YXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSwgaG9zdC0+bGF5ZXJSZW5kZXJlckNhcGFi
aWxpdGllcygpLnVzaW5nTWFwU3ViKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXgg
NjgwYjQ4MC4uMTAzYjI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTczLDcg
KzczLDggQEAgc3RydWN0IENDU2V0dGluZ3MgewogICAgICAgICAgICAgLCBlbmFibGVDb21wb3Np
dG9yVGhyZWFkKGZhbHNlKQogICAgICAgICAgICAgLCBzaG93RlBTQ291bnRlcihmYWxzZSkKICAg
ICAgICAgICAgICwgc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGZhbHNlKQotICAgICAgICAgICAgLCBy
ZWZyZXNoUmF0ZSgwKSB7IH0KKyAgICAgICAgICAgICwgcmVmcmVzaFJhdGUoMCkKKyAgICAgICAg
ICAgICwgcGVyVGlsZVBhaW50aW5nKGZhbHNlKSB7IH0KIAogICAgIGJvb2wgYWNjZWxlcmF0ZVBh
aW50aW5nOwogICAgIGJvb2wgY29tcG9zaXRlT2Zmc2NyZWVuOwpAQCAtODEsNiArODIsNyBAQCBz
dHJ1Y3QgQ0NTZXR0aW5ncyB7CiAgICAgYm9vbCBzaG93RlBTQ291bnRlcjsKICAgICBib29sIHNo
b3dQbGF0Zm9ybUxheWVyVHJlZTsKICAgICBkb3VibGUgcmVmcmVzaFJhdGU7CisgICAgYm9vbCBw
ZXJUaWxlUGFpbnRpbmc7CiB9OwogCiAvLyBQcm92aWRlcyBpbmZvcm1hdGlvbiBvbiBhbiBJbXBs
J3MgcmVuZGVyaW5nIGNhcGFiaWxpdGllcyBiYWNrIHRvIHRoZSBDQ0xheWVyVHJlZUhvc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAppbmRl
eCBjYTA4Y2VkLi5mZDFkZmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViTGF5ZXJUcmVlVmlldy5oCkBAIC00NiwxMSArNDYsMTMgQEAgcHVibGljOgogICAgICAg
ICBTZXR0aW5ncygpCiAgICAgICAgICAgICA6IGFjY2VsZXJhdGVQYWludGluZyhmYWxzZSkKICAg
ICAgICAgICAgICwgY29tcG9zaXRlT2Zmc2NyZWVuKGZhbHNlKQotICAgICAgICAgICAgLCBlbmFi
bGVDb21wb3NpdG9yVGhyZWFkKGZhbHNlKSB7IH0KKyAgICAgICAgICAgICwgZW5hYmxlQ29tcG9z
aXRvclRocmVhZChmYWxzZSkKKyAgICAgICAgICAgICwgcGVyVGlsZVBhaW50aW5nKGZhbHNlKSB7
IH0KIAogICAgICAgICBib29sIGFjY2VsZXJhdGVQYWludGluZzsKICAgICAgICAgYm9vbCBjb21w
b3NpdGVPZmZzY3JlZW47CiAgICAgICAgIGJvb2wgZW5hYmxlQ29tcG9zaXRvclRocmVhZDsKKyAg
ICAgICAgYm9vbCBwZXJUaWxlUGFpbnRpbmc7CiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiAg
ICAgICAgIG9wZXJhdG9yIFdlYkNvcmU6OkNDU2V0dGluZ3MoKSBjb25zdDsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKaW5kZXggMTIzNmIzMi4u
MGM0Njk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0
dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5o
CkBAIC0xMzMsNiArMTMzLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVT
Y3JvbGxBbmltYXRvcihib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEhpeGllNzZXZWJT
b2NrZXRQcm90b2NvbEVuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXN1
YWxXb3JkTW92ZW1lbnRFbmFibGVkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGVy
VGlsZVBhaW50aW5nKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcGVyVGlsZVBhaW50aW5n
KCkgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgfldlYlNldHRpbmdzKCkgeyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCmluZGV4IGM3
NjhlMWEuLmE0NTFjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkxheWVyVHJlZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxh
eWVyVHJlZVZpZXcuY3BwCkBAIC00MCw2ICs0MCw3IEBAIFdlYkxheWVyVHJlZVZpZXc6OlNldHRp
bmdzOjpvcGVyYXRvciBDQ1NldHRpbmdzKCkgY29uc3QKICAgICBzZXR0aW5ncy5hY2NlbGVyYXRl
UGFpbnRpbmcgPSBhY2NlbGVyYXRlUGFpbnRpbmc7CiAgICAgc2V0dGluZ3MuY29tcG9zaXRlT2Zm
c2NyZWVuID0gY29tcG9zaXRlT2Zmc2NyZWVuOwogICAgIHNldHRpbmdzLmVuYWJsZUNvbXBvc2l0
b3JUaHJlYWQgPSBlbmFibGVDb21wb3NpdG9yVGhyZWFkOworICAgIHNldHRpbmdzLnBlclRpbGVQ
YWludGluZyA9IHBlclRpbGVQYWludGluZzsKIAogICAgIC8vIEZJWE1FOiBzaG93RlBTQ291bnRl
ciAvIHNob3dQbGF0Zm9ybUxheWVyVHJlZSBhcmVuJ3Qgc3VwcG9ydGVkIGN1cnJlbnRseS4KICAg
ICBzZXR0aW5ncy5zaG93RlBTQ291bnRlciA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKaW5kZXggMjQyYWVkMi4uYzBjMTA4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCkBAIC01
MCw2ICs1MCw3IEBAIFdlYlNldHRpbmdzSW1wbDo6V2ViU2V0dGluZ3NJbXBsKFNldHRpbmdzKiBz
ZXR0aW5ncykKICAgICAsIG1fY29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZChmYWxzZSkKICAgICAs
IG1fc2hvd0ZQU0NvdW50ZXIoZmFsc2UpCiAgICAgLCBtX3Nob3dQbGF0Zm9ybUxheWVyVHJlZShm
YWxzZSkKKyAgICAsIG1fcGVyVGlsZVBhaW50aW5nKGZhbHNlKQogICAgICwgbV91c2VUaHJlYWRl
ZENvbXBvc2l0b3IoZmFsc2UpCiB7CiAgICAgQVNTRVJUKHNldHRpbmdzKTsKQEAgLTQ2Niw0ICs0
NjcsOSBAQCB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0VmlzdWFsV29yZE1vdmVtZW50RW5hYmxl
ZChib29sIGVuYWJsZWQpCiAgICAgbV9zZXR0aW5ncy0+c2V0VmlzdWFsV29yZE1vdmVtZW50RW5h
YmxlZChlbmFibGVkKTsKIH0KIAordm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldFBlclRpbGVQYWlu
dGluZyhib29sIGVuYWJsZWQpCit7CisgICAgbV9wZXJUaWxlUGFpbnRpbmcgPSBlbmFibGVkOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU2V0dGluZ3NJbXBsLmgKaW5kZXggZmEzNGFhOC4uMDg3ZmJjMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKQEAgLTEyNSwxMiArMTI1LDE1IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlU2Nyb2xsQW5pbWF0b3IoYm9vbCk7
CiAgICAgdmlydHVhbCB2b2lkIHNldEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQoYm9v
bCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc3VhbFdvcmRNb3ZlbWVudEVuYWJsZWQoYm9vbCk7
CisgICAgdmlydHVhbCB2b2lkIHNldFBlclRpbGVQYWludGluZyhib29sKTsKKyAgICB2aXJ0dWFs
IGJvb2wgcGVyVGlsZVBhaW50aW5nKCkgY29uc3QgeyByZXR1cm4gbV9wZXJUaWxlUGFpbnRpbmc7
IH0KIAogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpTZXR0aW5ncyogbV9zZXR0aW5nczsKICAgICBi
b29sIG1fY29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZDsKICAgICBib29sIG1fc2hvd0ZQU0NvdW50
ZXI7CiAgICAgYm9vbCBtX3Nob3dQbGF0Zm9ybUxheWVyVHJlZTsKKyAgICBib29sIG1fcGVyVGls
ZVBhaW50aW5nOwogICAgIGJvb2wgbV91c2VUaHJlYWRlZENvbXBvc2l0b3I7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggNzdmNThmYi4uMTQ4
M2I3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAt
Mjc1NSw2ICsyNzU1LDggQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQWN0aXZlKGJvb2wgYWN0aXZlKQogICAgICAgICBjY1NldHRpbmdzLnNob3dGUFNDb3Vu
dGVyID0gc2V0dGluZ3MoKS0+c2hvd0ZQU0NvdW50ZXIoKTsKICAgICAgICAgY2NTZXR0aW5ncy5z
aG93UGxhdGZvcm1MYXllclRyZWUgPSBzZXR0aW5ncygpLT5zaG93UGxhdGZvcm1MYXllclRyZWUo
KTsKICAgICAgICAgY2NTZXR0aW5ncy5yZWZyZXNoUmF0ZSA9IHNjcmVlblJlZnJlc2hSYXRlKHBh
Z2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKSk7CisgICAgICAgIGNjU2V0dGluZ3MucGVyVGlsZVBh
aW50aW5nID0gc2V0dGluZ3MoKS0+cGVyVGlsZVBhaW50aW5nKCk7CisKICAgICAgICAgQVNTRVJU
KGNjU2V0dGluZ3MucmVmcmVzaFJhdGUgPj0gMCk7CiAgICAgICAgIGlmICghY2NTZXR0aW5ncy5y
ZWZyZXNoUmF0ZSkKICAgICAgICAgICAgIGNjU2V0dGluZ3MucmVmcmVzaFJhdGUgPSBkZWZhdWx0
UmVmcmVzaFJhdGU7Ci0tIAoxLjcuMy4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116007</attachid>
            <date>2011-11-20 16:25:18 -0800</date>
            <delta_ts>2011-11-22 16:53:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>per-tile-painting.diff</filename>
            <type>text/plain</type>
            <size>15170</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCBlZjE5NjJkLi42MmVmNWJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0zNDYwLDYgKzM0NjAsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2NnL1Ry
YW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCcsCisgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
YW52YXMyRExheWVyQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHAnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2ZlZGE4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTAsMCArMSwx
MTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKKyNpZiBVU0UoU0tJQSkKKworI2luY2x1ZGUgIkJpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIKKworI2luY2x1ZGUgIkxheWVyUGFpbnRlckNo
cm9taXVtLmgiCisjaW5jbHVkZSAiU2tDYW52YXMuaCIKKyNpbmNsdWRlICJza2lhL2V4dC9wbGF0
Zm9ybV9jYW52YXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitCaXRtYXBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKEJpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1h
bmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQorICAgIDogQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZSh0ZXh0dXJlKQorICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikK
K3sKK30KKwordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlOjpwYWludENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQorewor
ICAgIHNpemVfdCBidWZmZXJTaXplID0gVGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKHNv
dXJjZVJlY3Quc2l6ZSgpLCB0ZXh0dXJlKCktPmZvcm1hdCgpKTsKKyAgICBtX3BpeGVsRGF0YSA9
IGFkb3B0QXJyYXlQdHIobmV3IHVpbnQ4X3RbYnVmZmVyU2l6ZV0pOworICAgIE93blB0cjxTa0Nh
bnZhcz4gY2FudmFzID0gYWRvcHRQdHIobmV3IHNraWE6OlBsYXRmb3JtQ2FudmFzKHNvdXJjZVJl
Y3Qud2lkdGgoKSwgc291cmNlUmVjdC5oZWlnaHQoKSwgZmFsc2UsIG1fcGl4ZWxEYXRhLmdldCgp
KSk7CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb250ZW50c1JlY3QoY2FudmFzLmdldCgp
LCBzb3VyY2VSZWN0KTsKK30KKwordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sK
KyAgICBBU1NFUlQodGV4dHVyZSgpLT50ZXh0dXJlSWQoKSk7CisgICAgY29udGV4dC0+YmluZFRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmUoKS0+dGV4dHVyZUlk
KCkpOworICAgIEFTU0VSVChtX3BpeGVsRGF0YS5nZXQoKSk7CisgICAgdGV4dHVyZVVwZGF0ZXIo
KS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgdGV4dHVyZSgpLT5mb3JtYXQoKSwgZGVzdFJl
Y3QsIG1fcGl4ZWxEYXRhLmdldCgpKTsKKyAgICBtX3BpeGVsRGF0YS5jbGVhcigpOworfQorCitQ
YXNzUmVmUHRyPEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IEJpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShQYXNzT3duUHRyPExh
eWVyUGFpbnRlckNocm9taXVtPiBwYWludGVyLCBib29sIHVzZU1hcFRleFN1YkltYWdlKQorewor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcihwYWludGVyLCB1c2VNYXBUZXhTdWJJbWFnZSkpOworfQorCitCaXRtYXBTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIsIGJv
b2wgdXNlTWFwVGV4U3ViSW1hZ2UpCisgICAgOiBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyKHBhaW50ZXIpCisgICAgLCBtX3RleFN1YkltYWdlKHVzZU1hcFRleFN1YkltYWdlKQor
eworfQorCitCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp+Qml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcigpCit7Cit9CisKK1Bhc3NSZWZQdHI8
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6Y3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciogbWFuYWdlcikKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHR1cmUodGhpcywgTWFuYWdlZFRleHR1cmU6OmNy
ZWF0ZShtYW5hZ2VyKSkpOworfQorCitMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxG
b3JtYXQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6c2FtcGxlZFRl
eGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpCit7CisgICAgLy8gVGhlIGNvbXBvbmVu
dCBvcmRlciBtYXkgYmUgYmdyYSBpZiB3ZSB1cGxvYWRlZCBiZ3JhIHBpeGVscyB0byByZ2JhIHRl
eHR1cmVzLgorICAgIHJldHVybiBQbGF0Zm9ybUNvbG9yOjpzYW1lQ29tcG9uZW50T3JkZXIodGV4
dHVyZUZvcm1hdCkgPworICAgICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRl
eGVsRm9ybWF0UkdCQSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdEJH
UkE7Cit9CisKK3ZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYg
dGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCit7CisgICAg
bV90ZXhTdWJJbWFnZS5zZXRTdWJJbWFnZVNpemUodGlsZVNpemUpOworICAgIFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMoY29udGVudFJlY3QsIHRpbGVT
aXplLCBib3JkZXJUZXhlbHMsIGNvbnRlbnRzU2NhbGUpOworfQorCit2b2lkIEJpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHNSZWN0KFNrQ2FudmFz
KiBjYW52YXMsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpCit7CisgICAgLy8gVHJhbnNsYXRl
IHRoZSBvcmlnaW4gb2YgY29udGVudFJlY3QgdG8gdGhhdCBvZiBzb3VyY2VSZWN0LgorICAgIGNh
bnZhcy0+dHJhbnNsYXRlKGNvbnRlbnRSZWN0KCkueCgpIC0gc291cmNlUmVjdC54KCksCisgICAg
ICAgICAgICAgICAgICAgICAgY29udGVudFJlY3QoKS55KCkgLSBzb3VyY2VSZWN0LnkoKSk7Cisg
ICAgZHJhd1BpY3R1cmUoY2FudmFzKTsKK30KKwordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgR0MzRGVudW0gZm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
dWludDhfdCogcGl4ZWxzKQoreworICAgIG1fdGV4U3ViSW1hZ2UudXBsb2FkKHBpeGVscywgZGVz
dFJlY3QsIGRlc3RSZWN0LCBkZXN0UmVjdCwgZm9ybWF0LCBjb250ZXh0KTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorI2VuZGlmIC8vIFVTRShTS0lBKQorI2VuZGlmIC8vIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5kNDA2OTEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgQml0bWFwU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcl9oCisjZGVmaW5lIEJpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXJfaAorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQorI2lmIFVTRShTS0lBKQorCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlU3ViSW1hZ2Uu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCisjaW5jbHVkZSAiU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEJp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB7CitwdWJsaWM6CisgICAgY2xhc3MgVGV4dHVyZSA6
IHB1YmxpYyBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIFRleHR1cmUoQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ciosIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7CisgICAgICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVw
ZGF0ZXIoKSB7IHJldHVybiBtX3RleHR1cmVVcGRhdGVyOyB9CisKKyAgICAgICAgT3duQXJyYXlQ
dHI8dWludDhfdD4gbV9waXhlbERhdGE7CisgICAgICAgIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIqIG1fdGV4dHVyZVVwZGF0ZXI7CisgICAgfTsKKworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IGNy
ZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiwgYm9vbCB1c2VNYXBUZXhTdWJJ
bWFnZSk7CisgICAgdmlydHVhbCB+Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcigpOworCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqKTsKKyAgICB2aXJ0dWFsIE9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uKCkgeyByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Qm90dG9t
VXBPcmllbnRhdGlvbjsgfQorICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRU
ZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGls
ZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUpOworICAgIHZvaWQg
cGFpbnRDb250ZW50c1JlY3QoU2tDYW52YXMqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KTsK
KyAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgR0MzRGVudW0g
Zm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgdWludDhfdCogcGl4ZWxzKTsK
KworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBib29sIHVzZU1hcFRl
eFN1YkltYWdlKTsKKworICAgIExheWVyVGV4dHVyZVN1YkltYWdlIG1fdGV4U3ViSW1hZ2U7Cit9
OworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2VuZGlmIC8vIFVTRShTS0lBKQorI2VuZGlmIC8v
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNlbmRpZiAvLyBCaXRtYXBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVt
LmNwcAppbmRleCAwMGQzODViLi43ZThiN2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hy
b21pdW0uY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiQ29udGVudExheWVyQ2hyb21p
dW0uaCIKIAogI2luY2x1ZGUgIkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIKKyNp
bmNsdWRlICJCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgiCiAjaW5j
bHVkZSAiRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgiCiAj
aW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVy
Q2hyb21pdW0uaCIKQEAgLTEzOCw2ICsxMzksMTEgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0KiBob3N0KQogICAg
ICAgICBtX3RleHR1cmVVcGRhdGVyID0gRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpjcmVhdGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKG1fZGVsZWdh
dGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGlmIChob3N0LT5zZXR0aW5ncygp
LnBlclRpbGVQYWludGluZykgeworICAgICAgICBtX3RleHR1cmVVcGRhdGVyID0gQml0bWFwU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENvbnRlbnRMYXllclBhaW50
ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSwgaG9zdC0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygp
LnVzaW5nTWFwU3ViKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICNlbmRpZiAvLyBVU0UoU0tJ
QSkKIAogICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpjcmVhdGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKG1fZGVsZWdhdGUpLCBob3N0
LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdNYXBTdWIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuaAppbmRleCBiNmZjZjczLi5kNTQ1NDI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuaApAQCAtNzQsNyArNzQsOCBAQCBzdHJ1Y3QgQ0NTZXR0aW5ncyB7CiAgICAgICAg
ICAgICAsIHNob3dGUFNDb3VudGVyKGZhbHNlKQogICAgICAgICAgICAgLCBzaG93UGxhdGZvcm1M
YXllclRyZWUoZmFsc2UpCiAgICAgICAgICAgICAsIHJlZnJlc2hSYXRlKDApCi0gICAgICAgICAg
ICAsIGRlbGF5VGV4dHVyZVVwZGF0ZXMoZmFsc2UpIHsgfQorICAgICAgICAgICAgLCBkZWxheVRl
eHR1cmVVcGRhdGVzKGZhbHNlKQorICAgICAgICAgICAgLCBwZXJUaWxlUGFpbnRpbmcoZmFsc2Up
IHsgfQogCiAgICAgYm9vbCBhY2NlbGVyYXRlUGFpbnRpbmc7CiAgICAgYm9vbCBjb21wb3NpdGVP
ZmZzY3JlZW47CkBAIC04Myw2ICs4NCw3IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICBib29s
IHNob3dQbGF0Zm9ybUxheWVyVHJlZTsKICAgICBkb3VibGUgcmVmcmVzaFJhdGU7CiAgICAgYm9v
bCBkZWxheVRleHR1cmVVcGRhdGVzOworICAgIGJvb2wgcGVyVGlsZVBhaW50aW5nOwogfTsKIAog
Ly8gUHJvdmlkZXMgaW5mb3JtYXRpb24gb24gYW4gSW1wbCdzIHJlbmRlcmluZyBjYXBhYmlsaXRp
ZXMgYmFjayB0byB0aGUgQ0NMYXllclRyZWVIb3N0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViU2V0dGluZ3MuaAppbmRleCBhN2ZhMzkwLi42N2Q0MDA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKQEAgLTEzNSw2ICsxMzUsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc3VhbFdvcmRNb3ZlbWVudEVuYWJsZWQoYm9v
bCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXREZWxheVRleHR1cmVVcGRhdGVzKGJvb2wpID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgZGVsYXlUZXh0dXJlVXBkYXRlcygpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0UGVyVGlsZVBhaW50aW5nKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgcGVyVGlsZVBhaW50aW5nKCkgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgfldl
YlNldHRpbmdzKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTZXR0aW5nc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGlu
Z3NJbXBsLmNwcAppbmRleCAxZDcxZTE5Li45MDQ1ODI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKQEAgLTUyLDYgKzUyLDcgQEAgV2ViU2V0
dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwoU2V0dGluZ3MqIHNldHRpbmdzKQogICAgICwgbV9z
aG93UGxhdGZvcm1MYXllclRyZWUoZmFsc2UpCiAgICAgLCBtX3VzZVRocmVhZGVkQ29tcG9zaXRv
cihmYWxzZSkKICAgICAsIG1fZGVsYXlUZXh0dXJlVXBkYXRlcyhmYWxzZSkKKyAgICAsIG1fcGVy
VGlsZVBhaW50aW5nKGZhbHNlKQogCiB7CiAgICAgQVNTRVJUKHNldHRpbmdzKTsKQEAgLTQ3Myw0
ICs0NzQsOSBAQCB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0RGVsYXlUZXh0dXJlVXBkYXRlcyhi
b29sIGVuYWJsZWQpCiAgICAgbV9kZWxheVRleHR1cmVVcGRhdGVzID0gZW5hYmxlZDsKIH0KIAor
dm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldFBlclRpbGVQYWludGluZyhib29sIGVuYWJsZWQpCit7
CisgICAgbV9wZXJUaWxlUGFpbnRpbmcgPSBlbmFibGVkOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdz
SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKaW5k
ZXggZGViZjBmOS4uZjM2ZGNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU2V0dGluZ3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U2V0dGluZ3NJbXBsLmgKQEAgLTEyNyw2ICsxMjcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNldFZpc3VhbFdvcmRNb3ZlbWVudEVuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lk
IHNldERlbGF5VGV4dHVyZVVwZGF0ZXMoYm9vbCk7CiAgICAgdmlydHVhbCBib29sIGRlbGF5VGV4
dHVyZVVwZGF0ZXMoKSBjb25zdCB7IHJldHVybiBtX2RlbGF5VGV4dHVyZVVwZGF0ZXM7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0UGVyVGlsZVBhaW50aW5nKGJvb2wpOworICAgIHZpcnR1YWwgYm9v
bCBwZXJUaWxlUGFpbnRpbmcoKSBjb25zdCB7IHJldHVybiBtX3BlclRpbGVQYWludGluZzsgfQog
CiBwcml2YXRlOgogICAgIFdlYkNvcmU6OlNldHRpbmdzKiBtX3NldHRpbmdzOwpAQCAtMTM1LDYg
KzEzNyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3dQbGF0Zm9ybUxheWVyVHJlZTsKICAg
ICBib29sIG1fdXNlVGhyZWFkZWRDb21wb3NpdG9yOwogICAgIGJvb2wgbV9kZWxheVRleHR1cmVV
cGRhdGVzOworICAgIGJvb2wgbV9wZXJUaWxlUGFpbnRpbmc7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRl
eCA3M2Q5MmFhLi5hN2Q3NmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwCkBAIC0yODQxLDExICsyODQxLDEzIEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElz
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKICAgICAgICAgY2NTZXR0
aW5ncy5zaG93RlBTQ291bnRlciA9IHNldHRpbmdzKCktPnNob3dGUFNDb3VudGVyKCk7CiAgICAg
ICAgIGNjU2V0dGluZ3Muc2hvd1BsYXRmb3JtTGF5ZXJUcmVlID0gc2V0dGluZ3MoKS0+c2hvd1Bs
YXRmb3JtTGF5ZXJUcmVlKCk7CiAgICAgICAgIGNjU2V0dGluZ3MucmVmcmVzaFJhdGUgPSBzY3Jl
ZW5SZWZyZXNoUmF0ZShwYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCkpOworCiAgICAgICAgIEFT
U0VSVChjY1NldHRpbmdzLnJlZnJlc2hSYXRlID49IDApOwogICAgICAgICBpZiAoIWNjU2V0dGlu
Z3MucmVmcmVzaFJhdGUpCiAgICAgICAgICAgICBjY1NldHRpbmdzLnJlZnJlc2hSYXRlID0gZGVm
YXVsdFJlZnJlc2hSYXRlOwogCiAgICAgICAgIGNjU2V0dGluZ3MuZGVsYXlUZXh0dXJlVXBkYXRl
cyA9IHNldHRpbmdzKCktPmRlbGF5VGV4dHVyZVVwZGF0ZXMoKTsKKyAgICAgICAgY2NTZXR0aW5n
cy5wZXJUaWxlUGFpbnRpbmcgPSBzZXR0aW5ncygpLT5wZXJUaWxlUGFpbnRpbmcoKTsKIAogICAg
ICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCA9IE5vbkNvbXBvc2l0ZWRDb250ZW50SG9z
dDo6Y3JlYXRlKFdlYlZpZXdJbXBsQ29udGVudFBhaW50ZXI6OmNyZWF0ZSh0aGlzKSk7CiAgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdCA9IENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKHRoaXMsIGNjU2V0
dGluZ3MpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116294</attachid>
            <date>2011-11-22 16:53:18 -0800</date>
            <delta_ts>2011-12-02 10:55:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>per-tile-painting.diff</filename>
            <type>text/plain</type>
            <size>15170</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCA0OTMxMDFjLi4yMTZmNjBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0zNDYwLDYgKzM0NjAsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2NnL1Ry
YW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCcsCisgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
YW52YXMyRExheWVyQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHAnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjAwZTRhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTAsMCArMSwx
MTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKKyNpZiBVU0UoU0tJQSkKKworI2luY2x1ZGUgIkJpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIKKworI2luY2x1ZGUgIkxheWVyUGFpbnRlckNo
cm9taXVtLmgiCisjaW5jbHVkZSAiU2tDYW52YXMuaCIKKyNpbmNsdWRlICJza2lhL2V4dC9wbGF0
Zm9ybV9jYW52YXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitCaXRtYXBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKEJpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1h
bmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQorICAgIDogQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZSh0ZXh0dXJlKQorICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikK
K3sKK30KKwordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlOjpwYWludENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQorewor
ICAgIHNpemVfdCBidWZmZXJTaXplID0gVGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKHNv
dXJjZVJlY3Quc2l6ZSgpLCB0ZXh0dXJlKCktPmZvcm1hdCgpKTsKKyAgICBtX3BpeGVsRGF0YSA9
IGFkb3B0QXJyYXlQdHIobmV3IHVpbnQ4X3RbYnVmZmVyU2l6ZV0pOworICAgIE93blB0cjxTa0Nh
bnZhcz4gY2FudmFzID0gYWRvcHRQdHIobmV3IHNraWE6OlBsYXRmb3JtQ2FudmFzKHNvdXJjZVJl
Y3Qud2lkdGgoKSwgc291cmNlUmVjdC5oZWlnaHQoKSwgZmFsc2UsIG1fcGl4ZWxEYXRhLmdldCgp
KSk7CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb250ZW50c1JlY3QoY2FudmFzLmdldCgp
LCBzb3VyY2VSZWN0KTsKK30KKwordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sK
KyAgICBBU1NFUlQodGV4dHVyZSgpLT50ZXh0dXJlSWQoKSk7CisgICAgY29udGV4dC0+YmluZFRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmUoKS0+dGV4dHVyZUlk
KCkpOworICAgIEFTU0VSVChtX3BpeGVsRGF0YS5nZXQoKSk7CisgICAgdGV4dHVyZVVwZGF0ZXIo
KS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgdGV4dHVyZSgpLT5mb3JtYXQoKSwgZGVzdFJl
Y3QsIG1fcGl4ZWxEYXRhLmdldCgpKTsKKyAgICBtX3BpeGVsRGF0YS5jbGVhcigpOworfQorCitQ
YXNzUmVmUHRyPEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IEJpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShQYXNzT3duUHRyPExh
eWVyUGFpbnRlckNocm9taXVtPiBwYWludGVyLCBib29sIHVzZU1hcFRleFN1YkltYWdlKQorewor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcihwYWludGVyLCB1c2VNYXBUZXhTdWJJbWFnZSkpOworfQorCitCaXRtYXBTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIsIGJv
b2wgdXNlTWFwVGV4U3ViSW1hZ2UpCisgICAgOiBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyKHBhaW50ZXIpCisgICAgLCBtX3RleFN1YkltYWdlKHVzZU1hcFRleFN1YkltYWdlKQor
eworfQorCitCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp+Qml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcigpCit7Cit9CisKK1Bhc3NPd25QdHI8
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6Y3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciogbWFuYWdlcikKK3sK
KyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRleHR1cmUodGhpcywgTWFuYWdlZFRleHR1cmU6OmNy
ZWF0ZShtYW5hZ2VyKSkpOworfQorCitMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxG
b3JtYXQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6c2FtcGxlZFRl
eGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpCit7CisgICAgLy8gVGhlIGNvbXBvbmVu
dCBvcmRlciBtYXkgYmUgYmdyYSBpZiB3ZSB1cGxvYWRlZCBiZ3JhIHBpeGVscyB0byByZ2JhIHRl
eHR1cmVzLgorICAgIHJldHVybiBQbGF0Zm9ybUNvbG9yOjpzYW1lQ29tcG9uZW50T3JkZXIodGV4
dHVyZUZvcm1hdCkgPworICAgICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRl
eGVsRm9ybWF0UkdCQSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdEJH
UkE7Cit9CisKK3ZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYg
dGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCit7CisgICAg
bV90ZXhTdWJJbWFnZS5zZXRTdWJJbWFnZVNpemUodGlsZVNpemUpOworICAgIFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMoY29udGVudFJlY3QsIHRpbGVT
aXplLCBib3JkZXJUZXhlbHMsIGNvbnRlbnRzU2NhbGUpOworfQorCit2b2lkIEJpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHNSZWN0KFNrQ2FudmFz
KiBjYW52YXMsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpCit7CisgICAgLy8gVHJhbnNsYXRl
IHRoZSBvcmlnaW4gb2YgY29udGVudFJlY3QgdG8gdGhhdCBvZiBzb3VyY2VSZWN0LgorICAgIGNh
bnZhcy0+dHJhbnNsYXRlKGNvbnRlbnRSZWN0KCkueCgpIC0gc291cmNlUmVjdC54KCksCisgICAg
ICAgICAgICAgICAgICAgICAgY29udGVudFJlY3QoKS55KCkgLSBzb3VyY2VSZWN0LnkoKSk7Cisg
ICAgZHJhd1BpY3R1cmUoY2FudmFzKTsKK30KKwordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgR0MzRGVudW0gZm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
dWludDhfdCogcGl4ZWxzKQoreworICAgIG1fdGV4U3ViSW1hZ2UudXBsb2FkKHBpeGVscywgZGVz
dFJlY3QsIGRlc3RSZWN0LCBkZXN0UmVjdCwgZm9ybWF0LCBjb250ZXh0KTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorI2VuZGlmIC8vIFVTRShTS0lBKQorI2VuZGlmIC8vIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi42ZDYzOTU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgQml0bWFwU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcl9oCisjZGVmaW5lIEJpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXJfaAorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQorI2lmIFVTRShTS0lBKQorCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlU3ViSW1hZ2Uu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCisjaW5jbHVkZSAiU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEJp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB7CitwdWJsaWM6CisgICAgY2xhc3MgVGV4dHVyZSA6
IHB1YmxpYyBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIFRleHR1cmUoQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ciosIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7CisgICAgICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVw
ZGF0ZXIoKSB7IHJldHVybiBtX3RleHR1cmVVcGRhdGVyOyB9CisKKyAgICAgICAgT3duQXJyYXlQ
dHI8dWludDhfdD4gbV9waXhlbERhdGE7CisgICAgICAgIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIqIG1fdGV4dHVyZVVwZGF0ZXI7CisgICAgfTsKKworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IGNy
ZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiwgYm9vbCB1c2VNYXBUZXhTdWJJ
bWFnZSk7CisgICAgdmlydHVhbCB+Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcigpOworCisgICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqKTsKKyAgICB2aXJ0dWFsIE9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uKCkgeyByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Qm90dG9t
VXBPcmllbnRhdGlvbjsgfQorICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRU
ZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGls
ZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUpOworICAgIHZvaWQg
cGFpbnRDb250ZW50c1JlY3QoU2tDYW52YXMqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KTsK
KyAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgR0MzRGVudW0g
Zm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgdWludDhfdCogcGl4ZWxzKTsK
KworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBib29sIHVzZU1hcFRl
eFN1YkltYWdlKTsKKworICAgIExheWVyVGV4dHVyZVN1YkltYWdlIG1fdGV4U3ViSW1hZ2U7Cit9
OworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2VuZGlmIC8vIFVTRShTS0lBKQorI2VuZGlmIC8v
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNlbmRpZiAvLyBCaXRtYXBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVt
LmNwcAppbmRleCAwMGQzODViLi43ZThiN2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hy
b21pdW0uY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiQ29udGVudExheWVyQ2hyb21p
dW0uaCIKIAogI2luY2x1ZGUgIkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIKKyNp
bmNsdWRlICJCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgiCiAjaW5j
bHVkZSAiRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgiCiAj
aW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVy
Q2hyb21pdW0uaCIKQEAgLTEzOCw2ICsxMzksMTEgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0KiBob3N0KQogICAg
ICAgICBtX3RleHR1cmVVcGRhdGVyID0gRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpjcmVhdGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKG1fZGVsZWdh
dGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGlmIChob3N0LT5zZXR0aW5ncygp
LnBlclRpbGVQYWludGluZykgeworICAgICAgICBtX3RleHR1cmVVcGRhdGVyID0gQml0bWFwU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENvbnRlbnRMYXllclBhaW50
ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSwgaG9zdC0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygp
LnVzaW5nTWFwU3ViKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICNlbmRpZiAvLyBVU0UoU0tJ
QSkKIAogICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpjcmVhdGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKG1fZGVsZWdhdGUpLCBob3N0
LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdNYXBTdWIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuaAppbmRleCBiNmZjZjczLi5kNTQ1NDI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuaApAQCAtNzQsNyArNzQsOCBAQCBzdHJ1Y3QgQ0NTZXR0aW5ncyB7CiAgICAgICAg
ICAgICAsIHNob3dGUFNDb3VudGVyKGZhbHNlKQogICAgICAgICAgICAgLCBzaG93UGxhdGZvcm1M
YXllclRyZWUoZmFsc2UpCiAgICAgICAgICAgICAsIHJlZnJlc2hSYXRlKDApCi0gICAgICAgICAg
ICAsIGRlbGF5VGV4dHVyZVVwZGF0ZXMoZmFsc2UpIHsgfQorICAgICAgICAgICAgLCBkZWxheVRl
eHR1cmVVcGRhdGVzKGZhbHNlKQorICAgICAgICAgICAgLCBwZXJUaWxlUGFpbnRpbmcoZmFsc2Up
IHsgfQogCiAgICAgYm9vbCBhY2NlbGVyYXRlUGFpbnRpbmc7CiAgICAgYm9vbCBjb21wb3NpdGVP
ZmZzY3JlZW47CkBAIC04Myw2ICs4NCw3IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICBib29s
IHNob3dQbGF0Zm9ybUxheWVyVHJlZTsKICAgICBkb3VibGUgcmVmcmVzaFJhdGU7CiAgICAgYm9v
bCBkZWxheVRleHR1cmVVcGRhdGVzOworICAgIGJvb2wgcGVyVGlsZVBhaW50aW5nOwogfTsKIAog
Ly8gUHJvdmlkZXMgaW5mb3JtYXRpb24gb24gYW4gSW1wbCdzIHJlbmRlcmluZyBjYXBhYmlsaXRp
ZXMgYmFjayB0byB0aGUgQ0NMYXllclRyZWVIb3N0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViU2V0dGluZ3MuaAppbmRleCBhN2ZhMzkwLi42N2Q0MDA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKQEAgLTEzNSw2ICsxMzUsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc3VhbFdvcmRNb3ZlbWVudEVuYWJsZWQoYm9v
bCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXREZWxheVRleHR1cmVVcGRhdGVzKGJvb2wpID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgZGVsYXlUZXh0dXJlVXBkYXRlcygpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0UGVyVGlsZVBhaW50aW5nKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgcGVyVGlsZVBhaW50aW5nKCkgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgfldl
YlNldHRpbmdzKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTZXR0aW5nc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGlu
Z3NJbXBsLmNwcAppbmRleCAxZDcxZTE5Li45MDQ1ODI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKQEAgLTUyLDYgKzUyLDcgQEAgV2ViU2V0
dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwoU2V0dGluZ3MqIHNldHRpbmdzKQogICAgICwgbV9z
aG93UGxhdGZvcm1MYXllclRyZWUoZmFsc2UpCiAgICAgLCBtX3VzZVRocmVhZGVkQ29tcG9zaXRv
cihmYWxzZSkKICAgICAsIG1fZGVsYXlUZXh0dXJlVXBkYXRlcyhmYWxzZSkKKyAgICAsIG1fcGVy
VGlsZVBhaW50aW5nKGZhbHNlKQogCiB7CiAgICAgQVNTRVJUKHNldHRpbmdzKTsKQEAgLTQ3Myw0
ICs0NzQsOSBAQCB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0RGVsYXlUZXh0dXJlVXBkYXRlcyhi
b29sIGVuYWJsZWQpCiAgICAgbV9kZWxheVRleHR1cmVVcGRhdGVzID0gZW5hYmxlZDsKIH0KIAor
dm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldFBlclRpbGVQYWludGluZyhib29sIGVuYWJsZWQpCit7
CisgICAgbV9wZXJUaWxlUGFpbnRpbmcgPSBlbmFibGVkOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdz
SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKaW5k
ZXggZGViZjBmOS4uZjM2ZGNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU2V0dGluZ3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U2V0dGluZ3NJbXBsLmgKQEAgLTEyNyw2ICsxMjcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNldFZpc3VhbFdvcmRNb3ZlbWVudEVuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lk
IHNldERlbGF5VGV4dHVyZVVwZGF0ZXMoYm9vbCk7CiAgICAgdmlydHVhbCBib29sIGRlbGF5VGV4
dHVyZVVwZGF0ZXMoKSBjb25zdCB7IHJldHVybiBtX2RlbGF5VGV4dHVyZVVwZGF0ZXM7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0UGVyVGlsZVBhaW50aW5nKGJvb2wpOworICAgIHZpcnR1YWwgYm9v
bCBwZXJUaWxlUGFpbnRpbmcoKSBjb25zdCB7IHJldHVybiBtX3BlclRpbGVQYWludGluZzsgfQog
CiBwcml2YXRlOgogICAgIFdlYkNvcmU6OlNldHRpbmdzKiBtX3NldHRpbmdzOwpAQCAtMTM1LDYg
KzEzNyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3dQbGF0Zm9ybUxheWVyVHJlZTsKICAg
ICBib29sIG1fdXNlVGhyZWFkZWRDb21wb3NpdG9yOwogICAgIGJvb2wgbV9kZWxheVRleHR1cmVV
cGRhdGVzOworICAgIGJvb2wgbV9wZXJUaWxlUGFpbnRpbmc7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRl
eCA3M2Q5MmFhLi5hN2Q3NmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwCkBAIC0yODQxLDExICsyODQxLDEzIEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElz
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKICAgICAgICAgY2NTZXR0
aW5ncy5zaG93RlBTQ291bnRlciA9IHNldHRpbmdzKCktPnNob3dGUFNDb3VudGVyKCk7CiAgICAg
ICAgIGNjU2V0dGluZ3Muc2hvd1BsYXRmb3JtTGF5ZXJUcmVlID0gc2V0dGluZ3MoKS0+c2hvd1Bs
YXRmb3JtTGF5ZXJUcmVlKCk7CiAgICAgICAgIGNjU2V0dGluZ3MucmVmcmVzaFJhdGUgPSBzY3Jl
ZW5SZWZyZXNoUmF0ZShwYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCkpOworCiAgICAgICAgIEFT
U0VSVChjY1NldHRpbmdzLnJlZnJlc2hSYXRlID49IDApOwogICAgICAgICBpZiAoIWNjU2V0dGlu
Z3MucmVmcmVzaFJhdGUpCiAgICAgICAgICAgICBjY1NldHRpbmdzLnJlZnJlc2hSYXRlID0gZGVm
YXVsdFJlZnJlc2hSYXRlOwogCiAgICAgICAgIGNjU2V0dGluZ3MuZGVsYXlUZXh0dXJlVXBkYXRl
cyA9IHNldHRpbmdzKCktPmRlbGF5VGV4dHVyZVVwZGF0ZXMoKTsKKyAgICAgICAgY2NTZXR0aW5n
cy5wZXJUaWxlUGFpbnRpbmcgPSBzZXR0aW5ncygpLT5wZXJUaWxlUGFpbnRpbmcoKTsKIAogICAg
ICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCA9IE5vbkNvbXBvc2l0ZWRDb250ZW50SG9z
dDo6Y3JlYXRlKFdlYlZpZXdJbXBsQ29udGVudFBhaW50ZXI6OmNyZWF0ZSh0aGlzKSk7CiAgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdCA9IENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKHRoaXMsIGNjU2V0
dGluZ3MpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117653</attachid>
            <date>2011-12-02 10:55:06 -0800</date>
            <delta_ts>2011-12-05 17:31:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>per-tile-painting.diff</filename>
            <type>text/plain</type>
            <size>15154</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCA0MTRkMmUyLi42ZmYyNTE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0zNDgwLDYgKzM0ODAsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2NnL1Ry
YW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCcsCisgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
YW52YXMyRExheWVyQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHAnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjAwZTRhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTAsMCArMSwx
MTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKKyNpZiBVU0UoU0tJQSkKKworI2luY2x1ZGUgIkJpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIKKworI2luY2x1ZGUgIkxheWVyUGFpbnRlckNo
cm9taXVtLmgiCisjaW5jbHVkZSAiU2tDYW52YXMuaCIKKyNpbmNsdWRlICJza2lhL2V4dC9wbGF0
Zm9ybV9jYW52YXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitCaXRtYXBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKEJpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1h
bmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQorICAgIDogQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZSh0ZXh0dXJlKQorICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikK
K3sKK30KKwordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlOjpwYWludENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQorewor
ICAgIHNpemVfdCBidWZmZXJTaXplID0gVGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKHNv
dXJjZVJlY3Quc2l6ZSgpLCB0ZXh0dXJlKCktPmZvcm1hdCgpKTsKKyAgICBtX3BpeGVsRGF0YSA9
IGFkb3B0QXJyYXlQdHIobmV3IHVpbnQ4X3RbYnVmZmVyU2l6ZV0pOworICAgIE93blB0cjxTa0Nh
bnZhcz4gY2FudmFzID0gYWRvcHRQdHIobmV3IHNraWE6OlBsYXRmb3JtQ2FudmFzKHNvdXJjZVJl
Y3Qud2lkdGgoKSwgc291cmNlUmVjdC5oZWlnaHQoKSwgZmFsc2UsIG1fcGl4ZWxEYXRhLmdldCgp
KSk7CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb250ZW50c1JlY3QoY2FudmFzLmdldCgp
LCBzb3VyY2VSZWN0KTsKK30KKwordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sK
KyAgICBBU1NFUlQodGV4dHVyZSgpLT50ZXh0dXJlSWQoKSk7CisgICAgY29udGV4dC0+YmluZFRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmUoKS0+dGV4dHVyZUlk
KCkpOworICAgIEFTU0VSVChtX3BpeGVsRGF0YS5nZXQoKSk7CisgICAgdGV4dHVyZVVwZGF0ZXIo
KS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgdGV4dHVyZSgpLT5mb3JtYXQoKSwgZGVzdFJl
Y3QsIG1fcGl4ZWxEYXRhLmdldCgpKTsKKyAgICBtX3BpeGVsRGF0YS5jbGVhcigpOworfQorCitQ
YXNzUmVmUHRyPEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IEJpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShQYXNzT3duUHRyPExh
eWVyUGFpbnRlckNocm9taXVtPiBwYWludGVyLCBib29sIHVzZU1hcFRleFN1YkltYWdlKQorewor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcihwYWludGVyLCB1c2VNYXBUZXhTdWJJbWFnZSkpOworfQorCitCaXRtYXBTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIsIGJv
b2wgdXNlTWFwVGV4U3ViSW1hZ2UpCisgICAgOiBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyKHBhaW50ZXIpCisgICAgLCBtX3RleFN1YkltYWdlKHVzZU1hcFRleFN1YkltYWdlKQor
eworfQorCitCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp+Qml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcigpCit7Cit9CisKK1Bhc3NPd25QdHI8
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6Y3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciogbWFuYWdlcikKK3sK
KyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRleHR1cmUodGhpcywgTWFuYWdlZFRleHR1cmU6OmNy
ZWF0ZShtYW5hZ2VyKSkpOworfQorCitMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxG
b3JtYXQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6c2FtcGxlZFRl
eGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpCit7CisgICAgLy8gVGhlIGNvbXBvbmVu
dCBvcmRlciBtYXkgYmUgYmdyYSBpZiB3ZSB1cGxvYWRlZCBiZ3JhIHBpeGVscyB0byByZ2JhIHRl
eHR1cmVzLgorICAgIHJldHVybiBQbGF0Zm9ybUNvbG9yOjpzYW1lQ29tcG9uZW50T3JkZXIodGV4
dHVyZUZvcm1hdCkgPworICAgICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRl
eGVsRm9ybWF0UkdCQSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdEJH
UkE7Cit9CisKK3ZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYg
dGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCit7CisgICAg
bV90ZXhTdWJJbWFnZS5zZXRTdWJJbWFnZVNpemUodGlsZVNpemUpOworICAgIFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMoY29udGVudFJlY3QsIHRpbGVT
aXplLCBib3JkZXJUZXhlbHMsIGNvbnRlbnRzU2NhbGUpOworfQorCit2b2lkIEJpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHNSZWN0KFNrQ2FudmFz
KiBjYW52YXMsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpCit7CisgICAgLy8gVHJhbnNsYXRl
IHRoZSBvcmlnaW4gb2YgY29udGVudFJlY3QgdG8gdGhhdCBvZiBzb3VyY2VSZWN0LgorICAgIGNh
bnZhcy0+dHJhbnNsYXRlKGNvbnRlbnRSZWN0KCkueCgpIC0gc291cmNlUmVjdC54KCksCisgICAg
ICAgICAgICAgICAgICAgICAgY29udGVudFJlY3QoKS55KCkgLSBzb3VyY2VSZWN0LnkoKSk7Cisg
ICAgZHJhd1BpY3R1cmUoY2FudmFzKTsKK30KKwordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgR0MzRGVudW0gZm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
dWludDhfdCogcGl4ZWxzKQoreworICAgIG1fdGV4U3ViSW1hZ2UudXBsb2FkKHBpeGVscywgZGVz
dFJlY3QsIGRlc3RSZWN0LCBkZXN0UmVjdCwgZm9ybWF0LCBjb250ZXh0KTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorI2VuZGlmIC8vIFVTRShTS0lBKQorI2VuZGlmIC8vIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi42ZDYzOTU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgQml0bWFwU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcl9oCisjZGVmaW5lIEJpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXJfaAorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQorI2lmIFVTRShTS0lBKQorCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlU3ViSW1hZ2Uu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCisjaW5jbHVkZSAiU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEJp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB7CitwdWJsaWM6CisgICAgY2xhc3MgVGV4dHVyZSA6
IHB1YmxpYyBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIFRleHR1cmUoQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ciosIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7CisgICAgICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVw
ZGF0ZXIoKSB7IHJldHVybiBtX3RleHR1cmVVcGRhdGVyOyB9CisKKyAgICAgICAgT3duQXJyYXlQ
dHI8dWludDhfdD4gbV9waXhlbERhdGE7CisgICAgICAgIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIqIG1fdGV4dHVyZVVwZGF0ZXI7CisgICAgfTsKKworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IGNy
ZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiwgYm9vbCB1c2VNYXBUZXhTdWJJ
bWFnZSk7CisgICAgdmlydHVhbCB+Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcigpOworCisgICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqKTsKKyAgICB2aXJ0dWFsIE9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uKCkgeyByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Qm90dG9t
VXBPcmllbnRhdGlvbjsgfQorICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRU
ZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGls
ZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUpOworICAgIHZvaWQg
cGFpbnRDb250ZW50c1JlY3QoU2tDYW52YXMqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KTsK
KyAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgR0MzRGVudW0g
Zm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgdWludDhfdCogcGl4ZWxzKTsK
KworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBib29sIHVzZU1hcFRl
eFN1YkltYWdlKTsKKworICAgIExheWVyVGV4dHVyZVN1YkltYWdlIG1fdGV4U3ViSW1hZ2U7Cit9
OworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2VuZGlmIC8vIFVTRShTS0lBKQorI2VuZGlmIC8v
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNlbmRpZiAvLyBCaXRtYXBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVt
LmNwcAppbmRleCAzOGU2NDMyLi5kZDc0OTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hy
b21pdW0uY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiQ29udGVudExheWVyQ2hyb21p
dW0uaCIKIAogI2luY2x1ZGUgIkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIKKyNp
bmNsdWRlICJCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgiCiAjaW5j
bHVkZSAiRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgiCiAj
aW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVy
Q2hyb21pdW0uaCIKQEAgLTEzNCw2ICsxMzUsMTEgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0KiBob3N0KQogICAg
ICAgICBtX3RleHR1cmVVcGRhdGVyID0gRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpjcmVhdGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKG1fZGVsZWdh
dGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGlmIChob3N0LT5zZXR0aW5ncygp
LnBlclRpbGVQYWludGluZykgeworICAgICAgICBtX3RleHR1cmVVcGRhdGVyID0gQml0bWFwU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENvbnRlbnRMYXllclBhaW50
ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSwgaG9zdC0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygp
LnVzaW5nTWFwU3ViKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICNlbmRpZiAvLyBVU0UoU0tJ
QSkKIAogICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpjcmVhdGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKG1fZGVsZWdhdGUpLCBob3N0
LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdNYXBTdWIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuaAppbmRleCBjZGEwYmY0Li4xNGJiODEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuaApAQCAtNzUsNyArNzUsOCBAQCBzdHJ1Y3QgQ0NTZXR0aW5ncyB7CiAgICAgICAg
ICAgICAsIHNob3dQbGF0Zm9ybUxheWVyVHJlZShmYWxzZSkKICAgICAgICAgICAgICwgdXNlRGFt
YWdlVHJhY2tlcihmYWxzZSkKICAgICAgICAgICAgICwgcmVmcmVzaFJhdGUoMCkKLSAgICAgICAg
ICAgICwgZGVsYXlUZXh0dXJlVXBkYXRlcyhmYWxzZSkgeyB9CisgICAgICAgICAgICAsIGRlbGF5
VGV4dHVyZVVwZGF0ZXMoZmFsc2UpCisgICAgICAgICAgICAsIHBlclRpbGVQYWludGluZyhmYWxz
ZSkgeyB9CiAKICAgICBib29sIGFjY2VsZXJhdGVQYWludGluZzsKICAgICBib29sIGNvbXBvc2l0
ZU9mZnNjcmVlbjsKQEAgLTg1LDYgKzg2LDcgQEAgc3RydWN0IENDU2V0dGluZ3MgewogICAgIGJv
b2wgdXNlRGFtYWdlVHJhY2tlcjsKICAgICBkb3VibGUgcmVmcmVzaFJhdGU7CiAgICAgYm9vbCBk
ZWxheVRleHR1cmVVcGRhdGVzOworICAgIGJvb2wgcGVyVGlsZVBhaW50aW5nOwogfTsKIAogLy8g
UHJvdmlkZXMgaW5mb3JtYXRpb24gb24gYW4gSW1wbCdzIHJlbmRlcmluZyBjYXBhYmlsaXRpZXMg
YmFjayB0byB0aGUgQ0NMYXllclRyZWVIb3N0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViU2V0dGluZ3MuaAppbmRleCA3NDUyZTA2Li5hNTFiNDZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKQEAgLTEzNCw2ICsxMzQsOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc3VhbFdvcmRNb3ZlbWVudEVuYWJsZWQoYm9vbCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXREZWxheVRleHR1cmVVcGRhdGVzKGJvb2wpID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgZGVsYXlUZXh0dXJlVXBkYXRlcygpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0UGVyVGlsZVBhaW50aW5nKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgcGVyVGlsZVBhaW50aW5nKCkgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgfldlYlNl
dHRpbmdzKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
ZXR0aW5nc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJ
bXBsLmNwcAppbmRleCBlYTNhNWY5Li45YmM3ODMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKQEAgLTUxLDYgKzUxLDcgQEAgV2ViU2V0dGlu
Z3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwoU2V0dGluZ3MqIHNldHRpbmdzKQogICAgICwgbV9zaG93
RlBTQ291bnRlcihmYWxzZSkKICAgICAsIG1fc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGZhbHNlKQog
ICAgICwgbV9kZWxheVRleHR1cmVVcGRhdGVzKGZhbHNlKQorICAgICwgbV9wZXJUaWxlUGFpbnRp
bmcoZmFsc2UpCiB7CiAgICAgQVNTRVJUKHNldHRpbmdzKTsKIH0KQEAgLTQ3MSw0ICs0NzIsOSBA
QCB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0RGVsYXlUZXh0dXJlVXBkYXRlcyhib29sIGVuYWJs
ZWQpCiAgICAgbV9kZWxheVRleHR1cmVVcGRhdGVzID0gZW5hYmxlZDsKIH0KIAordm9pZCBXZWJT
ZXR0aW5nc0ltcGw6OnNldFBlclRpbGVQYWludGluZyhib29sIGVuYWJsZWQpCit7CisgICAgbV9w
ZXJUaWxlUGFpbnRpbmcgPSBlbmFibGVkOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKaW5kZXggOTI3ZWM2
Ni4uZGJiYjA2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0
dGluZ3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJ
bXBsLmgKQEAgLTEyNiw2ICsxMjYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFZp
c3VhbFdvcmRNb3ZlbWVudEVuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldERlbGF5
VGV4dHVyZVVwZGF0ZXMoYm9vbCk7CiAgICAgdmlydHVhbCBib29sIGRlbGF5VGV4dHVyZVVwZGF0
ZXMoKSBjb25zdCB7IHJldHVybiBtX2RlbGF5VGV4dHVyZVVwZGF0ZXM7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2V0UGVyVGlsZVBhaW50aW5nKGJvb2wpOworICAgIHZpcnR1YWwgYm9vbCBwZXJUaWxl
UGFpbnRpbmcoKSBjb25zdCB7IHJldHVybiBtX3BlclRpbGVQYWludGluZzsgfQogCiBwcml2YXRl
OgogICAgIFdlYkNvcmU6OlNldHRpbmdzKiBtX3NldHRpbmdzOwpAQCAtMTMzLDYgKzEzNSw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3dGUFNDb3VudGVyOwogICAgIGJvb2wgbV9zaG93UGxh
dGZvcm1MYXllclRyZWU7CiAgICAgYm9vbCBtX2RlbGF5VGV4dHVyZVVwZGF0ZXM7CisgICAgYm9v
bCBtX3BlclRpbGVQYWludGluZzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDFjNmU1NWQuLjNkMWIw
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTI4
OTksMTEgKzI4OTksMTMgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQWN0aXZlKGJvb2wgYWN0aXZlKQogICAgICAgICBjY1NldHRpbmdzLnNob3dGUFNDb3Vu
dGVyID0gc2V0dGluZ3MoKS0+c2hvd0ZQU0NvdW50ZXIoKTsKICAgICAgICAgY2NTZXR0aW5ncy5z
aG93UGxhdGZvcm1MYXllclRyZWUgPSBzZXR0aW5ncygpLT5zaG93UGxhdGZvcm1MYXllclRyZWUo
KTsKICAgICAgICAgY2NTZXR0aW5ncy5yZWZyZXNoUmF0ZSA9IHNjcmVlblJlZnJlc2hSYXRlKHBh
Z2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKSk7CisKICAgICAgICAgQVNTRVJUKGNjU2V0dGluZ3Mu
cmVmcmVzaFJhdGUgPj0gMCk7CiAgICAgICAgIGlmICghY2NTZXR0aW5ncy5yZWZyZXNoUmF0ZSkK
ICAgICAgICAgICAgIGNjU2V0dGluZ3MucmVmcmVzaFJhdGUgPSBkZWZhdWx0UmVmcmVzaFJhdGU7
CiAKICAgICAgICAgY2NTZXR0aW5ncy5kZWxheVRleHR1cmVVcGRhdGVzID0gc2V0dGluZ3MoKS0+
ZGVsYXlUZXh0dXJlVXBkYXRlcygpOworICAgICAgICBjY1NldHRpbmdzLnBlclRpbGVQYWludGlu
ZyA9IHNldHRpbmdzKCktPnBlclRpbGVQYWludGluZygpOwogCiAgICAgICAgIG1fbm9uQ29tcG9z
aXRlZENvbnRlbnRIb3N0ID0gTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpjcmVhdGUoV2ViVmll
d0ltcGxDb250ZW50UGFpbnRlcjo6Y3JlYXRlKHRoaXMpKTsKICAgICAgICAgbV9sYXllclRyZWVI
b3N0ID0gQ0NMYXllclRyZWVIb3N0OjpjcmVhdGUodGhpcywgY2NTZXR0aW5ncyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117961</attachid>
            <date>2011-12-05 17:31:35 -0800</date>
            <delta_ts>2011-12-06 13:15:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71869-20111205203134.patch</filename>
            <type>text/plain</type>
            <size>19093</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDYwMDhhZjYwY2M0NjNh
MDBhOWFlZWQyZmE2NzNjNGJkOTRmZDBhOC4uZDY4OTRlMjUyOTI0N2U4MjE5NWZiMDA2ZTFjOGYx
OTI5NjY0NTM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDExLTEyLTA1ICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBJ
bXBsZW1lbnQgdGlsZS1zaXplZCBwYWludGluZyB1c2luZyBTa1BpY3R1cmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxODY5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRleHR1cmUgdXBsb2FkZXIg
dGhhdCBwYWludHMgdGlsZS1zaXplZCBjaHVua3MgdXNpbmcgU2tQaWN0dXJlCisgICAgICAgIHJl
Y29yZGluZyBhbmQgcGxheWJhY2suIEV4cG9zZSBzZXR0aW5nIHdoaWNoIGFsbG93cyB0aGlzIHRl
eHR1cmUKKyAgICAgICAgdXBkYXRlciB0byBiZSBlbmFibGVkLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cy4gQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lw
aToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJl
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmU6OnByZXBhcmVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6fkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3Jl
YXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpzYW1wbGVkVGV4ZWxGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OnBhaW50Q29udGVudHNSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dGV4dHVyZVVwZGF0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6b3JpZW50YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nv
bnRlbnRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNo
cm9taXVtOjpjcmVhdGVUZXh0dXJlVXBkYXRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDQ1Nl
dHRpbmdzOjpDQ1NldHRpbmdzKToKKwogMjAxMS0xMi0wNSAgQWRhbSBLbGVpbiAgPGFkYW1rQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBWOFJlY3Vyc2lvblNjb3BlIHNob3VsZCBjYWxsIGRpZExl
YXZlU2NyaXB0Q29udGV4dCB3aGVuIHJlY3Vyc2lvbkxldmVsIHJlYWNoZXMgemVybwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCAzZDkzZmI0ZmU5MjZiYWE1MTY4MTMwNjM5ZmIwZmU0Zjc2
NTc2Y2I1Li5jZjJmMjJjYTg0Y2Y5YzM0NzQ5MjhmYzgyYTNjY2QyOWNiMDhjOTNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDExLTEyLTA1ICBEYXZpZCBS
ZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBJbXBs
ZW1lbnQgdGlsZS1zaXplZCBwYWludGluZyB1c2luZyBTa1BpY3R1cmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxODY5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHBlclRpbGVQYWludGluZyBzZXR0
aW5nIHRoYXQgaXMgdXNlZCBieSBjb21wb3NpdG9yIHRvIGRldGVybWluZQorICAgICAgICB3aGF0
IHRleHR1cmUgdXBsb2FkZXIgdG8gdXNlLgorCisgICAgICAgICogcHVibGljL1dlYlNldHRpbmdz
Lmg6CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlNldHRpbmdzSW1wbDo6V2ViU2V0dGluZ3NJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U2V0dGluZ3NJbXBsOjpzZXRQZXJUaWxlUGFpbnRpbmcpOgorICAgICAgICAqIHNyYy9XZWJTZXR0
aW5nc0ltcGwuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpwZXJUaWxlUGFp
bnRpbmcpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUpOgorCiAyMDEx
LTEyLTAxICBWYW5nZWxpcyBLb2trZXZpcyAgPHZhbmdlbGlzQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBVc2UgQU5HTEUncyB0ZXh0dXJlX3VzYWdlIGFuZCB0ZXh0dXJlX3N0b3JhZ2UgZXh0ZW5z
aW9ucyB3aGVuIGFsbG9jYXRpbmcgY29tcG9zaXRvciB0ZXh0dXJlcy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpp
bmRleCAyN2VlNDI3MDU0NzBiZGRjMzRlNjNiOTMxMDljYTc2YmQ3YThiMmQ2Li5lZDM5OGY4YjYx
ODVhMmRlMGFkYzY4ZDhkZTQ3ZTA3YTU3ZDQzMWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNDgz
LDYgKzM0ODMsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2NnL1RyYW5zZm9y
bWF0aW9uTWF0cml4Q0cuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCcsCisgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMy
RExheWVyQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHAnLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44MjIxZGQyZTUyMWJkNjNmZTBlNmYwZjlkNjIyNGUzOGRmYjM0Mjk4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTAsMCAr
MSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKKyNpZiBVU0UoU0tJQSkKKworI2luY2x1ZGUgIkJpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIKKworI2luY2x1ZGUgIkxheWVyUGFpbnRl
ckNocm9taXVtLmgiCisjaW5jbHVkZSAiU2tDYW52YXMuaCIKKyNpbmNsdWRlICJza2lhL2V4dC9w
bGF0Zm9ybV9jYW52YXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitCaXRtYXBTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKEJpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRy
PE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQorICAgIDogQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZSh0ZXh0dXJlKQorICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRl
cikKK3sKK30KKwordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjpwcmVwYXJlUmVjdChjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQoreworICAg
IHNpemVfdCBidWZmZXJTaXplID0gVGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKHNvdXJj
ZVJlY3Quc2l6ZSgpLCB0ZXh0dXJlKCktPmZvcm1hdCgpKTsKKyAgICBtX3BpeGVsRGF0YSA9IGFk
b3B0QXJyYXlQdHIobmV3IHVpbnQ4X3RbYnVmZmVyU2l6ZV0pOworICAgIE93blB0cjxTa0NhbnZh
cz4gY2FudmFzID0gYWRvcHRQdHIobmV3IHNraWE6OlBsYXRmb3JtQ2FudmFzKHNvdXJjZVJlY3Qu
d2lkdGgoKSwgc291cmNlUmVjdC5oZWlnaHQoKSwgZmFsc2UsIG1fcGl4ZWxEYXRhLmdldCgpKSk7
CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb250ZW50c1JlY3QoY2FudmFzLmdldCgpLCBz
b3VyY2VSZWN0KTsKK30KKwordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBU
ZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIHRleHR1cmUoKS0+YmluZFRleHR1cmUoY29u
dGV4dCwgYWxsb2NhdG9yKTsKKyAgICBBU1NFUlQobV9waXhlbERhdGEuZ2V0KCkpOworICAgIHRl
eHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIHRleHR1cmUoKS0+Zm9y
bWF0KCksIGRlc3RSZWN0LCBtX3BpeGVsRGF0YS5nZXQoKSk7CisgICAgbV9waXhlbERhdGEuY2xl
YXIoKTsKK30KKworUGFzc1JlZlB0cjxCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyPiBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUo
UGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgYm9vbCB1c2VNYXBUZXhT
dWJJbWFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJpdG1hcFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIocGFpbnRlciwgdXNlTWFwVGV4U3ViSW1hZ2UpKTsKK30KKwor
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Qml0bWFwU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVt
PiBwYWludGVyLCBib29sIHVzZU1hcFRleFN1YkltYWdlKQorICAgIDogU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcihwYWludGVyKQorICAgICwgbV90ZXhTdWJJbWFnZSh1c2VNYXBU
ZXhTdWJJbWFnZSkKK3sKK30KKworQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6fkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoKQoreworfQor
CitQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IEJpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIq
IG1hbmFnZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0dXJlKHRoaXMsIE1hbmFn
ZWRUZXh0dXJlOjpjcmVhdGUobWFuYWdlcikpKTsKK30KKworTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
U2FtcGxlZFRleGVsRm9ybWF0IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OnNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KQoreworICAgIC8v
IFRoZSBjb21wb25lbnQgb3JkZXIgbWF5IGJlIGJncmEgaWYgd2UgdXBsb2FkZWQgYmdyYSBwaXhl
bHMgdG8gcmdiYSB0ZXh0dXJlcy4KKyAgICByZXR1cm4gUGxhdGZvcm1Db2xvcjo6c2FtZUNvbXBv
bmVudE9yZGVyKHRleHR1cmVGb3JtYXQpID8KKyAgICAgICAgICAgIExheWVyVGV4dHVyZVVwZGF0
ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVk
VGV4ZWxGb3JtYXRCR1JBOworfQorCit2b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwg
Y29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRz
U2NhbGUpCit7CisgICAgbV90ZXhTdWJJbWFnZS5zZXRTdWJJbWFnZVNpemUodGlsZVNpemUpOwor
ICAgIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShj
b250ZW50UmVjdCwgdGlsZVNpemUsIGJvcmRlclRleGVscywgY29udGVudHNTY2FsZSk7Cit9CisK
K3ZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250
ZW50c1JlY3QoU2tDYW52YXMqIGNhbnZhcywgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCkKK3sK
KyAgICAvLyBUcmFuc2xhdGUgdGhlIG9yaWdpbiBvZiBjb250ZW50UmVjdCB0byB0aGF0IG9mIHNv
dXJjZVJlY3QuCisgICAgY2FudmFzLT50cmFuc2xhdGUoY29udGVudFJlY3QoKS54KCkgLSBzb3Vy
Y2VSZWN0LngoKSwKKyAgICAgICAgICAgICAgICAgICAgICBjb250ZW50UmVjdCgpLnkoKSAtIHNv
dXJjZVJlY3QueSgpKTsKKyAgICBkcmF3UGljdHVyZShjYW52YXMpOworfQorCit2b2lkIEJpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBHQzNEZW51bSBmb3JtYXQsIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCB1aW50OF90KiBwaXhlbHMpCit7CisgICAgbV90ZXhTdWJJbWFnZS51
cGxvYWQocGl4ZWxzLCBkZXN0UmVjdCwgZGVzdFJlY3QsIGRlc3RSZWN0LCBmb3JtYXQsIGNvbnRl
eHQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYgLy8gVVNFKFNLSUEpCisj
ZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjk0MjI2MzlkM2M5MmI3M2ZkY2I0OGNmYWRlODE3NTFjNDNlNDJhODEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTAsMCArMSw3MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKworI2lmbmRlZiBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
X2gKKyNkZWZpbmUgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcl9oCisK
KyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisjaWYgVVNFKFNLSUEpCisKKyNpbmNs
dWRlICJMYXllclRleHR1cmVTdWJJbWFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29sb3IuaCIK
KyNpbmNsdWRlICJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlciA6IHB1YmxpYyBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyIHsKK3B1
YmxpYzoKKyAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUgeworICAgIHB1YmxpYzoKKyAgICAgICAgVGV4dHVyZShCaXRtYXBTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4p
OworCisgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0
M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgQml0bWFwU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBt
X3RleHR1cmVVcGRhdGVyOyB9CisKKyAgICAgICAgT3duQXJyYXlQdHI8dWludDhfdD4gbV9waXhl
bERhdGE7CisgICAgICAgIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIq
IG1fdGV4dHVyZVVwZGF0ZXI7CisgICAgfTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IGNyZWF0ZShQYXNzT3duUHRyPExh
eWVyUGFpbnRlckNocm9taXVtPiwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSk7CisgICAgdmlydHVh
bCB+Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcigpOworCisgICAgdmly
dHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1
cmUoVGV4dHVyZU1hbmFnZXIqKTsKKyAgICB2aXJ0dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9u
KCkgeyByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Qm90dG9tVXBPcmllbnRhdGlvbjsgfQor
ICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51
bSB0ZXh0dXJlRm9ybWF0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0
IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRl
clRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSk7CisgICAgdm9pZCBwYWludENvbnRlbnRzUmVj
dChTa0NhbnZhcyosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpOworICAgIHZvaWQgdXBkYXRl
VGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBHQzNEZW51bSBmb3JtYXQsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCB1aW50OF90KiBwaXhlbHMpOworCitwcml2YXRlOgorICAg
IGV4cGxpY2l0IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093
blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4sIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpOworCisg
ICAgTGF5ZXJUZXh0dXJlU3ViSW1hZ2UgbV90ZXhTdWJJbWFnZTsKK307Cit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisjZW5kaWYgLy8gVVNFKFNLSUEpCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQorI2VuZGlmIC8vIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDNhZWMz
ZWJmZjBmMTJhYzYxOGQ2OGZmMjYxNzBjYjI2MDc0ZDFmYmIuLjJhMjQ2NmQ5MTI5YWVjMzY0MDkz
MjI5Y2I5MzVhZjgyZDUwNzI0YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5j
cHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJDb250ZW50TGF5ZXJDaHJvbWl1bS5oIgog
CiAjaW5jbHVkZSAiQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgorI2luY2x1ZGUg
IkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJG
cmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRl
ICJMYXllclBhaW50ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1
bS5oIgpAQCAtMTIwLDYgKzEyMSwxMSBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpjcmVh
dGVUZXh0dXJlVXBkYXRlcihjb25zdCBDQ0xheWVyVHJlZUhvc3QqIGhvc3QpCiAgICAgICAgIG1f
dGV4dHVyZVVwZGF0ZXIgPSBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9kZWxlZ2F0ZSkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgaWYgKGhvc3QtPnNldHRpbmdzKCkucGVyVGls
ZVBhaW50aW5nKSB7CisgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBCaXRtYXBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3Jl
YXRlKG1fZGVsZWdhdGUpLCBob3N0LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdN
YXBTdWIpOworICAgICAgICByZXR1cm47CisgICAgfQogI2VuZGlmIC8vIFVTRShTS0lBKQogCiAg
ICAgbV90ZXh0dXJlVXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNy
ZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9kZWxlZ2F0ZSksIGhvc3QtPmxheWVy
UmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ01hcFN1Yik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5oCmluZGV4IDg3MmMzYzgzM2VlOTJlY2E1Y2RiYTJmNGEwOWEyMGUyYWY2NzQ5YmUuLmFh
YWQxNDIyOWQzNTEwZWUxOTEwMjFjNzY0Yzc1YjRmYjQ3M2FiNTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5oCkBAIC03MywxMyArNzMsMTUgQEAgc3RydWN0IENDU2V0dGluZ3MgewogICAg
ICAgICAgICAgLCBjb21wb3NpdGVPZmZzY3JlZW4oZmFsc2UpCiAgICAgICAgICAgICAsIHNob3dG
UFNDb3VudGVyKGZhbHNlKQogICAgICAgICAgICAgLCBzaG93UGxhdGZvcm1MYXllclRyZWUoZmFs
c2UpCi0gICAgICAgICAgICAsIHJlZnJlc2hSYXRlKDApIHsgfQorICAgICAgICAgICAgLCByZWZy
ZXNoUmF0ZSgwKQorICAgICAgICAgICAgLCBwZXJUaWxlUGFpbnRpbmcoZmFsc2UpIHsgfQogCiAg
ICAgYm9vbCBhY2NlbGVyYXRlUGFpbnRpbmc7CiAgICAgYm9vbCBjb21wb3NpdGVPZmZzY3JlZW47
CiAgICAgYm9vbCBzaG93RlBTQ291bnRlcjsKICAgICBib29sIHNob3dQbGF0Zm9ybUxheWVyVHJl
ZTsKICAgICBkb3VibGUgcmVmcmVzaFJhdGU7CisgICAgYm9vbCBwZXJUaWxlUGFpbnRpbmc7CiB9
OwogCiAvLyBQcm92aWRlcyBpbmZvcm1hdGlvbiBvbiBhbiBJbXBsJ3MgcmVuZGVyaW5nIGNhcGFi
aWxpdGllcyBiYWNrIHRvIHRoZSBDQ0xheWVyVHJlZUhvc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCmluZGV4IGRkNzc0OTkwYjYzYTE0OThiYTQzOGFiNmY1
OTAxN2Q4OWFlY2Y0YjMuLjM1NmQwNjcyMzkxN2Q4M2JiNDdjNTg2ZDExNTU3NTFlYzRkNmU3M2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaApAQCAtMTMy
LDYgKzEzMiw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlU2Nyb2xsQW5p
bWF0b3IoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRIaXhpZTc2V2ViU29ja2V0UHJv
dG9jb2xFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzdWFsV29yZE1v
dmVtZW50RW5hYmxlZChib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFBlclRpbGVQYWlu
dGluZyhib29sKSA9IDA7CisgICAgdmlydHVhbCBib29sIHBlclRpbGVQYWludGluZygpIGNvbnN0
ID0gMDsKIAogcHJvdGVjdGVkOgogICAgIH5XZWJTZXR0aW5ncygpIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKaW5kZXggODRlYzg0MzMxMjY3
ZDVhZTRjZDg4NWE5YWJkYWNmNDIwZTIxNjMwMS4uZDkyMmZjMTA2MTQwYmY0N2ExMGJiZGM1YzVl
OTFjMDIyZmZkNWMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U2V0dGluZ3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0
aW5nc0ltcGwuY3BwCkBAIC01MCw2ICs1MCw3IEBAIFdlYlNldHRpbmdzSW1wbDo6V2ViU2V0dGlu
Z3NJbXBsKFNldHRpbmdzKiBzZXR0aW5ncykKICAgICAsIG1fY29tcG9zaXRlVG9UZXh0dXJlRW5h
YmxlZChmYWxzZSkKICAgICAsIG1fc2hvd0ZQU0NvdW50ZXIoZmFsc2UpCiAgICAgLCBtX3Nob3dQ
bGF0Zm9ybUxheWVyVHJlZShmYWxzZSkKKyAgICAsIG1fcGVyVGlsZVBhaW50aW5nKGZhbHNlKQog
ewogICAgIEFTU0VSVChzZXR0aW5ncyk7CiB9CkBAIC00OTMsNCArNDk0LDkgQEAgdm9pZCBXZWJT
ZXR0aW5nc0ltcGw6OnNldFNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zKGJvb2wgZW5hYmxl
ZCkKIH0KIAogCit2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0UGVyVGlsZVBhaW50aW5nKGJvb2wg
ZW5hYmxlZCkKK3sKKyAgICBtX3BlclRpbGVQYWludGluZyA9IGVuYWJsZWQ7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU2V0dGluZ3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5n
c0ltcGwuaAppbmRleCAxYTA5Mzk0ZjAwZmFjOGIyYWQ1ZTE0NGVjMjU2MTZhNzM5ZTE4YTg3Li5m
YzU5Mzc1MWE1MDY2NTI3YWU3Y2U5ZGE0ZTRiYTMwMTljNGFkYjY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaApAQCAtMTI3LDEyICsxMjcsMTUgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGREaXNwbGF5U3VidGl0bGVzKGJvb2wp
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGREaXNwbGF5Q2FwdGlvbnMoYm9vbCk7CiAgICAg
dmlydHVhbCB2b2lkIHNldFNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zKGJvb2wpOworICAg
IHZpcnR1YWwgdm9pZCBzZXRQZXJUaWxlUGFpbnRpbmcoYm9vbCk7CisgICAgdmlydHVhbCBib29s
IHBlclRpbGVQYWludGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcGVyVGlsZVBhaW50aW5nOyB9CiAK
IHByaXZhdGU6CiAgICAgV2ViQ29yZTo6U2V0dGluZ3MqIG1fc2V0dGluZ3M7CiAgICAgYm9vbCBt
X2NvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQ7CiAgICAgYm9vbCBtX3Nob3dGUFNDb3VudGVyOwog
ICAgIGJvb2wgbV9zaG93UGxhdGZvcm1MYXllclRyZWU7CisgICAgYm9vbCBtX3BlclRpbGVQYWlu
dGluZzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDA2YzA5NzI5NmViODYxN2QyMGM2YjdiMjQ3MTUz
M2QxN2EyMzAyMzEuLjYzMTViNTJhZDg3ZDhlZDI2Y2FiYTAwYzQ1NjU1NzA0NmJjNjdhMzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTI4OTgsMTAg
KzI4OTgsMTMgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5n
QWN0aXZlKGJvb2wgYWN0aXZlKQogICAgICAgICBjY1NldHRpbmdzLnNob3dGUFNDb3VudGVyID0g
c2V0dGluZ3MoKS0+c2hvd0ZQU0NvdW50ZXIoKTsKICAgICAgICAgY2NTZXR0aW5ncy5zaG93UGxh
dGZvcm1MYXllclRyZWUgPSBzZXR0aW5ncygpLT5zaG93UGxhdGZvcm1MYXllclRyZWUoKTsKICAg
ICAgICAgY2NTZXR0aW5ncy5yZWZyZXNoUmF0ZSA9IHNjcmVlblJlZnJlc2hSYXRlKHBhZ2UoKS0+
bWFpbkZyYW1lKCktPnZpZXcoKSk7CisKICAgICAgICAgQVNTRVJUKGNjU2V0dGluZ3MucmVmcmVz
aFJhdGUgPj0gMCk7CiAgICAgICAgIGlmICghY2NTZXR0aW5ncy5yZWZyZXNoUmF0ZSkKICAgICAg
ICAgICAgIGNjU2V0dGluZ3MucmVmcmVzaFJhdGUgPSBkZWZhdWx0UmVmcmVzaFJhdGU7CiAKKyAg
ICAgICAgY2NTZXR0aW5ncy5wZXJUaWxlUGFpbnRpbmcgPSBzZXR0aW5ncygpLT5wZXJUaWxlUGFp
bnRpbmcoKTsKKwogICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCA9IE5vbkNvbXBv
c2l0ZWRDb250ZW50SG9zdDo6Y3JlYXRlKFdlYlZpZXdJbXBsQ29udGVudFBhaW50ZXI6OmNyZWF0
ZSh0aGlzKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdCA9IENDTGF5ZXJUcmVlSG9zdDo6Y3Jl
YXRlKHRoaXMsIGNjU2V0dGluZ3MpOwogICAgICAgICBpZiAobV9sYXllclRyZWVIb3N0KSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118100</attachid>
            <date>2011-12-06 13:16:05 -0800</date>
            <delta_ts>2011-12-06 14:37:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71869-20111206161601.patch</filename>
            <type>text/plain</type>
            <size>19029</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTVmZWExMzU0NGFlZmU2
MTZkZmZlNjQwZGNiNjAxNjA2MmJkNTk3OS4uY2JmYzMwMGQzMjhmY2YyMzAyZTYzODQzNDYwYmFh
NzI3NGNkN2Y1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDExLTEyLTA2ICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBJ
bXBsZW1lbnQgdGlsZS1zaXplZCBwYWludGluZyB1c2luZyBTa1BpY3R1cmUuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTg2OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXh0dXJlIHVwbG9hZGVy
IHRoYXQgcGFpbnRzIHRpbGUtc2l6ZWQgY2h1bmtzIHVzaW5nIFNrUGljdHVyZQorICAgICAgICBy
ZWNvcmRpbmcgYW5kIHBsYXliYWNrLiBFeHBvc2Ugc2V0dGluZyB3aGljaCBhbGxvd3MgdGhpcyB0
ZXh0dXJlCisgICAgICAgIHVwZGF0ZXIgdG8gYmUgZW5hYmxlZC4KKworICAgICAgICBObyBuZXcg
dGVzdHMuIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5
cGk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVy
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6On5CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNy
ZWF0ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6c2FtcGxlZFRleGVsRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpwYWludENvbnRlbnRzUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnRleHR1cmVVcGRhdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6Om9yaWVudGF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
b250ZW50TGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NT
ZXR0aW5nczo6Q0NTZXR0aW5ncyk6CisKIDIwMTEtMTItMDYgIEFsZXhhbmRyZSBFbGlhcyAgPGFl
bGlhc0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQXBwbHkgc2VudCBkZWx0YXMg
b24gZmluaXNoQ29tbWl0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDU2NDYzYmY2ODlh
N2NmNWQ5MmViODBkY2RmYjlhMzYzNWUyZDdhNDcuLmExMWM1YzE3MjU3OGNhZTlmY2ExZjZjMmE5
N2QzOTdiYzE3ODEyM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMTEtMTItMDYgIERhdmlkIFJldmVtYW4gIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBbQ2hyb21pdW1dIEltcGxlbWVudCB0aWxlLXNpemVkIHBhaW50aW5nIHVzaW5nIFNr
UGljdHVyZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcxODY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIHBlclRpbGVQYWludGluZyBzZXR0aW5nIHRoYXQgaXMgdXNlZCBieSBjb21wb3NpdG9yIHRv
IGRldGVybWluZQorICAgICAgICB3aGF0IHRleHR1cmUgdXBsb2FkZXIgdG8gdXNlLgorCisgICAg
ICAgICogcHVibGljL1dlYlNldHRpbmdzLmg6CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6V2ViU2V0dGluZ3NJbXBs
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpzZXRQZXJUaWxlUGFpbnRpbmcp
OgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5nc0ltcGwuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
U2V0dGluZ3NJbXBsOjpwZXJUaWxlUGFpbnRpbmcpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdBY3RpdmUpOgorCiAyMDExLTEyLTA2ICBBZGFtIEtsZWluICA8YWRhbWtAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gR3VhcmQgYWNjZXNzIHRvIFdlYktpdFBsYXRm
b3JtU3VwcG9ydDo6Y3VycmVudFRocmVhZCB3aXRoIGEgbnVsbCBjaGVjawpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CmluZGV4IDI3ZWU0MjcwNTQ3MGJkZGMzNGU2M2I5MzEwOWNhNzZiZDdhOGIyZDYuLmVkMzk4Zjhi
NjE4NWEyZGUwYWRjNjhkOGRlNDdlMDdhNTdkNDMxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTM0
ODMsNiArMzQ4Myw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2cvVHJhbnNm
b3JtYXRpb25NYXRyaXhDRy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZh
czJETGF5ZXJDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmNwcCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjgyMjFkZDJlNTIxYmQ2M2ZlMGU2ZjBmOWQ2MjI0ZTM4ZGZiMzQyOTgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtMCww
ICsxLDExMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQorI2lmIFVTRShTS0lBKQorCisjaW5jbHVkZSAiQml0bWFwU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgorCisjaW5jbHVkZSAiTGF5ZXJQYWlu
dGVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJTa0NhbnZhcy5oIgorI2luY2x1ZGUgInNraWEvZXh0
L3BsYXRmb3JtX2NhbnZhcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0JpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUoQml0bWFwU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIsIFBhc3NPd25Q
dHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpCisgICAgOiBDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlKHRleHR1cmUpCisgICAgLCBtX3RleHR1cmVVcGRhdGVyKHRleHR1cmVVcGRh
dGVyKQoreworfQorCit2b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmU6OnByZXBhcmVSZWN0KGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpCit7Cisg
ICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBUZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXMoc291
cmNlUmVjdC5zaXplKCksIHRleHR1cmUoKS0+Zm9ybWF0KCkpOworICAgIG1fcGl4ZWxEYXRhID0g
YWRvcHRBcnJheVB0cihuZXcgdWludDhfdFtidWZmZXJTaXplXSk7CisgICAgT3duUHRyPFNrQ2Fu
dmFzPiBjYW52YXMgPSBhZG9wdFB0cihuZXcgc2tpYTo6UGxhdGZvcm1DYW52YXMoc291cmNlUmVj
dC53aWR0aCgpLCBzb3VyY2VSZWN0LmhlaWdodCgpLCBmYWxzZSwgbV9waXhlbERhdGEuZ2V0KCkp
KTsKKyAgICB0ZXh0dXJlVXBkYXRlcigpLT5wYWludENvbnRlbnRzUmVjdChjYW52YXMuZ2V0KCks
IHNvdXJjZVJlY3QpOworfQorCit2b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit7CisgICAgdGV4dHVyZSgpLT5iaW5kVGV4dHVyZShj
b250ZXh0LCBhbGxvY2F0b3IpOworICAgIEFTU0VSVChtX3BpeGVsRGF0YS5nZXQoKSk7CisgICAg
dGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgdGV4dHVyZSgpLT5m
b3JtYXQoKSwgZGVzdFJlY3QsIG1fcGl4ZWxEYXRhLmdldCgpKTsKKyAgICBtX3BpeGVsRGF0YS5j
bGVhcigpOworfQorCitQYXNzUmVmUHRyPEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI+IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0
ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVyLCBib29sIHVzZU1hcFRl
eFN1YkltYWdlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihwYWludGVyLCB1c2VNYXBUZXhTdWJJbWFnZSkpOworfQor
CitCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpCaXRtYXBTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21p
dW0+IHBhaW50ZXIsIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpCisgICAgOiBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyKHBhaW50ZXIpCisgICAgLCBtX3RleFN1YkltYWdlKHVzZU1h
cFRleFN1YkltYWdlKQoreworfQorCitCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjp+Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcigpCit7Cit9
CisKK1Bhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gQml0bWFwU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdl
ciogbWFuYWdlcikKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRleHR1cmUodGhpcywgTWFu
YWdlZFRleHR1cmU6OmNyZWF0ZShtYW5hZ2VyKSkpOworfQorCitMYXllclRleHR1cmVVcGRhdGVy
OjpTYW1wbGVkVGV4ZWxGb3JtYXQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6c2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpCit7CisgICAg
Ly8gVGhlIGNvbXBvbmVudCBvcmRlciBtYXkgYmUgYmdyYSBpZiB3ZSB1cGxvYWRlZCBiZ3JhIHBp
eGVscyB0byByZ2JhIHRleHR1cmVzLgorICAgIHJldHVybiBQbGF0Zm9ybUNvbG9yOjpzYW1lQ29t
cG9uZW50T3JkZXIodGV4dHVyZUZvcm1hdCkgPworICAgICAgICAgICAgTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBs
ZWRUZXhlbEZvcm1hdEJHUkE7Cit9CisKK3ZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVu
dHNTY2FsZSkKK3sKKyAgICBtX3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0aWxlU2l6ZSk7
CisgICAgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRl
KGNvbnRlbnRSZWN0LCB0aWxlU2l6ZSwgYm9yZGVyVGV4ZWxzLCBjb250ZW50c1NjYWxlKTsKK30K
Kwordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENv
bnRlbnRzUmVjdChTa0NhbnZhcyogY2FudmFzLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQor
eworICAgIC8vIFRyYW5zbGF0ZSB0aGUgb3JpZ2luIG9mIGNvbnRlbnRSZWN0IHRvIHRoYXQgb2Yg
c291cmNlUmVjdC4KKyAgICBjYW52YXMtPnRyYW5zbGF0ZShjb250ZW50UmVjdCgpLngoKSAtIHNv
dXJjZVJlY3QueCgpLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRSZWN0KCkueSgpIC0g
c291cmNlUmVjdC55KCkpOworICAgIGRyYXdQaWN0dXJlKGNhbnZhcyk7Cit9CisKK3ZvaWQgQml0
bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3Qo
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEdDM0RlbnVtIGZvcm1hdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IHVpbnQ4X3QqIHBpeGVscykKK3sKKyAgICBtX3RleFN1YkltYWdl
LnVwbG9hZChwaXhlbHMsIGRlc3RSZWN0LCBkZXN0UmVjdCwgZGVzdFJlY3QsIGZvcm1hdCwgY29u
dGV4dCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRpZiAvLyBVU0UoU0tJQSkK
KyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzMwZjMwNzU1NWJkMzcyMWIxMTRmZmI4YjdiMGQ2Yzg2ZDVmNDQyYgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMCwwICsxLDczIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworCisjaWZuZGVmIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXJfaAorI2RlZmluZSBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyX2gK
KworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNpZiBVU0UoU0tJQSkKKworI2lu
Y2x1ZGUgIkxheWVyVGV4dHVyZVN1YkltYWdlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db2xvci5o
IgorI2luY2x1ZGUgIlNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyIDogcHVibGljIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgewor
cHVibGljOgorICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZSB7CisgICAgcHVibGljOgorICAgICAgICBUZXh0dXJlKEJpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJl
Pik7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRl
eHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBCaXRtYXBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIHsgcmV0dXJu
IG1fdGV4dHVyZVVwZGF0ZXI7IH0KKworICAgICAgICBPd25BcnJheVB0cjx1aW50OF90PiBtX3Bp
eGVsRGF0YTsKKyAgICAgICAgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ciogbV90ZXh0dXJlVXBkYXRlcjsKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Qml0
bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcj4gY3JlYXRlKFBhc3NPd25QdHI8
TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBib29sIHVzZU1hcFRleFN1YkltYWdlKTsKKyAgICB2aXJ0
dWFsIH5CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKCk7CisKKyAgICB2
aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4
dHVyZShUZXh0dXJlTWFuYWdlciopOworICAgIHZpcnR1YWwgT3JpZW50YXRpb24gb3JpZW50YXRp
b24oKSB7IHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpCb3R0b21VcE9yaWVudGF0aW9uOyB9
CisgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0Rl
bnVtIHRleHR1cmVGb3JtYXQpOworICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29u
c3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9y
ZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlKTsKKyAgICB2b2lkIHBhaW50Q29udGVudHNS
ZWN0KFNrQ2FudmFzKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7CisgICAgdm9pZCB1cGRh
dGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIEdDM0RlbnVtIGZvcm1hdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IHVpbnQ4X3QqIHBpeGVscyk7CisKK3ByaXZhdGU6Cisg
ICAgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExh
eWVyUGFpbnRlckNocm9taXVtPiwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSk7CisKKyAgICBMYXll
clRleHR1cmVTdWJJbWFnZSBtX3RleFN1YkltYWdlOworfTsKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKyNlbmRpZiAvLyBVU0UoU0tJQSkKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCisjZW5kaWYgLy8gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggM2FlYzNlYmZmMGYx
MmFjNjE4ZDY4ZmYyNjE3MGNiMjYwNzRkMWZiYi4uMmEyNDY2ZDkxMjlhZWMzNjQwOTMyMjljYjkz
NWFmODJkNTA3MjRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcApAQCAt
MzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkNvbnRlbnRMYXllckNocm9taXVtLmgiCiAKICNpbmNs
dWRlICJCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgiCisjaW5jbHVkZSAiQml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIkZyYW1lQnVm
ZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIkxheWVy
UGFpbnRlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCkBA
IC0xMjAsNiArMTIxLDExIEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1
cmVVcGRhdGVyKGNvbnN0IENDTGF5ZXJUcmVlSG9zdCogaG9zdCkKICAgICAgICAgbV90ZXh0dXJl
VXBkYXRlciA9IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
Y3JlYXRlKENvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CisKKyAgICBpZiAoaG9zdC0+c2V0dGluZ3MoKS5wZXJUaWxlUGFpbnRp
bmcpIHsKKyAgICAgICAgbV90ZXh0dXJlVXBkYXRlciA9IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9k
ZWxlZ2F0ZSksIGhvc3QtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ01hcFN1Yik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CiAjZW5kaWYgLy8gVVNFKFNLSUEpCiAKICAgICBtX3Rl
eHR1cmVVcGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENv
bnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSwgaG9zdC0+bGF5ZXJSZW5kZXJl
ckNhcGFiaWxpdGllcygpLnVzaW5nTWFwU3ViKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgK
aW5kZXggODcyYzNjODMzZWU5MmVjYTVjZGJhMmY0YTA5YTIwZTJhZjY3NDliZS4uYWFhZDE0MjI5
ZDM1MTBlZTE5MTAyMWM3NjRjNzViNGZiNDczYWI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmgKQEAgLTczLDEzICs3MywxNSBAQCBzdHJ1Y3QgQ0NTZXR0aW5ncyB7CiAgICAgICAgICAg
ICAsIGNvbXBvc2l0ZU9mZnNjcmVlbihmYWxzZSkKICAgICAgICAgICAgICwgc2hvd0ZQU0NvdW50
ZXIoZmFsc2UpCiAgICAgICAgICAgICAsIHNob3dQbGF0Zm9ybUxheWVyVHJlZShmYWxzZSkKLSAg
ICAgICAgICAgICwgcmVmcmVzaFJhdGUoMCkgeyB9CisgICAgICAgICAgICAsIHJlZnJlc2hSYXRl
KDApCisgICAgICAgICAgICAsIHBlclRpbGVQYWludGluZyhmYWxzZSkgeyB9CiAKICAgICBib29s
IGFjY2VsZXJhdGVQYWludGluZzsKICAgICBib29sIGNvbXBvc2l0ZU9mZnNjcmVlbjsKICAgICBi
b29sIHNob3dGUFNDb3VudGVyOwogICAgIGJvb2wgc2hvd1BsYXRmb3JtTGF5ZXJUcmVlOwogICAg
IGRvdWJsZSByZWZyZXNoUmF0ZTsKKyAgICBib29sIHBlclRpbGVQYWludGluZzsKIH07CiAKIC8v
IFByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIGFuIEltcGwncyByZW5kZXJpbmcgY2FwYWJpbGl0aWVz
IGJhY2sgdG8gdGhlIENDTGF5ZXJUcmVlSG9zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlNldHRpbmdzLmgKaW5kZXggZDI4YWJhMTZmMzI0NjY1NGVhNjNkYWEzNmNhZGEzODU1
YjBmMDhiNS4uZTJlNzQzYTEwZGIxOTZjZDk3MjBiODM4OTg4ZTg3Yjg3NzZiOWY0MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCkBAIC0xMzMsNiArMTMz
LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVTY3JvbGxBbmltYXRvcihi
b29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVu
YWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXN1YWxXb3JkTW92ZW1lbnRF
bmFibGVkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGVyVGlsZVBhaW50aW5nKGJv
b2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcGVyVGlsZVBhaW50aW5nKCkgY29uc3QgPSAwOwog
CiBwcm90ZWN0ZWQ6CiAgICAgfldlYlNldHRpbmdzKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAppbmRleCAyMGYyMzQ1MGFmYmVhNjQ1YjBm
MzFlYTdjNWUxNzk1ODAyNzg2ODA4Li4wNmVlMDEwMTI4YTg1NmYyZWM3M2Q1ZDIzZWRhZDgyMTQx
ZmY2N2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5n
c0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1w
bC5jcHAKQEAgLTUwLDYgKzUwLDcgQEAgV2ViU2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwo
U2V0dGluZ3MqIHNldHRpbmdzKQogICAgICwgbV9jb21wb3NpdGVUb1RleHR1cmVFbmFibGVkKGZh
bHNlKQogICAgICwgbV9zaG93RlBTQ291bnRlcihmYWxzZSkKICAgICAsIG1fc2hvd1BsYXRmb3Jt
TGF5ZXJUcmVlKGZhbHNlKQorICAgICwgbV9wZXJUaWxlUGFpbnRpbmcoZmFsc2UpCiB7CiAgICAg
QVNTRVJUKHNldHRpbmdzKTsKIH0KQEAgLTQ5OCw0ICs0OTksOSBAQCB2b2lkIFdlYlNldHRpbmdz
SW1wbDo6c2V0U2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMoYm9vbCBlbmFibGVkKQogfQog
CiAKK3ZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRQZXJUaWxlUGFpbnRpbmcoYm9vbCBlbmFibGVk
KQoreworICAgIG1fcGVyVGlsZVBhaW50aW5nID0gZW5hYmxlZDsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0
aW5nc0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5o
CmluZGV4IDJjMjNjYzIyMGFmMjQ1YjE3ZjcxYWUzOTVjY2VhMDZiYzc1MGYyNzcuLjg4ZTI1ZTk2
ZWZjYWZlNTI0ZTA4YTc2NjYxMTYxY2I3NTkzNDRlZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCkBAIC0xMjgsMTIgKzEyOCwxNSBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZERpc3BsYXlTdWJ0aXRsZXMoYm9vbCk7CiAgICAg
dmlydHVhbCB2b2lkIHNldFNob3VsZERpc3BsYXlDYXB0aW9ucyhib29sKTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0U2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMoYm9vbCk7CisgICAgdmlydHVh
bCB2b2lkIHNldFBlclRpbGVQYWludGluZyhib29sKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGVyVGls
ZVBhaW50aW5nKCkgY29uc3QgeyByZXR1cm4gbV9wZXJUaWxlUGFpbnRpbmc7IH0KIAogcHJpdmF0
ZToKICAgICBXZWJDb3JlOjpTZXR0aW5ncyogbV9zZXR0aW5nczsKICAgICBib29sIG1fY29tcG9z
aXRlVG9UZXh0dXJlRW5hYmxlZDsKICAgICBib29sIG1fc2hvd0ZQU0NvdW50ZXI7CiAgICAgYm9v
bCBtX3Nob3dQbGF0Zm9ybUxheWVyVHJlZTsKKyAgICBib29sIG1fcGVyVGlsZVBhaW50aW5nOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKaW5kZXggMDZjMDk3Mjk2ZWI4NjE3ZDIwYzZiN2IyNDcxNTMzZDE3YTIz
MDIzMS4uNjMxNWI1MmFkODdkOGVkMjZjYWJhMDBjNDU2NTU3MDQ2YmM2N2EzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMjg5OCwxMCArMjg5OCwx
MyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUo
Ym9vbCBhY3RpdmUpCiAgICAgICAgIGNjU2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIgPSBzZXR0aW5n
cygpLT5zaG93RlBTQ291bnRlcigpOwogICAgICAgICBjY1NldHRpbmdzLnNob3dQbGF0Zm9ybUxh
eWVyVHJlZSA9IHNldHRpbmdzKCktPnNob3dQbGF0Zm9ybUxheWVyVHJlZSgpOwogICAgICAgICBj
Y1NldHRpbmdzLnJlZnJlc2hSYXRlID0gc2NyZWVuUmVmcmVzaFJhdGUocGFnZSgpLT5tYWluRnJh
bWUoKS0+dmlldygpKTsKKwogICAgICAgICBBU1NFUlQoY2NTZXR0aW5ncy5yZWZyZXNoUmF0ZSA+
PSAwKTsKICAgICAgICAgaWYgKCFjY1NldHRpbmdzLnJlZnJlc2hSYXRlKQogICAgICAgICAgICAg
Y2NTZXR0aW5ncy5yZWZyZXNoUmF0ZSA9IGRlZmF1bHRSZWZyZXNoUmF0ZTsKIAorICAgICAgICBj
Y1NldHRpbmdzLnBlclRpbGVQYWludGluZyA9IHNldHRpbmdzKCktPnBlclRpbGVQYWludGluZygp
OworCiAgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0ID0gTm9uQ29tcG9zaXRlZENv
bnRlbnRIb3N0OjpjcmVhdGUoV2ViVmlld0ltcGxDb250ZW50UGFpbnRlcjo6Y3JlYXRlKHRoaXMp
KTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0ID0gQ0NMYXllclRyZWVIb3N0OjpjcmVhdGUodGhp
cywgY2NTZXR0aW5ncyk7CiAgICAgICAgIGlmIChtX2xheWVyVHJlZUhvc3QpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>