<?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>94972</bug_id>
          
          <creation_ts>2012-08-24 13:58:14 -0700</creation_ts>
          <short_desc>IndexedDB: Remove IDBDatabase.setVersion API</short_desc>
          <delta_ts>2012-11-27 12:46:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>523.x (Safari 3)</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>WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>101810</dependson>
    
    <dependson>102457</dependson>
    
    <dependson>102458</dependson>
    
    <dependson>102713</dependson>
    
    <dependson>102850</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="David Grogan">dgrogan</assigned_to>
          <cc>abarth</cc>
    
    <cc>alecflett</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>ojan</cc>
    
    <cc>syoichi</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>704410</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-08-24 13:58:14 -0700</bug_when>
    <thetext>The IDBDatabase.setVersion() API is from an older version of the spec, and maintained for compatibility until sites using the Chromium implementation of IndexedDB have had a chance to update. The new IDBFactory.open(name, version) / &quot;upgradeneeded&quot; event model is the new way to version databases.

Once a grace period has passed, we should remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771213</commentid>
    <comment_count>1</comment_count>
      <attachid>175078</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-11-19 16:52:16 -0800</bug_when>
    <thetext>Created attachment 175078
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771215</commentid>
    <comment_count>2</comment_count>
      <attachid>175080</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-11-19 16:54:08 -0800</bug_when>
    <thetext>Created attachment 175080
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771229</commentid>
    <comment_count>3</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-11-19 17:01:29 -0800</bug_when>
    <thetext>This patch leaves some setVersion artifacts in IDBDatabaseBackendImpl, that class is pretty fragile. There are also some remnants in the webkit api that can&apos;t be taken out until chromium code is updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771455</commentid>
    <comment_count>4</comment_count>
      <attachid>175080</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-19 21:10:12 -0800</bug_when>
    <thetext>Comment on attachment 175080
Patch

Attachment 175080 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14906449

New failing tests:
storage/indexeddb/pending-version-change-on-exit.html
http/tests/inspector/indexeddb/database-data.html
http/tests/inspector/indexeddb/database-structure.html
http/tests/inspector/indexeddb/resources-panel.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771952</commentid>
    <comment_count>5</comment_count>
      <attachid>175080</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-20 09:58:25 -0800</bug_when>
    <thetext>Comment on attachment 175080
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:314
&gt; +    ASSERT(m_pendingSetVersionCalls.isEmpty());

Why keep this?

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.h:110
&gt; +    // FIXME: Remove these.

And these? I don&apos;t see anything remaining that creates them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772334</commentid>
    <comment_count>6</comment_count>
      <attachid>175312</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-11-20 17:43:22 -0800</bug_when>
    <thetext>Created attachment 175312
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772335</commentid>
    <comment_count>7</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-11-20 17:44:46 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 175080 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175080&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:314
&gt; &gt; +    ASSERT(m_pendingSetVersionCalls.isEmpty());
&gt; 
&gt; Why keep this?
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.h:110
&gt; &gt; +    // FIXME: Remove these.
&gt; 
&gt; And these? I don&apos;t see anything remaining that creates them.

Removed both.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776872</commentid>
    <comment_count>8</comment_count>
      <attachid>175312</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-27 09:39:56 -0800</bug_when>
    <thetext>Comment on attachment 175312
Patch

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

&gt; LayoutTests/ChangeLog:14
&gt; +        IndexedDB: remove setVersion from inspector tests

Looks like this patch was based on another (leading to two changelog entries and the extra diff below). Rebase please?

&gt; LayoutTests/storage/indexeddb/removed-expected.txt:9
&gt; +PASS &apos;setVersion&apos; in IDBDatabase.prototype is false

FYI this will need rebasing as nearby lines have changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776954</commentid>
    <comment_count>9</comment_count>
      <attachid>176296</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-11-27 10:39:22 -0800</bug_when>
    <thetext>Created attachment 176296
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776995</commentid>
    <comment_count>10</comment_count>
      <attachid>176296</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-27 11:10:49 -0800</bug_when>
    <thetext>Comment on attachment 176296
Patch

lgtm, w00t! (looks like it will need another rebase on top of r135856 though)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777004</commentid>
    <comment_count>11</comment_count>
      <attachid>176306</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-11-27 11:15:05 -0800</bug_when>
    <thetext>Created attachment 176306
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777032</commentid>
    <comment_count>12</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-11-27 11:32:33 -0800</bug_when>
    <thetext>Tony, could you review this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777135</commentid>
    <comment_count>13</comment_count>
      <attachid>176306</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-27 12:46:30 -0800</bug_when>
    <thetext>Comment on attachment 176306
Patch

Clearing flags on attachment: 176306

Committed r135904: &lt;http://trac.webkit.org/changeset/135904&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777136</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-27 12:46:35 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175078</attachid>
            <date>2012-11-19 16:52:16 -0800</date>
            <delta_ts>2012-11-19 16:54:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94972-20121119165006.patch</filename>
            <type>text/plain</type>
            <size>29146</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDA5M2MzMTA1MWI1Yzk1
ZjcyYmRjNjUyZTIwOGZmNmI4MjgzMDY3Mi4uYWM5M2M2YTgxYzE3Yjk1YzYxMDE5ZjdjNjE0YmUz
ZmJhMzIzODE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTExLTE5ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFJl
bW92ZSBJREJEYXRhYmFzZS5zZXRWZXJzaW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ5NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0cyAtIHJlbW92ZWQuaHRtbAorCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmg6CisgICAgICAgIChJREJDYWxsYmFja3Mp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlOjpJREJEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2UuaDoKKyAgICAgICAgKElEQkRhdGFiYXNlKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5pZGw6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwcm9jZXNzUGVuZGluZ0NhbGxzKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6CisgICAgICAgIChJREJE
YXRhYmFzZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2UuaDoKKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHA6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oOgorCiAyMDEyLTExLTE5ICBFcmlr
IEFydmlkc3NvbiAgPGFydkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVXBkYXRlIERPTUV4Y2Vw
dGlvbiBuYW1lOiBUaW1lb3V0RXJyb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMGFk
MWI5NjRhMzlkZDE0NTc5ZGYzOWU0NThjMjA1MzAwZTk4MDlhZi4uY2FkNjJlMmUxZDQzMmNjYzM1
MmQ5ZmM4Yjk1NWNlZjBiOTRjOTI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxMi0xMS0xOSAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBSZW1vdmUgSURCRGF0YWJhc2Uuc2V0VmVyc2lvbiBB
UEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0OTcy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMv
SURCQ2FsbGJhY2tzUHJveHkuY3BwOgorICAgICAgICAqIHNyYy9JREJDYWxsYmFja3NQcm94eS5o
OgorICAgICAgICAoSURCQ2FsbGJhY2tzUHJveHkpOgorICAgICAgICAqIHNyYy9JREJEYXRhYmFz
ZUJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5
Lmg6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRQcm94eSk6CisgICAgICAgICogc3JjL1dl
YklEQkNhbGxiYWNrc0ltcGwuY3BwOgorICAgICAgICAqIHNyYy9XZWJJREJDYWxsYmFja3NJbXBs
Lmg6CisgICAgICAgIChXZWJJREJDYWxsYmFja3NJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViSURC
RGF0YWJhc2VJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmg6Cisg
ICAgICAgIChXZWJJREJEYXRhYmFzZUltcGwpOgorCiAyMDEyLTExLTE5ICBLaWhvbmcgS3dvbiAg
PGtpaG9uZy5rd29uQHNhbXN1bmcuY29tPgogCiAgICAgICAgIEFkZCBQUk9YSU1JVFlfRVZFTlRT
IGZlYXR1cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJh
Y2tzLmgKaW5kZXggZDE1MTE0NTRkODE4OTcwYTIzZjVkZWQ4YjYyMjgzMDczY2IxODI1NC4uYjg4
YjBjZGUzZjcyYWNkZWM4Mjc4OTBlNWMyODlhMDFiNjZlMjJjMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKQEAgLTU2LDggKzU2LDYgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4g
cHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KSA9IDA7CiAgICAg
Ly8gRnJvbSBJREJPYmplY3RTdG9yZS5hZGQoKS9wdXQoKSwgSURCSW5kZXguZ2V0S2V5KCkKICAg
ICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PikgPSAwOwotICAgIC8v
IEZyb20gSURCRGF0YWJhc2Uuc2V0VmVyc2lvbigpCi0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
cyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pID0gMDsKICAgICAv
LyBGcm9tIElEQk9iamVjdFN0b3JlL0lEQkluZGV4LmdldCgpL2NvdW50KCksIGFuZCB2YXJpb3Vz
IG1ldGhvZHMgdGhhdCB5aWVsZCBudWxsL3VuZGVmaW5lZC4KICAgICB2aXJ0dWFsIHZvaWQgb25T
dWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPikgPSAwOwogICAgIC8vIEZy
b20gSURCT2JqZWN0U3RvcmUvSURCSW5kZXguZ2V0KCkgKHdpdGgga2V5IGluamVjdGlvbikKQEAg
LTcyLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1Jl
ZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+KSA9IDA7CiAgICAgLy8gRnJvbSBJREJDdXJzb3IuYWR2YW5j
ZSgpL2NvbnRpbnVlKCkKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aFByZWZldGNoKGNv
bnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiBrZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPElE
QktleT4gPiYgcHJpbWFyeUtleXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiA+JiB2YWx1ZXMpID0gMDsKLSAgICAvLyBGcm9tIElEQkZhY3Rvcnkub3BlbigpL2Rl
bGV0ZURhdGFiYXNlKCksIElEQkRhdGFiYXNlLnNldFZlcnNpb24oKQorICAgIC8vIEZyb20gSURC
RmFjdG9yeS5vcGVuKCkvZGVsZXRlRGF0YWJhc2UoKQogICAgIHZpcnR1YWwgdm9pZCBvbkJsb2Nr
ZWQoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tl
ZChpbnQ2NF90IGV4aXN0aW5nVmVyc2lvbikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAg
IC8vIEZyb20gSURCRmFjdG9yeS5vcGVuKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCBlNWVhNDFlMGE2MzAzNzBmMGQ4NmMzZTVm
ZDQxZTcyNmM3MmY2OGIxLi5kYTJjOWRhZTk0M2QzNzgyNWEzMDllNjIzNjk0MTcyNzg0NmJmMTIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2Uu
Y3BwCkBAIC02NCw3ICs2NCw2IEBAIElEQkRhdGFiYXNlOjpJREJEYXRhYmFzZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlCiAgICAgLCBtX2Ns
b3NlUGVuZGluZyhmYWxzZSkKICAgICAsIG1fY29udGV4dFN0b3BwZWQoZmFsc2UpCiAgICAgLCBt
X2RhdGFiYXNlQ2FsbGJhY2tzKGNhbGxiYWNrcykKLSAgICAsIG1fZGlkU3BhbUNvbnNvbGUoZmFs
c2UpCiB7CiAgICAgLy8gV2UgcGFzcyBhIHJlZmVyZW5jZSBvZiB0aGlzIG9iamVjdCBiZWZvcmUg
aXQgY2FuIGJlIGFkb3B0ZWQuCiAgICAgcmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCk7CkBAIC0y
MDIsMzAgKzIwMSw2IEBAIHZvaWQgSURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0
IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgfQogfQogCi1QYXNzUmVmUHRy
PElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0PiBJREJEYXRhYmFzZTo6c2V0VmVyc2lvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIEV4Y2VwdGlv
bkNvZGUmIGVjKQotewotICAgIGlmICghbV9kaWRTcGFtQ29uc29sZSkgewotICAgICAgICBTdHJp
bmcgY29uc29sZU1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlRoZSBzZXRWZXJzaW9uKCkgbWV0aG9k
IGlzIG5vbi1zdGFuZGFyZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBVc2UgdGhlIFwidXBncmFkZW5l
ZWRlZFwiIGV2ZW50IGluc3RlYWQuIik7Ci0gICAgICAgIGNvbnRleHQtPmFkZENvbnNvbGVNZXNz
YWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIFdhcm5pbmdNZXNzYWdlTGV2ZWws
IGNvbnNvbGVNZXNzYWdlKTsKLSAgICAgICAgbV9kaWRTcGFtQ29uc29sZSA9IHRydWU7Ci0gICAg
fQotCi0gICAgaWYgKHZlcnNpb24uaXNOdWxsKCkpIHsKLSAgICAgICAgZWMgPSBUeXBlRXJyb3I7
Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGlmIChtX3ZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbikgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJ
RF9TVEFURV9FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIFJlZlB0cjxJREJW
ZXJzaW9uQ2hhbmdlUmVxdWVzdD4gcmVxdWVzdCA9IElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0Ojpj
cmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIHZlcnNpb24pOwotICAgIEFTU0VS
VChtX2JhY2tlbmQpOwotICAgIG1fYmFja2VuZC0+c2V0VmVyc2lvbih2ZXJzaW9uLCByZXF1ZXN0
LCBtX2RhdGFiYXNlQ2FsbGJhY2tzLCBlYyk7Ci0gICAgcmV0dXJuIHJlcXVlc3Q7Ci19Ci0KIFBh
c3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2NvcGUsIGNv
bnN0IFN0cmluZyYgbW9kZVN0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFz
Y29wZS5zaXplKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZS5oCmluZGV4IGVlMmQyMzIzNGNmYTE3YTYwYmU0OGE0NmZiNzY2N2E2NjZkMDEwMjYu
LmI3ODk3MWIxMjA0Njg5MjU4MDA2NzViMDEwOTQ4YzBkMjlhZmE1NjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaApAQCAtNjgsNyArNjgsNiBA
QCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5n
JiBtb2RlLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4g
dHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYgbW9kZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgZGVsZXRlT2JqZWN0U3Rv
cmUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxJ
REJWZXJzaW9uQ2hhbmdlUmVxdWVzdD4gc2V0VmVyc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBjbG9z
ZSgpOwogCiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihhYm9ydCk7CkBAIC0x
MjksOCArMTI4LDYgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IG1fZW5x
dWV1ZWRFdmVudHM7CiAKICAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IG1fZGF0YWJh
c2VDYWxsYmFja3M7Ci0KLSAgICBib29sIG1fZGlkU3BhbUNvbnNvbGU7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZS5pZGwKaW5kZXggNGVmNjJhZjE4MzJiMTY5YzVkOWU1YmUyZDFhNDYzMTU4MWE3
MTI5MC4uMzAxOTI5N2YyYTRiYzhkNDUxMDc5OTU5MDc3OWNmNGZjMDMzZTI5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmlkbApAQCAtNDIs
OCArNDIsNiBAQAogICAgICAgICByYWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKICAgICB2
b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGluIERPTVN0cmluZyBuYW1lKQogICAgICAgICByYWlzZXMg
KElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dF0gSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qgc2V0VmVyc2lvbihpbiBET01TdHJpbmcgdmVy
c2lvbikKLSAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CiAgICAgW0NhbGxX
aXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKGlu
IERPTVN0cmluZ0xpc3Qgc3RvcmVOYW1lcywgaW4gW09wdGlvbmFsPURlZmF1bHRJc051bGxTdHJp
bmddIERPTVN0cmluZyBtb2RlKQogICAgICAgICByYWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9u
KTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCVHJhbnNhY3Rpb24g
dHJhbnNhY3Rpb24oaW4gc2VxdWVuY2U8U3RyaW5nPiBzdG9yZU5hbWVzLCBpbiBbT3B0aW9uYWw9
RGVmYXVsdElzTnVsbFN0cmluZ10gRE9NU3RyaW5nIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3Bw
CmluZGV4IGU4ZTE0M2Y0Nzg4NGUwMDdhMWEwZWVlNDQ1YThlNzkzNzFiZDg0M2MuLjUxNWI2YjBi
ODIyZjk3YmM2NjRmMDlhYWNhOTY3Yzg0ZGIzYjBmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3Bw
CkBAIC0yMzUsNjQgKzIzNSw2IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6ZGVsZXRl
T2JqZWN0U3RvcmVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwKICAgICB0cmFuc2Fj
dGlvbi0+ZGlkQ29tcGxldGVUYXNrRXZlbnRzKCk7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6c2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+
IHBycERhdGFiYXNlQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBSZWZQdHI8
SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7Ci0gICAgUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcyA9IHBycERhdGFiYXNlQ2FsbGJhY2tz
OwotICAgIGlmICghbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5jb250YWlucyhkYXRhYmFzZUNhbGxi
YWNrcykpIHsKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNy
ZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUiwgIkNvbm5lY3Rpb24gd2Fz
IGNsb3NlZCBiZWZvcmUgc2V0IHZlcnNpb24gdHJhbnNhY3Rpb24gd2FzIGNyZWF0ZWQiKSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgZm9yIChEYXRhYmFzZUNhbGxiYWNrc1NldDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmJlZ2luKCk7IGl0ICE9IG1f
ZGF0YWJhc2VDYWxsYmFja3NTZXQuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgLy8gRnJvbnQgZW5k
IGVuc3VyZXMgdGhlIGV2ZW50IGlzIG5vdCBmaXJlZCBhdCBjb25uZWN0aW9ucyB0aGF0IGhhdmUg
Y2xvc2VQZW5kaW5nIHNldC4KLSAgICAgICAgaWYgKCppdCAhPSBkYXRhYmFzZUNhbGxiYWNrcykK
LSAgICAgICAgICAgICgqaXQpLT5vblZlcnNpb25DaGFuZ2UodmVyc2lvbik7Ci0gICAgfQotICAg
IC8vIEZJWE1FOiBPbmx5IGZpcmUgb25CbG9ja2VkIGlmIHRoZXJlIGFyZSBvcGVuIGNvbm5lY3Rp
b25zIGFmdGVyIHRoZQotICAgIC8vIFZlcnNpb25DaGFuZ2VFdmVudHMgYXJlIHJlY2VpdmVkLCBu
b3QganVzdCBzZXQgdXAgdG8gZmlyZS4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzExMzAKLSAgICBpZiAoY29ubmVjdGlvbkNvdW50KCkgPiAxKSB7Ci0g
ICAgICAgIGNhbGxiYWNrcy0+b25CbG9ja2VkKCk7Ci0gICAgICAgIE93blB0cjxQZW5kaW5nU2V0
VmVyc2lvbkNhbGw+IHBlbmRpbmdTZXRWZXJzaW9uQ2FsbCA9IFBlbmRpbmdTZXRWZXJzaW9uQ2Fs
bDo6Y3JlYXRlKHZlcnNpb24sIGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MpOwotICAgICAg
ICBtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMuYXBwZW5kKHBlbmRpbmdTZXRWZXJzaW9uQ2FsbC5y
ZWxlYXNlKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX3J1bm5pbmdWZXJz
aW9uQ2hhbmdlVHJhbnNhY3Rpb24pIHsKLSAgICAgICAgT3duUHRyPFBlbmRpbmdTZXRWZXJzaW9u
Q2FsbD4gcGVuZGluZ1NldFZlcnNpb25DYWxsID0gUGVuZGluZ1NldFZlcnNpb25DYWxsOjpjcmVh
dGUodmVyc2lvbiwgY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcyk7Ci0gICAgICAgIG1fcGVu
ZGluZ1NldFZlcnNpb25DYWxscy5hcHBlbmQocGVuZGluZ1NldFZlcnNpb25DYWxsLnJlbGVhc2Uo
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBWZWN0b3I8aW50NjRfdD4gb2JqZWN0
U3RvcmVJZHM7Ci0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJh
bnNhY3Rpb25JbnRlcmZhY2UgPSB0aGlzLT50cmFuc2FjdGlvbihvYmplY3RTdG9yZUlkcywgSURC
VHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9t
KHRyYW5zYWN0aW9uSW50ZXJmYWNlLmdldCgpKTsKLSAgICBBU1NFUlQoIWVjKTsKLQotICAgIFJl
ZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZSA9IHRoaXM7Ci0gICAgaWYgKCF0
cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKAotICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNr
KCZJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRWZXJzaW9uSW50ZXJuYWwsIGRhdGFiYXNlLCB2
ZXJzaW9uLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSwKLSAgICAgICAgICAgIGNyZWF0ZUNhbGxi
YWNrVGFzaygmSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cmVzZXRWZXJzaW9uLCBkYXRhYmFzZSwg
bV9tZXRhZGF0YS52ZXJzaW9uLCBtX21ldGFkYXRhLmludFZlcnNpb24pKSkgewotICAgICAgICAv
LyBGSVhNRTogUmVtb3ZlIG9uZSBvZiB0aGUgZm9sbG93aW5nIGxpbmVzLgotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJB
TlNBQ1RJT05fSU5BQ1RJVkVfRVJSOwotICAgIH0KLX0KLQotdm9pZCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpzZXRWZXJzaW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgdmVy
c2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBwcnBUcmFuc2FjdGlvbikKLXsKLSAgICBSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBwcnBUcmFuc2FjdGlvbjsKLSAg
ICBpbnQ2NF90IGRhdGFiYXNlSWQgPSBkYXRhYmFzZS0+aWQoKTsKLSAgICBkYXRhYmFzZS0+bV9t
ZXRhZGF0YS52ZXJzaW9uID0gdmVyc2lvbjsKLSAgICBkYXRhYmFzZS0+bV9tZXRhZGF0YS5pbnRW
ZXJzaW9uID0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uOwotICAgIGlmICghZGF0
YWJhc2UtPm1fYmFja2luZ1N0b3JlLT51cGRhdGVJREJEYXRhYmFzZU1ldGFEYXRhKHRyYW5zYWN0
aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBkYXRhYmFzZUlkLCBkYXRhYmFzZS0+bV9t
ZXRhZGF0YS52ZXJzaW9uKSB8fCAhZGF0YWJhc2UtPm1fYmFja2luZ1N0b3JlLT51cGRhdGVJREJE
YXRhYmFzZUludFZlcnNpb24odHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCks
IGRhdGFiYXNlSWQsIGRhdGFiYXNlLT5tX21ldGFkYXRhLmludFZlcnNpb24pKSB7Ci0gICAgICAg
IFJlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBlcnJvciA9IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0
ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJFcnJvciB3cml0aW5nIGRhdGEg
dG8gc3RhYmxlIHN0b3JhZ2UuIik7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihlcnJvcik7
Ci0gICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydChlcnJvcik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U+KHRyYW5zYWN0aW9uKSk7Ci19Ci0KIHZvaWQgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6c2V0SW50VmVyc2lvbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlLCBpbnQ2NF90IHZlcnNp
b24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uKQogewogICAgIFJlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcyhwcnBDYWxsYmFja3MpOwpAQCAtMzY5LDE4ICszMTEsNyBAQCB2b2lkIElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OnByb2Nlc3NQZW5kaW5nQ2FsbHMoKQogICAgICAgICAvLyBG
YWxsIHRocm91Z2ggd2hlbiBjb21wbGV0ZSwgYXMgcGVuZGluZyBkZWxldGVzIG1heSBiZSAocGFy
dGlhbGx5KSB1bmJsb2NrZWQuCiAgICAgfQogCi0gICAgLy8gUGVuZGluZyBjYWxscyBtYXkgYmUg
cmVxdWV1ZWQgb3IgYWJvcnRlZAotICAgIERlcXVlPE93blB0cjxQZW5kaW5nU2V0VmVyc2lvbkNh
bGw+ID4gcGVuZGluZ1NldFZlcnNpb25DYWxsczsKLSAgICBtX3BlbmRpbmdTZXRWZXJzaW9uQ2Fs
bHMuc3dhcChwZW5kaW5nU2V0VmVyc2lvbkNhbGxzKTsKLSAgICB3aGlsZSAoIXBlbmRpbmdTZXRW
ZXJzaW9uQ2FsbHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgICAgICBPd25QdHI8UGVuZGluZ1NldFZlcnNpb25DYWxsPiBwZW5kaW5nU2V0VmVyc2lvbkNh
bGwgPSBwZW5kaW5nU2V0VmVyc2lvbkNhbGxzLnRha2VGaXJzdCgpOwotICAgICAgICBzZXRWZXJz
aW9uKHBlbmRpbmdTZXRWZXJzaW9uQ2FsbC0+dmVyc2lvbigpLCBwZW5kaW5nU2V0VmVyc2lvbkNh
bGwtPmNhbGxiYWNrcygpLCBwZW5kaW5nU2V0VmVyc2lvbkNhbGwtPmRhdGFiYXNlQ2FsbGJhY2tz
KCksIGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7Ci0gICAgfQotCi0gICAgLy8gSWYgdGhlcmUg
d2VyZSBhbnkgcGVuZGluZyBzZXQgdmVyc2lvbiBjYWxscywgd2UgYmV0dGVyIGhhdmUgc3RhcnRl
ZCBvbmUuCi0gICAgQVNTRVJUKG1fcGVuZGluZ1NldFZlcnNpb25DYWxscy5pc0VtcHR5KCkgfHwg
bV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKTsKKyAgICBBU1NFUlQobV9wZW5kaW5n
U2V0VmVyc2lvbkNhbGxzLmlzRW1wdHkoKSk7CiAKICAgICAvLyBtX3BlbmRpbmdTZXRWZXJzaW9u
Q2FsbHMgaXMgbm9uLWVtcHR5IGluIHR3byBjYXNlczoKICAgICAvLyAxKSBXaGVuIHR3byB2ZXJz
aW9uY2hhbmdlIHRyYW5zYWN0aW9ucyBhcmUgcmVxdWVzdGVkIHdoaWxlIGFub3RoZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFj
a2VuZEltcGwuaAppbmRleCBmMGY0OTM4ZDE3YmVhZDhjZDFkNDI1NGEwNzk4YjZkNmRlMzZiMTRm
Li4zYmFjN2JhOGJiNDk3OGMzOWI3NTZmYjBlM2JlNzIzODYyNzNiOTU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5k
SW1wbC5oCkBAIC02Myw3ICs2Myw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIElEQkRhdGFiYXNl
TWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IGlkLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQs
IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJz
aW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9u
KGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYsIHVuc2lnbmVkIHNob3J0KTsKICAgICB2aXJ0dWFsIHZv
aWQgY2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwogCkBAIC04NSw3ICs4
NCw2IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVPYmplY3RTdG9yZUludGVy
bmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw+LCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+KTsKICAgICBzdGF0aWMgdm9pZCBkZWxldGVPYmpl
Y3RTdG9yZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+
LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+KTsKLSAgICBzdGF0aWMgdm9p
ZCBzZXRWZXJzaW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4sIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+KTsK
ICAgICBzdGF0aWMgdm9pZCBzZXRJbnRWZXJzaW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4sIGludDY0X3QgdmVyc2lv
biwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJh
Y2tzPiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPik7CiAKICAgICAvLyBU
aGVzZSBhcmUgdXNlZCBhcyBzZXRWZXJzaW9uIHRyYW5zYWN0aW9uIGFib3J0IHRhc2tzLgpAQCAt
MTA5LDYgKzEwNyw3IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoU2V0PElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGwqPiBUcmFuc2FjdGlvblNldDsKICAgICBUcmFuc2FjdGlvblNldCBtX3Ry
YW5zYWN0aW9uczsKIAorICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlc2UuCiAgICAgY2xhc3MgUGVu
ZGluZ1NldFZlcnNpb25DYWxsOwogICAgIERlcXVlPE93blB0cjxQZW5kaW5nU2V0VmVyc2lvbkNh
bGw+ID4gbV9wZW5kaW5nU2V0VmVyc2lvbkNhbGxzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZS5oCmluZGV4IDlhYWI1NjQ0YmE0ODYzYzA3YTY3ZTQxZDkwN2Y0MWQxZDE4ZTQ4MzUuLmU2ZTVl
ODcyMTQxOTIxYWFkNWFjNjc0ZjcwZjVjZjBlYTUzMjhkNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZS5oCkBAIC01NSw3ICs1NSw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGlu
dDY0X3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0lu
Y3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNv
ZGUmKSA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4gdHJhbnNhY3Rpb24oY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlk
cywgdW5zaWduZWQgc2hvcnQgbW9kZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZShQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPikgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKaW5kZXggZjczOTFhYmY2NjgyN2Y2
NWMyNTlmOWM4MTA4ZGQ2MWY1ZjljOWVlYi4uZWYxNzBkYzgwZGNmYjU4ZjNjZGM4Y2M3OWZiYzZi
M2I5YWQwOTRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
UmVxdWVzdC5jcHAKQEAgLTMxMSwzMSArMzExLDYgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nl
c3MoUGFzc1JlZlB0cjxJREJLZXk+IGlkYktleSkKICAgICBlbnF1ZXVlRXZlbnQoY3JlYXRlU3Vj
Y2Vzc0V2ZW50KCkpOwogfQogCi12b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gcHJwQmFja2VuZCkKLXsKLSAgICBJREJf
VFJBQ0UoIklEQlJlcXVlc3Q6Om9uU3VjY2VzcyhJREJUcmFuc2FjdGlvbikiKTsKLSAgICBSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kID0gcHJwQmFja2VuZDsK
LQotICAgIGlmIChtX2NvbnRleHRTdG9wcGVkIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
IHsKLSAgICAgICAgLy8gU2hvdWxkIG9ubHkgYmUgbnVsbCBpbiB0ZXN0cy4KLSAgICAgICAgaWYg
KGJhY2tlbmQuZ2V0KCkpCi0gICAgICAgICAgICBiYWNrZW5kLT5hYm9ydCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIGlmICghc2hvdWxkRW5xdWV1ZUV2ZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gZnJvbnRlbmQgPSBJREJUcmFuc2Fj
dGlvbjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgYmFja2VuZCwgVmVjdG9yPFN0
cmluZz4oKSwgSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFLCBtX3NvdXJjZS0+aWRiRGF0
YWJhc2UoKS5nZXQoKSk7Ci0gICAgYmFja2VuZC0+c2V0Q2FsbGJhY2tzKGZyb250ZW5kLmdldCgp
KTsKLSAgICBtX3RyYW5zYWN0aW9uID0gZnJvbnRlbmQ7Ci0KLSAgICBBU1NFUlQobV9zb3VyY2Ut
PnR5cGUoKSA9PSBJREJBbnk6OklEQkRhdGFiYXNlVHlwZSk7Ci0gICAgQVNTRVJUKG1fdHJhbnNh
Y3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgpKTsKLQotICAgIG1fcmVzdWx0ID0gSURCQW55OjpjcmVh
dGUoZnJvbnRlbmQucmVsZWFzZSgpKTsKLSAgICBlbnF1ZXVlRXZlbnQoY3JlYXRlU3VjY2Vzc0V2
ZW50KCkpOwotfQotCiB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNjcmlwdFZhbHVlKQogewogICAgIElEQl9UUkFD
RSgiSURCUmVxdWVzdDo6b25TdWNjZXNzKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkiKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAppbmRleCAyZGMyZGU5
Y2RmNWM3Mzk1NDE2NDM0ZjkxMTE3NzE5OTA0NGU5NmQ5Li5lZGFhN2JhMTZiNjkxYWUwNjdlOGFk
NzYyMTM3MDYwYmJkNWJmNzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCUmVxdWVzdC5oCkBAIC05MSw3ICs5MSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4pOwogICAgIHZpcnR1YWwgdm9p
ZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgUGFzc1Jl
ZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NS
ZWZQdHI8SURCS2V5Pik7Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nl
c3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKICAgICB2aXJ0dWFsIHZvaWQg
b25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJ
REJLZXk+LCBjb25zdCBJREJLZXlQYXRoJik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhp
bnQ2NF90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxi
YWNrc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1By
b3h5LmNwcAppbmRleCA4MWNiNTQ5ZTU0Nzc1OWYzNDFlMTE0MzliNTg5NzhlMTMwMGUyYjA3Li44
MzdjYzMyYTZiMDAwMGRhZjk0N2IxZGU3NTFlNTY3NjA4Mjg2ZGUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCkBAIC04NywxMSArODcs
NiBAQCB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+
IGlkYktleSkKICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKFdlYklEQktleShpZGJLZXkpKTsK
IH0KIAotdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kKQotewotICAgIG1fY2FsbGJhY2tzLT5v
blN1Y2Nlc3MobmV3IFdlYklEQlRyYW5zYWN0aW9uSW1wbChiYWNrZW5kKSk7Ci19Ci0KIHZvaWQg
SURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGRv
bVN0cmluZ0xpc3QpCiB7CiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhXZWJET01TdHJpbmdM
aXN0KGRvbVN0cmluZ0xpc3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkNhbGxiYWNrc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJD
YWxsYmFja3NQcm94eS5oCmluZGV4IGM5NDA2OThmNzEwMTVlZGFmZGI2ZDAyNzgwMTJlYzcwNzEy
NTdkYmIuLjY1ZjNiNzQwYTgyZWU4YWUyZDgyYjAyNTkyM2JlMGU2NGUwYTQxNWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaApAQCAtNTEsNyAr
NTEsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFdl
YkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklE
QktleT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRy
PFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1
Y2Nlc3MoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KTsK
ICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5Pik7
Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKICAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+LCBjb25zdCBXZWJDb3JlOjpJREJLZXlQYXRoJik7
CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhpbnQ2NF90KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcAppbmRleCAw
YmM5NTQ2NmQ4YjMwNWRhOWFmNDc1MzIwNWUxYzI0ZmY2ZmRhOTExLi41NWU5YTcyZjRlNzgyNjhi
ZDE1MDAzZTJkNzRiYTRlNWYyYzM0ZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCkBAIC04NSwxMiArODUsNiBA
QCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpkZWxldGVPYmplY3RTdG9yZShpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIElEQlRyYW5zYQogICAgIG1fd2ViSURCRGF0YWJhc2UtPmRlbGV0ZU9i
amVjdFN0b3JlKG9iamVjdFN0b3JlSWQsICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFu
c2FjdGlvbigpLCBlYyk7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OnNldFZl
cnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2Fs
bGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNr
cywgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgQVNTRVJUKG1fd2ViSURCRGF0YWJhc2UpOwot
ICAgIG1fd2ViSURCRGF0YWJhc2UtPnNldFZlcnNpb24odmVyc2lvbiwgbmV3IFdlYklEQkNhbGxi
YWNrc0ltcGwoY2FsbGJhY2tzKSwgZWMpOwotfQotCiBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OnRyYW5zYWN0aW9uKGNv
bnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUp
CiB7CiAgICAgT3duUHRyPFdlYklEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbiA9IGFkb3B0UHRy
KG1fd2ViSURCRGF0YWJhc2UtPnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlSWRzLCBtb2RlKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJv
eHkuaAppbmRleCBhYThmZGYwYzllZjcxYTg4Nzk2OWNjM2JkYTJmNWU5OTA4ZjIyM2EzLi45N2Nm
ZjQ1ZGVlM2UyZDJiZWJhOTExNjUwMjdkOWIzMjlhY2ZhMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKQEAgLTQ2LDcg
KzQ2LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQk9i
amVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJDb3JlOjpJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5j
cmVtZW50LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGlu
dDY0X3QsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBTdHJp
bmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrcz4sIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUm
KTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlPiB0cmFuc2FjdGlvbihjb25zdCBWZWN0b3I8aW50NjRfdD4mLCB1bnNpZ25lZCBz
aG9ydCBtb2RlKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
REJEYXRhYmFzZUNhbGxiYWNrcz4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCmluZGV4IDhkMTJjZmEzZWE5YmFlMzJkNDdjMzM0
ZmMwZTAxN2QwOTBkZGE3YTguLmRjZjMwM2IzOTExMmFhYTFlNjdjNjVkZjc0MmQ5M2EyNGIwNmZk
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNr
c0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNr
c0ltcGwuY3BwCkBAIC04NiwxMSArODYsNiBAQCB2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9u
U3VjY2Vzcyhjb25zdCBXZWJJREJLZXkmIGtleSkKICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNz
KGtleSk7CiB9CiAKLXZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKFdlYklEQlRy
YW5zYWN0aW9uKiB3ZWJLaXRJbnN0YW5jZSkKLXsKLSAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNz
KElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5OjpjcmVhdGUoYWRvcHRQdHIod2ViS2l0SW5zdGFu
Y2UpKSk7Ci19Ci0KIHZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKGNvbnN0IFdl
YlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKQogewogICAgIG1f
Y2FsbGJhY2tzLT5vblN1Y2Nlc3Moc2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaAppbmRleCBiYTQ0NDg0
MjgzM2ExZWI0MzJhZTUzMGE0OTZkMWVlOTc5ZTUwZjJhLi44ZjhjMDJhYWEwMjhjZmMzOWJlOTIx
YWJjMGQ2YjdkYTNmZDUzMjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJDYWxsYmFja3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCQ2FsbGJhY2tzSW1wbC5oCkBAIC00Niw3ICs0Niw2IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgb25TdWNjZXNzKFdlYklEQkN1cnNvciosIGNvbnN0IFdlYklEQktleSYsIGNvbnN0
IFdlYklEQktleSYgcHJpbWFyeUtleSwgY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJik7
CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJJREJEYXRhYmFzZSopOwogICAgIHZpcnR1
YWwgdm9pZCBvblN1Y2Nlc3MoY29uc3QgV2ViSURCS2V5Jik7Ci0gICAgdmlydHVhbCB2b2lkIG9u
U3VjY2VzcyhXZWJJREJUcmFuc2FjdGlvbiopOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3Mo
Y29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3Vj
Y2Vzcyhjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBjb25zdCBXZWJJREJLZXkmLCBj
b25zdCBXZWJJREJLZXlQYXRoJik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25zdCBX
ZWJJREJLZXkmLCBjb25zdCBXZWJJREJLZXkmIHByaW1hcnlLZXksIGNvbnN0IFdlYlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCRGF0YWJhc2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QkRhdGFiYXNlSW1wbC5jcHAKaW5kZXggNTlhYmQ1MzI5MjgwMWYzMDQ5M2RiZDBjNDdmNmUwMGQz
NjBiZGQ0MS4uYzk0ZGU3YmI0MzUzODM1MzY4YTNkMDJiOWUyM2RkYzcwYTRkM2ZjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCkBA
IC03NSwxMSArNzUsNiBAQCB2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6ZGVsZXRlT2JqZWN0U3Rv
cmUobG9uZyBsb25nIG9iamVjdFN0b3JlSWQsIGNvbnN0IFdlYklEQgogICAgIG1fZGF0YWJhc2VC
YWNrZW5kLT5kZWxldGVPYmplY3RTdG9yZShvYmplY3RTdG9yZUlkLCB0cmFuc2FjdGlvbi5nZXRJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSwgZWMpOwogfQogCi12b2lkIFdlYklEQkRh
dGFiYXNlSW1wbDo6c2V0VmVyc2lvbihjb25zdCBXZWJTdHJpbmcmIHZlcnNpb24sIFdlYklEQkNh
bGxiYWNrcyogY2FsbGJhY2tzLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBtX2RhdGFi
YXNlQmFja2VuZC0+c2V0VmVyc2lvbih2ZXJzaW9uLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRl
KGFkb3B0UHRyKGNhbGxiYWNrcykpLCBtX2RhdGFiYXNlQ2FsbGJhY2tzLCBlYyk7Ci19Ci0KIFdl
YklEQlRyYW5zYWN0aW9uKiBXZWJJREJEYXRhYmFzZUltcGw6OnRyYW5zYWN0aW9uKGNvbnN0IFdl
YlZlY3Rvcjxsb25nIGxvbmc+JiBvYmplY3RTdG9yZUlkcywgdW5zaWduZWQgc2hvcnQgbW9kZSkK
IHsKICAgICBWZWN0b3I8aW50NjRfdD4gb2JqZWN0U3RvcmVJZExpc3Qob2JqZWN0U3RvcmVJZHMu
c2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRh
dGFiYXNlSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJ
bXBsLmgKaW5kZXggZTcyODc0MmM2NDc0ODQxMjZjZjNlYTdkZDk1NmVkZmYzMmM3MjgwZi4uYTY1
NWY4YWY1Yjk1Njg5ZmRiZmEzYjFjYjZlZWQxMWMwNDRmMTA2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKQEAgLTU0LDcgKzU0LDYgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBXZWJJREJPYmplY3RTdG9yZSogY3JlYXRlT2JqZWN0U3Rv
cmUobG9uZyBsb25nLCBjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQktleVBhdGgm
LCBib29sIGF1dG9JbmNyZW1lbnQsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0
aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShsb25nIGxvbmcg
b2JqZWN0U3RvcmVJZCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2Rl
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3QgV2ViU3RyaW5nJiB2ZXJzaW9u
LCBXZWJJREJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCBXZWJJ
REJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24oY29uc3QgV2ViVmVjdG9yPGxvbmcgbG9uZz4mIG5h
bWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlKTsKICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VDbG9zZSgp
OwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKaW5kZXggZTk3YmM3ZjZk
ZjlhNDE4Y2ZmNjU2MGQyYzEyMzRlYmMxZDNhNjg0OC4uZmUzODA3NjU4ZDhiYzljZTU3MDMxNzhm
OTUyNTRlNjE2MTM5ZDVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCkBAIC0xNTMsNyArMTUzLDYgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZh
Y2U+IGNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
SURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0
ZU9iamVjdFN0b3JlKGludDY0X3QsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4
Y2VwdGlvbkNvZGUmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBTdHJp
bmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSB7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbihET01TdHJpbmdM
aXN0KiBzdG9yZU5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCBFeGNlcHRpb25Db2RlJikgeyBy
ZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2U+IHRyYW5zYWN0aW9uKGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYsIHVuc2lnbmVkIHNo
b3J0IG1vZGUpIHsgcmV0dXJuIDA7IH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQ0ZGJiODIxNGQwNjAzOWUyM2NiZDNm
MzVkMzY1ZWFhYzA1NzJhZTcuLmFmNTQ4MjhlMDljMjU3MmYwYTM5N2I4ZDA5NDQwYmMwY2Q0ODhm
NDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMS0xOSAgRGF2aWQgR3JvZ2FuICA8ZGdy
b2dhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBSZW1vdmUgSURCRGF0YWJh
c2Uuc2V0VmVyc2lvbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk0OTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZW1vdmVkLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcmVtb3ZlZC5qczoKKyAgICAgICAgKHRl
c3QpOgorCiAyMDEyLTExLTE5ICBFcmlrIEFydmlkc3NvbiAgPGFydkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgVXBkYXRlIERPTUV4Y2VwdGlvbiBuYW1lOiBEYXRhQ2xvbmVFcnJvcgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVtb3ZlZC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZW1vdmVkLWV4cGVjdGVkLnR4dAppbmRl
eCBiYWJiYzdjNGVkNzllZTA2NjA5ZTBiOTQ1Y2ZmN2Q0Y2E3ZDhiMzFjLi5hNjg0MDQ3MjU5Nzg2
MmQ2NjkyNGViODU3NDVkODJhY2NlNTBjYzA3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZW1vdmVkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZW1vdmVkLWV4cGVjdGVkLnR4dApAQCAtNiw2ICs2LDcgQEAgT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUKIGluZGV4ZWREQiA9IHNlbGYuaW5kZXhlZERCIHx8IHNlbGYud2Vi
a2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYubXNJbmRleGVkREIgfHwg
c2VsZi5PSW5kZXhlZERCOwogCiBQQVNTIHNlbGYud2Via2l0SURCRGF0YWJhc2VFcnJvciBpcyB1
bmRlZmluZWQuCitQQVNTICdzZXRWZXJzaW9uJyBpbiBJREJEYXRhYmFzZS5wcm90b3R5cGUgaXMg
ZmFsc2UKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3JlbW92
ZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcmVtb3ZlZC5q
cwppbmRleCBkNmY2NGI4MzIzYWQyY2ZhM2ZiNmUyMjM5NWYzNzQ2MDI4YzQxMzYyLi5hNzUwMDc1
ODg2OTA4ZDQ0OTI2MDU2OGRhOGM2NDZlNzA4YjQyODc1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcmVtb3ZlZC5qcworKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcmVtb3ZlZC5qcwpAQCAtOSw2ICs5LDcgQEAg
ZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKICAgICBzaG91
bGRCZVVuZGVmaW5lZCgic2VsZi53ZWJraXRJREJEYXRhYmFzZUVycm9yIik7CisgICAgc2hvdWxk
QmVGYWxzZSgiJ3NldFZlcnNpb24nIGluIElEQkRhdGFiYXNlLnByb3RvdHlwZSIpOwogICAgIGZp
bmlzaEpTVGVzdCgpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175080</attachid>
            <date>2012-11-19 16:54:08 -0800</date>
            <delta_ts>2012-11-20 17:43:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94972-20121119165158.patch</filename>
            <type>text/plain</type>
            <size>30575</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDA5M2MzMTA1MWI1Yzk1
