<?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>70134</bug_id>
          
          <creation_ts>2011-10-14 12:44:50 -0700</creation_ts>
          <short_desc>Cues should be loaded by the cached resource loader</short_desc>
          <delta_ts>2019-05-02 16:23:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>43668</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>annacc</cc>
    
    <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>munna1991vikram</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>484196</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-10-14 12:44:50 -0700</bug_when>
    <thetext>Cues should be cached like other web resources so they should be loaded by a CachedResourceLoader</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484197</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2011-10-14 12:45:03 -0700</bug_when>
    <thetext>&lt;rdar://problem/10288601&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484201</commentid>
    <comment_count>2</comment_count>
      <attachid>111056</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-10-14 12:46:42 -0700</bug_when>
    <thetext>Created attachment 111056
Part 1: Update CachedResourceLoader to load cues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484203</commentid>
    <comment_count>3</comment_count>
      <attachid>111057</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-10-14 12:47:25 -0700</bug_when>
    <thetext>Created attachment 111057
Part 2: Implement the cue loader</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484241</commentid>
    <comment_count>4</comment_count>
      <attachid>111057</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-14 13:38:59 -0700</bug_when>
    <thetext>Comment on attachment 111057
Part 2: Implement the cue loader

Attachment 111057 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10060651</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484248</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-10-14 13:45:18 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 111057 [details])
&gt; Attachment 111057 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/10060651

Part 2 depends on Part 1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484495</commentid>
    <comment_count>6</comment_count>
      <attachid>111057</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-10-14 23:22:51 -0700</bug_when>
    <thetext>Comment on attachment 111057
Part 2: Implement the cue loader

Attachment 111057 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10074211</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484601</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-10-15 10:47:50 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 111057 [details])
&gt; Attachment 111057 [details] did not pass gtk-ews (gtk):
&gt; Output: http://queues.webkit.org/results/10074211

See comment #5.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484632</commentid>
    <comment_count>8</comment_count>
      <attachid>111057</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-10-15 13:48:59 -0700</bug_when>
    <thetext>Comment on attachment 111057
Part 2: Implement the cue loader

Clearing flags, this won&apos;t compile without the other patch so I will create a new bug for this once the other changes land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484741</commentid>
    <comment_count>9</comment_count>
      <attachid>111176</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-10-15 23:06:47 -0700</bug_when>
    <thetext>Created attachment 111176
Patch with ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484744</commentid>
    <comment_count>10</comment_count>
      <attachid>111176</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-15 23:42:44 -0700</bug_when>
    <thetext>Comment on attachment 111176
Patch with ChangeLog

Attachment 111176 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10074465</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484746</commentid>
    <comment_count>11</comment_count>
      <attachid>111176</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-10-16 00:12:15 -0700</bug_when>
    <thetext>Comment on attachment 111176
Patch with ChangeLog

Attachment 111176 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10073548</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484777</commentid>
    <comment_count>12</comment_count>
      <attachid>111181</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-10-16 09:43:26 -0700</bug_when>
    <thetext>Created attachment 111181
Add new file to other build systems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485346</commentid>
    <comment_count>13</comment_count>
      <attachid>111181</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-17 12:01:37 -0700</bug_when>
    <thetext>Comment on attachment 111181
Add new file to other build systems.

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

&gt; Source/WebCore/loader/cache/CachedCues.cpp:53
&gt; +    setEncodedSize(m_data.get() ? m_data-&gt;size() : 0);

Should not need a &quot;get&quot; here.

&gt; Source/WebCore/loader/cache/CachedCues.cpp:56
&gt; +    while (CachedResourceClient *client = walker.next())

The &quot;*&quot; needs to be next to the type here.

&gt; Source/WebCore/loader/cache/CachedCues.h:43
&gt; +    virtual void data(PassRefPtr&lt;SharedBuffer&gt; data, bool allDataReceived);

Can this be private?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485380</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-10-17 12:23:07 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/97637</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485383</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-10-17 12:23:42 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 111181 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=111181&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedCues.cpp:53
&gt; &gt; +    setEncodedSize(m_data.get() ? m_data-&gt;size() : 0);
&gt; 
&gt; Should not need a &quot;get&quot; here.
&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedCues.cpp:56
&gt; &gt; +    while (CachedResourceClient *client = walker.next())
&gt; 
&gt; The &quot;*&quot; needs to be next to the type here.
&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedCues.h:43
&gt; &gt; +    virtual void data(PassRefPtr&lt;SharedBuffer&gt; data, bool allDataReceived);
&gt; 
&gt; Can this be private?

I missed these comments, but will do the suggested cleanup in another patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111056</attachid>
            <date>2011-10-14 12:46:42 -0700</date>
            <delta_ts>2011-10-15 23:06:47 -0700</delta_ts>
            <desc>Part 1: Update CachedResourceLoader to load cues</desc>
            <filename>patch_cached_resource_loader.txt</filename>
            <type>text/plain</type>
            <size>18217</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDk3MzAzKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4NSw4IEBACiAJCTA3
