<?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>104592</bug_id>
          
          <creation_ts>2012-12-10 13:42:40 -0800</creation_ts>
          <short_desc>IndexedDB: Stub out data operations on IDBDatabaseBackendInterface</short_desc>
          <delta_ts>2013-01-16 10:08:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>102736</blocked>
    
    <blocked>102741</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alec Flett">alecflett</reporter>
          <assigned_to name="Alec Flett">alecflett</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>jsbell</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>787682</commentid>
    <comment_count>0</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-12-10 13:42:40 -0800</bug_when>
    <thetext>IndexedDB: Stub out data operations on IDBDatabaseBackendInterface</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787685</commentid>
    <comment_count>1</comment_count>
      <attachid>178625</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-12-10 13:44:34 -0800</bug_when>
    <thetext>Created attachment 178625
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787690</commentid>
    <comment_count>2</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-12-10 13:46:58 -0800</bug_when>
    <thetext>jsbell@ / dgrogan@ - mind a quick look? just stubs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787694</commentid>
    <comment_count>3</comment_count>
      <attachid>178625</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-12-10 13:49:24 -0800</bug_when>
    <thetext>Comment on attachment 178625
Patch

jsbell@ / dgrogan@ - oops false alarm, I forgot put()! Ignore this patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787707</commentid>
    <comment_count>4</comment_count>
      <attachid>178632</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-12-10 14:09:42 -0800</bug_when>
    <thetext>Created attachment 178632
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787708</commentid>
    <comment_count>5</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-12-10 14:10:42 -0800</bug_when>
    <thetext>jsbell@ / dgrogan@ - ok, this is ready now. quick review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787735</commentid>
    <comment_count>6</comment_count>
      <attachid>178632</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-10 14:49:44 -0800</bug_when>
    <thetext>Comment on attachment 178632
Patch

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

Seems fine to me with nits and questions...

&gt; Source/WebCore/ChangeLog:12
&gt; +        No new tests, this is just preparation for refactoring.

Does this unblock work on the Chromium side, or is this really just the outline?

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:351
&gt; +void IDBDatabaseBackendImpl::openKeyCursor(int64_t transactionId, int64_t objectStoreId, int64_t indexId, PassRefPtr&lt;IDBKeyRange&gt;, unsigned short direction, PassRefPtr&lt;IDBCallbacks&gt;)

Start off with these methods ordered (alphabetically or logically)

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.h:83
&gt; +    virtual void openKeyCursor(int64_t transactionId, int64_t objectStoreId, int64_t indexId, PassRefPtr&lt;IDBKeyRange&gt;, unsigned short direction, PassRefPtr&lt;IDBCallbacks&gt;);