ZjcyYmRjNjUyZTIwOGZmNmI4MjgzMDY3Mi4uYWM5M2M2YTgxYzE3Yjk1YzYxMDE5ZjdjNjE0YmUz
ZmJhMzIzODE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTExLTE5ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFJl
bW92ZSBJREJEYXRhYmFzZS5zZXRWZXJzaW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ5NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0cyAtIHJlbW92ZWQuaHRtbAorCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmg6CisgICAgICAgIChJREJDYWxsYmFja3Mp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlOjpJREJEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2UuaDoKKyAgICAgICAgKElEQkRhdGFiYXNlKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5pZGw6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwcm9jZXNzUGVuZGluZ0NhbGxzKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6CisgICAgICAgIChJREJE
YXRhYmFzZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2UuaDoKKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHA6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oOgorCiAyMDEyLTExLTE5ICBFcmlr
IEFydmlkc3NvbiAgPGFydkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVXBkYXRlIERPTUV4Y2Vw
dGlvbiBuYW1lOiBUaW1lb3V0RXJyb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMGFk
MWI5NjRhMzlkZDE0NTc5ZGYzOWU0NThjMjA1MzAwZTk4MDlhZi4uY2FkNjJlMmUxZDQzMmNjYzM1
MmQ5ZmM4Yjk1NWNlZjBiOTRjOTI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxMi0xMS0xOSAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBSZW1vdmUgSURCRGF0YWJhc2Uuc2V0VmVyc2lvbiBB
UEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0OTcy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMv
SURCQ2FsbGJhY2tzUHJveHkuY3BwOgorICAgICAgICAqIHNyYy9JREJDYWxsYmFja3NQcm94eS5o
OgorICAgICAgICAoSURCQ2FsbGJhY2tzUHJveHkpOgorICAgICAgICAqIHNyYy9JREJEYXRhYmFz
ZUJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5
Lmg6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRQcm94eSk6CisgICAgICAgICogc3JjL1dl
YklEQkNhbGxiYWNrc0ltcGwuY3BwOgorICAgICAgICAqIHNyYy9XZWJJREJDYWxsYmFja3NJbXBs
Lmg6CisgICAgICAgIChXZWJJREJDYWxsYmFja3NJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViSURC
RGF0YWJhc2VJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmg6Cisg
ICAgICAgIChXZWJJREJEYXRhYmFzZUltcGwpOgorCiAyMDEyLTExLTE5ICBLaWhvbmcgS3dvbiAg
PGtpaG9uZy5rd29uQHNhbXN1bmcuY29tPgogCiAgICAgICAgIEFkZCBQUk9YSU1JVFlfRVZFTlRT
IGZlYXR1cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJh
Y2tzLmgKaW5kZXggZDE1MTE0NTRkODE4OTcwYTIzZjVkZWQ4YjYyMjgzMDczY2IxODI1NC4uYjg4
YjBjZGUzZjcyYWNkZWM4Mjc4OTBlNWMyODlhMDFiNjZlMjJjMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKQEAgLTU2LDggKzU2LDYgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4g
cHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KSA9IDA7CiAgICAg
Ly8gRnJvbSBJREJPYmplY3RTdG9yZS5hZGQoKS9wdXQoKSwgSURCSW5kZXguZ2V0S2V5KCkKICAg
ICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PikgPSAwOwotICAgIC8v
IEZyb20gSURCRGF0YWJhc2Uuc2V0VmVyc2lvbigpCi0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
cyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pID0gMDsKICAgICAv
LyBGcm9tIElEQk9iamVjdFN0b3JlL0lEQkluZGV4LmdldCgpL2NvdW50KCksIGFuZCB2YXJpb3Vz
IG1ldGhvZHMgdGhhdCB5aWVsZCBudWxsL3VuZGVmaW5lZC4KICAgICB2aXJ0dWFsIHZvaWQgb25T
dWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPikgPSAwOwogICAgIC8vIEZy
b20gSURCT2JqZWN0U3RvcmUvSURCSW5kZXguZ2V0KCkgKHdpdGgga2V5IGluamVjdGlvbikKQEAg
LTcyLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1Jl
ZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+KSA9IDA7CiAgICAgLy8gRnJvbSBJREJDdXJzb3IuYWR2YW5j
ZSgpL2NvbnRpbnVlKCkKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aFByZWZldGNoKGNv
bnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiBrZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPElE
QktleT4gPiYgcHJpbWFyeUtleXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiA+JiB2YWx1ZXMpID0gMDsKLSAgICAvLyBGcm9tIElEQkZhY3Rvcnkub3BlbigpL2Rl
bGV0ZURhdGFiYXNlKCksIElEQkRhdGFiYXNlLnNldFZlcnNpb24oKQorICAgIC8vIEZyb20gSURC
RmFjdG9yeS5vcGVuKCkvZGVsZXRlRGF0YWJhc2UoKQogICAgIHZpcnR1YWwgdm9pZCBvbkJsb2Nr
ZWQoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tl
ZChpbnQ2NF90IGV4aXN0aW5nVmVyc2lvbikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAg
IC8vIEZyb20gSURCRmFjdG9yeS5vcGVuKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCBlNWVhNDFlMGE2MzAzNzBmMGQ4NmMzZTVm
ZDQxZTcyNmM3MmY2OGIxLi5kYTJjOWRhZTk0M2QzNzgyNWEzMDllNjIzNjk0MTcyNzg0NmJmMTIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2Uu
Y3BwCkBAIC02NCw3ICs2NCw2IEBAIElEQkRhdGFiYXNlOjpJREJEYXRhYmFzZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlCiAgICAgLCBtX2Ns
b3NlUGVuZGluZyhmYWxzZSkKICAgICAsIG1fY29udGV4dFN0b3BwZWQoZmFsc2UpCiAgICAgLCBt
X2RhdGFiYXNlQ2FsbGJhY2tzKGNhbGxiYWNrcykKLSAgICAsIG1fZGlkU3BhbUNvbnNvbGUoZmFs
c2UpCiB7CiAgICAgLy8gV2UgcGFzcyBhIHJlZmVyZW5jZSBvZiB0aGlzIG9iamVjdCBiZWZvcmUg
aXQgY2FuIGJlIGFkb3B0ZWQuCiAgICAgcmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCk7CkBAIC0y
MDIsMzAgKzIwMSw2IEBAIHZvaWQgSURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0
IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgfQogfQogCi1QYXNzUmVmUHRy
PElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0PiBJREJEYXRhYmFzZTo6c2V0VmVyc2lvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIEV4Y2VwdGlv
bkNvZGUmIGVjKQotewotICAgIGlmICghbV9kaWRTcGFtQ29uc29sZSkgewotICAgICAgICBTdHJp
bmcgY29uc29sZU1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlRoZSBzZXRWZXJzaW9uKCkgbWV0aG9k
IGlzIG5vbi1zdGFuZGFyZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBVc2UgdGhlIFwidXBncmFkZW5l
ZWRlZFwiIGV2ZW50IGluc3RlYWQuIik7Ci0gICAgICAgIGNvbnRleHQtPmFkZENvbnNvbGVNZXNz
YWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIFdhcm5pbmdNZXNzYWdlTGV2ZWws
IGNvbnNvbGVNZXNzYWdlKTsKLSAgICAgICAgbV9kaWRTcGFtQ29uc29sZSA9IHRydWU7Ci0gICAg
fQotCi0gICAgaWYgKHZlcnNpb24uaXNOdWxsKCkpIHsKLSAgICAgICAgZWMgPSBUeXBlRXJyb3I7
Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGlmIChtX3ZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbikgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJ
RF9TVEFURV9FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIFJlZlB0cjxJREJW
ZXJzaW9uQ2hhbmdlUmVxdWVzdD4gcmVxdWVzdCA9IElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0Ojpj
cmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIHZlcnNpb24pOwotICAgIEFTU0VS
VChtX2JhY2tlbmQpOwotICAgIG1fYmFja2VuZC0+c2V0VmVyc2lvbih2ZXJzaW9uLCByZXF1ZXN0
LCBtX2RhdGFiYXNlQ2FsbGJhY2tzLCBlYyk7Ci0gICAgcmV0dXJuIHJlcXVlc3Q7Ci19Ci0KIFBh
c3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2NvcGUsIGNv
bnN0IFN0cmluZyYgbW9kZVN0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFz
Y29wZS5zaXplKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZS5oCmluZGV4IGVlMmQyMzIzNGNmYTE3YTYwYmU0OGE0NmZiNzY2N2E2NjZkMDEwMjYu
LmI3ODk3MWIxMjA0Njg5MjU4MDA2NzViMDEwOTQ4YzBkMjlhZmE1NjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaApAQCAtNjgsNyArNjgsNiBA
QCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5n
JiBtb2RlLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4g
dHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYgbW9kZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgZGVsZXRlT2JqZWN0U3Rv
cmUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxJ
REJWZXJzaW9uQ2hhbmdlUmVxdWVzdD4gc2V0VmVyc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBjbG9z
ZSgpOwogCiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihhYm9ydCk7CkBAIC0x
MjksOCArMTI4LDYgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IG1fZW5x
dWV1ZWRFdmVudHM7CiAKICAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IG1fZGF0YWJh
c2VDYWxsYmFja3M7Ci0KLSAgICBib29sIG1fZGlkU3BhbUNvbnNvbGU7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZS5pZGwKaW5kZXggNGVmNjJhZjE4MzJiMTY5YzVkOWU1YmUyZDFhNDYzMTU4MWE3
MTI5MC4uMzAxOTI5N2YyYTRiYzhkNDUxMDc5OTU5MDc3OWNmNGZjMDMzZTI5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmlkbApAQCAtNDIs
OCArNDIsNiBAQAogICAgICAgICByYWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKICAgICB2
b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGluIERPTVN0cmluZyBuYW1lKQogICAgICAgICByYWlzZXMg
KElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dF0gSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qgc2V0VmVyc2lvbihpbiBET01TdHJpbmcgdmVy
c2lvbikKLSAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CiAgICAgW0NhbGxX
aXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKGlu
IERPTVN0cmluZ0xpc3Qgc3RvcmVOYW1lcywgaW4gW09wdGlvbmFsPURlZmF1bHRJc051bGxTdHJp
bmddIERPTVN0cmluZyBtb2RlKQogICAgICAgICByYWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9u
KTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCVHJhbnNhY3Rpb24g
dHJhbnNhY3Rpb24oaW4gc2VxdWVuY2U8U3RyaW5nPiBzdG9yZU5hbWVzLCBpbiBbT3B0aW9uYWw9
RGVmYXVsdElzTnVsbFN0cmluZ10gRE9NU3RyaW5nIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3Bw
CmluZGV4IGU4ZTE0M2Y0Nzg4NGUwMDdhMWEwZWVlNDQ1YThlNzkzNzFiZDg0M2MuLjUxNWI2YjBi
ODIyZjk3YmM2NjRmMDlhYWNhOTY3Yzg0ZGIzYjBmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3Bw
CkBAIC0yMzUsNjQgKzIzNSw2IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6ZGVsZXRl
T2JqZWN0U3RvcmVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwKICAgICB0cmFuc2Fj
dGlvbi0+ZGlkQ29tcGxldGVUYXNrRXZlbnRzKCk7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6c2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+
IHBycERhdGFiYXNlQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBSZWZQdHI8
SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7Ci0gICAgUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcyA9IHBycERhdGFiYXNlQ2FsbGJhY2tz
OwotICAgIGlmICghbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5jb250YWlucyhkYXRhYmFzZUNhbGxi
YWNrcykpIHsKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNy
ZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUiwgIkNvbm5lY3Rpb24gd2Fz
IGNsb3NlZCBiZWZvcmUgc2V0IHZlcnNpb24gdHJhbnNhY3Rpb24gd2FzIGNyZWF0ZWQiKSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgZm9yIChEYXRhYmFzZUNhbGxiYWNrc1NldDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmJlZ2luKCk7IGl0ICE9IG1f
ZGF0YWJhc2VDYWxsYmFja3NTZXQuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgLy8gRnJvbnQgZW5k
IGVuc3VyZXMgdGhlIGV2ZW50IGlzIG5vdCBmaXJlZCBhdCBjb25uZWN0aW9ucyB0aGF0IGhhdmUg
Y2xvc2VQZW5kaW5nIHNldC4KLSAgICAgICAgaWYgKCppdCAhPSBkYXRhYmFzZUNhbGxiYWNrcykK
LSAgICAgICAgICAgICgqaXQpLT5vblZlcnNpb25DaGFuZ2UodmVyc2lvbik7Ci0gICAgfQotICAg
IC8vIEZJWE1FOiBPbmx5IGZpcmUgb25CbG9ja2VkIGlmIHRoZXJlIGFyZSBvcGVuIGNvbm5lY3Rp
b25zIGFmdGVyIHRoZQotICAgIC8vIFZlcnNpb25DaGFuZ2VFdmVudHMgYXJlIHJlY2VpdmVkLCBu
b3QganVzdCBzZXQgdXAgdG8gZmlyZS4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzExMzAKLSAgICBpZiAoY29ubmVjdGlvbkNvdW50KCkgPiAxKSB7Ci0g
ICAgICAgIGNhbGxiYWNrcy0+b25CbG9ja2VkKCk7Ci0gICAgICAgIE93blB0cjxQZW5kaW5nU2V0
VmVyc2lvbkNhbGw+IHBlbmRpbmdTZXRWZXJzaW9uQ2FsbCA9IFBlbmRpbmdTZXRWZXJzaW9uQ2Fs
bDo6Y3JlYXRlKHZlcnNpb24sIGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MpOwotICAgICAg
ICBtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMuYXBwZW5kKHBlbmRpbmdTZXRWZXJzaW9uQ2FsbC5y
ZWxlYXNlKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX3J1bm5pbmdWZXJz
aW9uQ2hhbmdlVHJhbnNhY3Rpb24pIHsKLSAgICAgICAgT3duUHRyPFBlbmRpbmdTZXRWZXJzaW9u
Q2FsbD4gcGVuZGluZ1NldFZlcnNpb25DYWxsID0gUGVuZGluZ1NldFZlcnNpb25DYWxsOjpjcmVh
dGUodmVyc2lvbiwgY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcyk7Ci0gICAgICAgIG1fcGVu
ZGluZ1NldFZlcnNpb25DYWxscy5hcHBlbmQocGVuZGluZ1NldFZlcnNpb25DYWxsLnJlbGVhc2Uo
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBWZWN0b3I8aW50NjRfdD4gb2JqZWN0
U3RvcmVJZHM7Ci0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJh
bnNhY3Rpb25JbnRlcmZhY2UgPSB0aGlzLT50cmFuc2FjdGlvbihvYmplY3RTdG9yZUlkcywgSURC
VHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9t
KHRyYW5zYWN0aW9uSW50ZXJmYWNlLmdldCgpKTsKLSAgICBBU1NFUlQoIWVjKTsKLQotICAgIFJl
ZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZSA9IHRoaXM7Ci0gICAgaWYgKCF0
cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKAotICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNr
KCZJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRWZXJzaW9uSW50ZXJuYWwsIGRhdGFiYXNlLCB2
ZXJzaW9uLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSwKLSAgICAgICAgICAgIGNyZWF0ZUNhbGxi
YWNrVGFzaygmSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cmVzZXRWZXJzaW9uLCBkYXRhYmFzZSwg
bV9tZXRhZGF0YS52ZXJzaW9uLCBtX21ldGFkYXRhLmludFZlcnNpb24pKSkgewotICAgICAgICAv
LyBGSVhNRTogUmVtb3ZlIG9uZSBvZiB0aGUgZm9sbG93aW5nIGxpbmVzLgotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJB
TlNBQ1RJT05fSU5BQ1RJVkVfRVJSOwotICAgIH0KLX0KLQotdm9pZCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpzZXRWZXJzaW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgdmVy
c2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBwcnBUcmFuc2FjdGlvbikKLXsKLSAgICBSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBwcnBUcmFuc2FjdGlvbjsKLSAg
ICBpbnQ2NF90IGRhdGFiYXNlSWQgPSBkYXRhYmFzZS0+aWQoKTsKLSAgICBkYXRhYmFzZS0+bV9t
ZXRhZGF0YS52ZXJzaW9uID0gdmVyc2lvbjsKLSAgICBkYXRhYmFzZS0+bV9tZXRhZGF0YS5pbnRW
ZXJzaW9uID0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uOwotICAgIGlmICghZGF0
YWJhc2UtPm1fYmFja2luZ1N0b3JlLT51cGRhdGVJREJEYXRhYmFzZU1ldGFEYXRhKHRyYW5zYWN0
aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBkYXRhYmFzZUlkLCBkYXRhYmFzZS0+bV9t
ZXRhZGF0YS52ZXJzaW9uKSB8fCAhZGF0YWJhc2UtPm1fYmFja2luZ1N0b3JlLT51cGRhdGVJREJE
YXRhYmFzZUludFZlcnNpb24odHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCks
IGRhdGFiYXNlSWQsIGRhdGFiYXNlLT5tX21ldGFkYXRhLmludFZlcnNpb24pKSB7Ci0gICAgICAg
IFJlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBlcnJvciA9IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0
ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJFcnJvciB3cml0aW5nIGRhdGEg
dG8gc3RhYmxlIHN0b3JhZ2UuIik7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihlcnJvcik7
Ci0gICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydChlcnJvcik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U+KHRyYW5zYWN0aW9uKSk7Ci19Ci0KIHZvaWQgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6c2V0SW50VmVyc2lvbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlLCBpbnQ2NF90IHZlcnNp
b24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uKQogewogICAgIFJlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcyhwcnBDYWxsYmFja3MpOwpAQCAtMzY5LDE4ICszMTEsNyBAQCB2b2lkIElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OnByb2Nlc3NQZW5kaW5nQ2FsbHMoKQogICAgICAgICAvLyBG
YWxsIHRocm91Z2ggd2hlbiBjb21wbGV0ZSwgYXMgcGVuZGluZyBkZWxldGVzIG1heSBiZSAocGFy
dGlhbGx5KSB1bmJsb2NrZWQuCiAgICAgfQogCi0gICAgLy8gUGVuZGluZyBjYWxscyBtYXkgYmUg
cmVxdWV1ZWQgb3IgYWJvcnRlZAotICAgIERlcXVlPE93blB0cjxQZW5kaW5nU2V0VmVyc2lvbkNh
bGw+ID4gcGVuZGluZ1NldFZlcnNpb25DYWxsczsKLSAgICBtX3BlbmRpbmdTZXRWZXJzaW9uQ2Fs
bHMuc3dhcChwZW5kaW5nU2V0VmVyc2lvbkNhbGxzKTsKLSAgICB3aGlsZSAoIXBlbmRpbmdTZXRW
ZXJzaW9uQ2FsbHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgICAgICBPd25QdHI8UGVuZGluZ1NldFZlcnNpb25DYWxsPiBwZW5kaW5nU2V0VmVyc2lvbkNh
bGwgPSBwZW5kaW5nU2V0VmVyc2lvbkNhbGxzLnRha2VGaXJzdCgpOwotICAgICAgICBzZXRWZXJz
aW9uKHBlbmRpbmdTZXRWZXJzaW9uQ2FsbC0+dmVyc2lvbigpLCBwZW5kaW5nU2V0VmVyc2lvbkNh
bGwtPmNhbGxiYWNrcygpLCBwZW5kaW5nU2V0VmVyc2lvbkNhbGwtPmRhdGFiYXNlQ2FsbGJhY2tz
KCksIGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7Ci0gICAgfQotCi0gICAgLy8gSWYgdGhlcmUg
d2VyZSBhbnkgcGVuZGluZyBzZXQgdmVyc2lvbiBjYWxscywgd2UgYmV0dGVyIGhhdmUgc3RhcnRl
ZCBvbmUuCi0gICAgQVNTRVJUKG1fcGVuZGluZ1NldFZlcnNpb25DYWxscy5pc0VtcHR5KCkgfHwg
bV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKTsKKyAgICBBU1NFUlQobV9wZW5kaW5n
U2V0VmVyc2lvbkNhbGxzLmlzRW1wdHkoKSk7CiAKICAgICAvLyBtX3BlbmRpbmdTZXRWZXJzaW9u
Q2FsbHMgaXMgbm9uLWVtcHR5IGluIHR3byBjYXNlczoKICAgICAvLyAxKSBXaGVuIHR3byB2ZXJz
aW9uY2hhbmdlIHRyYW5zYWN0aW9ucyBhcmUgcmVxdWVzdGVkIHdoaWxlIGFub3RoZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFj
a2VuZEltcGwuaAppbmRleCBmMGY0OTM4ZDE3YmVhZDhjZDFkNDI1NGEwNzk4YjZkNmRlMzZiMTRm
Li4zYmFjN2JhOGJiNDk3OGMzOWI3NTZmYjBlM2JlNzIzODYyNzNiOTU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5k
SW1wbC5oCkBAIC02Myw3ICs2Myw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIElEQkRhdGFiYXNl
TWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IGlkLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQs
IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJz
aW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9u
KGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYsIHVuc2lnbmVkIHNob3J0KTsKICAgICB2aXJ0dWFsIHZv
aWQgY2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwogCkBAIC04NSw3ICs4
NCw2IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVPYmplY3RTdG9yZUludGVy
bmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw+LCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+KTsKICAgICBzdGF0aWMgdm9pZCBkZWxldGVPYmpl
Y3RTdG9yZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+
LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+KTsKLSAgICBzdGF0aWMgdm9p
ZCBzZXRWZXJzaW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4sIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+KTsK
ICAgICBzdGF0aWMgdm9pZCBzZXRJbnRWZXJzaW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4sIGludDY0X3QgdmVyc2lv
biwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJh
Y2tzPiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPik7CiAKICAgICAvLyBU
aGVzZSBhcmUgdXNlZCBhcyBzZXRWZXJzaW9uIHRyYW5zYWN0aW9uIGFib3J0IHRhc2tzLgpAQCAt
MTA5LDYgKzEwNyw3IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoU2V0PElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGwqPiBUcmFuc2FjdGlvblNldDsKICAgICBUcmFuc2FjdGlvblNldCBtX3Ry
YW5zYWN0aW9uczsKIAorICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlc2UuCiAgICAgY2xhc3MgUGVu
ZGluZ1NldFZlcnNpb25DYWxsOwogICAgIERlcXVlPE93blB0cjxQZW5kaW5nU2V0VmVyc2lvbkNh
bGw+ID4gbV9wZW5kaW5nU2V0VmVyc2lvbkNhbGxzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZS5oCmluZGV4IDlhYWI1NjQ0YmE0ODYzYzA3YTY3ZTQxZDkwN2Y0MWQxZDE4ZTQ4MzUuLmU2ZTVl
ODcyMTQxOTIxYWFkNWFjNjc0ZjcwZjVjZjBlYTUzMjhkNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZS5oCkBAIC01NSw3ICs1NSw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGlu
dDY0X3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0lu
Y3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNv
ZGUmKSA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4gdHJhbnNhY3Rpb24oY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlk
cywgdW5zaWduZWQgc2hvcnQgbW9kZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZShQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPikgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKaW5kZXggZjczOTFhYmY2NjgyN2Y2
NWMyNTlmOWM4MTA4ZGQ2MWY1ZjljOWVlYi4uZWYxNzBkYzgwZGNmYjU4ZjNjZGM4Y2M3OWZiYzZi
M2I5YWQwOTRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
UmVxdWVzdC5jcHAKQEAgLTMxMSwzMSArMzExLDYgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nl
c3MoUGFzc1JlZlB0cjxJREJLZXk+IGlkYktleSkKICAgICBlbnF1ZXVlRXZlbnQoY3JlYXRlU3Vj
Y2Vzc0V2ZW50KCkpOwogfQogCi12b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gcHJwQmFja2VuZCkKLXsKLSAgICBJREJf
VFJBQ0UoIklEQlJlcXVlc3Q6Om9uU3VjY2VzcyhJREJUcmFuc2FjdGlvbikiKTsKLSAgICBSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kID0gcHJwQmFja2VuZDsK
LQotICAgIGlmIChtX2NvbnRleHRTdG9wcGVkIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
IHsKLSAgICAgICAgLy8gU2hvdWxkIG9ubHkgYmUgbnVsbCBpbiB0ZXN0cy4KLSAgICAgICAgaWYg
KGJhY2tlbmQuZ2V0KCkpCi0gICAgICAgICAgICBiYWNrZW5kLT5hYm9ydCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIGlmICghc2hvdWxkRW5xdWV1ZUV2ZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gZnJvbnRlbmQgPSBJREJUcmFuc2Fj
dGlvbjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgYmFja2VuZCwgVmVjdG9yPFN0
cmluZz4oKSwgSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFLCBtX3NvdXJjZS0+aWRiRGF0
YWJhc2UoKS5nZXQoKSk7Ci0gICAgYmFja2VuZC0+c2V0Q2FsbGJhY2tzKGZyb250ZW5kLmdldCgp
KTsKLSAgICBtX3RyYW5zYWN0aW9uID0gZnJvbnRlbmQ7Ci0KLSAgICBBU1NFUlQobV9zb3VyY2Ut
PnR5cGUoKSA9PSBJREJBbnk6OklEQkRhdGFiYXNlVHlwZSk7Ci0gICAgQVNTRVJUKG1fdHJhbnNh
Y3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgpKTsKLQotICAgIG1fcmVzdWx0ID0gSURCQW55OjpjcmVh
dGUoZnJvbnRlbmQucmVsZWFzZSgpKTsKLSAgICBlbnF1ZXVlRXZlbnQoY3JlYXRlU3VjY2Vzc0V2
ZW50KCkpOwotfQotCiB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNjcmlwdFZhbHVlKQogewogICAgIElEQl9UUkFD
RSgiSURCUmVxdWVzdDo6b25TdWNjZXNzKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkiKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAppbmRleCAyZGMyZGU5
Y2RmNWM3Mzk1NDE2NDM0ZjkxMTE3NzE5OTA0NGU5NmQ5Li5lZGFhN2JhMTZiNjkxYWUwNjdlOGFk
NzYyMTM3MDYwYmJkNWJmNzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCUmVxdWVzdC5oCkBAIC05MSw3ICs5MSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4pOwogICAgIHZpcnR1YWwgdm9p
ZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgUGFzc1Jl
ZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NS
ZWZQdHI8SURCS2V5Pik7Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nl
c3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKICAgICB2aXJ0dWFsIHZvaWQg
b25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJ
REJLZXk+LCBjb25zdCBJREJLZXlQYXRoJik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhp
bnQ2NF90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxi
YWNrc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1By
b3h5LmNwcAppbmRleCA4MWNiNTQ5ZTU0Nzc1OWYzNDFlMTE0MzliNTg5NzhlMTMwMGUyYjA3Li44
MzdjYzMyYTZiMDAwMGRhZjk0N2IxZGU3NTFlNTY3NjA4Mjg2ZGUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCkBAIC04NywxMSArODcs
NiBAQCB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+
IGlkYktleSkKICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKFdlYklEQktleShpZGJLZXkpKTsK
IH0KIAotdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kKQotewotICAgIG1fY2FsbGJhY2tzLT5v
blN1Y2Nlc3MobmV3IFdlYklEQlRyYW5zYWN0aW9uSW1wbChiYWNrZW5kKSk7Ci19Ci0KIHZvaWQg
SURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGRv
bVN0cmluZ0xpc3QpCiB7CiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhXZWJET01TdHJpbmdM
aXN0KGRvbVN0cmluZ0xpc3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkNhbGxiYWNrc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJD
YWxsYmFja3NQcm94eS5oCmluZGV4IGM5NDA2OThmNzEwMTVlZGFmZGI2ZDAyNzgwMTJlYzcwNzEy
NTdkYmIuLjY1ZjNiNzQwYTgyZWU4YWUyZDgyYjAyNTkyM2JlMGU2NGUwYTQxNWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaApAQCAtNTEsNyAr
NTEsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFdl
YkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklE
QktleT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRy
PFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1
Y2Nlc3MoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KTsK
ICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5Pik7
Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKICAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+LCBjb25zdCBXZWJDb3JlOjpJREJLZXlQYXRoJik7
CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhpbnQ2NF90KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcAppbmRleCAw
YmM5NTQ2NmQ4YjMwNWRhOWFmNDc1MzIwNWUxYzI0ZmY2ZmRhOTExLi41NWU5YTcyZjRlNzgyNjhi
ZDE1MDAzZTJkNzRiYTRlNWYyYzM0ZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCkBAIC04NSwxMiArODUsNiBA
QCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpkZWxldGVPYmplY3RTdG9yZShpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIElEQlRyYW5zYQogICAgIG1fd2ViSURCRGF0YWJhc2UtPmRlbGV0ZU9i
amVjdFN0b3JlKG9iamVjdFN0b3JlSWQsICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFu
c2FjdGlvbigpLCBlYyk7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OnNldFZl
cnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2Fs
bGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNr
cywgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgQVNTRVJUKG1fd2ViSURCRGF0YWJhc2UpOwot
ICAgIG1fd2ViSURCRGF0YWJhc2UtPnNldFZlcnNpb24odmVyc2lvbiwgbmV3IFdlYklEQkNhbGxi
YWNrc0ltcGwoY2FsbGJhY2tzKSwgZWMpOwotfQotCiBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OnRyYW5zYWN0aW9uKGNv
bnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUp
CiB7CiAgICAgT3duUHRyPFdlYklEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbiA9IGFkb3B0UHRy
KG1fd2ViSURCRGF0YWJhc2UtPnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlSWRzLCBtb2RlKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJv
eHkuaAppbmRleCBhYThmZGYwYzllZjcxYTg4Nzk2OWNjM2JkYTJmNWU5OTA4ZjIyM2EzLi45N2Nm
ZjQ1ZGVlM2UyZDJiZWJhOTExNjUwMjdkOWIzMjlhY2ZhMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKQEAgLTQ2LDcg
KzQ2LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQk9i
amVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJDb3JlOjpJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5j
cmVtZW50LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGlu
dDY0X3QsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBTdHJp
bmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrcz4sIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUm
KTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlPiB0cmFuc2FjdGlvbihjb25zdCBWZWN0b3I8aW50NjRfdD4mLCB1bnNpZ25lZCBz
aG9ydCBtb2RlKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
REJEYXRhYmFzZUNhbGxiYWNrcz4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCmluZGV4IDhkMTJjZmEzZWE5YmFlMzJkNDdjMzM0
ZmMwZTAxN2QwOTBkZGE3YTguLmRjZjMwM2IzOTExMmFhYTFlNjdjNjVkZjc0MmQ5M2EyNGIwNmZk
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNr
c0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNr
c0ltcGwuY3BwCkBAIC04NiwxMSArODYsNiBAQCB2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9u
U3VjY2Vzcyhjb25zdCBXZWJJREJLZXkmIGtleSkKICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNz
KGtleSk7CiB9CiAKLXZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKFdlYklEQlRy
YW5zYWN0aW9uKiB3ZWJLaXRJbnN0YW5jZSkKLXsKLSAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNz
KElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5OjpjcmVhdGUoYWRvcHRQdHIod2ViS2l0SW5zdGFu
Y2UpKSk7Ci19Ci0KIHZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKGNvbnN0IFdl
YlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKQogewogICAgIG1f
Y2FsbGJhY2tzLT5vblN1Y2Nlc3Moc2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaAppbmRleCBiYTQ0NDg0
MjgzM2ExZWI0MzJhZTUzMGE0OTZkMWVlOTc5ZTUwZjJhLi44ZjhjMDJhYWEwMjhjZmMzOWJlOTIx
YWJjMGQ2YjdkYTNmZDUzMjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJDYWxsYmFja3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCQ2FsbGJhY2tzSW1wbC5oCkBAIC00Niw3ICs0Niw2IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgb25TdWNjZXNzKFdlYklEQkN1cnNvciosIGNvbnN0IFdlYklEQktleSYsIGNvbnN0
IFdlYklEQktleSYgcHJpbWFyeUtleSwgY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJik7
CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJJREJEYXRhYmFzZSopOwogICAgIHZpcnR1
YWwgdm9pZCBvblN1Y2Nlc3MoY29uc3QgV2ViSURCS2V5Jik7Ci0gICAgdmlydHVhbCB2b2lkIG9u
U3VjY2VzcyhXZWJJREJUcmFuc2FjdGlvbiopOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3Mo
Y29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3Vj
Y2Vzcyhjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBjb25zdCBXZWJJREJLZXkmLCBj
b25zdCBXZWJJREJLZXlQYXRoJik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25zdCBX
ZWJJREJLZXkmLCBjb25zdCBXZWJJREJLZXkmIHByaW1hcnlLZXksIGNvbnN0IFdlYlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCRGF0YWJhc2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QkRhdGFiYXNlSW1wbC5jcHAKaW5kZXggNTlhYmQ1MzI5MjgwMWYzMDQ5M2RiZDBjNDdmNmUwMGQz
NjBiZGQ0MS4uYzk0ZGU3YmI0MzUzODM1MzY4YTNkMDJiOWUyM2RkYzcwYTRkM2ZjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCkBA
IC03NSwxMSArNzUsNiBAQCB2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6ZGVsZXRlT2JqZWN0U3Rv
cmUobG9uZyBsb25nIG9iamVjdFN0b3JlSWQsIGNvbnN0IFdlYklEQgogICAgIG1fZGF0YWJhc2VC
YWNrZW5kLT5kZWxldGVPYmplY3RTdG9yZShvYmplY3RTdG9yZUlkLCB0cmFuc2FjdGlvbi5nZXRJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSwgZWMpOwogfQogCi12b2lkIFdlYklEQkRh
dGFiYXNlSW1wbDo6c2V0VmVyc2lvbihjb25zdCBXZWJTdHJpbmcmIHZlcnNpb24sIFdlYklEQkNh
bGxiYWNrcyogY2FsbGJhY2tzLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBtX2RhdGFi
YXNlQmFja2VuZC0+c2V0VmVyc2lvbih2ZXJzaW9uLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRl
KGFkb3B0UHRyKGNhbGxiYWNrcykpLCBtX2RhdGFiYXNlQ2FsbGJhY2tzLCBlYyk7Ci19Ci0KIFdl
YklEQlRyYW5zYWN0aW9uKiBXZWJJREJEYXRhYmFzZUltcGw6OnRyYW5zYWN0aW9uKGNvbnN0IFdl
YlZlY3Rvcjxsb25nIGxvbmc+JiBvYmplY3RTdG9yZUlkcywgdW5zaWduZWQgc2hvcnQgbW9kZSkK
IHsKICAgICBWZWN0b3I8aW50NjRfdD4gb2JqZWN0U3RvcmVJZExpc3Qob2JqZWN0U3RvcmVJZHMu
c2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRh
dGFiYXNlSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJ
bXBsLmgKaW5kZXggZTcyODc0MmM2NDc0ODQxMjZjZjNlYTdkZDk1NmVkZmYzMmM3MjgwZi4uYTY1
NWY4YWY1Yjk1Njg5ZmRiZmEzYjFjYjZlZWQxMWMwNDRmMTA2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKQEAgLTU0LDcgKzU0LDYgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBXZWJJREJPYmplY3RTdG9yZSogY3JlYXRlT2JqZWN0U3Rv
cmUobG9uZyBsb25nLCBjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQktleVBhdGgm
LCBib29sIGF1dG9JbmNyZW1lbnQsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0
aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShsb25nIGxvbmcg
b2JqZWN0U3RvcmVJZCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2Rl
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3QgV2ViU3RyaW5nJiB2ZXJzaW9u
LCBXZWJJREJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCBXZWJJ
REJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24oY29uc3QgV2ViVmVjdG9yPGxvbmcgbG9uZz4mIG5h
bWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlKTsKICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VDbG9zZSgp
OwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKaW5kZXggZTk3YmM3ZjZk
ZjlhNDE4Y2ZmNjU2MGQyYzEyMzRlYmMxZDNhNjg0OC4uMjI2YjhhZmUwMzk2NjFhZWNjOTQyOWMx
OWNiNmU5ZjJlZDU3YjUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCkBAIC04OCw3ICs4OCw2IEBAIHB1Ymxp
YzoKICAgICAgICAgbV93YXNTdWNjZXNzREJDYWxsZWQgPSB0cnVlOwogICAgIH0KICAgICB2aXJ0
dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PikgT1ZFUlJJREUgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4pIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0
cjxJREJLZXk+LCBjb25zdCBJREJLZXlQYXRoJikgT1ZFUlJJREUgeyB9OwogICAgIHZpcnR1YWwg
dm9pZCBvblN1Y2Nlc3MoaW50NjRfdCkgT1ZFUlJJREUgeyB9CkBAIC0xNTMsNyArMTUyLDYgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRl
cmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRl
bGV0ZU9iamVjdFN0b3JlKGludDY0X3QsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSos
IEV4Y2VwdGlvbkNvZGUmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBT
dHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJE
YXRhYmFzZUNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSB7IH0KICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbihET01TdHJp
bmdMaXN0KiBzdG9yZU5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCBFeGNlcHRpb25Db2RlJikg
eyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYsIHVuc2lnbmVk
IHNob3J0IG1vZGUpIHsgcmV0dXJuIDA7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9JREJSZXF1ZXN0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0lEQlJlcXVlc3RUZXN0LmNwcAppbmRleCAyN2Y2YzFlNmIzNjRhNGUyMjM2YTE0MjU3
NWIzMjk3ZTY5YWY2Y2ZlLi5jYTY1NTRmOTE1MjBhM2U5NmVjOWYwOGZlMTdkZmYwZmU1MTk0YTAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQlJlcXVlc3RUZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQlJlcXVlc3RUZXN0LmNw
cApAQCAtNTMsNyArNTMsNiBAQCBURVNUKElEQlJlcXVlc3RUZXN0LCBFdmVudHNBZnRlclN0b3Bw
aW5nKQogICAgIHJlcXVlc3QtPm9uU3VjY2VzcyhET01TdHJpbmdMaXN0OjpjcmVhdGUoKSk7CiAg
ICAgcmVxdWVzdC0+b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFj
ZT4oKSwgSURCS2V5OjpjcmVhdGVJbnZhbGlkKCksIElEQktleTo6Y3JlYXRlSW52YWxpZCgpLCBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bGxWYWx1ZSgpKTsKICAgICByZXF1ZXN0LT5vblN1Y2Nl
c3MoSURCS2V5OjpjcmVhdGVJbnZhbGlkKCkpOwotICAgIHJlcXVlc3QtPm9uU3VjY2VzcyhQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4oKSk7CiAgICAgcmVxdWVzdC0+
b25TdWNjZXNzKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVsbFZhbHVlKCkpOwogICAgIHJlcXVl
c3QtPm9uU3VjY2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bGxWYWx1ZSgpLCBJREJLZXk6
OmNyZWF0ZUludmFsaWQoKSwgSURCS2V5UGF0aCgpKTsKICAgICByZXF1ZXN0LT5vblN1Y2Nlc3Mo
SURCS2V5OjpjcmVhdGVJbnZhbGlkKCksIElEQktleTo6Y3JlYXRlSW52YWxpZCgpLCBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6Om51bGxWYWx1ZSgpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0NGRiYjgyMTRkMDYwMzllMjNj
YmQzZjM1ZDM2NWVhYWMwNTcyYWU3Li5hZjU0ODI4ZTA5YzI1NzJmMGEzOTdiOGQwOTQ0MGJjMGNk
NDg4ZjQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTEtMTkgIERhdmlkIEdyb2dhbiAg
PGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogUmVtb3ZlIElEQkRh
dGFiYXNlLnNldFZlcnNpb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NDk3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVtb3ZlZC1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3JlbW92ZWQuanM6CisgICAgICAg
ICh0ZXN0KToKKwogMjAxMi0xMS0xOSAgRXJpayBBcnZpZHNzb24gIDxhcnZAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFVwZGF0ZSBET01FeGNlcHRpb24gbmFtZTogRGF0YUNsb25lRXJyb3IKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3JlbW92ZWQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVtb3ZlZC1leHBlY3RlZC50eHQK
aW5kZXggYmFiYmM3YzRlZDc5ZWUwNjYwOWUwYjk0NWNmZjdkNGNhN2Q4YjMxYy4uYTY4NDA0NzI1
OTc4NjJkNjY5MjRlYjg1NzQ1ZDgyYWNjZTUwY2MwNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVtb3ZlZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVtb3ZlZC1leHBlY3RlZC50eHQKQEAgLTYsNiArNiw3IEBAIE9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFCiBpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxm
LndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERC
IHx8IHNlbGYuT0luZGV4ZWREQjsKIAogUEFTUyBzZWxmLndlYmtpdElEQkRhdGFiYXNlRXJyb3Ig
aXMgdW5kZWZpbmVkLgorUEFTUyAnc2V0VmVyc2lvbicgaW4gSURCRGF0YWJhc2UucHJvdG90eXBl
IGlzIGZhbHNlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExF
VEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9y
ZW1vdmVkLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3JlbW92
ZWQuanMKaW5kZXggZDZmNjRiODMyM2FkMmNmYTNmYjZlMjIzOTVmMzc0NjAyOGM0MTM2Mi4uYTc1
MDA3NTg4NjkwOGQ0NDkyNjA1NjhkYThjNjQ2ZTcwOGI0Mjg3NSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3JlbW92ZWQuanMKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3JlbW92ZWQuanMKQEAgLTksNiArOSw3
IEBAIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CiAgICAg
c2hvdWxkQmVVbmRlZmluZWQoInNlbGYud2Via2l0SURCRGF0YWJhc2VFcnJvciIpOworICAgIHNo
b3VsZEJlRmFsc2UoIidzZXRWZXJzaW9uJyBpbiBJREJEYXRhYmFzZS5wcm90b3R5cGUiKTsKICAg
ICBmaW5pc2hKU1Rlc3QoKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175312</attachid>
            <date>2012-11-20 17:43:22 -0800</date>
            <delta_ts>2012-11-27 10:39:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94972-20121120174110.patch</filename>
            <type>text/plain</type>
            <size>43527</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2U4MTVlNmUwNjVmMTA0