MDlGQzRFMTAyNURFRTMwMDU5Q0RCQSAvKiBBY2Nlc3NpYmlsaXR5U2xpZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA5RkM0RDEwMjVERUUzMDA1
OUNEQkEgLyogQWNjZXNzaWJpbGl0eVNsaWRlci5oICovOyB9OwogCQkwNzJDOEIxMTEzMUM1MTg2
MDBBNEZDRTkgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NkYwRDA5MTJCODE5MjcwMEMy
NkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwICovOyB9OwogCQkwNzM1
RUU2QTBGNDBDNUU0MDA0QTI2MDQgLyogTWVkaWFQbGF5ZXJQcm94eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczNUVFNjkwRjQwQzVFNDAwNEEyNjA0
IC8qIE1lZGlhUGxheWVyUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwNzUzODYwMjE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkQ3Vlcy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzUzODYw
MDE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkQ3Vlcy5jcHAgKi87IH07CisJCTA3NTM4NjAzMTQ0
ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRDdWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzUzODYwMTE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkQ3Vl
cy5oICovOyB9OwogCQkwNzZGMEQwRTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwNzZGMEQwQTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uLmggKi87IH07CiAJCTA3QjAxMTNGMTAzMjI0MjIwMEZCREMzMyAvKiBBY2Nlc3Np
YmlsaXR5TWVkaWFDb250cm9scy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDdCMDExM0UxMDMyMjQyMjAwRkJEQzMzIC8qIEFjY2Vzc2liaWxpdHlNZWRp
YUNvbnRyb2xzLmggKi87IH07CiAJCTA4MDZFNTdBMTI4OTMwNDUwMDdDRUQzMiAvKiBTVkdNYXRy
aXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MDZF
NTc5MTI4OTMwNDUwMDdDRUQzMiAvKiBTVkdNYXRyaXguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzA4Nyw2ICs3MDg5LDggQEAKIAkJMDcwOUZD
NEQxMDI1REVFMzAwNTlDREJBIC8qIEFjY2Vzc2liaWxpdHlTbGlkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eVNsaWRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwNzBERDhGNTBGMDE4NjgwMDA3MjdERUIgLyogbWVkaWFDb250cm9s
cy5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gbWVkaWFDb250cm9scy5jc3M7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MzVFRTY5MEY0MEM1RTQwMDRBMjYwNCAvKiBNZWRpYVBs
YXllclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVy
UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc1Mzg2MDAxNDQ4OUU5ODAw
Qjc4NDUyIC8qIENhY2hlZEN1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ2FjaGVkQ3Vlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3NTM4
NjAxMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRDdWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENhY2hlZEN1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDc2RjBEMDkxMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZG
MEQwQTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzlGNUU0QjBGM0JFQkVB
MDA1RTA3ODIgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTg0MjQsNiArMTg0MjgsOCBAQAogCQlBOEQyQjI1MjEyODdBNTYwMDBBRjREREEgLyog
Y2FjaGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTA3
NTM4NjAwMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRDdWVzLmNwcCAqLywKKwkJCQkwNzUzODYw
MTE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkQ3Vlcy5oICovLAogCQkJCUJDQjE2QzAwMDk3OUMz
QkQwMDQ2Nzc0MSAvKiBDYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCAqLywKIAkJCQlCQ0IxNkMwMTA5
NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkQ1NTU3R5bGVTaGVldC5oICovLAogCQkJCUJDNjRCNEM5
MENCNDI5NUQwMDVGMkI2MiAvKiBDYWNoZWRGb250LmNwcCAqLywKQEAgLTI0NjE0LDYgKzI0NjIw
LDcgQEAKIAkJCQkzMTA2MDM3OTE0MzI4MUNEMDBBQkY0QkEgLyogRE9NV2ViS2l0Q1NTRmlsdGVy
VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMDYwMzdCMTQzMjgxQ0QwMEFCRjRCQSAvKiBE
T01XZWJLaXRDU1NGaWx0ZXJWYWx1ZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUFD
QjIxMjE0M0U3MTI4MDA2QkNBNUYgLyogQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTA3NTM4NjAzMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRDdWVzLmggaW4g
SGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKQEAgLTI3NDY1LDYgKzI3NDcyLDcgQEAKIAkJCQkzMTA2MDM3QTE0MzI4MUNE
MDBBQkY0QkEgLyogRE9NV2ViS2l0Q1NTRmlsdGVyVmFsdWUubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkyOUFDQjIxNDE0M0U3NDk4MDA2QkNBNUYgLyogQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwOTA4N0YxNDQ0RkRCMjAwMDI4OTE3IC8qIFNjcm9sbGJh
clRoZW1lLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3NTM4NjAyMTQ0ODlFOTgwMEI3ODQ1MiAv
KiBDYWNoZWRDdWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEN1ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRDdWVzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRDdWVzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19U
UkFDSykKKworI2luY2x1ZGUgIkNhY2hlZEN1ZXMuaCIKKworI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlQ2xpZW50LmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCIKKyNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgorI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ2FjaGVkQ3Vlczo6Q2FjaGVkQ3Vlcyhjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKKyAgICA6IENhY2hlZFJlc291cmNl
KHJlc291cmNlUmVxdWVzdCwgQ3VlUmVzb3VyY2UpCit7Cit9CisKK0NhY2hlZEN1ZXM6On5DYWNo
ZWRDdWVzKCkKK3sKK30KKwordm9pZCBDYWNoZWRDdWVzOjpkYXRhKFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3sKKyAgICBtX2RhdGEgPSBkYXRh
OworICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS5nZXQoKSA/IG1fZGF0YS0+c2l6ZSgpIDogMCk7
CisKKyAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSZXNvdXJjZUNsaWVudD4g
d2Fsa2VyKG1fY2xpZW50cyk7CisgICAgd2hpbGUgKENhY2hlZFJlc291cmNlQ2xpZW50ICpjbGll
bnQgPSB3YWxrZXIubmV4dCgpKQorICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVEYXRhKHRoaXMp
OworCisgICAgaWYgKCFhbGxEYXRhUmVjZWl2ZWQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAg
ICBzZXRMb2FkaW5nKGZhbHNlKTsKKyAgICBjaGVja05vdGlmeSgpOworfQorCit9CisKKyNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEN1ZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ3Vlcy5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEN1ZXMuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ2FjaGVkQ3Vlc19o
CisjZGVmaW5lIENhY2hlZEN1ZXNfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKKyNpbmNsdWRlICJGb250T3JpZW50YXRpb24uaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTaGFyZWRCdWZmZXI7CisKK2NsYXNzIENhY2hl
ZEN1ZXMgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgeworcHVibGljOgorICAgIENhY2hlZEN1ZXMo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdmlydHVhbCB+Q2FjaGVkQ3VlcygpOworCisg
ICAgdmlydHVhbCB2b2lkIGRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKTsKK307CisKK30KKworI2VuZGlmCisjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAkocmV2aXNpb24g
OTczMDMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMsNyBAQAogICAgIENvcHlyaWdodCAoQykgMjAwMSBE
aXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKICAgICBDb3B5cmlnaHQgKEMpIDIwMDIgV2Fs
ZG8gQmFzdGlhbiAoYmFzdGlhbkBrZGUub3JnKQogICAgIENvcHlyaWdodCAoQykgMjAwNiBTYW11
ZWwgV2VpbmlnIChzYW0ud2VpbmlnQGdtYWlsLmNvbSkKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAx
MCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTcxLDYgKzcxLDEwIEBAIHN0YXRpYyBSZXNvdXJjZUxvYWRQcmlvcml0eSBkZWZhdWx0
UHJpb3IKICAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1N1YnJlc291cmNlOgogICAg
ICAgICAgICAgcmV0dXJuIFJlc291cmNlTG9hZFByaW9yaXR5VmVyeUxvdzsKICNlbmRpZgorI2lm
IEVOQUJMRShWSURFT19UUkFDSykKKyAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Q3VlUmVz
b3VyY2U6CisgICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3c7CisjZW5k
aWYKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFJlc291cmNl
TG9hZFByaW9yaXR5TG93OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmgJKHJldmlzaW9uIDk3MzAzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIsNyArMiw3IEBACiAg
ICAgQ29weXJpZ2h0IChDKSAxOTk4IExhcnMgS25vbGwgKGtub2xsQG1waS1oZC5tcGcuZGUpCiAg
ICAgQ29weXJpZ2h0IChDKSAyMDAxIERpcmsgTXVlbGxlciA8bXVlbGxlckBrZGUub3JnPgogICAg
IENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIChzYW0ud2VpbmlnQGdtYWlsLmNvbSkK
LSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAw
NywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTczLDYgKzczLDkgQEAgcHVibGljOgogICAgICAgICAs
IExpbmtQcmVyZW5kZXIKICAgICAgICAgLCBMaW5rU3VicmVzb3VyY2UKICNlbmRpZgorI2lmIEVO
QUJMRShWSURFT19UUkFDSykKKyAgICAgICAgLCBDdWVSZXNvdXJjZQorI2VuZGlmCiAgICAgfTsK
IAogICAgIGVudW0gU3RhdHVzIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5oCShyZXZpc2lvbiA5NzMwMykKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDE5OTggTGFycyBLbm9s
bCAoa25vbGxAbXBpLWhkLm1wZy5kZSkKICAgICBDb3B5cmlnaHQgKEMpIDIwMDEgRGlyayBNdWVs
bGVyIDxtdWVsbGVyQGtkZS5vcmc+Ci0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgICBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00Myw2
ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNhY2hlZFJlc291cmNlQ2xpZW50KCkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikgeyB9
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKENhY2hlZFJlc291cmNlKikgeyB9Owog
ICAgIAogICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZUNsaWVudFR5cGUgZXhwZWN0ZWRUeXBlKCkg
eyByZXR1cm4gQmFzZVJlc291cmNlVHlwZTsgfQogICAgIHZpcnR1YWwgQ2FjaGVkUmVzb3VyY2VD
bGllbnRUeXBlIHJlc291cmNlQ2xpZW50VHlwZSgpIHsgcmV0dXJuIGV4cGVjdGVkVHlwZSgpOyB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDk3MzAzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMiw3ICsy
LDcgQEAKICAgICBDb3B5cmlnaHQgKEMpIDE5OTggTGFycyBLbm9sbCAoa25vbGxAbXBpLWhkLm1w
Zy5kZSkKICAgICBDb3B5cmlnaHQgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5v
cmcpCiAgICAgQ29weXJpZ2h0IChDKSAyMDAyIFdhbGRvIEJhc3RpYW4gKGJhc3RpYW5Aa2RlLm9y
ZykKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgICAgQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIGh0dHA6Ly93d3cu
dG9yY2htb2JpbGUuY29tLwogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtNTIsNiArNTIsMTAgQEAKICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
KyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiQ2FjaGVkQ3Vlcy5oIgorI2VuZGlm
CisKICNkZWZpbmUgUFJFTE9BRF9ERUJVRyAwCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTgx
LDYgKzg1LDEwIEBAIHN0YXRpYyBDYWNoZWRSZXNvdXJjZSogY3JlYXRlUmVzb3VyY2UoQ2EKICAg
ICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5rU3VicmVzb3VyY2U6CiAgICAgICAgIHJldHVybiBu
ZXcgQ2FjaGVkUmVzb3VyY2UocmVxdWVzdCwgQ2FjaGVkUmVzb3VyY2U6OkxpbmtTdWJyZXNvdXJj
ZSk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgY2FzZSBDYWNoZWRSZXNv
dXJjZTo6Q3VlUmVzb3VyY2U6CisgICAgICAgIHJldHVybiBuZXcgQ2FjaGVkQ3VlcyhyZXF1ZXN0
KTsKKyNlbmRpZgogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4g
MDsKQEAgLTE1Myw2ICsxNjEsMTMgQEAgQ2FjaGVkRm9udCogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6
OnJlcXVlcwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWNoZWRGb250Kj4ocmVxdWVzdFJlc291
cmNlKENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2UsIHJlcXVlc3QsIFN0cmluZygpLCBkZWZh
dWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpKTsKIH0KIAorI2lmIEVOQUJMRShWSURFT19UUkFD
SykKK0NhY2hlZEN1ZXMqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0Q3VlcyhSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENhY2hlZEN1ZXMq
PihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkN1ZVJlc291cmNlLCByZXF1ZXN0LCBT
dHJpbmcoKSwgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpKSk7Cit9CisjZW5kaWYKKwog
Q2FjaGVkQ1NTU3R5bGVTaGVldCogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RDU1NTdHls
ZVNoZWV0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBS
ZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSkKIHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Q2FjaGVkQ1NTU3R5bGVTaGVldCo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6Q1NT
U3R5bGVTaGVldCwgcmVxdWVzdCwgY2hhcnNldCwgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9u
cygpLCBwcmlvcml0eSkpOwpAQCAtMjI0LDYgKzIzOSw5IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OmNoZWNrSW5zZWN1cmUKICAgICAgICAgICAgIGlmICghZi0+bG9hZGVyKCktPmNoZWNr
SWZSdW5JbnNlY3VyZUNvbnRlbnQobV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSwgdXJsKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJyZWFrOworI2lmIEVOQUJM
RShWSURFT19UUkFDSykKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpDdWVSZXNvdXJjZToKKyNl
bmRpZgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2U6CiAgICAgY2FzZSBD
YWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlOiB7CiAgICAgICAgIC8vIFRoZXNlIHJlc291cmNl
cyBjYW4gY29ycnVwdCBvbmx5IHRoZSBmcmFtZSdzIHBpeGVscy4KQEAgLTI2OSw2ICsyODcsOSBA
QCBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENhCiAgICAgY2FzZSBDYWNo
ZWRSZXNvdXJjZTo6TGlua1ByZXJlbmRlcjoKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5r
U3VicmVzb3VyY2U6CiAjZW5kaWYKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgY2FzZSBD
YWNoZWRSZXNvdXJjZTo6Q3VlUmVzb3VyY2U6CisjZW5kaWYKICAgICAgICAgLy8gVGhlc2UgdHlw
ZXMgb2YgcmVzb3VyY2VzIGNhbiBiZSBsb2FkZWQgZnJvbSBhbnkgb3JpZ2luLgogICAgICAgICAv
LyBGSVhNRTogQXJlIHdlIHN1cmUgYWJvdXQgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZT8K
ICAgICAgICAgYnJlYWs7CkBAIC0zMjUsNiArMzQ2LDE0IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OmNhblJlcXVlc3QoQ2EKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5rU3VicmVz
b3VyY2U6CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQor
ICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkN1ZVJlc291cmNlOgorICAgICAgICAvLyBDdWVzIGFy
ZW4ndCBjYWxsZWQgb3V0IGluIHRoZSBDUFMgc3BlYyB5ZXQsIGJ1dCB0aGV5IG9ubHkgd29yayB3
aXRoIGEgbWVkaWEgZWxlbWVudAorICAgICAgICAvLyBzbyB1c2UgdGhlIG1lZGlhIHBvbGljeS4K
KyAgICAgICAgaWYgKCFtX2RvY3VtZW50LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dN
ZWRpYUZyb21Tb3VyY2UodXJsKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
YnJlYWs7CisjZW5kaWYKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCShyZXZp
c2lvbiA5NzMwMykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAgICBDb3B5cmln
aHQgKEMpIDE5OTggTGFycyBLbm9sbCAoa25vbGxAbXBpLWhkLm1wZy5kZSkKICAgICBDb3B5cmln
aHQgKEMpIDIwMDEgRGlyayBNdWVsbGVyIDxtdWVsbGVyQGtkZS5vcmc+Ci0gICAgQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgICAgQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2gg
TW9iaWxlIEluYy4gaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vCiAKICAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0z
OSw2ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ2FjaGVkQ3VlczsK
IGNsYXNzIENhY2hlZENTU1N0eWxlU2hlZXQ7CiBjbGFzcyBDYWNoZWRGb250OwogY2xhc3MgQ2Fj
aGVkSW1hZ2U7CkBAIC03Myw2ICs3NCw5IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoTElOS19QUkVG
RVRDSCkKICAgICBDYWNoZWRSZXNvdXJjZSogcmVxdWVzdExpbmtSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZTo6VHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgPSBSZXNv
dXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQpOwogI2VuZGlmCisjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQorICAgIENhY2hlZEN1ZXMqIHJlcXVlc3RDdWVzKFJlc291cmNlUmVxdWVzdCYpOworI2Vu
ZGlmCiAKICAgICAvLyBMb2dzIGFuIGFjY2VzcyBkZW5pZWQgbWVzc2FnZSB0byB0aGUgY29uc29s
ZSBmb3IgdGhlIHNwZWNpZmllZCBVUkwuCiAgICAgdm9pZCBwcmludEFjY2Vzc0RlbmllZE1lc3Nh
Z2UoY29uc3QgS1VSTCYgdXJsKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCShyZXZpc2lvbiA5NzMw
MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMsNyBAQAogICAgIENvcHlyaWdodCAoQykgMjAw
MSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKICAgICBDb3B5cmlnaHQgKEMpIDIwMDIg
V2FsZG8gQmFzdGlhbiAoYmFzdGlhbkBrZGUub3JnKQogICAgIENvcHlyaWdodCAoQykgMjAwNiBT
YW11ZWwgV2VpbmlnIChzYW0ud2VpbmlnQGdtYWlsLmNvbSkKLSAgICBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwg
MjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTcwLDYgKzcwLDEwIEBAIHN0YXRpYyBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldFR5
cGUgY2FjaGUKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5rU3VicmVzb3VyY2U6CiAgICAg
ICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzU3VicmVzb3VyY2U7CiAjZW5kaWYK
KyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Q3VlUmVz
b3VyY2U6CisgICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzQ3VlOworI2Vu
ZGlmCiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBSZXNvdXJj
ZVJlcXVlc3Q6OlRhcmdldElzU3VicmVzb3VyY2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2Nocm9taXVtL1Jlc291cmNlUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vUmVzb3VyY2VSZXF1ZXN0LmgJ
KHJldmlzaW9uIDk3MzAzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJv
bWl1bS9SZXNvdXJjZVJlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBUYXJnZXRJc1ByZXJlbmRlciwKICAgICAg
ICAgICAgIFRhcmdldElzRmF2aWNvbiwKICAgICAgICAgICAgIFRhcmdldElzWEhSLAorICAgICAg
ICAgICAgVGFyZ2V0SXNDdWUsCiAgICAgICAgIH07CiAKICAgICAgICAgY2xhc3MgRXh0cmFEYXRh
IDogcHVibGljIFJlZkNvdW50ZWQ8RXh0cmFEYXRhPiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111057</attachid>
            <date>2011-10-14 12:47:25 -0700</date>
            <delta_ts>2011-10-15 13:48:58 -0700</delta_ts>
            <desc>Part 2: Implement the cue loader</desc>
            <filename>patch_cue_loader.txt</filename>
            <type>text/plain</type>
            <size>11676</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9DdWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9DdWVMb2FkZXIuY3BwCShyZXZpc2lvbiA5NzMwMykKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9DdWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwLDE3ICsx
MCwxNyBAQAogICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCkBA
IC0yOSwxMSArMjksMTYzIEBACiAKICNpbmNsdWRlICJDdWVMb2FkZXIuaCIKIAorI2luY2x1ZGUg
IkNhY2hlZEN1ZXMuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgorI2luY2x1
ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlJlc291cmNl
SGFuZGxlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViVlRUUGFy
c2VyLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK0N1ZUxvYWRlcjo6Q3VlTG9hZGVy
KEN1ZUxvYWRlckNsaWVudCogY2xpZW50LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQorICAgIDogbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
KGNvbnRleHQpCisgICAgLCBtX2N1ZUxvYWRUaW1lcih0aGlzLCAmQ3VlTG9hZGVyOjpjdWVMb2Fk
VGltZXJGaXJlZCkKKyAgICAsIG1fcGFyc2VPZmZzZXQoMCkKKyAgICAsIG1fbG9hZEZhaWxlZChm
YWxzZSkKKyAgICAsIG1fbmV3Q3Vlc0F2YWlsYWJsZShmYWxzZSkKKyAgICAsIG1faW52YWxpZFdl
YlZUVEZpbGUoZmFsc2UpCit7Cit9CisKK0N1ZUxvYWRlcjo6fkN1ZUxvYWRlcigpCit7CisgICAg
aWYgKG1fY2FjaGVkQ3VlRGF0YSkKKyAgICAgICAgbV9jYWNoZWRDdWVEYXRhLT5yZW1vdmVDbGll
bnQodGhpcyk7Cit9CisKK3ZvaWQgQ3VlTG9hZGVyOjpjdWVMb2FkVGltZXJGaXJlZChUaW1lcjxD
dWVMb2FkZXI+KiB0aW1lcikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHRpbWVyLCB0aW1lciA9PSAm
bV9jdWVMb2FkVGltZXIpOworICAgIAorICAgIGlmIChtX25ld0N1ZXNBdmFpbGFibGUpIHsKKyAg
ICAgICAgbV9uZXdDdWVzQXZhaWxhYmxlID0gZmFsc2U7CisgICAgICAgIG1fY2xpZW50LT5uZXdD
dWVzQXZhaWxhYmxlKHRoaXMpOyAKKyAgICB9CisgICAgCisgICAgbV9jbGllbnQtPmN1ZUxvYWRp
bmdDb21wbGV0ZWQodGhpcywgbV9sb2FkRmFpbGVkIHx8IG1faW52YWxpZFdlYlZUVEZpbGUpOwor
fQorCit2b2lkIEN1ZUxvYWRlcjo6cHJvY2Vzc05ld0N1ZURhdGEoQ2FjaGVkUmVzb3VyY2UqIHJl
c291cmNlKQoreworICAgIEFTU0VSVChtX2NhY2hlZEN1ZURhdGEuZ2V0KCkgPT0gcmVzb3VyY2Up
OworICAgIAorICAgIGlmIChtX2ludmFsaWRXZWJWVFRGaWxlIHx8ICFyZXNvdXJjZS0+ZGF0YSgp
KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgU2hhcmVkQnVmZmVyKiBidWZmZXIgPSByZXNv
dXJjZS0+ZGF0YSgpOworICAgIGlmIChidWZmZXItPnNpemUoKSA9PSBtX3BhcnNlT2Zmc2V0KQor
ICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBjaGFyKiBkYXRhOworICAgIHVuc2lnbmVkIGxl
bmd0aDsKKyAgICAKKyAgICBpZiAoIW1fY3VlUGFyc2VyKSB7CisgICAgICAgIGlmIChyZXNvdXJj
ZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpID09ICJ0ZXh0L3Z0dCIpCisgICAgICAgICAgICBtX2N1
ZVBhcnNlciA9IFdlYlZUVFBhcnNlcjo6Y3JlYXRlKHRoaXMsIG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gRG9uJ3QgcHJvY2VlZCB1bnRp
bCB3ZSBoYXZlIGVub3VnaCBkYXRhIHRvIGNoZWNrIGZvciB0aGUgV2ViVlRUIG1hZ2ljIGlkZW50
aWZpZXIuCisgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTGVuZ3RoID0gV2ViVlRUUGFy
c2VyOjpmaWxlSWRlbnRpZmllck1heGltdW1MZW5ndGgoKTsKKyAgICAgICAgICAgIGlmIChidWZm
ZXItPnNpemUoKSA8IGlkZW50aWZpZXJMZW5ndGgpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBWZWN0b3I8Y2hhcj4gaWRlbnRpZmllcjsKKyAgICAg
ICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IDA7CisgICAgICAgICAgICB3aGlsZSAob2Zmc2V0IDwg
aWRlbnRpZmllckxlbmd0aCAmJiAobGVuZ3RoID0gYnVmZmVyLT5nZXRTb21lRGF0YShkYXRhLCBv
ZmZzZXQpKSkgeworICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPiBpZGVudGlmaWVyTGVuZ3Ro
KQorICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSBpZGVudGlmaWVyTGVuZ3RoOworICAgICAg
ICAgICAgICAgIGlkZW50aWZpZXIuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgICAgICAgICAg
ICAgb2Zmc2V0ICs9IGxlbmd0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgaWYgKCFXZWJWVFRQYXJzZXI6Omhhc1JlcXVpcmVkRmlsZUlkZW50aWZpZXIoaWRlbnRp
Zmllci5kYXRhKCksIGlkZW50aWZpZXIuc2l6ZSgpKSkgeworICAgICAgICAgICAgICAgIExPRyhN
ZWRpYSwgIkN1ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEgLSBmaWxlIFwiJXNcIiBkb2VzIG5vdCBo
YXZlIFdlYlZUVCBoZWFkZXIiLCAKKyAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2UtPnJlc3Bv
bnNlKCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgbV9p
bnZhbGlkV2ViVlRURmlsZSA9IHRydWU7CisgICAgICAgICAgICAgICAgbV9jdWVMb2FkVGltZXIu
c3RhcnRPbmVTaG90KDApOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICAgICAgbV9jdWVQYXJzZXIgPSBXZWJWVFRQYXJzZXI6OmNy
ZWF0ZSh0aGlzLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgICAgICB9CisgICAgfQor
ICAgIAorICAgIEFTU0VSVChtX2N1ZVBhcnNlcik7CisgICAgCisgICAgd2hpbGUgKChsZW5ndGgg
PSBidWZmZXItPmdldFNvbWVEYXRhKGRhdGEsIG1fcGFyc2VPZmZzZXQpKSkgeworICAgICAgICBt
X2N1ZVBhcnNlci0+cGFyc2VCeXRlcyhkYXRhLCBsZW5ndGgpOworICAgICAgICBtX3BhcnNlT2Zm
c2V0ICs9IGxlbmd0aDsKKyAgICB9CisgICAgCit9CisKK3ZvaWQgQ3VlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit7CisgICAgQVNTRVJUKG1fY2FjaGVk
Q3VlRGF0YS5nZXQoKSA9PSByZXNvdXJjZSk7CisgICAgCisgICAgaWYgKCFyZXNvdXJjZS0+ZGF0
YSgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgcHJvY2Vzc05ld0N1ZURhdGEocmVzb3Vy
Y2UpOworfQorCit2b2lkIEN1ZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Uq
IHJlc291cmNlKQoreworICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIG1fY2FjaGVkQ3VlRGF0
YS5nZXQoKSA9PSByZXNvdXJjZSk7CisKKyAgICBpZiAobV9pbnZhbGlkV2ViVlRURmlsZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgcHJvY2Vzc05ld0N1ZURhdGEocmVzb3VyY2UpOworCisgICAg
bV9sb2FkRmFpbGVkID0gcmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKTsKKworICAgIGlmICghbV9j
dWVMb2FkVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9jdWVMb2FkVGltZXIuc3RhcnRPbmVT
aG90KDApOworICAgIAorICAgIG1fY2FjaGVkQ3VlRGF0YS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwor
ICAgIG1fY2FjaGVkQ3VlRGF0YSA9IDA7Cit9CisKK2Jvb2wgQ3VlTG9hZGVyOjpsb2FkKGNvbnN0
IEtVUkwmIHVybCkKK3sKKyAgICBpZiAoIW1fY2xpZW50LT5zaG91bGRMb2FkQ3Vlcyh0aGlzKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmIChtX2NhY2hlZEN1ZURhdGEpIHsK
KyAgICAgICAgbV9jYWNoZWRDdWVEYXRhLT5yZW1vdmVDbGllbnQodGhpcyk7CisgICAgICAgIG1f
Y2FjaGVkQ3VlRGF0YSA9IDA7CisgICAgfQorICAgIAorICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3Rh
dGljX2Nhc3Q8RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIAorICAg
IFJlc291cmNlUmVxdWVzdCBjdWVSZXF1ZXN0KGRvY3VtZW50LT5jb21wbGV0ZVVSTCh1cmwpKTsK
KyAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIgPSBkb2N1bWVu
dC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKKyAgICBtX2NhY2hlZEN1ZURhdGEgPSBzdGF0aWNf
Y2FzdDxDYWNoZWRDdWVzKj4oY2FjaGVkUmVzb3VyY2VMb2FkZXItPnJlcXVlc3RDdWVzKGN1ZVJl
cXVlc3QpKTsKKyAgICBpZiAobV9jYWNoZWRDdWVEYXRhKQorICAgICAgICBtX2NhY2hlZEN1ZURh
dGEtPmFkZENsaWVudCh0aGlzKTsKKyAgICAKKyAgICBtX2NsaWVudC0+Y3VlTG9hZGluZ1N0YXJ0
ZWQodGhpcyk7CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQ3VlTG9hZGVyOjpu
ZXdDdWVzUGFyc2VkKCkKK3sKKyAgICBpZiAobV9jdWVMb2FkVGltZXIuaXNBY3RpdmUoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9uZXdDdWVzQXZhaWxhYmxlID0gdHJ1ZTsKKyAgICBtX2N1
ZUxvYWRUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CiAKLXZvaWQgQ3VlTG9hZGVyOjpzZXRDdWVM
b2FkZXJDbGllbnQoQ3VlTG9hZGVyQ2xpZW50KiBjbGllbnQpCit2b2lkIEN1ZUxvYWRlcjo6Z2V0
TmV3Q3VlcyhWZWN0b3I8UmVmUHRyPFRleHRUcmFja0N1ZT4gPiYgb3V0cHV0Q3VlcykKIHsKLSAg
ICBtX2NsaWVudCA9IGNsaWVudDsKKyAgICBBU1NFUlQobV9jdWVQYXJzZXIpOworICAgIG1fY3Vl
UGFyc2VyLT5nZXROZXdDdWVzKG91dHB1dEN1ZXMpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ3VlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0N1ZUxvYWRlci5oCShyZXZpc2lvbiA5NzMwMykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9DdWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMCwxNyArMTAsMTcgQEAKICAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKICAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAogI2lmbmRlZiBDdWVMb2FkZXJfaApAQCAtMjgsMzcgKzI4LDY4IEBACiAKICNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCiAKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVk
ZSAiQ2FjaGVkQ3Vlcy5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCisjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2lu
Y2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSAiV2ViVlRUUGFyc2VyLmgiCisjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEN1ZUxvYWRlcjsKLWNs
YXNzIFRleHRUcmFja0N1ZTsKLWNsYXNzIFRleHRUcmFja0N1ZUxpc3Q7Ci0KLS8vIExpc3RlbmVy
IHRvIEN1ZUxvYWRlci4KIGNsYXNzIEN1ZUxvYWRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgLy8g
UXVlcmllcyBDdWVMb2FkZXIgZm9yIG5ld2VzdCBjdWVzLgotICAgIHZpcnR1YWwgdm9pZCBmZXRj
aE5ld0N1ZXNGcm9tTG9hZGVyKEN1ZUxvYWRlciopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlQ3Vlc0Zyb21JbmRleChjb25zdCBUZXh0VHJhY2tDdWVMaXN0KikgPSAwOworICAgIHZpcnR1
YWwgfkN1ZUxvYWRlckNsaWVudCgpIHsgfQorICAgIAorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRM
b2FkQ3VlcyhDdWVMb2FkZXIqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG5ld0N1ZXNBdmFpbGFi
bGUoQ3VlTG9hZGVyKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjdWVMb2FkaW5nU3RhcnRlZChD
dWVMb2FkZXIqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGN1ZUxvYWRpbmdDb21wbGV0ZWQoQ3Vl
TG9hZGVyKiwgYm9vbCBsb2FkaW5nRmFpbGVkKSA9IDA7CiB9OwogCi1jbGFzcyBDdWVMb2FkZXIg
ewotcHVibGljOgotICAgIHZvaWQgc2V0Q3VlTG9hZGVyQ2xpZW50KEN1ZUxvYWRlckNsaWVudCop
OwotCi0gICAgLy8gSW5mb3JtcyBjbGllbnQgdGhhdCBuZXcgY3VlcyBoYXZlIGJlZW4gbG9hZGVk
LgotICAgIHZpcnR1YWwgdm9pZCBuZXdDdWVzTG9hZGVkKCkgPSAwOworY2xhc3MgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKIAotICAgIC8vIFRyYW5zZmVycyBvd25lcnNoaXAgb2YgY3VycmVudGx5
IGxvYWRlZCBjdWVzLgotICAgIHZpcnR1YWwgdm9pZCBmZXRjaE5ld2VzdEN1ZXMoVmVjdG9yPFRl
eHRUcmFja0N1ZSo+JiBjdWVzKSA9IDA7CitjbGFzcyBDdWVMb2FkZXIgOiBwdWJsaWMgQ2FjaGVk
UmVzb3VyY2VDbGllbnQsIHB1YmxpYyBXZWJWVFRQYXJzZXJDbGllbnQgeworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEN1ZUxvYWRlcik7IAorICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEN1ZUxvYWRlcj4gY3JlYXRlKEN1ZUxvYWRl
ckNsaWVudCogY2xpZW50LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDdWVMb2FkZXIoY2xpZW50LCBjb250ZXh0KSk7
CisgICAgfQorICAgIHZpcnR1YWwgfkN1ZUxvYWRlcigpOworICAgIAorICAgIGJvb2wgbG9hZChj
b25zdCBLVVJMJik7CisgICAgdm9pZCBnZXROZXdDdWVzKFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNr
Q3VlPiA+JiBvdXRwdXRDdWVzKTsKKyAgICAKKyAgICAvLyBDYWNoZWRSZXNvdXJjZUNsaWVudAor
ICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopOworICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShDYWNoZWRSZXNvdXJjZSopOworICAgIAorICAgIC8v
IFdlYlZUVFBhcnNlckNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBuZXdDdWVzUGFyc2VkKCk7Cisg
ICAgCitwcml2YXRlOgorICAgIEN1ZUxvYWRlcihDdWVMb2FkZXJDbGllbnQqLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0Kik7CisgICAgCisgICAgdm9pZCBwcm9jZXNzTmV3Q3VlRGF0YShDYWNoZWRS
ZXNvdXJjZSopOwogCi1wcm90ZWN0ZWQ6CisgICAgdm9pZCBjdWVMb2FkVGltZXJGaXJlZChUaW1l
cjxDdWVMb2FkZXI+Kik7CisgICAgCiAgICAgQ3VlTG9hZGVyQ2xpZW50KiBtX2NsaWVudDsKKyAg
ICBPd25QdHI8V2ViVlRUUGFyc2VyPiBtX2N1ZVBhcnNlcjsKKyAgICBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRDdWVzPiBtX2NhY2hlZEN1ZURhdGE7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OworICAgIFRpbWVyPEN1ZUxvYWRlcj4gbV9j
dWVMb2FkVGltZXI7CisgICAgdW5zaWduZWQgbV9wYXJzZU9mZnNldDsKKyAgICBib29sIG1fbG9h
ZEZhaWxlZDsKKyAgICBib29sIG1fbmV3Q3Vlc0F2YWlsYWJsZTsKKyAgICBib29sIG1faW52YWxp
ZFdlYlZUVEZpbGU7CiB9OwotCisgICAgCiB9CiAKICNlbmRpZgorCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111176</attachid>
            <date>2011-10-15 23:06:47 -0700</date>
            <delta_ts>2011-10-16 09:43:26 -0700</delta_ts>
            <desc>Patch with ChangeLog</desc>
            <filename>patch_cached_resource_loader_2.txt</filename>
            <type>text/plain</type>
            <size>20196</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3NTYzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMTAtMTUgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ3VlcyBzaG91bGQgYmUg