openKeyCursor is missing from IDBDatabaseBackendInterface

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendInterface.h:69
&gt; +    enum PutMode {

I would change references to IDBObjectStoreBackendInterface::AddOnly at the same time as you add this (no reason existing uses can&apos;t point at this).

Also consider moving IDBCursor::Direction here too? Or deferring Cursor refactoring for later?

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendInterface.h:77
&gt; +    virtual void openCursor(int64_t transactionId, int64_t objectStoreId, int64_t indexId, PassRefPtr&lt;IDBKeyRange&gt;, unsigned short direction, bool keyOnly, PassRefPtr&lt;IDBCallbacks&gt;) = 0;

Would this be a good time to move IDBKeyRange from being refcounted to stack allocated?

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendInterface.h:79
&gt; +    virtual void get(int64_t transactionId, int64_t objectStoreId, int64_t indexId, PassRefPtr&lt;IDBKeyRange&gt;, PassRefPtr&lt;IDBCallbacks&gt;) = 0;

Presumably passing some special id for indexId means &quot;get from the object store&quot; ?

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendInterface.h:82
&gt; +    virtual void setIndexKeys(int64_t transactionId, int64_t objectStoreId, PassRefPtr&lt;IDBKey&gt; prpPrimaryKey, const Vector&lt;int64_t&gt;&amp; indexIds, const Vector&lt;IndexKeys&gt;&amp;) = 0;

Ditto for IDBKey? That would leave IDBCallbacks as the only refcounted type in this interface.

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendInterface.h:84
&gt; +    virtual void deleteRange(int64_t transactionId, int64_t objectStoreId, PassRefPtr&lt;IDBKeyRange&gt;, PassRefPtr&lt;IDBCallbacks&gt;) = 0;

On further reflection (from offline conversation), I think I&apos;d prefer keeping clear() here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788678</commentid>
    <comment_count>7</comment_count>
      <attachid>178851</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-12-11 12:35:48 -0800</bug_when>
    <thetext>Created attachment 178851
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788681</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-11 12:40:59 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788718</commentid>
    <comment_count>9</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-12-11 13:18:42 -0800</bug_when>
    <thetext>ok, everything is fully flushed out now, most comments addressed. I didn&apos;t go with the stack-allocatable IDBKeyRange / IDBKey for this round, I think the changes are going to be big/complicated enough as they are.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788950</commentid>
    <comment_count>10</comment_count>
      <attachid>178851</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-11 16:30:05 -0800</bug_when>
    <thetext>Comment on attachment 178851
Patch

Clearing flags on attachment: 178851

Committed r137381: &lt;http://trac.webkit.org/changeset/137381&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788951</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-11 16:30:09 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808484</commentid>
    <comment_count>12</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-01-16 10:08:09 -0800</bug_when>
    <thetext>*** Bug 102742 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178625</attachid>
            <date>2012-12-10 13:44:34 -0800</date>
            <delta_ts>2012-12-10 14:09:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104592-20121210134156.patch</filename>
            <type>text/plain</type>
            <size>13063</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmU4MTFjZGMzNjQyMDE4
OGVjOTg0NTNjYThkMjNkYzNhOTM1NWM5NC4uYzMyOWRlYmU5YTRkNjdjN2JlMjgyNTk5MGQ3NDBk
NzVlZmYwMDc2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTEyLTEwICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFN0
dWIgb3V0IGRhdGEgb3BlcmF0aW9ucyBvbiBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDU5MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIHByZXBhcmF0
aW9uIGZvciByZW1vdmluZyBvYmplY3RTdG9yZS9pbmRleCBiYWNrZW5kCisgICAgICAgIGludGVy
ZmFjZXMsIHN0dWIgb3V0IHRoZSBiYXNpYyBkYXRhIG9wZXJhdGlvbnMgYXJvdW5kCisgICAgICAg
IGdldCwgcHV0LCBjdXJzb3JzLCBldGMuIG9uIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS4K
KworICAgICAgICBObyBuZXcgdGVzdHMsIHRoaXMgaXMganVzdCBwcmVwYXJhdGlvbiBmb3IgcmVm
YWN0b3JpbmcuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9w
ZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpjb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpvcGVuS2V5Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpnZXRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
ZGVsZXRlUmFuZ2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFj
a2VuZEltcGwuaDoKKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZEltcGwpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UpOgorCiAy
MDEyLTEyLTEwICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkOiB0b3VjaCBSZW5kZXJpbmdBbGxJbk9uZS5jcHAgdG8gZml4IEFwcGxl
IFdpbmRvd3MgYnVpbGRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNTNhNmIxNzA1
NTJlNjY1ZTdmOTNjNDI1ZTMzNzZlNDY2YmM0OWZlOS4uNWUxODA0M2RlOThiNzhiMjQ1MzY5YzYy
NmM1NjIwYzg3Y2Q0MzhiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NCBAQAorMjAxMi0xMi0xMCAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgSW5kZXhlZERCOiBTdHViIG91dCBkYXRhIG9wZXJhdGlvbnMgb24gSURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDQ1OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBTdHViIG91dCBjaHJvbWl1bSBzaWRlIG9mIGRhdGEgb3BlcmF0aW9ucyBmb3Ig
cmVmYWN0b3IuCisKKyAgICAgICAgKiBzcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6b3BlbkN1cnNvcik6Cisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpJREJEYXRhYmFzZUJhY2tlbmRQcm94
eTo6Y291bnQpOgorICAgICAgICAoV2ViS2l0OjpJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6b3Bl
bktleUN1cnNvcik6CisgICAgICAgIChXZWJLaXQ6OklEQkRhdGFiYXNlQmFja2VuZFByb3h5Ojpn
ZXQpOgorICAgICAgICAoV2ViS2l0OjpJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Z2V0S2V5KToK
KyAgICAgICAgKFdlYktpdDo6SURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmRlbGV0ZVJhbmdlKToK
KyAgICAgICAgKiBzcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKElEQkRh
dGFiYXNlQmFja2VuZFByb3h5KToKKyAgICAgICAgKiB0ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRU
ZXN0LmNwcDoKKwogMjAxMi0xMi0xMCAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmVmYWN0b3Jpbmc6IEludHJvZHVjZSBIVE1MRm9ybUNvbnRyb2xFbGVtZW50
Ojppc0Rpc2FibGVkT3JSZWFkT25seQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCAzYmM3NTRh
ODcxZWQ0ZTNjMTNmNTU2ODUxMjAzOTk2ODA1ZDdkOTczLi43NDRiOTA0NjYwMjBlZmM2MDFjZmE1
N2I0MzFlMmI5ZTgyMWE4NzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtMzM4LDYgKzMz
OCwzNSBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmFib3J0KGludDY0X3QgdHJhbnNh
Y3Rpb25JZCkKICAgICBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZCktPmFib3J0KCk7
CiB9CiAKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcihpbnQ2NF90IHRy
YW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNz
UmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBi
b29sIGtleU9ubHksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit7CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
Y291bnQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0
X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpvcGVuS2V5Q3Vyc29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikKK3sK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpnZXQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpnZXRLZXkoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
Kwordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVSYW5nZShpbnQ2NF90IHRyYW5z
YWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4s
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KIAogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpEZWxldGVPYmplY3RTdG9yZU9wZXJh
dGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlQmFja2VuZEltcGwuaAppbmRleCAwMTRlYmYyOTk3NjQyYmM0YjMyOTQyYTQ2MTdhM2ZkNDVh
YWU1NGVmLi5lNmYzMTAxZjhjN2U1NzNlY2I5ZWZjNjg1NmE1MjI2NzZjNzc0MGQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJ
bXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5oCkBAIC03OCw2ICs3OCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0cmFuc2Fj
dGlvbkZpbmlzaGVkQW5kQ29tcGxldGVGaXJlZChQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGw+KTsKICAgICB2b2lkIHRyYW5zYWN0aW9uRmluaXNoZWRBbmRBYm9ydEZpcmVkKFBh
c3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4pOwogCisgICAgdmlydHVhbCB2b2lk
IG9wZW5DdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0
IGRpcmVjdGlvbiwgYm9vbCBrZXlPbmx5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOworICAg
IHZpcnR1YWwgdm9pZCBjb3VudChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgb3BlbktleUN1cnNvcihpbnQ2
NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElk
LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCBnZXQoaW50NjRfdCB0cmFu
c2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CisgICAgdmlydHVh
bCB2b2lkIGdldEtleShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlUmFuZ2UoaW50NjRfdCB0cmFu
c2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOworCiBwcml2YXRlOgogICAgIElEQkRhdGFiYXNl
QmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvcmUqIGRhdGFiYXNl
LCBJREJGYWN0b3J5QmFja2VuZEltcGwqLCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCmluZGV4IDExNmM0MzgyZjY1MjBjYmQ0M2I1
ODBmY2UzYjU2MGRlNjViM2IzNDYuLjJhYWJhMjBiNzBkNzg1YmUyMjFmNWUwYjg4YTk1MTg0MmQ5
YzEzYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCkBAIC0zOCwxMyArMzgsMTMgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSURCQ2FsbGJhY2tzOwogY2xhc3MgSURCRGF0YWJh
c2VDYWxsYmFja3M7CiBjbGFzcyBJREJLZXlQYXRoOworY2xhc3MgSURCS2V5UmFuZ2U7CiBjbGFz
cyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U7CiBjbGFzcyBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U7CiBzdHJ1Y3QgSURCRGF0YWJhc2VNZXRhZGF0YTsKIAogdHlwZWRlZiBp
bnQgRXhjZXB0aW9uQ29kZTsKIAotLy8gVGhpcyBjbGFzcyBpcyBzaGFyZWQgYnkgSURCRGF0YWJh
c2UgKGFzeW5jKSBhbmQgSURCRGF0YWJhc2VTeW5jIChzeW5jKS4KIC8vIFRoaXMgaXMgaW1wbGVt
ZW50ZWQgYnkgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCBhbmQgb3B0aW9uYWxseSBvdGhlcnMgKGlu
IG9yZGVyIHRvIHByb3h5CiAvLyBjYWxscyBhY3Jvc3MgcHJvY2VzcyBiYXJyaWVycykuIEFsbCBj
YWxscyB0byB0aGVzZSBjbGFzc2VzIHNob3VsZCBiZSBub24tYmxvY2tpbmcgYW5kCiAvLyB0cmln
Z2VyIHdvcmsgb24gYSBiYWNrZ3JvdW5kIHRocmVhZCBpZiBuZWNlc3NhcnkuCkBAIC02NCw2ICs2
NCwxNCBAQCBwdWJsaWM6CiAgICAgLy8gVHJhbnNhY3Rpb24tc3BlY2lmaWMgb3BlcmF0aW9ucy4K
ICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0KGludDY0X3QgdHJhbnNhY3Rpb25JZCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBhYm9ydChpbnQ2NF90IHRyYW5zYWN0aW9uSWQpID0gMDsKKworICAgIC8v
IEluZGV4LXNwZWNpZmljIG9wZXJhdGlvbnMuCisgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3Io
aW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5k
ZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwg
Ym9vbCBrZXlPbmx5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgY291bnQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXQoaW50NjRfdCB0cmFuc2FjdGlv
bklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBnZXRLZXkoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVSYW5nZShpbnQ2NF90IHRy
YW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5n
ZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgPSAwOworCiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRh
YmFzZUJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRh
YmFzZUJhY2tlbmRQcm94eS5jcHAKaW5kZXggNDUwNDBiNjk4OTkwMTY0NGViZmRmMmM2YWU2NTFl
ZTliMWViNDMyOS4uNDg1YzVhMGMyYjYxZDhhOWQzODJhZDVmZjhjZWZlNTY2MmVjMTEwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2Vu
ZFByb3h5LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIK
ICNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNr
cy5oIgorI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCiAjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIK
ICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5oIgogI2luY2x1ZGUgIklEQlRy
YW5zYWN0aW9uQmFja2VuZFByb3h5LmgiCkBAIC0xMDksNiArMTEwLDM0IEBAIHZvaWQgSURCRGF0
YWJhc2VCYWNrZW5kUHJveHk6OmFib3J0KGludDY0X3QgdHJhbnNhY3Rpb25JZCkKICAgICBtX3dl
YklEQkRhdGFiYXNlLT5hYm9ydCh0cmFuc2FjdGlvbklkKTsKIH0KIAordm9pZCBJREJEYXRhYmFz
ZUJhY2tlbmRQcm94eTo6b3BlbkN1cnNvcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBr
ZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBib29sIGtleU9ubHksIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Cit9CisKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNvdW50KGludDY0X3QgdHJhbnNh
Y3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQ
dHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pCit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6Om9wZW5L
ZXlDdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRp
cmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KQoreworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworfQorCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpnZXQoaW50NjRfdCB0
cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikKK3sKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6
Z2V0S2V5KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2
NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4pCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9Cit2b2lkIElEQkRhdGFiYXNl
QmFja2VuZFByb3h5OjpkZWxldGVSYW5nZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KIAogdm9pZCBJREJEYXRh
YmFzZUJhY2tlbmRQcm94eTo6Y2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4p
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJh
Y2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNr
ZW5kUHJveHkuaAppbmRleCA4OGI5Y2NkMjc5MDA4ZGZhZTIzNzEwZmQ2ODE3OGYyZjdlM2Y1YTU5
Li5mMTRkMDA4ZjQwYTI2M2NlZmExNzkwNGQ1Njk3NzIzZWRlZGQ0YTU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKQEAg
LTU0LDYgKzU0LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0KGludDY0X3Qp
OwogICAgIHZpcnR1YWwgdm9pZCBhYm9ydChpbnQ2NF90KTsKIAorICAgIHZpcnR1YWwgdm9pZCBv
cGVuQ3Vyc29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBp
bnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCB1bnNpZ25l
ZCBzaG9ydCBkaXJlY3Rpb24sIGJvb2wga2V5T25seSwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJD
YWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY291bnQoaW50NjRfdCB0cmFuc2FjdGlvbklk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPik7Cisg
ICAgdmlydHVhbCB2b2lkIG9wZW5LZXlDdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
REJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpJREJDYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0KGludDY0X3QgdHJhbnNhY3Rp
b25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4p
OworICAgIHZpcnR1YWwgdm9pZCBnZXRLZXkoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJL
ZXlSYW5nZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPik7CisgICAgdmlydHVh
bCB2b2lkIGRlbGV0ZVJhbmdlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpJREJDYWxsYmFja3M+KTsKKwogcHJpdmF0ZToKICAgICBJREJEYXRhYmFzZUJhY2tlbmRQ
cm94eShQYXNzT3duUHRyPFdlYklEQkRhdGFiYXNlPik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCmluZGV4IDA4
NDkwMzQ2NTU4ZDYwOTQ3YTg0ODA3MzQ2Y2IyNTgxZTI2ZWIxMzcuLmQ2YTVhOTlhY2Q0MzY3MDE2
MjY4ZjM1ZGEwZTVlN2QzOWFkNTA1YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcApAQCAtMTY3LDYgKzE2Nywx
MyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFib3J0KGludDY0X3QgdHJhbnNhY3Rpb25J
ZCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdChpbnQ2NF90IHRyYW5zYWN0aW9uSWQpIHsg
fQogCisgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoaW50NjRfdCBvYmplY3RTdG9yZUlkLCBp
bnQ2NF90IGluZGV4SWQsIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgYm9vbCBrZXlPbmx5LCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjb3VudChpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVm
UHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgb3BlbktleUN1cnNvcihpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5k
ZXhJZCwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5z
aWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBnZXQoaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQs
IGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPikgeyB9CisgICAgdmlydHVhbCB2b2lkIGdldEtleShpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNz
UmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlUmFuZ2UoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4pIHsgfQorCiBwcml2YXRlOgogICAgIE1vY2tJREJEYXRhYmFzZUJhY2tlbmRQcm94eShX
ZWJJREJEYXRhYmFzZUltcGwmIHdlYkRhdGFiYXNlKQogICAgICAgICA6IG1fd2FzQ2xvc2VDYWxs
ZWQoZmFsc2UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178632</attachid>
            <date>2012-12-10 14:09:42 -0800</date>
            <delta_ts>2012-12-11 12:35:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104592-20121210140704.patch</filename>
            <type>text/plain</type>
            <size>16474</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmU4MTFjZGMzNjQyMDE4
OGVjOTg0NTNjYThkMjNkYzNhOTM1NWM5NC4uYzMyOWRlYmU5YTRkNjdjN2JlMjgyNTk5MGQ3NDBk
NzVlZmYwMDc2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTEyLTEwICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFN0
dWIgb3V0IGRhdGEgb3BlcmF0aW9ucyBvbiBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDU5MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIHByZXBhcmF0
aW9uIGZvciByZW1vdmluZyBvYmplY3RTdG9yZS9pbmRleCBiYWNrZW5kCisgICAgICAgIGludGVy
ZmFjZXMsIHN0dWIgb3V0IHRoZSBiYXNpYyBkYXRhIG9wZXJhdGlvbnMgYXJvdW5kCisgICAgICAg
IGdldCwgcHV0LCBjdXJzb3JzLCBldGMuIG9uIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS4K
KworICAgICAgICBObyBuZXcgdGVzdHMsIHRoaXMgaXMganVzdCBwcmVwYXJhdGlvbiBmb3IgcmVm
YWN0b3JpbmcuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9w
ZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpjb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpvcGVuS2V5Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpnZXRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
ZGVsZXRlUmFuZ2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFj
a2VuZEltcGwuaDoKKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZEltcGwpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UpOgorCiAy
MDEyLTEyLTEwICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkOiB0b3VjaCBSZW5kZXJpbmdBbGxJbk9uZS5jcHAgdG8gZml4IEFwcGxl
IFdpbmRvd3MgYnVpbGRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNTNhNmIxNzA1
NTJlNjY1ZTdmOTNjNDI1ZTMzNzZlNDY2YmM0OWZlOS4uNWUxODA0M2RlOThiNzhiMjQ1MzY5YzYy
NmM1NjIwYzg3Y2Q0MzhiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NCBAQAorMjAxMi0xMi0xMCAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgSW5kZXhlZERCOiBTdHViIG91dCBkYXRhIG9wZXJhdGlvbnMgb24gSURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDQ1OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBTdHViIG91dCBjaHJvbWl1bSBzaWRlIG9mIGRhdGEgb3BlcmF0aW9ucyBmb3Ig
cmVmYWN0b3IuCisKKyAgICAgICAgKiBzcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6b3BlbkN1cnNvcik6Cisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpJREJEYXRhYmFzZUJhY2tlbmRQcm94
eTo6Y291bnQpOgorICAgICAgICAoV2ViS2l0OjpJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6b3Bl
bktleUN1cnNvcik6CisgICAgICAgIChXZWJLaXQ6OklEQkRhdGFiYXNlQmFja2VuZFByb3h5Ojpn
ZXQpOgorICAgICAgICAoV2ViS2l0OjpJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Z2V0S2V5KToK
KyAgICAgICAgKFdlYktpdDo6SURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmRlbGV0ZVJhbmdlKToK
KyAgICAgICAgKiBzcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKElEQkRh
dGFiYXNlQmFja2VuZFByb3h5KToKKyAgICAgICAgKiB0ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRU
ZXN0LmNwcDoKKwogMjAxMi0xMi0xMCAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmVmYWN0b3Jpbmc6IEludHJvZHVjZSBIVE1MRm9ybUNvbnRyb2xFbGVtZW50
Ojppc0Rpc2FibGVkT3JSZWFkT25seQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCAzYmM3NTRh
ODcxZWQ0ZTNjMTNmNTU2ODUxMjAzOTk2ODA1ZDdkOTczLi5mNzdjMzdiOGNkZDgzMDIzYTk4MjUy
ZDhkODAyODUwMzEzNmE2ZTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtMzM4LDYgKzMz
OCw1MCBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmFib3J0KGludDY0X3QgdHJhbnNh
Y3Rpb25JZCkKICAgICBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZCktPmFib3J0KCk7
CiB9CiAKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcihpbnQ2NF90IHRy
YW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNz
UmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBi
b29sIGtleU9ubHksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit7CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
Y291bnQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0
X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpvcGVuS2V5Q3Vyc29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikKK3sK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpnZXQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpnZXRLZXkoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
Kwordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwdXQoaW50NjRfdCB0cmFuc2FjdGlvbklk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIFBhc3NSZWZQ
dHI8SURCS2V5PiwgUHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBjb25zdCBWZWN0
b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYpCit7CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
c2V0SW5kZXhLZXlzKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBQYXNzUmVmUHRyPElEQktleT4gcHJwUHJpbWFyeUtleSwgY29uc3QgVmVjdG9yPGludDY0X3Q+
JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mKQoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworfQorCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldEluZGV4ZXNS
ZWFkeShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3Qg
VmVjdG9yPGludDY0X3Q+JiBpbmRleElkcykKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KKwordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVSYW5nZShpbnQ2NF90IHRy
YW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5n
ZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKK30KIAogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpEZWxldGVPYmplY3RTdG9yZU9w
ZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQmFja2VuZEltcGwuaAppbmRleCAwMTRlYmYyOTk3NjQyYmM0YjMyOTQyYTQ2MTdhM2Zk
NDVhYWU1NGVmLi5lMzllOGU3YzViZDIyNzY4MDJlYjM3Y2JjMjljNTAyZDM3MTU5YzFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VCYWNrZW5kSW1wbC5oCkBAIC03OCw2ICs3OCwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB0cmFu
c2FjdGlvbkZpbmlzaGVkQW5kQ29tcGxldGVGaXJlZChQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw+KTsKICAgICB2b2lkIHRyYW5zYWN0aW9uRmluaXNoZWRBbmRBYm9ydEZpcmVk
KFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4pOwogCisgICAgdmlydHVhbCB2
b2lkIG9wZW5DdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNo
b3J0IGRpcmVjdGlvbiwgYm9vbCBrZXlPbmx5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwor
ICAgIHZpcnR1YWwgdm9pZCBjb3VudChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgb3BlbktleUN1cnNvcihp
bnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRl
eElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCBnZXQoaW50NjRfdCB0
cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CisgICAgdmly
dHVhbCB2b2lkIGdldEtleShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcHV0KGludDY0X3QgdHJhbnNhY3Rp
b25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBQYXNz
UmVmUHRyPElEQktleT4sIFB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgY29uc3Qg
VmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhLZXlzKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQktleT4gcHJwUHJpbWFyeUtleSwgY29uc3Qg
VmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhlc1JlYWR5KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlUmFuZ2UoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4pOworCiBwcml2YXRlOgogICAgIElEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3Qg
U3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvcmUqIGRhdGFiYXNlLCBJREJGYWN0b3J5QmFja2Vu
ZEltcGwqLCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZS5oCmluZGV4IDExNmM0MzgyZjY1MjBjYmQ0M2I1ODBmY2UzYjU2MGRlNjViM2Iz
NDYuLjlmZjhkMWU3MTU2NjNjYTY3NjgyMWY3MTkzYmNhZDJkMjU4ZTcwZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZS5oCkBAIC0zNywxNCArMzcsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBJREJDYWxsYmFja3M7CiBjbGFzcyBJREJEYXRhYmFzZUNhbGxiYWNrczsKK2Ns
YXNzIElEQktleTsKIGNsYXNzIElEQktleVBhdGg7CitjbGFzcyBJREJLZXlSYW5nZTsKIGNsYXNz
IElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZTsKIGNsYXNzIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZTsKIHN0cnVjdCBJREJEYXRhYmFzZU1ldGFkYXRhOwogCiB0eXBlZGVmIGlu
dCBFeGNlcHRpb25Db2RlOwogCi0vLyBUaGlzIGNsYXNzIGlzIHNoYXJlZCBieSBJREJEYXRhYmFz
ZSAoYXN5bmMpIGFuZCBJREJEYXRhYmFzZVN5bmMgKHN5bmMpLgogLy8gVGhpcyBpcyBpbXBsZW1l
bnRlZCBieSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsIGFuZCBvcHRpb25hbGx5IG90aGVycyAoaW4g
b3JkZXIgdG8gcHJveHkKIC8vIGNhbGxzIGFjcm9zcyBwcm9jZXNzIGJhcnJpZXJzKS4gQWxsIGNh
bGxzIHRvIHRoZXNlIGNsYXNzZXMgc2hvdWxkIGJlIG5vbi1ibG9ja2luZyBhbmQKIC8vIHRyaWdn
ZXIgd29yayBvbiBhIGJhY2tncm91bmQgdGhyZWFkIGlmIG5lY2Vzc2FyeS4KQEAgLTY0LDYgKzY1
LDI0IEBAIHB1YmxpYzoKICAgICAvLyBUcmFuc2FjdGlvbi1zcGVjaWZpYyBvcGVyYXRpb25zLgog
ICAgIHZpcnR1YWwgdm9pZCBjb21taXQoaW50NjRfdCB0cmFuc2FjdGlvbklkKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGFib3J0KGludDY0X3QgdHJhbnNhY3Rpb25JZCkgPSAwOworCisgICAgZW51
bSBQdXRNb2RlIHsKKyAgICAgICAgQWRkT3JVcGRhdGUsCisgICAgICAgIEFkZE9ubHksCisgICAg
ICAgIEN1cnNvclVwZGF0ZQorICAgIH07CisKKyAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8SURC
S2V5PiA+IEluZGV4S2V5czsKKworICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIGJvb2wga2V5
T25seSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNv
dW50KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90
IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFu
Z2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0
S2V5KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90
IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHV0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBQYXNzUmVmUHRyPElE
QktleT4sIFB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgY29uc3QgVmVjdG9yPGlu
dDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHNldEluZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1hcnlLZXksIGNvbnN0IFZlY3Rv
cjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzZXRJbmRleGVzUmVhZHkoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlUmFuZ2UoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4pID0gMDsKKwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHku
Y3BwCmluZGV4IDQ1MDQwYjY5ODk5MDE2NDRlYmZkZjJjNmFlNjUxZWU5YjFlYjQzMjkuLmUyY2Zl
NWMzYTZjYjQyMTNlNWI4YmI1N2ZmYTdhM2U0MjczNWIzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiSURCQ2Fs
bGJhY2tzLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3MuaCIKKyNpbmNsdWRlICJJ
REJLZXlSYW5nZS5oIgogI2luY2x1ZGUgIklEQk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kUHJveHkuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRQ
cm94eS5oIgpAQCAtMTA5LDYgKzExMCw1MCBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZFByb3h5
OjphYm9ydChpbnQ2NF90IHRyYW5zYWN0aW9uSWQpCiAgICAgbV93ZWJJREJEYXRhYmFzZS0+YWJv
cnQodHJhbnNhY3Rpb25JZCk7CiB9CiAKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6Om9w
ZW5DdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIHVuc2lnbmVk
IHNob3J0IGRpcmVjdGlvbiwgYm9vbCBrZXlPbmx5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIElEQkRh
dGFiYXNlQmFja2VuZFByb3h5Ojpjb3VudChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
fQorCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpvcGVuS2V5Q3Vyc29yKGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9p
ZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Z2V0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFu
Z2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmdldEtleShpbnQ2NF90IHRy
YW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNz
UmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KQoreworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZFByb3h5Ojpw
dXQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYsIFBhc3NSZWZQdHI8SURCS2V5PiwgUHV0TW9kZSwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0
b3I8SW5kZXhLZXlzPiYpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQg
SURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OnNldEluZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0aW9u
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1hcnlL
ZXksIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtl
eXM+JikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBJREJEYXRhYmFz
ZUJhY2tlbmRQcm94eTo6c2V0SW5kZXhlc1JlYWR5KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzKQorewor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZFBy
b3h5OjpkZWxldGVSYW5nZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikK
K3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KIAogdm9pZCBJREJEYXRhYmFzZUJhY2tl
bmRQcm94eTo6Y2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94
eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHku
aAppbmRleCA4OGI5Y2NkMjc5MDA4ZGZhZTIzNzEwZmQ2ODE3OGYyZjdlM2Y1YTU5Li40MzA3MGJk
ZWU3ZGQwODYwMTM1ZDVmZjc0ZTgyM2E5ZTA5YTQ5MTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKQEAgLTU0LDYgKzU0
LDE2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0KGludDY0X3QpOwogICAgIHZp
cnR1YWwgdm9pZCBhYm9ydChpbnQ2NF90KTsKIAorICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29y
KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGlu
ZGV4SWQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBk
aXJlY3Rpb24sIGJvb2wga2V5T25seSwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+
KTsKKyAgICB2aXJ0dWFsIHZvaWQgY291bnQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJL
ZXlSYW5nZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPik7CisgICAgdmlydHVh
bCB2b2lkIG9wZW5LZXlDdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXlSYW5n
ZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxs
YmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6
SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4pOworICAgIHZp
cnR1YWwgdm9pZCBnZXRLZXkoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXlSYW5nZT4s
IFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIHB1
dChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiB2YWx1ZSwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+LCBQdXRNb2Rl
LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90
PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+Jik7CisgICAgdmlydHVhbCB2b2lk
IHNldEluZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+IHBycFByaW1hcnlLZXksIGNvbnN0IFZlY3Rv
cjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+Jik7CisgICAgdmly
dHVhbCB2b2lkIHNldEluZGV4ZXNSZWFkeShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcyk7CisgICAgdmly
dHVhbCB2b2lkIGRlbGV0ZVJhbmdlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpJREJDYWxsYmFja3M+KTsKKwogcHJpdmF0ZToKICAgICBJREJEYXRhYmFzZUJhY2tl
bmRQcm94eShQYXNzT3duUHRyPFdlYklEQkRhdGFiYXNlPik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCmluZGV4
IDA4NDkwMzQ2NTU4ZDYwOTQ3YTg0ODA3MzQ2Y2IyNTgxZTI2ZWIxMzcuLmVkMDBhYjcyYTI1YjBl
M2NjMzIyOGE2MWZlYWNhOTkyYjljMjUxMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcApAQCAtMTY3LDYgKzE2
NywxNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFib3J0KGludDY0X3QgdHJhbnNhY3Rp
b25JZCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdChpbnQ2NF90IHRyYW5zYWN0aW9uSWQp
IHsgfQogCisgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBpbnQ2NF90IGluZGV4SWQsIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJL
ZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgYm9vbCBrZXlPbmx5LCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjb3VudChpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNz
UmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgb3BlbktleUN1cnNvcihpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3Qg
aW5kZXhJZCwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwg
dW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBnZXQoaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4
SWQsIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPikgeyB9CisgICAgdmlydHVhbCB2b2lkIGdldEtleShpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgcHV0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBQYXNzUmVmUHRyPElEQktleT4sIFB1dE1v
ZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRl
eElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0
SW5kZXhLZXlzKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQ
YXNzUmVmUHRyPElEQktleT4gcHJwUHJpbWFyeUtleSwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBp
bmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
c2V0SW5kZXhlc1JlYWR5KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlUmFuZ2UoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pIHsg
fQorCiBwcml2YXRlOgogICAgIE1vY2tJREJEYXRhYmFzZUJhY2tlbmRQcm94eShXZWJJREJEYXRh
YmFzZUltcGwmIHdlYkRhdGFiYXNlKQogICAgICAgICA6IG1fd2FzQ2xvc2VDYWxsZWQoZmFsc2Up
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178851</attachid>
            <date>2012-12-11 12:35:48 -0800</date>
            <delta_ts>2012-12-11 16:30:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104592-20121211123309.patch</filename>
            <type>text/plain</type>
            <size>29392</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmU4MTFjZGMzNjQyMDE4
OGVjOTg0NTNjYThkMjNkYzNhOTM1NWM5NC4uZTQ4NTQ5MzZjN2FjZjdhYjVhMmQ2MTRiMTQ0ZDhk
OWRmMTk3N2Q3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTEyLTExICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFN0
dWIgb3V0IGRhdGEgb3BlcmF0aW9ucyBvbiBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDU5MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIHByZXBhcmF0
aW9uIGZvciByZW1vdmluZyBvYmplY3RTdG9yZS9pbmRleCBiYWNrZW5kCisgICAgICAgIGludGVy
ZmFjZXMsIHN0dWIgb3V0IHRoZSBiYXNpYyBkYXRhIG9wZXJhdGlvbnMgYXJvdW5kCisgICAgICAg
IGdldCwgcHV0LCBjdXJzb3JzLCBldGMuIG9uIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS4K
KworICAgICAgICBObyBuZXcgdGVzdHMsIHRoaXMgaXMganVzdCBwcmVwYXJhdGlvbiBmb3IgcmVm
YWN0b3JpbmcuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Omdl
dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFj
a2VuZEltcGw6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpzZXRJbmRleEtleXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6c2V0SW5kZXhlc1JlYWR5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6Y291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
ZGVsZXRlUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
Y2xlYXIpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZElt
cGwuaDoKKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZEltcGwpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UpOgorCiAyMDEyLTEy
LTEwICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkOiB0b3VjaCBSZW5kZXJpbmdBbGxJbk9uZS5jcHAgdG8gZml4IEFwcGxlIFdpbmRv
d3MgYnVpbGRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNTNhNmIxNzA1NTJlNjY1
ZTdmOTNjNDI1ZTMzNzZlNDY2YmM0OWZlOS4uYTZmOTkxODgxM2Y0NDEzOWNhZmRkMDM2OGMyYzQx
ZTNhYTVlMWNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAor
MjAxMi0xMi0xMSAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgSW5kZXhlZERCOiBTdHViIG91dCBkYXRhIG9wZXJhdGlvbnMgb24gSURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDQ1OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBTdHViIG91dCBjaHJvbWl1bSBzaWRlIG9mIGRhdGEgb3BlcmF0aW9ucyBmb3IgcmVmYWN0
b3IuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCRGF0YWJhc2UuaDoKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpnZXQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJEYXRhYmFzZTo6cHV0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJh
c2U6OnNldEluZGV4S2V5cyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpzZXRJ
bmRleGVzUmVhZHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZTo6b3BlbkN1cnNv
cik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpjb3VudCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpkZWxldGVSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQkRhdGFiYXNlOjpjbGVhcik6CisgICAgICAgIChXZWJJREJEYXRhYmFzZSk6CisgICAgICAg
ICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURC
RGF0YWJhc2VCYWNrZW5kUHJveHk6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYktpdDo6SURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNvdW50KToKKyAgICAgICAg
KFdlYktpdDo6SURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmdldCk6CisgICAgICAgIChXZWJLaXQ6
OklEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpwdXQpOgorICAgICAgICAoV2ViS2l0OjpJREJEYXRh
YmFzZUJhY2tlbmRQcm94eTo6c2V0SW5kZXhLZXlzKToKKyAgICAgICAgKFdlYktpdDo6SURCRGF0
YWJhc2VCYWNrZW5kUHJveHk6OnNldEluZGV4ZXNSZWFkeSk6CisgICAgICAgIChXZWJLaXQ6OklE
QkRhdGFiYXNlQmFja2VuZFByb3h5OjpkZWxldGVSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OklE
QkRhdGFiYXNlQmFja2VuZFByb3h5OjpjbGVhcik6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNl
QmFja2VuZFByb3h5Lmg6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRQcm94eSk6CisgICAg
ICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGw6Om9wZW5DdXJzb3IpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGw6OmNvdW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SURCRGF0YWJhc2VJbXBsOjpnZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUlt
cGw6OnB1dCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6c2V0SW5kZXhL
ZXlzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2VJbXBsOjpzZXRJbmRleGVzUmVh
ZHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGw6OmRlbGV0ZVJhbmdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2VJbXBsOjpjbGVhcik6CisgICAgICAgICog
c3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oOgorICAgICAgICAoV2ViSURCRGF0YWJhc2VJbXBsKToK
KyAgICAgICAgKiB0ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcDoKKwogMjAxMi0xMi0x
MCAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVmYWN0b3Jp
bmc6IEludHJvZHVjZSBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojppc0Rpc2FibGVkT3JSZWFkT25s
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCAzYmM3NTRhODcxZWQ0ZTNjMTNmNTU2ODUxMjAz
OTk2ODA1ZDdkOTczLi41YjEzODIxODg0YzkyNGI3NDBlZTcyZTJmNGNiYmQyMTQzODVjYjFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJh
Y2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtMzM4LDYgKzMzOCw0NSBAQCB2b2lkIElEQkRhdGFi
YXNlQmFja2VuZEltcGw6OmFib3J0KGludDY0X3QgdHJhbnNhY3Rpb25JZCkKICAgICBtX3RyYW5z
YWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZCktPmFib3J0KCk7CiB9CiAKK3ZvaWQgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6Z2V0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBib29sIGtl
eU9ubHksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKK30KKwordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwdXQoaW50NjRfdCB0cmFu
c2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYs
IFBhc3NSZWZQdHI8SURCS2V5PiwgUHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBj
b25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYp
Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6c2V0SW5kZXhLZXlzKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQktleT4gcHJwUHJpbWFyeUtleSwgY29uc3QgVmVjdG9y
PGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mKQoreworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNl
dEluZGV4ZXNSZWFkeShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcykKK3sKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKK30KKwordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yKGlu
dDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4
SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJl
Y3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBjYWxsYmFja3MpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3Zv
aWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y291bnQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKK30KKwordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVSYW5nZShpbnQ2
NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJL
ZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikKK3sKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKK30KKwordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjbGVhcihpbnQ2NF90
IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+KQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQogCiB2b2lkIElEQkRhdGFi
YXNlQmFja2VuZEltcGw6OkRlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjpwZXJmb3JtKElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCmlu
ZGV4IDAxNGViZjI5OTc2NDJiYzRiMzI5NDJhNDYxN2EzZmQ0NWFhZTU0ZWYuLjgyYmRiYzc1NDIy
OTEyNzJkMWRmNWZmMzRjYzdmNWUzZGZmMDU5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKQEAgLTc4
LDYgKzc4LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHRyYW5zYWN0aW9uRmluaXNoZWRBbmRDb21w
bGV0ZUZpcmVkKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4pOwogICAgIHZv
aWQgdHJhbnNhY3Rpb25GaW5pc2hlZEFuZEFib3J0RmlyZWQoUGFzc1JlZlB0cjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsPik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0KGludDY0X3QgdHJhbnNh
Y3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQ
dHI8SURCS2V5UmFuZ2U+LCBib29sIGtleU9ubHksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHB1dChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgUGFzc1JlZlB0cjxJ
REJLZXk+LCBQdXRNb2RlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIGNvbnN0IFZlY3Rvcjxp
bnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHNldEluZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1hcnlLZXksIGNvbnN0
IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldEluZGV4ZXNSZWFkeShpbnQ2NF90IHRyYW5zYWN0
aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRl
eElkcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoaW50NjRfdCB0cmFu
c2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgYm9vbCBrZXlPbmx5
LCBUYXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgY291bnQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVJhbmdlKGlu
dDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElE
QktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgY2xlYXIoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgT1ZFUlJJREU7CisKIHByaXZhdGU6CiAgICAg
SURCRGF0YWJhc2VCYWNrZW5kSW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG9y
ZSogZGF0YWJhc2UsIElEQkZhY3RvcnlCYWNrZW5kSW1wbCosIGNvbnN0IFN0cmluZyYgdW5pcXVl
SWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggMTE2YzQzODJm
NjUyMGNiZDQzYjU4MGZjZTNiNTYwZGU2NWIzYjM0Ni4uZGMyOTA0NmEzOWQ2NjYyYjg1MjI4MjBl
NDUyMjNmNjcxNWE4YWE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTM3LDE0
ICszNywxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQkNhbGxiYWNrczsKIGNs
YXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzOworY2xhc3MgSURCS2V5OwogY2xhc3MgSURCS2V5UGF0
aDsKK2NsYXNzIElEQktleVJhbmdlOwogY2xhc3MgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJm
YWNlOwogY2xhc3MgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOwogc3RydWN0IElEQkRh
dGFiYXNlTWV0YWRhdGE7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKLS8vIFRoaXMg
Y2xhc3MgaXMgc2hhcmVkIGJ5IElEQkRhdGFiYXNlIChhc3luYykgYW5kIElEQkRhdGFiYXNlU3lu
YyAoc3luYykuCiAvLyBUaGlzIGlzIGltcGxlbWVudGVkIGJ5IElEQkRhdGFiYXNlQmFja2VuZElt
cGwgYW5kIG9wdGlvbmFsbHkgb3RoZXJzIChpbiBvcmRlciB0byBwcm94eQogLy8gY2FsbHMgYWNy
b3NzIHByb2Nlc3MgYmFycmllcnMpLiBBbGwgY2FsbHMgdG8gdGhlc2UgY2xhc3NlcyBzaG91bGQg
YmUgbm9uLWJsb2NraW5nIGFuZAogLy8gdHJpZ2dlciB3b3JrIG9uIGEgYmFja2dyb3VuZCB0aHJl
YWQgaWYgbmVjZXNzYXJ5LgpAQCAtNjQsNiArNjUsMzAgQEAgcHVibGljOgogICAgIC8vIFRyYW5z
YWN0aW9uLXNwZWNpZmljIG9wZXJhdGlvbnMuCiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdChpbnQ2
NF90IHRyYW5zYWN0aW9uSWQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoaW50NjRfdCB0
cmFuc2FjdGlvbklkKSA9IDA7CisKKyAgICBlbnVtIFRhc2tUeXBlIHsKKyAgICAgICAgTm9ybWFs
VGFzayA9IDAsCisgICAgICAgIFByZWVtcHRpdmVUYXNrCisgICAgfTsKKworICAgIGVudW0gUHV0
TW9kZSB7CisgICAgICAgIEFkZE9yVXBkYXRlLAorICAgICAgICBBZGRPbmx5LAorICAgICAgICBD
dXJzb3JVcGRhdGUKKyAgICB9OworCisgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPElEQktleT4g
PiBJbmRleEtleXM7CisKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0KGludDY0X3QgdHJhbnNhY3Rpb25J
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+LCBib29sIGtleU9ubHksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBwdXQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIFBhc3NSZWZQdHI8SURCS2V5PiwgUHV0
TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGlu
ZGV4SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0SW5kZXhLZXlzKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBQYXNzUmVmUHRyPElEQktleT4gcHJwUHJpbWFyeUtleSwgY29uc3QgVmVjdG9yPGludDY0X3Q+
JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNldEluZGV4ZXNSZWFkeShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcykgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBvcGVuQ3Vyc29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25l
ZCBzaG9ydCBkaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUsIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb3VudChpbnQ2NF90IHRyYW5zYWN0
aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRy
PElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGRlbGV0ZVJhbmdlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pID0gMDsKKworCiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSURCRGF0YWJhc2UuaAppbmRleCAxNjc2YWU2NjMwYjFlZDk4NDA4OTgzNmIwMDY0
ODc1ODE0YWUzZGUxLi4wNDgzMmRiYjA3ZTczM2U4MGJiYjY5OGNiMWYwOGY0NzRjMzVjMjNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJXZWJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAi
V2ViRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIldlYklEQk1ldGFkYXRhLmgiCisjaW5jbHVk
ZSAiV2ViSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIK
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0zNiw3ICszNyw5IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJREJDYWxsYmFja3M7CiBjbGFzcyBXZWJJREJE
YXRhYmFzZUNhbGxiYWNrczsKK2NsYXNzIFdlYklEQktleTsKIGNsYXNzIFdlYklEQktleVBhdGg7
CitjbGFzcyBXZWJJREJLZXlSYW5nZTsKIGNsYXNzIFdlYklEQk9iamVjdFN0b3JlOwogY2xhc3Mg
V2ViSURCVHJhbnNhY3Rpb247CiAKQEAgLTY1LDYgKzY4LDI4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgYWJvcnQobG9uZyBsb25nIHRyYW5zYWN0aW9uSWQpIHsgV0VCS0lUX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdChsb25nIGxvbmcgdHJhbnNh
Y3Rpb25JZCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAorICAgIGVudW0gVGFz
a1R5cGUgeworICAgICAgICBOb3JtYWxUYXNrID0gMCwKKyAgICAgICAgUHJlZW1wdGl2ZVRhc2sK
KyAgICB9OworCisgICAgZW51bSBQdXRNb2RlIHsKKyAgICAgICAgQWRkT3JVcGRhdGUsCisgICAg
ICAgIEFkZE9ubHksCisgICAgICAgIEN1cnNvclVwZGF0ZQorICAgIH07CisKKyAgICB0eXBlZGVm
IFdlYlZlY3RvcjxXZWJJREJLZXk+IFdlYkluZGV4S2V5czsKKworICAgIHZpcnR1YWwgdm9pZCBn
ZXQobG9uZyBsb25nIHRyYW5zYWN0aW9uSWQsIGxvbmcgbG9uZyBvYmplY3RTdG9yZUlkLCBsb25n
IGxvbmcgaW5kZXhJZCwgY29uc3QgV2ViSURCS2V5UmFuZ2UmLCBib29sIGtleU9ubHksIFdlYklE
QkNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVh
bCB2b2lkIHB1dChsb25nIGxvbmcgdHJhbnNhY3Rpb25JZCwgbG9uZyBsb25nIG9iamVjdFN0b3Jl
SWQsIGNvbnN0IFdlYlZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYgdmFsdWUsIGNvbnN0IFdlYklEQktl
eSYsIFB1dE1vZGUsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYlZlY3Rvcjxsb25nIGxvbmc+
JiBpbmRleElkcywgY29uc3QgV2ViVmVjdG9yPFdlYkluZGV4S2V5cz4mKSB7IFdFQktJVF9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleEtleXMobG9uZyBs
b25nIHRyYW5zYWN0aW9uSWQsIGxvbmcgbG9uZyBvYmplY3RTdG9yZUlkLCBjb25zdCBXZWJJREJL
ZXkmLCBjb25zdCBXZWJWZWN0b3I8bG9uZyBsb25nPiYgaW5kZXhJZHMsIGNvbnN0IFdlYlZlY3Rv
cjxXZWJJbmRleEtleXM+JikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc2V0SW5kZXhlc1JlYWR5KGxvbmcgbG9uZyB0cmFuc2FjdGlvbklkLCBsb25n
IGxvbmcgb2JqZWN0U3RvcmVJZCwgY29uc3QgV2ViVmVjdG9yPGxvbmcgbG9uZz4mIGluZGV4SWRz
KSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBvcGVu
Q3Vyc29yKGxvbmcgbG9uZyB0cmFuc2FjdGlvbklkLCBsb25nIGxvbmcgb2JqZWN0U3RvcmVJZCwg
bG9uZyBsb25nIGluZGV4SWQsIGNvbnN0IFdlYklEQktleVJhbmdlJiwgdW5zaWduZWQgc2hvcnQg
ZGlyZWN0aW9uLCBib29sIGtleU9ubHksIFRhc2tUeXBlLCBXZWJJREJDYWxsYmFja3MqKSB7IFdF
QktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBjb3VudChsb25n
IGxvbmcgdHJhbnNhY3Rpb25JZCwgbG9uZyBsb25nIG9iamVjdFN0b3JlSWQsIGxvbmcgbG9uZyBp
bmRleElkLCBjb25zdCBXZWJJREJLZXlSYW5nZSYsIFdlYklEQkNhbGxiYWNrcyopIHsgV0VCS0lU
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVJhbmdlKGxv
bmcgbG9uZyB0cmFuc2FjdGlvbklkLCBsb25nIGxvbmcgb2JqZWN0U3RvcmVJZCwgY29uc3QgV2Vi
SURCS2V5UmFuZ2UmLCBXZWJJREJDYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBjbGVhcihsb25nIGxvbmcgdHJhbnNhY3Rpb25JZCwg
bG9uZyBsb25nIG9iamVjdFN0b3JlSWQsIFdlYklEQkNhbGxiYWNrcyopICB7IFdFQktJVF9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgV2ViSURCRGF0YWJhc2UoKSB7
IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFz
ZUJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFz
ZUJhY2tlbmRQcm94eS5jcHAKaW5kZXggNDUwNDBiNjk4OTkwMTY0NGViZmRmMmM2YWU2NTFlZTli
MWViNDMyOS4uNzQ5NzQ3YTcyNTNmNzI3MTZlMTc5YjJkZjg5Yzg1YWYxNmYxMTQ5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFBy
b3h5LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNp
bmNsdWRlICJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5o
IgorI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCiAjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKICNp
bmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5oIgogI2luY2x1ZGUgIklEQlRyYW5z
YWN0aW9uQmFja2VuZFByb3h5LmgiCkBAIC00MCw2ICs0MSw3IEBACiAjaW5jbHVkZSAiV2ViSURC
RGF0YWJhc2UuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCIKICNp
bmNsdWRlICJXZWJJREJEYXRhYmFzZUVycm9yLmgiCisjaW5jbHVkZSAiV2ViSURCS2V5UmFuZ2Uu
aCIKICNpbmNsdWRlICJXZWJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIldlYklEQlRyYW5z
YWN0aW9uLmgiCiAKQEAgLTEwOSw2ICsxMTEsNTIgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQ
cm94eTo6YWJvcnQoaW50NjRfdCB0cmFuc2FjdGlvbklkKQogICAgIG1fd2ViSURCRGF0YWJhc2Ut
PmFib3J0KHRyYW5zYWN0aW9uSWQpOwogfQogCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZFByb3h5
OjpvcGVuQ3Vyc29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCB1bnNp
Z25lZCBzaG9ydCBkaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUgdGFza1R5cGUsIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit7CisgICAgbV93ZWJJREJEYXRhYmFz
ZS0+b3BlbkN1cnNvcih0cmFuc2FjdGlvbklkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlS
YW5nZSwgc3RhdGljX2Nhc3Q8V2ViSURCQ3Vyc29yOjpEaXJlY3Rpb24+KGRpcmVjdGlvbiksIGtl
eU9ubHksIHN0YXRpY19jYXN0PFdlYklEQkRhdGFiYXNlOjpUYXNrVHlwZT4odGFza1R5cGUpLCBu
ZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpKTsKK30KKwordm9pZCBJREJEYXRhYmFz
ZUJhY2tlbmRQcm94eTo6Y291bnQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFu
Z2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit7CisgICAgaWYgKG1fd2Vi
SURCRGF0YWJhc2UpCisgICAgICAgIG1fd2ViSURCRGF0YWJhc2UtPmNvdW50KHRyYW5zYWN0aW9u
SWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtleVJhbmdlLCBuZXcgV2ViSURCQ2FsbGJhY2tz
SW1wbChjYWxsYmFja3MpKTsKK30KKwordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Z2V0
KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGlu
ZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBib29sIGtleU9ubHksIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit7CisgICAgaWYgKG1fd2ViSURCRGF0
YWJhc2UpCisgICAgICAgIG1fd2ViSURCRGF0YWJhc2UtPmdldCh0cmFuc2FjdGlvbklkLCBvYmpl
Y3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5nZSwga2V5T25seSwgbmV3IFdlYklEQkNhbGxiYWNr
c0ltcGwoY2FsbGJhY2tzKSk7Cit9CisKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OnB1
dChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBidWZmZXIsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFB1dE1vZGUgcHV0
TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgY29uc3QgVmVjdG9yPGlu
dDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mIGluZGV4S2V5cykKK3sK
KyAgICBpZiAobV93ZWJJREJEYXRhYmFzZSkKKyAgICAgICAgbV93ZWJJREJEYXRhYmFzZS0+cHV0
KHRyYW5zYWN0aW9uSWQsIG9iamVjdFN0b3JlSWQsIGJ1ZmZlciwga2V5LCBzdGF0aWNfY2FzdDxX
ZWJJREJEYXRhYmFzZTo6UHV0TW9kZT4ocHV0TW9kZSksIG5ldyBXZWJJREJDYWxsYmFja3NJbXBs
KGNhbGxiYWNrcyksIGluZGV4SWRzLCBpbmRleEtleXMpOworfQorCit2b2lkIElEQkRhdGFiYXNl
QmFja2VuZFByb3h5OjpzZXRJbmRleEtleXMoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBjb25zdCBWZWN0
b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYgaW5kZXhLZXlz
KQoreworICAgIGlmIChtX3dlYklEQkRhdGFiYXNlKQorICAgICAgICBtX3dlYklEQkRhdGFiYXNl
LT5zZXRJbmRleEtleXModHJhbnNhY3Rpb25JZCwgb2JqZWN0U3RvcmVJZCwgcHJpbWFyeUtleSwg
aW5kZXhJZHMsIGluZGV4S2V5cyk7Cit9CisKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6
OnNldEluZGV4ZXNSZWFkeShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcykKK3sKKyAgICBpZiAobV93ZWJJ
REJEYXRhYmFzZSkKKyAgICAgICAgbV93ZWJJREJEYXRhYmFzZS0+c2V0SW5kZXhlc1JlYWR5KHRy
YW5zYWN0aW9uSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWRzKTsKK30KKwordm9pZCBJREJEYXRh
YmFzZUJhY2tlbmRQcm94eTo6ZGVsZXRlUmFuZ2UoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQoreworICAgIGlmIChtX3dlYklEQkRhdGFi
YXNlKQorICAgICAgICBtX3dlYklEQkRhdGFiYXNlLT5kZWxldGVSYW5nZSh0cmFuc2FjdGlvbklk
LCBvYmplY3RTdG9yZUlkLCBrZXlSYW5nZSwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJh
Y2tzKSk7Cit9CisKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNsZWFyKGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzKQoreworICAgIGlmIChtX3dlYklEQkRhdGFiYXNlKQorICAgICAgICBt
X3dlYklEQkRhdGFiYXNlLT5jbGVhcih0cmFuc2FjdGlvbklkLCBvYmplY3RTdG9yZUlkLCBuZXcg
V2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpKTsKK30KIAogdm9pZCBJREJEYXRhYmFzZUJh
Y2tlbmRQcm94eTo6Y2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJv
eHkuaAppbmRleCA4OGI5Y2NkMjc5MDA4ZGZhZTIzNzEwZmQ2ODE3OGYyZjdlM2Y1YTU5Li41NWQw
NDc1MzQ0YzVmOGExMDljNDAxZjRiNTlhODZmN2U2NDVlZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKQEAgLTU0LDYg
KzU0LDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0KGludDY0X3QpOwogICAg
IHZpcnR1YWwgdm9pZCBhYm9ydChpbnQ2NF90KTsKIAorICAgIHZpcnR1YWwgdm9pZCBnZXQoaW50
NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJ
ZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXlSYW5nZT4sIGJvb2wga2V5T25seSwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
cHV0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIHZhbHVlLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4sIFB1dE1v
ZGUsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgY29uc3QgVmVjdG9yPGludDY0
X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0SW5kZXhLZXlzKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4gcHJwUHJpbWFyeUtleSwg
Y29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4m
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhlc1JlYWR5KGludDY0X3QgdHJh
bnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4m
IGluZGV4SWRzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihpbnQ2NF90
IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OklEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9u
LCBib29sIGtleU9ubHksIFRhc2tUeXBlLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNr
cz4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb3VudChpbnQ2NF90IHRyYW5zYWN0aW9u
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPFdl
YkNvcmU6OklEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+KSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlUmFuZ2UoaW50NjRfdCB0cmFuc2FjdGlv
bklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFu
Z2U+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4pIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBjbGVhcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+KSBPVkVSUklERTsKKwogcHJp
dmF0ZToKICAgICBJREJEYXRhYmFzZUJhY2tlbmRQcm94eShQYXNzT3duUHRyPFdlYklEQkRhdGFi
YXNlPik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRh
dGFiYXNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFz
ZUltcGwuY3BwCmluZGV4IDNhMGE5NDQ2YmMyYzNjYjgwZGM0ZGY1ZGE2Njk3M2IxNTExN2U4NzMu
LmNhNjE2MmE2YjM4ODI3MGU1MmE0ODFmNjE0YWUwN2ExNGQ4MzFjYWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcApAQCAtMzIsMTEg
KzMyLDEzIEBACiAjaW5jbHVkZSAiSURCQ2FsbGJhY2tzUHJveHkuaCIKICNpbmNsdWRlICJJREJE
YXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNr
c1Byb3h5LmgiCisjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKICNpbmNsdWRlICJJREJNZXRhZGF0
YS5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1
ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIldlYklEQkNh
bGxiYWNrcy5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgiCisjaW5jbHVk
ZSAiV2ViSURCS2V5UmFuZ2UuaCIKICNpbmNsdWRlICJXZWJJREJNZXRhZGF0YS5oIgogI2luY2x1
ZGUgIldlYklEQk9iamVjdFN0b3JlSW1wbC5oIgogI2luY2x1ZGUgIldlYklEQlRyYW5zYWN0aW9u
SW1wbC5oIgpAQCAtMTI2LDYgKzEyOCw4OSBAQCB2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6Y29t
bWl0KGxvbmcgbG9uZyB0cmFuc2FjdGlvbklkKQogICAgICAgICBtX2RhdGFiYXNlQmFja2VuZC0+
Y29tbWl0KHRyYW5zYWN0aW9uSWQpOwogfQogCisKK3ZvaWQgV2ViSURCRGF0YWJhc2VJbXBsOjpv
cGVuQ3Vyc29yKGxvbmcgbG9uZyB0cmFuc2FjdGlvbklkLCBsb25nIGxvbmcgb2JqZWN0U3RvcmVJ
ZCwgbG9uZyBsb25nIGluZGV4SWQsIGNvbnN0IFdlYklEQktleVJhbmdlJiBrZXlSYW5nZSwgdW5z
aWduZWQgc2hvcnQgZGlyZWN0aW9uLCBib29sIGtleU9ubHksIFRhc2tUeXBlIHRhc2tUeXBlLCBX
ZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcykKK3sKKyAgICBpZiAobV9kYXRhYmFzZUJhY2tlbmQp
CisgICAgICAgIG1fZGF0YWJhc2VCYWNrZW5kLT5vcGVuQ3Vyc29yKHRyYW5zYWN0aW9uSWQsIG9i
amVjdFN0b3JlSWQsIGluZGV4SWQsIGtleVJhbmdlLCBzdGF0aWNfY2FzdDxJREJDdXJzb3I6OkRp
cmVjdGlvbj4oZGlyZWN0aW9uKSwga2V5T25seSwgc3RhdGljX2Nhc3Q8SURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlOjpUYXNrVHlwZT4odGFza1R5cGUpLCBJREJDYWxsYmFja3NQcm94eTo6Y3Jl
YXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpKTsKK30KKwordm9pZCBXZWJJREJEYXRhYmFzZUltcGw6
OmNvdW50KGxvbmcgbG9uZyB0cmFuc2FjdGlvbklkLCBsb25nIGxvbmcgb2JqZWN0U3RvcmVJZCwg
bG9uZyBsb25nIGluZGV4SWQsIGNvbnN0IFdlYklEQktleVJhbmdlJiBrZXlSYW5nZSwgV2ViSURC
Q2FsbGJhY2tzKiBjYWxsYmFja3MpCit7CisgICAgaWYgKG1fZGF0YWJhc2VCYWNrZW5kKQorICAg
ICAgICBtX2RhdGFiYXNlQmFja2VuZC0+Y291bnQodHJhbnNhY3Rpb25JZCwgb2JqZWN0U3RvcmVJ
ZCwgaW5kZXhJZCwga2V5UmFuZ2UsIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIo
Y2FsbGJhY2tzKSkpOworfQorCit2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6Z2V0KGxvbmcgbG9u
ZyB0cmFuc2FjdGlvbklkLCBsb25nIGxvbmcgb2JqZWN0U3RvcmVJZCwgbG9uZyBsb25nIGluZGV4
SWQsIGNvbnN0IFdlYklEQktleVJhbmdlJiBrZXlSYW5nZSwgYm9vbCBrZXlPbmx5LCBXZWJJREJD
YWxsYmFja3MqIGNhbGxiYWNrcykKK3sKKyAgICBpZiAobV9kYXRhYmFzZUJhY2tlbmQpCisgICAg
ICAgIG1fZGF0YWJhc2VCYWNrZW5kLT5nZXQodHJhbnNhY3Rpb25JZCwgb2JqZWN0U3RvcmVJZCwg
aW5kZXhJZCwga2V5UmFuZ2UsIGtleU9ubHksIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRv
cHRQdHIoY2FsbGJhY2tzKSkpOworfQorCit2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6cHV0KGxv
bmcgbG9uZyB0cmFuc2FjdGlvbklkLCBsb25nIGxvbmcgb2JqZWN0U3RvcmVJZCwgY29uc3QgV2Vi
VmVjdG9yPHVuc2lnbmVkIGNoYXI+JiB2YWx1ZSwgY29uc3QgV2ViSURCS2V5JiBrZXksIFB1dE1v
ZGUgcHV0TW9kZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlZlY3Rvcjxs
b25nIGxvbmc+JiB3ZWJJbmRleElkcywgY29uc3QgV2ViVmVjdG9yPFdlYkluZGV4S2V5cz4mIHdl
YkluZGV4S2V5cykKK3sKKyAgICBpZiAoIW1fZGF0YWJhc2VCYWNrZW5kKQorICAgICAgICByZXR1
cm47CisKKyAgICBBU1NFUlQod2ViSW5kZXhJZHMuc2l6ZSgpID09IHdlYkluZGV4S2V5cy5zaXpl
KCkpOworICAgIFZlY3RvcjxpbnQ2NF90PiBpbmRleElkcyh3ZWJJbmRleElkcy5zaXplKCkpOwor
ICAgIFZlY3RvcjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U6OkluZGV4S2V5cz4gaW5k
ZXhLZXlzKHdlYkluZGV4S2V5cy5zaXplKCkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB3ZWJJbmRleElkcy5zaXplKCk7ICsraSkgeworICAgICAgICBpbmRleElkc1tpXSA9IHdlYklu
ZGV4SWRzW2ldOworICAgICAgICBWZWN0b3I8UmVmUHRyPElEQktleT4gPiBpbmRleEtleUxpc3Qo
d2ViSW5kZXhLZXlzW2ldLnNpemUoKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwg
d2ViSW5kZXhLZXlzW2ldLnNpemUoKTsgKytqKQorICAgICAgICAgICAgaW5kZXhLZXlMaXN0W2pd
ID0gd2ViSW5kZXhLZXlzW2ldW2pdOworICAgICAgICBpbmRleEtleXNbaV0gPSBpbmRleEtleUxp
c3Q7CisgICAgfQorCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHZhbHVlQnVmZmVyOworICAgIHZhbHVl
QnVmZmVyLmFwcGVuZCh2YWx1ZS5kYXRhKCksIHZhbHVlLnNpemUoKSk7CisgICAgbV9kYXRhYmFz
ZUJhY2tlbmQtPnB1dCh0cmFuc2FjdGlvbklkLCBvYmplY3RTdG9yZUlkLCB2YWx1ZUJ1ZmZlciwg
a2V5LCBzdGF0aWNfY2FzdDxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlB1dE1vZGU+KHB1
dE1vZGUpLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpLCBp
bmRleElkcywgaW5kZXhLZXlzKTsKK30KKwordm9pZCBXZWJJREJEYXRhYmFzZUltcGw6OnNldElu
ZGV4S2V5cyhsb25nIGxvbmcgdHJhbnNhY3Rpb25JZCwgbG9uZyBsb25nIG9iamVjdFN0b3JlSWQs
IGNvbnN0IFdlYklEQktleSYgcHJpbWFyeUtleSwgY29uc3QgV2ViVmVjdG9yPGxvbmcgbG9uZz4m
IHdlYkluZGV4SWRzLCBjb25zdCBXZWJWZWN0b3I8V2ViSW5kZXhLZXlzPiYgd2ViSW5kZXhLZXlz
KQoreworICAgIGlmICghbV9kYXRhYmFzZUJhY2tlbmQpCisgICAgICAgIHJldHVybjsKKworICAg
IEFTU0VSVCh3ZWJJbmRleElkcy5zaXplKCkgPT0gd2ViSW5kZXhLZXlzLnNpemUoKSk7CisgICAg
VmVjdG9yPGludDY0X3Q+IGluZGV4SWRzKHdlYkluZGV4SWRzLnNpemUoKSk7CisgICAgVmVjdG9y
PElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZTo6SW5kZXhLZXlzPiBpbmRleEtleXMod2Vi
SW5kZXhLZXlzLnNpemUoKSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYkluZGV4
SWRzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGluZGV4SWRzW2ldID0gd2ViSW5kZXhJZHNbaV07
CisgICAgICAgIFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+IGluZGV4S2V5TGlzdCh3ZWJJbmRleEtl
eXNbaV0uc2l6ZSgpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCB3ZWJJbmRleEtl
eXNbaV0uc2l6ZSgpOyArK2opCisgICAgICAgICAgICBpbmRleEtleUxpc3Rbal0gPSB3ZWJJbmRl
eEtleXNbaV1bal07CisgICAgICAgIGluZGV4S2V5c1tpXSA9IGluZGV4S2V5TGlzdDsKKyAgICB9
CisgICAgbV9kYXRhYmFzZUJhY2tlbmQtPnNldEluZGV4S2V5cyh0cmFuc2FjdGlvbklkLCBvYmpl
Y3RTdG9yZUlkLCBwcmltYXJ5S2V5LCBpbmRleElkcywgaW5kZXhLZXlzKTsKK30KKwordm9pZCBX
ZWJJREJEYXRhYmFzZUltcGw6OnNldEluZGV4ZXNSZWFkeShsb25nIGxvbmcgdHJhbnNhY3Rpb25J
ZCwgbG9uZyBsb25nIG9iamVjdFN0b3JlSWQsIGNvbnN0IFdlYlZlY3Rvcjxsb25nIGxvbmc+JiB3
ZWJJbmRleElkcykKK3sKKyAgICBpZiAoIW1fZGF0YWJhc2VCYWNrZW5kKQorICAgICAgICByZXR1
cm47CisKKyAgICBWZWN0b3I8aW50NjRfdD4gaW5kZXhJZHMod2ViSW5kZXhJZHMuc2l6ZSgpKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYkluZGV4SWRzLnNpemUoKTsgKytpKQorICAg
ICAgICBpbmRleElkc1tpXSA9IHdlYkluZGV4SWRzW2ldOworICAgIG1fZGF0YWJhc2VCYWNrZW5k
LT5zZXRJbmRleGVzUmVhZHkodHJhbnNhY3Rpb25JZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZHMp
OworfQorCit2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6ZGVsZXRlUmFuZ2UobG9uZyBsb25nIHRy
YW5zYWN0aW9uSWQsIGxvbmcgbG9uZyBvYmplY3RTdG9yZUlkLCBjb25zdCBXZWJJREJLZXlSYW5n
ZSYga2V5UmFuZ2UsIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzKQoreworICAgIGlmIChtX2Rh
dGFiYXNlQmFja2VuZCkKKyAgICAgICAgbV9kYXRhYmFzZUJhY2tlbmQtPmRlbGV0ZVJhbmdlKHRy
YW5zYWN0aW9uSWQsIG9iamVjdFN0b3JlSWQsIGtleVJhbmdlLCBJREJDYWxsYmFja3NQcm94eTo6
Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpKTsKK30KKwordm9pZCBXZWJJREJEYXRhYmFzZUlt
cGw6OmNsZWFyKGxvbmcgbG9uZyB0cmFuc2FjdGlvbklkLCBsb25nIGxvbmcgb2JqZWN0U3RvcmVJ
ZCwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MpCit7CisgICAgaWYgKG1fZGF0YWJhc2VCYWNr
ZW5kKQorICAgICAgICBtX2RhdGFiYXNlQmFja2VuZC0+Y2xlYXIodHJhbnNhY3Rpb25JZCwgb2Jq
ZWN0U3RvcmVJZCwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFja3Mp
KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJEYXRhYmFzZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFi
YXNlSW1wbC5oCmluZGV4IDNiOTc3MjgxYTQwZThlN2MyYWUyODVjMTFiYzIxZTk4MTNjYzRjZGUu
LmFlZTc2ZDNlMjczYjRlMGU5MDkzMTk3NzIyMTI5N2ZjMjNkNTBhZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oCkBAIC0yOSw5ICsyOSwx
MCBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiSURCRGF0YWJh
c2VDYWxsYmFja3NQcm94eS5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgogI2lu
Y2x1ZGUgIldlYkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZS5oIgor
I2luY2x1ZGUgIldlYklEQlRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29t
bW9uLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAKQEAgLTYyLDYgKzYzLDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQo
bG9uZyBsb25nIHRyYW5zYWN0aW9uSWQpOwogICAgIHZpcnR1YWwgdm9pZCBjb21taXQobG9uZyBs
b25nIHRyYW5zYWN0aW9uSWQpOwogCisgICAgdmlydHVhbCB2b2lkIGdldChsb25nIGxvbmcgdHJh
bnNhY3Rpb25JZCwgbG9uZyBsb25nIG9iamVjdFN0b3JlSWQsIGxvbmcgbG9uZyBpbmRleElkLCBj
b25zdCBXZWJJREJLZXlSYW5nZSYsIGJvb2wga2V5T25seSwgV2ViSURCQ2FsbGJhY2tzKikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHB1dChsb25nIGxvbmcgdHJhbnNhY3Rpb25JZCwgbG9u
ZyBsb25nIG9iamVjdFN0b3JlSWQsIGNvbnN0IFdlYlZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYgdmFs
dWUsIGNvbnN0IFdlYklEQktleSYsIFB1dE1vZGUsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdl
YlZlY3Rvcjxsb25nIGxvbmc+JiBpbmRleElkcywgY29uc3QgV2ViVmVjdG9yPFdlYkluZGV4S2V5
cz4mKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhLZXlzKGxvbmcgbG9uZyB0
cmFuc2FjdGlvbklkLCBsb25nIGxvbmcgb2JqZWN0U3RvcmVJZCwgY29uc3QgV2ViSURCS2V5Jiwg
Y29uc3QgV2ViVmVjdG9yPGxvbmcgbG9uZz4mIGluZGV4SWRzLCBjb25zdCBXZWJWZWN0b3I8V2Vi
SW5kZXhLZXlzPiYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleGVzUmVhZHko
bG9uZyBsb25nIHRyYW5zYWN0aW9uSWQsIGxvbmcgbG9uZyBvYmplY3RTdG9yZUlkLCBjb25zdCBX
ZWJWZWN0b3I8bG9uZyBsb25nPiYgaW5kZXhJZHMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBvcGVuQ3Vyc29yKGxvbmcgbG9uZyB0cmFuc2FjdGlvbklkLCBsb25nIGxvbmcgb2JqZWN0U3Rv
cmVJZCwgbG9uZyBsb25nIGluZGV4SWQsIGNvbnN0IFdlYklEQktleVJhbmdlJiwgdW5zaWduZWQg
c2hvcnQgZGlyZWN0aW9uLCBib29sIGtleU9ubHksIFRhc2tUeXBlLCBXZWJJREJDYWxsYmFja3Mq
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY291bnQobG9uZyBsb25nIHRyYW5zYWN0aW9u
SWQsIGxvbmcgbG9uZyBvYmplY3RTdG9yZUlkLCBsb25nIGxvbmcgaW5kZXhJZCwgY29uc3QgV2Vi
SURCS2V5UmFuZ2UmLCBXZWJJREJDYWxsYmFja3MqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlUmFuZ2UobG9uZyBsb25nIHRyYW5zYWN0aW9uSWQsIGxvbmcgbG9uZyBvYmplY3RT
dG9yZUlkLCBjb25zdCBXZWJJREJLZXlSYW5nZSYsIFdlYklEQkNhbGxiYWNrcyopIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBjbGVhcihsb25nIGxvbmcgdHJhbnNhY3Rpb25JZCwgbG9uZyBs
b25nIG9iamVjdFN0b3JlSWQsIFdlYklEQkNhbGxiYWNrcyopIE9WRVJSSURFOworCiBwcml2YXRl
OgogICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4g
bV9kYXRhYmFzZUJhY2tlbmQ7CiAgICAgV1RGOjpSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NQ
cm94eT4gbV9kYXRhYmFzZUNhbGxiYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCmluZGV4IDA4NDkwMzQ2NTU4
ZDYwOTQ3YTg0ODA3MzQ2Y2IyNTgxZTI2ZWIxMzcuLjExNzJlYWIwYjM3NTJiNGM0Njc0MGVkMWM1
YTAzYjI2M2NmZDZjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
SURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcApAQCAtMTU1LDE3ICsxNTUsMjYgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5h
bWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpIHsgfQogICAgIC8vIEZJWE1FOiBS
ZW1vdmUgdGhpcyBtZXRob2QgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMzkyMy4KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlPiBjcmVhdGVUcmFuc2FjdGlvbihpbnQ2NF90LCBjb25zdCBWZWN0b3I8aW50NjRf
dD4mLCBJREJUcmFuc2FjdGlvbjo6TW9kZSkgeyByZXR1cm4gMDsgfQotICAgIHZvaWQgY3JlYXRl
VHJhbnNhY3Rpb24oaW50NjRfdCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGNv
bnN0IFZlY3RvcjxpbnQ2NF90PiYsIHVuc2lnbmVkIHNob3J0IG1vZGUpIHsgfQorICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZVRyYW5z
YWN0aW9uKGludDY0X3QsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYsIElEQlRyYW5zYWN0aW9uOjpN
b2RlKSBPVkVSUklERSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRyYW5z
YWN0aW9uKGludDY0X3QsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBjb25zdCBW
ZWN0b3I8aW50NjRfdD4mLCB1bnNpZ25lZCBzaG9ydCBtb2RlKSBPVkVSUklERSB7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBjbG9zZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPikKKyAg
ICB2aXJ0dWFsIHZvaWQgY2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pIE9W
RVJSSURFCiAgICAgewogICAgICAgICBtX3dhc0Nsb3NlQ2FsbGVkID0gdHJ1ZTsKICAgICAgICAg
bV93ZWJEYXRhYmFzZS5jbG9zZSgpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBhYm9ydChp
bnQ2NF90IHRyYW5zYWN0aW9uSWQpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBjb21taXQoaW50NjRf
dCB0cmFuc2FjdGlvbklkKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoaW50NjRfdCB0cmFu
c2FjdGlvbklkKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0KGludDY0X3Qg
dHJhbnNhY3Rpb25JZCkgT1ZFUlJJREUgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNv
cihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBp
bmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9u
LCBib29sIGtleU9ubHksIFRhc2tUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pIE9WRVJS
SURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjb3VudChpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgaW5kZXhJZCwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZ2V0KGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBpbnQ2NF90
IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBib29sIGtleU9ubHksIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIHB1
dChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQdXRNb2RlLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3Rv
cjxJbmRleEtleXM+JikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldEluZGV4S2V5
cyhpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0
cjxJREJLZXk+IHBycFByaW1hcnlLZXksIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMs
IGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lk
IHNldEluZGV4ZXNSZWFkeShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcykgT1ZFUlJJREUgeyB9CisgICAg
dmlydHVhbCB2b2lkIGRlbGV0ZVJhbmdlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+KSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoaW50NjRfdCB0cmFu
c2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PikgT1ZFUlJJREUgeyB9CiAKIHByaXZhdGU6CiAgICAgTW9ja0lEQkRhdGFiYXNlQmFja2VuZFBy
b3h5KFdlYklEQkRhdGFiYXNlSW1wbCYgd2ViRGF0YWJhc2UpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>