YTc1MWFjMDU3ZTMyNjk4N2QwMDBjZmNiNC4uY2FmMTJmNmUwZmMyZjg3OWNkYmNhOGFjYTFmNjAy
NWMwMzBiYzE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTExLTE5ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFJl
bW92ZSBJREJEYXRhYmFzZS5zZXRWZXJzaW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ5NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGhhcyBiZWVuIG91dCBvZiB0aGUgc3BlYyBmb3Ig
b3ZlciBhIHllYXIuIE5vIG90aGVyIGJyb3dzZXIgaGFzCisgICAgICAgIGltcGxlbWVudGVkIGl0
IGZvciBjbG9zZSB0byBhIHllYXIuCisKKyAgICAgICAgVGVzdHMgLSByZW1vdmVkLmh0bWwKKwor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oOgorICAgICAgICAoSURC
Q2FsbGJhY2tzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6SURCRGF0YWJhc2UpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmg6CisgICAgICAgIChJREJEYXRhYmFzZSk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaWRsOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdDYWxscyk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oOgorICAg
ICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAgIChJREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3Qu
Y3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaDoKKwogMjAxMi0x
MS0yMCAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluZGV4
ZWREQjogTW92ZSBjb250cm9sIG9mIHRyYW5zYWN0aW9uIGNvbXBsZXRpb24gdG8gZnJvbnQgZW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDU4ZjFkOTI0NmFmYmI1YjU1ODI2MmZiZTUx
OTY1YzhiMmZkYmQxN2EuLjdmZTU3YTczZDU0Y2JmZTg5OTIxMjZhNjYxYTQ1YmY2YzgxOTVkZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMTEtMTkg
IERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWRE
QjogUmVtb3ZlIElEQkRhdGFiYXNlLnNldFZlcnNpb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDk3MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcDoK
KyAgICAgICAgKiBzcmMvSURCQ2FsbGJhY2tzUHJveHkuaDoKKyAgICAgICAgKElEQkNhbGxiYWNr
c1Byb3h5KToKKyAgICAgICAgKiBzcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwOgorICAg
ICAgICAqIHNyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oOgorICAgICAgICAoSURCRGF0YWJh
c2VCYWNrZW5kUHJveHkpOgorICAgICAgICAqIHNyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcDoK
KyAgICAgICAgKiBzcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oOgorICAgICAgICAoV2ViSURCQ2Fs
bGJhY2tzSW1wbCk6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHA6CisgICAg
ICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oOgorICAgICAgICAoV2ViSURCRGF0YWJhc2VJ
bXBsKToKKwogMjAxMi0xMS0yMCAgUm9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBVc2UgZW1iZWRkZXItc3VwcG9ydGVkIGdlc3R1cmUg
Y3VydmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJD
YWxsYmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNr
cy5oCmluZGV4IGQxNTExNDU0ZDgxODk3MGEyM2Y1ZGVkOGI2MjI4MzA3M2NiMTgyNTQuLmI4OGIw
Y2RlM2Y3MmFjZGVjODI3ODkwZTVjMjg5YTAxYjY2ZTIyYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oCkBAIC01Niw4ICs1Niw2IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFj
a2VuZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+IHBy
aW1hcnlLZXksIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPikgPSAwOwogICAgIC8v
IEZyb20gSURCT2JqZWN0U3RvcmUuYWRkKCkvcHV0KCksIElEQkluZGV4LmdldEtleSgpCiAgICAg
dmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4pID0gMDsKLSAgICAvLyBG
cm9tIElEQkRhdGFiYXNlLnNldFZlcnNpb24oKQotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3Mo
UGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KSA9IDA7CiAgICAgLy8g
RnJvbSBJREJPYmplY3RTdG9yZS9JREJJbmRleC5nZXQoKS9jb3VudCgpLCBhbmQgdmFyaW91cyBt
ZXRob2RzIHRoYXQgeWllbGQgbnVsbC91bmRlZmluZWQuCiAgICAgdmlydHVhbCB2b2lkIG9uU3Vj
Y2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pID0gMDsKICAgICAvLyBGcm9t
IElEQk9iamVjdFN0b3JlL0lEQkluZGV4LmdldCgpICh3aXRoIGtleSBpbmplY3Rpb24pCkBAIC03
Miw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQ
dHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPikgPSAwOwogICAgIC8vIEZyb20gSURCQ3Vyc29yLmFkdmFuY2Uo
KS9jb250aW51ZSgpCiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25z
dCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYga2V5cywgY29uc3QgVmVjdG9yPFJlZlB0cjxJREJL
ZXk+ID4mIHByaW1hcnlLZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gPiYgdmFsdWVzKSA9IDA7Ci0gICAgLy8gRnJvbSBJREJGYWN0b3J5Lm9wZW4oKS9kZWxl
dGVEYXRhYmFzZSgpLCBJREJEYXRhYmFzZS5zZXRWZXJzaW9uKCkKKyAgICAvLyBGcm9tIElEQkZh
Y3Rvcnkub3BlbigpL2RlbGV0ZURhdGFiYXNlKCkKICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2Vk
KCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQo
aW50NjRfdCBleGlzdGluZ1ZlcnNpb24pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICAv
LyBGcm9tIElEQkZhY3Rvcnkub3BlbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKaW5kZXggZTVlYTQxZTBhNjMwMzcwZjBkODZjM2U1ZmQ0
MWU3MjZjNzJmNjhiMS4uZGEyYzlkYWU5NDNkMzc4MjVhMzA5ZTYyMzY5NDE3Mjc4NDZiZjEyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNw
cApAQCAtNjQsNyArNjQsNiBAQCBJREJEYXRhYmFzZTo6SURCRGF0YWJhc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZQogICAgICwgbV9jbG9z
ZVBlbmRpbmcoZmFsc2UpCiAgICAgLCBtX2NvbnRleHRTdG9wcGVkKGZhbHNlKQogICAgICwgbV9k
YXRhYmFzZUNhbGxiYWNrcyhjYWxsYmFja3MpCi0gICAgLCBtX2RpZFNwYW1Db25zb2xlKGZhbHNl
KQogewogICAgIC8vIFdlIHBhc3MgYSByZWZlcmVuY2Ugb2YgdGhpcyBvYmplY3QgYmVmb3JlIGl0
IGNhbiBiZSBhZG9wdGVkLgogICAgIHJlbGF4QWRvcHRpb25SZXF1aXJlbWVudCgpOwpAQCAtMjAy
LDMwICsyMDEsNiBAQCB2b2lkIElEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBT
dHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxJ
REJWZXJzaW9uQ2hhbmdlUmVxdWVzdD4gSURCRGF0YWJhc2U6OnNldFZlcnNpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBFeGNlcHRpb25D
b2RlJiBlYykKLXsKLSAgICBpZiAoIW1fZGlkU3BhbUNvbnNvbGUpIHsKLSAgICAgICAgU3RyaW5n
IGNvbnNvbGVNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJUaGUgc2V0VmVyc2lvbigpIG1ldGhvZCBp
cyBub24tc3RhbmRhcmQgYW5kIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRoZSBcInVwZ3JhZGVuZWVk
ZWRcIiBldmVudCBpbnN0ZWFkLiIpOwotICAgICAgICBjb250ZXh0LT5hZGRDb25zb2xlTWVzc2Fn
ZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBXYXJuaW5nTWVzc2FnZUxldmVsLCBj
b25zb2xlTWVzc2FnZSk7Ci0gICAgICAgIG1fZGlkU3BhbUNvbnNvbGUgPSB0cnVlOwotICAgIH0K
LQotICAgIGlmICh2ZXJzaW9uLmlzTnVsbCgpKSB7Ci0gICAgICAgIGVjID0gVHlwZUVycm9yOwot
ICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAobV92ZXJzaW9uQ2hhbmdlVHJhbnNh
Y3Rpb24pIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURf
U1RBVEVfRVJSOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBSZWZQdHI8SURCVmVy
c2lvbkNoYW5nZVJlcXVlc3Q+IHJlcXVlc3QgPSBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdDo6Y3Jl
YXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCB2ZXJzaW9uKTsKLSAgICBBU1NFUlQo
bV9iYWNrZW5kKTsKLSAgICBtX2JhY2tlbmQtPnNldFZlcnNpb24odmVyc2lvbiwgcmVxdWVzdCwg
bV9kYXRhYmFzZUNhbGxiYWNrcywgZWMpOwotICAgIHJldHVybiByZXF1ZXN0OwotfQotCiBQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uPiBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNjb3BlLCBjb25z
dCBTdHJpbmcmIG1vZGVTdHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghc2Nv
cGUuc2l6ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2UuaAppbmRleCBlZTJkMjMyMzRjZmExN2E2MGJlNDhhNDZmYjc2NjdhNjY2ZDAxMDI2Li5i
Nzg5NzFiMTIwNDY4OTI1ODAwNjc1YjAxMDk0OGMwZDI5YWZhNTY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKQEAgLTY4LDcgKzY4LDYgQEAg
cHVibGljOgogICAgIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYg
bW9kZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRy
YW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIG1vZGUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3Jl
KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURC
VmVyc2lvbkNoYW5nZVJlcXVlc3Q+IHNldFZlcnNpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgY2xvc2Uo
KTsKIAogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWJvcnQpOwpAQCAtMTI5
LDggKzEyOCw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBtX2VucXVl
dWVkRXZlbnRzOwogCiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBtX2RhdGFiYXNl
Q2FsbGJhY2tzOwotCi0gICAgYm9vbCBtX2RpZFNwYW1Db25zb2xlOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2UuaWRsCmluZGV4IDRlZjYyYWYxODMyYjE2OWM1ZDllNWJlMmQxYTQ2MzE1ODFhNzEy
OTAuLjMwMTkyOTdmMmE0YmM4ZDQ1MTA3OTk1OTA3NzljZjRmYzAzM2UyOTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5pZGwKQEAgLTQyLDgg
KzQyLDYgQEAKICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CiAgICAgdm9p
ZCBkZWxldGVPYmplY3RTdG9yZShpbiBET01TdHJpbmcgbmFtZSkKICAgICAgICAgcmFpc2VzIChJ
REJEYXRhYmFzZUV4Y2VwdGlvbik7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRdIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0IHNldFZlcnNpb24oaW4gRE9NU3RyaW5nIHZlcnNp
b24pCi0gICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOwogICAgIFtDYWxsV2l0
aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbihpbiBE
T01TdHJpbmdMaXN0IHN0b3JlTmFtZXMsIGluIFtPcHRpb25hbD1EZWZhdWx0SXNOdWxsU3RyaW5n
XSBET01TdHJpbmcgbW9kZSkKICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7
CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlRyYW5zYWN0aW9uIHRy
YW5zYWN0aW9uKGluIHNlcXVlbmNlPFN0cmluZz4gc3RvcmVOYW1lcywgaW4gW09wdGlvbmFsPURl
ZmF1bHRJc051bGxTdHJpbmddIERPTVN0cmluZyBtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApp
bmRleCAwZGM4MDIxMDk4ZmVhMzhkNTFkOGI5YjlhNzQ2NTVmNjU2ZGZlNmE2Li5iZTU5NWI4ZTBi
ZmVmYjUzYjVhYWQ0ODliOWYzNmQ2YTk5OTMyYzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApA
QCAtOTYsMjggKzk2LDYgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2Nh
bGxiYWNrczsKIH07CiAKLWNsYXNzIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdTZXRW
ZXJzaW9uQ2FsbCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8UGVuZGluZ1NldFZl
cnNpb25DYWxsPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRh
YmFzZUNhbGxiYWNrcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgUGVuZGlu
Z1NldFZlcnNpb25DYWxsKHZlcnNpb24sIGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MpKTsK
LSAgICB9Ci0gICAgU3RyaW5nIHZlcnNpb24oKSB7IHJldHVybiBtX3ZlcnNpb247IH0KLSAgICBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKCkgeyByZXR1cm4gbV9jYWxsYmFja3M7
IH0KLSAgICBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNr
cygpIHsgcmV0dXJuIG1fZGF0YWJhc2VDYWxsYmFja3M7IH0KLQotcHJpdmF0ZToKLSAgICBQZW5k
aW5nU2V0VmVyc2lvbkNhbGwoY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRh
YmFzZUNhbGxiYWNrcykKLSAgICAgICAgOiBtX3ZlcnNpb24odmVyc2lvbikKLSAgICAgICAgLCBt
X2NhbGxiYWNrcyhjYWxsYmFja3MpCi0gICAgICAgICwgbV9kYXRhYmFzZUNhbGxiYWNrcyhkYXRh
YmFzZUNhbGxiYWNrcykKLSAgICB7Ci0gICAgfQotICAgIFN0cmluZyBtX3ZlcnNpb247Ci0gICAg
UmVmUHRyPElEQkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7Ci0gICAgUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzPiBtX2RhdGFiYXNlQ2FsbGJhY2tzOwotfTsKLQogUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUJhY2tlbmRJbXBsPiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBJREJCYWNraW5nU3RvcmUqIGRhdGFiYXNlLCBJREJGYWN0b3J5QmFja2VuZElt
cGwqIGZhY3RvcnksIGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllcikKIHsKICAgICBSZWZQ
dHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gYmFja2VuZCA9IGFkb3B0UmVmKG5ldyBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsKG5hbWUsIGRhdGFiYXNlLCBmYWN0b3J5LCB1bmlxdWVJZGVudGlmaWVy
KSk7CkBAIC0yMzUsNjQgKzIxMyw2IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6ZGVs
ZXRlT2JqZWN0U3RvcmVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwKICAgICB0cmFu
c2FjdGlvbi0+ZGlkQ29tcGxldGVUYXNrRXZlbnRzKCk7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6c2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3M+IHBycERhdGFiYXNlQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7Ci0gICAgUmVmUHRyPElE
QkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcyA9IHBycERhdGFiYXNlQ2FsbGJh
Y2tzOwotICAgIGlmICghbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5jb250YWlucyhkYXRhYmFzZUNh
bGxiYWNrcykpIHsKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6
OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUiwgIkNvbm5lY3Rpb24g
d2FzIGNsb3NlZCBiZWZvcmUgc2V0IHZlcnNpb24gdHJhbnNhY3Rpb24gd2FzIGNyZWF0ZWQiKSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgZm9yIChEYXRhYmFzZUNhbGxiYWNrc1NldDo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmJlZ2luKCk7IGl0ICE9
IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgLy8gRnJvbnQg
ZW5kIGVuc3VyZXMgdGhlIGV2ZW50IGlzIG5vdCBmaXJlZCBhdCBjb25uZWN0aW9ucyB0aGF0IGhh
dmUgY2xvc2VQZW5kaW5nIHNldC4KLSAgICAgICAgaWYgKCppdCAhPSBkYXRhYmFzZUNhbGxiYWNr
cykKLSAgICAgICAgICAgICgqaXQpLT5vblZlcnNpb25DaGFuZ2UodmVyc2lvbik7Ci0gICAgfQot
ICAgIC8vIEZJWE1FOiBPbmx5IGZpcmUgb25CbG9ja2VkIGlmIHRoZXJlIGFyZSBvcGVuIGNvbm5l
Y3Rpb25zIGFmdGVyIHRoZQotICAgIC8vIFZlcnNpb25DaGFuZ2VFdmVudHMgYXJlIHJlY2VpdmVk
LCBub3QganVzdCBzZXQgdXAgdG8gZmlyZS4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzExMzAKLSAgICBpZiAoY29ubmVjdGlvbkNvdW50KCkgPiAxKSB7
Ci0gICAgICAgIGNhbGxiYWNrcy0+b25CbG9ja2VkKCk7Ci0gICAgICAgIE93blB0cjxQZW5kaW5n
U2V0VmVyc2lvbkNhbGw+IHBlbmRpbmdTZXRWZXJzaW9uQ2FsbCA9IFBlbmRpbmdTZXRWZXJzaW9u
Q2FsbDo6Y3JlYXRlKHZlcnNpb24sIGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MpOwotICAg
ICAgICBtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMuYXBwZW5kKHBlbmRpbmdTZXRWZXJzaW9uQ2Fs
bC5yZWxlYXNlKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX3J1bm5pbmdW
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pIHsKLSAgICAgICAgT3duUHRyPFBlbmRpbmdTZXRWZXJz
aW9uQ2FsbD4gcGVuZGluZ1NldFZlcnNpb25DYWxsID0gUGVuZGluZ1NldFZlcnNpb25DYWxsOjpj
cmVhdGUodmVyc2lvbiwgY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcyk7Ci0gICAgICAgIG1f
cGVuZGluZ1NldFZlcnNpb25DYWxscy5hcHBlbmQocGVuZGluZ1NldFZlcnNpb25DYWxsLnJlbGVh
c2UoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBWZWN0b3I8aW50NjRfdD4gb2Jq
ZWN0U3RvcmVJZHM7Ci0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4g
dHJhbnNhY3Rpb25JbnRlcmZhY2UgPSB0aGlzLT50cmFuc2FjdGlvbihvYmplY3RTdG9yZUlkcywg
SURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpm
cm9tKHRyYW5zYWN0aW9uSW50ZXJmYWNlLmdldCgpKTsKLSAgICBBU1NFUlQoIWVjKTsKLQotICAg
IFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZSA9IHRoaXM7Ci0gICAgaWYg
KCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKAotICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tU
YXNrKCZJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRWZXJzaW9uSW50ZXJuYWwsIGRhdGFiYXNl
LCB2ZXJzaW9uLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSwKLSAgICAgICAgICAgIGNyZWF0ZUNh
bGxiYWNrVGFzaygmSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cmVzZXRWZXJzaW9uLCBkYXRhYmFz
ZSwgbV9tZXRhZGF0YS52ZXJzaW9uLCBtX21ldGFkYXRhLmludFZlcnNpb24pKSkgewotICAgICAg
ICAvLyBGSVhNRTogUmVtb3ZlIG9uZSBvZiB0aGUgZm9sbG93aW5nIGxpbmVzLgotICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOwotICAgIH0KLX0KLQotdm9pZCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpzZXRWZXJzaW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYg
dmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBwcnBUcmFuc2FjdGlvbikKLXsKLSAgICBSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBwcnBUcmFuc2FjdGlvbjsK
LSAgICBpbnQ2NF90IGRhdGFiYXNlSWQgPSBkYXRhYmFzZS0+aWQoKTsKLSAgICBkYXRhYmFzZS0+
bV9tZXRhZGF0YS52ZXJzaW9uID0gdmVyc2lvbjsKLSAgICBkYXRhYmFzZS0+bV9tZXRhZGF0YS5p
bnRWZXJzaW9uID0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uOwotICAgIGlmICgh
ZGF0YWJhc2UtPm1fYmFja2luZ1N0b3JlLT51cGRhdGVJREJEYXRhYmFzZU1ldGFEYXRhKHRyYW5z
YWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBkYXRhYmFzZUlkLCBkYXRhYmFzZS0+
bV9tZXRhZGF0YS52ZXJzaW9uKSB8fCAhZGF0YWJhc2UtPm1fYmFja2luZ1N0b3JlLT51cGRhdGVJ
REJEYXRhYmFzZUludFZlcnNpb24odHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
KCksIGRhdGFiYXNlSWQsIGRhdGFiYXNlLT5tX21ldGFkYXRhLmludFZlcnNpb24pKSB7Ci0gICAg
ICAgIFJlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBlcnJvciA9IElEQkRhdGFiYXNlRXJyb3I6OmNy
ZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJFcnJvciB3cml0aW5nIGRh
dGEgdG8gc3RhYmxlIHN0b3JhZ2UuIik7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihlcnJv
cik7Ci0gICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydChlcnJvcik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U+KHRyYW5zYWN0aW9uKSk7Ci19Ci0KIHZvaWQgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6c2V0SW50VmVyc2lvbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlLCBpbnQ2NF90IHZl
cnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uKQogewogICAgIFJlZlB0cjxJREJDYWxs
YmFja3M+IGNhbGxiYWNrcyhwcnBDYWxsYmFja3MpOwpAQCAtMzY5LDI4ICsyODksMTAgQEAgdm9p
ZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwcm9jZXNzUGVuZGluZ0NhbGxzKCkKICAgICAgICAg
Ly8gRmFsbCB0aHJvdWdoIHdoZW4gY29tcGxldGUsIGFzIHBlbmRpbmcgZGVsZXRlcyBtYXkgYmUg
KHBhcnRpYWxseSkgdW5ibG9ja2VkLgogICAgIH0KIAotICAgIC8vIFBlbmRpbmcgY2FsbHMgbWF5
IGJlIHJlcXVldWVkIG9yIGFib3J0ZWQKLSAgICBEZXF1ZTxPd25QdHI8UGVuZGluZ1NldFZlcnNp
b25DYWxsPiA+IHBlbmRpbmdTZXRWZXJzaW9uQ2FsbHM7Ci0gICAgbV9wZW5kaW5nU2V0VmVyc2lv
bkNhbGxzLnN3YXAocGVuZGluZ1NldFZlcnNpb25DYWxscyk7Ci0gICAgd2hpbGUgKCFwZW5kaW5n
U2V0VmVyc2lvbkNhbGxzLmlzRW1wdHkoKSkgewotICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICAgICAgT3duUHRyPFBlbmRpbmdTZXRWZXJzaW9uQ2FsbD4gcGVuZGluZ1NldFZlcnNp
b25DYWxsID0gcGVuZGluZ1NldFZlcnNpb25DYWxscy50YWtlRmlyc3QoKTsKLSAgICAgICAgc2V0
VmVyc2lvbihwZW5kaW5nU2V0VmVyc2lvbkNhbGwtPnZlcnNpb24oKSwgcGVuZGluZ1NldFZlcnNp
b25DYWxsLT5jYWxsYmFja3MoKSwgcGVuZGluZ1NldFZlcnNpb25DYWxsLT5kYXRhYmFzZUNhbGxi
YWNrcygpLCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOwotICAgIH0KLQotICAgIC8vIElmIHRo
ZXJlIHdlcmUgYW55IHBlbmRpbmcgc2V0IHZlcnNpb24gY2FsbHMsIHdlIGJldHRlciBoYXZlIHN0
YXJ0ZWQgb25lLgotICAgIEFTU0VSVChtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMuaXNFbXB0eSgp
IHx8IG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik7Ci0KLSAgICAvLyBtX3BlbmRp
bmdTZXRWZXJzaW9uQ2FsbHMgaXMgbm9uLWVtcHR5IGluIHR3byBjYXNlczoKLSAgICAvLyAxKSBX
aGVuIHR3byB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9ucyBhcmUgcmVxdWVzdGVkIHdoaWxlIGFu
b3RoZXIKLSAgICAvLyAgICB2ZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbiBpcyBydW5uaW5nLgot
ICAgIC8vIDIpIFdoZW4gdGhyZWUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbnMgYXJlIHJlcXVl
c3RlZCBpbiBhIHJvdywgYmVmb3JlCi0gICAgLy8gICAgYW55IG9mIHRoZWlyIGV2ZW50IGhhbmRs
ZXJzIGFyZSBydW4uCiAgICAgLy8gTm90ZSB0aGF0IHRoaXMgY2hlY2sgaXMgb25seSBhbiBvcHRp
bWl6YXRpb24gdG8gcmVkdWNlIHF1ZXVlLWNodXJuIGFuZAogICAgIC8vIG5vdCBuZWNlc3Nhcnkg
Zm9yIGNvcnJlY3RuZXNzOyBkZWxldGVEYXRhYmFzZSBhbmQgb3BlbkNvbm5lY3Rpb24gd2lsbAog
ICAgIC8vIHJlcXVldWUgdGhlaXIgY2FsbHMgaWYgdGhpcyBjb25kaXRpb24gaXMgdHJ1ZS4KLSAg
ICBpZiAobV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8ICFtX3BlbmRpbmdTZXRW
ZXJzaW9uQ2FsbHMuaXNFbXB0eSgpKQorICAgIGlmIChtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFBlbmRpbmcgY2FsbHMgbWF5IGJl
IHJlcXVldWVkLgpAQCAtNDAyLDcgKzMwNCw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6cHJvY2Vzc1BlbmRpbmdDYWxscygpCiAgICAgfQogCiAgICAgLy8gVGhpcyBjaGVjayBpcyBh
bHNvIG5vdCByZWFsbHkgbmVlZGVkLCBvcGVuQ29ubmVjdGlvbiB3b3VsZCBqdXN0IHJlcXVldWUg
aXRzIGNhbGxzLgotICAgIGlmIChtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gfHwg
IW1fcGVuZGluZ1NldFZlcnNpb25DYWxscy5pc0VtcHR5KCkgfHwgIW1fcGVuZGluZ0RlbGV0ZUNh
bGxzLmlzRW1wdHkoKSkKKyAgICBpZiAobV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9u
IHx8ICFtX3BlbmRpbmdEZWxldGVDYWxscy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIERlcXVlPE93blB0cjxQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbD4gPiBwZW5kaW5nT3Bl
bldpdGhWZXJzaW9uQ2FsbHM7CkBAIC00MzIsNyArMzM0LDcgQEAgUGFzc1JlZlB0cjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0
aW9uKGMKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb24oUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxi
YWNrcz4gZGF0YWJhc2VDYWxsYmFja3MpCiB7CiAgICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlLmdl
dCgpKTsKLSAgICBpZiAoIW1fcGVuZGluZ0RlbGV0ZUNhbGxzLmlzRW1wdHkoKSB8fCBtX3J1bm5p
bmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gfHwgIW1fcGVuZGluZ1NldFZlcnNpb25DYWxscy5p
c0VtcHR5KCkpIHsKKyAgICBpZiAoIW1fcGVuZGluZ0RlbGV0ZUNhbGxzLmlzRW1wdHkoKSB8fCBt
X3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pIHsKICAgICAgICAgbV9wZW5kaW5nT3Bl
bkNhbGxzLmFwcGVuZChQZW5kaW5nT3BlbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIGRhdGFiYXNl
Q2FsbGJhY2tzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00OTQsNyArMzk2LDcgQEAg
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPgogewogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxi
YWNrcyA9IHBycENhbGxiYWNrczsKICAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRh
dGFiYXNlQ2FsbGJhY2tzID0gcHJwRGF0YWJhc2VDYWxsYmFja3M7Ci0gICAgaWYgKCFtX3BlbmRp
bmdEZWxldGVDYWxscy5pc0VtcHR5KCkgfHwgbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0
aW9uIHx8ICFtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMuaXNFbXB0eSgpKSB7CisgICAgaWYgKCFt
X3BlbmRpbmdEZWxldGVDYWxscy5pc0VtcHR5KCkgfHwgbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRy
YW5zYWN0aW9uKSB7CiAgICAgICAgIG1fcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLmFwcGVu
ZChQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6Y3JlYXRlKGNhbGxiYWNrcywgZGF0YWJhc2VD
YWxsYmFja3MsIHZlcnNpb24pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTUyMSw3ICs0
MjMsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uV2l0aFZl
cnNpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+CiAKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6ZGVsZXRlRGF0YWJhc2UoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNr
cykKIHsKLSAgICBpZiAobV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8ICFtX3Bl
bmRpbmdTZXRWZXJzaW9uQ2FsbHMuaXNFbXB0eSgpKSB7CisgICAgaWYgKG1fcnVubmluZ1ZlcnNp
b25DaGFuZ2VUcmFuc2FjdGlvbikgewogICAgICAgICBtX3BlbmRpbmdEZWxldGVDYWxscy5hcHBl
bmQoUGVuZGluZ0RlbGV0ZUNhbGw6OmNyZWF0ZShwcnBDYWxsYmFja3MpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAppbmRleCBmMGY0OTM4ZDE3YmVhZDhjZDFkNDI1
NGEwNzk4YjZkNmRlMzZiMTRmLi4yN2ZkMGY3MTFkZjcwMjMwNTQ3Mjk3MmM1ZTAxYTY0ZTcxN2Ew
NzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCkBAIC02Myw3ICs2Myw2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIElEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdDsKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RT
dG9yZShpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBi
b29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCwg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgRXhjZXB0aW9u
Q29kZSYpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U+IHRyYW5zYWN0aW9uKGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYsIHVuc2lnbmVkIHNob3J0
KTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNr
cz4pOwogCkBAIC04NSw3ICs4NCw2IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgdm9pZCBjcmVh
dGVPYmplY3RTdG9yZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw+LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+KTsKICAgICBzdGF0
aWMgdm9pZCBkZWxldGVPYmplY3RTdG9yZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+
KTsKLSAgICBzdGF0aWMgdm9pZCBzZXRWZXJzaW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4sIGNvbnN0IFN0cmluZyYg
dmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw+KTsKICAgICBzdGF0aWMgdm9pZCBzZXRJbnRWZXJzaW9uSW50ZXJuYWwo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1w
bD4sIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsPik7CiAKICAgICAvLyBUaGVzZSBhcmUgdXNlZCBhcyBzZXRWZXJzaW9uIHRyYW5zYWN0aW9u
IGFib3J0IHRhc2tzLgpAQCAtMTA5LDkgKzEwNyw2IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBI
YXNoU2V0PElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqPiBUcmFuc2FjdGlvblNldDsKICAgICBU
cmFuc2FjdGlvblNldCBtX3RyYW5zYWN0aW9uczsKIAotICAgIGNsYXNzIFBlbmRpbmdTZXRWZXJz
aW9uQ2FsbDsKLSAgICBEZXF1ZTxPd25QdHI8UGVuZGluZ1NldFZlcnNpb25DYWxsPiA+IG1fcGVu
ZGluZ1NldFZlcnNpb25DYWxsczsKLQogICAgIGNsYXNzIFBlbmRpbmdPcGVuQ2FsbDsKICAgICBE
ZXF1ZTxPd25QdHI8UGVuZGluZ09wZW5DYWxsPiA+IG1fcGVuZGluZ09wZW5DYWxsczsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCA5YWFiNTY0NGJhNDg2M2MwN2E2N2U0MWQ5MDdm
NDFkMWQxOGU0ODM1Li5lNmU1ZTg3MjE0MTkyMWFhZDVhYzY3NGY3MGY1Y2YwZWE1MzI4ZDQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNTUsNyArNTUsNiBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBj
cmVhdGVPYmplY3RTdG9yZShpbnQ2NF90LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktl
eVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0
b3JlKGludDY0X3QsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNv
ZGUmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJz
aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxs
YmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKGNvbnN0IFZlY3RvcjxpbnQ2
NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgY2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pID0gMDsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCmlu
ZGV4IGU0ZDE2N2ZmYWQwYTNiMjE1MjBhODEwNTQ0NjhlNDkyYmQ5NWQyNzIuLjI3MzcwYjY5YjQx
ZWI3ODBhZDM1MzkwOTBmMDU1NjIzMmM2MDRjMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCkBAIC0zMTEsMzEgKzMxMSw2IEBAIHZvaWQg
SURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PiBpZGJLZXkpCiAgICAgZW5x
dWV1ZUV2ZW50KGNyZWF0ZVN1Y2Nlc3NFdmVudCgpKTsKIH0KIAotdm9pZCBJREJSZXF1ZXN0Ojpv
blN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHBycEJh
Y2tlbmQpCi17Ci0gICAgSURCX1RSQUNFKCJJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoSURCVHJhbnNh
Y3Rpb24pIik7Ci0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gYmFj
a2VuZCA9IHBycEJhY2tlbmQ7Ci0KLSAgICBpZiAobV9jb250ZXh0U3RvcHBlZCB8fCAhc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKSB7Ci0gICAgICAgIC8vIFNob3VsZCBvbmx5IGJlIG51bGwgaW4g
dGVzdHMuCi0gICAgICAgIGlmIChiYWNrZW5kLmdldCgpKQotICAgICAgICAgICAgYmFja2VuZC0+
YWJvcnQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoIXNob3VsZEVucXVldWVF
dmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IGZy
b250ZW5kID0gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IGJhY2tlbmQsIFZlY3RvcjxTdHJpbmc+KCksIElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5H
RSwgbV9zb3VyY2UtPmlkYkRhdGFiYXNlKCkuZ2V0KCkpOwotICAgIGJhY2tlbmQtPnNldENhbGxi
YWNrcyhmcm9udGVuZC5nZXQoKSk7Ci0gICAgbV90cmFuc2FjdGlvbiA9IGZyb250ZW5kOwotCi0g
ICAgQVNTRVJUKG1fc291cmNlLT50eXBlKCkgPT0gSURCQW55OjpJREJEYXRhYmFzZVR5cGUpOwot
ICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uLT5pc1ZlcnNpb25DaGFuZ2UoKSk7Ci0KLSAgICBtX3Jl
c3VsdCA9IElEQkFueTo6Y3JlYXRlKGZyb250ZW5kLnJlbGVhc2UoKSk7Ci0gICAgZW5xdWV1ZUV2
ZW50KGNyZWF0ZVN1Y2Nlc3NFdmVudCgpKTsKLX0KLQogdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nl
c3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSkKIHsKICAgICBJREJfVFJBQ0UoIklEQlJlcXVlc3Q6Om9uU3VjY2VzcyhTZXJpYWxpemVkU2Ny
aXB0VmFsdWUpIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1
ZXN0LmgKaW5kZXggMmRjMmRlOWNkZjVjNzM5NTQxNjQzNGY5MTExNzcxOTkwNDRlOTZkOS4uZWRh
YTdiYTE2YjY5MWFlMDY3ZThhZDc2MjEzNzA2MGJiZDViZjc0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaApAQCAtOTEsNyArOTEsNiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+
KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2Vu
ZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1h
cnlLZXksIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CiAgICAgdmlydHVhbCB2
b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4pOwotICAgIHZpcnR1YWwgdm9pZCBvblN1
Y2Nlc3MoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KTsKICAgICB2
aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7
CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgY29uc3QgSURCS2V5UGF0aCYpOwogICAgIHZpcnR1
YWwgdm9pZCBvblN1Y2Nlc3MoaW50NjRfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKaW5kZXggODFjYjU0OWU1NDc3NTlmMzQxZTExNDM5
YjU4OTc4ZTEzMDBlMmIwNy4uODM3Y2MzMmE2YjAwMDBkYWY5NDdiMWRlNzUxZTU2NzYwODI4NmRl
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5
LmNwcApAQCAtODcsMTEgKzg3LDYgQEAgdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNz
KFBhc3NSZWZQdHI8SURCS2V5PiBpZGJLZXkpCiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhX
ZWJJREJLZXkoaWRiS2V5KSk7CiB9CiAKLXZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2Vz
cyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCkKLXsK
LSAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKG5ldyBXZWJJREJUcmFuc2FjdGlvbkltcGwoYmFj
a2VuZCkpOwotfQotCiB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0
cjxET01TdHJpbmdMaXN0PiBkb21TdHJpbmdMaXN0KQogewogICAgIG1fY2FsbGJhY2tzLT5vblN1
Y2Nlc3MoV2ViRE9NU3RyaW5nTGlzdChkb21TdHJpbmdMaXN0KSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaAppbmRleCBjOTQwNjk4ZjcxMDE1ZWRh
ZmRiNmQwMjc4MDEyZWM3MDcxMjU3ZGJiLi42NWYzYjc0MGE4MmVlOGFlMmQ4MmIwMjU5MjNiZTBl
NjRlMGE0MTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxs
YmFja3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNr
c1Byb3h5LmgKQEAgLTUxLDcgKzUxLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1
Y2Nlc3MoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4gcHJp
bWFyeUtleSwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKICAg
ICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlPik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRy
PFdlYkNvcmU6OklEQktleT4pOwotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0
cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KTsKICAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
Pik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiwgY29uc3QgV2Vi
Q29yZTo6SURCS2V5UGF0aCYpOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoaW50NjRfdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tl
bmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tl
bmRQcm94eS5jcHAKaW5kZXggMGJjOTU0NjZkOGIzMDVkYTlhZjQ3NTMyMDVlMWMyNGZmNmZkYTkx
MS4uNTVlOWE3MmY0ZTc4MjY4YmQxNTAwM2UyZDc0YmE0ZTVmMmMzNGZmNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNw
cApAQCAtODUsMTIgKzg1LDYgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6ZGVsZXRl
T2JqZWN0U3RvcmUoaW50NjRfdCBvYmplY3RTdG9yZUlkLCBJREJUcmFuc2EKICAgICBtX3dlYklE
QkRhdGFiYXNlLT5kZWxldGVPYmplY3RTdG9yZShvYmplY3RTdG9yZUlkLCAqdHJhbnNhY3Rpb25Q
cm94eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24oKSwgZWMpOwogfQogCi12b2lkIElEQkRhdGFiYXNl
QmFja2VuZFByb3h5OjpzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNr
cz4gZGF0YWJhc2VDYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIEFTU0VSVCht
X3dlYklEQkRhdGFiYXNlKTsKLSAgICBtX3dlYklEQkRhdGFiYXNlLT5zZXRWZXJzaW9uKHZlcnNp
b24sIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyksIGVjKTsKLX0KLQogUGFzc1Jl
ZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZFBy
b3h5Ojp0cmFuc2FjdGlvbihjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCB1
bnNpZ25lZCBzaG9ydCBtb2RlKQogewogICAgIE93blB0cjxXZWJJREJUcmFuc2FjdGlvbj4gdHJh
bnNhY3Rpb24gPSBhZG9wdFB0cihtX3dlYklEQkRhdGFiYXNlLT50cmFuc2FjdGlvbihvYmplY3RT
dG9yZUlkcywgbW9kZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkRhdGFiYXNlQmFja2VuZFByb3h5LmgKaW5kZXggYWE4ZmRmMGM5ZWY3MWE4ODc5NjljYzNiZGEy
ZjVlOTkwOGYyMjNhMy4uOTdjZmY0NWRlZTNlMmQyYmViYTkxMTY1MDI3ZDliMzI5YWNmYTBmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5k
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tl
bmRQcm94eS5oCkBAIC00Niw3ICs0Niw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVj
dFN0b3JlKGludDY0X3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgV2ViQ29yZTo6SURCS2V5
UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVPYmplY3RTdG9yZShpbnQ2NF90LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNh
bGxiYWNrcz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3M+LCBXZWJD
b3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24oY29uc3QgVmVjdG9yPGlu
dDY0X3Q+JiwgdW5zaWduZWQgc2hvcnQgbW9kZSk7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKFBh
c3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3M+KTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcAppbmRleCA4ZDEy
Y2ZhM2VhOWJhZTMyZDQ3YzMzNGZjMGUwMTdkMDkwZGRhN2E4Li5kY2YzMDNiMzkxMTJhYWExZTY3
YzY1ZGY3NDJkOTNhMjRiMDZmZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcApAQCAtODYsMTEgKzg2LDYgQEAgdm9pZCBXZWJJ
REJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MoY29uc3QgV2ViSURCS2V5JiBrZXkpCiAgICAgbV9j
YWxsYmFja3MtPm9uU3VjY2VzcyhrZXkpOwogfQogCi12b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6
Om9uU3VjY2VzcyhXZWJJREJUcmFuc2FjdGlvbiogd2ViS2l0SW5zdGFuY2UpCi17Ci0gICAgbV9j
YWxsYmFja3MtPm9uU3VjY2VzcyhJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eTo6Y3JlYXRlKGFk
b3B0UHRyKHdlYktpdEluc3RhbmNlKSkpOwotfQotCiB2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6
Om9uU3VjY2Vzcyhjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSkKIHsKICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKHNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxs
YmFja3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJ
bXBsLmgKaW5kZXggYmE0NDQ4NDI4MzNhMWViNDMyYWU1MzBhNDk2ZDFlZTk3OWU1MGYyYS4uOGY4
YzAyYWFhMDI4Y2ZjMzliZTkyMWFiYzBkNmI3ZGEzZmQ1MzI2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaApAQCAtNDYsNyArNDYsNiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJJREJDdXJzb3IqLCBjb25z
dCBXZWJJREJLZXkmLCBjb25zdCBXZWJJREJLZXkmIHByaW1hcnlLZXksIGNvbnN0IFdlYlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoV2ViSURCRGF0
YWJhc2UqKTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKGNvbnN0IFdlYklEQktleSYpOwot
ICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoV2ViSURCVHJhbnNhY3Rpb24qKTsKICAgICB2aXJ0
dWFsIHZvaWQgb25TdWNjZXNzKGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYpOwogICAg
IHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiwg
Y29uc3QgV2ViSURCS2V5JiwgY29uc3QgV2ViSURCS2V5UGF0aCYpOwogICAgIHZpcnR1YWwgdm9p
ZCBvblN1Y2Nlc3MoY29uc3QgV2ViSURCS2V5JiwgY29uc3QgV2ViSURCS2V5JiBwcmltYXJ5S2V5
LCBjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCmluZGV4IDU5YWJkNTMyOTI4MDFm
MzA0OTNkYmQwYzQ3ZjZlMDBkMzYwYmRkNDEuLmM5NGRlN2JiNDM1MzgzNTM2OGEzZDAyYjllMjNk
ZGM3MGE0ZDNmYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QkRhdGFiYXNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
RGF0YWJhc2VJbXBsLmNwcApAQCAtNzUsMTEgKzc1LDYgQEAgdm9pZCBXZWJJREJEYXRhYmFzZUlt
cGw6OmRlbGV0ZU9iamVjdFN0b3JlKGxvbmcgbG9uZyBvYmplY3RTdG9yZUlkLCBjb25zdCBXZWJJ
REIKICAgICBtX2RhdGFiYXNlQmFja2VuZC0+ZGVsZXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVJ
ZCwgdHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKCksIGVjKTsK
IH0KIAotdm9pZCBXZWJJREJEYXRhYmFzZUltcGw6OnNldFZlcnNpb24oY29uc3QgV2ViU3RyaW5n
JiB2ZXJzaW9uLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgV2ViRXhjZXB0aW9uQ29kZSYg
ZWMpCi17Ci0gICAgbV9kYXRhYmFzZUJhY2tlbmQtPnNldFZlcnNpb24odmVyc2lvbiwgSURCQ2Fs
bGJhY2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFja3MpKSwgbV9kYXRhYmFzZUNhbGxi
YWNrcywgZWMpOwotfQotCiBXZWJJREJUcmFuc2FjdGlvbiogV2ViSURCRGF0YWJhc2VJbXBsOjp0
cmFuc2FjdGlvbihjb25zdCBXZWJWZWN0b3I8bG9uZyBsb25nPiYgb2JqZWN0U3RvcmVJZHMsIHVu
c2lnbmVkIHNob3J0IG1vZGUpCiB7CiAgICAgVmVjdG9yPGludDY0X3Q+IG9iamVjdFN0b3JlSWRM
aXN0KG9iamVjdFN0b3JlSWRzLnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oCmluZGV4IGU3Mjg3NDJjNjQ3NDg0MTI2Y2YzZWE3ZGQ5
NTZlZGZmMzJjNzI4MGYuLmE2NTVmOGFmNWI5NTY4OWZkYmZhM2IxY2I2ZWVkMTFjMDQ0ZjEwNmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5o
CkBAIC01NCw3ICs1NCw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgV2ViSURCT2JqZWN0U3Rv
cmUqIGNyZWF0ZU9iamVjdFN0b3JlKGxvbmcgbG9uZywgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBj
b25zdCBXZWJJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBjb25zdCBXZWJJREJUcmFu
c2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2Jq
ZWN0U3RvcmUobG9uZyBsb25nIG9iamVjdFN0b3JlSWQsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9u
JiwgV2ViRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0
IFdlYlN0cmluZyYgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiwgV2ViRXhjZXB0aW9uQ29kZSYp
OwogICAgIHZpcnR1YWwgV2ViSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKGNvbnN0IFdlYlZl
Y3Rvcjxsb25nIGxvbmc+JiBuYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSk7CiAgICAgdmlydHVh
bCB2b2lkIGZvcmNlQ2xvc2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3Qu
Y3BwCmluZGV4IGU5N2JjN2Y2ZGY5YTQxOGNmZjY1NjBkMmMxMjM0ZWJjMWQzYTY4NDguLjIyNmI4
YWZlMDM5NjYxYWVjYzk0MjljMTljYjZlOWYyZWQ1N2I1MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcApAQCAt
ODgsNyArODgsNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fd2FzU3VjY2Vzc0RCQ2FsbGVkID0gdHJ1
ZTsKICAgICB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4p
IE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPikgT1ZFUlJJREUg
eyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgY29uc3QgSURCS2V5UGF0aCYpIE9WRVJSSURF
IHsgfTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKGludDY0X3QpIE9WRVJSSURFIHsgfQpA
QCAtMTUzLDcgKzE1Miw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90LCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSB7IHJldHVybiAw
OyB9CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShpbnQ2NF90LCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IHNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgeyB9
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4g
dHJhbnNhY3Rpb24oRE9NU3RyaW5nTGlzdCogc3RvcmVOYW1lcywgdW5zaWduZWQgc2hvcnQgbW9k
ZSwgRXhjZXB0aW9uQ29kZSYpIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbihjb25zdCBWZWN0b3I8
aW50NjRfdD4mLCB1bnNpZ25lZCBzaG9ydCBtb2RlKSB7IHJldHVybiAwOyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCUmVxdWVzdFRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJSZXF1ZXN0VGVzdC5jcHAKaW5kZXggMjdmNmMx
ZTZiMzY0YTRlMjIzNmExNDI1NzViMzI5N2U2OWFmNmNmZS4uY2E2NTU0ZjkxNTIwYTNlOTZlYzlm
MDhmZTE3ZGZmMGZlNTE5NGEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9JREJSZXF1ZXN0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9JREJSZXF1ZXN0VGVzdC5jcHAKQEAgLTUzLDcgKzUzLDYgQEAgVEVTVChJREJSZXF1ZXN0VGVz
dCwgRXZlbnRzQWZ0ZXJTdG9wcGluZykKICAgICByZXF1ZXN0LT5vblN1Y2Nlc3MoRE9NU3RyaW5n
TGlzdDo6Y3JlYXRlKCkpOwogICAgIHJlcXVlc3QtPm9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1
cnNvckJhY2tlbmRJbnRlcmZhY2U+KCksIElEQktleTo6Y3JlYXRlSW52YWxpZCgpLCBJREJLZXk6
OmNyZWF0ZUludmFsaWQoKSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKSk7CiAg
ICAgcmVxdWVzdC0+b25TdWNjZXNzKElEQktleTo6Y3JlYXRlSW52YWxpZCgpKTsKLSAgICByZXF1
ZXN0LT5vblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+
KCkpOwogICAgIHJlcXVlc3QtPm9uU3VjY2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bGxW
YWx1ZSgpKTsKICAgICByZXF1ZXN0LT5vblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpu
dWxsVmFsdWUoKSwgSURCS2V5OjpjcmVhdGVJbnZhbGlkKCksIElEQktleVBhdGgoKSk7CiAgICAg
cmVxdWVzdC0+b25TdWNjZXNzKElEQktleTo6Y3JlYXRlSW52YWxpZCgpLCBJREJLZXk6OmNyZWF0
ZUludmFsaWQoKSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKSk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MjBlMGU0OWEyODM3MjBmMjk2MTZhZTU4NzZjOWZmOTI2MDM5NDQzOC4uMGE3Y2M4M2ViOTNlNmYx
MWMxNzBhZjVmMDVlMDg4YTRlMjhlNjJkMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTEx
LTE5ICBEYXZpZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRl
eGVkREI6IFJlbW92ZSBJREJEYXRhYmFzZS5zZXRWZXJzaW9uIEFQSQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ5NzIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3JlbW92
ZWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9y
ZW1vdmVkLmpzOgorICAgICAgICAodGVzdCk6CisKKzIwMTItMTEtMjAgIERhdmlkIEdyb2dhbiAg
PGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogcmVtb3ZlIHNldFZl
cnNpb24gZnJvbSBpbnNwZWN0b3IgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMjg1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIHNldFZlcnNpb24gd2FzIGNvbnRhaW5lZCBzbyB0aGUgY29udmVy
c2lvbiB0byB1cGdyYWRlbmVlZGVkIHdhcworICAgICAgICBzdHJhaWdodGZvcndhcmQuCisKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtZGF0YS1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFi
YXNlLXN0cnVjdHVyZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0
b3IvaW5kZXhlZGRiL2luZGV4ZWRkYi10ZXN0LmpzOgorICAgICAgICAoLnJlcXVlc3Qub25zdWNj
ZXNzLm9uU3VjY2Vzcy5yZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCk6CisgICAgICAgICgucmVxdWVz
dC5vbnN1Y2Nlc3Mub25TdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKC5yZXF1
ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChkb1dpdGhWZXJzaW9uVHJhbnNhY3Rpb24pOgorICAg
ICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9yZXNvdXJjZXMtcGFuZWwtZXhw
ZWN0ZWQudHh0OgorCiAyMDEyLTExLTIwICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJFR1JFU1NJT04ocjEzMTEwNik6IG1hZ25pdHVkZS1wZXJmLmpzIGNhbGxz
IGJpbmQgb24gdW5kZWZpbmVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtZGF0YS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtZGF0YS1leHBlY3RlZC50
eHQKaW5kZXggZDAxMTk3MzRjMmQ4YWEyMmQ2YTE4NzVkNjE1NjcyZWU4NGYwMzY4Ny4uOTdlMGZk
ZGE2MjQ5NjE3ZThkNmEyYjZlODMyOWMwZDYyMWJiZmY1NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLWRhdGEtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRh
YmFzZS1kYXRhLWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDUgQEAKIENPTlNPTEUgTUVTU0FHRTog
bGluZSAxMDg6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrMQotQ09OU09MRSBNRVNT
QUdFOiBUaGUgc2V0VmVyc2lvbigpIG1ldGhvZCBpcyBub24tc3RhbmRhcmQgYW5kIHdpbGwgYmUg
cmVtb3ZlZC4gVXNlIHRoZSAidXBncmFkZW5lZWRlZCIgZXZlbnQgaW5zdGVhZC4KIENPTlNPTEUg
TUVTU0FHRTogbGluZSAxMDg6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrMgotQ09O
U09MRSBNRVNTQUdFOiBUaGUgc2V0VmVyc2lvbigpIG1ldGhvZCBpcyBub24tc3RhbmRhcmQgYW5k
IHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRoZSAidXBncmFkZW5lZWRlZCIgZXZlbnQgaW5zdGVhZC4K
IENPTlNPTEUgTUVTU0FHRTogbGluZSAxMDg6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxi
YWNrMwogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEwODogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJf
Y2FsbGJhY2s0CiBDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTA4OiBJbnNwZWN0b3JUZXN0LkluZGV4
ZWREQl9jYWxsYmFjazUKQEAgLTksOSArNyw3IEBAIENPTlNPTEUgTUVTU0FHRTogbGluZSAxMDg6
IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrNgogQ09OU09MRSBNRVNTQUdFOiBsaW5l
IDEwODogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2s3CiBDT05TT0xFIE1FU1NBR0U6
IGxpbmUgMTA4OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazgKIENPTlNPTEUgTUVT
U0FHRTogbGluZSAxMDg6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrOQotQ09OU09M
RSBNRVNTQUdFOiBUaGUgc2V0VmVyc2lvbigpIG1ldGhvZCBpcyBub24tc3RhbmRhcmQgYW5kIHdp
bGwgYmUgcmVtb3ZlZC4gVXNlIHRoZSAidXBncmFkZW5lZWRlZCIgZXZlbnQgaW5zdGVhZC4KIENP
TlNPTEUgTUVTU0FHRTogbGluZSAxMDg6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNr
MTAKLUNPTlNPTEUgTUVTU0FHRTogVGhlIHNldFZlcnNpb24oKSBtZXRob2QgaXMgbm9uLXN0YW5k
YXJkIGFuZCB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0aGUgInVwZ3JhZGVuZWVkZWQiIGV2ZW50IGlu
c3RlYWQuCiBDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTA4OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWRE
Ql9jYWxsYmFjazExCiBDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTA4OiBJbnNwZWN0b3JUZXN0Lklu
ZGV4ZWREQl9jYWxsYmFjazEyCiBUZXN0cyB0aGF0IGRhdGEgaXMgY29ycmVjdGx5IGxvYWRlZCBi
eSBJbmRleGVkREJNb2RlbCBmcm9tIEluZGV4ZWREQiBvYmplY3Qgc3RvcmUgYW5kIGluZGV4Lgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2Rh
dGFiYXNlLXN0cnVjdHVyZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2Utc3RydWN0dXJlLWV4cGVjdGVkLnR4dAppbmRleCBh
MjM2NWE2M2IxMzE3MTUxMTE3ZDdiMDY1N2I0Yjg5NWUyMjZlOWRhLi44NDdhNzlmZDY3YjAzYzk4
YTY3ZTVjNDE0YWNmNDdhNTU3ZGQ1M2E3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2Utc3RydWN0dXJlLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2Ut
c3RydWN0dXJlLWV4cGVjdGVkLnR4dApAQCAtMSwxOSArMSwxMSBAQAogQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDEwODogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2sxCi1DT05TT0xFIE1F
U1NBR0U6IFRoZSBzZXRWZXJzaW9uKCkgbWV0aG9kIGlzIG5vbi1zdGFuZGFyZCBhbmQgd2lsbCBi
ZSByZW1vdmVkLiBVc2UgdGhlICJ1cGdyYWRlbmVlZGVkIiBldmVudCBpbnN0ZWFkLgogQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDEwODogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2syCi1D
T05TT0xFIE1FU1NBR0U6IFRoZSBzZXRWZXJzaW9uKCkgbWV0aG9kIGlzIG5vbi1zdGFuZGFyZCBh
bmQgd2lsbCBiZSByZW1vdmVkLiBVc2UgdGhlICJ1cGdyYWRlbmVlZGVkIiBldmVudCBpbnN0ZWFk
LgogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEwODogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2Fs
bGJhY2szCi1DT05TT0xFIE1FU1NBR0U6IFRoZSBzZXRWZXJzaW9uKCkgbWV0aG9kIGlzIG5vbi1z
dGFuZGFyZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBVc2UgdGhlICJ1cGdyYWRlbmVlZGVkIiBldmVu
dCBpbnN0ZWFkLgogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEwODogSW5zcGVjdG9yVGVzdC5JbmRl
eGVkREJfY2FsbGJhY2s0Ci1DT05TT0xFIE1FU1NBR0U6IFRoZSBzZXRWZXJzaW9uKCkgbWV0aG9k
IGlzIG5vbi1zdGFuZGFyZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBVc2UgdGhlICJ1cGdyYWRlbmVl
ZGVkIiBldmVudCBpbnN0ZWFkLgogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEwODogSW5zcGVjdG9y
VGVzdC5JbmRleGVkREJfY2FsbGJhY2s1Ci1DT05TT0xFIE1FU1NBR0U6IFRoZSBzZXRWZXJzaW9u
KCkgbWV0aG9kIGlzIG5vbi1zdGFuZGFyZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBVc2UgdGhlICJ1
cGdyYWRlbmVlZGVkIiBldmVudCBpbnN0ZWFkLgogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEwODog
SW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2s2Ci1DT05TT0xFIE1FU1NBR0U6IFRoZSBz
ZXRWZXJzaW9uKCkgbWV0aG9kIGlzIG5vbi1zdGFuZGFyZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBV
c2UgdGhlICJ1cGdyYWRlbmVlZGVkIiBldmVudCBpbnN0ZWFkLgogQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDEwODogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2s3Ci1DT05TT0xFIE1FU1NB
R0U6IFRoZSBzZXRWZXJzaW9uKCkgbWV0aG9kIGlzIG5vbi1zdGFuZGFyZCBhbmQgd2lsbCBiZSBy
ZW1vdmVkLiBVc2UgdGhlICJ1cGdyYWRlbmVlZGVkIiBldmVudCBpbnN0ZWFkLgogQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDEwODogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2s4Ci1DT05T
T0xFIE1FU1NBR0U6IFRoZSBzZXRWZXJzaW9uKCkgbWV0aG9kIGlzIG5vbi1zdGFuZGFyZCBhbmQg
d2lsbCBiZSByZW1vdmVkLiBVc2UgdGhlICJ1cGdyYWRlbmVlZGVkIiBldmVudCBpbnN0ZWFkLgog
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDEwODogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJh
Y2s5CiBDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTA4OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9j
YWxsYmFjazEwCiBUZXN0cyB0aGF0IGRhdGFiYXNlIG5hbWVzIGFyZSBjb3JyZWN0bHkgbG9hZGVk
IGFuZCBzYXZlZCBpbiBJbmRleGVkREJNb2RlbC4KQEAgLTI3LDggKzE5LDggQEAgdGVzdERhdGFi
YXNlMQogCiBEdW1waW5nIGRhdGFiYXNlOgogdGVzdERhdGFiYXNlMQotICAgIGludFZlcnNpb246
IC0xCi0gICAgdmVyc2lvbjogMgorICAgIGludFZlcnNpb246IDIKKyAgICB2ZXJzaW9uOiAKICAg
ICBvYmplY3RTdG9yZXM6CiAgICAgdGVzdE9iamVjdFN0b3JlMQogICAgICAgICBrZXlQYXRoOiAi
dGVzdC5rZXkucGF0aCIKQEAgLTM3LDggKzI5LDggQEAgdGVzdERhdGFiYXNlMQogCiBEdW1waW5n
IGRhdGFiYXNlOgogdGVzdERhdGFiYXNlMQotICAgIGludFZlcnNpb246IC0xCi0gICAgdmVyc2lv
bjogMworICAgIGludFZlcnNpb246IDMKKyAgICB2ZXJzaW9uOiAKICAgICBvYmplY3RTdG9yZXM6
CiAgICAgdGVzdE9iamVjdFN0b3JlMQogICAgICAgICBrZXlQYXRoOiAidGVzdC5rZXkucGF0aCIK
QEAgLTUxLDggKzQzLDggQEAgdGVzdERhdGFiYXNlMQogCiBEdW1waW5nIGRhdGFiYXNlOgogdGVz
dERhdGFiYXNlMQotICAgIGludFZlcnNpb246IC0xCi0gICAgdmVyc2lvbjogNAorICAgIGludFZl
cnNpb246IDQKKyAgICB2ZXJzaW9uOiAKICAgICBvYmplY3RTdG9yZXM6CiAgICAgdGVzdE9iamVj
dFN0b3JlMQogICAgICAgICBrZXlQYXRoOiAidGVzdC5rZXkucGF0aCIKQEAgLTY5LDggKzYxLDgg
QEAgdGVzdERhdGFiYXNlMQogCiBEdW1waW5nIGRhdGFiYXNlOgogdGVzdERhdGFiYXNlMQotICAg
IGludFZlcnNpb246IC0xCi0gICAgdmVyc2lvbjogNQorICAgIGludFZlcnNpb246IDUKKyAgICB2
ZXJzaW9uOiAKICAgICBvYmplY3RTdG9yZXM6CiAgICAgdGVzdE9iamVjdFN0b3JlMQogICAgICAg
ICBrZXlQYXRoOiAidGVzdC5rZXkucGF0aCIKQEAgLTkxLDggKzgzLDggQEAgdGVzdERhdGFiYXNl
MQogCiBEdW1waW5nIGRhdGFiYXNlOgogdGVzdERhdGFiYXNlMQotICAgIGludFZlcnNpb246IC0x
Ci0gICAgdmVyc2lvbjogNgorICAgIGludFZlcnNpb246IDYKKyAgICB2ZXJzaW9uOiAKICAgICBv
YmplY3RTdG9yZXM6CiAgICAgdGVzdE9iamVjdFN0b3JlMQogICAgICAgICBrZXlQYXRoOiAidGVz
dC5rZXkucGF0aCIKQEAgLTEwOSw4ICsxMDEsOCBAQCB0ZXN0RGF0YWJhc2UxCiAKIER1bXBpbmcg
ZGF0YWJhc2U6CiB0ZXN0RGF0YWJhc2UxCi0gICAgaW50VmVyc2lvbjogLTEKLSAgICB2ZXJzaW9u
OiA3CisgICAgaW50VmVyc2lvbjogNworICAgIHZlcnNpb246IAogICAgIG9iamVjdFN0b3JlczoK
ICAgICB0ZXN0T2JqZWN0U3RvcmUxCiAgICAgICAgIGtleVBhdGg6ICJ0ZXN0LmtleS5wYXRoIgpA
QCAtMTIzLDggKzExNSw4IEBAIHRlc3REYXRhYmFzZTEKIAogRHVtcGluZyBkYXRhYmFzZToKIHRl
c3REYXRhYmFzZTEKLSAgICBpbnRWZXJzaW9uOiAtMQotICAgIHZlcnNpb246IDgKKyAgICBpbnRW
ZXJzaW9uOiA4CisgICAgdmVyc2lvbjogCiAgICAgb2JqZWN0U3RvcmVzOgogICAgIHRlc3RPYmpl
Y3RTdG9yZTEKICAgICAgICAga2V5UGF0aDogInRlc3Qua2V5LnBhdGgiCkBAIC0xMzMsOCArMTI1
LDggQEAgdGVzdERhdGFiYXNlMQogCiBEdW1waW5nIGRhdGFiYXNlOgogdGVzdERhdGFiYXNlMQot
ICAgIGludFZlcnNpb246IC0xCi0gICAgdmVyc2lvbjogOQorICAgIGludFZlcnNpb246IDkKKyAg
ICB2ZXJzaW9uOiAKICAgICBvYmplY3RTdG9yZXM6CiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2luZGV4ZWRkYi10ZXN0LmpzIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2luZGV4ZWRkYi10ZXN0Lmpz
CmluZGV4IGRhZDJjMTFmODYzZmI4NjdiNGVkNWViZDQwMDk1NTkwZjljNGJkNWMuLjc3N2ExYmQ1
NjM4ZDMzNTMyMTVlMDI0NjZjODFkZmMyMmE4OTBkN2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9pbmRleGVkZGItdGVzdC5qcworKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvaW5kZXhlZGRiLXRlc3Qu
anMKQEAgLTEzOCwxNCArMTM4LDE3IEBAIGZ1bmN0aW9uIGRvV2l0aFZlcnNpb25UcmFuc2FjdGlv
bihkYXRhYmFzZU5hbWUsIGNhbGxiYWNrLCBjb21taXRDYWxsYmFjaykKIAogICAgIGZ1bmN0aW9u
IHN0ZXAyKGRiKQogICAgIHsKLSAgICAgICAgdmFyIHJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKE51
bWJlcihkYi52ZXJzaW9uKSArIDEpOwotICAgICAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IG9uSW5k
ZXhlZERCQmxvY2tlZDsKKyAgICAgICAgdmFyIHZlcnNpb24gPSBkYi52ZXJzaW9uOworICAgICAg
ICBkYi5jbG9zZSgpOworICAgICAgICByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGF0YWJhc2VO
YW1lLCB2ZXJzaW9uICsgMSk7CiAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IG9uSW5kZXhlZERC
RXJyb3I7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc3RlcDM7Ci0KLSAgICAgICAgZnVu
Y3Rpb24gc3RlcDMoKQotICAgICAgICB7Ci0gICAgICAgICAgICBjYWxsYmFjayhkYiwgcmVxdWVz
dC5yZXN1bHQpOworICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGUp
IHsKKyAgICAgICAgICAgIHZhciBkYiA9IGUudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgICAgIHZh
ciB0cmFucyA9IGUudGFyZ2V0LnRyYW5zYWN0aW9uOworICAgICAgICAgICAgY2FsbGJhY2soZGIs
IHRyYW5zKTsKKyAgICAgICAgfTsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
bihlKSB7CisgICAgICAgICAgICB2YXIgZGIgPSBlLnRhcmdldC5yZXN1bHQ7CiAgICAgICAgICAg
ICBkYi5jbG9zZSgpOwogICAgICAgICAgICAgY29tbWl0Q2FsbGJhY2soKTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL3Jl
c291cmNlcy1wYW5lbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9pbmRleGVkZGIvcmVzb3VyY2VzLXBhbmVsLWV4cGVjdGVkLnR4dAppbmRleCBjODc0MDRl
N2ZiNTRlY2FmMjk0ZTI5NDUzNzY0MDM1NWY3MzAxZTc4Li5kM2NhYzFjYTUzMGQxMWM5ZTFkMjIy
MGNjM2NmZGI4NDYzODYzOWRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbmRleGVkZGIvcmVzb3VyY2VzLXBhbmVsLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvcmVzb3VyY2VzLXBhbmVsLWV4
cGVjdGVkLnR4dApAQCAtMSwxMSArMSw3IEBACiBDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTA4OiBJ
bnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazEKLUNPTlNPTEUgTUVTU0FHRTogVGhlIHNl
dFZlcnNpb24oKSBtZXRob2QgaXMgbm9uLXN0YW5kYXJkIGFuZCB3aWxsIGJlIHJlbW92ZWQuIFVz
ZSB0aGUgInVwZ3JhZGVuZWVkZWQiIGV2ZW50IGluc3RlYWQuCiBDT05TT0xFIE1FU1NBR0U6IGxp
bmUgMTA4OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazIKLUNPTlNPTEUgTUVTU0FH
RTogVGhlIHNldFZlcnNpb24oKSBtZXRob2QgaXMgbm9uLXN0YW5kYXJkIGFuZCB3aWxsIGJlIHJl
bW92ZWQuIFVzZSB0aGUgInVwZ3JhZGVuZWVkZWQiIGV2ZW50IGluc3RlYWQuCiBDT05TT0xFIE1F
U1NBR0U6IGxpbmUgMTA4OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazMKLUNPTlNP
TEUgTUVTU0FHRTogVGhlIHNldFZlcnNpb24oKSBtZXRob2QgaXMgbm9uLXN0YW5kYXJkIGFuZCB3
aWxsIGJlIHJlbW92ZWQuIFVzZSB0aGUgInVwZ3JhZGVuZWVkZWQiIGV2ZW50IGluc3RlYWQuCiBD
T05TT0xFIE1FU1NBR0U6IGxpbmUgMTA4OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFj
azQKLUNPTlNPTEUgTUVTU0FHRTogVGhlIHNldFZlcnNpb24oKSBtZXRob2QgaXMgbm9uLXN0YW5k
YXJkIGFuZCB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0aGUgInVwZ3JhZGVuZWVkZWQiIGV2ZW50IGlu
c3RlYWQuCiBDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTA4OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWRE
Ql9jYWxsYmFjazUKIENPTlNPTEUgTUVTU0FHRTogbGluZSAxMDg6IEluc3BlY3RvclRlc3QuSW5k
ZXhlZERCX2NhbGxiYWNrNgogVGVzdHMgSW5kZXhlZERCIHRyZWUgZWxlbWVudCBvbiByZXNvdXJj
ZXMgcGFuZWwuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZW1v
dmVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3JlbW92ZWQt
ZXhwZWN0ZWQudHh0CmluZGV4IGJhYmJjN2M0ZWQ3OWVlMDY2MDllMGI5NDVjZmY3ZDRjYTdkOGIz
MWMuLmE2ODQwNDcyNTk3ODYyZDY2OTI0ZWI4NTc0NWQ4MmFjY2U1MGNjMDcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3JlbW92ZWQtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3JlbW92ZWQtZXhwZWN0ZWQudHh0CkBAIC02
LDYgKzYsNyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogaW5kZXhlZERCID0gc2VsZi5pbmRl
eGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2Vs
Zi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CiAKIFBBU1Mgc2VsZi53ZWJraXRJREJE
YXRhYmFzZUVycm9yIGlzIHVuZGVmaW5lZC4KK1BBU1MgJ3NldFZlcnNpb24nIGluIElEQkRhdGFi
YXNlLnByb3RvdHlwZSBpcyBmYWxzZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQog
CiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvcmVtb3ZlZC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9yZW1vdmVkLmpzCmluZGV4IGQ2ZjY0YjgzMjNhZDJjZmEzZmI2ZTIyMzk1ZjM3NDYw
MjhjNDEzNjIuLmE3NTAwNzU4ODY5MDhkNDQ5MjYwNTY4ZGE4YzY0NmU3MDhiNDI4NzUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9yZW1vdmVkLmpz
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9yZW1vdmVkLmpz
CkBAIC05LDYgKzksNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICByZW1vdmVWZW5kb3JQcmVm
aXhlcygpOwogICAgIHNob3VsZEJlVW5kZWZpbmVkKCJzZWxmLndlYmtpdElEQkRhdGFiYXNlRXJy
b3IiKTsKKyAgICBzaG91bGRCZUZhbHNlKCInc2V0VmVyc2lvbicgaW4gSURCRGF0YWJhc2UucHJv
dG90eXBlIik7CiAgICAgZmluaXNoSlNUZXN0KCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176296</attachid>
            <date>2012-11-27 10:39:22 -0800</date>
            <delta_ts>2012-11-27 11:15:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94972-20121127103659.patch</filename>
            <type>text/plain</type>
            <size>34733</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1Nzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGFkNWYxNzViZGU1ZDc0
OWVmMGQxNzBlYTQ3YTlmZGUxY2EwMThkZC4uZTI3ODMzMjQ0OWMwNDE3ZTViZmZkNzQ5MTg0NDI4
MjQ0Y2ZjNDlhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTExLTE5ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFJl
bW92ZSBJREJEYXRhYmFzZS5zZXRWZXJzaW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ5NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGhhcyBiZWVuIG91dCBvZiB0aGUgc3BlYyBmb3Ig
b3ZlciBhIHllYXIuIE5vIG90aGVyIGJyb3dzZXIgaGFzCisgICAgICAgIGltcGxlbWVudGVkIGl0
IGZvciBjbG9zZSB0byBhIHllYXIuCisKKyAgICAgICAgVGVzdHMgLSByZW1vdmVkLmh0bWwKKwor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oOgorICAgICAgICAoSURC
Q2FsbGJhY2tzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6SURCRGF0YWJhc2UpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmg6CisgICAgICAgIChJREJEYXRhYmFzZSk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaWRsOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdDYWxscyk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oOgorICAg
ICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAgIChJREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3Qu
Y3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaDoKKwogMjAxMi0x
MS0yNiAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgTm9kZTog
UmVtb3ZlIElzU3luY2hyb25pemluZ1NWR0F0dHJpYnV0ZXNGbGFnLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCA4NDk2ZmNhNjk4NGFmMTlkMzM2YmY0OWFmZjNiNDI2OTcxYTAwMmY3Li5k
MzEwNTFhYjJlM2UwZDU1YTVhMjA5ZmEzNmJhZjkyY2FjZTlmZDA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTExLTE5ICBEYXZpZCBHcm9nYW4gIDxk
Z3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFJlbW92ZSBJREJEYXRh
YmFzZS5zZXRWZXJzaW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTQ5NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHNyYy9JREJDYWxsYmFja3NQcm94eS5jcHA6CisgICAgICAgICogc3JjL0lE
QkNhbGxiYWNrc1Byb3h5Lmg6CisgICAgICAgIChJREJDYWxsYmFja3NQcm94eSk6CisgICAgICAg
ICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKiBzcmMvSURCRGF0
YWJhc2VCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZFByb3h5KToK
KyAgICAgICAgKiBzcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHA6CisgICAgICAgICogc3JjL1dl
YklEQkNhbGxiYWNrc0ltcGwuaDoKKyAgICAgICAgKFdlYklEQkNhbGxiYWNrc0ltcGwpOgorICAg
ICAgICAqIHNyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwOgorICAgICAgICAqIHNyYy9XZWJJREJE
YXRhYmFzZUltcGwuaDoKKyAgICAgICAgKFdlYklEQkRhdGFiYXNlSW1wbCk6CisKIDIwMTItMTEt
MjYgIFZhcnVuIEphaW4gIDx2YXJ1bmphaW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIExvbmdQ
cmVzcyBhbmQgTG9uZ1RhcCBnZXN0dXJlcyBzaG91bGQgc3RhcnQgZHJhZy9kcm9wIGFuZCBvcGVu
IGNvbnRleHQgbWVudSByZXNwZWN0aXZlbHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oCmluZGV4IGQxNTExNDU0ZDgxODk3MGEyM2Y1ZGVkOGI2
MjI4MzA3M2NiMTgyNTQuLmI4OGIwY2RlM2Y3MmFjZGVjODI3ODkwZTVjMjg5YTAxYjY2ZTIyYzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNr
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5o
CkBAIC01Niw4ICs1Niw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBh
c3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8SURCS2V5Piwg
UGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPikgPSAwOwogICAgIC8vIEZyb20gSURCT2JqZWN0U3RvcmUuYWRkKCkvcHV0KCksIElE
QkluZGV4LmdldEtleSgpCiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElE
QktleT4pID0gMDsKLSAgICAvLyBGcm9tIElEQkRhdGFiYXNlLnNldFZlcnNpb24oKQotICAgIHZp
cnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U+KSA9IDA7CiAgICAgLy8gRnJvbSBJREJPYmplY3RTdG9yZS9JREJJbmRleC5nZXQoKS9j
b3VudCgpLCBhbmQgdmFyaW91cyBtZXRob2RzIHRoYXQgeWllbGQgbnVsbC91bmRlZmluZWQuCiAg
ICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4pID0gMDsKICAgICAvLyBGcm9tIElEQk9iamVjdFN0b3JlL0lEQkluZGV4LmdldCgpICh3aXRo
IGtleSBpbmplY3Rpb24pCkBAIC03Miw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1h
cnlLZXksIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPikgPSAwOwogICAgIC8vIEZy
b20gSURCQ3Vyc29yLmFkdmFuY2UoKS9jb250aW51ZSgpCiAgICAgdmlydHVhbCB2b2lkIG9uU3Vj
Y2Vzc1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYga2V5cywgY29u
c3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mIHByaW1hcnlLZXlzLCBjb25zdCBWZWN0b3I8UmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYgdmFsdWVzKSA9IDA7Ci0gICAgLy8gRnJvbSBJ
REJGYWN0b3J5Lm9wZW4oKS9kZWxldGVEYXRhYmFzZSgpLCBJREJEYXRhYmFzZS5zZXRWZXJzaW9u
KCkKKyAgICAvLyBGcm9tIElEQkZhY3Rvcnkub3BlbigpL2RlbGV0ZURhdGFiYXNlKCkKICAgICB2
aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZp
cnR1YWwgdm9pZCBvbkJsb2NrZWQoaW50NjRfdCBleGlzdGluZ1ZlcnNpb24pIHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KICAgICAvLyBGcm9tIElEQkZhY3Rvcnkub3BlbigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKaW5kZXggZTVlYTQx
ZTBhNjMwMzcwZjBkODZjM2U1ZmQ0MWU3MjZjNzJmNjhiMS4uZGEyYzlkYWU5NDNkMzc4MjVhMzA5
ZTYyMzY5NDE3Mjc4NDZiZjEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtNjQsNyArNjQsNiBAQCBJREJEYXRhYmFzZTo6SURC
RGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJE
YXRhYmFzZQogICAgICwgbV9jbG9zZVBlbmRpbmcoZmFsc2UpCiAgICAgLCBtX2NvbnRleHRTdG9w
cGVkKGZhbHNlKQogICAgICwgbV9kYXRhYmFzZUNhbGxiYWNrcyhjYWxsYmFja3MpCi0gICAgLCBt
X2RpZFNwYW1Db25zb2xlKGZhbHNlKQogewogICAgIC8vIFdlIHBhc3MgYSByZWZlcmVuY2Ugb2Yg
dGhpcyBvYmplY3QgYmVmb3JlIGl0IGNhbiBiZSBhZG9wdGVkLgogICAgIHJlbGF4QWRvcHRpb25S
ZXF1aXJlbWVudCgpOwpAQCAtMjAyLDMwICsyMDEsNiBAQCB2b2lkIElEQkRhdGFiYXNlOjpkZWxl
dGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAg
IH0KIH0KIAotUGFzc1JlZlB0cjxJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdD4gSURCRGF0YWJhc2U6
OnNldFZlcnNpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5n
JiB2ZXJzaW9uLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAoIW1fZGlkU3BhbUNvbnNv
bGUpIHsKLSAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJUaGUg
c2V0VmVyc2lvbigpIG1ldGhvZCBpcyBub24tc3RhbmRhcmQgYW5kIHdpbGwgYmUgcmVtb3ZlZC4g
VXNlIHRoZSBcInVwZ3JhZGVuZWVkZWRcIiBldmVudCBpbnN0ZWFkLiIpOwotICAgICAgICBjb250
ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBX
YXJuaW5nTWVzc2FnZUxldmVsLCBjb25zb2xlTWVzc2FnZSk7Ci0gICAgICAgIG1fZGlkU3BhbUNv
bnNvbGUgPSB0cnVlOwotICAgIH0KLQotICAgIGlmICh2ZXJzaW9uLmlzTnVsbCgpKSB7Ci0gICAg
ICAgIGVjID0gVHlwZUVycm9yOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAo
bV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9
Ci0KLSAgICBSZWZQdHI8SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q+IHJlcXVlc3QgPSBJREJWZXJz
aW9uQ2hhbmdlUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCB2
ZXJzaW9uKTsKLSAgICBBU1NFUlQobV9iYWNrZW5kKTsKLSAgICBtX2JhY2tlbmQtPnNldFZlcnNp
b24odmVyc2lvbiwgcmVxdWVzdCwgbV9kYXRhYmFzZUNhbGxiYWNrcywgZWMpOwotICAgIHJldHVy
biByZXF1ZXN0OwotfQotCiBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBJREJEYXRhYmFzZTo6
dHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHNjb3BlLCBjb25zdCBTdHJpbmcmIG1vZGVTdHJpbmcsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewogICAgIGlmICghc2NvcGUuc2l6ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaAppbmRleCBlZTJkMjMyMzRjZmExN2E2MGJlNDhh
NDZmYjc2NjdhNjY2ZDAxMDI2Li5iNzg5NzFiMTIwNDY4OTI1ODAwNjc1YjAxMDk0OGMwZDI5YWZh
NTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
LmgKQEAgLTY4LDcgKzY4LDYgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b24+IHRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYsIGNvbnN0IFN0cmluZyYgbW9kZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG1vZGUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2
b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYp
OwotICAgIFBhc3NSZWZQdHI8SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q+IHNldFZlcnNpb24oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgRXhjZXB0aW9uQ29k
ZSYpOwogICAgIHZvaWQgY2xvc2UoKTsKIAogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElT
VEVORVIoYWJvcnQpOwpAQCAtMTI5LDggKzEyOCw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJl
ZlB0cjxFdmVudD4gPiBtX2VucXVldWVkRXZlbnRzOwogCiAgICAgUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzPiBtX2RhdGFiYXNlQ2FsbGJhY2tzOwotCi0gICAgYm9vbCBtX2RpZFNwYW1Db25z
b2xlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaWRsIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaWRsCmluZGV4IGY2YjBiZTQ1MDliNmRhYjEy
MGU5MGRkNWJkNDU1MzdiMzY4NzFiOWYuLjBiZWQyNGYxYjUwZWE3YjE4NzY2OWRiMzA0MWZkMmRj
ZWFlNGQ3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZS5pZGwKQEAgLTQyLDggKzQyLDYgQEAKICAgICAgICAgcmFpc2VzIChET01FeGNlcHRp
b24pOwogICAgIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW4gRE9NU3RyaW5nIG5hbWUpCiAgICAg
ICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dF0gSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qgc2V0VmVyc2lvbihpbiBET01TdHJpbmcg
dmVyc2lvbikKLSAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgIFtDYWxsV2l0aD1T
Y3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbihpbiBET01T
dHJpbmdMaXN0IHN0b3JlTmFtZXMsIGluIFtPcHRpb25hbD1EZWZhdWx0SXNOdWxsU3RyaW5nXSBE
T01TdHJpbmcgbW9kZSkKICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgIFtDYWxs
V2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbihp
biBzZXF1ZW5jZTxTdHJpbmc+IHN0b3JlTmFtZXMsIGluIFtPcHRpb25hbD1EZWZhdWx0SXNOdWxs
U3RyaW5nXSBET01TdHJpbmcgbW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggMGRjODAy
MTA5OGZlYTM4ZDUxZDhiOWI5YTc0NjU1ZjY1NmRmZTZhNi4uYmU1OTViOGUwYmZlZmI1M2I1YWFk
NDg5YjlmMzZkNmE5OTkzMmMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAgLTk2LDI4ICs5
Niw2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7CiB9
OwogCi1jbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nU2V0VmVyc2lvbkNhbGwg
ewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFBlbmRpbmdTZXRWZXJzaW9uQ2FsbD4g
Y3JlYXRlKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFj
a3MpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBlbmRpbmdTZXRWZXJzaW9u
Q2FsbCh2ZXJzaW9uLCBjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKSk7Ci0gICAgfQotICAg
IFN0cmluZyB2ZXJzaW9uKCkgeyByZXR1cm4gbV92ZXJzaW9uOyB9Ci0gICAgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IGNhbGxiYWNrcygpIHsgcmV0dXJuIG1fY2FsbGJhY2tzOyB9Ci0gICAgUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MoKSB7IHJldHVy
biBtX2RhdGFiYXNlQ2FsbGJhY2tzOyB9Ci0KLXByaXZhdGU6Ci0gICAgUGVuZGluZ1NldFZlcnNp
b25DYWxsKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFj
a3MpCi0gICAgICAgIDogbV92ZXJzaW9uKHZlcnNpb24pCi0gICAgICAgICwgbV9jYWxsYmFja3Mo
Y2FsbGJhY2tzKQotICAgICAgICAsIG1fZGF0YWJhc2VDYWxsYmFja3MoZGF0YWJhc2VDYWxsYmFj
a3MpCi0gICAgewotICAgIH0KLSAgICBTdHJpbmcgbV92ZXJzaW9uOwotICAgIFJlZlB0cjxJREJD
YWxsYmFja3M+IG1fY2FsbGJhY2tzOwotICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4g
bV9kYXRhYmFzZUNhbGxiYWNrczsKLX07Ci0KIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5k
SW1wbD4gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwg
SURCQmFja2luZ1N0b3JlKiBkYXRhYmFzZSwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiBmYWN0b3J5
LCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpCiB7CiAgICAgUmVmUHRyPElEQkRhdGFi
YXNlQmFja2VuZEltcGw+IGJhY2tlbmQgPSBhZG9wdFJlZihuZXcgSURCRGF0YWJhc2VCYWNrZW5k
SW1wbChuYW1lLCBkYXRhYmFzZSwgZmFjdG9yeSwgdW5pcXVlSWRlbnRpZmllcikpOwpAQCAtMjM1
LDY0ICsyMTMsNiBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZU9iamVjdFN0
b3JlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosCiAgICAgdHJhbnNhY3Rpb24tPmRp
ZENvbXBsZXRlVGFza0V2ZW50cygpOwogfQogCi12b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6
OnNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gcHJwQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBwcnBEYXRh
YmFzZUNhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwotICAgIFJlZlB0cjxJREJEYXRhYmFzZUNh
bGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MgPSBwcnBEYXRhYmFzZUNhbGxiYWNrczsKLSAgICBp
ZiAoIW1fZGF0YWJhc2VDYWxsYmFja3NTZXQuY29udGFpbnMoZGF0YWJhc2VDYWxsYmFja3MpKSB7
Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURC
RGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIsICJDb25uZWN0aW9uIHdhcyBjbG9zZWQg
YmVmb3JlIHNldCB2ZXJzaW9uIHRyYW5zYWN0aW9uIHdhcyBjcmVhdGVkIikpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIGZvciAoRGF0YWJhc2VDYWxsYmFja3NTZXQ6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5iZWdpbigpOyBpdCAhPSBtX2RhdGFiYXNl
Q2FsbGJhY2tzU2V0LmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIC8vIEZyb250IGVuZCBlbnN1cmVz
IHRoZSBldmVudCBpcyBub3QgZmlyZWQgYXQgY29ubmVjdGlvbnMgdGhhdCBoYXZlIGNsb3NlUGVu
ZGluZyBzZXQuCi0gICAgICAgIGlmICgqaXQgIT0gZGF0YWJhc2VDYWxsYmFja3MpCi0gICAgICAg
ICAgICAoKml0KS0+b25WZXJzaW9uQ2hhbmdlKHZlcnNpb24pOwotICAgIH0KLSAgICAvLyBGSVhN
RTogT25seSBmaXJlIG9uQmxvY2tlZCBpZiB0aGVyZSBhcmUgb3BlbiBjb25uZWN0aW9ucyBhZnRl
ciB0aGUKLSAgICAvLyBWZXJzaW9uQ2hhbmdlRXZlbnRzIGFyZSByZWNlaXZlZCwgbm90IGp1c3Qg
c2V0IHVwIHRvIGZpcmUuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTcxMTMwCi0gICAgaWYgKGNvbm5lY3Rpb25Db3VudCgpID4gMSkgewotICAgICAgICBj
YWxsYmFja3MtPm9uQmxvY2tlZCgpOwotICAgICAgICBPd25QdHI8UGVuZGluZ1NldFZlcnNpb25D
YWxsPiBwZW5kaW5nU2V0VmVyc2lvbkNhbGwgPSBQZW5kaW5nU2V0VmVyc2lvbkNhbGw6OmNyZWF0
ZSh2ZXJzaW9uLCBjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKTsKLSAgICAgICAgbV9wZW5k
aW5nU2V0VmVyc2lvbkNhbGxzLmFwcGVuZChwZW5kaW5nU2V0VmVyc2lvbkNhbGwucmVsZWFzZSgp
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAobV9ydW5uaW5nVmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uKSB7Ci0gICAgICAgIE93blB0cjxQZW5kaW5nU2V0VmVyc2lvbkNhbGw+IHBl
bmRpbmdTZXRWZXJzaW9uQ2FsbCA9IFBlbmRpbmdTZXRWZXJzaW9uQ2FsbDo6Y3JlYXRlKHZlcnNp
b24sIGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MpOwotICAgICAgICBtX3BlbmRpbmdTZXRW
ZXJzaW9uQ2FsbHMuYXBwZW5kKHBlbmRpbmdTZXRWZXJzaW9uQ2FsbC5yZWxlYXNlKCkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgVmVjdG9yPGludDY0X3Q+IG9iamVjdFN0b3JlSWRz
OwotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9u
SW50ZXJmYWNlID0gdGhpcy0+dHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVJZHMsIElEQlRyYW5zYWN0
aW9uOjpWRVJTSU9OX0NIQU5HRSk7Ci0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2Fj
dGlvbkludGVyZmFjZS5nZXQoKSk7Ci0gICAgQVNTRVJUKCFlYyk7Ci0KLSAgICBSZWZQdHI8SURC
RGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2UgPSB0aGlzOwotICAgIGlmICghdHJhbnNhY3Rp
b24tPnNjaGVkdWxlVGFzaygKLSAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6c2V0VmVyc2lvbkludGVybmFsLCBkYXRhYmFzZSwgdmVyc2lvbiwg
Y2FsbGJhY2tzLCB0cmFuc2FjdGlvbiksCi0gICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2so
JklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJlc2V0VmVyc2lvbiwgZGF0YWJhc2UsIG1fbWV0YWRh
dGEudmVyc2lvbiwgbV9tZXRhZGF0YS5pbnRWZXJzaW9uKSkpIHsKLSAgICAgICAgLy8gRklYTUU6
IFJlbW92ZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBsaW5lcy4KLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9O
X0lOQUNUSVZFX0VSUjsKLSAgICB9Ci19Ci0KLXZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
c2V0VmVyc2lvbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbD4gcHJwVHJhbnNhY3Rpb24pCi17Ci0gICAgUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gcHJwVHJhbnNhY3Rpb247Ci0gICAgaW50NjRf
dCBkYXRhYmFzZUlkID0gZGF0YWJhc2UtPmlkKCk7Ci0gICAgZGF0YWJhc2UtPm1fbWV0YWRhdGEu
dmVyc2lvbiA9IHZlcnNpb247Ci0gICAgZGF0YWJhc2UtPm1fbWV0YWRhdGEuaW50VmVyc2lvbiA9
IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbjsKLSAgICBpZiAoIWRhdGFiYXNlLT5t
X2JhY2tpbmdTdG9yZS0+dXBkYXRlSURCRGF0YWJhc2VNZXRhRGF0YSh0cmFuc2FjdGlvbi0+YmFj
a2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgZGF0YWJhc2VJZCwgZGF0YWJhc2UtPm1fbWV0YWRhdGEu
dmVyc2lvbikgfHwgIWRhdGFiYXNlLT5tX2JhY2tpbmdTdG9yZS0+dXBkYXRlSURCRGF0YWJhc2VJ
bnRWZXJzaW9uKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBkYXRhYmFz
ZUlkLCBkYXRhYmFzZS0+bV9tZXRhZGF0YS5pbnRWZXJzaW9uKSkgewotICAgICAgICBSZWZQdHI8
SURCRGF0YWJhc2VFcnJvcj4gZXJyb3IgPSBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0
YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiRXJyb3Igd3JpdGluZyBkYXRhIHRvIHN0YWJs
ZSBzdG9yYWdlLiIpOwotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoZXJyb3IpOwotICAgICAg
ICB0cmFuc2FjdGlvbi0+YWJvcnQoZXJyb3IpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGNhbGxiYWNrcy0+b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlPih0cmFuc2FjdGlvbikpOwotfQotCiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6
OnNldEludFZlcnNpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsPiB0cmFuc2FjdGlvbikKIHsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxs
YmFja3MocHJwQ2FsbGJhY2tzKTsKQEAgLTM2OSwyOCArMjg5LDEwIEBAIHZvaWQgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdDYWxscygpCiAgICAgICAgIC8vIEZhbGwgdGhy
b3VnaCB3aGVuIGNvbXBsZXRlLCBhcyBwZW5kaW5nIGRlbGV0ZXMgbWF5IGJlIChwYXJ0aWFsbHkp
IHVuYmxvY2tlZC4KICAgICB9CiAKLSAgICAvLyBQZW5kaW5nIGNhbGxzIG1heSBiZSByZXF1ZXVl
ZCBvciBhYm9ydGVkCi0gICAgRGVxdWU8T3duUHRyPFBlbmRpbmdTZXRWZXJzaW9uQ2FsbD4gPiBw
ZW5kaW5nU2V0VmVyc2lvbkNhbGxzOwotICAgIG1fcGVuZGluZ1NldFZlcnNpb25DYWxscy5zd2Fw
KHBlbmRpbmdTZXRWZXJzaW9uQ2FsbHMpOwotICAgIHdoaWxlICghcGVuZGluZ1NldFZlcnNpb25D
YWxscy5pc0VtcHR5KCkpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAg
IE93blB0cjxQZW5kaW5nU2V0VmVyc2lvbkNhbGw+IHBlbmRpbmdTZXRWZXJzaW9uQ2FsbCA9IHBl
bmRpbmdTZXRWZXJzaW9uQ2FsbHMudGFrZUZpcnN0KCk7Ci0gICAgICAgIHNldFZlcnNpb24ocGVu
ZGluZ1NldFZlcnNpb25DYWxsLT52ZXJzaW9uKCksIHBlbmRpbmdTZXRWZXJzaW9uQ2FsbC0+Y2Fs
bGJhY2tzKCksIHBlbmRpbmdTZXRWZXJzaW9uQ2FsbC0+ZGF0YWJhc2VDYWxsYmFja3MoKSwgZWMp
OwotICAgICAgICBBU1NFUlQoIWVjKTsKLSAgICB9Ci0KLSAgICAvLyBJZiB0aGVyZSB3ZXJlIGFu
eSBwZW5kaW5nIHNldCB2ZXJzaW9uIGNhbGxzLCB3ZSBiZXR0ZXIgaGF2ZSBzdGFydGVkIG9uZS4K
LSAgICBBU1NFUlQobV9wZW5kaW5nU2V0VmVyc2lvbkNhbGxzLmlzRW1wdHkoKSB8fCBtX3J1bm5p
bmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOwotCi0gICAgLy8gbV9wZW5kaW5nU2V0VmVyc2lv
bkNhbGxzIGlzIG5vbi1lbXB0eSBpbiB0d28gY2FzZXM6Ci0gICAgLy8gMSkgV2hlbiB0d28gdmVy
c2lvbmNoYW5nZSB0cmFuc2FjdGlvbnMgYXJlIHJlcXVlc3RlZCB3aGlsZSBhbm90aGVyCi0gICAg
Ly8gICAgdmVyc2lvbiBjaGFuZ2UgdHJhbnNhY3Rpb24gaXMgcnVubmluZy4KLSAgICAvLyAyKSBX
aGVuIHRocmVlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb25zIGFyZSByZXF1ZXN0ZWQgaW4gYSBy
b3csIGJlZm9yZQotICAgIC8vICAgIGFueSBvZiB0aGVpciBldmVudCBoYW5kbGVycyBhcmUgcnVu
LgogICAgIC8vIE5vdGUgdGhhdCB0aGlzIGNoZWNrIGlzIG9ubHkgYW4gb3B0aW1pemF0aW9uIHRv
IHJlZHVjZSBxdWV1ZS1jaHVybiBhbmQKICAgICAvLyBub3QgbmVjZXNzYXJ5IGZvciBjb3JyZWN0
bmVzczsgZGVsZXRlRGF0YWJhc2UgYW5kIG9wZW5Db25uZWN0aW9uIHdpbGwKICAgICAvLyByZXF1
ZXVlIHRoZWlyIGNhbGxzIGlmIHRoaXMgY29uZGl0aW9uIGlzIHRydWUuCi0gICAgaWYgKG1fcnVu
bmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCAhbV9wZW5kaW5nU2V0VmVyc2lvbkNhbGxz
LmlzRW1wdHkoKSkKKyAgICBpZiAobV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKQog
ICAgICAgICByZXR1cm47CiAKICAgICAvLyBQZW5kaW5nIGNhbGxzIG1heSBiZSByZXF1ZXVlZC4K
QEAgLTQwMiw3ICszMDQsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnByb2Nlc3NQ
ZW5kaW5nQ2FsbHMoKQogICAgIH0KIAogICAgIC8vIFRoaXMgY2hlY2sgaXMgYWxzbyBub3QgcmVh
bGx5IG5lZWRlZCwgb3BlbkNvbm5lY3Rpb24gd291bGQganVzdCByZXF1ZXVlIGl0cyBjYWxscy4K
LSAgICBpZiAobV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8ICFtX3BlbmRpbmdT
ZXRWZXJzaW9uQ2FsbHMuaXNFbXB0eSgpIHx8ICFtX3BlbmRpbmdEZWxldGVDYWxscy5pc0VtcHR5
KCkpCisgICAgaWYgKG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCAhbV9wZW5k
aW5nRGVsZXRlQ2FsbHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBEZXF1ZTxP
d25QdHI8UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw+ID4gcGVuZGluZ09wZW5XaXRoVmVyc2lv
bkNhbGxzOwpAQCAtNDMyLDcgKzMzNCw3IEBAIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2FjdGlvbihjCiB2b2lk
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFi
YXNlQ2FsbGJhY2tzKQogewogICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZS5nZXQoKSk7Ci0gICAg
aWYgKCFtX3BlbmRpbmdEZWxldGVDYWxscy5pc0VtcHR5KCkgfHwgbV9ydW5uaW5nVmVyc2lvbkNo
YW5nZVRyYW5zYWN0aW9uIHx8ICFtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMuaXNFbXB0eSgpKSB7
CisgICAgaWYgKCFtX3BlbmRpbmdEZWxldGVDYWxscy5pc0VtcHR5KCkgfHwgbV9ydW5uaW5nVmVy
c2lvbkNoYW5nZVRyYW5zYWN0aW9uKSB7CiAgICAgICAgIG1fcGVuZGluZ09wZW5DYWxscy5hcHBl
bmQoUGVuZGluZ09wZW5DYWxsOjpjcmVhdGUoY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcykp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDk0LDcgKzM5Niw3IEBAIHZvaWQgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4KIHsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBD
YWxsYmFja3M7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxi
YWNrcyA9IHBycERhdGFiYXNlQ2FsbGJhY2tzOwotICAgIGlmICghbV9wZW5kaW5nRGVsZXRlQ2Fs
bHMuaXNFbXB0eSgpIHx8IG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCAhbV9w
ZW5kaW5nU2V0VmVyc2lvbkNhbGxzLmlzRW1wdHkoKSkgeworICAgIGlmICghbV9wZW5kaW5nRGVs
ZXRlQ2FsbHMuaXNFbXB0eSgpIHx8IG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbikg
ewogICAgICAgICBtX3BlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscy5hcHBlbmQoUGVuZGluZ09w
ZW5XaXRoVmVyc2lvbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzLCB2
ZXJzaW9uKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC01MjEsNyArNDIzLDcgQEAgdm9p
ZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPgogCiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0
ZURhdGFiYXNlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MpCiB7Ci0gICAg
aWYgKG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCAhbV9wZW5kaW5nU2V0VmVy
c2lvbkNhbGxzLmlzRW1wdHkoKSkgeworICAgIGlmIChtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24pIHsKICAgICAgICAgbV9wZW5kaW5nRGVsZXRlQ2FsbHMuYXBwZW5kKFBlbmRpbmdE
ZWxldGVDYWxsOjpjcmVhdGUocHJwQ2FsbGJhY2tzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbXBsLmgKaW5kZXggZjBmNDkzOGQxN2JlYWQ4Y2QxZDQyNTRhMDc5OGI2ZDZk
ZTM2YjE0Zi4uMjdmZDBmNzExZGY3MDIzMDU0NzI5NzJjNWUwMWE2NGU3MTdhMDcyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5k
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZEltcGwuaApAQCAtNjMsNyArNjMsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJREJE
YXRhYmFzZU1ldGFkYXRhIG1ldGFkYXRhKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoaW50NjRf
dCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5j
cmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7
CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3QsIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsKICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFu
c2FjdGlvbihjb25zdCBWZWN0b3I8aW50NjRfdD4mLCB1bnNpZ25lZCBzaG9ydCk7CiAgICAgdmly
dHVhbCB2b2lkIGNsb3NlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KTsKIApAQCAt
ODUsNyArODQsNiBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIHZvaWQgY3JlYXRlT2JqZWN0U3Rv
cmVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiwgUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPik7CiAgICAgc3RhdGljIHZvaWQgZGVs
ZXRlT2JqZWN0U3RvcmVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsPiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPik7Ci0gICAgc3Rh
dGljIHZvaWQgc2V0VmVyc2lvbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+LCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsPik7CiAgICAgc3RhdGljIHZvaWQgc2V0SW50VmVyc2lvbkludGVybmFsKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+LCBpbnQ2NF90
IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4pOwogCiAg
ICAgLy8gVGhlc2UgYXJlIHVzZWQgYXMgc2V0VmVyc2lvbiB0cmFuc2FjdGlvbiBhYm9ydCB0YXNr
cy4KQEAgLTEwOSw5ICsxMDcsNiBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaFNldDxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsKj4gVHJhbnNhY3Rpb25TZXQ7CiAgICAgVHJhbnNhY3Rpb25T
ZXQgbV90cmFuc2FjdGlvbnM7CiAKLSAgICBjbGFzcyBQZW5kaW5nU2V0VmVyc2lvbkNhbGw7Ci0g
ICAgRGVxdWU8T3duUHRyPFBlbmRpbmdTZXRWZXJzaW9uQ2FsbD4gPiBtX3BlbmRpbmdTZXRWZXJz
aW9uQ2FsbHM7Ci0KICAgICBjbGFzcyBQZW5kaW5nT3BlbkNhbGw7CiAgICAgRGVxdWU8T3duUHRy
PFBlbmRpbmdPcGVuQ2FsbD4gPiBtX3BlbmRpbmdPcGVuQ2FsbHM7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlLmgKaW5kZXggOWFhYjU2NDRiYTQ4NjNjMDdhNjdlNDFkOTA3ZjQxZDFkMThlNDgz
NS4uZTZlNWU4NzIxNDE5MjFhYWQ1YWM2NzRmNzBmNWNmMGVhNTMyOGQ0NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlLmgKQEAgLTU1LDcgKzU1LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0
U3RvcmUoaW50NjRfdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9v
bCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRp
b25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShpbnQ2NF90
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgRXhj
ZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbihjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVj
dFN0b3JlSWRzLCB1bnNpZ25lZCBzaG9ydCBtb2RlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNs
b3NlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KSA9IDA7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCBlNGQxNjdm
ZmFkMGEzYjIxNTIwYTgxMDU0NDY4ZTQ5MmJkOTVkMjcyLi4yNzM3MGI2OWI0MWViNzgwYWQzNTM5
MDkwZjA1NTYyMzJjNjA0YzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJSZXF1ZXN0LmNwcApAQCAtMzExLDMxICszMTEsNiBAQCB2b2lkIElEQlJlcXVlc3Q6
Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4gaWRiS2V5KQogICAgIGVucXVldWVFdmVudChj
cmVhdGVTdWNjZXNzRXZlbnQoKSk7CiB9CiAKLXZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBh
c3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBwcnBCYWNrZW5kKQotewot
ICAgIElEQl9UUkFDRSgiSURCUmVxdWVzdDo6b25TdWNjZXNzKElEQlRyYW5zYWN0aW9uKSIpOwot
ICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQgPSBwcnBC
YWNrZW5kOwotCi0gICAgaWYgKG1fY29udGV4dFN0b3BwZWQgfHwgIXNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkgewotICAgICAgICAvLyBTaG91bGQgb25seSBiZSBudWxsIGluIHRlc3RzLgotICAg
ICAgICBpZiAoYmFja2VuZC5nZXQoKSkKLSAgICAgICAgICAgIGJhY2tlbmQtPmFib3J0KCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCFzaG91bGRFbnF1ZXVlRXZlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBmcm9udGVuZCA9IElE
QlRyYW5zYWN0aW9uOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBiYWNrZW5kLCBW
ZWN0b3I8U3RyaW5nPigpLCBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UsIG1fc291cmNl
LT5pZGJEYXRhYmFzZSgpLmdldCgpKTsKLSAgICBiYWNrZW5kLT5zZXRDYWxsYmFja3MoZnJvbnRl
bmQuZ2V0KCkpOwotICAgIG1fdHJhbnNhY3Rpb24gPSBmcm9udGVuZDsKLQotICAgIEFTU0VSVCht
X3NvdXJjZS0+dHlwZSgpID09IElEQkFueTo6SURCRGF0YWJhc2VUeXBlKTsKLSAgICBBU1NFUlQo
bV90cmFuc2FjdGlvbi0+aXNWZXJzaW9uQ2hhbmdlKCkpOwotCi0gICAgbV9yZXN1bHQgPSBJREJB
bnk6OmNyZWF0ZShmcm9udGVuZC5yZWxlYXNlKCkpOwotICAgIGVucXVldWVFdmVudChjcmVhdGVT
dWNjZXNzRXZlbnQoKSk7Ci19Ci0KIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2NyaXB0VmFsdWUpCiB7CiAgICAg
SURCX1RSQUNFKCJJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlKSIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVz
dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCmluZGV4
IDJkYzJkZTljZGY1YzczOTU0MTY0MzRmOTExMTc3MTk5MDQ0ZTk2ZDkuLmVkYWE3YmExNmI2OTFh
ZTA2N2U4YWQ3NjIxMzcwNjBiYmQ1YmY3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKQEAgLTkxLDcgKzkxLDYgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0Pik7CiAgICAgdmly
dHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+
LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nl
c3MoUGFzc1JlZlB0cjxJREJLZXk+KTsKLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NS
ZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgdmlydHVhbCB2b2lk
IG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwogICAgIHZpcnR1
YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNz
UmVmUHRyPElEQktleT4sIGNvbnN0IElEQktleVBhdGgmKTsKICAgICB2aXJ0dWFsIHZvaWQgb25T
dWNjZXNzKGludDY0X3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCQ2FsbGJhY2tzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2Fs
bGJhY2tzUHJveHkuY3BwCmluZGV4IDgxY2I1NDllNTQ3NzU5ZjM0MWUxMTQzOWI1ODk3OGUxMzAw
ZTJiMDcuLjgzN2NjMzJhNmIwMDAwZGFmOTQ3YjFkZTc1MWU1Njc2MDgyODZkZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKQEAgLTg3
LDExICs4Nyw2IEBAIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRy
PElEQktleT4gaWRiS2V5KQogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoV2ViSURCS2V5KGlk
YktleSkpOwogfQogCi12b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQpCi17Ci0gICAgbV9jYWxs
YmFja3MtPm9uU3VjY2VzcyhuZXcgV2ViSURCVHJhbnNhY3Rpb25JbXBsKGJhY2tlbmQpKTsKLX0K
LQogdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8RE9NU3RyaW5n
TGlzdD4gZG9tU3RyaW5nTGlzdCkKIHsKICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKFdlYkRP
TVN0cmluZ0xpc3QoZG9tU3RyaW5nTGlzdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKaW5kZXggYzk0MDY5OGY3MTAxNWVkYWZkYjZkMDI3ODAx
MmVjNzA3MTI1N2RiYi4uNjVmM2I3NDBhODJlZThhZTJkODJiMDI1OTIzYmUwZTY0ZTBhNDE1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCkBA
IC01MSw3ICs1MSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NS
ZWZQdHI8V2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCS2V5PiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+IHByaW1hcnlLZXksIFBh
c3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CiAgICAgdmlydHVhbCB2
b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
REJLZXk+KTsKLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8V2ViQ29yZTo6
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3Vj
Y2VzcyhQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwogICAgIHZp
cnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWU+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4sIGNvbnN0IFdlYkNvcmU6OklEQktl
eVBhdGgmKTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKGludDY0X3QpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3Bw
CmluZGV4IDBiYzk1NDY2ZDhiMzA1ZGE5YWY0NzUzMjA1ZTFjMjRmZjZmZGE5MTEuLjU1ZTlhNzJm
NGU3ODI2OGJkMTUwMDNlMmQ3NGJhNGU1ZjJjMzRmZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKQEAgLTg1LDEy
ICs4NSw2IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmRlbGV0ZU9iamVjdFN0b3Jl
KGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgSURCVHJhbnNhCiAgICAgbV93ZWJJREJEYXRhYmFzZS0+
ZGVsZXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVJZCwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdl
YklEQlRyYW5zYWN0aW9uKCksIGVjKTsKIH0KIAotdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94
eTo6c2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNl
Q2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBBU1NFUlQobV93ZWJJREJEYXRh
YmFzZSk7Ci0gICAgbV93ZWJJREJEYXRhYmFzZS0+c2V0VmVyc2lvbih2ZXJzaW9uLCBuZXcgV2Vi
SURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCBlYyk7Ci19Ci0KIFBhc3NSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6dHJhbnNh
Y3Rpb24oY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgdW5zaWduZWQgc2hv
cnQgbW9kZSkKIHsKICAgICBPd25QdHI8V2ViSURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0g
YWRvcHRQdHIobV93ZWJJREJEYXRhYmFzZS0+dHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVJZHMsIG1v
ZGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNl
QmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJh
Y2tlbmRQcm94eS5oCmluZGV4IGFhOGZkZjBjOWVmNzFhODg3OTY5Y2MzYmRhMmY1ZTk5MDhmMjIz
YTMuLjk3Y2ZmNDVkZWUzZTJkMmJlYmE5MTE2NTAyN2Q5YjMyOWFjZmEwZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaApA
QCAtNDYsNyArNDYsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShpbnQ2
NF90LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmLCBib29s
IGF1dG9JbmNyZW1lbnQsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSos
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0
U3RvcmUoaW50NjRfdCwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwg
V2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNv
bnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYsIHVu
c2lnbmVkIHNob3J0IG1vZGUpOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZShQYXNzUmVmUHRyPFdl
YkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKaW5kZXggOGQxMmNmYTNlYTliYWUz
MmQ0N2MzMzRmYzBlMDE3ZDA5MGRkYTdhOC4uZGNmMzAzYjM5MTEyYWFhMWU2N2M2NWRmNzQyZDkz
YTI0YjA2ZmQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
Q2FsbGJhY2tzSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
Q2FsbGJhY2tzSW1wbC5jcHAKQEAgLTg2LDExICs4Niw2IEBAIHZvaWQgV2ViSURCQ2FsbGJhY2tz
SW1wbDo6b25TdWNjZXNzKGNvbnN0IFdlYklEQktleSYga2V5KQogICAgIG1fY2FsbGJhY2tzLT5v
blN1Y2Nlc3Moa2V5KTsKIH0KIAotdm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3Mo
V2ViSURCVHJhbnNhY3Rpb24qIHdlYktpdEluc3RhbmNlKQotewotICAgIG1fY2FsbGJhY2tzLT5v
blN1Y2Nlc3MoSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHk6OmNyZWF0ZShhZG9wdFB0cih3ZWJL
aXRJbnN0YW5jZSkpKTsKLX0KLQogdm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3Mo
Y29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiBzZXJpYWxpemVkU2NyaXB0VmFsdWUpCiB7
CiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhzZXJpYWxpemVkU2NyaXB0VmFsdWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oCmluZGV4
IGJhNDQ0ODQyODMzYTFlYjQzMmFlNTMwYTQ5NmQxZWU5NzllNTBmMmEuLjhmOGMwMmFhYTAyOGNm
YzM5YmU5MjFhYmMwZDZiN2RhM2ZkNTMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmgKQEAgLTQ2LDcgKzQ2LDYgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoV2ViSURCQ3Vyc29yKiwgY29uc3QgV2ViSURCS2V5
JiwgY29uc3QgV2ViSURCS2V5JiBwcmltYXJ5S2V5LCBjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0
VmFsdWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFdlYklEQkRhdGFiYXNlKik7CiAg
ICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25zdCBXZWJJREJLZXkmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzKFdlYklEQlRyYW5zYWN0aW9uKik7CiAgICAgdmlydHVhbCB2b2lkIG9u
U3VjY2Vzcyhjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmKTsKICAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYsIGNvbnN0IFdlYklE
QktleSYsIGNvbnN0IFdlYklEQktleVBhdGgmKTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNz
KGNvbnN0IFdlYklEQktleSYsIGNvbnN0IFdlYklEQktleSYgcHJpbWFyeUtleSwgY29uc3QgV2Vi
U2VyaWFsaXplZFNjcmlwdFZhbHVlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAppbmRleCA1OWFiZDUzMjkyODAxZjMwNDkzZGJkMGM0
N2Y2ZTAwZDM2MGJkZDQxLi5jOTRkZTdiYjQzNTM4MzUzNjhhM2QwMmI5ZTIzZGRjNzBhNGQzZmMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUlt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1w
bC5jcHAKQEAgLTc1LDExICs3NSw2IEBAIHZvaWQgV2ViSURCRGF0YWJhc2VJbXBsOjpkZWxldGVP
YmplY3RTdG9yZShsb25nIGxvbmcgb2JqZWN0U3RvcmVJZCwgY29uc3QgV2ViSURCCiAgICAgbV9k
YXRhYmFzZUJhY2tlbmQtPmRlbGV0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlSWQsIHRyYW5zYWN0
aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpLCBlYyk7CiB9CiAKLXZvaWQg
V2ViSURCRGF0YWJhc2VJbXBsOjpzZXRWZXJzaW9uKGNvbnN0IFdlYlN0cmluZyYgdmVyc2lvbiwg
V2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAg
IG1fZGF0YWJhc2VCYWNrZW5kLT5zZXRWZXJzaW9uKHZlcnNpb24sIElEQkNhbGxiYWNrc1Byb3h5
OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSksIG1fZGF0YWJhc2VDYWxsYmFja3MsIGVjKTsK
LX0KLQogV2ViSURCVHJhbnNhY3Rpb24qIFdlYklEQkRhdGFiYXNlSW1wbDo6dHJhbnNhY3Rpb24o
Y29uc3QgV2ViVmVjdG9yPGxvbmcgbG9uZz4mIG9iamVjdFN0b3JlSWRzLCB1bnNpZ25lZCBzaG9y
dCBtb2RlKQogewogICAgIFZlY3RvcjxpbnQ2NF90PiBvYmplY3RTdG9yZUlkTGlzdChvYmplY3RT
dG9yZUlkcy5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCRGF0YWJhc2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJE
YXRhYmFzZUltcGwuaAppbmRleCBlNzI4NzQyYzY0NzQ4NDEyNmNmM2VhN2RkOTU2ZWRmZjMyYzcy
ODBmLi5hNjU1ZjhhZjViOTU2ODlmZGJmYTNiMWNiNmVlZDExYzA0NGYxMDZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaApAQCAtNTQsNyAr
NTQsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFdlYklEQk9iamVjdFN0b3JlKiBjcmVhdGVP
YmplY3RTdG9yZShsb25nIGxvbmcsIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURC
S2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBX
ZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGxv
bmcgbG9uZyBvYmplY3RTdG9yZUlkLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2Vw
dGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBXZWJTdHJpbmcm
IHZlcnNpb24sIFdlYklEQkNhbGxiYWNrcyosIFdlYkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0
dWFsIFdlYklEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbihjb25zdCBXZWJWZWN0b3I8bG9uZyBs
b25nPiYgbmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUpOwogICAgIHZpcnR1YWwgdm9pZCBmb3Jj
ZUNsb3NlKCk7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcAppbmRleCBl
OTdiYzdmNmRmOWE0MThjZmY2NTYwZDJjMTIzNGViYzFkM2E2ODQ4Li4yMjZiOGFmZTAzOTY2MWFl
Y2M5NDI5YzE5Y2I2ZTlmMmVkNTdiNTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKQEAgLTg4LDcgKzg4LDYg
QEAgcHVibGljOgogICAgICAgICBtX3dhc1N1Y2Nlc3NEQkNhbGxlZCA9IHRydWU7CiAgICAgfQog
ICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+KSBPVkVSUklERSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlPikgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
cyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pIE9WRVJSSURFIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQ
YXNzUmVmUHRyPElEQktleT4sIGNvbnN0IElEQktleVBhdGgmKSBPVkVSUklERSB7IH07CiAgICAg
dmlydHVhbCB2b2lkIG9uU3VjY2VzcyhpbnQ2NF90KSBPVkVSUklERSB7IH0KQEAgLTE1Myw3ICsx
NTIsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFj
a2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgeyByZXR1cm4gMDsgfQogICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9u
KGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVm
UHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpIHsgfQogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9u
KERPTVN0cmluZ0xpc3QqIHN0b3JlTmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIEV4Y2VwdGlv
bkNvZGUmKSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24oY29uc3QgVmVjdG9yPGludDY0X3Q+Jiwg
dW5zaWduZWQgc2hvcnQgbW9kZSkgeyByZXR1cm4gMDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQlJlcXVlc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSURCUmVxdWVzdFRlc3QuY3BwCmluZGV4IGEwNzM0ZTE0YzQ0ZGNiYzVl
NzhkYWZiODY5N2M4NWI3MTJhZWZkMDcuLjhhN2EzZjRhN2JhNjg3Mzg0ZjY1NWQ5ODNiYTZhODQz
YjIwMmJkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCUmVx
dWVzdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCUmVxdWVz
dFRlc3QuY3BwCkBAIC05NCw3ICs5NCw2IEBAIFRFU1RfRihJREJSZXF1ZXN0VGVzdCwgRXZlbnRz
QWZ0ZXJTdG9wcGluZykKICAgICByZXF1ZXN0LT5vblN1Y2Nlc3MoRE9NU3RyaW5nTGlzdDo6Y3Jl
YXRlKCkpOwogICAgIHJlcXVlc3QtPm9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tl
bmRJbnRlcmZhY2U+KCksIElEQktleTo6Y3JlYXRlSW52YWxpZCgpLCBJREJLZXk6OmNyZWF0ZUlu
dmFsaWQoKSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKSk7CiAgICAgcmVxdWVz
dC0+b25TdWNjZXNzKElEQktleTo6Y3JlYXRlSW52YWxpZCgpKTsKLSAgICByZXF1ZXN0LT5vblN1
Y2Nlc3MoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KCkpOwogICAg
IHJlcXVlc3QtPm9uU3VjY2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bGxWYWx1ZSgpKTsK
ICAgICByZXF1ZXN0LT5vblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUo
KSwgSURCS2V5OjpjcmVhdGVJbnZhbGlkKCksIElEQktleVBhdGgoKSk7CiAgICAgcmVxdWVzdC0+
b25TdWNjZXNzKElEQktleTo6Y3JlYXRlSW52YWxpZCgpLCBJREJLZXk6OmNyZWF0ZUludmFsaWQo
KSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjgxODk2MGQw
ZmNkMzU0Zjg4ZTU4YTFlMjNhMjdkNzNlMDA4ZjU4NC4uYTkzYTdiMGI3Y2I1ZjhlMGFiMTk3N2M3
NWYyY2ZiMzU0ZTAyYjg4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTExLTE5ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFJl
bW92ZSBJREJEYXRhYmFzZS5zZXRWZXJzaW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ5NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3JlbW92ZWQtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9yZW1vdmVkLmpz
OgorICAgICAgICAodGVzdCk6CisKIDIwMTItMTEtMjYgIERhbmllbCBCYXRlcyAgPGRiYXRlc0B3
ZWJraXQub3JnPgogCiAgICAgICAgIEphdmFTY3JpcHQgZmFpbHMgdG8gaGFuZGxlIFN0cmluZy5y
ZXBsYWNlKCkgd2l0aCBsYXJnZSByZXBsYWNlbWVudCBzdHJpbmcKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3JlbW92ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVtb3ZlZC1leHBlY3RlZC50eHQKaW5kZXggMWJjODhkYjBl
ZDA4MTlkMTBjMzhjZmY2MjAwNjg4ZTI4MjZhNzllNi4uMzkyMDgwMTA0ZDQzZmM4ZDI5Mjk5NjJj
NjhjYzAxNjc0MzQ0N2Y3OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVtb3ZlZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVtb3ZlZC1leHBlY3RlZC50eHQKQEAgLTksNiArOSw3IEBAIGRibmFtZSA9ICJyZW1vdmVk
Lmh0bWwiCiBQQVNTIHNlbGYud2Via2l0SURCRGF0YWJhc2VFcnJvciBpcyB1bmRlZmluZWQuCiBQ
QVNTICdJREJEYXRhYmFzZUV4Y2VwdGlvbicgaW4gc2VsZiBpcyBmYWxzZQogUEFTUyAnZXJyb3JD
b2RlJyBpbiBpbmRleGVkREIub3BlbihkYm5hbWUpIGlzIGZhbHNlCitQQVNTICdzZXRWZXJzaW9u
JyBpbiBJREJEYXRhYmFzZS5wcm90b3R5cGUgaXMgZmFsc2UKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3JlbW92ZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvcmVtb3ZlZC5qcwppbmRleCA0NjNkMjcyMGRhNDNhMTVmYThk
NjgxMDc3NGI2YjAxZDQ2ZTg4YTY3Li5hOTBlNTk2OWNlYzU4MDllZThhMjE1YjJmNDg0YzYzYjY3
ODM2YzdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvcmVtb3ZlZC5qcworKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvcmVtb3ZlZC5qcwpAQCAtMTMsNiArMTMsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICBzaG91
bGRCZVVuZGVmaW5lZCgic2VsZi53ZWJraXRJREJEYXRhYmFzZUVycm9yIik7CiAgICAgc2hvdWxk
QmVGYWxzZSgiJ0lEQkRhdGFiYXNlRXhjZXB0aW9uJyBpbiBzZWxmIik7CiAgICAgc2hvdWxkQmVG
YWxzZSgiJ2Vycm9yQ29kZScgaW4gaW5kZXhlZERCLm9wZW4oZGJuYW1lKSIpOworICAgIHNob3Vs
ZEJlRmFsc2UoIidzZXRWZXJzaW9uJyBpbiBJREJEYXRhYmFzZS5wcm90b3R5cGUiKTsKIAogICAg
IGZpbmlzaEpTVGVzdCgpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176306</attachid>
            <date>2012-11-27 11:15:05 -0800</date>
            <delta_ts>2012-11-27 12:46:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94972-20121127111242.patch</filename>
            <type>text/plain</type>
            <size>35481</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1ODgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWZlNDc0ZDZiMWMzMTI2