bG9hZGVkIGJ5IHRoZSBjYWNoZWQgcmVzb3VyY2UgbG9hZGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDEzNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY2hhbmdlcyBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOiBBZGQgQ2FjaGVkQ3Vlcy4KKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRDdWVzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDdWVzOjpDYWNoZWRD
dWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEN1ZXM6On5DYWNoZWRDdWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZEN1ZXM6OmRhdGEpOiBDYWxsZWQgd2hlbiBuZXcgZGF0YSBoYXMg
YmVlbiBsb2FkZWQsIHBhc3MgaXQgdG8gYWxsIHJlZ2lzdGVyZWQKKyAgICAgICAgICAgIGNsaWVu
dHMuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEN1ZXMuaDogQWRkZWQuCisKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZGVmYXVsdFByaW9yaXR5Rm9yUmVzb3VyY2VUeXBlKTogQ3VlcyBoYXZlIGxvdyBsb2FkZXIgcHJp
b3JpdHkuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGllbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6IE5ldyBjbGllbnQgaW50
ZXJmYWNlLgorCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlc291cmNlKTogQ3JlYXRlIGFuZCByZXR1cm4g
YSBuZXcgY3VlIGxvYWRlci4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVy
OjpyZXF1ZXN0Q3Vlcyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
Y2hlY2tJbnNlY3VyZUNvbnRlbnQpOiBDdWVzIGFyZW4ndCBtZW50aW9uZWQgaW4gdGhlIENQUyBz
cGVjCisgICAgICAgICAgICB5ZXQsIGJ1dCB0aGV5IG9ubHkgd29yayB3aXRoIGEgbWVkaWEgZWxl
bWVudCBzbyB1c2UgdGhlIG1kaWEgcG9saWN5LgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2VMb2FkZXI6OmNhblJlcXVlc3QpOiBBbGxvdyBjdWVzIHRvIGJlIGxvYWRlZCBmcm9tIGFu
eSBvcmlnaW4gbGlrZSBtZWRpYS4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuaDoKKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVl
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkUmVzb3VyY2VUeXBlVG9UYXJnZXRUeXBl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL1Jlc291cmNlUmVxdWVzdC5o
OgorCiAyMDExLTEwLTE1ICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNv
bT4KIAogICAgICAgICBbUXRdIFtTeW1iaWFuXSBSZW1vdmUgc3VwcG9ydCBmb3IgdGhlIFN5bWJp
YW4gcGxhdGZvcm0gZm9yIHRoZSBRdFdlYktpdCBwb3J0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA5NzU2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtODUsNiArODUsOCBAQAogCQkwNzA5RkM0RTEwMjVERUUzMDA1OUNEQkEg
LyogQWNjZXNzaWJpbGl0eVNsaWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDcwOUZDNEQxMDI1REVFMzAwNTlDREJBIC8qIEFjY2Vzc2liaWxpdHlT
bGlkZXIuaCAqLzsgfTsKIAkJMDcyQzhCMTExMzFDNTE4NjAwQTRGQ0U5IC8qIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzZGMEQwOTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uLmNwcCAqLzsgfTsKIAkJMDczNUVFNkEwRjQwQzVFNDAwNEEyNjA0IC8q
IE1lZGlhUGxheWVyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3MzVFRTY5MEY0MEM1RTQwMDRBMjYwNCAvKiBNZWRpYVBsYXllclByb3h5Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDc1Mzg2
MDIxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZEN1ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc1Mzg2MDAxNDQ4OUU5ODAwQjc4NDUyIC8qIENh
Y2hlZEN1ZXMuY3BwICovOyB9OworCQkwNzUzODYwMzE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVk
Q3Vlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc1
Mzg2MDExNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZEN1ZXMuaCAqLzsgfTsKIAkJMDc2RjBEMEUx
MkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2RjBEMEExMkI4MTky
NzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oICovOyB9OwogCQkw
N0IwMTEzRjEwMzIyNDIyMDBGQkRDMzMgLyogQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QjAxMTNFMTAz
MjI0MjIwMEZCREMzMyAvKiBBY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5oICovOyB9OwogCQkw
ODA2RTU3QTEyODkzMDQ1MDA3Q0VEMzIgLyogU1ZHTWF0cml4LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODA2RTU3OTEyODkzMDQ1MDA3Q0VEMzIgLyog
U1ZHTWF0cml4LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTcwODksNiArNzA5MSw4IEBACiAJCTA2RTgxRUVCMEFCNURBOTcwMEM4NzgzNyAvKiBM
b2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwNzA5RkM0RDEwMjVERUUzMDA1OUNEQkEgLyogQWNjZXNzaWJp
bGl0eVNsaWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmls
aXR5U2xpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MEREOEY1MEYwMTg2
ODAwMDcyN0RFQiAvKiBtZWRpYUNvbnRyb2xzLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBt
ZWRpYUNvbnRyb2xzLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc1Mzg2MDAx
NDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZEN1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ2FjaGVkQ3Vlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTA3NTM4NjAxMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRDdWVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZEN1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDczNUVFNjkwRjQwQzVFNDAwNEEyNjA0IC8qIE1lZGlhUGxheWVyUHJveHkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcm94eS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZGMEQwOTEyQjgxOTI3MDBDMjZBQTQgLyogTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NkYwRDBBMTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xODQyOCw2ICsxODQzMiw4IEBACiAJCUE4RDJCMjUyMTI4N0E1NjAwMEFGNERE
QSAvKiBjYWNoZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJMDc1Mzg2MDAxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZEN1ZXMuY3BwICovLAorCQkJCTA3
NTM4NjAxMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRDdWVzLmggKi8sCiAJCQkJQkNCMTZDMDAw
OTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZENTU1N0eWxlU2hlZXQuY3BwICovLAogCQkJCUJDQjE2
QzAxMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRDU1NTdHlsZVNoZWV0LmggKi8sCiAJCQkJQkM2
NEI0QzkwQ0I0Mjk1RDAwNUYyQjYyIC8qIENhY2hlZEZvbnQuY3BwICovLApAQCAtMjQ2MjQsNiAr
MjQ2MzAsNyBAQAogCQkJCTlCMzc1RURCMTQ0NzhBMDEwMEYzQ0FFNSAvKiBNaWNyb0RhdGFJdGVt
TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlBRjJENjkxNDQzNUQwNTAwMTZBNzg0IC8qIERp
c3BsYXlSZWZyZXNoTW9uaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzFDQ0I0OUQxNDQ4MjRB
QzAwQzY3NkQ2IC8qIEltYWdlQnlTaXplQ2FjaGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3NTM4
NjAzMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRDdWVzLmggaW4gSGVhZGVycyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI3
NDc3LDYgKzI3NDg0LDcgQEAKIAkJCQk0OUFGMkQ2QzE0NDM1RDIxMDAxNkE3ODQgLyogRGlzcGxh
eVJlZnJlc2hNb25pdG9yTWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RkM3QTUwMTQ0NEFG
NUYwMEE1RDg2NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNzFDQ0I0OUMxNDQ4MjRBQzAwQzY3NkQ2IC8qIEltYWdlQnlTaXplQ2FjaGUuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMDc1Mzg2MDIxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZEN1ZXMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Q3Vlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEN1ZXMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEN1ZXMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVk
ZSAiQ2FjaGVkQ3Vlcy5oIgorCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKKyNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIgorI2luY2x1ZGUgIkNhY2hlZFJl
c291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiVGV4
dFJlc291cmNlRGVjb2Rlci5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitDYWNoZWRDdWVzOjpDYWNoZWRDdWVzKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVzb3VyY2VSZXF1ZXN0KQorICAgIDogQ2FjaGVkUmVzb3VyY2UocmVzb3VyY2VSZXF1ZXN0
LCBDdWVSZXNvdXJjZSkKK3sKK30KKworQ2FjaGVkQ3Vlczo6fkNhY2hlZEN1ZXMoKQoreworfQor
Cit2b2lkIENhY2hlZEN1ZXM6OmRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQoreworICAgIG1fZGF0YSA9IGRhdGE7CisgICAgc2V0RW5jb2Rl
ZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKKworICAgIENhY2hlZFJl
c291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJlc291cmNlQ2xpZW50PiB3YWxrZXIobV9jbGllbnRz
KTsKKyAgICB3aGlsZSAoQ2FjaGVkUmVzb3VyY2VDbGllbnQgKmNsaWVudCA9IHdhbGtlci5uZXh0
KCkpCisgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZURhdGEodGhpcyk7CisKKyAgICBpZiAoIWFs
bERhdGFSZWNlaXZlZCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHNldExvYWRpbmcoZmFs
c2UpOworICAgIGNoZWNrTm90aWZ5KCk7Cit9CisKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ3Vlcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDdWVzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ3Vlcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDYWNoZWRDdWVzX2gKKyNkZWZpbmUgQ2FjaGVk
Q3Vlc19oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZS5oIgorI2luY2x1ZGUgIkZvbnRPcmllbnRhdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKKworY2xhc3MgQ2FjaGVkQ3VlcyA6IHB1YmxpYyBD
YWNoZWRSZXNvdXJjZSB7CitwdWJsaWM6CisgICAgQ2FjaGVkQ3Vlcyhjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKTsKKyAgICB2aXJ0dWFsIH5DYWNoZWRDdWVzKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQg
ZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
OworfTsKKworfQorCisjZW5kaWYKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCShyZXZpc2lvbiA5NzU2MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMsNyArMyw3IEBACiAgICAgQ29weXJpZ2h0IChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVl
bGxlckBrZGUub3JnKQogICAgIENvcHlyaWdodCAoQykgMjAwMiBXYWxkbyBCYXN0aWFuIChiYXN0
aWFuQGtkZS5vcmcpCiAgICAgQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgKHNhbS53
ZWluaWdAZ21haWwuY29tKQotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAw
NywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICAgQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNzEsNiArNzEs
MTAgQEAgc3RhdGljIFJlc291cmNlTG9hZFByaW9yaXR5IGRlZmF1bHRQcmlvcgogICAgICAgICBj
YXNlIENhY2hlZFJlc291cmNlOjpMaW5rU3VicmVzb3VyY2U6CiAgICAgICAgICAgICByZXR1cm4g
UmVzb3VyY2VMb2FkUHJpb3JpdHlWZXJ5TG93OwogI2VuZGlmCisjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQorICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpDdWVSZXNvdXJjZToKKyAgICAgICAg
ICAgIHJldHVybiBSZXNvdXJjZUxvYWRQcmlvcml0eUxvdzsKKyNlbmRpZgogICAgIH0KICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3c7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAko
cmV2aXNpb24gOTc1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMiw3ICsyLDcgQEAKICAgICBDb3B5cmlnaHQgKEMp
IDE5OTggTGFycyBLbm9sbCAoa25vbGxAbXBpLWhkLm1wZy5kZSkKICAgICBDb3B5cmlnaHQgKEMp
IDIwMDEgRGlyayBNdWVsbGVyIDxtdWVsbGVyQGtkZS5vcmc+CiAgICAgQ29weXJpZ2h0IChDKSAy
MDA2IFNhbXVlbCBXZWluaWcgKHNhbS53ZWluaWdAZ21haWwuY29tKQotICAgIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAy
MDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtNzMsNiArNzMsOSBAQCBwdWJsaWM6CiAgICAgICAgICwgTGlua1ByZXJlbmRlcgog
ICAgICAgICAsIExpbmtTdWJyZXNvdXJjZQogI2VuZGlmCisjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQorICAgICAgICAsIEN1ZVJlc291cmNlCisjZW5kaWYKICAgICB9OwogCiAgICAgZW51bSBTdGF0
dXMgewpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xp
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlQ2xpZW50LmgJKHJldmlzaW9uIDk3NTYwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3
IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMTk5OCBMYXJzIEtub2xsIChrbm9sbEBtcGktaGQu
bXBnLmRlKQogICAgIENvcHlyaWdodCAoQykgMjAwMSBEaXJrIE11ZWxsZXIgPG11ZWxsZXJAa2Rl
Lm9yZz4KLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQzLDYgKzQzLDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB+Q2FjaGVkUmVzb3VyY2VDbGllbnQoKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZURhdGEoQ2FjaGVkUmVzb3VyY2UqKSB7IH07CiAgICAgCiAgICAgc3RhdGlj
IENhY2hlZFJlc291cmNlQ2xpZW50VHlwZSBleHBlY3RlZFR5cGUoKSB7IHJldHVybiBCYXNlUmVz
b3VyY2VUeXBlOyB9CiAgICAgdmlydHVhbCBDYWNoZWRSZXNvdXJjZUNsaWVudFR5cGUgcmVzb3Vy
Y2VDbGllbnRUeXBlKCkgeyByZXR1cm4gZXhwZWN0ZWRUeXBlKCk7IH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAko
cmV2aXNpb24gOTc1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yLDcgKzIsNyBAQAogICAgIENvcHly
aWdodCAoQykgMTk5OCBMYXJzIEtub2xsIChrbm9sbEBtcGktaGQubXBnLmRlKQogICAgIENvcHly
aWdodCAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKICAgICBDb3B5cmln
aHQgKEMpIDIwMDIgV2FsZG8gQmFzdGlhbiAoYmFzdGlhbkBrZGUub3JnKQotICAgIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5
LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICBDb3B5cmln
aHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20v
CiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCkBAIC01Miw2ICs1MiwxMCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIEVOQUJMRShWSURF
T19UUkFDSykKKyNpbmNsdWRlICJDYWNoZWRDdWVzLmgiCisjZW5kaWYKKwogI2RlZmluZSBQUkVM
T0FEX0RFQlVHIDAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODEsNiArODUsMTAgQEAgc3Rh
dGljIENhY2hlZFJlc291cmNlKiBjcmVhdGVSZXNvdXJjZShDYQogICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OkxpbmtTdWJyZXNvdXJjZToKICAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRSZXNvdXJj
ZShyZXF1ZXN0LCBDYWNoZWRSZXNvdXJjZTo6TGlua1N1YnJlc291cmNlKTsKICNlbmRpZgorI2lm
IEVOQUJMRShWSURFT19UUkFDSykKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpDdWVSZXNvdXJj
ZToKKyAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRDdWVzKHJlcXVlc3QpOworI2VuZGlmCiAgICAg
fQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwpAQCAtMTUzLDYgKzE2
MSwxMyBAQCBDYWNoZWRGb250KiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzCiAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PENhY2hlZEZvbnQqPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3Vy
Y2U6OkZvbnRSZXNvdXJjZSwgcmVxdWVzdCwgU3RyaW5nKCksIGRlZmF1bHRDYWNoZWRSZXNvdXJj
ZU9wdGlvbnMoKSkpOwogfQogCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorQ2FjaGVkQ3Vlcyog
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RDdWVzKFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2FjaGVkQ3Vlcyo+KHJlcXVlc3RSZXNvdXJj
ZShDYWNoZWRSZXNvdXJjZTo6Q3VlUmVzb3VyY2UsIHJlcXVlc3QsIFN0cmluZygpLCBkZWZhdWx0
Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpKTsKK30KKyNlbmRpZgorCiBDYWNoZWRDU1NTdHlsZVNo
ZWV0KiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdENTU1N0eWxlU2hlZXQoUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIFJlc291cmNlTG9hZFByaW9y
aXR5IHByaW9yaXR5KQogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWNoZWRDU1NTdHlsZVNo
ZWV0Kj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0LCByZXF1
ZXN0LCBjaGFyc2V0LCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCksIHByaW9yaXR5KSk7
CkBAIC0yMjQsNiArMjM5LDkgQEAgYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2hlY2tJbnNl
Y3VyZQogICAgICAgICAgICAgaWYgKCFmLT5sb2FkZXIoKS0+Y2hlY2tJZlJ1bkluc2VjdXJlQ29u
dGVudChtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCB1cmwpKQogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgYnJlYWs7CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQor
ICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkN1ZVJlc291cmNlOgorI2VuZGlmCiAgICAgY2FzZSBD
YWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZToKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpG
b250UmVzb3VyY2U6IHsKICAgICAgICAgLy8gVGhlc2UgcmVzb3VyY2VzIGNhbiBjb3JydXB0IG9u
bHkgdGhlIGZyYW1lJ3MgcGl4ZWxzLgpAQCAtMjY5LDYgKzI4Nyw5IEBAIGJvb2wgQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6OmNhblJlcXVlc3QoQ2EKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5r
UHJlcmVuZGVyOgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtTdWJyZXNvdXJjZToKICNl
bmRpZgorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpD
dWVSZXNvdXJjZToKKyNlbmRpZgogICAgICAgICAvLyBUaGVzZSB0eXBlcyBvZiByZXNvdXJjZXMg
Y2FuIGJlIGxvYWRlZCBmcm9tIGFueSBvcmlnaW4uCiAgICAgICAgIC8vIEZJWE1FOiBBcmUgd2Ug
c3VyZSBhYm91dCBDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlPwogICAgICAgICBicmVhazsK
QEAgLTMyMyw2ICszNDQsMTQgQEAgYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVz
dChDYQogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtTdWJyZXNvdXJjZToKICNlbmRpZgog
ICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgY2FzZSBDYWNoZWRS
ZXNvdXJjZTo6Q3VlUmVzb3VyY2U6CisgICAgICAgIC8vIEN1ZXMgYXJlbid0IGNhbGxlZCBvdXQg
aW4gdGhlIENQUyBzcGVjIHlldCwgYnV0IHRoZXkgb25seSB3b3JrIHdpdGggYSBtZWRpYSBlbGVt
ZW50CisgICAgICAgIC8vIHNvIHVzZSB0aGUgbWVkaWEgcG9saWN5LgorICAgICAgICBpZiAoIW1f
ZG9jdW1lbnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd01lZGlhRnJvbVNvdXJjZSh1
cmwpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBicmVhazsKKyNlbmRpZgog
ICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDk3NTYwKQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMTk5OCBMYXJz
IEtub2xsIChrbm9sbEBtcGktaGQubXBnLmRlKQogICAgIENvcHlyaWdodCAoQykgMjAwMSBEaXJr
IE11ZWxsZXIgPG11ZWxsZXJAa2RlLm9yZz4KLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICAgIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBodHRw
Oi8vd3d3LnRvcmNobW9iaWxlLmNvbS8KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTM5LDYgKzM5LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDYWNoZWRDdWVzOwogY2xhc3MgQ2FjaGVkQ1NT
U3R5bGVTaGVldDsKIGNsYXNzIENhY2hlZEZvbnQ7CiBjbGFzcyBDYWNoZWRJbWFnZTsKQEAgLTcz
LDYgKzc0LDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQogICAgIENhY2hl
ZFJlc291cmNlKiByZXF1ZXN0TGlua1Jlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlLCBSZXNv
dXJjZVJlcXVlc3QmLCBSZXNvdXJjZUxvYWRQcmlvcml0eSA9IFJlc291cmNlTG9hZFByaW9yaXR5
VW5yZXNvbHZlZCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgQ2FjaGVk
Q3VlcyogcmVxdWVzdEN1ZXMoUmVzb3VyY2VSZXF1ZXN0Jik7CisjZW5kaWYKIAogICAgIC8vIExv
Z3MgYW4gYWNjZXNzIGRlbmllZCBtZXNzYWdlIHRvIHRoZSBjb25zb2xlIGZvciB0aGUgc3BlY2lm
aWVkIFVSTC4KICAgICB2b2lkIHByaW50QWNjZXNzRGVuaWVkTWVzc2FnZShjb25zdCBLVVJMJiB1
cmwpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAJKHJldmlzaW9uIDk3NTYwKQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMsNyArMyw3IEBACiAgICAgQ29weXJpZ2h0IChDKSAyMDAxIERpcmsgTXVlbGxlciAo
bXVlbGxlckBrZGUub3JnKQogICAgIENvcHlyaWdodCAoQykgMjAwMiBXYWxkbyBCYXN0aWFuIChi
YXN0aWFuQGtkZS5vcmcpCiAgICAgQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgKHNh
bS53ZWluaWdAZ21haWwuY29tKQotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICAgQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNzAsNiAr
NzAsMTAgQEAgc3RhdGljIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0VHlwZSBjYWNoZQogICAgIGNh
c2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtTdWJyZXNvdXJjZToKICAgICAgICAgcmV0dXJuIFJlc291
cmNlUmVxdWVzdDo6VGFyZ2V0SXNTdWJyZXNvdXJjZTsKICNlbmRpZgorI2lmIEVOQUJMRShWSURF
T19UUkFDSykKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpDdWVSZXNvdXJjZToKKyAgICAgICAg
cmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNDdWU7CisjZW5kaWYKICAgICB9CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0
SXNTdWJyZXNvdXJjZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hy
b21pdW0vUmVzb3VyY2VSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jaHJvbWl1bS9SZXNvdXJjZVJlcXVlc3QuaAkocmV2aXNpb24gOTc1NjAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL1Jlc291cmNlUmVx
dWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgICAgIFRhcmdldElzUHJlcmVuZGVyLAogICAgICAgICAgICAgVGFyZ2V0SXNG
YXZpY29uLAogICAgICAgICAgICAgVGFyZ2V0SXNYSFIsCisgICAgICAgICAgICBUYXJnZXRJc0N1
ZSwKICAgICAgICAgfTsKIAogICAgICAgICBjbGFzcyBFeHRyYURhdGEgOiBwdWJsaWMgUmVmQ291
bnRlZDxFeHRyYURhdGE+IHsK
</data>
<flag name="commit-queue"
          id="108918"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111181</attachid>
            <date>2011-10-16 09:43:26 -0700</date>
            <delta_ts>2011-10-17 12:01:37 -0700</delta_ts>
            <desc>Add new file to other build systems.</desc>
            <filename>patch_cached_resource_loader_3.txt</filename>
            <type>text/plain</type>
            <size>21944</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3NTcyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMTAtMTUgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ3VlcyBzaG91bGQgYmUg
bG9hZGVkIGJ5IHRoZSBjYWNoZWQgcmVzb3VyY2UgbG9hZGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDEzNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY2hhbmdlcyBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZCBDYWNo
ZWRDdWVzLmNwcC9oLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IERpdHRvLgorICAg
ICAgICAqIFdlYkNvcmUuZ3lwaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRD
dWVzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDdWVzOjpDYWNoZWRDdWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEN1ZXM6On5DYWNoZWRDdWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEN1ZXM6OmRhdGEpOiBDYWxsZWQgd2hlbiBuZXcgZGF0YSBoYXMgYmVl
biBsb2FkZWQsIHBhc3MgaXQgdG8gYWxsIHJlZ2lzdGVyZWQKKyAgICAgICAgICAgIGNsaWVudHMu
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEN1ZXMuaDogQWRkZWQuCisKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVm
YXVsdFByaW9yaXR5Rm9yUmVzb3VyY2VUeXBlKTogQ3VlcyBoYXZlIGxvdyBsb2FkZXIgcHJpb3Jp
dHkuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6IE5ldyBjbGllbnQgaW50ZXJm
YWNlLgorCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlc291cmNlKTogQ3JlYXRlIGFuZCByZXR1cm4gYSBu
ZXcgY3VlIGxvYWRlci4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpy
ZXF1ZXN0Q3Vlcyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2hl
Y2tJbnNlY3VyZUNvbnRlbnQpOiBDdWVzIGFyZW4ndCBtZW50aW9uZWQgaW4gdGhlIENQUyBzcGVj
CisgICAgICAgICAgICB5ZXQsIGJ1dCB0aGV5IG9ubHkgd29yayB3aXRoIGEgbWVkaWEgZWxlbWVu
dCBzbyB1c2UgdGhlIG1kaWEgcG9saWN5LgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmNhblJlcXVlc3QpOiBBbGxvdyBjdWVzIHRvIGJlIGxvYWRlZCBmcm9tIGFueSBv
cmlnaW4gbGlrZSBtZWRpYS4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuaDoKKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkUmVzb3VyY2VUeXBlVG9UYXJnZXRUeXBlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL1Jlc291cmNlUmVxdWVzdC5oOgor
CiAyMDExLTEwLTE1ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAg
ICAgICAgIE1ha2UgVklERU9fVFJBQ0sgY29tcGlsZSB3aXRoIHdhcm5pbmdzIGFzIGVycm9ycyBl
bmFibGVkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gOTc1NzUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjA1Niw2ICsyMDU2
LDcgQEAgSUYgKEVOQUJMRV9WSURFT19UUkFDSykKICAgICAgICAgaHRtbC90cmFjay9XZWJWVFRQ
YXJzZXIuY3BwCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRUVG9rZW5pemVyLmNwcAogICAgICAg
ICBsb2FkZXIvQ3VlTG9hZGVyLmNwcAorICAgICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkQ3Vlcy5j
cHAKICAgICApCiBFTkRJRigpCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQko
cmV2aXNpb24gOTc1NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3
b3JraW5nIGNvcHkpCkBAIC0yMTAzLDYgKzIxMDMsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaCBcCisJU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEN1ZXMuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQ3Vlcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Rm9udC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggXAog
CVNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgXApJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQkocmV2aXNpb24gOTc1NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkJKHdvcmtpbmcgY29weSkKQEAgLTI4MzQsNiArMjgzNCw4IEBACiAgICAgICAgICAgICAnbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwJywKICAgICAgICAgICAgICdsb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAnLAogICAgICAgICAgICAgJ2xvYWRlci9jYWNo
ZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgnLAorICAgICAgICAgICAgJ2xvYWRlci9jYWNoZS9DYWNo
ZWRDdWVzLmNwcCcsCisgICAgICAgICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZEN1ZXMuaCcsCiAg
ICAgICAgICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwJywKICAgICAgICAgICAgICds
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oJywKICAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDk3NTYwKQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2
ICs4NSw4IEBACiAJCTA3MDlGQzRFMTAyNURFRTMwMDU5Q0RCQSAvKiBBY2Nlc3NpYmlsaXR5U2xp
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA5
RkM0RDEwMjVERUUzMDA1OUNEQkEgLyogQWNjZXNzaWJpbGl0eVNsaWRlci5oICovOyB9OwogCQkw
NzJDOEIxMTEzMUM1MTg2MDBBNEZDRTkgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NkYw
RDA5MTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3Bw
ICovOyB9OwogCQkwNzM1RUU2QTBGNDBDNUU0MDA0QTI2MDQgLyogTWVkaWFQbGF5ZXJQcm94eS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczNUVFNjkw
RjQwQzVFNDAwNEEyNjA0IC8qIE1lZGlhUGxheWVyUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwNzUzODYwMjE0NDg5RTk4MDBCNzg0NTIg
LyogQ2FjaGVkQ3Vlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwNzUzODYwMDE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkQ3Vlcy5jcHAgKi87IH07
CisJCTA3NTM4NjAzMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRDdWVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzUzODYwMTE0NDg5RTk4MDBCNzg0
NTIgLyogQ2FjaGVkQ3Vlcy5oICovOyB9OwogCQkwNzZGMEQwRTEyQjgxOTI3MDBDMjZBQTQgLyog
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzZGMEQwQTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggKi87IH07CiAJCTA3QjAxMTNGMTAzMjI0MjIwMEZC
REMzMyAvKiBBY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdCMDExM0UxMDMyMjQyMjAwRkJEQzMzIC8qIEFj
Y2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmggKi87IH07CiAJCTA4MDZFNTdBMTI4OTMwNDUwMDdD
RUQzMiAvKiBTVkdNYXRyaXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA4MDZFNTc5MTI4OTMwNDUwMDdDRUQzMiAvKiBTVkdNYXRyaXguaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzA4OSw2ICs3MDkx
LDggQEAKIAkJMDZFODFFRUIwQUI1REE5NzAwQzg3ODM3IC8qIExvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2Nh
bEN1cnJlbnRHcmFwaGljc0NvbnRleHQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA3MDlGQzREMTAyNURFRTMwMDU5Q0RCQSAvKiBBY2Nlc3NpYmlsaXR5U2xpZGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTbGlkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwREQ4RjUwRjAxODY4MDAwNzI3REVCIC8qIG1lZGlh
Q29udHJvbHMuY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IG1lZGlhQ29udHJvbHMuY3NzOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzUzODYwMDE0NDg5RTk4MDBCNzg0NTIgLyog
Q2FjaGVkQ3Vlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNo
ZWRDdWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc1Mzg2MDExNDQ4OUU5
ODAwQjc4NDUyIC8qIENhY2hlZEN1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ2FjaGVkQ3Vlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzM1RUU2OTBG
NDBDNUU0MDA0QTI2MDQgLyogTWVkaWFQbGF5ZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA3NkYwRDA5MTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDc2RjBEMEExMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4NDI4LDYg
KzE4NDMyLDggQEAKIAkJQThEMkIyNTIxMjg3QTU2MDAwQUY0RERBIC8qIGNhY2hlICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwNzUzODYwMDE0NDg5RTk4
MDBCNzg0NTIgLyogQ2FjaGVkQ3Vlcy5jcHAgKi8sCisJCQkJMDc1Mzg2MDExNDQ4OUU5ODAwQjc4
NDUyIC8qIENhY2hlZEN1ZXMuaCAqLywKIAkJCQlCQ0IxNkMwMDA5NzlDM0JEMDA0Njc3NDEgLyog
Q2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgKi8sCiAJCQkJQkNCMTZDMDEwOTc5QzNCRDAwNDY3NzQx
IC8qIENhY2hlZENTU1N0eWxlU2hlZXQuaCAqLywKIAkJCQlCQzY0QjRDOTBDQjQyOTVEMDA1RjJC
NjIgLyogQ2FjaGVkRm9udC5jcHAgKi8sCkBAIC0yNDYyNCw2ICsyNDYzMCw3IEBACiAJCQkJOUIz
NzVFREIxNDQ3OEEwMTAwRjNDQUU1IC8qIE1pY3JvRGF0YUl0ZW1MaXN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0OUFGMkQ2OTE0NDM1RDA1MDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MUNDQjQ5RDE0NDgyNEFDMDBDNjc2RDYgLyogSW1hZ2VC
eVNpemVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDc1Mzg2MDMxNDQ4OUU5ODAwQjc4NDUy
IC8qIENhY2hlZEN1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjc0NzcsNiArMjc0ODQsNyBAQAog
CQkJCTQ5QUYyRDZDMTQ0MzVEMjEwMDE2QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlGQzdBNTAxNDQ0QUY1RjAwQTVEODY0IC8qIERpc3Bs
YXlSZWZyZXNoTW9uaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3MUNDQjQ5QzE0NDgyNEFD
MDBDNjc2RDYgLyogSW1hZ2VCeVNpemVDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzUz
ODYwMjE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkQ3Vlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDdWVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ3Vlcy5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ3Vlcy5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJDYWNoZWRDdWVzLmgiCisK
KyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlQ2xpZW50V2Fsa2VyLmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgi
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NhY2hl
ZEN1ZXM6OkNhY2hlZEN1ZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3Qp
CisgICAgOiBDYWNoZWRSZXNvdXJjZShyZXNvdXJjZVJlcXVlc3QsIEN1ZVJlc291cmNlKQorewor
fQorCitDYWNoZWRDdWVzOjp+Q2FjaGVkQ3VlcygpCit7Cit9CisKK3ZvaWQgQ2FjaGVkQ3Vlczo6
ZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
Cit7CisgICAgbV9kYXRhID0gZGF0YTsKKyAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEuZ2V0KCkg
PyBtX2RhdGEtPnNpemUoKSA6IDApOworCisgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8
Q2FjaGVkUmVzb3VyY2VDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOworICAgIHdoaWxlIChDYWNo
ZWRSZXNvdXJjZUNsaWVudCAqY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKKyAgICAgICAgY2xpZW50
LT5kaWRSZWNlaXZlRGF0YSh0aGlzKTsKKworICAgIGlmICghYWxsRGF0YVJlY2VpdmVkKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgc2V0TG9hZGluZyhmYWxzZSk7CisgICAgY2hlY2tOb3Rp
ZnkoKTsKK30KKworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRDdWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEN1ZXMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRDdWVzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIENhY2hlZEN1ZXNfaAorI2RlZmluZSBDYWNoZWRDdWVzX2gKKworI2lmIEVOQUJM
RShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCisjaW5jbHVkZSAi
Rm9udE9yaWVudGF0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2hhcmVk
QnVmZmVyOworCitjbGFzcyBDYWNoZWRDdWVzIDogcHVibGljIENhY2hlZFJlc291cmNlIHsKK3B1
YmxpYzoKKyAgICBDYWNoZWRDdWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIHZpcnR1
YWwgfkNhY2hlZEN1ZXMoKTsKKworICAgIHZpcnR1YWwgdm9pZCBkYXRhKFBhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Cit9OworCit9CisKKyNlbmRp
ZgorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHAJKHJldmlzaW9uIDk3NTYwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDcgQEAKICAg
ICBDb3B5cmlnaHQgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCiAgICAg
Q29weXJpZ2h0IChDKSAyMDAyIFdhbGRvIEJhc3RpYW4gKGJhc3RpYW5Aa2RlLm9yZykKICAgICBD
b3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyAoc2FtLndlaW5pZ0BnbWFpbC5jb20pCi0g
ICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYs
IDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC03MSw2ICs3MSwxMCBAQCBzdGF0aWMgUmVzb3Vy
Y2VMb2FkUHJpb3JpdHkgZGVmYXVsdFByaW9yCiAgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6
OkxpbmtTdWJyZXNvdXJjZToKICAgICAgICAgICAgIHJldHVybiBSZXNvdXJjZUxvYWRQcmlvcml0
eVZlcnlMb3c7CiAjZW5kaWYKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6OkN1ZVJlc291cmNlOgorICAgICAgICAgICAgcmV0dXJuIFJlc291cmNl
TG9hZFByaW9yaXR5TG93OworI2VuZGlmCiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIHJldHVybiBSZXNvdXJjZUxvYWRQcmlvcml0eUxvdzsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCShyZXZpc2lvbiA5NzU2MCkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yLDcgKzIsNyBAQAogICAgIENvcHlyaWdodCAoQykgMTk5OCBMYXJzIEtub2xsIChr
bm9sbEBtcGktaGQubXBnLmRlKQogICAgIENvcHlyaWdodCAoQykgMjAwMSBEaXJrIE11ZWxsZXIg
PG11ZWxsZXJAa2RlLm9yZz4KICAgICBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyAo
c2FtLndlaW5pZ0BnbWFpbC5jb20pCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgICBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC03Myw2ICs3Myw5
IEBAIHB1YmxpYzoKICAgICAgICAgLCBMaW5rUHJlcmVuZGVyCiAgICAgICAgICwgTGlua1N1YnJl
c291cmNlCiAjZW5kaWYKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgICAgICwgQ3VlUmVz
b3VyY2UKKyNlbmRpZgogICAgIH07CiAKICAgICBlbnVtIFN0YXR1cyB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGllbnQuaAkocmV2
aXNpb24gOTc1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgICAgQ29weXJp
Z2h0IChDKSAxOTk4IExhcnMgS25vbGwgKGtub2xsQG1waS1oZC5tcGcuZGUpCiAgICAgQ29weXJp
Z2h0IChDKSAyMDAxIERpcmsgTXVlbGxlciA8bXVlbGxlckBrZGUub3JnPgotICAgIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4
LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwpAQCAtNDMsNiArNDMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5D
YWNoZWRSZXNvdXJjZUNsaWVudCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hl
ZChDYWNoZWRSZXNvdXJjZSopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShD
YWNoZWRSZXNvdXJjZSopIHsgfTsKICAgICAKICAgICBzdGF0aWMgQ2FjaGVkUmVzb3VyY2VDbGll
bnRUeXBlIGV4cGVjdGVkVHlwZSgpIHsgcmV0dXJuIEJhc2VSZXNvdXJjZVR5cGU7IH0KICAgICB2
aXJ0dWFsIENhY2hlZFJlc291cmNlQ2xpZW50VHlwZSByZXNvdXJjZUNsaWVudFR5cGUoKSB7IHJl
dHVybiBleHBlY3RlZFR5cGUoKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiA5NzU2MCkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIsNyArMiw3IEBACiAgICAgQ29weXJpZ2h0IChDKSAxOTk4IExhcnMg
S25vbGwgKGtub2xsQG1waS1oZC5tcGcuZGUpCiAgICAgQ29weXJpZ2h0IChDKSAyMDAxIERpcmsg
TXVlbGxlciAobXVlbGxlckBrZGUub3JnKQogICAgIENvcHlyaWdodCAoQykgMjAwMiBXYWxkbyBC
YXN0aWFuIChiYXN0aWFuQGtkZS5vcmcpCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgICBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBN
b2JpbGUgSW5jLiBodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8KIAogICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTUy
LDYgKzUyLDEwIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUg
IkNhY2hlZEN1ZXMuaCIKKyNlbmRpZgorCiAjZGVmaW5lIFBSRUxPQURfREVCVUcgMAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC04MSw2ICs4NSwxMCBAQCBzdGF0aWMgQ2FjaGVkUmVzb3VyY2Uq
IGNyZWF0ZVJlc291cmNlKENhCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1N1YnJlc291
cmNlOgogICAgICAgICByZXR1cm4gbmV3IENhY2hlZFJlc291cmNlKHJlcXVlc3QsIENhY2hlZFJl
c291cmNlOjpMaW5rU3VicmVzb3VyY2UpOwogI2VuZGlmCisjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkN1ZVJlc291cmNlOgorICAgICAgICByZXR1cm4g
bmV3IENhY2hlZEN1ZXMocmVxdWVzdCk7CisjZW5kaWYKICAgICB9CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgcmV0dXJuIDA7CkBAIC0xNTMsNiArMTYxLDEzIEBAIENhY2hlZEZvbnQq
IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXMKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2Fj
aGVkRm9udCo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlLCBy
ZXF1ZXN0LCBTdHJpbmcoKSwgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpKSk7CiB9CiAK
KyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCitDYWNoZWRDdWVzKiBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6cmVxdWVzdEN1ZXMoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxDYWNoZWRDdWVzKj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpD
dWVSZXNvdXJjZSwgcmVxdWVzdCwgU3RyaW5nKCksIGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlv
bnMoKSkpOworfQorI2VuZGlmCisKIENhY2hlZENTU1N0eWxlU2hlZXQqIENhY2hlZFJlc291cmNl
TG9hZGVyOjpyZXF1ZXN0Q1NTU3R5bGVTaGVldChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFN0cmluZyYgY2hhcnNldCwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHkpCiB7CiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PENhY2hlZENTU1N0eWxlU2hlZXQqPihyZXF1ZXN0UmVzb3Vy
Y2UoQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQsIHJlcXVlc3QsIGNoYXJzZXQsIGRlZmF1
bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSwgcHJpb3JpdHkpKTsKQEAgLTIyNCw2ICsyMzksOSBA
QCBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjaGVja0luc2VjdXJlCiAgICAgICAgICAgICBp
ZiAoIWYtPmxvYWRlcigpLT5jaGVja0lmUnVuSW5zZWN1cmVDb250ZW50KG1fZG9jdW1lbnQtPnNl
Y3VyaXR5T3JpZ2luKCksIHVybCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICBicmVhazsKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgY2FzZSBDYWNoZWRSZXNv
dXJjZTo6Q3VlUmVzb3VyY2U6CisjZW5kaWYKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpJbWFn
ZVJlc291cmNlOgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZTogewogICAg
ICAgICAvLyBUaGVzZSByZXNvdXJjZXMgY2FuIGNvcnJ1cHQgb25seSB0aGUgZnJhbWUncyBwaXhl
bHMuCkBAIC0yNjksNiArMjg3LDkgQEAgYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVx
dWVzdChDYQogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVyZW5kZXI6CiAgICAgY2Fz
ZSBDYWNoZWRSZXNvdXJjZTo6TGlua1N1YnJlc291cmNlOgogI2VuZGlmCisjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkN1ZVJlc291cmNlOgorI2VuZGlm
CiAgICAgICAgIC8vIFRoZXNlIHR5cGVzIG9mIHJlc291cmNlcyBjYW4gYmUgbG9hZGVkIGZyb20g
YW55IG9yaWdpbi4KICAgICAgICAgLy8gRklYTUU6IEFyZSB3ZSBzdXJlIGFib3V0IENhY2hlZFJl
c291cmNlOjpGb250UmVzb3VyY2U/CiAgICAgICAgIGJyZWFrOwpAQCAtMzIzLDYgKzM0NCwxNCBA
QCBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENhCiAgICAgY2FzZSBDYWNo
ZWRSZXNvdXJjZTo6TGlua1N1YnJlc291cmNlOgogI2VuZGlmCiAgICAgICAgIGJyZWFrOworI2lm
IEVOQUJMRShWSURFT19UUkFDSykKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpDdWVSZXNvdXJj
ZToKKyAgICAgICAgLy8gQ3VlcyBhcmVuJ3QgY2FsbGVkIG91dCBpbiB0aGUgQ1BTIHNwZWMgeWV0
LCBidXQgdGhleSBvbmx5IHdvcmsgd2l0aCBhIG1lZGlhIGVsZW1lbnQKKyAgICAgICAgLy8gc28g
dXNlIHRoZSBtZWRpYSBwb2xpY3kuCisgICAgICAgIGlmICghbV9kb2N1bWVudC0+Y29udGVudFNl
Y3VyaXR5UG9saWN5KCktPmFsbG93TWVkaWFGcm9tU291cmNlKHVybCkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgfQogCiAgICAgcmV0dXJu
IHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gOTc1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsx
LDcgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAxOTk4IExhcnMgS25vbGwgKGtub2xsQG1waS1o
ZC5tcGcuZGUpCiAgICAgQ29weXJpZ2h0IChDKSAyMDAxIERpcmsgTXVlbGxlciA8bXVlbGxlckBr
ZGUub3JnPgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRl
ciwgSW5jLgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwg
MjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgQ29w
eXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIGh0dHA6Ly93d3cudG9yY2htb2JpbGUu
Y29tLwogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgpAQCAtMzksNiArMzksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIENhY2hlZEN1ZXM7CiBjbGFzcyBDYWNoZWRDU1NTdHlsZVNoZWV0OwogY2xhc3Mg
Q2FjaGVkRm9udDsKIGNsYXNzIENhY2hlZEltYWdlOwpAQCAtNzMsNiArNzQsOSBAQCBwdWJsaWM6
CiAjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCiAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlcXVlc3RM
aW5rUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIFJlc291cmNlUmVxdWVzdCYsIFJlc291
cmNlTG9hZFByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkKTsKICNlbmRp
ZgorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBDYWNoZWRDdWVzKiByZXF1ZXN0Q3VlcyhS
ZXNvdXJjZVJlcXVlc3QmKTsKKyNlbmRpZgogCiAgICAgLy8gTG9ncyBhbiBhY2Nlc3MgZGVuaWVk
IG1lc3NhZ2UgdG8gdGhlIGNvbnNvbGUgZm9yIHRoZSBzcGVjaWZpZWQgVVJMLgogICAgIHZvaWQg
cHJpbnRBY2Nlc3NEZW5pZWRNZXNzYWdlKGNvbnN0IEtVUkwmIHVybCkgY29uc3Q7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0LmNwcAkocmV2aXNpb24gOTc1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDcgQEAK
ICAgICBDb3B5cmlnaHQgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCiAg
ICAgQ29weXJpZ2h0IChDKSAyMDAyIFdhbGRvIEJhc3RpYW4gKGJhc3RpYW5Aa2RlLm9yZykKICAg
ICBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyAoc2FtLndlaW5pZ0BnbWFpbC5jb20p
Ci0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC03MCw2ICs3MCwxMCBAQCBzdGF0aWMgUmVz
b3VyY2VSZXF1ZXN0OjpUYXJnZXRUeXBlIGNhY2hlCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6
TGlua1N1YnJlc291cmNlOgogICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJ
c1N1YnJlc291cmNlOwogI2VuZGlmCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6OkN1ZVJlc291cmNlOgorICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1
ZXN0OjpUYXJnZXRJc0N1ZTsKKyNlbmRpZgogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1N1YnJlc291cmNlOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9SZXNvdXJjZVJlcXVl
c3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9t
aXVtL1Jlc291cmNlUmVxdWVzdC5oCShyZXZpc2lvbiA5NzU2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vUmVzb3VyY2VSZXF1ZXN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU2LDYgKzU2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgVGFy
Z2V0SXNQcmVyZW5kZXIsCiAgICAgICAgICAgICBUYXJnZXRJc0Zhdmljb24sCiAgICAgICAgICAg
ICBUYXJnZXRJc1hIUiwKKyAgICAgICAgICAgIFRhcmdldElzQ3VlLAogICAgICAgICB9OwogCiAg
ICAgICAgIGNsYXNzIEV4dHJhRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPEV4dHJhRGF0YT4gewo=
</data>
<flag name="review"
          id="108924"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>