ZDc2OWEzZTdjN2M3NmU2MzBkOTQ1YzgyMC4uNjZjMTkyMDgxMzZhZDJjMDM5NGNiODRiMTI3NzAw
MWM3Y2MxNmE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTExLTE5ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFJl
bW92ZSBJREJEYXRhYmFzZS5zZXRWZXJzaW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ5NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGhhcyBiZWVuIG91dCBvZiB0aGUgc3BlYyBmb3Ig
b3ZlciBhIHllYXIuIE5vIG90aGVyIGJyb3dzZXIgaGFzCisgICAgICAgIGltcGxlbWVudGVkIGl0
IGZvciBjbG9zZSB0byBhIHllYXIuCisKKyAgICAgICAgVGVzdHMgLSByZW1vdmVkLmh0bWwKKwor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oOgorICAgICAgICAoSURC
Q2FsbGJhY2tzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6SURCRGF0YWJhc2UpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmg6CisgICAgICAgIChJREJEYXRhYmFzZSk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaWRsOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdDYWxscyk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oOgorICAg
ICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAgIChJREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3Qu
Y3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaDoKKwogMjAxMi0x
MS0yNyAgWW9uZyBMaSAgPHlvbGlAcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gRXZl
bnRMb29wIHNob3VsZCBlbmQgd2hlbiBXZWJLaXQgdGhyZWFkIGlzIGV4aXRpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggYWVjYjEyODU5NmRlZWM4NWRhODYzY2Q1MDI2YjFiZTVhY2Rl
YzMxNy4uMjlkNDEzMWU5OTA2ZWQ2MzMxZWJlZjcxYjc1OGNjN2UwNzkyNGM4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMi0xMS0xOSAgRGF2aWQgR3Jv
Z2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBSZW1vdmUg
SURCRGF0YWJhc2Uuc2V0VmVyc2lvbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk0OTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBzcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwOgorICAgICAgICAq
IHNyYy9JREJDYWxsYmFja3NQcm94eS5oOgorICAgICAgICAoSURCQ2FsbGJhY2tzUHJveHkpOgor
ICAgICAgICAqIHNyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgICogc3Jj
L0lEQkRhdGFiYXNlQmFja2VuZFByb3h5Lmg6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRQ
cm94eSk6CisgICAgICAgICogc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwOgorICAgICAgICAq
IHNyYy9XZWJJREJDYWxsYmFja3NJbXBsLmg6CisgICAgICAgIChXZWJJREJDYWxsYmFja3NJbXBs
KToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMv
V2ViSURCRGF0YWJhc2VJbXBsLmg6CisgICAgICAgIChXZWJJREJEYXRhYmFzZUltcGwpOgorCiAy
MDEyLTExLTI3ICBFYmVyaGFyZCBHcmFldGhlciAgPGVncmFldGhlckBnb29nbGUuY29tPgogCiAg
ICAgICAgIFBsdW1iaW5nIHNob3dQYWludFJlY3RzIG91dCBvZiBJbnNwZWN0b3JQYWdlQWdlbnQg
dG8gdXNlIGEgZGlmZmVyZW50IGRyYXdpbmcgaW1wbGVtZW50YXRpb24gaWYgYXZhaWxhYmxlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tz
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDYWxsYmFja3MuaAppbmRl
eCBkMTUxMTQ1NGQ4MTg5NzBhMjNmNWRlZDhiNjIyODMwNzNjYjE4MjU0Li5iODhiMGNkZTNmNzJh
Y2RlYzgyNzg5MGU1YzI4OWEwMWI2NmUyMmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDYWxsYmFja3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJDYWxsYmFja3MuaApAQCAtNTYsOCArNTYsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRl
cmZhY2U+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5
LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pID0gMDsKICAgICAvLyBGcm9tIElE
Qk9iamVjdFN0b3JlLmFkZCgpL3B1dCgpLCBJREJJbmRleC5nZXRLZXkoKQogICAgIHZpcnR1YWwg
dm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+KSA9IDA7Ci0gICAgLy8gRnJvbSBJREJE
YXRhYmFzZS5zZXRWZXJzaW9uKCkKLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPikgPSAwOwogICAgIC8vIEZyb20gSURC
T2JqZWN0U3RvcmUvSURCSW5kZXguZ2V0KCkvY291bnQoKSwgYW5kIHZhcmlvdXMgbWV0aG9kcyB0
aGF0IHlpZWxkIG51bGwvdW5kZWZpbmVkLgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KSA9IDA7CiAgICAgLy8gRnJvbSBJREJPYmpl
Y3RTdG9yZS9JREJJbmRleC5nZXQoKSAod2l0aCBrZXkgaW5qZWN0aW9uKQpAQCAtNzIsNyArNzAs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktl
eT4sIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4pID0gMDsKICAgICAvLyBGcm9tIElEQkN1cnNvci5hZHZhbmNlKCkvY29udGlu
dWUoKQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoUHJlZmV0Y2goY29uc3QgVmVjdG9y
PFJlZlB0cjxJREJLZXk+ID4mIGtleXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiBw
cmltYXJ5S2V5cywgY29uc3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+ID4m
IHZhbHVlcykgPSAwOwotICAgIC8vIEZyb20gSURCRmFjdG9yeS5vcGVuKCkvZGVsZXRlRGF0YWJh
c2UoKSwgSURCRGF0YWJhc2Uuc2V0VmVyc2lvbigpCisgICAgLy8gRnJvbSBJREJGYWN0b3J5Lm9w
ZW4oKS9kZWxldGVEYXRhYmFzZSgpCiAgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgpIHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKGludDY0X3Qg
ZXhpc3RpbmdWZXJzaW9uKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgLy8gRnJvbSBJ
REJGYWN0b3J5Lm9wZW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2UuY3BwCmluZGV4IDdmMWM5NTU1MWU2MGNmZjIyZmY0NDY5YTQ3YjVmYTZhMWUy
NDFlYWYuLjYwZjc3MWZlOTBlMTU5YTk3ZDU1OTMyOTRkOWIxNTg3NDYzNzM5OTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKQEAgLTYz
LDcgKzYzLDYgQEAgSURCRGF0YWJhc2U6OklEQkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2UKICAgICAsIG1fY2xvc2VQZW5kaW5n
KGZhbHNlKQogICAgICwgbV9jb250ZXh0U3RvcHBlZChmYWxzZSkKICAgICAsIG1fZGF0YWJhc2VD
YWxsYmFja3MoY2FsbGJhY2tzKQotICAgICwgbV9kaWRTcGFtQ29uc29sZShmYWxzZSkKIHsKICAg
ICAvLyBXZSBwYXNzIGEgcmVmZXJlbmNlIG9mIHRoaXMgb2JqZWN0IGJlZm9yZSBpdCBjYW4gYmUg
YWRvcHRlZC4KICAgICByZWxheEFkb3B0aW9uUmVxdWlyZW1lbnQoKTsKQEAgLTIwMSwzMCArMjAw
LDYgQEAgdm9pZCBJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBu
YW1lLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8SURCVmVyc2lv
bkNoYW5nZVJlcXVlc3Q+IElEQkRhdGFiYXNlOjpzZXRWZXJzaW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYgZWMp
Ci17Ci0gICAgaWYgKCFtX2RpZFNwYW1Db25zb2xlKSB7Ci0gICAgICAgIFN0cmluZyBjb25zb2xl
TWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVGhlIHNldFZlcnNpb24oKSBtZXRob2QgaXMgbm9uLXN0
YW5kYXJkIGFuZCB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0aGUgXCJ1cGdyYWRlbmVlZGVkXCIgZXZl
bnQgaW5zdGVhZC4iKTsKLSAgICAgICAgY29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNz
YWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgV2FybmluZ01lc3NhZ2VMZXZlbCwgY29uc29sZU1l
c3NhZ2UpOwotICAgICAgICBtX2RpZFNwYW1Db25zb2xlID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBp
ZiAodmVyc2lvbi5pc051bGwoKSkgewotICAgICAgICBlYyA9IFR5cGVFcnJvcjsKLSAgICAgICAg
cmV0dXJuIDA7Ci0gICAgfQotCi0gICAgaWYgKG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKSB7
Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VS
UjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgUmVmUHRyPElEQlZlcnNpb25DaGFu
Z2VSZXF1ZXN0PiByZXF1ZXN0ID0gSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q6OmNyZWF0ZShjb250
ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgdmVyc2lvbik7Ci0gICAgQVNTRVJUKG1fYmFja2Vu
ZCk7Ci0gICAgbV9iYWNrZW5kLT5zZXRWZXJzaW9uKHZlcnNpb24sIHJlcXVlc3QsIG1fZGF0YWJh
c2VDYWxsYmFja3MsIGVjKTsKLSAgICByZXR1cm4gcmVxdWVzdDsKLX0KLQogUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbj4gSURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzY29wZSwgY29uc3QgU3RyaW5n
JiBtb2RlU3RyaW5nLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIXNjb3BlLnNpemUo
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgK
aW5kZXggZWUyZDIzMjM0Y2ZhMTdhNjBiZTQ4YTQ2ZmI3NjY3YTY2NmQwMTAyNi4uYjc4OTcxYjEy
MDQ2ODkyNTgwMDY3NWIwMTA5NDhjMGQyOWFmYTU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCkBAIC02OCw3ICs2OCw2IEBAIHB1YmxpYzoK
ICAgICBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmIG1vZGUsIEV4
Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBt
b2RlLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBT
dHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPElEQlZlcnNpb25D
aGFuZ2VSZXF1ZXN0PiBzZXRWZXJzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBT
dHJpbmcmIHZlcnNpb24sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGNsb3NlKCk7CiAKICAg
ICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGFib3J0KTsKQEAgLTEyOSw4ICsxMjgs
NiBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gbV9lbnF1ZXVlZEV2ZW50
czsKIAogICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gbV9kYXRhYmFzZUNhbGxiYWNr
czsKLQotICAgIGJvb2wgbV9kaWRTcGFtQ29uc29sZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
LmlkbAppbmRleCBmNmIwYmU0NTA5YjZkYWIxMjBlOTBkZDViZDQ1NTM3YjM2ODcxYjlmLi4wYmVk
MjRmMWI1MGVhN2IxODc2NjlkYjMwNDFmZDJkY2VhZTRkN2FlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaWRsCkBAIC00Miw4ICs0Miw2IEBA
CiAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICB2b2lkIGRlbGV0ZU9iamVjdFN0
b3JlKGluIERPTVN0cmluZyBuYW1lKQogICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7Ci0g
ICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlZlcnNpb25DaGFuZ2VSZXF1
ZXN0IHNldFZlcnNpb24oaW4gRE9NU3RyaW5nIHZlcnNpb24pCi0gICAgICAgIHJhaXNlcyAoRE9N
RXhjZXB0aW9uKTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCVHJh
bnNhY3Rpb24gdHJhbnNhY3Rpb24oaW4gRE9NU3RyaW5nTGlzdCBzdG9yZU5hbWVzLCBpbiBbT3B0
aW9uYWw9RGVmYXVsdElzTnVsbFN0cmluZ10gRE9NU3RyaW5nIG1vZGUpCiAgICAgICAgIHJhaXNl
cyAoRE9NRXhjZXB0aW9uKTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0g
SURCVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oaW4gc2VxdWVuY2U8U3RyaW5nPiBzdG9yZU5hbWVz
LCBpbiBbT3B0aW9uYWw9RGVmYXVsdElzTnVsbFN0cmluZ10gRE9NU3RyaW5nIG1vZGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZEltcGwuY3BwCmluZGV4IGZjNmRhNWU0Y2FiMzc1NzhjZDAyYzg2Y2I4Yzk0ODE3MzVh
NjU3ODEuLjgyY2NjMzkxOWM3Yjg1ZjkwNzc1NWVlZWRmYzg4NmY2ODc3OWMxMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZElt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZEltcGwuY3BwCkBAIC05NiwyOCArOTYsNiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJ
REJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOwogfTsKIAotY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6UGVuZGluZ1NldFZlcnNpb25DYWxsIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093
blB0cjxQZW5kaW5nU2V0VmVyc2lvbkNhbGw+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHZlcnNpb24s
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBQZW5kaW5nU2V0VmVyc2lvbkNhbGwodmVyc2lvbiwgY2FsbGJhY2tzLCBkYXRh
YmFzZUNhbGxiYWNrcykpOwotICAgIH0KLSAgICBTdHJpbmcgdmVyc2lvbigpIHsgcmV0dXJuIG1f
dmVyc2lvbjsgfQotICAgIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MoKSB7IHJl
dHVybiBtX2NhbGxiYWNrczsgfQotICAgIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+
IGRhdGFiYXNlQ2FsbGJhY2tzKCkgeyByZXR1cm4gbV9kYXRhYmFzZUNhbGxiYWNrczsgfQotCi1w
cml2YXRlOgotICAgIFBlbmRpbmdTZXRWZXJzaW9uQ2FsbChjb25zdCBTdHJpbmcmIHZlcnNpb24s
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzKQotICAgICAgICA6IG1fdmVyc2lvbih2ZXJz
aW9uKQotICAgICAgICAsIG1fY2FsbGJhY2tzKGNhbGxiYWNrcykKLSAgICAgICAgLCBtX2RhdGFi
YXNlQ2FsbGJhY2tzKGRhdGFiYXNlQ2FsbGJhY2tzKQotICAgIHsKLSAgICB9Ci0gICAgU3RyaW5n
IG1fdmVyc2lvbjsKLSAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKLSAgICBS
ZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IG1fZGF0YWJhc2VDYWxsYmFja3M7Ci19OwotCiBQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6
OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG9yZSogZGF0YWJhc2UsIElE
QkZhY3RvcnlCYWNrZW5kSW1wbCogZmFjdG9yeSwgY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlm
aWVyKQogewogICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBiYWNrZW5kID0gYWRv
cHRSZWYobmV3IElEQkRhdGFiYXNlQmFja2VuZEltcGwobmFtZSwgZGF0YWJhc2UsIGZhY3Rvcnks
IHVuaXF1ZUlkZW50aWZpZXIpKTsKQEAgLTIzNSw2NCArMjEzLDYgQEAgdm9pZCBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpkZWxldGVPYmplY3RTdG9yZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLAogICAgIHRyYW5zYWN0aW9uLT5kaWRDb21wbGV0ZVRhc2tFdmVudHMoKTsKIH0KIAot
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVy
c2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUNhbGxiYWNrcz4gcHJwRGF0YWJhc2VDYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUm
IGVjKQotewotICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNr
czsKLSAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzID0g
cHJwRGF0YWJhc2VDYWxsYmFja3M7Ci0gICAgaWYgKCFtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmNv
bnRhaW5zKGRhdGFiYXNlQ2FsbGJhY2tzKSkgewotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3Io
SURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRf
RVJSLCAiQ29ubmVjdGlvbiB3YXMgY2xvc2VkIGJlZm9yZSBzZXQgdmVyc2lvbiB0cmFuc2FjdGlv
biB3YXMgY3JlYXRlZCIpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBmb3IgKERhdGFi
YXNlQ2FsbGJhY2tzU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZGF0YWJhc2VDYWxsYmFja3NT
ZXQuYmVnaW4oKTsgaXQgIT0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5lbmQoKTsgKytpdCkgewot
ICAgICAgICAvLyBGcm9udCBlbmQgZW5zdXJlcyB0aGUgZXZlbnQgaXMgbm90IGZpcmVkIGF0IGNv
bm5lY3Rpb25zIHRoYXQgaGF2ZSBjbG9zZVBlbmRpbmcgc2V0LgotICAgICAgICBpZiAoKml0ICE9
IGRhdGFiYXNlQ2FsbGJhY2tzKQotICAgICAgICAgICAgKCppdCktPm9uVmVyc2lvbkNoYW5nZSh2
ZXJzaW9uKTsKLSAgICB9Ci0gICAgLy8gRklYTUU6IE9ubHkgZmlyZSBvbkJsb2NrZWQgaWYgdGhl
cmUgYXJlIG9wZW4gY29ubmVjdGlvbnMgYWZ0ZXIgdGhlCi0gICAgLy8gVmVyc2lvbkNoYW5nZUV2
ZW50cyBhcmUgcmVjZWl2ZWQsIG5vdCBqdXN0IHNldCB1cCB0byBmaXJlLgotICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTEzMAotICAgIGlmIChjb25uZWN0
aW9uQ291bnQoKSA+IDEpIHsKLSAgICAgICAgY2FsbGJhY2tzLT5vbkJsb2NrZWQoKTsKLSAgICAg
ICAgT3duUHRyPFBlbmRpbmdTZXRWZXJzaW9uQ2FsbD4gcGVuZGluZ1NldFZlcnNpb25DYWxsID0g
UGVuZGluZ1NldFZlcnNpb25DYWxsOjpjcmVhdGUodmVyc2lvbiwgY2FsbGJhY2tzLCBkYXRhYmFz
ZUNhbGxiYWNrcyk7Ci0gICAgICAgIG1fcGVuZGluZ1NldFZlcnNpb25DYWxscy5hcHBlbmQocGVu
ZGluZ1NldFZlcnNpb25DYWxsLnJlbGVhc2UoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgaWYgKG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbikgewotICAgICAgICBPd25Q
dHI8UGVuZGluZ1NldFZlcnNpb25DYWxsPiBwZW5kaW5nU2V0VmVyc2lvbkNhbGwgPSBQZW5kaW5n
U2V0VmVyc2lvbkNhbGw6OmNyZWF0ZSh2ZXJzaW9uLCBjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJh
Y2tzKTsKLSAgICAgICAgbV9wZW5kaW5nU2V0VmVyc2lvbkNhbGxzLmFwcGVuZChwZW5kaW5nU2V0
VmVyc2lvbkNhbGwucmVsZWFzZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFZl
Y3RvcjxpbnQ2NF90PiBvYmplY3RTdG9yZUlkczsKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbkludGVyZmFjZSA9IHRoaXMtPnRyYW5zYWN0aW9u
KG9iamVjdFN0b3JlSWRzLCBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOwotICAgIFJl
ZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25JbnRlcmZhY2UuZ2V0KCkpOwotICAgIEFT
U0VSVCghZWMpOwotCi0gICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNl
ID0gdGhpczsKLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soCi0gICAgICAgICAg
ICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb25J
bnRlcm5hbCwgZGF0YWJhc2UsIHZlcnNpb24sIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pLAotICAg
ICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpyZXNl
dFZlcnNpb24sIGRhdGFiYXNlLCBtX21ldGFkYXRhLnZlcnNpb24sIG1fbWV0YWRhdGEuaW50VmVy
c2lvbikpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgb25lIG9mIHRoZSBmb2xsb3dpbmcg
bGluZXMuCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBlYyA9IElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7Ci0gICAgfQotfQotCi12
b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb25JbnRlcm5hbChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFz
ZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJh
Y2tzLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHBycFRyYW5zYWN0aW9u
KQotewotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9
IHBycFRyYW5zYWN0aW9uOwotICAgIGludDY0X3QgZGF0YWJhc2VJZCA9IGRhdGFiYXNlLT5pZCgp
OwotICAgIGRhdGFiYXNlLT5tX21ldGFkYXRhLnZlcnNpb24gPSB2ZXJzaW9uOwotICAgIGRhdGFi
YXNlLT5tX21ldGFkYXRhLmludFZlcnNpb24gPSBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZl
cnNpb247Ci0gICAgaWYgKCFkYXRhYmFzZS0+bV9iYWNraW5nU3RvcmUtPnVwZGF0ZUlEQkRhdGFi
YXNlTWV0YURhdGEodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIGRhdGFi
YXNlSWQsIGRhdGFiYXNlLT5tX21ldGFkYXRhLnZlcnNpb24pIHx8ICFkYXRhYmFzZS0+bV9iYWNr
aW5nU3RvcmUtPnVwZGF0ZUlEQkRhdGFiYXNlSW50VmVyc2lvbih0cmFuc2FjdGlvbi0+YmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb24oKSwgZGF0YWJhc2VJZCwgZGF0YWJhc2UtPm1fbWV0YWRhdGEuaW50
VmVyc2lvbikpIHsKLSAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVycm9yID0gSURC
RGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwg
IkVycm9yIHdyaXRpbmcgZGF0YSB0byBzdGFibGUgc3RvcmFnZS4iKTsKLSAgICAgICAgY2FsbGJh
Y2tzLT5vbkVycm9yKGVycm9yKTsKLSAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KGVycm9yKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhQYXNzUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4odHJhbnNhY3Rpb24pKTsKLX0KLQog
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRJbnRWZXJzaW9uSW50ZXJuYWwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0
YWJhc2UsIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxi
YWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3Ms
IFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCiB7CiAg
ICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKHBycENhbGxiYWNrcyk7CkBAIC0zNjks
MjggKzI4OSwxMCBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnByb2Nlc3NQZW5kaW5n
Q2FsbHMoKQogICAgICAgICAvLyBGYWxsIHRocm91Z2ggd2hlbiBjb21wbGV0ZSwgYXMgcGVuZGlu
ZyBkZWxldGVzIG1heSBiZSAocGFydGlhbGx5KSB1bmJsb2NrZWQuCiAgICAgfQogCi0gICAgLy8g
UGVuZGluZyBjYWxscyBtYXkgYmUgcmVxdWV1ZWQgb3IgYWJvcnRlZAotICAgIERlcXVlPE93blB0
cjxQZW5kaW5nU2V0VmVyc2lvbkNhbGw+ID4gcGVuZGluZ1NldFZlcnNpb25DYWxsczsKLSAgICBt
X3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMuc3dhcChwZW5kaW5nU2V0VmVyc2lvbkNhbGxzKTsKLSAg
ICB3aGlsZSAoIXBlbmRpbmdTZXRWZXJzaW9uQ2FsbHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBPd25QdHI8UGVuZGluZ1NldFZlcnNpb25DYWxs
PiBwZW5kaW5nU2V0VmVyc2lvbkNhbGwgPSBwZW5kaW5nU2V0VmVyc2lvbkNhbGxzLnRha2VGaXJz
dCgpOwotICAgICAgICBzZXRWZXJzaW9uKHBlbmRpbmdTZXRWZXJzaW9uQ2FsbC0+dmVyc2lvbigp
LCBwZW5kaW5nU2V0VmVyc2lvbkNhbGwtPmNhbGxiYWNrcygpLCBwZW5kaW5nU2V0VmVyc2lvbkNh
bGwtPmRhdGFiYXNlQ2FsbGJhY2tzKCksIGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7Ci0gICAg
fQotCi0gICAgLy8gSWYgdGhlcmUgd2VyZSBhbnkgcGVuZGluZyBzZXQgdmVyc2lvbiBjYWxscywg
d2UgYmV0dGVyIGhhdmUgc3RhcnRlZCBvbmUuCi0gICAgQVNTRVJUKG1fcGVuZGluZ1NldFZlcnNp
b25DYWxscy5pc0VtcHR5KCkgfHwgbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKTsK
LQotICAgIC8vIG1fcGVuZGluZ1NldFZlcnNpb25DYWxscyBpcyBub24tZW1wdHkgaW4gdHdvIGNh
c2VzOgotICAgIC8vIDEpIFdoZW4gdHdvIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb25zIGFyZSBy
ZXF1ZXN0ZWQgd2hpbGUgYW5vdGhlcgotICAgIC8vICAgIHZlcnNpb24gY2hhbmdlIHRyYW5zYWN0
aW9uIGlzIHJ1bm5pbmcuCi0gICAgLy8gMikgV2hlbiB0aHJlZSB2ZXJzaW9uY2hhbmdlIHRyYW5z
YWN0aW9ucyBhcmUgcmVxdWVzdGVkIGluIGEgcm93LCBiZWZvcmUKLSAgICAvLyAgICBhbnkgb2Yg
dGhlaXIgZXZlbnQgaGFuZGxlcnMgYXJlIHJ1bi4KICAgICAvLyBOb3RlIHRoYXQgdGhpcyBjaGVj
ayBpcyBvbmx5IGFuIG9wdGltaXphdGlvbiB0byByZWR1Y2UgcXVldWUtY2h1cm4gYW5kCiAgICAg
Ly8gbm90IG5lY2Vzc2FyeSBmb3IgY29ycmVjdG5lc3M7IGRlbGV0ZURhdGFiYXNlIGFuZCBvcGVu
Q29ubmVjdGlvbiB3aWxsCiAgICAgLy8gcmVxdWV1ZSB0aGVpciBjYWxscyBpZiB0aGlzIGNvbmRp
dGlvbiBpcyB0cnVlLgotICAgIGlmIChtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24g
fHwgIW1fcGVuZGluZ1NldFZlcnNpb25DYWxscy5pc0VtcHR5KCkpCisgICAgaWYgKG1fcnVubmlu
Z1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gUGVu
ZGluZyBjYWxscyBtYXkgYmUgcmVxdWV1ZWQuCkBAIC00MDIsNyArMzA0LDcgQEAgdm9pZCBJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpwcm9jZXNzUGVuZGluZ0NhbGxzKCkKICAgICB9CiAKICAgICAv
LyBUaGlzIGNoZWNrIGlzIGFsc28gbm90IHJlYWxseSBuZWVkZWQsIG9wZW5Db25uZWN0aW9uIHdv
dWxkIGp1c3QgcmVxdWV1ZSBpdHMgY2FsbHMuCi0gICAgaWYgKG1fcnVubmluZ1ZlcnNpb25DaGFu
Z2VUcmFuc2FjdGlvbiB8fCAhbV9wZW5kaW5nU2V0VmVyc2lvbkNhbGxzLmlzRW1wdHkoKSB8fCAh
bV9wZW5kaW5nRGVsZXRlQ2FsbHMuaXNFbXB0eSgpKQorICAgIGlmIChtX3J1bm5pbmdWZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb24gfHwgIW1fcGVuZGluZ0RlbGV0ZUNhbGxzLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgRGVxdWU8T3duUHRyPFBlbmRpbmdPcGVuV2l0aFZlcnNpb25D
YWxsPiA+IHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsczsKQEAgLTQzOCw3ICszNDAsNyBAQCBQ
YXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6Y3JlYXRlVHJhbnNhYwogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVu
Q29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcykKIHsKICAgICBBU1NFUlQo
bV9iYWNraW5nU3RvcmUuZ2V0KCkpOwotICAgIGlmICghbV9wZW5kaW5nRGVsZXRlQ2FsbHMuaXNF
bXB0eSgpIHx8IG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCAhbV9wZW5kaW5n
U2V0VmVyc2lvbkNhbGxzLmlzRW1wdHkoKSkgeworICAgIGlmICghbV9wZW5kaW5nRGVsZXRlQ2Fs
bHMuaXNFbXB0eSgpIHx8IG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbikgewogICAg
ICAgICBtX3BlbmRpbmdPcGVuQ2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVuQ2FsbDo6Y3JlYXRlKGNh
bGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTUwMCw3ICs0MDIsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0
aW9uV2l0aFZlcnNpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+CiB7CiAgICAgUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwogICAgIFJlZlB0cjxJREJEYXRh
YmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MgPSBwcnBEYXRhYmFzZUNhbGxiYWNrczsK
LSAgICBpZiAoIW1fcGVuZGluZ0RlbGV0ZUNhbGxzLmlzRW1wdHkoKSB8fCBtX3J1bm5pbmdWZXJz
aW9uQ2hhbmdlVHJhbnNhY3Rpb24gfHwgIW1fcGVuZGluZ1NldFZlcnNpb25DYWxscy5pc0VtcHR5
KCkpIHsKKyAgICBpZiAoIW1fcGVuZGluZ0RlbGV0ZUNhbGxzLmlzRW1wdHkoKSB8fCBtX3J1bm5p
bmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pIHsKICAgICAgICAgbV9wZW5kaW5nT3BlbldpdGhW
ZXJzaW9uQ2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsOjpjcmVhdGUoY2Fs
bGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgdmVyc2lvbikpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtNTI3LDcgKzQyOSw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3Bl
bkNvbm5lY3Rpb25XaXRoVmVyc2lvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4KIAogdm9pZCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVEYXRhYmFzZShQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gcHJwQ2FsbGJhY2tzKQogewotICAgIGlmIChtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24gfHwgIW1fcGVuZGluZ1NldFZlcnNpb25DYWxscy5pc0VtcHR5KCkpIHsKKyAgICBp
ZiAobV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKSB7CiAgICAgICAgIG1fcGVuZGlu
Z0RlbGV0ZUNhbGxzLmFwcGVuZChQZW5kaW5nRGVsZXRlQ2FsbDo6Y3JlYXRlKHBycENhbGxiYWNr
cykpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCmluZGV4IGFkYjQ5
ZjhhNDVkOWM0ZmQ4OTQ5MmQzNGVmYTVkMmVlMDAyOWFiN2YuLmEzMzk2N2NmZDk1ZTI1MzUwOTFj
MjIxMmViZDUwODk5NWQyYTYzYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKQEAgLTYzLDcgKzYzLDYg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YSgpIGNv
bnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZh
Y2U+IGNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmpl
Y3RTdG9yZShpbnQ2NF90LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRp
b25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJz
aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxs
YmFja3M+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGFzIHBh
cnQgb2YgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjczMy4KICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFu
c2FjdGlvbihjb25zdCBWZWN0b3I8aW50NjRfdD4mLCB1bnNpZ25lZCBzaG9ydCk7CiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gY3JlYXRlVHJh
bnNhY3Rpb24oaW50NjRfdCB0cmFuc2FjdGlvbklkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9i
amVjdFN0b3JlSWRzLCB1bnNpZ25lZCBzaG9ydCBtb2RlKTsKQEAgLTg3LDcgKzg2LDYgQEAgcHJp
dmF0ZToKIAogICAgIHN0YXRpYyB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlSW50ZXJuYWwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4sIFBh
c3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbD4pOwogICAgIHN0YXRpYyB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlSW50
ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNr
ZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4sIFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4pOwotICAgIHN0YXRpYyB2b2lkIHNldFZlcnNp
b25JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsPiwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4sIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4pOwogICAgIHN0YXRp
YyB2b2lkIHNldEludFZlcnNpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+KTsKIAogICAgIC8vIFRoZXNlIGFyZSB1
c2VkIGFzIHNldFZlcnNpb24gdHJhbnNhY3Rpb24gYWJvcnQgdGFza3MuCkBAIC0xMTEsOSArMTA5
LDYgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hTZXQ8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbCo+IFRyYW5zYWN0aW9uU2V0OwogICAgIFRyYW5zYWN0aW9uU2V0IG1fdHJhbnNhY3Rpb25z
OwogCi0gICAgY2xhc3MgUGVuZGluZ1NldFZlcnNpb25DYWxsOwotICAgIERlcXVlPE93blB0cjxQ
ZW5kaW5nU2V0VmVyc2lvbkNhbGw+ID4gbV9wZW5kaW5nU2V0VmVyc2lvbkNhbGxzOwotCiAgICAg
Y2xhc3MgUGVuZGluZ09wZW5DYWxsOwogICAgIERlcXVlPE93blB0cjxQZW5kaW5nT3BlbkNhbGw+
ID4gbV9wZW5kaW5nT3BlbkNhbGxzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCmluZGV4
IGViMzU4MmI2ZWY0MDcyNTNhOWQ3M2I3OGYyOTIyYTA1ZTFkN2I5NDguLjBhZTM2ZGEzN2FmZmZk
OGE0ZDRiYTVlYzM3YjcyMmYyN2M0MzYyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5o
CkBAIC01NSw3ICs1NSw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJP
YmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QsIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7
CiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGFzIHBhcnQgb2YgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjczMy4KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbihjb25zdCBWZWN0b3I8aW50
NjRfdD4mIG9iamVjdFN0b3JlSWRzLCB1bnNpZ25lZCBzaG9ydCBtb2RlKSA9IDA7CiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gY3JlYXRlVHJh
bnNhY3Rpb24oaW50NjRfdCB0cmFuc2FjdGlvbklkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9i
amVjdFN0b3JlSWRzLCB1bnNpZ25lZCBzaG9ydCBtb2RlKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCmluZGV4IGU0ZDE2N2ZmYWQwYTNi
MjE1MjBhODEwNTQ0NjhlNDkyYmQ5NWQyNzIuLjI3MzcwYjY5YjQxZWI3ODBhZDM1MzkwOTBmMDU1
NjIzMmM2MDRjMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlJlcXVlc3QuY3BwCkBAIC0zMTEsMzEgKzMxMSw2IEBAIHZvaWQgSURCUmVxdWVzdDo6b25TdWNj
ZXNzKFBhc3NSZWZQdHI8SURCS2V5PiBpZGJLZXkpCiAgICAgZW5xdWV1ZUV2ZW50KGNyZWF0ZVN1
Y2Nlc3NFdmVudCgpKTsKIH0KIAotdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHBycEJhY2tlbmQpCi17Ci0gICAgSURC
X1RSQUNFKCJJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoSURCVHJhbnNhY3Rpb24pIik7Ci0gICAgUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCA9IHBycEJhY2tlbmQ7
Ci0KLSAgICBpZiAobV9jb250ZXh0U3RvcHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KSB7Ci0gICAgICAgIC8vIFNob3VsZCBvbmx5IGJlIG51bGwgaW4gdGVzdHMuCi0gICAgICAgIGlm
IChiYWNrZW5kLmdldCgpKQotICAgICAgICAgICAgYmFja2VuZC0+YWJvcnQoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBpZiAoIXNob3VsZEVucXVldWVFdmVudCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IGZyb250ZW5kID0gSURCVHJhbnNh
Y3Rpb246OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGJhY2tlbmQsIFZlY3RvcjxT
dHJpbmc+KCksIElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSwgbV9zb3VyY2UtPmlkYkRh
dGFiYXNlKCkuZ2V0KCkpOwotICAgIGJhY2tlbmQtPnNldENhbGxiYWNrcyhmcm9udGVuZC5nZXQo
KSk7Ci0gICAgbV90cmFuc2FjdGlvbiA9IGZyb250ZW5kOwotCi0gICAgQVNTRVJUKG1fc291cmNl
LT50eXBlKCkgPT0gSURCQW55OjpJREJEYXRhYmFzZVR5cGUpOwotICAgIEFTU0VSVChtX3RyYW5z
YWN0aW9uLT5pc1ZlcnNpb25DaGFuZ2UoKSk7Ci0KLSAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3Jl
YXRlKGZyb250ZW5kLnJlbGVhc2UoKSk7Ci0gICAgZW5xdWV1ZUV2ZW50KGNyZWF0ZVN1Y2Nlc3NF
dmVudCgpKTsKLX0KLQogdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKIHsKICAgICBJREJfVFJB
Q0UoIklEQlJlcXVlc3Q6Om9uU3VjY2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWUpIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKaW5kZXggMmRjMmRl
OWNkZjVjNzM5NTQxNjQzNGY5MTExNzcxOTkwNDRlOTZkOS4uZWRhYTdiYTE2YjY5MWFlMDY3ZThh
ZDc2MjEzNzA2MGJiZDViZjc0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlJlcXVlc3QuaApAQCAtOTEsNyArOTEsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+KTsKICAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4sIFBhc3NS
ZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNz
UmVmUHRyPElEQktleT4pOwotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNj
ZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CiAgICAgdmlydHVhbCB2b2lk
IG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8
SURCS2V5PiwgY29uc3QgSURCS2V5UGF0aCYpOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3Mo
aW50NjRfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxs
YmFja3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQ
cm94eS5jcHAKaW5kZXggODFjYjU0OWU1NDc3NTlmMzQxZTExNDM5YjU4OTc4ZTEzMDBlMmIwNy4u
ODM3Y2MzMmE2YjAwMDBkYWY5NDdiMWRlNzUxZTU2NzYwODI4NmRlMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcApAQCAtODcsMTEgKzg3
LDYgQEAgdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5
PiBpZGJLZXkpCiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhXZWJJREJLZXkoaWRiS2V5KSk7
CiB9CiAKLXZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCkKLXsKLSAgICBtX2NhbGxiYWNrcy0+
b25TdWNjZXNzKG5ldyBXZWJJREJUcmFuc2FjdGlvbkltcGwoYmFja2VuZCkpOwotfQotCiB2b2lk
IElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBk
b21TdHJpbmdMaXN0KQogewogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoV2ViRE9NU3RyaW5n
TGlzdChkb21TdHJpbmdMaXN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJDYWxsYmFja3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
Q2FsbGJhY2tzUHJveHkuaAppbmRleCBjOTQwNjk4ZjcxMDE1ZWRhZmRiNmQwMjc4MDEyZWM3MDcx
MjU3ZGJiLi42NWYzYjc0MGE4MmVlOGFlMmQ4MmIwMjU5MjNiZTBlNjRlMGE0MTVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKQEAgLTUxLDcg
KzUxLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxX
ZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
REJLZXk+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25T
dWNjZXNzKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPik7
CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4p
OwotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBh
c3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CiAgICAgdmlydHVhbCB2
b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4s
IFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiwgY29uc3QgV2ViQ29yZTo6SURCS2V5UGF0aCYp
OwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoaW50NjRfdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKaW5kZXgg
YTAzNTUxMDRhZjA1ZmMxODA2MGIwM2E3MjE5Nzc0Zjk5NzIwNDZlYi4uOTFhNDE5YTNlYzJmZjk2
MDc4YWNkYWRjZmZkODVlZmZiMDk1NmM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcApAQCAtODUsMTIgKzg1LDYg
QEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6ZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBJREJUcmFuc2EKICAgICBtX3dlYklEQkRhdGFiYXNlLT5kZWxldGVP
YmplY3RTdG9yZShvYmplY3RTdG9yZUlkLCAqdHJhbnNhY3Rpb25Qcm94eS0+Z2V0V2ViSURCVHJh
bnNhY3Rpb24oKSwgZWMpOwogfQogCi12b2lkIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpzZXRW
ZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFj
a3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIEFTU0VSVChtX3dlYklEQkRhdGFiYXNlKTsK
LSAgICBtX3dlYklEQkRhdGFiYXNlLT5zZXRWZXJzaW9uKHZlcnNpb24sIG5ldyBXZWJJREJDYWxs
YmFja3NJbXBsKGNhbGxiYWNrcyksIGVjKTsKLX0KLQogLy8gRklYTUU6IFJlbW92ZSB0aGlzIGFz
IHBhcnQgb2YgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjczMy4K
IFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJh
Y2tlbmRQcm94eTo6dHJhbnNhY3Rpb24oY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9y
ZUlkcywgdW5zaWduZWQgc2hvcnQgbW9kZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCmluZGV4IGYxNDk4MGJkNThkYzE0
NTI5NzFjNmMyMDRmM2M1ZDE2ODI5ZjU2MjguLjRlN2NjZTI5ZTljZmE0M2JhMjExNGE3ZTFjMDBh
ODA3ODFjMjZkNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRh
dGFiYXNlQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
RGF0YWJhc2VCYWNrZW5kUHJveHkuaApAQCAtNDYsNyArNDYsNiBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNl
PiBjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdl
YkNvcmU6OklEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQ2Fs
bGJhY2tzPiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIC8vIEZJWE1FOiBSZW1vdmUg
dGhpcyBhcyBwYXJ0IG9mIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDI3MzMuCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24oY29uc3QgVmVjdG9yPGludDY0X3Q+JiwgdW5zaWdu
ZWQgc2hvcnQgbW9kZSk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZT4gY3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCwgY29uc3Qg
VmVjdG9yPGludDY0X3Q+JiwgdW5zaWduZWQgc2hvcnQgbW9kZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCmluZGV4IDhkMTJjZmEz
ZWE5YmFlMzJkNDdjMzM0ZmMwZTAxN2QwOTBkZGE3YTguLmRjZjMwM2IzOTExMmFhYTFlNjdjNjVk
Zjc0MmQ5M2EyNGIwNmZkOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCkBAIC04NiwxMSArODYsNiBAQCB2b2lkIFdlYklEQkNh
bGxiYWNrc0ltcGw6Om9uU3VjY2Vzcyhjb25zdCBXZWJJREJLZXkmIGtleSkKICAgICBtX2NhbGxi
YWNrcy0+b25TdWNjZXNzKGtleSk7CiB9CiAKLXZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25T
dWNjZXNzKFdlYklEQlRyYW5zYWN0aW9uKiB3ZWJLaXRJbnN0YW5jZSkKLXsKLSAgICBtX2NhbGxi
YWNrcy0+b25TdWNjZXNzKElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5OjpjcmVhdGUoYWRvcHRQ
dHIod2ViS2l0SW5zdGFuY2UpKSk7Ci19Ci0KIHZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25T
dWNjZXNzKGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZh
bHVlKQogewogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Moc2VyaWFsaXplZFNjcmlwdFZhbHVl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNr
c0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwu
aAppbmRleCBiYTQ0NDg0MjgzM2ExZWI0MzJhZTUzMGE0OTZkMWVlOTc5ZTUwZjJhLi44ZjhjMDJh
YWEwMjhjZmMzOWJlOTIxYWJjMGQ2YjdkYTNmZDUzMjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oCkBAIC00Niw3ICs0Niw2IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFdlYklEQkN1cnNvciosIGNvbnN0IFdl
YklEQktleSYsIGNvbnN0IFdlYklEQktleSYgcHJpbWFyeUtleSwgY29uc3QgV2ViU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlJik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJJREJEYXRhYmFz
ZSopOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoY29uc3QgV2ViSURCS2V5Jik7Ci0gICAg
dmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJJREJUcmFuc2FjdGlvbiopOwogICAgIHZpcnR1YWwg
dm9pZCBvblN1Y2Nlc3MoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJik7CiAgICAgdmly
dHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBjb25z
dCBXZWJJREJLZXkmLCBjb25zdCBXZWJJREJLZXlQYXRoJik7CiAgICAgdmlydHVhbCB2b2lkIG9u
U3VjY2Vzcyhjb25zdCBXZWJJREJLZXkmLCBjb25zdCBXZWJJREJLZXkmIHByaW1hcnlLZXksIGNv
bnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKaW5kZXggNTM5YTQ4OGM5MzNlMWNhNjNj
ZTA3MDczNzkyMjdlYjBhYmQ2MjI0YS4uZDYzNGMzN2NjY2I1NWY5NTJmNWFlOTAxMDE2MGQwNjgy
YzlhNGRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0
YWJhc2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRh
YmFzZUltcGwuY3BwCkBAIC03NSwxMSArNzUsNiBAQCB2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6
ZGVsZXRlT2JqZWN0U3RvcmUobG9uZyBsb25nIG9iamVjdFN0b3JlSWQsIGNvbnN0IFdlYklEQgog
ICAgIG1fZGF0YWJhc2VCYWNrZW5kLT5kZWxldGVPYmplY3RTdG9yZShvYmplY3RTdG9yZUlkLCB0
cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSwgZWMpOwogfQog
Ci12b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6c2V0VmVyc2lvbihjb25zdCBXZWJTdHJpbmcmIHZl
cnNpb24sIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBXZWJFeGNlcHRpb25Db2RlJiBlYykK
LXsKLSAgICBtX2RhdGFiYXNlQmFja2VuZC0+c2V0VmVyc2lvbih2ZXJzaW9uLCBJREJDYWxsYmFj
a3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpLCBtX2RhdGFiYXNlQ2FsbGJhY2tz
LCBlYyk7Ci19Ci0KIFdlYklEQlRyYW5zYWN0aW9uKiBXZWJJREJEYXRhYmFzZUltcGw6OmNyZWF0
ZVRyYW5zYWN0aW9uKGxvbmcgbG9uZyBpZCwgY29uc3QgV2ViVmVjdG9yPGxvbmcgbG9uZz4mIG9i
amVjdFN0b3JlSWRzLCB1bnNpZ25lZCBzaG9ydCBtb2RlKQogewogICAgIFZlY3RvcjxpbnQ2NF90
PiBvYmplY3RTdG9yZUlkTGlzdChvYmplY3RTdG9yZUlkcy5zaXplKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaAppbmRleCBlZWY2NDkzZmRj
MjgzNjNhNDMwZTgyZDIyZDU5NDk3ZmEwOWExYzNhLi5lYmQ0ZDQ4ZjkzOGY2MDVlNWZkMTNhYzJi
YzI5N2E3YjJlNWVlYWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJEYXRhYmFzZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJEYXRhYmFzZUltcGwuaApAQCAtNTQsNyArNTQsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IFdlYklEQk9iamVjdFN0b3JlKiBjcmVhdGVPYmplY3RTdG9yZShsb25nIGxvbmcsIGNvbnN0IFdl
YlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwg
Y29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVh
bCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGxvbmcgbG9uZyBvYmplY3RTdG9yZUlkLCBjb25zdCBX
ZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0VmVyc2lvbihjb25zdCBXZWJTdHJpbmcmIHZlcnNpb24sIFdlYklEQkNhbGxiYWNrcyosIFdl
YkV4Y2VwdGlvbkNvZGUmKTsKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgYXMgcGFydCBvZiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNzMzLgogICAgIHZpcnR1
YWwgV2ViSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKGNvbnN0IFdlYlZlY3Rvcjxsb25nIGxv
bmc+JiBuYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSk7CiAgICAgdmlydHVhbCBXZWJJREJUcmFu
c2FjdGlvbiogY3JlYXRlVHJhbnNhY3Rpb24obG9uZyBsb25nIGlkLCBjb25zdCBXZWJWZWN0b3I8
bG9uZyBsb25nPiYsIHVuc2lnbmVkIHNob3J0IG1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKaW5kZXggYThi
YWYwNGQ0ZTA2OGU4YWQ2YmMzYjliYjI5YzdjMzllZGM1OTA5Ny4uMGViN2ZhZTY2YTZjMGJkZmYz
YjIyNDg4Y2I4NmI2N2RmYWQwMmM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCkBAIC04OCw3ICs4OCw2IEBA
IHB1YmxpYzoKICAgICAgICAgbV93YXNTdWNjZXNzREJDYWxsZWQgPSB0cnVlOwogICAgIH0KICAg
ICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PikgT1ZFUlJJREUgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZT4pIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3Mo
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KSBPVkVSUklERSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFz
c1JlZlB0cjxJREJLZXk+LCBjb25zdCBJREJLZXlQYXRoJikgT1ZFUlJJREUgeyB9OwogICAgIHZp
cnR1YWwgdm9pZCBvblN1Y2Nlc3MoaW50NjRfdCkgT1ZFUlJJREUgeyB9CkBAIC0xNTMsNyArMTUy
LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tl
bmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3QsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihj
b25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSB7IH0KICAgICAvLyBGSVhN
RTogUmVtb3ZlIHRoaXMgYXMgcGFydCBvZiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTAyNzMzLgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYsIHVuc2ln
bmVkIHNob3J0IG1vZGUpIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVUcmFuc2FjdGlvbihpbnQ2NF90LCBj
b25zdCBWZWN0b3I8aW50NjRfdD4mLCB1bnNpZ25lZCBzaG9ydCBtb2RlKSB7IHJldHVybiAwOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQlJlcXVlc3RUZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCUmVxdWVzdFRlc3QuY3BwCmlu
ZGV4IGEwNzM0ZTE0YzQ0ZGNiYzVlNzhkYWZiODY5N2M4NWI3MTJhZWZkMDcuLjhhN2EzZjRhN2Jh
Njg3Mzg0ZjY1NWQ5ODNiYTZhODQzYjIwMmJkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSURCUmVxdWVzdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvSURCUmVxdWVzdFRlc3QuY3BwCkBAIC05NCw3ICs5NCw2IEBAIFRFU1RfRihJ
REJSZXF1ZXN0VGVzdCwgRXZlbnRzQWZ0ZXJTdG9wcGluZykKICAgICByZXF1ZXN0LT5vblN1Y2Nl
c3MoRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCkpOwogICAgIHJlcXVlc3QtPm9uU3VjY2VzcyhQYXNz
UmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+KCksIElEQktleTo6Y3JlYXRlSW52YWxp
ZCgpLCBJREJLZXk6OmNyZWF0ZUludmFsaWQoKSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudWxs
VmFsdWUoKSk7CiAgICAgcmVxdWVzdC0+b25TdWNjZXNzKElEQktleTo6Y3JlYXRlSW52YWxpZCgp
KTsKLSAgICByZXF1ZXN0LT5vblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2U+KCkpOwogICAgIHJlcXVlc3QtPm9uU3VjY2VzcyhTZXJpYWxpemVkU2NyaXB0
VmFsdWU6Om51bGxWYWx1ZSgpKTsKICAgICByZXF1ZXN0LT5vblN1Y2Nlc3MoU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpudWxsVmFsdWUoKSwgSURCS2V5OjpjcmVhdGVJbnZhbGlkKCksIElEQktleVBh
dGgoKSk7CiAgICAgcmVxdWVzdC0+b25TdWNjZXNzKElEQktleTo6Y3JlYXRlSW52YWxpZCgpLCBJ
REJLZXk6OmNyZWF0ZUludmFsaWQoKSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUo
KSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggODYzOGRjYmNkNmFjZGE4NTc2NTM4ZTZhNDIxYjcwZTE2OGQ0MTdiYy4uYzdm
YjQwNjY4MjRjZDZhZDFhZDllZDU0OTFkODZiZGJiNjRhNWUxYSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDEyLTExLTE5ICBEYXZpZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBJbmRleGVkREI6IFJlbW92ZSBJREJEYXRhYmFzZS5zZXRWZXJzaW9uIEFQSQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ5NzIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL3JlbW92ZWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9yZW1vdmVkLmpzOgorICAgICAgICAodGVzdCk6CisKIDIwMTItMTEtMjcgIFRv
bnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGdhcmRl
bmluZywgZml4aW5nIGxpbnQgZXJyb3JzIGluIFRlc3RFeHBlY3RhdGlvbnMuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZW1vdmVkLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3JlbW92ZWQtZXhwZWN0ZWQudHh0CmluZGV4IDFi
Yzg4ZGIwZWQwODE5ZDEwYzM4Y2ZmNjIwMDY4OGUyODI2YTc5ZTYuLjM5MjA4MDEwNGQ0M2ZjOGQy
OTI5OTYyYzY4Y2MwMTY3NDM0NDdmNzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3JlbW92ZWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3JlbW92ZWQtZXhwZWN0ZWQudHh0CkBAIC05LDYgKzksNyBAQCBkYm5hbWUgPSAi
cmVtb3ZlZC5odG1sIgogUEFTUyBzZWxmLndlYmtpdElEQkRhdGFiYXNlRXJyb3IgaXMgdW5kZWZp
bmVkLgogUEFTUyAnSURCRGF0YWJhc2VFeGNlcHRpb24nIGluIHNlbGYgaXMgZmFsc2UKIFBBU1Mg
J2Vycm9yQ29kZScgaW4gaW5kZXhlZERCLm9wZW4oZGJuYW1lKSBpcyBmYWxzZQorUEFTUyAnc2V0
VmVyc2lvbicgaW4gSURCRGF0YWJhc2UucHJvdG90eXBlIGlzIGZhbHNlCiBQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9yZW1vdmVkLmpzIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3JlbW92ZWQuanMKaW5kZXggNDYzZDI3MjBkYTQz
YTE1ZmE4ZDY4MTA3NzRiNmIwMWQ0NmU4OGE2Ny4uYTkwZTU5NjljZWM1ODA5ZWU4YTIxNWIyZjQ4
NGM2M2I2NzgzNmM3YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL3JlbW92ZWQuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL3JlbW92ZWQuanMKQEAgLTEzLDYgKzEzLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAg
ICAgc2hvdWxkQmVVbmRlZmluZWQoInNlbGYud2Via2l0SURCRGF0YWJhc2VFcnJvciIpOwogICAg
IHNob3VsZEJlRmFsc2UoIidJREJEYXRhYmFzZUV4Y2VwdGlvbicgaW4gc2VsZiIpOwogICAgIHNo
b3VsZEJlRmFsc2UoIidlcnJvckNvZGUnIGluIGluZGV4ZWREQi5vcGVuKGRibmFtZSkiKTsKKyAg
ICBzaG91bGRCZUZhbHNlKCInc2V0VmVyc2lvbicgaW4gSURCRGF0YWJhc2UucHJvdG90eXBlIik7
CiAKICAgICBmaW5pc2hKU1Rlc3QoKTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>